{ "info": { "author": "Ian Hutchinson", "author_email": "ihutchinson@agalmicventures.com", "bugtrack_url": null, "classifiers": [ "License :: OSI Approved :: MIT License", "Natural Language :: English", "Operating System :: OS Independent", "Programming Language :: Python :: 3", "Topic :: Software Development :: Libraries", "Topic :: Utilities" ], "description": "\n# HumanTime\n`HumanTime` is time for humans in Python.\n\nSidestep tedious and error-prone code in favor of a simple, English-based DSL for specifying absolute and relative times:\n\n HumanTime.parseTime(Input) | Input\n ---------------------------+------------------------------------------\n\t2019-05-05 19:32:28.493048 | now\n\t2019-05-05 00:00:00.000000 | today\n\t2019-05-05 12:00:00.000000 | noon\n\t2019-05-04 00:00:00.000000 | yesterday\n\t2019-05-06 00:00:00.000000 | tomorrow\n\t2019-05-06 12:00:00.000000 | tomorrow at noon\n\t2019-05-06 15:30:00.000000 | tomorrow at 3:30PM\n\t2019-05-08 00:00:00.000000 | Wednesday\n\t2019-05-05 22:32:28.493048 | 3 hours from now\n\t2019-05-05 22:31:28.493048 | 1 minute before 3 hours from now\n\t2019-05-05 13:00:00.000000 | an hour after noon\n\t2019-05-05 20:00:00.000000 | eight hours after noon\n\t2019-04-30 00:00:00.000000 | 3 months after 2019-1-31\n\t2021-02-28 00:00:00.000000 | 1 year after 2020-02-29\n\t2019-01-01 00:00:02.000000 | second second after 2019-01-01\n\t2019-06-16 00:00:00.000000 | 1 month after Thurs after 2019-5-9\n\t2019-07-05 00:00:00.000000 | business day after 2019-7-3\n\t2019-07-08 00:00:00.000000 | couple bus days after 2019-7-3\n\t2021-04-04 00:00:00.000000 | Easter 2021\n\n## Installation\nTo install, simply use `pip`:\n\n\t> python3 -m pip install HumanTime\n\n## Usage\nBehold the simplicity and elegance of `HumanTime` --\n\n### Times\n\t>>> import HumanTime\n\t>>> HumanTime.parseTime('now')\n\tdatetime.datetime(2019, 5, 5, 20, 38, 10, 119936)\n\t>>> HumanTime.parseTime('3 hours from now')\n\tdatetime.datetime(2019, 5, 5, 23, 38, 13, 120777)\n\t>>> HumanTime.parseTime('2019-1-3')\n\tdatetime.datetime(2019, 1, 3, 0, 0)\n\t>>> HumanTime.parseTime('three days before 2019-1-3')\n\tdatetime.datetime(2018, 12, 31, 0, 0)\n\t>>> HumanTime.parseTime('a month after 20200131')\n\tdatetime.datetime(2020, 2, 29, 0, 0)\n\t>>> HumanTime.parseTime('Tuesday')\n\tdatetime.datetime(2019, 5, 7, 0, 0)\n\t>>> HumanTime.parseTime('wed')\n\tdatetime.datetime(2019, 5, 8, 0, 0)\n\t>>> HumanTime.parseTime('Thurs after 2019-5-9')\n\tdatetime.datetime(2019, 5, 16, 0, 0)\n\t>>> HumanTime.parseTime('2 business days before 2019-7-8')\n\tdatetime.datetime(2019, 7, 3, 0, 0)\n\n### Durations\nFixed-length durations, representable by a `datetime.timedelta`, may also be parsed:\n\n\t>>> HumanTime.parseDuration('3 seconds')\n\tdatetime.timedelta(seconds=3)\n\t>>> HumanTime.parseDuration('3 minutes')\n\tdatetime.timedelta(seconds=180)\n\t>>> HumanTime.parseDuration('3 days')\n\tdatetime.timedelta(days=3)\n\t>>> HumanTime.parseDuration('three weeks')\n\tdatetime.timedelta(days=21)\n\n### Numbers\nSimple numbers (those necessary for parsing times) can also be parsed separately:\n\n\t>>> HumanTime.parseCardinal('four')\n\t4\n\t>>> HumanTime.parseOrdinal('fourth')\n\t4\n\t>>> HumanTime.parseNumber('20th')\n\t20\n\t>>> HumanTime.parseNumber('45')\n\t45\n\n### Tools\nCommon actions are packaged as CLI tools and can be found in the `HumanTime.Tools` module.\n\n#### `GenerateHolidayCalendar`\nGenerates a holiday calendar CSV with optional from and to years, headers, and observance rules.\n\n\t> python3 -m HumanTime.Tools.GenerateHolidayCalendar -f 2020 -t 2021 -o\n\tDate,Country,Name\n\t2020-01-01,US,New Year's Day\n\t2020-01-20,US,Martin Luther King Jr. Day\n\t2020-02-17,US,Presidents' Day\n\t2020-04-10,US,Good Friday\n\t2020-05-25,US,Memorial Day\n\t2020-07-03,US,Independence Day (Observed)\n\t2020-09-07,US,Labor Day\n\t...\n\n## Development\n\n### Unit Tests\nUnit tests can be run with the following command:\n\n > python3 -m unittest discover\n\t...........................................................................\n\t----------------------------------------------------------------------\n\tRan 75 tests in 0.020s\n\n\tOK\n\n### CI\nContinuous integration is handled in Gitlab CI via `.gitlab-ci.yml`.\n\n\n", "description_content_type": "text/markdown", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/AgalmicVentures/HumanTime", "keywords": "", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "HumanTime", "package_url": "https://pypi.org/project/HumanTime/", "platform": "", "project_url": "https://pypi.org/project/HumanTime/", "project_urls": { "Homepage": "https://github.com/AgalmicVentures/HumanTime" }, "release_url": "https://pypi.org/project/HumanTime/0.1.5/", "requires_dist": null, "requires_python": "", "summary": "Time for humans in Python", "version": "0.1.5" }, "last_serial": 5985669, "releases": { "0.0.1": [ { "comment_text": "", "digests": { "md5": "0e01c8cfcf216009ec30a657863c32fb", "sha256": "0df2f3b25b5f0e3a54c8221df494b65d6f104a539b41ca8d44f6174ba5e848bb" }, "downloads": -1, "filename": "HumanTime-0.0.1-py3-none-any.whl", "has_sig": false, "md5_digest": "0e01c8cfcf216009ec30a657863c32fb", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 4839, "upload_time": "2019-05-06T01:36:58", "url": "https://files.pythonhosted.org/packages/94/5b/52c2267ad26b1ff0169be1ac5d1bd7a2d7b4ade8e736b6319b31022709ee/HumanTime-0.0.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "2e25fc52544ad88afef9edf8be825602", "sha256": "e66337de7279fc316b81f9c36cd578acd1b328a0f9f62851c90206235bd49129" }, "downloads": -1, "filename": "HumanTime-0.0.1.tar.gz", "has_sig": false, "md5_digest": "2e25fc52544ad88afef9edf8be825602", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3762, "upload_time": "2019-05-06T01:37:00", "url": "https://files.pythonhosted.org/packages/1a/fd/55fe9e1b407834500a4dcf1e1a7a700d4595da7534da00f9a4972f00af2e/HumanTime-0.0.1.tar.gz" } ], "0.0.2": [ { "comment_text": "", "digests": { "md5": "4be1d3371fab6c1246166e105b7b62c6", "sha256": "de254b2d66b59cfdd08797e86f9f62f994170501579ed3b860bffb4bccc20447" }, "downloads": -1, "filename": "HumanTime-0.0.2-py3-none-any.whl", "has_sig": false, "md5_digest": "4be1d3371fab6c1246166e105b7b62c6", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 5752, "upload_time": "2019-05-06T03:13:50", "url": "https://files.pythonhosted.org/packages/8d/dd/4c8b414e22d63dab27ae7e79c3883c04aefcf9bed7e160ee83d2dd885554/HumanTime-0.0.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "354fe1b3a011fc7612fee650e7226f7a", "sha256": "d7d5678202f8986bb0b1ffe9085f9687d7d6a2b00058a1edc192b62631582dff" }, "downloads": -1, "filename": "HumanTime-0.0.2.tar.gz", "has_sig": false, "md5_digest": "354fe1b3a011fc7612fee650e7226f7a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4766, "upload_time": "2019-05-06T03:13:51", "url": "https://files.pythonhosted.org/packages/3a/11/297db151c6c92863baa307d06ba5dddd5144de9328aa7324b0b13500fb7d/HumanTime-0.0.2.tar.gz" } ], "0.0.3": [ { "comment_text": "", "digests": { "md5": "ce46796efd9355adc637e037743a0d03", "sha256": "18750bb291b793f018610632f58107a36c2d1b225786f429717e0692f4fa3aea" }, "downloads": -1, "filename": "HumanTime-0.0.3-py3-none-any.whl", "has_sig": false, "md5_digest": "ce46796efd9355adc637e037743a0d03", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 7103, "upload_time": "2019-05-12T00:07:25", "url": "https://files.pythonhosted.org/packages/31/c5/3c4c0adf25d7c7f6c472d822e46c096653404983563e2781ca51d620d9a8/HumanTime-0.0.3-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "9784f1f73822465b97762d6e69cbb1e3", "sha256": "b4ad1eeaffdbaef7e4c755fb0df4724ac4a550f472595b55f15c1fa8e1c7cfc5" }, "downloads": -1, "filename": "HumanTime-0.0.3.tar.gz", "has_sig": false, "md5_digest": "9784f1f73822465b97762d6e69cbb1e3", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6194, "upload_time": "2019-05-12T00:07:27", "url": "https://files.pythonhosted.org/packages/ec/c6/079d47c72a2da030afaf838ee7af272ccce2efa2f406cb65bf123dd38ed1/HumanTime-0.0.3.tar.gz" } ], "0.1.0": [ { "comment_text": "", "digests": { "md5": "3110838093cd6eb7054a2e5fbbda93a6", "sha256": "fffd1311ec2e912d1f3b8fb80a31db4c4275fb92aa1fd413bf0c0f36b2c446cf" }, "downloads": -1, "filename": "HumanTime-0.1.0-py3-none-any.whl", "has_sig": false, "md5_digest": "3110838093cd6eb7054a2e5fbbda93a6", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 14414, "upload_time": "2019-06-01T22:43:30", "url": "https://files.pythonhosted.org/packages/9c/8f/4a4ef479e35e2f34f0a1b4510bccbfda957e9aa0b6ebe222275b4abf2371/HumanTime-0.1.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "ec124e131f9454c78d76e5a43ff30848", "sha256": "0af6111d6b4e8168149a6158f0a02949b98863efc6967c7db016d8f6fd9daf48" }, "downloads": -1, "filename": "HumanTime-0.1.0.tar.gz", "has_sig": false, "md5_digest": "ec124e131f9454c78d76e5a43ff30848", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11039, "upload_time": "2019-06-01T22:43:33", "url": "https://files.pythonhosted.org/packages/79/9f/938b65e3103073c0fd27968924a0e92b78233aa99babe65ca77021dc0f28/HumanTime-0.1.0.tar.gz" } ], "0.1.1": [ { "comment_text": "", "digests": { "md5": "8137222bed88f2611cbf9dca5acdcfcd", "sha256": "1d5098a4bb7337ecf44c4c9ac0670f11474a80f779bac73e97d3ee922df4ed38" }, "downloads": -1, "filename": "HumanTime-0.1.1-py3-none-any.whl", "has_sig": false, "md5_digest": "8137222bed88f2611cbf9dca5acdcfcd", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 14418, "upload_time": "2019-06-08T21:27:26", "url": "https://files.pythonhosted.org/packages/41/47/7262470c79d829625086241469404fc31c9d781eefc90d9c2130fc17e0b9/HumanTime-0.1.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "167936bd27232885592586ec4e63dea2", "sha256": "8dc71f7569bbcaee31054a4d9eaea61d6676021bc5253cca9fd343fa450f11db" }, "downloads": -1, "filename": "HumanTime-0.1.1.tar.gz", "has_sig": false, "md5_digest": "167936bd27232885592586ec4e63dea2", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8332, "upload_time": "2019-06-08T21:27:27", "url": "https://files.pythonhosted.org/packages/b6/37/380150242933dac6ca3f4df7d35bd0fbec4b823d7c321711ae4f54ac5726/HumanTime-0.1.1.tar.gz" } ], "0.1.2": [ { "comment_text": "", "digests": { "md5": "55b3cd095a8ea3e36cd3bad54b1e921e", "sha256": "a1d75380f168c57703529a972d78cd73f6aa887129b290c85b96a6f1f468d5b6" }, "downloads": -1, "filename": "HumanTime-0.1.2-py3-none-any.whl", "has_sig": false, "md5_digest": "55b3cd095a8ea3e36cd3bad54b1e921e", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 15320, "upload_time": "2019-06-09T01:42:08", "url": "https://files.pythonhosted.org/packages/c2/02/a6e8c4891fdea675fe1507790c00f41e2e10216034eb68bbbb41cee74ba8/HumanTime-0.1.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "e9d1c1b1dcecd77819a8f84c07c36c20", "sha256": "8d193ba15c0c2af27ec894952db833a4432cbd03b2622b8d9397d014ebde1772" }, "downloads": -1, "filename": "HumanTime-0.1.2.tar.gz", "has_sig": false, "md5_digest": "e9d1c1b1dcecd77819a8f84c07c36c20", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9162, "upload_time": "2019-06-09T01:42:09", "url": "https://files.pythonhosted.org/packages/ae/a8/edd13cd8495ff201bdbde22e742ba65350977bc036a44035da3837bd9e3d/HumanTime-0.1.2.tar.gz" } ], "0.1.3": [ { "comment_text": "", "digests": { "md5": "585cd19c936da7a1918815d08c4520ac", "sha256": "5198b6ab107c371b17f16bf3140ee820a9e2064582d8dbd67b7ad53073e2d7c1" }, "downloads": -1, "filename": "HumanTime-0.1.3-py3-none-any.whl", "has_sig": false, "md5_digest": "585cd19c936da7a1918815d08c4520ac", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 15675, "upload_time": "2019-06-14T22:26:57", "url": "https://files.pythonhosted.org/packages/97/a2/76092ddb7b5e89683b5413b85187fbb5860a113b2abb9222abafa484173b/HumanTime-0.1.3-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "1b1ee7e7a87bdc2b4273cf0d99ca6a70", "sha256": "38abfe1e9d5c11efb6fbace0a79e6b138158eeb550f2e0bf7a42b03c85d3d28a" }, "downloads": -1, "filename": "HumanTime-0.1.3.tar.gz", "has_sig": false, "md5_digest": "1b1ee7e7a87bdc2b4273cf0d99ca6a70", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9453, "upload_time": "2019-06-14T22:26:59", "url": "https://files.pythonhosted.org/packages/38/78/36d5c0c4186f3e592fe6463df589503844b14b23d78cc25b02f0f2314eed/HumanTime-0.1.3.tar.gz" } ], "0.1.4": [ { "comment_text": "", "digests": { "md5": "b3bcd91ba859cdafd7edb708d47f451b", "sha256": "ea9e29ab7e8c17c43c3f7128e06fe4bc5b9860036bd486852768e1c0382d5090" }, "downloads": -1, "filename": "HumanTime-0.1.4-py3-none-any.whl", "has_sig": false, "md5_digest": "b3bcd91ba859cdafd7edb708d47f451b", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 16365, "upload_time": "2019-08-30T15:03:49", "url": "https://files.pythonhosted.org/packages/8e/bc/043e58f25450257f29f299a2fb03a7671160080573a2b5d72d530c45f8c0/HumanTime-0.1.4-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "86624b87776d87280eb3b878872b2832", "sha256": "6bc3d4e564a9be06177c493600619354531b7f9dc331e3c697eb27ee4793fa62" }, "downloads": -1, "filename": "HumanTime-0.1.4.tar.gz", "has_sig": false, "md5_digest": "86624b87776d87280eb3b878872b2832", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10185, "upload_time": "2019-08-30T15:03:51", "url": "https://files.pythonhosted.org/packages/43/70/1950981393a16fd7da991a17f7d42fb432db7d337f355f74edd28e2e8d7e/HumanTime-0.1.4.tar.gz" } ], "0.1.5": [ { "comment_text": "", "digests": { "md5": "a7d4d49bd60dc638e62638c2d11fff4f", "sha256": "fb4c501c643e8f87128d92c0762dc417be3144dbe10ba3ae5d6fb3507ca14299" }, "downloads": -1, "filename": "HumanTime-0.1.5-py3-none-any.whl", "has_sig": false, "md5_digest": "a7d4d49bd60dc638e62638c2d11fff4f", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 16731, "upload_time": "2019-10-16T17:54:41", "url": "https://files.pythonhosted.org/packages/8b/0f/acf980101d7b3460fe04124642083cf7f348a176f7c1e082dc8f79ec47d7/HumanTime-0.1.5-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "9f96fc4162c09662d8b45dec41591fe4", "sha256": "962d069be5c9a15d48750b6874dcc5fc4499161dc3de533efee9bcc3e56b718c" }, "downloads": -1, "filename": "HumanTime-0.1.5.tar.gz", "has_sig": false, "md5_digest": "9f96fc4162c09662d8b45dec41591fe4", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10579, "upload_time": "2019-10-16T17:54:43", "url": "https://files.pythonhosted.org/packages/90/50/88a71c0756b93e94430908f7309417b9cd4d8815b38c82f942ba70dd5cb3/HumanTime-0.1.5.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "a7d4d49bd60dc638e62638c2d11fff4f", "sha256": "fb4c501c643e8f87128d92c0762dc417be3144dbe10ba3ae5d6fb3507ca14299" }, "downloads": -1, "filename": "HumanTime-0.1.5-py3-none-any.whl", "has_sig": false, "md5_digest": "a7d4d49bd60dc638e62638c2d11fff4f", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 16731, "upload_time": "2019-10-16T17:54:41", "url": "https://files.pythonhosted.org/packages/8b/0f/acf980101d7b3460fe04124642083cf7f348a176f7c1e082dc8f79ec47d7/HumanTime-0.1.5-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "9f96fc4162c09662d8b45dec41591fe4", "sha256": "962d069be5c9a15d48750b6874dcc5fc4499161dc3de533efee9bcc3e56b718c" }, "downloads": -1, "filename": "HumanTime-0.1.5.tar.gz", "has_sig": false, "md5_digest": "9f96fc4162c09662d8b45dec41591fe4", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10579, "upload_time": "2019-10-16T17:54:43", "url": "https://files.pythonhosted.org/packages/90/50/88a71c0756b93e94430908f7309417b9cd4d8815b38c82f942ba70dd5cb3/HumanTime-0.1.5.tar.gz" } ] }