Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
48 changes: 48 additions & 0 deletions .github/workflows/update_phep3_schedule.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
name: Update PHEP 3 Schedule

on:
schedule:
- cron: '0 8 * * 1' # Every Monday at 8am UTC (1am Mountain Time)
workflow_dispatch: # Allow manual trigger

jobs:
update-schedule:
runs-on: ubuntu-latest

steps:
- name: Checkout Repository
uses: actions/checkout@v4

- name: Set up Python 3.12
uses: actions/setup-python@v4
with:
python-version: '3.12'

- name: Install Dependencies
run: |
pip install requests pandas packaging

- name: Generate PHEP 3 Schedule
run: |
cd _pages/docs/phep-3
python generate_schedule.py

- name: Check for Changes
id: changes
run: |
if git diff --quiet _pages/docs/phep-3/chart.md _pages/docs/phep-3/schedule.md; then
echo "has_changes=false" >> $GITHUB_OUTPUT
else
echo "has_changes=true" >> $GITHUB_OUTPUT
fi

- name: Commit and Push Changes
if: steps.changes.outputs.has_changes == 'true'
run: |
git config --global user.name 'github-actions[bot]'
git config --global user.email 'github-actions[bot]@users.noreply.github.com'
git add _pages/docs/phep-3/chart.md _pages/docs/phep-3/schedule.md
git commit -m "Update PHEP 3 support schedule [automated]"
git push
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
20 changes: 18 additions & 2 deletions _includes/head.html
Original file line number Diff line number Diff line change
Expand Up @@ -50,19 +50,35 @@
{% endif %}
<!-- end of Twitter cards -->

<!-- Mermaid.js for diagrams and charts -->
<script src="https://cdn.jsdelivr.net/npm/mermaid@11/dist/mermaid.min.js"></script>
<script>
mermaid.initialize({
startOnLoad: true,
theme: 'default'
});
</script>

<!-- Dark Mode Script -->
<script>
// Function to set theme based on system preference
function setTheme(isDark) {
document.documentElement.setAttribute('data-theme', isDark ? 'dark' : 'light');
// Update Mermaid theme when system preference changes
if (typeof mermaid !== 'undefined') {
mermaid.initialize({
startOnLoad: true,
theme: isDark ? 'dark' : 'default'
});
}
}

// Initialize when DOM is ready
document.addEventListener('DOMContentLoaded', function() {
// Initial theme setup based on system preference
const prefersDarkScheme = window.matchMedia('(prefers-color-scheme: dark)');
setTheme(prefersDarkScheme.matches);

// Listen for system dark mode preference changes
if (prefersDarkScheme.addEventListener) {
prefersDarkScheme.addEventListener('change', function(e) {
Expand All @@ -75,7 +91,7 @@
});
}
});

// Apply theme immediately to reduce flash of incorrect theme
(function() {
const prefersDarkScheme = window.matchMedia('(prefers-color-scheme: dark)');
Expand Down
8 changes: 8 additions & 0 deletions _includes/mermaid_chart.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
{% comment %}
Include a Mermaid chart from a file.
Usage: {% include mermaid_chart.html file="path/to/chart.md" %}
{% endcomment %}
{% capture chart_content %}{% include_relative {{ include.file }} %}{% endcapture %}
<div class="mermaid">
{{ chart_content | strip }}
</div>
59 changes: 55 additions & 4 deletions _pages/docs/phep-3-support-schedule.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,59 @@ permalink: /docs/pheps/phep-3-support-schedule/
exclude: true
---

TODO.
This page provides a visual timeline and schedule for [PHEP 3](https://github.com/heliophysicsPy/standards/blob/main/pheps/phep-0003.md), PyHC's Python and Upstream Package Support Policy.

Per PHEP 3's "How to Teach This" section:
- The PyHC Tech Lead will maintain a new web page on the PyHC website detailing the support policy and include a graphical timeline of the schedule (similar to the Gantt chart above).
- Automated email reminders will be sent via the PyHC mailing list quarterly and near important drop/support dates to remind package maintainers of the schedule.
<br>

## Support Policy Summary

All PyHC packages should:
1. **Support Python versions** for at least **36 months** (3 years) after their initial release
2. **Support upstream core Scientific Python packages** for at least **24 months** (2 years) after their initial release
3. **Adopt support for new versions** within **6 months** of their release

The upstream [core Scientific Python packages](https://scientific-python.org/specs/core-projects/) are:
- `numpy`, `scipy`, `matplotlib`, `pandas`, `scikit-image`, `networkx`, `scikit-learn`, `xarray`, `ipython`, `zarr`

<br>

## Support Window Timeline

{% include mermaid_chart.html file="phep-3/chart.md" %}

## Drop and Adoption Schedule

Below is an auto-generated schedule with recommended dates for dropping support and adopting new versions. We suggest that the next release in a given quarter is considered as the one removing support for a given item.

You may want to delay the removal of support of an older Python version until your package fully works on the newly released Python, thus keeping the number of supported minor versions of Python the same for your package.

<br>

<div class="schedule-table" markdown="1">
{% include_relative phep-3/schedule.md %}
</div>

---

<br>

## Additional Information

- **Full PHEP 3 specification:** [PHEP 3 on GitHub](https://github.com/heliophysicsPy/standards/blob/main/pheps/phep-0003.md)
- **DOI:** [10.5281/zenodo.17794207](https://doi.org/10.5281/zenodo.17794207)
- **Email reminders:** Automated email reminders are sent via the PyHC mailing list quarterly and near important drop/support dates
- **Questions?** [Contact](/contact) the PyHC Tech Lead or discuss on the [PyHC's mailing list or Slack](/contact)

<br>

## For Package Maintainers

PyHC packages should:
- Clearly document their dependency version policy (see examples: [PlasmaPy](https://docs.plasmapy.org/en/stable/contributing/coding_guide.html#dependencies-and-requirements), [SpacePy](https://spacepy.github.io/dep_versions.html))
- Test against the minimum and maximum supported versions
- Avoid maximum or exact requirements (e.g., `numpy<2` or `matplotlib==3.5.3`) unless absolutely necessary
- Not require versions of any dependency older than 24 months

---

*This page is maintained by the PyHC Tech Lead. The schedule is generated using code from PHEP 3 and is updated periodically.*
139 changes: 139 additions & 0 deletions _pages/docs/phep-3/chart.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,139 @@
gantt
dateFormat YYYY-MM-DD
axisFormat %m / %Y
title Support Window

section python
3.11 : 2022-10-24,2025-10-23
3.12 : 2023-10-02,2026-10-01
3.13 : 2024-10-07,2027-10-07
3.14 : 2025-10-07,2028-10-06

section numpy
1.25.0 : 2023-06-17,2025-06-16
1.26.0 : 2023-09-16,2025-09-15
2.0.0 : 2024-06-16,2026-06-16
2.1.0 : 2024-08-18,2026-08-18
2.2.0 : 2024-12-08,2026-12-08
2.3.0 : 2025-06-07,2027-06-07
2.4.0 : 2025-12-20,2027-12-20

section scipy
1.11.0 : 2023-06-25,2025-06-24
1.12.0 : 2024-01-20,2026-01-19
1.13.0 : 2024-04-02,2026-04-02
1.14.0 : 2024-06-24,2026-06-24
1.15.0 : 2025-01-03,2027-01-03
1.16.0 : 2025-06-22,2027-06-22
1.17.0 : 2026-01-10,2028-01-10

section matplotlib
3.8.0 : 2023-09-15,2025-09-14
3.9.0 : 2024-05-15,2026-05-15
3.10.0 : 2024-12-14,2026-12-14

section pandas
2.0.0 : 2023-04-03,2025-04-02
2.1.0 : 2023-08-30,2025-08-29
2.2.0 : 2024-01-20,2026-01-19
2.3.0 : 2025-06-05,2027-06-05

section scikit-image
0.21.0 : 2023-06-02,2025-06-01
0.22.0 : 2023-10-03,2025-10-02
0.23.0 : 2024-04-10,2026-04-10
0.24.0 : 2024-06-18,2026-06-18
0.25.0 : 2024-12-13,2026-12-13
0.26.0 : 2025-12-20,2027-12-20

section networkx
3.1 : 2023-04-04,2025-04-03
3.2 : 2023-10-19,2025-10-18
3.3 : 2024-04-06,2026-04-06
3.4 : 2024-10-10,2026-10-10
3.5 : 2025-05-29,2027-05-29
3.6 : 2025-11-24,2027-11-24

section scikit-learn
1.3.0 : 2023-06-30,2025-06-29
1.4.0 : 2024-01-18,2026-01-17
1.5.0 : 2024-05-21,2026-05-21
1.6.0 : 2024-12-09,2026-12-09
1.7.0 : 2025-06-05,2027-06-05
1.8.0 : 2025-12-10,2027-12-10

section xarray
2023.4.0 : 2023-04-14,2025-04-13
2023.5.0 : 2023-05-19,2025-05-18
2023.6.0 : 2023-06-23,2025-06-22
2023.7.0 : 2023-07-17,2025-07-16
2023.8.0 : 2023-08-20,2025-08-19
2023.9.0 : 2023-09-26,2025-09-25
2023.10.0 : 2023-10-19,2025-10-18
2023.11.0 : 2023-11-17,2025-11-16
2023.12.0 : 2023-12-08,2025-12-07
2024.1.0 : 2024-01-17,2026-01-16
2024.2.0 : 2024-02-19,2026-02-18
2024.3.0 : 2024-03-29,2026-03-29
2024.5.0 : 2024-05-13,2026-05-13
2024.6.0 : 2024-06-13,2026-06-13
2024.7.0 : 2024-07-30,2026-07-30
2024.9.0 : 2024-09-11,2026-09-11
2024.10.0 : 2024-10-24,2026-10-24
2024.11.0 : 2024-11-22,2026-11-22
2025.1.0 : 2025-01-03,2027-01-03
2025.3.0 : 2025-03-20,2027-03-20
2025.4.0 : 2025-04-29,2027-04-29
2025.6.0 : 2025-06-10,2027-06-10
2025.7.0 : 2025-07-03,2027-07-03
2025.8.0 : 2025-08-14,2027-08-14
2025.9.0 : 2025-09-04,2027-09-04
2025.10.0 : 2025-10-06,2027-10-06
2025.11.0 : 2025-11-17,2027-11-17
2025.12.0 : 2025-12-05,2027-12-05

section ipython
8.13.0 : 2023-04-28,2025-04-27
8.14.0 : 2023-06-02,2025-06-01
8.15.0 : 2023-09-01,2025-08-31
8.16.0 : 2023-09-29,2025-09-28
8.17.0 : 2023-10-30,2025-10-29
8.18.0 : 2023-11-24,2025-11-23
8.19.0 : 2023-12-22,2025-12-21
8.20.0 : 2024-01-08,2026-01-07
8.21.0 : 2024-01-31,2026-01-30
8.22.0 : 2024-02-22,2026-02-21
8.23.0 : 2024-03-31,2026-03-31
8.24.0 : 2024-04-26,2026-04-26
8.25.0 : 2024-05-31,2026-05-31
8.26.0 : 2024-06-28,2026-06-28
8.27.0 : 2024-08-30,2026-08-30
8.28.0 : 2024-10-02,2026-10-02
8.29.0 : 2024-10-25,2026-10-25
8.30.0 : 2024-11-29,2026-11-29
8.31.0 : 2024-12-20,2026-12-20
8.32.0 : 2025-01-31,2027-01-31
8.33.0 : 2025-02-28,2027-02-28
8.34.0 : 2025-03-08,2027-03-08
8.35.0 : 2025-04-07,2027-04-07
8.36.0 : 2025-04-25,2027-04-25
8.37.0 : 2025-05-31,2027-05-31
8.38.0 : 2026-01-05,2028-01-05
9.0.0 : 2025-02-28,2027-02-28
9.1.0 : 2025-04-07,2027-04-07
9.2.0 : 2025-04-25,2027-04-25
9.3.0 : 2025-05-31,2027-05-31
9.4.0 : 2025-07-01,2027-07-01
9.5.0 : 2025-08-29,2027-08-29
9.6.0 : 2025-09-29,2027-09-29
9.7.0 : 2025-11-05,2027-11-05
9.8.0 : 2025-12-03,2027-12-03
9.9.0 : 2026-01-05,2028-01-05

section zarr
2.15.0 : 2023-06-14,2025-06-13
2.16.0 : 2023-07-20,2025-07-19
2.17.0 : 2024-02-14,2026-02-13
2.18.0 : 2024-05-07,2026-05-07
3.0.0 : 2025-01-09,2027-01-09
3.1.0 : 2025-07-15,2027-07-15
Loading