Skip to content

Commit 3d9e755

Browse files
committed
Deploying to gh-pages from @ fc9f0d6 🚀
1 parent 608e4e9 commit 3d9e755

File tree

570 files changed

+1893
-1824
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

570 files changed

+1893
-1824
lines changed

_sources/c-api/init.rst.txt

+7-3
Original file line numberDiff line numberDiff line change
@@ -1688,7 +1688,11 @@ function. You can create and destroy them using the following functions:
16881688
.check_multi_interp_extensions = 1,
16891689
.gil = PyInterpreterConfig_OWN_GIL,
16901690
};
1691-
PyThreadState *tstate = Py_NewInterpreterFromConfig(&config);
1691+
PyThreadState *tstate = NULL;
1692+
PyStatus status = Py_NewInterpreterFromConfig(&tstate, &config);
1693+
if (PyStatus_Exception(status)) {
1694+
Py_ExitStatusException(status);
1695+
}
16921696
16931697
Note that the config is used only briefly and does not get modified.
16941698
During initialization the config's values are converted into various
@@ -2416,7 +2420,7 @@ code triggered by the finalizer blocks and calls :c:func:`PyEval_SaveThread`.
24162420
24172421
{
24182422
PyCriticalSection2 _py_cs2;
2419-
PyCriticalSection_Begin2(&_py_cs2, (PyObject*)(a), (PyObject*)(b))
2423+
PyCriticalSection2_Begin(&_py_cs2, (PyObject*)(a), (PyObject*)(b))
24202424
24212425
In the default build, this macro expands to ``{``.
24222426
@@ -2428,7 +2432,7 @@ code triggered by the finalizer blocks and calls :c:func:`PyEval_SaveThread`.
24282432
24292433
In the free-threaded build, this macro expands to::
24302434
2431-
PyCriticalSection_End2(&_py_cs2);
2435+
PyCriticalSection2_End(&_py_cs2);
24322436
}
24332437
24342438
In the default build, this macro expands to ``}``.

_sources/c-api/object.rst.txt

+1-1
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,7 @@ Object Protocol
8585
instead of the :func:`repr`.
8686
8787
88-
.. c:function:: int PyObject_HasAttrWithError(PyObject *o, const char *attr_name)
88+
.. c:function:: int PyObject_HasAttrWithError(PyObject *o, PyObject *attr_name)
8989
9090
Returns ``1`` if *o* has the attribute *attr_name*, and ``0`` otherwise.
9191
This is equivalent to the Python expression ``hasattr(o, attr_name)``.

_sources/howto/descriptor.rst.txt

+50-50
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ add new capabilities one by one.
4242
Simple example: A descriptor that returns a constant
4343
----------------------------------------------------
4444

45-
The :class:`Ten` class is a descriptor whose :meth:`__get__` method always
45+
The :class:`!Ten` class is a descriptor whose :meth:`~object.__get__` method always
4646
returns the constant ``10``:
4747

4848
.. testcode::
@@ -120,10 +120,10 @@ different, updated answers each time::
120120
2
121121

122122
Besides showing how descriptors can run computations, this example also
123-
reveals the purpose of the parameters to :meth:`__get__`. The *self*
123+
reveals the purpose of the parameters to :meth:`~object.__get__`. The *self*
124124
parameter is *size*, an instance of *DirectorySize*. The *obj* parameter is
125125
either *g* or *s*, an instance of *Directory*. It is the *obj* parameter that
126-
lets the :meth:`__get__` method learn the target directory. The *objtype*
126+
lets the :meth:`~object.__get__` method learn the target directory. The *objtype*
127127
parameter is the class *Directory*.
128128

129129

@@ -133,7 +133,7 @@ Managed attributes
133133
A popular use for descriptors is managing access to instance data. The
134134
descriptor is assigned to a public attribute in the class dictionary while the
135135
actual data is stored as a private attribute in the instance dictionary. The
136-
descriptor's :meth:`__get__` and :meth:`__set__` methods are triggered when
136+
descriptor's :meth:`~object.__get__` and :meth:`~object.__set__` methods are triggered when
137137
the public attribute is accessed.
138138

139139
In the following example, *age* is the public attribute and *_age* is the
@@ -215,9 +215,9 @@ Customized names
215215
When a class uses descriptors, it can inform each descriptor about which
216216
variable name was used.
217217

218-
In this example, the :class:`Person` class has two descriptor instances,
219-
*name* and *age*. When the :class:`Person` class is defined, it makes a
220-
callback to :meth:`__set_name__` in *LoggedAccess* so that the field names can
218+
In this example, the :class:`!Person` class has two descriptor instances,
219+
*name* and *age*. When the :class:`!Person` class is defined, it makes a
220+
callback to :meth:`~object.__set_name__` in *LoggedAccess* so that the field names can
221221
be recorded, giving each descriptor its own *public_name* and *private_name*:
222222

223223
.. testcode::
@@ -253,8 +253,8 @@ be recorded, giving each descriptor its own *public_name* and *private_name*:
253253
def birthday(self):
254254
self.age += 1
255255

256-
An interactive session shows that the :class:`Person` class has called
257-
:meth:`__set_name__` so that the field names would be recorded. Here
256+
An interactive session shows that the :class:`!Person` class has called
257+
:meth:`~object.__set_name__` so that the field names would be recorded. Here
258258
we call :func:`vars` to look up the descriptor without triggering it:
259259

260260
.. doctest::
@@ -294,10 +294,10 @@ The two *Person* instances contain only the private names:
294294
Closing thoughts
295295
----------------
296296

297-
A :term:`descriptor` is what we call any object that defines :meth:`__get__`,
298-
:meth:`__set__`, or :meth:`__delete__`.
297+
A :term:`descriptor` is what we call any object that defines :meth:`~object.__get__`,
298+
:meth:`~object.__set__`, or :meth:`~object.__delete__`.
299299

300-
Optionally, descriptors can have a :meth:`__set_name__` method. This is only
300+
Optionally, descriptors can have a :meth:`~object.__set_name__` method. This is only
301301
used in cases where a descriptor needs to know either the class where it was
302302
created or the name of class variable it was assigned to. (This method, if
303303
present, is called even if the class is not a descriptor.)
@@ -337,7 +337,7 @@ any data, it verifies that the new value meets various type and range
337337
restrictions. If those restrictions aren't met, it raises an exception to
338338
prevent data corruption at its source.
339339

340-
This :class:`Validator` class is both an :term:`abstract base class` and a
340+
This :class:`!Validator` class is both an :term:`abstract base class` and a
341341
managed attribute descriptor:
342342

343343
.. testcode::
@@ -360,22 +360,22 @@ managed attribute descriptor:
360360
def validate(self, value):
361361
pass
362362

363-
Custom validators need to inherit from :class:`Validator` and must supply a
364-
:meth:`validate` method to test various restrictions as needed.
363+
Custom validators need to inherit from :class:`!Validator` and must supply a
364+
:meth:`!validate` method to test various restrictions as needed.
365365

366366

367367
Custom validators
368368
-----------------
369369

370370
Here are three practical data validation utilities:
371371

372-
1) :class:`OneOf` verifies that a value is one of a restricted set of options.
372+
1) :class:`!OneOf` verifies that a value is one of a restricted set of options.
373373

374-
2) :class:`Number` verifies that a value is either an :class:`int` or
374+
2) :class:`!Number` verifies that a value is either an :class:`int` or
375375
:class:`float`. Optionally, it verifies that a value is between a given
376376
minimum or maximum.
377377

378-
3) :class:`String` verifies that a value is a :class:`str`. Optionally, it
378+
3) :class:`!String` verifies that a value is a :class:`str`. Optionally, it
379379
validates a given minimum or maximum length. It can validate a
380380
user-defined `predicate
381381
<https://en.wikipedia.org/wiki/Predicate_(mathematical_logic)>`_ as well.
@@ -501,8 +501,8 @@ Definition and introduction
501501
---------------------------
502502

503503
In general, a descriptor is an attribute value that has one of the methods in
504-
the descriptor protocol. Those methods are :meth:`__get__`, :meth:`__set__`,
505-
and :meth:`__delete__`. If any of those methods are defined for an
504+
the descriptor protocol. Those methods are :meth:`~object.__get__`, :meth:`~object.__set__`,
505+
and :meth:`~object.__delete__`. If any of those methods are defined for an
506506
attribute, it is said to be a :term:`descriptor`.
507507

508508
The default behavior for attribute access is to get, set, or delete the
@@ -534,8 +534,8 @@ That is all there is to it. Define any of these methods and an object is
534534
considered a descriptor and can override default behavior upon being looked up
535535
as an attribute.
536536

537-
If an object defines :meth:`__set__` or :meth:`__delete__`, it is considered
538-
a data descriptor. Descriptors that only define :meth:`__get__` are called
537+
If an object defines :meth:`~object.__set__` or :meth:`~object.__delete__`, it is considered
538+
a data descriptor. Descriptors that only define :meth:`~object.__get__` are called
539539
non-data descriptors (they are often used for methods but other uses are
540540
possible).
541541

@@ -545,9 +545,9 @@ has an entry with the same name as a data descriptor, the data descriptor
545545
takes precedence. If an instance's dictionary has an entry with the same
546546
name as a non-data descriptor, the dictionary entry takes precedence.
547547

548-
To make a read-only data descriptor, define both :meth:`__get__` and
549-
:meth:`__set__` with the :meth:`__set__` raising an :exc:`AttributeError` when
550-
called. Defining the :meth:`__set__` method with an exception raising
548+
To make a read-only data descriptor, define both :meth:`~object.__get__` and
549+
:meth:`~object.__set__` with the :meth:`~object.__set__` raising an :exc:`AttributeError` when
550+
called. Defining the :meth:`~object.__set__` method with an exception raising
551551
placeholder is enough to make it a data descriptor.
552552

553553

@@ -574,7 +574,7 @@ Invocation from an instance
574574

575575
Instance lookup scans through a chain of namespaces giving data descriptors
576576
the highest priority, followed by instance variables, then non-data
577-
descriptors, then class variables, and lastly :meth:`__getattr__` if it is
577+
descriptors, then class variables, and lastly :meth:`~object.__getattr__` if it is
578578
provided.
579579

580580
If a descriptor is found for ``a.x``, then it is invoked with:
@@ -719,12 +719,12 @@ a pure Python equivalent:
719719
>>> object_getattribute(u2, 'x') == u2.x == (D1, u2, U2)
720720
True
721721

722-
Note, there is no :meth:`__getattr__` hook in the :meth:`__getattribute__`
723-
code. That is why calling :meth:`__getattribute__` directly or with
724-
``super().__getattribute__`` will bypass :meth:`__getattr__` entirely.
722+
Note, there is no :meth:`~object.__getattr__` hook in the :meth:`~object.__getattribute__`
723+
code. That is why calling :meth:`~object.__getattribute__` directly or with
724+
``super().__getattribute__`` will bypass :meth:`~object.__getattr__` entirely.
725725

726726
Instead, it is the dot operator and the :func:`getattr` function that are
727-
responsible for invoking :meth:`__getattr__` whenever :meth:`__getattribute__`
727+
responsible for invoking :meth:`~object.__getattr__` whenever :meth:`~object.__getattribute__`
728728
raises an :exc:`AttributeError`. Their logic is encapsulated in a helper
729729
function:
730730

@@ -776,8 +776,8 @@ Invocation from a class
776776
-----------------------
777777

778778
The logic for a dotted lookup such as ``A.x`` is in
779-
:meth:`type.__getattribute__`. The steps are similar to those for
780-
:meth:`object.__getattribute__` but the instance dictionary lookup is replaced
779+
:meth:`!type.__getattribute__`. The steps are similar to those for
780+
:meth:`!object.__getattribute__` but the instance dictionary lookup is replaced
781781
by a search through the class's :term:`method resolution order`.
782782

783783
If a descriptor is found, it is invoked with ``desc.__get__(None, A)``.
@@ -789,7 +789,7 @@ The full C implementation can be found in :c:func:`!type_getattro` and
789789
Invocation from super
790790
---------------------
791791

792-
The logic for super's dotted lookup is in the :meth:`__getattribute__` method for
792+
The logic for super's dotted lookup is in the :meth:`~object.__getattribute__` method for
793793
object returned by :func:`super`.
794794

795795
A dotted lookup such as ``super(A, obj).m`` searches ``obj.__class__.__mro__``
@@ -806,21 +806,21 @@ The full C implementation can be found in :c:func:`!super_getattro` in
806806
Summary of invocation logic
807807
---------------------------
808808

809-
The mechanism for descriptors is embedded in the :meth:`__getattribute__`
809+
The mechanism for descriptors is embedded in the :meth:`~object.__getattribute__`
810810
methods for :class:`object`, :class:`type`, and :func:`super`.
811811

812812
The important points to remember are:
813813

814-
* Descriptors are invoked by the :meth:`__getattribute__` method.
814+
* Descriptors are invoked by the :meth:`~object.__getattribute__` method.
815815

816816
* Classes inherit this machinery from :class:`object`, :class:`type`, or
817817
:func:`super`.
818818

819-
* Overriding :meth:`__getattribute__` prevents automatic descriptor calls
819+
* Overriding :meth:`~object.__getattribute__` prevents automatic descriptor calls
820820
because all the descriptor logic is in that method.
821821

822-
* :meth:`object.__getattribute__` and :meth:`type.__getattribute__` make
823-
different calls to :meth:`__get__`. The first includes the instance and may
822+
* :meth:`!object.__getattribute__` and :meth:`!type.__getattribute__` make
823+
different calls to :meth:`~object.__get__`. The first includes the instance and may
824824
include the class. The second puts in ``None`` for the instance and always
825825
includes the class.
826826

@@ -835,16 +835,16 @@ Automatic name notification
835835
Sometimes it is desirable for a descriptor to know what class variable name it
836836
was assigned to. When a new class is created, the :class:`type` metaclass
837837
scans the dictionary of the new class. If any of the entries are descriptors
838-
and if they define :meth:`__set_name__`, that method is called with two
838+
and if they define :meth:`~object.__set_name__`, that method is called with two
839839
arguments. The *owner* is the class where the descriptor is used, and the
840840
*name* is the class variable the descriptor was assigned to.
841841

842842
The implementation details are in :c:func:`!type_new` and
843843
:c:func:`!set_names` in :source:`Objects/typeobject.c`.
844844

845-
Since the update logic is in :meth:`type.__new__`, notifications only take
845+
Since the update logic is in :meth:`!type.__new__`, notifications only take
846846
place at the time of class creation. If descriptors are added to the class
847-
afterwards, :meth:`__set_name__` will need to be called manually.
847+
afterwards, :meth:`~object.__set_name__` will need to be called manually.
848848

849849

850850
ORM example
@@ -873,7 +873,7 @@ care of lookups or updates:
873873
conn.execute(self.store, [value, obj.key])
874874
conn.commit()
875875

876-
We can use the :class:`Field` class to define `models
876+
We can use the :class:`!Field` class to define `models
877877
<https://en.wikipedia.org/wiki/Database_model>`_ that describe the schema for
878878
each table in a database:
879879

@@ -1140,7 +1140,7 @@ to wrap access to the value attribute in a property data descriptor:
11401140
self.recalc()
11411141
return self._value
11421142

1143-
Either the built-in :func:`property` or our :func:`Property` equivalent would
1143+
Either the built-in :func:`property` or our :func:`!Property` equivalent would
11441144
work in this example.
11451145

11461146

@@ -1187,7 +1187,7 @@ roughly equivalent to:
11871187
return self
11881188

11891189
To support automatic creation of methods, functions include the
1190-
:meth:`__get__` method for binding methods during attribute access. This
1190+
:meth:`~object.__get__` method for binding methods during attribute access. This
11911191
means that functions are non-data descriptors that return bound methods
11921192
during dotted lookup from an instance. Here's how it works:
11931193

@@ -1231,19 +1231,19 @@ The function has a :term:`qualified name` attribute to support introspection:
12311231
'D.f'
12321232

12331233
Accessing the function through the class dictionary does not invoke
1234-
:meth:`__get__`. Instead, it just returns the underlying function object::
1234+
:meth:`~object.__get__`. Instead, it just returns the underlying function object::
12351235

12361236
>>> D.__dict__['f']
12371237
<function D.f at 0x00C45070>
12381238

1239-
Dotted access from a class calls :meth:`__get__` which just returns the
1239+
Dotted access from a class calls :meth:`~object.__get__` which just returns the
12401240
underlying function unchanged::
12411241

12421242
>>> D.f
12431243
<function D.f at 0x00C45070>
12441244

12451245
The interesting behavior occurs during dotted access from an instance. The
1246-
dotted lookup calls :meth:`__get__` which returns a bound method object::
1246+
dotted lookup calls :meth:`~object.__get__` which returns a bound method object::
12471247

12481248
>>> d = D()
12491249
>>> d.f
@@ -1268,7 +1268,7 @@ Kinds of methods
12681268
Non-data descriptors provide a simple mechanism for variations on the usual
12691269
patterns of binding functions into methods.
12701270

1271-
To recap, functions have a :meth:`__get__` method so that they can be converted
1271+
To recap, functions have a :meth:`~object.__get__` method so that they can be converted
12721272
to a method when accessed as attributes. The non-data descriptor transforms an
12731273
``obj.f(*args)`` call into ``f(obj, *args)``. Calling ``cls.f(*args)``
12741274
becomes ``f(*args)``.
@@ -1667,7 +1667,7 @@ by member descriptors:
16671667
'Emulate member_repr() in Objects/descrobject.c'
16681668
return f'<Member {self.name!r} of {self.clsname!r}>'
16691669

1670-
The :meth:`type.__new__` method takes care of adding member objects to class
1670+
The :meth:`!type.__new__` method takes care of adding member objects to class
16711671
variables:
16721672

16731673
.. testcode::
@@ -1718,7 +1718,7 @@ Python:
17181718
)
17191719
super().__delattr__(name)
17201720

1721-
To use the simulation in a real class, just inherit from :class:`Object` and
1721+
To use the simulation in a real class, just inherit from :class:`!Object` and
17221722
set the :term:`metaclass` to :class:`Type`:
17231723

17241724
.. testcode::

0 commit comments

Comments
 (0)