Skip to content

pyOpenSci/pyopensci.github.io

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

1,643 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

pyopensci.github.io

All Contributors

Deploy Hugo site to Pages DOI Netlify Status

This repo contains the source code for the pyOpenSci.org website. Contributions are welcome. Thank you pyOpenSci contributors!!

Getting Started

Please explore the site and let us know what you think. If you find a bug or have a suggestion for a new feature, open an issue.

Next Steps

If you are interested in contributing to pyOpenSci, start with CONTRIBUTING.md β€” local setup, website development, and how to add a multi-page documentation book (layout: docs) on the Hugo site.

For organization-wide norms, see pyOpenSci's organization-wide contributing guide.

Installation and development

This site is built with Hugo. Source lives at the repository root (content/, data/, themes/clean-hugo/).

Prerequisites

  • Hugo Extended 0.139.4 (matches Netlify and CI)
  • Node.js 24 (Active LTS) and npm (PostCSS / autoprefixer for the theme CSS pipeline). An .nvmrc is in the repo root β€” run nvm use if you use nvm.

Run the site locally

  1. Fork and clone this repository.

  2. From the repo root, install Node dependencies:

    npm ci
  3. Start the Hugo development server:

    hugo server --disableFastRender

    Use --disableFastRender while editing layouts or CSS so changes rebuild reliably.

  4. Open http://localhost:1313/ in your browser.

Test your changes locally before opening a pull request. CI runs the same Hugo build as Netlify (see .github/workflows/build-site.yml).

Production build (optional)

npm ci
hugo --gc --minify

Output is written to public/. Do not commit public/, resources/, or .hugo_build.lock β€” they are gitignored.

Future-dated blog posts

buildFuture = true is set in hugo.toml, so posts with a future date in front matter are included in local builds and production deploys without extra flags.

Project layout (Hugo)

Path Purpose
content/ Pages, blog posts (content/blog/), events (content/events/)
data/ YAML data (packages.yml, contributors.yml, etc.)
themes/clean-hugo/ Site theme (layouts, SCSS, shortcodes)
static/ Images, favicons, Netlify _redirects
hugo.toml Site config, navigation, theme parameters

For CSS architecture, SCSS partials, and Netlify build details, see DEVELOPMENT.md. For contributor workflows and the docs book layout, see CONTRIBUTING.md.

Images and WebP

We try to keep image file sizes as small as practical. To convert PNG images to WebP:

macOS:

brew install webp

Linux:

sudo apt-get install webp

Convert every PNG in a directory:

for file in *.png; do cwebp "$file" -o "${file%.*}.webp"; done

Or convert a single image:

cwebp input-image.png -o output-image.webp

Example figure markup that supports both WebP and PNG (backwards-compatible with older browsers):

<figure>
<picture>
  <source srcset="/images/image-name.webp" type="image/webp">
  <img src="/images/image-name.png" alt="Alt text here" />
</picture>
</figure>

Store site images under static/images/ (published as /images/...).

How to update blog post last_updated field

We have a bash script that updates the last_modified field in YAML for blog posts that already include a last_modified: key in front matter:

chmod +x scripts/date-updated.sh
./scripts/date-updated.sh

The script scans content/blog/ for posts that include a last_modified: key in front matter.

How to update contributor names

Update a contributor's name on the Our Community page in data/contributors.yml.

Important: Do not update contributor names in data/packages.yml. Changes there can be overwritten by automated workflows.

contributors.yml is the source of truth for people metadata; names are gathered from contributor files using each person's GitHub username.

Monitoring Automated Tasks

There are a few automated CI tasks in this repository to keep the website data up to date. In order for us to have visibility into when these jobs fail, we have automated a Slack bot to send a message to the #pyos-maintainers-infrastructure channel on Slack using the rtCamp/action-slack-notify GitHub Action step. This action can be used within any repository in the PyOpenSci GitHub organization (as SLACK_NOTIFICATIONS_BOT_TOKEN is an org-wide secret) via:

      - name: Slack Notification
        uses: rtCamp/action-slack-notify@v2
        if: failure()
        env:
          SLACK_CHANNEL: pyos-maintainers-infrastructure
          SLACK_COLOR: '#db540b'
          SLACK_LINK_NAMES: true
          SLACKIFY_MARKDOWN: true
          SLACK_MESSAGE: "Notification from GitHub Actions"
          SLACK_TOKEN: ${{ secrets.SLACK_NOTIFICATIONS_BOT_TOKEN }}

Contributors ✨

Thanks goes to these wonderful people (emoji key):

Anita Graser
Anita Graser

πŸ‘€
Niels Bantilan
Niels Bantilan

πŸ‘€
Ivan Ogasawara
Ivan Ogasawara

πŸ‘€
David Nicholson
David Nicholson

πŸ“
Jenny Palomino
Jenny Palomino

πŸ€” πŸ‘€ πŸ’»
Alex Batisse
Alex Batisse

πŸ€” πŸ‘€
SemidΓ‘n Robaina, Ph.D.
SemidΓ‘n Robaina, Ph.D.

πŸ’»
Barnabas Bulpett (He/Him)
Barnabas Bulpett (He/Him)

πŸ‘€ πŸ’» 🎨
Juanita Gomez
Juanita Gomez

πŸ’» πŸ‘€
Sarah Kaiser
Sarah Kaiser

πŸ’» πŸ‘€
C.A.M. Gerlach
C.A.M. Gerlach

πŸ’» 🎨 πŸ‘€
Nhat (Jonny) Tran
Nhat (Jonny) Tran

πŸ‘€ πŸ’»
Teddy Groves
Teddy Groves

πŸ’» πŸ‘€
Mike Sarahan
Mike Sarahan

πŸ’» πŸ‘€
Thomas J. Fan
Thomas J. Fan

πŸ’» πŸ‘€
Szabolcs HorvΓ‘t
Szabolcs HorvΓ‘t

πŸ’» πŸ‘€
Jonny Saunders
Jonny Saunders

πŸ’» πŸ‘€ πŸ“
Kerry McAdams
Kerry McAdams

πŸ’» πŸ‘€
Ricky Nilsson
Ricky Nilsson

πŸ’» πŸ‘€
Carol Willing
Carol Willing

πŸ’» πŸ‘€
Eliot Robson
Eliot Robson

πŸ’» πŸ‘€
P. L. Lim
P. L. Lim

πŸ’» πŸ‘€
Andrew Nesbitt
Andrew Nesbitt

πŸ’» πŸ‘€
Jesse Mostipak
Jesse Mostipak

πŸ’» πŸ‘€
Felipe Moreno
Felipe Moreno

πŸ’» πŸ‘€
Sneha Yadav
Sneha Yadav

πŸ’» πŸ‘€
Emily Zhang
Emily Zhang

πŸ’» πŸ‘€
Filipe LaΓ­ns
Filipe LaΓ­ns

πŸ’» πŸ‘€
Steven Silvester
Steven Silvester

πŸ‘€
Megan Sosey
Megan Sosey

πŸ‘€
Patrick J. Roddy
Patrick J. Roddy

πŸ’» πŸ‘€
Gabriel Stefanini Vicente
Gabriel Stefanini Vicente

πŸ’» πŸ‘€
SeanAverS
SeanAverS

πŸ’» πŸ‘€
Han
Han

πŸ’» πŸ‘€
Jon Kiparsky
Jon Kiparsky

πŸ› πŸ€”
Tracy Teal
Tracy Teal

πŸ‘€ πŸ€”
Inessa Pawson
Inessa Pawson

πŸ’» πŸ‘€
Seth Michael Larson
Seth Michael Larson

πŸ‘€
Erik Whiting
Erik Whiting

πŸ‘€
Hugo van Kemenade
Hugo van Kemenade

πŸ’» πŸ‘€
Raktim Mukhopadhyay
Raktim Mukhopadhyay

πŸ’» πŸ‘€
Hans Moritz GΓΌnther
Hans Moritz GΓΌnther

πŸ’» πŸ‘€
Tetsuo Koyama
Tetsuo Koyama

πŸ‘€
Breanna Powell
Breanna Powell

πŸ’» πŸ‘€
Mandy Moore
Mandy Moore

πŸ’» πŸ‘€ πŸ“–
Tim Dawson
Tim Dawson

πŸ’» πŸ‘€
Ellie Abrahams
Ellie Abrahams

πŸ‘€ πŸ“
Jed Brown
Jed Brown

πŸ‘€ πŸ“
Carter Lee Rhea
Carter Lee Rhea

πŸ‘€ πŸ“
Nick Hodgskin
Nick Hodgskin

πŸ’» πŸ›
Yuvi
Yuvi

πŸ‘€
Filipe
Filipe

πŸ‘€
Sebastian Lobentanzer
Sebastian Lobentanzer

πŸ‘€
Britney Whittington
Britney Whittington

πŸ’»
Romain Caneill
Romain Caneill

πŸ“–

This project follows the all-contributors specification. Contributions of any kind welcome!

About

This is the website for pyOpenSci. Contributions welcome!!

Resources

License

Code of conduct

Contributing

Stars

Watchers

Forks

Packages

 
 
 

Contributors