APEs are documents to address non-trivial enhancements that require discussion and thought beyond a single Pull Request. This is intended to mirror the long-standing Python Enhancement Proposal process, but generally not quite as formally. Normally a proposal goes through various phases of consideration. Discussion is expected to take place using existing mechanisms (astropy-dev, github, hangouts, etc), and eventually a decision is made regarding whether the proposal should be accepted, rejected, or modified.
Accepted APEs ^^^^^^^^^^^^^
=== ================================================================ =========== ============
=== ================================================================ =========== ============
0 The Astropy Project Governance Charter
2021-Feb-19 |APE 0 DOI|
1 APE Purpose and Process
2024-Feb-05 |APE 1 DOI|
2 Astropy Release Cycle and Version Numbering
2013-Dec-11 |APE 2 DOI|
3 Configuration
2013-Dec-10 |APE 3 DOI|
4 Astropy Setup Helpers
2014-Jun-28 |APE 4 DOI|
5 Coordinates Subpackage Plan
2014-Jan-22 |APE 5 DOI|
6 Enhanced Character Separated Values table format
2015-Jan-26 |APE 6 DOI|
7 NDData Plan
2014-Dec-17 |APE 7 DOI|
8 Astropy Community Code of Conduct
2015-May-04 |APE 8 DOI|
9 Timeseries object for Astropy
2023-Oct-20 |APE 9 DOI|
10 Roadmap for Python 3-only support
2016-Aug-22 |APE 10 DOI|
12 Using Cookiecutter for the package-template
2017-Mar-28 |APE 12 DOI|
13 Vision for Astropy Spectroscopic Tools
2017-Dec-12 |APE 13 DOI|
14 A shared Python interface for World Coordinate Systems
2018-Nov-09 |APE 14 DOI|
15 An Updated Model for the Affiliated Package Ecosystem
2018-May-14 |APE 15 DOI|
17 A roadmap for package infrastructure without astropy-helpers
2019-Dec-12 |APE 17 DOI|
18 Adopt NEP 29 for CPython and Numpy Version Support
2021-Dec-25 |APE 18 DOI|
19 Distributing Astropy Project Funding
2022-Feb-28 |APE 19 DOI|
20 Formatting Code with Black
2022-Sep-23 |APE 20 DOI|
21 Ending Long Term Support Releases
2023-May-31 |APE 21 DOI|
22 Astropy Affiliated Packages with pyOpenSci
_ 2024-Jan-29 |APE 22 DOI|
=== ================================================================ =========== ============
.. _The Astropy Project Governance Charter: https://github.com/astropy/astropy-APEs/blob/main/APE0.rst .. _APE Purpose and Process: https://github.com/astropy/astropy-APEs/blob/main/APE1.rst .. _Astropy Release Cycle and Version Numbering: https://github.com/astropy/astropy-APEs/blob/main/APE2.rst .. _Configuration: https://github.com/astropy/astropy-APEs/blob/main/APE3.rst .. _Astropy Setup Helpers: https://github.com/astropy/astropy-APEs/blob/main/APE4.rst .. _Coordinates Subpackage Plan: https://github.com/astropy/astropy-APEs/blob/main/APE5.rst .. _Enhanced Character Separated Values table format: https://github.com/astropy/astropy-APEs/blob/main/APE6.rst .. _NDData Plan: https://github.com/astropy/astropy-APEs/blob/main/APE7.rst .. _Astropy Community Code of Conduct: https://github.com/astropy/astropy-APEs/blob/main/APE8.rst .. _Timeseries object for Astropy: https://github.com/astropy/astropy-APEs/blob/main/APE9.rst .. _Roadmap for Python 3-only support: https://github.com/astropy/astropy-APEs/blob/main/APE10.rst .. _Using Cookiecutter for the package-template: https://github.com/astropy/astropy-APEs/blob/main/APE12.rst .. _Vision for Astropy Spectroscopic Tools: https://github.com/astropy/astropy-APEs/blob/main/APE13.rst .. _A shared Python interface for World Coordinate Systems: https://github.com/astropy/astropy-APEs/blob/main/APE14.rst .. _An Updated Model for the Affiliated Package Ecosystem: https://github.com/astropy/astropy-APEs/blob/main/APE15.rst .. _A roadmap for package infrastructure without astropy-helpers: https://github.com/astropy/astropy-APEs/blob/main/APE17.rst .. _Adopt NEP 29 for CPython and Numpy Version Support: https://github.com/astropy/astropy-APEs/blob/main/APE18.rst .. _Distributing Astropy Project Funding: https://github.com/astropy/astropy-APEs/blob/main/APE19.rst .. _Formatting Code with Black: https://github.com/astropy/astropy-APEs/blob/main/APE20.rst .. _Ending Long Term Support Releases: https://github.com/astropy/astropy-APEs/blob/main/APE21.rst .. _Astropy Affiliated Packages with pyOpenSci: https://github.com/astropy/astropy-APEs/blob/main/APE22.rst
.. |APE 0 DOI| image:: https://zenodo.org/badge/DOI/10.5281/zenodo.4552790.svg :target: https://doi.org/10.5281/zenodo.4552790
.. |APE 1 DOI| image:: https://zenodo.org/badge/DOI/10.5281/zenodo.10805921.svg :target: https://doi.org/10.5281/zenodo.10805921
.. |APE 2 DOI| image:: https://zenodo.org/badge/DOI/10.5281/zenodo.1043887.svg :target: https://doi.org/10.5281/zenodo.1043887
.. |APE 3 DOI| image:: https://zenodo.org/badge/DOI/10.5281/zenodo.1043889.svg :target: https://doi.org/10.5281/zenodo.1043889
.. |APE 4 DOI| image:: https://zenodo.org/badge/DOI/10.5281/zenodo.1043891.svg :target: https://doi.org/10.5281/zenodo.1043891
.. |APE 5 DOI| image:: https://zenodo.org/badge/DOI/10.5281/zenodo.1043896.svg :target: https://doi.org/10.5281/zenodo.1043896
.. |APE 6 DOI| image:: https://zenodo.org/badge/DOI/10.5281/zenodo.1043900.svg :target: https://doi.org/10.5281/zenodo.1043900
.. |APE 7 DOI| image:: https://zenodo.org/badge/DOI/10.5281/zenodo.1043906.svg :target: https://doi.org/10.5281/zenodo.1043906
.. |APE 8 DOI| image:: https://zenodo.org/badge/DOI/10.5281/zenodo.1043912.svg :target: https://doi.org/10.5281/zenodo.1043912
.. |APE 9 DOI| image:: https://zenodo.org/badge/DOI/10.5281/zenodo.10403160.svg :target: https://doi.org/10.5281/zenodo.10403160
.. |APE 10 DOI| image:: https://zenodo.org/badge/DOI/10.5281/zenodo.1038586.svg :target: https://doi.org/10.5281/zenodo.1038586
.. |APE 12 DOI| image:: https://zenodo.org/badge/DOI/10.5281/zenodo.1044483.svg :target: https://doi.org/10.5281/zenodo.1044483
.. |APE 13 DOI| image:: https://zenodo.org/badge/DOI/10.5281/zenodo.1117942.svg :target: https://doi.org/10.5281/zenodo.1117942
.. |APE 14 DOI| image:: https://zenodo.org/badge/DOI/10.5281/zenodo.11566733.svg :target: https://doi.org/10.5281/zenodo.11566733
.. |APE 15 DOI| image:: https://zenodo.org/badge/DOI/10.5281/zenodo.1246833.svg :target: https://doi.org/10.5281/zenodo.1246833
.. |APE 17 DOI| image:: https://zenodo.org/badge/DOI/10.5281/zenodo.3572843.svg :target: https://doi.org/10.5281/zenodo.3572843
.. |APE 18 DOI| image:: https://zenodo.org/badge/DOI/10.5281/zenodo.4563082.svg :target: https://doi.org/10.5281/zenodo.4563082
.. |APE 19 DOI| image:: https://zenodo.org/badge/DOI/10.5281/zenodo.6312048.svg :target: https://doi.org/10.5281/zenodo.6312048
.. |APE 20 DOI| image:: https://zenodo.org/badge/DOI/10.5281/zenodo.10562869.svg :target: https://doi.org/10.5281/zenodo.10562869
.. |APE 21 DOI| image:: https://zenodo.org/badge/DOI/10.5281/zenodo.7990988.svg :target: https://doi.org/10.5281/zenodo.7990988
.. |APE 22 DOI| image:: https://zenodo.org/badge/DOI/10.5281/zenodo.10581892.svg :target: https://doi.org/10.5281/zenodo.10581891
Proposing a new APE ^^^^^^^^^^^^^^^^^^^
New APEs should be created using the APEtemplate.rst
file in this repository.
Fork the repository, copy APEtemplate.rst
to APE##.rst
where ## is the next
free number on the list of APEs (don't forget to check the open PRs when finding
this number). Issue a Pull Request with that file once
you've written it up (little explanation is required in the PR itself given that
the document has all the content - usually it's easiest to just paste in the
abstract).
Note that there is not much point to making proposals unless someone or some group has signed up to implement it if the APE is accepted (typically this would involve the author or authors of the APE). Just issuing an APE in order to spur others to do work is not generally going to be received well. Generally, an implementation is expected before an APE can be considered fully accepted. For proposals that require extensive work that few are willing to perform without some assurance it will be accepted, provisional acceptance is an option. For serious consideration it is usually good to show that detailed technical aspects have been played with in real code rather (even if it isn't a complete implementation).
Finalizing APEs ^^^^^^^^^^^^^^^
The final decision on accepting or rejecting APEs lies with the Astropy Coordination Committee (CoCo). Once the community discussion on the APE has wound down, the committee discusses the APE and makes a final decision on acceptance or rejection. One of the committee members should then:
the APE was accepted or rejected, including a summary of the community's discussion as relevant.
"Accepted" or "Rejected".
stop now.
account (not your personal account), go to https://zenodo.org/deposit/new, upload the .rst file, and set the fields to the following:
============================= ======================================================
Zenodo field Set to
============================= ======================================================
Communities The Astropy Project
Upload type Publication
Publication type Technical note
Publication Date The date-last-revised of the APE (which should be the same as the accepted date for new APEs)
Title Astropy Proposal for Enhancement
clicking on the DOI badge on the right side of the page and copying the reStructuredText source. You will need to update that with the "all versions" DOI number, which you can see under the "versions" section of Zenodo. (It is typically the first version minus 1.)
README.rst
and add an entry for the new APE to the"Accepted APEs" table. Use the DOI link from the previous step. Add corresponding RST link refs for both the DOI link and the new APE. Preview the update and test the links to make sure they are all correct. Then commit directly to main (or PR if you prefer).
astropy-dev <https://groups.google.com/forum/#!forum/astropy-dev/>
_announcing the acceptance In general this should just point to the accepted APE rather than providing additional decision rationale.
Updating APEs ^^^^^^^^^^^^^
In the cases where an updated APE requires updating (e.g., references to a new APE that supercedes it, clarifying information that emerges after the APE is accepted, etc.), changes can be made directly via PR, but the "date-last-revised" should be updated in the APE. Additionally, the Zenodo entry will need to be updated with a new version of the APE (not a completely new Zenodo entry), by using the "New version" button and then filling out the forms as described above.