guardian / climate-data-cli
File Change Frequency

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

Overview
File Change Frequency Overall
  • There are 28 files with 1,043 lines of code.
    • 0 files changed more than 100 times (0 lines of code)
    • 0 files changed 51-100 times (0 lines of code)
    • 0 files changed 21-50 times (0 lines of code)
    • 1 file changed 6-20 times (100 lines of code)
    • 27 files changed 1-5 times (943 lines of code)
0% | 0% | 0% | 9% | 90%
Legend:
101+
51-100
21-50
6-20
1-5

explore: grouped by folders | grouped by update frequency | data
Contributors Count Frequency Overall
  • There are 28 files with 1,043 lines of code.
    • 0 files changed by more than 25 contributors (0 lines of code)
    • 0 files changed by 11-25 contributors (0 lines of code)
    • 0 files changed by 6-10 contributors (0 lines of code)
    • 8 files changed by 2-5 contributors (303 lines of code)
    • 20 files changed by 1 contributor (740 lines of code)
0% | 0% | 0% | 29% | 70%
Legend:
26+
11-25
6-10
2-5
1

explore: grouped by folders | grouped by contributors count | data
File Change Frequency per File Extension
py, yaml, txt, json, nc, gitignore, md, toml
File Change Frequency per Extension
The number of recorded file updates
101+
51-100
21-50
6-20
1-5
py0% | 0% | 0% | 10% | 89%
yaml0% | 0% | 0% | 0% | 100%
toml0% | 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
src0% | 0% | 0% | 10% | 89%
sample-recipes0% | 0% | 0% | 0% | 100%
ROOT0% | 0% | 0% | 0% | 100%
Most Frequently Changed Files (Top 28)

See data for all files...

File# lines# unitscreatedlast modified# changes
(days)
# contributorsfirst
contributor
latest
contributor
cli.py
in src/guclimate/recipes
100 3 2024-11-29 2025-03-25 7 2 njdehoog@gmail.com ed.gargan@guardian.co.uk
cli.py
in src/guclimate
27 3 2023-12-13 2025-03-25 4 2 njdehoog@gmail.com ed.gargan@guardian.co.uk
recipe.py
in src/guclimate/core
14 3 2024-11-29 2025-03-13 3 2 njdehoog@gmail.com ed.gargan@guardian.co.uk
cli.py
in src/guclimate/process
34 2 2023-12-13 2024-12-02 3 1 njdehoog@gmail.com njdehoog@gmail.com
34 - 2024-11-25 2024-11-27 3 1 njdehoog@gmail.com njdehoog@gmail.com
requests.py
in src/guclimate/core
96 14 2024-12-03 2025-03-25 3 2 njdehoog@gmail.com ed.gargan@guardian.co.uk
cli.py
in src/guclimate/requests
171 5 2025-03-25 2025-04-01 3 1 ed.gargan@guardian.co.uk ed.gargan@guardian.co.uk
__init__.py
in src/guclimate/core
1 - 2023-12-13 2025-03-13 2 2 njdehoog@gmail.com ed.gargan@guardian.co.uk
__main__.py
in src/guclimate
5 1 2023-12-13 2025-03-13 2 2 njdehoog@gmail.com ed.gargan@guardian.co.uk
14 - 2024-11-29 2024-12-13 2 1 njdehoog@gmail.com njdehoog@gmail.com
15 - 2024-12-03 2024-12-04 2 1 njdehoog@gmail.com njdehoog@gmail.com
20 - 2024-12-02 2025-03-25 2 2 njdehoog@gmail.com ed.gargan@guardian.co.uk
download.py
in src/guclimate/requests
38 8 2025-03-25 2025-03-31 2 1 ed.gargan@guardian.co.uk ed.gargan@guardian.co.uk
runner.py
in src/guclimate/core
40 6 2024-12-07 2025-03-13 2 2 njdehoog@gmail.com ed.gargan@guardian.co.uk
transform.py
in src/guclimate/requests
66 9 2025-03-25 2025-03-31 2 1 ed.gargan@guardian.co.uk ed.gargan@guardian.co.uk
__init__.py
in src/guclimate
2 - 2023-12-13 2023-12-13 1 1 njdehoog@gmail.com njdehoog@gmail.com
__init__.py
in src/guclimate/requests
3 - 2025-03-25 2025-03-25 1 1 ed.gargan@guardian.co.uk ed.gargan@guardian.co.uk
__init__.py
in src/guclimate/recipes
3 - 2024-11-29 2024-11-29 1 1 njdehoog@gmail.com njdehoog@gmail.com
__init__.py
in src/guclimate/process
3 - 2023-12-13 2023-12-13 1 1 njdehoog@gmail.com njdehoog@gmail.com
__init__.py
in src/guclimate/setup
3 - 2025-03-25 2025-03-25 1 1 ed.gargan@guardian.co.uk ed.gargan@guardian.co.uk
13 - 2024-12-02 2024-12-02 1 1 njdehoog@gmail.com njdehoog@gmail.com
15 - 2024-12-07 2024-12-07 1 1 njdehoog@gmail.com njdehoog@gmail.com
dataset.py
in src/guclimate/core
21 5 2023-12-13 2023-12-13 1 1 njdehoog@gmail.com njdehoog@gmail.com
ui.py
in src/guclimate/core
44 6 2025-03-25 2025-03-25 1 1 ed.gargan@guardian.co.uk ed.gargan@guardian.co.uk
cli.py
in src/guclimate/setup
45 1 2025-03-25 2025-03-25 1 1 ed.gargan@guardian.co.uk ed.gargan@guardian.co.uk
validate.py
in src/guclimate/requests
60 6 2025-03-25 2025-03-25 1 1 ed.gargan@guardian.co.uk ed.gargan@guardian.co.uk
parse_input.py
in src/guclimate/core
67 7 2025-03-25 2025-03-25 1 1 ed.gargan@guardian.co.uk ed.gargan@guardian.co.uk
ecv.py
in src/guclimate/requests/shortcuts
89 3 2025-03-25 2025-03-25 1 1 ed.gargan@guardian.co.uk ed.gargan@guardian.co.uk
Files With Most Contributors (Top 28)
Based on the number of unique email addresses found in commits.

See data for all files...

File# lines# unitscreatedlast modified# changes
(days)
# contributorsfirst
contributor
latest
contributor
cli.py
in src/guclimate/recipes
100 3 2024-11-29 2025-03-25 7 2 njdehoog@gmail.com ed.gargan@guardian.co.uk
cli.py
in src/guclimate
27 3 2023-12-13 2025-03-25 4 2 njdehoog@gmail.com ed.gargan@guardian.co.uk
requests.py
in src/guclimate/core
96 14 2024-12-03 2025-03-25 3 2 njdehoog@gmail.com ed.gargan@guardian.co.uk
recipe.py
in src/guclimate/core
14 3 2024-11-29 2025-03-13 3 2 njdehoog@gmail.com ed.gargan@guardian.co.uk
20 - 2024-12-02 2025-03-25 2 2 njdehoog@gmail.com ed.gargan@guardian.co.uk
__main__.py
in src/guclimate
5 1 2023-12-13 2025-03-13 2 2 njdehoog@gmail.com ed.gargan@guardian.co.uk
__init__.py
in src/guclimate/core
1 - 2023-12-13 2025-03-13 2 2 njdehoog@gmail.com ed.gargan@guardian.co.uk
runner.py
in src/guclimate/core
40 6 2024-12-07 2025-03-13 2 2 njdehoog@gmail.com ed.gargan@guardian.co.uk
34 - 2024-11-25 2024-11-27 3 1 njdehoog@gmail.com njdehoog@gmail.com
cli.py
in src/guclimate/process
34 2 2023-12-13 2024-12-02 3 1 njdehoog@gmail.com njdehoog@gmail.com
cli.py
in src/guclimate/requests
171 5 2025-03-25 2025-04-01 3 1 ed.gargan@guardian.co.uk ed.gargan@guardian.co.uk
14 - 2024-11-29 2024-12-13 2 1 njdehoog@gmail.com njdehoog@gmail.com
15 - 2024-12-03 2024-12-04 2 1 njdehoog@gmail.com njdehoog@gmail.com
download.py
in src/guclimate/requests
38 8 2025-03-25 2025-03-31 2 1 ed.gargan@guardian.co.uk ed.gargan@guardian.co.uk
transform.py
in src/guclimate/requests
66 9 2025-03-25 2025-03-31 2 1 ed.gargan@guardian.co.uk ed.gargan@guardian.co.uk
15 - 2024-12-07 2024-12-07 1 1 njdehoog@gmail.com njdehoog@gmail.com
13 - 2024-12-02 2024-12-02 1 1 njdehoog@gmail.com njdehoog@gmail.com
cli.py
in src/guclimate/setup
45 1 2025-03-25 2025-03-25 1 1 ed.gargan@guardian.co.uk ed.gargan@guardian.co.uk
__init__.py
in src/guclimate/setup
3 - 2025-03-25 2025-03-25 1 1 ed.gargan@guardian.co.uk ed.gargan@guardian.co.uk
__init__.py
in src/guclimate/process
3 - 2023-12-13 2023-12-13 1 1 njdehoog@gmail.com njdehoog@gmail.com
dataset.py
in src/guclimate/core
21 5 2023-12-13 2023-12-13 1 1 njdehoog@gmail.com njdehoog@gmail.com
parse_input.py
in src/guclimate/core
67 7 2025-03-25 2025-03-25 1 1 ed.gargan@guardian.co.uk ed.gargan@guardian.co.uk
ui.py
in src/guclimate/core
44 6 2025-03-25 2025-03-25 1 1 ed.gargan@guardian.co.uk ed.gargan@guardian.co.uk
__init__.py
in src/guclimate
2 - 2023-12-13 2023-12-13 1 1 njdehoog@gmail.com njdehoog@gmail.com
__init__.py
in src/guclimate/recipes
3 - 2024-11-29 2024-11-29 1 1 njdehoog@gmail.com njdehoog@gmail.com
__init__.py
in src/guclimate/requests
3 - 2025-03-25 2025-03-25 1 1 ed.gargan@guardian.co.uk ed.gargan@guardian.co.uk
validate.py
in src/guclimate/requests
60 6 2025-03-25 2025-03-25 1 1 ed.gargan@guardian.co.uk ed.gargan@guardian.co.uk
ecv.py
in src/guclimate/requests/shortcuts
89 3 2025-03-25 2025-03-25 1 1 ed.gargan@guardian.co.uk ed.gargan@guardian.co.uk
Files With Least Contributors (Top 28)
Based on the number of unique email addresses found in commits.

See data for all files...

File# lines# unitscreatedlast modified# changes
(days)
# contributorsfirst
contributor
latest
contributor
cli.py
in src/guclimate/requests
171 5 2025-03-25 2025-04-01 3 1 ed.gargan@guardian.co.uk ed.gargan@guardian.co.uk
ecv.py
in src/guclimate/requests/shortcuts
89 3 2025-03-25 2025-03-25 1 1 ed.gargan@guardian.co.uk ed.gargan@guardian.co.uk
parse_input.py
in src/guclimate/core
67 7 2025-03-25 2025-03-25 1 1 ed.gargan@guardian.co.uk ed.gargan@guardian.co.uk
transform.py
in src/guclimate/requests
66 9 2025-03-25 2025-03-31 2 1 ed.gargan@guardian.co.uk ed.gargan@guardian.co.uk
validate.py
in src/guclimate/requests
60 6 2025-03-25 2025-03-25 1 1 ed.gargan@guardian.co.uk ed.gargan@guardian.co.uk
cli.py
in src/guclimate/setup
45 1 2025-03-25 2025-03-25 1 1 ed.gargan@guardian.co.uk ed.gargan@guardian.co.uk
ui.py
in src/guclimate/core
44 6 2025-03-25 2025-03-25 1 1 ed.gargan@guardian.co.uk ed.gargan@guardian.co.uk
download.py
in src/guclimate/requests
38 8 2025-03-25 2025-03-31 2 1 ed.gargan@guardian.co.uk ed.gargan@guardian.co.uk
34 - 2024-11-25 2024-11-27 3 1 njdehoog@gmail.com njdehoog@gmail.com
cli.py
in src/guclimate/process
34 2 2023-12-13 2024-12-02 3 1 njdehoog@gmail.com njdehoog@gmail.com
dataset.py
in src/guclimate/core
21 5 2023-12-13 2023-12-13 1 1 njdehoog@gmail.com njdehoog@gmail.com
15 - 2024-12-07 2024-12-07 1 1 njdehoog@gmail.com njdehoog@gmail.com
15 - 2024-12-03 2024-12-04 2 1 njdehoog@gmail.com njdehoog@gmail.com
14 - 2024-11-29 2024-12-13 2 1 njdehoog@gmail.com njdehoog@gmail.com
13 - 2024-12-02 2024-12-02 1 1 njdehoog@gmail.com njdehoog@gmail.com
__init__.py
in src/guclimate/setup
3 - 2025-03-25 2025-03-25 1 1 ed.gargan@guardian.co.uk ed.gargan@guardian.co.uk
__init__.py
in src/guclimate/process
3 - 2023-12-13 2023-12-13 1 1 njdehoog@gmail.com njdehoog@gmail.com
__init__.py
in src/guclimate/recipes
3 - 2024-11-29 2024-11-29 1 1 njdehoog@gmail.com njdehoog@gmail.com
__init__.py
in src/guclimate/requests
3 - 2025-03-25 2025-03-25 1 1 ed.gargan@guardian.co.uk ed.gargan@guardian.co.uk
__init__.py
in src/guclimate
2 - 2023-12-13 2023-12-13 1 1 njdehoog@gmail.com njdehoog@gmail.com
cli.py
in src/guclimate/recipes
100 3 2024-11-29 2025-03-25 7 2 njdehoog@gmail.com ed.gargan@guardian.co.uk
requests.py
in src/guclimate/core
96 14 2024-12-03 2025-03-25 3 2 njdehoog@gmail.com ed.gargan@guardian.co.uk
runner.py
in src/guclimate/core
40 6 2024-12-07 2025-03-13 2 2 njdehoog@gmail.com ed.gargan@guardian.co.uk
cli.py
in src/guclimate
27 3 2023-12-13 2025-03-25 4 2 njdehoog@gmail.com ed.gargan@guardian.co.uk
20 - 2024-12-02 2025-03-25 2 2 njdehoog@gmail.com ed.gargan@guardian.co.uk
recipe.py
in src/guclimate/core
14 3 2024-11-29 2025-03-13 3 2 njdehoog@gmail.com ed.gargan@guardian.co.uk
__main__.py
in src/guclimate
5 1 2023-12-13 2025-03-13 2 2 njdehoog@gmail.com ed.gargan@guardian.co.uk
__init__.py
in src/guclimate/core
1 - 2023-12-13 2025-03-13 2 2 njdehoog@gmail.com ed.gargan@guardian.co.uk
Correlations

File Size vs. Number of Changes: 28 points

src/guclimate/requests/cli.py x: 171 lines of code y: 3 # changes src/guclimate/requests/download.py x: 38 lines of code y: 2 # changes src/guclimate/requests/transform.py x: 66 lines of code y: 2 # changes src/guclimate/cli.py x: 27 lines of code y: 4 # changes src/guclimate/core/ui.py x: 44 lines of code y: 1 # changes src/guclimate/requests/shortcuts/ecv.py x: 89 lines of code y: 1 # changes src/guclimate/setup/cli.py x: 45 lines of code y: 1 # changes sample-recipes/get_monthly_temperature_anomalies_since_2020.yaml x: 20 lines of code y: 2 # changes src/guclimate/core/parse_input.py x: 67 lines of code y: 1 # changes src/guclimate/core/requests.py x: 96 lines of code y: 3 # changes src/guclimate/recipes/cli.py x: 100 lines of code y: 7 # changes src/guclimate/requests/__init__.py x: 3 lines of code y: 1 # changes src/guclimate/requests/validate.py x: 60 lines of code y: 1 # changes src/guclimate/__main__.py x: 5 lines of code y: 2 # changes src/guclimate/core/__init__.py x: 1 lines of code y: 2 # changes src/guclimate/core/recipe.py x: 14 lines of code y: 3 # changes src/guclimate/core/runner.py x: 40 lines of code y: 2 # changes sample-recipes/get_monthly_mean_temp_since_1940.yaml x: 14 lines of code y: 2 # changes sample-recipes/get_daily_mean_temp_since_1940.yaml x: 15 lines of code y: 1 # changes sample-recipes/get_hourly_ocean_temp_since_1940.yaml x: 15 lines of code y: 2 # changes sample-recipes/get_december_mean_temp_since_1940.yaml x: 13 lines of code y: 1 # changes src/guclimate/process/cli.py x: 34 lines of code y: 3 # changes src/guclimate/__init__.py x: 2 lines of code y: 1 # changes src/guclimate/core/dataset.py x: 21 lines of code y: 1 # changes
7.0
# changes
  min: 1.0
  average: 1.96
  25th percentile: 1.0
  median: 2.0
  75th percentile: 2.75
  max: 7.0
0 171.0
lines of code
min: 1.0 | average: 37.25 | 25th percentile: 7.0 | median: 24.0 | 75th percentile: 56.25 | max: 171.0

Number of Contributors vs. Number of Changes: 28 points

src/guclimate/requests/cli.py x: 1 # contributors y: 3 # changes src/guclimate/requests/download.py x: 1 # contributors y: 2 # changes src/guclimate/cli.py x: 2 # contributors y: 4 # changes src/guclimate/core/ui.py x: 1 # contributors y: 1 # changes sample-recipes/get_monthly_temperature_anomalies_since_2020.yaml x: 2 # contributors y: 2 # changes src/guclimate/core/requests.py x: 2 # contributors y: 3 # changes src/guclimate/recipes/cli.py x: 2 # contributors y: 7 # changes
7.0
# changes
  min: 1.0
  average: 1.96
  25th percentile: 1.0
  median: 2.0
  75th percentile: 2.75
  max: 7.0
0 2.0
# contributors
min: 1.0 | average: 1.29 | 25th percentile: 1.0 | median: 1.0 | 75th percentile: 2.0 | max: 2.0

Number of Contributors vs. File Size: 28 points

src/guclimate/requests/cli.py x: 1 # contributors y: 171 lines of code src/guclimate/requests/download.py x: 1 # contributors y: 38 lines of code src/guclimate/requests/transform.py x: 1 # contributors y: 66 lines of code src/guclimate/cli.py x: 2 # contributors y: 27 lines of code src/guclimate/core/ui.py x: 1 # contributors y: 44 lines of code src/guclimate/requests/shortcuts/ecv.py x: 1 # contributors y: 89 lines of code src/guclimate/setup/cli.py x: 1 # contributors y: 45 lines of code sample-recipes/get_monthly_temperature_anomalies_since_2020.yaml x: 2 # contributors y: 20 lines of code src/guclimate/core/parse_input.py x: 1 # contributors y: 67 lines of code src/guclimate/core/requests.py x: 2 # contributors y: 96 lines of code src/guclimate/recipes/cli.py x: 2 # contributors y: 100 lines of code src/guclimate/requests/__init__.py x: 1 # contributors y: 3 lines of code src/guclimate/requests/validate.py x: 1 # contributors y: 60 lines of code src/guclimate/__main__.py x: 2 # contributors y: 5 lines of code src/guclimate/core/__init__.py x: 2 # contributors y: 1 lines of code src/guclimate/core/recipe.py x: 2 # contributors y: 14 lines of code src/guclimate/core/runner.py x: 2 # contributors y: 40 lines of code sample-recipes/get_monthly_mean_temp_since_1940.yaml x: 1 # contributors y: 14 lines of code sample-recipes/get_daily_mean_temp_since_1940.yaml x: 1 # contributors y: 15 lines of code sample-recipes/get_december_mean_temp_since_1940.yaml x: 1 # contributors y: 13 lines of code src/guclimate/process/cli.py x: 1 # contributors y: 34 lines of code src/guclimate/__init__.py x: 1 # contributors y: 2 lines of code src/guclimate/core/dataset.py x: 1 # contributors y: 21 lines of code
171.0
lines of code
  min: 1.0
  average: 37.25
  25th percentile: 7.0
  median: 24.0
  75th percentile: 56.25
  max: 171.0
0 2.0
# contributors
min: 1.0 | average: 1.29 | 25th percentile: 1.0 | median: 1.0 | 75th percentile: 2.0 | max: 2.0