07-08, 08:00–12:00 (US/Pacific), Room 316
Python packaging can be overwhelming. However, a trusted, community-vetted workflow can make it easier. In this hands-on workshop, you’ll learn a tested approach developed by the pyOpenSci community and vetted by Python packaging maintainers. You’ll create an installable, maintainable, and citable package using a quickstart template. You’ll also receive step-by-step guidance on publishing to TestPyPI (and resources for conda-forge, and adding a DOI with Zenodo). If you can’t install software on your laptop, you can use GitHub Codespaces to participate in the workshop. Join us to package your Python code confidently and to access ongoing support in our community beyond the workshop.
📦 Python packaging can feel overwhelming with its ever-evolving tools and options. But what if you had a trusted, community-approved workflow to follow? 📦 Our pyOpenSci packaging workflow is a community-vetted approach that has been taught successfully numerous times to first-time package creators and those who have found the packaging frustrating. Our resources are co-developed by the pyOpenSci community and vetted by core packaging and Python maintainers. This means you’ll learn best practices from experts, avoid common pitfalls, and gain confidence using modern tools like Hatch. By following this tested workflow, you’ll create packages that are not only installable but also maintainable and citable.
In this workshop, you’ll use the pyOpenSci community-developed template, which provides a quickstart template approach to packaging. We will then explain all of the pieces of the package. If you don’t have Hatch installed, you can use our GitHub Codespaces environment to follow along without installing anything on your computer. By the end of the workshop, you’ll:
- Have a functional Python package.
- Understand how to publish your package to TestPyPI.
- You’ll have a strong understanding of the essential components of a pure Python package.
- You’ll also get step-by-step resources that cover:
- How to publish to conda-forge.
- How to add a DOI to your package using Zenodo.
- How to add a
citation.cff
file to a GitHub repo to increase the visibility of your package’s citation information.
We also welcome you to join our vibrant community for continued packaging support beyond the workshop. By the end of the workshop, you’ll clearly understand how to create, customize, and publish a pure Python package for better reusability and citability.
Setup & Requirements
To get the most out of this tutorial, you should be comfortable:
- writing Python code,
- using functions, and
- using Python environments
You should also have:
- access to your personal GitHub account and
- a computer that can connect to the Internet.
If you want to follow along on your computer locally, you need to install Python, Copier, and Hatch.
There will be minimal setup using GitHub Codespaces. However, we do have a GitHub repo which we will update closer to the event that we used in the fall of 2024 for a packaging workshop.
Prerequisites –To get the most out of this tutorial, you should be comfortable:
- Writing Python code,
- Using functions and
- Using Python environments.
You should also have:
- Access to your personal GitHub account and
- A computer that can connect to the Internet.
If you want to follow along on your computer locally, you need to install Python, Copier, and Hatch.
Interested in scientific computing and visualization with computer graphics.
Developer team member of PyVista.
Experience as a speaker:
- PyConJP 2019 speaker "Introduction to FEM Analysis with Python"
- PyConJP 2020 speaker "How to plot unstructured mesh file on Jupyter Notebook"
- SciPy Japan 2020 speaker "Translation Project of Mayavi2 documents"
- PyConJP 2021 speaker "Visualize 3D scientific data in a Pythonic way like Matplotlib"
Inessa is building bridges between people, open science, and open source software. She is passionate about making Python accessible for learners at all levels and has led numerous newcomer sprints, study groups, and tutorials. Inessa currently serves on the NumPy Steering Council and PyOpenSci Advisory Board. In her role as Open Source Program Manager at OpenTeams, Inessa has launched and actively supports several educational initiatives focused on widening the open source contributor pipeline. She is perpetually fascinated by incentive design, collaborative intelligence, and jazz.
Carol Willing is a three-time Python Steering Council member, a Python Core Developer, PSF Fellow, and a Project Jupyter core contributor. In 2019, she was awarded the Frank Willison Award for technical and community contributions to Python. As part of the Jupyter core team, Carol was awarded the 2017 ACM Software System Award for Project Jupyter's lasting influence. She's also a leader in open science and open-source governance serving on Quansight Labs Advisory Board and the CZI Open Science Advisory Board. She's driven to make open science accessible through open tools and learning materials. She recently served as Noteable's VP of Engineering,