Translation components API.

See the Weblate's Web API documentation for detailed description of the API.

GET /api/components/python-docs/latest%252Flatestwhatsnew32/changes/?format=api&page=29
HTTP 200 OK
Allow: GET, HEAD, OPTIONS
Content-Type: application/json
Vary: Accept

{
    "count": 1575,
    "next": "https://hosted.weblate.org/api/components/python-docs/latest%252Flatestwhatsnew32/changes/?format=api&page=30",
    "previous": "https://hosted.weblate.org/api/components/python-docs/latest%252Flatestwhatsnew32/changes/?format=api&page=28",
    "results": [
        {
            "unit": "https://hosted.weblate.org/api/units/108796695/?format=api",
            "component": "https://hosted.weblate.org/api/components/python-docs/latest%252Flatestwhatsnew32/?format=api",
            "translation": "https://hosted.weblate.org/api/translations/python-docs/latest%252Flatestwhatsnew32/en/?format=api",
            "user": null,
            "author": null,
            "timestamp": "2023-11-08T16:39:36.860360+01:00",
            "action": 13,
            "target": "math",
            "old": "math",
            "details": {
                "state": 100,
                "source": "math",
                "old_state": 100
            },
            "id": 71033377,
            "action_name": "Source string added",
            "url": "https://hosted.weblate.org/api/changes/71033377/?format=api"
        },
        {
            "unit": "https://hosted.weblate.org/api/units/108796693/?format=api",
            "component": "https://hosted.weblate.org/api/components/python-docs/latest%252Flatestwhatsnew32/?format=api",
            "translation": "https://hosted.weblate.org/api/translations/python-docs/latest%252Flatestwhatsnew32/en/?format=api",
            "user": null,
            "author": null,
            "timestamp": "2023-11-08T16:39:36.851029+01:00",
            "action": 13,
            "target": "(Contributed by Alexander Belopolsky and Victor Stinner in :issue:`1289118`, :issue:`5094`, :issue:`6641`, :issue:`2706`, :issue:`1777412`, :issue:`8013`, and :issue:`10827`.)",
            "old": "(Contributed by Alexander Belopolsky and Victor Stinner in :issue:`1289118`, :issue:`5094`, :issue:`6641`, :issue:`2706`, :issue:`1777412`, :issue:`8013`, and :issue:`10827`.)",
            "details": {
                "state": 100,
                "source": "(Contributed by Alexander Belopolsky and Victor Stinner in :issue:`1289118`, :issue:`5094`, :issue:`6641`, :issue:`2706`, :issue:`1777412`, :issue:`8013`, and :issue:`10827`.)",
                "old_state": 100
            },
            "id": 71033376,
            "action_name": "Source string added",
            "url": "https://hosted.weblate.org/api/changes/71033376/?format=api"
        },
        {
            "unit": "https://hosted.weblate.org/api/units/108796691/?format=api",
            "component": "https://hosted.weblate.org/api/components/python-docs/latest%252Flatestwhatsnew32/?format=api",
            "translation": "https://hosted.weblate.org/api/translations/python-docs/latest%252Flatestwhatsnew32/en/?format=api",
            "user": null,
            "author": null,
            "timestamp": "2023-11-08T16:39:36.839317+01:00",
            "action": 13,
            "target": "Several functions now have significantly expanded date ranges.  When :attr:`time.accept2dyear` is false, the :func:`time.asctime` function will accept any year that fits in a C int, while the :func:`time.mktime` and :func:`time.strftime` functions will accept the full range supported by the corresponding operating system functions.",
            "old": "Several functions now have significantly expanded date ranges.  When :attr:`time.accept2dyear` is false, the :func:`time.asctime` function will accept any year that fits in a C int, while the :func:`time.mktime` and :func:`time.strftime` functions will accept the full range supported by the corresponding operating system functions.",
            "details": {
                "state": 100,
                "source": "Several functions now have significantly expanded date ranges.  When :attr:`time.accept2dyear` is false, the :func:`time.asctime` function will accept any year that fits in a C int, while the :func:`time.mktime` and :func:`time.strftime` functions will accept the full range supported by the corresponding operating system functions.",
                "old_state": 100
            },
            "id": 71033375,
            "action_name": "Source string added",
            "url": "https://hosted.weblate.org/api/changes/71033375/?format=api"
        },
        {
            "unit": "https://hosted.weblate.org/api/units/108796689/?format=api",
            "component": "https://hosted.weblate.org/api/components/python-docs/latest%252Flatestwhatsnew32/?format=api",
            "translation": "https://hosted.weblate.org/api/translations/python-docs/latest%252Flatestwhatsnew32/en/?format=api",
            "user": null,
            "author": null,
            "timestamp": "2023-11-08T16:39:36.827609+01:00",
            "action": 13,
            "target": "Starting with Py3.2, use of the century guessing heuristic will emit a :exc:`DeprecationWarning`.  Instead, it is recommended that :attr:`time.accept2dyear` be set to ``False`` so that large date ranges can be used without guesswork::",
            "old": "Starting with Py3.2, use of the century guessing heuristic will emit a :exc:`DeprecationWarning`.  Instead, it is recommended that :attr:`time.accept2dyear` be set to ``False`` so that large date ranges can be used without guesswork::",
            "details": {
                "state": 100,
                "source": "Starting with Py3.2, use of the century guessing heuristic will emit a :exc:`DeprecationWarning`.  Instead, it is recommended that :attr:`time.accept2dyear` be set to ``False`` so that large date ranges can be used without guesswork::",
                "old_state": 100
            },
            "id": 71033374,
            "action_name": "Source string added",
            "url": "https://hosted.weblate.org/api/changes/71033374/?format=api"
        },
        {
            "unit": "https://hosted.weblate.org/api/units/108796687/?format=api",
            "component": "https://hosted.weblate.org/api/components/python-docs/latest%252Flatestwhatsnew32/?format=api",
            "translation": "https://hosted.weblate.org/api/translations/python-docs/latest%252Flatestwhatsnew32/en/?format=api",
            "user": null,
            "author": null,
            "timestamp": "2023-11-08T16:39:36.816214+01:00",
            "action": 13,
            "target": "Whenever a two-digit year is used in a time tuple, the interpretation has been governed by :attr:`time.accept2dyear`.  The default is ``True`` which means that for a two-digit year, the century is guessed according to the POSIX rules governing the ``%y`` strptime format.",
            "old": "Whenever a two-digit year is used in a time tuple, the interpretation has been governed by :attr:`time.accept2dyear`.  The default is ``True`` which means that for a two-digit year, the century is guessed according to the POSIX rules governing the ``%y`` strptime format.",
            "details": {
                "state": 100,
                "source": "Whenever a two-digit year is used in a time tuple, the interpretation has been governed by :attr:`time.accept2dyear`.  The default is ``True`` which means that for a two-digit year, the century is guessed according to the POSIX rules governing the ``%y`` strptime format.",
                "old_state": 100
            },
            "id": 71033373,
            "action_name": "Source string added",
            "url": "https://hosted.weblate.org/api/changes/71033373/?format=api"
        },
        {
            "unit": "https://hosted.weblate.org/api/units/108796685/?format=api",
            "component": "https://hosted.weblate.org/api/components/python-docs/latest%252Flatestwhatsnew32/?format=api",
            "translation": "https://hosted.weblate.org/api/translations/python-docs/latest%252Flatestwhatsnew32/en/?format=api",
            "user": null,
            "author": null,
            "timestamp": "2023-11-08T16:39:36.804725+01:00",
            "action": 13,
            "target": "The :meth:`datetime.date.strftime` method is no longer restricted to years after 1900.  The new supported year range is from 1000 to 9999 inclusive.",
            "old": "The :meth:`datetime.date.strftime` method is no longer restricted to years after 1900.  The new supported year range is from 1000 to 9999 inclusive.",
            "details": {
                "state": 100,
                "source": "The :meth:`datetime.date.strftime` method is no longer restricted to years after 1900.  The new supported year range is from 1000 to 9999 inclusive.",
                "old_state": 100
            },
            "id": 71033372,
            "action_name": "Source string added",
            "url": "https://hosted.weblate.org/api/changes/71033372/?format=api"
        },
        {
            "unit": "https://hosted.weblate.org/api/units/108796683/?format=api",
            "component": "https://hosted.weblate.org/api/components/python-docs/latest%252Flatestwhatsnew32/?format=api",
            "translation": "https://hosted.weblate.org/api/translations/python-docs/latest%252Flatestwhatsnew32/en/?format=api",
            "user": null,
            "author": null,
            "timestamp": "2023-11-08T16:39:36.792977+01:00",
            "action": 13,
            "target": "Also, :class:`~datetime.timedelta` objects can now be multiplied by :class:`float` and divided by :class:`float` and :class:`int` objects. And :class:`~datetime.timedelta` objects can now divide one another.",
            "old": "Also, :class:`~datetime.timedelta` objects can now be multiplied by :class:`float` and divided by :class:`float` and :class:`int` objects. And :class:`~datetime.timedelta` objects can now divide one another.",
            "details": {
                "state": 100,
                "source": "Also, :class:`~datetime.timedelta` objects can now be multiplied by :class:`float` and divided by :class:`float` and :class:`int` objects. And :class:`~datetime.timedelta` objects can now divide one another.",
                "old_state": 100
            },
            "id": 71033371,
            "action_name": "Source string added",
            "url": "https://hosted.weblate.org/api/changes/71033371/?format=api"
        },
        {
            "unit": "https://hosted.weblate.org/api/units/108796681/?format=api",
            "component": "https://hosted.weblate.org/api/components/python-docs/latest%252Flatestwhatsnew32/?format=api",
            "translation": "https://hosted.weblate.org/api/translations/python-docs/latest%252Flatestwhatsnew32/en/?format=api",
            "user": null,
            "author": null,
            "timestamp": "2023-11-08T16:39:36.784015+01:00",
            "action": 13,
            "target": "The :mod:`datetime` module has a new type :class:`~datetime.timezone` that implements the :class:`~datetime.tzinfo` interface by returning a fixed UTC offset and timezone name. This makes it easier to create timezone-aware datetime objects::",
            "old": "The :mod:`datetime` module has a new type :class:`~datetime.timezone` that implements the :class:`~datetime.tzinfo` interface by returning a fixed UTC offset and timezone name. This makes it easier to create timezone-aware datetime objects::",
            "details": {
                "state": 100,
                "source": "The :mod:`datetime` module has a new type :class:`~datetime.timezone` that implements the :class:`~datetime.tzinfo` interface by returning a fixed UTC offset and timezone name. This makes it easier to create timezone-aware datetime objects::",
                "old_state": 100
            },
            "id": 71033370,
            "action_name": "Source string added",
            "url": "https://hosted.weblate.org/api/changes/71033370/?format=api"
        },
        {
            "unit": "https://hosted.weblate.org/api/units/108796679/?format=api",
            "component": "https://hosted.weblate.org/api/components/python-docs/latest%252Flatestwhatsnew32/?format=api",
            "translation": "https://hosted.weblate.org/api/translations/python-docs/latest%252Flatestwhatsnew32/en/?format=api",
            "user": null,
            "author": null,
            "timestamp": "2023-11-08T16:39:36.774740+01:00",
            "action": 13,
            "target": "datetime and time",
            "old": "datetime and time",
            "details": {
                "state": 100,
                "source": "datetime and time",
                "old_state": 100
            },
            "id": 71033369,
            "action_name": "Source string added",
            "url": "https://hosted.weblate.org/api/changes/71033369/?format=api"
        },
        {
            "unit": "https://hosted.weblate.org/api/units/108796677/?format=api",
            "component": "https://hosted.weblate.org/api/components/python-docs/latest%252Flatestwhatsnew32/?format=api",
            "translation": "https://hosted.weblate.org/api/translations/python-docs/latest%252Flatestwhatsnew32/en/?format=api",
            "user": null,
            "author": null,
            "timestamp": "2023-11-08T16:39:36.764059+01:00",
            "action": 13,
            "target": "(Contributed by Kristján Valur Jónsson with an API review by Jeffrey Yasskin in :issue:`8777`.)",
            "old": "(Contributed by Kristján Valur Jónsson with an API review by Jeffrey Yasskin in :issue:`8777`.)",
            "details": {
                "state": 100,
                "source": "(Contributed by Kristján Valur Jónsson with an API review by Jeffrey Yasskin in :issue:`8777`.)",
                "old_state": 100
            },
            "id": 71033368,
            "action_name": "Source string added",
            "url": "https://hosted.weblate.org/api/changes/71033368/?format=api"
        },
        {
            "unit": "https://hosted.weblate.org/api/units/108796675/?format=api",
            "component": "https://hosted.weblate.org/api/components/python-docs/latest%252Flatestwhatsnew32/?format=api",
            "translation": "https://hosted.weblate.org/api/translations/python-docs/latest%252Flatestwhatsnew32/en/?format=api",
            "user": null,
            "author": null,
            "timestamp": "2023-11-08T16:39:36.752566+01:00",
            "action": 13,
            "target": "See `Barrier Synchronization Patterns <https://osl.cs.illinois.edu/media/papers/karmani-2009-barrier_synchronization_pattern.pdf>`_ for more examples of how barriers can be used in parallel computing.  Also, there is a simple but thorough explanation of barriers in `The Little Book of Semaphores <https://greenteapress.com/semaphores/LittleBookOfSemaphores.pdf>`_, *section 3.6*.",
            "old": "See `Barrier Synchronization Patterns <https://osl.cs.illinois.edu/media/papers/karmani-2009-barrier_synchronization_pattern.pdf>`_ for more examples of how barriers can be used in parallel computing.  Also, there is a simple but thorough explanation of barriers in `The Little Book of Semaphores <https://greenteapress.com/semaphores/LittleBookOfSemaphores.pdf>`_, *section 3.6*.",
            "details": {
                "state": 100,
                "source": "See `Barrier Synchronization Patterns <https://osl.cs.illinois.edu/media/papers/karmani-2009-barrier_synchronization_pattern.pdf>`_ for more examples of how barriers can be used in parallel computing.  Also, there is a simple but thorough explanation of barriers in `The Little Book of Semaphores <https://greenteapress.com/semaphores/LittleBookOfSemaphores.pdf>`_, *section 3.6*.",
                "old_state": 100
            },
            "id": 71033367,
            "action_name": "Source string added",
            "url": "https://hosted.weblate.org/api/changes/71033367/?format=api"
        },
        {
            "unit": "https://hosted.weblate.org/api/units/108796673/?format=api",
            "component": "https://hosted.weblate.org/api/components/python-docs/latest%252Flatestwhatsnew32/?format=api",
            "translation": "https://hosted.weblate.org/api/translations/python-docs/latest%252Flatestwhatsnew32/en/?format=api",
            "user": null,
            "author": null,
            "timestamp": "2023-11-08T16:39:36.740300+01:00",
            "action": 13,
            "target": "In this example, the barrier enforces a more robust rule.  If some election sites do not finish before midnight, the barrier times-out and the ballots are sealed and deposited in a queue for later handling.",
            "old": "In this example, the barrier enforces a more robust rule.  If some election sites do not finish before midnight, the barrier times-out and the ballots are sealed and deposited in a queue for later handling.",
            "details": {
                "state": 100,
                "source": "In this example, the barrier enforces a more robust rule.  If some election sites do not finish before midnight, the barrier times-out and the ballots are sealed and deposited in a queue for later handling.",
                "old_state": 100
            },
            "id": 71033366,
            "action_name": "Source string added",
            "url": "https://hosted.weblate.org/api/changes/71033366/?format=api"
        },
        {
            "unit": "https://hosted.weblate.org/api/units/108796671/?format=api",
            "component": "https://hosted.weblate.org/api/components/python-docs/latest%252Flatestwhatsnew32/?format=api",
            "translation": "https://hosted.weblate.org/api/translations/python-docs/latest%252Flatestwhatsnew32/en/?format=api",
            "user": null,
            "author": null,
            "timestamp": "2023-11-08T16:39:36.730234+01:00",
            "action": 13,
            "target": "If any of the predecessor tasks can hang or be delayed, a barrier can be created with an optional *timeout* parameter.  Then if the timeout period elapses before all the predecessor tasks reach the barrier point, all waiting threads are released and a :exc:`~threading.BrokenBarrierError` exception is raised::",
            "old": "If any of the predecessor tasks can hang or be delayed, a barrier can be created with an optional *timeout* parameter.  Then if the timeout period elapses before all the predecessor tasks reach the barrier point, all waiting threads are released and a :exc:`~threading.BrokenBarrierError` exception is raised::",
            "details": {
                "state": 100,
                "source": "If any of the predecessor tasks can hang or be delayed, a barrier can be created with an optional *timeout* parameter.  Then if the timeout period elapses before all the predecessor tasks reach the barrier point, all waiting threads are released and a :exc:`~threading.BrokenBarrierError` exception is raised::",
                "old_state": 100
            },
            "id": 71033365,
            "action_name": "Source string added",
            "url": "https://hosted.weblate.org/api/changes/71033365/?format=api"
        },
        {
            "unit": "https://hosted.weblate.org/api/units/108796669/?format=api",
            "component": "https://hosted.weblate.org/api/components/python-docs/latest%252Flatestwhatsnew32/?format=api",
            "translation": "https://hosted.weblate.org/api/translations/python-docs/latest%252Flatestwhatsnew32/en/?format=api",
            "user": null,
            "author": null,
            "timestamp": "2023-11-08T16:39:36.719322+01:00",
            "action": 13,
            "target": "In this example, the barrier enforces a rule that votes cannot be counted at any polling site until all polls are closed.  Notice how a solution with a barrier is similar to one with :meth:`threading.Thread.join`, but the threads stay alive and continue to do work (summarizing ballots) after the barrier point is crossed.",
            "old": "In this example, the barrier enforces a rule that votes cannot be counted at any polling site until all polls are closed.  Notice how a solution with a barrier is similar to one with :meth:`threading.Thread.join`, but the threads stay alive and continue to do work (summarizing ballots) after the barrier point is crossed.",
            "details": {
                "state": 100,
                "source": "In this example, the barrier enforces a rule that votes cannot be counted at any polling site until all polls are closed.  Notice how a solution with a barrier is similar to one with :meth:`threading.Thread.join`, but the threads stay alive and continue to do work (summarizing ballots) after the barrier point is crossed.",
                "old_state": 100
            },
            "id": 71033364,
            "action_name": "Source string added",
            "url": "https://hosted.weblate.org/api/changes/71033364/?format=api"
        },
        {
            "unit": "https://hosted.weblate.org/api/units/108796667/?format=api",
            "component": "https://hosted.weblate.org/api/components/python-docs/latest%252Flatestwhatsnew32/?format=api",
            "translation": "https://hosted.weblate.org/api/translations/python-docs/latest%252Flatestwhatsnew32/en/?format=api",
            "user": null,
            "author": null,
            "timestamp": "2023-11-08T16:39:36.710151+01:00",
            "action": 13,
            "target": "Example of using barriers::",
            "old": "Example of using barriers::",
            "details": {
                "state": 100,
                "source": "Example of using barriers::",
                "old_state": 100
            },
            "id": 71033363,
            "action_name": "Source string added",
            "url": "https://hosted.weblate.org/api/changes/71033363/?format=api"
        },
        {
            "unit": "https://hosted.weblate.org/api/units/108796665/?format=api",
            "component": "https://hosted.weblate.org/api/components/python-docs/latest%252Flatestwhatsnew32/?format=api",
            "translation": "https://hosted.weblate.org/api/translations/python-docs/latest%252Flatestwhatsnew32/en/?format=api",
            "user": null,
            "author": null,
            "timestamp": "2023-11-08T16:39:36.701236+01:00",
            "action": 13,
            "target": "Implemented as a two-phase cyclic barrier, :class:`~threading.Barrier` objects are suitable for use in loops.  The separate *filling* and *draining* phases assure that all threads get released (drained) before any one of them can loop back and re-enter the barrier.  The barrier fully resets after each cycle.",
            "old": "Implemented as a two-phase cyclic barrier, :class:`~threading.Barrier` objects are suitable for use in loops.  The separate *filling* and *draining* phases assure that all threads get released (drained) before any one of them can loop back and re-enter the barrier.  The barrier fully resets after each cycle.",
            "details": {
                "state": 100,
                "source": "Implemented as a two-phase cyclic barrier, :class:`~threading.Barrier` objects are suitable for use in loops.  The separate *filling* and *draining* phases assure that all threads get released (drained) before any one of them can loop back and re-enter the barrier.  The barrier fully resets after each cycle.",
                "old_state": 100
            },
            "id": 71033362,
            "action_name": "Source string added",
            "url": "https://hosted.weblate.org/api/changes/71033362/?format=api"
        },
        {
            "unit": "https://hosted.weblate.org/api/units/108796663/?format=api",
            "component": "https://hosted.weblate.org/api/components/python-docs/latest%252Flatestwhatsnew32/?format=api",
            "translation": "https://hosted.weblate.org/api/translations/python-docs/latest%252Flatestwhatsnew32/en/?format=api",
            "user": null,
            "author": null,
            "timestamp": "2023-11-08T16:39:36.692408+01:00",
            "action": 13,
            "target": "Barriers can work with an arbitrary number of threads.  This is a generalization of a `Rendezvous <https://en.wikipedia.org/wiki/Synchronous_rendezvous>`_ which is defined for only two threads.",
            "old": "Barriers can work with an arbitrary number of threads.  This is a generalization of a `Rendezvous <https://en.wikipedia.org/wiki/Synchronous_rendezvous>`_ which is defined for only two threads.",
            "details": {
                "state": 100,
                "source": "Barriers can work with an arbitrary number of threads.  This is a generalization of a `Rendezvous <https://en.wikipedia.org/wiki/Synchronous_rendezvous>`_ which is defined for only two threads.",
                "old_state": 100
            },
            "id": 71033361,
            "action_name": "Source string added",
            "url": "https://hosted.weblate.org/api/changes/71033361/?format=api"
        },
        {
            "unit": "https://hosted.weblate.org/api/units/108796661/?format=api",
            "component": "https://hosted.weblate.org/api/components/python-docs/latest%252Flatestwhatsnew32/?format=api",
            "translation": "https://hosted.weblate.org/api/translations/python-docs/latest%252Flatestwhatsnew32/en/?format=api",
            "user": null,
            "author": null,
            "timestamp": "2023-11-08T16:39:36.683286+01:00",
            "action": 13,
            "target": "The :mod:`threading` module has a new :class:`~threading.Barrier` synchronization class for making multiple threads wait until all of them have reached a common barrier point.  Barriers are useful for making sure that a task with multiple preconditions does not run until all of the predecessor tasks are complete.",
            "old": "The :mod:`threading` module has a new :class:`~threading.Barrier` synchronization class for making multiple threads wait until all of them have reached a common barrier point.  Barriers are useful for making sure that a task with multiple preconditions does not run until all of the predecessor tasks are complete.",
            "details": {
                "state": 100,
                "source": "The :mod:`threading` module has a new :class:`~threading.Barrier` synchronization class for making multiple threads wait until all of them have reached a common barrier point.  Barriers are useful for making sure that a task with multiple preconditions does not run until all of the predecessor tasks are complete.",
                "old_state": 100
            },
            "id": 71033360,
            "action_name": "Source string added",
            "url": "https://hosted.weblate.org/api/changes/71033360/?format=api"
        },
        {
            "unit": "https://hosted.weblate.org/api/units/108796659/?format=api",
            "component": "https://hosted.weblate.org/api/components/python-docs/latest%252Flatestwhatsnew32/?format=api",
            "translation": "https://hosted.weblate.org/api/translations/python-docs/latest%252Flatestwhatsnew32/en/?format=api",
            "user": null,
            "author": null,
            "timestamp": "2023-11-08T16:39:36.673430+01:00",
            "action": 13,
            "target": "threading",
            "old": "threading",
            "details": {
                "state": 100,
                "source": "threading",
                "old_state": 100
            },
            "id": 71033359,
            "action_name": "Source string added",
            "url": "https://hosted.weblate.org/api/changes/71033359/?format=api"
        },
        {
            "unit": "https://hosted.weblate.org/api/units/108796657/?format=api",
            "component": "https://hosted.weblate.org/api/components/python-docs/latest%252Flatestwhatsnew32/?format=api",
            "translation": "https://hosted.weblate.org/api/translations/python-docs/latest%252Flatestwhatsnew32/en/?format=api",
            "user": null,
            "author": null,
            "timestamp": "2023-11-08T16:39:36.665629+01:00",
            "action": 13,
            "target": "The :class:`collections.deque` class grew two new methods :meth:`~collections.deque.count` and :meth:`~collections.deque.reverse` that make them more substitutable for :class:`list` objects:",
            "old": "The :class:`collections.deque` class grew two new methods :meth:`~collections.deque.count` and :meth:`~collections.deque.reverse` that make them more substitutable for :class:`list` objects:",
            "details": {
                "state": 100,
                "source": "The :class:`collections.deque` class grew two new methods :meth:`~collections.deque.count` and :meth:`~collections.deque.reverse` that make them more substitutable for :class:`list` objects:",
                "old_state": 100
            },
            "id": 71033358,
            "action_name": "Source string added",
            "url": "https://hosted.weblate.org/api/changes/71033358/?format=api"
        },
        {
            "unit": "https://hosted.weblate.org/api/units/108796655/?format=api",
            "component": "https://hosted.weblate.org/api/components/python-docs/latest%252Flatestwhatsnew32/?format=api",
            "translation": "https://hosted.weblate.org/api/translations/python-docs/latest%252Flatestwhatsnew32/en/?format=api",
            "user": null,
            "author": null,
            "timestamp": "2023-11-08T16:39:36.655613+01:00",
            "action": 13,
            "target": "A fast move-to-end operation is useful for resequencing entries.  For example, an ordered dictionary can be used to track order of access by aging entries from the oldest to the most recently accessed.",
            "old": "A fast move-to-end operation is useful for resequencing entries.  For example, an ordered dictionary can be used to track order of access by aging entries from the oldest to the most recently accessed.",
            "details": {
                "state": 100,
                "source": "A fast move-to-end operation is useful for resequencing entries.  For example, an ordered dictionary can be used to track order of access by aging entries from the oldest to the most recently accessed.",
                "old_state": 100
            },
            "id": 71033357,
            "action_name": "Source string added",
            "url": "https://hosted.weblate.org/api/changes/71033357/?format=api"
        },
        {
            "unit": "https://hosted.weblate.org/api/units/108796653/?format=api",
            "component": "https://hosted.weblate.org/api/components/python-docs/latest%252Flatestwhatsnew32/?format=api",
            "translation": "https://hosted.weblate.org/api/translations/python-docs/latest%252Flatestwhatsnew32/en/?format=api",
            "user": null,
            "author": null,
            "timestamp": "2023-11-08T16:39:36.645031+01:00",
            "action": 13,
            "target": "The default is to move an item to the last position.  This is equivalent of renewing an entry with ``od[k] = od.pop(k)``.",
            "old": "The default is to move an item to the last position.  This is equivalent of renewing an entry with ``od[k] = od.pop(k)``.",
            "details": {
                "state": 100,
                "source": "The default is to move an item to the last position.  This is equivalent of renewing an entry with ``od[k] = od.pop(k)``.",
                "old_state": 100
            },
            "id": 71033356,
            "action_name": "Source string added",
            "url": "https://hosted.weblate.org/api/changes/71033356/?format=api"
        },
        {
            "unit": "https://hosted.weblate.org/api/units/108796651/?format=api",
            "component": "https://hosted.weblate.org/api/components/python-docs/latest%252Flatestwhatsnew32/?format=api",
            "translation": "https://hosted.weblate.org/api/translations/python-docs/latest%252Flatestwhatsnew32/en/?format=api",
            "user": null,
            "author": null,
            "timestamp": "2023-11-08T16:39:36.633144+01:00",
            "action": 13,
            "target": "The :class:`collections.OrderedDict` class has a new method :meth:`~collections.OrderedDict.move_to_end` which takes an existing key and moves it to either the first or last position in the ordered sequence.",
            "old": "The :class:`collections.OrderedDict` class has a new method :meth:`~collections.OrderedDict.move_to_end` which takes an existing key and moves it to either the first or last position in the ordered sequence.",
            "details": {
                "state": 100,
                "source": "The :class:`collections.OrderedDict` class has a new method :meth:`~collections.OrderedDict.move_to_end` which takes an existing key and moves it to either the first or last position in the ordered sequence.",
                "old_state": 100
            },
            "id": 71033355,
            "action_name": "Source string added",
            "url": "https://hosted.weblate.org/api/changes/71033355/?format=api"
        },
        {
            "unit": "https://hosted.weblate.org/api/units/108796649/?format=api",
            "component": "https://hosted.weblate.org/api/components/python-docs/latest%252Flatestwhatsnew32/?format=api",
            "translation": "https://hosted.weblate.org/api/translations/python-docs/latest%252Flatestwhatsnew32/en/?format=api",
            "user": null,
            "author": null,
            "timestamp": "2023-11-08T16:39:36.622315+01:00",
            "action": 13,
            "target": "The :class:`collections.Counter` class now has two forms of in-place subtraction, the existing *-=* operator for `saturating subtraction <https://en.wikipedia.org/wiki/Saturation_arithmetic>`_ and the new :meth:`~collections.Counter.subtract` method for regular subtraction.  The former is suitable for `multisets <https://en.wikipedia.org/wiki/Multiset>`_ which only have positive counts, and the latter is more suitable for use cases that allow negative counts:",
            "old": "The :class:`collections.Counter` class now has two forms of in-place subtraction, the existing *-=* operator for `saturating subtraction <https://en.wikipedia.org/wiki/Saturation_arithmetic>`_ and the new :meth:`~collections.Counter.subtract` method for regular subtraction.  The former is suitable for `multisets <https://en.wikipedia.org/wiki/Multiset>`_ which only have positive counts, and the latter is more suitable for use cases that allow negative counts:",
            "details": {
                "state": 100,
                "source": "The :class:`collections.Counter` class now has two forms of in-place subtraction, the existing *-=* operator for `saturating subtraction <https://en.wikipedia.org/wiki/Saturation_arithmetic>`_ and the new :meth:`~collections.Counter.subtract` method for regular subtraction.  The former is suitable for `multisets <https://en.wikipedia.org/wiki/Multiset>`_ which only have positive counts, and the latter is more suitable for use cases that allow negative counts:",
                "old_state": 100
            },
            "id": 71033354,
            "action_name": "Source string added",
            "url": "https://hosted.weblate.org/api/changes/71033354/?format=api"
        },
        {
            "unit": "https://hosted.weblate.org/api/units/108796647/?format=api",
            "component": "https://hosted.weblate.org/api/components/python-docs/latest%252Flatestwhatsnew32/?format=api",
            "translation": "https://hosted.weblate.org/api/translations/python-docs/latest%252Flatestwhatsnew32/en/?format=api",
            "user": null,
            "author": null,
            "timestamp": "2023-11-08T16:39:36.609539+01:00",
            "action": 13,
            "target": "collections",
            "old": "collections",
            "details": {
                "state": 100,
                "source": "collections",
                "old_state": 100
            },
            "id": 71033353,
            "action_name": "Source string added",
            "url": "https://hosted.weblate.org/api/changes/71033353/?format=api"
        },
        {
            "unit": "https://hosted.weblate.org/api/units/108796645/?format=api",
            "component": "https://hosted.weblate.org/api/components/python-docs/latest%252Flatestwhatsnew32/?format=api",
            "translation": "https://hosted.weblate.org/api/translations/python-docs/latest%252Flatestwhatsnew32/en/?format=api",
            "user": null,
            "author": null,
            "timestamp": "2023-11-08T16:39:36.600466+01:00",
            "action": 13,
            "target": "(Contributed by Raymond Hettinger and incorporating design suggestions from Mark Dickinson.)",
            "old": "(Contributed by Raymond Hettinger and incorporating design suggestions from Mark Dickinson.)",
            "details": {
                "state": 100,
                "source": "(Contributed by Raymond Hettinger and incorporating design suggestions from Mark Dickinson.)",
                "old_state": 100
            },
            "id": 71033352,
            "action_name": "Source string added",
            "url": "https://hosted.weblate.org/api/changes/71033352/?format=api"
        },
        {
            "unit": "https://hosted.weblate.org/api/units/108796643/?format=api",
            "component": "https://hosted.weblate.org/api/components/python-docs/latest%252Flatestwhatsnew32/?format=api",
            "translation": "https://hosted.weblate.org/api/translations/python-docs/latest%252Flatestwhatsnew32/en/?format=api",
            "user": null,
            "author": null,
            "timestamp": "2023-11-08T16:39:36.589536+01:00",
            "action": 13,
            "target": "For an example using :func:`~itertools.accumulate`, see the :ref:`examples for the random module <random-examples>`.",
            "old": "For an example using :func:`~itertools.accumulate`, see the :ref:`examples for the random module <random-examples>`.",
            "details": {
                "state": 100,
                "source": "For an example using :func:`~itertools.accumulate`, see the :ref:`examples for the random module <random-examples>`.",
                "old_state": 100
            },
            "id": 71033351,
            "action_name": "Source string added",
            "url": "https://hosted.weblate.org/api/changes/71033351/?format=api"
        },
        {
            "unit": "https://hosted.weblate.org/api/units/108796641/?format=api",
            "component": "https://hosted.weblate.org/api/components/python-docs/latest%252Flatestwhatsnew32/?format=api",
            "translation": "https://hosted.weblate.org/api/translations/python-docs/latest%252Flatestwhatsnew32/en/?format=api",
            "user": null,
            "author": null,
            "timestamp": "2023-11-08T16:39:36.578739+01:00",
            "action": 13,
            "target": "The :mod:`itertools` module has a new :func:`~itertools.accumulate` function modeled on APL's *scan* operator and Numpy's *accumulate* function:",
            "old": "The :mod:`itertools` module has a new :func:`~itertools.accumulate` function modeled on APL's *scan* operator and Numpy's *accumulate* function:",
            "details": {
                "state": 100,
                "source": "The :mod:`itertools` module has a new :func:`~itertools.accumulate` function modeled on APL's *scan* operator and Numpy's *accumulate* function:",
                "old_state": 100
            },
            "id": 71033350,
            "action_name": "Source string added",
            "url": "https://hosted.weblate.org/api/changes/71033350/?format=api"
        },
        {
            "unit": "https://hosted.weblate.org/api/units/108796639/?format=api",
            "component": "https://hosted.weblate.org/api/components/python-docs/latest%252Flatestwhatsnew32/?format=api",
            "translation": "https://hosted.weblate.org/api/translations/python-docs/latest%252Flatestwhatsnew32/en/?format=api",
            "user": null,
            "author": null,
            "timestamp": "2023-11-08T16:39:36.566624+01:00",
            "action": 13,
            "target": "itertools",
            "old": "itertools",
            "details": {
                "state": 100,
                "source": "itertools",
                "old_state": 100
            },
            "id": 71033349,
            "action_name": "Source string added",
            "url": "https://hosted.weblate.org/api/changes/71033349/?format=api"
        },
        {
            "unit": "https://hosted.weblate.org/api/units/108796637/?format=api",
            "component": "https://hosted.weblate.org/api/components/python-docs/latest%252Flatestwhatsnew32/?format=api",
            "translation": "https://hosted.weblate.org/api/translations/python-docs/latest%252Flatestwhatsnew32/en/?format=api",
            "user": null,
            "author": null,
            "timestamp": "2023-11-08T16:39:36.555806+01:00",
            "action": 13,
            "target": "For sorting examples and a brief sorting tutorial, see the `Sorting HowTo <https://wiki.python.org/moin/HowTo/Sorting/>`_ tutorial.",
            "old": "For sorting examples and a brief sorting tutorial, see the `Sorting HowTo <https://wiki.python.org/moin/HowTo/Sorting/>`_ tutorial.",
            "details": {
                "state": 100,
                "source": "For sorting examples and a brief sorting tutorial, see the `Sorting HowTo <https://wiki.python.org/moin/HowTo/Sorting/>`_ tutorial.",
                "old_state": 100
            },
            "id": 71033348,
            "action_name": "Source string added",
            "url": "https://hosted.weblate.org/api/changes/71033348/?format=api"
        },
        {
            "unit": "https://hosted.weblate.org/api/units/108796635/?format=api",
            "component": "https://hosted.weblate.org/api/components/python-docs/latest%252Flatestwhatsnew32/?format=api",
            "translation": "https://hosted.weblate.org/api/translations/python-docs/latest%252Flatestwhatsnew32/en/?format=api",
            "user": null,
            "author": null,
            "timestamp": "2023-11-08T16:39:36.543276+01:00",
            "action": 13,
            "target": "To aid in porting programs from Python 2, the :func:`functools.cmp_to_key` function converts an old-style comparison function to modern :term:`key function`:",
            "old": "To aid in porting programs from Python 2, the :func:`functools.cmp_to_key` function converts an old-style comparison function to modern :term:`key function`:",
            "details": {
                "state": 100,
                "source": "To aid in porting programs from Python 2, the :func:`functools.cmp_to_key` function converts an old-style comparison function to modern :term:`key function`:",
                "old_state": 100
            },
            "id": 71033347,
            "action_name": "Source string added",
            "url": "https://hosted.weblate.org/api/changes/71033347/?format=api"
        },
        {
            "unit": "https://hosted.weblate.org/api/units/108796633/?format=api",
            "component": "https://hosted.weblate.org/api/components/python-docs/latest%252Flatestwhatsnew32/?format=api",
            "translation": "https://hosted.weblate.org/api/translations/python-docs/latest%252Flatestwhatsnew32/en/?format=api",
            "user": null,
            "author": null,
            "timestamp": "2023-11-08T16:39:36.531397+01:00",
            "action": 13,
            "target": "(Contributed by Raymond Hettinger.)",
            "old": "(Contributed by Raymond Hettinger.)",
            "details": {
                "state": 100,
                "source": "(Contributed by Raymond Hettinger.)",
                "old_state": 100
            },
            "id": 71033346,
            "action_name": "Source string added",
            "url": "https://hosted.weblate.org/api/changes/71033346/?format=api"
        },
        {
            "unit": "https://hosted.weblate.org/api/units/108796631/?format=api",
            "component": "https://hosted.weblate.org/api/components/python-docs/latest%252Flatestwhatsnew32/?format=api",
            "translation": "https://hosted.weblate.org/api/translations/python-docs/latest%252Flatestwhatsnew32/en/?format=api",
            "user": null,
            "author": null,
            "timestamp": "2023-11-08T16:39:36.522630+01:00",
            "action": 13,
            "target": "With the *total_ordering* decorator, the remaining comparison methods are filled in automatically.",
            "old": "With the *total_ordering* decorator, the remaining comparison methods are filled in automatically.",
            "details": {
                "state": 100,
                "source": "With the *total_ordering* decorator, the remaining comparison methods are filled in automatically.",
                "old_state": 100
            },
            "id": 71033345,
            "action_name": "Source string added",
            "url": "https://hosted.weblate.org/api/changes/71033345/?format=api"
        },
        {
            "unit": "https://hosted.weblate.org/api/units/108796629/?format=api",
            "component": "https://hosted.weblate.org/api/components/python-docs/latest%252Flatestwhatsnew32/?format=api",
            "translation": "https://hosted.weblate.org/api/translations/python-docs/latest%252Flatestwhatsnew32/en/?format=api",
            "user": null,
            "author": null,
            "timestamp": "2023-11-08T16:39:36.514122+01:00",
            "action": 13,
            "target": "For example, supplying *__eq__* and *__lt__* will enable :func:`~functools.total_ordering` to fill-in *__le__*, *__gt__* and *__ge__*::",
            "old": "For example, supplying *__eq__* and *__lt__* will enable :func:`~functools.total_ordering` to fill-in *__le__*, *__gt__* and *__ge__*::",
            "details": {
                "state": 100,
                "source": "For example, supplying *__eq__* and *__lt__* will enable :func:`~functools.total_ordering` to fill-in *__le__*, *__gt__* and *__ge__*::",
                "old_state": 100
            },
            "id": 71033344,
            "action_name": "Source string added",
            "url": "https://hosted.weblate.org/api/changes/71033344/?format=api"
        },
        {
            "unit": "https://hosted.weblate.org/api/units/108796627/?format=api",
            "component": "https://hosted.weblate.org/api/components/python-docs/latest%252Flatestwhatsnew32/?format=api",
            "translation": "https://hosted.weblate.org/api/translations/python-docs/latest%252Flatestwhatsnew32/en/?format=api",
            "user": null,
            "author": null,
            "timestamp": "2023-11-08T16:39:36.503034+01:00",
            "action": 13,
            "target": "To help write classes with rich comparison methods, a new decorator :func:`functools.total_ordering` will use existing equality and inequality methods to fill in the remaining methods.",
            "old": "To help write classes with rich comparison methods, a new decorator :func:`functools.total_ordering` will use existing equality and inequality methods to fill in the remaining methods.",
            "details": {
                "state": 100,
                "source": "To help write classes with rich comparison methods, a new decorator :func:`functools.total_ordering` will use existing equality and inequality methods to fill in the remaining methods.",
                "old_state": 100
            },
            "id": 71033343,
            "action_name": "Source string added",
            "url": "https://hosted.weblate.org/api/changes/71033343/?format=api"
        },
        {
            "unit": "https://hosted.weblate.org/api/units/108796625/?format=api",
            "component": "https://hosted.weblate.org/api/components/python-docs/latest%252Flatestwhatsnew32/?format=api",
            "translation": "https://hosted.weblate.org/api/translations/python-docs/latest%252Flatestwhatsnew32/en/?format=api",
            "user": null,
            "author": null,
            "timestamp": "2023-11-08T16:39:36.493841+01:00",
            "action": 13,
            "target": "(By Nick Coghlan and Terrence Cole; :issue:`9567`, :issue:`3445`, and :issue:`8814`.)",
            "old": "(By Nick Coghlan and Terrence Cole; :issue:`9567`, :issue:`3445`, and :issue:`8814`.)",
            "details": {
                "state": 100,
                "source": "(By Nick Coghlan and Terrence Cole; :issue:`9567`, :issue:`3445`, and :issue:`8814`.)",
                "old_state": 100
            },
            "id": 71033342,
            "action_name": "Source string added",
            "url": "https://hosted.weblate.org/api/changes/71033342/?format=api"
        },
        {
            "unit": "https://hosted.weblate.org/api/units/108796623/?format=api",
            "component": "https://hosted.weblate.org/api/components/python-docs/latest%252Flatestwhatsnew32/?format=api",
            "translation": "https://hosted.weblate.org/api/translations/python-docs/latest%252Flatestwhatsnew32/en/?format=api",
            "user": null,
            "author": null,
            "timestamp": "2023-11-08T16:39:36.482742+01:00",
            "action": 13,
            "target": "In the above example, the cache can be removed by recovering the original function:",
            "old": "In the above example, the cache can be removed by recovering the original function:",
            "details": {
                "state": 100,
                "source": "In the above example, the cache can be removed by recovering the original function:",
                "old_state": 100
            },
            "id": 71033341,
            "action_name": "Source string added",
            "url": "https://hosted.weblate.org/api/changes/71033341/?format=api"
        },
        {
            "unit": "https://hosted.weblate.org/api/units/108796621/?format=api",
            "component": "https://hosted.weblate.org/api/components/python-docs/latest%252Flatestwhatsnew32/?format=api",
            "translation": "https://hosted.weblate.org/api/translations/python-docs/latest%252Flatestwhatsnew32/en/?format=api",
            "user": null,
            "author": null,
            "timestamp": "2023-11-08T16:39:36.470640+01:00",
            "action": 13,
            "target": "The :func:`functools.wraps` decorator now adds a :attr:`__wrapped__` attribute pointing to the original callable function.  This allows wrapped functions to be introspected.  It also copies :attr:`__annotations__` if defined.  And now it also gracefully skips over missing attributes such as :attr:`__doc__` which might not be defined for the wrapped callable.",
            "old": "The :func:`functools.wraps` decorator now adds a :attr:`__wrapped__` attribute pointing to the original callable function.  This allows wrapped functions to be introspected.  It also copies :attr:`__annotations__` if defined.  And now it also gracefully skips over missing attributes such as :attr:`__doc__` which might not be defined for the wrapped callable.",
            "details": {
                "state": 100,
                "source": "The :func:`functools.wraps` decorator now adds a :attr:`__wrapped__` attribute pointing to the original callable function.  This allows wrapped functions to be introspected.  It also copies :attr:`__annotations__` if defined.  And now it also gracefully skips over missing attributes such as :attr:`__doc__` which might not be defined for the wrapped callable.",
                "old_state": 100
            },
            "id": 71033340,
            "action_name": "Source string added",
            "url": "https://hosted.weblate.org/api/changes/71033340/?format=api"
        },
        {
            "unit": "https://hosted.weblate.org/api/units/108796619/?format=api",
            "component": "https://hosted.weblate.org/api/components/python-docs/latest%252Flatestwhatsnew32/?format=api",
            "translation": "https://hosted.weblate.org/api/translations/python-docs/latest%252Flatestwhatsnew32/en/?format=api",
            "user": null,
            "author": null,
            "timestamp": "2023-11-08T16:39:36.459053+01:00",
            "action": 13,
            "target": "(Contributed by Raymond Hettinger and incorporating design ideas from Jim Baker, Miki Tebeka, and Nick Coghlan; see `recipe 498245 <https://code.activestate.com/recipes/498245/>`_\\, `recipe 577479 <https://code.activestate.com/recipes/577479/>`_\\, :issue:`10586`, and :issue:`10593`.)",
            "old": "(Contributed by Raymond Hettinger and incorporating design ideas from Jim Baker, Miki Tebeka, and Nick Coghlan; see `recipe 498245 <https://code.activestate.com/recipes/498245/>`_\\, `recipe 577479 <https://code.activestate.com/recipes/577479/>`_\\, :issue:`10586`, and :issue:`10593`.)",
            "details": {
                "state": 100,
                "source": "(Contributed by Raymond Hettinger and incorporating design ideas from Jim Baker, Miki Tebeka, and Nick Coghlan; see `recipe 498245 <https://code.activestate.com/recipes/498245/>`_\\, `recipe 577479 <https://code.activestate.com/recipes/577479/>`_\\, :issue:`10586`, and :issue:`10593`.)",
                "old_state": 100
            },
            "id": 71033339,
            "action_name": "Source string added",
            "url": "https://hosted.weblate.org/api/changes/71033339/?format=api"
        },
        {
            "unit": "https://hosted.weblate.org/api/units/108796617/?format=api",
            "component": "https://hosted.weblate.org/api/components/python-docs/latest%252Flatestwhatsnew32/?format=api",
            "translation": "https://hosted.weblate.org/api/translations/python-docs/latest%252Flatestwhatsnew32/en/?format=api",
            "user": null,
            "author": null,
            "timestamp": "2023-11-08T16:39:36.449803+01:00",
            "action": 13,
            "target": "If the phonelist table gets updated, the outdated contents of the cache can be cleared with:",
            "old": "If the phonelist table gets updated, the outdated contents of the cache can be cleared with:",
            "details": {
                "state": 100,
                "source": "If the phonelist table gets updated, the outdated contents of the cache can be cleared with:",
                "old_state": 100
            },
            "id": 71033338,
            "action_name": "Source string added",
            "url": "https://hosted.weblate.org/api/changes/71033338/?format=api"
        },
        {
            "unit": "https://hosted.weblate.org/api/units/108796615/?format=api",
            "component": "https://hosted.weblate.org/api/components/python-docs/latest%252Flatestwhatsnew32/?format=api",
            "translation": "https://hosted.weblate.org/api/translations/python-docs/latest%252Flatestwhatsnew32/en/?format=api",
            "user": null,
            "author": null,
            "timestamp": "2023-11-08T16:39:36.438778+01:00",
            "action": 13,
            "target": "To help with choosing an effective cache size, the wrapped function is instrumented for tracking cache statistics:",
            "old": "To help with choosing an effective cache size, the wrapped function is instrumented for tracking cache statistics:",
            "details": {
                "state": 100,
                "source": "To help with choosing an effective cache size, the wrapped function is instrumented for tracking cache statistics:",
                "old_state": 100
            },
            "id": 71033337,
            "action_name": "Source string added",
            "url": "https://hosted.weblate.org/api/changes/71033337/?format=api"
        },
        {
            "unit": "https://hosted.weblate.org/api/units/108796613/?format=api",
            "component": "https://hosted.weblate.org/api/components/python-docs/latest%252Flatestwhatsnew32/?format=api",
            "translation": "https://hosted.weblate.org/api/translations/python-docs/latest%252Flatestwhatsnew32/en/?format=api",
            "user": null,
            "author": null,
            "timestamp": "2023-11-08T16:39:36.426729+01:00",
            "action": 13,
            "target": "For example, adding a caching decorator to a database query function can save database accesses for popular searches:",
            "old": "For example, adding a caching decorator to a database query function can save database accesses for popular searches:",
            "details": {
                "state": 100,
                "source": "For example, adding a caching decorator to a database query function can save database accesses for popular searches:",
                "old_state": 100
            },
            "id": 71033289,
            "action_name": "Source string added",
            "url": "https://hosted.weblate.org/api/changes/71033289/?format=api"
        },
        {
            "unit": "https://hosted.weblate.org/api/units/108796608/?format=api",
            "component": "https://hosted.weblate.org/api/components/python-docs/latest%252Flatestwhatsnew32/?format=api",
            "translation": "https://hosted.weblate.org/api/translations/python-docs/latest%252Flatestwhatsnew32/en/?format=api",
            "user": null,
            "author": null,
            "timestamp": "2023-11-08T16:39:36.416408+01:00",
            "action": 13,
            "target": "The :mod:`functools` module includes a new decorator for caching function calls.  :func:`functools.lru_cache` can save repeated queries to an external resource whenever the results are expected to be the same.",
            "old": "The :mod:`functools` module includes a new decorator for caching function calls.  :func:`functools.lru_cache` can save repeated queries to an external resource whenever the results are expected to be the same.",
            "details": {
                "state": 100,
                "source": "The :mod:`functools` module includes a new decorator for caching function calls.  :func:`functools.lru_cache` can save repeated queries to an external resource whenever the results are expected to be the same.",
                "old_state": 100
            },
            "id": 71033288,
            "action_name": "Source string added",
            "url": "https://hosted.weblate.org/api/changes/71033288/?format=api"
        },
        {
            "unit": "https://hosted.weblate.org/api/units/108796604/?format=api",
            "component": "https://hosted.weblate.org/api/components/python-docs/latest%252Flatestwhatsnew32/?format=api",
            "translation": "https://hosted.weblate.org/api/translations/python-docs/latest%252Flatestwhatsnew32/en/?format=api",
            "user": null,
            "author": null,
            "timestamp": "2023-11-08T16:39:36.406780+01:00",
            "action": 13,
            "target": "functools",
            "old": "functools",
            "details": {
                "state": 100,
                "source": "functools",
                "old_state": 100
            },
            "id": 71033287,
            "action_name": "Source string added",
            "url": "https://hosted.weblate.org/api/changes/71033287/?format=api"
        },
        {
            "unit": "https://hosted.weblate.org/api/units/108796598/?format=api",
            "component": "https://hosted.weblate.org/api/components/python-docs/latest%252Flatestwhatsnew32/?format=api",
            "translation": "https://hosted.weblate.org/api/translations/python-docs/latest%252Flatestwhatsnew32/en/?format=api",
            "user": null,
            "author": null,
            "timestamp": "2023-11-08T16:39:36.398949+01:00",
            "action": 13,
            "target": "(Contributed by Florent Xicluna and Fredrik Lundh, :issue:`6472`.)",
            "old": "(Contributed by Florent Xicluna and Fredrik Lundh, :issue:`6472`.)",
            "details": {
                "state": 100,
                "source": "(Contributed by Florent Xicluna and Fredrik Lundh, :issue:`6472`.)",
                "old_state": 100
            },
            "id": 71033286,
            "action_name": "Source string added",
            "url": "https://hosted.weblate.org/api/changes/71033286/?format=api"
        },
        {
            "unit": "https://hosted.weblate.org/api/units/108796593/?format=api",
            "component": "https://hosted.weblate.org/api/components/python-docs/latest%252Flatestwhatsnew32/?format=api",
            "translation": "https://hosted.weblate.org/api/translations/python-docs/latest%252Flatestwhatsnew32/en/?format=api",
            "user": null,
            "author": null,
            "timestamp": "2023-11-08T16:39:36.388996+01:00",
            "action": 13,
            "target": "For details of the update, see `Introducing ElementTree <https://web.archive.org/web/20200703234532/http://effbot.org/zone/elementtree-13-intro.htm>`_ on Fredrik Lundh's website.",
            "old": "For details of the update, see `Introducing ElementTree <https://web.archive.org/web/20200703234532/http://effbot.org/zone/elementtree-13-intro.htm>`_ on Fredrik Lundh's website.",
            "details": {
                "state": 100,
                "source": "For details of the update, see `Introducing ElementTree <https://web.archive.org/web/20200703234532/http://effbot.org/zone/elementtree-13-intro.htm>`_ on Fredrik Lundh's website.",
                "old_state": 100
            },
            "id": 71033285,
            "action_name": "Source string added",
            "url": "https://hosted.weblate.org/api/changes/71033285/?format=api"
        },
        {
            "unit": "https://hosted.weblate.org/api/units/108796588/?format=api",
            "component": "https://hosted.weblate.org/api/components/python-docs/latest%252Flatestwhatsnew32/?format=api",
            "translation": "https://hosted.weblate.org/api/translations/python-docs/latest%252Flatestwhatsnew32/en/?format=api",
            "user": null,
            "author": null,
            "timestamp": "2023-11-08T16:39:36.380359+01:00",
            "action": 13,
            "target": ":meth:`xml.etree.ElementTree.getiterator` use ``Element.iter`` instead.",
            "old": ":meth:`xml.etree.ElementTree.getiterator` use ``Element.iter`` instead.",
            "details": {
                "state": 100,
                "source": ":meth:`xml.etree.ElementTree.getiterator` use ``Element.iter`` instead.",
                "old_state": 100
            },
            "id": 71033284,
            "action_name": "Source string added",
            "url": "https://hosted.weblate.org/api/changes/71033284/?format=api"
        },
        {
            "unit": "https://hosted.weblate.org/api/units/108796583/?format=api",
            "component": "https://hosted.weblate.org/api/components/python-docs/latest%252Flatestwhatsnew32/?format=api",
            "translation": "https://hosted.weblate.org/api/translations/python-docs/latest%252Flatestwhatsnew32/en/?format=api",
            "user": null,
            "author": null,
            "timestamp": "2023-11-08T16:39:36.371803+01:00",
            "action": 13,
            "target": ":meth:`xml.etree.ElementTree.getchildren` use ``list(elem)`` instead.",
            "old": ":meth:`xml.etree.ElementTree.getchildren` use ``list(elem)`` instead.",
            "details": {
                "state": 100,
                "source": ":meth:`xml.etree.ElementTree.getchildren` use ``list(elem)`` instead.",
                "old_state": 100
            },
            "id": 71033283,
            "action_name": "Source string added",
            "url": "https://hosted.weblate.org/api/changes/71033283/?format=api"
        },
        {
            "unit": "https://hosted.weblate.org/api/units/108796577/?format=api",
            "component": "https://hosted.weblate.org/api/components/python-docs/latest%252Flatestwhatsnew32/?format=api",
            "translation": "https://hosted.weblate.org/api/translations/python-docs/latest%252Flatestwhatsnew32/en/?format=api",
            "user": null,
            "author": null,
            "timestamp": "2023-11-08T16:39:36.362900+01:00",
            "action": 13,
            "target": "Two methods have been deprecated:",
            "old": "Two methods have been deprecated:",
            "details": {
                "state": 100,
                "source": "Two methods have been deprecated:",
                "old_state": 100
            },
            "id": 71033282,
            "action_name": "Source string added",
            "url": "https://hosted.weblate.org/api/changes/71033282/?format=api"
        },
        {
            "unit": "https://hosted.weblate.org/api/units/108796572/?format=api",
            "component": "https://hosted.weblate.org/api/components/python-docs/latest%252Flatestwhatsnew32/?format=api",
            "translation": "https://hosted.weblate.org/api/translations/python-docs/latest%252Flatestwhatsnew32/en/?format=api",
            "user": null,
            "author": null,
            "timestamp": "2023-11-08T16:39:36.353176+01:00",
            "action": 13,
            "target": ":meth:`xml.etree.ElementTree.TreeBuilder.doctype` handles a doctype declaration",
            "old": ":meth:`xml.etree.ElementTree.TreeBuilder.doctype` handles a doctype declaration",
            "details": {
                "state": 100,
                "source": ":meth:`xml.etree.ElementTree.TreeBuilder.doctype` handles a doctype declaration",
                "old_state": 100
            },
            "id": 71033281,
            "action_name": "Source string added",
            "url": "https://hosted.weblate.org/api/changes/71033281/?format=api"
        }
    ]
}