summaryrefslogtreecommitdiffstats
path: root/Doc/c-api/object.rst
Commit message (Collapse)AuthorAgeFilesLines
* [3.12] gh-113993: Make interned strings mortal (GH-120520, GH-121364, ↵Petr Viktorin2024-09-271-0/+15
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | GH-121903, GH-122303) (#123065) This backports several PRs for gh-113993, making interned strings mortal so they can be garbage-collected when no longer needed. * Allow interned strings to be mortal, and fix related issues (GH-120520) * Add an InternalDocs file describing how interning should work and how to use it. * Add internal functions to *explicitly* request what kind of interning is done: - `_PyUnicode_InternMortal` - `_PyUnicode_InternImmortal` - `_PyUnicode_InternStatic` * Switch uses of `PyUnicode_InternInPlace` to those. * Disallow using `_Py_SetImmortal` on strings directly. You should use `_PyUnicode_InternImmortal` instead: - Strings should be interned before immortalization, otherwise you're possibly interning a immortalizing copy. - `_Py_SetImmortal` doesn't handle the `SSTATE_INTERNED_MORTAL` to `SSTATE_INTERNED_IMMORTAL` update, and those flags can't be changed in backports, as they are now part of public API and version-specific ABI. * Add private `_only_immortal` argument for `sys.getunicodeinternedsize`, used in refleak test machinery. Make sure the statically allocated string singletons are unique. This means these sets are now disjoint: - `_Py_ID` - `_Py_STR` (including the empty string) - one-character latin-1 singletons Now, when you intern a singleton, that exact singleton will be interned. * Add a `_Py_LATIN1_CHR` macro, use it instead of `_Py_ID`/`_Py_STR` for one-character latin-1 singletons everywhere (including Clinic). * Intern `_Py_STR` singletons at startup. * Beef up the tests. Cover internal details (marked with `@cpython_only`). * Add lots of assertions * Don't immortalize in PyUnicode_InternInPlace; keep immortalizing in other API (GH-121364) * Switch PyUnicode_InternInPlace to _PyUnicode_InternMortal, clarify docs * Document immortality in some functions that take `const char *` This is PyUnicode_InternFromString; PyDict_SetItemString, PyObject_SetAttrString; PyObject_DelAttrString; PyUnicode_InternFromString; and the PyModule_Add convenience functions. Always point out a non-immortalizing alternative. * Don't immortalize user-provided attr names in _ctypes * Immortalize names in code objects to avoid crash (GH-121903) * Intern latin-1 one-byte strings at startup (GH-122303) There are some 3.12-specific changes, mainly to allow statically allocated strings in deepfreeze. (In 3.13, deepfreeze switched to the general `_Py_ID`/`_Py_STR`.) Co-authored-by: Eric Snow <ericsnowcurrently@gmail.com>
* [3.12] gh-101100: Add a table of class attributes to the "Custom classes" ↵Alex Waygood2024-09-251-6/+6
| | | | section of the data model docs (#124480) (#124558)
* [3.12] Format None, True, False and NotImplemented as literals (GH-118758) ↵Serhiy Storchaka2024-05-081-1/+1
| | | | | (GH-118794) (cherry picked from commit 05c2fe1acda9ea5a57061642c36e8b73bb4fbba4)
* [3.12] gh-101100: Fix sphinx warnings in `c-api/file.rst` (GH-114546) (#114584)Miss Islington (bot)2024-02-041-0/+8
| | | | | | | * gh-101100: Fix sphinx warnings in `c-api/file.rst` (GH-114546) (cherry picked from commit 01d970c1b8acf3ccf199d5de151a635ffd9d8c61) Co-authored-by: Nikita Sobolev <mail@sobolevn.me> Co-authored-by: Hugo van Kemenade <1324225+hugovk@users.noreply.github.com>
* [3.12] gh-113445: Amend PyObject_RichCompareBool() docs (GH-113891) (GH-114638)Miss Islington (bot)2024-01-271-6/+2
| | | | | (cherry picked from commit 926881dc10ebf77069e02e66eea3e0d3ba500fe5) Co-authored-by: Sergey B Kirpichev <skirpichev@gmail.com>
* [3.12] Improve some C API documentation (GH-108768) (#108785)Serhiy Storchaka2023-09-021-14/+14
| | | | | | | * Express functions which take argument as a C string in terms of functions which take Python object. * Use "note" directive for PyMapping_HasKey() and PyMapping_HasKeyString() notes.. (cherry picked from commit 6f97eeec222f81bd7ae836c149872a40b079e2a6)
* [3.12] gh-98154: Clarify Usage of "Reference Count" In the Docs (gh-107552) ↵Miss Islington (bot)2023-08-081-6/+7
| | | | | | | | | | | | | | | | | | (#107752) * gh-98154: Clarify Usage of "Reference Count" In the Docs (gh-107552) PEP 683 (immortal objects) revealed some ways in which the Python documentation has been unnecessarily coupled to the implementation details of reference counts. In the end users should focus on reference ownership, including taking references and releasing them, rather than on how many reference counts an object has. This change updates the documentation to reflect that perspective. It also updates the docs relative to immortal objects in a handful of places. (cherry picked from commit 5dc825d504ad08d64c9d1ce578f9deebbe012604) Co-authored-by: Eric Snow <ericsnowcurrently@gmail.com> * Fix a typo. --------- Co-authored-by: Eric Snow <ericsnowcurrently@gmail.com>
* [3.12] gh-107298: Fix yet more Sphinx warnings in the C API doc (GH-107345) ↵Serhiy Storchaka2023-07-281-3/+3
| | | | | (GH-107380) (cherry picked from commit 983305268e2291b0a7835621b81bf40cba7c27f3)
* [3.12] gh-106919: Use role :c:macro: for referencing the C "constants" ↵Serhiy Storchaka2023-07-211-8/+8
| | | | | (GH-106920) (GH-106951) (cherry picked from commit fcc816dbff7ca66c26f57a506e4d2330fe41d0ff)
* [3.12] gh-106033: [docs] Improve C API GetItem & HasAttr notes. (GH-106047) ↵Miss Islington (bot)2023-06-241-7/+11
| | | | | | | | | | | | (#106070) gh-106033: [docs] Improve C API GetItem & HasAttr notes. (GH-106047) Use a note:: tag so that these dict and object API deficiencies show up clearly. A caution:: tag was considered, but our current python docs rendering doesn't do much with that (no box or color change). warning:: seemed too extreme. note looks good. (cherry picked from commit 19d6511b0b8f3f74e668ae32ccef89bcbf1a8a62) Co-authored-by: Gregory P. Smith <greg@krypto.org>
* GH-97950: Use new-style index directive ('builtin') (#104164)Adam Turner2023-05-061-6/+6
| | | | | | | | | | | | | * Uncomment builtin removal in pairindextypes * Use new-style index directive ('builtin') - C API * Use new-style index directive ('builtin') - Extending * Use new-style index directive ('builtin') - Library * Use new-style index directive ('builtin') - Reference * Use new-style index directive ('builtin') - Tutorial
* gh-103509: PEP 697 -- Limited C API for Extending Opaque Types (GH-103511)Petr Viktorin2023-05-041-0/+39
| | | | Co-authored-by: Oleg Iarygin <oleg@arhadthedev.net> Co-authored-by: Erlend E. Aasland <erlend.aasland@protonmail.com>
* gh-102595: Document `PyObject_Format` c-api function (GH-102596)Nikita Sobolev2023-03-211-0/+9
| | | Def: https://github.com/python/cpython/blame/5ffdaf748d98da6065158534720f1996a45a0072/Include/abstract.h#L389
* GH-101898: Fix missing term references for hashable definition (#101899)Furkan Onder2023-02-141-1/+1
| | | Fix missing term references for hashable definition
* gh-93738: Documentation C syntax (:c:type:`PyTypeObject*` -> ↵Adam Turner2022-10-051-1/+1
| | | | | :c:expr:`PyTypeObject*`) (#97778) Co-authored-by: Ezio Melotti <ezio.melotti@gmail.com>
* GH-92678: Document that you shouldn't be doing your own dictionary offset ↵Mark Shannon2022-08-091-0/+18
| | | | | | calculations. (GH-95598) Co-authored-by: Petr Viktorin <encukou@gmail.com> Co-authored-by: Stanley <46876382+slateny@users.noreply.github.com>
* Document Py_ssize_t. (GH-92512)Julien Palard2022-05-131-1/+1
| | | | | | It fixes 252 errors from a Sphinx nitpicky run (sphinx-build -n). But there's 8182 errors left. Co-authored-by: Ezio Melotti <ezio.melotti@gmail.com>
* More minor fixes to C API docs (GH-31525)Jelle Zijlstra2022-04-021-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | * wording fixes in type.rst * grammar and punctuation in sys.rst * set: grammar fixes * structures: capitalization fix * grammar fixes for sequence * objects: point to Py_TYPE instead of direct object access * numbers: add more explicit Python equivalences * method: add missing period * memory: grammar fix * mapping: grammar fixes * long: grammar fix * iter: fix grammar for PyAIter_Check * init: grammar fix
* bpo-22039: [doc] clarify that there are no plans to disable deleting an ↵Irit Katriel2022-01-191-2/+3
| | | | attribute via PyObject_SetAttr (GH-30639)
* bpo-45123: PyAiter_Check and PyObject_GetAiter fix & rename. (GH-28194)Yury Selivanov2021-09-071-1/+1
| | | | | | | | Fix PyAiter_Check to only check for the `__anext__` presense (not for `__aiter__`). Rename `PyAiter_Check()` to `PyAIter_Check()`, `PyObject_GetAiter()` -> `PyObject_GetAIter()`. Co-authored-by: Pablo Galindo Salgado <Pablogsal@gmail.com>
* bpo-44426: Fix use of the C keyword 'default' as a variable name (GH-26798)Mark Dickinson2021-06-191-2/+2
|
* bpo-31861: Complete the C-API docs for PyObject_GetAiter and PyAiter_Check ↵Pablo Galindo2021-03-231-0/+11
| | | | (GH-25004)
* bpo-43181: Convert PyObject_TypeCheck to static inline function (GH-24533)Erlend Egeberg Aasland2021-02-151-2/+2
|
* bpo-40204, doc: Fix syntax of C variables (GH-21846)Victor Stinner2020-08-131-1/+1
| | | | | | | | | | | | | | | For example, fix the following Sphinx 3 errors: Doc/c-api/buffer.rst:102: WARNING: Error in declarator or parameters Invalid C declaration: Expected identifier in nested name. [error at 5] void \*obj -----^ Doc/c-api/arg.rst:130: WARNING: Unparseable C cross-reference: 'PyObject*' Invalid C declaration: Expected end of definition. [error at 8] PyObject* --------^ The modified documentation is compatible with Sphinx 2 and Sphinx 3.
* bpo-39973: Fix the docs for PyObject_GenericSetDict() (GH-19026)Zackery Spytz2020-03-171-1/+1
| | | | PyObject_GenericSetDict() takes three arguments, not two.
* bpo-39153: Clarify C API *SetItem refcounting semantics (GH-18220)Joannah Nanjekye2020-01-291-1/+2
| | | | | | | | | | | | Some of the *SetItem methods in the C API steal a reference to the given value. This annotates the better behaved ones to assure the reader that these are not the ones with the inconsistent behaviour. * 📜🤖 Added by blurb_it. * make docs consistent with signature Co-authored-by: blurb-it[bot] <43283697+blurb-it[bot]@users.noreply.github.com>
* bpo-36974: expand call protocol documentation (GH-13844)Jeroen Demeyer2019-11-121-240/+0
| | | | | | | | | | | | | | CC @encukou I'm also adding Petr Viktorin as contributor for vectorcall in the "what's new" section. https://bugs.python.org/issue36974 Automerge-Triggered-By: @encukou Automerge-Triggered-By: @encukou
* bpo-37645: add new function _PyObject_FunctionStr() (GH-14890)Jeroen Demeyer2019-11-051-0/+1
| | | | | | | | | | | | Additional note: the `method_check_args` function in `Objects/descrobject.c` is written in such a way that it applies to all kinds of descriptors. In particular, a future re-implementation of `wrapper_descriptor` could use that code. CC @vstinner @encukou https://bugs.python.org/issue37645 Automerge-Triggered-By: @encukou
* bpo-38600: NULL -> ``NULL``. (GH-17001)Serhiy Storchaka2019-10-301-1/+1
| | | Also fix some other formatting.
* bpo-38600: Change the mark up of NULL in the C API documentation. (GH-16950)Serhiy Storchaka2019-10-301-36/+36
| | | | Replace all *NULL* with ``NULL``.
* bpo-37540: vectorcall: keyword names must be strings (GH-14682)Jeroen Demeyer2019-08-161-2/+2
| | | | | | | | The fact that keyword names are strings is now part of the vectorcall and `METH_FASTCALL` protocols. The biggest concrete change is that `_PyStack_UnpackDict` now checks that and raises `TypeError` if not. CC @markshannon @vstinner https://bugs.python.org/issue37540
* bpo-37547: add _PyObject_CallMethodOneArg (GH-14685)Jeroen Demeyer2019-07-111-0/+12
|
* bpo-37337: Add _PyObject_CallMethodNoArgs() (GH-14267)Jeroen Demeyer2019-07-081-0/+11
|
* bpo-37483: add _PyObject_CallOneArg() function (#14558)Jeroen Demeyer2019-07-041-0/+11
|
* bpo-37337: Add _PyObject_VectorcallMethod() (GH-14228)Jeroen Demeyer2019-06-281-0/+22
|
* bpo-37194: Add PyObject_CallNoArgs() rationale (GH-14159)Victor Stinner2019-06-171-1/+2
| | | | Explain in the doc why PyObject_CallNoArgs() should be preferred over other existing ways to call a function without any arguments.
* bpo-37194: Complete PyObject_CallXXX() docs (GH-14156)Victor Stinner2019-06-171-8/+16
| | | | Mention explicitly that PyObject_CallXXX() functions raise an exception an failure.
* bpo-37194: Add a new public PyObject_CallNoArgs() function (GH-13890)Victor Stinner2019-06-171-0/+10
| | | | | | | | | | | | | | | Add a new public PyObject_CallNoArgs() function to the C API: call a callable Python object without any arguments. It is the most efficient way to call a callback without any argument. On x86-64, for example, PyObject_CallFunctionObjArgs(func, NULL) allocates 960 bytes on the stack per call, whereas PyObject_CallNoArgs(func) only allocates 624 bytes per call. It is excluded from stable ABI 3.8. Replace private _PyObject_CallNoArg() with public PyObject_CallNoArgs() in C extensions: _asyncio, _datetime, _elementtree, _pickle, _tkinter and readline.
* bpo-36974: document PEP 590 (GH-13450)Jeroen Demeyer2019-06-021-0/+77
|
* Doc: Replace the deprecated highlightlang directive by highlight. (#13377)Stéphane Wirtel2019-05-171-1/+1
| | | | highlightlang is deprecated since April 2018 in Sphinx. See https://github.com/sphinx-doc/sphinx/pull/4845
* bpo-35461: Document C API functions which suppress exceptions. (GH-11119)Serhiy Storchaka2018-12-181-0/+9
|
* bpo-5945: Improve mappings and sequences C API docs. (GH-7029)Serhiy Storchaka2018-05-221-4/+4
|
* Uniformize argument names of "call" functionsVictor Stinner2016-12-061-27/+46
| | | | | | | | | | | | Issue #28838: Rename parameters of the "calls" functions of the Python C API. * Rename 'callable_object' and 'func' to 'callable': any Python callable object is accepted, not only Python functions * Rename 'method' and 'nameid' to 'name' (method name) * Rename 'o' to 'obj' * Move, fix and update documentation of PyObject_CallXXX() functions in abstract.h * Update also the documentaton of the C API (update parameter names)
* Issue #25701: Document C API functions that both set and delete objectsMartin Panter2015-12-081-8/+19
| | | | | | Also document that the separate functions that delete objects are preferred; using PyObject_SetAttr(), _SetAttrString(), and PySequence_SetItem() to delete is deprecated.
* Fixed a typo.Serhiy Storchaka2015-05-021-1/+1
|
* Clean up the docs of PyObject_IsSubclass and PyObject_IsInstance, and ↵Georg Brandl2014-10-061-29/+34
| | | | mention that they call the PEP 3119 methods.
* PyObject not PyType (closes #18494)Benjamin Peterson2014-10-061-2/+2
|
* Fix a few scoping issues with versionadded/versionchanged directives.Georg Brandl2014-03-241-0/+1
|
* Merge in all documentation changes since branching 3.4.0rc1.Larry Hastings2014-03-161-3/+3
|
* Issue #20500: Note other public APIs with the new assertionNick Coghlan2014-02-091-2/+5
|