tdfs4ds 0.2.4.13__py3-none-any.whl → 0.2.4.14__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- tdfs4ds/__init__.py +3 -3
- tdfs4ds/utils/time_management.py +26 -15
- {tdfs4ds-0.2.4.13.dist-info → tdfs4ds-0.2.4.14.dist-info}/METADATA +1 -1
- {tdfs4ds-0.2.4.13.dist-info → tdfs4ds-0.2.4.14.dist-info}/RECORD +6 -6
- {tdfs4ds-0.2.4.13.dist-info → tdfs4ds-0.2.4.14.dist-info}/WHEEL +0 -0
- {tdfs4ds-0.2.4.13.dist-info → tdfs4ds-0.2.4.14.dist-info}/top_level.txt +0 -0
tdfs4ds/__init__.py
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
__version__ = '0.2.4.
|
|
1
|
+
__version__ = '0.2.4.14'
|
|
2
2
|
import logging
|
|
3
3
|
# Setup the logger
|
|
4
4
|
logging.basicConfig(
|
|
@@ -27,8 +27,8 @@ FOLLOW_UP_NAME = 'FS_FOLLOW_UP'
|
|
|
27
27
|
DATA_DISTRIBUTION_TEMPORAL = False
|
|
28
28
|
FILTER_MANAGER_NAME = 'FS_FILTER_MANAGER'
|
|
29
29
|
|
|
30
|
-
END_PERIOD = 'UNTIL_CHANGED' #'9999-01-01 00:00:00'
|
|
31
|
-
FEATURE_STORE_TIME = None #'9999-01-01 00:00:00'
|
|
30
|
+
END_PERIOD = 'UNTIL_CHANGED' #'9999-01-01 00:00:00+00:00'
|
|
31
|
+
FEATURE_STORE_TIME = None #'9999-01-01 00:00:00+00:00'
|
|
32
32
|
FEATURE_VERSION_DEFAULT = 'dev.0.0'
|
|
33
33
|
DISPLAY_LOGS = True
|
|
34
34
|
DEBUG_MODE = False
|
tdfs4ds/utils/time_management.py
CHANGED
|
@@ -3,6 +3,7 @@ import datetime
|
|
|
3
3
|
|
|
4
4
|
import tdfs4ds
|
|
5
5
|
import numpy as np
|
|
6
|
+
import pandas as pd
|
|
6
7
|
|
|
7
8
|
def get_hidden_table_name(table_name):
|
|
8
9
|
return table_name + '_HIDDEN'
|
|
@@ -58,14 +59,20 @@ class TimeManager:
|
|
|
58
59
|
'BUSINESS_DATE' : df[time_column]
|
|
59
60
|
})[['time_id','BUSINESS_DATE']]
|
|
60
61
|
|
|
62
|
+
type_BUSINESS_DATE = tdfs4ds.utils.info.get_feature_types_sql_format(df_)['BUSINESS_DATE']
|
|
63
|
+
if 'TIMESTAMP' in type_BUSINESS_DATE.upper() and 'ZONE' not in type_BUSINESS_DATE.upper():
|
|
64
|
+
print(f"data type of the time colum has been modified from {type_BUSINESS_DATE} to {type_BUSINESS_DATE + ' WITH TIME ZONE'}")
|
|
65
|
+
type_BUSINESS_DATE = type_BUSINESS_DATE + ' WITH TIME ZONE'
|
|
66
|
+
df_ = df_.assign(type_BUSINESS_DATE = tdml.sqlalchemy.literal_column(f"CAST(BUSINESS_DATE AS {type_BUSINESS_DATE})"))
|
|
67
|
+
|
|
61
68
|
d_ = {x[0]: x[1] for x in df_._td_column_names_and_types}
|
|
62
|
-
self.data_type = d_['BUSINESS_DATE']
|
|
69
|
+
self.data_type = type_BUSINESS_DATE #d_['BUSINESS_DATE']
|
|
63
70
|
|
|
64
71
|
df_.to_sql(
|
|
65
72
|
table_name = self.table_name,
|
|
66
73
|
schema_name = self.schema_name,
|
|
67
74
|
if_exists = 'replace',
|
|
68
|
-
primary_index = ['time_id']
|
|
75
|
+
primary_index = ['time_id'],
|
|
69
76
|
)
|
|
70
77
|
|
|
71
78
|
query = f"""
|
|
@@ -127,36 +134,40 @@ class TimeManager:
|
|
|
127
134
|
Returns:
|
|
128
135
|
DataFrame: The table data as a DataFrame.
|
|
129
136
|
"""
|
|
130
|
-
|
|
137
|
+
|
|
138
|
+
cols = tdml.DataFrame(tdml.in_schema(self.schema_name, self.view_name)).columns
|
|
139
|
+
return pd.DataFrame(tdml.execute_sql(f"SEL * FROM {self.schema_name}.{self.view_name}").fetchall(), columns=cols)
|
|
131
140
|
|
|
132
141
|
def get_date_in_the_past(self):
|
|
133
142
|
"""
|
|
134
143
|
Retrieves the earliest date and time value from the table.
|
|
135
144
|
|
|
136
145
|
Returns:
|
|
137
|
-
str: The earliest date and time value as a formatted string
|
|
146
|
+
str: The earliest date and time value as a formatted string
|
|
147
|
+
('YYYY-MM-DD HH:MM:SS±HH:MM' if timezone is available, else 'YYYY-MM-DD HH:MM:SS').
|
|
138
148
|
"""
|
|
139
|
-
#
|
|
140
|
-
date_obj = self.display().
|
|
149
|
+
# Use iloc to preserve timezone awareness from pandas
|
|
150
|
+
date_obj = self.display().BUSINESS_DATE.iloc[0]
|
|
141
151
|
|
|
142
|
-
if isinstance(date_obj,
|
|
143
|
-
|
|
152
|
+
if isinstance(date_obj, pd.Timestamp):
|
|
153
|
+
datetime_obj = date_obj.to_pydatetime()
|
|
154
|
+
elif isinstance(date_obj, datetime.datetime):
|
|
144
155
|
datetime_obj = date_obj
|
|
145
156
|
elif isinstance(date_obj, datetime.date):
|
|
146
|
-
# print("temp is a datetime.date object")
|
|
147
|
-
# Convert date object to a datetime object at midnight (00:00:00)
|
|
148
157
|
datetime_obj = datetime.datetime.combine(date_obj, datetime.time.min)
|
|
149
158
|
elif isinstance(date_obj, np.datetime64):
|
|
150
|
-
|
|
151
|
-
datetime_obj = date_obj.astype('datetime64[ms]').astype(datetime.datetime)
|
|
159
|
+
datetime_obj = pd.to_datetime(date_obj).to_pydatetime()
|
|
152
160
|
else:
|
|
153
|
-
print("temp is
|
|
161
|
+
print("temp is of unrecognized type")
|
|
154
162
|
print('temp', date_obj)
|
|
155
163
|
print('temp type', type(date_obj))
|
|
156
164
|
return
|
|
157
165
|
|
|
158
|
-
#
|
|
159
|
-
|
|
166
|
+
# Format with timezone offset if available
|
|
167
|
+
if datetime_obj.tzinfo is not None and datetime_obj.tzinfo.utcoffset(datetime_obj) is not None:
|
|
168
|
+
output_string = datetime_obj.isoformat(sep=' ', timespec='seconds')
|
|
169
|
+
else:
|
|
170
|
+
output_string = datetime_obj.strftime("%Y-%m-%d %H:%M:%S")
|
|
160
171
|
|
|
161
172
|
return output_string
|
|
162
173
|
|
|
@@ -2,7 +2,7 @@ tdfs/__init__.py,sha256=7AcO7uB1opRCt7t2JOHworKimfAaDeO3boRW7u9Geo8,23
|
|
|
2
2
|
tdfs/datasets.py,sha256=-b2MPEKGki2V1M8iUcoDR9uc2krIK7u1CK-EhChvihs,985
|
|
3
3
|
tdfs/feature_store.py,sha256=Honu7eOAXxP4Ivz0mRlhuNkfTDzgZl5HB1WlQUwzcZ0,31354
|
|
4
4
|
tdfs/data/curves.csv,sha256=q0Tm-0yu7VMK4lHvHpgi1LMeRq0lO5gJy2Q17brKbEM,112488
|
|
5
|
-
tdfs4ds/__init__.py,sha256=
|
|
5
|
+
tdfs4ds/__init__.py,sha256=GfLqTgZOCeV0h2_ceuOsqeVQmb1kN4X9RTlkeTZ-86w,65857
|
|
6
6
|
tdfs4ds/datasets.py,sha256=LE4Gn0muwdyrIrCrbkE92cnafUML63z1lj5bFIIVzmc,3524
|
|
7
7
|
tdfs4ds/feature_engineering.py,sha256=oVnZ2V_XNGE12LKC_fNfkrWSQZLgtYRmaf8Dispi6S4,7081
|
|
8
8
|
tdfs4ds/feature_store.py,sha256=y-oItPZw6nBkBcGAceaATZbkLPTsvpk0OnpzTxYofDs,68576
|
|
@@ -27,9 +27,9 @@ tdfs4ds/utils/filter_management.py,sha256=7D47N_hnTSUVOkaV2XuKrlUFMxzWjDsCBvRYsH
|
|
|
27
27
|
tdfs4ds/utils/info.py,sha256=sShnUxXMlvCtQ6xtShDhqdpTr6sMG0dZQhNBFgUENDY,12058
|
|
28
28
|
tdfs4ds/utils/lineage.py,sha256=LI-5pG7D8lO3-YFa9qA6CrEackiYugV23_Vz9IpF5xw,28670
|
|
29
29
|
tdfs4ds/utils/query_management.py,sha256=nAcE8QY1GWAKgOtb-ubSfDVcnYbU7Ge8CruVRLoPtmY,6356
|
|
30
|
-
tdfs4ds/utils/time_management.py,sha256=
|
|
30
|
+
tdfs4ds/utils/time_management.py,sha256=rVxtIXcFtQih2UabAtos4DK-j9MPqzYVieIz_SvySZE,9241
|
|
31
31
|
tdfs4ds/utils/visualization.py,sha256=5S528KoKzzkrAdCxfy7ecyqKvAXBoibNvHwz_u5ISMs,23167
|
|
32
|
-
tdfs4ds-0.2.4.
|
|
33
|
-
tdfs4ds-0.2.4.
|
|
34
|
-
tdfs4ds-0.2.4.
|
|
35
|
-
tdfs4ds-0.2.4.
|
|
32
|
+
tdfs4ds-0.2.4.14.dist-info/METADATA,sha256=uaiMXMjkNR7aA6yZitLJEYAzdigDKhF5ozzm7bJPrlA,11945
|
|
33
|
+
tdfs4ds-0.2.4.14.dist-info/WHEEL,sha256=R0nc6qTxuoLk7ShA2_Y-UWkN8ZdfDBG2B6Eqpz2WXbs,91
|
|
34
|
+
tdfs4ds-0.2.4.14.dist-info/top_level.txt,sha256=wMyVkMvnBn8RRt1xBveGQxOpWFijPMPkMiE7G2mi8zo,8
|
|
35
|
+
tdfs4ds-0.2.4.14.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|