meerschaum 2.6.17__py3-none-any.whl → 2.7.0rc1__py3-none-any.whl
Sign up to get free protection for your applications and to get access to all the features.
- 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
|