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