cpython/Modules
Petr Viktorin 4d82f628c4
gh-47146: Soft-deprecate structmember.h, expose its contents via Python.h (GH-99014)
The ``structmember.h`` header is deprecated, though it continues to be available
and there are no plans to remove it. There are no deprecation warnings. Old code
can stay unchanged (unless the extra include and non-namespaced macros bother
you greatly). Specifically, no uses in CPython are updated -- that would just be
unnecessary churn.
The ``structmember.h`` header is deprecated, though it continues to be
available and there are no plans to remove it.

Its contents are now available just by including ``Python.h``,
with a ``Py`` prefix added if it was missing:

- `PyMemberDef`, `PyMember_GetOne` and`PyMember_SetOne`
- Type macros like `Py_T_INT`, `Py_T_DOUBLE`, etc.
  (previously ``T_INT``, ``T_DOUBLE``, etc.)
- The flags `Py_READONLY` (previously ``READONLY``) and
  `Py_AUDIT_READ` (previously all uppercase)

Several items are not exposed from ``Python.h``:

- `T_OBJECT` (use `Py_T_OBJECT_EX`)
- `T_NONE` (previously undocumented, and pretty quirky)
- The macro ``WRITE_RESTRICTED`` which does nothing.
- The macros ``RESTRICTED`` and ``READ_RESTRICTED``, equivalents of
  `Py_AUDIT_READ`.
- In some configurations, ``<stddef.h>`` is not included from ``Python.h``.
  It should be included manually when using ``offsetof()``.

The deprecated header continues to provide its original
contents under the original names.
Your old code can stay unchanged, unless the extra include and non-namespaced
macros bother you greatly.

There is discussion on the issue to rename `T_PYSSIZET` to `PY_T_SSIZE` or
similar. I chose not to do that -- users will probably copy/paste that with any
spelling, and not renaming it makes migration docs simpler.


Co-Authored-By: Alexander Belopolsky <abalkin@users.noreply.github.com>
Co-Authored-By: Matthias Braun <MatzeB@users.noreply.github.com>
2022-11-22 08:25:43 +01:00
..
_blake2 gh-90928: Improve static initialization of keywords tuple in AC (#95907) 2022-08-13 12:09:40 +02:00
_ctypes gh-99337: Fix compile errors with gcc 12 on macOS (#99470) 2022-11-21 10:50:20 +01:00
_decimal gh-99300: Use Py_NewRef() in Modules/ directory (#99466) 2022-11-14 13:08:15 +01:00
_io gh-99300: Use Py_NewRef() in Modules/ directory (#99467) 2022-11-14 13:08:43 +01:00
_multiprocessing gh-90928: Improve static initialization of keywords tuple in AC (#95907) 2022-08-13 12:09:40 +02:00
_sha3 gh-90928: Improve static initialization of keywords tuple in AC (#95907) 2022-08-13 12:09:40 +02:00
_sqlite gh-83638: Add sqlite3.Connection.autocommit for PEP 249 compliant behaviour (#93823) 2022-11-12 23:44:41 +01:00
_sre gh-99300: Use Py_NewRef() in Modules/ directory (#99468) 2022-11-14 13:44:56 +01:00
_ssl gh-99300: Use Py_NewRef() in Modules/ directory (#99468) 2022-11-14 13:44:56 +01:00
_testcapi gh-47146: Soft-deprecate structmember.h, expose its contents via Python.h (GH-99014) 2022-11-22 08:25:43 +01:00
_xxtestfuzz gh-73691: Increase size limits in _xxtestfuzz (#99070) 2022-11-03 14:41:20 -07:00
cjkcodecs gh-99300: Use Py_NewRef() in Modules/ directory (#99469) 2022-11-14 16:21:23 +01:00
clinic gh-96002: Add functional test for Argument Clinic (#96178) 2022-11-21 15:08:45 +01:00
expat gh-98739: Update libexpat from 2.4.9 to 2.5.0 (#98742) 2022-10-27 13:45:12 -07:00
README
Setup gh-98627: Add the _testsinglephase Module (gh-99039) 2022-11-08 09:58:11 -07:00
Setup.bootstrap.in bpo-47152: Move sources of the _sre module into a subdirectory (GH-32290) 2022-04-04 10:53:26 +03:00
Setup.stdlib.in gh-47146: Soft-deprecate structmember.h, expose its contents via Python.h (GH-99014) 2022-11-22 08:25:43 +01:00
_abc.c gh-99300: Use Py_NewRef() in Modules/ directory (#99466) 2022-11-14 13:08:15 +01:00
_asynciomodule.c gh-99300: Replace Py_INCREF() with Py_NewRef() (#99513) 2022-11-16 10:39:47 +01:00
_bisectmodule.c gh-96538: Fix refleak in _bisectmodule.c (gh-96619) 2022-09-06 19:37:18 -04:00
_bz2module.c gh-94401: Remove unneeded bz2 module state (#94402) 2022-06-29 17:51:36 +02:00
_codecsmodule.c gh-90928: Statically Initialize the Keywords Tuple in Clinic-Generated Code (gh-95860) 2022-08-11 15:25:49 -06:00
_collectionsmodule.c gh-99300: Use Py_NewRef() in Modules/ directory (#99466) 2022-11-14 13:08:15 +01:00
_contextvarsmodule.c bpo-1635741: _contextvars uses PyModule_AddType() (GH-23147) 2020-11-04 16:33:55 +01:00
_cryptmodule.c closes bpo-44751: Move crypt.h include from public header to _cryptmodule (GH-27394) 2021-07-27 15:58:12 -07:00
_csv.c gh-99300: Use Py_NewRef() in Modules/ directory (#99466) 2022-11-14 13:08:15 +01:00
_curses_panel.c gh-99300: Use Py_NewRef() in Modules/ directory (#99466) 2022-11-14 13:08:15 +01:00
_cursesmodule.c gh-99300: Use Py_NewRef() in Modules/ directory (#99466) 2022-11-14 13:08:15 +01:00
_datetimemodule.c gh-99300: Use Py_NewRef() in Modules/_datetimemodule.c (#99465) 2022-11-14 13:09:12 +01:00
_dbmmodule.c gh-99300: Use Py_NewRef() in Modules/ directory (#99466) 2022-11-14 13:08:15 +01:00
_elementtree.c gh-99300: Replace Py_INCREF() with Py_NewRef() (#99513) 2022-11-16 10:39:47 +01:00
_functoolsmodule.c gh-81057: Move the global Dict-Related Versions to _PyRuntimeState (gh-99497) 2022-11-16 10:37:29 -07:00
_gdbmmodule.c gh-99426: Use PyUnicode_FromFormat() and PyErr_Format() instead of sprintf (GH-99427) 2022-11-14 15:25:34 +02:00
_hashopenssl.c DOC: correct bytesarray -> bytearray in comments (GH-92410) 2022-06-21 22:04:03 +02:00
_heapqmodule.c gh-99300: Use Py_NewRef() in Modules/ directory (#99466) 2022-11-14 13:08:15 +01:00
_json.c gh-99300: Use Py_NewRef() in Modules/ directory (#99467) 2022-11-14 13:08:43 +01:00
_localemodule.c bpo-47000: Add `locale.getencoding()` (GH-32068) 2022-04-09 09:54:54 +09:00
_lsprof.c gh-99300: Use Py_NewRef() in Modules/ directory (#99467) 2022-11-14 13:08:43 +01:00
_lzmamodule.c bpo-46541: Remove usage of _Py_IDENTIFIER from lzma module (GH-31683) 2022-03-05 01:38:56 +09:00
_math.h bpo-45548: Remove _math.c workarounds for pre-C99 libm (GH-29179) 2021-10-25 01:25:27 -07:00
_opcode.c gh-94216: add pseudo instructions to the dis/opcodes modules (GH-94241) 2022-07-01 15:33:35 +01:00
_operator.c gh-99300: Use Py_NewRef() in Modules/ directory (#99467) 2022-11-14 13:08:43 +01:00
_pickle.c gh-99300: Use Py_NewRef() in Modules/ directory (#99467) 2022-11-14 13:08:43 +01:00
_posixsubprocess.c gh-98610: Adjust the Optional Restrictions on Subinterpreters (GH-98618) 2022-10-31 12:35:54 -07:00
_queuemodule.c bpo-46613: Add PyType_GetModuleByDef to the public API (GH-31081) 2022-02-11 17:22:11 +01:00
_randommodule.c gh-90928: Statically Initialize the Keywords Tuple in Clinic-Generated Code (gh-95860) 2022-08-11 15:25:49 -06:00
_scproxy.c bpo-1635741: port scproxy to multi-phase init (GH-22164) 2020-09-09 12:28:48 +09:00
_ssl.c gh-99300: Use Py_NewRef() in Modules/ directory (#99468) 2022-11-14 13:44:56 +01:00
_ssl.h bpo-46541: remove usage of _Py_IDENTIFIER from _ssl module (GH-31599) 2022-03-02 00:38:21 +09:00
_ssl_data.h closes bpo-40266, closes bpo-39953: Use numeric lib code if compiling against old OpenSSL. (GH-19506) 2020-04-13 22:11:40 -05:00
_ssl_data_111.h bpo-43788: Generate version specific _ssl_data.h (GH-25300) 2021-04-09 08:02:00 -07:00
_ssl_data_300.h bpo-43788: Generate version specific _ssl_data.h (GH-25300) 2021-04-09 08:02:00 -07:00
_stat.c bpo-40677: Define IO_REPARSE_TAG_APPEXECLINK explicitly (GH-20206) 2020-05-19 13:22:16 +01:00
_statisticsmodule.c Statistics inv_cdf sync with corresponding random module normal distributions (#95265) 2022-07-26 02:23:33 -05:00
_struct.c gh-99300: Use Py_NewRef() in Modules/ directory (#99468) 2022-11-14 13:44:56 +01:00
_testbuffer.c gh-99300: Replace Py_INCREF() with Py_NewRef() (#99513) 2022-11-16 10:39:47 +01:00
_testcapi_feature_macros.inc gh-91324: List feature macros in the stable ABI manifest, improve tests (GH-32415) 2022-04-28 16:30:28 +02:00
_testcapimodule.c gh-47146: Soft-deprecate structmember.h, expose its contents via Python.h (GH-99014) 2022-11-22 08:25:43 +01:00
_testclinic.c gh-96002: Add functional test for Argument Clinic (#96178) 2022-11-21 15:08:45 +01:00
_testimportmultiple.c
_testinternalcapi.c gh-87092: expose the compiler's codegen to python for unit tests (GH-99111) 2022-11-14 13:56:40 +00:00
_testmultiphase.c gh-99300: Use Py_NewRef() in Modules/ directory (#99440) 2022-11-13 16:04:33 +01:00
_testsinglephase.c gh-98627: Add the _testsinglephase Module (gh-99039) 2022-11-08 09:58:11 -07:00
_threadmodule.c gh-99377: Add audit events for thread creation and clear (GH-99378) 2022-11-16 17:15:52 +00:00
_tkinter.c gh-99300: Use Py_NewRef() in Modules/ directory (#99468) 2022-11-14 13:44:56 +01:00
_tracemalloc.c gh-81057: Move Globals in Core Code to _PyRuntimeState (gh-99496) 2022-11-15 09:45:11 -07:00
_typingmodule.c gh-99300: Use Py_NewRef() in Modules/ directory (#99468) 2022-11-14 13:44:56 +01:00
_uuidmodule.c bpo-45847: Port _uuid to PY_STDLIB_MOD (GH-29741) 2021-11-24 10:20:37 +01:00
_weakref.c bpo-46937: convert remaining functions to AC in _weakref (GH-31705) 2022-03-07 18:57:45 +09:00
_winapi.c gh-99300: Use Py_NewRef() in Modules/ directory (#99468) 2022-11-14 13:44:56 +01:00
_xxsubinterpretersmodule.c gh-99300: Use Py_NewRef() in Modules/ directory (#99468) 2022-11-14 13:44:56 +01:00
_zoneinfo.c gh-99300: Use Py_NewRef() in Modules/_datetimemodule.c (#99465) 2022-11-14 13:09:12 +01:00
addrinfo.h gh-95174: WASI: skip missing sockets functions (GH-95179) 2022-07-27 08:19:23 +02:00
arraymodule.c gh-99300: Use Py_NewRef() in Modules/ directory (#99468) 2022-11-14 13:44:56 +01:00
atexitmodule.c fixes gh-96292: Fix Trivial Typo in cpython/Modules/atexitmodule.c (#96327) 2022-08-26 22:33:29 -07:00
audioop.c bpo-2716: add license for audioop module (#19972) 2022-10-21 15:43:20 -07:00
binascii.c gh-93172: Remove unnecessary "if"s in binascii_a2b_qp_impl() from Modules/binascii.c (GH-93181) 2022-05-25 11:38:47 -04:00
cmathmodule.c bpo-46656: Remove Py_NO_NAN macro (GH-31160) 2022-02-25 01:32:57 +01:00
config.c.in Add tests for the C tokenizer and expose it as a private module (GH-27924) 2021-08-24 17:50:05 +01:00
errnomodule.c gh-96005: Handle WASI ENOTCAPABLE in getpath (GH-96006) 2022-08-16 20:20:15 +02:00
faulthandler.c gh-96055: Update faulthandler to emit proper unexpect signal number (gh-99162) 2022-11-07 10:19:25 +09:00
fcntlmodule.c gh-93475: Expose FICLONE and FICLONERANGE constants in fcntl (#93478) 2022-06-06 23:21:58 +02:00
gc_weakref.txt Fix links to old SF bugs (#95648) 2022-08-04 18:12:35 +02:00
gcmodule.c gh-99300: Use Py_NewRef() in Modules/ directory (#99469) 2022-11-14 16:21:23 +01:00
getaddrinfo.c gh-95174: WASI: skip missing sockets functions (GH-95179) 2022-07-27 08:19:23 +02:00
getbuildinfo.c gh-81057: Move Globals in Core Code to _PyRuntimeState (gh-99496) 2022-11-15 09:45:11 -07:00
getnameinfo.c gh-95174: WASI: skip missing sockets functions (GH-95179) 2022-07-27 08:19:23 +02:00
getpath.c gh-99300: Use Py_NewRef() in Modules/ directory (#99469) 2022-11-14 16:21:23 +01:00
getpath.py gh-99370: Calculate zip path from prefix when in a venv (GH-99371) 2022-11-14 15:05:14 +00:00
getpath_noop.c bpo-45582: Port getpath[p].c to Python (GH-29041) 2021-12-03 00:08:42 +00:00
grpmodule.c bpo-1635741: Port grp and pwd to multiphase initialization (GH-23360) 2020-11-18 23:47:32 -08:00
hashlib.h hashlib: Fix old message about unicode objects. (GH-28653) 2021-10-01 14:38:49 +02:00
itertoolsmodule.c gh-99300: Use Py_NewRef() in Modules/itertoolsmodule.c (#99439) 2022-11-13 16:04:22 +01:00
ld_so_aix.in Issue #10656: Fix out-of-tree building on AIX 2016-11-20 07:56:37 +00:00
main.c gh-81057: Move More Globals in Core Code to _PyRuntimeState (gh-99516) 2022-11-16 09:37:14 -07:00
makesetup gh-96269: static and shared ext need different deps (#96316) 2022-11-16 14:03:35 +01:00
makexp_aix bpo-42087: Remove support for AIX 5.3 and below (GH-22830) 2020-11-16 16:16:10 +01:00
mathmodule.c gh-99300: Use Py_NewRef() in Modules/ directory (#99469) 2022-11-14 16:21:23 +01:00
md5module.c bpo-43974: Move Py_BUILD_CORE_MODULE into module code (GH-29157) 2021-10-22 15:36:28 +02:00
mmapmodule.c gh-99300: Replace Py_INCREF() with Py_NewRef() (#99513) 2022-11-16 10:39:47 +01:00
nismodule.c gh-91320: Use _PyCFunction_CAST() (#92251) 2022-05-03 21:42:14 +02:00
ossaudiodev.c gh-99300: Use Py_NewRef() in Modules/ directory (#99469) 2022-11-14 16:21:23 +01:00
overlapped.c gh-99300: Use Py_NewRef() in Modules/ directory (#99469) 2022-11-14 16:21:23 +01:00
posixmodule.c gh-99337: Fix compile errors with gcc 12 on macOS (#99470) 2022-11-21 10:50:20 +01:00
posixmodule.h bpo-41498: Fix build on platforms without sigset_t (GH-29770) 2021-11-25 12:28:41 +01:00
pwdmodule.c bpo-46670: Remove unused macros in the Modules directory (GH-31194) 2022-02-07 16:21:31 +01:00
pyexpat.c gh-99300: Use Py_NewRef() in Modules/ directory (#99469) 2022-11-14 16:21:23 +01:00
readline.c gh-99300: Use Py_NewRef() in Modules/ directory (#99469) 2022-11-14 16:21:23 +01:00
resource.c gh-94512: Fix forced arg format in AC-processed resource (GH-94515) 2022-07-29 12:48:11 +01:00
rotatingtree.c
rotatingtree.h bpo-32150: Expand tabs to spaces in C files. (#4583) 2017-11-28 17:56:10 +02:00
selectmodule.c gh-99300: Replace Py_INCREF() with Py_NewRef() (#99513) 2022-11-16 10:39:47 +01:00
sha1module.c bpo-43974: Move Py_BUILD_CORE_MODULE into module code (GH-29157) 2021-10-22 15:36:28 +02:00
sha256module.c bpo-43974: Move Py_BUILD_CORE_MODULE into module code (GH-29157) 2021-10-22 15:36:28 +02:00
sha512module.c bpo-43974: Move Py_BUILD_CORE_MODULE into module code (GH-29157) 2021-10-22 15:36:28 +02:00
signalmodule.c gh-98930: improve the docstring of signal.strsignal (#99290) 2022-11-13 11:41:23 -08:00
socketmodule.c gh-99300: Use Py_NewRef() in Modules/ directory (#99469) 2022-11-14 16:21:23 +01:00
socketmodule.h gh-92658: AF_HYPERV is only supported on Windows (#93192) 2022-05-25 04:44:57 +02:00
spwdmodule.c gh-91217: deprecate spwd (#91846) 2022-04-23 14:48:17 -07:00
symtablemodule.c gh-99300: Use Py_NewRef() in Modules/ directory (#99473) 2022-11-14 16:21:40 +01:00
syslogmodule.c gh-99300: Replace Py_INCREF() with Py_NewRef() (#99513) 2022-11-16 10:39:47 +01:00
termios.c Remove trailing spaces. (GH-28706) 2021-10-03 16:58:14 +03:00
timemodule.c gh-93741: Add private C API _PyImport_GetModuleAttrString() (GH-93742) 2022-06-14 07:15:26 +03:00
tkappinit.c
tkinter.h
unicodedata.c gh-99300: Use Py_NewRef() in Modules/ directory (#99473) 2022-11-14 16:21:40 +01:00
unicodedata_db.h closes gh-96734: Update to Unicode 15.0.0. (GH-96809) 2022-09-13 15:45:12 -07:00
unicodename_db.h closes gh-96734: Update to Unicode 15.0.0. (GH-96809) 2022-09-13 15:45:12 -07:00
winreparse.h bpo-31512: Add non-elevated symlink support for Windows (GH-3652) 2019-04-09 11:19:46 -07:00
xxlimited.c gh-99300: Use Py_NewRef() in Modules/ directory (#99473) 2022-11-14 16:21:40 +01:00
xxlimited_35.c gh-99300: Use Py_NewRef() in Modules/ directory (#99473) 2022-11-14 16:21:40 +01:00
xxmodule.c gh-99300: Use Py_NewRef() in Modules/ directory (#99473) 2022-11-14 16:21:40 +01:00
xxsubtype.c gh-99300: Use Py_NewRef() in Modules/ directory (#99473) 2022-11-14 16:21:40 +01:00
zlibmodule.c gh-99300: Use Py_NewRef() in Modules/ directory (#99473) 2022-11-14 16:21:40 +01:00

README

Source files for standard library extension modules,
and former extension modules that are now builtin modules.