instagram / LibCST
File Change Frequency

File change frequency (churn) shows the distribution of file updates (days with at least one commit).

File Change Frequency Overall
File Change Frequency Overall
The number of recorded file updates
  • There are 178 files with 40,850 lines of code.
    • 0 files changed more than 100 times (0 lines of code)
    • 1 files changed 51-100 times (733 lines of code)
    • 13 files changed 21-50 times (13,476 lines of code)
    • 77 files changed 6-20 times (20,615 lines of code)
    • 87 files changed 1-5 times (6,026 lines of code)
0% | 1% | 32% | 50% | 14%
Legend:
101+
51-100
21-50
6-20
1-5
explore: zoomable circles | data
File Change Frequency per File Extension
py, rs, rst, pyi, svg, md, toml, txt, ipynb, yml, json, sh, css, in, gitignore, gitattributes, watchmanconfig, editorconfig, html, yaml
File Change Frequency per Extension
The number of recorded file updates
101+
51-100
21-50
6-20
1-5
py0% | 2% | 49% | 40% | 7%
rs0% | 0% | 0% | 70% | 29%
pyi0% | 0% | 0% | 46% | 53%
toml0% | 0% | 0% | 78% | 21%
yml0% | 0% | 0% | 0% | 100%
in0% | 0% | 0% | 0% | 100%
File Change Frequency per Logical Decomposition
primary
primary (file change frequency)
The number of recorded file updates
101+
51-100
21-50
6-20
1-5
libcst/metadata0% | 44% | 9% | 28% | 17%
libcst0% | 0% | 92% | 7% | <1%
libcst/_nodes0% | 0% | 39% | 60% | <1%
libcst/matchers0% | 0% | 78% | 21% | 0%
libcst/_parser0% | 0% | 23% | 58% | 17%
libcst/codemod0% | 0% | 29% | 56% | 14%
libcst/codegen0% | 0% | 51% | 41% | 6%
ROOT0% | 0% | 78% | 12% | 9%
native/libcst0% | 0% | 0% | 72% | 27%
libcst/helpers0% | 0% | 0% | 98% | 1%
libcst/testing0% | 0% | 0% | 99% | <1%
stubs0% | 0% | 0% | 95% | 4%
native/libcst_derive0% | 0% | 0% | 0% | 100%
stubs/libcst_native0% | 0% | 0% | 0% | 100%
stubs/libcst0% | 0% | 0% | 0% | 100%
native0% | 0% | 0% | 0% | 100%
Most Frequently Changed Files (Top 50)

See data for all files...

File# lines# unitslast modified
(days ago)
created
(days ago)
# changes# contributors
scope_provider.py
in libcst/metadata
733 102 102 961 67 15
setup.py
in root
57 1 24 1052 47 10
__init__.py
in libcst
434 - 108 1052 35 9
tool.py
in libcst
656 19 110 1052 33 9
_cli.py
in libcst/codemod
464 14 24 864 29 16
_matcher_base.py
in libcst/matchers
980 104 102 935 27 12
_visitors.py
in libcst/matchers
543 40 102 935 25 8
_apply_type_annotations.py
in libcst/codemod/visitors
844 61 39 762 25 11
expression.py
in libcst/_nodes
2105 180 66 943 24 8
gen_matcher_classes.py
in libcst/codegen
392 27 110 935 23 7
expression.py
in libcst/_parser/conversions
1328 55 102 943 23 7
base_provider.py
in libcst/metadata
69 7 110 1024 22 7
__init__.py
in libcst/metadata
84 - 110 1024 22 8
5520 1606 100 978 21 7
base.py
in libcst/_nodes
207 36 91 943 20 9
statement.py
in libcst/_nodes
2273 158 66 943 20 9
wrapper.py
in libcst/metadata
117 10 102 988 19 9
position_provider.py
in libcst/metadata
83 8 110 1018 17 6
_add_imports.py
in libcst/codemod/visitors
288 8 24 864 16 6
_command.py
in libcst/codemod
75 8 102 864 15 7
_visitors.py
in libcst
56 8 110 996 14 7
type_inference_provider.py
in libcst/metadata
79 9 102 876 13 5
86 8 110 996 13 6
config.py
in libcst/_parser/types
89 4 102 943 13 6
140 19 110 963 13 5
__init__.py
in libcst/codemod/visitors
24 - 39 864 12 8
__init__.py
in libcst/helpers
32 - 25 859 12 7
_gather_imports.py
in libcst/codemod/visitors
48 3 24 864 12 5
_codemod.py
in libcst/codemod
56 7 110 864 12 4
_testing.py
in libcst/codemod
68 3 102 864 12 5
internal.py
in libcst/_nodes
147 15 110 943 12 7
convert_format_to_fstring.py
in libcst/codemod/commands
292 13 102 859 12 5
statement.py
in libcst/_parser/conversions
1156 52 102 943 12 5
_context.py
in libcst/codemod
19 1 25 864 11 5
strip_strings_from_types.py
in libcst/codemod/commands
31 1 110 859 11 5
_runner.py
in libcst/codemod
61 1 110 864 11 6
gen_visitor_functions.py
in libcst/codegen
93 - 110 978 11 6
120 10 110 996 11 8
_return_types.py
in libcst/matchers
352 - 108 915 11 5
grammar.py
in libcst/_parser
360 10 110 943 11 7
tokenize.py
in libcst/_parser/parso/python
893 25 102 943 11 6
7 1 102 996 10 6
full_repo_manager.py
in libcst/metadata
49 5 110 842 10 6
module.py
in libcst/helpers
55 5 24 859 10 5
61 4 110 943 10 7
module.py
in libcst/_nodes
77 8 110 943 10 6
detect_config.py
in libcst/_parser
131 7 110 943 10 6
params.py
in libcst/_parser/conversions
248 7 102 943 10 4
_remove_imports.py
in libcst/codemod/visitors
266 14 24 800 10 4
production_decorator.py
in libcst/_parser
27 3 102 943 9 5
Files With Most Contributors (Top 50)
Files sorted by the number of unique email addresses found in commits.

See data for all files...

File# lines# unitslast modified
(days ago)
created
(days ago)
# changes# contributors
scope_provider.py
in libcst/metadata
733 102 102 961 67 15
setup.py
in root
57 1 24 1052 47 10
__init__.py
in libcst
434 - 108 1052 35 9
tool.py
in libcst
656 19 110 1052 33 9
_cli.py
in libcst/codemod
464 14 24 864 29 16
_matcher_base.py
in libcst/matchers
980 104 102 935 27 12
_visitors.py
in libcst/matchers
543 40 102 935 25 8
_apply_type_annotations.py
in libcst/codemod/visitors
844 61 39 762 25 11
expression.py
in libcst/_nodes
2105 180 66 943 24 8
expression.py
in libcst/_parser/conversions
1328 55 102 943 23 7
gen_matcher_classes.py
in libcst/codegen
392 27 110 935 23 7
base_provider.py
in libcst/metadata
69 7 110 1024 22 7
__init__.py
in libcst/metadata
84 - 110 1024 22 8
5520 1606 100 978 21 7
base.py
in libcst/_nodes
207 36 91 943 20 9
statement.py
in libcst/_nodes
2273 158 66 943 20 9
wrapper.py
in libcst/metadata
117 10 102 988 19 9
position_provider.py
in libcst/metadata
83 8 110 1018 17 6
_add_imports.py
in libcst/codemod/visitors
288 8 24 864 16 6
_command.py
in libcst/codemod
75 8 102 864 15 7
_visitors.py
in libcst
56 8 110 996 14 7
140 19 110 963 13 5
type_inference_provider.py
in libcst/metadata
79 9 102 876 13 5
config.py
in libcst/_parser/types
89 4 102 943 13 6
86 8 110 996 13 6
_codemod.py
in libcst/codemod
56 7 110 864 12 4
_testing.py
in libcst/codemod
68 3 102 864 12 5
convert_format_to_fstring.py
in libcst/codemod/commands
292 13 102 859 12 5
_gather_imports.py
in libcst/codemod/visitors
48 3 24 864 12 5
statement.py
in libcst/_parser/conversions
1156 52 102 943 12 5
__init__.py
in libcst/helpers
32 - 25 859 12 7
internal.py
in libcst/_nodes
147 15 110 943 12 7
__init__.py
in libcst/codemod/visitors
24 - 39 864 12 8
strip_strings_from_types.py
in libcst/codemod/commands
31 1 110 859 11 5
_context.py
in libcst/codemod
19 1 25 864 11 5
_return_types.py
in libcst/matchers
352 - 108 915 11 5
_runner.py
in libcst/codemod
61 1 110 864 11 6
tokenize.py
in libcst/_parser/parso/python
893 25 102 943 11 6
gen_visitor_functions.py
in libcst/codegen
93 - 110 978 11 6
grammar.py
in libcst/_parser
360 10 110 943 11 7
120 10 110 996 11 8
_remove_imports.py
in libcst/codemod/visitors
266 14 24 800 10 4
params.py
in libcst/_parser/conversions
248 7 102 943 10 4
module.py
in libcst/helpers
55 5 24 859 10 5
full_repo_manager.py
in libcst/metadata
49 5 110 842 10 6
detect_config.py
in libcst/_parser
131 7 110 943 10 6
7 1 102 996 10 6
module.py
in libcst/_nodes
77 8 110 943 10 6
61 4 110 943 10 7
convert_type_comments.py
in libcst/codemod/commands
577 34 61 95 9 1
Correlations

File Size vs. Number of Changes: 178 points

libcst/codemod/_cli.py x: 464 lines of code y: 29 # changes libcst/codemod/visitors/_add_imports.py x: 288 lines of code y: 16 # changes libcst/codemod/visitors/_gather_imports.py x: 48 lines of code y: 12 # changes libcst/codemod/visitors/_imports.py x: 28 lines of code y: 2 # changes libcst/codemod/visitors/_remove_imports.py x: 266 lines of code y: 10 # changes libcst/helpers/module.py x: 55 lines of code y: 10 # changes libcst/metadata/name_provider.py x: 101 lines of code y: 5 # changes libcst/_type_enforce.py x: 92 lines of code y: 8 # changes pyproject.toml x: 9 lines of code y: 7 # changes setup.py x: 57 lines of code y: 47 # changes libcst/codemod/_context.py x: 19 lines of code y: 11 # changes libcst/helpers/__init__.py x: 32 lines of code y: 12 # changes libcst/codemod/visitors/__init__.py x: 24 lines of code y: 12 # changes libcst/codemod/visitors/_apply_type_annotations.py x: 844 lines of code y: 25 # changes libcst/codemod/visitors/_gather_global_names.py x: 36 lines of code y: 1 # changes libcst/codemod/commands/add_trailing_commas.py x: 98 lines of code y: 2 # changes libcst/codemod/commands/convert_type_comments.py x: 577 lines of code y: 9 # changes libcst/_nodes/expression.py x: 2105 lines of code y: 24 # changes libcst/_nodes/statement.py x: 2273 lines of code y: 20 # changes native/libcst/src/nodes/expression.rs x: 2017 lines of code y: 6 # changes native/libcst/src/nodes/mod.rs x: 40 lines of code y: 6 # changes native/libcst/src/nodes/module.rs x: 43 lines of code y: 5 # changes native/libcst/src/nodes/op.rs x: 1407 lines of code y: 6 # changes native/libcst/src/nodes/statement.rs x: 2633 lines of code y: 9 # changes native/libcst/src/nodes/traits.rs x: 124 lines of code y: 5 # changes native/libcst/src/nodes/whitespace.rs x: 149 lines of code y: 5 # changes native/libcst/src/py.rs x: 22 lines of code y: 4 # changes native/libcst_derive/src/into_py.rs x: 168 lines of code y: 5 # changes libcst/_parser/parso/python/token.py x: 24 lines of code y: 5 # changes libcst/_parser/py_whitespace_parser.py x: 183 lines of code y: 3 # changes libcst/_parser/types/py_config.py x: 22 lines of code y: 3 # changes libcst/_parser/types/py_token.py x: 15 lines of code y: 3 # changes libcst/_parser/types/py_whitespace_state.py x: 9 lines of code y: 3 # changes native/libcst/benches/parser_benchmark.rs x: 97 lines of code y: 3 # changes native/libcst/src/lib.rs x: 63 lines of code y: 4 # changes native/libcst/src/nodes/codegen.rs x: 45 lines of code y: 3 # changes native/libcst/src/nodes/parser_config.rs x: 111 lines of code y: 3 # changes native/libcst/src/nodes/py_cached.rs x: 60 lines of code y: 3 # changes native/libcst/src/parser/errors.rs x: 77 lines of code y: 4 # changes native/libcst/src/parser/grammar.rs x: 3138 lines of code y: 8 # changes native/libcst/src/tokenizer/core/mod.rs x: 940 lines of code y: 5 # changes native/libcst/src/tokenizer/tests.rs x: 628 lines of code y: 5 # changes native/libcst/src/tokenizer/text_position/char_width.rs x: 271 lines of code y: 3 # changes native/libcst/src/tokenizer/text_position/mod.rs x: 267 lines of code y: 3 # changes native/libcst/src/tokenizer/whitespace_parser.rs x: 313 lines of code y: 3 # changes native/libcst_derive/src/codegen.rs x: 53 lines of code y: 3 # changes stubs/libcst/native.pyi x: 5 lines of code y: 2 # changes libcst/_add_slots.py x: 40 lines of code y: 7 # changes libcst/_nodes/base.py x: 207 lines of code y: 20 # changes libcst/_nodes/op.py x: 428 lines of code y: 8 # changes libcst/_nodes/whitespace.py x: 122 lines of code y: 7 # changes libcst/_typed_visitor.py x: 5520 lines of code y: 21 # changes libcst/codegen/generate.py x: 103 lines of code y: 9 # changes libcst/_parser/base_parser.py x: 131 lines of code y: 6 # changes libcst/_parser/conversions/expression.py x: 1328 lines of code y: 23 # changes libcst/_parser/conversions/params.py x: 248 lines of code y: 10 # changes libcst/_parser/conversions/statement.py x: 1156 lines of code y: 12 # changes libcst/_parser/parso/python/tokenize.py x: 893 lines of code y: 11 # changes libcst/_parser/production_decorator.py x: 27 lines of code y: 9 # changes libcst/_parser/types/config.py x: 89 lines of code y: 13 # changes libcst/_position.py x: 29 lines of code y: 8 # changes libcst/_typed_visitor_base.py x: 7 lines of code y: 10 # changes libcst/codemod/_command.py x: 75 lines of code y: 15 # changes libcst/codemod/_testing.py x: 68 lines of code y: 12 # changes libcst/codemod/commands/convert_format_to_fstring.py x: 292 lines of code y: 12 # changes libcst/codemod/commands/convert_percent_format_to_fstring.py x: 107 lines of code y: 6 # changes libcst/codemod/commands/ensure_import_present.py x: 49 lines of code y: 9 # changes libcst/codemod/commands/rename.py x: 287 lines of code y: 4 # changes libcst/codemod/visitors/_gather_unused_imports.py x: 90 lines of code y: 6 # changes libcst/matchers/_decorators.py x: 55 lines of code y: 7 # changes libcst/matchers/_matcher_base.py x: 980 lines of code y: 27 # changes libcst/matchers/_visitors.py x: 543 lines of code y: 25 # changes libcst/metadata/scope_provider.py x: 733 lines of code y: 67 # changes libcst/metadata/type_inference_provider.py x: 79 lines of code y: 13 # changes libcst/metadata/wrapper.py x: 117 lines of code y: 19 # changes libcst/__init__.py x: 434 lines of code y: 35 # changes libcst/matchers/_return_types.py x: 352 lines of code y: 11 # changes libcst/_exceptions.py x: 120 lines of code y: 11 # changes libcst/_maybe_sentinel.py x: 5 lines of code y: 6 # changes libcst/_metadata_dependent.py x: 61 lines of code y: 10 # changes libcst/_nodes/deep_equals.py x: 32 lines of code y: 3 # changes libcst/_nodes/internal.py x: 147 lines of code y: 12 # changes libcst/_nodes/module.py x: 77 lines of code y: 10 # changes libcst/_parser/custom_itertools.py x: 7 lines of code y: 4 # changes libcst/_parser/detect_config.py x: 131 lines of code y: 10 # changes libcst/_parser/entrypoints.py x: 104 lines of code y: 7 # changes libcst/_parser/grammar.py x: 360 lines of code y: 11 # changes libcst/_parser/python_parser.py x: 35 lines of code y: 5 # changes libcst/_parser/types/partials.py x: 116 lines of code y: 6 # changes libcst/_parser/types/production.py x: 10 lines of code y: 5 # changes libcst/_visitors.py x: 56 lines of code y: 14 # changes libcst/codegen/gather.py x: 96 lines of code y: 7 # changes libcst/codegen/gen_matcher_classes.py x: 392 lines of code y: 23 # changes libcst/codegen/gen_type_mapping.py x: 48 lines of code y: 4 # changes libcst/codegen/gen_visitor_functions.py x: 93 lines of code y: 11 # changes libcst/codegen/transforms.py x: 24 lines of code y: 7 # changes libcst/codemod/_codemod.py x: 56 lines of code y: 12 # changes libcst/codemod/_runner.py x: 61 lines of code y: 11 # changes libcst/codemod/_visitor.py x: 50 lines of code y: 9 # changes libcst/codemod/commands/noop.py x: 6 lines of code y: 8 # changes libcst/codemod/commands/remove_pyre_directive.py x: 28 lines of code y: 6 # changes libcst/codemod/commands/remove_unused_imports.py x: 62 lines of code y: 6 # changes libcst/codemod/commands/strip_strings_from_types.py x: 31 lines of code y: 11 # changes libcst/codemod/commands/unnecessary_format_string.py x: 35 lines of code y: 8 # changes libcst/codemod/visitors/_gather_string_annotation_names.py x: 70 lines of code y: 5 # changes libcst/helpers/_template.py x: 329 lines of code y: 8 # changes libcst/metadata/__init__.py x: 84 lines of code y: 22 # changes libcst/metadata/base_provider.py x: 69 lines of code y: 22 # changes libcst/metadata/expression_context_provider.py x: 140 lines of code y: 13 # changes libcst/metadata/full_repo_manager.py x: 49 lines of code y: 10 # changes libcst/metadata/parent_node_provider.py x: 14 lines of code y: 4 # changes libcst/metadata/position_provider.py x: 83 lines of code y: 17 # changes libcst/metadata/reentrant_codegen.py x: 99 lines of code y: 4 # changes libcst/tool.py x: 656 lines of code y: 33 # changes libcst/_parser/parso/python/py_token.py x: 23 lines of code y: 1 # changes native/Cargo.toml x: 5 lines of code y: 1 # changes libcst/_parser/parso/pgen2/generator.py x: 194 lines of code y: 4 # changes libcst/_parser/parso/pgen2/grammar_parser.py x: 116 lines of code y: 4 # changes
67.0
# changes
  min: 1.0
  average: 8.07
  25th percentile: 3.0
  median: 6.0
  75th percentile: 10.0
  max: 67.0
0 5520.0
lines of code
min: 1.0 | average: 229.49 | 25th percentile: 18.75 | median: 55.5 | 75th percentile: 124.25 | max: 5520.0

Number of Contributors vs. Number of Changes: 178 points

libcst/codemod/_cli.py x: 16 # contributors y: 29 # changes libcst/codemod/visitors/_add_imports.py x: 6 # contributors y: 16 # changes libcst/codemod/visitors/_gather_imports.py x: 5 # contributors y: 12 # changes libcst/codemod/visitors/_imports.py x: 2 # contributors y: 2 # changes libcst/codemod/visitors/_remove_imports.py x: 4 # contributors y: 10 # changes libcst/helpers/module.py x: 5 # contributors y: 10 # changes libcst/metadata/name_provider.py x: 3 # contributors y: 5 # changes libcst/_type_enforce.py x: 5 # contributors y: 8 # changes pyproject.toml x: 6 # contributors y: 7 # changes setup.py x: 10 # contributors y: 47 # changes libcst/codemod/_context.py x: 5 # contributors y: 11 # changes libcst/helpers/__init__.py x: 7 # contributors y: 12 # changes libcst/codemod/visitors/__init__.py x: 8 # contributors y: 12 # changes libcst/codemod/visitors/_apply_type_annotations.py x: 11 # contributors y: 25 # changes libcst/codemod/visitors/_gather_global_names.py x: 1 # contributors y: 1 # changes libcst/codemod/commands/add_trailing_commas.py x: 1 # contributors y: 2 # changes libcst/codemod/commands/convert_type_comments.py x: 1 # contributors y: 9 # changes libcst/_nodes/expression.py x: 8 # contributors y: 24 # changes libcst/_nodes/statement.py x: 9 # contributors y: 20 # changes native/libcst/src/nodes/expression.rs x: 2 # contributors y: 6 # changes native/libcst/src/nodes/mod.rs x: 1 # contributors y: 6 # changes native/libcst/src/nodes/module.rs x: 2 # contributors y: 5 # changes native/libcst/src/nodes/statement.rs x: 3 # contributors y: 9 # changes native/libcst/src/nodes/traits.rs x: 1 # contributors y: 5 # changes native/libcst/src/py.rs x: 1 # contributors y: 4 # changes libcst/_parser/py_whitespace_parser.py x: 2 # contributors y: 3 # changes libcst/_parser/types/py_config.py x: 1 # contributors y: 3 # changes native/libcst/src/lib.rs x: 2 # contributors y: 4 # changes native/libcst/src/parser/grammar.rs x: 3 # contributors y: 8 # changes libcst/_nodes/op.py x: 4 # contributors y: 8 # changes libcst/_nodes/whitespace.py x: 5 # contributors y: 7 # changes libcst/_typed_visitor.py x: 7 # contributors y: 21 # changes libcst/codegen/generate.py x: 6 # contributors y: 9 # changes libcst/_parser/base_parser.py x: 5 # contributors y: 6 # changes libcst/_parser/conversions/expression.py x: 7 # contributors y: 23 # changes libcst/_parser/parso/python/tokenize.py x: 6 # contributors y: 11 # changes libcst/_parser/production_decorator.py x: 5 # contributors y: 9 # changes libcst/_parser/types/config.py x: 6 # contributors y: 13 # changes libcst/_parser/whitespace_parser.py x: 4 # contributors y: 7 # changes libcst/_typed_visitor_base.py x: 6 # contributors y: 10 # changes libcst/codemod/_command.py x: 7 # contributors y: 15 # changes libcst/codemod/commands/rename.py x: 3 # contributors y: 4 # changes libcst/codemod/visitors/_gather_unused_imports.py x: 3 # contributors y: 6 # changes libcst/matchers/_matcher_base.py x: 12 # contributors y: 27 # changes libcst/matchers/_visitors.py x: 8 # contributors y: 25 # changes libcst/metadata/scope_provider.py x: 15 # contributors y: 67 # changes libcst/metadata/type_inference_provider.py x: 5 # contributors y: 13 # changes libcst/metadata/wrapper.py x: 9 # contributors y: 19 # changes libcst/__init__.py x: 9 # contributors y: 35 # changes libcst/_exceptions.py x: 8 # contributors y: 11 # changes libcst/_flatten_sentinel.py x: 3 # contributors y: 3 # changes libcst/_metadata_dependent.py x: 7 # contributors y: 10 # changes libcst/_parser/custom_itertools.py x: 4 # contributors y: 4 # changes libcst/_parser/grammar.py x: 7 # contributors y: 11 # changes libcst/_parser/python_parser.py x: 4 # contributors y: 5 # changes libcst/_parser/types/partials.py x: 4 # contributors y: 6 # changes libcst/_visitors.py x: 7 # contributors y: 14 # changes libcst/codegen/gather.py x: 3 # contributors y: 7 # changes libcst/codemod/_codemod.py x: 4 # contributors y: 12 # changes libcst/codemod/_visitor.py x: 4 # contributors y: 9 # changes libcst/metadata/__init__.py x: 8 # contributors y: 22 # changes libcst/metadata/base_provider.py x: 7 # contributors y: 22 # changes libcst/metadata/position_provider.py x: 6 # contributors y: 17 # changes libcst/tool.py x: 9 # contributors y: 33 # changes libcst/_parser/parso/utils.py x: 5 # contributors y: 5 # changes
67.0
# changes
  min: 1.0
  average: 8.07
  25th percentile: 3.0
  median: 6.0
  75th percentile: 10.0
  max: 67.0
0 16.0
# contributors
min: 1.0 | average: 3.86 | 25th percentile: 1.0 | median: 3.0 | 75th percentile: 5.0 | max: 16.0