# SOME DESCRIPTIVE TITLE. # Copyright (C) 2001 Python Software Foundation # This file is distributed under the same license as the Python package. # FIRST AUTHOR , YEAR. # # Translators: # python-doc bot, 2025 # #, fuzzy msgid "" msgstr "" "Project-Id-Version: Python 3.15\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2026-08-21 14:26+0000\n" "PO-Revision-Date: 2025-09-16 00:00+0000\n" "Last-Translator: python-doc bot, 2025\n" "Language-Team: Polish (https://app.transifex.com/python-doc/teams/5390/pl/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: pl\n" "Plural-Forms: nplurals=4; plural=(n==1 ? 0 : (n%10>=2 && n%10<=4) && " "(n%100<12 || n%100>14) ? 1 : n!=1 && (n%10>=0 && n%10<=1) || (n%10>=5 && " "n%10<=9) || (n%100>=12 && n%100<=14) ? 2 : 3);\n" msgid "Supporting Cyclic Garbage Collection" msgstr "" 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 "" msgid "" "To create a container type, the :c:member:`~PyTypeObject.tp_flags` field of " "the type object must include the :c:macro:`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 "" msgid ":c:macro:`Py_TPFLAGS_HAVE_GC`" msgstr ":c:macro:`Py_TPFLAGS_HAVE_GC`" 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 "" msgid "Constructors for container types must conform to two rules:" msgstr "" msgid "" "The memory for the object must be allocated using :c:macro:`PyObject_GC_New` " "or :c:macro:`PyObject_GC_NewVar`." msgstr "" msgid "" "Once all the fields which may contain references to other containers are " "initialized, it must call :c:func:`PyObject_GC_Track`." msgstr "" msgid "" "Similarly, the deallocator for the object must conform to a similar pair of " "rules:" msgstr "" msgid "" "Before fields which refer to other containers are invalidated, :c:func:" "`PyObject_GC_UnTrack` must be called." msgstr "" msgid "" "The object's memory must be deallocated using :c:func:`PyObject_GC_Del`." msgstr "" msgid "" "If a type adds the Py_TPFLAGS_HAVE_GC, then it *must* implement at least a :" "c:member:`~PyTypeObject.tp_traverse` handler or explicitly use one from its " "subclass or subclasses." msgstr "" msgid "" "When calling :c:func:`PyType_Ready` or some of the APIs that indirectly call " "it like :c:func:`PyType_FromSpecWithBases` or :c:func:`PyType_FromSpec` the " "interpreter will automatically populate the :c:member:`~PyTypeObject." "tp_flags`, :c:member:`~PyTypeObject.tp_traverse` and :c:member:" "`~PyTypeObject.tp_clear` fields if the type inherits from a class that " "implements the garbage collector protocol and the child class does *not* " "include the :c:macro:`Py_TPFLAGS_HAVE_GC` flag." msgstr "" msgid "" "Analogous to :c:macro:`PyObject_New` but for container objects with the :c:" "macro:`Py_TPFLAGS_HAVE_GC` flag set." msgstr "" msgid "" "Do not call this directly to allocate memory for an object; call the type's :" "c:member:`~PyTypeObject.tp_alloc` slot instead." msgstr "" msgid "" "When populating a type's :c:member:`~PyTypeObject.tp_alloc` slot, :c:func:" "`PyType_GenericAlloc` is preferred over a custom function that simply calls " "this macro." msgstr "" msgid "" "Memory allocated by this macro must be freed with :c:func:`PyObject_GC_Del` " "(usually called via the object's :c:member:`~PyTypeObject.tp_free` slot)." msgstr "" msgid ":c:func:`PyObject_GC_Del`" msgstr "" msgid ":c:macro:`PyObject_New`" msgstr "" msgid ":c:func:`PyType_GenericAlloc`" msgstr "" msgid ":c:member:`~PyTypeObject.tp_alloc`" msgstr ":c:member:`~PyTypeObject.tp_alloc`" msgid "" "Analogous to :c:macro:`PyObject_NewVar` but for container objects with the :" "c:macro:`Py_TPFLAGS_HAVE_GC` flag set." msgstr "" msgid ":c:macro:`PyObject_NewVar`" msgstr "" msgid "" "Analogous to :c:macro:`PyObject_GC_New` but allocates *extra_size* bytes at " "the end of the object (at offset :c:member:`~PyTypeObject.tp_basicsize`). " "The allocated memory is initialized to zeros, except for the :c:type:`Python " "object header `." msgstr "" msgid "" "The extra data will be deallocated with the object, but otherwise it is not " "managed by Python." msgstr "" msgid "" "Memory allocated by this function must be freed with :c:func:" "`PyObject_GC_Del` (usually called via the object's :c:member:`~PyTypeObject." "tp_free` slot)." msgstr "" msgid "" "The function is marked as unstable because the final mechanism for reserving " "extra data after an instance is not yet decided. For allocating a variable " "number of fields, prefer using :c:type:`PyVarObject` and :c:member:" "`~PyTypeObject.tp_itemsize` instead." msgstr "" msgid "" "Resize an object allocated by :c:macro:`PyObject_NewVar`. Returns the " "resized object of type ``TYPE*`` (refers to any C type) or ``NULL`` on " "failure." msgstr "" msgid "" "*op* must be of type :c:expr:`PyVarObject *` and must not be tracked by the " "collector yet. *newsize* must be of type :c:type:`Py_ssize_t`." msgstr "" 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 "" msgid "" "Returns non-zero if the object implements the garbage collector protocol, " "otherwise returns 0." msgstr "" msgid "" "The object cannot be tracked by the garbage collector if this function " "returns 0." msgstr "" 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 "" msgid "This is analogous to the Python function :func:`gc.is_tracked`." msgstr "" 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 "" msgid "This is analogous to the Python function :func:`gc.is_finalized`." msgstr "" msgid "" "Releases memory allocated to an object using :c:macro:`PyObject_GC_New` or :" "c:macro:`PyObject_GC_NewVar`." msgstr "" msgid "" "Do not call this directly to free an object's memory; call the type's :c:" "member:`~PyTypeObject.tp_free` slot instead." msgstr "" msgid "" "Do not use this for memory allocated by :c:macro:`PyObject_New`, :c:macro:" "`PyObject_NewVar`, or related allocation functions; use :c:func:" "`PyObject_Free` instead." msgstr "" msgid ":c:func:`PyObject_Free` is the non-GC equivalent of this function." msgstr "" msgid ":c:macro:`PyObject_GC_New`" msgstr "" msgid ":c:macro:`PyObject_GC_NewVar`" msgstr "" msgid ":c:member:`~PyTypeObject.tp_free`" msgstr ":c:member:`~PyTypeObject.tp_free`" 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 "" msgid "" "The :c:func:`!_PyObject_GC_TRACK` and :c:func:`!_PyObject_GC_UNTRACK` macros " "have been removed from the public C API." msgstr "" msgid "" "The :c:member:`~PyTypeObject.tp_traverse` handler accepts a function " "parameter of this type:" msgstr "" 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 "" msgid "" "The :c:member:`~PyTypeObject.tp_clear` handler must be of the :c:type:" "`inquiry` type, or ``NULL`` if the object is immutable." msgstr "" 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 "" msgid "Traversal" msgstr "" msgid "" "The :c:member:`~PyTypeObject.tp_traverse` handler must have the following " "type:" msgstr "" msgid "" "Traversal function for a garbage-collected object, used by the garbage " "collector to detect reference cycles. 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 "" msgid "" "A typical :c:member:`!tp_traverse` function calls the :c:func:`Py_VISIT` " "convenience macro on each of the instance's members that are Python objects " "that the instance owns. For example, this is a (slightly outdated) traversal " "function for the :py:class:`threading.local` class::" msgstr "" msgid "" "static int\n" "local_traverse(PyObject *op, visitproc visit, void *arg)\n" "{\n" " localobject *self = (localobject *) op;\n" " Py_VISIT(Py_TYPE(self));\n" " Py_VISIT(self->args);\n" " Py_VISIT(self->kw);\n" " Py_VISIT(self->dict);\n" " return 0;\n" "}" msgstr "" msgid "" ":c:func:`Py_VISIT` requires the *visit* and *arg* parameters to :c:func:`!" "local_traverse` to have these specific names; don't name them just anything." msgstr "" msgid "" "Instances of :ref:`heap-allocated types ` hold a reference to " "their type. Their traversal function must therefore visit the type::" msgstr "" msgid "Py_VISIT(Py_TYPE(self));" msgstr "" msgid "" "Alternately, the type may delegate this responsibility by calling " "``tp_traverse`` of a heap-allocated superclass (or another heap-allocated " "type, if applicable). If they do not, the type object may not be garbage-" "collected." msgstr "" msgid "" "If the :c:macro:`Py_TPFLAGS_MANAGED_DICT` bit is set in the :c:member:" "`~PyTypeObject.tp_flags` field, the traverse function must call :c:func:" "`PyObject_VisitManagedDict` like this::" msgstr "" msgid "" "int err = PyObject_VisitManagedDict((PyObject*)self, visit, arg);\n" "if (err) {\n" " return err;\n" "}" msgstr "" msgid "" "Only the members that the instance *owns* (by having :term:`strong " "references ` to them) must be visited. For instance, if an " "object supports weak references via the :c:member:`~PyTypeObject." "tp_weaklist` slot, the pointer supporting the linked list (what " "*tp_weaklist* points to) must **not** be visited as the instance does not " "directly own the weak references to itself." msgstr "" msgid "The traversal function has a limitation:" msgstr "" msgid "" "The traversal function must not have any side effects. Implementations may " "not modify the reference counts of any Python objects nor create or destroy " "any Python objects, directly or indirectly." msgstr "" msgid "" "This means that *most* Python C API functions may not be used, since they " "can raise a new exception, return a new reference to a result object, have " "internal logic that uses side effects. Also, unless documented otherwise, " "functions that happen to not have side effects may start having them in " "future versions, without warning." msgstr "" msgid "" "For a list of safe functions, see a :ref:`separate section ` below." msgstr "" msgid "" "The :c:func:`Py_VISIT` call may be skipped for those members that provably " "cannot participate in reference cycles. In the ``local_traverse`` example " "above, there is also a ``self->key`` member, but it can only be ``NULL`` or " "a Python string and therefore cannot be part of a reference cycle." msgstr "" msgid "" "On the other hand, even if you know a member can never be part of a cycle, " "as a debugging aid you may want to visit it anyway just so the :mod:`gc` " "module's :func:`~gc.get_referents` function will include it." msgstr "" msgid "" "The :c:member:`~PyTypeObject.tp_traverse` function can be called from any " "thread." msgstr "" msgid "" "Garbage collection is a \"stop-the-world\" operation: even in :term:`free " "threading` builds, only one thread state is :term:`attached ` when :c:member:`!tp_traverse` handlers run." msgstr "" msgid "" "Heap-allocated types are expected to visit ``Py_TYPE(self)`` in " "``tp_traverse``. In earlier versions of Python, due to `bug 40217 `_, doing this may lead to crashes in subclasses." msgstr "" 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 "" msgid "" "If the :c:expr:`PyObject *` *o* is not ``NULL``, call the *visit* callback, " "with arguments *o* and *arg*. If *visit* returns a non-zero value, then " "return it." msgstr "" msgid "This corresponds roughly to::" msgstr "" msgid "" "#define Py_VISIT(o) \\\n" " if (op) { \\\n" " int visit_result = visit(o, arg); \\\n" " if (visit_result != 0) { \\\n" " return visit_result; \\\n" " } \\\n" " }" msgstr "" msgid "Traversal-safe functions" msgstr "" msgid "" "The following functions and macros are safe to use in a :c:member:" "`~PyTypeObject.tp_traverse` handler:" msgstr "" msgid "the *visit* function passed to ``tp_traverse``" msgstr "" msgid ":c:func:`Py_VISIT`" msgstr "" msgid ":c:func:`Py_SIZE`" msgstr "" msgid "" ":c:func:`Py_TYPE`: if called from a :c:member:`!tp_traverse` handler, :c:" "func:`!Py_TYPE`'s result will be valid for the duration of the handler call" msgstr "" msgid ":c:func:`PyObject_VisitManagedDict`" msgstr "" msgid "" ":c:func:`PyObject_TypeCheck`, :c:func:`PyType_IsSubtype`, :c:func:" "`PyType_HasFeature`" msgstr "" msgid "" ":samp:`Py{}_Check` and :samp:`Py{}_CheckExact` -- for example, :" "c:func:`PyTuple_Check`" msgstr "" msgid ":ref:`duringgc-functions`" msgstr "" msgid "\"DuringGC\" functions" msgstr "" msgid "" "The following functions should *only* be used in a :c:member:`~PyTypeObject." "tp_traverse` handler; calling them in other contexts may have unintended " "consequences." msgstr "" msgid "" "These functions act like their counterparts without the ``_DuringGC`` " "suffix, but they are guaranteed to not have side effects, they do not set an " "exception on failure, and they return/set :term:`borrowed references " "` as detailed in the individual documentation." msgstr "" msgid "" "Note that these functions may fail (return ``NULL`` or ``-1``), but as they " "do not set an exception, no error information is available. In some cases, " "failure is not distinguishable from a successful ``NULL`` result." msgstr "" msgid "See :ref:`duringgc-functions` for common information." msgstr "" msgid "" ":c:func:`PyObject_GetTypeData`, :c:func:`PyObject_GetItemData`, :c:func:" "`PyType_GetModuleState`, :c:func:`PyModule_GetState`, :c:func:" "`PyModule_GetToken`, :c:func:`PyType_GetBaseByToken`" msgstr "" msgid "" "Sets *\\*result* to a :term:`borrowed reference` rather than a strong one. " "The reference is valid for the duration of the :c:member:`!tp_traverse` " "handler call." msgstr "" msgid ":c:func:`PyType_GetBaseByToken`" msgstr "" msgid "" "These functions return a :term:`borrowed reference`, which is valid for the " "duration of the :c:member:`!tp_traverse` handler call." msgstr "" msgid ":c:func:`PyType_GetModule`, :c:func:`PyType_GetModuleByToken`" msgstr "" msgid "Controlling the Garbage Collector State" msgstr "" msgid "" "The C-API provides the following functions for controlling garbage " "collection runs." msgstr "" msgid "" "Perform a full garbage collection, if the garbage collector is enabled. " "(Note that :func:`gc.collect` runs it unconditionally.)" msgstr "" msgid "" "Returns the number of collected + unreachable objects which cannot be " "collected. If the garbage collector is disabled or already collecting, " "returns ``0`` immediately. Errors during garbage collection are passed to :" "data:`sys.unraisablehook`. This function does not raise exceptions." msgstr "" msgid "" "Enable the garbage collector: similar to :func:`gc.enable`. Returns the " "previous state, 0 for disabled and 1 for enabled." msgstr "" msgid "" "Disable the garbage collector: similar to :func:`gc.disable`. Returns the " "previous state, 0 for disabled and 1 for enabled." msgstr "" msgid "" "Query the state of the garbage collector: similar to :func:`gc.isenabled`. " "Returns the current state, 0 for disabled and 1 for enabled." msgstr "" msgid "Querying Garbage Collector State" msgstr "" msgid "" "The C-API provides the following interface for querying information about " "the garbage collector." msgstr "" msgid "" "Run supplied *callback* on all live GC-capable objects. *arg* is passed " "through to all invocations of *callback*." msgstr "" msgid "" "If new objects are (de)allocated by the callback it is undefined if they " "will be visited." msgstr "" msgid "" "Garbage collection is disabled during operation. Explicitly running a " "collection in the callback may lead to undefined behaviour e.g. visiting the " "same objects multiple times or not at all." msgstr "" msgid "" "Type of the visitor function to be passed to :c:func:" "`PyUnstable_GC_VisitObjects`. *arg* is the same as the *arg* passed to " "``PyUnstable_GC_VisitObjects``. Return ``1`` to continue iteration, return " "``0`` to stop iteration. Other return values are reserved for now so " "behavior on returning anything else is undefined." msgstr ""