python-strict-rfc3339
Port variant v11
Summary Lightweight RFC 3399 timestamp functions (3.11)
Package version 0.7
Homepage No known homepage
Keywords python
Maintainer Python Automaton
License Not yet specified
Other variants v12
Ravenports Buildsheet | History
Ravensource Port Directory | History
Last modified 09 OCT 2023, 04:40:21 UTC
Port created 20 MAY 2018, 23:40:09 UTC
Subpackage Descriptions
single Strict, simple, lightweight RFC3339 functions ============================================= Goals ----- - Convert unix timestamps to and from RFC3339. - Either produce RFC3339 strings with a UTC offset (Z) or with the offset that the C time module reports is the local timezone offset. - Simple with minimal dependencies/libraries. - Avoid timezones as much as possible. - Be very strict and follow RFC3339. Caveats ------- - Leap seconds are not quite supported, since timestamps do not support them, and it requires access to timezone data. - You may be limited by the size of `time_t` on 32 bit systems. In both cases, see 'Notes' below. Rationale --------- - A lot of libraries have trouble with DST transitions and ambiguous times. - Generally, using the python datetime object causes trouble, introducing problems with timezones. - The excellent `pytz` library seems to achieve timezone perfection, however it didn't (at the time of writing) have a method for getting the local timezone or the 'now' time in the local zone. - I saw a lot of problems ultimately due to information lost when converting or transferring between two libraries (e.g., `time` -> `datetime` loses DST info in the tuple) Usage ----- Validation: >>> strict_rfc3339.validate_rfc3339("some rubbish") False >>> strict_rfc3339.validate_rfc3339("2013-03-25T12:42:31+00:32") True Indeed, we can then: >>> strict_rfc3339.rfc3339_to_timestamp("2013-03-25T12:42:31+00:32") 1364213431 >>> tuple(time.gmtime(1364213431))[:6] (2013, 3, 25, 12, 10, 31) No need for two function calls: >>> strict_rfc3339.rfc3339_to_timestamp("some rubbish") Traceback [...] strict_rfc3339.InvalidRFC3339Error Producing strings (for this example `TZ=America/New_York`): >>> strict_rfc3339.timestamp_to_rfc3339_utcoffset(1364213431) '2013-03-25T12:10:31Z' >>> strict_rfc3339.timestamp_to_rfc3339_localoffset(1364213431) '2013-03-25T08:10:31-04:00' And with `TZ=Europe/London`: >>> strict_rfc3339.timestamp_to_rfc3339_localoffset(1364213431) '2013-03-25T12:10:31+00:00' Convenience functions: >>> strict_rfc3339.now_to_rfc3339_utcoffset() '2013-03-25T21:39:35Z' >>> strict_rfc3339.now_to_rfc3339_localoffset() '2013-03-25T17:39:39-04:00' Floats: >>> strict_rfc3339.now_to_rfc3339_utcoffset(integer=True) # The default '2013-03-25T22:04:01Z' >>> strict_rfc3339.now_to_rfc3339_utcoffset(integer=False) '2013-03-25T22:04:01.04399Z' >>> strict_rfc3339.rfc3339_to_timestamp("2013-03-25T22:04:10.04399Z") 1364249050.0439899 Behind the scenes ----------------- These functions are essentially string formatting and arithmetic only. A very small number of functions do the heavy lifting. These come from two modules: `time` and `calendar`.
Configuration Switches (platform-specific settings discarded)
PY311 ON Build using Python 3.11 PY312 OFF Build using Python 3.12
Package Dependencies by Type
Build (only) python-setuptools:single:v11
autoselect-python:single:standard
Build and Runtime python311:single:standard
Download groups
main mirror://PYPI/s/strict-rfc3339
Distribution File Information
5cad17bedfc3af57b399db0fed32771f18fc54bbd917e85546088607ac5e1277 17552 strict-rfc3339-0.7.tar.gz
Ports that require python-strict-rfc3339:v11
python-flex:v11 Swagger Schema validation (3.11)