Python Enhancement Proposals
Go to file
Zac Hatfield-Dodds 375d7c9158
PEP 789: Preventing task-cancellation bugs by limiting yield in async generators (#3782)
* PEP 9999: First draft for limiting-yield

* PEP 9999: cleanups and clarifications

* PEP 789

* PEP 789: further clarifications

* PEP 789: fix typos

* PEP 789: move codeowners entry

* PEP 789: "block" -> "prevent"

because the term "block" is overloaded in this context.

* PEP 789: maybe just deprecate asyncgens?

* PEP 789: why to keep async gens

* PEP 789: add corrected code sample

* PEP 789: can't just deliver exceptions

* PEP 789: bytecode inspection?

* PEP 789: various small updates

* PEP 789: mermaid diagrams

For expedience I'm using sphinxcontrib-mermaid here; we can easily embed .png versions before merging if preferred.

* PEP 789: footnotes section

* PEP 789: minor clarifications

* PEP 789: minor expression edits

---------

Co-authored-by: Jelle Zijlstra <jelle.zijlstra@gmail.com>
2024-06-03 18:45:13 -07:00
.codespell Meta: Update pre-commit to fix Sphinx Lint (#3585) 2023-12-12 17:06:18 +00:00
.github PEP 789: Preventing task-cancellation bugs by limiting yield in async generators (#3782) 2024-06-03 18:45:13 -07:00
docs Infra: Refactor Makefile (#3514) 2023-11-03 01:24:48 -06:00
infra PEP 1 and 12: Document Topic header (#2995) 2023-02-03 21:34:17 +02:00
pep_sphinx_extensions Infra: Fix 404s (#3760) 2024-04-23 13:38:09 +03:00
peps PEP 789: Preventing task-cancellation bugs by limiting yield in async generators (#3782) 2024-06-03 18:45:13 -07:00
.codespellrc Add configuration for running `codespell` locally (#2151) 2022-01-24 23:40:15 +00:00
.gitattributes Meta: Instruct linguist to include PEPs in the statistics (#3430) 2023-09-09 19:58:51 +01:00
.gitignore Add sphinx-warnings.txt to .gitignore 2023-10-09 15:05:31 +02:00
.pre-commit-config.yaml Meta: Update config (#3645) 2024-02-08 18:43:54 +02:00
.readthedocs.yaml Infra: makefile/RTD: Use uv if installed (#3791) 2024-05-29 17:35:25 +03:00
.ruff.toml Meta: Update config (#3645) 2024-02-08 18:43:54 +02:00
CONTRIBUTING.rst Meta: Update pre-commit to fix Sphinx Lint (#3585) 2023-12-12 17:06:18 +00:00
Makefile Infra: makefile/RTD: Use uv if installed (#3791) 2024-05-29 17:35:25 +03:00
README.rst Update Read the Docs name and URL (#3588) 2023-12-14 21:37:56 +00:00
build.py All PEPs: Move to ``peps/`` folder (#3418) 2023-09-09 18:39:29 +01:00
check-peps.py Infra: Make check-peps’ _validate_post_history crash less (#3511) 2023-10-28 16:23:55 -07:00
pytest.ini Lint: Add ``check-peps.py`` (#3275) 2023-09-05 04:44:46 +01:00
requirements.txt Infra: Only install sphinx-autobuild for `make htmllive` (#3796) 2024-05-27 22:47:37 -07:00
tox.ini Meta: Update config (#3645) 2024-02-08 18:43:54 +02:00

README.rst

Python Enhancement Proposals
============================

.. image:: https://github.com/python/peps/actions/workflows/render.yml/badge.svg
    :target: https://github.com/python/peps/actions

The PEPs in this repo are published automatically on the web at
https://peps.python.org/. To learn more about the purpose of PEPs and how to go
about writing one, please start reading at :pep:`1`. Note that the PEP Index
(:pep:`0`) is automatically generated based on the metadata headers in other PEPs.


Canonical links
===============

The canonical form of PEP links are zero-padded, such as
``https://peps.python.org/pep-0008/``.

Shortcut redirects are also available.
For example, ``https://peps.python.org/8`` redirects to the canonical link.


Contributing to PEPs
====================

See the `Contributing Guidelines <./CONTRIBUTING.rst>`_.


Checking PEP formatting and rendering
=====================================

Please don't commit changes with reStructuredText syntax errors that cause PEP
generation to fail, or result in major rendering defects relative to what you
intend.


Browse the "Read the Docs" preview
----------------------------------

For every PR, we automatically create a preview of the rendered PEPs using
`Read the Docs <https://about.readthedocs.com>`_.
You can find it in the merge box at the bottom of the PR page:

1. Click "Show all checks" to expand the checks section
2. Find the line for ``docs/readthedocs.org:pep-previews``
3. Click on "Details" to the right


Render PEPs locally
-------------------

See the `build documentation <./docs/build.rst>`__ for full
instructions on how to render PEPs locally.
In summary, run the following in a fresh, activated virtual environment:

.. code-block:: bash

    # Install requirements
    python -m pip install -U -r requirements.txt

    # Build the PEPs
    make html

    # Or, if you don't have 'make':
    python build.py

The output HTML is found under the ``build`` directory.


Check and lint PEPs
-------------------

You can check for and fix common linting and spelling issues,
either on-demand or automatically as you commit, with our pre-commit suite.
See the `Contributing Guide <./CONTRIBUTING.rst>`_ for details.