meerschaum 2.7.8__py3-none-any.whl → 2.7.10__py3-none-any.whl

Sign up to get free protection for your applications and to get access to all the features.
Files changed (33) 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/api.py +36 -10
  5. meerschaum/actions/start.py +25 -10
  6. meerschaum/api/dash/callbacks/dashboard.py +43 -2
  7. meerschaum/api/dash/components.py +13 -6
  8. meerschaum/api/dash/keys.py +82 -108
  9. meerschaum/api/dash/pages/dashboard.py +17 -17
  10. meerschaum/api/dash/sessions.py +1 -0
  11. meerschaum/api/dash/webterm.py +17 -6
  12. meerschaum/api/resources/static/js/terminado.js +0 -2
  13. meerschaum/api/resources/templates/termpage.html +47 -4
  14. meerschaum/api/routes/_webterm.py +15 -11
  15. meerschaum/config/_default.py +6 -0
  16. meerschaum/config/_version.py +1 -1
  17. meerschaum/config/static/__init__.py +2 -2
  18. meerschaum/core/Pipe/_sync.py +7 -7
  19. meerschaum/core/Pipe/_verify.py +1 -1
  20. meerschaum/utils/daemon/Daemon.py +15 -9
  21. meerschaum/utils/dtypes/__init__.py +9 -0
  22. meerschaum/utils/dtypes/sql.py +19 -13
  23. meerschaum/utils/formatting/_pprint.py +1 -1
  24. meerschaum/utils/misc.py +16 -0
  25. meerschaum/utils/venv/__init__.py +10 -14
  26. {meerschaum-2.7.8.dist-info → meerschaum-2.7.10.dist-info}/METADATA +1 -1
  27. {meerschaum-2.7.8.dist-info → meerschaum-2.7.10.dist-info}/RECORD +33 -33
  28. {meerschaum-2.7.8.dist-info → meerschaum-2.7.10.dist-info}/LICENSE +0 -0
  29. {meerschaum-2.7.8.dist-info → meerschaum-2.7.10.dist-info}/NOTICE +0 -0
  30. {meerschaum-2.7.8.dist-info → meerschaum-2.7.10.dist-info}/WHEEL +0 -0
  31. {meerschaum-2.7.8.dist-info → meerschaum-2.7.10.dist-info}/entry_points.txt +0 -0
  32. {meerschaum-2.7.8.dist-info → meerschaum-2.7.10.dist-info}/top_level.txt +0 -0
  33. {meerschaum-2.7.8.dist-info → meerschaum-2.7.10.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.10
4
4
  Summary: Sync Time-Series Pipes with Meerschaum
5
5
  Home-page: https://meerschaum.io
6
6
  Author: Bennett Meares
@@ -18,11 +18,11 @@ 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=C43gVMBWvC74eS4MDYKPfPvyCS0TpdzfLB_4hjFgCDM,2420
22
+ meerschaum/_internal/term/__init__.py,sha256=oRjQXBvyAIEjf-k_neb614lYOuTPEKtimDn3aKgAgos,2161
23
+ meerschaum/_internal/term/tools.py,sha256=7Hb6W9G1nHZHAhzuJjatuP1IK9XZTgUXDRPk7H9Tkpg,1609
24
24
  meerschaum/actions/__init__.py,sha256=MHPs8aRBhbZQXnqd_6tVtisTrNCgPAPgnNcXYbn0zP8,11640
25
- meerschaum/actions/api.py,sha256=41r3fBh3vAPyNaOrvbh2oh6WUJTR2I-zaOEZN60A66E,12538
25
+ meerschaum/actions/api.py,sha256=RsQKtTHcxfoXw6BIpz36unUSFo2m9huATGBQUhQw2TU,13392
26
26
  meerschaum/actions/attach.py,sha256=UV19d9W_2WYcrf7BRz7k3mriDoX1V4rA4AKvbLdor0o,3106
27
27
  meerschaum/actions/bootstrap.py,sha256=08o3PchrJ_Rv8IP30ZBH1Ovk-b8qFBGPedCjF7jRzSo,18084
28
28
  meerschaum/actions/clear.py,sha256=v_xHn7-Pu7iwFNJ07q9eJt2hqPV7OwNZHUYa9dvixs4,4976
@@ -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=S7RXV8vvaTFbmVeehh4UhyXb4NCgcsyOQzoAG7jryH4,4129
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=Zd83fipDchBm-SAFq7mGqf_u06tqRCglJ5vwS5qF1ZQ,72
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=pl2I2zj24xikCLwQox5MnFCUtI00Duje6a-1c_cuc8c,5393
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.10.dist-info/LICENSE,sha256=jG2zQEdRNt88EgHUWPpXVWmOrOduUQRx7MnYV9YIPaw,11359
257
+ meerschaum-2.7.10.dist-info/METADATA,sha256=rv1XMPgLXtrBaNTQBv-6zF_mxGdVcF5YnVacC2UGnqM,24490
258
+ meerschaum-2.7.10.dist-info/NOTICE,sha256=OTA9Fcthjf5BRvWDDIcBC_xfLpeDV-RPZh3M-HQBRtQ,114
259
+ meerschaum-2.7.10.dist-info/WHEEL,sha256=In9FTNxeP60KnTkGw7wk6mJPYd_dQSjEZmXdBdMCI-8,91
260
+ meerschaum-2.7.10.dist-info/entry_points.txt,sha256=5YBVzibw-0rNA_1VjB16z5GABsOGf-CDhW4yqH8C7Gc,88
261
+ meerschaum-2.7.10.dist-info/top_level.txt,sha256=bNoSiDj0El6buocix-FRoAtJOeq1qOF5rRm2u9i7Q6A,11
262
+ meerschaum-2.7.10.dist-info/zip-safe,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
263
+ meerschaum-2.7.10.dist-info/RECORD,,