Scientific Python
https://scientific-python.org/
Recent content on Scientific PythonHugoen-usWed, 08 Oct 2025 00:00:00 +0000News
https://scientific-python.org/news/
Wed, 08 Oct 2025 00:00:00 +0000https://scientific-python.org/news/<h2 id="20251008-fourth-developer-summit-in-copenhagen--5-7-november-2025">2025–10–08: Fourth Developer Summit in Copenhagen – 5-7 November, 2025<a class="headerlink" href="#20251008-fourth-developer-summit-in-copenhagen--5-7-november-2025" title="Link to this heading">#</a></h2>
<p>See <a href="https://scientific-python.org/summits/developer/2025-nov/">summit website</a>.</p>
<h2 id="20250328-third-developer-summit-was-held-in-seattle--11-14-may-2025">2025–03–28: Third Developer Summit was held in Seattle – 11-14 May 2025<a class="headerlink" href="#20250328-third-developer-summit-was-held-in-seattle--11-14-may-2025" title="Link to this heading">#</a></h2>
<p>See <a href="https://scientific-python.org/summits/developer/2025/">summit website</a>.</p>
<h2 id="20240411-second-developer-summit-was-held-in-seattle-june-2-5-2024">2024–04–11: Second Developer Summit was held in Seattle – June 2-5, 2024<a class="headerlink" href="#20240411-second-developer-summit-was-held-in-seattle-june-2-5-2024" title="Link to this heading">#</a></h2>
<p>See <a href="https://scientific-python.org/summits/developer/2024/">summit website</a>.</p>
<h2 id="20230530-first-developer-summit-was-held-in-seattle">2023–05–30: First Developer Summit was held in Seattle<a class="headerlink" href="#20230530-first-developer-summit-was-held-in-seattle" title="Link to this heading">#</a></h2>
<p>See <a href="https://scientific-python.org/summits/developer/2023">summit website</a>.</p>
<h2 id="20210421-specs-announced-at-scipy-2021">2021–04–21: SPECs announced at SciPy 2021<a class="headerlink" href="#20210421-specs-announced-at-scipy-2021" title="Link to this heading">#</a></h2>
<p>Stéfan van der Walt announces the Scientific Python Ecosystem Coordination project and
talks about the SPEC documents during SciPy 2021.</p>SPEC 8 — Securing the Release Process
https://scientific-python.org/specs/spec-0008/
Tue, 04 Jun 2024 00:00:00 +0000https://scientific-python.org/specs/spec-0008/<h2 id="description">Description<a class="headerlink" href="#description" title="Link to this heading">#</a></h2>
<!--
Briefly and clearly describe the recommendation.
https://github.com/scientific-python/summit-2024/issues/9
-->
<p>Open source libraries constitute a significant portion of the world’s digital infrastructure. Securing the Open Source supply chain (OSSC) is therefore an increasing concern, with examples of sophisticated attacks against the ecosystem (e.g., the 2024 <a href="https://en.wikipedia.org/wiki/XZ_Utils_backdoor"><code>xz</code> utils backdoor</a>) and <a href="https://blog.pypi.org/posts/2024-04-10-domain-abuse/">malware attacks on PyPI</a> highlighting the need for supply chain security to be taken seriously.
The Python Software Foundation (PSF) is also taking the importance of the OSSC seriously, as demonstrated by the <a href="https://pyfound.blogspot.com/2023/06/announcing-our-new-security-developer.html">creation of the PSF Security Developer in Residence position in 2023</a>.</p>SPEC 9 — Governance
https://scientific-python.org/specs/spec-0009/
Tue, 04 Jun 2024 00:00:00 +0000https://scientific-python.org/specs/spec-0009/<h2 id="description">Description<a class="headerlink" href="#description" title="Link to this heading">#</a></h2>
<p>This SPEC describes what governance is, and offers recommendations for choosing a
governance model for open-source projects.</p>
<p>Open-source project communities are amalgamations of software and the humans who
use and maintain it. Governance models define methods for decision-making
within a project, roles for the community members imbued with decision-making
authority, and processes for filling (and, if needed, vacating) those
leadership roles. In the context of open-source software projects, governance
models often also define the granting of necessary permissions or access to
organization secrets necessary for the implementation of project-related
decisions. Governance models are complementary to Codes of Conduct and
Community Guidelines, which define the expectations and responsibilities of all
participants in a project (including users of the software), regardless of
their status as a project leader (cf. SPEC XXX), ensuring the long-term
sustainability of a project.</p>SPEC 7 — Seeding Pseudo-Random Number Generation
https://scientific-python.org/specs/spec-0007/
Wed, 19 Apr 2023 00:00:00 +0000https://scientific-python.org/specs/spec-0007/<h2 id="description">Description<a class="headerlink" href="#description" title="Link to this heading">#</a></h2>
<p>Currently, libraries across the ecosystem provide various APIs for seeding pseudo-random number generation.
This SPEC suggests a unified, pragmatic API, taking into account technical and historical factors.
Adopting such a uniform API will simplify the user experience, especially for those who rely on multiple projects.</p>
<p>We recommend:</p>
<ul>
<li>standardizing the usage and interpretation of an <code>rng</code> keyword for seeding, and</li>
<li>avoiding the use of global state and legacy bitstream generators.</li>
</ul>
<p>We suggest implementing these principles by:</p>SPEC 6 — Keys to the Castle
https://scientific-python.org/specs/spec-0006/
Mon, 19 Dec 2022 00:00:00 +0000https://scientific-python.org/specs/spec-0006/<h2 id="description">Description<a class="headerlink" href="#description" title="Link to this heading">#</a></h2>
<!--
Briefly and clearly describe the proposal.
Explain the general need and the advantages of this specific proposal.
If relevant, include examples of how the new functionality would be used,
intended use-cases, and pseudo-code illustrating its use.
-->
<p>Projects engage with restricted resources all the time.
Examples include access to add & remove team members, grant commit rights, or make uploads to certain hosts.</p>
<p><strong>Documenting resources</strong> is critical to ensuring uninterrupted operations.
It is important that team members know <em>who</em> have access to resources, and how to <em>gain access</em> to resources.
For example, if updated project documentation needs to be uploaded to a remote server via SSH, who are the team members that can do that, and by which process can a release manager request access?</p>SPEC 5 — CI Best Practices
https://scientific-python.org/specs/spec-0005/
Thu, 22 Sep 2022 00:00:00 +0000https://scientific-python.org/specs/spec-0005/<h2 id="description">Description<a class="headerlink" href="#description" title="Link to this heading">#</a></h2>
<!--
Briefly and clearly describe the recommendation.
-->
<h3 id="core-project-endorsement">Core Project Endorsement<a class="headerlink" href="#core-project-endorsement" title="Link to this heading">#</a></h3>
<!--
Briefly discuss what it means for a core project to endorse this SPEC.
-->
<h3 id="ecosystem-adoption">Ecosystem Adoption<a class="headerlink" href="#ecosystem-adoption" title="Link to this heading">#</a></h3>
<!--
Briefly discuss what it means for a project to adopt this SPEC.
-->
<h4 id="badges">Badges<a class="headerlink" href="#badges" title="Link to this heading">#</a></h4>
<p>Projects can highlight their adoption of this SPEC by including a SPEC badge.
<div class="tabs">
<div role="tablist" class="automatic">
<button id="-tab-0" type="button" role="tab" aria-selected="true" aria-controls="-tabpanel-0">
Rendered badge
</button>
<button id="-tab-1" type="button" role="tab" aria-selected="false" aria-controls="-tabpanel-1">
Markdown
</button>
<button id="-tab-2" type="button" role="tab" aria-selected="false" aria-controls="-tabpanel-2">
reStructuredText
</button>
</div>
<div id="-tabpanel-0" role="tabpanel" tabindex="0" aria-labelledby="$-tab-0"><a href="https://scientific-python.org/specs/spec-0005/"><img src="https://img.shields.io/badge/SPEC-5-green?labelColor=%23004811&color=%235CA038" alt="SPEC 5 — CI Best Practices"></a></div>
<div id="-tabpanel-1" role="tabpanel" tabindex="0" aria-labelledby="$-tab-1">
<div class="highlight">
<pre>[](https://scientific-python.org/specs/spec-0005/)</pre>
</div>
</div>
<div id="-tabpanel-2" role="tabpanel" tabindex="0" aria-labelledby="$-tab-2">
<div class="highlight">
<pre>|SPEC 5 — CI Best Practices|
.. |SPEC 5 — CI Best Practices| image:: https://img.shields.io/badge/SPEC-5-green?labelColor=%23004811&color=%235CA038
:target: https://scientific-python.org/specs/spec-0005/</pre>
</div>
</div>
</div>
To indicate adoption of multiple SPECS with one badge, see <a href="../purpose-and-process/#badges">this</a>.</p>SPEC 4 — Using and Creating Nightly Wheels
https://scientific-python.org/specs/spec-0004/
Mon, 05 Sep 2022 00:00:00 +0000https://scientific-python.org/specs/spec-0004/<h2 id="description">Description<a class="headerlink" href="#description" title="Link to this heading">#</a></h2>
<p>This SPEC describes how to test against nightly wheels of several widely used
projects and how to create nightly wheels for your project. The document uses the word
<em>nightly</em> to refer to some semi regular interval, like daily, weekly, or every three days.</p>
<p>Regularly running your project’s tests while using the nightly version of your
dependencies allows you to spot problems caused by upstream changes before a new release
is made. This way potential issues can be resolved before they find their way
into a release, at which point it becomes much harder to change or revert
something.</p>SPEC 3 — Accessibility
https://scientific-python.org/specs/spec-0003/
Mon, 14 Feb 2022 00:00:00 +0000https://scientific-python.org/specs/spec-0003/<h2 id="description">Description<a class="headerlink" href="#description" title="Link to this heading">#</a></h2>
<p>Technology is a great tool to make the world accessible to the full range of human experience, which includes <a href="https://www.cdc.gov/disability-and-health/articles-documents/disability-impacts-all-of-us-infographic.html">those with disabilities</a>. The reach of accessibility guidelines extends beyond the scientific Python ecosystem including the <a href="https://www.w3.org/TR/WCAG/">Web Content Accessibility Guidelines (W3C)</a>, a comprehensive set of international standards designed to make web content more accessible.</p>
<p>The primary objective of this SPEC (Scientific Python Accessibility) is to provide fundamental recommendations for the Scientific Python communities and their projects. These recommendations aim to ensure accessibility and inclusivity for individuals with disabilities, particularly regarding web-based content and tools.</p>SPEC 2 — API Dispatch
https://scientific-python.org/specs/spec-0002/
Thu, 16 Dec 2021 00:00:00 +0000https://scientific-python.org/specs/spec-0002/<h2 id="description">Description<a class="headerlink" href="#description" title="Link to this heading">#</a></h2>
<!--
Briefly and clearly describe the recommendation.
-->
<p>This SPEC (Scientific Python Ecosystem Coordination) recommendation for API dispatching is designed to enhance interoperability and performance within the scientific Python ecosystem, leveraging the capabilities of <a href="https://packaging.python.org/en/latest/specifications/entry-points/">Python <code>entry_points</code></a>.</p>
<p>This recommendation presents a systematic approach that enables users to redirect function calls to alternative computation backends seamlessly. This flexibility allows users to take advantage of optimized implementations simply by configuring an environment variable or adding an additional keyword argument (more on this later), rather than having to learn a new API’s interface, which might not be very “python-user”-friendly. Such adaptability facilitates the integration of hardware-specific optimizations, reimplementations in other programming languages (such as C or Rust), and the utilization of entirely new data structures.</p>SPEC 0 — Minimum Supported Dependencies
https://scientific-python.org/specs/spec-0000/
Thu, 17 Dec 2020 00:00:00 +0000https://scientific-python.org/specs/spec-0000/<h2 id="description">Description<a class="headerlink" href="#description" title="Link to this heading">#</a></h2>
<p>This SPEC recommends that all projects across the Scientific Python ecosystem adopt a common time-based policy for dropping dependencies. From the perspective of this SPEC, the dependencies in question are core packages as well as older Python versions.</p>
<p>All versions refer to feature releases (i.e., Python 3.8.0, NumPy 1.19.0; not Python 3.8.1, NumPy 1.19.2).</p>
<p>Specifically, we recommend that:</p>
<ol>
<li>Support for Python versions be dropped <strong>3 years</strong> after their initial release.</li>
<li>Support for core package dependencies be dropped <strong>2 years</strong> after their initial release.</li>
</ol>
<div class="admonition note">
<div class="admonition-title"> Note</div>
<p>
Core packages may or may not decide to provide bug fix releases during the full 2 year period after release.
Therefore, projects may occasionally want to drop support for core package dependencies earlier than recommended by this SPEC.
For instance, if a newer minimum version of a core package is needed by a project due to a critical bug fix,
which is not backported to older versions.
</p>SPEC 1 — Lazy Loading of Submodules and Functions
https://scientific-python.org/specs/spec-0001/
Thu, 17 Dec 2020 00:00:00 +0000https://scientific-python.org/specs/spec-0001/<h2 id="description">Description<a class="headerlink" href="#description" title="Link to this heading">#</a></h2>
<p>This SPEC recommends a lazy loading mechanism—targeted at libraries—that avoids import slowdowns
and provides explicit submodule exports.</p>
<p>For example, it allows the following behavior:</p>
<div class="highlight">
<pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">import</span> <span class="nn">skimage</span> <span class="k">as</span> <span class="nn">ski</span> <span class="c1"># cheap operation; does not load submodules</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="n">ski</span><span class="o">.</span><span class="n">filters</span> <span class="c1"># cheap operation; loads the filters submodule, but not</span>
</span></span><span class="line"><span class="cl"> <span class="c1"># any of its submodules or functions</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="n">ski</span><span class="o">.</span><span class="n">filters</span><span class="o">.</span><span class="n">gaussian</span><span class="p">(</span><span class="o">...</span><span class="p">)</span> <span class="c1"># loads the file in which gaussian is implemented</span>
</span></span><span class="line"><span class="cl"> <span class="c1"># and calls that function</span></span></span></code></pre>
</div>
<p>This has several advantages:</p>
https://scientific-python.org/specs/readme/
Mon, 01 Jan 0001 00:00:00 +0000https://scientific-python.org/specs/readme/<h1 id="spec">SPEC<a class="headerlink" href="#spec" title="Link to this heading">#</a></h1>
<p>The Scientific Python Ecosystem Coordination (SPEC) mechanism is used to recommend
project policies, coding conventions, and standard tooling.</p>
<p>See <a href="https://scientific-python.org/specs/">https://scientific-python.org/specs/</a> for a list of SPECs and their statuses.</p>Astropy
https://scientific-python.org/specs/core-projects/astropy/
Mon, 01 Jan 0001 00:00:00 +0000https://scientific-python.org/specs/core-projects/astropy/Code of Conduct
https://scientific-python.org/code_of_conduct/
Mon, 01 Jan 0001 00:00:00 +0000https://scientific-python.org/code_of_conduct/<p>This code of conduct applies to all spaces managed by the scientific Python
ecosystem project, including all public and private mailing lists,
issue trackers, wikis, and any other communication channel used by our
community.</p>
<p>This code of conduct should be honored by everyone who participates in the
scientific Python ecosystem community formally or informally, or
claims any affiliation with the project, in any project-related activities and
especially when representing the project, in any role.</p>General Planning Meeting
https://scientific-python.org/summits/developer/2023/general-planning/
Mon, 01 Jan 0001 00:00:00 +0000https://scientific-python.org/summits/developer/2023/general-planning/<h2 id="information">Information<a class="headerlink" href="#information" title="Link to this heading">#</a></h2>
<ul>
<li>Date: Monday, <a href="https://www.timeanddate.com/worldclock/converter.html?iso=20230227T170000&p1=224">February 27th 9AM - 10AM Pacific time (click for your timezone)</a></li>
<li>Zoom Link: <a href="https://caltech.zoom.us/j/87686129450">https://caltech.zoom.us/j/87686129450</a></li>
</ul>
<h2 id="participants">Participants<a class="headerlink" href="#participants" title="Link to this heading">#</a></h2>
<ul>
<li>Jarrod Millman</li>
<li>Stéfan van der Walt</li>
<li>Brigitta Sipőcz</li>
<li>Juanita Gomez</li>
</ul>
<h2 id="agenda">Agenda<a class="headerlink" href="#agenda" title="Link to this heading">#</a></h2>
<p>The summit is scheduled for 1 hour and will consist of a series of high-level
birds-of-a-feather (BoF)-style talks, followed by more focused discussion.</p>
<ol>
<li>
<p>(5 min) Welcome & Introductions (Jarrod Millman)</p>
</li>
<li>
<p>(10 min) Logistics</p>
</li>
<li>
<p>(30) Meeting Topics</p>Governance and Decision Making
https://scientific-python.org/about/governance/
Mon, 01 Jan 0001 00:00:00 +0000https://scientific-python.org/about/governance/<h2 id="abstract">Abstract<a class="headerlink" href="#abstract" title="Link to this heading">#</a></h2>
<p>Scientific Python is a consensus-based community project.
Anyone with an interest in the project can join the community, contribute to the project design,
and participate in the decision making process.
This document describes how that participation takes place, how to find consensus, and how
deadlocks are resolved.</p>
<p>Note that this document only applies to the Scientific Python project, which
aims to better coordinate the ecosystem and
prepare scientific Python for the next decade of data science.
However, every project in the ecosystem has its own governance structure.</p>IPython
https://scientific-python.org/specs/core-projects/ipython/
Mon, 01 Jan 0001 00:00:00 +0000https://scientific-python.org/specs/core-projects/ipython/Matplotlib
https://scientific-python.org/specs/core-projects/matplotlib/
Mon, 01 Jan 0001 00:00:00 +0000https://scientific-python.org/specs/core-projects/matplotlib/Meeting 1
https://scientific-python.org/summits/domain-stacks/meeting1/
Mon, 01 Jan 0001 00:00:00 +0000https://scientific-python.org/summits/domain-stacks/meeting1/<h2 id="information">Information<a class="headerlink" href="#information" title="Link to this heading">#</a></h2>
<ul>
<li>
<p>When: September 6th 8am PDT</p>
</li>
<li>
<p>Where:</p>
<ul>
<li><a href="https://berkeley.zoom.us/j/93150321184?pwd=aEp4RGFhc1pLQ2l3b1VKNHJRUGpOUT09">https://berkeley.zoom.us/j/93150321184?pwd=aEp4RGFhc1pLQ2l3b1VKNHJRUGpOUT09</a></li>
<li>Passcode: 029244</li>
</ul>
</li>
<li>
<p>Main page: <a href="https://scientific-python.org/summits/domain-stacks/">https://scientific-python.org/summits/domain-stacks/</a></p>
</li>
<li>
<p>Discussion: <a href="https://discuss.scientific-python.org/t/domain-stacks-summit/329">https://discuss.scientific-python.org/t/domain-stacks-summit/329</a></p>
</li>
</ul>
<h2 id="participants">Participants<a class="headerlink" href="#participants" title="Link to this heading">#</a></h2>
<ul>
<li>Stéfan van der Walt (Scientific Python)</li>
<li>Juanita Gomez (Scientific Python)</li>
<li>Pamphile Roy (Scientific Python)</li>
<li>Paige Martin (Pangeo)</li>
<li>Ryan Abernathey (Pangeo)</li>
<li>Jim Pivarski (Scikit-HEP)</li>
<li>Henry Schreiner (Scikit-HEP)</li>
<li>Levi Wolf (Geography)</li>
<li>Martin Fleischmann (Geography)</li>
<li>Pey Lian Lim (Astropy)</li>
<li>Isaac Virshup (scverse)</li>
</ul>
<h2 id="agenda">Agenda<a class="headerlink" href="#agenda" title="Link to this heading">#</a></h2>
<ul>
<li>
<p>(10 min) Stéfan discuss purpose of meeting and goals (10 min)</p>Meeting 1
https://scientific-python.org/summits/sparse/meeting1/
Mon, 01 Jan 0001 00:00:00 +0000https://scientific-python.org/summits/sparse/meeting1/<h2 id="information">Information<a class="headerlink" href="#information" title="Link to this heading">#</a></h2>
<ul>
<li>Date: Monday, <a href="https://www.timeanddate.com/worldclock/converter.html?iso=20220926T180000&p1=224">September 26th 11AM - 12PM Pacific time (click for your timezone)</a></li>
<li>Zoom Link (sign in required): <a href="https://berkeley.zoom.us/j/96628687450?pwd=Q29oeDc5NnJEYlFHVU1yVUFITzNQUT09">https://berkeley.zoom.us/j/96628687450?pwd=Q29oeDc5NnJEYlFHVU1yVUFITzNQUT09</a></li>
</ul>
<h2 id="participants">Participants<a class="headerlink" href="#participants" title="Link to this heading">#</a></h2>
<ul>
<li>Hameer Abbasi</li>
<li>Nezar Abdennur</li>
<li>Ross Barnowski</li>
<li>CJ Carey</li>
<li>Jérémie du Boisberranger</li>
<li>Julien Jerphanion</li>
<li>Jim Kitchen</li>
<li>Jarrod Millman</li>
<li>Dan Schult</li>
<li>Stéfan van der Walt</li>
<li>Isaac Virshup</li>
<li>Erik Welch</li>
<li>Meekail Zain</li>
</ul>
<h2 id="agenda">Agenda<a class="headerlink" href="#agenda" title="Link to this heading">#</a></h2>
<p>The summit is scheduled for 1 hour and will consist of a series of high-level
birds-of-a-feather (BoF)-style talks, followed by more focused discussion.</p>Meeting 2
https://scientific-python.org/summits/sparse/meeting2/
Mon, 01 Jan 0001 00:00:00 +0000https://scientific-python.org/summits/sparse/meeting2/<h2 id="information">Information<a class="headerlink" href="#information" title="Link to this heading">#</a></h2>
<ul>
<li>Date: Thursday, <a href="https://www.timeanddate.com/worldclock/converter.html?iso=20230427T180000&p1=224">April 27th 11AM - 12PM Pacific time (click for your timezone)</a></li>
<li>Zoom Link: <a href="https://ucsc.zoom.us/j/93937164560?pwd=UmZKTmlHeGRMRkN3a2h2SDNJY3lvZz09">https://ucsc.zoom.us/j/93937164560?pwd=UmZKTmlHeGRMRkN3a2h2SDNJY3lvZz09</a></li>
</ul>
<h2 id="participants">Participants<a class="headerlink" href="#participants" title="Link to this heading">#</a></h2>
<ul>
<li></li>
</ul>
<h2 id="agenda">Agenda<a class="headerlink" href="#agenda" title="Link to this heading">#</a></h2>
<p>The summit is scheduled for 1 hour and will focus on the proposed array semantics in <code>scipy.sparse</code> <a href="https://scientific-python.org/doc/sparse-arrays-grant-2022.pdf">(download)</a>
and what work can be accomplished during the <a href="https://scientific-python.org/summits/developer/2023/">2023 Scientific Python developer summit</a>.</p>
<ol>
<li>
<p>(5 min) Welcome & Introductions (Jarrod Millman)</p>
</li>
<li>
<p>(50 min) Discussion</p>
<ul>
<li>
<p>Who will be working on scipy sparse arrays during the summit?</p>MNE-Python
https://scientific-python.org/specs/core-projects/mne-python/
Mon, 01 Jan 0001 00:00:00 +0000https://scientific-python.org/specs/core-projects/mne-python/Narwhals
https://scientific-python.org/specs/core-projects/narwhals/
Mon, 01 Jan 0001 00:00:00 +0000https://scientific-python.org/specs/core-projects/narwhals/NetworkX
https://scientific-python.org/specs/core-projects/networkx/
Mon, 01 Jan 0001 00:00:00 +0000https://scientific-python.org/specs/core-projects/networkx/NumPy
https://scientific-python.org/specs/core-projects/numpy/
Mon, 01 Jan 0001 00:00:00 +0000https://scientific-python.org/specs/core-projects/numpy/pandas
https://scientific-python.org/specs/core-projects/pandas/
Mon, 01 Jan 0001 00:00:00 +0000https://scientific-python.org/specs/core-projects/pandas/Press kit
https://scientific-python.org/press-kit/
Mon, 01 Jan 0001 00:00:00 +0000https://scientific-python.org/press-kit/<p>We would like to make it easy for you to include the Scientific Python project identity in your next academic paper, course materials, or presentation.</p>
<p>You will find SVG versions of the Scientific Python logo <a href="https://github.com/scientific-python/archive/tree/main/branding/logo">here</a>.
Note that by using the scientific-python.org resources, you accept the <a href="https://scientific-python.org/code_of_conduct">Scientific Python Code of Conduct</a>.</p>PySAL
https://scientific-python.org/specs/core-projects/pysal/
Mon, 01 Jan 0001 00:00:00 +0000https://scientific-python.org/specs/core-projects/pysal/Roadmap
https://scientific-python.org/roadmap/
Mon, 01 Jan 0001 00:00:00 +0000https://scientific-python.org/roadmap/<p>With an extensive and high-quality ecosystem of libraries, scientific Python
has emerged as the leading platform for data analysis.
This ecosystem is sustained by independent volunteers with separate mailing lists,
websites, roadmaps, documentation, engineering and packaging solutions,
and governance structures.</p>
<p>The Scientific Python project aims to better coordinate the ecosystem and
prepare scientific Python for the next decade of data science.
We provide resources, planning, and coordination for the community.</p>Scikit-HEP
https://scientific-python.org/specs/core-projects/scikit-hep/
Mon, 01 Jan 0001 00:00:00 +0000https://scientific-python.org/specs/core-projects/scikit-hep/scikit-image
https://scientific-python.org/specs/core-projects/scikit-image/
Mon, 01 Jan 0001 00:00:00 +0000https://scientific-python.org/specs/core-projects/scikit-image/scikit-learn
https://scientific-python.org/specs/core-projects/scikit-learn/
Mon, 01 Jan 0001 00:00:00 +0000https://scientific-python.org/specs/core-projects/scikit-learn/SciPy
https://scientific-python.org/specs/core-projects/scipy/
Mon, 01 Jan 0001 00:00:00 +0000https://scientific-python.org/specs/core-projects/scipy/Summit Follow Up June 17
https://scientific-python.org/summits/sparse/array-followup-2023-06-17/
Mon, 01 Jan 0001 00:00:00 +0000https://scientific-python.org/summits/sparse/array-followup-2023-06-17/<h1 id="friday-june-17-2023-1400-to-1500-utc">Friday June 17 2023, 14:00 to 15:00 UTC<a class="headerlink" href="#friday-june-17-2023-1400-to-1500-utc" title="Link to this heading">#</a></h1>
<h2 id="attendees">Attendees<a class="headerlink" href="#attendees" title="Link to this heading">#</a></h2>
<ul>
<li>Dan</li>
<li>Erik</li>
<li>Isaac</li>
<li>CJ</li>
<li>Julien</li>
</ul>
<h2 id="agenda">Agenda<a class="headerlink" href="#agenda" title="Link to this heading">#</a></h2>
<ul>
<li>Sort out and attribute <a href="https://hackmd.io/1Q2832LDR_2Uv_-cV-wnYg#What-remains-to-be-done">what remains to be done</a></li>
<li>Roadmap/ plan for array-like sparse arrays
<ul>
<li>Deprecation plan for matrices</li>
<li><a href="https://github.com/scipy/scipy/issues/18592">Creation routines</a></li>
<li>Interop with other sparse matrix packages (isaac)</li>
</ul>
</li>
<li>Blog post</li>
</ul>
<h2 id="notes">Notes<a class="headerlink" href="#notes" title="Link to this heading">#</a></h2>
<ul>
<li>Introduction, Erik works on libraries using sparse datastructures
<ul>
<li>[Julien] Erik: here is <a href="https://hackmd.io/iEtdfbxfSbGwOAJTXmqyIQ">the worklog of the summit</a></li>
</ul>
</li>
</ul>
<h3 id="what-remains-to-be-done">What remains to be done<a class="headerlink" href="#what-remains-to-be-done" title="Link to this heading">#</a></h3>
<ul>
<li>How do we work
<ul>
<li>[Dan] Where does in-progress work go
<ul>
<li>CJ’s fork, make PRs onto branch there</li>
<li>Using the view on the diff on GitHub might prevent the creation of spurious Draft PR</li>
</ul>
</li>
<li>Dense pretending to be sparse can be ephermeral, never needs to go to scipy</li>
<li>Dan will make a branch for exploration that people can fork and make PRs to. Dan will try to keep it up-to-date with the main branch too.</li>
</ul>
</li>
<li>1d sparse array support
Timeline? - Dan + CJ working on it - Targeting 1.12</li>
<li>nd sparse array support
<ul>
<li>Julien, CJ: seems like low priority and this would be a huge maintenance cost SciPy for relatively rare use-cases</li>
<li>CJ: Array api makes interop easier, we can lean on external packages for now</li>
</ul>
</li>
<li>creation functions <a href="https://github.com/scipy/scipy/issues/18592">scipy#18592</a>
<ul>
<li>Want to get them out in a single release</li>
<li>Is Ross going to implement these, or need to assign elsewhere?</li>
<li>Current plan: <code>_array</code> methods, so we can apply this to the fast_matrix_market io at the same type</li>
<li>Bundling in api changes (like tuples for shapes)</li>
</ul>
</li>
<li>Deprecate <code>isspmatrix_</code> methods?
<ul>
<li>Sounds like combination of classes + format attribute cover this</li>
<li>(Julien) Deprecation plan: have suggested code to replace these things with</li>
<li>Add a section in the documentation explaining the change of semantic and a migration plan for downstream libraries during the deprecation cycle.
<ul>
<li>Make a roadmap for array api</li>
</ul>
</li>
</ul>
</li>
<li>scikit-learn
<ul>
<li>When will scikit-learn be willing to support a compatible version of scipy?
<ul>
<li>Julien:
<ul>
<li>reasoning is based on some linux package manager not supporting latest numpy scipy</li>
<li>Personally would like scikit-learn to follow SPEC 0</li>
<li>See discussion for <a href="https://github.com/scikit-learn/scikit-learn/issues/26438">1.3</a></li>
<li><a href="https://github.com/scikit-learn/scikit-learn/issues/26418">Dedicated RFC</a></li>
<li>Some part of scikit-learn’s behavior depends on SciPy’s version (e.g. see <a href="https://github.com/scikit-learn/scikit-learn/blob/784ba9ef9f65d5e4e33087dd7f5b87d65b605efc/sklearn/preprocessing/_polynomial.py#L61-L73">this one</a>); we might potentially rely on similar mechanism for the support of sparse arrays (e.g. reshaping outputs)</li>
<li>scikit-learn uses nightly builds to test the developer version of SciPy and NumPy and failing tests are updated in <a href="https://github.com/scikit-learn/scikit-learn/issues/26154">this issue</a>. We can watch those for breakage in scikit-learn when we make changes in SciPy.</li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
<li>General speed ups
<ul>
<li>“Fast path for canonical”
<ul>
<li>TODO (Isaac)
<ul>
<li>Figure out canonical for all the formats, probably normalize APIs</li>
<li>Add keyword public argument for constructors</li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
</ul>
<h2 id="broad-plan-for-deprecation">Broad plan for deprecation<a class="headerlink" href="#broad-plan-for-deprecation" title="Link to this heading">#</a></h2>
<ul>
<li>Add support for sparse_arrays everywhere we can
<ul>
<li>Creation functions: target 1.12</li>
<li>1d COO: target 1.12</li>
</ul>
</li>
<li>Deprecate spmatrix-specific functions (where there’s an easy replacement)
<ul>
<li>Target: 1.12</li>
</ul>
</li>
<li>Once everything works with sparse arrays, then deprecate spmatrix
<ul>
<li>And the sparse array API is stable! (specifically, 1d support)</li>
<li>Target: 1.13</li>
</ul>
</li>
</ul>
<h2 id="actionable-items">Actionable items<a class="headerlink" href="#actionable-items" title="Link to this heading">#</a></h2>
<ul>
<li>[Julien] Add a section in the documentation explaining the change of semantic and a migration plan for downstream libraries during the deprecation cycle.</li>
<li>[Julien] Drop <code>isspmatrix_-</code> checks in scikit-learn and use <code>issparse</code> and <code>format</code></li>
</ul>
<h2 id="next-meeting-date-and-time">Next meeting date and time<a class="headerlink" href="#next-meeting-date-and-time" title="Link to this heading">#</a></h2>
<ul>
<li>Every two weeks with the option to drop every other meeting (at least once a month)
<blockquote>
<p>[name=Julien] +1. I proposed to meet every two week for 1h on the same timeslot</p>xarray
https://scientific-python.org/specs/core-projects/xarray/
Mon, 01 Jan 0001 00:00:00 +0000https://scientific-python.org/specs/core-projects/xarray/Zarr-Python
https://scientific-python.org/specs/core-projects/zarr/
Mon, 01 Jan 0001 00:00:00 +0000https://scientific-python.org/specs/core-projects/zarr/