constructor.timezone: __copy_ & __deepcopy__

close #387
diff --git a/lib/yaml/constructor.py b/lib/yaml/constructor.py
index c42ee34..ff4e368 100644
--- a/lib/yaml/constructor.py
+++ b/lib/yaml/constructor.py
@@ -38,6 +38,12 @@
     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
 
 
diff --git a/tests/lib/test_constructor.py b/tests/lib/test_constructor.py
index 5a8cce2..c76df5e 100644
--- a/tests/lib/test_constructor.py
+++ b/tests/lib/test_constructor.py
@@ -305,6 +305,18 @@
 
 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__']