Transform your code into something others can easily install, use, and trust.

Everything you need to know

  • When: Friday, 10 April 2026 – Thursday, 23 April 2026
  • Where: Online asynchronous course with live office hours

Cost

This course was paid for by the Stanford University Open Source Program Office (OSPO) and is available to both Stanford OSPO researchers and other OSPOs in the CURIOSS network.

Learn more about our partnership with Stanford in this short video: Ship It with Stanford OSPO

About the course

Learn directly from leaders in the open source space. Featuring hands-on activities, expert interviews with Python core developers and scientific Python maintainers, and live office hours where you can get help and ask questions, this 10-day asynchronous course empowers university researchers and practitioners to reliably build and share critical tools.

Developed by pyOpenSci in partnership with the Stanford Open Source Program Office (OSPO), this program delivers a trusted, expert-led curriculum that guides you through the lifecycle of a modern Python package. You will evolve a working script into a tested, documented, and automated package published on PyPI.

By participating in this course, you’re also joining a vibrant open source ecosystem. Expect to work with today’s industry-standard tools—including uv, Hatch, pytest, and Sphinx—while exploring open-source workflows and learning how to use Generative AI critically, thoughtfully, and responsibly.

What you’ll learn

  • Structure a Python package from scratch.
  • Configure your package using pyproject.toml.
  • Build and publish your package to (test) PyPI.
  • Write and run different types of tests using pytest.
  • Automate your development workflows with task runners.
  • Create the core documentation files every package needs.
  • Use AI tools responsibly in your development workflow.

This course is part of pyOpenSci’s Ship It curriculum — designed for researchers, scientists, and developers who want to build sustainable, production-ready open source software.

Who this course is for

This course is designed for:

  • Researchers, scientists, and postdocs who write Python code and want to share it
  • University faculty, staff, and students looking to teach or adopt modern Python packaging practices
  • Developers who are new to open source packaging and want a structured, guided path

No prior packaging experience is required. If you are comfortable with Python programming and can write a Python function, then you’re ready for this course.

What makes this course different

pyOpenSci’s unique advantage is its community. You’re not just watching videos; you’re learning alongside — and from — the people who maintain Python’s packaging ecosystem.

The course is delivered in a flexible, async format designed for busy researchers: each day you’ll discover 10–15 minutes of video content, and then you’ll complete a short bite-sized activity. Use the weekend to catch up if you fall behind.

Course Schedule at a Glance

Week 0: Setup

The week before the course begins is focused on setup. You can complete the course either using GitHub Codespaces or locally on your computer.

Week 1: Foundation & Structure

  • Day 1 — Create and run your package
  • Day 2 — Metadata and dependencies: the pyproject.toml file
  • Day 3 — Build and publish your package
  • Day 4 — Introduction to testing
  • Day 5 — Live office hours: show up, ask questions, get help.

Week 2: Task runners, GenAI & Documentation

  • Day 6 — Automate your workflows: task runners and environments
  • Day 7 — GenAI to support your workflows
  • Day 8 — Documentation that matters most to build your community and maintainer team
  • Day 9 — Office hours & wrap up

What you’ll walk away with

  • Complete Package Template: Ready-to-use project structure
  • Automation Workflows: GitHub Actions for testing and publishing
  • Quality Checklists: Never miss important packaging steps
  • Publishing Guide: Step-by-step instructions for secure PyPI deployment using GitHub Actions

Pre-requisites

To successfully follow along in this workshop, you should:

  • Know how to write Python code
  • Understand how to write and use Python functions
  • Have a free GitHub account. You can work using GitHub Codespaces during this workshop, and setting up this account is free if you don’t already have one.
  • Have internet access to access the course materials and tools.

Your instructors & helpers

GitHub profile photo of Leah Wasser

Leah Wasser

The Executive Director and Founder of pyOpenSci, Leah brings over 20 years of experience teaching technical data science topics in the scientific space. pyOpenSci has worked with hundreds of scientific Python package maintainers and has helped over 50 packages improve their structure and distribution through our peer review process.

GitHub profile photo of Jeremiah Paige

Jeremiah Paige

An open source author, contributor, and speaker, specifically working with Python for over 12 years. He is also a software engineer in the secure supply chain industry during work hours.

GitHub profile photo of Inessa Pawson

Inessa Pawson

Bio coming soon.