def deserialize_channel_pins_update_event( self, shard: gateway_shard.GatewayShard, payload: data_binding.JSONObject ) -> channel_events.PinsUpdateEvent: channel_id = snowflakes.Snowflake(payload["channel_id"]) # Turns out this _can_ be None or not present. Only set it if it is actually available. if (raw := payload.get("last_pin_timestamp")) is not None: last_pin_timestamp: typing.Optional[datetime.datetime] = time.iso8601_datetime_string_to_datetime(raw)
def test_parse_iso_8601_date_with_no_fraction(): string = "2019-10-10T05:22:33Z" date = time.iso8601_datetime_string_to_datetime(string) assert date.year == 2019 assert date.month == 10 assert date.day == 10 assert date.hour == 5 assert date.minute == 22 assert date.second == 33 assert date.microsecond == 0
def test_parse_iso_8601_date_with_milliseconds_instead_of_microseconds(): string = "2019-10-10T05:22:33.023Z" date = time.iso8601_datetime_string_to_datetime(string) assert date.year == 2019 assert date.month == 10 assert date.day == 10 assert date.hour == 5 assert date.minute == 22 assert date.second == 33 assert date.microsecond == 23000
def test_parse_iso_8601_date_with_zulu(): string = "2019-10-10T05:22:33.023456Z" date = time.iso8601_datetime_string_to_datetime(string) assert date.year == 2019 assert date.month == 10 assert date.day == 10 assert date.hour == 5 assert date.minute == 22 assert date.second == 33 assert date.microsecond == 23456 offset = date.tzinfo.utcoffset(None) assert offset == datetime.timedelta(seconds=0)
def test_parse_iso_8601_date_with_positive_timezone(): string = "2019-10-10T05:22:33.023456+02:30" date = time.iso8601_datetime_string_to_datetime(string) assert date.year == 2019 assert date.month == 10 assert date.day == 10 assert date.hour == 5 assert date.minute == 22 assert date.second == 33 assert date.microsecond == 23456 offset = date.tzinfo.utcoffset(None) assert offset == datetime.timedelta(hours=2, minutes=30)