# Copyright (C) 2001-2018, Python Software Foundation # For licence information, see README file. # msgid "" msgstr "" "Project-Id-Version: Python 3\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2020-08-24 09:01+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: FRENCH \n" "Language: fr\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" #: c-api/gcsupport.rst:6 msgid "Supporting Cyclic Garbage Collection" msgstr "" #: c-api/gcsupport.rst:8 msgid "" "Python's support for detecting and collecting garbage which involves " "circular references requires support from object types which are \"containers" "\" for other objects which may also be containers. Types which do not store " "references to other objects, or which only store references to atomic types " "(such as numbers or strings), do not need to provide any explicit support " "for garbage collection." msgstr "" #: c-api/gcsupport.rst:15 msgid "" "To create a container type, the :c:member:`~PyTypeObject.tp_flags` field of " "the type object must include the :const:`Py_TPFLAGS_HAVE_GC` and provide an " "implementation of the :c:member:`~PyTypeObject.tp_traverse` handler. If " "instances of the type are mutable, a :c:member:`~PyTypeObject.tp_clear` " "implementation must also be provided." msgstr "" #: c-api/gcsupport.rst:24 msgid "" "Objects with a type with this flag set must conform with the rules " "documented here. For convenience these objects will be referred to as " "container objects." msgstr "" #: c-api/gcsupport.rst:28 msgid "Constructors for container types must conform to two rules:" msgstr "" #: c-api/gcsupport.rst:30 msgid "" "The memory for the object must be allocated using :c:func:`PyObject_GC_New` " "or :c:func:`PyObject_GC_NewVar`." msgstr "" #: c-api/gcsupport.rst:33 msgid "" "Once all the fields which may contain references to other containers are " "initialized, it must call :c:func:`PyObject_GC_Track`." msgstr "" #: c-api/gcsupport.rst:39 msgid "" "Analogous to :c:func:`PyObject_New` but for container objects with the :" "const:`Py_TPFLAGS_HAVE_GC` flag set." msgstr "" #: c-api/gcsupport.rst:45 msgid "" "Analogous to :c:func:`PyObject_NewVar` but for container objects with the :" "const:`Py_TPFLAGS_HAVE_GC` flag set." msgstr "" #: c-api/gcsupport.rst:51 msgid "" "Resize an object allocated by :c:func:`PyObject_NewVar`. Returns the " "resized object or ``NULL`` on failure. *op* must not be tracked by the " "collector yet." msgstr "" #: c-api/gcsupport.rst:57 msgid "" "Adds the object *op* to the set of container objects tracked by the " "collector. The collector can run at unexpected times so objects must be " "valid while being tracked. This should be called once all the fields " "followed by the :c:member:`~PyTypeObject.tp_traverse` handler become valid, " "usually near the end of the constructor." msgstr "" #: c-api/gcsupport.rst:66 msgid "" "Returns non-zero if the object implements the garbage collector protocol, " "otherwise returns 0." msgstr "" #: c-api/gcsupport.rst:69 msgid "" "The object cannot be tracked by the garbage collector if this function " "returns 0." msgstr "" #: c-api/gcsupport.rst:74 msgid "" "Returns 1 if the object type of *op* implements the GC protocol and *op* is " "being currently tracked by the garbage collector and 0 otherwise." msgstr "" #: c-api/gcsupport.rst:77 msgid "This is analogous to the Python function :func:`gc.is_tracked`." msgstr "" #: c-api/gcsupport.rst:84 msgid "" "Returns 1 if the object type of *op* implements the GC protocol and *op* has " "been already finalized by the garbage collector and 0 otherwise." msgstr "" #: c-api/gcsupport.rst:87 msgid "This is analogous to the Python function :func:`gc.is_finalized`." msgstr "" #: c-api/gcsupport.rst:91 msgid "" "Similarly, the deallocator for the object must conform to a similar pair of " "rules:" msgstr "" #: c-api/gcsupport.rst:94 msgid "" "Before fields which refer to other containers are invalidated, :c:func:" "`PyObject_GC_UnTrack` must be called." msgstr "" #: c-api/gcsupport.rst:97 msgid "" "The object's memory must be deallocated using :c:func:`PyObject_GC_Del`." msgstr "" #: c-api/gcsupport.rst:102 msgid "" "Releases memory allocated to an object using :c:func:`PyObject_GC_New` or :c:" "func:`PyObject_GC_NewVar`." msgstr "" #: c-api/gcsupport.rst:108 msgid "" "Remove the object *op* from the set of container objects tracked by the " "collector. Note that :c:func:`PyObject_GC_Track` can be called again on " "this object to add it back to the set of tracked objects. The deallocator (:" "c:member:`~PyTypeObject.tp_dealloc` handler) should call this for the object " "before any of the fields used by the :c:member:`~PyTypeObject.tp_traverse` " "handler become invalid." msgstr "" #: c-api/gcsupport.rst:117 msgid "" "The :c:func:`_PyObject_GC_TRACK` and :c:func:`_PyObject_GC_UNTRACK` macros " "have been removed from the public C API." msgstr "" #: c-api/gcsupport.rst:120 msgid "" "The :c:member:`~PyTypeObject.tp_traverse` handler accepts a function " "parameter of this type:" msgstr "" #: c-api/gcsupport.rst:125 msgid "" "Type of the visitor function passed to the :c:member:`~PyTypeObject." "tp_traverse` handler. The function should be called with an object to " "traverse as *object* and the third parameter to the :c:member:`~PyTypeObject." "tp_traverse` handler as *arg*. The Python core uses several visitor " "functions to implement cyclic garbage detection; it's not expected that " "users will need to write their own visitor functions." msgstr "" #: c-api/gcsupport.rst:132 msgid "" "The :c:member:`~PyTypeObject.tp_traverse` handler must have the following " "type:" msgstr "" #: c-api/gcsupport.rst:137 msgid "" "Traversal function for a container object. Implementations must call the " "*visit* function for each object directly contained by *self*, with the " "parameters to *visit* being the contained object and the *arg* value passed " "to the handler. The *visit* function must not be called with a ``NULL`` " "object argument. If *visit* returns a non-zero value that value should be " "returned immediately." msgstr "" #: c-api/gcsupport.rst:144 msgid "" "To simplify writing :c:member:`~PyTypeObject.tp_traverse` handlers, a :c:" "func:`Py_VISIT` macro is provided. In order to use this macro, the :c:" "member:`~PyTypeObject.tp_traverse` implementation must name its arguments " "exactly *visit* and *arg*:" msgstr "" #: c-api/gcsupport.rst:151 msgid "" "If *o* is not ``NULL``, call the *visit* callback, with arguments *o* and " "*arg*. If *visit* returns a non-zero value, then return it. Using this " "macro, :c:member:`~PyTypeObject.tp_traverse` handlers look like::" msgstr "" #: c-api/gcsupport.rst:164 msgid "" "The :c:member:`~PyTypeObject.tp_clear` handler must be of the :c:type:" "`inquiry` type, or ``NULL`` if the object is immutable." msgstr "" #: c-api/gcsupport.rst:170 msgid "" "Drop references that may have created reference cycles. Immutable objects " "do not have to define this method since they can never directly create " "reference cycles. Note that the object must still be valid after calling " "this method (don't just call :c:func:`Py_DECREF` on a reference). The " "collector will call this method if it detects that this object is involved " "in a reference cycle." msgstr ""