The Scientific Python Development Guide

One outcome of the 2023 Scientific Python Developer Summit was the Scientific Python Development Guide, a comprehensive guide to modern Python package development, complete with a new project template supporting 10+ build backends and a WebAssembly-powered checker with checks linked to the guide. The guide covers topics like modern, compiled, and classic packaging, style checks, type checking, docs, task runners, CI, tests, and much more! There also are sections of tutorials, principles, and some common patterns.

This guide (along with cookie & repo-review) started in Scikit-HEP in 2020. During the summit, it was merged with the NSLS-II guidelines, which provided the basis for the principles section. I’d like to thank and acknowledge Dan Allan and Gregory Lee for working tirelessly during the summit to rework, rewrite, merge, and fix the guide, including writing most of the tutorials pages and first patterns page, and rewriting the environment page as a tutorial.

Your Code Could Go To Space
In mid-2018 I started learning Python by reading textbooks and watching online tutorials. I had absolutely zero background in computer science, but it seemed interesting so I continued to try. At some point, I decided I wanted to do a master’s degree in statistics, so I began to work on more statistics-based programming. That’s when I found SciPy. I became (and still am) fascinated by the idea of open-source software that is completely free to use and supported by a community of diligent programmers.
Developer Summit 1
The first Scientific Python Developer Summit (May 22-26, 2023) brought together 34 developers at the eScience Institute at the University of Washington to develop shared infrastructure, documentation, tools, and recommendations for libraries in the Scientific Python ecosystem. Pre-summit planning Prior to the summit we held several hour-long planning meetings: General (2023-02-27) May 15, Package metrics, DevStats May 15, SPECs May 18, Community & Documentation May 19, Build Systems & CI Infrastructure May 19, PyTest plugins & Sphinx extensions Summit execution At the summit, we had a brief check-in and then split into several groups based on each developers time and interests.
Developer Summit 1: Sparse Arrays
Scientific-Python Developer Summit (May 22-26, 2023, Seattle WA) – The first Scientific Python Developer Summit provided an opportunity for core developers from the scientific Python ecosystem to come together to: improve joint infrastructure better coordinate core projects work on a shared strategic plan Related notes/sites: Worklog. Planning Meeting Notes and Info. One of the focuses of the summit was Sparse Arrays, and specifically their implementation in SciPy. This post attempts to recap what happened with “sparse” at the summit and a glimpse of plans for our continuing work.
Outreachy Part II: Internship Guide
This is the second part of a blog series where I talk about my experience during my Outreachy internship at NetworkX. If you haven’t read the first part you can find it here. As you advance through the contribution phase you may wonder how your internship is gonna be in case you get selected. Here is my experience as a NetworkX intern and some tips that could help you through the internship.
Outreachy Part I: My experience as a first-time contributor in Open-Source
What’s Outreachy? Outreachy is a paid remote internship program for underrepresented groups in tech. All internships are in Open Source and Open Science. To be selected as an intern first you need to : Fill out an initial application: You’ll need to answer some questions about how you are affected by the systemic bias, and how being underrepresented in your local tech industry impacted your development. Maybe you don’t know how to answer some of these questions, especially if you are still not looking for a job, but it’s important to do some research first.
NumPy's first Developer in Residence: Sayed Adel
The NumPy team is excited to announce the launch of the NumPy Fellowship Program and the appointment of Sayed Adel (@seiko2plus) as the first NumPy Developer in Residence. This is a significant milestone in the history of the project: for the first time, NumPy is in a position to use its project funds to pay for a full year of maintainer time. We believe that this will be an impactful program that will contribute to NumPy’s long-term sustainability as a community-driven open source project.
Scientific Python awarded CZI grant to improve communications infrastructure & accessibility
We are delighted to announce a two-year grant from the Chan Zuckerberg Initiative (CZI) in support of the Scientific Python project. This grant will support work on common web themes, joint infrastructure and practices, accessibility, and interactivity of core library documentation. We are particularly excited that, through this work, we may expand global participation of scientific communities in using and contributing to Python tools. It is, to the best of our knowledge, the first time that a scientific open source community has received significant support for accessibility and internationalization efforts.
Scientific Python: Community developed, community owned
The Scientific Python project is an initiative to better coordinate and support the scientific Python ecosystem of libraries and to grow the surrounding community. It aims to improve communication between ecosystem projects, to better plan for their joint future, and to make that future a reality. Why is this important? Initially, the Scientific Python developer community was small, so that it was easy to discuss important ecosystem-wide decisions at events like the annual SciPy conference.
The VF2++ algorithm
The last and final post discussing the VF2++ helpers can be found here. Now that we’ve figured out how to solve all the sub-problems that VF2++ consists of, we are ready to combine our implemented functionalities to create the final solver for the Graph Isomorphism problem. Introduction We should quickly review the individual functionalities used in the VF2++ algorithm: Node ordering which finds the optimal order to access the nodes, such that those that are more likely to match are placed first in the order.