tdfs4ds 0.2.4.47__py3-none-any.whl → 0.2.5.0__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 +216 -40
- tdfs4ds/feature_store/feature_data_processing.py +9 -28
- tdfs4ds/feature_store/feature_store_management.py +1 -1
- tdfs4ds/genai/__init__.py +27 -351
- tdfs4ds/genai/documentation.py +1877 -0
- tdfs4ds/process_store/process_store_catalog_management.py +77 -24
- tdfs4ds/utils/filter_management.py +21 -12
- tdfs4ds/utils/time_management.py +22 -12
- {tdfs4ds-0.2.4.47.dist-info → tdfs4ds-0.2.5.0.dist-info}/METADATA +1 -1
- {tdfs4ds-0.2.4.47.dist-info → tdfs4ds-0.2.5.0.dist-info}/RECORD +12 -19
- tdfs/__init__.py +0 -1
- tdfs/data/curves.csv +0 -5086
- tdfs/datasets.py +0 -27
- tdfs/feature_store.py +0 -723
- tdfs4ds/feature_engineering.py +0 -152
- tdfs4ds/feature_store.py +0 -1529
- tdfs4ds/process_store.py +0 -387
- tdfs4ds/utils.py +0 -579
- {tdfs4ds-0.2.4.47.dist-info → tdfs4ds-0.2.5.0.dist-info}/WHEEL +0 -0
- {tdfs4ds-0.2.4.47.dist-info → tdfs4ds-0.2.5.0.dist-info}/top_level.txt +0 -0
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import teradataml as tdml
|
|
2
2
|
import tdfs4ds
|
|
3
3
|
from tdfs4ds.utils.query_management import execute_query,execute_query_wrapper
|
|
4
|
+
from tdfs4ds import logger_safe
|
|
5
|
+
|
|
4
6
|
|
|
5
7
|
def upgrade_process_catalog():
|
|
6
8
|
|
|
@@ -43,13 +45,13 @@ def upgrade_process_catalog():
|
|
|
43
45
|
# Step 4: Rename the new table to the old table's name
|
|
44
46
|
query_4 = f"""RENAME TABLE {tdfs4ds.SCHEMA}.{tdfs4ds.PROCESS_CATALOG_NAME}_NEW TO {tdfs4ds.SCHEMA}.{tdfs4ds.PROCESS_CATALOG_NAME};"""
|
|
45
47
|
|
|
46
|
-
|
|
48
|
+
logger_safe('info', f'creation of the {tdfs4ds.SCHEMA}.{tdfs4ds.PROCESS_CATALOG_NAME}_NEW table')
|
|
47
49
|
tdml.execute_sql(query_1)
|
|
48
|
-
|
|
50
|
+
logger_safe('info', f'insert existing processes from {tdfs4ds.SCHEMA}.{tdfs4ds.PROCESS_CATALOG_NAME} to {tdfs4ds.SCHEMA}.{tdfs4ds.PROCESS_CATALOG_NAME}_NEW')
|
|
49
51
|
tdml.execute_sql(query_2)
|
|
50
|
-
|
|
52
|
+
logger_safe('info', f'rename {tdfs4ds.SCHEMA}.{tdfs4ds.PROCESS_CATALOG_NAME} to {tdfs4ds.SCHEMA}.{tdfs4ds.PROCESS_CATALOG_NAME}_OLD')
|
|
51
53
|
tdml.execute_sql(query_3)
|
|
52
|
-
|
|
54
|
+
logger_safe('info', f'rename {tdfs4ds.SCHEMA}.{tdfs4ds.PROCESS_CATALOG_NAME}_NEW to {tdfs4ds.SCHEMA}.{tdfs4ds.PROCESS_CATALOG_NAME}')
|
|
53
55
|
tdml.execute_sql(query_4)
|
|
54
56
|
|
|
55
57
|
@execute_query_wrapper
|
|
@@ -263,79 +265,130 @@ def process_store_catalog_creation(if_exists='replace', comment='this table is a
|
|
|
263
265
|
execute_query(query)
|
|
264
266
|
if tdml.display.print_sqlmr_query:
|
|
265
267
|
print(query)
|
|
266
|
-
|
|
268
|
+
logger_safe('info', f'TABLE {tdfs4ds.SCHEMA}.{tdfs4ds.PROCESS_CATALOG_NAME} has been created')
|
|
267
269
|
execute_query(query3)
|
|
268
270
|
except Exception as e:
|
|
269
271
|
# If the table already exists and if_exists is set to 'replace', drop the table and recreate it
|
|
270
|
-
|
|
272
|
+
logger_safe('error', str(e).split('\n')[0])
|
|
271
273
|
if str(e).split('\n')[0].endswith('already exists.') and (if_exists == 'replace'):
|
|
272
274
|
execute_query(f'DROP TABLE {tdfs4ds.SCHEMA}.{tdfs4ds.PROCESS_CATALOG_NAME}')
|
|
273
|
-
|
|
275
|
+
logger_safe('info', f'TABLE {tdfs4ds.SCHEMA}.{tdfs4ds.PROCESS_CATALOG_NAME} has been dropped')
|
|
274
276
|
try:
|
|
275
277
|
# Attempt to recreate the table after dropping it
|
|
276
278
|
execute_query(query)
|
|
277
|
-
|
|
279
|
+
logger_safe('info', f'TABLE {tdfs4ds.SCHEMA}.{tdfs4ds.PROCESS_CATALOG_NAME} has been re-created')
|
|
278
280
|
if tdml.display.print_sqlmr_query:
|
|
279
281
|
print(query)
|
|
280
282
|
execute_query(query3)
|
|
281
283
|
except Exception as e:
|
|
282
|
-
|
|
284
|
+
logger_safe('error', str(e).split('\n')[0])
|
|
283
285
|
|
|
284
286
|
try:
|
|
285
287
|
# Attempt to execute the create table query
|
|
286
288
|
execute_query(query4)
|
|
287
289
|
if tdml.display.print_sqlmr_query:
|
|
288
290
|
print(query4)
|
|
289
|
-
|
|
291
|
+
logger_safe('info', f'TABLE {tdfs4ds.SCHEMA}.{tdfs4ds.DATA_DISTRIBUTION_NAME} has been created')
|
|
290
292
|
execute_query(query5)
|
|
291
293
|
except Exception as e:
|
|
292
294
|
# If the table already exists and if_exists is set to 'replace', drop the table and recreate it
|
|
293
|
-
|
|
295
|
+
logger_safe('error', str(e).split('\n')[0])
|
|
294
296
|
if str(e).split('\n')[0].endswith('already exists.') and (if_exists == 'replace'):
|
|
295
297
|
execute_query(f'DROP TABLE {tdfs4ds.SCHEMA}.{tdfs4ds.DATA_DISTRIBUTION_NAME}')
|
|
296
|
-
|
|
298
|
+
logger_safe('info', f'TABLE {tdfs4ds.SCHEMA}.{tdfs4ds.DATA_DISTRIBUTION_NAME} has been dropped')
|
|
297
299
|
try:
|
|
298
300
|
# Attempt to recreate the table after dropping it
|
|
299
301
|
execute_query(query4)
|
|
300
|
-
|
|
301
|
-
f'TABLE {tdfs4ds.SCHEMA}.{tdfs4ds.DATA_DISTRIBUTION_NAME} has been re-created')
|
|
302
|
+
logger_safe('info', f'TABLE {tdfs4ds.SCHEMA}.{tdfs4ds.DATA_DISTRIBUTION_NAME} has been re-created')
|
|
302
303
|
if tdml.display.print_sqlmr_query:
|
|
303
304
|
print(query4)
|
|
304
305
|
execute_query(query5)
|
|
305
306
|
except Exception as e:
|
|
306
|
-
|
|
307
|
+
logger_safe('error', str(e).split('\n')[0])
|
|
307
308
|
|
|
308
309
|
try:
|
|
309
310
|
# Attempt to execute the create table query
|
|
310
311
|
execute_query(query6)
|
|
311
312
|
if tdml.display.print_sqlmr_query:
|
|
312
313
|
print(query6)
|
|
313
|
-
|
|
314
|
+
logger_safe('info', f'TABLE {tdfs4ds.SCHEMA}.{tdfs4ds.FILTER_MANAGER_NAME} has been created')
|
|
314
315
|
execute_query(query7)
|
|
315
316
|
except Exception as e:
|
|
316
317
|
# If the table already exists and if_exists is set to 'replace', drop the table and recreate it
|
|
317
|
-
|
|
318
|
+
logger_safe('error', str(e).split('\n')[0])
|
|
318
319
|
if str(e).split('\n')[0].endswith('already exists.') and (if_exists == 'replace'):
|
|
319
320
|
execute_query(f'DROP TABLE {tdfs4ds.SCHEMA}.{tdfs4ds.FILTER_MANAGER_NAME}')
|
|
320
|
-
|
|
321
|
+
logger_safe('info', f'TABLE {tdfs4ds.SCHEMA}.{tdfs4ds.FILTER_MANAGER_NAME} has been dropped')
|
|
321
322
|
try:
|
|
322
323
|
# Attempt to recreate the table after dropping it
|
|
323
324
|
execute_query(query6)
|
|
324
|
-
|
|
325
|
-
f'TABLE {tdfs4ds.SCHEMA}.{tdfs4ds.FILTER_MANAGER_NAME} has been re-created')
|
|
325
|
+
logger_safe('info', f'TABLE {tdfs4ds.SCHEMA}.{tdfs4ds.FILTER_MANAGER_NAME} has been re-created')
|
|
326
326
|
if tdml.display.print_sqlmr_query:
|
|
327
327
|
print(query6)
|
|
328
328
|
execute_query(query7)
|
|
329
329
|
except Exception as e:
|
|
330
|
-
|
|
330
|
+
logger_safe('error', str(e).split('\n')[0])
|
|
331
331
|
|
|
332
332
|
try:
|
|
333
333
|
# Attempt to create the secondary index
|
|
334
334
|
execute_query(query2)
|
|
335
335
|
if tdml.display.print_sqlmr_query:
|
|
336
336
|
print(query)
|
|
337
|
-
|
|
337
|
+
logger_safe('info', f'SECONDARY INDEX ON TABLE {tdfs4ds.SCHEMA}.{tdfs4ds.PROCESS_CATALOG_NAME} has been created')
|
|
338
|
+
except Exception as e:
|
|
339
|
+
logger_safe('error', str(e).split('\n')[0])
|
|
340
|
+
|
|
341
|
+
return tdfs4ds.PROCESS_CATALOG_NAME, tdfs4ds.DATA_DISTRIBUTION_NAME, tdfs4ds.FILTER_MANAGER_NAME
|
|
342
|
+
|
|
343
|
+
def get_process_info(process_id: str) -> dict:
|
|
344
|
+
"""
|
|
345
|
+
Retrieve process information including SQL and columns from the process catalog.
|
|
346
|
+
|
|
347
|
+
Args:
|
|
348
|
+
process_id (str): The unique identifier of the process.
|
|
349
|
+
Returns:
|
|
350
|
+
dict: A dictionary containing process SQL and columns.
|
|
351
|
+
"""
|
|
352
|
+
# Retrieve process SQL and columns
|
|
353
|
+
process_catalog = tdfs4ds.process_catalog()
|
|
354
|
+
try:
|
|
355
|
+
process_info = process_catalog[process_catalog['PROCESS_ID'] == process_id].to_pandas().to_dict(orient='records')[0]
|
|
356
|
+
process_info['ENTITY_COLUMNS'] = process_info['ENTITY_ID'].split(',')
|
|
357
|
+
process_info['FEATURE_COLUMNS'] = process_info['FEATURE_NAMES'].split(',')
|
|
358
|
+
except Exception as e:
|
|
359
|
+
logger_safe('error', f"Error retrieving process info: {e}")
|
|
360
|
+
return None
|
|
361
|
+
|
|
362
|
+
# get the SQL query:
|
|
363
|
+
if process_info:
|
|
364
|
+
process_sql = tdfs4ds.utils.lineage.get_ddl(
|
|
365
|
+
view_name = process_info['VIEW_NAME'].split('.')[1],
|
|
366
|
+
schema_name = process_info['VIEW_NAME'].split('.')[0],
|
|
367
|
+
object_type='view'
|
|
368
|
+
)
|
|
369
|
+
process_info['PROCESS_SQL'] = process_sql
|
|
370
|
+
|
|
371
|
+
# retrieve feature documentation
|
|
372
|
+
from tdfs4ds.genai.documentation import retrieve_documentation, retrieve_explain_documentation
|
|
373
|
+
|
|
374
|
+
try:
|
|
375
|
+
documentation = retrieve_documentation(process_id)
|
|
376
|
+
process_info['DOCUMENTED_SQL'] = documentation['DOCUMENTED_SQL']
|
|
377
|
+
process_info['DOCUMENTED_ENTITY_COLUMNS'] = documentation['DOCUMENTED_ENTITY_COLUMNS']
|
|
378
|
+
process_info['DOCUMENTED_FEATURE_COLUMNS'] = documentation['DOCUMENTED_FEATURE_COLUMNS']
|
|
379
|
+
process_info['ENTITY_DESCRIPTION'] = documentation['ENTITY_DESCRIPTION']
|
|
380
|
+
logger_safe('info', f"Successfully retrieved documentation for process_id {process_id}")
|
|
381
|
+
except Exception as e:
|
|
382
|
+
logger_safe('error', f"Error retrieving documentation: {e}")
|
|
383
|
+
|
|
384
|
+
try:
|
|
385
|
+
explain_documentation = retrieve_explain_documentation(process_id)
|
|
386
|
+
process_info['EXPLAIN_ANALYSIS'] = explain_documentation['EXPLAIN_ANALYSIS']
|
|
387
|
+
process_info['OPTIMIZATION_SCORE'] = explain_documentation['OPTIMIZATION_SCORE']
|
|
388
|
+
process_info['EXPLAIN_WARNINGS'] = explain_documentation['EXPLAIN_WARNINGS']
|
|
389
|
+
process_info['EXPLAIN_RECOMMENDATIONS'] = explain_documentation['EXPLAIN_RECOMMENDATIONS']
|
|
390
|
+
logger_safe('info', f"Successfully retrieved explanation for process_id {process_id}")
|
|
338
391
|
except Exception as e:
|
|
339
|
-
|
|
392
|
+
logger_safe('error', f"Error retrieving explanation: {e}")
|
|
340
393
|
|
|
341
|
-
return
|
|
394
|
+
return process_info
|
|
@@ -7,21 +7,30 @@ import json
|
|
|
7
7
|
|
|
8
8
|
|
|
9
9
|
def get_hidden_table_name(schema_name, view_name):
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
Args:
|
|
14
|
-
table_name (str): Public-facing table/view name.
|
|
10
|
+
try:
|
|
11
|
+
ddl = tdfs4ds.utils.lineage.get_ddl(schema_name=schema_name, view_name=view_name)
|
|
15
12
|
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
13
|
+
# Your current parsing is fragile; but keeping your intent:
|
|
14
|
+
backing = ddl.split("\n")[-2].split(".")[1]
|
|
15
|
+
return backing
|
|
19
16
|
|
|
20
|
-
try:
|
|
21
|
-
view_name = tdfs4ds.utils.lineage.get_ddl(schema_name=schema_name, view_name=view_name).split('\n')[-2].split('.')[1]
|
|
22
|
-
return view_name
|
|
23
17
|
except Exception as e:
|
|
24
|
-
|
|
18
|
+
msg = str(e)
|
|
19
|
+
|
|
20
|
+
# Teradata "object does not exist" -> normal for first-time setup
|
|
21
|
+
if "Error 3807" in msg or "does not exist" in msg.lower():
|
|
22
|
+
logger_safe(
|
|
23
|
+
"info",
|
|
24
|
+
"View %s.%s not found; using default hidden table name %s_HIDDEN.",
|
|
25
|
+
schema_name, view_name, view_name
|
|
26
|
+
)
|
|
27
|
+
else:
|
|
28
|
+
logger_safe(
|
|
29
|
+
"warning",
|
|
30
|
+
"Failed to extract hidden table name from DDL; defaulting to suffix method. Error: %s",
|
|
31
|
+
msg.splitlines()[0]
|
|
32
|
+
)
|
|
33
|
+
|
|
25
34
|
return view_name + "_HIDDEN"
|
|
26
35
|
|
|
27
36
|
|
tdfs4ds/utils/time_management.py
CHANGED
|
@@ -9,24 +9,34 @@ import pandas as pd
|
|
|
9
9
|
|
|
10
10
|
|
|
11
11
|
def get_hidden_table_name(schema_name, view_name):
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
Args:
|
|
16
|
-
table_name (str): Public-facing table/view name.
|
|
12
|
+
try:
|
|
13
|
+
ddl = tdfs4ds.utils.lineage.get_ddl(schema_name=schema_name, view_name=view_name)
|
|
17
14
|
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
15
|
+
# Your current parsing is fragile; but keeping your intent:
|
|
16
|
+
backing = ddl.split("\n")[-2].split(".")[1]
|
|
17
|
+
return backing
|
|
21
18
|
|
|
22
|
-
try:
|
|
23
|
-
view_name = tdfs4ds.utils.lineage.get_ddl(schema_name=schema_name, view_name=view_name).split('\n')[-2].split('.')[1]
|
|
24
|
-
return view_name
|
|
25
19
|
except Exception as e:
|
|
26
|
-
|
|
20
|
+
msg = str(e)
|
|
21
|
+
|
|
22
|
+
# Teradata "object does not exist" -> normal for first-time setup
|
|
23
|
+
if "Error 3807" in msg or "does not exist" in msg.lower():
|
|
24
|
+
logger_safe(
|
|
25
|
+
"info",
|
|
26
|
+
"View %s.%s not found; using default hidden table name %s_HIDDEN.",
|
|
27
|
+
schema_name, view_name, view_name
|
|
28
|
+
)
|
|
29
|
+
else:
|
|
30
|
+
logger_safe(
|
|
31
|
+
"warning",
|
|
32
|
+
"Failed to extract hidden table name from DDL; defaulting to suffix method. Error: %s",
|
|
33
|
+
msg.splitlines()[0]
|
|
34
|
+
)
|
|
35
|
+
|
|
27
36
|
return view_name + "_HIDDEN"
|
|
28
37
|
|
|
29
38
|
|
|
39
|
+
|
|
30
40
|
class TimeManager:
|
|
31
41
|
"""
|
|
32
42
|
Manage versioned business time steps behind a Teradata-backed public view.
|
|
@@ -1,13 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
tdfs/datasets.py,sha256=-b2MPEKGki2V1M8iUcoDR9uc2krIK7u1CK-EhChvihs,985
|
|
3
|
-
tdfs/feature_store.py,sha256=Honu7eOAXxP4Ivz0mRlhuNkfTDzgZl5HB1WlQUwzcZ0,31354
|
|
4
|
-
tdfs/data/curves.csv,sha256=q0Tm-0yu7VMK4lHvHpgi1LMeRq0lO5gJy2Q17brKbEM,112488
|
|
5
|
-
tdfs4ds/__init__.py,sha256=WsOG-nk0VyiZ7HBqxVS-xxhbyp9TjogeVF8wfCSl8Rw,61213
|
|
1
|
+
tdfs4ds/__init__.py,sha256=elmc5_fMAaUncQeit1jj_5z4mE3ssTJvy_hHv1rNzx8,70555
|
|
6
2
|
tdfs4ds/datasets.py,sha256=LE4Gn0muwdyrIrCrbkE92cnafUML63z1lj5bFIIVzmc,3524
|
|
7
|
-
tdfs4ds/feature_engineering.py,sha256=oVnZ2V_XNGE12LKC_fNfkrWSQZLgtYRmaf8Dispi6S4,7081
|
|
8
|
-
tdfs4ds/feature_store.py,sha256=y-oItPZw6nBkBcGAceaATZbkLPTsvpk0OnpzTxYofDs,68576
|
|
9
|
-
tdfs4ds/process_store.py,sha256=W97pwqOwabo062ow_LfAXZmlSkcq8xTuwhwAX1EStlQ,16939
|
|
10
|
-
tdfs4ds/utils.py,sha256=xF1VP0NCgosXcKymOo_ofMMnvLEF228IxaxIl-f65uA,23312
|
|
11
3
|
tdfs4ds/data/curves.csv,sha256=q0Tm-0yu7VMK4lHvHpgi1LMeRq0lO5gJy2Q17brKbEM,112488
|
|
12
4
|
tdfs4ds/data/logo/tdfs4ds_logo.png,sha256=OCKQnH0gQbRyupwZeiIgo-9c6mdRtjE2E2Zunr_4Ae0,363980
|
|
13
5
|
tdfs4ds/data/logo/teradata_sym_rgb_pos.png,sha256=Zq-QzLb04PIQ4iN8C6ssaLuNVVI1Q_TqBkFx_f7aNOI,8052
|
|
@@ -17,23 +9,24 @@ tdfs4ds/dataset/dataset.py,sha256=J_fgfsVdR9zSOXrUOqyotqsUD-GlQMGyuld6ueov45w,76
|
|
|
17
9
|
tdfs4ds/dataset/dataset_catalog.py,sha256=qxS2thDW2MvsRouSFaX1M0sX2J7IzBAYD8Yf22Tsd5k,16638
|
|
18
10
|
tdfs4ds/feature_store/__init__.py,sha256=a7NPCkpTx40UR5LRErwnskpABG2Vuib7F5wUjaUGCnI,209
|
|
19
11
|
tdfs4ds/feature_store/entity_management.py,sha256=9ltytv3yCTG84NZXBpb1Tlkf9pOxvrNb0MVidU4pwvE,10157
|
|
20
|
-
tdfs4ds/feature_store/feature_data_processing.py,sha256=
|
|
12
|
+
tdfs4ds/feature_store/feature_data_processing.py,sha256=gXBsr1H05zxM4tWE7y29ucxeoTu1jQITOwTXqi1Y2pk,45214
|
|
21
13
|
tdfs4ds/feature_store/feature_query_retrieval.py,sha256=51c6ZNlLFiBIxNPinS8ot8bjWEIb1QV2eVg69yzVF80,35381
|
|
22
|
-
tdfs4ds/feature_store/feature_store_management.py,sha256=
|
|
23
|
-
tdfs4ds/genai/__init__.py,sha256=
|
|
14
|
+
tdfs4ds/feature_store/feature_store_management.py,sha256=mtPQkdMDhcOrhj9IAaH-FEP_znK53cYtEv8zXAbsigg,52123
|
|
15
|
+
tdfs4ds/genai/__init__.py,sha256=Hal13Kw75nDYKHtfvHZNdm98exqmY6qaqGZkJA2TQ6E,723
|
|
16
|
+
tdfs4ds/genai/documentation.py,sha256=bKi2a6TJ9GbdToK9n3OKRqnAVXO1v6aT92aQ6JksCM4,82027
|
|
24
17
|
tdfs4ds/process_store/__init__.py,sha256=npHR_xju5ecGmWfYHDyteLwiU3x-cL4HD3sFK_th7xY,229
|
|
25
18
|
tdfs4ds/process_store/process_followup.py,sha256=E4jgQahjhVRBbfAW3JXNLId7H5qV8ozRt-6PyAQuPzg,12583
|
|
26
19
|
tdfs4ds/process_store/process_query_administration.py,sha256=AOufkJ6DFUpBiGm-6Q6Dq0Aovw31UGTscZ3Ya0ewS-0,7851
|
|
27
20
|
tdfs4ds/process_store/process_registration_management.py,sha256=2fFjt4Pmh3An1BUFvRX3xABSlQrlWiEiPQStH3A9Xpk,36130
|
|
28
|
-
tdfs4ds/process_store/process_store_catalog_management.py,sha256=
|
|
21
|
+
tdfs4ds/process_store/process_store_catalog_management.py,sha256=s-2JAaOx-m_hANVWGLCRL-FnoD_dzT_BqQdN74Vxzcw,18770
|
|
29
22
|
tdfs4ds/utils/__init__.py,sha256=-yTMfDLZbQnIRQ64s_bczzT21tDW2A8FZeq9PX5SgFU,168
|
|
30
|
-
tdfs4ds/utils/filter_management.py,sha256=
|
|
23
|
+
tdfs4ds/utils/filter_management.py,sha256=rF8v0fws-ZR9og7x2TBqS5VWpOit1cwgF2xNkb_Hw1w,28635
|
|
31
24
|
tdfs4ds/utils/info.py,sha256=sShnUxXMlvCtQ6xtShDhqdpTr6sMG0dZQhNBFgUENDY,12058
|
|
32
25
|
tdfs4ds/utils/lineage.py,sha256=gy5M42qy5fvdWmlohAY3WPYoqAyp5VakeEmeT1YjrJQ,37839
|
|
33
26
|
tdfs4ds/utils/query_management.py,sha256=kWDeTdsYcbpV5Tyhh-8uLRWvXh16nIdXNIJ97w76aNU,4848
|
|
34
|
-
tdfs4ds/utils/time_management.py,sha256=
|
|
27
|
+
tdfs4ds/utils/time_management.py,sha256=g3EJO7I8ERoZ4X7yq5SyDqSE4O9p0BRcv__QPuAxbGA,32243
|
|
35
28
|
tdfs4ds/utils/visualization.py,sha256=5S528KoKzzkrAdCxfy7ecyqKvAXBoibNvHwz_u5ISMs,23167
|
|
36
|
-
tdfs4ds-0.2.
|
|
37
|
-
tdfs4ds-0.2.
|
|
38
|
-
tdfs4ds-0.2.
|
|
39
|
-
tdfs4ds-0.2.
|
|
29
|
+
tdfs4ds-0.2.5.0.dist-info/METADATA,sha256=yGUNmOxAt89lwPGcSPZRHpnIFE27RfH70CqlyMHrkg0,14325
|
|
30
|
+
tdfs4ds-0.2.5.0.dist-info/WHEEL,sha256=R0nc6qTxuoLk7ShA2_Y-UWkN8ZdfDBG2B6Eqpz2WXbs,91
|
|
31
|
+
tdfs4ds-0.2.5.0.dist-info/top_level.txt,sha256=wMyVkMvnBn8RRt1xBveGQxOpWFijPMPkMiE7G2mi8zo,8
|
|
32
|
+
tdfs4ds-0.2.5.0.dist-info/RECORD,,
|
tdfs/__init__.py
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
__version__ = '0.1.0.0'
|