All Versions
Latest Version
Avg Release Cycle
39 days
Latest Release
164 days ago

Changelog History
Page 1

  • v1.2.2 Changes

    January 19, 2022
    • [NEW] Added Kazakh locale.
    • ๐Ÿ’… [FIX] The Belarusian, Bulgarian, Czech, Macedonian, Polish, Russian, Slovak and Ukrainian locales now support dehumanize.
    • ๐Ÿ›  [FIX] Minor bug fixes and improvements to ChineseCN, Indonesian, Norwegian, and Russian locales.
    • โœ… [FIX] Expanded testing for multiple locales.
    • ๐Ÿ“š [INTERNAL] Started using xelatex for pdf generation in documentation.
    • โœ… [INTERNAL] Split requirements file into requirements.txt, requirements-docs.txt and requirements-tests.txt.
    • ๐Ÿ‘• [INTERNAL] Added flake8-annotations package for type linting in pre-commit.
  • v1.2.1 Changes

    October 24, 2021
    • [NEW] Added quarter granularity to humanize, for example:

    .. code-block:: python

    >>> import arrow
    >>> now =
    >>> four_month_shift = now.shift(months=4)
    >>> now.humanize(four_month_shift, granularity="quarter")
    'a quarter ago'
    >>> four_month_shift.humanize(now, granularity="quarter")
    'in a quarter'
    >>> thirteen_month_shift = now.shift(months=13)
    >>> thirteen_month_shift.humanize(now, granularity="quarter")
    'in 4 quarters'
    >>> now.humanize(thirteen_month_shift, granularity="quarter")
    '4 quarters ago'
    • [NEW] Added Sinhala and Urdu locales.
    • ๐Ÿ‘ [NEW] Added official support for Python 3.10.
    • โšก๏ธ [CHANGED] Updated Azerbaijani, Hebrew, and Serbian locales and added tests.
    • [CHANGED] Passing an empty granularity list to humanize now raises a ValueError.
  • v1.2.0 Changes

    September 12, 2021
    • [NEW] Added Albanian, Tamil and Zulu locales.
    • ๐Ÿ‘ [NEW] Added support for Decimal as input to arrow.get().
    • ๐Ÿ‘ [FIX] The Estonian, Finnish, Nepali and Zulu locales now support dehumanize.
    • ๐Ÿ“œ [FIX] Improved validation checks when using parser tokens A and hh.
    • ๐Ÿ›  [FIX] Minor bug fixes to Catalan, Cantonese, Greek and Nepali locales.
  • v1.1.1 Changes

    June 24, 2021
    • [NEW] Added Odia, Maltese, Serbian, Sami, and Luxembourgish locales.
    • ๐Ÿ‘€ [FIXED] All calls to arrow.get() should now properly pass the tzinfo argument to the Arrow constructor. See PR #968 <>_ for more info.
    • [FIXED] Humanize output is now properly truncated when a locale class overrides _format_timeframe().
    • [CHANGED] Renamed requirements.txt to requirements-dev.txt to prevent confusion with the dependencies in
    • โšก๏ธ [CHANGED] Updated Turkish locale and added tests.
  • v1.1.0 Changes

    April 26, 2021
    • [NEW] Implemented the dehumanize method for Arrow objects. This takes human readable input and uses it to perform relative time shifts, for example:

    .. code-block:: python

    >>> arw
    <Arrow [2021-04-26T21:06:14.256803+00:00]>
    >>> arw.dehumanize("8 hours ago")
    <Arrow [2021-04-26T13:06:14.256803+00:00]>
    >>> arw.dehumanize("in 4 days")
    <Arrow [2021-04-30T21:06:14.256803+00:00]>
    >>> arw.dehumanize("in an hour 34 minutes 10 seconds")
    <Arrow [2021-04-26T22:40:24.256803+00:00]>
    >>> arw.dehumanize("hace 2 aรฑos", locale="es")
    <Arrow [2019-04-26T21:06:14.256803+00:00]>
    • [NEW] Made the start of the week adjustable when using span("week"), for example:

    .. code-block:: python

    >>> arw
    <Arrow [2021-04-26T21:06:14.256803+00:00]>
    >>> arw.isoweekday()
    1 # Monday
    >>> arw.span("week")
    (<Arrow [2021-04-26T00:00:00+00:00]>, <Arrow [2021-05-02T23:59:59.999999+00:00]>)
    >>> arw.span("week", week_start=4)
    (<Arrow [2021-04-22T00:00:00+00:00]>, <Arrow [2021-04-28T23:59:59.999999+00:00]>)
    • [NEW] Added Croatian, Latin, Latvian, Lithuanian and Malay locales.
    • [FIX] Internally standardize locales and improve locale validation. Locales should now use the ISO notation of a dash ("en-gb") rather than an underscore ("en_gb") however this change is backward compatible.
    • [FIX] Correct type checking for internal locale mapping by using _init_subclass. This now allows subclassing of locales, for example:

    .. code-block:: python

    >>> from arrow.locales import EnglishLocale
    >>> class Klingon(EnglishLocale):
    ...     names = ["tlh"]
    >>> from arrow import locales
    >>> locales.get_locale("tlh")
    <__main__.Klingon object at 0x7f7cd1effd30>
    • [FIX] Correct type checking for arrow.get(2021, 3, 9) construction.
    • ๐Ÿ’… [FIX] Audited all docstrings for style, typos and outdated info.
  • v1.0.3 Changes

    March 05, 2021
    • โšก๏ธ [FIX] Updated internals to avoid issues when running mypy --strict.
    • [FIX] Corrections to Swedish locale.
    • โœ… [INTERNAL] Lowered required coverage limit until humanize month tests are fixed.
  • v1.0.2 Changes

    February 28, 2021
    • ๐Ÿ›  [FIXED] Fixed an OverflowError that could occur when running Arrow on a 32-bit OS.
  • v1.0.1 Changes

    February 27, 2021
    • ๐Ÿ“ฆ [FIXED] A py.typed file is now bundled with the Arrow package to conform to PEP 561.
  • v1.0.0 Changes

    February 26, 2021

    ๐Ÿ“ฆ After 8 years we're pleased to announce Arrow v1.0. Thanks to the entire Python community for helping make Arrow the amazing package it is today!

    • โฌ‡๏ธ [CHANGE] Arrow has dropped support for Python 2.7 and 3.5.
    • ๐Ÿ’ฅ [CHANGE] There are multiple breaking changes with this release, please see the migration guide <>_ for a complete overview.
    • [CHANGE] Arrow is now following semantic versioning <>_.
    • [CHANGE] Made humanize granularity="auto" limits more accurate to reduce strange results.
    • ๐Ÿ‘ [NEW] Added support for Python 3.9.
    • [NEW] Added a new keyword argument "exact" to span, span_range and interval methods. This makes timespans begin at the start time given and not extend beyond the end time given, for example:

    .. code-block:: python

    >>> start = Arrow(2021, 2, 5, 12, 30)
    >>> end = Arrow(2021, 2, 5, 17, 15)
    >>> for r in arrow.Arrow.span_range('hour', start, end, exact=True):
    ...     print(r)
    (<Arrow [2021-02-05T12:30:00+00:00]>, <Arrow [2021-02-05T13:29:59.999999+00:00]>)
    (<Arrow [2021-02-05T13:30:00+00:00]>, <Arrow [2021-02-05T14:29:59.999999+00:00]>)
    (<Arrow [2021-02-05T14:30:00+00:00]>, <Arrow [2021-02-05T15:29:59.999999+00:00]>)
    (<Arrow [2021-02-05T15:30:00+00:00]>, <Arrow [2021-02-05T16:29:59.999999+00:00]>)
    (<Arrow [2021-02-05T16:30:00+00:00]>, <Arrow [2021-02-05T17:14:59.999999+00:00]>)
    • ๐Ÿ’… [NEW] Arrow now natively supports PEP 484-style type annotations.
    • ๐Ÿ [FIX] Fixed handling of maximum permitted timestamp on Windows systems.
    • [FIX] Corrections to French, German, Japanese and Norwegian locales.
    • ๐Ÿ“œ [INTERNAL] Raise more appropriate errors when string parsing fails to match.
  • v0.17.0 Changes

    October 06, 2020
    • โฌ‡๏ธ [WARN] Arrow will drop support for Python 2.7 and 3.5 in the upcoming 1.0.0 release. This is the last major release to support Python 2.7 and Python 3.5.
    • [NEW] Arrow now properly handles imaginary datetimes during DST shifts. For example:

    .. code-block:: python

    >>> just_before = arrow.get(2013, 3, 31, 1, 55, tzinfo="Europe/Paris")
    >>> just_before.shift(minutes=+10)
    <Arrow [2013-03-31T03:05:00+02:00]>

    .. code-block:: python

    >>> before = arrow.get("2018-03-10 23:00:00", "YYYY-MM-DD HH:mm:ss", tzinfo="US/Pacific")
    >>> after = arrow.get("2018-03-11 04:00:00", "YYYY-MM-DD HH:mm:ss", tzinfo="US/Pacific")
    >>> result=[(t,"utc")) for t in arrow.Arrow.range("hour", before, after)]
    >>> for r in result:
    ...     print(r)
    (<Arrow [2018-03-10T23:00:00-08:00]>, <Arrow [2018-03-11T07:00:00+00:00]>)
    (<Arrow [2018-03-11T00:00:00-08:00]>, <Arrow [2018-03-11T08:00:00+00:00]>)
    (<Arrow [2018-03-11T01:00:00-08:00]>, <Arrow [2018-03-11T09:00:00+00:00]>)
    (<Arrow [2018-03-11T03:00:00-07:00]>, <Arrow [2018-03-11T10:00:00+00:00]>)
    (<Arrow [2018-03-11T04:00:00-07:00]>, <Arrow [2018-03-11T11:00:00+00:00]>)
    • ๐ŸŒ [NEW] Added humanize week granularity translation for Tagalog.
    • [CHANGE] Calls to the timestamp property now emit a DeprecationWarning. In a future release, timestamp will be changed to a method to align with Python's datetime module. If you would like to continue using the property, please change your code to use the int_timestamp or float_timestamp properties instead.
    • [CHANGE] Expanded and improved Catalan locale.
    • ๐Ÿ›  [FIX] Fixed a bug that caused Arrow.range() to incorrectly cut off ranges in certain scenarios when using month, quarter, or year endings.
    • ๐Ÿ“œ [FIX] Fixed a bug that caused day of week token parsing to be case sensitive.
    • ๐Ÿ‘ [INTERNAL] A number of functions were reordered in for better organization and grouping of related methods. This change will have no impact on usage.
    • [INTERNAL] A minimum tox version is now enforced for compatibility reasons. Contributors must use tox >3.18.0 going forward.