pyOpenSci Infrastructure#
pyOpenSci uses GitHub to manage almost all of its infrastructure, from community processes to website rendering. This page provides an overview of our core repositories, how they work together, and how they contribute to the website and community operations.
Learn more about all of our repos here.
%%{ init: { "theme": "default", "themeVariables": { "fontSize": "200%" } } }%%
flowchart TD
%% Note above Software Review
Note["Peer review happens<br>in GitHub issues"]
%% Top: software-review repo
A(<b>Software Review</b><br><sub>github.com/pyOpenSci/software-review</sub>) --> B{{pyosMeta<br><sub>github.com/pyOpenSci/pyosMeta</sub><br><i>A Python package that processes review<br>and contributor data and creates YML files</i>}}
C(<b>pyOpenSci Website</b><br><sub>pyopensci.github.io</sub>)
A --> |"pyosMeta parses review issues<br>and contributor metadata<br>to create YAML files"| B
B --> |"_data/contributors.yml & packages.yml are used to populate website package and contributor pages."| C
%% Website outputs to 4 child "books"
C --> D1(Handbook<br><sub>github.com/pyOpenSci/handbook<br>SPHINX</sub>)
C --> D2(Python Package Guide<br><sub>github.com/pyOpenSci/python-package-guide<br>SPHINX</sub>)
C --> D3(Software Peer Review Guide<br><sub>github.com/pyOpenSci/software-peer-review-guidebook<br>SPHINX</sub>)
C --> D4(Lessons<br><sub>github.com/pyOpenSci/software-peer-review-guidebook<br>SPHINX</sub>)
C --> D5(Peer Review Metrics<br><sub>github.com/pyOpenSci/peer-review-metrics<br>QUARTO</sub>)
%% Style for Website box (light purple)
style C fill:#f3e8ff,stroke:#7e22ce,stroke-width:1px
style B fill:#fef9c3,stroke:#ca8a04,stroke-width:1px
style Note fill:#f3f4f6,stroke:#9ca3af,stroke-width:1px
pyOpenSci data flow and continuous integration#
pyOpenSci uses a set of Continuous Integration (CI) jobs (GitHub Actions) to:
Collect data from our open peer review process
Collect contributor data from across all of our GitHub repositories
The pyosMeta package is a Python package that parses review and contributor data and transforms it into machine-readable YAML files used by our website.
Summary of flow#
pyosMetaparses the Markdown data within review issues in thesoftware-reviewGitHub repository. It:Gathers review editors, reviewers, and maintainers’ GitHub usernames, and uses the GitHub API to retrieve contributor names, emails, and other public GitHub profile information
Extracts the GitHub URL of each reviewed package and retrieves basic repository statistics (number of forks, stars, contributors)
Stores this peer review information in
packages.yml
pyosMetaalso parses contributor data from across all pyOpenSci repositories. It:Parses
all-contributorsbot files to compile a list of contributors and their associated repositories/projectsParses peer review metadata to populate roles such as reviewers, editors, and other contributor roles within our organization
Stores this contributor information in
contributors.yml
The
packages.ymlandcontributors.ymlfiles generated bypyosMetaare updated daily via a GitHub Action cron job in thepyopensci.github.iorepository. This data is used to populate:The Our Community page
The Packages page
Sphinx books and publishing#
The Python Package Guide, Peer Review Guide, and Handbook are all Sphinx books that use the
pydata_sphinx_theme. These books are built separately but are served under thepyopensci.orgdomain.All Sphinx books use the
pyos-sphinx-theme, which is a Sphinx theme built on top ofpydata_sphinx_theme.The final site is published at pyopensci.org using GitHub Pages.