File Size Overall
  • There are 65 files with 24,440 lines of code.
    • 6 very long files (14,094 lines of code)
    • 5 long files (3,430 lines of code)
    • 14 medium size files (4,939 lines of code)
    • 3 small files (389 lines of code)
    • 37 very small files (1,588 lines of code)
57% | 14% | 20% | 1% | 6%
Legend:
1001+
501-1000
201-500
101-200
1-100


explore: grouped by folders | grouped by size | sunburst | 3D view
File Size per Extension
1001+
501-1000
201-500
101-200
1-100
py60% | 14% | 21% | 1% | 2%
jinja20% | 0% | 0% | 11% | 88%
in0% | 0% | 0% | 0% | 100%
File Size per Logical Decomposition
primary
1001+
501-1000
201-500
101-200
1-100
src57% | 14% | 20% | 1% | 6%
ROOT0% | 0% | 0% | 0% | 100%
Longest Files (Top 50)
File# lines# units
openai_utils.py
in src/gabriel/utils
5869 113
plot_utils.py
in src/gabriel/utils
2386 35
rank.py
in src/gabriel/tasks
1737 22
api.py
in src/gabriel
1414 7
passage_viewer.py
in src/gabriel/utils
1394 42
debias.py
in src/gabriel/tasks
1294 28
codify.py
in src/gabriel/tasks
825 19
ideate.py
in src/gabriel/tasks
792 13
poll.py
in src/gabriel/tasks
770 19
file_utils.py
in src/gabriel/utils
529 18
classify.py
in src/gabriel/tasks
514 5
discover.py
in src/gabriel/tasks
450 9
extract.py
in src/gabriel/tasks
444 6
mapmaker.py
in src/gabriel/utils
435 13
seed.py
in src/gabriel/tasks
429 8
merge.py
in src/gabriel/tasks
422 6
paraphrase.py
in src/gabriel/tasks
419 2
bucket.py
in src/gabriel/tasks
384 8
deduplicate.py
in src/gabriel/tasks
361 4
rate.py
in src/gabriel/tasks
323 2
whatever.py
in src/gabriel/tasks
311 6
_run_utils.py
in src/gabriel/tasks
275 15
deidentify.py
in src/gabriel/tasks
239 4
compare.py
in src/gabriel/tasks
231 2
parsing.py
in src/gabriel/utils
216 3
filter.py
in src/gabriel/tasks
144 2
modality_utils.py
in src/gabriel/utils
130 4
jinja2
snippets.jinja2
in src/gabriel/prompts
115 -
jinja2
persona_prompt.jinja2
in src/gabriel/prompts
100 -
jinja2
bucket_prompt.jinja2
in src/gabriel/prompts
98 -
prompt_template.py
in src/gabriel/core
94 6
jinja2
deidentification_prompt.jinja2
in src/gabriel/prompts
94 -
jinja2
codify_prompt.jinja2
in src/gabriel/prompts
87 -
jinja2
ideation_prompt.jinja2
in src/gabriel/prompts
75 -
media_utils.py
in src/gabriel/utils
68 3
__init__.py
in src/gabriel/utils
62 -
__init__.py
in src/gabriel/tasks
57 2
__init__.py
in src/gabriel
56 1
word_matching.py
in src/gabriel/utils
54 4
jinja2
poll_prompt.jinja2
in src/gabriel/prompts
54 -
_attribute_utils.py
in src/gabriel/tasks
53 1
jinja2
extraction_prompt.jinja2
in src/gabriel/prompts
53 -
jinja2
comparison_prompt.jinja2
in src/gabriel/prompts
52 -
logging.py
in src/gabriel/utils
46 4
jinja2
classification_prompt.jinja2
in src/gabriel/prompts
44 -
jinja2
merge_prompt.jinja2
in src/gabriel/prompts
41 -
jinja2
ratings_prompt.jinja2
in src/gabriel/prompts
41 -
jinja2
rankings_prompt.jinja2
in src/gabriel/prompts
40 -
__main__.py
in src/gabriel/cli
38 2
jinja2
seed.jinja2
in src/gabriel/prompts
36 -
Large Files That Change Often (Top 20)
To change a file, an AI coding agent (or a person) has to read it: these files are read the most for the changes in the past year (lines × changes).
File# lines≈ tokens
to read
# changes
(1y)
≈ lines edited
per change
lines read per
line changed
openai_utils.py
in src/gabriel/utils
5869 ~30k–100k 169 ~70 ~100
plot_utils.py
in src/gabriel/utils
2386 ~15k–50k 57 ~100 ~20
api.py
in src/gabriel
1414 ~7k–20k 92 ~50 ~30
rank.py
in src/gabriel/tasks
1737 ~10k–30k 37 ~50 ~30
passage_viewer.py
in src/gabriel/utils
1394 ~7k–20k 42 ~300 ~5
debias.py
in src/gabriel/tasks
1294 ~7k–20k 33 ~100 ~15
ideate.py
in src/gabriel/tasks
792 ~5k–15k 30 ~50 ~20
codify.py
in src/gabriel/tasks
825 ~5k–15k 26 ~50 ~15
classify.py
in src/gabriel/tasks
514 ~3k–10k 32 ~20 ~20
extract.py
in src/gabriel/tasks
444 ~3k–7k 30 ~30 ~15
seed.py
in src/gabriel/tasks
429 ~3k–7k 28 ~50 ~10
file_utils.py
in src/gabriel/utils
529 ~3k–10k 21 ~70 ~7
discover.py
in src/gabriel/tasks
450 ~3k–7k 21 ~50 ~10
rate.py
in src/gabriel/tasks
323 ~2k–5k 28 ~20 ~20
bucket.py
in src/gabriel/tasks
384 ~2k–7k 18 ~30 ~10
deduplicate.py
in src/gabriel/tasks
361 ~2k–7k 19 ~30 ~15
merge.py
in src/gabriel/tasks
422 ~2k–7k 16 ~30 ~15
paraphrase.py
in src/gabriel/tasks
419 ~2k–7k 16 ~50 ~7
deidentify.py
in src/gabriel/tasks
239 ~1.5k–5k 18 ~15 ~15
compare.py
in src/gabriel/tasks
231 ~1.5k–5k 15 ~20 ~10

Tokens are lines × 7 to 14 (analysis.fileReadsForChanges). Lines edited per change are the file's lines added and deleted divided by its commits over the whole history. Agents read about 2,000 lines at a time: when a 17,000-line file was split into modules, the tokens an agent read for the same change fell by 83% (The Economic Benefit of Refactoring, 2026).

Files With Most Units (Top 42)
File# lines# units
openai_utils.py
in src/gabriel/utils
5869 113
passage_viewer.py
in src/gabriel/utils
1394 42
plot_utils.py
in src/gabriel/utils
2386 35
debias.py
in src/gabriel/tasks
1294 28
rank.py
in src/gabriel/tasks
1737 22
codify.py
in src/gabriel/tasks
825 19
poll.py
in src/gabriel/tasks
770 19
file_utils.py
in src/gabriel/utils
529 18
_run_utils.py
in src/gabriel/tasks
275 15
ideate.py
in src/gabriel/tasks
792 13
mapmaker.py
in src/gabriel/utils
435 13
discover.py
in src/gabriel/tasks
450 9
bucket.py
in src/gabriel/tasks
384 8
seed.py
in src/gabriel/tasks
429 8
api.py
in src/gabriel
1414 7
merge.py
in src/gabriel/tasks
422 6
whatever.py
in src/gabriel/tasks
311 6
extract.py
in src/gabriel/tasks
444 6
prompt_template.py
in src/gabriel/core
94 6
classify.py
in src/gabriel/tasks
514 5
deduplicate.py
in src/gabriel/tasks
361 4
deidentify.py
in src/gabriel/tasks
239 4
logging.py
in src/gabriel/utils
46 4
word_matching.py
in src/gabriel/utils
54 4
modality_utils.py
in src/gabriel/utils
130 4
parsing.py
in src/gabriel/utils
216 3
media_utils.py
in src/gabriel/utils
68 3
jinja.py
in src/gabriel/utils
22 3
rate.py
in src/gabriel/tasks
323 2
__init__.py
in src/gabriel/tasks
57 2
filter.py
in src/gabriel/tasks
144 2
paraphrase.py
in src/gabriel/tasks
419 2
compare.py
in src/gabriel/tasks
231 2
pipeline.py
in src/gabriel/core
11 2
__main__.py
in src/gabriel/cli
38 2
_attribute_utils.py
in src/gabriel/tasks
53 1
llm_client.py
in src/gabriel/core
22 1
__init__.py
in src/gabriel
56 1
image_utils.py
in src/gabriel/utils
8 1
pdf_utils.py
in src/gabriel/utils
15 1
audio_utils.py
in src/gabriel/utils
16 1
prompt_utils.py
in src/gabriel/utils
27 1
Files With Long Lines (Top 26)

There are 26 files with lines longer than 120 characters. In total, there are 364 long lines.

File# lines# units# long lines
jinja2
bucket_prompt.jinja2
in src/gabriel/prompts
98 - 40
jinja2
persona_prompt.jinja2
in src/gabriel/prompts
100 - 33
jinja2
deidentification_prompt.jinja2
in src/gabriel/prompts
94 - 31
jinja2
codify_prompt.jinja2
in src/gabriel/prompts
87 - 29
openai_utils.py
in src/gabriel/utils
5869 113 24
jinja2
ideation_prompt.jinja2
in src/gabriel/prompts
75 - 23
ideate.py
in src/gabriel/tasks
792 13 22
jinja2
snippets.jinja2
in src/gabriel/prompts
115 - 22
jinja2
regional_analysis_prompt.jinja2
in src/gabriel/prompts
34 - 21
jinja2
comparison_prompt.jinja2
in src/gabriel/prompts
52 - 18
plot_utils.py
in src/gabriel/utils
2386 35 13
jinja2
classification_prompt.jinja2
in src/gabriel/prompts
44 - 11
jinja2
extraction_prompt.jinja2
in src/gabriel/prompts
53 - 11
jinja2
poll_prompt.jinja2
in src/gabriel/prompts
54 - 11
jinja2
seed.jinja2
in src/gabriel/prompts
36 - 10
jinja2
deduplicate_prompt.jinja2
in src/gabriel/prompts
35 - 9
jinja2
merge_prompt.jinja2
in src/gabriel/prompts
41 - 8
jinja2
rankings_prompt.jinja2
in src/gabriel/prompts
40 - 8
rank.py
in src/gabriel/tasks
1737 22 4
jinja2
ratings_prompt.jinja2
in src/gabriel/prompts
41 - 4
paraphrase.py
in src/gabriel/tasks
419 2 3
codify.py
in src/gabriel/tasks
825 19 2
debias.py
in src/gabriel/tasks
1294 28 2
jinja2
filter_prompt.jinja2
in src/gabriel/prompts
28 - 2
jinja2
paraphrase_prompt.jinja2
in src/gabriel/prompts
17 - 2
extract.py
in src/gabriel/tasks
444 6 1
Correlations

File Size vs. Commits (all time): 59 points

MANIFEST.in x: 3 commits (all time) y: 4 lines of code src/gabriel/__init__.py x: 30 commits (all time) y: 56 lines of code src/gabriel/_version.py x: 26 commits (all time) y: 1 lines of code src/gabriel/api.py x: 179 commits (all time) y: 1414 lines of code src/gabriel/tasks/bucket.py x: 28 commits (all time) y: 384 lines of code src/gabriel/tasks/classify.py x: 72 commits (all time) y: 514 lines of code src/gabriel/tasks/codify.py x: 51 commits (all time) y: 825 lines of code src/gabriel/tasks/compare.py x: 26 commits (all time) y: 231 lines of code src/gabriel/tasks/debias.py x: 37 commits (all time) y: 1294 lines of code src/gabriel/tasks/deduplicate.py x: 38 commits (all time) y: 361 lines of code src/gabriel/tasks/deidentify.py x: 36 commits (all time) y: 239 lines of code src/gabriel/tasks/discover.py x: 38 commits (all time) y: 450 lines of code src/gabriel/tasks/extract.py x: 40 commits (all time) y: 444 lines of code src/gabriel/tasks/filter.py x: 22 commits (all time) y: 144 lines of code src/gabriel/tasks/ideate.py x: 48 commits (all time) y: 792 lines of code src/gabriel/tasks/merge.py x: 47 commits (all time) y: 422 lines of code src/gabriel/tasks/paraphrase.py x: 36 commits (all time) y: 419 lines of code src/gabriel/tasks/poll.py x: 4 commits (all time) y: 770 lines of code src/gabriel/tasks/rank.py x: 82 commits (all time) y: 1737 lines of code src/gabriel/tasks/rate.py x: 61 commits (all time) y: 323 lines of code src/gabriel/tasks/seed.py x: 32 commits (all time) y: 429 lines of code src/gabriel/tasks/whatever.py x: 15 commits (all time) y: 311 lines of code src/gabriel/utils/openai_utils.py x: 301 commits (all time) y: 5869 lines of code src/gabriel/utils/parsing.py x: 22 commits (all time) y: 216 lines of code src/gabriel/utils/mapmaker.py x: 9 commits (all time) y: 435 lines of code src/gabriel/tasks/_run_utils.py x: 1 commits (all time) y: 275 lines of code src/gabriel/prompts/persona_prompt.jinja2 x: 1 commits (all time) y: 100 lines of code src/gabriel/prompts/poll_prompt.jinja2 x: 1 commits (all time) y: 54 lines of code src/gabriel/tasks/__init__.py x: 34 commits (all time) y: 57 lines of code src/gabriel/utils/file_utils.py x: 25 commits (all time) y: 529 lines of code src/gabriel/utils/__init__.py x: 26 commits (all time) y: 62 lines of code src/gabriel/utils/plot_utils.py x: 79 commits (all time) y: 2386 lines of code src/gabriel/utils/passage_viewer.py x: 44 commits (all time) y: 1394 lines of code src/gabriel/prompts/paraphrase_prompt.jinja2 x: 6 commits (all time) y: 17 lines of code src/gabriel/utils/audio_utils.py x: 4 commits (all time) y: 16 lines of code src/gabriel/utils/media_utils.py x: 6 commits (all time) y: 68 lines of code src/gabriel/prompts/ideation_prompt.jinja2 x: 10 commits (all time) y: 75 lines of code src/gabriel/utils/modality_utils.py x: 6 commits (all time) y: 130 lines of code src/gabriel/prompts/deduplicate_prompt.jinja2 x: 7 commits (all time) y: 35 lines of code src/gabriel/prompts/extraction_prompt.jinja2 x: 9 commits (all time) y: 53 lines of code src/gabriel/prompts/snippets.jinja2 x: 6 commits (all time) y: 115 lines of code src/gabriel/utils/pdf_utils.py x: 2 commits (all time) y: 15 lines of code src/gabriel/tasks/_attribute_utils.py x: 2 commits (all time) y: 53 lines of code src/gabriel/core/prompt_template.py x: 10 commits (all time) y: 94 lines of code src/gabriel/utils/logging.py x: 4 commits (all time) y: 46 lines of code src/gabriel/cli/__main__.py x: 2 commits (all time) y: 38 lines of code src/gabriel/prompts/comparison_prompt.jinja2 x: 14 commits (all time) y: 52 lines of code src/gabriel/prompts/bucket_prompt.jinja2 x: 11 commits (all time) y: 98 lines of code src/gabriel/prompts/codify_prompt.jinja2 x: 7 commits (all time) y: 87 lines of code src/gabriel/prompts/merge_prompt.jinja2 x: 10 commits (all time) y: 41 lines of code src/gabriel/prompts/rankings_prompt.jinja2 x: 5 commits (all time) y: 40 lines of code src/gabriel/prompts/ratings_prompt.jinja2 x: 3 commits (all time) y: 41 lines of code
5869.0
lines of code
  min: 1.0
  average: 412.88
  25th percentile: 44.0
  median: 98.0
  75th percentile: 429.0
  max: 5869.0
0 301.0
commits (all time)
min: 1.0 | average: 27.9 | 25th percentile: 4.0 | median: 10.0 | 75th percentile: 36.0 | max: 301.0

File Size vs. Contributors (all time): 59 points

MANIFEST.in x: 2 contributors (all time) y: 4 lines of code src/gabriel/__init__.py x: 3 contributors (all time) y: 56 lines of code src/gabriel/api.py x: 3 contributors (all time) y: 1414 lines of code src/gabriel/tasks/bucket.py x: 3 contributors (all time) y: 384 lines of code src/gabriel/tasks/classify.py x: 4 contributors (all time) y: 514 lines of code src/gabriel/tasks/codify.py x: 3 contributors (all time) y: 825 lines of code src/gabriel/tasks/compare.py x: 3 contributors (all time) y: 231 lines of code src/gabriel/tasks/debias.py x: 2 contributors (all time) y: 1294 lines of code src/gabriel/tasks/deduplicate.py x: 3 contributors (all time) y: 361 lines of code src/gabriel/tasks/deidentify.py x: 3 contributors (all time) y: 239 lines of code src/gabriel/tasks/discover.py x: 3 contributors (all time) y: 450 lines of code src/gabriel/tasks/extract.py x: 4 contributors (all time) y: 444 lines of code src/gabriel/tasks/filter.py x: 3 contributors (all time) y: 144 lines of code src/gabriel/tasks/ideate.py x: 2 contributors (all time) y: 792 lines of code src/gabriel/tasks/merge.py x: 3 contributors (all time) y: 422 lines of code src/gabriel/tasks/poll.py x: 1 contributors (all time) y: 770 lines of code src/gabriel/tasks/rank.py x: 3 contributors (all time) y: 1737 lines of code src/gabriel/tasks/rate.py x: 4 contributors (all time) y: 323 lines of code src/gabriel/tasks/seed.py x: 2 contributors (all time) y: 429 lines of code src/gabriel/tasks/whatever.py x: 2 contributors (all time) y: 311 lines of code src/gabriel/utils/openai_utils.py x: 3 contributors (all time) y: 5869 lines of code src/gabriel/tasks/_run_utils.py x: 1 contributors (all time) y: 275 lines of code src/gabriel/prompts/persona_prompt.jinja2 x: 1 contributors (all time) y: 100 lines of code src/gabriel/prompts/poll_prompt.jinja2 x: 1 contributors (all time) y: 54 lines of code src/gabriel/utils/file_utils.py x: 2 contributors (all time) y: 529 lines of code src/gabriel/utils/__init__.py x: 2 contributors (all time) y: 62 lines of code src/gabriel/utils/plot_utils.py x: 1 contributors (all time) y: 2386 lines of code src/gabriel/utils/passage_viewer.py x: 2 contributors (all time) y: 1394 lines of code src/gabriel/prompts/ideation_prompt.jinja2 x: 1 contributors (all time) y: 75 lines of code src/gabriel/utils/modality_utils.py x: 1 contributors (all time) y: 130 lines of code src/gabriel/prompts/deduplicate_prompt.jinja2 x: 2 contributors (all time) y: 35 lines of code src/gabriel/utils/pdf_utils.py x: 1 contributors (all time) y: 15 lines of code src/gabriel/prompts/seed.jinja2 x: 1 contributors (all time) y: 36 lines of code src/gabriel/core/prompt_template.py x: 2 contributors (all time) y: 94 lines of code
5869.0
lines of code
  min: 1.0
  average: 412.88
  25th percentile: 44.0
  median: 98.0
  75th percentile: 429.0
  max: 5869.0
0 4.0
contributors (all time)
min: 1.0 | average: 2.03 | 25th percentile: 1.0 | median: 2.0 | 75th percentile: 3.0 | max: 4.0

File Size vs. Commits (30 days): 0 points

No data for "commits (30d)" vs. "lines of code".

File Size vs. Contributors (30 days): 0 points

No data for "contributors (30d)" vs. "lines of code".


File Size vs. Commits (90 days): 24 points

MANIFEST.in x: 1 commits (90d) y: 4 lines of code src/gabriel/__init__.py x: 1 commits (90d) y: 56 lines of code src/gabriel/api.py x: 1 commits (90d) y: 1414 lines of code src/gabriel/tasks/bucket.py x: 1 commits (90d) y: 384 lines of code src/gabriel/tasks/classify.py x: 1 commits (90d) y: 514 lines of code src/gabriel/tasks/codify.py x: 1 commits (90d) y: 825 lines of code src/gabriel/tasks/compare.py x: 1 commits (90d) y: 231 lines of code src/gabriel/tasks/debias.py x: 1 commits (90d) y: 1294 lines of code src/gabriel/tasks/deduplicate.py x: 1 commits (90d) y: 361 lines of code src/gabriel/tasks/deidentify.py x: 1 commits (90d) y: 239 lines of code src/gabriel/tasks/discover.py x: 1 commits (90d) y: 450 lines of code src/gabriel/tasks/filter.py x: 1 commits (90d) y: 144 lines of code src/gabriel/tasks/ideate.py x: 1 commits (90d) y: 792 lines of code src/gabriel/tasks/merge.py x: 1 commits (90d) y: 422 lines of code src/gabriel/tasks/poll.py x: 1 commits (90d) y: 770 lines of code src/gabriel/tasks/rank.py x: 1 commits (90d) y: 1737 lines of code src/gabriel/tasks/rate.py x: 1 commits (90d) y: 323 lines of code src/gabriel/utils/openai_utils.py x: 1 commits (90d) y: 5869 lines of code
5869.0
lines of code
  min: 1.0
  average: 735.38
  25th percentile: 233.0
  median: 420.5
  75th percentile: 786.5
  max: 5869.0
0 1.0
commits (90d)
min: 1.0 | average: 1.0 | 25th percentile: 1.0 | median: 1.0 | 75th percentile: 1.0 | max: 1.0

File Size vs. Contributors (90 days): 24 points

MANIFEST.in x: 1 contributors (90d) y: 4 lines of code src/gabriel/__init__.py x: 1 contributors (90d) y: 56 lines of code src/gabriel/api.py x: 1 contributors (90d) y: 1414 lines of code src/gabriel/tasks/bucket.py x: 1 contributors (90d) y: 384 lines of code src/gabriel/tasks/classify.py x: 1 contributors (90d) y: 514 lines of code src/gabriel/tasks/codify.py x: 1 contributors (90d) y: 825 lines of code src/gabriel/tasks/compare.py x: 1 contributors (90d) y: 231 lines of code src/gabriel/tasks/debias.py x: 1 contributors (90d) y: 1294 lines of code src/gabriel/tasks/deduplicate.py x: 1 contributors (90d) y: 361 lines of code src/gabriel/tasks/deidentify.py x: 1 contributors (90d) y: 239 lines of code src/gabriel/tasks/discover.py x: 1 contributors (90d) y: 450 lines of code src/gabriel/tasks/filter.py x: 1 contributors (90d) y: 144 lines of code src/gabriel/tasks/ideate.py x: 1 contributors (90d) y: 792 lines of code src/gabriel/tasks/merge.py x: 1 contributors (90d) y: 422 lines of code src/gabriel/tasks/poll.py x: 1 contributors (90d) y: 770 lines of code src/gabriel/tasks/rank.py x: 1 contributors (90d) y: 1737 lines of code src/gabriel/tasks/rate.py x: 1 contributors (90d) y: 323 lines of code src/gabriel/utils/openai_utils.py x: 1 contributors (90d) y: 5869 lines of code
5869.0
lines of code
  min: 1.0
  average: 735.38
  25th percentile: 233.0
  median: 420.5
  75th percentile: 786.5
  max: 5869.0
0 1.0
contributors (90d)
min: 1.0 | average: 1.0 | 25th percentile: 1.0 | median: 1.0 | 75th percentile: 1.0 | max: 1.0
About This Analysis
  • File size measurements show the distribution of size of files.
  • Files are classified in four categories based on their size (lines of code): 1-100 (very small files), 101-200 (small files), 201-500 (medium size files), 501-1000 (long files), 1001+(very long files).
  • It is a good practice to keep files small. Long files may become "bloaters", code that have increased to such gargantuan proportions that they are hard to work with.
Learn more...