constructor.timezone: __copy_ & __deepcopy__

close #387
This commit is contained in:
Ovv 2020-04-06 11:14:45 +02:00 committed by Ingy döt Net
parent fc914d52c4
commit ddf20330be
2 changed files with 18 additions and 0 deletions

View File

@ -38,6 +38,12 @@ class timezone(datetime.tzinfo):
def dst(self, dt=None):
return datetime.timedelta(0)
def __copy__(self):
return self.__deepcopy__()
def __deepcopy__(self, memodict={}):
return self.__class__(self.utcoffset())
__repr__ = __str__ = tzname

View File

@ -305,6 +305,18 @@ def test_subclass_blacklist_types(data_filename, verbose=False):
test_subclass_blacklist_types.unittest = ['.subclass_blacklist']
def test_timezone_copy(verbose=False):
import copy
tzinfo = yaml.constructor.timezone(datetime.timedelta(0))
tz_copy = copy.copy(tzinfo)
tz_deepcopy = copy.deepcopy(tzinfo)
if tzinfo.tzname() != tz_copy.tzname() != tz_deepcopy.tzname():
raise AssertionError("Timezones should be equal")
test_timezone_copy.unittest = []
if __name__ == '__main__':
import sys, test_constructor
sys.modules['test_constructor'] = sys.modules['__main__']