55# You might need to run it many times since dictionaries come in different orders 
66# every time you run the docstrings. 
77# However the docstring expects it in a specific order in order to pass! 
8+ import  pytz 
89import  difflib 
910import  logging 
1011import  types 
@@ -110,6 +111,7 @@ def _report_progress(_stats, progress_logger, duration):
110111    'ignore_private_variables' ,
111112    'encodings' ,
112113    'ignore_encoding_errors' ,
114+     'default_timezone' ,
113115)
114116
115117
@@ -170,6 +172,7 @@ def __init__(self,
170172                 verbose_level : int = 1 ,
171173                 view : str = TEXT_VIEW ,
172174                 zip_ordered_iterables : bool = False ,
175+                  default_timezone :Union [datetime .timezone , datetime .timezone , pytz .tzinfo .BaseTzInfo ]= datetime .timezone .utc ,
173176                 _parameters = None ,
174177                 _shared_parameters = None ,
175178                 ** kwargs ):
@@ -184,7 +187,7 @@ def __init__(self,
184187                "view, hasher, hashes, max_passes, max_diffs, zip_ordered_iterables, " 
185188                "cutoff_distance_for_pairs, cutoff_intersection_for_pairs, log_frequency_in_sec, cache_size, " 
186189                "cache_tuning_sample_size, get_deep_distance, group_by, group_by_sort_key, cache_purge_level, " 
187-                 "math_epsilon, iterable_compare_func, use_enum_value, _original_type, threshold_to_diff_deeper, " 
190+                 "math_epsilon, iterable_compare_func, use_enum_value, _original_type, threshold_to_diff_deeper, default_timezone  " 
188191                "ignore_order_func, custom_operators, encodings, ignore_encoding_errors, use_log_scale, log_scale_similarity_threshold " 
189192                "_parameters and _shared_parameters." ) %  ', ' .join (kwargs .keys ()))
190193
@@ -205,6 +208,7 @@ def __init__(self,
205208            self .use_enum_value  =  use_enum_value 
206209            self .log_scale_similarity_threshold  =  log_scale_similarity_threshold 
207210            self .use_log_scale  =  use_log_scale 
211+             self .default_timezone  =  default_timezone 
208212            self .threshold_to_diff_deeper  =  threshold_to_diff_deeper 
209213            self .ignore_string_type_changes  =  ignore_string_type_changes 
210214            self .ignore_type_in_groups  =  self .get_ignore_types_in_groups (
@@ -1490,17 +1494,17 @@ def _diff_numbers(self, level, local_tree=None, report_type_change=True):
14901494
14911495    def  _diff_datetime (self , level , local_tree = None ):
14921496        """Diff DateTimes""" 
1493-         level .t1  =  datetime_normalize (self .truncate_datetime , level .t1 )
1494-         level .t2  =  datetime_normalize (self .truncate_datetime , level .t2 )
1497+         level .t1  =  datetime_normalize (self .truncate_datetime , level .t1 ,  default_timezone = self . default_timezone )
1498+         level .t2  =  datetime_normalize (self .truncate_datetime , level .t2 ,  default_timezone = self . default_timezone )
14951499
14961500        if  level .t1  !=  level .t2 :
14971501            self ._report_result ('values_changed' , level , local_tree = local_tree )
14981502
14991503    def  _diff_time (self , level , local_tree = None ):
15001504        """Diff DateTimes""" 
15011505        if  self .truncate_datetime :
1502-             level .t1  =  datetime_normalize (self .truncate_datetime , level .t1 )
1503-             level .t2  =  datetime_normalize (self .truncate_datetime , level .t2 )
1506+             level .t1  =  datetime_normalize (self .truncate_datetime , level .t1 ,  default_timezone = self . default_timezone )
1507+             level .t2  =  datetime_normalize (self .truncate_datetime , level .t2 ,  default_timezone = self . default_timezone )
15041508
15051509        if  level .t1  !=  level .t2 :
15061510            self ._report_result ('values_changed' , level , local_tree = local_tree )
0 commit comments