meerschaum 2.6.17__py3-none-any.whl → 2.7.0rc1__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.
- meerschaum/actions/delete.py +65 -69
- meerschaum/actions/install.py +1 -2
- meerschaum/config/_default.py +1 -1
- meerschaum/config/_paths.py +2 -1
- meerschaum/config/_version.py +1 -1
- meerschaum/connectors/api/_pipes.py +4 -3
- meerschaum/connectors/sql/_pipes.py +63 -25
- meerschaum/connectors/sql/_sql.py +6 -1
- meerschaum/connectors/valkey/_pipes.py +12 -1
- meerschaum/core/Pipe/__init__.py +23 -13
- meerschaum/core/Pipe/_attributes.py +19 -0
- meerschaum/core/Pipe/_dtypes.py +1 -1
- meerschaum/core/Pipe/_sync.py +61 -21
- meerschaum/core/Pipe/_verify.py +8 -7
- meerschaum/plugins/_Plugin.py +11 -14
- meerschaum/utils/daemon/Daemon.py +18 -11
- meerschaum/utils/dataframe.py +175 -13
- meerschaum/utils/dtypes/__init__.py +103 -14
- meerschaum/utils/dtypes/sql.py +26 -0
- meerschaum/utils/misc.py +8 -8
- meerschaum/utils/sql.py +64 -11
- meerschaum/utils/venv/_Venv.py +4 -4
- meerschaum/utils/venv/__init__.py +33 -13
- {meerschaum-2.6.17.dist-info → meerschaum-2.7.0rc1.dist-info}/METADATA +1 -1
- {meerschaum-2.6.17.dist-info → meerschaum-2.7.0rc1.dist-info}/RECORD +31 -31
- {meerschaum-2.6.17.dist-info → meerschaum-2.7.0rc1.dist-info}/LICENSE +0 -0
- {meerschaum-2.6.17.dist-info → meerschaum-2.7.0rc1.dist-info}/NOTICE +0 -0
- {meerschaum-2.6.17.dist-info → meerschaum-2.7.0rc1.dist-info}/WHEEL +0 -0
- {meerschaum-2.6.17.dist-info → meerschaum-2.7.0rc1.dist-info}/entry_points.txt +0 -0
- {meerschaum-2.6.17.dist-info → meerschaum-2.7.0rc1.dist-info}/top_level.txt +0 -0
- {meerschaum-2.6.17.dist-info → meerschaum-2.7.0rc1.dist-info}/zip-safe +0 -0
meerschaum/utils/sql.py
CHANGED
@@ -108,24 +108,30 @@ update_queries = {
|
|
108
108
|
{cols_equal_values}
|
109
109
|
""",
|
110
110
|
'mssql': """
|
111
|
+
{with_temp_date_bounds}
|
111
112
|
MERGE {target_table_name} f
|
112
|
-
USING (SELECT
|
113
|
+
USING (SELECT {patch_cols_str} FROM {patch_table_name}) p
|
113
114
|
ON {and_subquery_f}
|
114
115
|
AND {date_bounds_subquery}
|
115
116
|
WHEN MATCHED THEN
|
116
117
|
UPDATE
|
117
118
|
{sets_subquery_none};
|
118
119
|
""",
|
119
|
-
'mssql-upsert':
|
120
|
+
'mssql-upsert': [
|
121
|
+
"{identity_insert_on}",
|
122
|
+
"""
|
123
|
+
{with_temp_date_bounds}
|
120
124
|
MERGE {target_table_name} f
|
121
|
-
USING (SELECT
|
125
|
+
USING (SELECT {patch_cols_str} FROM {patch_table_name}) p
|
122
126
|
ON {and_subquery_f}
|
123
127
|
AND {date_bounds_subquery}
|
124
128
|
{when_matched_update_sets_subquery_none}
|
125
129
|
WHEN NOT MATCHED THEN
|
126
130
|
INSERT ({patch_cols_str})
|
127
131
|
VALUES ({patch_cols_prefixed_str});
|
128
|
-
|
132
|
+
""",
|
133
|
+
"{identity_insert_off}",
|
134
|
+
],
|
129
135
|
'oracle': """
|
130
136
|
MERGE INTO {target_table_name} f
|
131
137
|
USING (SELECT DISTINCT {patch_cols_str} FROM {patch_table_name}) p
|
@@ -1056,7 +1062,7 @@ def get_sqlalchemy_table(
|
|
1056
1062
|
connector.metadata,
|
1057
1063
|
**table_kwargs
|
1058
1064
|
)
|
1059
|
-
except sqlalchemy.exc.NoSuchTableError
|
1065
|
+
except sqlalchemy.exc.NoSuchTableError:
|
1060
1066
|
warn(f"Table '{truncated_table_name}' does not exist in '{connector}'.")
|
1061
1067
|
return None
|
1062
1068
|
return tables[truncated_table_name]
|
@@ -1383,6 +1389,7 @@ def get_update_queries(
|
|
1383
1389
|
datetime_col: Optional[str] = None,
|
1384
1390
|
schema: Optional[str] = None,
|
1385
1391
|
patch_schema: Optional[str] = None,
|
1392
|
+
identity_insert: bool = False,
|
1386
1393
|
debug: bool = False,
|
1387
1394
|
) -> List[str]:
|
1388
1395
|
"""
|
@@ -1420,6 +1427,10 @@ def get_update_queries(
|
|
1420
1427
|
If provided, use this schema when quoting the patch table.
|
1421
1428
|
Defaults to `schema`.
|
1422
1429
|
|
1430
|
+
identity_insert: bool, default False
|
1431
|
+
If `True`, include `SET IDENTITY_INSERT` queries before and after the update queries.
|
1432
|
+
Only applies for MSSQL upserts.
|
1433
|
+
|
1423
1434
|
debug: bool, default False
|
1424
1435
|
Verbosity toggle.
|
1425
1436
|
|
@@ -1554,17 +1565,36 @@ def get_update_queries(
|
|
1554
1565
|
) for c_name, c_type in join_cols_types
|
1555
1566
|
])
|
1556
1567
|
|
1568
|
+
skip_query_val = ""
|
1557
1569
|
target_table_name = sql_item_name(target, flavor, schema)
|
1558
1570
|
patch_table_name = sql_item_name(patch, flavor, patch_schema)
|
1559
1571
|
dt_col_name = sql_item_name(datetime_col, flavor, None) if datetime_col else None
|
1572
|
+
date_bounds_table = patch_table_name if flavor != 'mssql' else '[date_bounds]'
|
1573
|
+
min_dt_col_name = f"MIN({dt_col_name})" if flavor != 'mssql' else '[Min_dt]'
|
1574
|
+
max_dt_col_name = f"MAX({dt_col_name})" if flavor != 'mssql' else '[Max_dt]'
|
1560
1575
|
date_bounds_subquery = (
|
1561
1576
|
f"""
|
1562
|
-
f.{dt_col_name} >= (SELECT
|
1563
|
-
AND f.{dt_col_name} <= (SELECT
|
1577
|
+
f.{dt_col_name} >= (SELECT {min_dt_col_name} FROM {date_bounds_table})
|
1578
|
+
AND f.{dt_col_name} <= (SELECT {max_dt_col_name} FROM {date_bounds_table})
|
1564
1579
|
"""
|
1565
1580
|
if datetime_col
|
1566
1581
|
else "1 = 1"
|
1567
1582
|
)
|
1583
|
+
with_temp_date_bounds = f"""
|
1584
|
+
WITH [date_bounds] AS (
|
1585
|
+
SELECT MIN({dt_col_name}) AS {min_dt_col_name}, MAX({dt_col_name}) AS {max_dt_col_name}
|
1586
|
+
FROM {patch_table_name}
|
1587
|
+
)""" if datetime_col else ""
|
1588
|
+
identity_insert_on = (
|
1589
|
+
f"SET IDENTITY_INSERT {target_table_name} ON"
|
1590
|
+
if identity_insert
|
1591
|
+
else skip_query_val
|
1592
|
+
)
|
1593
|
+
identity_insert_off = (
|
1594
|
+
f"SET IDENTITY_INSERT {target_table_name} OFF"
|
1595
|
+
if identity_insert
|
1596
|
+
else skip_query_val
|
1597
|
+
)
|
1568
1598
|
|
1569
1599
|
### NOTE: MSSQL upserts must exclude the update portion if only upserting indices.
|
1570
1600
|
when_matched_update_sets_subquery_none = "" if not value_cols else (
|
@@ -1585,7 +1615,7 @@ def get_update_queries(
|
|
1585
1615
|
)
|
1586
1616
|
ignore = "IGNORE " if not value_cols else ""
|
1587
1617
|
|
1588
|
-
|
1618
|
+
formatted_queries = [
|
1589
1619
|
base_query.format(
|
1590
1620
|
sets_subquery_none=sets_subquery('', 'p.'),
|
1591
1621
|
sets_subquery_none_excluded=sets_subquery('', 'EXCLUDED.'),
|
@@ -1604,10 +1634,16 @@ def get_update_queries(
|
|
1604
1634
|
cols_equal_values=cols_equal_values,
|
1605
1635
|
on_duplicate_key_update=on_duplicate_key_update,
|
1606
1636
|
ignore=ignore,
|
1637
|
+
with_temp_date_bounds=with_temp_date_bounds,
|
1638
|
+
identity_insert_on=identity_insert_on,
|
1639
|
+
identity_insert_off=identity_insert_off,
|
1607
1640
|
)
|
1608
1641
|
for base_query in base_queries
|
1609
1642
|
]
|
1610
1643
|
|
1644
|
+
### NOTE: Allow for skipping some queries.
|
1645
|
+
return [query for query in formatted_queries if query]
|
1646
|
+
|
1611
1647
|
|
1612
1648
|
def get_null_replacement(typ: str, flavor: str) -> str:
|
1613
1649
|
"""
|
@@ -1857,7 +1893,17 @@ def _get_create_table_query_from_dtypes(
|
|
1857
1893
|
|
1858
1894
|
table_name = sql_item_name(new_table, schema=schema, flavor=flavor)
|
1859
1895
|
primary_key_name = sql_item_name(primary_key, flavor) if primary_key else None
|
1896
|
+
primary_key_constraint_name = (
|
1897
|
+
sql_item_name(f'PK_{new_table}', flavor, None)
|
1898
|
+
if primary_key
|
1899
|
+
else None
|
1900
|
+
)
|
1860
1901
|
datetime_column_name = sql_item_name(datetime_column, flavor) if datetime_column else None
|
1902
|
+
primary_key_clustered = (
|
1903
|
+
"CLUSTERED"
|
1904
|
+
if not datetime_column or datetime_column == primary_key
|
1905
|
+
else "NONCLUSTERED"
|
1906
|
+
)
|
1861
1907
|
query = f"CREATE TABLE {table_name} ("
|
1862
1908
|
if primary_key:
|
1863
1909
|
col_db_type = cols_types[0][1]
|
@@ -1877,6 +1923,8 @@ def _get_create_table_query_from_dtypes(
|
|
1877
1923
|
query += f"\n {col_name} {col_db_type} {auto_increment_str} PRIMARY KEY,"
|
1878
1924
|
elif flavor == 'timescaledb' and datetime_column and datetime_column != primary_key:
|
1879
1925
|
query += f"\n {col_name} {col_db_type}{auto_increment_str} NOT NULL,"
|
1926
|
+
elif flavor == 'mssql':
|
1927
|
+
query += f"\n {col_name} {col_db_type}{auto_increment_str} NOT NULL,"
|
1880
1928
|
else:
|
1881
1929
|
query += f"\n {col_name} {col_db_type} PRIMARY KEY{auto_increment_str} NOT NULL,"
|
1882
1930
|
|
@@ -1892,6 +1940,10 @@ def _get_create_table_query_from_dtypes(
|
|
1892
1940
|
and datetime_column != primary_key
|
1893
1941
|
):
|
1894
1942
|
query += f"\n PRIMARY KEY({datetime_column_name}, {primary_key_name}),"
|
1943
|
+
|
1944
|
+
if flavor == 'mssql' and primary_key:
|
1945
|
+
query += f"\n CONSTRAINT {primary_key_constraint_name} PRIMARY KEY {primary_key_clustered} ({primary_key_name}),"
|
1946
|
+
|
1895
1947
|
query = query[:-1]
|
1896
1948
|
query += "\n)"
|
1897
1949
|
|
@@ -1917,7 +1969,7 @@ def _get_create_table_query_from_cte(
|
|
1917
1969
|
create_cte_name = sql_item_name(create_cte, flavor, None)
|
1918
1970
|
new_table_name = sql_item_name(new_table, flavor, schema)
|
1919
1971
|
primary_key_constraint_name = (
|
1920
|
-
sql_item_name(f'
|
1972
|
+
sql_item_name(f'PK_{new_table}', flavor, None)
|
1921
1973
|
if primary_key
|
1922
1974
|
else None
|
1923
1975
|
)
|
@@ -1926,6 +1978,7 @@ def _get_create_table_query_from_cte(
|
|
1926
1978
|
if primary_key
|
1927
1979
|
else None
|
1928
1980
|
)
|
1981
|
+
primary_key_clustered = "CLUSTERED" if not datetime_column else "NONCLUSTERED"
|
1929
1982
|
datetime_column_name = (
|
1930
1983
|
sql_item_name(datetime_column, flavor)
|
1931
1984
|
if datetime_column
|
@@ -1933,7 +1986,7 @@ def _get_create_table_query_from_cte(
|
|
1933
1986
|
)
|
1934
1987
|
if flavor in ('mssql',):
|
1935
1988
|
query = query.lstrip()
|
1936
|
-
if
|
1989
|
+
if query.lower().startswith('with '):
|
1937
1990
|
final_select_ix = query.lower().rfind('select')
|
1938
1991
|
create_table_query = (
|
1939
1992
|
query[:final_select_ix].rstrip() + ',\n'
|
@@ -1951,7 +2004,7 @@ def _get_create_table_query_from_cte(
|
|
1951
2004
|
|
1952
2005
|
alter_type_query = f"""
|
1953
2006
|
ALTER TABLE {new_table_name}
|
1954
|
-
ADD CONSTRAINT {primary_key_constraint_name} PRIMARY KEY ({primary_key_name})
|
2007
|
+
ADD CONSTRAINT {primary_key_constraint_name} PRIMARY KEY {primary_key_clustered} ({primary_key_name})
|
1955
2008
|
"""
|
1956
2009
|
elif flavor in (None,):
|
1957
2010
|
create_table_query = f"""
|
meerschaum/utils/venv/_Venv.py
CHANGED
@@ -34,10 +34,10 @@ class Venv:
|
|
34
34
|
"""
|
35
35
|
|
36
36
|
def __init__(
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
37
|
+
self,
|
38
|
+
venv: Union[str, 'meerschaum.plugins.Plugin', None] = 'mrsm',
|
39
|
+
debug: bool = False,
|
40
|
+
) -> None:
|
41
41
|
from meerschaum.utils.venv import activate_venv, deactivate_venv, active_venvs
|
42
42
|
### For some weird threading issue,
|
43
43
|
### we can't use `isinstance` here.
|
@@ -65,10 +65,9 @@ def activate_venv(
|
|
65
65
|
if active_venvs_order and active_venvs_order[0] == venv:
|
66
66
|
if not force:
|
67
67
|
return True
|
68
|
-
import sys
|
68
|
+
import sys
|
69
|
+
import os
|
69
70
|
from meerschaum.config._paths import VIRTENV_RESOURCES_PATH
|
70
|
-
if debug:
|
71
|
-
from meerschaum.utils.debug import dprint
|
72
71
|
if venv is not None:
|
73
72
|
init_venv(venv=venv, debug=debug)
|
74
73
|
with LOCKS['active_venvs']:
|
@@ -80,12 +79,18 @@ def activate_venv(
|
|
80
79
|
else:
|
81
80
|
threads_active_venvs[thread_id][venv] += 1
|
82
81
|
|
83
|
-
|
82
|
+
target_path = venv_target_path(venv, debug=debug, allow_nonexistent=True)
|
83
|
+
if not target_path.exists():
|
84
|
+
init_venv(venv=venv, force=True, debug=debug)
|
85
|
+
if not target_path.exists():
|
86
|
+
raise EnvironmentError(f"Could not activate virtual environment '{venv}'.")
|
87
|
+
target = target_path.as_posix()
|
88
|
+
|
84
89
|
if venv in active_venvs_order:
|
85
90
|
sys.path.remove(target)
|
86
91
|
try:
|
87
92
|
active_venvs_order.remove(venv)
|
88
|
-
except Exception
|
93
|
+
except Exception:
|
89
94
|
pass
|
90
95
|
if venv is not None:
|
91
96
|
sys.path.insert(0, target)
|
@@ -96,7 +101,7 @@ def activate_venv(
|
|
96
101
|
sys.path.insert(0, target)
|
97
102
|
try:
|
98
103
|
active_venvs_order.insert(0, venv)
|
99
|
-
except Exception
|
104
|
+
except Exception:
|
100
105
|
pass
|
101
106
|
|
102
107
|
return True
|
@@ -245,7 +250,7 @@ def verify_venv(
|
|
245
250
|
print(f"Unable to remove symlink {current_python_in_venv_path}:\n{e}")
|
246
251
|
try:
|
247
252
|
make_symlink(current_python_in_sys_path, current_python_in_venv_path)
|
248
|
-
except Exception
|
253
|
+
except Exception:
|
249
254
|
print(
|
250
255
|
f"Unable to create symlink {current_python_in_venv_path} "
|
251
256
|
+ f"to {current_python_in_sys_path}."
|
@@ -302,7 +307,7 @@ def verify_venv(
|
|
302
307
|
if not real_path.exists():
|
303
308
|
try:
|
304
309
|
python_path.unlink()
|
305
|
-
except Exception
|
310
|
+
except Exception:
|
306
311
|
pass
|
307
312
|
init_venv(venv, verify=False, force=True, debug=debug)
|
308
313
|
if not python_path.exists():
|
@@ -313,7 +318,7 @@ def verify_venv(
|
|
313
318
|
|
314
319
|
try:
|
315
320
|
python_path.unlink()
|
316
|
-
except Exception
|
321
|
+
except Exception:
|
317
322
|
pass
|
318
323
|
success, msg = make_symlink(real_path, python_path)
|
319
324
|
if not success:
|
@@ -366,9 +371,10 @@ def init_venv(
|
|
366
371
|
from contextlib import redirect_stdout, redirect_stderr
|
367
372
|
import sys, platform, os, pathlib, shutil
|
368
373
|
from meerschaum.config.static import STATIC_CONFIG
|
369
|
-
from meerschaum.config._paths import VIRTENV_RESOURCES_PATH
|
374
|
+
from meerschaum.config._paths import VIRTENV_RESOURCES_PATH, VENVS_CACHE_RESOURCES_PATH
|
370
375
|
from meerschaum.utils.packages import is_uv_enabled
|
371
376
|
venv_path = VIRTENV_RESOURCES_PATH / venv
|
377
|
+
vtp = venv_target_path(venv=venv, allow_nonexistent=True, debug=debug)
|
372
378
|
docker_home_venv_path = pathlib.Path('/home/meerschaum/venvs/mrsm')
|
373
379
|
|
374
380
|
runtime_env_var = STATIC_CONFIG['environment']['runtime']
|
@@ -397,6 +403,11 @@ def init_venv(
|
|
397
403
|
virtualenv = None
|
398
404
|
|
399
405
|
_venv_success = False
|
406
|
+
temp_vtp = VENVS_CACHE_RESOURCES_PATH / str(venv)
|
407
|
+
rename_vtp = vtp.exists()
|
408
|
+
|
409
|
+
if rename_vtp:
|
410
|
+
vtp.rename(temp_vtp)
|
400
411
|
|
401
412
|
if uv is not None:
|
402
413
|
_venv_success = run_python_package(
|
@@ -431,6 +442,8 @@ def init_venv(
|
|
431
442
|
"Failed to import `venv` or `virtualenv`! "
|
432
443
|
+ "Please install `virtualenv` via pip then restart Meerschaum."
|
433
444
|
)
|
445
|
+
if rename_vtp and temp_vtp.exists():
|
446
|
+
temp_vtp.rename(vtp)
|
434
447
|
return False
|
435
448
|
|
436
449
|
tried_virtualenv = True
|
@@ -448,7 +461,7 @@ def init_venv(
|
|
448
461
|
if bin_path.exists():
|
449
462
|
try:
|
450
463
|
shutil.rmtree(bin_path)
|
451
|
-
except Exception
|
464
|
+
except Exception:
|
452
465
|
import traceback
|
453
466
|
traceback.print_exc()
|
454
467
|
virtualenv.cli_run([venv_path.as_posix()])
|
@@ -464,13 +477,19 @@ def init_venv(
|
|
464
477
|
# shutil.move(local_bin_path, bin_path)
|
465
478
|
shutil.rmtree(local_bin_path)
|
466
479
|
|
467
|
-
except Exception
|
480
|
+
except Exception:
|
468
481
|
import traceback
|
469
482
|
traceback.print_exc()
|
483
|
+
if rename_vtp and temp_vtp.exists():
|
484
|
+
temp_vtp.rename(vtp)
|
470
485
|
return False
|
471
486
|
if verify:
|
472
487
|
verify_venv(venv, debug=debug)
|
473
488
|
verified_venvs.add(venv)
|
489
|
+
|
490
|
+
if rename_vtp and temp_vtp.exists():
|
491
|
+
temp_vtp.rename(vtp)
|
492
|
+
|
474
493
|
return True
|
475
494
|
|
476
495
|
|
@@ -479,7 +498,8 @@ def venv_executable(venv: Optional[str] = 'mrsm') -> str:
|
|
479
498
|
The Python interpreter executable for a given virtual environment.
|
480
499
|
"""
|
481
500
|
from meerschaum.config._paths import VIRTENV_RESOURCES_PATH
|
482
|
-
import sys
|
501
|
+
import sys
|
502
|
+
import platform
|
483
503
|
return (
|
484
504
|
sys.executable if venv is None
|
485
505
|
else str(
|
@@ -28,10 +28,10 @@ meerschaum/actions/bootstrap.py,sha256=08o3PchrJ_Rv8IP30ZBH1Ovk-b8qFBGPedCjF7jRz
|
|
28
28
|
meerschaum/actions/clear.py,sha256=tMacHFv8btWpkNnXHtKDOMiCDNhGb5S6CJhCDIrrNDk,4914
|
29
29
|
meerschaum/actions/copy.py,sha256=NHoC9cHJGgoox8L8B0afbu8lAxEh_MKa_pNeVunZsl0,6824
|
30
30
|
meerschaum/actions/deduplicate.py,sha256=puYyxeFYEUy1Sd2IOcZB2e6MrNxAZl2bTLmNzFDkCiw,1167
|
31
|
-
meerschaum/actions/delete.py,sha256=
|
31
|
+
meerschaum/actions/delete.py,sha256=H5oP0nE7qIWnFvkuFhZQZQYBVC0IbUevpaQ_2YQKXRA,18559
|
32
32
|
meerschaum/actions/drop.py,sha256=Hd5h4rrWd7qL2rTqglsTonUsEoH7qQlsfqNFSHGeqr0,2453
|
33
33
|
meerschaum/actions/edit.py,sha256=SN-SnfFkhX0-pymAEofi9NDnq4hhia6gkKqr-zTn4I8,16222
|
34
|
-
meerschaum/actions/install.py,sha256=
|
34
|
+
meerschaum/actions/install.py,sha256=P_M2dnn3sVC2mAn5hwvu4VHWkoh4r9TBUzNcU_Kukpc,7437
|
35
35
|
meerschaum/actions/login.py,sha256=fNgsgkrFCn9wBQJY50SQhz2PwsN_TvEYYHnXK3JG4ig,4206
|
36
36
|
meerschaum/actions/os.py,sha256=dtoppoBhLzW3rLNF0SFovEfNxA4WJWt_9WrOGlS5KbA,2251
|
37
37
|
meerschaum/actions/pause.py,sha256=WI4dQFfjQ6ObWKUzwQ5FrtYPDyEcnxWwval8cSIzzJw,4221
|
@@ -132,18 +132,18 @@ meerschaum/api/routes/_webterm.py,sha256=gow_xCsojGI37ZZDVfv2gdM18r_H2b2MR0ovFuG
|
|
132
132
|
meerschaum/api/tables/__init__.py,sha256=e2aNC0CdlWICTUMx1i9RauF8Pm426J0RZJbsJWv4SWo,482
|
133
133
|
meerschaum/config/__init__.py,sha256=5ZBq71P9t3nb74r5CGvMfNuauPscfegBX-nkaAUi5C4,11541
|
134
134
|
meerschaum/config/_dash.py,sha256=BJHl4xMrQB-YHUEU7ldEW8q_nOPoIRSOqLrfGElc6Dw,187
|
135
|
-
meerschaum/config/_default.py,sha256=
|
135
|
+
meerschaum/config/_default.py,sha256=3HhlLLceFbf7zn3sciIr0DWGynuHpzRmkmXeTyT9J9s,5652
|
136
136
|
meerschaum/config/_edit.py,sha256=M9yX_SDD24gV5kWITZpy7p9AWTizJsIAGWAs3WZx-Ws,9087
|
137
137
|
meerschaum/config/_environment.py,sha256=Vv4DLDfc2vKLbCLsMvkQDj77K4kEvHKEBmUBo-wCrgo,4419
|
138
138
|
meerschaum/config/_formatting.py,sha256=OMuqS1EWOsj_34wSs2tOqGIWci3bTMIZ5l-uelZgsIM,6672
|
139
139
|
meerschaum/config/_jobs.py,sha256=gS_4mMGdmVP7WB4V5Sz8kYP0HmhWcMY2jSWGR7jX6cw,1279
|
140
140
|
meerschaum/config/_patch.py,sha256=21N30q1ANmWMDQ-2RUjpMx7KafWfPQ3lKx9rrMqg1s4,1526
|
141
|
-
meerschaum/config/_paths.py,sha256=
|
141
|
+
meerschaum/config/_paths.py,sha256=lpzIaWfu5SaEWGg_rf4Wg8ipFUSW2tQktDMThFqfKMg,9834
|
142
142
|
meerschaum/config/_preprocess.py,sha256=-AEA8m_--KivZwTQ1sWN6LTn5sio_fUr2XZ51BO6wLs,1220
|
143
143
|
meerschaum/config/_read_config.py,sha256=RLC3HHi_1ndj7ITVDKLD9_uULY3caGRwSz3ATYE-ixA,15014
|
144
144
|
meerschaum/config/_shell.py,sha256=46_m49Txc5q1rGfCgO49ca48BODx45DQJi8D0zz1R18,4245
|
145
145
|
meerschaum/config/_sync.py,sha256=jHcWRkxd82_BgX8Xo8agsWvf7BSbv3qHLWmYl6ehp_0,4242
|
146
|
-
meerschaum/config/_version.py,sha256=
|
146
|
+
meerschaum/config/_version.py,sha256=36evUT7Ft3s-1kehnNzPZKF86ySwbOhGmHeKhfc9yOg,74
|
147
147
|
meerschaum/config/paths.py,sha256=JjibeGN3YAdSNceRwsd42aNmeUrIgM6ndzC8qZAmNI0,621
|
148
148
|
meerschaum/config/resources/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
149
149
|
meerschaum/config/stack/__init__.py,sha256=2UukC0Lmk-aVL1o1qXzumqmuIrw3vu9fD7iCuz4XD4I,10544
|
@@ -163,7 +163,7 @@ meerschaum/connectors/api/_fetch.py,sha256=Khq9AFr1nk8Dsmcedb77aWhAuHw0JGgVeahDG
|
|
163
163
|
meerschaum/connectors/api/_jobs.py,sha256=N5lpHFGG10jlVgaJeWAOTuLBQw3AdgjXsEPpp1YwZQE,11270
|
164
164
|
meerschaum/connectors/api/_login.py,sha256=5GsD-B214vr5EYfM3XrTUs1sTFApxZA-9dNxq8oNSyg,2050
|
165
165
|
meerschaum/connectors/api/_misc.py,sha256=OZRZBYOokKIEjmQaR8jUYgu6ZRn9VzXBChzR8CfDv_w,1092
|
166
|
-
meerschaum/connectors/api/_pipes.py,sha256=
|
166
|
+
meerschaum/connectors/api/_pipes.py,sha256=6yeNYl6scQ01ABRpCWwnEc3mTOhbJTOScooy98rjXtc,21397
|
167
167
|
meerschaum/connectors/api/_plugins.py,sha256=z04tPjfZZWwa7T60mogZH3X3wDmeLdnoN5Oh8m_YsU8,5217
|
168
168
|
meerschaum/connectors/api/_request.py,sha256=Wc4Y70t0VxEj3_ch5fAeeoSAeFMuRnyNLOV-aUFInjY,6996
|
169
169
|
meerschaum/connectors/api/_uri.py,sha256=HWxqGx4R1cHZ3ywy9Ro9ePbFxxusw4RLaC3hpGt9Z6I,1469
|
@@ -176,9 +176,9 @@ meerschaum/connectors/sql/_cli.py,sha256=1SgnWeMIAihoxp4FzbNrcq1npXf0dSOQnCntpU9
|
|
176
176
|
meerschaum/connectors/sql/_create_engine.py,sha256=uFpDeTu9v1Duw6EZ8opeOIU5Z9aPgWAbaequV7vbLW0,10449
|
177
177
|
meerschaum/connectors/sql/_fetch.py,sha256=UIBAvMxassP-ofNxk_FoG-ukHzEac4jyu4lA0SXHcBg,13140
|
178
178
|
meerschaum/connectors/sql/_instance.py,sha256=3KJI3ImwWAJkUfdZIrSL24pcW6Nic8wo5IUeGth9HP4,6459
|
179
|
-
meerschaum/connectors/sql/_pipes.py,sha256=
|
179
|
+
meerschaum/connectors/sql/_pipes.py,sha256=OhozpYLNU3vkm3NtrfW1jUxuAmXdBglzKcab_ohToNw,118529
|
180
180
|
meerschaum/connectors/sql/_plugins.py,sha256=wbxcNxqTtjfDsxPvdVGTllasYf6NHHzODaQ72hEUSBQ,8135
|
181
|
-
meerschaum/connectors/sql/_sql.py,sha256=
|
181
|
+
meerschaum/connectors/sql/_sql.py,sha256=rZcALX7Ei1rwqmm5mTzdkcTZsmfgDT-6cQkraSapUZA,37655
|
182
182
|
meerschaum/connectors/sql/_uri.py,sha256=0BrhQtqQdzg9mR04gWBZINs_BbPFtSlTECXT_TCUwik,3460
|
183
183
|
meerschaum/connectors/sql/_users.py,sha256=FJjYeJGhr-TDHziNc6p_5mupGRtGjezKPIYgHFEVSnY,9956
|
184
184
|
meerschaum/connectors/sql/tools.py,sha256=jz8huOaRCwGlYdtGfAqAh7SoK8uydYBrasKQba9FT38,187
|
@@ -187,12 +187,12 @@ meerschaum/connectors/sql/tables/types.py,sha256=Jc_MTHIBM-KHpQt__Lckp39CeOo7tGO
|
|
187
187
|
meerschaum/connectors/valkey/_ValkeyConnector.py,sha256=xHld4OCnt0SXmAWH8Yintb3931F-MEgXfWerhTthsXc,15849
|
188
188
|
meerschaum/connectors/valkey/__init__.py,sha256=jkVutsygQCvGPLN17cP6wHAjHajxVycnQJbm2eVMuY0,187
|
189
189
|
meerschaum/connectors/valkey/_fetch.py,sha256=MjeE0h3YI4M3LCzy7axQAc_fX_l82vUqX4WXcYoppxE,1920
|
190
|
-
meerschaum/connectors/valkey/_pipes.py,sha256=
|
190
|
+
meerschaum/connectors/valkey/_pipes.py,sha256=sjjO1vehNCkN_2bsqQKy81WWWrOg8a8ElupqzCjZ_7c,24594
|
191
191
|
meerschaum/connectors/valkey/_plugins.py,sha256=ZqiEW4XZCOpw4G8DUK2IKY6Qrph4mYfTjgXWimgakYY,6267
|
192
192
|
meerschaum/connectors/valkey/_users.py,sha256=AS1vLarrkDA9yPK644GWwRiQiTZVa9x3nlLpyntq40g,7730
|
193
193
|
meerschaum/core/__init__.py,sha256=tjASW10n9uLV6bYhcwP4rggh-ESXSJzgxpSBbVsuISs,251
|
194
|
-
meerschaum/core/Pipe/__init__.py,sha256=
|
195
|
-
meerschaum/core/Pipe/_attributes.py,sha256=
|
194
|
+
meerschaum/core/Pipe/__init__.py,sha256=NqytRbY1QQM_xDcBDqhcpcVPuEdDRWi26Ou3KuoAseM,18902
|
195
|
+
meerschaum/core/Pipe/_attributes.py,sha256=wgtCf2sSC9LFJxBJOPotPgXDATRe9EjhEEVacMdvJ4c,22285
|
196
196
|
meerschaum/core/Pipe/_bootstrap.py,sha256=gTNGh5e2LmTMrgIpHqrVaL60uPKWCphhsuz8j-lJ2HI,7348
|
197
197
|
meerschaum/core/Pipe/_clear.py,sha256=LghXabgyyc1tD7FNQrh9ExT71ipcg2poM9FDA3k9e4M,2230
|
198
198
|
meerschaum/core/Pipe/_copy.py,sha256=YDclAapf_spm9phpFr4-CALyYyw7nUsyKyiaLM1cnm4,2965
|
@@ -200,13 +200,13 @@ meerschaum/core/Pipe/_data.py,sha256=HOvKlpD9NiBg599mSH1lzUQ_2g8-PsnMbGzMTOJx81E
|
|
200
200
|
meerschaum/core/Pipe/_deduplicate.py,sha256=xthUdsDxGO2t3m0XGDm9K3F6dpaZoemtjNi8gyKm0e0,10177
|
201
201
|
meerschaum/core/Pipe/_delete.py,sha256=1geNp9BgrocXP1gt76dMbnlJWKYFMuSNqPFA4K4-hXE,2118
|
202
202
|
meerschaum/core/Pipe/_drop.py,sha256=qj5L0obDh2_dKAg7LD3WLI3_L0Q5YECTfTmPc8zZUxI,1135
|
203
|
-
meerschaum/core/Pipe/_dtypes.py,sha256=
|
203
|
+
meerschaum/core/Pipe/_dtypes.py,sha256=foFDKPTMZWh3vOemr7wDw16XMT-yj3xcFH64JojG7-E,4167
|
204
204
|
meerschaum/core/Pipe/_edit.py,sha256=HrKWe9vhqKaNOjOcJzW5BNbaUBPIbgNAhJEK8OMsy7c,8416
|
205
205
|
meerschaum/core/Pipe/_fetch.py,sha256=Q_LncNi1nv-YwvRPbh1QK0hf6hflL7Hn9v9lT3oQgF4,5451
|
206
206
|
meerschaum/core/Pipe/_register.py,sha256=Sd5xaAW8H7uLTIoommcKb-6kHPRuHJLWNSbPnt2UbvA,2240
|
207
207
|
meerschaum/core/Pipe/_show.py,sha256=nG50y8eBT9TVuKkRgAKtNDNIxysJvMNxfu__lkL1F9k,1352
|
208
|
-
meerschaum/core/Pipe/_sync.py,sha256=
|
209
|
-
meerschaum/core/Pipe/_verify.py,sha256=
|
208
|
+
meerschaum/core/Pipe/_sync.py,sha256=_yTM6S1F8j-HZN67XfsSNfOafVVM23TPUlvT-qQDmlA,36512
|
209
|
+
meerschaum/core/Pipe/_verify.py,sha256=916xwOECAmefemd3HTUGh8_Rk6uYF4t2f71ez1-s6eY,14194
|
210
210
|
meerschaum/core/Plugin/__init__.py,sha256=UXg64EvJPgI1PCxkY_KM02-ZmBm4FZpLPIQR_uSJJDc,137
|
211
211
|
meerschaum/core/User/_User.py,sha256=qbI0GIkr3G0PI4d9S49uatbJQ2kH_-z5-GoVJ0fuEtA,6624
|
212
212
|
meerschaum/core/User/__init__.py,sha256=9qNy-Gobui4x6GiaE8U7-WOggsdniOM3_wegLN3SVKs,988
|
@@ -214,33 +214,33 @@ meerschaum/jobs/_Executor.py,sha256=qM62BhFTM4tyJ7p90KOM0y3qyeRY9k3ZV_aTDJMHnO8,
|
|
214
214
|
meerschaum/jobs/_Job.py,sha256=BQlgjF2jKhdSqp0_yH2woX4YOPf4bODC4D1abobbn64,32093
|
215
215
|
meerschaum/jobs/__init__.py,sha256=q0f_2zWw91sAyafP50IgMM06abe-BIYSR_SCWmI4W3E,12177
|
216
216
|
meerschaum/jobs/systemd.py,sha256=Rq-tsDPslG17ZhpKMrVJ5r8Z0IPr6DEc9APObfIoXCg,24614
|
217
|
-
meerschaum/plugins/_Plugin.py,sha256=
|
217
|
+
meerschaum/plugins/_Plugin.py,sha256=bIo4HX8TTWIcwIHROwMt4VK6OoEUhY_3Qc8q-2dp-ZA,33895
|
218
218
|
meerschaum/plugins/__init__.py,sha256=6krcqaMKyzuVqesXMqEL0XEy2SJQ4xfNt2-oI_fJ6v0,26278
|
219
219
|
meerschaum/plugins/bootstrap.py,sha256=VwjpZAuYdqPJW0YoVgAoM_taHkdQHqP902-8T7OWWCI,11339
|
220
220
|
meerschaum/utils/__init__.py,sha256=QrK1K9hIbPCRCM5k2nZGFqGnrqhA0Eh-iSmCU7FG6Cs,612
|
221
221
|
meerschaum/utils/_get_pipes.py,sha256=tu4xKPoDn79Dz2kWM13cXTP4DSCkn-3G9M8KiLftopw,11073
|
222
|
-
meerschaum/utils/dataframe.py,sha256=
|
222
|
+
meerschaum/utils/dataframe.py,sha256=wt662O3ZfWrRHrz0CMv7Af36ELNY0dIn6TzRIOLf0SA,47753
|
223
223
|
meerschaum/utils/debug.py,sha256=GyIzJmunkoPnOcZNYVQdT4Sgd-aOb5MI2VbIgATOjIQ,3695
|
224
224
|
meerschaum/utils/interactive.py,sha256=t-6jWozXSqL7lYGDHuwiOjTgr-UKhdcg61q_eR5mikI,3196
|
225
|
-
meerschaum/utils/misc.py,sha256=
|
225
|
+
meerschaum/utils/misc.py,sha256=RW_WmNtAieP828OtJhr4dHKTQI2nxc4kTwn-Q5N3YBw,47055
|
226
226
|
meerschaum/utils/networking.py,sha256=Sr_eYUGW8_UV9-k9LqRFf7xLtbUcsDucODyLCRsFRUc,1006
|
227
227
|
meerschaum/utils/pool.py,sha256=vkE42af4fjrTEJTxf6Ek3xGucm1MtEkpsSEiaVzNKHs,2655
|
228
228
|
meerschaum/utils/process.py,sha256=9O8PPPJjY9Q5W2f39I3B3lFU6TlSiRiI3bgrzdOOyOw,7843
|
229
229
|
meerschaum/utils/prompt.py,sha256=SOpAvHcVFuk7-J4cqK_LkahWo6oJmLobeHg5fwM_9aY,18949
|
230
230
|
meerschaum/utils/schedule.py,sha256=bUsaCO9CGn2vJO5UvoISScHDDGIiMdCPHxpTFmu7vwE,11531
|
231
|
-
meerschaum/utils/sql.py,sha256=
|
231
|
+
meerschaum/utils/sql.py,sha256=Q8MSQamoXZn-FQZjFZvaGsPZXWz69veta50OiOw07M0,73704
|
232
232
|
meerschaum/utils/threading.py,sha256=awjbVL_QR6G-o_9Qk85utac9cSdqkiC8tQSdERCdrG8,2814
|
233
233
|
meerschaum/utils/typing.py,sha256=U3MC347sh1umpa3Xr1k71eADyDmk4LB6TnVCpq8dVzI,2830
|
234
234
|
meerschaum/utils/warnings.py,sha256=n-phr3BftNNgyPnvnXC_VMSjtCvjiCZ-ewmVfcROhkc,6611
|
235
235
|
meerschaum/utils/yaml.py,sha256=PoC1du0pn2hLwTHwL-zuOf_EBWZSbCGOz-P-AZ4BWN0,3901
|
236
|
-
meerschaum/utils/daemon/Daemon.py,sha256=
|
236
|
+
meerschaum/utils/daemon/Daemon.py,sha256=V8DRjjRYezKcSb6jrRqjsHcGAOCth16rxMO91VtfIBc,42597
|
237
237
|
meerschaum/utils/daemon/FileDescriptorInterceptor.py,sha256=MJKMO0Syf3d8yWUs6xXcQzg8Ptsuvh2aCRRoglOjusA,5257
|
238
238
|
meerschaum/utils/daemon/RotatingFile.py,sha256=ePm_svjwyFDWh6V1k-bp1RHXCSWlyxDtlFu4SU4XvPU,24369
|
239
239
|
meerschaum/utils/daemon/StdinFile.py,sha256=J6tyUReM8NEp3bBQAxMfe8mjJG5mWi6CzHN4x86VQBI,3237
|
240
240
|
meerschaum/utils/daemon/__init__.py,sha256=o9jWb4lRTIyny4EPt7fPXFgV_vIf1mUofsTwoE1ZecA,8751
|
241
241
|
meerschaum/utils/daemon/_names.py,sha256=d2ZwTxBoTAqXZkCfZ5LuX2XrkQmLNUq1OTlUqfoH5dA,4515
|
242
|
-
meerschaum/utils/dtypes/__init__.py,sha256=
|
243
|
-
meerschaum/utils/dtypes/sql.py,sha256=
|
242
|
+
meerschaum/utils/dtypes/__init__.py,sha256=mXDTiT2T2QvI2g15i8TvVTmkNfgWG9-gnYOB7pcuxtc,10748
|
243
|
+
meerschaum/utils/dtypes/sql.py,sha256=RXjNCDSrC116aSYs0W5EImS1hXn6RSdpUk0aSAf_O0k,19434
|
244
244
|
meerschaum/utils/formatting/__init__.py,sha256=gN9UYYT68CQ-sQiqYaQyB64JUJkaaZ7pALDnTcaLUsY,16041
|
245
245
|
meerschaum/utils/formatting/_jobs.py,sha256=izsqPJhTtUkXUUtWnbXtReYsUYwulXtci3pBj72Ne64,6637
|
246
246
|
meerschaum/utils/formatting/_pipes.py,sha256=840O5rg2aHhQoraCDOh2ZtBo43_W2W6R60yYufEoXp8,19494
|
@@ -249,13 +249,13 @@ meerschaum/utils/formatting/_shell.py,sha256=XH7VFLteNv7NGtWhJl7FdIGt80sKeTiDoJo
|
|
249
249
|
meerschaum/utils/packages/__init__.py,sha256=Op93VJkAX3OL4H-js_p3dAaa_PT82jvjCna27aHOsUk,64199
|
250
250
|
meerschaum/utils/packages/_packages.py,sha256=ykannoLv2Fm4iwZwiIlNAGZvt654cMJhjXr1VJPoEDo,8867
|
251
251
|
meerschaum/utils/packages/lazy_loader.py,sha256=VHnph3VozH29R4JnSSBfwtA5WKZYZQFT_GeQSShCnuc,2540
|
252
|
-
meerschaum/utils/venv/_Venv.py,sha256=
|
253
|
-
meerschaum/utils/venv/__init__.py,sha256=
|
254
|
-
meerschaum-2.
|
255
|
-
meerschaum-2.
|
256
|
-
meerschaum-2.
|
257
|
-
meerschaum-2.
|
258
|
-
meerschaum-2.
|
259
|
-
meerschaum-2.
|
260
|
-
meerschaum-2.
|
261
|
-
meerschaum-2.
|
252
|
+
meerschaum/utils/venv/_Venv.py,sha256=QsnDGEE_YBqXIq53NTWi2TANA1FbkqJBl_xQi9jQP_U,3537
|
253
|
+
meerschaum/utils/venv/__init__.py,sha256=6Zxswa8kEXUVN9m4Fw0DhvqKEtzlBMVyf_2k3Y-M4Oo,25275
|
254
|
+
meerschaum-2.7.0rc1.dist-info/LICENSE,sha256=jG2zQEdRNt88EgHUWPpXVWmOrOduUQRx7MnYV9YIPaw,11359
|
255
|
+
meerschaum-2.7.0rc1.dist-info/METADATA,sha256=2NFIcN6bVYF-FVZcRFrZbBM0eK5N6rywkhh0ekmrY0A,24227
|
256
|
+
meerschaum-2.7.0rc1.dist-info/NOTICE,sha256=OTA9Fcthjf5BRvWDDIcBC_xfLpeDV-RPZh3M-HQBRtQ,114
|
257
|
+
meerschaum-2.7.0rc1.dist-info/WHEEL,sha256=PZUExdf71Ui_so67QXpySuHtCi3-J3wvF4ORK6k_S8U,91
|
258
|
+
meerschaum-2.7.0rc1.dist-info/entry_points.txt,sha256=5YBVzibw-0rNA_1VjB16z5GABsOGf-CDhW4yqH8C7Gc,88
|
259
|
+
meerschaum-2.7.0rc1.dist-info/top_level.txt,sha256=bNoSiDj0El6buocix-FRoAtJOeq1qOF5rRm2u9i7Q6A,11
|
260
|
+
meerschaum-2.7.0rc1.dist-info/zip-safe,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
|
261
|
+
meerschaum-2.7.0rc1.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|