python
135 posts — page 2
-
Keep Jupyter notebooks clean in git, but rendered with outputs in Sphinx
A small Sphinx extension that fetches an executed notebook from a Gist or raw URL, verifies the sources still match, and replaces the local notebook during the docs build.
-
Auto-build JupyterHub images with repo2docker and GitHub Actions
This guide explains how to automatically build a custom, JupyterHub-ready Docker image directly from GitHub using repo2docker, without having to write a complicated Dockerfile from scratch.
-
Release of healpy 1.19.0
I am pleased to announce the release of healpy 1.19.0. This release includes a large number of fixes and improvements, many of which were made possible by adopting an "agentic" workflow. As detailed in my recent blog post, I have been using AI coding agents to help triage and fix issues, allowing us to close old bugs and improve the codebase significantly.
-
Healpy blm_gauss breaking change analysis
Analyzing the breaking change in healpy's blm_gauss function (1.18.1 to 1.19.0) and its impact on Gaussian beam coefficients.
-
Jupytext for AI agent Jupyter workflows
How using Jupytext with AI coding agents can simplify Jupyter Notebook development by avoiding JSON formatting issues.
-
Container and product EZID DOIs with Python
This post refers to the ezidapi repository. The previous tutorial showed how to wire a canonical DOI to multiple versions; start there if you need versioning rather than parts: single DOI basics and hierarchical versioned DOIs. This follow-up creates a container DOI for a data release and two product DOIs that declare they belong to that release. The pattern mirrors a collection landing page (container) that links to specific datasets (products) using DataCite's HasPart and IsPartOf relations.
-
Auto-build JupyterHub images with GitHub Actions
Overview: is a template that ships a JupyterHub-ready single-user image with common scientific Python tooling and sensible defaults. Just edit requirements.txt in GitHub and the built-in GitHub Actions workflow auto-builds and publishes a new image—no local Docker required.
-
Deploy the Dask Operator for JupyterHub on Kubernetes
Tutorial OBSOLETE Please check the updated version of this tutorial. This post describes how to deploy the Dask Operator for Kubernetes alongside a Helm-based JupyterHub installation. The Operator provides a Kubernetes-native way to create and manage Dask clusters via custom resources, simplifying multi-tenant setups, it is therefore more integrated into the Kubernetes ecosystem compared to Dask Gateway.
-
Hierarchical EZID DOIs with Python
This post refers to the ezidapi repository. In the previous tutorial we focused on minting a single test DOI with the EZID API. This follow-up shows how to extend the same repository to support a canonical DOI plus two version-specific DOIs that point to one another so DataCite-powered portals can navigate the release history.
-
Going full agentic for scientific software development
The landscape of scientific software development is being transformed by AI coding agents. Over the past few weeks, I've been exploring GitHub Copilot's AI coding agent capabilities for maintaining healpy, and the experience has been remarkable.
-
EZID DOI management with Python
This project offers Python scripts for interacting with the EZID API to create and verify Digital Object Identifiers (DOIs).
-
Building Singularity containers with Conda environments from requirements.txt
This post introduces a method for building Singularity containers that include a Conda environment based on a requirements.txt file. This approach provides a reproducible and portable environment for any Python project.
-
PySM 3.4.3 Released
PySM version 3.4.3 is now live. Install it from PyPI or upgrade existing environments with pip install --upgrade pysm3. Full details are available in the GitHub release notes.
-
PySM methods paper published in ApJ
The Astrophysical Journal formally published our paper, Full-sky Models of Galactic Microwave Emission and Polarization at Sub-arcminute Scales for the Python Sky Model, on September 12, 2025. I wanted to capture the news here now that the issue is out, following up on my March note about the ArXiv submission.
-
Inspect SMTP sending through UCSD
When configuring email sending through UCSD, it can be surprisingly unclear which SMTP server to use. The official documentation mentions three options: smtp.ucsd.edu, smtp.gmail.com, and smtp.office365.com.