pytimeparse2


Namepytimeparse2 JSON
Version 1.7.1 PyPI version JSON
download
home_pagehttps://github.com/onegreyonewhite/pytimeparse2
SummaryTime expression parser.
upload_time2023-05-11 21:40:55
maintainer
docs_urlNone
authorSergey Klyuykov
requires_python>=3.6
licenseMIT
keywords parsing time timeparsing text
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage
            pytimeparse2: time expression parser
=====================================

.. image:: https://github.com/onegreyonewhite/pytimeparse2/actions/workflows/check.yml/badge.svg?branch=master
    :target: https://github.com/onegreyonewhite/pytimeparse2/actions
    :alt: Pipeline status

.. image:: https://badge.fury.io/py/pytimeparse2.svg
    :target: https://badge.fury.io/py/pytimeparse2


This is a `pytimeparse <https://github.com/wroberts/pytimeparse>`_ based project with the aim of optimizing functionality and providing stable support.

Copyright (c) 2021 Sergey Klyuykov <onegreyonewhite@mail.ru>

Licensed under the MIT License (see source file ``pytimeparse2.py`` for
details).

A small Python library to parse various kinds of time expressions,
inspired by
`this StackOverflow question <http://stackoverflow.com/questions/4628122/how-to-construct-a-timedelta-object-from-a-simple-string>`_.

The single function ``pytimeparse2.parse`` defined in the library parses time
expressions like the following:

- ``32m``
- ``2h32m``
- ``3d2h32m``
- ``1w3d2h32m``
- ``1w 3d 2h 32m``
- ``1 w 3 d 2 h 32 m``
- ``4:13``
- ``4:13:02``
- ``4:13:02.266``
- ``2:04:13:02.266``
- ``2 days,  4:13:02`` (``uptime`` format)
- ``2 days,  4:13:02.266``
- ``5hr34m56s``
- ``5 hours, 34 minutes, 56 seconds``
- ``5 hrs, 34 mins, 56 secs``
- ``2 days, 5 hours, 34 minutes, 56 seconds``
- ``1.2 m``
- ``1.2 min``
- ``1.2 mins``
- ``1.2 minute``
- ``1.2 minutes``
- ``172 hours``
- ``172 hr``
- ``172 h``
- ``172 hrs``
- ``172 hour``
- ``1.24 days``
- ``5 d``
- ``5 day``
- ``5 days``
- ``5.6 wk``
- ``5.6 week``
- ``5.6 weeks``

It returns the time as a number of seconds (an integer value if
possible, otherwise a floating-point number)::

    >>> from pytimeparse import parse
    >>> parse('1.2 minutes')
    72

For months and years, the library does not consider complications such as leap-
years and leap-seconds. Instead, it assumes "30 days for a month" and "365 days
for a year" as the basis for calculations with those units.

- ``2 mo``
- ``2 months``
- ``3y``
- ``3 years``
- ``1y2mo3w4d5h6m7s8ms``

For better capability with dates, use keyword ``as_timedelta=True`` which mark for function returns
value as ``datetime.timedelta`` or ``dateutil.relitivedelta.relativedelta`` (if installed)::

    >>> from pytimeparse import parse
    >>> parse('24h', as_timedelta=True)
    relativedelta(days=+1)

You can also forced disable dateutil support by calling ``disable_dateutil()`` before ``parse(...)``.
For returning support call ``enable_dateutil()``.

Notes
-----

A number of seconds can be converted back into a string using the
``datetime`` module in the standard library, as noted in
`this other StackOverflow question <http://stackoverflow.com/questions/538666/python-format-timedelta-to-string>`_::

    >>> from pytimeparse import parse
    >>> import datetime
    >>> parse('1 day, 14:20:16')
    138016
    >>> str(datetime.timedelta(seconds=138016))
    '1 day, 14:20:16'

Future work
-----------

1. Speed up with Cython for some python versions.
2. Use github actions for testing and releasing.



            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/onegreyonewhite/pytimeparse2",
    "name": "pytimeparse2",
    "maintainer": "",
    "docs_url": null,
    "requires_python": ">=3.6",
    "maintainer_email": "",
    "keywords": "parsing,time,timeparsing,text",
    "author": "Sergey Klyuykov",
    "author_email": "onegreyonewhite@mail.ru",
    "download_url": "https://files.pythonhosted.org/packages/19/10/cc63fecd69905eb4d300fe71bd580e4a631483e9f53fdcb8c0ad345ce832/pytimeparse2-1.7.1.tar.gz",
    "platform": null,
    "description": "pytimeparse2: time expression parser\n=====================================\n\n.. image:: https://github.com/onegreyonewhite/pytimeparse2/actions/workflows/check.yml/badge.svg?branch=master\n    :target: https://github.com/onegreyonewhite/pytimeparse2/actions\n    :alt: Pipeline status\n\n.. image:: https://badge.fury.io/py/pytimeparse2.svg\n    :target: https://badge.fury.io/py/pytimeparse2\n\n\nThis is a `pytimeparse <https://github.com/wroberts/pytimeparse>`_ based project with the aim of optimizing functionality and providing stable support.\n\nCopyright (c) 2021 Sergey Klyuykov <onegreyonewhite@mail.ru>\n\nLicensed under the MIT License (see source file ``pytimeparse2.py`` for\ndetails).\n\nA small Python library to parse various kinds of time expressions,\ninspired by\n`this StackOverflow question <http://stackoverflow.com/questions/4628122/how-to-construct-a-timedelta-object-from-a-simple-string>`_.\n\nThe single function ``pytimeparse2.parse`` defined in the library parses time\nexpressions like the following:\n\n- ``32m``\n- ``2h32m``\n- ``3d2h32m``\n- ``1w3d2h32m``\n- ``1w 3d 2h 32m``\n- ``1 w 3 d 2 h 32 m``\n- ``4:13``\n- ``4:13:02``\n- ``4:13:02.266``\n- ``2:04:13:02.266``\n- ``2 days,  4:13:02`` (``uptime`` format)\n- ``2 days,  4:13:02.266``\n- ``5hr34m56s``\n- ``5 hours, 34 minutes, 56 seconds``\n- ``5 hrs, 34 mins, 56 secs``\n- ``2 days, 5 hours, 34 minutes, 56 seconds``\n- ``1.2 m``\n- ``1.2 min``\n- ``1.2 mins``\n- ``1.2 minute``\n- ``1.2 minutes``\n- ``172 hours``\n- ``172 hr``\n- ``172 h``\n- ``172 hrs``\n- ``172 hour``\n- ``1.24 days``\n- ``5 d``\n- ``5 day``\n- ``5 days``\n- ``5.6 wk``\n- ``5.6 week``\n- ``5.6 weeks``\n\nIt returns the time as a number of seconds (an integer value if\npossible, otherwise a floating-point number)::\n\n    >>> from pytimeparse import parse\n    >>> parse('1.2 minutes')\n    72\n\nFor months and years, the library does not consider complications such as leap-\nyears and leap-seconds. Instead, it assumes \"30 days for a month\" and \"365 days\nfor a year\" as the basis for calculations with those units.\n\n- ``2 mo``\n- ``2 months``\n- ``3y``\n- ``3 years``\n- ``1y2mo3w4d5h6m7s8ms``\n\nFor better capability with dates, use keyword ``as_timedelta=True`` which mark for function returns\nvalue as ``datetime.timedelta`` or ``dateutil.relitivedelta.relativedelta`` (if installed)::\n\n    >>> from pytimeparse import parse\n    >>> parse('24h', as_timedelta=True)\n    relativedelta(days=+1)\n\nYou can also forced disable dateutil support by calling ``disable_dateutil()`` before ``parse(...)``.\nFor returning support call ``enable_dateutil()``.\n\nNotes\n-----\n\nA number of seconds can be converted back into a string using the\n``datetime`` module in the standard library, as noted in\n`this other StackOverflow question <http://stackoverflow.com/questions/538666/python-format-timedelta-to-string>`_::\n\n    >>> from pytimeparse import parse\n    >>> import datetime\n    >>> parse('1 day, 14:20:16')\n    138016\n    >>> str(datetime.timedelta(seconds=138016))\n    '1 day, 14:20:16'\n\nFuture work\n-----------\n\n1. Speed up with Cython for some python versions.\n2. Use github actions for testing and releasing.\n\n\n",
    "bugtrack_url": null,
    "license": "MIT",
    "summary": "Time expression parser.",
    "version": "1.7.1",
    "project_urls": {
        "Homepage": "https://github.com/onegreyonewhite/pytimeparse2",
        "Issue Tracker": "https://github.com/onegreyonewhite/pytimeparse2/-/issues",
        "Releases": "https://pypi.org/project/pytimeparse2/#history",
        "Source Code": "https://github.com/onegreyonewhite/pytimeparse2.git"
    },
    "split_keywords": [
        "parsing",
        "time",
        "timeparsing",
        "text"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "179e85abf91ef5df452f56498927affdb7128194d15644084f6c6722477c305b",
                "md5": "83fd992679f34fbd4b11ad76105015fe",
                "sha256": "a162ea6a7707fd0bb82dd99556efb783935f51885c8bdced0fce3fffe85ab002"
            },
            "downloads": -1,
            "filename": "pytimeparse2-1.7.1-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "83fd992679f34fbd4b11ad76105015fe",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.6",
            "size": 6136,
            "upload_time": "2023-05-11T21:40:46",
            "upload_time_iso_8601": "2023-05-11T21:40:46.051624Z",
            "url": "https://files.pythonhosted.org/packages/17/9e/85abf91ef5df452f56498927affdb7128194d15644084f6c6722477c305b/pytimeparse2-1.7.1-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "1910cc63fecd69905eb4d300fe71bd580e4a631483e9f53fdcb8c0ad345ce832",
                "md5": "bb42cd5e64acc3947bedaa8f79c20c04",
                "sha256": "98668cdcba4890e1789e432e8ea0059ccf72402f13f5d52be15bdfaeb3a8b253"
            },
            "downloads": -1,
            "filename": "pytimeparse2-1.7.1.tar.gz",
            "has_sig": false,
            "md5_digest": "bb42cd5e64acc3947bedaa8f79c20c04",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.6",
            "size": 10431,
            "upload_time": "2023-05-11T21:40:55",
            "upload_time_iso_8601": "2023-05-11T21:40:55.774033Z",
            "url": "https://files.pythonhosted.org/packages/19/10/cc63fecd69905eb4d300fe71bd580e4a631483e9f53fdcb8c0ad345ce832/pytimeparse2-1.7.1.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2023-05-11 21:40:55",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "onegreyonewhite",
    "github_project": "pytimeparse2",
    "travis_ci": false,
    "coveralls": true,
    "github_actions": true,
    "tox": true,
    "lcname": "pytimeparse2"
}
        
Elapsed time: 0.08391s