meerschaum 2.2.2rc2__py3-none-any.whl → 2.2.2rc4__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 (29) hide show
  1. meerschaum/_internal/shell/Shell.py +9 -3
  2. meerschaum/_internal/term/__init__.py +2 -1
  3. meerschaum/actions/api.py +65 -66
  4. meerschaum/actions/python.py +34 -18
  5. meerschaum/actions/uninstall.py +5 -9
  6. meerschaum/actions/upgrade.py +10 -2
  7. meerschaum/api/dash/callbacks/__init__.py +4 -0
  8. meerschaum/api/dash/callbacks/custom.py +39 -0
  9. meerschaum/api/dash/callbacks/dashboard.py +39 -6
  10. meerschaum/api/dash/callbacks/login.py +3 -1
  11. meerschaum/api/dash/pipes.py +145 -97
  12. meerschaum/config/_paths.py +1 -0
  13. meerschaum/config/_version.py +1 -1
  14. meerschaum/connectors/__init__.py +1 -1
  15. meerschaum/core/Pipe/__init__.py +5 -0
  16. meerschaum/plugins/__init__.py +67 -9
  17. meerschaum/utils/daemon/Daemon.py +7 -2
  18. meerschaum/utils/misc.py +6 -0
  19. meerschaum/utils/packages/__init__.py +105 -21
  20. meerschaum/utils/process.py +12 -1
  21. meerschaum/utils/venv/__init__.py +25 -1
  22. {meerschaum-2.2.2rc2.dist-info → meerschaum-2.2.2rc4.dist-info}/METADATA +1 -1
  23. {meerschaum-2.2.2rc2.dist-info → meerschaum-2.2.2rc4.dist-info}/RECORD +29 -28
  24. {meerschaum-2.2.2rc2.dist-info → meerschaum-2.2.2rc4.dist-info}/WHEEL +1 -1
  25. {meerschaum-2.2.2rc2.dist-info → meerschaum-2.2.2rc4.dist-info}/LICENSE +0 -0
  26. {meerschaum-2.2.2rc2.dist-info → meerschaum-2.2.2rc4.dist-info}/NOTICE +0 -0
  27. {meerschaum-2.2.2rc2.dist-info → meerschaum-2.2.2rc4.dist-info}/entry_points.txt +0 -0
  28. {meerschaum-2.2.2rc2.dist-info → meerschaum-2.2.2rc4.dist-info}/top_level.txt +0 -0
  29. {meerschaum-2.2.2rc2.dist-info → meerschaum-2.2.2rc4.dist-info}/zip-safe +0 -0
@@ -47,7 +47,6 @@ def get_module_path(
47
47
  Get a module's path without importing.
48
48
  """
49
49
  import site
50
- import pathlib
51
50
  if debug:
52
51
  from meerschaum.utils.debug import dprint
53
52
  if not _try_install_name_on_fail:
@@ -60,7 +59,13 @@ def get_module_path(
60
59
  vtp = venv_target_path(venv, allow_nonexistent=True, debug=debug)
61
60
  if not vtp.exists():
62
61
  if debug:
63
- dprint(f"Venv '{venv}' does not exist, cannot import '{import_name}'.", color=False)
62
+ dprint(
63
+ (
64
+ "Venv '{venv}' does not exist, cannot import "
65
+ + f"'{import_name}'."
66
+ ),
67
+ color = False,
68
+ )
64
69
  return None
65
70
 
66
71
  venv_target_candidate_paths = [vtp]
@@ -702,12 +707,22 @@ def need_update(
702
707
  return False
703
708
 
704
709
 
705
- def get_pip(venv: Optional[str] = 'mrsm', debug: bool=False) -> bool:
710
+ def get_pip(
711
+ venv: Optional[str] = 'mrsm',
712
+ color: bool = True,
713
+ debug: bool = False,
714
+ ) -> bool:
706
715
  """
707
716
  Download and run the get-pip.py script.
708
717
 
709
718
  Parameters
710
719
  ----------
720
+ venv: Optional[str], default 'mrsm'
721
+ The virtual environment into which to install `pip`.
722
+
723
+ color: bool, default True
724
+ If `True`, force color output.
725
+
711
726
  debug: bool, default False
712
727
  Verbosity toggle.
713
728
 
@@ -730,7 +745,7 @@ def get_pip(venv: Optional[str] = 'mrsm', debug: bool=False) -> bool:
730
745
  if venv is not None:
731
746
  init_venv(venv=venv, debug=debug)
732
747
  cmd_list = [venv_executable(venv=venv), dest.as_posix()]
733
- return subprocess.call(cmd_list, env=_get_pip_os_env()) == 0
748
+ return subprocess.call(cmd_list, env=_get_pip_os_env(color=color)) == 0
734
749
 
735
750
 
736
751
  def pip_install(
@@ -743,6 +758,7 @@ def pip_install(
743
758
  check_pypi: bool = True,
744
759
  check_wheel: bool = True,
745
760
  _uninstall: bool = False,
761
+ _from_completely_uninstall: bool = False,
746
762
  _install_uv_pip: bool = True,
747
763
  color: bool = True,
748
764
  silent: bool = False,
@@ -801,6 +817,7 @@ def pip_install(
801
817
  from meerschaum.config._paths import VIRTENV_RESOURCES_PATH
802
818
  from meerschaum.config import get_config
803
819
  from meerschaum.utils.warnings import warn
820
+ from meerschaum.utils.misc import is_android
804
821
  if args is None:
805
822
  args = ['--upgrade'] if not _uninstall else []
806
823
  if color:
@@ -839,11 +856,16 @@ def pip_install(
839
856
  color = False,
840
857
  )
841
858
 
842
- use_uv_pip = venv_contains_package('uv', venv=None, debug=debug) and uv_bin is not None
859
+ use_uv_pip = (
860
+ venv_contains_package('uv', venv=None, debug=debug)
861
+ and uv_bin is not None
862
+ and venv is not None
863
+ and not is_android()
864
+ )
843
865
 
844
866
  import sys
845
867
  if not have_pip and not use_uv_pip:
846
- if not get_pip(venv=venv, debug=debug):
868
+ if not get_pip(venv=venv, color=color, debug=debug):
847
869
  import sys
848
870
  minor = sys.version_info.minor
849
871
  print(
@@ -891,7 +913,7 @@ def pip_install(
891
913
  ):
892
914
  warn(
893
915
  (
894
- "Failed to install `setuptools` and `wheel` for virtual "
916
+ "Failed to install `setuptools`, `wheel`, and `uv` for virtual "
895
917
  + f"environment '{venv}'."
896
918
  ),
897
919
  color = False,
@@ -916,7 +938,7 @@ def pip_install(
916
938
  if '--disable-pip-version-check' not in _args and not use_uv_pip:
917
939
  _args.append('--disable-pip-version-check')
918
940
 
919
- if '--target' not in _args and '-t' not in _args and not _uninstall:
941
+ if '--target' not in _args and '-t' not in _args and not (not use_uv_pip and _uninstall):
920
942
  if venv is not None:
921
943
  _args += ['--target', venv_target_path(venv, debug=debug)]
922
944
  elif (
@@ -927,8 +949,6 @@ def pip_install(
927
949
  and not use_uv_pip
928
950
  ):
929
951
  _args += ['--user']
930
- if '--break-system-packages' not in _args and not _uninstall:
931
- _args.append('--break-system-packages')
932
952
 
933
953
  if debug:
934
954
  if '-v' not in _args or '-vv' not in _args or '-vvv' not in _args:
@@ -948,10 +968,10 @@ def pip_install(
948
968
  if not silent:
949
969
  print(msg)
950
970
 
951
- if _uninstall:
971
+ if _uninstall and not _from_completely_uninstall and not use_uv_pip:
952
972
  for install_name in _packages:
953
973
  _install_no_version = get_install_no_version(install_name)
954
- if _install_no_version in ('pip', 'wheel'):
974
+ if _install_no_version in ('pip', 'wheel', 'uv'):
955
975
  continue
956
976
  if not completely_uninstall_package(
957
977
  _install_no_version,
@@ -961,16 +981,17 @@ def pip_install(
961
981
  f"Failed to clean up package '{_install_no_version}'.",
962
982
  )
963
983
 
984
+ ### NOTE: Only append the `--prerelease=allow` flag if we explicitly depend on a prerelease.
964
985
  if use_uv_pip:
965
986
  _args.insert(0, 'pip')
966
- if not _uninstall:
987
+ if not _uninstall and get_prerelease_dependencies(_packages):
967
988
  _args.append('--prerelease=allow')
968
989
 
969
990
  rc = run_python_package(
970
991
  ('pip' if not use_uv_pip else 'uv'),
971
992
  _args + _packages,
972
993
  venv = None,
973
- env = _get_pip_os_env(),
994
+ env = _get_pip_os_env(color=color),
974
995
  debug = debug,
975
996
  )
976
997
  if debug:
@@ -988,6 +1009,33 @@ def pip_install(
988
1009
  return success
989
1010
 
990
1011
 
1012
+ def get_prerelease_dependencies(_packages: Optional[List[str]] = None):
1013
+ """
1014
+ Return a list of explicitly prerelease dependencies from a list of packages.
1015
+ """
1016
+ if _packages is None:
1017
+ _packages = list(all_packages.keys())
1018
+ prelrease_strings = ['dev', 'rc', 'a']
1019
+ prerelease_packages = []
1020
+ for install_name in _packages:
1021
+ _install_no_version = get_install_no_version(install_name)
1022
+ import_name = _install_to_import_name(install_name)
1023
+ install_with_version = _import_to_install_name(import_name)
1024
+ version_only = (
1025
+ install_with_version.lower().replace(_install_no_version.lower(), '')
1026
+ .split(']')[-1]
1027
+ )
1028
+
1029
+ is_prerelease = False
1030
+ for prelrease_string in prelrease_strings:
1031
+ if prelrease_string in version_only:
1032
+ is_prerelease = True
1033
+
1034
+ if is_prerelease:
1035
+ prerelease_packages.append(install_name)
1036
+ return prerelease_packages
1037
+
1038
+
991
1039
  def completely_uninstall_package(
992
1040
  install_name: str,
993
1041
  venv: str = 'mrsm',
@@ -1014,7 +1062,7 @@ def completely_uninstall_package(
1014
1062
  continue
1015
1063
  installed_versions.append(file_name)
1016
1064
 
1017
- max_attempts = len(installed_versions) + 1
1065
+ max_attempts = len(installed_versions)
1018
1066
  while attempts < max_attempts:
1019
1067
  if not venv_contains_package(
1020
1068
  _install_to_import_name(_install_no_version),
@@ -1023,8 +1071,10 @@ def completely_uninstall_package(
1023
1071
  return True
1024
1072
  if not pip_uninstall(
1025
1073
  _install_no_version,
1026
- venv=venv,
1027
- silent=(not debug), debug=debug
1074
+ venv = venv,
1075
+ silent = (not debug),
1076
+ _from_completely_uninstall = True,
1077
+ debug = debug,
1028
1078
  ):
1029
1079
  return False
1030
1080
  attempts += 1
@@ -1149,9 +1199,10 @@ def attempt_import(
1149
1199
  check_update: bool = False,
1150
1200
  check_pypi: bool = False,
1151
1201
  check_is_installed: bool = True,
1202
+ allow_outside_venv: bool = True,
1152
1203
  color: bool = True,
1153
1204
  debug: bool = False
1154
- ) -> Union[Any, Tuple[Any]]:
1205
+ ) -> Any:
1155
1206
  """
1156
1207
  Raise a warning if packages are not installed; otherwise import and return modules.
1157
1208
  If `lazy` is `True`, return lazy-imported modules.
@@ -1194,6 +1245,15 @@ def attempt_import(
1194
1245
  check_is_installed: bool, default True
1195
1246
  If `True`, check if the package is contained in the virtual environment.
1196
1247
 
1248
+ allow_outside_venv: bool, default True
1249
+ If `True`, search outside of the specified virtual environment
1250
+ if the package cannot be found.
1251
+ Setting to `False` will reinstall the package into a virtual environment, even if it
1252
+ is installed outside.
1253
+
1254
+ color: bool, default True
1255
+ If `False`, do not print ANSI colors.
1256
+
1197
1257
  Returns
1198
1258
  -------
1199
1259
  The specified modules. If they're not available and `install` is `True`, it will first
@@ -1275,6 +1335,7 @@ def attempt_import(
1275
1335
  name,
1276
1336
  venv = venv,
1277
1337
  split = split,
1338
+ allow_outside_venv = allow_outside_venv,
1278
1339
  debug = debug,
1279
1340
  )
1280
1341
  _is_installed_first_check[name] = package_is_installed
@@ -1420,7 +1481,9 @@ def import_rich(
1420
1481
  'pygments', lazy=False,
1421
1482
  )
1422
1483
  rich = attempt_import(
1423
- 'rich', lazy=lazy, **kw)
1484
+ 'rich', lazy=lazy,
1485
+ **kw
1486
+ )
1424
1487
  return rich
1425
1488
 
1426
1489
 
@@ -1654,10 +1717,26 @@ def is_installed(
1654
1717
  import_name: str,
1655
1718
  venv: Optional[str] = 'mrsm',
1656
1719
  split: bool = True,
1720
+ allow_outside_venv: bool = True,
1657
1721
  debug: bool = False,
1658
1722
  ) -> bool:
1659
1723
  """
1660
1724
  Check whether a package is installed.
1725
+
1726
+ Parameters
1727
+ ----------
1728
+ import_name: str
1729
+ The import name of the module.
1730
+
1731
+ venv: Optional[str], default 'mrsm'
1732
+ The venv in which to search for the module.
1733
+
1734
+ split: bool, default True
1735
+ If `True`, split on periods to determine the root module name.
1736
+
1737
+ allow_outside_venv: bool, default True
1738
+ If `True`, search outside of the specified virtual environment
1739
+ if the package cannot be found.
1661
1740
  """
1662
1741
  if debug:
1663
1742
  from meerschaum.utils.debug import dprint
@@ -1668,7 +1747,11 @@ def is_installed(
1668
1747
  spec_path = pathlib.Path(
1669
1748
  get_module_path(root_name, venv=venv, debug=debug)
1670
1749
  or
1671
- importlib.util.find_spec(root_name).origin
1750
+ (
1751
+ importlib.util.find_spec(root_name).origin
1752
+ if venv is not None and allow_outside_venv
1753
+ else None
1754
+ )
1672
1755
  )
1673
1756
  except (ModuleNotFoundError, ValueError, AttributeError, TypeError) as e:
1674
1757
  spec_path = None
@@ -1762,7 +1845,7 @@ def _monkey_patch_get_distribution(_dist: str, _version: str) -> None:
1762
1845
  pkg_resources.get_distribution = _get_distribution
1763
1846
 
1764
1847
 
1765
- def _get_pip_os_env():
1848
+ def _get_pip_os_env(color: bool = True):
1766
1849
  """
1767
1850
  Return the environment variables context in which `pip` should be run.
1768
1851
  See PEP 668 for why we are overriding the environment.
@@ -1771,5 +1854,6 @@ def _get_pip_os_env():
1771
1854
  pip_os_env = os.environ.copy()
1772
1855
  pip_os_env.update({
1773
1856
  'PIP_BREAK_SYSTEM_PACKAGES': 'true',
1857
+ ('FORCE_COLOR' if color else 'NO_COLOR'): '1',
1774
1858
  })
1775
1859
  return pip_os_env
@@ -9,10 +9,16 @@ See `meerschaum.utils.pool` for multiprocessing and
9
9
  """
10
10
 
11
11
  from __future__ import annotations
12
- import os, signal, subprocess, sys, platform
12
+ import os, signal, subprocess, sys, platform, traceback
13
13
  from meerschaum.utils.typing import Union, Optional, Any, Callable, Dict, Tuple
14
14
  from meerschaum.config.static import STATIC_CONFIG
15
15
 
16
+ _child_processes = []
17
+ def signal_handler(sig, frame):
18
+ for child in _child_processes:
19
+ child.send_signal(sig)
20
+ child.wait()
21
+
16
22
  def run_process(
17
23
  *args,
18
24
  foreground: bool = False,
@@ -73,6 +79,7 @@ def run_process(
73
79
  sys.stdout.write(line.decode('utf-8'))
74
80
  sys.stdout.flush()
75
81
 
82
+
76
83
  if capture_output or line_callback is not None:
77
84
  kw['stdout'] = subprocess.PIPE
78
85
  kw['stderr'] = subprocess.STDOUT
@@ -123,6 +130,7 @@ def run_process(
123
130
 
124
131
  try:
125
132
  child = subprocess.Popen(*args, **kw)
133
+ _child_processes.append(child)
126
134
 
127
135
  # we can't set the process group id from the parent since the child
128
136
  # will already have exec'd. and we can't SIGSTOP it before exec,
@@ -147,6 +155,9 @@ def run_process(
147
155
  store_proc_dict[store_proc_key] = child
148
156
  _ret = poll_process(child, line_callback) if line_callback is not None else child.wait()
149
157
  ret = _ret if not as_proc else child
158
+ except KeyboardInterrupt:
159
+ child.send_signal(signal.SIGINT)
160
+ ret = child.wait() if not as_proc else child
150
161
  finally:
151
162
  if foreground:
152
163
  # we have to mask SIGTTOU because tcsetpgrp
@@ -15,7 +15,7 @@ __all__ = sorted([
15
15
  'activate_venv', 'deactivate_venv', 'init_venv',
16
16
  'inside_venv', 'is_venv_active', 'venv_exec',
17
17
  'venv_executable', 'venv_exists', 'venv_target_path',
18
- 'Venv', 'get_venvs', 'verify_venv',
18
+ 'Venv', 'get_venvs', 'verify_venv', 'get_module_venv',
19
19
  ])
20
20
  __pdoc__ = {'Venv': True}
21
21
 
@@ -709,4 +709,28 @@ def get_venvs() -> List[str]:
709
709
  return venvs
710
710
 
711
711
 
712
+ def get_module_venv(module) -> Union[str, None]:
713
+ """
714
+ Return the virtual environment where an imported module is installed.
715
+
716
+ Parameters
717
+ ----------
718
+ module: ModuleType
719
+ The imported module to inspect.
720
+
721
+ Returns
722
+ -------
723
+ The name of a venv or `None`.
724
+ """
725
+ import pathlib
726
+ from meerschaum.config.paths import VIRTENV_RESOURCES_PATH
727
+ module_path = pathlib.Path(module.__file__).resolve()
728
+ try:
729
+ rel_path = module_path.relative_to(VIRTENV_RESOURCES_PATH)
730
+ except ValueError:
731
+ return None
732
+
733
+ return rel_path.as_posix().split('/', maxsplit=1)[0]
734
+
735
+
712
736
  from meerschaum.utils.venv._Venv import Venv
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: meerschaum
3
- Version: 2.2.2rc2
3
+ Version: 2.2.2rc4
4
4
  Summary: Sync Time-Series Pipes with Meerschaum
5
5
  Home-page: https://meerschaum.io
6
6
  Author: Bennett Meares
@@ -12,16 +12,16 @@ 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=NqRowEvTUd-7uuamD_X6mt2Nw3yfuDW7z_g5sfay0Og,33194
15
+ meerschaum/_internal/shell/Shell.py,sha256=aWWUWD5i0T7qopEFqIf76AiTwLYy41DC7qFjIuiOnoM,33276
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
19
19
  meerschaum/_internal/shell/resources/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
20
20
  meerschaum/_internal/term/TermPageHandler.py,sha256=Rt5S47Pr_3HLJc8xIXpZUczYE_Dw2qT8qwf1jZFtUHQ,520
21
- meerschaum/_internal/term/__init__.py,sha256=QZQerwLmqE6SS1MHH8HbZkoUunLhhcmZDmPf52y2dhM,1583
21
+ meerschaum/_internal/term/__init__.py,sha256=c4Je3376Tj7Me2qldCxg_Xs2mGN-Mu1YAMIaAG6vK6w,1642
22
22
  meerschaum/_internal/term/tools.py,sha256=dXVAimKD-Yv2fg2WOTr0YGBY7XDKjQqw-RizcS65YVI,727
23
23
  meerschaum/actions/__init__.py,sha256=7CNoKEqkqqafqMcChspJX9cR9OdgEWk9ggj0000Jl98,11360
24
- meerschaum/actions/api.py,sha256=pBVTGq9iI7rRspPPkilJthIxi6JDt6LsVXu2NXNHN_Y,14262
24
+ meerschaum/actions/api.py,sha256=7OTGfcu7CmOqplYJBdk3vCIFMPE_8QkEGRS_B-Ow9V0,14031
25
25
  meerschaum/actions/bootstrap.py,sha256=JnIyJ4odw6cA4e0Cw7J8THkLavMcj68nRyGsQDAT8nc,13396
26
26
  meerschaum/actions/clear.py,sha256=OoFZE0bK5m8s3GLNZcixuVT0DMj1izXVxGCATcmUGbI,4851
27
27
  meerschaum/actions/copy.py,sha256=8g3ANXfVdvuyaoXcZjgTg3BxHTOhHGrzVDOOsTBrpSU,6213
@@ -33,7 +33,7 @@ meerschaum/actions/install.py,sha256=akzzgsvy5yqUFuUqzSMG4eBKARY2iSnL3n_BiaNcM58
33
33
  meerschaum/actions/login.py,sha256=fNgsgkrFCn9wBQJY50SQhz2PwsN_TvEYYHnXK3JG4ig,4206
34
34
  meerschaum/actions/os.py,sha256=dtoppoBhLzW3rLNF0SFovEfNxA4WJWt_9WrOGlS5KbA,2251
35
35
  meerschaum/actions/pause.py,sha256=kDK0UMm90TuohFEG5Gugl3PEbuqGua-ghidqvgYShoc,3909
36
- meerschaum/actions/python.py,sha256=pdrgBCGdoYGFwVoyo71Q59hLS1vwzPHAW71U3JdroYo,2831
36
+ meerschaum/actions/python.py,sha256=ELGeOI6CZXHtweVN-x1jENYdGipj1Nd4_oPAKQX5nvc,3680
37
37
  meerschaum/actions/register.py,sha256=l_21LWZCzKwJVex_xAXECC5WVW1VEuIX9HSp7CuyCwA,11326
38
38
  meerschaum/actions/reload.py,sha256=gMXeFBGVfyQ7uhKhYf6bLaDMD0fLPcA9BrLBSiuvWIc,508
39
39
  meerschaum/actions/setup.py,sha256=KkAGWcgwzl_L6A19fTmTX1KtBjW2FwD8QenLjPy0mQQ,3205
@@ -45,8 +45,8 @@ meerschaum/actions/start.py,sha256=9Ej3Hk7qXfbrBaQq17KirTII_4Pa-BWSdrkutMnLA3k,1
45
45
  meerschaum/actions/stop.py,sha256=KTBadAmJ6SbReqlltkwfqZW6EryB4kZXupl0ZyInI0Q,4311
46
46
  meerschaum/actions/sync.py,sha256=10uPREu3HBVgtzakVxhCegQOz_mistABJlsNNCMgywY,17518
47
47
  meerschaum/actions/tag.py,sha256=SJf5qFW0ccLXjqlTdkK_0MCcrCMdg6xhYrhKdco0hdA,3053
48
- meerschaum/actions/uninstall.py,sha256=2fUd5ZK45VGGCI8V4NLmSnavdKjOv7cGM22x2WlTStw,6068
49
- meerschaum/actions/upgrade.py,sha256=w0f7QmJcOMU6RuwvLNCQBJgFV0iQe9jDrH1nZZEmvRk,6301
48
+ meerschaum/actions/uninstall.py,sha256=jKS4LpNJt1DQ_Z6684lD5I7P8zcTAyp5ikJRoJ5Puhc,6056
49
+ meerschaum/actions/upgrade.py,sha256=wepYdvrjSuc2wMd21rbLoxGjlRuXxLVH0GOD9OhKB48,6658
50
50
  meerschaum/actions/verify.py,sha256=tY5slGpHiWiE0v9TDnjbmxSKn86zBnu9WBpixUgKNQU,4885
51
51
  meerschaum/api/__init__.py,sha256=oOYwNnkXM2s-h52EYnN2NGPfrlaQh6D4-zmHa7uPLG0,7450
52
52
  meerschaum/api/_chain.py,sha256=h8-WXUGXX6AqzdALfsBC5uv0FkAcLdHJXCGzqzuq89k,875
@@ -60,7 +60,7 @@ meerschaum/api/dash/connectors.py,sha256=nJxBOFldtCMJLYjUSVYZwX5BO-LNjTNHgoEaXe-
60
60
  meerschaum/api/dash/graphs.py,sha256=wJUDWzcLN8-C3xko6rj0F2v7Rt8YDkSXoVkkXJjYGIk,2046
61
61
  meerschaum/api/dash/jobs.py,sha256=htqnrtAGCOgn2-THezMGYM8n1E-M-sM5A5qNmOGfHzg,7529
62
62
  meerschaum/api/dash/keys.py,sha256=hzEVeN60SAfVTVSO5lajGaykxRIKGhj9Ph00HRJnNoE,12598
63
- meerschaum/api/dash/pipes.py,sha256=yGlLesL32XiHqt2n28876s49BlGEov2X18ZZhZJRw-M,19233
63
+ meerschaum/api/dash/pipes.py,sha256=RVVYIJJy4G01cXou9OT8Gr5ZsygQ_GUqJDDhU1akhi8,20615
64
64
  meerschaum/api/dash/plugins.py,sha256=JrLLw2r1Ar7asBgbMbSuiuz8dB9bME41ChynYN2KO-Y,3662
65
65
  meerschaum/api/dash/sync.py,sha256=9lt7IRdG-fe9gf_ZO_viPiGlerX7ic6r_VFocv3I51A,504
66
66
  meerschaum/api/dash/users.py,sha256=xfKwezl_yM4-gmCFSk4VRXR8teIEouw03c6oGVhOzns,2362
@@ -72,10 +72,11 @@ meerschaum/api/dash/assets/banner_1920x320.png,sha256=n2cNTSVEsGxO9XZg2keb85J3UO
72
72
  meerschaum/api/dash/assets/favicon.ico,sha256=nDEekVxwS60wEDno1nbw5GF3TJOcDV26SETOHJEZKkY,9662
73
73
  meerschaum/api/dash/assets/logo_48x48.png,sha256=hTR5BHUHEN4yP2xiqAcDciuigoII9T3-80R-dzsxVmw,10218
74
74
  meerschaum/api/dash/assets/logo_500x500.png,sha256=9EUtf6wQcEZTXHKfQ2kjNXod6Rn_4DTB_BkTgxggq00,67702
75
- meerschaum/api/dash/callbacks/__init__.py,sha256=tAcK0ZX5qAN9mD5f7AYv0IBsGI6vI5r6wswPXfGgJfM,325
76
- meerschaum/api/dash/callbacks/dashboard.py,sha256=M3VJoRoI89jjPLSQejwp5v56-nkzs-g30r6rRvwIkCQ,32301
75
+ meerschaum/api/dash/callbacks/__init__.py,sha256=CKOkt7PIHbYxX9aDab2xPDuufIAQjSR5MVX-hU8Zi2w,450
76
+ meerschaum/api/dash/callbacks/custom.py,sha256=hm6fb0f-bpS_--qlV_9ScaAN_-dnSw60FwyomWBQHfY,1166
77
+ meerschaum/api/dash/callbacks/dashboard.py,sha256=8Rjxuw8uGww6oRfwRUC_mjm6i7aD0dVW0CeY2a7r7Yo,33101
77
78
  meerschaum/api/dash/callbacks/jobs.py,sha256=OEYxJRlmnxqbsvHb5jBJJCsRvVCsMNusm9AClCT9Pm0,7689
78
- meerschaum/api/dash/callbacks/login.py,sha256=dfl0EOkEUcF7a-u8fq0WGNtwV63714ds30yWfOM2rqE,2613
79
+ meerschaum/api/dash/callbacks/login.py,sha256=7WHZPsegy1qf3rrm5rucLYTufi93WrAy921HXQP14lU,2630
79
80
  meerschaum/api/dash/callbacks/plugins.py,sha256=7CrwwbBI2N3DR4Yb1bKmrtJ3cAQ3dVv1l6E_AtZ6Wng,2777
80
81
  meerschaum/api/dash/callbacks/register.py,sha256=9AgTcl--TPt6oETKzirQCkH9Azlm3XrU9U6XJM2b8Lk,3600
81
82
  meerschaum/api/dash/pages/__init__.py,sha256=1g3KAVYklZ5L8bpW-LfG5jBXRebnUeA_wmNsuIMRZEE,273
@@ -130,12 +131,12 @@ meerschaum/config/_environment.py,sha256=Vv4DLDfc2vKLbCLsMvkQDj77K4kEvHKEBmUBo-w
130
131
  meerschaum/config/_formatting.py,sha256=RT_oU0OSfUkzeqbY5jvEJwuove_t9sP4MyUb1Px250U,6635
131
132
  meerschaum/config/_jobs.py,sha256=2bEikO48qVSguFS3lrbWz6uiKt_0b3oSRWhwyz8RRDM,1279
132
133
  meerschaum/config/_patch.py,sha256=21N30q1ANmWMDQ-2RUjpMx7KafWfPQ3lKx9rrMqg1s4,1526
133
- meerschaum/config/_paths.py,sha256=xS7zim8Dr7LIJQBTzDH8IOhTZ4AHMvc5a1np8SGX4Rg,8185
134
+ meerschaum/config/_paths.py,sha256=CWhB17T00NeyyKW5T0fjmetd5AqOGYIN5ySbFg3dAMI,8265
134
135
  meerschaum/config/_preprocess.py,sha256=-AEA8m_--KivZwTQ1sWN6LTn5sio_fUr2XZ51BO6wLs,1220
135
136
  meerschaum/config/_read_config.py,sha256=WFZKIXZMDe_ca0ES7ivgM_mnwShvFxLdoeisT_X5-h0,14720
136
137
  meerschaum/config/_shell.py,sha256=s74cmJl8NrhM_Y1cB_P41_JDUYXV0g4WXnKFZWMtnrY,3551
137
138
  meerschaum/config/_sync.py,sha256=oK2ZujO2T1he08BXCFyiniBUevNGWSQKXLcS_jRv_7Y,4155
138
- meerschaum/config/_version.py,sha256=EInJbGE14rCfVET_lXzEeEKw-tGc7n8tgXJiPluDNic,74
139
+ meerschaum/config/_version.py,sha256=gYnJG3bYcMuCYNVqci0er5eTN3nIjLXAyhoRFZIGnRI,74
139
140
  meerschaum/config/paths.py,sha256=Z7vaOunaEJbVFXiSSz4IthhNOQDI-dhtpi5TpSyrcXg,206
140
141
  meerschaum/config/resources/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
141
142
  meerschaum/config/stack/__init__.py,sha256=c_WdTSejVdj8lqSE_pK5MhIBkHoftiZWDuEuB9dmk2I,9007
@@ -145,7 +146,7 @@ meerschaum/config/stack/mosquitto/resources/__init__.py,sha256=47DEQpj8HBSa-_TIm
145
146
  meerschaum/config/stack/resources/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
146
147
  meerschaum/config/static/__init__.py,sha256=d3bkER5FJwsvrL8TM5V8Vmy0Bi7Fq7H8U-4jjfpV4Og,4474
147
148
  meerschaum/connectors/Connector.py,sha256=cJKinmk7eWZwCBvtX4H9r66macTZOY1qjxR7JUEmDmg,6381
148
- meerschaum/connectors/__init__.py,sha256=zXumYuKTWOyu3U6J1zvMQS30HImYLE8ssBdJs-I134M,12106
149
+ meerschaum/connectors/__init__.py,sha256=WmnYotqRnz_YVQMkf2TkizdqZxWKYbCrnIc1_Dr3Wb0,12129
149
150
  meerschaum/connectors/parse.py,sha256=gidA2jvOLTvEeL5hM9JjcUwkMRBadUhd4IfA5Jy1tgg,4044
150
151
  meerschaum/connectors/poll.py,sha256=gIY9TvFBqMvMNQvR0O2No7koLLz2PjfExBr_Dsosgpg,7363
151
152
  meerschaum/connectors/api/APIConnector.py,sha256=pj-RncLhDUEBK7R4tByH6nrxZWU8zxGVOS2Wyik36zs,4355
@@ -176,7 +177,7 @@ meerschaum/connectors/sql/tools.py,sha256=jz8huOaRCwGlYdtGfAqAh7SoK8uydYBrasKQba
176
177
  meerschaum/connectors/sql/tables/__init__.py,sha256=e2dALTtThqbrq0soMNQ9QwgccyfTAjOrFkEClstLp3A,9001
177
178
  meerschaum/connectors/sql/tables/types.py,sha256=Jc_MTHIBM-KHpQt__Lckp39CeOo7tGOiAk5faDx-znY,1573
178
179
  meerschaum/core/__init__.py,sha256=tjASW10n9uLV6bYhcwP4rggh-ESXSJzgxpSBbVsuISs,251
179
- meerschaum/core/Pipe/__init__.py,sha256=1QOHqyUX2uJnfihVoGQV30BLm7JZZX2qjbsYIpCNFGI,16230
180
+ meerschaum/core/Pipe/__init__.py,sha256=5VxC5qvEuT-1eo5t4Sw5oycZCK40oxAFkHJq436ieFY,16486
180
181
  meerschaum/core/Pipe/_attributes.py,sha256=XbSHfDsomaNymzf7-__UhbHqu6mlTTx20xprsw_L04I,13202
181
182
  meerschaum/core/Pipe/_bootstrap.py,sha256=sTbHUX8V0Kfn6vEErXzsVslSjQNfQ5MxXxxuRYslr4w,7613
182
183
  meerschaum/core/Pipe/_clear.py,sha256=hQVPztHiadzLB0c4_yFg6EETnf9MtFdJDCpO41Giuco,2261
@@ -195,16 +196,16 @@ meerschaum/core/Plugin/__init__.py,sha256=UXg64EvJPgI1PCxkY_KM02-ZmBm4FZpLPIQR_u
195
196
  meerschaum/core/User/_User.py,sha256=CApB7Y0QJL6S9QOCCfrG4SbPuPXJ9AsAYQ5pASMP_Aw,6527
196
197
  meerschaum/core/User/__init__.py,sha256=lJ7beIZTG9sO4dAi3367fFBl17dXYEWHKi7HoaPlDyk,193
197
198
  meerschaum/plugins/_Plugin.py,sha256=LpplVPviSskKqf_igl4yIsD72H2C9vaFPQgU7-93ytg,34039
198
- meerschaum/plugins/__init__.py,sha256=g-KFejGEqcfBukqqF13Vsj8TdjGo99nrv_Z6CB8-mCg,21866
199
+ meerschaum/plugins/__init__.py,sha256=RUnkBTvusySyp4rvVRbtqoV2lKCdKeu0uxExB5Fg7KM,23503
199
200
  meerschaum/utils/__init__.py,sha256=QrK1K9hIbPCRCM5k2nZGFqGnrqhA0Eh-iSmCU7FG6Cs,612
200
201
  meerschaum/utils/_get_pipes.py,sha256=dlPckpYYyM0IwRZ2VL0u9DiEeYhr5Ho9gkzvWxzNVwI,11460
201
202
  meerschaum/utils/dataframe.py,sha256=vxZ72ME7IWuadtktgjFZF5bc9fXW_0TuynjFlJljlLU,31955
202
203
  meerschaum/utils/debug.py,sha256=ry9UWf0ECelVIuBApwmKxPZ_IoL6UqjTSMpGNbjghVQ,3690
203
204
  meerschaum/utils/interactive.py,sha256=t-6jWozXSqL7lYGDHuwiOjTgr-UKhdcg61q_eR5mikI,3196
204
- meerschaum/utils/misc.py,sha256=H26hLtCP8QHwXoHlvkxjWu6cPTwudDbbsbRkGw6ultg,43296
205
+ meerschaum/utils/misc.py,sha256=2_FyirImT793NH-wQriJ1VPOW7DcXm98Id0XMn8nh9I,43445
205
206
  meerschaum/utils/networking.py,sha256=Sr_eYUGW8_UV9-k9LqRFf7xLtbUcsDucODyLCRsFRUc,1006
206
207
  meerschaum/utils/pool.py,sha256=vkE42af4fjrTEJTxf6Ek3xGucm1MtEkpsSEiaVzNKHs,2655
207
- meerschaum/utils/process.py,sha256=BFT9ntuTSlIXTLFGGSnrjgUlJqCLzbOHfIf6iCcuf9A,7191
208
+ meerschaum/utils/process.py,sha256=UyiNszYXdnjF6WN8Tt0NchWjkCV10MbOXEFn_TAhXeg,7510
208
209
  meerschaum/utils/prompt.py,sha256=0mBFbgi_l9rCou9UnC_6qKTHkqyl1Z_jSRzfmc0xRXM,16490
209
210
  meerschaum/utils/schedule.py,sha256=btAeSDaoFH62-7wTO0U7NK9P9QHV46PtY3DJ8DN_mCY,10860
210
211
  meerschaum/utils/sql.py,sha256=4sCNEpgUd6uFz6ySs4nnUMVaOT0YAvPM1ZlQYJTSF-0,46656
@@ -212,7 +213,7 @@ meerschaum/utils/threading.py,sha256=3N8JXPAnwqJiSjuQcbbJg3Rv9-CCUMJpeQRfKFR7MaA
212
213
  meerschaum/utils/typing.py,sha256=L05wOXfWdn_nJ0KnZVr-2zdMYcqjdyOW_7InT3xe6-s,2807
213
214
  meerschaum/utils/warnings.py,sha256=0b5O2DBbhEAGnu6RAB1hlHSVmwL_hcR3EiMkExXmBJ0,6535
214
215
  meerschaum/utils/yaml.py,sha256=vbCrFjdapKsZ9wRRaI9Ih8dVUwZ-KHpSzfGhRcpDBgQ,3162
215
- meerschaum/utils/daemon/Daemon.py,sha256=iZzlPMF237sidfQJ3iNrhGJpV6onvEo1_9qtv9pE1j4,34595
216
+ meerschaum/utils/daemon/Daemon.py,sha256=rd9L9BgB0vwnPuhAbgLI-KkiEhFIPJqTQZ4PJ66lTf4,34686
216
217
  meerschaum/utils/daemon/FileDescriptorInterceptor.py,sha256=1cn5nQYLImL-BHXlLoxN_TadgN7XmGRLl1b7xecYMPc,4544
217
218
  meerschaum/utils/daemon/RotatingFile.py,sha256=LuaHPs-c4GaMc3VkMjvL6WJ5r7wmMUOm9ZLyk4OHAlg,23658
218
219
  meerschaum/utils/daemon/__init__.py,sha256=I_ki51yml4vsh9OoH7BWTaz9SnATD8qM0i0fN3aUMn0,8375
@@ -224,16 +225,16 @@ meerschaum/utils/formatting/_jobs.py,sha256=s1lVcdMkzNj5Bqw-GsUhcguUFtahi5nQ-kg1
224
225
  meerschaum/utils/formatting/_pipes.py,sha256=wy0iWJFsFl3X2VloaiA_gp9Yx9w6tD3FQZvAQAqef4A,19492
225
226
  meerschaum/utils/formatting/_pprint.py,sha256=tgrT3FyGyu5CWJYysqK3kX1xdZYorlbOk9fcU_vt9Qg,3096
226
227
  meerschaum/utils/formatting/_shell.py,sha256=ox75O7VHDAiwzSvdMSJZhXLadvAqYJVeihU6WeZ2Ogc,3677
227
- meerschaum/utils/packages/__init__.py,sha256=TTNgCWgIpdyG21Pk86dDne7eTG02_0nERxopLBD1tHo,59811
228
+ meerschaum/utils/packages/__init__.py,sha256=Lg_RavlKui150iDmqFy900coiWB4zx4KTXErq-kqs48,62636
228
229
  meerschaum/utils/packages/_packages.py,sha256=kWoo1KWvpQgR3rY_rpHzvGIh14BBFH92Erw5UtW7yX0,7918
229
230
  meerschaum/utils/packages/lazy_loader.py,sha256=VHnph3VozH29R4JnSSBfwtA5WKZYZQFT_GeQSShCnuc,2540
230
231
  meerschaum/utils/venv/_Venv.py,sha256=sBnlmxHdAh2bx8btfVoD79-H9-cYsv5lP02IIXkyECs,3553
231
- meerschaum/utils/venv/__init__.py,sha256=iVBBncvP_1FHaxpRo4BGDdTc6AXvP3sO_NXUuwdJWOU,23557
232
- meerschaum-2.2.2rc2.dist-info/LICENSE,sha256=jG2zQEdRNt88EgHUWPpXVWmOrOduUQRx7MnYV9YIPaw,11359
233
- meerschaum-2.2.2rc2.dist-info/METADATA,sha256=Fuc1OkYDzgjosH8VDHUmwZdpJsYK8aMApbiLipzUAx0,23988
234
- meerschaum-2.2.2rc2.dist-info/NOTICE,sha256=OTA9Fcthjf5BRvWDDIcBC_xfLpeDV-RPZh3M-HQBRtQ,114
235
- meerschaum-2.2.2rc2.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
236
- meerschaum-2.2.2rc2.dist-info/entry_points.txt,sha256=5YBVzibw-0rNA_1VjB16z5GABsOGf-CDhW4yqH8C7Gc,88
237
- meerschaum-2.2.2rc2.dist-info/top_level.txt,sha256=bNoSiDj0El6buocix-FRoAtJOeq1qOF5rRm2u9i7Q6A,11
238
- meerschaum-2.2.2rc2.dist-info/zip-safe,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
239
- meerschaum-2.2.2rc2.dist-info/RECORD,,
232
+ meerschaum/utils/venv/__init__.py,sha256=4vFAu85lQ5GYEVhc6e_KhFmrks4t_Ma6ysmtraccYbs,24187
233
+ meerschaum-2.2.2rc4.dist-info/LICENSE,sha256=jG2zQEdRNt88EgHUWPpXVWmOrOduUQRx7MnYV9YIPaw,11359
234
+ meerschaum-2.2.2rc4.dist-info/METADATA,sha256=Lca_cfI6M5ToHKZKKRjh7TXCnnnnFZovIy2JFY7N-UE,23988
235
+ meerschaum-2.2.2rc4.dist-info/NOTICE,sha256=OTA9Fcthjf5BRvWDDIcBC_xfLpeDV-RPZh3M-HQBRtQ,114
236
+ meerschaum-2.2.2rc4.dist-info/WHEEL,sha256=cpQTJ5IWu9CdaPViMhC9YzF8gZuS5-vlfoFihTBC86A,91
237
+ meerschaum-2.2.2rc4.dist-info/entry_points.txt,sha256=5YBVzibw-0rNA_1VjB16z5GABsOGf-CDhW4yqH8C7Gc,88
238
+ meerschaum-2.2.2rc4.dist-info/top_level.txt,sha256=bNoSiDj0El6buocix-FRoAtJOeq1qOF5rRm2u9i7Q6A,11
239
+ meerschaum-2.2.2rc4.dist-info/zip-safe,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
240
+ meerschaum-2.2.2rc4.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: bdist_wheel (0.43.0)
2
+ Generator: setuptools (70.1.0)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5