meerschaum 2.7.6__py3-none-any.whl → 2.7.8__py3-none-any.whl
Sign up to get free protection for your applications and to get access to all the features.
- meerschaum/actions/copy.py +1 -0
- meerschaum/actions/drop.py +100 -22
- meerschaum/actions/index.py +71 -0
- meerschaum/actions/register.py +8 -12
- meerschaum/actions/sql.py +1 -1
- meerschaum/api/routes/_pipes.py +18 -0
- meerschaum/api/routes/_plugins.py +1 -1
- meerschaum/api/routes/_users.py +62 -61
- meerschaum/config/_version.py +1 -1
- meerschaum/connectors/api/_pipes.py +20 -0
- meerschaum/connectors/sql/_SQLConnector.py +8 -12
- meerschaum/connectors/sql/_create_engine.py +1 -1
- meerschaum/connectors/sql/_fetch.py +9 -39
- meerschaum/connectors/sql/_instance.py +3 -3
- meerschaum/connectors/sql/_pipes.py +262 -70
- meerschaum/connectors/sql/_plugins.py +11 -16
- meerschaum/connectors/sql/_sql.py +60 -39
- meerschaum/connectors/sql/_uri.py +9 -9
- meerschaum/connectors/sql/_users.py +10 -12
- meerschaum/connectors/sql/tables/__init__.py +13 -14
- meerschaum/connectors/valkey/_ValkeyConnector.py +2 -2
- meerschaum/core/Pipe/__init__.py +12 -2
- meerschaum/core/Pipe/_attributes.py +32 -38
- meerschaum/core/Pipe/_drop.py +73 -2
- meerschaum/core/Pipe/_fetch.py +4 -0
- meerschaum/core/Pipe/_index.py +68 -0
- meerschaum/core/Pipe/_sync.py +16 -9
- meerschaum/utils/daemon/Daemon.py +9 -2
- meerschaum/utils/daemon/RotatingFile.py +3 -3
- meerschaum/utils/dataframe.py +42 -12
- meerschaum/utils/dtypes/__init__.py +144 -24
- meerschaum/utils/dtypes/sql.py +52 -9
- meerschaum/utils/formatting/__init__.py +2 -2
- meerschaum/utils/formatting/_pprint.py +12 -11
- meerschaum/utils/misc.py +16 -18
- meerschaum/utils/prompt.py +1 -1
- meerschaum/utils/sql.py +106 -42
- {meerschaum-2.7.6.dist-info → meerschaum-2.7.8.dist-info}/METADATA +14 -2
- {meerschaum-2.7.6.dist-info → meerschaum-2.7.8.dist-info}/RECORD +45 -43
- {meerschaum-2.7.6.dist-info → meerschaum-2.7.8.dist-info}/WHEEL +1 -1
- {meerschaum-2.7.6.dist-info → meerschaum-2.7.8.dist-info}/LICENSE +0 -0
- {meerschaum-2.7.6.dist-info → meerschaum-2.7.8.dist-info}/NOTICE +0 -0
- {meerschaum-2.7.6.dist-info → meerschaum-2.7.8.dist-info}/entry_points.txt +0 -0
- {meerschaum-2.7.6.dist-info → meerschaum-2.7.8.dist-info}/top_level.txt +0 -0
- {meerschaum-2.7.6.dist-info → meerschaum-2.7.8.dist-info}/zip-safe +0 -0
meerschaum/utils/sql.py
CHANGED
@@ -43,6 +43,9 @@ SKIP_IF_EXISTS_FLAVORS = {'mssql', 'oracle'}
|
|
43
43
|
DROP_IF_EXISTS_FLAVORS = {
|
44
44
|
'timescaledb', 'postgresql', 'citus', 'mssql', 'mysql', 'mariadb', 'sqlite',
|
45
45
|
}
|
46
|
+
DROP_INDEX_IF_EXISTS_FLAVORS = {
|
47
|
+
'mssql', 'timescaledb', 'postgresql', 'sqlite', 'citus',
|
48
|
+
}
|
46
49
|
SKIP_AUTO_INCREMENT_FLAVORS = {'citus', 'duckdb'}
|
47
50
|
COALESCE_UNIQUE_INDEX_FLAVORS = {'timescaledb', 'postgresql', 'citus'}
|
48
51
|
UPDATE_QUERIES = {
|
@@ -196,7 +199,9 @@ columns_types_queries = {
|
|
196
199
|
table_schema AS schema,
|
197
200
|
table_name AS table,
|
198
201
|
column_name AS column,
|
199
|
-
data_type AS type
|
202
|
+
data_type AS type,
|
203
|
+
numeric_precision,
|
204
|
+
numeric_scale
|
200
205
|
FROM information_schema.columns
|
201
206
|
WHERE table_name IN ('{table}', '{table_trunc}')
|
202
207
|
""",
|
@@ -219,7 +224,9 @@ columns_types_queries = {
|
|
219
224
|
TABLE_SCHEMA AS [schema],
|
220
225
|
TABLE_NAME AS [table],
|
221
226
|
COLUMN_NAME AS [column],
|
222
|
-
DATA_TYPE AS [type]
|
227
|
+
DATA_TYPE AS [type],
|
228
|
+
NUMERIC_PRECISION AS [numeric_precision],
|
229
|
+
NUMERIC_SCALE AS [numeric_scale]
|
223
230
|
FROM {db_prefix}INFORMATION_SCHEMA.COLUMNS
|
224
231
|
WHERE TABLE_NAME IN (
|
225
232
|
'{table}',
|
@@ -233,7 +240,9 @@ columns_types_queries = {
|
|
233
240
|
TABLE_SCHEMA `schema`,
|
234
241
|
TABLE_NAME `table`,
|
235
242
|
COLUMN_NAME `column`,
|
236
|
-
DATA_TYPE `type
|
243
|
+
DATA_TYPE `type`,
|
244
|
+
NUMERIC_PRECISION `numeric_precision`,
|
245
|
+
NUMERIC_SCALE `numeric_scale`
|
237
246
|
FROM INFORMATION_SCHEMA.COLUMNS
|
238
247
|
WHERE TABLE_NAME IN ('{table}', '{table_trunc}')
|
239
248
|
""",
|
@@ -243,7 +252,9 @@ columns_types_queries = {
|
|
243
252
|
TABLE_SCHEMA `schema`,
|
244
253
|
TABLE_NAME `table`,
|
245
254
|
COLUMN_NAME `column`,
|
246
|
-
DATA_TYPE `type
|
255
|
+
DATA_TYPE `type`,
|
256
|
+
NUMERIC_PRECISION `numeric_precision`,
|
257
|
+
NUMERIC_SCALE `numeric_scale`
|
247
258
|
FROM INFORMATION_SCHEMA.COLUMNS
|
248
259
|
WHERE TABLE_NAME IN ('{table}', '{table_trunc}')
|
249
260
|
""",
|
@@ -253,7 +264,9 @@ columns_types_queries = {
|
|
253
264
|
NULL AS "schema",
|
254
265
|
TABLE_NAME AS "table",
|
255
266
|
COLUMN_NAME AS "column",
|
256
|
-
DATA_TYPE AS "type"
|
267
|
+
DATA_TYPE AS "type",
|
268
|
+
DATA_PRECISION AS "numeric_precision",
|
269
|
+
DATA_SCALE AS "numeric_scale"
|
257
270
|
FROM all_tab_columns
|
258
271
|
WHERE TABLE_NAME IN (
|
259
272
|
'{table}',
|
@@ -376,7 +389,7 @@ columns_indices_queries = {
|
|
376
389
|
WHERE
|
377
390
|
t.name IN ('{table}', '{table_trunc}')
|
378
391
|
AND s.name = '{schema}'
|
379
|
-
AND i.type IN (1, 2)
|
392
|
+
AND i.type IN (1, 2)
|
380
393
|
""",
|
381
394
|
'oracle': """
|
382
395
|
SELECT
|
@@ -590,7 +603,14 @@ def dateadd_str(
|
|
590
603
|
from meerschaum.utils.dtypes.sql import get_db_type_from_pd_type, get_pd_type_from_db_type
|
591
604
|
dateutil_parser = attempt_import('dateutil.parser')
|
592
605
|
if 'int' in str(type(begin)).lower():
|
593
|
-
|
606
|
+
num_str = str(begin)
|
607
|
+
if number is not None and number != 0:
|
608
|
+
num_str += (
|
609
|
+
f' + {number}'
|
610
|
+
if number > 0
|
611
|
+
else f" - {number * -1}"
|
612
|
+
)
|
613
|
+
return num_str
|
594
614
|
if not begin:
|
595
615
|
return ''
|
596
616
|
|
@@ -797,7 +817,7 @@ def sql_item_name(item: str, flavor: str, schema: Optional[str] = None) -> str:
|
|
797
817
|
"""
|
798
818
|
truncated_item = truncate_item_name(str(item), flavor)
|
799
819
|
if flavor == 'oracle':
|
800
|
-
truncated_item = pg_capital(truncated_item)
|
820
|
+
truncated_item = pg_capital(truncated_item, quote_capitals=True)
|
801
821
|
### NOTE: System-reserved words must be quoted.
|
802
822
|
if truncated_item.lower() in (
|
803
823
|
'float', 'varchar', 'nvarchar', 'clob',
|
@@ -824,14 +844,17 @@ def sql_item_name(item: str, flavor: str, schema: Optional[str] = None) -> str:
|
|
824
844
|
return schema_prefix + wrappers[0] + truncated_item + wrappers[1]
|
825
845
|
|
826
846
|
|
827
|
-
def pg_capital(s: str) -> str:
|
847
|
+
def pg_capital(s: str, quote_capitals: bool = True) -> str:
|
828
848
|
"""
|
829
849
|
If string contains a capital letter, wrap it in double quotes.
|
830
850
|
|
831
851
|
Parameters
|
832
852
|
----------
|
833
|
-
s: str
|
834
|
-
|
853
|
+
s: str
|
854
|
+
The string to be escaped.
|
855
|
+
|
856
|
+
quote_capitals: bool, default True
|
857
|
+
If `False`, do not quote strings with contain only a mix of capital and lower-case letters.
|
835
858
|
|
836
859
|
Returns
|
837
860
|
-------
|
@@ -845,16 +868,24 @@ def pg_capital(s: str) -> str:
|
|
845
868
|
'my_table'
|
846
869
|
|
847
870
|
"""
|
848
|
-
if '"'
|
871
|
+
if s.startswith('"') and s.endswith('"'):
|
849
872
|
return s
|
873
|
+
|
874
|
+
s = s.replace('"', '')
|
875
|
+
|
850
876
|
needs_quotes = s.startswith('_')
|
851
|
-
|
852
|
-
|
853
|
-
if
|
877
|
+
if not needs_quotes:
|
878
|
+
for c in s:
|
879
|
+
if c == '_':
|
880
|
+
continue
|
881
|
+
|
882
|
+
if not c.isalnum() or (quote_capitals and c.isupper()):
|
854
883
|
needs_quotes = True
|
855
884
|
break
|
885
|
+
|
856
886
|
if needs_quotes:
|
857
887
|
return '"' + s + '"'
|
888
|
+
|
858
889
|
return s
|
859
890
|
|
860
891
|
|
@@ -1048,7 +1079,7 @@ def table_exists(
|
|
1048
1079
|
-------
|
1049
1080
|
A `bool` indicating whether or not the table exists on the database.
|
1050
1081
|
"""
|
1051
|
-
sqlalchemy = mrsm.attempt_import('sqlalchemy')
|
1082
|
+
sqlalchemy = mrsm.attempt_import('sqlalchemy', lazy=False)
|
1052
1083
|
schema = schema or connector.schema
|
1053
1084
|
insp = sqlalchemy.inspect(connector.engine)
|
1054
1085
|
truncated_table_name = truncate_item_name(str(table), connector.flavor)
|
@@ -1101,7 +1132,7 @@ def get_sqlalchemy_table(
|
|
1101
1132
|
if refresh:
|
1102
1133
|
connector.metadata.clear()
|
1103
1134
|
tables = get_tables(mrsm_instance=connector, debug=debug, create=False)
|
1104
|
-
sqlalchemy = attempt_import('sqlalchemy')
|
1135
|
+
sqlalchemy = attempt_import('sqlalchemy', lazy=False)
|
1105
1136
|
truncated_table_name = truncate_item_name(str(table), connector.flavor)
|
1106
1137
|
table_kwargs = {
|
1107
1138
|
'autoload_with': connector.engine,
|
@@ -1171,7 +1202,7 @@ def get_table_cols_types(
|
|
1171
1202
|
"""
|
1172
1203
|
import textwrap
|
1173
1204
|
from meerschaum.connectors import SQLConnector
|
1174
|
-
sqlalchemy = mrsm.attempt_import('sqlalchemy')
|
1205
|
+
sqlalchemy = mrsm.attempt_import('sqlalchemy', lazy=False)
|
1175
1206
|
flavor = flavor or getattr(connectable, 'flavor', None)
|
1176
1207
|
if not flavor:
|
1177
1208
|
raise ValueError("Please provide a database flavor.")
|
@@ -1209,7 +1240,7 @@ def get_table_cols_types(
|
|
1209
1240
|
)).lstrip().rstrip()
|
1210
1241
|
)
|
1211
1242
|
|
1212
|
-
cols = ['database', 'schema', 'table', 'column', 'type']
|
1243
|
+
cols = ['database', 'schema', 'table', 'column', 'type', 'numeric_precision', 'numeric_scale']
|
1213
1244
|
result_cols_ix = dict(enumerate(cols))
|
1214
1245
|
|
1215
1246
|
debug_kwargs = {'debug': debug} if isinstance(connectable, SQLConnector) else {}
|
@@ -1265,7 +1296,15 @@ def get_table_cols_types(
|
|
1265
1296
|
else doc['column']
|
1266
1297
|
)
|
1267
1298
|
)
|
1268
|
-
): doc['type'].upper()
|
1299
|
+
): doc['type'].upper() + (
|
1300
|
+
f'({precision},{scale})'
|
1301
|
+
if (
|
1302
|
+
(precision := doc.get('numeric_precision', None))
|
1303
|
+
and
|
1304
|
+
(scale := doc.get('numeric_scale', None))
|
1305
|
+
)
|
1306
|
+
else ''
|
1307
|
+
)
|
1269
1308
|
for doc in cols_types_docs_filtered
|
1270
1309
|
}
|
1271
1310
|
except Exception as e:
|
@@ -1323,7 +1362,7 @@ def get_table_cols_indices(
|
|
1323
1362
|
import textwrap
|
1324
1363
|
from collections import defaultdict
|
1325
1364
|
from meerschaum.connectors import SQLConnector
|
1326
|
-
sqlalchemy = mrsm.attempt_import('sqlalchemy')
|
1365
|
+
sqlalchemy = mrsm.attempt_import('sqlalchemy', lazy=False)
|
1327
1366
|
flavor = flavor or getattr(connectable, 'flavor', None)
|
1328
1367
|
if not flavor:
|
1329
1368
|
raise ValueError("Please provide a database flavor.")
|
@@ -1448,6 +1487,7 @@ def get_update_queries(
|
|
1448
1487
|
schema: Optional[str] = None,
|
1449
1488
|
patch_schema: Optional[str] = None,
|
1450
1489
|
identity_insert: bool = False,
|
1490
|
+
null_indices: bool = True,
|
1451
1491
|
debug: bool = False,
|
1452
1492
|
) -> List[str]:
|
1453
1493
|
"""
|
@@ -1489,6 +1529,9 @@ def get_update_queries(
|
|
1489
1529
|
If `True`, include `SET IDENTITY_INSERT` queries before and after the update queries.
|
1490
1530
|
Only applies for MSSQL upserts.
|
1491
1531
|
|
1532
|
+
null_indices: bool, default True
|
1533
|
+
If `False`, do not coalesce index columns before joining.
|
1534
|
+
|
1492
1535
|
debug: bool, default False
|
1493
1536
|
Verbosity toggle.
|
1494
1537
|
|
@@ -1579,11 +1622,17 @@ def get_update_queries(
|
|
1579
1622
|
|
1580
1623
|
coalesce_join_cols_str = ', '.join(
|
1581
1624
|
[
|
1582
|
-
|
1583
|
-
|
1584
|
-
|
1585
|
-
|
1586
|
-
|
1625
|
+
(
|
1626
|
+
(
|
1627
|
+
'COALESCE('
|
1628
|
+
+ sql_item_name(c_name, flavor)
|
1629
|
+
+ ', '
|
1630
|
+
+ get_null_replacement(c_type, flavor)
|
1631
|
+
+ ')'
|
1632
|
+
)
|
1633
|
+
if null_indices
|
1634
|
+
else sql_item_name(c_name, flavor)
|
1635
|
+
)
|
1587
1636
|
for c_name, c_type in join_cols_types
|
1588
1637
|
]
|
1589
1638
|
)
|
@@ -1633,19 +1682,29 @@ def get_update_queries(
|
|
1633
1682
|
def and_subquery(l_prefix: str, r_prefix: str):
|
1634
1683
|
return '\n AND\n '.join([
|
1635
1684
|
(
|
1636
|
-
|
1637
|
-
|
1638
|
-
|
1639
|
-
|
1640
|
-
|
1641
|
-
|
1642
|
-
|
1643
|
-
|
1644
|
-
|
1645
|
-
|
1646
|
-
|
1647
|
-
|
1648
|
-
|
1685
|
+
(
|
1686
|
+
"COALESCE("
|
1687
|
+
+ l_prefix
|
1688
|
+
+ sql_item_name(c_name, flavor, None)
|
1689
|
+
+ ", "
|
1690
|
+
+ get_null_replacement(c_type, flavor)
|
1691
|
+
+ ")"
|
1692
|
+
+ '\n =\n '
|
1693
|
+
+ "COALESCE("
|
1694
|
+
+ r_prefix
|
1695
|
+
+ sql_item_name(c_name, flavor, None)
|
1696
|
+
+ ", "
|
1697
|
+
+ get_null_replacement(c_type, flavor)
|
1698
|
+
+ ")"
|
1699
|
+
)
|
1700
|
+
if null_indices
|
1701
|
+
else (
|
1702
|
+
l_prefix
|
1703
|
+
+ sql_item_name(c_name, flavor, None)
|
1704
|
+
+ ' = '
|
1705
|
+
+ r_prefix
|
1706
|
+
+ sql_item_name(c_name, flavor, None)
|
1707
|
+
)
|
1649
1708
|
) for c_name, c_type in join_cols_types
|
1650
1709
|
])
|
1651
1710
|
|
@@ -1973,7 +2032,12 @@ def _get_create_table_query_from_dtypes(
|
|
1973
2032
|
autoincrement = False
|
1974
2033
|
|
1975
2034
|
cols_types = (
|
1976
|
-
[
|
2035
|
+
[
|
2036
|
+
(
|
2037
|
+
primary_key,
|
2038
|
+
get_db_type_from_pd_type(dtypes.get(primary_key, 'int') or 'int', flavor=flavor)
|
2039
|
+
)
|
2040
|
+
]
|
1977
2041
|
if primary_key
|
1978
2042
|
else []
|
1979
2043
|
) + [
|
@@ -2243,7 +2307,7 @@ def wrap_query_with_cte(
|
|
2243
2307
|
.replace('--MRSM_SUBQUERY--', f"(\n{sub_query}\n) AS {cte_name_quoted}")
|
2244
2308
|
)
|
2245
2309
|
|
2246
|
-
if
|
2310
|
+
if sub_query.lstrip().lower().startswith('with '):
|
2247
2311
|
final_select_ix = sub_query.lower().rfind('select')
|
2248
2312
|
return (
|
2249
2313
|
sub_query[:final_select_ix].rstrip() + ',\n'
|
@@ -2329,7 +2393,7 @@ def session_execute(
|
|
2329
2393
|
A `SuccessTuple` indicating the queries were successfully executed.
|
2330
2394
|
If `with_results`, return the `SuccessTuple` and a list of results.
|
2331
2395
|
"""
|
2332
|
-
sqlalchemy = mrsm.attempt_import('sqlalchemy')
|
2396
|
+
sqlalchemy = mrsm.attempt_import('sqlalchemy', lazy=False)
|
2333
2397
|
if not isinstance(queries, list):
|
2334
2398
|
queries = [queries]
|
2335
2399
|
successes, msgs, results = [], [], []
|
@@ -1,6 +1,6 @@
|
|
1
|
-
Metadata-Version: 2.
|
1
|
+
Metadata-Version: 2.2
|
2
2
|
Name: meerschaum
|
3
|
-
Version: 2.7.
|
3
|
+
Version: 2.7.8
|
4
4
|
Summary: Sync Time-Series Pipes with Meerschaum
|
5
5
|
Home-page: https://meerschaum.io
|
6
6
|
Author: Bennett Meares
|
@@ -318,6 +318,18 @@ Requires-Dist: python-multipart>=0.0.9; extra == "full"
|
|
318
318
|
Requires-Dist: httpx>=0.27.2; extra == "full"
|
319
319
|
Requires-Dist: httpcore>=1.0.6; extra == "full"
|
320
320
|
Requires-Dist: valkey>=6.0.0; extra == "full"
|
321
|
+
Dynamic: author
|
322
|
+
Dynamic: author-email
|
323
|
+
Dynamic: classifier
|
324
|
+
Dynamic: description
|
325
|
+
Dynamic: description-content-type
|
326
|
+
Dynamic: home-page
|
327
|
+
Dynamic: license
|
328
|
+
Dynamic: maintainer-email
|
329
|
+
Dynamic: project-url
|
330
|
+
Dynamic: provides-extra
|
331
|
+
Dynamic: requires-python
|
332
|
+
Dynamic: summary
|
321
333
|
|
322
334
|
<img src="https://meerschaum.io/assets/banner_1920x320.png" alt="Meerschaum banner" style="width: 100%"/>
|
323
335
|
|
@@ -26,23 +26,24 @@ meerschaum/actions/api.py,sha256=41r3fBh3vAPyNaOrvbh2oh6WUJTR2I-zaOEZN60A66E,125
|
|
26
26
|
meerschaum/actions/attach.py,sha256=UV19d9W_2WYcrf7BRz7k3mriDoX1V4rA4AKvbLdor0o,3106
|
27
27
|
meerschaum/actions/bootstrap.py,sha256=08o3PchrJ_Rv8IP30ZBH1Ovk-b8qFBGPedCjF7jRzSo,18084
|
28
28
|
meerschaum/actions/clear.py,sha256=v_xHn7-Pu7iwFNJ07q9eJt2hqPV7OwNZHUYa9dvixs4,4976
|
29
|
-
meerschaum/actions/copy.py,sha256=
|
29
|
+
meerschaum/actions/copy.py,sha256=bEKWvFVwxq8yoye7Iy_sfkvNVCJFYbAZHfxraX1U7hM,6862
|
30
30
|
meerschaum/actions/deduplicate.py,sha256=puYyxeFYEUy1Sd2IOcZB2e6MrNxAZl2bTLmNzFDkCiw,1167
|
31
31
|
meerschaum/actions/delete.py,sha256=H5oP0nE7qIWnFvkuFhZQZQYBVC0IbUevpaQ_2YQKXRA,18559
|
32
|
-
meerschaum/actions/drop.py,sha256=
|
32
|
+
meerschaum/actions/drop.py,sha256=UZg16dPx1o9f-hBrbIiZ6-F2QOTaTAdmFqLaSQla0t8,4434
|
33
33
|
meerschaum/actions/edit.py,sha256=VpP6bJ-i7GR3tRzs_PILcDKcFCBeTUaeXpZDwxJ4fFk,16224
|
34
|
+
meerschaum/actions/index.py,sha256=JukgmLYhVkbV4eDgw_WbJwOGadNXQCVJfsGvND8HaEs,1800
|
34
35
|
meerschaum/actions/install.py,sha256=P_M2dnn3sVC2mAn5hwvu4VHWkoh4r9TBUzNcU_Kukpc,7437
|
35
36
|
meerschaum/actions/login.py,sha256=fNgsgkrFCn9wBQJY50SQhz2PwsN_TvEYYHnXK3JG4ig,4206
|
36
37
|
meerschaum/actions/os.py,sha256=dtoppoBhLzW3rLNF0SFovEfNxA4WJWt_9WrOGlS5KbA,2251
|
37
38
|
meerschaum/actions/pause.py,sha256=WI4dQFfjQ6ObWKUzwQ5FrtYPDyEcnxWwval8cSIzzJw,4221
|
38
39
|
meerschaum/actions/python.py,sha256=k3Oo64RhyPd49W8bSjYvm6DOXuqY17NpR6BmfZb3-os,4737
|
39
|
-
meerschaum/actions/register.py,sha256=
|
40
|
+
meerschaum/actions/register.py,sha256=GR9Q8ml0S_bKPQDFlXarmzNkx4vMn9Un6UKS5qQN38c,14172
|
40
41
|
meerschaum/actions/reload.py,sha256=gMXeFBGVfyQ7uhKhYf6bLaDMD0fLPcA9BrLBSiuvWIc,508
|
41
42
|
meerschaum/actions/restart.py,sha256=6ffp3-X9eTEgunVSdD41HnOwqp71yjuSAmXJ5j39ONI,3038
|
42
43
|
meerschaum/actions/setup.py,sha256=KkAGWcgwzl_L6A19fTmTX1KtBjW2FwD8QenLjPy0mQQ,3205
|
43
44
|
meerschaum/actions/sh.py,sha256=hSkGNTVqP5dNjhJ64zy3V3VCFPTKnDlH3PxdKdxtkGQ,1990
|
44
45
|
meerschaum/actions/show.py,sha256=T8Ol1o-762cI9rlUzd-8svvwgT4slYXYfOPQETh9Koo,28446
|
45
|
-
meerschaum/actions/sql.py,sha256=
|
46
|
+
meerschaum/actions/sql.py,sha256=PhbBMBq20LL8Yh3q-yqGMe7f8ffmyjbD8q_G8Q0WxZc,4527
|
46
47
|
meerschaum/actions/stack.py,sha256=ZwrCTGJ0x3jjZkRieWcvqasQHYCqNtB1HYvTX-r3Z3g,5996
|
47
48
|
meerschaum/actions/start.py,sha256=NtdVzeB00PQBnDSUSu8ypHmMrZT8_Idmw5BfVZ--Zic,21296
|
48
49
|
meerschaum/actions/stop.py,sha256=5fdUw70YN-yuUWrC-NhA88cxr9FZ5NbssbQ8xXO8nFU,4632
|
@@ -124,9 +125,9 @@ meerschaum/api/routes/_index.py,sha256=QI6CBo6pI2Zi0a6fJHDjZfiLa9f4okb0BGe3A_JD0
|
|
124
125
|
meerschaum/api/routes/_jobs.py,sha256=sEt-UtVd5pN-hJgikTvj1oTKJQ2hhNe8XhjkclwOXOE,12568
|
125
126
|
meerschaum/api/routes/_login.py,sha256=tygEp50EVOMgvTG6CEASlShflbtEK8viJ9O07o0lnnE,2434
|
126
127
|
meerschaum/api/routes/_misc.py,sha256=05--9ZVFeaCgZrHER2kA3SYdK4TyfkEXOCjLvPbum-w,2469
|
127
|
-
meerschaum/api/routes/_pipes.py,sha256=
|
128
|
-
meerschaum/api/routes/_plugins.py,sha256=
|
129
|
-
meerschaum/api/routes/_users.py,sha256=
|
128
|
+
meerschaum/api/routes/_pipes.py,sha256=kykrEP6A75WBjn2wP28BLiPVRpwtfd8sVhfOhzjHaBY,22013
|
129
|
+
meerschaum/api/routes/_plugins.py,sha256=zzUyCiylJGeoLoa3dNjeRMSspvKfywTVXBpB-ghJ7ls,6228
|
130
|
+
meerschaum/api/routes/_users.py,sha256=Gts7gltQc5uxgjfL5pQS_R-cAhkHJZJWBCKGPRS1gmQ,6809
|
130
131
|
meerschaum/api/routes/_version.py,sha256=2t-nw_9IxCVZCNEar0LOwmut2zsClRVHjiOOUx16cu0,825
|
131
132
|
meerschaum/api/routes/_webterm.py,sha256=MenDvWXnZ8CWEmryB46pKohMf0PN6o1xJGZ3LFjxTOc,3909
|
132
133
|
meerschaum/api/tables/__init__.py,sha256=e2aNC0CdlWICTUMx1i9RauF8Pm426J0RZJbsJWv4SWo,482
|
@@ -143,7 +144,7 @@ meerschaum/config/_preprocess.py,sha256=-AEA8m_--KivZwTQ1sWN6LTn5sio_fUr2XZ51BO6
|
|
143
144
|
meerschaum/config/_read_config.py,sha256=RLC3HHi_1ndj7ITVDKLD9_uULY3caGRwSz3ATYE-ixA,15014
|
144
145
|
meerschaum/config/_shell.py,sha256=46_m49Txc5q1rGfCgO49ca48BODx45DQJi8D0zz1R18,4245
|
145
146
|
meerschaum/config/_sync.py,sha256=jHcWRkxd82_BgX8Xo8agsWvf7BSbv3qHLWmYl6ehp_0,4242
|
146
|
-
meerschaum/config/_version.py,sha256=
|
147
|
+
meerschaum/config/_version.py,sha256=4gZBseXxG1QTm6f5OOjglU5B2-n_LdqvQG4bLr5Nth0,71
|
147
148
|
meerschaum/config/paths.py,sha256=JjibeGN3YAdSNceRwsd42aNmeUrIgM6ndzC8qZAmNI0,621
|
148
149
|
meerschaum/config/resources/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
149
150
|
meerschaum/config/stack/__init__.py,sha256=2UukC0Lmk-aVL1o1qXzumqmuIrw3vu9fD7iCuz4XD4I,10544
|
@@ -163,49 +164,50 @@ meerschaum/connectors/api/_fetch.py,sha256=Khq9AFr1nk8Dsmcedb77aWhAuHw0JGgVeahDG
|
|
163
164
|
meerschaum/connectors/api/_jobs.py,sha256=N5lpHFGG10jlVgaJeWAOTuLBQw3AdgjXsEPpp1YwZQE,11270
|
164
165
|
meerschaum/connectors/api/_login.py,sha256=5GsD-B214vr5EYfM3XrTUs1sTFApxZA-9dNxq8oNSyg,2050
|
165
166
|
meerschaum/connectors/api/_misc.py,sha256=XK0LLexNUEKZjAAqoJ-9oOgwLlMdwxSOvcpqO5NuOas,1083
|
166
|
-
meerschaum/connectors/api/_pipes.py,sha256=
|
167
|
+
meerschaum/connectors/api/_pipes.py,sha256=9i3KZ0S9960AaVYMlecxEEMKq8nTvT_Y3jNaFkoRU7E,21739
|
167
168
|
meerschaum/connectors/api/_plugins.py,sha256=z04tPjfZZWwa7T60mogZH3X3wDmeLdnoN5Oh8m_YsU8,5217
|
168
169
|
meerschaum/connectors/api/_request.py,sha256=Wc4Y70t0VxEj3_ch5fAeeoSAeFMuRnyNLOV-aUFInjY,6996
|
169
170
|
meerschaum/connectors/api/_uri.py,sha256=HWxqGx4R1cHZ3ywy9Ro9ePbFxxusw4RLaC3hpGt9Z6I,1469
|
170
171
|
meerschaum/connectors/api/_users.py,sha256=kzb7ENgXwQ19OJYKOuuWzx2rwVuUZCly9dTnyvVuT2Q,5275
|
171
172
|
meerschaum/connectors/plugin/PluginConnector.py,sha256=aQ1QaB7MordCFimZqoGLb0R12PfDUN_nWks2J5mzeAs,2084
|
172
173
|
meerschaum/connectors/plugin/__init__.py,sha256=pwF7TGY4WNz2_HaVdmK4rPQ9ZwTOEuPHgzOqsGcoXJw,198
|
173
|
-
meerschaum/connectors/sql/_SQLConnector.py,sha256=
|
174
|
+
meerschaum/connectors/sql/_SQLConnector.py,sha256=B2-ltIIQy_n2qjeeT-sZk60tLJrg2Oefscytt7sGqb4,12083
|
174
175
|
meerschaum/connectors/sql/__init__.py,sha256=3cqYiDkVasn7zWdtOTAZbT4bo95AuvGOmDD2TkaAxtw,205
|
175
176
|
meerschaum/connectors/sql/_cli.py,sha256=VqAHkdXC0HVXuHaZik2q-cTVmIsuS4DWMcPMJPP_g-Q,4514
|
176
|
-
meerschaum/connectors/sql/_create_engine.py,sha256=
|
177
|
-
meerschaum/connectors/sql/_fetch.py,sha256=
|
178
|
-
meerschaum/connectors/sql/_instance.py,sha256=
|
179
|
-
meerschaum/connectors/sql/_pipes.py,sha256=
|
180
|
-
meerschaum/connectors/sql/_plugins.py,sha256=
|
181
|
-
meerschaum/connectors/sql/_sql.py,sha256=
|
182
|
-
meerschaum/connectors/sql/_uri.py,sha256=
|
183
|
-
meerschaum/connectors/sql/_users.py,sha256=
|
177
|
+
meerschaum/connectors/sql/_create_engine.py,sha256=VfGtqF2hDNbgl2g-ZPcz28gKkfL6UOk4rKxUB4tKHdU,10567
|
178
|
+
meerschaum/connectors/sql/_fetch.py,sha256=mVe5zQo7SM9PSUU3Vjhacg4Bq1-Vttb7KkXL4p5YQdQ,12818
|
179
|
+
meerschaum/connectors/sql/_instance.py,sha256=KUTDrWWD9uf8G94_n_VM_J0HdggXQofJbekZ4errypw,6310
|
180
|
+
meerschaum/connectors/sql/_pipes.py,sha256=rYePCZfUuY43jPV8ysX9OznyXeGIEFAqvIXeffYD1eA,128088
|
181
|
+
meerschaum/connectors/sql/_plugins.py,sha256=OVEdZ_UHTi-x5sF-5lu2TmR9ONxddp6SwDOmFo5TpU8,8051
|
182
|
+
meerschaum/connectors/sql/_sql.py,sha256=VDRrfWBS0XbI8Jcr-MiQyXfY9OTHvR2EUtiazFoN-Qw,41999
|
183
|
+
meerschaum/connectors/sql/_uri.py,sha256=BFzu5pjlbL3kxLH13vHWlpKGYTPfg8wuA2j58O9NsCM,3440
|
184
|
+
meerschaum/connectors/sql/_users.py,sha256=Dbe79FV07ms5QVHwp68cruDzkGeKR4cE1-xc9Gza8Hs,9932
|
184
185
|
meerschaum/connectors/sql/tools.py,sha256=jz8huOaRCwGlYdtGfAqAh7SoK8uydYBrasKQba9FT38,187
|
185
|
-
meerschaum/connectors/sql/tables/__init__.py,sha256=
|
186
|
+
meerschaum/connectors/sql/tables/__init__.py,sha256=53EeJsvmGjj68SpSShdt6kyLuk5Md5O8DnvWC1ra3u8,8876
|
186
187
|
meerschaum/connectors/sql/tables/types.py,sha256=Jc_MTHIBM-KHpQt__Lckp39CeOo7tGOiAk5faDx-znY,1573
|
187
|
-
meerschaum/connectors/valkey/_ValkeyConnector.py,sha256=
|
188
|
+
meerschaum/connectors/valkey/_ValkeyConnector.py,sha256=_KjJSgUcZhNJZuPfn0vhDBjnOzjtk_jZrjScfhio0Ww,15794
|
188
189
|
meerschaum/connectors/valkey/__init__.py,sha256=jkVutsygQCvGPLN17cP6wHAjHajxVycnQJbm2eVMuY0,187
|
189
190
|
meerschaum/connectors/valkey/_fetch.py,sha256=MjeE0h3YI4M3LCzy7axQAc_fX_l82vUqX4WXcYoppxE,1920
|
190
191
|
meerschaum/connectors/valkey/_pipes.py,sha256=sjjO1vehNCkN_2bsqQKy81WWWrOg8a8ElupqzCjZ_7c,24594
|
191
192
|
meerschaum/connectors/valkey/_plugins.py,sha256=ZqiEW4XZCOpw4G8DUK2IKY6Qrph4mYfTjgXWimgakYY,6267
|
192
193
|
meerschaum/connectors/valkey/_users.py,sha256=AS1vLarrkDA9yPK644GWwRiQiTZVa9x3nlLpyntq40g,7730
|
193
194
|
meerschaum/core/__init__.py,sha256=tjASW10n9uLV6bYhcwP4rggh-ESXSJzgxpSBbVsuISs,251
|
194
|
-
meerschaum/core/Pipe/__init__.py,sha256=
|
195
|
-
meerschaum/core/Pipe/_attributes.py,sha256=
|
195
|
+
meerschaum/core/Pipe/__init__.py,sha256=OG2oKBfNmwGbdCI-m8wgdmFKflFbMkziP-YzAiTLww8,19304
|
196
|
+
meerschaum/core/Pipe/_attributes.py,sha256=ZUfgN7Vk8liu_lbF4nORtCjFlJB7LBNhrgZdgmEqTpU,22215
|
196
197
|
meerschaum/core/Pipe/_bootstrap.py,sha256=gTNGh5e2LmTMrgIpHqrVaL60uPKWCphhsuz8j-lJ2HI,7348
|
197
198
|
meerschaum/core/Pipe/_clear.py,sha256=LghXabgyyc1tD7FNQrh9ExT71ipcg2poM9FDA3k9e4M,2230
|
198
199
|
meerschaum/core/Pipe/_copy.py,sha256=YDclAapf_spm9phpFr4-CALyYyw7nUsyKyiaLM1cnm4,2965
|
199
200
|
meerschaum/core/Pipe/_data.py,sha256=HOvKlpD9NiBg599mSH1lzUQ_2g8-PsnMbGzMTOJx81E,24047
|
200
201
|
meerschaum/core/Pipe/_deduplicate.py,sha256=xthUdsDxGO2t3m0XGDm9K3F6dpaZoemtjNi8gyKm0e0,10177
|
201
202
|
meerschaum/core/Pipe/_delete.py,sha256=1geNp9BgrocXP1gt76dMbnlJWKYFMuSNqPFA4K4-hXE,2118
|
202
|
-
meerschaum/core/Pipe/_drop.py,sha256=
|
203
|
+
meerschaum/core/Pipe/_drop.py,sha256=KDfJVz2aGjHUE1Jkmj7Ej4ICPR5xPiuhyhgRO7Lu9d4,3299
|
203
204
|
meerschaum/core/Pipe/_dtypes.py,sha256=-D3Dr64rSX7twuGNieZOYJOIdEKTknhBFHPmwj_QSQw,4274
|
204
205
|
meerschaum/core/Pipe/_edit.py,sha256=HrKWe9vhqKaNOjOcJzW5BNbaUBPIbgNAhJEK8OMsy7c,8416
|
205
|
-
meerschaum/core/Pipe/_fetch.py,sha256=
|
206
|
+
meerschaum/core/Pipe/_fetch.py,sha256=IojFSA_EXBSm0I8BmlDgmUh3M85FFtXjmDJhdxZ8LlE,5477
|
207
|
+
meerschaum/core/Pipe/_index.py,sha256=cYgaVwBVfAYxJBZ6j6MXDqOxnOrD_QnYi33_kIwy_FQ,1944
|
206
208
|
meerschaum/core/Pipe/_register.py,sha256=Sd5xaAW8H7uLTIoommcKb-6kHPRuHJLWNSbPnt2UbvA,2240
|
207
209
|
meerschaum/core/Pipe/_show.py,sha256=nG50y8eBT9TVuKkRgAKtNDNIxysJvMNxfu__lkL1F9k,1352
|
208
|
-
meerschaum/core/Pipe/_sync.py,sha256=
|
210
|
+
meerschaum/core/Pipe/_sync.py,sha256=AftRrXkWl8Gdpz-IT2MyBmxWcSrwVsWR7oE6JqwLBaM,36602
|
209
211
|
meerschaum/core/Pipe/_verify.py,sha256=IdaAgQBjtxrGBVRnfBcfDZKn4zSynN2WUgq_-NnmEps,14356
|
210
212
|
meerschaum/core/Plugin/__init__.py,sha256=UXg64EvJPgI1PCxkY_KM02-ZmBm4FZpLPIQR_uSJJDc,137
|
211
213
|
meerschaum/core/User/_User.py,sha256=qbI0GIkr3G0PI4d9S49uatbJQ2kH_-z5-GoVJ0fuEtA,6624
|
@@ -219,43 +221,43 @@ meerschaum/plugins/__init__.py,sha256=Kl7Dz0CwUUxyjRC5RWnYo6WMLsOvdX2eQ38Rh3Bjdz
|
|
219
221
|
meerschaum/plugins/bootstrap.py,sha256=VwjpZAuYdqPJW0YoVgAoM_taHkdQHqP902-8T7OWWCI,11339
|
220
222
|
meerschaum/utils/__init__.py,sha256=QrK1K9hIbPCRCM5k2nZGFqGnrqhA0Eh-iSmCU7FG6Cs,612
|
221
223
|
meerschaum/utils/_get_pipes.py,sha256=tu4xKPoDn79Dz2kWM13cXTP4DSCkn-3G9M8KiLftopw,11073
|
222
|
-
meerschaum/utils/dataframe.py,sha256=
|
224
|
+
meerschaum/utils/dataframe.py,sha256=2wiZcD0Z5ItxMSTapzgVATJ3ny457pSsnHFVovWdk6g,49320
|
223
225
|
meerschaum/utils/debug.py,sha256=GyIzJmunkoPnOcZNYVQdT4Sgd-aOb5MI2VbIgATOjIQ,3695
|
224
226
|
meerschaum/utils/interactive.py,sha256=t-6jWozXSqL7lYGDHuwiOjTgr-UKhdcg61q_eR5mikI,3196
|
225
|
-
meerschaum/utils/misc.py,sha256=
|
227
|
+
meerschaum/utils/misc.py,sha256=Fv81Pkn1MGWwuoOZqWpe6OcZPL2hwHL8B_9K6dvcEIk,47028
|
226
228
|
meerschaum/utils/networking.py,sha256=Sr_eYUGW8_UV9-k9LqRFf7xLtbUcsDucODyLCRsFRUc,1006
|
227
229
|
meerschaum/utils/pool.py,sha256=vkE42af4fjrTEJTxf6Ek3xGucm1MtEkpsSEiaVzNKHs,2655
|
228
230
|
meerschaum/utils/process.py,sha256=9O8PPPJjY9Q5W2f39I3B3lFU6TlSiRiI3bgrzdOOyOw,7843
|
229
|
-
meerschaum/utils/prompt.py,sha256=
|
231
|
+
meerschaum/utils/prompt.py,sha256=qj1As1tuiL0GZTku_YOC6I5DmOU6L5otDR7DW7LA5fM,19397
|
230
232
|
meerschaum/utils/schedule.py,sha256=bUsaCO9CGn2vJO5UvoISScHDDGIiMdCPHxpTFmu7vwE,11531
|
231
|
-
meerschaum/utils/sql.py,sha256=
|
233
|
+
meerschaum/utils/sql.py,sha256=dAC002vPcalR96p4hK7EM62G3SmD1TPIP_h4oytfTtQ,80165
|
232
234
|
meerschaum/utils/threading.py,sha256=awjbVL_QR6G-o_9Qk85utac9cSdqkiC8tQSdERCdrG8,2814
|
233
235
|
meerschaum/utils/typing.py,sha256=U3MC347sh1umpa3Xr1k71eADyDmk4LB6TnVCpq8dVzI,2830
|
234
236
|
meerschaum/utils/warnings.py,sha256=n-phr3BftNNgyPnvnXC_VMSjtCvjiCZ-ewmVfcROhkc,6611
|
235
237
|
meerschaum/utils/yaml.py,sha256=PoC1du0pn2hLwTHwL-zuOf_EBWZSbCGOz-P-AZ4BWN0,3901
|
236
|
-
meerschaum/utils/daemon/Daemon.py,sha256=
|
238
|
+
meerschaum/utils/daemon/Daemon.py,sha256=laRdFXkmXdobmjTILSwdSvveVLpKo8AEvCgQYcpXO48,43141
|
237
239
|
meerschaum/utils/daemon/FileDescriptorInterceptor.py,sha256=MJKMO0Syf3d8yWUs6xXcQzg8Ptsuvh2aCRRoglOjusA,5257
|
238
|
-
meerschaum/utils/daemon/RotatingFile.py,sha256=
|
240
|
+
meerschaum/utils/daemon/RotatingFile.py,sha256=8_bXegBjjzNRlNEjFZ_EHU4pSaDfjXZTwO9F9kbAU1I,24337
|
239
241
|
meerschaum/utils/daemon/StdinFile.py,sha256=qdZ8E_RSOkURypwnS50mWeyWyRig1bAY9tKWMTVKajc,3307
|
240
242
|
meerschaum/utils/daemon/__init__.py,sha256=ziRPyu_IM3l7Xd58y3Uvt0fZLoirJ9nuboFIxxult6c,8741
|
241
243
|
meerschaum/utils/daemon/_names.py,sha256=d2ZwTxBoTAqXZkCfZ5LuX2XrkQmLNUq1OTlUqfoH5dA,4515
|
242
|
-
meerschaum/utils/dtypes/__init__.py,sha256=
|
243
|
-
meerschaum/utils/dtypes/sql.py,sha256=
|
244
|
-
meerschaum/utils/formatting/__init__.py,sha256=
|
244
|
+
meerschaum/utils/dtypes/__init__.py,sha256=dO9xChsOzoaoULjJYHDr13lkjyVjG51Up3tlAQWS3pQ,15315
|
245
|
+
meerschaum/utils/dtypes/sql.py,sha256=ubPxiYlYEFegRA4wcKkF4zuVrla1rzG0eW97DWWZjNw,21099
|
246
|
+
meerschaum/utils/formatting/__init__.py,sha256=bA8qwBeTNIVHVQOBK682bJsKSKik1yS6xYJAoi0RErk,15528
|
245
247
|
meerschaum/utils/formatting/_jobs.py,sha256=izsqPJhTtUkXUUtWnbXtReYsUYwulXtci3pBj72Ne64,6637
|
246
248
|
meerschaum/utils/formatting/_pipes.py,sha256=OISJmmFiilaDbZxkiXck_g39MnnTfk_fJJyJ-YInvXA,19559
|
247
|
-
meerschaum/utils/formatting/_pprint.py,sha256=
|
249
|
+
meerschaum/utils/formatting/_pprint.py,sha256=hU7g7zONT0QYYMLLnDbz7G3ccLFWfZV--OTiuzzELlA,3058
|
248
250
|
meerschaum/utils/formatting/_shell.py,sha256=XH7VFLteNv7NGtWhJl7FdIGt80sKeTiDoJokGSDAwBM,3761
|
249
251
|
meerschaum/utils/packages/__init__.py,sha256=TdKaj2tmN4bFwzusOfMv24P5ET7Zv73vyoOf9GOIr5E,64427
|
250
252
|
meerschaum/utils/packages/_packages.py,sha256=_xODMSz1FAcx3XHrn9RXUhGJ1zg-QKsVu9zYZV2UJeY,8868
|
251
253
|
meerschaum/utils/packages/lazy_loader.py,sha256=VHnph3VozH29R4JnSSBfwtA5WKZYZQFT_GeQSShCnuc,2540
|
252
254
|
meerschaum/utils/venv/_Venv.py,sha256=gc1TCeAj-kTZbQFAT9xl1bi4HXFV5ApT0dPOJfxwr78,3748
|
253
255
|
meerschaum/utils/venv/__init__.py,sha256=vVU9vj7t-HTiRU--ReQZ9kRLesVqcHnSJDbmcfC-Dzg,27030
|
254
|
-
meerschaum-2.7.
|
255
|
-
meerschaum-2.7.
|
256
|
-
meerschaum-2.7.
|
257
|
-
meerschaum-2.7.
|
258
|
-
meerschaum-2.7.
|
259
|
-
meerschaum-2.7.
|
260
|
-
meerschaum-2.7.
|
261
|
-
meerschaum-2.7.
|
256
|
+
meerschaum-2.7.8.dist-info/LICENSE,sha256=jG2zQEdRNt88EgHUWPpXVWmOrOduUQRx7MnYV9YIPaw,11359
|
257
|
+
meerschaum-2.7.8.dist-info/METADATA,sha256=85GGmc3PHmkk_G9gr5QCl8IqADTfa76D_u6PoZC2uzc,24489
|
258
|
+
meerschaum-2.7.8.dist-info/NOTICE,sha256=OTA9Fcthjf5BRvWDDIcBC_xfLpeDV-RPZh3M-HQBRtQ,114
|
259
|
+
meerschaum-2.7.8.dist-info/WHEEL,sha256=In9FTNxeP60KnTkGw7wk6mJPYd_dQSjEZmXdBdMCI-8,91
|
260
|
+
meerschaum-2.7.8.dist-info/entry_points.txt,sha256=5YBVzibw-0rNA_1VjB16z5GABsOGf-CDhW4yqH8C7Gc,88
|
261
|
+
meerschaum-2.7.8.dist-info/top_level.txt,sha256=bNoSiDj0El6buocix-FRoAtJOeq1qOF5rRm2u9i7Q6A,11
|
262
|
+
meerschaum-2.7.8.dist-info/zip-safe,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
|
263
|
+
meerschaum-2.7.8.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|