Skip to content

Commit b7dfc41

Browse files
authored
feat(event): event page for scipy workshop with setup (#664)
* add: event page for scipy workshop with setup * add: detailed codespaces instructions * add: detailed codespaces instructions * Fix: heading language * Clean up redundant sections
1 parent ac25031 commit b7dfc41

11 files changed

+210
-0
lines changed
Lines changed: 210 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,210 @@
1+
---
2+
layout: single
3+
title: "Create Your First Python Package: SciPy 2025"
4+
excerpt: "Learn how to create your first Python package using the pyOpenSci template."
5+
author: "pyopensci"
6+
event:
7+
start_date: "2025-07-08"
8+
location: Online
9+
permalink: /events/pyopensci-scipy25-create-python-package-workshop.html
10+
header:
11+
overlay_image: images/headers/pyopensci-sustainability.png
12+
categories:
13+
- events
14+
classes: wide
15+
type: "event"
16+
last_modified: 2025-04-22
17+
comments: true
18+
---
19+
20+
## <i class="fa-solid fa-box-open"></i> Learn how to create your first Python package!
21+
22+
* **When:** Tuesday, 8 July 2025 @ 8:00–12:00 PM Pacific Time
23+
* **Where:** SciPy Meeting 2025 in Tacoma, Washington
24+
* **Instructors:**
25+
* Leah Wasser
26+
* Carol Willing
27+
* Jeremiah Paige
28+
* Tetsuo Koyama
29+
30+
[<i class="fa-regular fa-circle-right"></i> View our workshop abstract](https://cfp.scipy.org/scipy2025/talk/Z3VBWR/){: .btn .btn--success .text-center }
31+
32+
33+
## Setup instructions
34+
35+
You can choose to work on your own machine during the workshop or use the GitHub Codespace we've set up for you. Codespaces include all the tools needed to create your first package—preinstalled and ready to go.
36+
37+
We encourage you to use GitHub Codespaces! If you prefer to install things locally, please do so **before** the workshop.
38+
39+
[Need help? Ask us on Discord.](https://discord.gg/m7RFFxnc)
40+
41+
42+
### 1. Make sure you have a GitHub and Test PyPI account
43+
44+
Before the workshop, please create and log into the following accounts:
45+
46+
1. [Create a free GitHub account](https://www.github.com) if you don’t already have one.
47+
2. [Create a free account on Test PyPI](https://test.pypi.org/account/register) — we’ll use this to practice publishing packages.
48+
49+
50+
> <i class="fa-solid fa-lock"></i> **Important:** To follow along when we publish to Test PyPI, you must enable **two-factor authentication (2FA)** on your Test PyPI account. We strongly recommend doing this **before** the workshop!
51+
{: .notice .notice-important}
52+
53+
## 2a. Setup for working locally on your laptop
54+
55+
We recommend using GitHub Codespaces (see next section) to avoid issues with environment setup. However, if you prefer to work locally, please ensure your environment is set up and ready before the workshop.
56+
57+
If you're comfortable with Python environments, arrive with an environment that has:
58+
59+
- [Hatch installed](https://www.pyopensci.org/python-package-guide/tutorials/get-to-know-hatch.html#install-hatch)
60+
- [Copier installed](https://copier.readthedocs.io/en/stable/#installation)
61+
- You can install both via `pipx`, `uv`, pixi, or any preferred package manager.
62+
- [VS Code](https://code.visualstudio.com/download) (or any IDE you prefer for packaging)
63+
64+
> <i class="fa-solid fa-triangle-exclamation"></i> **Note:**
65+
> * We strongly suggest that you go to GitHub.com and [Fork our SciPy 2025 workshop repository](https://github.com/pyOpenSci/pyopensci-scipy25-create-python-package) just in case something with your local installation isn't working. This will ensure that you can follow along with us regardless of your environment setup!
66+
> * JupyterLab or Jupyter Notebook is **not ideal** for the packaging work we’ll be doing.
67+
{: .notice }
68+
69+
If you run into issues, please [join our Discord and ask for help](https://discord.gg/m7RFFxnc) before the workshop.
70+
71+
72+
## 2b. If you plan to use GitHub Codespaces (SUGGESTED)
73+
74+
We strongly recommend using our curated [GitHub Codespace](https://codespaces.new/pyOpenSci/ff-2024-create-python-package?quickstart=1), which can be found in your forked workshop repository. This workspace is already set up with:
75+
76+
* VSCode, copier, Hatch, and everything you need to create your first Python package successfully. Codespaces also allows you to easily commit your work during the workshop to your own forked GitHub repository.
77+
78+
**Before the workshop do the following**
79+
80+
* Go to GitHub.com and [Fork our SciPy 2025 workshop repository](https://github.com/pyOpenSci/pyopensci-scipy25-create-python-package)
81+
82+
<figure>
83+
<picture>
84+
<img src="{{ site.baseurl }}/images/github/codespaces/scipy-fork-repo.gif" alt=".">
85+
</picture>
86+
</figure>
87+
88+
* Launch the codespace before the workshop:
89+
90+
<i class="fa-solid fa-circle-info"></i> The initial spin-up for a codespace can take up to 15 minutes or longer. Once GitHub creates the cloud environment, it will be quicker to relaunch. Please do this before attending the workshop session.
91+
{: .notice }
92+
93+
To open your Codespace,
94+
95+
* Go to your forked SciPy 2025 workshop repository on GitHub,
96+
* Switch to a branch that you want to work on during the workshop,
97+
* Click the code drop-down button (where you'd find a link to clone a repo)
98+
* Click on the Codespaces tab in the drop-down.
99+
100+
Within the Codespaces tab you will see a button: <kbd style="background-color: #2da44e; color: white; padding: 2px 6px; border-radius: 4px;">
101+
Create codespace on main
102+
</kbd>. This button launches a Codespace from the currently active branch. It will default to the
103+
`main` branch if you haven't changed your branch in the repository.
104+
105+
The animated gif below walks you through how this works.
106+
107+
<figure style="width: 55%; margin: 0 auto;">
108+
<picture>
109+
<source srcset="{{ site.baseurl }}/images/github/codespaces/create-github-codespace-main.webp"
110+
type="image/webp">
111+
<img src="{{ site.baseurl }}/images/github/codespaces/create-github-codespace-main.png"
112+
alt="Create codespace on main button">
113+
</picture>
114+
</figure>
115+
116+
> <i class="fa-solid fa-circle-info"></i> To follow GitHub best practices, always create a new branch before making
117+
> changes to a repository, even if you own the repository. Avoid working directly on the `main` branch.
118+
119+
## <i class="fa-solid fa-cloud"></i> About GitHub Codespaces: Working in the cloud
120+
121+
## What is a codespace
122+
123+
GitHub Codespaces are cloud-based development environments that let you
124+
code directly in your browser—no local setup needed. They provide fully
125+
configured, container-based environments connected to your GitHub
126+
repository.
127+
128+
You can customize Codespaces with `.devcontainer` files to match your
129+
development setup. The Codespace for this workshop opens in Visual Studio
130+
Code by default, but you can configure it to use any IDE you prefer.
131+
132+
Learn more in the [GitHub Codespaces docs](https://docs.github.com/en/codespaces/overview).
133+
134+
Codespaces are free for up to 60 hours/month on GitHub’s free plan. Be sure
135+
to shut yours down after the workshop to conserve your allocated time.
136+
{: .notice}
137+
138+
> Codespaces are associated with your **personal GitHub account**, even if
139+
you open one from the pyOpenSci repository. The usage counts toward your
140+
own GitHub credits.
141+
{: .notice }
142+
143+
144+
### View & manage open codespaces
145+
146+
Once you've opened a Codespace, you can return to it later without needing
147+
to start from scratch. GitHub will reuse the environment, making it launch
148+
significantly faster the second time.
149+
150+
If possible, resume the **same Codespace** you started in, rather than
151+
creating a new one in your fork. Read on to learn how to find and reopen a codespace.
152+
153+
<i class="fa-solid fa-link"></i>
154+
[View all active Codespaces associated with your account](https://github.com/codespaces)
155+
156+
{: .notice}
157+
> <i class="fa-solid fa-circle-info"></i> When you delete a Codespace, you're
158+
> ending the session, but the configuration remains available so you can
159+
> launch a new one anytime.
160+
> [Learn more in the GitHub docs](https://docs.github.com/en/codespaces/developing-in-a-codespace/stopping-and-starting-a-codespace)
161+
162+
163+
164+
165+
### How to relaunch a codespace
166+
167+
To relaunch a Codespace:
168+
169+
1. Go to your fork of the workshop repository.
170+
2. Click the **Code** dropdown (same as when you first created the Codespace).
171+
3. Select the **Codespaces** tab to view existing environments.
172+
4. Select the codespace that you want to resume from the list (see image below).
173+
174+
As you can see in the animated gif below, GitHub codespaces always have fun names.
175+
176+
<figure>
177+
<picture>
178+
<img src="{{ site.baseurl }}/images/github/codespaces/reopen-codespace.gif"
179+
alt="GIF showing how to reopen a GitHub Codespace">
180+
</picture>
181+
</figure>
182+
183+
<div class="notice" markdown="1">
184+
185+
<i class="fa-solid fa-users-line"></i> Connect with us!
186+
{: .header }
187+
188+
There are many ways to get involved if you're interested!
189+
190+
* If you read through our lessons and want to suggest changes, open an issue in our [lessons repository here](https://github.com/pyOpenSci/lessons)
191+
* [Volunteer to be a reviewer for pyOpenSci's software review process](https://forms.gle/GHfxvmS47nQFDcBM6)
192+
* [Submit a Python package to pyOpenSci for peer review](https://www.pyopensci.org/software-peer-review/how-to/author-guide.html#submit-your-package-for-peer-review)
193+
* [Donate to pyOpenSci](https://give.communityin.org/pyopensci_2024) to support scholarships for future training events and the development of new learning content.
194+
* Check out our [volunteer page](/volunteer.html) for other ways to get involved.
195+
196+
You can also:
197+
198+
* Keep an eye on our [events page](/events.html) for upcoming training events.
199+
200+
Follow us on social platforms:
201+
202+
* [<i class="fa-brands fa-discourse" style="color:#81c0aa;"></i> Discourse](https://pyopensci.discourse.group/)
203+
* [<i class="fa-brands fa-mastodon" style="color:#81c0aa;"></i> Mastodon](https://fosstodon.org/@pyopensci)
204+
* [<i class="fa-solid fa-cloud" style="color:#81c0aa;"></i> Bluesky](https://bsky.app/profile/pyopensci.bsky.social)
205+
* [<i class="fa-brands fa-linkedin" style="color:#81c0aa;"></i> LinkedIn](https://www.linkedin.com/company/pyopensci)
206+
* [<i class="fa-brands fa-github" style="color:#81c0aa;"></i> GitHub](https://github.com/pyOpenSci)
207+
208+
If you are on LinkedIn, check out and [subscribe to our newsletter, too](https://www.linkedin.com/newsletters/7179551305344933888/?displayConfirmation=true).
209+
210+
</div>
Loading
Binary file not shown.
1.08 MB
Loading
591 KB
Binary file not shown.
Loading
Binary file not shown.
744 KB
Loading
501 KB
Binary file not shown.
Loading
Binary file not shown.

0 commit comments

Comments
 (0)