meerschaum 2.2.4__py3-none-any.whl → 2.2.5.dev2__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 (37) hide show
  1. meerschaum/_internal/arguments/_parse_arguments.py +23 -14
  2. meerschaum/_internal/arguments/_parser.py +4 -1
  3. meerschaum/_internal/entry.py +2 -4
  4. meerschaum/_internal/shell/Shell.py +0 -3
  5. meerschaum/actions/__init__.py +5 -1
  6. meerschaum/actions/backup.py +43 -0
  7. meerschaum/actions/bootstrap.py +32 -7
  8. meerschaum/actions/delete.py +62 -0
  9. meerschaum/actions/edit.py +98 -15
  10. meerschaum/actions/python.py +44 -2
  11. meerschaum/actions/show.py +26 -0
  12. meerschaum/actions/uninstall.py +24 -29
  13. meerschaum/api/_oauth2.py +17 -0
  14. meerschaum/api/routes/_login.py +23 -7
  15. meerschaum/config/__init__.py +16 -6
  16. meerschaum/config/_edit.py +1 -1
  17. meerschaum/config/_paths.py +3 -0
  18. meerschaum/config/_version.py +1 -1
  19. meerschaum/config/stack/__init__.py +3 -1
  20. meerschaum/core/Pipe/_fetch.py +25 -21
  21. meerschaum/core/Pipe/_sync.py +89 -59
  22. meerschaum/plugins/bootstrap.py +333 -0
  23. meerschaum/utils/daemon/Daemon.py +14 -3
  24. meerschaum/utils/daemon/FileDescriptorInterceptor.py +21 -14
  25. meerschaum/utils/daemon/RotatingFile.py +21 -18
  26. meerschaum/utils/formatting/__init__.py +22 -10
  27. meerschaum/utils/packages/_packages.py +1 -1
  28. meerschaum/utils/prompt.py +64 -21
  29. meerschaum/utils/yaml.py +32 -1
  30. {meerschaum-2.2.4.dist-info → meerschaum-2.2.5.dev2.dist-info}/METADATA +5 -2
  31. {meerschaum-2.2.4.dist-info → meerschaum-2.2.5.dev2.dist-info}/RECORD +37 -35
  32. {meerschaum-2.2.4.dist-info → meerschaum-2.2.5.dev2.dist-info}/WHEEL +1 -1
  33. {meerschaum-2.2.4.dist-info → meerschaum-2.2.5.dev2.dist-info}/LICENSE +0 -0
  34. {meerschaum-2.2.4.dist-info → meerschaum-2.2.5.dev2.dist-info}/NOTICE +0 -0
  35. {meerschaum-2.2.4.dist-info → meerschaum-2.2.5.dev2.dist-info}/entry_points.txt +0 -0
  36. {meerschaum-2.2.4.dist-info → meerschaum-2.2.5.dev2.dist-info}/top_level.txt +0 -0
  37. {meerschaum-2.2.4.dist-info → meerschaum-2.2.5.dev2.dist-info}/zip-safe +0 -0
@@ -61,6 +61,7 @@ def prompt(
61
61
  from meerschaum.utils.formatting import colored, ANSI, CHARSET, highlight_pipes, fill_ansi
62
62
  from meerschaum.config import get_config
63
63
  from meerschaum.config.static import _static_config
64
+ from meerschaum.utils.misc import filter_keywords
64
65
  noask = check_noask(noask)
65
66
  if not noask:
66
67
  prompt_toolkit = attempt_import('prompt_toolkit')
@@ -101,7 +102,7 @@ def prompt(
101
102
  prompt_toolkit.prompt(
102
103
  prompt_toolkit.formatted_text.ANSI(question),
103
104
  wrap_lines = wrap_lines,
104
- **kw
105
+ **filter_keywords(prompt_toolkit.prompt, **kw)
105
106
  ) if not noask else ''
106
107
  )
107
108
  if noask:
@@ -192,10 +193,11 @@ def yes_no(
192
193
 
193
194
  def choose(
194
195
  question: str,
195
- choices: List[str],
196
- default: Optional[str] = None,
196
+ choices: List[Union[str, Tuple[str, str]]],
197
+ default: Union[str, List[str], None] = None,
197
198
  numeric: bool = True,
198
199
  multiple: bool = False,
200
+ as_indices: bool = False,
199
201
  delimiter: str = ',',
200
202
  icon: bool = True,
201
203
  warn: bool = True,
@@ -210,10 +212,12 @@ def choose(
210
212
  question: str
211
213
  The question to be printed.
212
214
 
213
- choices: List[str]
215
+ choices: List[Union[str, Tuple[str, str]]
214
216
  A list of options.
217
+ If an option is a tuple of two strings, the first string is treated as the index
218
+ and not displayed. In this case, set `as_indices` to `True` to return the index.
215
219
 
216
- default: Optional[str], default None
220
+ default: Union[str, List[str], None], default None
217
221
  If the user declines to enter a choice, return this value.
218
222
 
219
223
  numeric: bool, default True
@@ -223,6 +227,11 @@ def choose(
223
227
  multiple: bool, default False
224
228
  If `True`, allow the user to choose multiple answers separated by `delimiter`.
225
229
 
230
+ as_indices: bool, default False
231
+ If `True`, return the indices for the choices.
232
+ If a choice is a tuple of two strings, the first is assumed to be the index.
233
+ Otherwise the index in the list is returned.
234
+
226
235
  delimiter: str, default ','
227
236
  If `multiple`, separate answers by this string. Raise a warning if this string is contained
228
237
  in any of the choices.
@@ -243,6 +252,7 @@ def choose(
243
252
  """
244
253
  from meerschaum.utils.warnings import warn as _warn
245
254
  from meerschaum.utils.packages import attempt_import
255
+ from meerschaum.utils.misc import print_options
246
256
  noask = check_noask(noask)
247
257
 
248
258
  ### Handle empty choices.
@@ -254,8 +264,14 @@ def choose(
254
264
  if isinstance(default, list):
255
265
  multiple = True
256
266
 
267
+ choices_indices = {}
268
+ for i, c in enumerate(choices):
269
+ if isinstance(c, tuple):
270
+ i, c = c
271
+ choices_indices[i] = c
272
+
257
273
  def _enforce_default(d):
258
- if d is not None and d not in choices and warn:
274
+ if d is not None and d not in choices and d not in choices_indices and warn:
259
275
  _warn(
260
276
  f"Default choice '{default}' is not contained in the choices {choices}. "
261
277
  + "Setting numeric = False.",
@@ -271,16 +287,18 @@ def choose(
271
287
  break
272
288
 
273
289
  _default = default
274
- _choices = choices
290
+ _choices = list(choices_indices.values())
275
291
  if multiple:
276
- question += f"\n Enter your choices, separated by '{delimiter}'."
292
+ question += f"\n Enter your choices, separated by '{delimiter}'.\n"
277
293
 
278
294
  altered_choices = {}
279
295
  altered_indices = {}
280
296
  altered_default_indices = {}
281
297
  delim_replacement = '_' if delimiter != '_' else '-'
282
298
  can_strip_start_spaces, can_strip_end_spaces = True, True
283
- for c in choices:
299
+ for i, c in choices_indices.items():
300
+ if isinstance(c, tuple):
301
+ key, c = c
284
302
  if can_strip_start_spaces and c.startswith(' '):
285
303
  can_strip_start_spaces = False
286
304
  if can_strip_end_spaces and c.endswith(' '):
@@ -301,8 +319,8 @@ def choose(
301
319
  default[i] = new_d
302
320
 
303
321
  ### Check if the choices have the delimiter.
304
- for i, c in enumerate(choices):
305
- if delimiter in c and warn:
322
+ for i, c in choices_indices.items():
323
+ if delimiter in c and not numeric and warn:
306
324
  _warn(
307
325
  f"The delimiter '{delimiter}' is contained within choice '{c}'.\n"
308
326
  + f"Replacing the string '{delimiter}' with '{delim_replacement}' in "
@@ -313,34 +331,53 @@ def choose(
313
331
  altered_choices[new_c] = c
314
332
  altered_indices[i] = new_c
315
333
  for i, new_c in altered_indices.items():
316
- choices[i] = new_c
334
+ choices_indices[i] = new_c
317
335
  default = delimiter.join(default) if isinstance(default, list) else default
318
336
 
337
+ question_options = []
319
338
  if numeric:
320
339
  _choices = [str(i + 1) for i, c in enumerate(choices)]
321
340
  _default = ''
322
341
  if default is not None:
323
342
  for d in (default.split(delimiter) if multiple else [default]):
343
+ if d not in choices and d in choices_indices:
344
+ d_index = d
345
+ d_value = choices_indices[d]
346
+ for _i, _option in enumerate(choices):
347
+ if (
348
+ isinstance(_option, tuple) and (
349
+ _option[1] == d_value
350
+ or
351
+ _option[0] == d_index
352
+ )
353
+ ) or d_index == _i:
354
+ d = _option
355
+
324
356
  _d = str(choices.index(d) + 1)
325
357
  _default += _d + delimiter
326
358
  _default = _default[:-1 * len(delimiter)]
327
- question += '\n'
359
+ # question += '\n'
328
360
  choices_digits = len(str(len(choices)))
329
- for i, c in enumerate(choices):
330
- question += f" {i + 1}. " + (" " * (choices_digits - len(str(i + 1)))) + f"{c}\n"
361
+ for i, c in enumerate(choices_indices.values()):
362
+ question_options.append(
363
+ f" {i + 1}. "
364
+ + (" " * (choices_digits - len(str(i + 1))))
365
+ + f"{c}\n"
366
+ )
331
367
  default_tuple = (_default, default) if default is not None else None
332
368
  else:
333
369
  default_tuple = default
334
- question += '\n'
335
- for c in choices:
336
- question += f" - {c}\n"
370
+ # question += '\n'
371
+ for c in choices_indices.values():
372
+ question_options.append(f"{c}\n")
337
373
 
338
374
  if 'completer' not in kw:
339
375
  WordCompleter = attempt_import('prompt_toolkit.completion').WordCompleter
340
- kw['completer'] = WordCompleter(choices, sentence=True)
376
+ kw['completer'] = WordCompleter(choices_indices.values(), sentence=True)
341
377
 
342
378
  valid = False
343
379
  while not valid:
380
+ print_options(question_options, header='')
344
381
  answer = prompt(
345
382
  question,
346
383
  icon = icon,
@@ -383,7 +420,10 @@ def choose(
383
420
  if not numeric:
384
421
  return answer
385
422
  try:
386
- return choices[int(answer) - 1]
423
+ _answer = choices[int(answer) - 1]
424
+ if as_indices and isinstance(choice, tuple):
425
+ return _answer[0]
426
+ return _answer
387
427
  except Exception as e:
388
428
  _warn(f"Could not cast answer '{answer}' to an integer.", stacklevel=3)
389
429
 
@@ -393,7 +433,10 @@ def choose(
393
433
  for a in answers:
394
434
  try:
395
435
  _answer = choices[int(a) - 1]
396
- _answers.append(altered_choices.get(_answer, _answer))
436
+ _answer_to_return = altered_choices.get(_answer, _answer)
437
+ if isinstance(_answer_to_return, tuple) and as_indices:
438
+ _answer_to_return = _answer_to_return[0]
439
+ _answers.append(_answer_to_return)
397
440
  except Exception as e:
398
441
  _warn(f"Could not cast answer '{a}' to an integer.", stacklevel=3)
399
442
  return _answers
meerschaum/utils/yaml.py CHANGED
@@ -18,6 +18,7 @@ _lib = None
18
18
  _import_name = 'yaml'
19
19
 
20
20
  _yaml = None
21
+ _dumper = None
21
22
  _locks = {
22
23
  '_lib': Lock(),
23
24
  '_yaml': Lock(),
@@ -46,7 +47,7 @@ class yaml:
46
47
  """
47
48
  Wrapper around `PyYAML` and `ruamel.yaml` so that we may switch between implementations.
48
49
  """
49
- global _yaml, _lib
50
+ global _yaml, _lib, _dumper
50
51
  if _import_name is None:
51
52
  error(f"No YAML library declared.")
52
53
  with _locks['_lib']:
@@ -85,6 +86,7 @@ class yaml:
85
86
  and packaging_version.parse(_yaml.__version__) >= packaging_version.parse('6.0')
86
87
  ):
87
88
  _args += [_yaml.Loader]
89
+
88
90
  return _yaml.load(*_args, **filter_keywords(_yaml.load, **kw))
89
91
 
90
92
 
@@ -98,7 +100,36 @@ class yaml:
98
100
  if stream is None and _import_name == 'ruamel.yaml':
99
101
  stream = _lib.compat.StringIO()
100
102
  get_string = True
103
+
104
+ if _import_name == 'yaml' and 'Dumper' not in kw:
105
+ kw['Dumper'] = get_dumper_class()
106
+
101
107
  result = _yaml.dump(data, stream, **filter_keywords(_yaml.dump, **kw))
102
108
  if get_string:
103
109
  return stream.getvalue()
104
110
  return result
111
+
112
+
113
+ def get_dumper_class():
114
+ """
115
+ Return the dumper class to use when writing.
116
+ Only supports `yaml`.
117
+ """
118
+ global _dumper
119
+ if _dumper is not None:
120
+ return _dumper
121
+
122
+ if _import_name != 'yaml':
123
+ return None
124
+
125
+ class CustomDumper(_yaml.Dumper):
126
+ """
127
+ Add an extra line break when writing.
128
+ """
129
+ def write_line_break(self, data=None):
130
+ if len(self.indents) == 1:
131
+ super(CustomDumper, self).write_line_break(data)
132
+ super(CustomDumper, self).write_line_break(data)
133
+
134
+ _dumper = CustomDumper
135
+ return _dumper
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: meerschaum
3
- Version: 2.2.4
3
+ Version: 2.2.5.dev2
4
4
  Summary: Sync Time-Series Pipes with Meerschaum
5
5
  Home-page: https://meerschaum.io
6
6
  Author: Bennett Meares
@@ -68,6 +68,7 @@ Requires-Dist: python-dateutil >=2.7.5 ; extra == 'api'
68
68
  Requires-Dist: requests >=2.23.0 ; extra == 'api'
69
69
  Requires-Dist: binaryornot >=0.4.4 ; extra == 'api'
70
70
  Requires-Dist: pyvim >=3.0.2 ; extra == 'api'
71
+ Requires-Dist: ptpython >=3.0.27 ; extra == 'api'
71
72
  Requires-Dist: aiofiles >=0.6.0 ; extra == 'api'
72
73
  Requires-Dist: packaging >=21.3.0 ; extra == 'api'
73
74
  Requires-Dist: prompt-toolkit >=3.0.39 ; extra == 'api'
@@ -105,7 +106,6 @@ Requires-Dist: mycli >=1.23.2 ; extra == 'cli'
105
106
  Requires-Dist: litecli >=1.5.0 ; extra == 'cli'
106
107
  Requires-Dist: mssql-cli >=1.0.0 ; extra == 'cli'
107
108
  Requires-Dist: gadwall >=0.2.0 ; extra == 'cli'
108
- Requires-Dist: ptpython >=3.0.27 ; extra == 'cli'
109
109
  Provides-Extra: core
110
110
  Requires-Dist: wheel >=0.34.2 ; extra == 'core'
111
111
  Requires-Dist: setuptools >=63.3.0 ; extra == 'core'
@@ -118,6 +118,7 @@ Requires-Dist: python-dateutil >=2.7.5 ; extra == 'core'
118
118
  Requires-Dist: requests >=2.23.0 ; extra == 'core'
119
119
  Requires-Dist: binaryornot >=0.4.4 ; extra == 'core'
120
120
  Requires-Dist: pyvim >=3.0.2 ; extra == 'core'
121
+ Requires-Dist: ptpython >=3.0.27 ; extra == 'core'
121
122
  Requires-Dist: aiofiles >=0.6.0 ; extra == 'core'
122
123
  Requires-Dist: packaging >=21.3.0 ; extra == 'core'
123
124
  Requires-Dist: prompt-toolkit >=3.0.39 ; extra == 'core'
@@ -204,6 +205,7 @@ Requires-Dist: python-dateutil >=2.7.5 ; extra == 'full'
204
205
  Requires-Dist: requests >=2.23.0 ; extra == 'full'
205
206
  Requires-Dist: binaryornot >=0.4.4 ; extra == 'full'
206
207
  Requires-Dist: pyvim >=3.0.2 ; extra == 'full'
208
+ Requires-Dist: ptpython >=3.0.27 ; extra == 'full'
207
209
  Requires-Dist: aiofiles >=0.6.0 ; extra == 'full'
208
210
  Requires-Dist: packaging >=21.3.0 ; extra == 'full'
209
211
  Requires-Dist: prompt-toolkit >=3.0.39 ; extra == 'full'
@@ -288,6 +290,7 @@ Requires-Dist: python-dateutil >=2.7.5 ; extra == 'sql'
288
290
  Requires-Dist: requests >=2.23.0 ; extra == 'sql'
289
291
  Requires-Dist: binaryornot >=0.4.4 ; extra == 'sql'
290
292
  Requires-Dist: pyvim >=3.0.2 ; extra == 'sql'
293
+ Requires-Dist: ptpython >=3.0.27 ; extra == 'sql'
291
294
  Requires-Dist: aiofiles >=0.6.0 ; extra == 'sql'
292
295
  Requires-Dist: packaging >=21.3.0 ; extra == 'sql'
293
296
  Requires-Dist: prompt-toolkit >=3.0.39 ; extra == 'sql'
@@ -1,10 +1,10 @@
1
1
  meerschaum/__init__.py,sha256=mw_PhxT7155SW8d_S51T4-WTibL5g205CwMa3qX8qyA,1487
2
2
  meerschaum/__main__.py,sha256=Q43yra6APe5CdhDp9ngaorUjs8ZoabeYnMa6C5kQchA,2763
3
3
  meerschaum/_internal/__init__.py,sha256=ilC7utfKtin7GAvuN34fKyUQYfPyqH0Mm3MJF5iyEf4,169
4
- meerschaum/_internal/entry.py,sha256=_pfnlnXhqzP4XQ5syZ04sDG9LxS5UhNdziBlETDMUhc,5756
4
+ meerschaum/_internal/entry.py,sha256=TNqt79kfNgXH-7Pi75Jus4Osi9y776ZVptFuvrs4wWY,5680
5
5
  meerschaum/_internal/arguments/__init__.py,sha256=HFciFQgo2ZOT19Mo6CpLhPYlpLYh2sNn1C9Lo7NMADc,519
6
- meerschaum/_internal/arguments/_parse_arguments.py,sha256=dNVDBvXYNgEw-TrlZJ9A6VPlG696EpQcQm6FOAhseqw,10249
7
- meerschaum/_internal/arguments/_parser.py,sha256=OtcrZK-_qV9a5qpdcP9NLKOGRevjmCU9fBLbB88px3c,13719
6
+ meerschaum/_internal/arguments/_parse_arguments.py,sha256=ZPkJamB6noJAEpG_cyZGVYu6hXxtQ7H7c-j7gq3Csi8,10405
7
+ meerschaum/_internal/arguments/_parser.py,sha256=9PsfyiqQHpmZPKRryCti8qdUCSKD_ncBZ26iVgcOdzE,13796
8
8
  meerschaum/_internal/docs/__init__.py,sha256=ZQYHWo6n0kfLLkyG36YXqTYvv2Pc7it5HZHMylT6cBA,126
9
9
  meerschaum/_internal/docs/index.py,sha256=iWMe1rOVKvaP84q0tEzqwy-Dtgojg9cFmBntgPQBHu0,7076
10
10
  meerschaum/_internal/gui/__init__.py,sha256=KF6Opae0aBOjIndMZ2txoPs7ozCXRlR-lcTsicLO7fc,1313
@@ -12,7 +12,7 @@ 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=aWWUWD5i0T7qopEFqIf76AiTwLYy41DC7qFjIuiOnoM,33276
15
+ meerschaum/_internal/shell/Shell.py,sha256=JgxEg4gnxUS8R8HdFZ4k49KXvTGoy3dRQcEi4dmjw9I,33111
16
16
  meerschaum/_internal/shell/ShellCompleter.py,sha256=bbG-mExNXO4pltWBOXdbMp8P2wLgy8_BgipIr5aGp5s,3114
17
17
  meerschaum/_internal/shell/ValidAutoSuggest.py,sha256=bARjOWMidz0dvMelLUe6yRPto5l3gcEHYHqFDjoh22I,1280
18
18
  meerschaum/_internal/shell/__init__.py,sha256=vXQoQPEVlYiUYai1b5AwQAlTnja6A2cSABnqXhzlS7I,281
@@ -20,38 +20,39 @@ meerschaum/_internal/shell/resources/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeu
20
20
  meerschaum/_internal/term/TermPageHandler.py,sha256=Rt5S47Pr_3HLJc8xIXpZUczYE_Dw2qT8qwf1jZFtUHQ,520
21
21
  meerschaum/_internal/term/__init__.py,sha256=LqTySBfHYnOtHGYCWfovcxV4FnZdON2BPYp0UbgI1QI,1640
22
22
  meerschaum/_internal/term/tools.py,sha256=dXVAimKD-Yv2fg2WOTr0YGBY7XDKjQqw-RizcS65YVI,727
23
- meerschaum/actions/__init__.py,sha256=7CNoKEqkqqafqMcChspJX9cR9OdgEWk9ggj0000Jl98,11360
23
+ meerschaum/actions/__init__.py,sha256=ZUdQk6FvuMqyEvLCP-RiDDlIK4NwkqLRgFZSKq04qq4,11440
24
24
  meerschaum/actions/api.py,sha256=mWhv4bn3Ap17_Gqf2Cx9bAsHKG-Zhy072pBbNzHLEJc,12756
25
- meerschaum/actions/bootstrap.py,sha256=JnIyJ4odw6cA4e0Cw7J8THkLavMcj68nRyGsQDAT8nc,13396
25
+ meerschaum/actions/backup.py,sha256=MhdNEo7ptOdFpR-L0o9Z590hBmKeqHsSx64GPKhx9e8,1230
26
+ meerschaum/actions/bootstrap.py,sha256=Tsv3bL63mb6zDSCpxl3Mq05YulwbDTGNNZr3ttVmksA,14119
26
27
  meerschaum/actions/clear.py,sha256=OoFZE0bK5m8s3GLNZcixuVT0DMj1izXVxGCATcmUGbI,4851
27
28
  meerschaum/actions/copy.py,sha256=8g3ANXfVdvuyaoXcZjgTg3BxHTOhHGrzVDOOsTBrpSU,6213
28
29
  meerschaum/actions/deduplicate.py,sha256=puYyxeFYEUy1Sd2IOcZB2e6MrNxAZl2bTLmNzFDkCiw,1167
29
- meerschaum/actions/delete.py,sha256=Nf1c47i_qZcWVpVe_se3qG5LhhYpXzvDPCqFBy_ER8U,15528
30
+ meerschaum/actions/delete.py,sha256=RDkIQEnnN8t52dMAJpxoQ7LN-pzH7UAfGF8yT5oNiIw,17325
30
31
  meerschaum/actions/drop.py,sha256=Hd5h4rrWd7qL2rTqglsTonUsEoH7qQlsfqNFSHGeqr0,2453
31
- meerschaum/actions/edit.py,sha256=dHfqVtc1v6UUT_GEhWQkgoUf1nMbX_LLOETLGR5cCXQ,9487
32
+ meerschaum/actions/edit.py,sha256=93_mlZhPfiErs9TJ3_Xf9KYxIopaR86nQXJlZsKNNok,11752
32
33
  meerschaum/actions/install.py,sha256=akzzgsvy5yqUFuUqzSMG4eBKARY2iSnL3n_BiaNcM58,7431
33
34
  meerschaum/actions/login.py,sha256=fNgsgkrFCn9wBQJY50SQhz2PwsN_TvEYYHnXK3JG4ig,4206
34
35
  meerschaum/actions/os.py,sha256=dtoppoBhLzW3rLNF0SFovEfNxA4WJWt_9WrOGlS5KbA,2251
35
36
  meerschaum/actions/pause.py,sha256=kDK0UMm90TuohFEG5Gugl3PEbuqGua-ghidqvgYShoc,3909
36
- meerschaum/actions/python.py,sha256=Ogqm9NFFq3E710mRWAAU7F8JiEHrxYcGKj5H3ZDsP-s,3295
37
+ meerschaum/actions/python.py,sha256=hOtA_opi6ulF71XP5p0V5zXsLD7CCdSFWhiBanFevtw,4539
37
38
  meerschaum/actions/register.py,sha256=l_21LWZCzKwJVex_xAXECC5WVW1VEuIX9HSp7CuyCwA,11326
38
39
  meerschaum/actions/reload.py,sha256=gMXeFBGVfyQ7uhKhYf6bLaDMD0fLPcA9BrLBSiuvWIc,508
39
40
  meerschaum/actions/setup.py,sha256=KkAGWcgwzl_L6A19fTmTX1KtBjW2FwD8QenLjPy0mQQ,3205
40
41
  meerschaum/actions/sh.py,sha256=fLfTJaacKu4sjLTRqEzzYlT2WbbdZBEczsKb6F-qAek,2026
41
- meerschaum/actions/show.py,sha256=p92UahbFeKOThGooO8Ul5Z6s6_Ll54FCxXsMAFnhuT0,29024
42
+ meerschaum/actions/show.py,sha256=S6J8bM2Jc9mzi31Dp_qqZLVqsRswPemWYzQc4wSzSr4,29631
42
43
  meerschaum/actions/sql.py,sha256=wYofwk1vGO96U2ncigGEfMtYMZeprz2FR1PRRZhkAPI,4311
43
44
  meerschaum/actions/stack.py,sha256=WMRMebyYwZGNlbnj6Ja09qvCSDNteFJOTa8_joHlnVo,5886
44
45
  meerschaum/actions/start.py,sha256=9Ej3Hk7qXfbrBaQq17KirTII_4Pa-BWSdrkutMnLA3k,18352
45
46
  meerschaum/actions/stop.py,sha256=KTBadAmJ6SbReqlltkwfqZW6EryB4kZXupl0ZyInI0Q,4311
46
47
  meerschaum/actions/sync.py,sha256=10uPREu3HBVgtzakVxhCegQOz_mistABJlsNNCMgywY,17518
47
48
  meerschaum/actions/tag.py,sha256=SJf5qFW0ccLXjqlTdkK_0MCcrCMdg6xhYrhKdco0hdA,3053
48
- meerschaum/actions/uninstall.py,sha256=jKS4LpNJt1DQ_Z6684lD5I7P8zcTAyp5ikJRoJ5Puhc,6056
49
+ meerschaum/actions/uninstall.py,sha256=tBXhdXggSieGEQe4EPGxpgMK0MZTJCweNvAJ9-59El0,5776
49
50
  meerschaum/actions/upgrade.py,sha256=wepYdvrjSuc2wMd21rbLoxGjlRuXxLVH0GOD9OhKB48,6658
50
51
  meerschaum/actions/verify.py,sha256=tY5slGpHiWiE0v9TDnjbmxSKn86zBnu9WBpixUgKNQU,4885
51
52
  meerschaum/api/__init__.py,sha256=oOYwNnkXM2s-h52EYnN2NGPfrlaQh6D4-zmHa7uPLG0,7450
52
53
  meerschaum/api/_chain.py,sha256=h8-WXUGXX6AqzdALfsBC5uv0FkAcLdHJXCGzqzuq89k,875
53
54
  meerschaum/api/_events.py,sha256=NrjiabEr7rmHMfxnX07DOGzr9sPiEbRkFqPjuA_8Zx8,1603
54
- meerschaum/api/_oauth2.py,sha256=He8JnFDhfCq25Wlz1Jh3TcGz83VOttrJk6RgzJKbFLw,1056
55
+ meerschaum/api/_oauth2.py,sha256=o4ub9gMLvJ5ewxuCbk78kA8c6MOHV4FDxURupH1lT7U,1645
55
56
  meerschaum/api/_websockets.py,sha256=OmrSDGx3xGlfP5XXeLEyYW6-Y3iRUcB-xSqL3RWsjqQ,1609
56
57
  meerschaum/api/dash/__init__.py,sha256=yr4zR7uFPlLFc_lDpwa2rCM1h9ZWGiu5-2XhHcM-5f8,2252
57
58
  meerschaum/api/dash/actions.py,sha256=eUClPPdNVNSCtyq8Ecr1saasxj5VBgd1gcXejvQxXEc,9418
@@ -115,7 +116,7 @@ meerschaum/api/routes/__init__.py,sha256=vEXVwhvhVlGf0SFBjjCpQiYM4mMoxH3oywBgVOa
115
116
  meerschaum/api/routes/_actions.py,sha256=nPLJlhnl0kDjsjFiBmUub63fe1N1_4cVimmlxtInsK0,2240
116
117
  meerschaum/api/routes/_connectors.py,sha256=NNbcn5xWhKqw2PqueSEaqRaZ95hFGDKazG5lE7gsssc,1849
117
118
  meerschaum/api/routes/_index.py,sha256=QI6CBo6pI2Zi0a6fJHDjZfiLa9f4okb0BGe3A_JD0kM,578
118
- meerschaum/api/routes/_login.py,sha256=zoBdrNlR66ZZ5xoA_64EkV3XaAMypu7BD3LP5dLlbFY,1933
119
+ meerschaum/api/routes/_login.py,sha256=EozEq592WA81x5VI8WU4-4S2w4C-w2oL45UZFbETzzw,2466
119
120
  meerschaum/api/routes/_misc.py,sha256=05--9ZVFeaCgZrHER2kA3SYdK4TyfkEXOCjLvPbum-w,2469
120
121
  meerschaum/api/routes/_pipes.py,sha256=d1JCu334xqjzvK1r2NzBxFqYScLKDATUjGWZkrjLTKU,21677
121
122
  meerschaum/api/routes/_plugins.py,sha256=vR6-uTJraY1YEJMuRvds1-xFLB2mexxnp2dJwN_0rVo,6216
@@ -123,23 +124,23 @@ meerschaum/api/routes/_users.py,sha256=SfAkZFKrKnGjpzj8SFIKzPemzQJOH3oB72h19EaUv
123
124
  meerschaum/api/routes/_version.py,sha256=2t-nw_9IxCVZCNEar0LOwmut2zsClRVHjiOOUx16cu0,825
124
125
  meerschaum/api/routes/_webterm.py,sha256=7eilgDXckpEc2LyeNmJS5YO6HxlyMkwPnAMWd7eMfJM,3909
125
126
  meerschaum/api/tables/__init__.py,sha256=e2aNC0CdlWICTUMx1i9RauF8Pm426J0RZJbsJWv4SWo,482
126
- meerschaum/config/__init__.py,sha256=01hZ4Z8jGs4LbcIwNTeVzSvHD-Y0nAgiewRgngVUYb4,11517
127
+ meerschaum/config/__init__.py,sha256=xNEps5IG0b1TrllYdG5GZ_x93sR8b6KlX9sUVdTugDs,11542
127
128
  meerschaum/config/_dash.py,sha256=BJHl4xMrQB-YHUEU7ldEW8q_nOPoIRSOqLrfGElc6Dw,187
128
129
  meerschaum/config/_default.py,sha256=J6AWxxXM4mntCdkM6bKIpyQznZ5NuMICmTaurF11J9Q,5275
129
- meerschaum/config/_edit.py,sha256=CE8gumBiOtnZZdTATCLAZgUnhL04yJdReaNCrv1yuJc,8218
130
+ meerschaum/config/_edit.py,sha256=_kabgFbJdI5kcLs-JIsoaTo0JdyxnPnBdrlTyTAgPm8,8236
130
131
  meerschaum/config/_environment.py,sha256=Vv4DLDfc2vKLbCLsMvkQDj77K4kEvHKEBmUBo-wCrgo,4419
131
132
  meerschaum/config/_formatting.py,sha256=RT_oU0OSfUkzeqbY5jvEJwuove_t9sP4MyUb1Px250U,6635
132
133
  meerschaum/config/_jobs.py,sha256=2bEikO48qVSguFS3lrbWz6uiKt_0b3oSRWhwyz8RRDM,1279
133
134
  meerschaum/config/_patch.py,sha256=21N30q1ANmWMDQ-2RUjpMx7KafWfPQ3lKx9rrMqg1s4,1526
134
- meerschaum/config/_paths.py,sha256=CWhB17T00NeyyKW5T0fjmetd5AqOGYIN5ySbFg3dAMI,8265
135
+ meerschaum/config/_paths.py,sha256=jov62LjyHQGlDssQ2b_kd4QENWr8UOoKKByuULfkjyo,8418
135
136
  meerschaum/config/_preprocess.py,sha256=-AEA8m_--KivZwTQ1sWN6LTn5sio_fUr2XZ51BO6wLs,1220
136
137
  meerschaum/config/_read_config.py,sha256=WFZKIXZMDe_ca0ES7ivgM_mnwShvFxLdoeisT_X5-h0,14720
137
138
  meerschaum/config/_shell.py,sha256=s74cmJl8NrhM_Y1cB_P41_JDUYXV0g4WXnKFZWMtnrY,3551
138
139
  meerschaum/config/_sync.py,sha256=oK2ZujO2T1he08BXCFyiniBUevNGWSQKXLcS_jRv_7Y,4155
139
- meerschaum/config/_version.py,sha256=tzwD6PP0EAlINX0JJN0MPxAdg_vH8JKm0JxuSFEgJ_A,71
140
+ meerschaum/config/_version.py,sha256=EYhjKU-_lntkfeba7JixXzvd1fRvaGeo4UJv29kVR0E,76
140
141
  meerschaum/config/paths.py,sha256=Z7vaOunaEJbVFXiSSz4IthhNOQDI-dhtpi5TpSyrcXg,206
141
142
  meerschaum/config/resources/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
142
- meerschaum/config/stack/__init__.py,sha256=c_WdTSejVdj8lqSE_pK5MhIBkHoftiZWDuEuB9dmk2I,9007
143
+ meerschaum/config/stack/__init__.py,sha256=Yt7GNzC_hz7iUDZ4gVho_lugJO2DnXgnMtsMG_ReoRg,9114
143
144
  meerschaum/config/stack/grafana/__init__.py,sha256=LNXQw2FvHKrD68RDhqDmi2wJjAHaKw9IWx8rNuyWEPo,2010
144
145
  meerschaum/config/stack/mosquitto/__init__.py,sha256=-OwOjq8KiBoSH_pmgCAAF3Dp3CRD4KgAEdimZSadROs,186
145
146
  meerschaum/config/stack/mosquitto/resources/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -187,16 +188,17 @@ meerschaum/core/Pipe/_delete.py,sha256=1geNp9BgrocXP1gt76dMbnlJWKYFMuSNqPFA4K4-h
187
188
  meerschaum/core/Pipe/_drop.py,sha256=uf3MvMkCw9tVfJ2fuo8LqZ4vvMNa3xC3YoFGEuc-hH8,1052
188
189
  meerschaum/core/Pipe/_dtypes.py,sha256=NcfVMJPyyA1VzIJOnPhyL36YTt2IXMRqQy4ZRDySSqg,3694
189
190
  meerschaum/core/Pipe/_edit.py,sha256=ZH2A0ZOpZKsVDnQxKzmXspNQKTEFUhkkZDjwOkmWtaY,8471
190
- meerschaum/core/Pipe/_fetch.py,sha256=zV3DzD7kfx08O6zda0I-9cX91m0Z_wO_on1ozHaqWnk,5234
191
+ meerschaum/core/Pipe/_fetch.py,sha256=lhumdeaXBrKRqBO-I5PVbgsxjcUJh0qd7pU1MPL4ExY,5367
191
192
  meerschaum/core/Pipe/_register.py,sha256=Sd5xaAW8H7uLTIoommcKb-6kHPRuHJLWNSbPnt2UbvA,2240
192
193
  meerschaum/core/Pipe/_show.py,sha256=nG50y8eBT9TVuKkRgAKtNDNIxysJvMNxfu__lkL1F9k,1352
193
- meerschaum/core/Pipe/_sync.py,sha256=g_cQ4e4fd6_8qzjOjSH4hhO5vy2y0ZF8InOP9Lolzj8,27975
194
+ meerschaum/core/Pipe/_sync.py,sha256=tDlg0tDHgZ-yQhVIoJLnQZxFykCbr8dOUxqhiwZ9pRk,28935
194
195
  meerschaum/core/Pipe/_verify.py,sha256=KSnthUzImRLjt9fxyBaLvArqDuOLRpKBfk0tnseJClc,14262
195
196
  meerschaum/core/Plugin/__init__.py,sha256=UXg64EvJPgI1PCxkY_KM02-ZmBm4FZpLPIQR_uSJJDc,137
196
197
  meerschaum/core/User/_User.py,sha256=CApB7Y0QJL6S9QOCCfrG4SbPuPXJ9AsAYQ5pASMP_Aw,6527
197
198
  meerschaum/core/User/__init__.py,sha256=lJ7beIZTG9sO4dAi3367fFBl17dXYEWHKi7HoaPlDyk,193
198
199
  meerschaum/plugins/_Plugin.py,sha256=LpplVPviSskKqf_igl4yIsD72H2C9vaFPQgU7-93ytg,34039
199
200
  meerschaum/plugins/__init__.py,sha256=RUnkBTvusySyp4rvVRbtqoV2lKCdKeu0uxExB5Fg7KM,23503
201
+ meerschaum/plugins/bootstrap.py,sha256=qg9MQ1YAU8ShwGqWDl38WjiXLIxDPl95pSIGDLN9rOw,11423
200
202
  meerschaum/utils/__init__.py,sha256=QrK1K9hIbPCRCM5k2nZGFqGnrqhA0Eh-iSmCU7FG6Cs,612
201
203
  meerschaum/utils/_get_pipes.py,sha256=dlPckpYYyM0IwRZ2VL0u9DiEeYhr5Ho9gkzvWxzNVwI,11460
202
204
  meerschaum/utils/dataframe.py,sha256=vxZ72ME7IWuadtktgjFZF5bc9fXW_0TuynjFlJljlLU,31955
@@ -206,35 +208,35 @@ meerschaum/utils/misc.py,sha256=2_FyirImT793NH-wQriJ1VPOW7DcXm98Id0XMn8nh9I,4344
206
208
  meerschaum/utils/networking.py,sha256=Sr_eYUGW8_UV9-k9LqRFf7xLtbUcsDucODyLCRsFRUc,1006
207
209
  meerschaum/utils/pool.py,sha256=vkE42af4fjrTEJTxf6Ek3xGucm1MtEkpsSEiaVzNKHs,2655
208
210
  meerschaum/utils/process.py,sha256=UyiNszYXdnjF6WN8Tt0NchWjkCV10MbOXEFn_TAhXeg,7510
209
- meerschaum/utils/prompt.py,sha256=0mBFbgi_l9rCou9UnC_6qKTHkqyl1Z_jSRzfmc0xRXM,16490
211
+ meerschaum/utils/prompt.py,sha256=HG5pPZBsxwE-R3kRJqbOrl38Y7IHNZQuLPdU7dgqlBY,18524
210
212
  meerschaum/utils/schedule.py,sha256=btAeSDaoFH62-7wTO0U7NK9P9QHV46PtY3DJ8DN_mCY,10860
211
213
  meerschaum/utils/sql.py,sha256=4sCNEpgUd6uFz6ySs4nnUMVaOT0YAvPM1ZlQYJTSF-0,46656
212
214
  meerschaum/utils/threading.py,sha256=3N8JXPAnwqJiSjuQcbbJg3Rv9-CCUMJpeQRfKFR7MaA,2489
213
215
  meerschaum/utils/typing.py,sha256=L05wOXfWdn_nJ0KnZVr-2zdMYcqjdyOW_7InT3xe6-s,2807
214
216
  meerschaum/utils/warnings.py,sha256=0b5O2DBbhEAGnu6RAB1hlHSVmwL_hcR3EiMkExXmBJ0,6535
215
- meerschaum/utils/yaml.py,sha256=vbCrFjdapKsZ9wRRaI9Ih8dVUwZ-KHpSzfGhRcpDBgQ,3162
216
- meerschaum/utils/daemon/Daemon.py,sha256=rd9L9BgB0vwnPuhAbgLI-KkiEhFIPJqTQZ4PJ66lTf4,34686
217
- meerschaum/utils/daemon/FileDescriptorInterceptor.py,sha256=1cn5nQYLImL-BHXlLoxN_TadgN7XmGRLl1b7xecYMPc,4544
218
- meerschaum/utils/daemon/RotatingFile.py,sha256=LuaHPs-c4GaMc3VkMjvL6WJ5r7wmMUOm9ZLyk4OHAlg,23658
217
+ meerschaum/utils/yaml.py,sha256=ptfS5XncNPaYXuvYX11yOpnEwPxDdaelHgDzIrvp9yc,3908
218
+ meerschaum/utils/daemon/Daemon.py,sha256=TTbBj3M0RoGRaTvvq6IPr9EJb2KiPV_HLucqbPQVzs8,35184
219
+ meerschaum/utils/daemon/FileDescriptorInterceptor.py,sha256=G5eJDapiTH1IX1x-2r62pLDS1MkRfpJaaZ-3FOAJgo0,4933
220
+ meerschaum/utils/daemon/RotatingFile.py,sha256=KTkCBtTwz7MvznSsUa6Mnyzk1lM3LlClEkVezjf-SQY,23843
219
221
  meerschaum/utils/daemon/__init__.py,sha256=I_ki51yml4vsh9OoH7BWTaz9SnATD8qM0i0fN3aUMn0,8375
220
222
  meerschaum/utils/daemon/_names.py,sha256=Prf7xA2GWDbKR_9Xq9_5RTTIf9GNWY3Yt0s4tEU3JgM,4330
221
223
  meerschaum/utils/dtypes/__init__.py,sha256=JR9PViJTzhukZhq0QoPIs73HOnXZZr8OmfhAAD4OAUA,6261
222
224
  meerschaum/utils/dtypes/sql.py,sha256=IkEOyB63je-rCLHM6WwFzGbCerYk1zobL1cXkWqmTa4,14638
223
- meerschaum/utils/formatting/__init__.py,sha256=Dn-8EUTjz0s11bFaAr1HjqlM8IogCTxlpulwp_Kn4ok,13778
225
+ meerschaum/utils/formatting/__init__.py,sha256=zIJAEVdYw6ldI0TKx5vdgryYfmZqGNrO0_oeZrx5S4k,14350
224
226
  meerschaum/utils/formatting/_jobs.py,sha256=s1lVcdMkzNj5Bqw-GsUhcguUFtahi5nQ-kg1fbp0Idw,3294
225
227
  meerschaum/utils/formatting/_pipes.py,sha256=wy0iWJFsFl3X2VloaiA_gp9Yx9w6tD3FQZvAQAqef4A,19492
226
228
  meerschaum/utils/formatting/_pprint.py,sha256=tgrT3FyGyu5CWJYysqK3kX1xdZYorlbOk9fcU_vt9Qg,3096
227
229
  meerschaum/utils/formatting/_shell.py,sha256=ox75O7VHDAiwzSvdMSJZhXLadvAqYJVeihU6WeZ2Ogc,3677
228
230
  meerschaum/utils/packages/__init__.py,sha256=6zRX0g8Kh-wHjvkbiMf_kLKM2BlR5FJUCA3JStX9YeU,62628
229
- meerschaum/utils/packages/_packages.py,sha256=yU8bD4fYs4cv1gOtEp3QrnejyvPi0K2W9TYaP_cd59w,7977
231
+ meerschaum/utils/packages/_packages.py,sha256=gWrco46rqKjtAI714aJp0XfzYQFAdNi08Kq5dq1VEkg,7977
230
232
  meerschaum/utils/packages/lazy_loader.py,sha256=VHnph3VozH29R4JnSSBfwtA5WKZYZQFT_GeQSShCnuc,2540
231
233
  meerschaum/utils/venv/_Venv.py,sha256=sBnlmxHdAh2bx8btfVoD79-H9-cYsv5lP02IIXkyECs,3553
232
234
  meerschaum/utils/venv/__init__.py,sha256=4vFAu85lQ5GYEVhc6e_KhFmrks4t_Ma6ysmtraccYbs,24187
233
- meerschaum-2.2.4.dist-info/LICENSE,sha256=jG2zQEdRNt88EgHUWPpXVWmOrOduUQRx7MnYV9YIPaw,11359
234
- meerschaum-2.2.4.dist-info/METADATA,sha256=qA6ciSqJ8o1Cfsl2Al74zn3a7NS1wzsteaim54kRDIQ,24035
235
- meerschaum-2.2.4.dist-info/NOTICE,sha256=OTA9Fcthjf5BRvWDDIcBC_xfLpeDV-RPZh3M-HQBRtQ,114
236
- meerschaum-2.2.4.dist-info/WHEEL,sha256=cpQTJ5IWu9CdaPViMhC9YzF8gZuS5-vlfoFihTBC86A,91
237
- meerschaum-2.2.4.dist-info/entry_points.txt,sha256=5YBVzibw-0rNA_1VjB16z5GABsOGf-CDhW4yqH8C7Gc,88
238
- meerschaum-2.2.4.dist-info/top_level.txt,sha256=bNoSiDj0El6buocix-FRoAtJOeq1qOF5rRm2u9i7Q6A,11
239
- meerschaum-2.2.4.dist-info/zip-safe,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
240
- meerschaum-2.2.4.dist-info/RECORD,,
235
+ meerschaum-2.2.5.dev2.dist-info/LICENSE,sha256=jG2zQEdRNt88EgHUWPpXVWmOrOduUQRx7MnYV9YIPaw,11359
236
+ meerschaum-2.2.5.dev2.dist-info/METADATA,sha256=QSbWuB3P7CVf1sqjJMqt00hWQo1idl5YoOwHSAdXTok,24192
237
+ meerschaum-2.2.5.dev2.dist-info/NOTICE,sha256=OTA9Fcthjf5BRvWDDIcBC_xfLpeDV-RPZh3M-HQBRtQ,114
238
+ meerschaum-2.2.5.dev2.dist-info/WHEEL,sha256=Z4pYXqR_rTB7OWNDYFOm1qRk0RX6GFP2o8LgvP453Hk,91
239
+ meerschaum-2.2.5.dev2.dist-info/entry_points.txt,sha256=5YBVzibw-0rNA_1VjB16z5GABsOGf-CDhW4yqH8C7Gc,88
240
+ meerschaum-2.2.5.dev2.dist-info/top_level.txt,sha256=bNoSiDj0El6buocix-FRoAtJOeq1qOF5rRm2u9i7Q6A,11
241
+ meerschaum-2.2.5.dev2.dist-info/zip-safe,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
242
+ meerschaum-2.2.5.dev2.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: setuptools (70.1.0)
2
+ Generator: setuptools (70.3.0)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5