meerschaum 2.5.0__py3-none-any.whl → 2.6.0.dev1__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.
Files changed (35) hide show
  1. meerschaum/_internal/arguments/_parser.py +6 -1
  2. meerschaum/_internal/entry.py +16 -5
  3. meerschaum/actions/edit.py +6 -6
  4. meerschaum/actions/sql.py +12 -11
  5. meerschaum/api/dash/pipes.py +95 -13
  6. meerschaum/api/routes/_webterm.py +1 -0
  7. meerschaum/config/_edit.py +46 -19
  8. meerschaum/config/_read_config.py +20 -9
  9. meerschaum/config/_version.py +1 -1
  10. meerschaum/config/stack/__init__.py +1 -1
  11. meerschaum/connectors/sql/_pipes.py +80 -24
  12. meerschaum/connectors/sql/_sql.py +29 -10
  13. meerschaum/connectors/valkey/_pipes.py +1 -1
  14. meerschaum/core/Pipe/__init__.py +8 -9
  15. meerschaum/core/Pipe/_attributes.py +33 -11
  16. meerschaum/core/Pipe/_data.py +26 -7
  17. meerschaum/core/Pipe/_dtypes.py +4 -4
  18. meerschaum/core/Pipe/_fetch.py +1 -1
  19. meerschaum/core/Pipe/_sync.py +16 -4
  20. meerschaum/core/Pipe/_verify.py +1 -1
  21. meerschaum/utils/dataframe.py +58 -31
  22. meerschaum/utils/dtypes/__init__.py +16 -5
  23. meerschaum/utils/dtypes/sql.py +58 -28
  24. meerschaum/utils/misc.py +49 -16
  25. meerschaum/utils/packages/_packages.py +2 -1
  26. meerschaum/utils/schedule.py +7 -5
  27. meerschaum/utils/sql.py +224 -40
  28. {meerschaum-2.5.0.dist-info → meerschaum-2.6.0.dev1.dist-info}/METADATA +5 -3
  29. {meerschaum-2.5.0.dist-info → meerschaum-2.6.0.dev1.dist-info}/RECORD +35 -35
  30. {meerschaum-2.5.0.dist-info → meerschaum-2.6.0.dev1.dist-info}/WHEEL +1 -1
  31. {meerschaum-2.5.0.dist-info → meerschaum-2.6.0.dev1.dist-info}/LICENSE +0 -0
  32. {meerschaum-2.5.0.dist-info → meerschaum-2.6.0.dev1.dist-info}/NOTICE +0 -0
  33. {meerschaum-2.5.0.dist-info → meerschaum-2.6.0.dev1.dist-info}/entry_points.txt +0 -0
  34. {meerschaum-2.5.0.dist-info → meerschaum-2.6.0.dev1.dist-info}/top_level.txt +0 -0
  35. {meerschaum-2.5.0.dist-info → meerschaum-2.6.0.dev1.dist-info}/zip-safe +0 -0
meerschaum/utils/sql.py CHANGED
@@ -16,6 +16,7 @@ from meerschaum.utils.dtypes.sql import (
16
16
  PD_TO_DB_DTYPES_FLAVORS,
17
17
  get_pd_type_from_db_type as get_pd_type,
18
18
  get_db_type_from_pd_type as get_db_type,
19
+ TIMEZONE_NAIVE_FLAVORS,
19
20
  )
20
21
  from meerschaum.utils.warnings import warn
21
22
  from meerschaum.utils.debug import dprint
@@ -186,8 +187,11 @@ columns_types_queries = {
186
187
  COLUMN_NAME AS [column],
187
188
  DATA_TYPE AS [type]
188
189
  FROM {db_prefix}INFORMATION_SCHEMA.COLUMNS
189
- WHERE TABLE_NAME LIKE '{table}%'
190
- OR TABLE_NAME LIKE '{table_trunc}%'
190
+ WHERE TABLE_NAME IN (
191
+ '{table}',
192
+ '{table_trunc}'
193
+ )
194
+
191
195
  """,
192
196
  'mysql': """
193
197
  SELECT
@@ -349,9 +353,8 @@ def dateadd_str(
349
353
  "CAST('2022-01-01 00:00:00' AS TIMESTAMP) + INTERVAL '1 day'"
350
354
 
351
355
  """
352
- from meerschaum.utils.debug import dprint
353
356
  from meerschaum.utils.packages import attempt_import
354
- from meerschaum.utils.warnings import error
357
+ from meerschaum.utils.dtypes.sql import get_db_type_from_pd_type
355
358
  dateutil_parser = attempt_import('dateutil.parser')
356
359
  if 'int' in str(type(begin)).lower():
357
360
  return str(begin)
@@ -379,26 +382,32 @@ def dateadd_str(
379
382
  begin = begin.astimezone(timezone.utc)
380
383
  begin = (
381
384
  f"'{begin.replace(tzinfo=None)}'"
382
- if isinstance(begin, datetime)
385
+ if isinstance(begin, datetime) and flavor in TIMEZONE_NAIVE_FLAVORS
383
386
  else f"'{begin}'"
384
387
  )
385
388
 
389
+ dt_is_utc = begin_time.tzinfo is not None if begin_time is not None else '+' in str(begin)
390
+ db_type = get_db_type_from_pd_type(
391
+ ('datetime64[ns, UTC]' if dt_is_utc else 'datetime64[ns]'),
392
+ flavor=flavor,
393
+ )
394
+
386
395
  da = ""
387
396
  if flavor in ('postgresql', 'timescaledb', 'cockroachdb', 'citus'):
388
397
  begin = (
389
- f"CAST({begin} AS TIMESTAMP)" if begin != 'now'
390
- else "CAST(NOW() AT TIME ZONE 'utc' AS TIMESTAMP)"
398
+ f"CAST({begin} AS {db_type})" if begin != 'now'
399
+ else "CAST(NOW() AT TIME ZONE 'utc' AS {db_type})"
391
400
  )
392
401
  da = begin + (f" + INTERVAL '{number} {datepart}'" if number != 0 else '')
393
402
 
394
403
  elif flavor == 'duckdb':
395
- begin = f"CAST({begin} AS TIMESTAMP)" if begin != 'now' else 'NOW()'
404
+ begin = f"CAST({begin} AS {db_type})" if begin != 'now' else 'NOW()'
396
405
  da = begin + (f" + INTERVAL '{number} {datepart}'" if number != 0 else '')
397
406
 
398
407
  elif flavor in ('mssql',):
399
408
  if begin_time and begin_time.microsecond != 0:
400
409
  begin = begin[:-4] + "'"
401
- begin = f"CAST({begin} AS DATETIME)" if begin != 'now' else 'GETUTCDATE()'
410
+ begin = f"CAST({begin} AS {db_type})" if begin != 'now' else 'GETUTCDATE()'
402
411
  da = f"DATEADD({datepart}, {number}, {begin})" if number != 0 else begin
403
412
 
404
413
  elif flavor in ('mysql', 'mariadb'):
@@ -425,9 +434,9 @@ def dateadd_str(
425
434
 
426
435
 
427
436
  def test_connection(
428
- self,
429
- **kw: Any
430
- ) -> Union[bool, None]:
437
+ self,
438
+ **kw: Any
439
+ ) -> Union[bool, None]:
431
440
  """
432
441
  Test if a successful connection to the database may be made.
433
442
 
@@ -454,11 +463,11 @@ def test_connection(
454
463
 
455
464
 
456
465
  def get_distinct_col_count(
457
- col: str,
458
- query: str,
459
- connector: Optional[mrsm.connectors.sql.SQLConnector] = None,
460
- debug: bool = False
461
- ) -> Optional[int]:
466
+ col: str,
467
+ query: str,
468
+ connector: Optional[mrsm.connectors.sql.SQLConnector] = None,
469
+ debug: bool = False
470
+ ) -> Optional[int]:
462
471
  """
463
472
  Returns the number of distinct items in a column of a SQL query.
464
473
 
@@ -624,10 +633,10 @@ def truncate_item_name(item: str, flavor: str) -> str:
624
633
 
625
634
 
626
635
  def build_where(
627
- params: Dict[str, Any],
628
- connector: Optional[meerschaum.connectors.sql.SQLConnector] = None,
629
- with_where: bool = True,
630
- ) -> str:
636
+ params: Dict[str, Any],
637
+ connector: Optional[meerschaum.connectors.sql.SQLConnector] = None,
638
+ with_where: bool = True,
639
+ ) -> str:
631
640
  """
632
641
  Build the `WHERE` clause based on the input criteria.
633
642
 
@@ -769,7 +778,7 @@ def table_exists(
769
778
  ----------
770
779
  table: str:
771
780
  The name of the table in question.
772
-
781
+
773
782
  connector: mrsm.connectors.sql.SQLConnector
774
783
  The connector to the database which holds the table.
775
784
 
@@ -806,7 +815,7 @@ def get_sqlalchemy_table(
806
815
  ----------
807
816
  table: str
808
817
  The name of the table on the database. Does not need to be escaped.
809
-
818
+
810
819
  connector: Optional[meerschaum.connectors.sql.SQLConnector], default None:
811
820
  The connector to the database which holds the table.
812
821
 
@@ -822,7 +831,7 @@ def get_sqlalchemy_table(
822
831
 
823
832
  Returns
824
833
  -------
825
- A `sqlalchemy.Table` object for the table.
834
+ A `sqlalchemy.Table` object for the table.
826
835
 
827
836
  """
828
837
  if connector is None:
@@ -1325,35 +1334,48 @@ def get_rename_table_queries(
1325
1334
 
1326
1335
  if_exists_str = "IF EXISTS" if flavor in DROP_IF_EXISTS_FLAVORS else ""
1327
1336
  if flavor == 'duckdb':
1328
- return [
1329
- get_create_table_query(f"SELECT * FROM {old_table_name}", tmp_table, 'duckdb', schema),
1330
- get_create_table_query(f"SELECT * FROM {tmp_table_name}", new_table, 'duckdb', schema),
1331
- f"DROP TABLE {if_exists_str} {tmp_table_name}",
1332
- f"DROP TABLE {if_exists_str} {old_table_name}",
1333
- ]
1337
+ return (
1338
+ get_create_table_queries(
1339
+ f"SELECT * FROM {old_table_name}",
1340
+ tmp_table,
1341
+ 'duckdb',
1342
+ schema,
1343
+ ) + get_create_table_queries(
1344
+ f"SELECT * FROM {tmp_table_name}",
1345
+ new_table,
1346
+ 'duckdb',
1347
+ schema,
1348
+ ) + [
1349
+ f"DROP TABLE {if_exists_str} {tmp_table_name}",
1350
+ f"DROP TABLE {if_exists_str} {old_table_name}",
1351
+ ]
1352
+ )
1334
1353
 
1335
1354
  return [f"ALTER TABLE {old_table_name} RENAME TO {new_table_name}"]
1336
1355
 
1337
1356
 
1338
1357
  def get_create_table_query(
1339
- query: str,
1358
+ query_or_dtypes: Union[str, Dict[str, str]],
1340
1359
  new_table: str,
1341
1360
  flavor: str,
1342
1361
  schema: Optional[str] = None,
1343
1362
  ) -> str:
1344
1363
  """
1364
+ NOTE: This function is deprecated. Use `get_create_index_queries()` instead.
1365
+
1345
1366
  Return a query to create a new table from a `SELECT` query.
1346
1367
 
1347
1368
  Parameters
1348
1369
  ----------
1349
- query: str
1370
+ query: Union[str, Dict[str, str]]
1350
1371
  The select query to use for the creation of the table.
1372
+ If a dictionary is provided, return a `CREATE TABLE` query from the given `dtypes` columns.
1351
1373
 
1352
1374
  new_table: str
1353
1375
  The unquoted name of the new table.
1354
1376
 
1355
1377
  flavor: str
1356
- The database flavor to use for the query (e.g. `'mssql'`, `'postgresql'`.
1378
+ The database flavor to use for the query (e.g. `'mssql'`, `'postgresql'`).
1357
1379
 
1358
1380
  schema: Optional[str], default None
1359
1381
  The schema on which the table will reside.
@@ -1362,26 +1384,164 @@ def get_create_table_query(
1362
1384
  -------
1363
1385
  A `CREATE TABLE` (or `SELECT INTO`) query for the database flavor.
1364
1386
  """
1387
+ return get_create_table_queries(
1388
+ query_or_dtypes,
1389
+ new_table,
1390
+ flavor,
1391
+ schema=schema,
1392
+ primary_key=None,
1393
+ )[0]
1394
+
1395
+
1396
+ def get_create_table_queries(
1397
+ query_or_dtypes: Union[str, Dict[str, str]],
1398
+ new_table: str,
1399
+ flavor: str,
1400
+ schema: Optional[str] = None,
1401
+ primary_key: Optional[str] = None,
1402
+ ) -> List[str]:
1403
+ """
1404
+ Return a query to create a new table from a `SELECT` query or a `dtypes` dictionary.
1405
+
1406
+ Parameters
1407
+ ----------
1408
+ query_or_dtypes: Union[str, Dict[str, str]]
1409
+ The select query to use for the creation of the table.
1410
+ If a dictionary is provided, return a `CREATE TABLE` query from the given `dtypes` columns.
1411
+
1412
+ new_table: str
1413
+ The unquoted name of the new table.
1414
+
1415
+ flavor: str
1416
+ The database flavor to use for the query (e.g. `'mssql'`, `'postgresql'`).
1417
+
1418
+ schema: Optional[str], default None
1419
+ The schema on which the table will reside.
1420
+
1421
+ primary_key: Optional[str], default None
1422
+ If provided, designate this column as the primary key in the new table.
1423
+
1424
+ Returns
1425
+ -------
1426
+ A `CREATE TABLE` (or `SELECT INTO`) query for the database flavor.
1427
+ """
1428
+ if not isinstance(query_or_dtypes, (str, dict)):
1429
+ raise TypeError("`query_or_dtypes` must be a query or a dtypes dictionary.")
1430
+
1431
+ method = (
1432
+ _get_create_table_query_from_cte
1433
+ if isinstance(query_or_dtypes, str)
1434
+ else _get_create_table_query_from_dtypes
1435
+ )
1436
+ return method(
1437
+ query_or_dtypes,
1438
+ new_table,
1439
+ flavor,
1440
+ schema=schema,
1441
+ primary_key=primary_key,
1442
+ )
1443
+
1444
+
1445
+ def _get_create_table_query_from_dtypes(
1446
+ dtypes: Dict[str, str],
1447
+ new_table: str,
1448
+ flavor: str,
1449
+ schema: Optional[str] = None,
1450
+ primary_key: Optional[str] = None,
1451
+ ) -> List[str]:
1452
+ """
1453
+ Create a new table from a `dtypes` dictionary.
1454
+ """
1455
+ from meerschaum.utils.dtypes.sql import get_db_type_from_pd_type, AUTO_INCREMENT_COLUMN_FLAVORS
1456
+ if not dtypes and not primary_key:
1457
+ raise ValueError(f"Expecting columns for table '{new_table}'.")
1458
+
1459
+ cols_types = (
1460
+ [(primary_key, get_db_type_from_pd_type(dtypes.get(primary_key, 'int')))]
1461
+ if primary_key
1462
+ else []
1463
+ ) + [
1464
+ (col, get_db_type_from_pd_type(typ))
1465
+ for col, typ in dtypes.items()
1466
+ if col != primary_key
1467
+ ]
1468
+
1469
+ table_name = sql_item_name(new_table, schema=schema, flavor=flavor)
1470
+ query = f"CREATE TABLE {table_name} ("
1471
+ if primary_key:
1472
+ col_db_type = cols_types[0][1]
1473
+ auto_increment = (' ' + AUTO_INCREMENT_COLUMN_FLAVORS.get(
1474
+ flavor,
1475
+ AUTO_INCREMENT_COLUMN_FLAVORS['default']
1476
+ )) if primary_key not in dtypes else ''
1477
+ col_name = sql_item_name(primary_key, flavor=flavor, schema=None)
1478
+
1479
+ if flavor == 'sqlite':
1480
+ query += f"\n {col_name} INTEGER PRIMARY KEY{auto_increment} NOT NULL,"
1481
+ else:
1482
+ query += f"\n {col_name} {col_db_type} PRIMARY KEY{auto_increment} NOT NULL,"
1483
+
1484
+ for col, db_type in cols_types:
1485
+ if col == primary_key:
1486
+ continue
1487
+ col_name = sql_item_name(col, schema=None, flavor=flavor)
1488
+ query += f"\n {col_name} {db_type},"
1489
+ query = query[:-1]
1490
+ query += "\n)"
1491
+
1492
+ return [query]
1493
+
1494
+
1495
+ def _get_create_table_query_from_cte(
1496
+ query: str,
1497
+ new_table: str,
1498
+ flavor: str,
1499
+ schema: Optional[str] = None,
1500
+ primary_key: Optional[str] = None,
1501
+ ) -> List[str]:
1502
+ """
1503
+ Create a new table from a CTE query.
1504
+ """
1365
1505
  import textwrap
1506
+ from meerschaum.utils.dtypes.sql import AUTO_INCREMENT_COLUMN_FLAVORS
1366
1507
  create_cte = 'create_query'
1367
1508
  create_cte_name = sql_item_name(create_cte, flavor, None)
1368
1509
  new_table_name = sql_item_name(new_table, flavor, schema)
1510
+ primary_key_constraint_name = (
1511
+ sql_item_name(f'pk_{new_table}', flavor, None)
1512
+ if primary_key
1513
+ else None
1514
+ )
1515
+ primary_key_name = (
1516
+ sql_item_name(primary_key, flavor, None)
1517
+ if primary_key
1518
+ else None
1519
+ )
1520
+ auto_increment = AUTO_INCREMENT_COLUMN_FLAVORS.get(
1521
+ flavor,
1522
+ AUTO_INCREMENT_COLUMN_FLAVORS['default']
1523
+ )
1369
1524
  if flavor in ('mssql',):
1370
1525
  query = query.lstrip()
1371
1526
  if 'with ' in query.lower():
1372
1527
  final_select_ix = query.lower().rfind('select')
1373
- return (
1528
+ create_table_query = (
1374
1529
  query[:final_select_ix].rstrip() + ',\n'
1375
1530
  + f"{create_cte_name} AS (\n"
1376
1531
  + query[final_select_ix:]
1377
1532
  + "\n)\n"
1378
1533
  + f"SELECT *\nINTO {new_table_name}\nFROM {create_cte_name}"
1379
1534
  )
1380
-
1381
- create_table_query = f"""
1382
- SELECT *
1383
- INTO {new_table_name}
1384
- FROM ({query}) AS {create_cte_name}
1535
+ else:
1536
+ create_table_query = f"""
1537
+ SELECT *
1538
+ INTO {new_table_name}
1539
+ FROM ({query}) AS {create_cte_name}
1540
+ """
1541
+
1542
+ alter_type_query = f"""
1543
+ ALTER TABLE {new_table_name}
1544
+ ADD CONSTRAINT {primary_key_constraint_name} PRIMARY KEY ({primary_key_name})
1385
1545
  """
1386
1546
  elif flavor in (None,):
1387
1547
  create_table_query = f"""
@@ -1390,12 +1550,22 @@ def get_create_table_query(
1390
1550
  SELECT *
1391
1551
  FROM {create_cte_name}
1392
1552
  """
1553
+
1554
+ alter_type_query = f"""
1555
+ ALTER TABLE {new_table_name}
1556
+ ADD PRIMARY KEY ({primary_key_name})
1557
+ """
1393
1558
  elif flavor in ('sqlite', 'mysql', 'mariadb', 'duckdb', 'oracle'):
1394
1559
  create_table_query = f"""
1395
1560
  CREATE TABLE {new_table_name} AS
1396
1561
  SELECT *
1397
1562
  FROM ({query})""" + (f""" AS {create_cte_name}""" if flavor != 'oracle' else '') + """
1398
1563
  """
1564
+
1565
+ alter_type_query = f"""
1566
+ ALTER TABLE {new_table_name}
1567
+ ADD PRIMARY KEY ({primary_key_name})
1568
+ """
1399
1569
  else:
1400
1570
  create_table_query = f"""
1401
1571
  SELECT *
@@ -1403,7 +1573,21 @@ def get_create_table_query(
1403
1573
  FROM ({query}) AS {create_cte_name}
1404
1574
  """
1405
1575
 
1406
- return textwrap.dedent(create_table_query)
1576
+ alter_type_query = f"""
1577
+ ALTER TABLE {new_table_name}
1578
+ ADD PRIMARY KEY ({primary_key_name})
1579
+ """
1580
+
1581
+ create_table_query = textwrap.dedent(create_table_query)
1582
+ if not primary_key:
1583
+ return [create_table_query]
1584
+
1585
+ alter_type_query = textwrap.dedent(alter_type_query)
1586
+
1587
+ return [
1588
+ create_table_query,
1589
+ alter_type_query,
1590
+ ]
1407
1591
 
1408
1592
 
1409
1593
  def wrap_query_with_cte(
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: meerschaum
3
- Version: 2.5.0
3
+ Version: 2.6.0.dev1
4
4
  Summary: Sync Time-Series Pipes with Meerschaum
5
5
  Home-page: https://meerschaum.io
6
6
  Author: Bennett Meares
@@ -39,7 +39,8 @@ Requires-Dist: websockets >=11.0.3 ; extra == 'api'
39
39
  Requires-Dist: fastapi >=0.111.0 ; extra == 'api'
40
40
  Requires-Dist: fastapi-login >=1.7.2 ; extra == 'api'
41
41
  Requires-Dist: python-multipart >=0.0.9 ; extra == 'api'
42
- Requires-Dist: httpx >=0.24.1 ; extra == 'api'
42
+ Requires-Dist: httpx >=0.27.2 ; extra == 'api'
43
+ Requires-Dist: httpcore >=1.0.6 ; extra == 'api'
43
44
  Requires-Dist: valkey >=6.0.0 ; extra == 'api'
44
45
  Requires-Dist: numpy >=1.18.5 ; extra == 'api'
45
46
  Requires-Dist: pandas[parquet] >=2.0.1 ; extra == 'api'
@@ -258,7 +259,8 @@ Requires-Dist: websockets >=11.0.3 ; extra == 'full'
258
259
  Requires-Dist: fastapi >=0.111.0 ; extra == 'full'
259
260
  Requires-Dist: fastapi-login >=1.7.2 ; extra == 'full'
260
261
  Requires-Dist: python-multipart >=0.0.9 ; extra == 'full'
261
- Requires-Dist: httpx >=0.24.1 ; extra == 'full'
262
+ Requires-Dist: httpx >=0.27.2 ; extra == 'full'
263
+ Requires-Dist: httpcore >=1.0.6 ; extra == 'full'
262
264
  Requires-Dist: valkey >=6.0.0 ; extra == 'full'
263
265
  Provides-Extra: gui
264
266
  Requires-Dist: toga >=0.3.0-dev29 ; extra == 'gui'
@@ -1,10 +1,10 @@
1
1
  meerschaum/__init__.py,sha256=6bn5zz7VInDP4fE_FGBMzJYrM6rQhBMJNQqsf1pU7eI,1701
2
2
  meerschaum/__main__.py,sha256=r5UjYxH1WA6dGG9YGBPul5xOdgF3Iwl0X4dWDtXU-30,2646
3
3
  meerschaum/_internal/__init__.py,sha256=ilC7utfKtin7GAvuN34fKyUQYfPyqH0Mm3MJF5iyEf4,169
4
- meerschaum/_internal/entry.py,sha256=6attwMETUtFUtWq17asaSaNoeEvrwSLIVV_e5RX0pCc,12235
4
+ meerschaum/_internal/entry.py,sha256=Y1m2ar3TWBo_XntPL1P9ehUpjEAfXp2ZGZ-V6r5fXWQ,12438
5
5
  meerschaum/_internal/arguments/__init__.py,sha256=_nSKKVLXNsJeSv-buxEZsx8_c0BAbkhRyE4nT6Bv6q0,541
6
6
  meerschaum/_internal/arguments/_parse_arguments.py,sha256=H492J571CetGVIEzOZhwQVS3bcm4t6hjWg8Gsf6dw0Y,16340
7
- meerschaum/_internal/arguments/_parser.py,sha256=l2RYIn-1MEpjyUz2yczkeeuwg2liYaO2MNvEZ4Amk1o,16364
7
+ meerschaum/_internal/arguments/_parser.py,sha256=h0OQbfadr7h03Vyqw2B326BJ-feHRYZFWFbZ_ge9DIo,16486
8
8
  meerschaum/_internal/docs/__init__.py,sha256=ZQYHWo6n0kfLLkyG36YXqTYvv2Pc7it5HZHMylT6cBA,126
9
9
  meerschaum/_internal/docs/index.py,sha256=8nU5Ck4I8ZrTTT2yWRCJYx92g2OfL23LWNZZ2eFSXaU,24585
10
10
  meerschaum/_internal/gui/__init__.py,sha256=KF6Opae0aBOjIndMZ2txoPs7ozCXRlR-lcTsicLO7fc,1313
@@ -30,7 +30,7 @@ meerschaum/actions/copy.py,sha256=NwTwj3IMdK1TFRuJXCxsbIEFNVeoNGoMkvE6H1ZQZzo,68
30
30
  meerschaum/actions/deduplicate.py,sha256=puYyxeFYEUy1Sd2IOcZB2e6MrNxAZl2bTLmNzFDkCiw,1167
31
31
  meerschaum/actions/delete.py,sha256=7hW4Ff_WSczW8If-EEDbEUU0U0XzV3fVbFb9gED4S9Q,19032
32
32
  meerschaum/actions/drop.py,sha256=Hd5h4rrWd7qL2rTqglsTonUsEoH7qQlsfqNFSHGeqr0,2453
33
- meerschaum/actions/edit.py,sha256=bJ9DaPXGOySjq_rGFPVlbK99Ls9ajbQ5q5MksX_3WVY,15440
33
+ meerschaum/actions/edit.py,sha256=gpIp5mc6Jc9A3_EdkDE0sK1eOardEaDzEj-eDdbOMPk,15419
34
34
  meerschaum/actions/install.py,sha256=jdhOrR_KlvinTKr0YJNkUHsnh5EY6OzA7cRq0Vnp1oU,7494
35
35
  meerschaum/actions/login.py,sha256=fNgsgkrFCn9wBQJY50SQhz2PwsN_TvEYYHnXK3JG4ig,4206
36
36
  meerschaum/actions/os.py,sha256=dtoppoBhLzW3rLNF0SFovEfNxA4WJWt_9WrOGlS5KbA,2251
@@ -42,7 +42,7 @@ meerschaum/actions/restart.py,sha256=6ffp3-X9eTEgunVSdD41HnOwqp71yjuSAmXJ5j39ONI
42
42
  meerschaum/actions/setup.py,sha256=KkAGWcgwzl_L6A19fTmTX1KtBjW2FwD8QenLjPy0mQQ,3205
43
43
  meerschaum/actions/sh.py,sha256=hSkGNTVqP5dNjhJ64zy3V3VCFPTKnDlH3PxdKdxtkGQ,1990
44
44
  meerschaum/actions/show.py,sha256=T8Ol1o-762cI9rlUzd-8svvwgT4slYXYfOPQETh9Koo,28446
45
- meerschaum/actions/sql.py,sha256=8BSvlnccfEqLrscLq67Toa5D4FJ7I598IdxEe_yzmV8,4263
45
+ meerschaum/actions/sql.py,sha256=vAsxbSl-Hkw3wfrM1BLnKex_kJrZwIJICAXysprQGWM,4220
46
46
  meerschaum/actions/stack.py,sha256=ZwrCTGJ0x3jjZkRieWcvqasQHYCqNtB1HYvTX-r3Z3g,5996
47
47
  meerschaum/actions/start.py,sha256=26i2Pqg3c_Ltw3lgYzl3sZL2wG0XBgOuJrPK8qPPHdI,21281
48
48
  meerschaum/actions/stop.py,sha256=5fdUw70YN-yuUWrC-NhA88cxr9FZ5NbssbQ8xXO8nFU,4632
@@ -62,7 +62,7 @@ meerschaum/api/dash/connectors.py,sha256=nJxBOFldtCMJLYjUSVYZwX5BO-LNjTNHgoEaXe-
62
62
  meerschaum/api/dash/graphs.py,sha256=wJUDWzcLN8-C3xko6rj0F2v7Rt8YDkSXoVkkXJjYGIk,2046
63
63
  meerschaum/api/dash/jobs.py,sha256=mj9STE6AaQY4fwkjD1JcYRG0iW3VEcP04bO1SlKgiXw,7681
64
64
  meerschaum/api/dash/keys.py,sha256=hzEVeN60SAfVTVSO5lajGaykxRIKGhj9Ph00HRJnNoE,12598
65
- meerschaum/api/dash/pipes.py,sha256=Bgp33bGkIFcqjrLiUxEubpxcXVVssY8bzwi7kLp6UQ8,21814
65
+ meerschaum/api/dash/pipes.py,sha256=WleVXiRGpR0A-moypjpOx3tSciUvkSkI6nJMkFgBXB8,25407
66
66
  meerschaum/api/dash/plugins.py,sha256=KdfG04f6SsUpBg-nm7MUJegFGuElOj-GAkxDX98hi60,3768
67
67
  meerschaum/api/dash/sessions.py,sha256=-y5p4MYKh1eFzppkBfMsd6T7-rJs1nYS2-4fbVRAeRA,5029
68
68
  meerschaum/api/dash/sync.py,sha256=9lt7IRdG-fe9gf_ZO_viPiGlerX7ic6r_VFocv3I51A,504
@@ -128,25 +128,25 @@ meerschaum/api/routes/_pipes.py,sha256=g88AU_NUM6tlX3bFl4EOGiQWZYqvDxDFlaLIYbYn1
128
128
  meerschaum/api/routes/_plugins.py,sha256=vR6-uTJraY1YEJMuRvds1-xFLB2mexxnp2dJwN_0rVo,6216
129
129
  meerschaum/api/routes/_users.py,sha256=SfAkZFKrKnGjpzj8SFIKzPemzQJOH3oB72h19EaUvcQ,7204
130
130
  meerschaum/api/routes/_version.py,sha256=2t-nw_9IxCVZCNEar0LOwmut2zsClRVHjiOOUx16cu0,825
131
- meerschaum/api/routes/_webterm.py,sha256=twjQyVReYwXypvxLPICYWjB5hR-XHzUWEuYRbSq27nc,3834
131
+ meerschaum/api/routes/_webterm.py,sha256=gow_xCsojGI37ZZDVfv2gdM18r_H2b2MR0ovFuG0uJ8,3872
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
135
  meerschaum/config/_default.py,sha256=gGkF9dGiwiKtMSXAE85LNhZ8ZXQ5EbeBPTSG0A9MBNQ,5675
136
- meerschaum/config/_edit.py,sha256=_kabgFbJdI5kcLs-JIsoaTo0JdyxnPnBdrlTyTAgPm8,8236
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
141
  meerschaum/config/_paths.py,sha256=Ycuj4TYTzXO-6JkWX40fMK0CVV6L5HG_rPlCi-Ckhto,9763
142
142
  meerschaum/config/_preprocess.py,sha256=-AEA8m_--KivZwTQ1sWN6LTn5sio_fUr2XZ51BO6wLs,1220
143
- meerschaum/config/_read_config.py,sha256=oxnLjuhy6JBBld886FkBX07wUdkpzEzTItYMUa9qw1Q,14688
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=wtE11BYLrlYRUUbwWnx12ho0mgFDv-guHaABMWLfMLY,71
146
+ meerschaum/config/_version.py,sha256=cA0isehD9CP_Cc43s4BvRQP7zVBmH2gobsdUOsN_05o,76
147
147
  meerschaum/config/paths.py,sha256=JjibeGN3YAdSNceRwsd42aNmeUrIgM6ndzC8qZAmNI0,621
148
148
  meerschaum/config/resources/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
149
- meerschaum/config/stack/__init__.py,sha256=gGVxXgNnGb9u25iF__IiNPlZt1BLUVmHmFJ0jvnJg3Q,10548
149
+ meerschaum/config/stack/__init__.py,sha256=2UukC0Lmk-aVL1o1qXzumqmuIrw3vu9fD7iCuz4XD4I,10544
150
150
  meerschaum/config/stack/grafana/__init__.py,sha256=LNXQw2FvHKrD68RDhqDmi2wJjAHaKw9IWx8rNuyWEPo,2010
151
151
  meerschaum/config/stack/mosquitto/__init__.py,sha256=-OwOjq8KiBoSH_pmgCAAF3Dp3CRD4KgAEdimZSadROs,186
152
152
  meerschaum/config/stack/mosquitto/resources/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -176,9 +176,9 @@ meerschaum/connectors/sql/_cli.py,sha256=1SgnWeMIAihoxp4FzbNrcq1npXf0dSOQnCntpU9
176
176
  meerschaum/connectors/sql/_create_engine.py,sha256=zqeu1xHOw3n3Zgfjx-diy2aoynfdOlfOjwFuRrzB028,10452
177
177
  meerschaum/connectors/sql/_fetch.py,sha256=J5e9EZrb70neXq8p78LFTTJiVukMIEKHuTXlILHDDGI,13005
178
178
  meerschaum/connectors/sql/_instance.py,sha256=3KJI3ImwWAJkUfdZIrSL24pcW6Nic8wo5IUeGth9HP4,6459
179
- meerschaum/connectors/sql/_pipes.py,sha256=8qoiv4nmvU4TVMTtvzWbPcqhq-izZ-C2338t4NFGQ0I,101302
179
+ meerschaum/connectors/sql/_pipes.py,sha256=ztrRH4DXiAqNd8uiAWKwCZJlpboeTqtiasbkzkuMisc,103072
180
180
  meerschaum/connectors/sql/_plugins.py,sha256=wbxcNxqTtjfDsxPvdVGTllasYf6NHHzODaQ72hEUSBQ,8135
181
- meerschaum/connectors/sql/_sql.py,sha256=gw8dy6-s8VqxANO9-tXIXFqCwPT_GrktG81AAQgqmPE,36032
181
+ meerschaum/connectors/sql/_sql.py,sha256=ymlfzdVdrn9mzSBvseuOT9_H4L5v7XE7rUuiWeaIoVA,36907
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,26 +187,26 @@ meerschaum/connectors/sql/tables/types.py,sha256=Jc_MTHIBM-KHpQt__Lckp39CeOo7tGO
187
187
  meerschaum/connectors/valkey/_ValkeyConnector.py,sha256=ReW8ZaZtXO0QDhrt0dMUIn244Ok2gfoKaMmGcpFIYIo,15755
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=7GNDGoVDIULyGUjUisckErvRlrcnN4WkML95n0yb1N8,22475
190
+ meerschaum/connectors/valkey/_pipes.py,sha256=XPmW4KKW3d3g7BRzKbqQ2wrjC3zAtZG96ebbP19jLlM,22480
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=2dOEf8e3uwkwIac2sMbu3RZDyAAFzD7h6z9X-Lyb1Ds,17649
195
- meerschaum/core/Pipe/_attributes.py,sha256=tB6v-KT7CbBaNTvgLbYFMpE4M73nicql1KWO9QT2ctg,15490
194
+ meerschaum/core/Pipe/__init__.py,sha256=nr2o00q0vPGwvWiBm9HAbqnbzxkQxR3R9nnsIxIj4ZY,17880
195
+ meerschaum/core/Pipe/_attributes.py,sha256=AVKhg0nE_Auf2DvSSCc4s6IlLadPa322lOR006MR6Ww,16063
196
196
  meerschaum/core/Pipe/_bootstrap.py,sha256=evyi07kkzAVMj66HfZkbYdcWk_oHUDsl6f13EnSPMYs,7723
197
197
  meerschaum/core/Pipe/_clear.py,sha256=yFAYQnDmL3m6DzyAutgnBDXSOL9gjIrLvlQXd86YFV0,2193
198
198
  meerschaum/core/Pipe/_copy.py,sha256=PcOeNUb0B4-HehTAAnBpjyT4uLLTR6VQOarY0SFA9wk,2912
199
- meerschaum/core/Pipe/_data.py,sha256=azVRQHRe--XH2WsM9dWyaYANj8W_iotUzfwFfHpWCBU,22684
199
+ meerschaum/core/Pipe/_data.py,sha256=7V3TsdCqwA83ytPV4CeU17A6Vq4J-5V9DPH47MFhIHc,23494
200
200
  meerschaum/core/Pipe/_deduplicate.py,sha256=ZiuYZBb6d8tUkgHp6Nj8Xle20u4sjxqW45Rk2N-up54,10191
201
201
  meerschaum/core/Pipe/_delete.py,sha256=1geNp9BgrocXP1gt76dMbnlJWKYFMuSNqPFA4K4-hXE,2118
202
202
  meerschaum/core/Pipe/_drop.py,sha256=gIKdHWm0RsIgC2nu768MtFnPbCXyiJjNxaiT1obyuIo,1036
203
- meerschaum/core/Pipe/_dtypes.py,sha256=_1SX_15zUNnVQaoX7TgBpwL6PZ_LMSz0grNCBwZ2qnI,3778
203
+ meerschaum/core/Pipe/_dtypes.py,sha256=8cp1TwmhXjLvQ1OpgKNdpIP9af0OxkfqiphXNuCNvRQ,3818
204
204
  meerschaum/core/Pipe/_edit.py,sha256=HrKWe9vhqKaNOjOcJzW5BNbaUBPIbgNAhJEK8OMsy7c,8416
205
- meerschaum/core/Pipe/_fetch.py,sha256=LtYqZSN2kwc5Tl2gQ5kSmGN7Ombv86k1zDNTP3SUF1k,5417
205
+ meerschaum/core/Pipe/_fetch.py,sha256=ejvqXIgRT22x6wN8-UXk1WBwHHmUafjDNLx1ufQxd-A,5422
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=rEP6Ijs3PG_cTtffqijqxabyyhZFqJicQCNj5Ea3NHw,33042
209
- meerschaum/core/Pipe/_verify.py,sha256=sPtY1DgUJ2E5FJp0hJ_IzrQQe1DmfAqJFWS24e2wr3w,14202
208
+ meerschaum/core/Pipe/_sync.py,sha256=qob_C8kPsus2k6As34necPyqECVqfQGGrrfa-DcSHhE,33497
209
+ meerschaum/core/Pipe/_verify.py,sha256=WSwm1USy20dZfATK4Dn98eSI4y3-ETbOSlVjGxFaC0I,14207
210
210
  meerschaum/core/Plugin/__init__.py,sha256=UXg64EvJPgI1PCxkY_KM02-ZmBm4FZpLPIQR_uSJJDc,137
211
211
  meerschaum/core/User/_User.py,sha256=JZ9Y1tsjZe-cgD24m9YfZ6ZwSOKn_sHc4rbQ7KblBz8,6592
212
212
  meerschaum/core/User/__init__.py,sha256=lJ7beIZTG9sO4dAi3367fFBl17dXYEWHKi7HoaPlDyk,193
@@ -219,16 +219,16 @@ meerschaum/plugins/__init__.py,sha256=6krcqaMKyzuVqesXMqEL0XEy2SJQ4xfNt2-oI_fJ6v
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=Sg4tUZbqgstwQnnnNR-zALzxJ6kRMeej_4n29HC9pWU,42157
222
+ meerschaum/utils/dataframe.py,sha256=ZqSsTMb0PRvV_7c6YuV7Vde6t-VBO03MJ-Vw--oi7zA,42897
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=OijhS1TMjlqkDvahbxhqfUdo0Myeor-kTKrvqqG8wN0,46349
225
+ meerschaum/utils/misc.py,sha256=mkiwoffLCElVKC0KxNP7bP52Gp6i1crf_bFT2qsfCFs,47125
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=6J--mZJ_NcEdSX6KMjtY4fXXezyILLHP24VdxFFqOIc,18985
230
- meerschaum/utils/schedule.py,sha256=zKOtfVdr1QRSZYBOSrO2MRIz8DTMbkWfQA6CjahbSso,11115
231
- meerschaum/utils/sql.py,sha256=R_hX92brvZDqID7c85-PNUVVR6RWXGXEgn1vFpHmi88,49869
230
+ meerschaum/utils/schedule.py,sha256=9BQGEzDbInLAU1aFO-FvL3wKu9XCTUpS0V_aQID6xzc,11228
231
+ meerschaum/utils/sql.py,sha256=pVcS05-v-a5djf6vRBLfOHXFeYjQxnoxzCMKTiSyvPQ,55325
232
232
  meerschaum/utils/threading.py,sha256=3N8JXPAnwqJiSjuQcbbJg3Rv9-CCUMJpeQRfKFR7MaA,2489
233
233
  meerschaum/utils/typing.py,sha256=U3MC347sh1umpa3Xr1k71eADyDmk4LB6TnVCpq8dVzI,2830
234
234
  meerschaum/utils/warnings.py,sha256=n-phr3BftNNgyPnvnXC_VMSjtCvjiCZ-ewmVfcROhkc,6611
@@ -239,23 +239,23 @@ meerschaum/utils/daemon/RotatingFile.py,sha256=ePm_svjwyFDWh6V1k-bp1RHXCSWlyxDtl
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=LawV4XrCLZRhyGquUen3i0HvK2IRHG-Ud4MYi3L4phA,7391
243
- meerschaum/utils/dtypes/sql.py,sha256=K0pginy3U5UvgtM9af-HRoiqdvFlwiAmKNQBPGChIUA,16267
242
+ meerschaum/utils/dtypes/__init__.py,sha256=3O6dFxPHOPlSJPFFOQxDWD9Ma0f_0YwiMdQ6xoNHYuk,7595
243
+ meerschaum/utils/dtypes/sql.py,sha256=IHKxOzj8CNgOwkSalSW3jqO0vj-sfiyYToFdbjYWGhA,17703
244
244
  meerschaum/utils/formatting/__init__.py,sha256=GpJQWeqkdWw5IuDmW4Rgmapjzv-KkI4jhBZllJi4QIg,15999
245
245
  meerschaum/utils/formatting/_jobs.py,sha256=izsqPJhTtUkXUUtWnbXtReYsUYwulXtci3pBj72Ne64,6637
246
246
  meerschaum/utils/formatting/_pipes.py,sha256=840O5rg2aHhQoraCDOh2ZtBo43_W2W6R60yYufEoXp8,19494
247
247
  meerschaum/utils/formatting/_pprint.py,sha256=tgrT3FyGyu5CWJYysqK3kX1xdZYorlbOk9fcU_vt9Qg,3096
248
248
  meerschaum/utils/formatting/_shell.py,sha256=XH7VFLteNv7NGtWhJl7FdIGt80sKeTiDoJokGSDAwBM,3761
249
249
  meerschaum/utils/packages/__init__.py,sha256=KNs1Qc8-DX7r6LlZxyl9-Qr2FnsCtZfjSbiwo-sGNf8,64196
250
- meerschaum/utils/packages/_packages.py,sha256=L8G9mQtiDyFp2pKesHufZrtbPAty0DH4u8k2wmCTxVY,8687
250
+ meerschaum/utils/packages/_packages.py,sha256=KqQqa5ipPMuzEwy0IO3sWXbw7fLk552fZ-6KZmYMS2M,8745
251
251
  meerschaum/utils/packages/lazy_loader.py,sha256=VHnph3VozH29R4JnSSBfwtA5WKZYZQFT_GeQSShCnuc,2540
252
252
  meerschaum/utils/venv/_Venv.py,sha256=sBnlmxHdAh2bx8btfVoD79-H9-cYsv5lP02IIXkyECs,3553
253
253
  meerschaum/utils/venv/__init__.py,sha256=f3oi67lXYPLKJrnRW9lae7M3A8SFiC7DzaMoBdCVUFs,24609
254
- meerschaum-2.5.0.dist-info/LICENSE,sha256=jG2zQEdRNt88EgHUWPpXVWmOrOduUQRx7MnYV9YIPaw,11359
255
- meerschaum-2.5.0.dist-info/METADATA,sha256=oUofV2VmX4Ip1K7Sg8Hj-H0JYCwJjfMcLWSJPkLm0-s,24605
256
- meerschaum-2.5.0.dist-info/NOTICE,sha256=OTA9Fcthjf5BRvWDDIcBC_xfLpeDV-RPZh3M-HQBRtQ,114
257
- meerschaum-2.5.0.dist-info/WHEEL,sha256=OVMc5UfuAQiSplgO0_WdW7vXVGAt9Hdd6qtN4HotdyA,91
258
- meerschaum-2.5.0.dist-info/entry_points.txt,sha256=5YBVzibw-0rNA_1VjB16z5GABsOGf-CDhW4yqH8C7Gc,88
259
- meerschaum-2.5.0.dist-info/top_level.txt,sha256=bNoSiDj0El6buocix-FRoAtJOeq1qOF5rRm2u9i7Q6A,11
260
- meerschaum-2.5.0.dist-info/zip-safe,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
261
- meerschaum-2.5.0.dist-info/RECORD,,
254
+ meerschaum-2.6.0.dev1.dist-info/LICENSE,sha256=jG2zQEdRNt88EgHUWPpXVWmOrOduUQRx7MnYV9YIPaw,11359
255
+ meerschaum-2.6.0.dev1.dist-info/METADATA,sha256=4iC18RDqwzD2qj0V2RZ1FDfulCve5rHawxA5JW6zpbQ,24709
256
+ meerschaum-2.6.0.dev1.dist-info/NOTICE,sha256=OTA9Fcthjf5BRvWDDIcBC_xfLpeDV-RPZh3M-HQBRtQ,114
257
+ meerschaum-2.6.0.dev1.dist-info/WHEEL,sha256=P9jw-gEje8ByB7_hXoICnHtVCrEwMQh-630tKvQWehc,91
258
+ meerschaum-2.6.0.dev1.dist-info/entry_points.txt,sha256=5YBVzibw-0rNA_1VjB16z5GABsOGf-CDhW4yqH8C7Gc,88
259
+ meerschaum-2.6.0.dev1.dist-info/top_level.txt,sha256=bNoSiDj0El6buocix-FRoAtJOeq1qOF5rRm2u9i7Q6A,11
260
+ meerschaum-2.6.0.dev1.dist-info/zip-safe,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
261
+ meerschaum-2.6.0.dev1.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: setuptools (75.2.0)
2
+ Generator: setuptools (75.3.0)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5