{ "info": { "author": "Brandon Nielsen", "author_email": "nielsenb@jetfuse.net", "bugtrack_url": null, "classifiers": [ "Development Status :: 3 - Alpha", "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": "attotime\n========\n\nHigh precision datetime implementation for Python\n-------------------------------------------------\n\nFeatures\n========\n\n* Fractional nanosecond resolution using Python `decimal `_ module\n* API as close to Python's native `datetime `_ implementation as possible\n* Python 3 support\n\nattotimedelta\n=============\n\n:code:`attotimedelta` objects represent the difference between two dates or times. It wraps a native `timedelta `_ object, and stores fractional nanoseconds as a :code:`Decimal`.\n\n*class* attotime.attotimedelta([days[, seconds[, microseconds[, milliseconds[, minutes[, hours[, weeks[, nanoseconds]]]]]]]])\n-----------------------------------------------------------------------------------------------------------------------------\n\nAll arguments are optional and default to 0. All arguments may be ints, longs, or floats, and may be positive or negative.\n\nOnly *days*, *seconds*, *microseconds*, and *nanoseconds* are stored internally. *days*, *seconds*, and *microseconds* are stored in a native `timedelta` object, *nanoseconds* are contained in a :code:`Decimal`.\n\nInstance attributes (read-only)\n-------------------------------\n\n* :code:`days` Between -999999999 and 999999999 inclusive.\n* :code:`seconds` Between 0 and 86399 inclusive.\n* :code:`microseconds` Between 0 and 999999 inclusive.\n* :code:`nanoseconds` A :code:`Decimal` between 0 and 999 inclusive.\n\nSupported operations\n--------------------\n\n* :code:`td1 = td2 + td3` Sum of td2 and td3.\n* :code:`td1 = td2 - td3` Difference of td2 and td3.\n* :code:`td1 = i * td2` or :code:`td1 = td2 * i` Delta multiplied by an integer, long, float, or :code:`Decimal`.\n* :code:`td1 = td2 // i` Computes the floor, discarding the remainder.\n* :code:`+td1` Returns an :code:`attotimedelta` with the same value.\n* :code:`-td1` Equivalent to :code:`td1 * -1`.\n* :code:`abs(td1)` Equivalent to :code:`+td1` when :code:`td1.days >= 0`, :code:`-td1` when :code:`t1.days < 0`.\n* :code:`str(td1)` Returns a string in the form :code:`[D day[s], ][H]H:MM:SS[.UUUUUU]`, where :code:`D` is negative for :code:`td1 < 0` and :code:`UUUUUU` can be expanded for up to 16 place fixed point.\n* :code:`repr(td1)` Returns a string in the form :code:`attotime.objects.attotimedelta(D[, S[, U]])`, where :code:`D` is negative for :code:`td1 < 0`.\n\nInstance methods\n----------------\n\nattotimedelta.total_seconds()\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\nReturn the total number of seconds contained in the duration as a :code:`Decimal`.\n\nattotimedelta.total_nanoseconds()\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\nReturn the total number of nanoseconds contained in the duration as a :code:`Decimal`.\n\nattodatetime\n============\n\n:code:`attodatetime` is a single object wrapping a native `date `_ object and an :code:`attotime` object for the purposes of storing date and time information with fractional nanoseconds stored as a :code:`Decimal`.\n\n*class* attotime.attodatetime(year, month, day[, hour[, minute[, second[, microsecond[, nanosecond[, tzinfo]]]]]])\n------------------------------------------------------------------------------------------------------------------\n\nYear, month, and day are required. :code:`tzinfo` may be :code:`None`, or an instance of a `tzinfo subclass `_. The nanosecond argument may be a float or :code:`Decimal`. The remaining arguments may be ints or longs.\n\nClass methods\n-------------\n\nattodatetime.today()\n^^^^^^^^^^^^^^^^^^^^\n\nReturn the current local datetime, with :code:`tzinfo` :code:`None`. This is equivalent to :code:`attodatetime.fromtimestamp(time.time())`.\n\nattodatetime.now([tz])\n^^^^^^^^^^^^^^^^^^^^^^\n\nReturn the current local date and time. If optional argument :code:`tz` is :code:`None` this is like :code:`today()`.\n\nIf :code:`tz` is not :code:`None`, it must be an instance of a tzinfo subclass, and the current date and time are converted to :code:`tz`'s time zone.\n\nattodatetime.utcnow()\n^^^^^^^^^^^^^^^^^^^^^\n\nReturn the current UTC date and time, with :code:`tzinfo` :code:`None`.\n\nattodatetime.fromtimestamp(timestamp, [tz])\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\nReturn the local date and time corresponding to the POSIX timestamp, such as returned by :code:`time.time()`. If optional argument :code:`tz` is :code:`None` or not specified, the timestamp is converted to the platform\u2019s local date and time, and the returned :code:`attodatetime` object is naive.\n\nIf :code:`tz` is not :code:`None`, it must be an instance of a :code:`tzinfo` subclass, and the timestamp is converted to :code:`tz`\u2019s time zone. The returned :code:`attodatetime`'s :code:`tzinfo` is set to the provided :code:`tz`.\n\nattodatetime.utcfromtimestamp(timestamp)\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\nReturn the UTC :code:`attodatetime` corresponding to the POSIX timestamp, with :code:`tzinfo` :code:`None`.\n\nattodatetime.fromordinal(ordinal)\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\nReturn an :code:`attodatetime` corresponding to the proleptic Gregorian ordinal, where January 1 of year 1 has ordinal 1. **ValueError** is raised unless 1 <= ordinal <= :code:`datetime.max.toordinal()` (note native Python :code:`datetime` range checking). The hour, minute, second and microsecond of the result are all 0, and :code:`tzinfo` is :code:`None`.\n\nattodatetime.combine(date, time)\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\nReturn an :code:`attodatetime` object whose date components are equal to the given date object\u2019s, and whose time components and :code:`tzinfo` attributes are equal to the given time object\u2019s. If date is a :code:`attodatetime` (or native Python :code:`datetime`), its time components and :code:`tzinfo` attributes are ignored.\n\nattodatetime.strptime(date_string, format)\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\nReturn an :code:`attodatetime` corresponding to :code:`date_string`, parsed according to :code:`format`. Only the directives explicitly listed in the `strftime() and strptime() Behavior `_ section of the Python documentation are supported, as well as the following:\n\n+---------------------------+---------------------------+---------------------------+\n| Directive | Meaning | Example |\n+===========================+===========================+===========================+\n| %o | Picosecond as a decimal | 000000, 000001, \u2026, 999999 |\n| | number, zero-padded on | |\n| | the left. | |\n+---------------------------+---------------------------+---------------------------+\n| %q | Attosecond as a decimal | 000000, 000001, \u2026, 999999 |\n| | number, zero-padded on | |\n| | the left. | |\n+---------------------------+---------------------------+---------------------------+\n| %v | Yoctosecond as a decimal | 000000, 000001, \u2026, 999999 |\n| | number, zero-padded on | |\n| | the left. | |\n+---------------------------+---------------------------+---------------------------+\n\nInstance attributes (read-only)\n-------------------------------\n\n* :code:`year` Between Python native :code:`datetime` :code:`MINYEAR` and :code:`MAXYEAR`, inclusive.\n* :code:`month` Between 1 and 12 inclusive.\n* :code:`day` Between 1 and the number of days in the given month of the given year.\n* :code:`hour` In :code:`range(24)`.\n* :code:`minute` In :code:`range(60)`.\n* :code:`second` In :code:`range(60)`.\n* :code:`microsecond` In :code:`range(1000000)`.\n* :code:`nanosecond` In :code:`range(1000)`, as :code:`Decimal`.\n* :code:`tzinfo` The object passed as the :code:`tzinfo` argument to the :code:`attodatetime` constructor, or :code:`None` if none was passed.\n\nSupported operations\n--------------------\n\n* :code:`dt2 = dt1 + td` dt1 moved forward the duration of the :code:`attotimedelta` if :code:`attotimedelta.days > 0`, or backward if :code:`attotimedelta.days < 0`.\n* :code:`dt2 = dt1 - td` dt1 moved backward the duration of the :code:`attotimedelta` if :code:`attotimedelta.days > 0`, or forward if :code:`attotimedelta.days < 0`.\n* :code:`td = dt1 - dt2` The duration of time between dt1 and dt2, as an :code:`attotimedelta`.\n* :code:`dt1 < dt2` dt1 is considered less than dt2 if dt1 precedes dt2 in time.\n* :code:`str(dt1)` Equivalent to :code:`dt1.isoformat(separator=' ')`.\n* :code:`repr(dt1)` Returns a string in the form :code:`attotime.objects.attodatetime(Y, M, D, h, m, s, us, ns, [tz])`.\n\nInstance methods\n----------------\n\nattodatetime.date()\n^^^^^^^^^^^^^^^^^^^\n\nReturn a :code:`date` object with same year, month and day.\n\nattodatetime.time()\n^^^^^^^^^^^^^^^^^^^\n\nReturn an :code:`attotime` object with the same hour, minute, second, microsecond, and nanosecond. :code:`tzinfo` is :code:`None`.\n\nattodatetime.timetz()\n^^^^^^^^^^^^^^^^^^^^^\n\nReturn an :code:`attotime` object with the same hour, minute, second, microsecond, nanosecond, and :code:`tzinfo` attributes.\n\nattodatetime.replace([year[, month[, day[, hour[, minute[, second[, microsecond[, nanosecond[, tzinfo]]]]]]]]])\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\nReturn an :code:`attodatetime` object with the same attributes, except for those attributes given new values by whichever keyword arguments are specified. Note that :code:`tzinfo=None` can be specified to create a naive :code:`attodatetime` from an aware :code:`attodatetime` with no conversion of date and time data.\n\nattodatetime.astimezone(tz)\n^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\nReturn an :code:`attodatetime` object with new :code:`tzinfo` attribute :code:`tz`, adjusting the date and time data so the result is the same UTC time as self, but in :code:`tz`\u2019s local time.\n\nA :code:`ValueError` is raised if :code:`self` is naive.\n\nattodatetime.utcoffset()\n^^^^^^^^^^^^^^^^^^^^^^^^\n\nIf :code:`tzinfo` is :code:`None`, returns :code:`None`, else return :code:`self.tzinfo.utcoffset(self)` as an :code:`attotimedelta`.\n\nattodatetime.dst()\n^^^^^^^^^^^^^^^^^^\n\nIf :code:`tzinfo` is :code:`None`, returns :code:`None`, else return :code:`self.tzinfo.dst(self)` as an :code:`attotimedelta`.\n\nattodatetime.tzname()\n^^^^^^^^^^^^^^^^^^^^^\n\nIf :code:`tzinfo` is :code:`None`, returns :code:`None`, else returns :code:`self.tzinfo.tzname(self)`.\n\nattodatetime.timetuple()\n^^^^^^^^^^^^^^^^^^^^^^^^\n\nReturn the result of `datetime.timetuple() `_ for a native Python :code:`datetime` matching the :code:`attodatetime`. Nanosecond precision is lost.\n\nattodatetime.utctimetuple()\n^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\nReturn the result of `datetime.utctimetuple() `_ for a native Python :code:`datetime` matching the :code:`attodatetime`. Nanosecond precision is lost.\n\nattodatetime.toordinal()\n^^^^^^^^^^^^^^^^^^^^^^^^\n\nReturn the proleptic Gregorian ordinal of the date. The same as :code:`self.date().toordinal()`.\n\nattodatetime.weekday()\n^^^^^^^^^^^^^^^^^^^^^^\n\nReturn the day of the week as an integer, where Monday is 0 and Sunday is 6. The same as :code:`self.date().weekday()`.\n\nattodatetime.isoweekday()\n^^^^^^^^^^^^^^^^^^^^^^^^^\n\nReturn the day of the week as an integer, where Monday is 1 and Sunday is 7. The same as :code:`self.date().isoweekday()`.\n\nattodatetime.isocalendar()\n^^^^^^^^^^^^^^^^^^^^^^^^^^\n\nReturn a 3-tuple, (ISO year, ISO week number, ISO weekday). The same as :code:`self.date().isocalendar()`.\n\nattodatetime.isoformat([sep])\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\nReturn a string representing the date and time in ISO 8601 format, :code:`YYYY-MM-DDTHH:MM:SS.mmmmmm` or, if microsecond is 0, :code:`YYYY-MM-DDTHH:MM:SS`\n\nIf :code:`utcoffset()` does not return :code:`None`, a 6-character string is appended, giving the UTC offset in (signed) hours and minutes: :code:`YYYY-MM-DDTHH:MM:SS.mmmmmm+HH:MM` or, if microsecond is 0 :code:`YYYY-MM-DDTHH:MM:SS+HH:MM`\n\nThe optional argument :code:`sep` (default 'T') is a separator, placed between the date and time portions of the result.\n\nThe decimal second component may be expanded up to 16 place fixed point.\n\nattodatetime.ctime()\n^^^^^^^^^^^^^^^^^^^^\n\nReturn the result of `datetime.ctime() `_ for a native Python :code:`datetime` matching the :code:`attodatetime`. Nanosecond precision is lost.\n\nattodatetime.strftime(format)\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\nReturn a string representing the date and time, controlled by an explicit format string. Only the directives explicitly listed in the `strftime() and strptime() Behavior `_ section of the Python documentation are supported, as well as the following:\n\n+---------------------------+---------------------------+---------------------------+\n| Directive | Meaning | Example |\n+===========================+===========================+===========================+\n| %o | Picosecond as a decimal | 000000, 000001, \u2026, 999999 |\n| | number, zero-padded on | |\n| | the left. | |\n+---------------------------+---------------------------+---------------------------+\n| %q | Attosecond as a decimal | 000000, 000001, \u2026, 999999 |\n| | number, zero-padded on | |\n| | the left. | |\n+---------------------------+---------------------------+---------------------------+\n| %v | Yoctosecond as a decimal | 000000, 000001, \u2026, 999999 |\n| | number, zero-padded on | |\n| | the left. | |\n+---------------------------+---------------------------+---------------------------+\n\nattotime\n========\n\n:code:`attotime` is an object wrapping a native `time `_ object along with fractional nanoseconds stored as a :code:`Decimal`.\n\n*class* attotime.attotime([hour[, minute[, second[, microsecond[, nanosecond[, tzinfo]]]]]])\n--------------------------------------------------------------------------------------------\n\nAll arguments are optional. :code:`tzinfo` may be :code:`None`, or an instance of a `tzinfo subclass `_. The nanosecond argument may be float or :code:`Decimal`. The remaining arguments may be ints or longs.\n\nInstance attributes (read-only)\n-------------------------------\n\n* :code:`hour` In :code:`range(24)`.\n* :code:`minute` In :code:`range(60)`.\n* :code:`second` In :code:`range(60)`.\n* :code:`microsecond` In :code:`range(1000000)`.\n* :code:`nanosecond` In :code:`range(1000)`, as :code:`Decimal`.\n* :code:`tzinfo` The object passed as the :code:`tzinfo` argument to the :code:`attotime` constructor, or :code:`None` if none was passed.\n\nSupported operations\n--------------------\n\n* :code:`t1 < t2` t1 is considered less than t2 if t1 precedes t2 in time.\n* :code:`str(t1)` Equivalent to :code:`t1.isoformat()`.\n* :code:`repr(t1)` Returns a string in the form :code:`attotime.objects.attotime(h, m, s, us, ns, [tz])`.\n\nInstance methods\n----------------\n\nattotime.replace([hour[, minute[, second[, microsecond[, nanosecond[, tzinfo]]]]]])\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\nReturn an :code:`attotime` object with the same attributes, except for those attributes given new values by whichever keyword arguments are specified. Note that :code:`tzinfo=None` can be specified to create a naive :code:`attotime` from an aware :code:`attotime` with no conversion of date and time data.\n\n\nattotime.isoformat()\n^^^^^^^^^^^^^^^^^^^^\n\nReturn a string representing the time in ISO 8601 format, :code:`HH:MM:SS.mmmmmm` or, if microsecond is 0, :code:`HH:MM:SS`\n\nIf :code:`utcoffset()` does not return :code:`None`, a 6-character string is appended, giving the UTC offset in (signed) hours and minutes: :code:`HH:MM:SS.mmmmmm+HH:MM` or, if microsecond is 0 :code:`HH:MM:SS+HH:MM`\n\nThe decimal second component may be expanded up to 16 place fixed point.\n\nattotime.strftime(formatstr)\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\nRaises **NotImplementedError**\n\nattotime.utcoffset()\n^^^^^^^^^^^^^^^^^^^^\n\nIf :code:`tzinfo` is :code:`None`, returns :code:`None`, else return :code:`self.tzinfo.utcoffset(self)` as an :code:`attotimedelta`.\n\nattotime.dst()\n^^^^^^^^^^^^^^\n\nIf :code:`tzinfo` is :code:`None`, returns :code:`None`, else return :code:`self.tzinfo.dst(self)` as an :code:`attotimedelta`.\n\nattotime.tzname()\n^^^^^^^^^^^^^^^^^^^\n\nIf :code:`tzinfo` is :code:`None`, returns :code:`None`, else returns :code:`self.tzinfo.tzname(self)`.\n\nDevelopment\n===========\n\nSetup\n-----\n\nIt is recommended to develop using a `virtualenv `_.\n\nThe tests require the :code:`dev` feature to be enabled, install the necessary dependencies using pip::\n\n $ pip install .[dev]\n\nTests\n-----\n\nTests can be run using `setuptools `::\n\n $ python setup.py test\n\nContributing\n============\n\nattotime is an open source project hosted on `Bitbucket `_.\n\nAny and all bugs are welcome on our `issue tracker `_. Of particular interest are places where the attotime implementation incorrectly deviates from native Python behavior. Pull requests containing unit tests or fixed bugs are always welcome!\n\nReferences\n==========\n\n* `PEP 410 which describes the need for high precision time types `_\n* `Bug report with implementation of PEP 410 `_\n* `Bug report discussing loss of precision when parsing ISO8601 timestamps `_\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/attotime", "keywords": "datetime decimal", "license": "", "maintainer": "", "maintainer_email": "", "name": "attotime", "package_url": "https://pypi.org/project/attotime/", "platform": "", "project_url": "https://pypi.org/project/attotime/", "project_urls": { "Documentation": "https://attotime.readthedocs.io", "Homepage": "https://bitbucket.org/nielsenb/attotime", "Source": "https://bitbucket.org/nielsenb/attotime", "Tracker": "https://bitbucket.org/nielsenb/attotime/issues" }, "release_url": "https://pypi.org/project/attotime/0.2.0/", "requires_dist": null, "requires_python": "", "summary": "Arbitrary precision datetime library.", "version": "0.2.0" }, "last_serial": 4674438, "releases": { "0.0.1": [ { "comment_text": "", "digests": { "md5": "bac26ef435ed16cf9815341a27471a38", "sha256": "46168c4593f144fd19369ede2cb49128957e623b814746f9dd6a62e0b0d75809" }, "downloads": -1, "filename": "attotime-0.0.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "bac26ef435ed16cf9815341a27471a38", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 14077, "upload_time": "2018-10-25T15:24:55", "url": "https://files.pythonhosted.org/packages/ac/26/0c032f2cafee51eb6ba16a49fcc1cf27e621db352552a2bd40818d42aaab/attotime-0.0.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "bbdd35d46b18108d8af69acc1e305219", "sha256": "c3f39ed8cf3b7049337d7ac60d2e003d66997253d6cc0c87f5e79f0a265ad00b" }, "downloads": -1, "filename": "attotime-0.0.1.tar.gz", "has_sig": false, "md5_digest": "bbdd35d46b18108d8af69acc1e305219", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11664, "upload_time": "2018-10-25T15:24:56", "url": "https://files.pythonhosted.org/packages/db/80/84ed6e3c2286cc8cc3111c7f8d6bf292a391659015a7248c9d35cebd349d/attotime-0.0.1.tar.gz" } ], "0.1.3": [ { "comment_text": "", "digests": { "md5": "a08b0397cf2c443c61b48abcea62ad8c", "sha256": "cfba13dc3aef4f3cc65df48657d50fedfd6b16f7d82e9560e72057a4551da719" }, "downloads": -1, "filename": "attotime-0.1.3-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "a08b0397cf2c443c61b48abcea62ad8c", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 19525, "upload_time": "2019-01-05T02:46:52", "url": "https://files.pythonhosted.org/packages/db/5f/4841f2081d8e1e285525068b31a935348f7a16b37de7eb27bfb9abec6a90/attotime-0.1.3-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "90807e5d91f0b2ccfa33d05accadf5e9", "sha256": "efd20190aaf873c68ec5be9c10168ba73eca2c1e560df1228760a9158c053ec4" }, "downloads": -1, "filename": "attotime-0.1.3.tar.gz", "has_sig": false, "md5_digest": "90807e5d91f0b2ccfa33d05accadf5e9", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 20675, "upload_time": "2019-01-05T02:46:53", "url": "https://files.pythonhosted.org/packages/25/16/2ff703b652645bf8b12393963e3ea100da09d989a2e76a84c83b15c13105/attotime-0.1.3.tar.gz" } ], "0.2.0": [ { "comment_text": "", "digests": { "md5": "c1f5bb99d5f1709f1cbcdb2849990483", "sha256": "5c0dd2be2b33ea264b34b0edb5efd3079ec0d69b3e71e17fdad03a17704b4a37" }, "downloads": -1, "filename": "attotime-0.2.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "c1f5bb99d5f1709f1cbcdb2849990483", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 39030, "upload_time": "2019-01-08T21:57:53", "url": "https://files.pythonhosted.org/packages/c9/df/2bf91f2606011a9359bfb6434c6cfead2e5f1ce8310ffef8e908d1f2883c/attotime-0.2.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "e26c974b32248eebfff9c029870d9291", "sha256": "746086cab04297e95ee3093fc88a7b47bb55698bdb9f4040eaecb57ce17d8f32" }, "downloads": -1, "filename": "attotime-0.2.0.tar.gz", "has_sig": false, "md5_digest": "e26c974b32248eebfff9c029870d9291", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 36257, "upload_time": "2019-01-08T21:57:55", "url": "https://files.pythonhosted.org/packages/1f/a4/33f73ec801ea2ca6c03afa307ca0d3a44c211d8019b5e91d1b1f4b750bed/attotime-0.2.0.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "c1f5bb99d5f1709f1cbcdb2849990483", "sha256": "5c0dd2be2b33ea264b34b0edb5efd3079ec0d69b3e71e17fdad03a17704b4a37" }, "downloads": -1, "filename": "attotime-0.2.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "c1f5bb99d5f1709f1cbcdb2849990483", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 39030, "upload_time": "2019-01-08T21:57:53", "url": "https://files.pythonhosted.org/packages/c9/df/2bf91f2606011a9359bfb6434c6cfead2e5f1ce8310ffef8e908d1f2883c/attotime-0.2.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "e26c974b32248eebfff9c029870d9291", "sha256": "746086cab04297e95ee3093fc88a7b47bb55698bdb9f4040eaecb57ce17d8f32" }, "downloads": -1, "filename": "attotime-0.2.0.tar.gz", "has_sig": false, "md5_digest": "e26c974b32248eebfff9c029870d9291", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 36257, "upload_time": "2019-01-08T21:57:55", "url": "https://files.pythonhosted.org/packages/1f/a4/33f73ec801ea2ca6c03afa307ca0d3a44c211d8019b5e91d1b1f4b750bed/attotime-0.2.0.tar.gz" } ] }