pyosmeta
Description
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.
How the metadata workflow works
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
What each step does
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.
Installation
pyosMeta is available on PyPI and can be installed with pip:
pip install pyosmeta
Usage
After 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
- Contributing guide — how to open issues and pull requests
- Development guide — local setup, CLIs, tests, and releases
- Change log
Contributors ✨
Thanks goes to these wonderful people (emoji key):
This project follows the all-contributors specification. Contributions of any kind welcome!
Code of Conduct
Everyone interacting in the pyOpenSci project's codebases, issue trackers, chat rooms, and communication venues is expected to follow the pyOpenSci Code of Conduct.
License
Release files for pyosmeta 1.8.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| pyosmeta-1.8.1.tar.gz | 4.3 MB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| pyosmeta-1.8.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 4.3 MB
Release files / pyosmeta-1.8.1.tar.gz
| Download URL | pyosmeta-1.8.1.tar.gz |
|---|---|
| Size | 4.3 MB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
54eac13663b9658c91d6a9bb9b9422122e6cd4de885899a77b4bb6ec3043b211
|
|
BLAKE2b-256 checksum How to use checksums |
1a1938edeaa9ab265269ee0f692add9876aeed6b71ec0c3ff8896160bf00fe37
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Aug 25, 2026.
Transparency logRelease files / pyosmeta-1.8.1-py3-none-any.whl
| Download URL | pyosmeta-1.8.1-py3-none-any.whl |
|---|---|
| Size | 50.9 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
6bc7f8c21b918fd4627b8960b8496c31e6f7706f1a46d37d4e44789b9699ccb7
|
|
BLAKE2b-256 checksum How to use checksums |
4f5a54dfea840d94a6f5ac7265319c018eb800a36d96faac4f8528aef08291ce
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Aug 25, 2026.
Transparency log