Robuta

Sponsor of the Day: Jerkmate
https://peps.python.org/pep-0607/ PEP 607 – Reducing CPython’s Feature Delivery Latency | peps.python.org PEP 602 and PEP 605 describe two alternative approaches to delivering smaller collections of features to Python’s users more frequently (as compared to the... feature deliverypeps python607reducinglatency https://peps.python.org/pep-0810/ PEP 810 – Explicit lazy imports | peps.python.org This PEP introduces syntax for lazy imports as an explicit language feature: lazy importspeps python810explicit https://peps.python.org/pep-0800/ PEP 800 – Disjoint bases in the type system | peps.python.org To analyze Python programs precisely, type checkers need to know when two classes can and cannot have a common child class. However, the information necessary... type systempeps python800disjointbases https://peps.python.org/pep-0709/ PEP 709 – Inlined comprehensions | peps.python.org Comprehensions are currently compiled as nested functions, which provides isolation of the comprehension’s iteration variable, but is inefficient at runtime.... peps python709inlinedcomprehensions https://peps.python.org/pep-0513/ PEP 513 – A Platform Tag for Portable Linux Built Distributions | peps.python.org This PEP proposes the creation of a new platform tag for Python package built distributions, such as wheels, called manylinux1_{x86_64,i686} with external... distributions peps pythonplatform tagportable linux513built https://peps.python.org/pep-0349/ PEP 349 – Allow str() to return unicode strings | peps.python.org This PEP proposes to change the str() built-in function so that it can return unicode strings. This change would make it easier to write code that works with... peps python349allowstrreturn https://peps.python.org/pep-3131/ PEP 3131 – Supporting Non-ASCII Identifiers | peps.python.org This PEP suggests to support non-ASCII letters (such as accented characters, Cyrillic, Greek, Kanji, etc.) in Python identifiers. supporting nonpeps python3131asciiidentifiers https://peps.python.org/pep-0484/ PEP 484 – Type Hints | peps.python.org PEP 3107 introduced syntax for function annotations, but the semantics were deliberately left undefined. There has now been enough 3rd party usage for static... type hints peps484python https://peps.python.org/pep-0723/ PEP 723 – Inline script metadata | peps.python.org This PEP specifies a metadata format that can be embedded in single-file Python scripts to assist launchers, IDEs and other external tools which may need to... script metadatapeps python723inline https://peps.python.org/pep-0612/ PEP 612 – Parameter Specification Variables | peps.python.org There currently are two ways to specify the type of a callable, the Callable[[int, str], bool] syntax defined in PEP 484, and callback protocols from PEP 544.... peps python612parameterspecificationvariables https://peps.python.org/pep-3129/ PEP 3129 – Class Decorators | peps.python.org This PEP proposes class decorators, an extension to the function and method decorators introduced in PEP 318. peps python3129classdecorators https://peps.python.org/pep-0589/ PEP 589 – TypedDict: Type Hints for Dictionaries with a Fixed Set of Keys | peps.python.org PEP 484 defines the type Dict[K, V] for uniform dictionaries, where each value has the same type, and arbitrary key values are supported. It doesn’t properly... type hintspeps python589typeddictdictionaries https://peps.python.org/pep-0807/ PEP 807 – Index support for Trusted Publishing | peps.python.org This PEP proposes a standard mechanism through which arbitrary Python package indices can support “Trusted Publishing,” a misuse-resistant credential exchange... index supporttrusted publishingpeps python807 https://peps.python.org/pep-0482/ PEP 482 – Literature Overview for Type Hints | peps.python.org This PEP is one of three related to type hinting. This PEP gives a literature overview of related work. The main spec is PEP 484. type hints peps482literatureoverviewpython https://peps.python.org/pep-0311/ PEP 311 – Simplified Global Interpreter Lock Acquisition for Extensions | peps.python.org This PEP proposes a simplified API for access to the Global Interpreter Lock (GIL) for Python extension modules. Specifically, it provides a solution for... global interpreter lockpeps python311simplifiedacquisition https://peps.python.org/pep-0649/ PEP 649 – Deferred Evaluation Of Annotations Using Descriptors | peps.python.org Annotations are a Python technology that allows expressing type information and other metadata about Python functions, classes, and modules. But Python’s... peps python649deferredevaluationannotations https://peps.python.org/pep-0403/ PEP 403 – General purpose decorator clause (aka “@in” clause) | peps.python.org This PEP proposes the addition of a new @in decorator clause that makes it possible to override the name binding step of a function or class definition. general purposepeps python403decoratorclause https://peps.python.org/pep-0706/ PEP 706 – Filter for tarfile.extractall | peps.python.org The extraction methods in tarfile gain a filter argument, which allows rejecting files or modifying metadata as the archive is extracted. Three built-in named... peps python706filter https://peps.python.org/pep-0360/ PEP 360 – Externally Maintained Packages | peps.python.org There are many great pieces of Python software developed outside of the Python standard library (a.k.a., the “stdlib”). Sometimes it makes sense to incorporate... packages peps360externallymaintainedpython https://peps.python.org/pep-0647/ PEP 647 – User-Defined Type Guards | peps.python.org This PEP specifies a way for programs to influence conditional type narrowing employed by a type checker based on runtime checks. user definedpeps python647typeguards https://peps.python.org/pep-0257/ PEP 257 – Docstring Conventions | peps.python.org This PEP documents the semantics and conventions associated with Python docstrings. peps python257docstringconventions https://peps.python.org/pep-0660/ PEP 660 – Editable installs for pyproject.toml based builds (wheel based) | peps.python.org This document describes a PEP 517 style method for the installation of packages in editable mode. pyproject tomlpeps python660editableinstalls https://peps.python.org/pep-0780/ PEP 780 – ABI features as environment markers | peps.python.org This PEP defines using ABI features as environment markers for project dependencies, through a new sys_abi_features environment marker. PEP 508 (later moved to... peps python780abifeaturesenvironment https://peps.python.org/pep-0394/ PEP 394 – The “python” Command on Unix-Like Systems | peps.python.org This PEP outlines the behavior of Python scripts when the python command is invoked. Depending on a distribution or system configuration, python may or may not... unix likepeps python394commandsystems https://peps.python.org/pep-0425/ PEP 425 – Compatibility Tags for Built Distributions | peps.python.org This PEP specifies a tagging system to indicate with which versions of Python a built or binary distribution is compatible. A set of three tags indicate which... distributions peps python425compatibilitytagsbuilt https://peps.python.org/pep-3107/ PEP 3107 – Function Annotations | peps.python.org This PEP introduces a syntax for adding arbitrary metadata annotations to Python functions 1. annotations peps python3107function https://peps.python.org/pep-0813/ PEP 813 – The Pretty Print Protocol | peps.python.org This PEP describes the “pretty print protocol”, a collection of changes proposed to make pretty printing more customizable and convenient. pretty printprotocol peps813python https://peps.python.org/pep-3101/ PEP 3101 – Advanced String Formatting | peps.python.org This PEP proposes a new system for built-in string formatting operations, intended as a replacement for the existing ‘%’ string formatting operator. string formattingpeps python3101advanced https://peps.python.org/pep-0325/ PEP 325 – Resource-Release Support for Generators | peps.python.org Generators allow for natural coding and abstraction of traversal over data. Currently if external resources needing proper timely release are involved,... peps python325resourcereleasesupport https://peps.python.org/pep-0492/ PEP 492 – Coroutines with async and await syntax | peps.python.org The growth of Internet and general connectivity has triggered the proportionate need for responsive and scalable code. This proposal aims to answer that need... peps python492coroutinesasyncawait https://peps.python.org/pep-3143/ PEP 3143 – Standard daemon process library | peps.python.org Writing a program to become a well-behaved Unix daemon is somewhat complex and tricky to get right, yet the steps are largely similar for any daemon regardless... library peps python3143standarddaemonprocess https://peps.python.org/pep-0580/ PEP 580 – The C call protocol | peps.python.org A new “C call” protocol is proposed. It is meant for classes representing functions or methods which need to implement fast calling. The goal is to generalize... protocol peps580callpython https://peps.python.org/pep-0553/ PEP 553 – Built-in breakpoint() | peps.python.org This PEP proposes adding a new built-in function called breakpoint() which enters a Python debugger at the point of the call. Additionally, two new names are... peps python553builtbreakpoint https://peps.python.org/pep-0302/ PEP 302 – New Import Hooks | peps.python.org This PEP proposes to add a new set of import hooks that offer better customization of the Python import mechanism. Contrary to the current __import__ hook, a... new importpeps python302hooks https://peps.python.org/pep-0658/ PEP 658 – Serve Distribution Metadata in the Simple Repository API | peps.python.org This PEP proposes adding an anchor tag to expose the METADATA file from distributions in the PEP 503 “simple” repository API. A data-dist-info-metadata... repository apipeps python658servedistribution https://peps.python.org/pep-0554/ PEP 554 – Multiple Interpreters in the Stdlib | peps.python.org CPython has supported multiple interpreters in the same process (AKA “subinterpreters”) since version 1.5 (1997). The feature has been available via the C-API.... peps python554multipleinterpretersstdlib https://peps.python.org/pep-0804/ PEP 804 – An external dependency registry and name mapping mechanism | peps.python.org This PEP specifies a name mapping mechanism that allows packaging tools to map external dependency identifiers (as introduced in PEP 725) to their counterparts... peps python804externaldependencyregistry https://peps.python.org/pep-0585/ PEP 585 – Type Hinting Generics In Standard Collections | peps.python.org Static typing as defined by PEPs 484, 526, 544, 560, and 563 was built incrementally on top of the existing Python runtime and constrained by existing syntax... collections peps585typehintinggenerics https://peps.python.org/pep-0011/ PEP 11 – CPython platform support | peps.python.org This PEP documents how an operating system (platform) becomes supported in CPython, what platforms are currently supported, and documents past support. platform supportpeps python11cpython https://peps.python.org/pep-0207/ PEP 207 – Rich Comparisons | peps.python.org This PEP proposes several new features for comparisons: peps python207richcomparisons https://peps.python.org/pep-0735/ PEP 735 – Dependency Groups in pyproject.toml | peps.python.org This PEP specifies a mechanism for storing package requirements in pyproject.toml files such that they are not included in any built distribution of the... dependency groupspyproject tomlpeps python735 https://peps.python.org/pep-0742/ PEP 742 – Narrowing types with TypeIs | peps.python.org This PEP proposes a new special form, TypeIs, to allow annotating functions that can be used to narrow the type of a value, similar to the builtin... peps python742narrowingtypes https://peps.python.org/pep-0703/ PEP 703 – Making the Global Interpreter Lock Optional in CPython | peps.python.org CPython’s global interpreter lock (“GIL”) prevents multiple threads from executing Python code at the same time. The GIL is an obstacle to using multi-core... global interpreter lockcpython peps703makingoptional https://peps.python.org/pep-0264/ PEP 264 – Future statements in simulated shells | peps.python.org As noted in PEP 236, there is no clear way for “simulated interactive shells” to simulate the behaviour of __future__ statements in “real” interactive shells,... peps python264futurestatementssimulated https://peps.python.org/pep-0659/ PEP 659 – Specializing Adaptive Interpreter | peps.python.org In order to perform well, virtual machines for dynamic languages must specialize the code that they execute to the types and values in the program being run.... peps python659specializingadaptiveinterpreter https://peps.python.org/pep-0571/ PEP 571 – The manylinux2010 Platform Tag | peps.python.org This PEP proposes the creation of a manylinux2010 platform tag to succeed the manylinux1 tag introduced by PEP 513. It also proposes that PyPI and pip both be... platform tagpeps python571 https://peps.python.org/pep-0383/ PEP 383 – Non-decodable Bytes in System Character Interfaces | peps.python.org File names, environment variables, and command line arguments are defined as being character data in POSIX; the C APIs however allow passing arbitrary bytes -... peps python383nondecodablebytes https://peps.python.org/pep-0448/ PEP 448 – Additional Unpacking Generalizations | peps.python.org This PEP proposes extended usages of the * iterable unpacking operator and ** dictionary unpacking operators to allow unpacking in more positions, an arbitrary... peps python448additionalunpacking https://peps.python.org/pep-0225/ PEP 225 – Elementwise/Objectwise Operators | peps.python.org This PEP describes a proposal to add new operators to Python which are useful for distinguishing elementwise and objectwise operations, and summarizes... peps python225elementwiseoperators https://peps.python.org/pep-0755/ PEP 755 – Implicit namespace policy for PyPI | peps.python.org This PEP codifies an implementation of PEP 752 for PyPI 1. peps python755implicitnamespacepolicy https://peps.python.org/pep-0215/ PEP 215 – String Interpolation | peps.python.org This document proposes a string interpolation feature for Python to allow easier string formatting. The suggested syntax change is the introduction of a ‘$’... peps python215stringinterpolation https://peps.python.org/pep-0318/ PEP 318 – Decorators for Functions and Methods | peps.python.org The current method for transforming functions and methods (for instance, declaring them as a class or static method) is awkward and can lead to code that is... peps python318decoratorsfunctionsmethods https://peps.python.org/pep-0756/ PEP 756 – Add PyUnicode_Export() and PyUnicode_Import() C functions | peps.python.org Add functions to the limited C API version 3.14: peps python756addexportimport https://peps.python.org/pep-0667/ PEP 667 – Consistent views of namespaces | peps.python.org In early versions of Python all namespaces, whether in functions, classes or modules, were all implemented the same way: as a dictionary. peps python667consistentviewsnamespaces https://peps.python.org/pep-0556/ PEP 556 – Threaded garbage collection | peps.python.org This PEP proposes a new optional mode of operation for CPython’s cyclic garbage collector (GC) where implicit (i.e. opportunistic) collections happen in a... garbage collectionpeps python556threaded https://peps.python.org/pep-0787/ PEP 787 – Safer subprocess usage using t-strings | peps.python.org PEP 750 introduced template strings (t-strings) as a generalization of f-strings, providing a way to safely handle string interpolation in various contexts.... usage usingpeps python787safersubprocess https://peps.python.org/pep-0573/ PEP 573 – Module State Access from C Extension Methods | peps.python.org This PEP proposes to add a way for CPython extension methods to access context, such as the state of the modules they are defined in. c extensionpeps python573modulestate https://peps.python.org/pep-0655/ PEP 655 – Marking individual TypedDict items as required or potentially-missing | peps.python.org PEP 589 defines notation for declaring a TypedDict with all required keys and notation for defining a TypedDict with all potentially-missing keys, however it... peps python655markingindividualtypeddict https://peps.python.org/pep-0227/ PEP 227 – Statically Nested Scopes | peps.python.org This PEP describes the addition of statically nested scoping (lexical scoping) for Python 2.2, and as a source level option for python 2.1. In addition, Python... peps python227staticallynestedscopes https://peps.python.org/pep-0594/ PEP 594 – Removing dead batteries from the standard library | peps.python.org This PEP proposed a list of standard library modules to be removed from the standard library. The modules are mostly historic data formats (e.g. Commodore and... standard library peps594removingdeadbatteries https://peps.python.org/pep-0293/ PEP 293 – Codec Error Handling Callbacks | peps.python.org This PEP aims at extending Python’s fixed codec error handling schemes with a more flexible callback based approach. error handlingpeps python293codeccallbacks https://peps.python.org/pep-0814/ PEP 814 – Add frozendict built-in type | peps.python.org A new public immutable type frozendict is added to the builtins module. type peps814addfrozendictbuilt https://peps.python.org/pep-0526/ PEP 526 – Syntax for Variable Annotations | peps.python.org PEP 484 introduced type hints, a.k.a. type annotations. While its main focus was function annotations, it also introduced the notion of type comments to... annotations peps python526syntaxvariable https://peps.python.org/pep-0643/ PEP 643 – Metadata for Package Source Distributions | peps.python.org Python package metadata is stored in the distribution file in a standard format, defined in the Core Metadata Specification. However, for source distributions,... distributions peps python643metadatapackagesource https://peps.python.org/pep-0747/ PEP 747 – Annotating Type Forms | peps.python.org Type expressions provide a standardized way to specify types in the Python type system. When a type expression is evaluated at runtime, the resulting type form... peps python747annotatingtypeforms https://peps.python.org/pep-0272/ PEP 272 – API for Block Encryption Algorithms v1.0 | peps.python.org This document specifies a standard API for secret-key block encryption algorithms such as DES or Rijndael, making it easier to switch between different... v1 0 pepsencryption algorithms272apiblock https://peps.python.org/pep-0581/ PEP 581 – Using GitHub Issues for CPython | peps.python.org This PEP outlines the rationale for migration from Python’s issue tracker on Roundup to GitHub issues. See PEP 588 for the detailed migration plan. using githubcpython peps581issues https://peps.python.org/topic/typing/ Typing PEPs | peps.python.org peps pythontyping https://peps.python.org/pep-8013/ PEP 8013 – The External Council Governance Model | peps.python.org This PEP proposes a new model of Python governance based on a Council of Auditors (CoA) tasked with making final decisions for the language. It differs from... council governancepeps python8013externalmodel https://peps.python.org/pep-0615/ PEP 615 – Support for the IANA Time Zone Database in the Standard Library | peps.python.org This proposes adding a module, zoneinfo, to provide a concrete time zone implementation supporting the IANA time zone database. By default, zoneinfo will use... iana time zonestandard library peps615supportdatabase https://peps.python.org/pep-0572/ PEP 572 – Assignment Expressions | peps.python.org This is a proposal for creating a way to assign to variables within an expression using the notation NAME := expr. expressions peps572assignmentpython https://peps.python.org/pep-0604/ PEP 604 – Allow writing union types as X | Y | peps.python.org This PEP proposes overloading the | operator on types to allow writing Union[X, Y] as X | Y, and allows it to appear in isinstance and issubclass calls. union typespeps python604allowwriting https://peps.python.org/pep-0544/ PEP 544 – Protocols: Structural subtyping (static duck typing) | peps.python.org Type hints introduced in PEP 484 can be used to specify type metadata for static type checkers and other third party tools. However, PEP 484 only specifies the... duck typingpeps python544protocolsstructural https://peps.python.org/pep-0524/ PEP 524 – Make os.urandom() blocking on Linux | peps.python.org Modify os.urandom() to block on Linux 3.17 and newer until the OS urandom is initialized to increase the security. peps python524makeosurandom https://peps.python.org/pep-0632/ PEP 632 – Deprecate distutils module | peps.python.org The distutils module 1 has for a long time recommended using the setuptools package 2 instead. Setuptools has recently integrated a complete copy of distutils... peps python632deprecatedistutilsmodule https://peps.python.org/pep-0303/ PEP 303 – Extend divmod() for Multiple Divisors | peps.python.org This PEP describes an extension to the built-in divmod() function, allowing it to take multiple divisors, chaining several calls to divmod() into one. peps python303extendmultipledivisors https://peps.python.org/pep-0774/ PEP 774 – Removing the LLVM requirement for JIT builds | peps.python.org Since Python 3.13, CPython has been able to be configured and built with an experimental just-in-time (JIT) compiler via the --enable-experimental-jit flag on... peps python774removingllvmrequirement https://peps.python.org/pep-0744/ PEP 744 – JIT Compilation | peps.python.org Earlier this year, an experimental “just-in-time” compiler was merged into CPython’s main development branch. While recent CPython releases have included other... peps python744jitcompilation https://peps.python.org/pep-0483/ PEP 483 – The Theory of Type Hints | peps.python.org This PEP lays out the theory referenced by PEP 484. type hints peps483theorypython https://peps.python.org/pep-3114/ PEP 3114 – Renaming iterator.next() to iterator.__next__() | peps.python.org The iterator protocol in Python 2.x consists of two methods: __iter__() called on an iterable object to yield an iterator, and next() called on an iterator... peps python3114renamingiteratornext https://peps.python.org/pep-0574/ PEP 574 – Pickle protocol 5 with out-of-band data | peps.python.org This PEP proposes to standardize a new pickle protocol version, and accompanying APIs to take full advantage of it: peps python574pickleprotocolband https://peps.python.org/pep-0442/ PEP 442 – Safe object finalization | peps.python.org This PEP proposes to deal with the current limitations of object finalization. The goal is to be able to define and run finalizers for any object, regardless... peps python442safeobjectfinalization https://peps.python.org/pep-0611/ PEP 611 – The one million limit | peps.python.org This PR proposes a soft limit of one million (1 000 000), and a larger hard limit for various aspects of Python code and its implementation. one millionpeps python611limit https://peps.python.org/pep-0730/ PEP 730 – Adding iOS as a supported platform | peps.python.org This PEP proposes adding iOS as a supported platform in CPython. The initial goal is to achieve Tier 3 support for Python 3.13. This PEP describes the... peps python730addingiossupported https://peps.python.org/pep-0705/ PEP 705 – TypedDict: Read-only items | peps.python.org PEP 589 defines the structural type TypedDict for dictionaries with a fixed set of keys. As TypedDict is a mutable type, it is difficult to correctly annotate... peps python705typeddictreaditems https://peps.python.org/pep-0234/ PEP 234 – Iterators | peps.python.org This document proposes an iteration interface that objects can provide to control the behaviour of for loops. Looping is customized by providing a method that... peps python234iterators https://peps.python.org/pep-0480/ PEP 480 – Surviving a Compromise of PyPI: End-to-end signing of packages | peps.python.org Proposed is an extension to PEP 458 that adds support for end-to-end signing and the maximum security model. End-to-end signing allows both PyPI and developers... packages peps480survivingcompromisepypi https://peps.python.org/pep-3151/ PEP 3151 – Reworking the OS and IO exception hierarchy | peps.python.org The standard exception hierarchy is an important part of the Python language. It has two defining qualities: it is both generic and selective. Generic in that... peps python3151reworkingosio https://peps.python.org/pep-0636/ PEP 636 – Structural Pattern Matching: Tutorial | peps.python.org This PEP is a tutorial for the pattern matching introduced by PEP 634. pattern matchingpeps python636structuraltutorial https://peps.python.org/pep-0542/ PEP 542 – Dot Notation Assignment In Function Header | peps.python.org Function definitions only allow simple function names to be used, even though functions are assignable first class objects. dot notationpeps python542assignmentfunction https://peps.python.org/pep-0684/ PEP 684 – A Per-Interpreter GIL | peps.python.org Since Python 1.5 (1997), CPython users can run multiple interpreters in the same process. However, interpreters in the same process have always shared a... peps python684perinterpretergil https://peps.python.org/pep-0759/ PEP 759 – External Wheel Hosting | peps.python.org This PEP proposes a mechanism by which projects hosted on pypi.org can safely host wheel artifacts on external sites other than PyPI. This PEP explicitly does... peps python759externalwheelhosting https://peps.python.org/pep-0563/ PEP 563 – Postponed Evaluation of Annotations | peps.python.org PEP 3107 introduced syntax for function annotations, but the semantics were deliberately left undefined. PEP 484 introduced a standard meaning to annotations:... annotations peps python563postponedevaluation https://peps.python.org/pep-0455/ PEP 455 – Adding a key-transforming dictionary to collections | peps.python.org This PEP proposes a new data structure for the collections module, called “TransformDict” in this PEP. This structure is a mutable mapping which transforms the... collections peps455addingkeytransforming https://peps.python.org/pep-0290/ PEP 290 – Code Migration and Modernization | peps.python.org This PEP is a collection of procedures and ideas for updating Python applications when newer versions of Python are installed. code migrationpeps python290modernization https://peps.python.org/pep-0463/ PEP 463 – Exception-catching expressions | peps.python.org Just as PEP 308 introduced a means of value-based conditions in an expression, this system allows exception-based conditions to be used as part of an... expressions peps463exceptioncatchingpython https://peps.python.org/pep-0411/ PEP 411 – Provisional packages in the Python standard library | peps.python.org The process of including a new package into the Python standard library is hindered by the API lock-in and promise of backward compatibility implied by a... python standard librarypep411provisionalpackages https://peps.python.org/pep-0249/ PEP 249 – Python Database API Specification v2.0 | peps.python.org This API has been defined to encourage similarity between the Python modules that are used to access databases. By doing this, we hope to achieve a consistency... specification v2 0python databasepep249api