@@ -934,14 +934,15 @@ def __init__(self, date_string):
934
934
# UTC offset and associated timezone. If parsed datetime values provide an
935
935
# offset, it is used for display. If not all values have the same offset,
936
936
# +0000 (=UTC) timezone is used and utc_offset is set to False.
937
- _utc_offset = None
938
- timezone = timezone . utc
937
+ _utc_offset = None # deprecated - remove in 3.31
938
+ _timezone = None
939
939
940
940
def __init__ (self , * args , have_date = 0 , have_time = 0 , ** kwargs ):
941
941
super ().__init__ (* args , ** kwargs )
942
942
self .have_date = have_date
943
943
self .have_time = have_time
944
944
945
+ # deprecated - remove in 3.31 - from here
945
946
@property
946
947
def utc_offset (self ):
947
948
warnings .warn (
@@ -957,6 +958,29 @@ def utc_offset(self, val):
957
958
OrangeDeprecationWarning
958
959
)
959
960
self ._utc_offset = val
961
+ # remove to here
962
+
963
+ @property
964
+ def timezone (self ):
965
+ if self ._timezone is None or self ._timezone == "different timezones" :
966
+ return timezone .utc
967
+ else :
968
+ return self ._timezone
969
+
970
+ @timezone .setter
971
+ def timezone (self , timezone ):
972
+ """
973
+ Set timezone value:
974
+ - if self._timezone is None set it to timezone
975
+ - if current timezone is different that new indicate that TimeVariable
976
+ have two date-times with different timezones
977
+ - if timezones are same keep it
978
+ """
979
+ if timezone is not None :
980
+ if self ._timezone is None :
981
+ self ._timezone = timezone
982
+ elif timezone != self .timezone :
983
+ self ._timezone = "different timezones"
960
984
961
985
def copy (self , compute_value = Variable ._CopyComputeValue , * , name = None , ** _ ):
962
986
return super ().copy (compute_value = compute_value , name = name ,
@@ -1043,6 +1067,7 @@ def parse(self, datestr):
1043
1067
else :
1044
1068
raise self .InvalidDateTimeFormatError (datestr )
1045
1069
1070
+ # deprecated - remove in 3.31 - from here
1046
1071
# Remember UTC offset. If not all parsed values share the same offset,
1047
1072
# remember none of it.
1048
1073
offset = dt .utcoffset ()
@@ -1053,6 +1078,10 @@ def parse(self, datestr):
1053
1078
elif self ._utc_offset != offset :
1054
1079
self ._utc_offset = False
1055
1080
self .timezone = timezone .utc
1081
+ # remote to here
1082
+ # offset = dt.utcoffset() # uncomment in 3.31
1083
+ # if offset
1084
+ # self.timezone = timezone(dt.utcoffset())
1056
1085
1057
1086
# Convert time to UTC timezone. In dates without timezone,
1058
1087
# localtime is assumed. See also:
0 commit comments