https://github.com/python/cpython/commit/8a01fd7b9bb27c7d284e2f0152713a8619fd34a3
commit: 8a01fd7b9bb27c7d284e2f0152713a8619fd34a3
branch: main
author: Irit Katriel <[email protected]>
committer: encukou <[email protected]>
date: 2024-04-19T12:57:31+02:00
summary:

gh-115775: Add whatsnew entry about __static_attributes__ (GH-117909)


Co-authored-by: Kirill Podoprigora <[email protected]>
Co-authored-by: Petr Viktorin <[email protected]>
Co-authored-by: Jelle Zijlstra <[email protected]>

files:
M Doc/library/stdtypes.rst
M Doc/reference/datamodel.rst
M Doc/whatsnew/3.13.rst

diff --git a/Doc/library/stdtypes.rst b/Doc/library/stdtypes.rst
index fc613d4dbe1b5c..6c13bd015d5691 100644
--- a/Doc/library/stdtypes.rst
+++ b/Doc/library/stdtypes.rst
@@ -5542,6 +5542,13 @@ types, where they are relevant.  Some of these are not 
reported by the
       [<class 'bool'>, <enum 'IntEnum'>, <flag 'IntFlag'>, <class 
're._constants._NamedIntConstant'>]
 
 
+.. attribute:: class.__static_attributes__
+
+      A tuple containing names of attributes of this class which are accessed
+      through ``self.X`` from any function in its body.
+
+      .. versionadded:: 3.13
+
 .. _int_max_str_digits:
 
 Integer string conversion length limitation
diff --git a/Doc/reference/datamodel.rst b/Doc/reference/datamodel.rst
index 6d6395a21f65d2..5e1558362ffaa0 100644
--- a/Doc/reference/datamodel.rst
+++ b/Doc/reference/datamodel.rst
@@ -970,6 +970,7 @@ A class object can be called (see above) to yield a class 
instance (see below).
    single: __doc__ (class attribute)
    single: __annotations__ (class attribute)
    single: __type_params__ (class attribute)
+   single: __static_attributes__ (class attribute)
 
 Special attributes:
 
@@ -1000,6 +1001,10 @@ Special attributes:
       A tuple containing the :ref:`type parameters <type-params>` of
       a :ref:`generic class <generic-classes>`.
 
+   :attr:`~class.__static_attributes__`
+      A tuple containing names of attributes of this class which are accessed
+      through ``self.X`` from any function in its body.
+
 
 Class instances
 ---------------
diff --git a/Doc/whatsnew/3.13.rst b/Doc/whatsnew/3.13.rst
index 0ea27a081b2d2d..cf9853f94872c3 100644
--- a/Doc/whatsnew/3.13.rst
+++ b/Doc/whatsnew/3.13.rst
@@ -115,6 +115,11 @@ Improved Error Messages
         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^
     TypeError: split() got an unexpected keyword argument 'max_split'. Did you 
mean 'maxsplit'?
 
+* Classes have a new :attr:`~class.__static_attributes__` attribute, populated 
by the compiler,
+  with a tuple of names of attributes of this class which are accessed
+  through ``self.X`` from any function in its body. (Contributed by Irit 
Katriel
+  in :gh:`115775`.)
+
 Incremental Garbage Collection
 ------------------------------
 

_______________________________________________
Python-checkins mailing list -- [email protected]
To unsubscribe send an email to [email protected]
https://mail.python.org/mailman3/lists/python-checkins.python.org/
Member address: [email protected]

Reply via email to