meerschaum 2.7.6__py3-none-any.whl → 2.7.8__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/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
|