-
Notifications
You must be signed in to change notification settings - Fork 1.5k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Returning native datetime objects for Bucket/Blob time properties. #807
Conversation
Changes Unknown when pulling 9f7d6fc on dhermes:use-native-datetime into * on GoogleCloudPlatform:master*. |
I think this is true, but it is an implementation detail so it could break in the future; the discovery document only claims this is in RFC3339 format. That being said, apitools just uses protorpc, which uses datetime exclusively. @craigcitro may be able to comment further; looking at the code we treat the timestamps as DateTimeFields, https://github.com/google/protorpc/blob/master/protorpc/message_types.py#L52, but these are in millisecond format, not RFC3339 and I can't find where it does the string conversion. |
BLOB_NAME = 'blob-name' | ||
connection = _Connection() | ||
bucket = _Bucket(connection) | ||
TIME_DELETED = '2014-11-05T20:34:37Z' | ||
TIME_DELETED = '2014-11-05T20:34:37.000Z' | ||
TIMESTAMP = datetime.datetime(2014, 11, 5, 20, 34, 37) |
This comment was marked as spam.
This comment was marked as spam.
Sorry, something went wrong.
This comment was marked as spam.
This comment was marked as spam.
Sorry, something went wrong.
This comment was marked as spam.
This comment was marked as spam.
Sorry, something went wrong.
@thobrla The conversion happens in |
Ah; the responsible code is actually in protorpc, and that handles both kinds of string formats (using text search and strptime). That seems like a reasonable approach. |
Yes, I'm cool doing that (only because we will end up requiring |
one more heads-up about timestamps: some newer APIs (eg pubsub) may return you timestamps with even more precision. i.e. down to the nanosecond. (see source here) |
@craigcitro WAT? |
well, your fix is still good for storage. we can cross the next bridge when we come to it. |
@craigcitro You mean this PR is good or the suggestion to use As it were, I can confirm that the timezone support and the option of not having milliseconds (the only extra features) are not necessary. From the discovery type documentation:
|
9f7d6fc
to
2645e1d
Compare
@tseaver I made an update to the unit tests and also made a slight tweak to the use of PTAL |
Changes Unknown when pulling 2645e1d on dhermes:use-native-datetime into * on GoogleCloudPlatform:master*. |
LGTM |
Returning native datetime objects for Bucket/Blob time properties.
Note this was almost in #793 but dropped due to RFC3339 questions.
@craigcitro @thobrla can you vet an assumption for me? Will timestamps returned conform to
I ask because
'2014-11-05T20:34:37Z'
is also totally valid according to RFC3339 and I'm wondering if we can get away with usingdatetime
alone (and not having to use thestrict-rfc3339
library for the full generality of RFC3339).