>>> UTCTime(datetime(2057, 9, 30, 22, 7, 50)).todatetime()
datetime.datetime(1957, 9, 30, 22, 7, 50)
+ If BER encoded value was met, then ``ber_raw`` attribute will hold
+ its raw representation.
+
.. warning::
Pay attention that UTCTime can not hold full year, so all years
* minutes are not exceeding 60
* offset value is not exceeding 14 hours
"""
- __slots__ = ("_ber_raw",)
+ __slots__ = ("ber_raw",)
tag_default = tag_encode(23)
encoding = "ascii"
asn1_type_name = "UTCTime"
None, None, impl, expl, None, optional, _decoded, ctx,
)
self._value = value
- self._ber_raw = None
+ self.ber_raw = None
if value is not None:
- self._value, self._ber_raw = self._value_sanitize(value, ctx)
- self.ber_encoded = self._ber_raw is not None
+ self._value, self.ber_raw = self._value_sanitize(value, ctx)
+ self.ber_encoded = self.ber_raw is not None
if default is not None:
default, _ = self._value_sanitize(default)
self.default = self.__class__(
try:
offset, _value = self._strptime_bered(value_decoded)
_value = _value - timedelta(seconds=offset)
- return self._dt_sanitize(_value), value_decoded
+ return self._dt_sanitize(_value), value
except (TypeError, ValueError, OverflowError) as _err:
err = _err
raise DecodeError(
if self.ready:
value = self._value.isoformat()
if self.ber_encoded:
- value += " (%s)" % self._ber_raw
+ value += " (%s)" % self.ber_raw
return value
def __unicode__(self):
if self.ready:
value = self._value.isoformat()
if self.ber_encoded:
- value += " (%s)" % self._ber_raw
+ value += " (%s)" % self.ber_raw
return value
return text_type(self._pp_value())
def __getstate__(self):
return UTCTimeState(
*super(UTCTime, self).__getstate__(),
- **{"ber_raw": self._ber_raw}
+ **{"ber_raw": self.ber_raw}
)
def __setstate__(self, state):
super(UTCTime, self).__setstate__(state)
- self._ber_raw = state.ber_raw
+ self.ber_raw = state.ber_raw
def __bytes__(self):
self._assert_ready()
dt -= timedelta(seconds=sign * 60 * offset_minute)
data += "%s%02d" % (minutes_separator, offset_minute)
data = data.encode("ascii")
- data = GeneralizedTime.tag_default + len_encode(len(data)) + data
+ data_der = GeneralizedTime.tag_default + len_encode(len(data)) + data
try:
- GeneralizedTime().decod(data)
+ GeneralizedTime().decod(data_der)
except DecodeError:
dered = False
else:
dered = True
- obj = GeneralizedTime().decod(data, ctx={"bered": True})
+ obj = GeneralizedTime().decod(data_der, ctx={"bered": True})
if dt.year > 1970:
self.assertEqual(
mktime(obj.todatetime().timetuple()),
self.assertEqual(obj.todatetime().timestamp(), dt.timestamp())
self.assertEqual(obj.ber_encoded, not dered)
self.assertEqual(obj.bered, not dered)
- self.assertEqual(obj.encode() == data, dered)
+ self.assertEqual(obj.ber_raw, None if dered else data)
+ self.assertEqual(obj.encode() == data_der, dered)
repr(obj)
bytes(obj)
str(obj)
(b"0101021200Z", datetime(2001, 1, 2, 12)),
(b"0101020700-0500", datetime(2001, 1, 2, 12)),
)):
- data = UTCTime.tag_default + len_encode(len(data)) + data
- obj = UTCTime().decod(data, ctx={"bered": True})
+ data_der = UTCTime.tag_default + len_encode(len(data)) + data
+ obj = UTCTime().decod(data_der, ctx={"bered": True})
self.assertEqual(obj, dt)
self.assertEqual(obj.todatetime(), dt)
self.assertTrue(obj.ber_encoded)
self.assertTrue(obj.bered)
- self.assertNotEqual(obj.encode(), data)
+ self.assertEqual(obj.ber_raw, data)
+ self.assertNotEqual(obj.encode(), data_der)
repr(obj)
def test_go_vectors_valid_ber(self):
data += "+"
data += "%02d%02d" % (offset_hour, offset_minute)
data = data.encode("ascii")
- data = UTCTime.tag_default + len_encode(len(data)) + data
- obj = UTCTime().decod(data, ctx={"bered": True})
+ data_der = UTCTime.tag_default + len_encode(len(data)) + data
+ obj = UTCTime().decod(data_der, ctx={"bered": True})
self.assertEqual(obj, dt)
self.assertEqual(obj.todatetime(), dt)
self.assertEqual(obj.ber_encoded, not dered)
self.assertEqual(obj.bered, not dered)
- self.assertEqual(obj.encode() == data, dered)
+ self.assertEqual(obj.ber_raw, None if dered else data)
+ self.assertEqual(obj.encode() == data_der, dered)
repr(obj)
bytes(obj)
str(obj)