meerschaum 2.7.4__py3-none-any.whl → 2.7.6__py3-none-any.whl

Sign up to get free protection for your applications and to get access to all the features.
Files changed (34) hide show
  1. meerschaum/_internal/shell/Shell.py +4 -6
  2. meerschaum/_internal/shell/ShellCompleter.py +6 -5
  3. meerschaum/actions/clear.py +6 -3
  4. meerschaum/actions/copy.py +33 -27
  5. meerschaum/actions/sql.py +14 -4
  6. meerschaum/actions/sync.py +22 -18
  7. meerschaum/api/dash/pipes.py +2 -3
  8. meerschaum/config/_default.py +11 -0
  9. meerschaum/config/_version.py +1 -1
  10. meerschaum/connectors/api/_misc.py +3 -2
  11. meerschaum/connectors/api/_pipes.py +8 -9
  12. meerschaum/connectors/sql/_SQLConnector.py +1 -0
  13. meerschaum/connectors/sql/_cli.py +18 -12
  14. meerschaum/connectors/sql/_create_engine.py +1 -0
  15. meerschaum/connectors/sql/_pipes.py +51 -14
  16. meerschaum/connectors/sql/_sql.py +109 -16
  17. meerschaum/jobs/_Job.py +1 -0
  18. meerschaum/plugins/__init__.py +7 -3
  19. meerschaum/utils/daemon/Daemon.py +11 -3
  20. meerschaum/utils/daemon/__init__.py +2 -2
  21. meerschaum/utils/misc.py +7 -6
  22. meerschaum/utils/packages/__init__.py +35 -28
  23. meerschaum/utils/packages/_packages.py +1 -1
  24. meerschaum/utils/prompt.py +54 -36
  25. meerschaum/utils/venv/_Venv.py +6 -1
  26. meerschaum/utils/venv/__init__.py +32 -16
  27. {meerschaum-2.7.4.dist-info → meerschaum-2.7.6.dist-info}/METADATA +4 -4
  28. {meerschaum-2.7.4.dist-info → meerschaum-2.7.6.dist-info}/RECORD +34 -34
  29. {meerschaum-2.7.4.dist-info → meerschaum-2.7.6.dist-info}/WHEEL +1 -1
  30. {meerschaum-2.7.4.dist-info → meerschaum-2.7.6.dist-info}/LICENSE +0 -0
  31. {meerschaum-2.7.4.dist-info → meerschaum-2.7.6.dist-info}/NOTICE +0 -0
  32. {meerschaum-2.7.4.dist-info → meerschaum-2.7.6.dist-info}/entry_points.txt +0 -0
  33. {meerschaum-2.7.4.dist-info → meerschaum-2.7.6.dist-info}/top_level.txt +0 -0
  34. {meerschaum-2.7.4.dist-info → meerschaum-2.7.6.dist-info}/zip-safe +0 -0
@@ -7,7 +7,9 @@ Functions for interacting with the user.
7
7
  """
8
8
 
9
9
  from __future__ import annotations
10
+
10
11
  import os
12
+ import meerschaum as mrsm
11
13
  from meerschaum.utils.typing import Any, Union, Optional, Tuple, List
12
14
 
13
15
 
@@ -63,9 +65,8 @@ def prompt(
63
65
 
64
66
  """
65
67
  from meerschaum.utils.packages import attempt_import
66
- from meerschaum.utils.formatting import colored, ANSI, CHARSET, highlight_pipes, fill_ansi
68
+ from meerschaum.utils.formatting import ANSI, CHARSET, highlight_pipes, fill_ansi
67
69
  from meerschaum.config import get_config
68
- from meerschaum.config.static import _static_config
69
70
  from meerschaum.utils.misc import filter_keywords
70
71
  from meerschaum.utils.daemon import running_in_daemon
71
72
  noask = check_noask(noask)
@@ -175,8 +176,6 @@ def yes_no(
175
176
  ```
176
177
  """
177
178
  from meerschaum.utils.warnings import error, warn
178
- from meerschaum.utils.formatting import ANSI, UNICODE
179
- from meerschaum.utils.packages import attempt_import
180
179
 
181
180
  default = options[0] if yes else default
182
181
  noask = yes or check_noask(noask)
@@ -195,7 +194,7 @@ def yes_no(
195
194
  success = False
196
195
 
197
196
  if not success:
198
- error(f"Error getting response. Aborting...", stack=False)
197
+ error("Error getting response. Aborting...", stack=False)
199
198
  if answer == "":
200
199
  answer = default
201
200
 
@@ -205,19 +204,20 @@ def yes_no(
205
204
 
206
205
  return answer.lower() == options[0].lower()
207
206
 
207
+
208
208
  def choose(
209
- question: str,
210
- choices: List[Union[str, Tuple[str, str]]],
211
- default: Union[str, List[str], None] = None,
212
- numeric: bool = True,
213
- multiple: bool = False,
214
- as_indices: bool = False,
215
- delimiter: str = ',',
216
- icon: bool = True,
217
- warn: bool = True,
218
- noask: bool = False,
219
- **kw
220
- ) -> Union[str, Tuple[str], None]:
209
+ question: str,
210
+ choices: List[Union[str, Tuple[str, str]]],
211
+ default: Union[str, List[str], None] = None,
212
+ numeric: bool = True,
213
+ multiple: bool = False,
214
+ as_indices: bool = False,
215
+ delimiter: str = ',',
216
+ icon: bool = True,
217
+ warn: bool = True,
218
+ noask: bool = False,
219
+ **kw
220
+ ) -> Union[str, Tuple[str], None]:
221
221
  """
222
222
  Present a list of options and return the user's choice.
223
223
 
@@ -418,8 +418,8 @@ def choose(
418
418
  valid = (len(answers) > 1 or not (len(answers) == 1 and answers[0] is None))
419
419
  for a in answers:
420
420
  if (
421
- not a in {_original for _new, _original in altered_choices.items()}
422
- and not a in _choices
421
+ a not in {_original for _new, _original in altered_choices.items()}
422
+ and a not in _choices
423
423
  and a != default
424
424
  and not noask
425
425
  ):
@@ -428,21 +428,22 @@ def choose(
428
428
  if valid:
429
429
  break
430
430
  if warn:
431
- _warn(f"Please pick a valid choice.", stack=False)
431
+ _warn("Please pick a valid choice.", stack=False)
432
432
 
433
433
  if not multiple:
434
434
  if not numeric:
435
435
  return answer
436
436
  try:
437
437
  _answer = choices[int(answer) - 1]
438
- if as_indices and isinstance(choice, tuple):
438
+ if as_indices and isinstance(_answer, tuple):
439
439
  return _answer[0]
440
440
  return _answer
441
- except Exception as e:
441
+ except Exception:
442
442
  _warn(f"Could not cast answer '{answer}' to an integer.", stacklevel=3)
443
443
 
444
444
  if not numeric:
445
445
  return answers
446
+
446
447
  _answers = []
447
448
  for a in answers:
448
449
  try:
@@ -451,17 +452,17 @@ def choose(
451
452
  if isinstance(_answer_to_return, tuple) and as_indices:
452
453
  _answer_to_return = _answer_to_return[0]
453
454
  _answers.append(_answer_to_return)
454
- except Exception as e:
455
+ except Exception:
455
456
  _warn(f"Could not cast answer '{a}' to an integer.", stacklevel=3)
456
457
  return _answers
457
458
 
458
459
 
459
460
  def get_password(
460
- username: Optional[str] = None,
461
- minimum_length: Optional[int] = None,
462
- confirm: bool = True,
463
- **kw: Any
464
- ) -> str:
461
+ username: Optional[str] = None,
462
+ minimum_length: Optional[int] = None,
463
+ confirm: bool = True,
464
+ **kw: Any
465
+ ) -> str:
465
466
  """
466
467
  Prompt the user for a password.
467
468
 
@@ -493,15 +494,15 @@ def get_password(
493
494
  from meerschaum.utils.warnings import warn
494
495
  while True:
495
496
  password = prompt(
496
- f"Password" + (f" for user '{username}':" if username is not None else ":"),
497
- is_password = True,
497
+ "Password" + (f" for user '{username}':" if username is not None else ":"),
498
+ is_password=True,
498
499
  **kw
499
500
  )
500
501
  if minimum_length is not None and len(password) < minimum_length:
501
502
  warn(
502
503
  "Password is too short. " +
503
504
  f"Please enter a password that is at least {minimum_length} characters.",
504
- stack = False
505
+ stack=False
505
506
  )
506
507
  continue
507
508
 
@@ -509,12 +510,12 @@ def get_password(
509
510
  return password
510
511
 
511
512
  _password = prompt(
512
- f"Confirm password" + (f" for user '{username}':" if username is not None else ":"),
513
- is_password = True,
513
+ "Confirm password" + (f" for user '{username}':" if username is not None else ":"),
514
+ is_password=True,
514
515
  **kw
515
516
  )
516
517
  if password != _password:
517
- warn(f"Passwords do not match! Please try again.", stack=False)
518
+ warn("Passwords do not match! Please try again.", stack=False)
518
519
  continue
519
520
  else:
520
521
  return password
@@ -550,13 +551,13 @@ def get_email(username: Optional[str] = None, allow_omit: bool = True, **kw: Any
550
551
  from meerschaum.utils.misc import is_valid_email
551
552
  while True:
552
553
  email = prompt(
553
- f"Email" + (f" for user '{username}'" if username is not None else "") +
554
+ "Email" + (f" for user '{username}'" if username is not None else "") +
554
555
  (" (empty to omit):" if allow_omit else ": "),
555
556
  **kw
556
557
  )
557
558
  if (allow_omit and email == '') or is_valid_email(email):
558
559
  return email
559
- warn(f"Invalid email! Please try again.", stack=False)
560
+ warn("Invalid email! Please try again.", stack=False)
560
561
 
561
562
 
562
563
  def check_noask(noask: bool = False) -> bool:
@@ -571,3 +572,20 @@ def check_noask(noask: bool = False) -> bool:
571
572
  os.environ.get(NOASK, 'false').lower()
572
573
  in ('1', 'true')
573
574
  )
575
+
576
+
577
+ def get_connectors_completer(*types: str):
578
+ """
579
+ Return a prompt-toolkit Completer object to pass into `prompt()`.
580
+ """
581
+ from meerschaum.utils.misc import get_connector_labels
582
+ prompt_toolkit_completion = mrsm.attempt_import('prompt_toolkit.completion', lazy=False)
583
+ Completer = prompt_toolkit_completion.Completer
584
+ Completion = prompt_toolkit_completion.Completion
585
+
586
+ class ConnectorCompleter(Completer):
587
+ def get_completions(self, document, complete_event):
588
+ for label in get_connector_labels(*types):
589
+ yield Completion(label, start_position=(-1 * len(document.text)))
590
+
591
+ return ConnectorCompleter()
@@ -62,8 +62,13 @@ class Venv:
62
62
  If a `meerschaum.plugins.Plugin` was provided, its dependent virtual environments
63
63
  will also be activated.
64
64
  """
65
- from meerschaum.utils.venv import active_venvs
65
+ from meerschaum.utils.venv import active_venvs, init_venv
66
66
  self._kwargs['previously_active_venvs'] = copy.deepcopy(active_venvs)
67
+ try:
68
+ return self._activate(debug=(debug or self._debug), **self._kwargs)
69
+ except OSError as e:
70
+ if not init_venv(self._venv, force=True):
71
+ raise e
67
72
  return self._activate(debug=(debug or self._debug), **self._kwargs)
68
73
 
69
74
 
@@ -176,23 +176,26 @@ def deactivate_venv(
176
176
  if sys.path is None:
177
177
  return False
178
178
 
179
- target = venv_target_path(venv, allow_nonexistent=force, debug=debug).as_posix()
179
+ target = venv_target_path(venv, allow_nonexistent=True, debug=debug).as_posix()
180
180
  with LOCKS['sys.path']:
181
181
  if target in sys.path:
182
- sys.path.remove(target)
182
+ try:
183
+ sys.path.remove(target)
184
+ except Exception:
185
+ pass
183
186
  try:
184
187
  active_venvs_order.remove(venv)
185
- except Exception as e:
188
+ except Exception:
186
189
  pass
187
190
 
188
191
  return True
189
192
 
190
193
 
191
194
  def is_venv_active(
192
- venv: str = 'mrsm',
193
- color : bool = True,
194
- debug: bool = False
195
- ) -> bool:
195
+ venv: str = 'mrsm',
196
+ color : bool = True,
197
+ debug: bool = False
198
+ ) -> bool:
196
199
  """
197
200
  Check if a virtual environment is active.
198
201
 
@@ -407,10 +410,10 @@ def init_venv(
407
410
  pass
408
411
 
409
412
  def wait_for_lock():
410
- max_lock_seconds = 1.0
413
+ max_lock_seconds = 2.0
411
414
  step_sleep_seconds = 0.1
412
415
  init_venv_check_start = time.perf_counter()
413
- while (time.perf_counter() - init_venv_check_start < max_lock_seconds):
416
+ while ((time.perf_counter() - init_venv_check_start) < max_lock_seconds):
414
417
  if not lock_path.exists():
415
418
  break
416
419
 
@@ -447,13 +450,22 @@ def init_venv(
447
450
  temp_vtp = VENVS_CACHE_RESOURCES_PATH / str(venv)
448
451
  rename_vtp = vtp.exists() and not temp_vtp.exists()
449
452
 
453
+ wait_for_lock()
454
+ update_lock(True)
455
+
450
456
  if rename_vtp:
451
457
  if debug:
452
458
  print(f"Moving '{vtp}' to '{temp_vtp}'...")
453
459
  shutil.move(vtp, temp_vtp)
454
460
 
455
- wait_for_lock()
456
- update_lock(True)
461
+ if venv_path.exists():
462
+ if debug:
463
+ print(f"Removing '{venv_path}'...")
464
+ try:
465
+ shutil.rmtree(venv_path)
466
+ except Exception as e:
467
+ if debug:
468
+ print(f"Failed to remove '{venv_path}' ({e}). Continuing...")
457
469
 
458
470
  if uv is not None:
459
471
  _venv_success = run_python_package(
@@ -663,10 +675,10 @@ def venv_exists(venv: Union[str, None], debug: bool = False) -> bool:
663
675
 
664
676
 
665
677
  def venv_target_path(
666
- venv: Union[str, None],
667
- allow_nonexistent: bool = False,
668
- debug: bool = False,
669
- ) -> 'pathlib.Path':
678
+ venv: Union[str, None],
679
+ allow_nonexistent: bool = False,
680
+ debug: bool = False,
681
+ ) -> 'pathlib.Path':
670
682
  """
671
683
  Return a virtual environment's site-package path.
672
684
 
@@ -683,7 +695,11 @@ def venv_target_path(
683
695
  The `pathlib.Path` object for the virtual environment's path.
684
696
 
685
697
  """
686
- import os, sys, platform, pathlib, site
698
+ import os
699
+ import sys
700
+ import platform
701
+ import pathlib
702
+ import site
687
703
  from meerschaum.config._paths import VIRTENV_RESOURCES_PATH
688
704
  from meerschaum.config.static import STATIC_CONFIG
689
705
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: meerschaum
3
- Version: 2.7.4
3
+ Version: 2.7.6
4
4
  Summary: Sync Time-Series Pipes with Meerschaum
5
5
  Home-page: https://meerschaum.io
6
6
  Author: Bennett Meares
@@ -127,7 +127,7 @@ Provides-Extra: sql
127
127
  Requires-Dist: numpy>=1.18.5; extra == "sql"
128
128
  Requires-Dist: pandas[parquet]>=2.0.1; extra == "sql"
129
129
  Requires-Dist: pyarrow>=16.1.0; extra == "sql"
130
- Requires-Dist: dask[complete]>=2024.5.1; extra == "sql"
130
+ Requires-Dist: dask[complete]>=2024.12.1; extra == "sql"
131
131
  Requires-Dist: partd>=1.4.2; extra == "sql"
132
132
  Requires-Dist: pytz; extra == "sql"
133
133
  Requires-Dist: joblib>=0.17.0; extra == "sql"
@@ -187,7 +187,7 @@ Requires-Dist: valkey>=6.0.0; extra == "api"
187
187
  Requires-Dist: numpy>=1.18.5; extra == "api"
188
188
  Requires-Dist: pandas[parquet]>=2.0.1; extra == "api"
189
189
  Requires-Dist: pyarrow>=16.1.0; extra == "api"
190
- Requires-Dist: dask[complete]>=2024.5.1; extra == "api"
190
+ Requires-Dist: dask[complete]>=2024.12.1; extra == "api"
191
191
  Requires-Dist: partd>=1.4.2; extra == "api"
192
192
  Requires-Dist: pytz; extra == "api"
193
193
  Requires-Dist: joblib>=0.17.0; extra == "api"
@@ -292,7 +292,7 @@ Requires-Dist: pycparser>=2.21.0; extra == "full"
292
292
  Requires-Dist: numpy>=1.18.5; extra == "full"
293
293
  Requires-Dist: pandas[parquet]>=2.0.1; extra == "full"
294
294
  Requires-Dist: pyarrow>=16.1.0; extra == "full"
295
- Requires-Dist: dask[complete]>=2024.5.1; extra == "full"
295
+ Requires-Dist: dask[complete]>=2024.12.1; extra == "full"
296
296
  Requires-Dist: partd>=1.4.2; extra == "full"
297
297
  Requires-Dist: pytz; extra == "full"
298
298
  Requires-Dist: joblib>=0.17.0; extra == "full"
@@ -12,8 +12,8 @@ meerschaum/_internal/gui/app/__init__.py,sha256=rKUa8hHk6Fai-PDF61tQcpT1myxKcfmv
12
12
  meerschaum/_internal/gui/app/_windows.py,sha256=-VHdjTzA3V596fVqnbmTxemONSp_80-sTNJ0CTB8FwU,2632
13
13
  meerschaum/_internal/gui/app/actions.py,sha256=rx37qXf3uoa7Ou0n1cISqNFZNL0nr4wO7vSUmWO8f2E,935
14
14
  meerschaum/_internal/gui/app/pipes.py,sha256=4nAQ0rrHb_2bNgDF0Ru2YlbPaCDDzAl5beOGU4Af-4A,1596
15
- meerschaum/_internal/shell/Shell.py,sha256=-dw1k9NbG0VGX0Sve1c8gQ1_XsMYcmYl0VwSO98ERVk,40099
16
- meerschaum/_internal/shell/ShellCompleter.py,sha256=uWo-SYBXDGEeKExsjVWi-u7yfnc5XWWCy4Nl4eSO8j4,3340
15
+ meerschaum/_internal/shell/Shell.py,sha256=R6xW-D9gVuxJxQzf4Bf6E9V8exE40aCdrDJ_snUpoxA,39982
16
+ meerschaum/_internal/shell/ShellCompleter.py,sha256=Ex6mPv83RUNdC3ufRJCcaoOmQ8q8z6tCHDVzXQmWIpY,3293
17
17
  meerschaum/_internal/shell/ValidAutoSuggest.py,sha256=bARjOWMidz0dvMelLUe6yRPto5l3gcEHYHqFDjoh22I,1280
18
18
  meerschaum/_internal/shell/__init__.py,sha256=vXQoQPEVlYiUYai1b5AwQAlTnja6A2cSABnqXhzlS7I,281
19
19
  meerschaum/_internal/shell/updates.py,sha256=FmKu1NsIE7AI1zq8zNeKneZzORv6BeURQeX0lRR81Ag,5040
@@ -25,8 +25,8 @@ meerschaum/actions/__init__.py,sha256=MHPs8aRBhbZQXnqd_6tVtisTrNCgPAPgnNcXYbn0zP
25
25
  meerschaum/actions/api.py,sha256=41r3fBh3vAPyNaOrvbh2oh6WUJTR2I-zaOEZN60A66E,12538
26
26
  meerschaum/actions/attach.py,sha256=UV19d9W_2WYcrf7BRz7k3mriDoX1V4rA4AKvbLdor0o,3106
27
27
  meerschaum/actions/bootstrap.py,sha256=08o3PchrJ_Rv8IP30ZBH1Ovk-b8qFBGPedCjF7jRzSo,18084
28
- meerschaum/actions/clear.py,sha256=iTSdJpFIGLirFgBrOFb2GH1ShI2LZ1NIGLeGYOboZYQ,4916
29
- meerschaum/actions/copy.py,sha256=NHoC9cHJGgoox8L8B0afbu8lAxEh_MKa_pNeVunZsl0,6824
28
+ meerschaum/actions/clear.py,sha256=v_xHn7-Pu7iwFNJ07q9eJt2hqPV7OwNZHUYa9dvixs4,4976
29
+ meerschaum/actions/copy.py,sha256=z_51zEQCKDXnAGfICIGKS3klZ2OTPdiZPJACvpuheDY,6861
30
30
  meerschaum/actions/deduplicate.py,sha256=puYyxeFYEUy1Sd2IOcZB2e6MrNxAZl2bTLmNzFDkCiw,1167
31
31
  meerschaum/actions/delete.py,sha256=H5oP0nE7qIWnFvkuFhZQZQYBVC0IbUevpaQ_2YQKXRA,18559
32
32
  meerschaum/actions/drop.py,sha256=Hd5h4rrWd7qL2rTqglsTonUsEoH7qQlsfqNFSHGeqr0,2453
@@ -42,11 +42,11 @@ 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=vAsxbSl-Hkw3wfrM1BLnKex_kJrZwIJICAXysprQGWM,4220
45
+ meerschaum/actions/sql.py,sha256=zG-KydYR654RHaF-O4Id3ACCDWeogk2B1R-OFLwFbG0,4515
46
46
  meerschaum/actions/stack.py,sha256=ZwrCTGJ0x3jjZkRieWcvqasQHYCqNtB1HYvTX-r3Z3g,5996
47
47
  meerschaum/actions/start.py,sha256=NtdVzeB00PQBnDSUSu8ypHmMrZT8_Idmw5BfVZ--Zic,21296
48
48
  meerschaum/actions/stop.py,sha256=5fdUw70YN-yuUWrC-NhA88cxr9FZ5NbssbQ8xXO8nFU,4632
49
- meerschaum/actions/sync.py,sha256=QGhf0ZyrNaplPL6TkwHO9VQLEu_Gemmid93vdaovXoo,17153
49
+ meerschaum/actions/sync.py,sha256=br87b8uqpv7GW18f_O7Zg7QioPh0t377J082yfmuSak,17223
50
50
  meerschaum/actions/tag.py,sha256=SJf5qFW0ccLXjqlTdkK_0MCcrCMdg6xhYrhKdco0hdA,3053
51
51
  meerschaum/actions/uninstall.py,sha256=tBXhdXggSieGEQe4EPGxpgMK0MZTJCweNvAJ9-59El0,5776
52
52
  meerschaum/actions/upgrade.py,sha256=AjuC93Te-I_GWwIfuNkFJ2q1zVHDQ2Oco34S4JgK2iA,6485
@@ -62,7 +62,7 @@ meerschaum/api/dash/connectors.py,sha256=-Wd40ieYJI2nOASXi4V1C4bvLekjnN_tj6zp7Hg
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=39Ler1YIxaDmbZu9zKuJclA-j9psbrPRwZfBnh4KuxA,26264
65
+ meerschaum/api/dash/pipes.py,sha256=Zm2UKovwz6K8Mt6dTCY2LgDyUyFhEZ5D8nWw4ecPUXI,26210
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
@@ -132,7 +132,7 @@ meerschaum/api/routes/_webterm.py,sha256=MenDvWXnZ8CWEmryB46pKohMf0PN6o1xJGZ3LFj
132
132
  meerschaum/api/tables/__init__.py,sha256=e2aNC0CdlWICTUMx1i9RauF8Pm426J0RZJbsJWv4SWo,482
133
133
  meerschaum/config/__init__.py,sha256=5ZBq71P9t3nb74r5CGvMfNuauPscfegBX-nkaAUi5C4,11541
134
134
  meerschaum/config/_dash.py,sha256=BJHl4xMrQB-YHUEU7ldEW8q_nOPoIRSOqLrfGElc6Dw,187
135
- meerschaum/config/_default.py,sha256=3HhlLLceFbf7zn3sciIr0DWGynuHpzRmkmXeTyT9J9s,5652
135
+ meerschaum/config/_default.py,sha256=6SC7MOkU_2oJ7RtFXQCz9w1Qqg2_8w5UdOaR_HL3lzI,6009
136
136
  meerschaum/config/_edit.py,sha256=M9yX_SDD24gV5kWITZpy7p9AWTizJsIAGWAs3WZx-Ws,9087
137
137
  meerschaum/config/_environment.py,sha256=Vv4DLDfc2vKLbCLsMvkQDj77K4kEvHKEBmUBo-wCrgo,4419
138
138
  meerschaum/config/_formatting.py,sha256=OMuqS1EWOsj_34wSs2tOqGIWci3bTMIZ5l-uelZgsIM,6672
@@ -143,7 +143,7 @@ meerschaum/config/_preprocess.py,sha256=-AEA8m_--KivZwTQ1sWN6LTn5sio_fUr2XZ51BO6
143
143
  meerschaum/config/_read_config.py,sha256=RLC3HHi_1ndj7ITVDKLD9_uULY3caGRwSz3ATYE-ixA,15014
144
144
  meerschaum/config/_shell.py,sha256=46_m49Txc5q1rGfCgO49ca48BODx45DQJi8D0zz1R18,4245
145
145
  meerschaum/config/_sync.py,sha256=jHcWRkxd82_BgX8Xo8agsWvf7BSbv3qHLWmYl6ehp_0,4242
146
- meerschaum/config/_version.py,sha256=MXSVkU-_rIMkbFaFaLStOfNg5rNqfnzfD42W6YOfi6s,71
146
+ meerschaum/config/_version.py,sha256=EePnAdxzJgKO-MgeMY2aPKqoD0YcmJBjbRii3glP9Q4,71
147
147
  meerschaum/config/paths.py,sha256=JjibeGN3YAdSNceRwsd42aNmeUrIgM6ndzC8qZAmNI0,621
148
148
  meerschaum/config/resources/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
149
149
  meerschaum/config/stack/__init__.py,sha256=2UukC0Lmk-aVL1o1qXzumqmuIrw3vu9fD7iCuz4XD4I,10544
@@ -162,23 +162,23 @@ meerschaum/connectors/api/_actions.py,sha256=gd3F8i5BvN8XRvMcPvPVR8sc1DeLzgoBHdD
162
162
  meerschaum/connectors/api/_fetch.py,sha256=Khq9AFr1nk8Dsmcedb77aWhAuHw0JGgVeahDG95Q5MQ,2072
163
163
  meerschaum/connectors/api/_jobs.py,sha256=N5lpHFGG10jlVgaJeWAOTuLBQw3AdgjXsEPpp1YwZQE,11270
164
164
  meerschaum/connectors/api/_login.py,sha256=5GsD-B214vr5EYfM3XrTUs1sTFApxZA-9dNxq8oNSyg,2050
165
- meerschaum/connectors/api/_misc.py,sha256=OZRZBYOokKIEjmQaR8jUYgu6ZRn9VzXBChzR8CfDv_w,1092
166
- meerschaum/connectors/api/_pipes.py,sha256=dGs5rS7qoX4-qw-KTw-_a9b9EtLmLCC-ZKm03ZGts6Q,21263
165
+ meerschaum/connectors/api/_misc.py,sha256=XK0LLexNUEKZjAAqoJ-9oOgwLlMdwxSOvcpqO5NuOas,1083
166
+ meerschaum/connectors/api/_pipes.py,sha256=hk6Qj3tgog8naxl0Y2l6TfJsG4AZmel3bFIaLxuy0XY,21248
167
167
  meerschaum/connectors/api/_plugins.py,sha256=z04tPjfZZWwa7T60mogZH3X3wDmeLdnoN5Oh8m_YsU8,5217
168
168
  meerschaum/connectors/api/_request.py,sha256=Wc4Y70t0VxEj3_ch5fAeeoSAeFMuRnyNLOV-aUFInjY,6996
169
169
  meerschaum/connectors/api/_uri.py,sha256=HWxqGx4R1cHZ3ywy9Ro9ePbFxxusw4RLaC3hpGt9Z6I,1469
170
170
  meerschaum/connectors/api/_users.py,sha256=kzb7ENgXwQ19OJYKOuuWzx2rwVuUZCly9dTnyvVuT2Q,5275
171
171
  meerschaum/connectors/plugin/PluginConnector.py,sha256=aQ1QaB7MordCFimZqoGLb0R12PfDUN_nWks2J5mzeAs,2084
172
172
  meerschaum/connectors/plugin/__init__.py,sha256=pwF7TGY4WNz2_HaVdmK4rPQ9ZwTOEuPHgzOqsGcoXJw,198
173
- meerschaum/connectors/sql/_SQLConnector.py,sha256=g9SFK30CZp7CTJI-SdpOanL1NQUBFQeUng7FSGacJA4,11985
173
+ meerschaum/connectors/sql/_SQLConnector.py,sha256=uyGoCshgL-u6j3VbCDiBJn8LkVuveLeE62y8MWxSo24,12015
174
174
  meerschaum/connectors/sql/__init__.py,sha256=3cqYiDkVasn7zWdtOTAZbT4bo95AuvGOmDD2TkaAxtw,205
175
- meerschaum/connectors/sql/_cli.py,sha256=1SgnWeMIAihoxp4FzbNrcq1npXf0dSOQnCntpU9hUXA,4405
176
- meerschaum/connectors/sql/_create_engine.py,sha256=MqgFhtWUMSgkx6Qu6Q6Ny3jIz-GWix_Eawko59RLm1o,10512
175
+ meerschaum/connectors/sql/_cli.py,sha256=VqAHkdXC0HVXuHaZik2q-cTVmIsuS4DWMcPMJPP_g-Q,4514
176
+ meerschaum/connectors/sql/_create_engine.py,sha256=RzJz4Qc43P4JS6tkgVvAhbdjEejIepWbxymIfVZ44Nk,10555
177
177
  meerschaum/connectors/sql/_fetch.py,sha256=GOU1JnPOBgaI3dDr0JdAmfTMPLIMM0EFHrsqDgDIO74,14070
178
178
  meerschaum/connectors/sql/_instance.py,sha256=mmZnodccuCqmZN-UnznnFZ7JodxtT47kwjDDaDKgwUg,6274
179
- meerschaum/connectors/sql/_pipes.py,sha256=EhuCZeGDTeywHvcbIlkipxouSGqgq_blU1z6-jrWLTY,121316
179
+ meerschaum/connectors/sql/_pipes.py,sha256=M0VQqkwd9sSyyttyKxonjoGi61guVc-oa1KiuWS7sd8,122315
180
180
  meerschaum/connectors/sql/_plugins.py,sha256=wbxcNxqTtjfDsxPvdVGTllasYf6NHHzODaQ72hEUSBQ,8135
181
- meerschaum/connectors/sql/_sql.py,sha256=ktXYiI0EpP7syRaW-PCvB14oaMFtWlfCVOjKCUNYBu8,38509
181
+ meerschaum/connectors/sql/_sql.py,sha256=brYLHJFt6BYlFYUhK--4okkll7UTkRR_PnvjjIJvXNY,41289
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
@@ -211,33 +211,33 @@ meerschaum/core/Plugin/__init__.py,sha256=UXg64EvJPgI1PCxkY_KM02-ZmBm4FZpLPIQR_u
211
211
  meerschaum/core/User/_User.py,sha256=qbI0GIkr3G0PI4d9S49uatbJQ2kH_-z5-GoVJ0fuEtA,6624
212
212
  meerschaum/core/User/__init__.py,sha256=9qNy-Gobui4x6GiaE8U7-WOggsdniOM3_wegLN3SVKs,988
213
213
  meerschaum/jobs/_Executor.py,sha256=qM62BhFTM4tyJ7p90KOM0y3qyeRY9k3ZV_aTDJMHnO8,1682
214
- meerschaum/jobs/_Job.py,sha256=wRsmrQ1bm898BxXELbHTltKYBj0bK0GmegE8zeL0FG8,32161
214
+ meerschaum/jobs/_Job.py,sha256=m_OzHG1zdV3jBS1CS6idT-sc5XBx-sMz4CJZbWKeKqI,32217
215
215
  meerschaum/jobs/__init__.py,sha256=YjwB6t8HCT593ckrOlImgk0kLX-1NgAYzNXVwS-uvyY,12173
216
216
  meerschaum/jobs/systemd.py,sha256=Rq-tsDPslG17ZhpKMrVJ5r8Z0IPr6DEc9APObfIoXCg,24614
217
217
  meerschaum/plugins/_Plugin.py,sha256=bIo4HX8TTWIcwIHROwMt4VK6OoEUhY_3Qc8q-2dp-ZA,33895
218
- meerschaum/plugins/__init__.py,sha256=6krcqaMKyzuVqesXMqEL0XEy2SJQ4xfNt2-oI_fJ6v0,26278
218
+ meerschaum/plugins/__init__.py,sha256=Kl7Dz0CwUUxyjRC5RWnYo6WMLsOvdX2eQ38Rh3BjdzY,26465
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
222
  meerschaum/utils/dataframe.py,sha256=fM8_DxnMTMhXDUqWIVXR-bOOwzBGO-cRcjarOIN3jdQ,47990
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=RW_WmNtAieP828OtJhr4dHKTQI2nxc4kTwn-Q5N3YBw,47055
225
+ meerschaum/utils/misc.py,sha256=Ut__DxYXuu-WtF9Mg2Z1CrnQMBmhPuqGsjOgiZMhAww,47079
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
- meerschaum/utils/prompt.py,sha256=SOpAvHcVFuk7-J4cqK_LkahWo6oJmLobeHg5fwM_9aY,18949
229
+ meerschaum/utils/prompt.py,sha256=qbS8l0DfD6eRB9_RRbfkKLPs3m-Hw2zXSeQCf0TDJgU,19370
230
230
  meerschaum/utils/schedule.py,sha256=bUsaCO9CGn2vJO5UvoISScHDDGIiMdCPHxpTFmu7vwE,11531
231
231
  meerschaum/utils/sql.py,sha256=JqOfWCHWAlm1fr7mtZMquoGCOnPyIlX5LDshcRFDgdo,77993
232
232
  meerschaum/utils/threading.py,sha256=awjbVL_QR6G-o_9Qk85utac9cSdqkiC8tQSdERCdrG8,2814
233
233
  meerschaum/utils/typing.py,sha256=U3MC347sh1umpa3Xr1k71eADyDmk4LB6TnVCpq8dVzI,2830
234
234
  meerschaum/utils/warnings.py,sha256=n-phr3BftNNgyPnvnXC_VMSjtCvjiCZ-ewmVfcROhkc,6611
235
235
  meerschaum/utils/yaml.py,sha256=PoC1du0pn2hLwTHwL-zuOf_EBWZSbCGOz-P-AZ4BWN0,3901
236
- meerschaum/utils/daemon/Daemon.py,sha256=PfFu_yba5d9k8GW3mGmJRilenyNNoA9DEG2TiiFfyMI,42704
236
+ meerschaum/utils/daemon/Daemon.py,sha256=jNhzpkcR-kXgIQKBqr--cFx6ZhAb0a0sdjnCOUkLEL0,42885
237
237
  meerschaum/utils/daemon/FileDescriptorInterceptor.py,sha256=MJKMO0Syf3d8yWUs6xXcQzg8Ptsuvh2aCRRoglOjusA,5257
238
238
  meerschaum/utils/daemon/RotatingFile.py,sha256=ePm_svjwyFDWh6V1k-bp1RHXCSWlyxDtlFu4SU4XvPU,24369
239
239
  meerschaum/utils/daemon/StdinFile.py,sha256=qdZ8E_RSOkURypwnS50mWeyWyRig1bAY9tKWMTVKajc,3307
240
- meerschaum/utils/daemon/__init__.py,sha256=o9jWb4lRTIyny4EPt7fPXFgV_vIf1mUofsTwoE1ZecA,8751
240
+ meerschaum/utils/daemon/__init__.py,sha256=ziRPyu_IM3l7Xd58y3Uvt0fZLoirJ9nuboFIxxult6c,8741
241
241
  meerschaum/utils/daemon/_names.py,sha256=d2ZwTxBoTAqXZkCfZ5LuX2XrkQmLNUq1OTlUqfoH5dA,4515
242
242
  meerschaum/utils/dtypes/__init__.py,sha256=c6DoYyCbWvMdRapBRKP5UJYLRUWtkTIlC_8HRzXFh2s,12166
243
243
  meerschaum/utils/dtypes/sql.py,sha256=Ew-ULDAJipzWpq_W-3fGGgTORhtoIqRZzZcS7k0L4B4,19582
@@ -246,16 +246,16 @@ meerschaum/utils/formatting/_jobs.py,sha256=izsqPJhTtUkXUUtWnbXtReYsUYwulXtci3pB
246
246
  meerschaum/utils/formatting/_pipes.py,sha256=OISJmmFiilaDbZxkiXck_g39MnnTfk_fJJyJ-YInvXA,19559
247
247
  meerschaum/utils/formatting/_pprint.py,sha256=tgrT3FyGyu5CWJYysqK3kX1xdZYorlbOk9fcU_vt9Qg,3096
248
248
  meerschaum/utils/formatting/_shell.py,sha256=XH7VFLteNv7NGtWhJl7FdIGt80sKeTiDoJokGSDAwBM,3761
249
- meerschaum/utils/packages/__init__.py,sha256=Op93VJkAX3OL4H-js_p3dAaa_PT82jvjCna27aHOsUk,64199
250
- meerschaum/utils/packages/_packages.py,sha256=ykannoLv2Fm4iwZwiIlNAGZvt654cMJhjXr1VJPoEDo,8867
249
+ meerschaum/utils/packages/__init__.py,sha256=TdKaj2tmN4bFwzusOfMv24P5ET7Zv73vyoOf9GOIr5E,64427
250
+ meerschaum/utils/packages/_packages.py,sha256=_xODMSz1FAcx3XHrn9RXUhGJ1zg-QKsVu9zYZV2UJeY,8868
251
251
  meerschaum/utils/packages/lazy_loader.py,sha256=VHnph3VozH29R4JnSSBfwtA5WKZYZQFT_GeQSShCnuc,2540
252
- meerschaum/utils/venv/_Venv.py,sha256=QsnDGEE_YBqXIq53NTWi2TANA1FbkqJBl_xQi9jQP_U,3537
253
- meerschaum/utils/venv/__init__.py,sha256=m8tgZvk2VxYd6OHfiJlE1tpHo9b7hH69y1UmHeY6ncM,26679
254
- meerschaum-2.7.4.dist-info/LICENSE,sha256=jG2zQEdRNt88EgHUWPpXVWmOrOduUQRx7MnYV9YIPaw,11359
255
- meerschaum-2.7.4.dist-info/METADATA,sha256=tHOCaQB1p7j8P6denDGdRHY4fhxNcTkqkzqBBo_r9SU,24224
256
- meerschaum-2.7.4.dist-info/NOTICE,sha256=OTA9Fcthjf5BRvWDDIcBC_xfLpeDV-RPZh3M-HQBRtQ,114
257
- meerschaum-2.7.4.dist-info/WHEEL,sha256=PZUExdf71Ui_so67QXpySuHtCi3-J3wvF4ORK6k_S8U,91
258
- meerschaum-2.7.4.dist-info/entry_points.txt,sha256=5YBVzibw-0rNA_1VjB16z5GABsOGf-CDhW4yqH8C7Gc,88
259
- meerschaum-2.7.4.dist-info/top_level.txt,sha256=bNoSiDj0El6buocix-FRoAtJOeq1qOF5rRm2u9i7Q6A,11
260
- meerschaum-2.7.4.dist-info/zip-safe,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
261
- meerschaum-2.7.4.dist-info/RECORD,,
252
+ meerschaum/utils/venv/_Venv.py,sha256=gc1TCeAj-kTZbQFAT9xl1bi4HXFV5ApT0dPOJfxwr78,3748
253
+ meerschaum/utils/venv/__init__.py,sha256=vVU9vj7t-HTiRU--ReQZ9kRLesVqcHnSJDbmcfC-Dzg,27030
254
+ meerschaum-2.7.6.dist-info/LICENSE,sha256=jG2zQEdRNt88EgHUWPpXVWmOrOduUQRx7MnYV9YIPaw,11359
255
+ meerschaum-2.7.6.dist-info/METADATA,sha256=fWChi6YW7sc_kNoXq7H3ryE-RdPH0fSR5UsFWQfMhps,24227
256
+ meerschaum-2.7.6.dist-info/NOTICE,sha256=OTA9Fcthjf5BRvWDDIcBC_xfLpeDV-RPZh3M-HQBRtQ,114
257
+ meerschaum-2.7.6.dist-info/WHEEL,sha256=A3WOREP4zgxI0fKrHUG8DC8013e3dK3n7a6HDbcEIwE,91
258
+ meerschaum-2.7.6.dist-info/entry_points.txt,sha256=5YBVzibw-0rNA_1VjB16z5GABsOGf-CDhW4yqH8C7Gc,88
259
+ meerschaum-2.7.6.dist-info/top_level.txt,sha256=bNoSiDj0El6buocix-FRoAtJOeq1qOF5rRm2u9i7Q6A,11
260
+ meerschaum-2.7.6.dist-info/zip-safe,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
261
+ meerschaum-2.7.6.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: setuptools (75.6.0)
2
+ Generator: setuptools (75.7.0)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5