diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS
new file mode 100644
index 000000000..de60a5f44
--- /dev/null
+++ b/.github/CODEOWNERS
@@ -0,0 +1,2 @@
+# Notify @EWDurbin for all opened Issues and Pull Requests
+* @EWDurbin @JacobCoffee
diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md
new file mode 100644
index 000000000..fa82b4297
--- /dev/null
+++ b/.github/PULL_REQUEST_TEMPLATE.md
@@ -0,0 +1,19 @@
+
+#### Description
+
+-
+
+
+#### Closes
+
+-
+
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index 42f8472ea..ed08f4b7f 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -31,7 +31,7 @@ jobs:
sudo dpkg -i pandoc-2.17.1.1-1-amd64.deb
- uses: actions/setup-python@v5
with:
- python-version: 3.12.6
+ python-version-file: '.python-version'
- name: Cache Python dependencies
uses: actions/cache@v4
env:
diff --git a/.github/workflows/static.yml b/.github/workflows/static.yml
new file mode 100644
index 000000000..3207b964e
--- /dev/null
+++ b/.github/workflows/static.yml
@@ -0,0 +1,29 @@
+name: Check collectstatic
+on: [push, pull_request]
+jobs:
+ test:
+ runs-on: ubuntu-latest
+ steps:
+ - name: Check out repository
+ uses: actions/checkout@v4
+ - uses: actions/setup-python@v5
+ with:
+ python-version-file: '.python-version'
+ - name: Cache Python dependencies
+ uses: actions/cache@v4
+ env:
+ cache-name: pythondotorg-cache-pip
+ with:
+ path: ~/.cache/pip
+ key: ${{ runner.os }}-${{ github.job }}-${{ env.cache-name }}-${{ hashFiles('requirements.txt', '*-requirements.txt') }}
+ restore-keys: |
+ ${{ runner.os }}-${{ github.job }}-${{ env.cache-name }}-
+ ${{ runner.os }}-${{ github.job }}-
+ ${{ runner.os }}-
+ - name: Install Python dependencies
+ run: |
+ pip install -U pip setuptools wheel
+ pip install -r requirements.txt -r prod-requirements.txt
+ - name: Run Tests
+ run: |
+ DJANGO_SETTINGS_MODULE=pydotorg.settings.static python manage.py collectstatic --noinput
diff --git a/Dockerfile b/Dockerfile
index b124c73ce..c701cd76c 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -1,4 +1,4 @@
-FROM python:3.12-bookworm
+FROM python:3.12.6-bookworm
ENV PYTHONUNBUFFERED=1
ENV PYTHONDONTWRITEBYTECODE=1
diff --git a/Dockerfile.cabotage b/Dockerfile.cabotage
index 854e3179e..9bc9d27ad 100644
--- a/Dockerfile.cabotage
+++ b/Dockerfile.cabotage
@@ -1,4 +1,4 @@
-FROM python:3.12-bookworm
+FROM python:3.12.6-bookworm
COPY --from=ewdurbin/nginx-static:1.25.x /usr/bin/nginx /usr/bin/nginx
ENV PYTHONUNBUFFERED=1
ENV PYTHONDONTWRITEBYTECODE=1
diff --git a/Makefile b/Makefile
index 50585463a..bd4291bbe 100644
--- a/Makefile
+++ b/Makefile
@@ -10,7 +10,7 @@ default:
.state/docker-build-web: Dockerfile dev-requirements.txt base-requirements.txt
# Build web container for this project
- docker-compose build --force-rm web
+ docker compose build --force-rm web
# Mark the state so we don't rebuild this needlessly.
mkdir -p .state && touch .state/docker-build-web
@@ -24,35 +24,35 @@ default:
.state/db-initialized: .state/docker-build-web .state/db-migrated
# Load all fixtures
- docker-compose run --rm web ./manage.py loaddata fixtures/*.json
+ docker compose run --rm web ./manage.py loaddata fixtures/*.json
# Mark the state so we don't rebuild this needlessly.
mkdir -p .state && touch .state/db-initialized
serve: .state/db-initialized
- docker-compose up --remove-orphans
+ docker compose up --remove-orphans
migrations: .state/db-initialized
# Run Django makemigrations
- docker-compose run --rm web ./manage.py makemigrations
+ docker compose run --rm web ./manage.py makemigrations
migrate: .state/docker-build-web
# Run Django migrate
- docker-compose run --rm web ./manage.py migrate
+ docker compose run --rm web ./manage.py migrate
manage: .state/db-initialized
# Run Django manage to accept arbitrary arguments
- docker-compose run --rm web ./manage.py $(filter-out $@,$(MAKECMDGOALS))
+ docker compose run --rm web ./manage.py $(filter-out $@,$(MAKECMDGOALS))
shell: .state/db-initialized
- docker-compose run --rm web ./manage.py shell
+ docker compose run --rm web ./manage.py shell
clean:
- docker-compose down -v
+ docker compose down -v
rm -f .state/docker-build-web .state/db-initialized .state/db-migrated
test: .state/db-initialized
- docker-compose run --rm web ./manage.py test
+ docker compose run --rm web ./manage.py test
docker_shell: .state/db-initialized
- docker-compose run --rm web /bin/bash
+ docker compose run --rm web /bin/bash
diff --git a/README.md b/README.md
index 5bf04cbc6..caa261e07 100644
--- a/README.md
+++ b/README.md
@@ -5,12 +5,14 @@
### General information
-This is the repository and issue tracker for [python.org](https://www.python.org).
-The repository for CPython itself is at https://github.com/python/cpython, and the
-issue tracker is at https://github.com/python/cpython/issues/.
+This is the repository and issue tracker for [python.org](https://www.python.org).
-Issues related to [Python's documentation](https://docs.python.org) can be filed in
-https://github.com/python/cpython/issues/.
+> [!NOTE]
+> The repository for CPython itself is at https://github.com/python/cpython, and the
+> issue tracker is at https://github.com/python/cpython/issues/.
+>
+> Similarly, issues related to [Python's documentation](https://docs.python.org) can be filed in
+> https://github.com/python/cpython/issues/.
### Contributing
@@ -19,5 +21,4 @@ https://github.com/python/cpython/issues/.
* Documentation: https://pythondotorg.readthedocs.io/
* Mailing list: [pydotorg-www](https://mail.python.org/mailman/listinfo/pydotorg-www)
* IRC: `#pydotorg` on Freenode
-* Staging site: https://staging.python.org/ (`main` branch)
* License: Apache License
diff --git a/base-requirements.txt b/base-requirements.txt
index 2ace94a1d..4f9c0aa39 100644
--- a/base-requirements.txt
+++ b/base-requirements.txt
@@ -15,8 +15,8 @@ python-decouple==3.4
# lxml used by BeautifulSoup.
lxml==5.2.2
cssselect==1.1.0
-feedparser==6.0.8
-beautifulsoup4==4.11.2
+feedparser==6.0.11
+beautifulsoup4==4.12.3
icalendar==4.0.7
chardet==4.0.0
celery[redis]==5.3.6
@@ -43,7 +43,7 @@ django-waffle==2.2.1
djangorestframework==3.14.0 # 3.14.0 is first version that supports Django 4.1, 4.2 support hasnt been "released"
django-filter==2.4.0
django-ordered-model==3.4.3
-django-widget-tweaks==1.4.8
+django-widget-tweaks==1.5.0
django-countries==7.2.1
num2words==0.5.10
django-polymorphic==3.1.0 # 3.1.0 is first version that supports Django 4.0, unsure if it fully supports 4.2
diff --git a/downloads/tests/test_views.py b/downloads/tests/test_views.py
index e495b9e93..c585fe05c 100644
--- a/downloads/tests/test_views.py
+++ b/downloads/tests/test_views.py
@@ -5,11 +5,10 @@
from django.urls import reverse
from django.test import TestCase, override_settings
-from rest_framework.authtoken.models import Token
from rest_framework.test import APITestCase
from .base import BaseDownloadTests, DownloadMixin
-from ..models import OS, Release
+from ..models import Release
from pages.factories import PageFactory
from pydotorg.drf import BaseAPITestCase
from users.factories import UserFactory
diff --git a/events/importer.py b/events/importer.py
index e47775060..fe04d35f5 100644
--- a/events/importer.py
+++ b/events/importer.py
@@ -22,7 +22,13 @@ def import_occurrence(self, event, event_data):
# but won't add any timezone information. We will convert them to
# aware datetime objects manually.
dt_start = extract_date_or_datetime(event_data['DTSTART'].dt)
- dt_end = extract_date_or_datetime(event_data['DTEND'].dt)
+ if 'DTEND' in event_data:
+ # DTEND is not always set on events, in particular it seems that
+ # events which have the same start and end time, don't provide
+ # DTEND. See #2021.
+ dt_end = extract_date_or_datetime(event_data['DTEND'].dt)
+ else:
+ dt_end = dt_start
# Let's mark those occurrences as 'all-day'.
all_day = (
diff --git a/events/models.py b/events/models.py
index 3334ca326..b41d92b22 100644
--- a/events/models.py
+++ b/events/models.py
@@ -237,7 +237,7 @@ class OccurringRule(RuleMixin, models.Model):
def __str__(self):
strftime = settings.SHORT_DATETIME_FORMAT
- return f'{self.event.title} {date(self.dt_start.strftime, strftime)} - {date(self.dt_end.strftime, strftime)}'
+ return f'{self.event.title} {date(self.dt_start, strftime)} - {date(self.dt_end, strftime)}'
@property
def begin(self):
@@ -283,8 +283,8 @@ class RecurringRule(RuleMixin, models.Model):
all_day = models.BooleanField(default=False)
def __str__(self):
- strftime = settings.SHORT_DATETIME_FORMAT
- return f'{self.event.title} every {timedelta_nice_repr(self.interval)} since {date(self.dt_start.strftime, strftime)}'
+ return (f'{self.event.title} every {timedelta_nice_repr(self.freq_interval_as_timedelta)} since '
+ f'{date(self.dt_start, settings.SHORT_DATETIME_FORMAT)}')
def to_rrule(self):
return rrule(
diff --git a/fixtures/boxes.json b/fixtures/boxes.json
index bc3816cc7..df66827b5 100644
--- a/fixtures/boxes.json
+++ b/fixtures/boxes.json
@@ -318,9 +318,9 @@
"created": "2014-02-13T17:37:50.862Z",
"updated": "2014-02-16T23:01:04.762Z",
"label": "widget-weneedyou",
- "content": "
Open source software is made better when users can easily contribute code and documentation to fix bugs and add features. Python strongly encourages community involvement in improving the software. Learn more about how to make Python better for everyone.
\r\nOpen source software is made better when users can easily contribute code and documentation to fix bugs and add features. Python strongly encourages community involvement in improving the software. Learn more about how to make Python better for everyone.
\r\nOpen source software is made better when users can easily contribute code and documentation to fix bugs and add features. Python strongly encourages community involvement in improving the software. Learn more about how to make Python better for everyone.
\r\nOpen source software is made better when users can easily contribute code and documentation to fix bugs and add features. Python strongly encourages community involvement in improving the software. Learn more about how to make Python better for everyone.
\r\n
-
Introduction
-
- This PEP contains the index of all Python Enhancement Proposals,
- known as PEPs. PEP numbers are assigned by the PEP editors, and
- once assigned are never changed[1]. The Mercurial history[2] of
- the PEP texts represent their historical record.
-
-
-
-
Index by Category
-
- num title owner
- --- ----- -----
-
- Meta-PEPs (PEPs about PEPs or Processes)
-
- P 1 PEP Purpose and Guidelines Warsaw, Hylton, Goodger, Coghlan
- P 4 Deprecation of Standard Modules von Löwis
- P 5 Guidelines for Language Evolution Prescod
- P 6 Bug Fix Releases Aahz, Baxter
- P 7 Style Guide for C Code GvR
- P 8 Style Guide for Python Code GvR, Warsaw, Coghlan
- P 9 Sample Plaintext PEP Template Warsaw
- P 10 Voting Guidelines Warsaw
- P 11 Removing support for little used platforms von Löwis
- P 12 Sample reStructuredText PEP Template Goodger, Warsaw
-
- Other Informational PEPs
-
- I 20 The Zen of Python Peters
- I 101 Doing Python Releases 101 Warsaw, GvR
- IF 247 API for Cryptographic Hash Functions Kuchling
- IF 248 Python Database API Specification v1.0 Lemburg
- IF 249 Python Database API Specification v2.0 Lemburg
- I 257 Docstring Conventions Goodger, GvR
- IF 272 API for Block Encryption Algorithms v1.0 Kuchling
- I 287 reStructuredText Docstring Format Goodger
- I 290 Code Migration and Modernization Hettinger
- IF 291 Backward Compatibility for the Python 2 Standard ... Norwitz
- IF 333 Python Web Server Gateway Interface v1.0 Eby
- I 373 Python 2.7 Release Schedule Peterson
- I 392 Python 3.2 Release Schedule Brandl
- I 394 The "python" Command on Unix-Like Systems Staley, Coghlan
- I 398 Python 3.3 Release Schedule Brandl
- IF 399 Pure Python/C Accelerator Module Compatibility ... Cannon
- IF 404 Python 2.8 Un-release Schedule Warsaw
- IA 411 Provisional packages in the Python standard library Coghlan, Bendersky
- I 429 Python 3.4 Release Schedule Hastings
- IF 430 Migrating to Python 3 as the default online ... Coghlan
- I 434 IDLE Enhancement Exception for All Branches Rovito, Reedy
- IA 440 Version Identification and Dependency Specification Coghlan, Stufft
- I 478 Python 3.5 Release Schedule Hastings
- IF 3333 Python Web Server Gateway Interface v1.0.1 Eby
-
- Accepted PEPs (accepted; may not be implemented yet)
-
- SA 345 Metadata for Python Software Packages 1.2 Jones
- SA 376 Database of Installed Python Distributions Ziadé
- SA 425 Compatibility Tags for Built Distributions Holth
- SA 427 The Wheel Binary Package Format 1.0 Holth
- SA 461 Adding % formatting to bytes and bytearray Furman
- SA 471 os.scandir() function -- a better and faster ... Hoyt
- SA 477 Backport ensurepip (PEP 453) to Python 2.7 Stufft, Coghlan
- SA 3121 Extension Module Initialization and Finalization von Löwis
-
- Open PEPs (under consideration)
-
- S 381 Mirroring infrastructure for PyPI Ziadé, v. Löwis
- P 387 Backwards Compatibility Policy Peterson
- S 426 Metadata for Python Software Packages 2.0 Coghlan, Holth, Stufft
- S 431 Time zone support improvements Regebro
- S 432 Simplifying the CPython startup sequence Coghlan
- S 436 The Argument Clinic DSL Hastings
- S 441 Improving Python ZIP Application Support Holth
- S 447 Add __getdescriptor__ method to metaclass Oussoren
- S 448 Additional Unpacking Generalizations Landau
- I 452 API for Cryptographic Hash Functions v2.0 Kuchling, Heimes
- S 455 Adding a key-transforming dictionary to collections Pitrou
- I 457 Syntax For Positional-Only Parameters Hastings
- S 458 Surviving a Compromise of PyPI Kuppusamy, Stufft, Cappos
- S 459 Standard Metadata Extensions for Python Software ... Coghlan
- S 463 Exception-catching expressions Angelico
- S 467 Minor API improvements for binary sequences Coghlan
- S 468 Preserving the order of \*\*kwargs in a function. Snow
- P 470 Using Multi Index Support for External to PyPI ... Stufft
- S 472 Support for indexing with keyword arguments Borini, Martinot-Lagarde
- S 473 Adding structured data to built-in exceptions Kreft
- S 475 Retry system calls failing with EINTR Natali, Stinner
- S 476 Enabling certificate verification by default for ... Gaynor
-
- Finished PEPs (done, implemented in code repository)
-
- SF 100 Python Unicode Integration Lemburg
- SF 201 Lockstep Iteration Warsaw
- SF 202 List Comprehensions Warsaw
- SF 203 Augmented Assignments Wouters
- SF 205 Weak References Drake
- SF 207 Rich Comparisons GvR, Ascher
- SF 208 Reworking the Coercion Model Schemenauer, Lemburg
- SF 214 Extended Print Statement Warsaw
- SF 217 Display Hook for Interactive Use Zadka
- SF 218 Adding a Built-In Set Object Type Wilson, Hettinger
- SF 221 Import As Wouters
- SF 223 Change the Meaning of \x Escapes Peters
- SF 227 Statically Nested Scopes Hylton
- SF 229 Using Distutils to Build Python Kuchling
- SF 230 Warning Framework GvR
- SF 232 Function Attributes Warsaw
- SF 234 Iterators Yee, GvR
- SF 235 Import on Case-Insensitive Platforms Peters
- SF 236 Back to the __future__ Peters
- SF 237 Unifying Long Integers and Integers Zadka, GvR
- SF 238 Changing the Division Operator Zadka, GvR
- SF 241 Metadata for Python Software Packages Kuchling
- SF 250 Using site-packages on Windows Moore
- SF 252 Making Types Look More Like Classes GvR
- SF 253 Subtyping Built-in Types GvR
- SF 255 Simple Generators Schemenauer, Peters, Hetland
- SF 260 Simplify xrange() GvR
- SF 261 Support for "wide" Unicode characters Prescod
- SF 263 Defining Python Source Code Encodings Lemburg, von Löwis
- SF 264 Future statements in simulated shells Hudson
- SF 273 Import Modules from Zip Archives Ahlstrom
- SF 274 Dict Comprehensions Warsaw
- SF 277 Unicode file name support for Windows NT Hodgson
- SF 278 Universal Newline Support Jansen
- SF 279 The enumerate() built-in function Hettinger
- SF 282 A Logging System Sajip, Mick
- SF 285 Adding a bool type GvR
- SF 289 Generator Expressions Hettinger
- SF 292 Simpler String Substitutions Warsaw
- SF 293 Codec Error Handling Callbacks Dörwald
- SF 301 Package Index and Metadata for Distutils Jones
- SF 302 New Import Hooks JvR, Moore
- SF 305 CSV File API Altis, Cole, McNamara, Montanaro, Wells
- SF 307 Extensions to the pickle protocol GvR, Peters
- SF 308 Conditional Expressions GvR, Hettinger
- SF 309 Partial Function Application Harris
- SF 311 Simplified Global Interpreter Lock Acquisition for ... Hammond
- SF 314 Metadata for Python Software Packages v1.1 Kuchling, Jones
- SF 318 Decorators for Functions and Methods Smith
- SF 322 Reverse Iteration Hettinger
- SF 324 subprocess - New process module Astrand
- SF 327 Decimal Data Type Batista
- SF 328 Imports: Multi-Line and Absolute/Relative Aahz
- SF 331 Locale-Independent Float/String Conversions Reis
- SF 338 Executing modules as scripts Coghlan
- SF 341 Unifying try-except and try-finally Brandl
- SF 342 Coroutines via Enhanced Generators GvR, Eby
- SF 343 The "with" Statement GvR, Coghlan
- SF 352 Required Superclass for Exceptions Cannon, GvR
- SF 353 Using ssize_t as the index type von Löwis
- SF 357 Allowing Any Object to be Used for Slicing Oliphant
- SF 358 The "bytes" Object Schemenauer, GvR
- SF 362 Function Signature Object Cannon, Seo, Selivanov, Hastings
- SF 366 Main module explicit relative imports Coghlan
- SF 370 Per user site-packages directory Heimes
- SF 371 Addition of the multiprocessing package to the ... Noller, Oudkerk
- SF 372 Adding an ordered dictionary to collections Ronacher, Hettinger
- SF 378 Format Specifier for Thousands Separator Hettinger
- SF 380 Syntax for Delegating to a Subgenerator Ewing
- SF 383 Non-decodable Bytes in System Character Interfaces v. Löwis
- SF 384 Defining a Stable ABI v. Löwis
- SF 389 argparse - New Command Line Parsing Module Bethard
- SF 391 Dictionary-Based Configuration For Logging Sajip
- SF 393 Flexible String Representation v. Löwis
- SF 397 Python launcher for Windows Hammond, v. Löwis
- SF 405 Python Virtual Environments Meyer
- SF 409 Suppressing exception context Furman
- SF 412 Key-Sharing Dictionary Shannon
- SF 414 Explicit Unicode Literal for Python 3.3 Ronacher, Coghlan
- SF 415 Implement context suppression with exception attributes Peterson
- SF 417 Including mock in the Standard Library Foord
- SF 418 Add monotonic time, performance counter, and ... Simpson, Jewett, Turnbull, Stinner
- SF 420 Implicit Namespace Packages Smith
- SF 421 Adding sys.implementation Snow
- SF 424 A method for exposing a length hint Gaynor
- SF 428 The pathlib module -- object-oriented filesystem paths Pitrou
- SF 435 Adding an Enum type to the Python standard library Warsaw, Bendersky, Furman
- SF 442 Safe object finalization Pitrou
- SF 443 Single-dispatch generic functions Langa
- SF 445 Add new APIs to customize Python memory allocators Stinner
- SF 446 Make newly created file descriptors non-inheritable Stinner
- SF 450 Adding A Statistics Module To The Standard Library D'Aprano
- SF 451 A ModuleSpec Type for the Import System Snow
- SF 453 Explicit bootstrapping of pip in Python installations Stufft, Coghlan
- SF 454 Add a new tracemalloc module to trace Python memory ... Stinner
- SF 456 Secure and interchangeable hash algorithm Heimes
- SF 465 A dedicated infix operator for matrix multiplication Smith
- SF 466 Network Security Enhancements for Python 2.7.x Coghlan
- SF 3101 Advanced String Formatting Talin
- SF 3102 Keyword-Only Arguments Talin
- SF 3104 Access to Names in Outer Scopes Yee
- SF 3105 Make print a function Brandl
- SF 3106 Revamping dict.keys(), .values() and .items() GvR
- SF 3107 Function Annotations Winter, Lownds
- SF 3108 Standard Library Reorganization Cannon
- SF 3109 Raising Exceptions in Python 3000 Winter
- SF 3110 Catching Exceptions in Python 3000 Winter
- SF 3111 Simple input built-in in Python 3000 Roberge
- SF 3112 Bytes literals in Python 3000 Orendorff
- SF 3113 Removal of Tuple Parameter Unpacking Cannon
- SF 3114 Renaming iterator.next() to iterator.__next__() Yee
- SF 3115 Metaclasses in Python 3000 Talin
- SF 3116 New I/O Stutzbach, GvR, Verdone
- SF 3118 Revising the buffer protocol Oliphant, Banks
- SF 3119 Introducing Abstract Base Classes GvR, Talin
- SF 3120 Using UTF-8 as the default source encoding von Löwis
- SF 3123 Making PyObject_HEAD conform to standard C von Löwis
- SF 3127 Integer Literal Support and Syntax Maupin
- SF 3129 Class Decorators Winter
- SF 3131 Supporting Non-ASCII Identifiers von Löwis
- SF 3132 Extended Iterable Unpacking Brandl
- SF 3134 Exception Chaining and Embedded Tracebacks Yee
- SF 3135 New Super Spealman, Delaney, Ryan
- SF 3137 Immutable Bytes and Mutable Buffer GvR
- SF 3138 String representation in Python 3000 Ishimoto
- SF 3141 A Type Hierarchy for Numbers Yasskin
- SF 3144 IP Address Manipulation Library for the Python ... Moody
- SF 3147 PYC Repository Directories Warsaw
- SF 3148 futures - execute computations asynchronously Quinlan
- SF 3149 ABI version tagged .so files Warsaw
- SF 3151 Reworking the OS and IO exception hierarchy Pitrou
- SF 3154 Pickle protocol version 4 Pitrou
- SF 3155 Qualified name for classes and functions Pitrou
- SF 3156 Asynchronous IO Support Rebooted: the "asyncio" Module GvR
-
- Historical Meta-PEPs and Informational PEPs
-
- PF 2 Procedure for Adding New Modules Faassen
- PF 42 Feature Requests Hylton
- IF 160 Python 1.6 Release Schedule Drake
- IF 200 Python 2.0 Release Schedule Hylton
- IF 226 Python 2.1 Release Schedule Hylton
- IF 251 Python 2.2 Release Schedule Warsaw, GvR
- IF 283 Python 2.3 Release Schedule GvR
- IF 320 Python 2.4 Release Schedule Warsaw, Hettinger, Baxter
- PF 347 Migrating the Python CVS to Subversion von Löwis
- IF 356 Python 2.5 Release Schedule Norwitz, GvR, Baxter
- PF 360 Externally Maintained Packages Cannon
- IF 361 Python 2.6 and 3.0 Release Schedule Norwitz, Warsaw
- PF 374 Choosing a distributed VCS for the Python project Cannon, Turnbull, Vassalotti, Warsaw, Ochtman
- IF 375 Python 3.1 Release Schedule Peterson
- PF 385 Migrating from Subversion to Mercurial Ochtman, Pitrou, Brandl
- PA 438 Transitioning to release-file hosting on PyPI Krekel, Meyer
- PA 449 Removal of the PyPI Mirror Auto Discovery and ... Stufft
- PA 464 Removal of the PyPI Mirror Authenticity API Stufft
- PF 3000 Python 3000 GvR
- PF 3002 Procedure for Backwards-Incompatible Changes Bethard
- PF 3003 Python Language Moratorium Cannon, Noller, GvR
- PF 3099 Things that will Not Change in Python 3000 Brandl
- PF 3100 Miscellaneous Python 3.0 Plans Cannon
-
- Deferred PEPs
-
- SD 211 Adding A New Outer Product Operator Wilson
- SD 212 Loop Counter Iteration Schneider-Kamp
- SD 213 Attribute Access Handlers Prescod
- SD 219 Stackless Python McMillan
- SD 222 Web Library Enhancements Kuchling
- SD 225 Elementwise/Objectwise Operators Zhu, Lielens
- SD 233 Python Online Help Prescod
- SD 262 A Database of Installed Python Packages Kuchling
- SD 267 Optimized Access to Module Namespaces Hylton
- SD 269 Pgen Module for Python Riehl
- SD 280 Optimizing access to globals GvR
- SD 286 Enhanced Argument Tuples von Löwis
- SD 312 Simple Implicit Lambda Suzi, Martelli
- SD 316 Programming by Contract for Python Way
- SD 323 Copyable Iterators Martelli
- SD 337 Logging Usage in the Standard Library Dubner
- SD 349 Allow str() to return unicode strings Schemenauer
- SD 368 Standard image protocol and class Mastrodomenico
- ID 396 Module Version Numbers Warsaw
- SD 400 Deprecate codecs.StreamReader and codecs.StreamWriter Stinner
- SD 403 General purpose decorator clause (aka "@in" clause) Coghlan
- PD 407 New release cycle and introducing long-term support ... Pitrou, Brandl, Warsaw
- SD 419 Protecting cleanup statements from interruptions Colomiets
- SD 422 Simpler customisation of class creation Coghlan, Urban
- ID 423 Naming conventions and recipes related to packaging Bryon
- ID 444 Python Web3 Interface McDonough, Ronacher
- PD 462 Core development workflow automation for CPython Coghlan
- PD 474 Creating forge.python.org Coghlan
- SD 628 Add ``math.tau`` Coghlan
- SD 3124 Overloading, Generic Functions, Interfaces, and ... Eby
- SD 3143 Standard daemon process library Finney
- SD 3150 Statement local namespaces (aka "given" clause) Coghlan
- SD 3152 Cofunctions Ewing
-
- Abandoned, Withdrawn, and Rejected PEPs
-
- PW 3 Guidelines for Handling Bug Reports Hylton
- IS 102 Doing Python Micro Releases Baxter, Warsaw, GvR
- SR 204 Range Literals Wouters
- IW 206 Python Advanced Library Kuchling
- SW 209 Multi-dimensional Arrays Barrett, Oliphant
- SR 210 Decoupling the Interpreter Loop Ascher
- SS 215 String Interpolation Yee
- IR 216 Docstring Format Zadka
- IR 220 Coroutines, Generators, Continuations McMillan
- SR 224 Attribute Docstrings Lemburg
- SW 228 Reworking Python's Numeric Model Zadka, GvR
- SR 231 __findattr__() Warsaw
- SR 239 Adding a Rational Type to Python Craig, Zadka
- SR 240 Adding a Rational Literal to Python Craig, Zadka
- SR 242 Numeric Kinds Dubois
- SW 243 Module Repository Upload Mechanism Reifschneider
- SR 244 The `directive' statement von Löwis
- SR 245 Python Interface Syntax Pelletier
- SR 246 Object Adaptation Martelli, Evans
- SR 254 Making Classes Look More Like Types GvR
- SR 256 Docstring Processing System Framework Goodger
- SR 258 Docutils Design Specification Goodger
- SR 259 Omit printing newline after newline GvR
- SR 265 Sorting Dictionaries by Value Griffin
- SW 266 Optimizing Global Variable/Attribute Access Montanaro
- SR 268 Extended HTTP functionality and WebDAV Stein
- SR 270 uniq method for list objects Petrone
- SR 271 Prefixing sys.path by command line option Giacometti
- SR 275 Switching on Multiple Values Lemburg
- SR 276 Simple Iterator for ints Althoff
- SR 281 Loop Counter Iteration with range and xrange Hetland
- SR 284 Integer for-loops Eppstein, Ewing
- SW 288 Generators Attributes and Exceptions Hettinger
- SR 294 Type Names in the types Module Tirosh
- SR 295 Interpretation of multiline string constants Koltsov
- SW 296 Adding a bytes Object Type Gilbert
- SR 297 Support for System Upgrades Lemburg
- SW 298 The Locked Buffer Interface Heller
- SR 299 Special __main__() function in modules Epler
- SR 303 Extend divmod() for Multiple Divisors Bellman
- SW 304 Controlling Generation of Bytecode Files Montanaro
- IW 306 How to Change Python's Grammar Hudson, Diederich, Coghlan, Peterson
- SR 310 Reliable Acquisition/Release Pairs Hudson, Moore
- SR 313 Adding Roman Numeral Literals to Python Meyer
- SR 315 Enhanced While Loop Hettinger, Carroll
- SR 317 Eliminate Implicit Exception Instantiation Taschuk
- SR 319 Python Synchronize/Asynchronize Block Pelletier
- SW 321 Date/Time Parsing and Formatting Kuchling
- SR 325 Resource-Release Support for Generators Pedroni
- SR 326 A Case for Top and Bottom Values Carlson, Reedy
- SR 329 Treating Builtins as Constants in the Standard Library Hettinger
- SR 330 Python Bytecode Verification Pelletier
- SR 332 Byte vectors and String/Unicode Unification Montanaro
- SW 334 Simple Coroutines via SuspendIteration Evans
- SR 335 Overloadable Boolean Operators Ewing
- SR 336 Make None Callable McClelland
- IW 339 Design of the CPython Compiler Cannon
- SR 340 Anonymous Block Statements GvR
- SS 344 Exception Chaining and Embedded Tracebacks Yee
- SW 346 User Defined ("``with``") Statements Coghlan
- SR 348 Exception Reorganization for Python 3.0 Cannon
- IR 350 Codetags Elliott
- SR 351 The freeze protocol Warsaw
- SS 354 Enumerations in Python Finney
- SR 355 Path - Object oriented filesystem paths Lindqvist
- SW 359 The "make" Statement Bethard
- SR 363 Syntax For Dynamic Attribute Access North
- SW 364 Transitioning to the Py3K Standard Library Warsaw
- SR 365 Adding the pkg_resources module Eby
- SS 367 New Super Spealman, Delaney
- SW 369 Post import hooks Heimes
- SR 377 Allow __enter__() methods to skip the statement body Coghlan
- SW 379 Adding an Assignment Expression Whitley
- SR 382 Namespace Packages v. Löwis
- SS 386 Changing the version comparison module in Distutils Ziadé
- SR 390 Static metadata for Distutils Ziadé
- SW 395 Qualified Names for Modules Coghlan
- PR 401 BDFL Retirement Warsaw, Cannon
- SR 402 Simplified Package Layout and Partitioning Eby
- SW 406 Improved Encapsulation of Import State Coghlan, Slodkowicz
- SR 408 Standard library __preview__ package Coghlan, Bendersky
- SR 410 Use decimal.Decimal type for timestamps Stinner
- PW 413 Faster evolution of the Python Standard Library Coghlan
- SR 416 Add a frozendict builtin type Stinner
- SS 433 Easier suppression of file descriptor inheritance Stinner
- SR 437 A DSL for specifying signatures, annotations and ... Krah
- SR 439 Inclusion of implicit pip bootstrap in Python ... Jones
- SW 460 Add binary interpolation and formatting Pitrou
- SW 469 Migration of dict iteration code to Python 3 Coghlan
- SR 666 Reject Foolish Indentation Creighton
- SR 754 IEEE 754 Floating Point Special Values Warnes
- PW 3001 Procedure for reviewing and improving standard ... Brandl
- SR 3103 A Switch/Case Statement GvR
- SR 3117 Postfix type declarations Brandl
- SR 3122 Delineation of the main module Cannon
- SR 3125 Remove Backslash Continuation Jewett
- SR 3126 Remove Implicit String Concatenation Jewett, Hettinger
- SR 3128 BList: A Faster List-like Type Stutzbach
- SR 3130 Access to Current Module/Class/Function Jewett
- SR 3133 Introducing Roles Winter
- SR 3136 Labeled break and continue Chisholm
- SR 3139 Cleaning out sys and the "interpreter" module Peterson
- SR 3140 str(container) should call str(item), not repr(item) Broytmann, Jewett
- SR 3142 Add a "while" clause to generator expressions Britton
- SW 3145 Asynchronous I/O For subprocess.Popen Pruitt, McCreary, Carlson
- SW 3146 Merging Unladen Swallow into CPython Winter, Yasskin, Kleckner
- SS 3153 Asynchronous IO support Houtven
-
-
-
-
Numerical Index
-
- num title owner
- --- ----- -----
- P 1 PEP Purpose and Guidelines Warsaw, Hylton, Goodger, Coghlan
- PF 2 Procedure for Adding New Modules Faassen
- PW 3 Guidelines for Handling Bug Reports Hylton
- P 4 Deprecation of Standard Modules von Löwis
- P 5 Guidelines for Language Evolution Prescod
- P 6 Bug Fix Releases Aahz, Baxter
- P 7 Style Guide for C Code GvR
- P 8 Style Guide for Python Code GvR, Warsaw, Coghlan
- P 9 Sample Plaintext PEP Template Warsaw
- P 10 Voting Guidelines Warsaw
- P 11 Removing support for little used platforms von Löwis
- P 12 Sample reStructuredText PEP Template Goodger, Warsaw
-
- I 20 The Zen of Python Peters
-
- PF 42 Feature Requests Hylton
-
- SF 100 Python Unicode Integration Lemburg
- I 101 Doing Python Releases 101 Warsaw, GvR
- IS 102 Doing Python Micro Releases Baxter, Warsaw, GvR
-
- IF 160 Python 1.6 Release Schedule Drake
-
- IF 200 Python 2.0 Release Schedule Hylton
- SF 201 Lockstep Iteration Warsaw
- SF 202 List Comprehensions Warsaw
- SF 203 Augmented Assignments Wouters
- SR 204 Range Literals Wouters
- SF 205 Weak References Drake
- IW 206 Python Advanced Library Kuchling
- SF 207 Rich Comparisons GvR, Ascher
- SF 208 Reworking the Coercion Model Schemenauer, Lemburg
- SW 209 Multi-dimensional Arrays Barrett, Oliphant
- SR 210 Decoupling the Interpreter Loop Ascher
- SD 211 Adding A New Outer Product Operator Wilson
- SD 212 Loop Counter Iteration Schneider-Kamp
- SD 213 Attribute Access Handlers Prescod
- SF 214 Extended Print Statement Warsaw
- SS 215 String Interpolation Yee
- IR 216 Docstring Format Zadka
- SF 217 Display Hook for Interactive Use Zadka
- SF 218 Adding a Built-In Set Object Type Wilson, Hettinger
- SD 219 Stackless Python McMillan
- IR 220 Coroutines, Generators, Continuations McMillan
- SF 221 Import As Wouters
- SD 222 Web Library Enhancements Kuchling
- SF 223 Change the Meaning of \x Escapes Peters
- SR 224 Attribute Docstrings Lemburg
- SD 225 Elementwise/Objectwise Operators Zhu, Lielens
- IF 226 Python 2.1 Release Schedule Hylton
- SF 227 Statically Nested Scopes Hylton
- SW 228 Reworking Python's Numeric Model Zadka, GvR
- SF 229 Using Distutils to Build Python Kuchling
- SF 230 Warning Framework GvR
- SR 231 __findattr__() Warsaw
- SF 232 Function Attributes Warsaw
- SD 233 Python Online Help Prescod
- SF 234 Iterators Yee, GvR
- SF 235 Import on Case-Insensitive Platforms Peters
- SF 236 Back to the __future__ Peters
- SF 237 Unifying Long Integers and Integers Zadka, GvR
- SF 238 Changing the Division Operator Zadka, GvR
- SR 239 Adding a Rational Type to Python Craig, Zadka
- SR 240 Adding a Rational Literal to Python Craig, Zadka
- SF 241 Metadata for Python Software Packages Kuchling
- SR 242 Numeric Kinds Dubois
- SW 243 Module Repository Upload Mechanism Reifschneider
- SR 244 The `directive' statement von Löwis
- SR 245 Python Interface Syntax Pelletier
- SR 246 Object Adaptation Martelli, Evans
- IF 247 API for Cryptographic Hash Functions Kuchling
- IF 248 Python Database API Specification v1.0 Lemburg
- IF 249 Python Database API Specification v2.0 Lemburg
- SF 250 Using site-packages on Windows Moore
- IF 251 Python 2.2 Release Schedule Warsaw, GvR
- SF 252 Making Types Look More Like Classes GvR
- SF 253 Subtyping Built-in Types GvR
- SR 254 Making Classes Look More Like Types GvR
- SF 255 Simple Generators Schemenauer, Peters, Hetland
- SR 256 Docstring Processing System Framework Goodger
- I 257 Docstring Conventions Goodger, GvR
- SR 258 Docutils Design Specification Goodger
- SR 259 Omit printing newline after newline GvR
- SF 260 Simplify xrange() GvR
- SF 261 Support for "wide" Unicode characters Prescod
- SD 262 A Database of Installed Python Packages Kuchling
- SF 263 Defining Python Source Code Encodings Lemburg, von Löwis
- SF 264 Future statements in simulated shells Hudson
- SR 265 Sorting Dictionaries by Value Griffin
- SW 266 Optimizing Global Variable/Attribute Access Montanaro
- SD 267 Optimized Access to Module Namespaces Hylton
- SR 268 Extended HTTP functionality and WebDAV Stein
- SD 269 Pgen Module for Python Riehl
- SR 270 uniq method for list objects Petrone
- SR 271 Prefixing sys.path by command line option Giacometti
- IF 272 API for Block Encryption Algorithms v1.0 Kuchling
- SF 273 Import Modules from Zip Archives Ahlstrom
- SF 274 Dict Comprehensions Warsaw
- SR 275 Switching on Multiple Values Lemburg
- SR 276 Simple Iterator for ints Althoff
- SF 277 Unicode file name support for Windows NT Hodgson
- SF 278 Universal Newline Support Jansen
- SF 279 The enumerate() built-in function Hettinger
- SD 280 Optimizing access to globals GvR
- SR 281 Loop Counter Iteration with range and xrange Hetland
- SF 282 A Logging System Sajip, Mick
- IF 283 Python 2.3 Release Schedule GvR
- SR 284 Integer for-loops Eppstein, Ewing
- SF 285 Adding a bool type GvR
- SD 286 Enhanced Argument Tuples von Löwis
- I 287 reStructuredText Docstring Format Goodger
- SW 288 Generators Attributes and Exceptions Hettinger
- SF 289 Generator Expressions Hettinger
- I 290 Code Migration and Modernization Hettinger
- IF 291 Backward Compatibility for the Python 2 Standard ... Norwitz
- SF 292 Simpler String Substitutions Warsaw
- SF 293 Codec Error Handling Callbacks Dörwald
- SR 294 Type Names in the types Module Tirosh
- SR 295 Interpretation of multiline string constants Koltsov
- SW 296 Adding a bytes Object Type Gilbert
- SR 297 Support for System Upgrades Lemburg
- SW 298 The Locked Buffer Interface Heller
- SR 299 Special __main__() function in modules Epler
-
- SF 301 Package Index and Metadata for Distutils Jones
- SF 302 New Import Hooks JvR, Moore
- SR 303 Extend divmod() for Multiple Divisors Bellman
- SW 304 Controlling Generation of Bytecode Files Montanaro
- SF 305 CSV File API Altis, Cole, McNamara, Montanaro, Wells
- IW 306 How to Change Python's Grammar Hudson, Diederich, Coghlan, Peterson
- SF 307 Extensions to the pickle protocol GvR, Peters
- SF 308 Conditional Expressions GvR, Hettinger
- SF 309 Partial Function Application Harris
- SR 310 Reliable Acquisition/Release Pairs Hudson, Moore
- SF 311 Simplified Global Interpreter Lock Acquisition for ... Hammond
- SD 312 Simple Implicit Lambda Suzi, Martelli
- SR 313 Adding Roman Numeral Literals to Python Meyer
- SF 314 Metadata for Python Software Packages v1.1 Kuchling, Jones
- SR 315 Enhanced While Loop Hettinger, Carroll
- SD 316 Programming by Contract for Python Way
- SR 317 Eliminate Implicit Exception Instantiation Taschuk
- SF 318 Decorators for Functions and Methods Smith
- SR 319 Python Synchronize/Asynchronize Block Pelletier
- IF 320 Python 2.4 Release Schedule Warsaw, Hettinger, Baxter
- SW 321 Date/Time Parsing and Formatting Kuchling
- SF 322 Reverse Iteration Hettinger
- SD 323 Copyable Iterators Martelli
- SF 324 subprocess - New process module Astrand
- SR 325 Resource-Release Support for Generators Pedroni
- SR 326 A Case for Top and Bottom Values Carlson, Reedy
- SF 327 Decimal Data Type Batista
- SF 328 Imports: Multi-Line and Absolute/Relative Aahz
- SR 329 Treating Builtins as Constants in the Standard Library Hettinger
- SR 330 Python Bytecode Verification Pelletier
- SF 331 Locale-Independent Float/String Conversions Reis
- SR 332 Byte vectors and String/Unicode Unification Montanaro
- IF 333 Python Web Server Gateway Interface v1.0 Eby
- SW 334 Simple Coroutines via SuspendIteration Evans
- SR 335 Overloadable Boolean Operators Ewing
- SR 336 Make None Callable McClelland
- SD 337 Logging Usage in the Standard Library Dubner
- SF 338 Executing modules as scripts Coghlan
- IW 339 Design of the CPython Compiler Cannon
- SR 340 Anonymous Block Statements GvR
- SF 341 Unifying try-except and try-finally Brandl
- SF 342 Coroutines via Enhanced Generators GvR, Eby
- SF 343 The "with" Statement GvR, Coghlan
- SS 344 Exception Chaining and Embedded Tracebacks Yee
- SA 345 Metadata for Python Software Packages 1.2 Jones
- SW 346 User Defined ("``with``") Statements Coghlan
- PF 347 Migrating the Python CVS to Subversion von Löwis
- SR 348 Exception Reorganization for Python 3.0 Cannon
- SD 349 Allow str() to return unicode strings Schemenauer
- IR 350 Codetags Elliott
- SR 351 The freeze protocol Warsaw
- SF 352 Required Superclass for Exceptions Cannon, GvR
- SF 353 Using ssize_t as the index type von Löwis
- SS 354 Enumerations in Python Finney
- SR 355 Path - Object oriented filesystem paths Lindqvist
- IF 356 Python 2.5 Release Schedule Norwitz, GvR, Baxter
- SF 357 Allowing Any Object to be Used for Slicing Oliphant
- SF 358 The "bytes" Object Schemenauer, GvR
- SW 359 The "make" Statement Bethard
- PF 360 Externally Maintained Packages Cannon
- IF 361 Python 2.6 and 3.0 Release Schedule Norwitz, Warsaw
- SF 362 Function Signature Object Cannon, Seo, Selivanov, Hastings
- SR 363 Syntax For Dynamic Attribute Access North
- SW 364 Transitioning to the Py3K Standard Library Warsaw
- SR 365 Adding the pkg_resources module Eby
- SF 366 Main module explicit relative imports Coghlan
- SS 367 New Super Spealman, Delaney
- SD 368 Standard image protocol and class Mastrodomenico
- SW 369 Post import hooks Heimes
- SF 370 Per user site-packages directory Heimes
- SF 371 Addition of the multiprocessing package to the ... Noller, Oudkerk
- SF 372 Adding an ordered dictionary to collections Ronacher, Hettinger
- I 373 Python 2.7 Release Schedule Peterson
- PF 374 Choosing a distributed VCS for the Python project Cannon, Turnbull, Vassalotti, Warsaw, Ochtman
- IF 375 Python 3.1 Release Schedule Peterson
- SA 376 Database of Installed Python Distributions Ziadé
- SR 377 Allow __enter__() methods to skip the statement body Coghlan
- SF 378 Format Specifier for Thousands Separator Hettinger
- SW 379 Adding an Assignment Expression Whitley
- SF 380 Syntax for Delegating to a Subgenerator Ewing
- S 381 Mirroring infrastructure for PyPI Ziadé, v. Löwis
- SR 382 Namespace Packages v. Löwis
- SF 383 Non-decodable Bytes in System Character Interfaces v. Löwis
- SF 384 Defining a Stable ABI v. Löwis
- PF 385 Migrating from Subversion to Mercurial Ochtman, Pitrou, Brandl
- SS 386 Changing the version comparison module in Distutils Ziadé
- P 387 Backwards Compatibility Policy Peterson
-
- SF 389 argparse - New Command Line Parsing Module Bethard
- SR 390 Static metadata for Distutils Ziadé
- SF 391 Dictionary-Based Configuration For Logging Sajip
- I 392 Python 3.2 Release Schedule Brandl
- SF 393 Flexible String Representation v. Löwis
- I 394 The "python" Command on Unix-Like Systems Staley, Coghlan
- SW 395 Qualified Names for Modules Coghlan
- ID 396 Module Version Numbers Warsaw
- SF 397 Python launcher for Windows Hammond, v. Löwis
- I 398 Python 3.3 Release Schedule Brandl
- IF 399 Pure Python/C Accelerator Module Compatibility ... Cannon
- SD 400 Deprecate codecs.StreamReader and codecs.StreamWriter Stinner
- PR 401 BDFL Retirement Warsaw, Cannon
- SR 402 Simplified Package Layout and Partitioning Eby
- SD 403 General purpose decorator clause (aka "@in" clause) Coghlan
- IF 404 Python 2.8 Un-release Schedule Warsaw
- SF 405 Python Virtual Environments Meyer
- SW 406 Improved Encapsulation of Import State Coghlan, Slodkowicz
- PD 407 New release cycle and introducing long-term support ... Pitrou, Brandl, Warsaw
- SR 408 Standard library __preview__ package Coghlan, Bendersky
- SF 409 Suppressing exception context Furman
- SR 410 Use decimal.Decimal type for timestamps Stinner
- IA 411 Provisional packages in the Python standard library Coghlan, Bendersky
- SF 412 Key-Sharing Dictionary Shannon
- PW 413 Faster evolution of the Python Standard Library Coghlan
- SF 414 Explicit Unicode Literal for Python 3.3 Ronacher, Coghlan
- SF 415 Implement context suppression with exception attributes Peterson
- SR 416 Add a frozendict builtin type Stinner
- SF 417 Including mock in the Standard Library Foord
- SF 418 Add monotonic time, performance counter, and ... Simpson, Jewett, Turnbull, Stinner
- SD 419 Protecting cleanup statements from interruptions Colomiets
- SF 420 Implicit Namespace Packages Smith
- SF 421 Adding sys.implementation Snow
- SD 422 Simpler customisation of class creation Coghlan, Urban
- ID 423 Naming conventions and recipes related to packaging Bryon
- SF 424 A method for exposing a length hint Gaynor
- SA 425 Compatibility Tags for Built Distributions Holth
- S 426 Metadata for Python Software Packages 2.0 Coghlan, Holth, Stufft
- SA 427 The Wheel Binary Package Format 1.0 Holth
- SF 428 The pathlib module -- object-oriented filesystem paths Pitrou
- I 429 Python 3.4 Release Schedule Hastings
- IF 430 Migrating to Python 3 as the default online ... Coghlan
- S 431 Time zone support improvements Regebro
- S 432 Simplifying the CPython startup sequence Coghlan
- SS 433 Easier suppression of file descriptor inheritance Stinner
- I 434 IDLE Enhancement Exception for All Branches Rovito, Reedy
- SF 435 Adding an Enum type to the Python standard library Warsaw, Bendersky, Furman
- S 436 The Argument Clinic DSL Hastings
- SR 437 A DSL for specifying signatures, annotations and ... Krah
- PA 438 Transitioning to release-file hosting on PyPI Krekel, Meyer
- SR 439 Inclusion of implicit pip bootstrap in Python ... Jones
- IA 440 Version Identification and Dependency Specification Coghlan, Stufft
- S 441 Improving Python ZIP Application Support Holth
- SF 442 Safe object finalization Pitrou
- SF 443 Single-dispatch generic functions Langa
- ID 444 Python Web3 Interface McDonough, Ronacher
- SF 445 Add new APIs to customize Python memory allocators Stinner
- SF 446 Make newly created file descriptors non-inheritable Stinner
- S 447 Add __getdescriptor__ method to metaclass Oussoren
- S 448 Additional Unpacking Generalizations Landau
- PA 449 Removal of the PyPI Mirror Auto Discovery and ... Stufft
- SF 450 Adding A Statistics Module To The Standard Library D'Aprano
- SF 451 A ModuleSpec Type for the Import System Snow
- I 452 API for Cryptographic Hash Functions v2.0 Kuchling, Heimes
- SF 453 Explicit bootstrapping of pip in Python installations Stufft, Coghlan
- SF 454 Add a new tracemalloc module to trace Python memory ... Stinner
- S 455 Adding a key-transforming dictionary to collections Pitrou
- SF 456 Secure and interchangeable hash algorithm Heimes
- I 457 Syntax For Positional-Only Parameters Hastings
- S 458 Surviving a Compromise of PyPI Kuppusamy, Stufft, Cappos
- S 459 Standard Metadata Extensions for Python Software ... Coghlan
- SW 460 Add binary interpolation and formatting Pitrou
- SA 461 Adding % formatting to bytes and bytearray Furman
- PD 462 Core development workflow automation for CPython Coghlan
- S 463 Exception-catching expressions Angelico
- PA 464 Removal of the PyPI Mirror Authenticity API Stufft
- SF 465 A dedicated infix operator for matrix multiplication Smith
- SF 466 Network Security Enhancements for Python 2.7.x Coghlan
- S 467 Minor API improvements for binary sequences Coghlan
- S 468 Preserving the order of \*\*kwargs in a function. Snow
- SW 469 Migration of dict iteration code to Python 3 Coghlan
- P 470 Using Multi Index Support for External to PyPI ... Stufft
- SA 471 os.scandir() function -- a better and faster ... Hoyt
- S 472 Support for indexing with keyword arguments Borini, Martinot-Lagarde
- S 473 Adding structured data to built-in exceptions Kreft
- PD 474 Creating forge.python.org Coghlan
- S 475 Retry system calls failing with EINTR Natali, Stinner
- S 476 Enabling certificate verification by default for ... Gaynor
- SA 477 Backport ensurepip (PEP 453) to Python 2.7 Stufft, Coghlan
- I 478 Python 3.5 Release Schedule Hastings
-
- SD 628 Add ``math.tau`` Coghlan
-
- SR 666 Reject Foolish Indentation Creighton
-
- SR 754 IEEE 754 Floating Point Special Values Warnes
-
- PF 3000 Python 3000 GvR
- PW 3001 Procedure for reviewing and improving standard ... Brandl
- PF 3002 Procedure for Backwards-Incompatible Changes Bethard
- PF 3003 Python Language Moratorium Cannon, Noller, GvR
-
- PF 3099 Things that will Not Change in Python 3000 Brandl
- PF 3100 Miscellaneous Python 3.0 Plans Cannon
- SF 3101 Advanced String Formatting Talin
- SF 3102 Keyword-Only Arguments Talin
- SR 3103 A Switch/Case Statement GvR
- SF 3104 Access to Names in Outer Scopes Yee
- SF 3105 Make print a function Brandl
- SF 3106 Revamping dict.keys(), .values() and .items() GvR
- SF 3107 Function Annotations Winter, Lownds
- SF 3108 Standard Library Reorganization Cannon
- SF 3109 Raising Exceptions in Python 3000 Winter
- SF 3110 Catching Exceptions in Python 3000 Winter
- SF 3111 Simple input built-in in Python 3000 Roberge
- SF 3112 Bytes literals in Python 3000 Orendorff
- SF 3113 Removal of Tuple Parameter Unpacking Cannon
- SF 3114 Renaming iterator.next() to iterator.__next__() Yee
- SF 3115 Metaclasses in Python 3000 Talin
- SF 3116 New I/O Stutzbach, GvR, Verdone
- SR 3117 Postfix type declarations Brandl
- SF 3118 Revising the buffer protocol Oliphant, Banks
- SF 3119 Introducing Abstract Base Classes GvR, Talin
- SF 3120 Using UTF-8 as the default source encoding von Löwis
- SA 3121 Extension Module Initialization and Finalization von Löwis
- SR 3122 Delineation of the main module Cannon
- SF 3123 Making PyObject_HEAD conform to standard C von Löwis
- SD 3124 Overloading, Generic Functions, Interfaces, and ... Eby
- SR 3125 Remove Backslash Continuation Jewett
- SR 3126 Remove Implicit String Concatenation Jewett, Hettinger
- SF 3127 Integer Literal Support and Syntax Maupin
- SR 3128 BList: A Faster List-like Type Stutzbach
- SF 3129 Class Decorators Winter
- SR 3130 Access to Current Module/Class/Function Jewett
- SF 3131 Supporting Non-ASCII Identifiers von Löwis
- SF 3132 Extended Iterable Unpacking Brandl
- SR 3133 Introducing Roles Winter
- SF 3134 Exception Chaining and Embedded Tracebacks Yee
- SF 3135 New Super Spealman, Delaney, Ryan
- SR 3136 Labeled break and continue Chisholm
- SF 3137 Immutable Bytes and Mutable Buffer GvR
- SF 3138 String representation in Python 3000 Ishimoto
- SR 3139 Cleaning out sys and the "interpreter" module Peterson
- SR 3140 str(container) should call str(item), not repr(item) Broytmann, Jewett
- SF 3141 A Type Hierarchy for Numbers Yasskin
- SR 3142 Add a "while" clause to generator expressions Britton
- SD 3143 Standard daemon process library Finney
- SF 3144 IP Address Manipulation Library for the Python ... Moody
- SW 3145 Asynchronous I/O For subprocess.Popen Pruitt, McCreary, Carlson
- SW 3146 Merging Unladen Swallow into CPython Winter, Yasskin, Kleckner
- SF 3147 PYC Repository Directories Warsaw
- SF 3148 futures - execute computations asynchronously Quinlan
- SF 3149 ABI version tagged .so files Warsaw
- SD 3150 Statement local namespaces (aka "given" clause) Coghlan
- SF 3151 Reworking the OS and IO exception hierarchy Pitrou
- SD 3152 Cofunctions Ewing
- SS 3153 Asynchronous IO support Houtven
- SF 3154 Pickle protocol version 4 Pitrou
- SF 3155 Qualified name for classes and functions Pitrou
- SF 3156 Asynchronous IO Support Rebooted: the "asyncio" Module GvR
-
- IF 3333 Python Web Server Gateway Interface v1.0.1 Eby
-
-
-
-
Reserved PEP Numbers
-
- num title owner
- --- ----- -----
- 801 RESERVED Warsaw
-
-
-
-
Key
-
- S - Standards Track PEP
- I - Informational PEP
- P - Process PEP
-
- A - Accepted proposal
- R - Rejected proposal
- W - Withdrawn proposal
- D - Deferred proposal
- F - Final proposal
- A - Active proposal
- D - Draft proposal
- S - Superseded proposal
-
-
-
-
Owners
-
- name email address
- ---- -------------
- Aahz aahz at pythoncraft.com
- Ahlstrom, James C. jim at interet.com
- Althoff, Jim james_althoff at i2.com
- Altis, Kevin altis at semi-retired.com
- Angelico, Chris rosuav at gmail.com
- Ascher, David davida at activestate.com
- Astrand, Peter astrand at lysator.liu.se
- Banks, Carl pythondev at aerojockey.com
- Barrett, Paul barrett at stsci.edu
- Batista, Facundo facundo at taniquetil.com.ar
- Baxter, Anthony anthony at interlink.com.au
- Bellman, Thomas bellman+pep-divmod@lysator.liu.se
- Bendersky, Eli eliben at gmail.com
- Bethard, Steven steven.bethard at gmail.com
- Borini, Stefano
- Brandl, Georg georg at python.org
- Britton, Gerald gerald.britton at gmail.com
- Broytmann, Oleg phd at phd.pp.ru
- Bryon, Benoit benoit at marmelune.net
- Cannon, Brett brett at python.org
- Cappos, Justin jcappos at poly.edu
- Carlson, Josiah jcarlson at uci.edu
- Carroll, W Isaac icarroll at pobox.com
- Chisholm, Matt matt-python at theory.org
- Coghlan, Nick ncoghlan at gmail.com
- Cole, Dave djc at object-craft.com.au
- Colomiets, Paul paul at colomiets.name
- Craig, Christopher A. python-pep at ccraig.org
- Creighton, Laura lac at strakt.com
- D'Aprano, Steven steve at pearwood.info
- Delaney, Tim timothy.c.delaney at gmail.com
- Diederich, Jack jackdied at gmail.com
- Dörwald, Walter walter at livinglogic.de
- Drake, Fred L., Jr. fdrake at acm.org
- Dubner, Michael P. dubnerm at mindless.com
- Dubois, Paul F. paul at pfdubois.com
- Eby, P.J. pje at telecommunity.com
- Eby, Phillip J. pje at telecommunity.com
- Elliott, Micah mde at tracos.org
- Epler, Jeff jepler at unpythonic.net
- Eppstein, David eppstein at ics.uci.edu
- Evans, Clark C. cce at clarkevans.com
- Ewing, Gregory greg.ewing at canterbury.ac.nz
- Ewing, Greg greg.ewing at canterbury.ac.nz
- Faassen, Martijn faassen at infrae.com
- Finney, Ben ben+python@benfinney.id.au
- Foord, Michael michael at python.org
- Furman, Ethan ethan at stoneleaf.us
- Gaynor, Alex alex.gaynor at gmail.com
- Giacometti, Frédéric B. fred at arakne.com
- Gilbert, Scott xscottg at yahoo.com
- Goodger, David goodger at python.org
- Griffin, Grant g2 at iowegian.com
- Hammond, Mark mhammond at skippinet.com.au
- Harris, Peter scav at blueyonder.co.uk
- Hastings, Larry larry at hastings.org
- Heimes, Christian christian at python.org
- Heller, Thomas theller at python.net
- Hetland, Magnus Lie magnus at hetland.org
- Hettinger, Raymond python at rcn.com
- Hodgson, Neil neilh at scintilla.org
- Holth, Daniel dholth at gmail.com
- Houtven, Laurens Van _ at lvh.cc
- Hoyt, Ben benhoyt at gmail.com
- Hudson, Michael mwh at python.net
- Hylton, Jeremy jeremy at alum.mit.edu
- Ishimoto, Atsuo ishimoto--at--gembook.org
- Jansen, Jack jack at cwi.nl
- Jewett, Jim J. jimjjewett at gmail.com
- Jewett, Jim jimjjewett at gmail.com
- Jones, Richard richard at python.org
- Kleckner, Reid rnk at mit.edu
- Koltsov, Stepan yozh at mx1.ru
- Krah, Stefan skrah at bytereef.org
- Kreft, Sebastian skreft at deezer.com
- Krekel, Holger holger at merlinux.eu
- Kuchling, A.M. amk at amk.ca
- Kuppusamy, Trishank Karthik tk47 at students.poly.edu
- Landau, Joshua joshua at landau.ws
- Langa, Łukasz lukasz at langa.pl
- Lemburg, Marc-André mal at lemburg.com
- Lielens, Gregory gregory.lielens at fft.be
- Lindqvist, Björn bjourne at gmail.com
- von Löwis, Martin martin at v.loewis.de
- v. Löwis, Martin martin at v.loewis.de
- Lownds, Tony tony at lownds.com
- Martelli, Alex aleaxit at gmail.com
- Martinot-Lagarde, Joseph
- Mastrodomenico, Lino l.mastrodomenico at gmail.com
- Maupin, Patrick pmaupin at gmail.com
- McClelland, Andrew eternalsquire at comcast.net
- McCreary, Charles R.
- McDonough, Chris chrism at plope.com
- McMillan, Gordon gmcm at hypernet.com
- McNamara, Andrew andrewm at object-craft.com.au
- Meyer, Mike mwm at mired.org
- Meyer, Carl carl at oddbird.net
- Mick, Trent trentm at activestate.com
- Montanaro, Skip skip at pobox.com
- Moody, Peter pmoody at google.com
- Moore, Paul gustav at morpheus.demon.co.uk
- Natali, Charles-François cf.natali at gmail.com
- Noller, Jesse jnoller at gmail.com
- North, Ben ben at redfrontdoor.org
- Norwitz, Neal nnorwitz at gmail.com
- Ochtman, Dirkjan dirkjan at ochtman.nl
- Oliphant, Travis oliphant at ee.byu.edu
- Orendorff, Jason jason.orendorff at gmail.com
- Oudkerk, Richard r.m.oudkerk at googlemail.com
- Oussoren, Ronald ronaldoussoren at mac.com
- Pedroni, Samuele pedronis at python.org
- Pelletier, Michel michel at users.sourceforge.net
- Peters, Tim tim at zope.com
- Peterson, Benjamin benjamin at python.org
- Petrone, Jason jp at demonseed.net
- Pitrou, Antoine solipsis at pitrou.net
- Prescod, Paul paul at prescod.net
- Pruitt, (James) Eric
- Quinlan, Brian brian at sweetapp.com
- Reedy, Terry tjreedy at udel.edu
- Regebro, Lennart regebro at gmail.com
- Reifschneider, Sean jafo-pep at tummy.com
- Reis, Christian R. kiko at async.com.br
- Riehl, Jonathan jriehl at spaceship.com
- Roberge, Andre andre.roberge at gmail.com
- Ronacher, Armin armin.ronacher at active-4.com
- van Rossum, Guido (GvR) guido at python.org
- van Rossum, Just (JvR) just at letterror.com
- Rovito, Todd rovitotv at gmail.com
- Ryan, Lie lie.1296 at gmail.com
- Sajip, Vinay vinay_sajip at red-dove.com
- Schemenauer, Neil nas at arctrix.com
- Schneider-Kamp, Peter nowonder at nowonder.de
- Selivanov, Yury yselivanov at sprymix.com
- Seo, Jiwon seojiwon at gmail.com
- Shannon, Mark mark at hotpy.org
- Simpson, Cameron cs at zip.com.au
- Slodkowicz, Greg jergosh at gmail.com
- Smith, Nathaniel J. njs at pobox.com
- Smith, Kevin D. kevin.smith at themorgue.org
- Smith, Eric V. eric at trueblade.com
- Snow, Eric ericsnowcurrently at gmail.com
- Spealman, Calvin ironfroggy at gmail.com
- Staley, Kerrick mail at kerrickstaley.com
- Stein, Greg gstein at lyra.org
- Stinner, Victor victor.stinner at gmail.com
- Stufft, Donald donald at stufft.io
- Stutzbach, Daniel daniel at stutzbachenterprises.com
- Suzi, Roman rnd at onego.ru
- Talin talin at acm.org
- Taschuk, Steven staschuk at telusplanet.net
- Tirosh, Oren oren at hishome.net
- Turnbull, Stephen J. stephen at xemacs.org
- Urban, Daniel urban.dani+py@gmail.com
- Vassalotti, Alexandre alexandre at peadrop.com
- Verdone, Mike mike.verdone at gmail.com
- Warnes, Gregory R. gregory_r_warnes at groton.pfizer.com
- Warsaw, Barry barry at python.org
- Way, Terence terry at wayforward.net
- Wells, Cliff logiplexsoftware at earthlink.net
- Whitley, Jervis jervisau at gmail.com
- Wilson, Greg gvwilson at ddj.com
- Winter, Collin collinwinter at google.com
- Wouters, Thomas thomas at python.org
- Yasskin, Jeffrey jyasskin at google.com
- Yee, Ka-Ping ping at zesty.ca
- Zadka, Moshe moshez at zadka.site.co.il
- Zhu, Huaiyu hzhu at users.sourceforge.net
- Ziadé, Tarek tarek at ziade.org
-
-
-
-
References
-
- [1] PEP 1: PEP Purpose and Guidelines
- [2] View PEP history online
- http://hg.python.org/peps/
-
-
-
-
-
diff --git a/peps/tests/peps/pep-0012.html b/peps/tests/peps/pep-0012.html
deleted file mode 100644
index e341e82f5..000000000
--- a/peps/tests/peps/pep-0012.html
+++ /dev/null
@@ -1,53 +0,0 @@
-
-