{ "info": { "author": "Brandon Nielsen", "author_email": "nielsenb@jetfuse.net", "bugtrack_url": null, "classifiers": [ "Development Status :: 5 - Production/Stable", "Intended Audience :: Developers", "License :: OSI Approved :: BSD License", "Operating System :: OS Independent", "Programming Language :: Python", "Programming Language :: Python :: 2", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7", "Topic :: Software Development :: Libraries :: Python Modules" ], "description": "RelativeTimeBuilder\n===================\n\naniso8601 builder for dateutil relativedeltas\n---------------------------------------------\n\nFeatures\n========\n* Provides :code:`RelativeTimeBuilder` compatible with `aniso8601 `_\n* Returns `dateutil `_ :code:`relativedelta` objects for durations\n\nInstallation\n============\n\nThe recommended installation method is to use pip::\n\n $ pip install relativetimebuilder\n\nAlternatively, you can download the source (git repository hosted at `Bitbucket `_) and install directly::\n\n $ python setup.py install\n\nUse\n===\n\nParsing datetimes\n-----------------\n\nTo parse a typical ISO 8601 datetime string::\n\n >>> import aniso8601\n >>> from relativetimebuilder import RelativeTimeBuilder\n >>> aniso8601.parse_datetime('1977-06-10T12:00:00', builder=RelativeTimeBuilder)\n datetime.datetime(1977, 6, 10, 12, 0)\n\nAlternative delimiters can be specified, for example, a space::\n\n >>> aniso8601.parse_datetime('1977-06-10 12:00:00', delimiter=' ', builder=RelativeTimeBuilder)\n datetime.datetime(1977, 6, 10, 12, 0)\n\nBoth UTC (Z) and UTC offsets for timezones are supported::\n\n >>> aniso8601.parse_datetime('1977-06-10T12:00:00Z', builder=RelativeTimeBuilder)\n datetime.datetime(1977, 6, 10, 12, 0, tzinfo=+0:00:00 UTC)\n >>> aniso8601.parse_datetime('1979-06-05T08:00:00-08:00', builder=RelativeTimeBuilder)\n datetime.datetime(1979, 6, 5, 8, 0, tzinfo=-8:00:00 UTC)\n\nLeap seconds are explicitly not supported::\n\n >>> aniso8601.parse_datetime('2018-03-06T23:59:60', builder=RelativeTimeBuilder)\n Traceback (most recent call last):\n File \"\", line 1, in \n File \"/home/nielsenb/Jetfuse/aniso8601/aniso8601/aniso8601/time.py\", line 132, in parse_datetime\n return builder.build_datetime(datepart, timepart)\n File \"/home/nielsenb/Jetfuse/aniso8601/aniso8601/aniso8601/builders/python.py\", line 181, in build_datetime\n cls._build_object(time))\n File \"/home/nielsenb/Jetfuse/aniso8601/aniso8601/aniso8601/builders/__init__.py\", line 64, in _build_object\n ss=parsetuple[2], tz=parsetuple[3])\n File \"/home/nielsenb/Jetfuse/aniso8601/aniso8601/aniso8601/builders/python.py\", line 141, in build_time\n raise LeapSecondError('Leap seconds are not supported.')\n aniso8601.exceptions.LeapSecondError: Leap seconds are not supported.\n\nParsing dates\n-------------\n\nTo parse a date represented in an ISO 8601 string::\n\n >>> import aniso8601\n >>> from relativetimebuilder import RelativeTimeBuilder\n >>> aniso8601.parse_date('1984-04-23', builder=RelativeTimeBuilder)\n datetime.date(1984, 4, 23)\n\nBasic format is supported as well::\n\n >>> aniso8601.parse_date('19840423', builder=RelativeTimeBuilder)\n datetime.date(1984, 4, 23)\n\nTo parse a date using the ISO 8601 week date format::\n\n >>> aniso8601.parse_date('1986-W38-1', builder=RelativeTimeBuilder)\n datetime.date(1986, 9, 15)\n\nTo parse an ISO 8601 ordinal date::\n\n >>> aniso8601.parse_date('1988-132', builder=RelativeTimeBuilder)\n datetime.date(1988, 5, 11)\n\nParsing times\n-------------\n\nTo parse a time formatted as an ISO 8601 string::\n\n >>> import aniso8601\n >>> from relativetimebuilder import RelativeTimeBuilder\n >>> aniso8601.parse_time('11:31:14', builder=RelativeTimeBuilder)\n datetime.time(11, 31, 14)\n\nAs with all of the above, basic format is supported::\n\n >>> aniso8601.parse_time('113114', builder=RelativeTimeBuilder)\n datetime.time(11, 31, 14)\n\nA UTC offset can be specified for times::\n\n >>> aniso8601.parse_time('17:18:19-02:30', builder=RelativeTimeBuilder)\n datetime.time(17, 18, 19, tzinfo=-2:30:00 UTC)\n >>> aniso8601.parse_time('171819Z', builder=RelativeTimeBuilder)\n datetime.time(17, 18, 19, tzinfo=+0:00:00 UTC)\n\nReduced accuracy is supported::\n\n >>> aniso8601.parse_time('21:42', builder=RelativeTimeBuilder)\n datetime.time(21, 42)\n >>> aniso8601.parse_time('22', builder=RelativeTimeBuilder)\n datetime.time(22, 0)\n\nA decimal fraction is always allowed on the lowest order element of an ISO 8601 formatted time::\n\n >>> aniso8601.parse_time('22:33.5', builder=RelativeTimeBuilder)\n datetime.time(22, 33, 30)\n >>> aniso8601.parse_time('23.75', builder=RelativeTimeBuilder)\n datetime.time(23, 45)\n\nLeap seconds are explicitly not supported and attempting to parse one raises a :code:`LeapSecondError`::\n\n >>> aniso8601.parse_time('23:59:60', builder=RelativeTimeBuilder)\n Traceback (most recent call last):\n File \"\", line 1, in \n File \"/home/nielsenb/Jetfuse/aniso8601/aniso8601/aniso8601/time.py\", line 117, in parse_time\n return _RESOLUTION_MAP[get_time_resolution(timestr)](timestr, tz, builder)\n File \"/home/nielsenb/Jetfuse/aniso8601/aniso8601/aniso8601/time.py\", line 166, in _parse_second_time\n return builder.build_time(hh=hourstr, mm=minutestr, ss=secondstr, tz=tz)\n File \"/home/nielsenb/Jetfuse/aniso8601/aniso8601/aniso8601/builders/python.py\", line 141, in build_time\n raise LeapSecondError('Leap seconds are not supported.')\n aniso8601.exceptions.LeapSecondError: Leap seconds are not supported.\n\nParsing durations\n-----------------\n\nParsing durations returns :code:`relativedelta` objects from `dateutil `_ for calendar level accuracy.\n\nTo parse a duration formatted as an ISO 8601 string::\n\n >>> import aniso8601\n >>> from relativetimebuilder import RelativeTimeBuilder\n >>> aniso8601.parse_duration('P1Y2M3DT4H54M6S', builder=RelativeTimeBuilder)\n relativedelta(years=+1, months=+2, days=+3, hours=+4, minutes=+54, seconds=+6)\n\nReduced accuracy is supported::\n\n >>> aniso8601.parse_duration('P1Y', builder=RelativeTimeBuilder)\n relativedelta(years=+1)\n\nA decimal fraction is allowed on the lowest order element::\n\n >>> aniso8601.parse_duration('P1YT3.5M', builder=RelativeTimeBuilder)\n relativedelta(years=+1, minutes=+3.5)\n\nThe decimal fraction can be specified with a comma instead of a full-stop::\n\n >>> aniso8601.parse_duration('P1YT3,5M', builder=RelativeTimeBuilder)\n relativedelta(years=+1, minutes=+3.5)\n\nDecimal fractions are not supported for years or months as calendar level accuracy would not be guaranteed::\n\n >>> aniso8601.parse_duration('P1Y2.5M', builder=RelativeTimeBuilder)\n Traceback (most recent call last):\n File \"\", line 1, in \n File \"/home/nielsenb/Jetfuse/aniso8601/aniso8601/aniso8601/duration.py\", line 30, in parse_duration\n return _parse_duration_prescribed(isodurationstr, builder)\n File \"/home/nielsenb/Jetfuse/aniso8601/aniso8601/aniso8601/duration.py\", line 75, in _parse_duration_prescribed\n return _parse_duration_prescribed_notime(durationstr, builder)\n File \"/home/nielsenb/Jetfuse/aniso8601/aniso8601/aniso8601/duration.py\", line 119, in _parse_duration_prescribed_notime\n PnW=weekstr, PnD=daystr)\n File \"relativetimebuilder/__init__.py\", line 24, in build_duration\n raise RelativeValueError('Fractional months and years are not '\n relativetimebuilder.RelativeValueError: Fractional months and years are not defined for relative durations.\n >>> aniso8601.parse_duration('P1.5Y', builder=RelativeTimeBuilder)\n Traceback (most recent call last):\n File \"\", line 1, in \n File \"/home/nielsenb/Jetfuse/aniso8601/aniso8601/aniso8601/duration.py\", line 30, in parse_duration\n return _parse_duration_prescribed(isodurationstr, builder)\n File \"/home/nielsenb/Jetfuse/aniso8601/aniso8601/aniso8601/duration.py\", line 75, in _parse_duration_prescribed\n return _parse_duration_prescribed_notime(durationstr, builder)\n File \"/home/nielsenb/Jetfuse/aniso8601/aniso8601/aniso8601/duration.py\", line 119, in _parse_duration_prescribed_notime\n PnW=weekstr, PnD=daystr)\n File \"relativetimebuilder/__init__.py\", line 24, in build_duration\n raise RelativeValueError('Fractional months and years are not '\n relativetimebuilder.RelativeValueError: Fractional months and years are not defined for relative durations.\n\nParsing a duration from a combined date and time is supported as well::\n\n >>> aniso8601.parse_duration('P0001-01-02T01:30:5', builder=RelativeTimeBuilder)\n relativedelta(years=+1, months=+1, days=+2, hours=+1, minutes=+30, seconds=+5)\n\nParsing intervals\n-----------------\n\nIntervals are built using :code:`relativedelta` objects from `dateutil `_ for calendar level accuracy.\n\nTo parse an interval specified by a start and end::\n\n >>> import aniso8601\n >>> from relativetimebuilder import RelativeTimeBuilder\n >>> aniso8601.parse_interval('2007-03-01T13:00:00/2008-05-11T15:30:00', builder=RelativeTimeBuilder)\n (datetime.datetime(2007, 3, 1, 13, 0), datetime.datetime(2008, 5, 11, 15, 30))\n\nIntervals specified by a start time and a duration are supported::\n\n >>> aniso8601.parse_interval('2007-03-01T13:00:00/P1Y2M10DT2H30M', builder=RelativeTimeBuilder)\n (datetime.datetime(2007, 3, 1, 13, 0), datetime.datetime(2008, 5, 11, 15, 30))\n\nA duration can also be specified by a duration and end time::\n\n >>> aniso8601.parse_interval('P1M/1981-04-05', builder=RelativeTimeBuilder)\n (datetime.date(1981, 4, 5), datetime.date(1981, 3, 5))\n\nNotice that the result of the above parse is not in order from earliest to latest. If sorted intervals are required, simply use the :code:`sorted` keyword as shown below::\n\n >>> sorted(aniso8601.parse_interval('P1M/1981-04-05', builder=RelativeTimeBuilder))\n [datetime.date(1981, 3, 5), datetime.date(1981, 4, 5)]\n\nThe end of an interval is returned as a :code:`datetime` when required to maintain the resolution specified by a duration, even if the duration start is given as a date::\n\n >>> aniso8601.parse_interval('2014-11-12/PT4H54M6.5S', builder=RelativeTimeBuilder)\n (datetime.date(2014, 11, 12), datetime.datetime(2014, 11, 12, 4, 54, 6, 500000))\n >>> aniso8601.parse_interval('2007-03-01/P1.5D', builder=RelativeTimeBuilder)\n (datetime.date(2007, 3, 1), datetime.datetime(2007, 3, 2, 12, 0))\n\nRepeating intervals are supported as well, and return a generator::\n\n >>> aniso8601.parse_repeating_interval('R3/1981-04-05/P1D', builder=RelativeTimeBuilder)\n \n >>> list(aniso8601.parse_repeating_interval('R3/1981-04-05/P1D', builder=RelativeTimeBuilder))\n [datetime.date(1981, 4, 5), datetime.date(1981, 4, 6), datetime.date(1981, 4, 7)]\n\nRepeating intervals are allowed to go in the reverse direction::\n\n >>> list(aniso8601.parse_repeating_interval('R2/PT1H2M/1980-03-05T01:01:00', builder=RelativeTimeBuilder))\n [datetime.datetime(1980, 3, 5, 1, 1), datetime.datetime(1980, 3, 4, 23, 59)]\n\nUnbounded intervals are also allowed (Python 2)::\n\n >>> result = aniso8601.parse_repeating_interval('R/PT1H2M/1980-03-05T01:01:00', builder=RelativeTimeBuilder)\n >>> result.next()\n datetime.datetime(1980, 3, 5, 1, 1)\n >>> result.next()\n datetime.datetime(1980, 3, 4, 23, 59)\n\nor for Python 3::\n\n >>> result = aniso8601.parse_repeating_interval('R/PT1H2M/1980-03-05T01:01:00', builder=RelativeTimeBuilder)\n >>> next(result)\n datetime.datetime(1980, 3, 5, 1, 1)\n >>> next(result)\n datetime.datetime(1980, 3, 4, 23, 59)\n\nIntervals are calculated with calendar level accuracy::\n\n >>> aniso8601.parse_interval('2003-01-27/P1M', builder=RelativeTimeBuilder)\n (datetime.date(2003, 1, 27), datetime.date(2003, 2, 27))\n >>> aniso8601.parse_interval('2003-01-31/P1M', builder=RelativeTimeBuilder)\n (datetime.date(2003, 1, 31), datetime.date(2003, 2, 28))\n >>> aniso8601.parse_interval('P1Y/2001-02-28', builder=RelativeTimeBuilder)\n (datetime.date(2001, 2, 28), datetime.date(2000, 2, 28))\n\nFractional years and months do not make sense for relative intervals::\n\n >>> aniso8601.parse_interval('P1.1Y/2001-02-28', builder=RelativeTimeBuilder)\n Traceback (most recent call last):\n File \"\", line 1, in \n File \"/home/nielsenb/Jetfuse/aniso8601/aniso8601/aniso8601/interval.py\", line 40, in parse_interval\n intervaldelimiter, datetimedelimiter)\n File \"/home/nielsenb/Jetfuse/aniso8601/aniso8601/aniso8601/interval.py\", line 98, in _parse_interval\n return builder.build_interval(end=enddate, duration=duration)\n File \"/home/nielsenb/Jetfuse/aniso8601/aniso8601/aniso8601/builders/python.py\", line 311, in build_interval\n durationobject = cls._build_object(duration)\n File \"/home/nielsenb/Jetfuse/aniso8601/aniso8601/aniso8601/builders/__init__.py\", line 71, in _build_object\n TnS=parsetuple[6])\n File \"relativetimebuilder/__init__.py\", line 24, in build_duration\n raise RelativeValueError('Fractional months and years are not '\n relativetimebuilder.RelativeValueError: Fractional months and years are not defined for relative durations.\n\nDevelopment\n===========\n\nSetup\n-----\n\nIt is recommended to develop using a `virtualenv `_.\n\nTests\n-----\n\nTests can be run using `setuptools `::\n\n $ python setup.py test\n\nContributing\n============\n\nRelativeTimeBuilder is an open source project hosted on `Bitbucket `_.\n\nAny and all bugs are welcome on our `issue tracker `_.\n\n\n", "description_content_type": "", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://bitbucket.org/nielsenb/relativetimebuilder", "keywords": "iso8601 dateutil aniso8601 datetime", "license": "", "maintainer": "", "maintainer_email": "", "name": "relativetimebuilder", "package_url": "https://pypi.org/project/relativetimebuilder/", "platform": "", "project_url": "https://pypi.org/project/relativetimebuilder/", "project_urls": { "Documentation": "https://relativetimebuilder.readthedocs.io/", "Homepage": "https://bitbucket.org/nielsenb/relativetimebuilder", "Source": "https://bitbucket.org/nielsenb/relativetimebuilder", "Tracker": "https://bitbucket.org/nielsenb/relativetimebuilder/issues" }, "release_url": "https://pypi.org/project/relativetimebuilder/2.0.1/", "requires_dist": [ "aniso8601 (<9.0.0,>=7.0.0)", "python-dateutil (>=2.7.3)" ], "requires_python": "", "summary": "A library for using the dateutil relativedeltas for calendar precision with aniso8601", "version": "2.0.1" }, "last_serial": 5817713, "releases": { "0.0.1": [ { "comment_text": "", "digests": { "md5": "dd4667147f31426d6cde0996b42ddcf0", "sha256": "89adec9570fd1a74b428e9e4b6f34f75eaf5b9db0cf3dc35e8296bf257a40a6c" }, "downloads": -1, "filename": "relativetimebuilder-0.0.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "dd4667147f31426d6cde0996b42ddcf0", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 6671, "upload_time": "2018-10-25T20:46:13", "url": "https://files.pythonhosted.org/packages/23/10/89bc55b7d5cf3925798549b540d4090f94945562cf24cb72fb83fcff011f/relativetimebuilder-0.0.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "358319f383ce951a77dbec260840cc50", "sha256": "3a7d6f5783f66786bd8fc9c76092f8d73197b0b1e2af1b125529cd3013c066d3" }, "downloads": -1, "filename": "relativetimebuilder-0.0.1.tar.gz", "has_sig": false, "md5_digest": "358319f383ce951a77dbec260840cc50", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7277, "upload_time": "2018-10-25T20:46:14", "url": "https://files.pythonhosted.org/packages/76/c6/294498d167e46415540c4ab5bb084e833f93a50196cc081734eaf1bc5cc9/relativetimebuilder-0.0.1.tar.gz" } ], "0.1.0": [ { "comment_text": "", "digests": { "md5": "dffe289cbc8466974150b3ba9753270b", "sha256": "9f0cf0da92bd4ae3f488b2ae04473d6a72fd672d0a8bed1dd105547227a7c2db" }, "downloads": -1, "filename": "relativetimebuilder-0.1.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "dffe289cbc8466974150b3ba9753270b", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 8434, "upload_time": "2019-01-10T01:50:24", "url": "https://files.pythonhosted.org/packages/7d/56/3bd62bf64cc107dc0dab14b4066a8696686306e38fa45ee2fa109d115a50/relativetimebuilder-0.1.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "efe02c617383a65cfd1ad2dd31a4f9b4", "sha256": "5958bdf613247011e5b975eac03bc7f0cfffd3786d88ba8e90cb5e9b0d42fd53" }, "downloads": -1, "filename": "relativetimebuilder-0.1.0.tar.gz", "has_sig": false, "md5_digest": "efe02c617383a65cfd1ad2dd31a4f9b4", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11113, "upload_time": "2019-01-10T01:50:25", "url": "https://files.pythonhosted.org/packages/b8/fe/f49c75db3451cc38f68b2054412eb1336a123ada7da961123daff1b1980d/relativetimebuilder-0.1.0.tar.gz" } ], "0.2.0": [ { "comment_text": "", "digests": { "md5": "080e42cfb8aaa6d3e6a51557fa33d439", "sha256": "8b11e6fa6d6d4a09c61cfa9dadae4ea640bf10818e0991874d33452c0aeff2d7" }, "downloads": -1, "filename": "relativetimebuilder-0.2.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "080e42cfb8aaa6d3e6a51557fa33d439", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 9618, "upload_time": "2019-03-01T21:09:53", "url": "https://files.pythonhosted.org/packages/b9/46/fb188619006d458598d7a8910bbb5cd2c6debfb36821b460532bebddd046/relativetimebuilder-0.2.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "642ecf4199017252e0255185e439e41e", "sha256": "5cc415b539d18a20e09a600cf7ba7199eda7b365d13aaaf9ffbbaa26cfb8062a" }, "downloads": -1, "filename": "relativetimebuilder-0.2.0.tar.gz", "has_sig": false, "md5_digest": "642ecf4199017252e0255185e439e41e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12441, "upload_time": "2019-03-01T21:09:54", "url": "https://files.pythonhosted.org/packages/62/8a/3f7d722c22dc97b61912fb7d94c17e900482b08178de916e203711daf2b6/relativetimebuilder-0.2.0.tar.gz" } ], "1.0.0": [ { "comment_text": "", "digests": { "md5": "ae087e59985c93d8752ffb7a27fc43f8", "sha256": "7b5600a6572075400c2134b1524ab5ffa1e5c7d74db3be37da5eb9520627b024" }, "downloads": -1, "filename": "relativetimebuilder-1.0.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "ae087e59985c93d8752ffb7a27fc43f8", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 9252, "upload_time": "2019-03-08T20:41:31", "url": "https://files.pythonhosted.org/packages/38/9d/706d6f206060b8be979672d22d02a2f7355f45de86779fb13dbb098afd45/relativetimebuilder-1.0.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "71a01a93cfa741587885d34d85a1bbbb", "sha256": "568608f415f168dbc1b4f57841dbec0d279e174d12524538d8584b129914b237" }, "downloads": -1, "filename": "relativetimebuilder-1.0.0.tar.gz", "has_sig": false, "md5_digest": "71a01a93cfa741587885d34d85a1bbbb", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11780, "upload_time": "2019-03-08T20:41:32", "url": "https://files.pythonhosted.org/packages/5a/8f/4b2892ccb8534f9ab050b7446b6f0e85dd3eb8724120b515d6c1ac86d7a5/relativetimebuilder-1.0.0.tar.gz" } ], "2.0.0": [ { "comment_text": "", "digests": { "md5": "2879d4ec9ff90786a36a8cda6bd73625", "sha256": "944331c6ea76e7f9d1ce610b01b235045fe8249d87b2e57ae296c2210f28f191" }, "downloads": -1, "filename": "relativetimebuilder-2.0.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "2879d4ec9ff90786a36a8cda6bd73625", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 10102, "upload_time": "2019-06-11T19:50:34", "url": "https://files.pythonhosted.org/packages/5f/20/1600f25c436823d5c6cb6398793590c51247ab5d78f645fe3d2db6ee13df/relativetimebuilder-2.0.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "32365e9871454d9c8616834c2e4bea40", "sha256": "0955bb63a60f7763abbd968d8fea9e932337e60196d79720274e167155fba08c" }, "downloads": -1, "filename": "relativetimebuilder-2.0.0.tar.gz", "has_sig": false, "md5_digest": "32365e9871454d9c8616834c2e4bea40", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11656, "upload_time": "2019-06-11T19:50:35", "url": "https://files.pythonhosted.org/packages/23/9e/4ce4c7e31d6758f35070fc9019e54b5c4913667e2b10d4218dee6f66e35d/relativetimebuilder-2.0.0.tar.gz" } ], "2.0.1": [ { "comment_text": "", "digests": { "md5": "edcdb2bf46a4d60b13b0b99f9c810adf", "sha256": "2358ff6645c4a78d5965bc4baa08513e60ec493e5fe84a968a67f990fe8f00b5" }, "downloads": -1, "filename": "relativetimebuilder-2.0.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "edcdb2bf46a4d60b13b0b99f9c810adf", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 10101, "upload_time": "2019-09-12T01:25:13", "url": "https://files.pythonhosted.org/packages/23/b4/940d91a2dcfa29a3bc04c13ccfdddb16827ebe59046fb398089ae7fdd1ab/relativetimebuilder-2.0.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "c85d1d2aaaedbf3fb8d0d35cd4baf66d", "sha256": "bba46070d0c4c31183cfcf0542da6f0cd43b3dbc5472376cdc3c8a59f8ed7bee" }, "downloads": -1, "filename": "relativetimebuilder-2.0.1.tar.gz", "has_sig": false, "md5_digest": "c85d1d2aaaedbf3fb8d0d35cd4baf66d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11656, "upload_time": "2019-09-12T01:25:15", "url": "https://files.pythonhosted.org/packages/e1/2c/c0464190af36b4c90905a1dec41eb713608ba6a140f85d176d370df92fd0/relativetimebuilder-2.0.1.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "edcdb2bf46a4d60b13b0b99f9c810adf", "sha256": "2358ff6645c4a78d5965bc4baa08513e60ec493e5fe84a968a67f990fe8f00b5" }, "downloads": -1, "filename": "relativetimebuilder-2.0.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "edcdb2bf46a4d60b13b0b99f9c810adf", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 10101, "upload_time": "2019-09-12T01:25:13", "url": "https://files.pythonhosted.org/packages/23/b4/940d91a2dcfa29a3bc04c13ccfdddb16827ebe59046fb398089ae7fdd1ab/relativetimebuilder-2.0.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "c85d1d2aaaedbf3fb8d0d35cd4baf66d", "sha256": "bba46070d0c4c31183cfcf0542da6f0cd43b3dbc5472376cdc3c8a59f8ed7bee" }, "downloads": -1, "filename": "relativetimebuilder-2.0.1.tar.gz", "has_sig": false, "md5_digest": "c85d1d2aaaedbf3fb8d0d35cd4baf66d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11656, "upload_time": "2019-09-12T01:25:15", "url": "https://files.pythonhosted.org/packages/e1/2c/c0464190af36b4c90905a1dec41eb713608ba6a140f85d176d370df92fd0/relativetimebuilder-2.0.1.tar.gz" } ] }