meerschaum 2.4.12__py3-none-any.whl → 2.5.0__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 (33) hide show
  1. meerschaum/_internal/entry.py +1 -0
  2. meerschaum/actions/bootstrap.py +9 -11
  3. meerschaum/actions/delete.py +1 -1
  4. meerschaum/actions/edit.py +40 -14
  5. meerschaum/actions/sh.py +11 -10
  6. meerschaum/actions/start.py +58 -2
  7. meerschaum/actions/sync.py +14 -16
  8. meerschaum/actions/upgrade.py +8 -6
  9. meerschaum/config/_version.py +1 -1
  10. meerschaum/connectors/sql/_create_engine.py +8 -3
  11. meerschaum/connectors/sql/_fetch.py +4 -2
  12. meerschaum/connectors/sql/_instance.py +3 -3
  13. meerschaum/connectors/sql/_pipes.py +18 -13
  14. meerschaum/connectors/sql/_sql.py +59 -50
  15. meerschaum/core/Pipe/__init__.py +23 -1
  16. meerschaum/core/Pipe/_attributes.py +96 -14
  17. meerschaum/plugins/__init__.py +6 -2
  18. meerschaum/plugins/bootstrap.py +15 -15
  19. meerschaum/utils/dataframe.py +17 -5
  20. meerschaum/utils/packages/__init__.py +40 -22
  21. meerschaum/utils/packages/_packages.py +24 -8
  22. meerschaum/utils/process.py +18 -8
  23. meerschaum/utils/schedule.py +9 -5
  24. meerschaum/utils/venv/__init__.py +35 -24
  25. meerschaum/utils/warnings.py +7 -7
  26. {meerschaum-2.4.12.dist-info → meerschaum-2.5.0.dist-info}/METADATA +9 -13
  27. {meerschaum-2.4.12.dist-info → meerschaum-2.5.0.dist-info}/RECORD +33 -33
  28. {meerschaum-2.4.12.dist-info → meerschaum-2.5.0.dist-info}/LICENSE +0 -0
  29. {meerschaum-2.4.12.dist-info → meerschaum-2.5.0.dist-info}/NOTICE +0 -0
  30. {meerschaum-2.4.12.dist-info → meerschaum-2.5.0.dist-info}/WHEEL +0 -0
  31. {meerschaum-2.4.12.dist-info → meerschaum-2.5.0.dist-info}/entry_points.txt +0 -0
  32. {meerschaum-2.4.12.dist-info → meerschaum-2.5.0.dist-info}/top_level.txt +0 -0
  33. {meerschaum-2.4.12.dist-info → meerschaum-2.5.0.dist-info}/zip-safe +0 -0
@@ -16,9 +16,10 @@ packages dictionary is structured in the following schema:
16
16
  from __future__ import annotations
17
17
  from meerschaum.utils.typing import Dict
18
18
 
19
+ _MRSM_PACKAGE_ARCHIVES_PREFIX: str = "https://meerschaum.io/files/archives/wheels/"
20
+
19
21
  packages: Dict[str, Dict[str, str]] = {
20
- 'required': {
21
- },
22
+ 'required': {},
22
23
  'minimal': {},
23
24
  'formatting': {
24
25
  'pprintpp' : 'pprintpp>=0.4.0',
@@ -36,7 +37,7 @@ packages: Dict[str, Dict[str, str]] = {
36
37
  'yaml' : 'PyYAML>=5.3.1',
37
38
  'pip' : 'pip>=22.0.4',
38
39
  'update_checker' : 'update-checker>=0.18.0',
39
- 'semver' : 'semver>=3.0.0',
40
+ 'semver' : 'semver>=3.0.2',
40
41
  'pathspec' : 'pathspec>=0.9.0',
41
42
  'dateutil' : 'python-dateutil>=2.7.5',
42
43
  'requests' : 'requests>=2.32.3',
@@ -51,10 +52,15 @@ packages: Dict[str, Dict[str, str]] = {
51
52
  'more_itertools' : 'more-itertools>=8.7.0',
52
53
  'fasteners' : 'fasteners>=0.19.0',
53
54
  'virtualenv' : 'virtualenv>=20.1.0',
54
- 'attrs' : 'attrs<24.2.0',
55
- 'apscheduler' : 'APScheduler>=4.0.0a5',
55
+ 'attrs' : 'attrs>=24.2.0',
56
56
  'uv' : 'uv>=0.2.11',
57
57
  },
58
+ '_internal' : {
59
+ 'apscheduler' : (
60
+ f"{_MRSM_PACKAGE_ARCHIVES_PREFIX}"
61
+ "APScheduler-4.0.0a5.post75+mrsm-py3-none-any.whl>=4.0.0a5"
62
+ ),
63
+ },
58
64
  'jobs': {
59
65
  'dill' : 'dill>=0.3.3',
60
66
  'daemon' : 'python-daemon>=0.2.3',
@@ -179,15 +185,25 @@ def get_install_names():
179
185
  install_names[get_install_no_version(_install_name)] = _import_name
180
186
  return install_names
181
187
 
182
- skip_groups = {'docs', 'build', 'cli', 'dev-tools', 'portable', 'extras', 'stack', 'drivers-extras'}
188
+
189
+ skip_groups = {
190
+ 'docs',
191
+ 'build',
192
+ 'cli',
193
+ 'dev-tools',
194
+ 'portable',
195
+ 'extras',
196
+ 'stack',
197
+ 'drivers-extras',
198
+ '_internal',
199
+ }
183
200
  full = []
184
201
  _full = {}
185
202
  for group, import_names in packages.items():
186
203
  ### omit 'cli' and 'docs' from 'full'
187
- if group in skip_groups:
204
+ if group in skip_groups or group.startswith('_'):
188
205
  continue
189
206
  full += [ install_name for import_name, install_name in import_names.items() ]
190
207
  for import_name, install_name in import_names.items():
191
208
  _full[import_name] = install_name
192
209
  packages['full'] = _full
193
-
@@ -178,22 +178,32 @@ def run_process(
178
178
 
179
179
  return ret
180
180
 
181
+
181
182
  def poll_process(
182
- proc: subprocess.Popen,
183
- line_callback: Callable[[bytes], Any],
184
- timeout_seconds: Union[int, float, None] = None,
185
- timeout_callback: Optional[Callable[[Any], Any]] = None,
186
- timeout_callback_args: Optional[Tuple[Any]] = None,
187
- timeout_callback_kwargs: Optional[Dict[str, Any]] = None,
188
- ) -> int:
183
+ proc: subprocess.Popen,
184
+ line_callback: Callable[[bytes], Any],
185
+ timeout_seconds: Union[int, float, None] = None,
186
+ timeout_callback: Optional[Callable[[Any], Any]] = None,
187
+ timeout_callback_args: Optional[Tuple[Any]] = None,
188
+ timeout_callback_kwargs: Optional[Dict[str, Any]] = None,
189
+ ) -> int:
189
190
  """
190
191
  Poll a process and execute a callback function for each line printed to the process's `stdout`.
191
192
  """
192
193
  from meerschaum.utils.threading import Timer
194
+ from meerschaum.utils.warnings import warn
193
195
 
194
196
  def timeout_handler():
195
197
  nonlocal timeout_callback_args, timeout_callback_kwargs
196
- proc.terminate()
198
+ try:
199
+ if platform.system() != 'Windows':
200
+ ### The process being killed may have children.
201
+ os.killpg(os.getpgid(proc.pid), signal.SIGKILL)
202
+ else:
203
+ proc.send_signal(signal.CTRL_BREAK_EVENT)
204
+ proc.terminate()
205
+ except Exception as e:
206
+ warn(f"Failed to kill process:\n{e}")
197
207
  if timeout_callback_args is None:
198
208
  timeout_callback_args = []
199
209
  if timeout_callback_kwargs is None:
@@ -140,7 +140,7 @@ def parse_schedule(schedule: str, now: Optional[datetime] = None):
140
140
  """
141
141
  Parse a schedule string (e.g. 'daily') into a Trigger object.
142
142
  """
143
- from meerschaum.utils.misc import items_str, is_int
143
+ from meerschaum.utils.misc import items_str, is_int, filter_keywords
144
144
  (
145
145
  apscheduler_triggers_cron,
146
146
  apscheduler_triggers_interval,
@@ -204,10 +204,14 @@ def parse_schedule(schedule: str, now: Optional[datetime] = None):
204
204
 
205
205
  trigger = (
206
206
  apscheduler_triggers_interval.IntervalTrigger(
207
- **{
208
- schedule_unit: schedule_num,
209
- 'start_time': starting_ts,
210
- }
207
+ **filter_keywords(
208
+ apscheduler_triggers_interval.IntervalTrigger.__init__,
209
+ **{
210
+ schedule_unit: schedule_num,
211
+ 'start_time': starting_ts,
212
+ 'start_date': starting_ts,
213
+ }
214
+ )
211
215
  )
212
216
  if schedule_unit not in ('months', 'years') else (
213
217
  apscheduler_triggers_calendarinterval.CalendarIntervalTrigger(
@@ -29,15 +29,16 @@ active_venvs = set()
29
29
  active_venvs_counts: Dict[str, int] = {}
30
30
  active_venvs_order: List[Optional[str]] = []
31
31
  threads_active_venvs: Dict[int, 'set[str]'] = {}
32
+ CREATE_NEW_PROCESS_GROUP = 0x00000200
32
33
 
33
34
 
34
35
  def activate_venv(
35
- venv: Optional[str] = 'mrsm',
36
- color: bool = True,
37
- force: bool = False,
38
- debug: bool = False,
39
- **kw
40
- ) -> bool:
36
+ venv: Optional[str] = 'mrsm',
37
+ color: bool = True,
38
+ force: bool = False,
39
+ debug: bool = False,
40
+ **kw
41
+ ) -> bool:
41
42
  """
42
43
  Create a virtual environment (if it doesn't exist) and add it to `sys.path` if necessary.
43
44
 
@@ -102,13 +103,13 @@ def activate_venv(
102
103
 
103
104
 
104
105
  def deactivate_venv(
105
- venv: str = 'mrsm',
106
- color: bool = True,
107
- debug: bool = False,
108
- previously_active_venvs: Union['set[str]', List[str], None] = None,
109
- force: bool = False,
110
- **kw
111
- ) -> bool:
106
+ venv: str = 'mrsm',
107
+ color: bool = True,
108
+ debug: bool = False,
109
+ previously_active_venvs: Union['set[str]', List[str], None] = None,
110
+ force: bool = False,
111
+ **kw
112
+ ) -> bool:
112
113
  """
113
114
  Remove a virtual environment from `sys.path` (if it's been activated).
114
115
 
@@ -498,14 +499,14 @@ def venv_executable(venv: Optional[str] = 'mrsm') -> str:
498
499
 
499
500
 
500
501
  def venv_exec(
501
- code: str,
502
- venv: Optional[str] = 'mrsm',
503
- env: Optional[Dict[str, str]] = None,
504
- with_extras: bool = False,
505
- as_proc: bool = False,
506
- capture_output: bool = True,
507
- debug: bool = False,
508
- ) -> Union[bool, Tuple[int, bytes, bytes]]:
502
+ code: str,
503
+ venv: Optional[str] = 'mrsm',
504
+ env: Optional[Dict[str, str]] = None,
505
+ with_extras: bool = False,
506
+ as_proc: bool = False,
507
+ capture_output: bool = True,
508
+ debug: bool = False,
509
+ ) -> Union[bool, Tuple[int, bytes, bytes]]:
509
510
  """
510
511
  Execute Python code in a subprocess via a virtual environment's interpeter.
511
512
  Return `True` if the code successfully executes, `False` on failure.
@@ -538,6 +539,7 @@ def venv_exec(
538
539
  """
539
540
  import os
540
541
  import subprocess
542
+ import platform
541
543
  from meerschaum.utils.debug import dprint
542
544
  executable = venv_executable(venv=venv)
543
545
  cmd_list = [executable, '-c', code]
@@ -549,11 +551,20 @@ def venv_exec(
549
551
  return subprocess.call(cmd_list, env=env) == 0
550
552
 
551
553
  stdout, stderr = (None, None) if not capture_output else (subprocess.PIPE, subprocess.PIPE)
554
+ group_kwargs = (
555
+ {
556
+ 'preexec_fn': os.setsid,
557
+ } if platform.system() != 'Windows'
558
+ else {
559
+ 'creationflags': CREATE_NEW_PROCESS_GROUP,
560
+ }
561
+ )
552
562
  process = subprocess.Popen(
553
563
  cmd_list,
554
- stdout = stdout,
555
- stderr = stderr,
556
- env = env,
564
+ stdout=stdout,
565
+ stderr=stderr,
566
+ env=env,
567
+ **group_kwargs
557
568
  )
558
569
  if as_proc:
559
570
  return process
@@ -154,13 +154,13 @@ def exception_with_traceback(
154
154
 
155
155
 
156
156
  def error(
157
- message: str,
158
- exception_class = Exception,
159
- nopretty: bool = False,
160
- silent: bool = True,
161
- stack: bool = True,
162
- raise_: bool = True,
163
- ):
157
+ message: str,
158
+ exception_class = Exception,
159
+ nopretty: bool = False,
160
+ silent: bool = True,
161
+ stack: bool = True,
162
+ raise_: bool = True,
163
+ ):
164
164
  """
165
165
  Raise an exception with supressed traceback.
166
166
  """
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: meerschaum
3
- Version: 2.4.12
3
+ Version: 2.5.0
4
4
  Summary: Sync Time-Series Pipes with Meerschaum
5
5
  Home-page: https://meerschaum.io
6
6
  Author: Bennett Meares
@@ -64,7 +64,7 @@ Requires-Dist: setuptools >=63.3.0 ; extra == 'api'
64
64
  Requires-Dist: PyYAML >=5.3.1 ; extra == 'api'
65
65
  Requires-Dist: pip >=22.0.4 ; extra == 'api'
66
66
  Requires-Dist: update-checker >=0.18.0 ; extra == 'api'
67
- Requires-Dist: semver >=3.0.0 ; extra == 'api'
67
+ Requires-Dist: semver >=3.0.2 ; extra == 'api'
68
68
  Requires-Dist: pathspec >=0.9.0 ; extra == 'api'
69
69
  Requires-Dist: python-dateutil >=2.7.5 ; extra == 'api'
70
70
  Requires-Dist: requests >=2.32.3 ; extra == 'api'
@@ -79,8 +79,7 @@ Requires-Dist: prompt-toolkit >=3.0.39 ; extra == 'api'
79
79
  Requires-Dist: more-itertools >=8.7.0 ; extra == 'api'
80
80
  Requires-Dist: fasteners >=0.19.0 ; extra == 'api'
81
81
  Requires-Dist: virtualenv >=20.1.0 ; extra == 'api'
82
- Requires-Dist: attrs <24.2.0 ; extra == 'api'
83
- Requires-Dist: APScheduler >=4.0.0a5 ; extra == 'api'
82
+ Requires-Dist: attrs >=24.2.0 ; extra == 'api'
84
83
  Requires-Dist: uv >=0.2.11 ; extra == 'api'
85
84
  Requires-Dist: pprintpp >=0.4.0 ; extra == 'api'
86
85
  Requires-Dist: asciitree >=0.3.3 ; extra == 'api'
@@ -117,7 +116,7 @@ Requires-Dist: setuptools >=63.3.0 ; extra == 'core'
117
116
  Requires-Dist: PyYAML >=5.3.1 ; extra == 'core'
118
117
  Requires-Dist: pip >=22.0.4 ; extra == 'core'
119
118
  Requires-Dist: update-checker >=0.18.0 ; extra == 'core'
120
- Requires-Dist: semver >=3.0.0 ; extra == 'core'
119
+ Requires-Dist: semver >=3.0.2 ; extra == 'core'
121
120
  Requires-Dist: pathspec >=0.9.0 ; extra == 'core'
122
121
  Requires-Dist: python-dateutil >=2.7.5 ; extra == 'core'
123
122
  Requires-Dist: requests >=2.32.3 ; extra == 'core'
@@ -132,8 +131,7 @@ Requires-Dist: prompt-toolkit >=3.0.39 ; extra == 'core'
132
131
  Requires-Dist: more-itertools >=8.7.0 ; extra == 'core'
133
132
  Requires-Dist: fasteners >=0.19.0 ; extra == 'core'
134
133
  Requires-Dist: virtualenv >=20.1.0 ; extra == 'core'
135
- Requires-Dist: attrs <24.2.0 ; extra == 'core'
136
- Requires-Dist: APScheduler >=4.0.0a5 ; extra == 'core'
134
+ Requires-Dist: attrs >=24.2.0 ; extra == 'core'
137
135
  Requires-Dist: uv >=0.2.11 ; extra == 'core'
138
136
  Provides-Extra: dash
139
137
  Requires-Dist: Flask-Compress >=1.10.1 ; extra == 'dash'
@@ -203,7 +201,7 @@ Requires-Dist: setuptools >=63.3.0 ; extra == 'full'
203
201
  Requires-Dist: PyYAML >=5.3.1 ; extra == 'full'
204
202
  Requires-Dist: pip >=22.0.4 ; extra == 'full'
205
203
  Requires-Dist: update-checker >=0.18.0 ; extra == 'full'
206
- Requires-Dist: semver >=3.0.0 ; extra == 'full'
204
+ Requires-Dist: semver >=3.0.2 ; extra == 'full'
207
205
  Requires-Dist: pathspec >=0.9.0 ; extra == 'full'
208
206
  Requires-Dist: python-dateutil >=2.7.5 ; extra == 'full'
209
207
  Requires-Dist: requests >=2.32.3 ; extra == 'full'
@@ -218,8 +216,7 @@ Requires-Dist: prompt-toolkit >=3.0.39 ; extra == 'full'
218
216
  Requires-Dist: more-itertools >=8.7.0 ; extra == 'full'
219
217
  Requires-Dist: fasteners >=0.19.0 ; extra == 'full'
220
218
  Requires-Dist: virtualenv >=20.1.0 ; extra == 'full'
221
- Requires-Dist: attrs <24.2.0 ; extra == 'full'
222
- Requires-Dist: APScheduler >=4.0.0a5 ; extra == 'full'
219
+ Requires-Dist: attrs >=24.2.0 ; extra == 'full'
223
220
  Requires-Dist: uv >=0.2.11 ; extra == 'full'
224
221
  Requires-Dist: dill >=0.3.3 ; extra == 'full'
225
222
  Requires-Dist: python-daemon >=0.2.3 ; extra == 'full'
@@ -299,7 +296,7 @@ Requires-Dist: setuptools >=63.3.0 ; extra == 'sql'
299
296
  Requires-Dist: PyYAML >=5.3.1 ; extra == 'sql'
300
297
  Requires-Dist: pip >=22.0.4 ; extra == 'sql'
301
298
  Requires-Dist: update-checker >=0.18.0 ; extra == 'sql'
302
- Requires-Dist: semver >=3.0.0 ; extra == 'sql'
299
+ Requires-Dist: semver >=3.0.2 ; extra == 'sql'
303
300
  Requires-Dist: pathspec >=0.9.0 ; extra == 'sql'
304
301
  Requires-Dist: python-dateutil >=2.7.5 ; extra == 'sql'
305
302
  Requires-Dist: requests >=2.32.3 ; extra == 'sql'
@@ -314,8 +311,7 @@ Requires-Dist: prompt-toolkit >=3.0.39 ; extra == 'sql'
314
311
  Requires-Dist: more-itertools >=8.7.0 ; extra == 'sql'
315
312
  Requires-Dist: fasteners >=0.19.0 ; extra == 'sql'
316
313
  Requires-Dist: virtualenv >=20.1.0 ; extra == 'sql'
317
- Requires-Dist: attrs <24.2.0 ; extra == 'sql'
318
- Requires-Dist: APScheduler >=4.0.0a5 ; extra == 'sql'
314
+ Requires-Dist: attrs >=24.2.0 ; extra == 'sql'
319
315
  Requires-Dist: uv >=0.2.11 ; extra == 'sql'
320
316
  Provides-Extra: stack
321
317
  Requires-Dist: docker-compose >=1.29.2 ; extra == 'stack'
@@ -1,7 +1,7 @@
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=5vBZxQbtN0l9lia9HcvvLVWDCpSeThg-505dGhKiOBo,12234
4
+ meerschaum/_internal/entry.py,sha256=6attwMETUtFUtWq17asaSaNoeEvrwSLIVV_e5RX0pCc,12235
5
5
  meerschaum/_internal/arguments/__init__.py,sha256=_nSKKVLXNsJeSv-buxEZsx8_c0BAbkhRyE4nT6Bv6q0,541
6
6
  meerschaum/_internal/arguments/_parse_arguments.py,sha256=H492J571CetGVIEzOZhwQVS3bcm4t6hjWg8Gsf6dw0Y,16340
7
7
  meerschaum/_internal/arguments/_parser.py,sha256=l2RYIn-1MEpjyUz2yczkeeuwg2liYaO2MNvEZ4Amk1o,16364
@@ -24,13 +24,13 @@ meerschaum/_internal/term/tools.py,sha256=dXVAimKD-Yv2fg2WOTr0YGBY7XDKjQqw-RizcS
24
24
  meerschaum/actions/__init__.py,sha256=MHPs8aRBhbZQXnqd_6tVtisTrNCgPAPgnNcXYbn0zP8,11640
25
25
  meerschaum/actions/api.py,sha256=xeqkf4S-DEzFR8roIF1mzy-i_mAnUPkF7y3nIu8twCo,12593
26
26
  meerschaum/actions/attach.py,sha256=UV19d9W_2WYcrf7BRz7k3mriDoX1V4rA4AKvbLdor0o,3106
27
- meerschaum/actions/bootstrap.py,sha256=XmWv1UP2cGb28GRKSVKywAV6_9pk3HQR-Ad8hjnMcK8,18280
27
+ meerschaum/actions/bootstrap.py,sha256=9y4HU1uqjbkAg_706pOOJUMzl196pU7ghfGDCWg0vPE,18234
28
28
  meerschaum/actions/clear.py,sha256=tMacHFv8btWpkNnXHtKDOMiCDNhGb5S6CJhCDIrrNDk,4914
29
29
  meerschaum/actions/copy.py,sha256=NwTwj3IMdK1TFRuJXCxsbIEFNVeoNGoMkvE6H1ZQZzo,6838
30
30
  meerschaum/actions/deduplicate.py,sha256=puYyxeFYEUy1Sd2IOcZB2e6MrNxAZl2bTLmNzFDkCiw,1167
31
- meerschaum/actions/delete.py,sha256=DnEdkt_H4OYoee2DG-1mSDpTBp_Ay2aI1euRa4twPJU,19029
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=f51kHaVu2hMllAszVJtfLh7uKDrZ5OViSQcg12tSsl4,14598
33
+ meerschaum/actions/edit.py,sha256=bJ9DaPXGOySjq_rGFPVlbK99Ls9ajbQ5q5MksX_3WVY,15440
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
@@ -40,16 +40,16 @@ meerschaum/actions/register.py,sha256=By4eCJn-nvrWKs8dPG5GqMClUMm9y_yvIwU_FwRqJX
40
40
  meerschaum/actions/reload.py,sha256=gMXeFBGVfyQ7uhKhYf6bLaDMD0fLPcA9BrLBSiuvWIc,508
41
41
  meerschaum/actions/restart.py,sha256=6ffp3-X9eTEgunVSdD41HnOwqp71yjuSAmXJ5j39ONI,3038
42
42
  meerschaum/actions/setup.py,sha256=KkAGWcgwzl_L6A19fTmTX1KtBjW2FwD8QenLjPy0mQQ,3205
43
- meerschaum/actions/sh.py,sha256=fLfTJaacKu4sjLTRqEzzYlT2WbbdZBEczsKb6F-qAek,2026
43
+ meerschaum/actions/sh.py,sha256=hSkGNTVqP5dNjhJ64zy3V3VCFPTKnDlH3PxdKdxtkGQ,1990
44
44
  meerschaum/actions/show.py,sha256=T8Ol1o-762cI9rlUzd-8svvwgT4slYXYfOPQETh9Koo,28446
45
45
  meerschaum/actions/sql.py,sha256=8BSvlnccfEqLrscLq67Toa5D4FJ7I598IdxEe_yzmV8,4263
46
46
  meerschaum/actions/stack.py,sha256=ZwrCTGJ0x3jjZkRieWcvqasQHYCqNtB1HYvTX-r3Z3g,5996
47
- meerschaum/actions/start.py,sha256=PTYk-EzsSHnPyG5dEF0LHSLLNrJBaN6B9UuJGPhfRbM,19205
47
+ meerschaum/actions/start.py,sha256=26i2Pqg3c_Ltw3lgYzl3sZL2wG0XBgOuJrPK8qPPHdI,21281
48
48
  meerschaum/actions/stop.py,sha256=5fdUw70YN-yuUWrC-NhA88cxr9FZ5NbssbQ8xXO8nFU,4632
49
- meerschaum/actions/sync.py,sha256=DTWDIx7QGwh9zCxwG9L1k3k598h_ePPkrVkybwWUt4w,17225
49
+ meerschaum/actions/sync.py,sha256=uXneLSykNH0LapE4kn_9fzwUQ-kJcRUzJ42pyuoFNaI,17161
50
50
  meerschaum/actions/tag.py,sha256=SJf5qFW0ccLXjqlTdkK_0MCcrCMdg6xhYrhKdco0hdA,3053
51
51
  meerschaum/actions/uninstall.py,sha256=tBXhdXggSieGEQe4EPGxpgMK0MZTJCweNvAJ9-59El0,5776
52
- meerschaum/actions/upgrade.py,sha256=uhFhAPmguGDgxLa1UkVZnPQ-JRcbmOdExE38v-HrLvo,6471
52
+ meerschaum/actions/upgrade.py,sha256=AjuC93Te-I_GWwIfuNkFJ2q1zVHDQ2Oco34S4JgK2iA,6485
53
53
  meerschaum/actions/verify.py,sha256=tY5slGpHiWiE0v9TDnjbmxSKn86zBnu9WBpixUgKNQU,4885
54
54
  meerschaum/api/__init__.py,sha256=5q2XelZvqZSyfCyGIf1mlrWVxrsDaG2_I4L5ACeqMso,8456
55
55
  meerschaum/api/_chain.py,sha256=h8-WXUGXX6AqzdALfsBC5uv0FkAcLdHJXCGzqzuq89k,875
@@ -143,7 +143,7 @@ meerschaum/config/_preprocess.py,sha256=-AEA8m_--KivZwTQ1sWN6LTn5sio_fUr2XZ51BO6
143
143
  meerschaum/config/_read_config.py,sha256=oxnLjuhy6JBBld886FkBX07wUdkpzEzTItYMUa9qw1Q,14688
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=xIXlWHgz3jJoMBNfzTMSvX_D7PqRAasEI5rlJLcWiyA,72
146
+ meerschaum/config/_version.py,sha256=wtE11BYLrlYRUUbwWnx12ho0mgFDv-guHaABMWLfMLY,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=gGVxXgNnGb9u25iF__IiNPlZt1BLUVmHmFJ0jvnJg3Q,10548
@@ -173,12 +173,12 @@ meerschaum/connectors/plugin/__init__.py,sha256=pwF7TGY4WNz2_HaVdmK4rPQ9ZwTOEuPH
173
173
  meerschaum/connectors/sql/_SQLConnector.py,sha256=QlC2Af7AM7bIlPHjUO57mTyzot3zU7o83jegADMxnBE,11829
174
174
  meerschaum/connectors/sql/__init__.py,sha256=3cqYiDkVasn7zWdtOTAZbT4bo95AuvGOmDD2TkaAxtw,205
175
175
  meerschaum/connectors/sql/_cli.py,sha256=1SgnWeMIAihoxp4FzbNrcq1npXf0dSOQnCntpU9hUXA,4405
176
- meerschaum/connectors/sql/_create_engine.py,sha256=pZPjy-ne8DtVfu-wqMJopIGkgm8vul-y3E9d4tUyTgM,10215
177
- meerschaum/connectors/sql/_fetch.py,sha256=pReFEPwwS2UuDn4A-EkAm6O2IpekM88pLujCkby9fyc,12913
178
- meerschaum/connectors/sql/_instance.py,sha256=zXPZnEqvOAeOUPMeh6CcfkB1pOjjwJxdUOwXccRbuwk,6465
179
- meerschaum/connectors/sql/_pipes.py,sha256=-jbuBjZ8EET2bkhgAWQmqci5FNcBCZUqnOcF_tuHq8M,101055
176
+ meerschaum/connectors/sql/_create_engine.py,sha256=zqeu1xHOw3n3Zgfjx-diy2aoynfdOlfOjwFuRrzB028,10452
177
+ meerschaum/connectors/sql/_fetch.py,sha256=J5e9EZrb70neXq8p78LFTTJiVukMIEKHuTXlILHDDGI,13005
178
+ meerschaum/connectors/sql/_instance.py,sha256=3KJI3ImwWAJkUfdZIrSL24pcW6Nic8wo5IUeGth9HP4,6459
179
+ meerschaum/connectors/sql/_pipes.py,sha256=8qoiv4nmvU4TVMTtvzWbPcqhq-izZ-C2338t4NFGQ0I,101302
180
180
  meerschaum/connectors/sql/_plugins.py,sha256=wbxcNxqTtjfDsxPvdVGTllasYf6NHHzODaQ72hEUSBQ,8135
181
- meerschaum/connectors/sql/_sql.py,sha256=zEh6fbOLJhfLOF-4x9OTQ5Fi3NMSVES3oixmnGYcNG8,36381
181
+ meerschaum/connectors/sql/_sql.py,sha256=gw8dy6-s8VqxANO9-tXIXFqCwPT_GrktG81AAQgqmPE,36032
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
@@ -191,8 +191,8 @@ meerschaum/connectors/valkey/_pipes.py,sha256=7GNDGoVDIULyGUjUisckErvRlrcnN4WkML
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=YyLs2ZlvRkyHKQechD6Hs4VaSDgpIbgbnhr8VxG43k4,16737
195
- meerschaum/core/Pipe/_attributes.py,sha256=yAHYvizRSkqqkIRcaGAYvUjE2qe5H4xNKBmxUegLrPk,13143
194
+ meerschaum/core/Pipe/__init__.py,sha256=2dOEf8e3uwkwIac2sMbu3RZDyAAFzD7h6z9X-Lyb1Ds,17649
195
+ meerschaum/core/Pipe/_attributes.py,sha256=tB6v-KT7CbBaNTvgLbYFMpE4M73nicql1KWO9QT2ctg,15490
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
@@ -215,23 +215,23 @@ meerschaum/jobs/_Job.py,sha256=hkjHqG5YPej5rC4nwdU7Ay_mjep9Fy4HO5B-eqdBdfo,31984
215
215
  meerschaum/jobs/__init__.py,sha256=q0f_2zWw91sAyafP50IgMM06abe-BIYSR_SCWmI4W3E,12177
216
216
  meerschaum/jobs/systemd.py,sha256=Rq-tsDPslG17ZhpKMrVJ5r8Z0IPr6DEc9APObfIoXCg,24614
217
217
  meerschaum/plugins/_Plugin.py,sha256=rTiGNQ9nIQeVSG_P9C6DHCMLW0K-J7zzuu3FjNXUOlE,34056
218
- meerschaum/plugins/__init__.py,sha256=trMQ53qgP7ikJhhV_uXzqJw6X1NDz2rPOGXFk40bb1Y,26190
219
- meerschaum/plugins/bootstrap.py,sha256=qg9MQ1YAU8ShwGqWDl38WjiXLIxDPl95pSIGDLN9rOw,11423
218
+ meerschaum/plugins/__init__.py,sha256=6krcqaMKyzuVqesXMqEL0XEy2SJQ4xfNt2-oI_fJ6v0,26278
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=qV_6ecpxMIZOoiUb0pIk8u5ZPBn-h6O1yS_DtdLFX_U,41937
222
+ meerschaum/utils/dataframe.py,sha256=Sg4tUZbqgstwQnnnNR-zALzxJ6kRMeej_4n29HC9pWU,42157
223
223
  meerschaum/utils/debug.py,sha256=GyIzJmunkoPnOcZNYVQdT4Sgd-aOb5MI2VbIgATOjIQ,3695
224
224
  meerschaum/utils/interactive.py,sha256=t-6jWozXSqL7lYGDHuwiOjTgr-UKhdcg61q_eR5mikI,3196
225
225
  meerschaum/utils/misc.py,sha256=OijhS1TMjlqkDvahbxhqfUdo0Myeor-kTKrvqqG8wN0,46349
226
226
  meerschaum/utils/networking.py,sha256=Sr_eYUGW8_UV9-k9LqRFf7xLtbUcsDucODyLCRsFRUc,1006
227
227
  meerschaum/utils/pool.py,sha256=vkE42af4fjrTEJTxf6Ek3xGucm1MtEkpsSEiaVzNKHs,2655
228
- meerschaum/utils/process.py,sha256=o7UtTQX87YGkg2dItPhlvN7gNQPkElXTYSzKf5Ro8Uc,7474
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=6I2TFGa1aPRU9wTdd3YFrJq-DCPpnl-sTWeFEnrINYA,10886
230
+ meerschaum/utils/schedule.py,sha256=zKOtfVdr1QRSZYBOSrO2MRIz8DTMbkWfQA6CjahbSso,11115
231
231
  meerschaum/utils/sql.py,sha256=R_hX92brvZDqID7c85-PNUVVR6RWXGXEgn1vFpHmi88,49869
232
232
  meerschaum/utils/threading.py,sha256=3N8JXPAnwqJiSjuQcbbJg3Rv9-CCUMJpeQRfKFR7MaA,2489
233
233
  meerschaum/utils/typing.py,sha256=U3MC347sh1umpa3Xr1k71eADyDmk4LB6TnVCpq8dVzI,2830
234
- meerschaum/utils/warnings.py,sha256=IDiwYspsfjIi1gtk3V9cSo9vNLckB9bCsHhRClpPJTc,6639
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
236
  meerschaum/utils/daemon/Daemon.py,sha256=rLUjJTGwKVUGVTHyz_A_lUJ_Wb2CgzT1ZFLhLwvGiNk,42142
237
237
  meerschaum/utils/daemon/FileDescriptorInterceptor.py,sha256=MJKMO0Syf3d8yWUs6xXcQzg8Ptsuvh2aCRRoglOjusA,5257
@@ -246,16 +246,16 @@ meerschaum/utils/formatting/_jobs.py,sha256=izsqPJhTtUkXUUtWnbXtReYsUYwulXtci3pB
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
- meerschaum/utils/packages/__init__.py,sha256=m3HLTkKJxXco1g-h75q2l5skBwKXWaJtNmfQOsijchI,63965
250
- meerschaum/utils/packages/_packages.py,sha256=8Ox9fiQTVmmKAmlxZBV-7Wtq_jhPnnf3AMXvktGE-KY,8319
249
+ meerschaum/utils/packages/__init__.py,sha256=KNs1Qc8-DX7r6LlZxyl9-Qr2FnsCtZfjSbiwo-sGNf8,64196
250
+ meerschaum/utils/packages/_packages.py,sha256=L8G9mQtiDyFp2pKesHufZrtbPAty0DH4u8k2wmCTxVY,8687
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
- meerschaum/utils/venv/__init__.py,sha256=G3KXL4ByWNqVxBRLs_RaJbO3h3tOKXkazkAYuoUW568,24420
254
- meerschaum-2.4.12.dist-info/LICENSE,sha256=jG2zQEdRNt88EgHUWPpXVWmOrOduUQRx7MnYV9YIPaw,11359
255
- meerschaum-2.4.12.dist-info/METADATA,sha256=rVQS3Zz8YZeAYGAa3AEkifTMrDyvBW2B-epRjrf7xc8,24820
256
- meerschaum-2.4.12.dist-info/NOTICE,sha256=OTA9Fcthjf5BRvWDDIcBC_xfLpeDV-RPZh3M-HQBRtQ,114
257
- meerschaum-2.4.12.dist-info/WHEEL,sha256=OVMc5UfuAQiSplgO0_WdW7vXVGAt9Hdd6qtN4HotdyA,91
258
- meerschaum-2.4.12.dist-info/entry_points.txt,sha256=5YBVzibw-0rNA_1VjB16z5GABsOGf-CDhW4yqH8C7Gc,88
259
- meerschaum-2.4.12.dist-info/top_level.txt,sha256=bNoSiDj0El6buocix-FRoAtJOeq1qOF5rRm2u9i7Q6A,11
260
- meerschaum-2.4.12.dist-info/zip-safe,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
261
- meerschaum-2.4.12.dist-info/RECORD,,
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,,