5
5
# You might need to run it many times since dictionaries come in different orders
6
6
# every time you run the docstrings.
7
7
# However the docstring expects it in a specific order in order to pass!
8
+ import pytz
8
9
import difflib
9
10
import logging
10
11
import types
@@ -110,6 +111,7 @@ def _report_progress(_stats, progress_logger, duration):
110
111
'ignore_private_variables' ,
111
112
'encodings' ,
112
113
'ignore_encoding_errors' ,
114
+ 'default_timezone' ,
113
115
)
114
116
115
117
@@ -170,6 +172,7 @@ def __init__(self,
170
172
verbose_level : int = 1 ,
171
173
view : str = TEXT_VIEW ,
172
174
zip_ordered_iterables : bool = False ,
175
+ default_timezone :Union [datetime .timezone , datetime .timezone , pytz .tzinfo .BaseTzInfo ]= datetime .timezone .utc ,
173
176
_parameters = None ,
174
177
_shared_parameters = None ,
175
178
** kwargs ):
@@ -184,7 +187,7 @@ def __init__(self,
184
187
"view, hasher, hashes, max_passes, max_diffs, zip_ordered_iterables, "
185
188
"cutoff_distance_for_pairs, cutoff_intersection_for_pairs, log_frequency_in_sec, cache_size, "
186
189
"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 "
188
191
"ignore_order_func, custom_operators, encodings, ignore_encoding_errors, use_log_scale, log_scale_similarity_threshold "
189
192
"_parameters and _shared_parameters." ) % ', ' .join (kwargs .keys ()))
190
193
@@ -205,6 +208,7 @@ def __init__(self,
205
208
self .use_enum_value = use_enum_value
206
209
self .log_scale_similarity_threshold = log_scale_similarity_threshold
207
210
self .use_log_scale = use_log_scale
211
+ self .default_timezone = default_timezone
208
212
self .threshold_to_diff_deeper = threshold_to_diff_deeper
209
213
self .ignore_string_type_changes = ignore_string_type_changes
210
214
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):
1490
1494
1491
1495
def _diff_datetime (self , level , local_tree = None ):
1492
1496
"""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 )
1495
1499
1496
1500
if level .t1 != level .t2 :
1497
1501
self ._report_result ('values_changed' , level , local_tree = local_tree )
1498
1502
1499
1503
def _diff_time (self , level , local_tree = None ):
1500
1504
"""Diff DateTimes"""
1501
1505
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 )
1504
1508
1505
1509
if level .t1 != level .t2 :
1506
1510
self ._report_result ('values_changed' , level , local_tree = local_tree )
0 commit comments