CONTRIBUTING to our metrics repository
Welcome to the metrics repository. We welcome contributions of all kinds, large, small and in between.
To get started contributing be sure to fork and clone this repository.
About the data in this repository
The data in the data/ directory of this repo, contain contributor data for the pyOpenSci organization. This data includes:
- Contributor pull request and issue data
- Contributor data collected and parsed using the all-contributors bot
- Peer review data collected from our software-submission repository
- Editorial team membership from website board YAML plus
manual-editorial-roster.yml(pyosMeta); profile data maintained indata/editor_profiles.csv
About the scripts in this repository
The scripts/ directory contains utility scripts for data collection, parsing, and analysis:
- get-editors.py: Merges website
editorial-board.yml/emeritus-editors.ymlwithmanual-editorial-roster.yml(same rules as pyosMetamerge_manual_roster), then joins profiles fromdata/editor_profiles.csv. Outputs:data/editorial_team_domains.csv,data/emeritus_editor_domains.csv. Add or update editor metadata indata/editor_profiles.csv; the output CSVs are generated files. How the roster YAML is produced, and when, is in the handbook’s data workflows page. - get-package-data.py: Loads website
packages.ymlvia pyosMeta (PACKAGES_RAW_URL) and writesdata/package_data.csv. - get-prs.py: Parses all active pyOpenSci repositories to collect contributor activity (issues and PRs), excluding bots. Outputs
data/{year}_all_issues_prs.csvfor tracking contribution growth. Each file contains only items opened in that year (2018_2023_all_issues_prs.csvcovers 2018 through 2023); an item opened in 2024 and closed in 2025 stays in the 2024 file, withdate_closedset. The biweekly cron run refreshes the current year. To refresh close dates and status for an earlier year, runuv run python scripts/get-prs.py --year 2024(or--historicalfor the 2018-2023 file). - get-review-contributors.py: Loads website
contributors.ymlvia pyosMeta (CONTRIBUTORS_RAW_URL), validates withPersonModel, and writesdata/review_contribs.csv. - get-reviews.py: Parses all pyOpenSci reviews (presubmissions, closed submissions, etc.) to compile activity stats over time. Uses pyosMeta utilities for processing.
- get-sprint-data.py: Collects sprint issue/PR data from the GitHub sprint project board via GraphQL (including author and state). Output:
data/sprint_data.csv.
How the scripts are used
The scripts above are run via a CI cron job.
Running scripts locally
Install uv, copy .env-default to .env with a GitHub token (see the README), then:
uv sync
uv run python scripts/get-review-contributors.pyCI uses the same pattern (uv sync --frozen --no-dev then uv run python scripts/…). Dependencies live in pyproject.toml / uv.lock — not requirements.txt.