pyosmeta provides the tools and scripts used to manage pyOpenSci's contributor and peer review metadata. This repo contains several modules and several CLI scripts, including:
parse-historyupdate-contributorsupdate-reviewsupdate-review-teams
Since pyOpenSci uses this tool for its website, we expect this package to have infrequent releases.
The canonical YAML files live in the
pyopensci.github.io website
repo under data/:
data/contributors.yml— community page and metricsdata/packages.yml— accepted peer-reviewed packages and GitHub metrics
A weekly (or manually dispatched) GitHub Action on the website repo
(update-contribs-reviews.yml)
checks out that repo, installs pyosmeta, runs the three CLIs below in order,
then opens a PR with updates to those two files.
flowchart LR
subgraph website["pyopensci.github.io (website repo)"]
direction TB
contribYml["data/contributors.yml"]
pkgYml["data/packages.yml"]
contribYml ~~~ pkgYml
end
subgraph pyosMeta["pyosMeta package"]
direction TB
updateContribs["update-contributors"]
updateReviews["update-reviews"]
pickle1["all_contribs.pickle"]
pickle2["all_reviews.pickle"]
updateTeams["update-review-teams"]
end
website ~~~ pyosMeta
contribYml -->|"Read existing yml"| updateContribs
pkgYml -->|"Read existing yml"| updateReviews
updateContribs --> pickle1 --> updateTeams
updateReviews --> pickle2 --> updateTeams
updateTeams -->|"Update yml file"| contribYml
updateTeams -->|"Update yml file"| pkgYml
update-contributors— Loads the publishedcontributors.yml, finds new people from pyOpenSci.all-contributorsrcfiles, and (with--update) refreshes profile fields from GitHub. If a person already has anamein the YAML, that value is kept and not overwritten from GitHub.update-reviews— Parses accepted review issues, fetches fresh GitHub metrics per package, then gap-fills any missinggh_metafrom the existingpackages.ymlso previously published metrics are not deleted when an API call fails.update-review-teams— Merges the two pickle outputs (no extra API calls), links reviewers/editors/maintainers to packages, and writesdata/contributors.ymlanddata/packages.ymlrelative to the current working directory (the website checkout in CI).
parse-history is a one-time helper for date_added values; it is not part of
the weekly pipeline.
For local setup and how to run the scripts, see the Development Guide.
pyosMeta is available on PyPI and can be installed with pip:
pip install pyosmetaAfter installing pyosmeta, the main entry points are:
update-contributorsupdate-reviewsupdate-review-teamsparse-history(one-time helper; not part of the weekly pipeline)
See How the metadata workflow works for what each weekly script does, and the Development Guide for how to run them locally.
- Contributing guide — how to open issues and pull requests
- Development guide — local setup, CLIs, tests, and releases
- Change log
Thanks goes to these wonderful people (emoji key):
This project follows the all-contributors specification. Contributions of any kind welcome!
Everyone interacting in the pyOpenSci project's codebases, issue trackers, chat rooms, and communication venues is expected to follow the pyOpenSci Code of Conduct.