meerschaum 2.7.8__py3-none-any.whl → 2.7.9__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 (32) hide show
  1. meerschaum/_internal/term/TermPageHandler.py +54 -4
  2. meerschaum/_internal/term/__init__.py +13 -5
  3. meerschaum/_internal/term/tools.py +41 -6
  4. meerschaum/actions/start.py +25 -10
  5. meerschaum/api/dash/callbacks/dashboard.py +43 -2
  6. meerschaum/api/dash/components.py +13 -6
  7. meerschaum/api/dash/keys.py +82 -108
  8. meerschaum/api/dash/pages/dashboard.py +17 -17
  9. meerschaum/api/dash/sessions.py +1 -0
  10. meerschaum/api/dash/webterm.py +17 -6
  11. meerschaum/api/resources/static/js/terminado.js +0 -2
  12. meerschaum/api/resources/templates/termpage.html +47 -4
  13. meerschaum/api/routes/_webterm.py +15 -11
  14. meerschaum/config/_default.py +6 -0
  15. meerschaum/config/_version.py +1 -1
  16. meerschaum/config/static/__init__.py +2 -2
  17. meerschaum/core/Pipe/_sync.py +7 -7
  18. meerschaum/core/Pipe/_verify.py +1 -1
  19. meerschaum/utils/daemon/Daemon.py +15 -9
  20. meerschaum/utils/dtypes/__init__.py +9 -0
  21. meerschaum/utils/dtypes/sql.py +19 -13
  22. meerschaum/utils/formatting/_pprint.py +1 -1
  23. meerschaum/utils/misc.py +16 -0
  24. meerschaum/utils/venv/__init__.py +10 -14
  25. {meerschaum-2.7.8.dist-info → meerschaum-2.7.9.dist-info}/METADATA +1 -1
  26. {meerschaum-2.7.8.dist-info → meerschaum-2.7.9.dist-info}/RECORD +32 -32
  27. {meerschaum-2.7.8.dist-info → meerschaum-2.7.9.dist-info}/LICENSE +0 -0
  28. {meerschaum-2.7.8.dist-info → meerschaum-2.7.9.dist-info}/NOTICE +0 -0
  29. {meerschaum-2.7.8.dist-info → meerschaum-2.7.9.dist-info}/WHEEL +0 -0
  30. {meerschaum-2.7.8.dist-info → meerschaum-2.7.9.dist-info}/entry_points.txt +0 -0
  31. {meerschaum-2.7.8.dist-info → meerschaum-2.7.9.dist-info}/top_level.txt +0 -0
  32. {meerschaum-2.7.8.dist-info → meerschaum-2.7.9.dist-info}/zip-safe +0 -0
@@ -190,7 +190,7 @@ def verify(
190
190
  begin=chunk_begin,
191
191
  end=chunk_end,
192
192
  params=params,
193
- workers=workers,
193
+ workers=1,
194
194
  debug=debug,
195
195
  **kwargs
196
196
  )
@@ -330,12 +330,12 @@ class Daemon:
330
330
  result = self.target(*self.target_args, **self.target_kw)
331
331
  self.properties['result'] = result
332
332
  except (BrokenPipeError, KeyboardInterrupt, SystemExit):
333
- pass
333
+ result = False, traceback.format_exc()
334
334
  except Exception as e:
335
335
  warn(
336
336
  f"Exception in daemon target function: {traceback.format_exc()}",
337
337
  )
338
- result = e
338
+ result = False, str(e)
339
339
  finally:
340
340
  _results[self.daemon_id] = result
341
341
 
@@ -345,8 +345,11 @@ class Daemon:
345
345
  self.cleanup()
346
346
 
347
347
  self._log_refresh_timer.cancel()
348
- if self.pid is None and self.pid_path.exists():
349
- self.pid_path.unlink()
348
+ try:
349
+ if self.pid is None and self.pid_path.exists():
350
+ self.pid_path.unlink()
351
+ except Exception:
352
+ pass
350
353
 
351
354
  if is_success_tuple(result):
352
355
  try:
@@ -904,8 +907,8 @@ class Daemon:
904
907
  """
905
908
  Return the file handler for the stdin file.
906
909
  """
907
- if '_stdin_file' in self.__dict__:
908
- return self._stdin_file
910
+ if (stdin_file := self.__dict__.get('_stdin_file', None)):
911
+ return stdin_file
909
912
 
910
913
  self._stdin_file = StdinFile(
911
914
  self.stdin_file_path,
@@ -1020,7 +1023,7 @@ class Daemon:
1020
1023
  except Exception:
1021
1024
  properties = {}
1022
1025
 
1023
- return properties
1026
+ return properties or {}
1024
1027
 
1025
1028
  def read_pickle(self) -> Daemon:
1026
1029
  """Read a Daemon's pickle file and return the `Daemon`."""
@@ -1050,7 +1053,7 @@ class Daemon:
1050
1053
  Return the contents of the properties JSON file.
1051
1054
  """
1052
1055
  try:
1053
- _file_properties = self.read_properties()
1056
+ _file_properties = self.read_properties() or {}
1054
1057
  except Exception:
1055
1058
  traceback.print_exc()
1056
1059
  _file_properties = {}
@@ -1061,7 +1064,10 @@ class Daemon:
1061
1064
  if self._properties is None:
1062
1065
  self._properties = {}
1063
1066
 
1064
- if self._properties.get('result', None) is None:
1067
+ if (
1068
+ self._properties.get('result', None) is None
1069
+ and _file_properties.get('result', None) is not None
1070
+ ):
1065
1071
  _ = self._properties.pop('result', None)
1066
1072
 
1067
1073
  if _file_properties is not None:
@@ -350,6 +350,9 @@ def serialize_decimal(
350
350
  if not isinstance(x, Decimal):
351
351
  return x
352
352
 
353
+ if value_is_null(x):
354
+ return None
355
+
353
356
  if quantize and scale and precision:
354
357
  x = quantize_decimal(x, precision, scale)
355
358
 
@@ -544,6 +547,9 @@ def json_serialize_value(x: Any, default_to_str: bool = True) -> str:
544
547
  -------
545
548
  A serialized version of x, or x.
546
549
  """
550
+ if isinstance(x, (mrsm.Pipe, mrsm.connectors.Connector)):
551
+ return x.meta
552
+
547
553
  if hasattr(x, 'tzinfo'):
548
554
  return serialize_datetime(x)
549
555
 
@@ -553,4 +559,7 @@ def json_serialize_value(x: Any, default_to_str: bool = True) -> str:
553
559
  if isinstance(x, Decimal):
554
560
  return serialize_decimal(x)
555
561
 
562
+ if value_is_null(x):
563
+ return None
564
+
556
565
  return str(x) if default_to_str else x
@@ -470,7 +470,7 @@ AUTO_INCREMENT_COLUMN_FLAVORS: Dict[str, str] = {
470
470
  }
471
471
 
472
472
 
473
- def get_pd_type_from_db_type(db_type: str, allow_custom_dtypes: bool = False) -> str:
473
+ def get_pd_type_from_db_type(db_type: str, allow_custom_dtypes: bool = True) -> str:
474
474
  """
475
475
  Parse a database type to a pandas data type.
476
476
 
@@ -486,12 +486,17 @@ def get_pd_type_from_db_type(db_type: str, allow_custom_dtypes: bool = False) ->
486
486
  -------
487
487
  The equivalent datatype for a pandas DataFrame.
488
488
  """
489
+ from meerschaum.utils.dtypes import are_dtypes_equal
489
490
  def parse_custom(_pd_type: str, _db_type: str) -> str:
490
491
  if 'json' in _db_type.lower():
491
492
  return 'json'
493
+ if are_dtypes_equal(_pd_type, 'numeric') and _pd_type != 'object':
494
+ precision, scale = get_numeric_precision_scale(None, dtype=_db_type.upper())
495
+ if precision and scale:
496
+ return f"numeric[{precision},{scale}]"
492
497
  return _pd_type
493
498
 
494
- pd_type = DB_TO_PD_DTYPES.get(db_type.upper(), None)
499
+ pd_type = DB_TO_PD_DTYPES.get(db_type.upper().split('(', maxsplit=1)[0].strip(), None)
495
500
  if pd_type is not None:
496
501
  return (
497
502
  parse_custom(pd_type, db_type)
@@ -644,21 +649,22 @@ def get_numeric_precision_scale(
644
649
 
645
650
  dtype: Optional[str], default None
646
651
  If provided, return the precision and scale provided in the dtype (if applicable).
652
+ If all caps, treat this as a DB type.
647
653
 
648
654
  Returns
649
655
  -------
650
656
  A tuple of ints or a tuple of Nones.
651
657
  """
652
- from meerschaum.utils.dtypes import are_dtypes_equal
653
- if dtype and are_dtypes_equal(dtype, 'numeric'):
654
- if '[' in dtype and ',' in dtype:
655
- try:
656
- parts = dtype.split('[', maxsplit=1)[-1].rstrip(']').split(',', maxsplit=1)
657
- return int(parts[0].strip()), int(parts[1].strip())
658
- except Exception:
659
- pass
660
-
661
- if flavor not in NUMERIC_PRECISION_FLAVORS:
658
+ if not dtype:
662
659
  return None, None
663
660
 
664
- return NUMERIC_PRECISION_FLAVORS[flavor]
661
+ lbracket = '[' if '[' in dtype else '('
662
+ rbracket = ']' if lbracket == '[' else ')'
663
+ if lbracket in dtype and dtype.count(',') == 1 and dtype.endswith(rbracket):
664
+ try:
665
+ parts = dtype.split(lbracket, maxsplit=1)[-1].rstrip(rbracket).split(',', maxsplit=1)
666
+ return int(parts[0].strip()), int(parts[1].strip())
667
+ except Exception:
668
+ pass
669
+
670
+ return NUMERIC_PRECISION_FLAVORS.get(flavor, (None, None))
@@ -35,7 +35,7 @@ def pprint(
35
35
  and
36
36
  isinstance(args[0][1], str)
37
37
  ):
38
- return print_tuple(args[0])
38
+ return print_tuple(args[0], **filter_keywords(print_tuple, **kw))
39
39
 
40
40
  modify = True
41
41
  rich_pprint = None
meerschaum/utils/misc.py CHANGED
@@ -1219,6 +1219,22 @@ def is_systemd_available() -> bool:
1219
1219
  has_systemctl = False
1220
1220
  return has_systemctl
1221
1221
 
1222
+
1223
+ def is_tmux_available() -> bool:
1224
+ """
1225
+ Check if `tmux` is installed.
1226
+ """
1227
+ import subprocess
1228
+ try:
1229
+ has_tmux = subprocess.call(
1230
+ ['tmux', '-V'],
1231
+ stdout=subprocess.DEVNULL,
1232
+ stderr=subprocess.STDOUT
1233
+ ) == 0
1234
+ except Exception as e:
1235
+ has_tmux = False
1236
+ return has_tmux
1237
+
1222
1238
  def get_last_n_lines(file_name: str, N: int):
1223
1239
  """
1224
1240
  https://thispointer.com/python-get-last-n-lines-of-a-text-file-like-tail-command/
@@ -410,15 +410,19 @@ def init_venv(
410
410
  pass
411
411
 
412
412
  def wait_for_lock():
413
- max_lock_seconds = 2.0
413
+ max_lock_seconds = 30.0
414
+ sleep_message_seconds = 5.0
414
415
  step_sleep_seconds = 0.1
415
416
  init_venv_check_start = time.perf_counter()
417
+ last_print = init_venv_check_start
416
418
  while ((time.perf_counter() - init_venv_check_start) < max_lock_seconds):
417
419
  if not lock_path.exists():
418
420
  break
419
421
 
420
- if debug:
421
- print(f"Lock exists for '{venv}', sleeping...")
422
+ now = time.perf_counter()
423
+ if debug or (now - last_print) > sleep_message_seconds:
424
+ print(f"Lock exists for venv '{venv}', sleeping...")
425
+ last_print = now
422
426
  time.sleep(step_sleep_seconds)
423
427
  update_lock(False)
424
428
 
@@ -448,7 +452,8 @@ def init_venv(
448
452
 
449
453
  _venv_success = False
450
454
  temp_vtp = VENVS_CACHE_RESOURCES_PATH / str(venv)
451
- rename_vtp = vtp.exists() and not temp_vtp.exists()
455
+ ### NOTE: Disable site-packages movement for now.
456
+ rename_vtp = False and vtp.exists() and not temp_vtp.exists()
452
457
 
453
458
  wait_for_lock()
454
459
  update_lock(True)
@@ -458,19 +463,10 @@ def init_venv(
458
463
  print(f"Moving '{vtp}' to '{temp_vtp}'...")
459
464
  shutil.move(vtp, temp_vtp)
460
465
 
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...")
469
-
470
466
  if uv is not None:
471
467
  _venv_success = run_python_package(
472
468
  'uv',
473
- ['venv', venv_path.as_posix(), '-q'],
469
+ ['venv', venv_path.as_posix(), '-q', '--no-project', '--allow-existing', '--seed'],
474
470
  venv=None,
475
471
  env=_get_pip_os_env(),
476
472
  debug=debug,
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: meerschaum
3
- Version: 2.7.8
3
+ Version: 2.7.9
4
4
  Summary: Sync Time-Series Pipes with Meerschaum
5
5
  Home-page: https://meerschaum.io
6
6
  Author: Bennett Meares
@@ -18,9 +18,9 @@ meerschaum/_internal/shell/ValidAutoSuggest.py,sha256=bARjOWMidz0dvMelLUe6yRPto5
18
18
  meerschaum/_internal/shell/__init__.py,sha256=vXQoQPEVlYiUYai1b5AwQAlTnja6A2cSABnqXhzlS7I,281
19
19
  meerschaum/_internal/shell/updates.py,sha256=FmKu1NsIE7AI1zq8zNeKneZzORv6BeURQeX0lRR81Ag,5040
20
20
  meerschaum/_internal/shell/resources/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
21
- meerschaum/_internal/term/TermPageHandler.py,sha256=57peuFD4geabiP7aomVNH_bRfNFPyCaJf56sQ8XMhV0,472
22
- meerschaum/_internal/term/__init__.py,sha256=AT-dUw6cPISDDvHUplrSMsmPR5mo2JgVTtIzmOGcW7E,1733
23
- meerschaum/_internal/term/tools.py,sha256=dXVAimKD-Yv2fg2WOTr0YGBY7XDKjQqw-RizcS65YVI,727
21
+ meerschaum/_internal/term/TermPageHandler.py,sha256=iRvd1v7WsyZE2H7spXkz4vxtolV6IvbhkBLhkke9r5g,2421
22
+ meerschaum/_internal/term/__init__.py,sha256=6hkhA5Hk0O3WrwYYu74itcKTm5MxlOAVM1ozTojwB7c,2162
23
+ meerschaum/_internal/term/tools.py,sha256=7Hb6W9G1nHZHAhzuJjatuP1IK9XZTgUXDRPk7H9Tkpg,1609
24
24
  meerschaum/actions/__init__.py,sha256=MHPs8aRBhbZQXnqd_6tVtisTrNCgPAPgnNcXYbn0zP8,11640
25
25
  meerschaum/actions/api.py,sha256=41r3fBh3vAPyNaOrvbh2oh6WUJTR2I-zaOEZN60A66E,12538
26
26
  meerschaum/actions/attach.py,sha256=UV19d9W_2WYcrf7BRz7k3mriDoX1V4rA4AKvbLdor0o,3106
@@ -45,7 +45,7 @@ meerschaum/actions/sh.py,sha256=hSkGNTVqP5dNjhJ64zy3V3VCFPTKnDlH3PxdKdxtkGQ,1990
45
45
  meerschaum/actions/show.py,sha256=T8Ol1o-762cI9rlUzd-8svvwgT4slYXYfOPQETh9Koo,28446
46
46
  meerschaum/actions/sql.py,sha256=PhbBMBq20LL8Yh3q-yqGMe7f8ffmyjbD8q_G8Q0WxZc,4527
47
47
  meerschaum/actions/stack.py,sha256=ZwrCTGJ0x3jjZkRieWcvqasQHYCqNtB1HYvTX-r3Z3g,5996
48
- meerschaum/actions/start.py,sha256=NtdVzeB00PQBnDSUSu8ypHmMrZT8_Idmw5BfVZ--Zic,21296
48
+ meerschaum/actions/start.py,sha256=slQ49iImNlV3UsU7CzfMPD6Qms142KguDlEkSitdx6Y,21686
49
49
  meerschaum/actions/stop.py,sha256=5fdUw70YN-yuUWrC-NhA88cxr9FZ5NbssbQ8xXO8nFU,4632
50
50
  meerschaum/actions/sync.py,sha256=br87b8uqpv7GW18f_O7Zg7QioPh0t377J082yfmuSak,17223
51
51
  meerschaum/actions/tag.py,sha256=SJf5qFW0ccLXjqlTdkK_0MCcrCMdg6xhYrhKdco0hdA,3053
@@ -58,18 +58,18 @@ meerschaum/api/_events.py,sha256=f-98AXHU10IL9zRGX1FrZFANxxiMz5ryeJnfFWaU8R8,223
58
58
  meerschaum/api/_oauth2.py,sha256=dJTIVlPpX3sAVW-PcN6pXRNy2RR5QAalu2RHp3l14YU,1683
59
59
  meerschaum/api/_websockets.py,sha256=EMT9wB3yELu_WyCMqn9ZpgMDh23spUUchouRLCCLVuw,1509
60
60
  meerschaum/api/dash/__init__.py,sha256=29vMm_m5gSDYG0lahh-8yVfhqg9kUFnUrYyw_9jC2Y0,2078
61
- meerschaum/api/dash/components.py,sha256=t2goHW7oioao5Ew6Dro9U4LZDnHF-YWb4flLPx46GP8,6293
61
+ meerschaum/api/dash/components.py,sha256=k6VpeeM-grzslAKZyNMXtKKfpC8-Nz9wgZoUoD0p4Ac,6532
62
62
  meerschaum/api/dash/connectors.py,sha256=-Wd40ieYJI2nOASXi4V1C4bvLekjnN_tj6zp7HgZDl0,791
63
63
  meerschaum/api/dash/graphs.py,sha256=wJUDWzcLN8-C3xko6rj0F2v7Rt8YDkSXoVkkXJjYGIk,2046
64
64
  meerschaum/api/dash/jobs.py,sha256=mj9STE6AaQY4fwkjD1JcYRG0iW3VEcP04bO1SlKgiXw,7681
65
- meerschaum/api/dash/keys.py,sha256=hzEVeN60SAfVTVSO5lajGaykxRIKGhj9Ph00HRJnNoE,12598
65
+ meerschaum/api/dash/keys.py,sha256=mQT8MxtaeugbdZxGDhkr-G1mccPB4XpLN-UB7s3tamI,11144
66
66
  meerschaum/api/dash/pipes.py,sha256=Zm2UKovwz6K8Mt6dTCY2LgDyUyFhEZ5D8nWw4ecPUXI,26210
67
67
  meerschaum/api/dash/plugins.py,sha256=KdfG04f6SsUpBg-nm7MUJegFGuElOj-GAkxDX98hi60,3768
68
- meerschaum/api/dash/sessions.py,sha256=-y5p4MYKh1eFzppkBfMsd6T7-rJs1nYS2-4fbVRAeRA,5029
68
+ meerschaum/api/dash/sessions.py,sha256=i8qFGZX1zlxskj13F5B9TYd-mXdVA71Q8d8nESbiJG0,5068
69
69
  meerschaum/api/dash/sync.py,sha256=9lt7IRdG-fe9gf_ZO_viPiGlerX7ic6r_VFocv3I51A,504
70
70
  meerschaum/api/dash/users.py,sha256=3wq3ZG51DxOjNeF-X5HdlXD1MYQ1nQ9oowYSvFEY7hs,1050
71
71
  meerschaum/api/dash/websockets.py,sha256=0iwRaI9k2okU1baYstOkehfZ6-qMi_S6qm4lPBjVlH8,924
72
- meerschaum/api/dash/webterm.py,sha256=khO0tnFgYh9dLOKYlX2rG93aTa2__5RMDDQOU1Ga9Es,3060
72
+ meerschaum/api/dash/webterm.py,sha256=_Aiao08IO2wfeLlWCBlYmn7x-acfHwjcr5BIg6C8eoA,3587
73
73
  meerschaum/api/dash/assets/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
74
74
  meerschaum/api/dash/assets/ansi_up.js,sha256=in4bWSCayjzXbOgROw7eLRrFwCTIiLxh8nbFSJXtDl4,21923
75
75
  meerschaum/api/dash/assets/banner_1920x320.png,sha256=n2cNTSVEsGxO9XZg2keb85J3UOkux70nyIMNII5m4SA,338636
@@ -78,14 +78,14 @@ meerschaum/api/dash/assets/logo_48x48.png,sha256=hTR5BHUHEN4yP2xiqAcDciuigoII9T3
78
78
  meerschaum/api/dash/assets/logo_500x500.png,sha256=9EUtf6wQcEZTXHKfQ2kjNXod6Rn_4DTB_BkTgxggq00,67702
79
79
  meerschaum/api/dash/callbacks/__init__.py,sha256=5nLDkziaWWWt5ivmuMNG3kVBMOfqB6KQNIAS8f16bmA,493
80
80
  meerschaum/api/dash/callbacks/custom.py,sha256=N9pVolAF8sIuJD3V6xBSgS7k8THJo_f8d1qAoh1Kg60,1161
81
- meerschaum/api/dash/callbacks/dashboard.py,sha256=UNbMG1w8sOTyOFLIRSJwnKZ5B1IuGZI8OHjiUTEgrfA,32777
81
+ meerschaum/api/dash/callbacks/dashboard.py,sha256=GKawgBjhgkMLKTE0PtRRGKd72pbmFGGnHlBsIHTnb_I,33962
82
82
  meerschaum/api/dash/callbacks/jobs.py,sha256=JYTrDcUEte_MIT3EegLDmQDsmU_Mxqw8L60dvF71ho4,8418
83
83
  meerschaum/api/dash/callbacks/login.py,sha256=mEvMgV-f85H6DvqNdTvJPoiwHqTnhWY2nf_zLB26ipE,2876
84
84
  meerschaum/api/dash/callbacks/pipes.py,sha256=byphQn-wJOe8ft-fGU9wac0n5xsMjVHJzNvYYb9NsKU,1693
85
85
  meerschaum/api/dash/callbacks/plugins.py,sha256=znPgw_Uf3__QEjKxoIHADfjVNubTehCDaTJ02b16pQo,2760
86
86
  meerschaum/api/dash/callbacks/register.py,sha256=KfMFgXWiFkemz0YriSPaLQBVnFDG8q6_t9gHuempOS0,3666
87
87
  meerschaum/api/dash/pages/__init__.py,sha256=E3MI73_FR21R_-npTJ9HBNd7hdbOwQ75V-TMpq3ohz8,349
88
- meerschaum/api/dash/pages/dashboard.py,sha256=WKwy40kgm2Qy0k1ZTIueFnnVu0YBzFAd_8AT6CHHvfM,3835
88
+ meerschaum/api/dash/pages/dashboard.py,sha256=k6mmvPWXQD6NpAO4_y9Y9r8n-IU5Ql1IOuczOl7OWPs,3802
89
89
  meerschaum/api/dash/pages/error.py,sha256=-uCrASuIBrceHcc-leLeEoLos2ibSBWG0XMFQzFwtbw,595
90
90
  meerschaum/api/dash/pages/job.py,sha256=bAXXDB0fM3bSiqqJ2XlTwVdg2lohRaWdIGZp7ZtTZOw,544
91
91
  meerschaum/api/dash/pages/login.py,sha256=Qjc-kDL9wW4D1cN48x0MrmWCME4igHDt0VkX9JSipjY,4603
@@ -110,14 +110,14 @@ meerschaum/api/resources/static/ico/logo.ico,sha256=nDEekVxwS60wEDno1nbw5GF3TJOc
110
110
  meerschaum/api/resources/static/js/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
111
111
  meerschaum/api/resources/static/js/action_button.js,sha256=A0tH6W5lXR1dcGKtNk_pTNSKFVH-HGX2eMR-IOgGLeM,540
112
112
  meerschaum/api/resources/static/js/main.js,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
113
- meerschaum/api/resources/static/js/terminado.js,sha256=oYRYUaw1S9gE8Cp6AevQaW_zGvXMYMi3UH3-IMbQSTw,1727
113
+ meerschaum/api/resources/static/js/terminado.js,sha256=Hl1VZ-RhTKUPjEFLNHyytRUUE31NUOKRxpBw4nAFnP4,1644
114
114
  meerschaum/api/resources/static/js/xterm.js,sha256=H5kaw7Syg-v5bmCuI6AKUnZd06Lkb6b92p8aqwMvdJU,289441
115
115
  meerschaum/api/resources/static/png/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
116
116
  meerschaum/api/resources/templates/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
117
117
  meerschaum/api/resources/templates/index.html,sha256=Ck-S0U5abJgB-wTOKIGg0ispGzKlXXqvFUoNAAByzLA,1019
118
118
  meerschaum/api/resources/templates/old_index.html,sha256=BDeOlcXhSsBH3-NaRtuX4Z1sDuhOoCMa_Dq-6g5RMpc,1711
119
119
  meerschaum/api/resources/templates/secret.html,sha256=0QWkm4ZoN81Aw1pd2-62rGCvx3nXPHfFUoegj3Iy8Ls,141
120
- meerschaum/api/resources/templates/termpage.html,sha256=A9YmJurFFliI0se9T4z0SBMIuoQqANyKSUJzZh8dcGo,4810
120
+ meerschaum/api/resources/templates/termpage.html,sha256=I8ZsXunwzRyquErRPZsKKhDNoafeXT0iW0JCL4OSx8U,5989
121
121
  meerschaum/api/routes/__init__.py,sha256=jbkeFNl51Tg8aT5gWe560ZLZLojFJsLMe5IENRjRkb0,606
122
122
  meerschaum/api/routes/_actions.py,sha256=VUasS1dpr4d3TXHcR1CXlRZPAqvGKKuHv_f9PsOkQ5c,1732
123
123
  meerschaum/api/routes/_connectors.py,sha256=NNbcn5xWhKqw2PqueSEaqRaZ95hFGDKazG5lE7gsssc,1849
@@ -129,11 +129,11 @@ meerschaum/api/routes/_pipes.py,sha256=kykrEP6A75WBjn2wP28BLiPVRpwtfd8sVhfOhzjHa
129
129
  meerschaum/api/routes/_plugins.py,sha256=zzUyCiylJGeoLoa3dNjeRMSspvKfywTVXBpB-ghJ7ls,6228
130
130
  meerschaum/api/routes/_users.py,sha256=Gts7gltQc5uxgjfL5pQS_R-cAhkHJZJWBCKGPRS1gmQ,6809
131
131
  meerschaum/api/routes/_version.py,sha256=2t-nw_9IxCVZCNEar0LOwmut2zsClRVHjiOOUx16cu0,825
132
- meerschaum/api/routes/_webterm.py,sha256=MenDvWXnZ8CWEmryB46pKohMf0PN6o1xJGZ3LFjxTOc,3909
132
+ meerschaum/api/routes/_webterm.py,sha256=PvYDSsNlRpGNFXqVA3MAh0E6i4SMQ3ATBQbOVNUqacw,4132
133
133
  meerschaum/api/tables/__init__.py,sha256=e2aNC0CdlWICTUMx1i9RauF8Pm426J0RZJbsJWv4SWo,482
134
134
  meerschaum/config/__init__.py,sha256=5ZBq71P9t3nb74r5CGvMfNuauPscfegBX-nkaAUi5C4,11541
135
135
  meerschaum/config/_dash.py,sha256=BJHl4xMrQB-YHUEU7ldEW8q_nOPoIRSOqLrfGElc6Dw,187
136
- meerschaum/config/_default.py,sha256=6SC7MOkU_2oJ7RtFXQCz9w1Qqg2_8w5UdOaR_HL3lzI,6009
136
+ meerschaum/config/_default.py,sha256=Rdyw50hoV24N2sEteaIm5NeuLlbzIZpDdAeDoBYoPQ0,6130
137
137
  meerschaum/config/_edit.py,sha256=M9yX_SDD24gV5kWITZpy7p9AWTizJsIAGWAs3WZx-Ws,9087
138
138
  meerschaum/config/_environment.py,sha256=Vv4DLDfc2vKLbCLsMvkQDj77K4kEvHKEBmUBo-wCrgo,4419
139
139
  meerschaum/config/_formatting.py,sha256=OMuqS1EWOsj_34wSs2tOqGIWci3bTMIZ5l-uelZgsIM,6672
@@ -144,7 +144,7 @@ meerschaum/config/_preprocess.py,sha256=-AEA8m_--KivZwTQ1sWN6LTn5sio_fUr2XZ51BO6
144
144
  meerschaum/config/_read_config.py,sha256=RLC3HHi_1ndj7ITVDKLD9_uULY3caGRwSz3ATYE-ixA,15014
145
145
  meerschaum/config/_shell.py,sha256=46_m49Txc5q1rGfCgO49ca48BODx45DQJi8D0zz1R18,4245
146
146
  meerschaum/config/_sync.py,sha256=jHcWRkxd82_BgX8Xo8agsWvf7BSbv3qHLWmYl6ehp_0,4242
147
- meerschaum/config/_version.py,sha256=4gZBseXxG1QTm6f5OOjglU5B2-n_LdqvQG4bLr5Nth0,71
147
+ meerschaum/config/_version.py,sha256=xTLVpUjkTze_hdaUcpfoffXnbH-lcMVq1kPZen0twaI,71
148
148
  meerschaum/config/paths.py,sha256=JjibeGN3YAdSNceRwsd42aNmeUrIgM6ndzC8qZAmNI0,621
149
149
  meerschaum/config/resources/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
150
150
  meerschaum/config/stack/__init__.py,sha256=2UukC0Lmk-aVL1o1qXzumqmuIrw3vu9fD7iCuz4XD4I,10544
@@ -152,7 +152,7 @@ meerschaum/config/stack/grafana/__init__.py,sha256=LNXQw2FvHKrD68RDhqDmi2wJjAHaK
152
152
  meerschaum/config/stack/mosquitto/__init__.py,sha256=-OwOjq8KiBoSH_pmgCAAF3Dp3CRD4KgAEdimZSadROs,186
153
153
  meerschaum/config/stack/mosquitto/resources/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
154
154
  meerschaum/config/stack/resources/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
155
- meerschaum/config/static/__init__.py,sha256=DJrFtZ7Xi3b0dikzMWddat5BMwNCYEA1MyLw6jSnMTI,5365
155
+ meerschaum/config/static/__init__.py,sha256=8GIJQzIq_gXJm7B8bJJnsT-j_IwCfF31_rYyDHUN9Qs,5394
156
156
  meerschaum/connectors/_Connector.py,sha256=VaVNg0SlQCTXk4shl3c68QdkbymA2Y9ScUlUjckk8PY,6795
157
157
  meerschaum/connectors/__init__.py,sha256=bpWsnU0uvoowWyUkFTwfEkadK84pssZUJ4M7yReudOU,12703
158
158
  meerschaum/connectors/parse.py,sha256=tnqzkzt_suOXYzktn_XVUrprtfym9ThijUf8HXZZlhY,4194
@@ -207,8 +207,8 @@ meerschaum/core/Pipe/_fetch.py,sha256=IojFSA_EXBSm0I8BmlDgmUh3M85FFtXjmDJhdxZ8Ll
207
207
  meerschaum/core/Pipe/_index.py,sha256=cYgaVwBVfAYxJBZ6j6MXDqOxnOrD_QnYi33_kIwy_FQ,1944
208
208
  meerschaum/core/Pipe/_register.py,sha256=Sd5xaAW8H7uLTIoommcKb-6kHPRuHJLWNSbPnt2UbvA,2240
209
209
  meerschaum/core/Pipe/_show.py,sha256=nG50y8eBT9TVuKkRgAKtNDNIxysJvMNxfu__lkL1F9k,1352
210
- meerschaum/core/Pipe/_sync.py,sha256=AftRrXkWl8Gdpz-IT2MyBmxWcSrwVsWR7oE6JqwLBaM,36602
211
- meerschaum/core/Pipe/_verify.py,sha256=IdaAgQBjtxrGBVRnfBcfDZKn4zSynN2WUgq_-NnmEps,14356
210
+ meerschaum/core/Pipe/_sync.py,sha256=aoJRgUt9TOisZmdiUvFQQDQt4BxHXEF2tVOwY-C6X5s,36636
211
+ meerschaum/core/Pipe/_verify.py,sha256=evFjbgfQffeuGXQxSBe5iwN_ePCXyDnxDT_hHEZqps0,14350
212
212
  meerschaum/core/Plugin/__init__.py,sha256=UXg64EvJPgI1PCxkY_KM02-ZmBm4FZpLPIQR_uSJJDc,137
213
213
  meerschaum/core/User/_User.py,sha256=qbI0GIkr3G0PI4d9S49uatbJQ2kH_-z5-GoVJ0fuEtA,6624
214
214
  meerschaum/core/User/__init__.py,sha256=9qNy-Gobui4x6GiaE8U7-WOggsdniOM3_wegLN3SVKs,988
@@ -224,7 +224,7 @@ meerschaum/utils/_get_pipes.py,sha256=tu4xKPoDn79Dz2kWM13cXTP4DSCkn-3G9M8KiLftop
224
224
  meerschaum/utils/dataframe.py,sha256=2wiZcD0Z5ItxMSTapzgVATJ3ny457pSsnHFVovWdk6g,49320
225
225
  meerschaum/utils/debug.py,sha256=GyIzJmunkoPnOcZNYVQdT4Sgd-aOb5MI2VbIgATOjIQ,3695
226
226
  meerschaum/utils/interactive.py,sha256=t-6jWozXSqL7lYGDHuwiOjTgr-UKhdcg61q_eR5mikI,3196
227
- meerschaum/utils/misc.py,sha256=Fv81Pkn1MGWwuoOZqWpe6OcZPL2hwHL8B_9K6dvcEIk,47028
227
+ meerschaum/utils/misc.py,sha256=Mkr1J6DO_7sERwZvTTU04L_Gz0dXHleA9nZf5lHjd9U,47371
228
228
  meerschaum/utils/networking.py,sha256=Sr_eYUGW8_UV9-k9LqRFf7xLtbUcsDucODyLCRsFRUc,1006
229
229
  meerschaum/utils/pool.py,sha256=vkE42af4fjrTEJTxf6Ek3xGucm1MtEkpsSEiaVzNKHs,2655
230
230
  meerschaum/utils/process.py,sha256=9O8PPPJjY9Q5W2f39I3B3lFU6TlSiRiI3bgrzdOOyOw,7843
@@ -235,29 +235,29 @@ meerschaum/utils/threading.py,sha256=awjbVL_QR6G-o_9Qk85utac9cSdqkiC8tQSdERCdrG8
235
235
  meerschaum/utils/typing.py,sha256=U3MC347sh1umpa3Xr1k71eADyDmk4LB6TnVCpq8dVzI,2830
236
236
  meerschaum/utils/warnings.py,sha256=n-phr3BftNNgyPnvnXC_VMSjtCvjiCZ-ewmVfcROhkc,6611
237
237
  meerschaum/utils/yaml.py,sha256=PoC1du0pn2hLwTHwL-zuOf_EBWZSbCGOz-P-AZ4BWN0,3901
238
- meerschaum/utils/daemon/Daemon.py,sha256=laRdFXkmXdobmjTILSwdSvveVLpKo8AEvCgQYcpXO48,43141
238
+ meerschaum/utils/daemon/Daemon.py,sha256=P1JeXROC-321OzjtuisU0tW2ONJp2kI7Hdu_Q85B1cA,43406
239
239
  meerschaum/utils/daemon/FileDescriptorInterceptor.py,sha256=MJKMO0Syf3d8yWUs6xXcQzg8Ptsuvh2aCRRoglOjusA,5257
240
240
  meerschaum/utils/daemon/RotatingFile.py,sha256=8_bXegBjjzNRlNEjFZ_EHU4pSaDfjXZTwO9F9kbAU1I,24337
241
241
  meerschaum/utils/daemon/StdinFile.py,sha256=qdZ8E_RSOkURypwnS50mWeyWyRig1bAY9tKWMTVKajc,3307
242
242
  meerschaum/utils/daemon/__init__.py,sha256=ziRPyu_IM3l7Xd58y3Uvt0fZLoirJ9nuboFIxxult6c,8741
243
243
  meerschaum/utils/daemon/_names.py,sha256=d2ZwTxBoTAqXZkCfZ5LuX2XrkQmLNUq1OTlUqfoH5dA,4515
244
- meerschaum/utils/dtypes/__init__.py,sha256=dO9xChsOzoaoULjJYHDr13lkjyVjG51Up3tlAQWS3pQ,15315
245
- meerschaum/utils/dtypes/sql.py,sha256=ubPxiYlYEFegRA4wcKkF4zuVrla1rzG0eW97DWWZjNw,21099
244
+ meerschaum/utils/dtypes/__init__.py,sha256=O4EfRcv53NwvHYZpyP0kfJjS-I-9dUFdXUd78hoy0ZU,15492
245
+ meerschaum/utils/dtypes/sql.py,sha256=hcugN6JhF6QJz7x3KAbTMGoFmu_cc_jQEOUZDpLSVXc,21488
246
246
  meerschaum/utils/formatting/__init__.py,sha256=bA8qwBeTNIVHVQOBK682bJsKSKik1yS6xYJAoi0RErk,15528
247
247
  meerschaum/utils/formatting/_jobs.py,sha256=izsqPJhTtUkXUUtWnbXtReYsUYwulXtci3pBj72Ne64,6637
248
248
  meerschaum/utils/formatting/_pipes.py,sha256=OISJmmFiilaDbZxkiXck_g39MnnTfk_fJJyJ-YInvXA,19559
249
- meerschaum/utils/formatting/_pprint.py,sha256=hU7g7zONT0QYYMLLnDbz7G3ccLFWfZV--OTiuzzELlA,3058
249
+ meerschaum/utils/formatting/_pprint.py,sha256=wyTmjHFnsHbxfyuytjTWzH-D42Z65GuIisQ_W6UnRPg,3096
250
250
  meerschaum/utils/formatting/_shell.py,sha256=XH7VFLteNv7NGtWhJl7FdIGt80sKeTiDoJokGSDAwBM,3761
251
251
  meerschaum/utils/packages/__init__.py,sha256=TdKaj2tmN4bFwzusOfMv24P5ET7Zv73vyoOf9GOIr5E,64427
252
252
  meerschaum/utils/packages/_packages.py,sha256=_xODMSz1FAcx3XHrn9RXUhGJ1zg-QKsVu9zYZV2UJeY,8868
253
253
  meerschaum/utils/packages/lazy_loader.py,sha256=VHnph3VozH29R4JnSSBfwtA5WKZYZQFT_GeQSShCnuc,2540
254
254
  meerschaum/utils/venv/_Venv.py,sha256=gc1TCeAj-kTZbQFAT9xl1bi4HXFV5ApT0dPOJfxwr78,3748
255
- meerschaum/utils/venv/__init__.py,sha256=vVU9vj7t-HTiRU--ReQZ9kRLesVqcHnSJDbmcfC-Dzg,27030
256
- meerschaum-2.7.8.dist-info/LICENSE,sha256=jG2zQEdRNt88EgHUWPpXVWmOrOduUQRx7MnYV9YIPaw,11359
257
- meerschaum-2.7.8.dist-info/METADATA,sha256=85GGmc3PHmkk_G9gr5QCl8IqADTfa76D_u6PoZC2uzc,24489
258
- meerschaum-2.7.8.dist-info/NOTICE,sha256=OTA9Fcthjf5BRvWDDIcBC_xfLpeDV-RPZh3M-HQBRtQ,114
259
- meerschaum-2.7.8.dist-info/WHEEL,sha256=In9FTNxeP60KnTkGw7wk6mJPYd_dQSjEZmXdBdMCI-8,91
260
- meerschaum-2.7.8.dist-info/entry_points.txt,sha256=5YBVzibw-0rNA_1VjB16z5GABsOGf-CDhW4yqH8C7Gc,88
261
- meerschaum-2.7.8.dist-info/top_level.txt,sha256=bNoSiDj0El6buocix-FRoAtJOeq1qOF5rRm2u9i7Q6A,11
262
- meerschaum-2.7.8.dist-info/zip-safe,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
263
- meerschaum-2.7.8.dist-info/RECORD,,
255
+ meerschaum/utils/venv/__init__.py,sha256=-Mpfvz1mJ41TzVL0xKJCKOsU3nFi6XabbNiN7UbdVXs,27067
256
+ meerschaum-2.7.9.dist-info/LICENSE,sha256=jG2zQEdRNt88EgHUWPpXVWmOrOduUQRx7MnYV9YIPaw,11359
257
+ meerschaum-2.7.9.dist-info/METADATA,sha256=jL5sZBvdVHmo1FUDgI9InBzorrlQIqdiziqqStmaeRE,24489
258
+ meerschaum-2.7.9.dist-info/NOTICE,sha256=OTA9Fcthjf5BRvWDDIcBC_xfLpeDV-RPZh3M-HQBRtQ,114
259
+ meerschaum-2.7.9.dist-info/WHEEL,sha256=In9FTNxeP60KnTkGw7wk6mJPYd_dQSjEZmXdBdMCI-8,91
260
+ meerschaum-2.7.9.dist-info/entry_points.txt,sha256=5YBVzibw-0rNA_1VjB16z5GABsOGf-CDhW4yqH8C7Gc,88
261
+ meerschaum-2.7.9.dist-info/top_level.txt,sha256=bNoSiDj0El6buocix-FRoAtJOeq1qOF5rRm2u9i7Q6A,11
262
+ meerschaum-2.7.9.dist-info/zip-safe,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
263
+ meerschaum-2.7.9.dist-info/RECORD,,