meerschaum 2.4.0.dev0__py3-none-any.whl → 2.4.0rc1__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 (71) hide show
  1. meerschaum/_internal/arguments/_parse_arguments.py +2 -5
  2. meerschaum/_internal/docs/index.py +3 -2
  3. meerschaum/_internal/entry.py +13 -7
  4. meerschaum/_internal/shell/Shell.py +38 -44
  5. meerschaum/_internal/term/TermPageHandler.py +2 -3
  6. meerschaum/_internal/term/__init__.py +13 -11
  7. meerschaum/actions/api.py +10 -7
  8. meerschaum/actions/bootstrap.py +2 -1
  9. meerschaum/actions/copy.py +3 -3
  10. meerschaum/actions/delete.py +4 -1
  11. meerschaum/actions/register.py +1 -3
  12. meerschaum/actions/stack.py +24 -19
  13. meerschaum/actions/start.py +25 -26
  14. meerschaum/actions/sync.py +53 -52
  15. meerschaum/api/__init__.py +48 -14
  16. meerschaum/api/_events.py +15 -10
  17. meerschaum/api/_oauth2.py +2 -2
  18. meerschaum/api/_websockets.py +5 -4
  19. meerschaum/api/dash/__init__.py +1 -11
  20. meerschaum/api/dash/callbacks/dashboard.py +47 -55
  21. meerschaum/api/dash/callbacks/jobs.py +15 -16
  22. meerschaum/api/dash/callbacks/login.py +16 -10
  23. meerschaum/api/dash/callbacks/pipes.py +3 -4
  24. meerschaum/api/dash/callbacks/plugins.py +1 -1
  25. meerschaum/api/dash/callbacks/register.py +15 -11
  26. meerschaum/api/dash/components.py +54 -59
  27. meerschaum/api/dash/jobs.py +5 -9
  28. meerschaum/api/dash/pages/pipes.py +4 -1
  29. meerschaum/api/dash/pipes.py +13 -17
  30. meerschaum/api/dash/plugins.py +6 -4
  31. meerschaum/api/dash/sessions.py +176 -0
  32. meerschaum/api/dash/users.py +2 -53
  33. meerschaum/api/dash/webterm.py +12 -17
  34. meerschaum/api/resources/static/js/terminado.js +1 -1
  35. meerschaum/api/routes/_actions.py +4 -20
  36. meerschaum/api/routes/_jobs.py +8 -7
  37. meerschaum/api/routes/_webterm.py +5 -6
  38. meerschaum/config/_default.py +6 -1
  39. meerschaum/config/_version.py +1 -1
  40. meerschaum/config/stack/__init__.py +9 -7
  41. meerschaum/config/static/__init__.py +4 -0
  42. meerschaum/connectors/__init__.py +15 -9
  43. meerschaum/connectors/api/{APIConnector.py → _APIConnector.py} +3 -1
  44. meerschaum/connectors/api/__init__.py +2 -1
  45. meerschaum/connectors/parse.py +18 -16
  46. meerschaum/connectors/sql/__init__.py +3 -1
  47. meerschaum/connectors/sql/_pipes.py +39 -39
  48. meerschaum/connectors/valkey/{ValkeyConnector.py → _ValkeyConnector.py} +5 -5
  49. meerschaum/connectors/valkey/__init__.py +3 -1
  50. meerschaum/connectors/valkey/_pipes.py +13 -8
  51. meerschaum/core/Pipe/__init__.py +1 -0
  52. meerschaum/core/Pipe/_clear.py +16 -13
  53. meerschaum/core/Pipe/_copy.py +106 -0
  54. meerschaum/core/Pipe/_data.py +155 -100
  55. meerschaum/core/Pipe/_verify.py +11 -11
  56. meerschaum/jobs/_Job.py +1 -6
  57. meerschaum/jobs/__init__.py +7 -2
  58. meerschaum/utils/dataframe.py +4 -1
  59. meerschaum/utils/formatting/_shell.py +5 -6
  60. meerschaum/utils/packages/__init__.py +14 -9
  61. {meerschaum-2.4.0.dev0.dist-info → meerschaum-2.4.0rc1.dist-info}/METADATA +1 -1
  62. {meerschaum-2.4.0.dev0.dist-info → meerschaum-2.4.0rc1.dist-info}/RECORD +70 -69
  63. {meerschaum-2.4.0.dev0.dist-info → meerschaum-2.4.0rc1.dist-info}/WHEEL +1 -1
  64. meerschaum/api/dash/actions.py +0 -255
  65. /meerschaum/connectors/{Connector.py → _Connector.py} +0 -0
  66. /meerschaum/connectors/sql/{SQLConnector.py → _SQLConnector.py} +0 -0
  67. {meerschaum-2.4.0.dev0.dist-info → meerschaum-2.4.0rc1.dist-info}/LICENSE +0 -0
  68. {meerschaum-2.4.0.dev0.dist-info → meerschaum-2.4.0rc1.dist-info}/NOTICE +0 -0
  69. {meerschaum-2.4.0.dev0.dist-info → meerschaum-2.4.0rc1.dist-info}/entry_points.txt +0 -0
  70. {meerschaum-2.4.0.dev0.dist-info → meerschaum-2.4.0rc1.dist-info}/top_level.txt +0 -0
  71. {meerschaum-2.4.0.dev0.dist-info → meerschaum-2.4.0rc1.dist-info}/zip-safe +0 -0
@@ -108,16 +108,16 @@ def progress(transient: bool = True, **kw):
108
108
  from meerschaum.utils.packages import import_rich, attempt_import
109
109
  from meerschaum.utils.formatting import get_console, _init
110
110
  _init()
111
- rich = import_rich()
111
+ _ = import_rich()
112
112
  rich_progress = attempt_import('rich.progress')
113
113
  return rich_progress.Progress(
114
114
  rich_progress.TextColumn(''),
115
115
  rich_progress.SpinnerColumn('clock'),
116
116
  rich_progress.TimeElapsedColumn(),
117
117
  rich_progress.TextColumn(''),
118
- rich_progress.BarColumn(bar_width=None,),
119
- transient = transient,
120
- console = get_console(),
118
+ rich_progress.BarColumn(bar_width=None),
119
+ transient=transient,
120
+ console=get_console(),
121
121
  **kw
122
122
  )
123
123
 
@@ -126,7 +126,6 @@ def live(**kw):
126
126
  Return the shell's `Live` object.
127
127
  """
128
128
  from meerschaum.utils.packages import import_rich, attempt_import
129
- rich = import_rich()
129
+ _ = import_rich()
130
130
  rich_live = attempt_import('rich.live')
131
131
  return rich_live.Live(**kw)
132
-
@@ -902,23 +902,28 @@ def pip_install(
902
902
  pip = attempt_import('pip', venv=venv, install=False, debug=debug, lazy=False)
903
903
  if need_update(pip, check_pypi=check_pypi, debug=debug):
904
904
  _args.append(all_packages['pip'])
905
-
905
+
906
906
  _args = (['install'] if not _uninstall else ['uninstall']) + _args
907
907
 
908
908
  if check_wheel and not _uninstall and not use_uv_pip:
909
909
  if not have_wheel:
910
+ setup_packages_to_install = (
911
+ ['setuptools', 'wheel']
912
+ + ([] if is_android() else ['uv'])
913
+ )
910
914
  if not pip_install(
911
- 'setuptools', 'wheel', 'uv',
912
- venv = venv,
913
- check_update = False,
914
- check_pypi = False,
915
- check_wheel = False,
916
- debug = debug,
917
- _install_uv_pip = False,
915
+ *setup_packages_to_install,
916
+ venv=venv,
917
+ check_update=False,
918
+ check_pypi=False,
919
+ check_wheel=False,
920
+ debug=debug,
921
+ _install_uv_pip=False,
918
922
  ) and not silent:
923
+ from meerschaum.utils.misc import items_str
919
924
  warn(
920
925
  (
921
- "Failed to install `setuptools`, `wheel`, and `uv` for virtual "
926
+ f"Failed to install {items_str(setup_packages_to_install)} for virtual "
922
927
  + f"environment '{venv}'."
923
928
  ),
924
929
  color=False,
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: meerschaum
3
- Version: 2.4.0.dev0
3
+ Version: 2.4.0rc1
4
4
  Summary: Sync Time-Series Pipes with Meerschaum
5
5
  Home-page: https://meerschaum.io
6
6
  Author: Bennett Meares
@@ -1,34 +1,34 @@
1
1
  meerschaum/__init__.py,sha256=6bn5zz7VInDP4fE_FGBMzJYrM6rQhBMJNQqsf1pU7eI,1701
2
2
  meerschaum/__main__.py,sha256=r5UjYxH1WA6dGG9YGBPul5xOdgF3Iwl0X4dWDtXU-30,2646
3
3
  meerschaum/_internal/__init__.py,sha256=ilC7utfKtin7GAvuN34fKyUQYfPyqH0Mm3MJF5iyEf4,169
4
- meerschaum/_internal/entry.py,sha256=XtGl-PPg9dLFlfbh_Wd5DUAdpjxqwQCxQxDrVf18QEE,12026
4
+ meerschaum/_internal/entry.py,sha256=5vBZxQbtN0l9lia9HcvvLVWDCpSeThg-505dGhKiOBo,12234
5
5
  meerschaum/_internal/arguments/__init__.py,sha256=_nSKKVLXNsJeSv-buxEZsx8_c0BAbkhRyE4nT6Bv6q0,541
6
- meerschaum/_internal/arguments/_parse_arguments.py,sha256=dtGjoyuKpQJtABdkQPzK1OM3Hd9JqlL-aQl_046tNa0,15976
6
+ meerschaum/_internal/arguments/_parse_arguments.py,sha256=602U0rQrKKGfJQYY_c13GcCD0avjOa44c5GoqIAD_iE,15805
7
7
  meerschaum/_internal/arguments/_parser.py,sha256=LfiVDTr1akj5D31qpJAAXKxMcnLQiD3jRpZtvvHWrAo,14917
8
8
  meerschaum/_internal/docs/__init__.py,sha256=ZQYHWo6n0kfLLkyG36YXqTYvv2Pc7it5HZHMylT6cBA,126
9
- meerschaum/_internal/docs/index.py,sha256=LOxk1p_ChRkijfRGOB6UnoUEzt-SvtnMO56fTcSIMsU,24390
9
+ meerschaum/_internal/docs/index.py,sha256=tI4ub_EjzUwhmNLKNm2l9BEqcAR__-sn9pFfTlNetiE,24449
10
10
  meerschaum/_internal/gui/__init__.py,sha256=KF6Opae0aBOjIndMZ2txoPs7ozCXRlR-lcTsicLO7fc,1313
11
11
  meerschaum/_internal/gui/app/__init__.py,sha256=rKUa8hHk6Fai-PDF61tQcpT1myxKcfmvEMDHxThNp7o,1565
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=gviYKPeJ3BfVCAuTJ2mw6b6MXSGux590c6wdpM0YEbM,39961
15
+ meerschaum/_internal/shell/Shell.py,sha256=KfJBubM9ajjPgTF8p-QBbv-UvcpG9m5BD4lNEdngQuk,39883
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/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=Rt5S47Pr_3HLJc8xIXpZUczYE_Dw2qT8qwf1jZFtUHQ,520
22
- meerschaum/_internal/term/__init__.py,sha256=eXjfRzpnASWomB4xpY2AfzC_CLenkInNnVWSLZEexlg,1638
21
+ meerschaum/_internal/term/TermPageHandler.py,sha256=57peuFD4geabiP7aomVNH_bRfNFPyCaJf56sQ8XMhV0,472
22
+ meerschaum/_internal/term/__init__.py,sha256=AT-dUw6cPISDDvHUplrSMsmPR5mo2JgVTtIzmOGcW7E,1733
23
23
  meerschaum/_internal/term/tools.py,sha256=dXVAimKD-Yv2fg2WOTr0YGBY7XDKjQqw-RizcS65YVI,727
24
24
  meerschaum/actions/__init__.py,sha256=MHPs8aRBhbZQXnqd_6tVtisTrNCgPAPgnNcXYbn0zP8,11640
25
- meerschaum/actions/api.py,sha256=nRHGeMTy0njI9Qec_606GwSS0AnoxiGJodOS8uWpjfU,12539
25
+ meerschaum/actions/api.py,sha256=xeqkf4S-DEzFR8roIF1mzy-i_mAnUPkF7y3nIu8twCo,12593
26
26
  meerschaum/actions/attach.py,sha256=UV19d9W_2WYcrf7BRz7k3mriDoX1V4rA4AKvbLdor0o,3106
27
- meerschaum/actions/bootstrap.py,sha256=c6US_SklR_ipr1Ax_2S6zP5pVZivr7v9OLTPxsMCiI4,14828
27
+ meerschaum/actions/bootstrap.py,sha256=X2YpYcxDR1vijj4YlJcdmErnt2FpF2s_tgyHVjpvISc,14916
28
28
  meerschaum/actions/clear.py,sha256=OoFZE0bK5m8s3GLNZcixuVT0DMj1izXVxGCATcmUGbI,4851
29
- meerschaum/actions/copy.py,sha256=hLRc81oVBjnV22lpeSDb-HsDX2on9K2u6C1H8qJITNQ,6844
29
+ meerschaum/actions/copy.py,sha256=NwTwj3IMdK1TFRuJXCxsbIEFNVeoNGoMkvE6H1ZQZzo,6838
30
30
  meerschaum/actions/deduplicate.py,sha256=puYyxeFYEUy1Sd2IOcZB2e6MrNxAZl2bTLmNzFDkCiw,1167
31
- meerschaum/actions/delete.py,sha256=OidLnYT4E3OEHGHOeHOHbL3FFJonE7iR_3sPCj0azK0,18974
31
+ meerschaum/actions/delete.py,sha256=DnEdkt_H4OYoee2DG-1mSDpTBp_Ay2aI1euRa4twPJU,19029
32
32
  meerschaum/actions/drop.py,sha256=Hd5h4rrWd7qL2rTqglsTonUsEoH7qQlsfqNFSHGeqr0,2453
33
33
  meerschaum/actions/edit.py,sha256=6d1Y8Ejd4zQWVARvx04cvbGyRA2r4ihJXWqMFiFX0aM,11740
34
34
  meerschaum/actions/install.py,sha256=jdhOrR_KlvinTKr0YJNkUHsnh5EY6OzA7cRq0Vnp1oU,7494
@@ -36,39 +36,39 @@ meerschaum/actions/login.py,sha256=fNgsgkrFCn9wBQJY50SQhz2PwsN_TvEYYHnXK3JG4ig,4
36
36
  meerschaum/actions/os.py,sha256=dtoppoBhLzW3rLNF0SFovEfNxA4WJWt_9WrOGlS5KbA,2251
37
37
  meerschaum/actions/pause.py,sha256=WI4dQFfjQ6ObWKUzwQ5FrtYPDyEcnxWwval8cSIzzJw,4221
38
38
  meerschaum/actions/python.py,sha256=k3Oo64RhyPd49W8bSjYvm6DOXuqY17NpR6BmfZb3-os,4737
39
- meerschaum/actions/register.py,sha256=bOQY0AlZlchsxPF27LL7G1OgdiCyj7mkBaD-PO6bFZc,14491
39
+ meerschaum/actions/register.py,sha256=By4eCJn-nvrWKs8dPG5GqMClUMm9y_yvIwU_FwRqJXw,14441
40
40
  meerschaum/actions/reload.py,sha256=gMXeFBGVfyQ7uhKhYf6bLaDMD0fLPcA9BrLBSiuvWIc,508
41
41
  meerschaum/actions/restart.py,sha256=6ffp3-X9eTEgunVSdD41HnOwqp71yjuSAmXJ5j39ONI,3038
42
42
  meerschaum/actions/setup.py,sha256=KkAGWcgwzl_L6A19fTmTX1KtBjW2FwD8QenLjPy0mQQ,3205
43
43
  meerschaum/actions/sh.py,sha256=fLfTJaacKu4sjLTRqEzzYlT2WbbdZBEczsKb6F-qAek,2026
44
44
  meerschaum/actions/show.py,sha256=Ij6v5so9GHUrYVi7AhPfhHGjABBofXTPAljLFa2xuWA,28141
45
45
  meerschaum/actions/sql.py,sha256=wYofwk1vGO96U2ncigGEfMtYMZeprz2FR1PRRZhkAPI,4311
46
- meerschaum/actions/stack.py,sha256=7ODAxzmCx8i9AHxvkbr5ZtzUNPpY-iqlSVo4rZHMOw4,5900
47
- meerschaum/actions/start.py,sha256=ZP3tn0dAefecm7esn-B2tltr0SpS48fu55Xt2YqU-NQ,19375
46
+ meerschaum/actions/stack.py,sha256=ZwrCTGJ0x3jjZkRieWcvqasQHYCqNtB1HYvTX-r3Z3g,5996
47
+ meerschaum/actions/start.py,sha256=7B6zLHh-DNWnJta1h_RV9ccGJ4EnbEDu3k-GdwAsU8M,19208
48
48
  meerschaum/actions/stop.py,sha256=5fdUw70YN-yuUWrC-NhA88cxr9FZ5NbssbQ8xXO8nFU,4632
49
- meerschaum/actions/sync.py,sha256=AkH-1O5bkUC-UElQGr0lRhrX-z18ZY2nBPSy9EsW1Kc,17506
49
+ meerschaum/actions/sync.py,sha256=tZbOMUcTw_d96sIbzO-GsBeaInzvWtLbkBTcDz55HzI,17216
50
50
  meerschaum/actions/tag.py,sha256=SJf5qFW0ccLXjqlTdkK_0MCcrCMdg6xhYrhKdco0hdA,3053
51
51
  meerschaum/actions/uninstall.py,sha256=tBXhdXggSieGEQe4EPGxpgMK0MZTJCweNvAJ9-59El0,5776
52
52
  meerschaum/actions/upgrade.py,sha256=uhFhAPmguGDgxLa1UkVZnPQ-JRcbmOdExE38v-HrLvo,6471
53
53
  meerschaum/actions/verify.py,sha256=tY5slGpHiWiE0v9TDnjbmxSKn86zBnu9WBpixUgKNQU,4885
54
- meerschaum/api/__init__.py,sha256=tjxyG8SQR_ymYuj3YUaadlguXBj-edL4kY_CxWYrYHk,7449
54
+ meerschaum/api/__init__.py,sha256=5q2XelZvqZSyfCyGIf1mlrWVxrsDaG2_I4L5ACeqMso,8456
55
55
  meerschaum/api/_chain.py,sha256=h8-WXUGXX6AqzdALfsBC5uv0FkAcLdHJXCGzqzuq89k,875
56
- meerschaum/api/_events.py,sha256=6Bgch1x-R82tmnixLMYunqv8NumlkOn9ergBRU5-vdI,2247
57
- meerschaum/api/_oauth2.py,sha256=SDdFbssy-9QoFBkuZZmep7mCX7jsn_zjqCbMXiksEVg,1647
58
- meerschaum/api/_websockets.py,sha256=Rso85r4Yj8yUB-Oh8T8bGBvO5vCzZboryOjY-VnxdZQ,1601
59
- meerschaum/api/dash/__init__.py,sha256=Wr0NRmGyaevBmXvBHMYYBxzbfqdNR74jqnb4miEv4cE,2250
60
- meerschaum/api/dash/actions.py,sha256=eUClPPdNVNSCtyq8Ecr1saasxj5VBgd1gcXejvQxXEc,9418
61
- meerschaum/api/dash/components.py,sha256=oGX7HFzNCi37iMww747iL3bbB52ZTt9tFa2iLohffg4,6399
56
+ meerschaum/api/_events.py,sha256=f-98AXHU10IL9zRGX1FrZFANxxiMz5ryeJnfFWaU8R8,2232
57
+ meerschaum/api/_oauth2.py,sha256=dJTIVlPpX3sAVW-PcN6pXRNy2RR5QAalu2RHp3l14YU,1683
58
+ meerschaum/api/_websockets.py,sha256=EMT9wB3yELu_WyCMqn9ZpgMDh23spUUchouRLCCLVuw,1509
59
+ meerschaum/api/dash/__init__.py,sha256=Qs7Q1wMI3TWl1gRECgHyJpPb7Zh70F_6TLIF8_qDv2s,2023
60
+ meerschaum/api/dash/components.py,sha256=t2goHW7oioao5Ew6Dro9U4LZDnHF-YWb4flLPx46GP8,6293
62
61
  meerschaum/api/dash/connectors.py,sha256=nJxBOFldtCMJLYjUSVYZwX5BO-LNjTNHgoEaXe-0XMo,843
63
62
  meerschaum/api/dash/graphs.py,sha256=wJUDWzcLN8-C3xko6rj0F2v7Rt8YDkSXoVkkXJjYGIk,2046
64
- meerschaum/api/dash/jobs.py,sha256=PbQgo1i3iPyysMJkkMRzZZOuV9vHzFShjJltiWsWUKo,7456
63
+ meerschaum/api/dash/jobs.py,sha256=kcWBdOk3tNQTTuN91nd5qbS4u8MmAl3SX0gkAfdKnpk,7279
65
64
  meerschaum/api/dash/keys.py,sha256=hzEVeN60SAfVTVSO5lajGaykxRIKGhj9Ph00HRJnNoE,12598
66
- meerschaum/api/dash/pipes.py,sha256=fgl-_mpOrktqRMxdd1_JW4Q3hXEytTiIP653dTgnFGY,21337
67
- meerschaum/api/dash/plugins.py,sha256=JiQjeeCT21MoPDo81pkTXw9viqIH6xpivQgZEO4qtzQ,3676
65
+ meerschaum/api/dash/pipes.py,sha256=w-VEE4_fvSucsOwPLSUJRtRXtlpOgi3EBAgs78Sj0m0,21221
66
+ meerschaum/api/dash/plugins.py,sha256=KdfG04f6SsUpBg-nm7MUJegFGuElOj-GAkxDX98hi60,3768
67
+ meerschaum/api/dash/sessions.py,sha256=-y5p4MYKh1eFzppkBfMsd6T7-rJs1nYS2-4fbVRAeRA,5029
68
68
  meerschaum/api/dash/sync.py,sha256=9lt7IRdG-fe9gf_ZO_viPiGlerX7ic6r_VFocv3I51A,504
69
- meerschaum/api/dash/users.py,sha256=TCnvyL5-QAVHGmZPrwvqT0jLsL5LUiwTYGbsY4wqQWo,2654
69
+ meerschaum/api/dash/users.py,sha256=3wq3ZG51DxOjNeF-X5HdlXD1MYQ1nQ9oowYSvFEY7hs,1050
70
70
  meerschaum/api/dash/websockets.py,sha256=0iwRaI9k2okU1baYstOkehfZ6-qMi_S6qm4lPBjVlH8,924
71
- meerschaum/api/dash/webterm.py,sha256=TNVYkqIk6zM7PTwkU_DV8myZks96w1VlxQ-JqNm2nwk,3298
71
+ meerschaum/api/dash/webterm.py,sha256=khO0tnFgYh9dLOKYlX2rG93aTa2__5RMDDQOU1Ga9Es,3060
72
72
  meerschaum/api/dash/assets/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
73
73
  meerschaum/api/dash/assets/ansi_up.js,sha256=in4bWSCayjzXbOgROw7eLRrFwCTIiLxh8nbFSJXtDl4,21923
74
74
  meerschaum/api/dash/assets/banner_1920x320.png,sha256=n2cNTSVEsGxO9XZg2keb85J3UOkux70nyIMNII5m4SA,338636
@@ -77,17 +77,17 @@ meerschaum/api/dash/assets/logo_48x48.png,sha256=hTR5BHUHEN4yP2xiqAcDciuigoII9T3
77
77
  meerschaum/api/dash/assets/logo_500x500.png,sha256=9EUtf6wQcEZTXHKfQ2kjNXod6Rn_4DTB_BkTgxggq00,67702
78
78
  meerschaum/api/dash/callbacks/__init__.py,sha256=5nLDkziaWWWt5ivmuMNG3kVBMOfqB6KQNIAS8f16bmA,493
79
79
  meerschaum/api/dash/callbacks/custom.py,sha256=N9pVolAF8sIuJD3V6xBSgS7k8THJo_f8d1qAoh1Kg60,1161
80
- meerschaum/api/dash/callbacks/dashboard.py,sha256=ZL_G_TajohjXxBgVF0oA_zL-O3rrN2IVis32xw7KrnI,33148
81
- meerschaum/api/dash/callbacks/jobs.py,sha256=Xvw17za3tNvgu-yHzNku_0pZVK17vfEWKEy_DLtgo70,7407
82
- meerschaum/api/dash/callbacks/login.py,sha256=oUGAo7gokAQDFgF4dBHaGf-An04JjkrGFHxSGB-ZMqU,2825
83
- meerschaum/api/dash/callbacks/pipes.py,sha256=fFyQNs0YZ4p2mbhCwWurccRt1Ptc_WjHde-gHYE3p80,1190
84
- meerschaum/api/dash/callbacks/plugins.py,sha256=7CrwwbBI2N3DR4Yb1bKmrtJ3cAQ3dVv1l6E_AtZ6Wng,2777
85
- meerschaum/api/dash/callbacks/register.py,sha256=9AgTcl--TPt6oETKzirQCkH9Azlm3XrU9U6XJM2b8Lk,3600
80
+ meerschaum/api/dash/callbacks/dashboard.py,sha256=AI7jxthNQWPVFi9wOeKkjx5dCvy9J7fTBNanHfA5i8g,32500
81
+ meerschaum/api/dash/callbacks/jobs.py,sha256=F0H8dDUMOr_1C6Pr8yNQCAHhqgJQklHBiOzstOjiQQo,7282
82
+ meerschaum/api/dash/callbacks/login.py,sha256=mEvMgV-f85H6DvqNdTvJPoiwHqTnhWY2nf_zLB26ipE,2876
83
+ meerschaum/api/dash/callbacks/pipes.py,sha256=OzSefhVkKBEmGserZVo2NV3yrh0XDP1IeWn3PO2YwD0,1098
84
+ meerschaum/api/dash/callbacks/plugins.py,sha256=znPgw_Uf3__QEjKxoIHADfjVNubTehCDaTJ02b16pQo,2760
85
+ meerschaum/api/dash/callbacks/register.py,sha256=KfMFgXWiFkemz0YriSPaLQBVnFDG8q6_t9gHuempOS0,3666
86
86
  meerschaum/api/dash/pages/__init__.py,sha256=ZZAWLCgFjl8Gh5MzqeWM7HkXP3uSUuUn-73vQisnAKc,312
87
87
  meerschaum/api/dash/pages/dashboard.py,sha256=WKwy40kgm2Qy0k1ZTIueFnnVu0YBzFAd_8AT6CHHvfM,3835
88
88
  meerschaum/api/dash/pages/error.py,sha256=-uCrASuIBrceHcc-leLeEoLos2ibSBWG0XMFQzFwtbw,595
89
89
  meerschaum/api/dash/pages/login.py,sha256=w8Cy1l4HSiMMgUndE4X_8pB0odU_iG7x1dwe9JrwR88,4633
90
- meerschaum/api/dash/pages/pipes.py,sha256=kTXoZI_vG-VfJ2c8K1WIxqtL0Bcohqw5Zmbrrp_X-sc,438
90
+ meerschaum/api/dash/pages/pipes.py,sha256=Cd5XY_m4nBIsEk6TQadpcajuBRzxw1cyDaTtojwykcI,506
91
91
  meerschaum/api/dash/pages/plugins.py,sha256=9VpRqWW-3OhgZDUoo4J8PYswd231HaxlcSntxOOKsQA,1549
92
92
  meerschaum/api/dash/pages/register.py,sha256=dqhsiu2OhrXhs4RL41_CpqipdrWo1-_roASvZIDBAq8,2364
93
93
  meerschaum/api/models/__init__.py,sha256=WrSLChqDkw5y9uU_ma2xJFFLqqVAQvHoIjuYrZDxOcM,276
@@ -108,7 +108,7 @@ meerschaum/api/resources/static/ico/logo.ico,sha256=nDEekVxwS60wEDno1nbw5GF3TJOc
108
108
  meerschaum/api/resources/static/js/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
109
109
  meerschaum/api/resources/static/js/action_button.js,sha256=A0tH6W5lXR1dcGKtNk_pTNSKFVH-HGX2eMR-IOgGLeM,540
110
110
  meerschaum/api/resources/static/js/main.js,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
111
- meerschaum/api/resources/static/js/terminado.js,sha256=xAinWhBfMwP5tBIrFNzln7R9UQ46nxKeGfApLx_Yt7I,1729
111
+ meerschaum/api/resources/static/js/terminado.js,sha256=oYRYUaw1S9gE8Cp6AevQaW_zGvXMYMi3UH3-IMbQSTw,1727
112
112
  meerschaum/api/resources/static/js/xterm.js,sha256=H5kaw7Syg-v5bmCuI6AKUnZd06Lkb6b92p8aqwMvdJU,289441
113
113
  meerschaum/api/resources/static/png/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
114
114
  meerschaum/api/resources/templates/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -117,21 +117,21 @@ meerschaum/api/resources/templates/old_index.html,sha256=BDeOlcXhSsBH3-NaRtuX4Z1
117
117
  meerschaum/api/resources/templates/secret.html,sha256=0QWkm4ZoN81Aw1pd2-62rGCvx3nXPHfFUoegj3Iy8Ls,141
118
118
  meerschaum/api/resources/templates/termpage.html,sha256=qspXRuOkzqOn2mXw9mmUldzsvOHq_LyaywQ29CUevp0,4527
119
119
  meerschaum/api/routes/__init__.py,sha256=jbkeFNl51Tg8aT5gWe560ZLZLojFJsLMe5IENRjRkb0,606
120
- meerschaum/api/routes/_actions.py,sha256=9vRu4dsBfIBrfhkVWurvk8n-ClerlHxggiPgQhwP1Oo,3701
120
+ meerschaum/api/routes/_actions.py,sha256=KGUlPyWiO0e7t7Fj8-nIowWokDVP22Gr9z1XxLx5tpw,3063
121
121
  meerschaum/api/routes/_connectors.py,sha256=NNbcn5xWhKqw2PqueSEaqRaZ95hFGDKazG5lE7gsssc,1849
122
122
  meerschaum/api/routes/_index.py,sha256=QI6CBo6pI2Zi0a6fJHDjZfiLa9f4okb0BGe3A_JD0kM,578
123
- meerschaum/api/routes/_jobs.py,sha256=znS8Pt5kvrRpv_ZOwRftbvQ1jpNfQ1-ngMy7kPgI5iM,11567
123
+ meerschaum/api/routes/_jobs.py,sha256=vO6CJYUme7bHIOy9gAv6VyEM1M8EKdJmtfw2nSnZ24Q,11639
124
124
  meerschaum/api/routes/_login.py,sha256=ti2onNOemOGLHLoPubAQOYtD7eq7FA1jOlbOSVSjXVo,2466
125
125
  meerschaum/api/routes/_misc.py,sha256=05--9ZVFeaCgZrHER2kA3SYdK4TyfkEXOCjLvPbum-w,2469
126
126
  meerschaum/api/routes/_pipes.py,sha256=j0Ymvr331RHw2_5xaL3A-1rv6gScNOglsVA1eep5RH4,21586
127
127
  meerschaum/api/routes/_plugins.py,sha256=vR6-uTJraY1YEJMuRvds1-xFLB2mexxnp2dJwN_0rVo,6216
128
128
  meerschaum/api/routes/_users.py,sha256=SfAkZFKrKnGjpzj8SFIKzPemzQJOH3oB72h19EaUvcQ,7204
129
129
  meerschaum/api/routes/_version.py,sha256=2t-nw_9IxCVZCNEar0LOwmut2zsClRVHjiOOUx16cu0,825
130
- meerschaum/api/routes/_webterm.py,sha256=7eilgDXckpEc2LyeNmJS5YO6HxlyMkwPnAMWd7eMfJM,3909
130
+ meerschaum/api/routes/_webterm.py,sha256=twjQyVReYwXypvxLPICYWjB5hR-XHzUWEuYRbSq27nc,3834
131
131
  meerschaum/api/tables/__init__.py,sha256=e2aNC0CdlWICTUMx1i9RauF8Pm426J0RZJbsJWv4SWo,482
132
132
  meerschaum/config/__init__.py,sha256=jZgQSjvbOWyvGouqRgIeYBg9Pp343_9CDsCWWpwYDGY,11577
133
133
  meerschaum/config/_dash.py,sha256=BJHl4xMrQB-YHUEU7ldEW8q_nOPoIRSOqLrfGElc6Dw,187
134
- meerschaum/config/_default.py,sha256=bf2y566sJEGCo4IwWSoAKg5hk54YrBWTm_TYCB6Ftbk,5522
134
+ meerschaum/config/_default.py,sha256=gGkF9dGiwiKtMSXAE85LNhZ8ZXQ5EbeBPTSG0A9MBNQ,5675
135
135
  meerschaum/config/_edit.py,sha256=_kabgFbJdI5kcLs-JIsoaTo0JdyxnPnBdrlTyTAgPm8,8236
136
136
  meerschaum/config/_environment.py,sha256=Vv4DLDfc2vKLbCLsMvkQDj77K4kEvHKEBmUBo-wCrgo,4419
137
137
  meerschaum/config/_formatting.py,sha256=OMuqS1EWOsj_34wSs2tOqGIWci3bTMIZ5l-uelZgsIM,6672
@@ -142,21 +142,21 @@ meerschaum/config/_preprocess.py,sha256=-AEA8m_--KivZwTQ1sWN6LTn5sio_fUr2XZ51BO6
142
142
  meerschaum/config/_read_config.py,sha256=WFZKIXZMDe_ca0ES7ivgM_mnwShvFxLdoeisT_X5-h0,14720
143
143
  meerschaum/config/_shell.py,sha256=46_m49Txc5q1rGfCgO49ca48BODx45DQJi8D0zz1R18,4245
144
144
  meerschaum/config/_sync.py,sha256=oK2ZujO2T1he08BXCFyiniBUevNGWSQKXLcS_jRv_7Y,4155
145
- meerschaum/config/_version.py,sha256=ko0j1wwF4ngSOgFGF9dJ_nxwMUj8EwEgLFGA5rFwpgM,76
145
+ meerschaum/config/_version.py,sha256=BNTzBcMJyuOyQkclgzJD1GnsXZ98cXwBx9sLahOKQtE,74
146
146
  meerschaum/config/paths.py,sha256=JjibeGN3YAdSNceRwsd42aNmeUrIgM6ndzC8qZAmNI0,621
147
147
  meerschaum/config/resources/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
148
- meerschaum/config/stack/__init__.py,sha256=bUXiccj-dvpuPCGs-hclR8E5lrgrpg5Tmjte3BJVX4s,10488
148
+ meerschaum/config/stack/__init__.py,sha256=jHnk1HE7riEVOFbt0SHgTM7kmrdRVic1raQSs220wn0,10550
149
149
  meerschaum/config/stack/grafana/__init__.py,sha256=LNXQw2FvHKrD68RDhqDmi2wJjAHaKw9IWx8rNuyWEPo,2010
150
150
  meerschaum/config/stack/mosquitto/__init__.py,sha256=-OwOjq8KiBoSH_pmgCAAF3Dp3CRD4KgAEdimZSadROs,186
151
151
  meerschaum/config/stack/mosquitto/resources/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
152
152
  meerschaum/config/stack/resources/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
153
- meerschaum/config/static/__init__.py,sha256=SLAcxX69MFiZBbonn3YiBxOHtdkPoz5Sbtz0Tt9CjKY,5225
154
- meerschaum/connectors/Connector.py,sha256=VaVNg0SlQCTXk4shl3c68QdkbymA2Y9ScUlUjckk8PY,6795
155
- meerschaum/connectors/__init__.py,sha256=2pnoVqu8-8cF8LdwDjZrmGyW_TTP6Ha18RG_wVvPCSg,12654
156
- meerschaum/connectors/parse.py,sha256=sDeI2OIS9Inwhbn9jkFAXxOPnmmAHqsuHiiHfWjVnSA,4307
153
+ meerschaum/config/static/__init__.py,sha256=Si2asThyFLVZLGiCKSgmFWwMUnZyUTL3h13L1a7wkOc,5320
154
+ meerschaum/connectors/_Connector.py,sha256=VaVNg0SlQCTXk4shl3c68QdkbymA2Y9ScUlUjckk8PY,6795
155
+ meerschaum/connectors/__init__.py,sha256=bpWsnU0uvoowWyUkFTwfEkadK84pssZUJ4M7yReudOU,12703
156
+ meerschaum/connectors/parse.py,sha256=tnqzkzt_suOXYzktn_XVUrprtfym9ThijUf8HXZZlhY,4194
157
157
  meerschaum/connectors/poll.py,sha256=23yRUeIqqyNVt8VoJErhirW543YZ6X0ocfBauMJnC_g,7465
158
- meerschaum/connectors/api/APIConnector.py,sha256=MPYeImCBAeSpueYis5CxkfT7kkV82MnGKDLoNE8uOVw,5017
159
- meerschaum/connectors/api/__init__.py,sha256=JwKrGtuE5aOd2VnsRwudFBYyBf5IxczOwPVdNvCUgSQ,205
158
+ meerschaum/connectors/api/_APIConnector.py,sha256=lUsyAf0b-k6X25501FAJQiWX395Vf86MYSaRM4np2h0,5070
159
+ meerschaum/connectors/api/__init__.py,sha256=rYHDMK7n-5X5HoxiRITt-sVLgePnPQbgwntkhzvJvOk,234
160
160
  meerschaum/connectors/api/_actions.py,sha256=gd3F8i5BvN8XRvMcPvPVR8sc1DeLzgoBHdDhc8PtACE,3966
161
161
  meerschaum/connectors/api/_fetch.py,sha256=Khq9AFr1nk8Dsmcedb77aWhAuHw0JGgVeahDG95Q5MQ,2072
162
162
  meerschaum/connectors/api/_jobs.py,sha256=N5lpHFGG10jlVgaJeWAOTuLBQw3AdgjXsEPpp1YwZQE,11270
@@ -169,13 +169,13 @@ meerschaum/connectors/api/_uri.py,sha256=HWxqGx4R1cHZ3ywy9Ro9ePbFxxusw4RLaC3hpGt
169
169
  meerschaum/connectors/api/_users.py,sha256=kzb7ENgXwQ19OJYKOuuWzx2rwVuUZCly9dTnyvVuT2Q,5275
170
170
  meerschaum/connectors/plugin/PluginConnector.py,sha256=aQ1QaB7MordCFimZqoGLb0R12PfDUN_nWks2J5mzeAs,2084
171
171
  meerschaum/connectors/plugin/__init__.py,sha256=pwF7TGY4WNz2_HaVdmK4rPQ9ZwTOEuPHgzOqsGcoXJw,198
172
- meerschaum/connectors/sql/SQLConnector.py,sha256=QvsFgAv2NAUdsJrcNYZIkQ9x_ow5JRe4Ie_UgSrDz3M,11709
173
- meerschaum/connectors/sql/__init__.py,sha256=xwSYhYuketTXhQLXyD9pZ0NNBPboW5Oqv9zrKfjx0Ic,175
172
+ meerschaum/connectors/sql/_SQLConnector.py,sha256=QvsFgAv2NAUdsJrcNYZIkQ9x_ow5JRe4Ie_UgSrDz3M,11709
173
+ meerschaum/connectors/sql/__init__.py,sha256=3cqYiDkVasn7zWdtOTAZbT4bo95AuvGOmDD2TkaAxtw,205
174
174
  meerschaum/connectors/sql/_cli.py,sha256=1SgnWeMIAihoxp4FzbNrcq1npXf0dSOQnCntpU9hUXA,4405
175
175
  meerschaum/connectors/sql/_create_engine.py,sha256=vPVwR3cpfcQm0aW9xo_DUWA3gMdlkuB0wJ8JoTpRYD0,10396
176
176
  meerschaum/connectors/sql/_fetch.py,sha256=NYYWDoEd-aGIS337KwH-D9_3KVWVCZOHAspGLfdEuUE,13086
177
177
  meerschaum/connectors/sql/_instance.py,sha256=r_S96vzSuKnBVGROSKQAPl-DnFnOOEPUkz1KFDFPHFQ,6509
178
- meerschaum/connectors/sql/_pipes.py,sha256=FnO2XNH82zf7b40UK62atdvR2yFhwyfFUAU3aMpoceg,99638
178
+ meerschaum/connectors/sql/_pipes.py,sha256=p1oicTEu-fjnFt7Hk1LKsv2FIm5HczgzaJxHZFFQnNk,99518
179
179
  meerschaum/connectors/sql/_plugins.py,sha256=wbxcNxqTtjfDsxPvdVGTllasYf6NHHzODaQ72hEUSBQ,8135
180
180
  meerschaum/connectors/sql/_sql.py,sha256=553BTPtvnnLMERYK8IcxR4CS3R4Sq7id-5hbApOEsIU,34199
181
181
  meerschaum/connectors/sql/_uri.py,sha256=0BrhQtqQdzg9mR04gWBZINs_BbPFtSlTECXT_TCUwik,3460
@@ -183,18 +183,19 @@ meerschaum/connectors/sql/_users.py,sha256=FJjYeJGhr-TDHziNc6p_5mupGRtGjezKPIYgH
183
183
  meerschaum/connectors/sql/tools.py,sha256=jz8huOaRCwGlYdtGfAqAh7SoK8uydYBrasKQba9FT38,187
184
184
  meerschaum/connectors/sql/tables/__init__.py,sha256=e2dALTtThqbrq0soMNQ9QwgccyfTAjOrFkEClstLp3A,9001
185
185
  meerschaum/connectors/sql/tables/types.py,sha256=Jc_MTHIBM-KHpQt__Lckp39CeOo7tGOiAk5faDx-znY,1573
186
- meerschaum/connectors/valkey/ValkeyConnector.py,sha256=5OqXLQhnZZ5vbvw-YNCb1cRymcNH23v49aRF_CXr6FM,15782
187
- meerschaum/connectors/valkey/__init__.py,sha256=PXIwhlQxwFSxdJ-3yihnZznlanKAL4k3i_UtziXnLDc,154
186
+ meerschaum/connectors/valkey/_ValkeyConnector.py,sha256=c30X2NjF32ZGtdfYMnmMh7z8qopqUwidVgKNk0pELFM,15799
187
+ meerschaum/connectors/valkey/__init__.py,sha256=jkVutsygQCvGPLN17cP6wHAjHajxVycnQJbm2eVMuY0,187
188
188
  meerschaum/connectors/valkey/_fetch.py,sha256=MjeE0h3YI4M3LCzy7axQAc_fX_l82vUqX4WXcYoppxE,1920
189
- meerschaum/connectors/valkey/_pipes.py,sha256=-QnjGs6Xb7U9ZyjRyJ1PRUPfxoCOSAS7Zdzn7m1TrJ8,22274
189
+ meerschaum/connectors/valkey/_pipes.py,sha256=7GNDGoVDIULyGUjUisckErvRlrcnN4WkML95n0yb1N8,22475
190
190
  meerschaum/connectors/valkey/_plugins.py,sha256=ZqiEW4XZCOpw4G8DUK2IKY6Qrph4mYfTjgXWimgakYY,6267
191
191
  meerschaum/connectors/valkey/_users.py,sha256=AS1vLarrkDA9yPK644GWwRiQiTZVa9x3nlLpyntq40g,7730
192
192
  meerschaum/core/__init__.py,sha256=tjASW10n9uLV6bYhcwP4rggh-ESXSJzgxpSBbVsuISs,251
193
- meerschaum/core/Pipe/__init__.py,sha256=mU8FHqHPTdSRBwEoJyNs-qNRb5PYVyXRVNTEQaEYexU,16671
193
+ meerschaum/core/Pipe/__init__.py,sha256=g1Geblo4NwNYumM9sSPBMAxiGZnhuh-nQ5OSwQ06Dvg,16702
194
194
  meerschaum/core/Pipe/_attributes.py,sha256=8nHMCZnQexAcG1ONXNqTldEowD7gstd34lDUcBktPeA,13144
195
195
  meerschaum/core/Pipe/_bootstrap.py,sha256=evyi07kkzAVMj66HfZkbYdcWk_oHUDsl6f13EnSPMYs,7723
196
- meerschaum/core/Pipe/_clear.py,sha256=hQVPztHiadzLB0c4_yFg6EETnf9MtFdJDCpO41Giuco,2261
197
- meerschaum/core/Pipe/_data.py,sha256=Ese54Qointav0M-bmIx5NrJIbIrFCb2hQvPEAfxRBAk,20922
196
+ meerschaum/core/Pipe/_clear.py,sha256=yFAYQnDmL3m6DzyAutgnBDXSOL9gjIrLvlQXd86YFV0,2193
197
+ meerschaum/core/Pipe/_copy.py,sha256=PcOeNUb0B4-HehTAAnBpjyT4uLLTR6VQOarY0SFA9wk,2912
198
+ meerschaum/core/Pipe/_data.py,sha256=CKDiF2lt-Nd_R693xhkhahU41_yppW8LAET9js6TRoM,22430
198
199
  meerschaum/core/Pipe/_deduplicate.py,sha256=E3oXu6-0vZhzacv0GHri9yHd7XrSlIStZ--KE2EqeVM,10274
199
200
  meerschaum/core/Pipe/_delete.py,sha256=1geNp9BgrocXP1gt76dMbnlJWKYFMuSNqPFA4K4-hXE,2118
200
201
  meerschaum/core/Pipe/_drop.py,sha256=gIKdHWm0RsIgC2nu768MtFnPbCXyiJjNxaiT1obyuIo,1036
@@ -204,20 +205,20 @@ meerschaum/core/Pipe/_fetch.py,sha256=LtYqZSN2kwc5Tl2gQ5kSmGN7Ombv86k1zDNTP3SUF1
204
205
  meerschaum/core/Pipe/_register.py,sha256=Sd5xaAW8H7uLTIoommcKb-6kHPRuHJLWNSbPnt2UbvA,2240
205
206
  meerschaum/core/Pipe/_show.py,sha256=nG50y8eBT9TVuKkRgAKtNDNIxysJvMNxfu__lkL1F9k,1352
206
207
  meerschaum/core/Pipe/_sync.py,sha256=ha0bk3FEw3foaWIpzYYxzAeFjXoOubVL-avfowKJImE,32132
207
- meerschaum/core/Pipe/_verify.py,sha256=KSnthUzImRLjt9fxyBaLvArqDuOLRpKBfk0tnseJClc,14262
208
+ meerschaum/core/Pipe/_verify.py,sha256=GDCFRWWoaqXXfLQaTlS9_J7OqjuqA_JqXvUWZUOEclk,14218
208
209
  meerschaum/core/Plugin/__init__.py,sha256=UXg64EvJPgI1PCxkY_KM02-ZmBm4FZpLPIQR_uSJJDc,137
209
210
  meerschaum/core/User/_User.py,sha256=JZ9Y1tsjZe-cgD24m9YfZ6ZwSOKn_sHc4rbQ7KblBz8,6592
210
211
  meerschaum/core/User/__init__.py,sha256=lJ7beIZTG9sO4dAi3367fFBl17dXYEWHKi7HoaPlDyk,193
211
212
  meerschaum/jobs/_Executor.py,sha256=qM62BhFTM4tyJ7p90KOM0y3qyeRY9k3ZV_aTDJMHnO8,1682
212
- meerschaum/jobs/_Job.py,sha256=XnvS-qN12907t23OG1suBJ5k_TDuXkS1diNE_1xNAF0,32152
213
- meerschaum/jobs/__init__.py,sha256=ieruFbPxozkgyYMEO5wWQ4OXqfD5Pw9VtFWGub6DQxs,11970
213
+ meerschaum/jobs/_Job.py,sha256=hkjHqG5YPej5rC4nwdU7Ay_mjep9Fy4HO5B-eqdBdfo,31984
214
+ meerschaum/jobs/__init__.py,sha256=QW_uZfuv_WQmqVm71QNYsPdOEr5c8fq-l8vLr7aJzm8,12131
214
215
  meerschaum/jobs/systemd.py,sha256=Rq-tsDPslG17ZhpKMrVJ5r8Z0IPr6DEc9APObfIoXCg,24614
215
216
  meerschaum/plugins/_Plugin.py,sha256=rTiGNQ9nIQeVSG_P9C6DHCMLW0K-J7zzuu3FjNXUOlE,34056
216
217
  meerschaum/plugins/__init__.py,sha256=trMQ53qgP7ikJhhV_uXzqJw6X1NDz2rPOGXFk40bb1Y,26190
217
218
  meerschaum/plugins/bootstrap.py,sha256=qg9MQ1YAU8ShwGqWDl38WjiXLIxDPl95pSIGDLN9rOw,11423
218
219
  meerschaum/utils/__init__.py,sha256=QrK1K9hIbPCRCM5k2nZGFqGnrqhA0Eh-iSmCU7FG6Cs,612
219
220
  meerschaum/utils/_get_pipes.py,sha256=tu4xKPoDn79Dz2kWM13cXTP4DSCkn-3G9M8KiLftopw,11073
220
- meerschaum/utils/dataframe.py,sha256=iowEHxflHaPjowDgehPxZkLbUmfJ1n7c0BDrm2KnSM8,38212
221
+ meerschaum/utils/dataframe.py,sha256=ncT7s5nQApSsQqbV7HqzAWsJd7cpN2hEfsfbdoYiolw,38344
221
222
  meerschaum/utils/debug.py,sha256=GyIzJmunkoPnOcZNYVQdT4Sgd-aOb5MI2VbIgATOjIQ,3695
222
223
  meerschaum/utils/interactive.py,sha256=t-6jWozXSqL7lYGDHuwiOjTgr-UKhdcg61q_eR5mikI,3196
223
224
  meerschaum/utils/misc.py,sha256=S95QKlv4kygNdz_GA06w_UrQXuqXTRwA43rVxHZedrk,46369
@@ -243,17 +244,17 @@ meerschaum/utils/formatting/__init__.py,sha256=GLx3fvTQi7EnC9fo31WggpMRpmR7yTWIu
243
244
  meerschaum/utils/formatting/_jobs.py,sha256=izsqPJhTtUkXUUtWnbXtReYsUYwulXtci3pBj72Ne64,6637
244
245
  meerschaum/utils/formatting/_pipes.py,sha256=wy0iWJFsFl3X2VloaiA_gp9Yx9w6tD3FQZvAQAqef4A,19492
245
246
  meerschaum/utils/formatting/_pprint.py,sha256=tgrT3FyGyu5CWJYysqK3kX1xdZYorlbOk9fcU_vt9Qg,3096
246
- meerschaum/utils/formatting/_shell.py,sha256=jsjf_GMXBpGNBbpT7skTUZrHZl5HooFzffRDc4hz5Tc,3786
247
- meerschaum/utils/packages/__init__.py,sha256=zBy3cUy60Eht90PhgWzL_VjTjJSFpt5sA-DvrLch47A,63179
247
+ meerschaum/utils/formatting/_shell.py,sha256=OMFh3cSZNr83z8m265irkS_JtEWHwjkEY2ybnMIOllY,3774
248
+ meerschaum/utils/packages/__init__.py,sha256=aByhWPf4H7yilmSkEP4Qa0IXsZv6Aq1l19b40QydvG4,63393
248
249
  meerschaum/utils/packages/_packages.py,sha256=I1tXtYbMlITIVmoJhYQhWtCcmOwvK7iHdbbFrFFBVZg,8094
249
250
  meerschaum/utils/packages/lazy_loader.py,sha256=VHnph3VozH29R4JnSSBfwtA5WKZYZQFT_GeQSShCnuc,2540
250
251
  meerschaum/utils/venv/_Venv.py,sha256=sBnlmxHdAh2bx8btfVoD79-H9-cYsv5lP02IIXkyECs,3553
251
252
  meerschaum/utils/venv/__init__.py,sha256=bLAWnllKDuE_z6bLk7gLh4mI3Sp1j5hsboTqPKOQq84,24361
252
- meerschaum-2.4.0.dev0.dist-info/LICENSE,sha256=jG2zQEdRNt88EgHUWPpXVWmOrOduUQRx7MnYV9YIPaw,11359
253
- meerschaum-2.4.0.dev0.dist-info/METADATA,sha256=CTCFiuL1p4KHbzwgA7EGgqlE2taefHVcoxbwlb1fMSc,24106
254
- meerschaum-2.4.0.dev0.dist-info/NOTICE,sha256=OTA9Fcthjf5BRvWDDIcBC_xfLpeDV-RPZh3M-HQBRtQ,114
255
- meerschaum-2.4.0.dev0.dist-info/WHEEL,sha256=UvcQYKBHoFqaQd6LKyqHw9fxEolWLQnlzP0h_LgJAfI,91
256
- meerschaum-2.4.0.dev0.dist-info/entry_points.txt,sha256=5YBVzibw-0rNA_1VjB16z5GABsOGf-CDhW4yqH8C7Gc,88
257
- meerschaum-2.4.0.dev0.dist-info/top_level.txt,sha256=bNoSiDj0El6buocix-FRoAtJOeq1qOF5rRm2u9i7Q6A,11
258
- meerschaum-2.4.0.dev0.dist-info/zip-safe,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
259
- meerschaum-2.4.0.dev0.dist-info/RECORD,,
253
+ meerschaum-2.4.0rc1.dist-info/LICENSE,sha256=jG2zQEdRNt88EgHUWPpXVWmOrOduUQRx7MnYV9YIPaw,11359
254
+ meerschaum-2.4.0rc1.dist-info/METADATA,sha256=LigtzNpVEbuYxVKd1thzJewA3dQrPVSPIY5b_55NARQ,24104
255
+ meerschaum-2.4.0rc1.dist-info/NOTICE,sha256=OTA9Fcthjf5BRvWDDIcBC_xfLpeDV-RPZh3M-HQBRtQ,114
256
+ meerschaum-2.4.0rc1.dist-info/WHEEL,sha256=cVxcB9AmuTcXqmwrtPhNK88dr7IR_b6qagTj0UvIEbY,91
257
+ meerschaum-2.4.0rc1.dist-info/entry_points.txt,sha256=5YBVzibw-0rNA_1VjB16z5GABsOGf-CDhW4yqH8C7Gc,88
258
+ meerschaum-2.4.0rc1.dist-info/top_level.txt,sha256=bNoSiDj0El6buocix-FRoAtJOeq1qOF5rRm2u9i7Q6A,11
259
+ meerschaum-2.4.0rc1.dist-info/zip-safe,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
260
+ meerschaum-2.4.0rc1.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: setuptools (74.0.0)
2
+ Generator: setuptools (74.1.2)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5
 
@@ -1,255 +0,0 @@
1
- #! /usr/bin/env python
2
- # -*- coding: utf-8 -*-
3
- # vim:fenc=utf-8
4
-
5
- """
6
- Execute actions via the web interface.
7
- """
8
-
9
- from __future__ import annotations
10
- import platform, sys, io, os, shlex, time, copy
11
- from dash.exceptions import PreventUpdate
12
- from meerschaum.utils.threading import Thread
13
- from meerschaum.utils.typing import SuccessTuple, Tuple, Dict, Any, WebState
14
- from meerschaum.utils.packages import attempt_import, import_html, import_dcc
15
- from meerschaum.utils.misc import remove_ansi
16
- from meerschaum.actions import actions, get_shell
17
- from meerschaum.api import debug, CHECK_UPDATE
18
- from meerschaum.api.dash import (
19
- running_jobs, stopped_jobs, running_monitors, stopped_monitors, active_sessions
20
- )
21
- from meerschaum.api import get_api_connector
22
- from meerschaum.api.dash.connectors import get_web_connector
23
- from meerschaum.api.dash.components import alert_from_success_tuple, console_div
24
- from meerschaum.api.dash.webterm import get_webterm
25
- from meerschaum.api.dash.pipes import pipes_from_state, keys_from_state
26
- from meerschaum.api.dash.websockets import ws_send
27
- from meerschaum.api._websockets import websockets
28
- html, dcc = import_html(check_update=CHECK_UPDATE), import_dcc(check_update=CHECK_UPDATE)
29
- from meerschaum.config import get_config
30
- from meerschaum.core import User
31
-
32
- def execute_action(state: WebState):
33
- """
34
- Execute a Meerschaum action and capture its output.
35
- Format the output as an HTML `pre` object, and return a list of Alert objects.
36
-
37
- Parameters
38
- ----------
39
- state: WebState :
40
- The state of the dashboard.
41
-
42
- Returns
43
- -------
44
- A tuple of lists.
45
- The first list contains the children of the output div.
46
- The second contains alerts.
47
-
48
- """
49
- global running_jobs, stopped_jobs, running_monitors, stopped_monitors
50
- action, subaction, subaction_options, subaction_hidden, additional_subaction_text, flags = (
51
- state['action-dropdown.value'],
52
- state['subaction-dropdown.value'],
53
- state['subaction-dropdown.options'],
54
- state['subaction-dropdown-div.hidden'],
55
- state['subaction-dropdown-text.value'],
56
- state['flags-dropdown.value'],
57
- )
58
- if action is None:
59
- return [], []
60
- if subaction is None or subaction_hidden:
61
- subaction = None
62
- ### If the current value is not a member of the options, choose the first element (visible).
63
- elif subaction not in [o['value'] for o in subaction_options]:
64
- subaction = subaction_options[0]['value']
65
- if additional_subaction_text is None:
66
- additional_subaction_text = ''
67
- if flags is None:
68
- flags = []
69
-
70
- ### TODO add direct Input to parse if active_tab is 'text'
71
-
72
- session_id = state['session-store.data'].get('session-id', None)
73
-
74
- ### Check if actions are permitted by non-admin users.
75
- permissions = get_config('system', 'api', 'permissions')
76
- allow_non_admin = permissions.get('actions', {}).get('non_admin', False)
77
- if not allow_non_admin:
78
- username = active_sessions.get(session_id, {}).get('username', None)
79
- user = User(username, instance=get_api_connector())
80
- user_type = get_api_connector().get_user_type(user, debug=debug)
81
- if user_type != 'admin':
82
- msg = (
83
- f"User '{username}' is not authorized to perform actions on this instance.\n\n"
84
- + "To allow non-administrator users to execute actions,\n"
85
- + " run the command `mrsm edit config system`.\n\n"
86
- + "Under the keys `api:permissions:actions`, set the value of \n"
87
- + " `non_admin` to `true`."
88
- )
89
- return (
90
- [
91
- html.Div(
92
- html.Pre(msg, id='console-pre'),
93
- id = 'console-div'
94
- ),
95
- ],
96
- [alert_from_success_tuple(
97
- (False, "Actions are not allowed on this Meerschaum instance.")
98
- )]
99
- )
100
-
101
-
102
- subactions = ([subaction] if subaction else []) + shlex.split(additional_subaction_text)
103
-
104
- keywords = {f : True for f in flags}
105
- keywords['debug'] = keywords.get('debug', debug)
106
- _ck, _mk, _lk, _params = keys_from_state(state, with_params=True)
107
- keywords['connector_keys'], keywords['metric_keys'], keywords['location_keys'] = (
108
- _ck, _mk, _lk,
109
- )
110
- keywords['params'] = _params
111
- keywords['mrsm_instance'] = get_web_connector(state)
112
-
113
- def do_action() -> SuccessTuple:
114
- if sys.stdout is not cap:
115
- stdout = sys.stdout
116
- sys.stdout = cap
117
- try:
118
- success_tuple = actions[action](action=subactions, **keywords)
119
- except Exception as e:
120
- success_tuple = False, str(e)
121
- except KeyboardInterrupt:
122
- success_tuple = False, f"Action '{action}' was manually cancelled."
123
- stopped_jobs[session_id] = running_jobs.pop(session_id)
124
- stopped_monitors[session_id] = running_monitors.pop(session_id)
125
- return success_tuple
126
-
127
- cap = io.StringIO()
128
- _sentinel = object()
129
- def monitor_and_send_stdout():
130
- cap_buffer = ''
131
- while True:
132
- if not (sys.stdout) is cap:
133
- sys.stdout = cap
134
- if session_id not in running_jobs:
135
- text = cap.getvalue()
136
- print('Stopping monitoring and sending final message.', file=sys.stderr)
137
- ws_send(text, session_id)
138
- break
139
- text = cap.getvalue()
140
- if not text or len(text) == len(cap_buffer):
141
- continue
142
- cap_buffer = text
143
- ws_send(text, session_id)
144
- ### So we don't overwhelm the client.
145
- time.sleep(0.01)
146
-
147
- def use_stringio():
148
- try:
149
- LINES, COLUMNS = (
150
- os.environ.get('LINES', str(os.get_terminal_size().lines)),
151
- os.environ.get('COLUMNS', str(os.get_terminal_size().columns)),
152
- )
153
- except OSError:
154
- LINES, COLUMNS = '120', '100'
155
- os.environ['LINES'], os.environ['COLUMNS'] = '120', '100'
156
- stdout = sys.stdout
157
- success_tuple = use_process()
158
- os.environ['LINES'], os.environ['COLUMNS'] = LINES, COLUMNS
159
- text = cap.getvalue()
160
- return text, success_tuple
161
-
162
-
163
- def use_process():
164
- from meerschaum.utils.packages import run_python_package
165
- from meerschaum._internal.arguments._parse_arguments import parse_dict_to_sysargs
166
- max_buffer_size = 10000
167
- line_buffer = ''
168
- def send_line(line: str):
169
- nonlocal line_buffer
170
- line_buffer += line
171
- buff_start_idx = max(len(line_buffer) - max_buffer_size, 0)
172
- line_buffer = line_buffer[buff_start_idx:]
173
- ws_send(line_buffer, session_id)
174
-
175
- def do_process():
176
- keywords['action'] = [action] + subactions
177
- _sysargs = parse_dict_to_sysargs(keywords)
178
-
179
- ### Don't forget to pass the existing environment
180
- ### in case MRSM_CONFIG and MRSM_PATCH are set.
181
- try:
182
- _env = copy.deepcopy(os.environ)
183
- except Exception as e:
184
- _env = {}
185
- _env.update({'LINES': '120', 'COLUMNS': '100'})
186
-
187
- process = run_python_package(
188
- 'meerschaum', _sysargs,
189
- line_callback = send_line,
190
- env = _env,
191
- foreground = False,
192
- universal_newlines = True,
193
- as_proc = True,
194
- capture_output = False,
195
- ### Store the `subprocess.Popen` process in case we need to terminate it later.
196
- store_proc_dict = running_jobs[session_id],
197
- venv = None,
198
- debug = debug,
199
- )
200
- action_thread = Thread(target=do_process)
201
- running_jobs[session_id] = {'parent_thread': action_thread,}
202
- action_thread.start()
203
- return True, "Success"
204
-
205
-
206
- def use_thread():
207
- action_thread = Thread(target=do_action, daemon=True)
208
- monitor_thread = Thread(target=monitor_and_send_stdout)
209
- running_jobs[session_id] = action_thread
210
- running_monitors[session_id] = monitor_thread
211
- monitor_thread.start()
212
- action_thread.start()
213
- success_tuple = True, 'Success'
214
- return success_tuple
215
-
216
- text, success_tuple = use_stringio()
217
-
218
- return (
219
- [
220
- html.Div(
221
- html.Pre(text, id='console-pre'),
222
- id = 'console-div'
223
- ),
224
- ],
225
- [alert_from_success_tuple(success_tuple)]
226
- )
227
-
228
-
229
- def stop_action(state: WebState):
230
- """
231
- Kill a running action.
232
-
233
- Parameters
234
- ----------
235
- state: WebState:
236
- The state of the dashboard.
237
-
238
- Returns
239
- -------
240
- A tuple of children and alerts.
241
- """
242
- global running_jobs
243
- session_id = state['session-store.data'].get('session-id', None)
244
- thread = running_jobs.get(session_id, {}).get('parent_thread', None)
245
- proc = running_jobs.get(session_id, {}).get('child_process', None)
246
- if proc is not None and proc.poll() is None:
247
- proc.terminate()
248
- thread.join()
249
- success_tuple = True, "Success"
250
- webterm_iframe, webterm_alerts = get_webterm(state)
251
- console_to_return = console_div if webterm_alerts else webterm_iframe
252
- return (
253
- [console_to_return],
254
- [alert_from_success_tuple(success_tuple)]
255
- )
File without changes