meerschaum 2.3.0.dev3__py3-none-any.whl → 2.3.0rc2__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 (55) hide show
  1. meerschaum/__init__.py +3 -2
  2. meerschaum/__main__.py +0 -5
  3. meerschaum/_internal/arguments/__init__.py +1 -1
  4. meerschaum/_internal/arguments/_parse_arguments.py +56 -2
  5. meerschaum/_internal/arguments/_parser.py +6 -2
  6. meerschaum/_internal/entry.py +94 -23
  7. meerschaum/_internal/shell/Shell.py +112 -35
  8. meerschaum/actions/attach.py +12 -7
  9. meerschaum/actions/copy.py +68 -41
  10. meerschaum/actions/delete.py +75 -26
  11. meerschaum/actions/edit.py +3 -3
  12. meerschaum/actions/install.py +40 -32
  13. meerschaum/actions/pause.py +44 -27
  14. meerschaum/actions/restart.py +107 -0
  15. meerschaum/actions/show.py +8 -8
  16. meerschaum/actions/start.py +27 -46
  17. meerschaum/actions/stop.py +11 -4
  18. meerschaum/api/_events.py +10 -3
  19. meerschaum/api/dash/jobs.py +69 -70
  20. meerschaum/api/routes/_actions.py +8 -3
  21. meerschaum/api/routes/_jobs.py +37 -19
  22. meerschaum/config/_default.py +1 -1
  23. meerschaum/config/_paths.py +5 -0
  24. meerschaum/config/_version.py +1 -1
  25. meerschaum/config/static/__init__.py +5 -0
  26. meerschaum/connectors/Connector.py +13 -7
  27. meerschaum/connectors/__init__.py +21 -5
  28. meerschaum/connectors/api/APIConnector.py +3 -0
  29. meerschaum/connectors/api/_jobs.py +30 -3
  30. meerschaum/connectors/parse.py +10 -14
  31. meerschaum/core/Pipe/_bootstrap.py +16 -8
  32. meerschaum/jobs/_Executor.py +69 -0
  33. meerschaum/{utils/jobs → jobs}/_Job.py +169 -21
  34. meerschaum/jobs/_LocalExecutor.py +88 -0
  35. meerschaum/jobs/_SystemdExecutor.py +613 -0
  36. meerschaum/jobs/__init__.py +388 -0
  37. meerschaum/plugins/__init__.py +6 -6
  38. meerschaum/utils/daemon/Daemon.py +7 -0
  39. meerschaum/utils/daemon/RotatingFile.py +5 -2
  40. meerschaum/utils/daemon/StdinFile.py +12 -2
  41. meerschaum/utils/daemon/__init__.py +2 -0
  42. meerschaum/utils/formatting/_jobs.py +49 -25
  43. meerschaum/utils/misc.py +23 -5
  44. meerschaum/utils/packages/_packages.py +7 -4
  45. meerschaum/utils/process.py +9 -9
  46. meerschaum/utils/venv/__init__.py +2 -2
  47. {meerschaum-2.3.0.dev3.dist-info → meerschaum-2.3.0rc2.dist-info}/METADATA +14 -17
  48. {meerschaum-2.3.0.dev3.dist-info → meerschaum-2.3.0rc2.dist-info}/RECORD +54 -50
  49. meerschaum/utils/jobs/__init__.py +0 -245
  50. {meerschaum-2.3.0.dev3.dist-info → meerschaum-2.3.0rc2.dist-info}/LICENSE +0 -0
  51. {meerschaum-2.3.0.dev3.dist-info → meerschaum-2.3.0rc2.dist-info}/NOTICE +0 -0
  52. {meerschaum-2.3.0.dev3.dist-info → meerschaum-2.3.0rc2.dist-info}/WHEEL +0 -0
  53. {meerschaum-2.3.0.dev3.dist-info → meerschaum-2.3.0rc2.dist-info}/entry_points.txt +0 -0
  54. {meerschaum-2.3.0.dev3.dist-info → meerschaum-2.3.0rc2.dist-info}/top_level.txt +0 -0
  55. {meerschaum-2.3.0.dev3.dist-info → meerschaum-2.3.0rc2.dist-info}/zip-safe +0 -0
@@ -47,15 +47,17 @@ packages: Dict[str, Dict[str, str]] = {
47
47
  'packaging' : 'packaging>=21.3.0',
48
48
  'prompt_toolkit' : 'prompt-toolkit>=3.0.39',
49
49
  'more_itertools' : 'more-itertools>=8.7.0',
50
- 'daemon' : 'python-daemon>=0.2.3',
51
50
  'fasteners' : 'fasteners>=0.19.0',
52
- 'psutil' : 'psutil>=5.8.0',
53
- 'watchfiles' : 'watchfiles>=0.21.0',
54
- 'dill' : 'dill>=0.3.3',
55
51
  'virtualenv' : 'virtualenv>=20.1.0',
56
52
  'apscheduler' : 'APScheduler>=4.0.0a5',
57
53
  'uv' : 'uv>=0.2.11',
58
54
  },
55
+ 'jobs': {
56
+ 'dill' : 'dill>=0.3.3',
57
+ 'daemon' : 'python-daemon>=0.2.3',
58
+ 'watchfiles' : 'watchfiles>=0.21.0',
59
+ 'psutil' : 'psutil>=5.8.0',
60
+ },
59
61
  'drivers': {
60
62
  'cryptography' : 'cryptography>=38.0.1',
61
63
  'psycopg' : 'psycopg[binary]>=3.2.1',
@@ -156,6 +158,7 @@ packages['api'] = {
156
158
  packages['api'].update(packages['sql'])
157
159
  packages['api'].update(packages['formatting'])
158
160
  packages['api'].update(packages['dash'])
161
+ packages['api'].update(packages['jobs'])
159
162
 
160
163
  all_packages = {}
161
164
  for group, import_names in packages.items():
@@ -20,15 +20,15 @@ def signal_handler(sig, frame):
20
20
  child.wait()
21
21
 
22
22
  def run_process(
23
- *args,
24
- foreground: bool = False,
25
- as_proc: bool = False,
26
- line_callback: Optional[Callable[[bytes], Any]] = None,
27
- store_proc_dict: Optional[Dict[str, Any]] = None,
28
- store_proc_key: str = 'child_process',
29
- capture_output: bool = False,
30
- **kw: Any
31
- ) -> Union[int, subprocess.Popen]:
23
+ *args,
24
+ foreground: bool = False,
25
+ as_proc: bool = False,
26
+ line_callback: Optional[Callable[[bytes], Any]] = None,
27
+ store_proc_dict: Optional[Dict[str, Any]] = None,
28
+ store_proc_key: str = 'child_process',
29
+ capture_output: bool = False,
30
+ **kw: Any
31
+ ) -> Union[int, subprocess.Popen]:
32
32
  """Original foreground solution found here:
33
33
  https://stackoverflow.com/questions/23826695/handling-keyboard-interrupt-when-using-subproccess
34
34
 
@@ -263,8 +263,8 @@ def verify_venv(
263
263
  print(f"Getting python version for {python_path}")
264
264
  proc = run_process(
265
265
  [str(python_path), '-V'],
266
- as_proc = True,
267
- capture_output = True,
266
+ as_proc=True,
267
+ capture_output=True,
268
268
  )
269
269
  stdout, stderr = proc.communicate(timeout=1.0)
270
270
  except Exception as e:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: meerschaum
3
- Version: 2.3.0.dev3
3
+ Version: 2.3.0rc2
4
4
  Summary: Sync Time-Series Pipes with Meerschaum
5
5
  Home-page: https://meerschaum.io
6
6
  Author: Bennett Meares
@@ -73,11 +73,7 @@ Requires-Dist: aiofiles >=0.6.0 ; extra == 'api'
73
73
  Requires-Dist: packaging >=21.3.0 ; extra == 'api'
74
74
  Requires-Dist: prompt-toolkit >=3.0.39 ; extra == 'api'
75
75
  Requires-Dist: more-itertools >=8.7.0 ; extra == 'api'
76
- Requires-Dist: python-daemon >=0.2.3 ; extra == 'api'
77
76
  Requires-Dist: fasteners >=0.19.0 ; extra == 'api'
78
- Requires-Dist: psutil >=5.8.0 ; extra == 'api'
79
- Requires-Dist: watchfiles >=0.21.0 ; extra == 'api'
80
- Requires-Dist: dill >=0.3.3 ; extra == 'api'
81
77
  Requires-Dist: virtualenv >=20.1.0 ; extra == 'api'
82
78
  Requires-Dist: APScheduler >=4.0.0a5 ; extra == 'api'
83
79
  Requires-Dist: uv >=0.2.11 ; extra == 'api'
@@ -97,6 +93,10 @@ Requires-Dist: dash-extensions >=1.0.4 ; extra == 'api'
97
93
  Requires-Dist: dash-daq >=0.5.0 ; extra == 'api'
98
94
  Requires-Dist: terminado >=0.12.1 ; extra == 'api'
99
95
  Requires-Dist: tornado >=6.1.0 ; extra == 'api'
96
+ Requires-Dist: dill >=0.3.3 ; extra == 'api'
97
+ Requires-Dist: python-daemon >=0.2.3 ; extra == 'api'
98
+ Requires-Dist: watchfiles >=0.21.0 ; extra == 'api'
99
+ Requires-Dist: psutil >=5.8.0 ; extra == 'api'
100
100
  Provides-Extra: build
101
101
  Requires-Dist: cx-Freeze >=7.0.0 ; extra == 'build'
102
102
  Requires-Dist: pyinstaller >6.6.0 ; extra == 'build'
@@ -123,11 +123,7 @@ Requires-Dist: aiofiles >=0.6.0 ; extra == 'core'
123
123
  Requires-Dist: packaging >=21.3.0 ; extra == 'core'
124
124
  Requires-Dist: prompt-toolkit >=3.0.39 ; extra == 'core'
125
125
  Requires-Dist: more-itertools >=8.7.0 ; extra == 'core'
126
- Requires-Dist: python-daemon >=0.2.3 ; extra == 'core'
127
126
  Requires-Dist: fasteners >=0.19.0 ; extra == 'core'
128
- Requires-Dist: psutil >=5.8.0 ; extra == 'core'
129
- Requires-Dist: watchfiles >=0.21.0 ; extra == 'core'
130
- Requires-Dist: dill >=0.3.3 ; extra == 'core'
131
127
  Requires-Dist: virtualenv >=20.1.0 ; extra == 'core'
132
128
  Requires-Dist: APScheduler >=4.0.0a5 ; extra == 'core'
133
129
  Requires-Dist: uv >=0.2.11 ; extra == 'core'
@@ -210,14 +206,14 @@ Requires-Dist: aiofiles >=0.6.0 ; extra == 'full'
210
206
  Requires-Dist: packaging >=21.3.0 ; extra == 'full'
211
207
  Requires-Dist: prompt-toolkit >=3.0.39 ; extra == 'full'
212
208
  Requires-Dist: more-itertools >=8.7.0 ; extra == 'full'
213
- Requires-Dist: python-daemon >=0.2.3 ; extra == 'full'
214
209
  Requires-Dist: fasteners >=0.19.0 ; extra == 'full'
215
- Requires-Dist: psutil >=5.8.0 ; extra == 'full'
216
- Requires-Dist: watchfiles >=0.21.0 ; extra == 'full'
217
- Requires-Dist: dill >=0.3.3 ; extra == 'full'
218
210
  Requires-Dist: virtualenv >=20.1.0 ; extra == 'full'
219
211
  Requires-Dist: APScheduler >=4.0.0a5 ; extra == 'full'
220
212
  Requires-Dist: uv >=0.2.11 ; extra == 'full'
213
+ Requires-Dist: dill >=0.3.3 ; extra == 'full'
214
+ Requires-Dist: python-daemon >=0.2.3 ; extra == 'full'
215
+ Requires-Dist: watchfiles >=0.21.0 ; extra == 'full'
216
+ Requires-Dist: psutil >=5.8.0 ; extra == 'full'
221
217
  Requires-Dist: cryptography >=38.0.1 ; extra == 'full'
222
218
  Requires-Dist: psycopg[binary] >=3.2.1 ; extra == 'full'
223
219
  Requires-Dist: PyMySQL >=0.9.0 ; extra == 'full'
@@ -258,6 +254,11 @@ Provides-Extra: gui
258
254
  Requires-Dist: toga >=0.3.0-dev29 ; extra == 'gui'
259
255
  Requires-Dist: pywebview >=3.6.3 ; extra == 'gui'
260
256
  Requires-Dist: pycparser >=2.21.0 ; extra == 'gui'
257
+ Provides-Extra: jobs
258
+ Requires-Dist: dill >=0.3.3 ; extra == 'jobs'
259
+ Requires-Dist: python-daemon >=0.2.3 ; extra == 'jobs'
260
+ Requires-Dist: watchfiles >=0.21.0 ; extra == 'jobs'
261
+ Requires-Dist: psutil >=5.8.0 ; extra == 'jobs'
261
262
  Provides-Extra: minimal
262
263
  Provides-Extra: required
263
264
  Provides-Extra: setup
@@ -295,11 +296,7 @@ Requires-Dist: aiofiles >=0.6.0 ; extra == 'sql'
295
296
  Requires-Dist: packaging >=21.3.0 ; extra == 'sql'
296
297
  Requires-Dist: prompt-toolkit >=3.0.39 ; extra == 'sql'
297
298
  Requires-Dist: more-itertools >=8.7.0 ; extra == 'sql'
298
- Requires-Dist: python-daemon >=0.2.3 ; extra == 'sql'
299
299
  Requires-Dist: fasteners >=0.19.0 ; extra == 'sql'
300
- Requires-Dist: psutil >=5.8.0 ; extra == 'sql'
301
- Requires-Dist: watchfiles >=0.21.0 ; extra == 'sql'
302
- Requires-Dist: dill >=0.3.3 ; extra == 'sql'
303
300
  Requires-Dist: virtualenv >=20.1.0 ; extra == 'sql'
304
301
  Requires-Dist: APScheduler >=4.0.0a5 ; extra == 'sql'
305
302
  Requires-Dist: uv >=0.2.11 ; extra == 'sql'
@@ -1,10 +1,10 @@
1
- meerschaum/__init__.py,sha256=XhFLXXw1EmoFxiTMDXuNYLb6Bpzg3-V3CmvjSHDLQPk,1694
2
- meerschaum/__main__.py,sha256=-xIXokhJ5vV784zDBF4engE3J1nj3LDHlLIRYMQ5nXY,2883
1
+ meerschaum/__init__.py,sha256=rzLJwaiLJvc_VAOjUM6pzKlm-w8NhHrOCH99Ob1vrjY,1736
2
+ meerschaum/__main__.py,sha256=r5UjYxH1WA6dGG9YGBPul5xOdgF3Iwl0X4dWDtXU-30,2646
3
3
  meerschaum/_internal/__init__.py,sha256=ilC7utfKtin7GAvuN34fKyUQYfPyqH0Mm3MJF5iyEf4,169
4
- meerschaum/_internal/entry.py,sha256=4zHxcNFffxNUVVwYCjWMupG9CFeY78rKKsRfbmCPRVc,6228
5
- meerschaum/_internal/arguments/__init__.py,sha256=HFciFQgo2ZOT19Mo6CpLhPYlpLYh2sNn1C9Lo7NMADc,519
6
- meerschaum/_internal/arguments/_parse_arguments.py,sha256=EJfxtQJcoc0DBTTUHLTbC1cwe_K_WAiNOXMLEXGQ7vE,10708
7
- meerschaum/_internal/arguments/_parser.py,sha256=vRqs7NuDSC0EDkmaDLwyTi4XDjAQOhon1lIEZjjtiEQ,14842
4
+ meerschaum/_internal/entry.py,sha256=D5w3j7w_pWlxfhh-vr1Ao7fzfIIEhUtXc_UTVpy-6GQ,9001
5
+ meerschaum/_internal/arguments/__init__.py,sha256=lZ6YJM5buApdEOOJz61gRdpv1ICbifbiepArBT8hztQ,542
6
+ meerschaum/_internal/arguments/_parse_arguments.py,sha256=Xf5KoHEd3LDSomyXmTb0Kr8cb60AGfCZcGPVsRcq7Kc,12374
7
+ meerschaum/_internal/arguments/_parser.py,sha256=7vjKEuevFNE48idGz1Jj5dps1-Wq462iXDsOLQfiYcQ,14998
8
8
  meerschaum/_internal/docs/__init__.py,sha256=ZQYHWo6n0kfLLkyG36YXqTYvv2Pc7it5HZHMylT6cBA,126
9
9
  meerschaum/_internal/docs/index.py,sha256=Qovl1fI-KqCz7KtxCIWklqUGUcJ8Sbx4UKAEarrUn_A,18056
10
10
  meerschaum/_internal/gui/__init__.py,sha256=KF6Opae0aBOjIndMZ2txoPs7ozCXRlR-lcTsicLO7fc,1313
@@ -12,7 +12,7 @@ meerschaum/_internal/gui/app/__init__.py,sha256=rKUa8hHk6Fai-PDF61tQcpT1myxKcfmv
12
12
  meerschaum/_internal/gui/app/_windows.py,sha256=-VHdjTzA3V596fVqnbmTxemONSp_80-sTNJ0CTB8FwU,2632
13
13
  meerschaum/_internal/gui/app/actions.py,sha256=rx37qXf3uoa7Ou0n1cISqNFZNL0nr4wO7vSUmWO8f2E,935
14
14
  meerschaum/_internal/gui/app/pipes.py,sha256=4nAQ0rrHb_2bNgDF0Ru2YlbPaCDDzAl5beOGU4Af-4A,1596
15
- meerschaum/_internal/shell/Shell.py,sha256=sODcF8Z2yXRQv8AkEAOR3Iq_hIYv_tXERALCJ9S_Rgc,36693
15
+ meerschaum/_internal/shell/Shell.py,sha256=l6_WDD55H_KcH1auqTgadHSyWBpKnJ2FnanYapGXh5k,39437
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
@@ -23,28 +23,29 @@ meerschaum/_internal/term/__init__.py,sha256=eXjfRzpnASWomB4xpY2AfzC_CLenkInNnVW
23
23
  meerschaum/_internal/term/tools.py,sha256=dXVAimKD-Yv2fg2WOTr0YGBY7XDKjQqw-RizcS65YVI,727
24
24
  meerschaum/actions/__init__.py,sha256=A-xwztWrq9xL_FbiBcoNB9-WKfwzYlFerh4XFl-Ao5c,11515
25
25
  meerschaum/actions/api.py,sha256=8wjREHNRkl8WBgtz1KfWmAVjeFR_J2j7ghXjSyYUW3g,12603
26
- meerschaum/actions/attach.py,sha256=oH0OLCMe0ki00VM7l6fPuDzRRbRSYKlnT2NJ-w0jJ-M,2837
26
+ meerschaum/actions/attach.py,sha256=UV19d9W_2WYcrf7BRz7k3mriDoX1V4rA4AKvbLdor0o,3106
27
27
  meerschaum/actions/bootstrap.py,sha256=9D3cBHzgZbZyWy-Y7iQgk9bpTbKEhumFKbIIThZgPXI,14058
28
28
  meerschaum/actions/clear.py,sha256=OoFZE0bK5m8s3GLNZcixuVT0DMj1izXVxGCATcmUGbI,4851
29
- meerschaum/actions/copy.py,sha256=8g3ANXfVdvuyaoXcZjgTg3BxHTOhHGrzVDOOsTBrpSU,6213
29
+ meerschaum/actions/copy.py,sha256=hLRc81oVBjnV22lpeSDb-HsDX2on9K2u6C1H8qJITNQ,6844
30
30
  meerschaum/actions/deduplicate.py,sha256=puYyxeFYEUy1Sd2IOcZB2e6MrNxAZl2bTLmNzFDkCiw,1167
31
- meerschaum/actions/delete.py,sha256=8uNx8WVLo2ym1Kc-lMVUhNN7lDijWAGqGQjUJj_gnPk,17507
31
+ meerschaum/actions/delete.py,sha256=GRokg2NRzlow2UMYXNs9xwBu-9AuJdK6kAxsxgwp-E0,18823
32
32
  meerschaum/actions/drop.py,sha256=Hd5h4rrWd7qL2rTqglsTonUsEoH7qQlsfqNFSHGeqr0,2453
33
- meerschaum/actions/edit.py,sha256=93_mlZhPfiErs9TJ3_Xf9KYxIopaR86nQXJlZsKNNok,11752
34
- meerschaum/actions/install.py,sha256=akzzgsvy5yqUFuUqzSMG4eBKARY2iSnL3n_BiaNcM58,7431
33
+ meerschaum/actions/edit.py,sha256=6d1Y8Ejd4zQWVARvx04cvbGyRA2r4ihJXWqMFiFX0aM,11740
34
+ meerschaum/actions/install.py,sha256=jdhOrR_KlvinTKr0YJNkUHsnh5EY6OzA7cRq0Vnp1oU,7494
35
35
  meerschaum/actions/login.py,sha256=fNgsgkrFCn9wBQJY50SQhz2PwsN_TvEYYHnXK3JG4ig,4206
36
36
  meerschaum/actions/os.py,sha256=dtoppoBhLzW3rLNF0SFovEfNxA4WJWt_9WrOGlS5KbA,2251
37
- meerschaum/actions/pause.py,sha256=kDK0UMm90TuohFEG5Gugl3PEbuqGua-ghidqvgYShoc,3909
37
+ meerschaum/actions/pause.py,sha256=WI4dQFfjQ6ObWKUzwQ5FrtYPDyEcnxWwval8cSIzzJw,4221
38
38
  meerschaum/actions/python.py,sha256=aoSaDSIQ-wJixexFDtsxBMqITktba3DLkJNFIra_6qk,4546
39
39
  meerschaum/actions/register.py,sha256=bOQY0AlZlchsxPF27LL7G1OgdiCyj7mkBaD-PO6bFZc,14491
40
40
  meerschaum/actions/reload.py,sha256=gMXeFBGVfyQ7uhKhYf6bLaDMD0fLPcA9BrLBSiuvWIc,508
41
+ meerschaum/actions/restart.py,sha256=6GcIVfyDnNckM54khf66FxTfEo0babikccKvN7tEPq4,2923
41
42
  meerschaum/actions/setup.py,sha256=KkAGWcgwzl_L6A19fTmTX1KtBjW2FwD8QenLjPy0mQQ,3205
42
43
  meerschaum/actions/sh.py,sha256=fLfTJaacKu4sjLTRqEzzYlT2WbbdZBEczsKb6F-qAek,2026
43
- meerschaum/actions/show.py,sha256=kPKKKvfM_orc9wqkIDU3Nq9Hy-vOYnu3Nne7XuyigGg,28165
44
+ meerschaum/actions/show.py,sha256=JAyDWFUVDoRY--ehFEsrso7vrj_wdoxgqL6z-bIF6os,28158
44
45
  meerschaum/actions/sql.py,sha256=wYofwk1vGO96U2ncigGEfMtYMZeprz2FR1PRRZhkAPI,4311
45
46
  meerschaum/actions/stack.py,sha256=7ODAxzmCx8i9AHxvkbr5ZtzUNPpY-iqlSVo4rZHMOw4,5900
46
- meerschaum/actions/start.py,sha256=CHOQRkhUEDW65Vlr6wlzUZOkHhAOX0g5-YIwl1vRod8,18105
47
- meerschaum/actions/stop.py,sha256=HM_oCMlQWARXa3kh60SdxvUHWTJV42R9B8VBUmXCE9U,4472
47
+ meerschaum/actions/start.py,sha256=e0Ca01VRSu5BQDMec8C9A6c9yfSX6LpIkCTecxa1u8Q,17489
48
+ meerschaum/actions/stop.py,sha256=5fdUw70YN-yuUWrC-NhA88cxr9FZ5NbssbQ8xXO8nFU,4632
48
49
  meerschaum/actions/sync.py,sha256=AkH-1O5bkUC-UElQGr0lRhrX-z18ZY2nBPSy9EsW1Kc,17506
49
50
  meerschaum/actions/tag.py,sha256=SJf5qFW0ccLXjqlTdkK_0MCcrCMdg6xhYrhKdco0hdA,3053
50
51
  meerschaum/actions/uninstall.py,sha256=tBXhdXggSieGEQe4EPGxpgMK0MZTJCweNvAJ9-59El0,5776
@@ -52,7 +53,7 @@ meerschaum/actions/upgrade.py,sha256=uhFhAPmguGDgxLa1UkVZnPQ-JRcbmOdExE38v-HrLvo
52
53
  meerschaum/actions/verify.py,sha256=tY5slGpHiWiE0v9TDnjbmxSKn86zBnu9WBpixUgKNQU,4885
53
54
  meerschaum/api/__init__.py,sha256=tjxyG8SQR_ymYuj3YUaadlguXBj-edL4kY_CxWYrYHk,7449
54
55
  meerschaum/api/_chain.py,sha256=h8-WXUGXX6AqzdALfsBC5uv0FkAcLdHJXCGzqzuq89k,875
55
- meerschaum/api/_events.py,sha256=RSFltHHIZP52qBSQGwyrPwZUmhvKSv2NBd78wcrCWPw,2020
56
+ meerschaum/api/_events.py,sha256=oiF2iT79UfdEJh4YnGdKtjXbdnQVergUlXAXm2nePlY,2176
56
57
  meerschaum/api/_oauth2.py,sha256=SDdFbssy-9QoFBkuZZmep7mCX7jsn_zjqCbMXiksEVg,1647
57
58
  meerschaum/api/_websockets.py,sha256=Rso85r4Yj8yUB-Oh8T8bGBvO5vCzZboryOjY-VnxdZQ,1601
58
59
  meerschaum/api/dash/__init__.py,sha256=NkqnUP77c02J6sjWp5PGw48Hz9Dhov7gBO5f2mK2b40,2198
@@ -60,7 +61,7 @@ meerschaum/api/dash/actions.py,sha256=eUClPPdNVNSCtyq8Ecr1saasxj5VBgd1gcXejvQxXE
60
61
  meerschaum/api/dash/components.py,sha256=oGX7HFzNCi37iMww747iL3bbB52ZTt9tFa2iLohffg4,6399
61
62
  meerschaum/api/dash/connectors.py,sha256=nJxBOFldtCMJLYjUSVYZwX5BO-LNjTNHgoEaXe-0XMo,843
62
63
  meerschaum/api/dash/graphs.py,sha256=wJUDWzcLN8-C3xko6rj0F2v7Rt8YDkSXoVkkXJjYGIk,2046
63
- meerschaum/api/dash/jobs.py,sha256=auCN0EKSX-Xiuhz2n4D80gv1MtCzHyhTFy2Pwp8URxA,7628
64
+ meerschaum/api/dash/jobs.py,sha256=Y3XM7aG_hWQsQLoQfgUVlH5V2vNGA6qkfN0OX6sX04g,7302
64
65
  meerschaum/api/dash/keys.py,sha256=hzEVeN60SAfVTVSO5lajGaykxRIKGhj9Ph00HRJnNoE,12598
65
66
  meerschaum/api/dash/pipes.py,sha256=RVVYIJJy4G01cXou9OT8Gr5ZsygQ_GUqJDDhU1akhi8,20615
66
67
  meerschaum/api/dash/plugins.py,sha256=JiQjeeCT21MoPDo81pkTXw9viqIH6xpivQgZEO4qtzQ,3676
@@ -114,10 +115,10 @@ meerschaum/api/resources/templates/old_index.html,sha256=BDeOlcXhSsBH3-NaRtuX4Z1
114
115
  meerschaum/api/resources/templates/secret.html,sha256=0QWkm4ZoN81Aw1pd2-62rGCvx3nXPHfFUoegj3Iy8Ls,141
115
116
  meerschaum/api/resources/templates/termpage.html,sha256=qspXRuOkzqOn2mXw9mmUldzsvOHq_LyaywQ29CUevp0,4527
116
117
  meerschaum/api/routes/__init__.py,sha256=jbkeFNl51Tg8aT5gWe560ZLZLojFJsLMe5IENRjRkb0,606
117
- meerschaum/api/routes/_actions.py,sha256=uZCf6HdSxixEJ2S2YJhzU8zx1E5mmKXPsVHN8xJW-z4,4400
118
+ meerschaum/api/routes/_actions.py,sha256=glmLj2CzZvrwKKyJwuBzYLvzs1hwzh8vo-9Hcy82yeE,4511
118
119
  meerschaum/api/routes/_connectors.py,sha256=NNbcn5xWhKqw2PqueSEaqRaZ95hFGDKazG5lE7gsssc,1849
119
120
  meerschaum/api/routes/_index.py,sha256=QI6CBo6pI2Zi0a6fJHDjZfiLa9f4okb0BGe3A_JD0kM,578
120
- meerschaum/api/routes/_jobs.py,sha256=rh20XU6JTE0OUpHSmzO8G6eqETW10QSnWvKNW07nyvs,9545
121
+ meerschaum/api/routes/_jobs.py,sha256=0G7IhQpRenFJ9OSKo25lqCuJonNzK_q-XMXSD_pjdv0,10515
121
122
  meerschaum/api/routes/_login.py,sha256=psPKmFkXgYVX83NepqwIhaLsQ5uWgOc4F2QZtPGxY1A,2482
122
123
  meerschaum/api/routes/_misc.py,sha256=05--9ZVFeaCgZrHER2kA3SYdK4TyfkEXOCjLvPbum-w,2469
123
124
  meerschaum/api/routes/_pipes.py,sha256=1gBuE4E-QvIK_kmbmiw7uLcXjnIobFI1t4tb2skpp6E,21592
@@ -128,18 +129,18 @@ meerschaum/api/routes/_webterm.py,sha256=7eilgDXckpEc2LyeNmJS5YO6HxlyMkwPnAMWd7e
128
129
  meerschaum/api/tables/__init__.py,sha256=e2aNC0CdlWICTUMx1i9RauF8Pm426J0RZJbsJWv4SWo,482
129
130
  meerschaum/config/__init__.py,sha256=jZgQSjvbOWyvGouqRgIeYBg9Pp343_9CDsCWWpwYDGY,11577
130
131
  meerschaum/config/_dash.py,sha256=BJHl4xMrQB-YHUEU7ldEW8q_nOPoIRSOqLrfGElc6Dw,187
131
- meerschaum/config/_default.py,sha256=vnUBmP2LYBVba1KWhboUid4-W0qHeG2GPjmrXN3yFzc,5308
132
+ meerschaum/config/_default.py,sha256=8ryAQV9yYkpIZaVYe9W7dm5c-WAu_lX1jSKGLLo4FtQ,5311
132
133
  meerschaum/config/_edit.py,sha256=_kabgFbJdI5kcLs-JIsoaTo0JdyxnPnBdrlTyTAgPm8,8236
133
134
  meerschaum/config/_environment.py,sha256=Vv4DLDfc2vKLbCLsMvkQDj77K4kEvHKEBmUBo-wCrgo,4419
134
135
  meerschaum/config/_formatting.py,sha256=OMuqS1EWOsj_34wSs2tOqGIWci3bTMIZ5l-uelZgsIM,6672
135
136
  meerschaum/config/_jobs.py,sha256=2bEikO48qVSguFS3lrbWz6uiKt_0b3oSRWhwyz8RRDM,1279
136
137
  meerschaum/config/_patch.py,sha256=21N30q1ANmWMDQ-2RUjpMx7KafWfPQ3lKx9rrMqg1s4,1526
137
- meerschaum/config/_paths.py,sha256=Tfet05CY4OsIwumZO98h-L1Jy8_DH_OQ-0M1UBp83tk,9365
138
+ meerschaum/config/_paths.py,sha256=d6CKJfMmc9JrAW0E9Kpyy6bKQiB6yeHqZx91-cxKJIQ,9677
138
139
  meerschaum/config/_preprocess.py,sha256=-AEA8m_--KivZwTQ1sWN6LTn5sio_fUr2XZ51BO6wLs,1220
139
140
  meerschaum/config/_read_config.py,sha256=WFZKIXZMDe_ca0ES7ivgM_mnwShvFxLdoeisT_X5-h0,14720
140
141
  meerschaum/config/_shell.py,sha256=46_m49Txc5q1rGfCgO49ca48BODx45DQJi8D0zz1R18,4245
141
142
  meerschaum/config/_sync.py,sha256=oK2ZujO2T1he08BXCFyiniBUevNGWSQKXLcS_jRv_7Y,4155
142
- meerschaum/config/_version.py,sha256=RWnwyq5Sie04gEBTdVX8F09ia8uQfTEBjVp7fIsT_1c,76
143
+ meerschaum/config/_version.py,sha256=bfQh2_v-HpBVdlfw2zoIhMos9XaCBgtxmAFNwHxb3HM,74
143
144
  meerschaum/config/paths.py,sha256=JjibeGN3YAdSNceRwsd42aNmeUrIgM6ndzC8qZAmNI0,621
144
145
  meerschaum/config/resources/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
145
146
  meerschaum/config/stack/__init__.py,sha256=Yt7GNzC_hz7iUDZ4gVho_lugJO2DnXgnMtsMG_ReoRg,9114
@@ -147,16 +148,16 @@ meerschaum/config/stack/grafana/__init__.py,sha256=LNXQw2FvHKrD68RDhqDmi2wJjAHaK
147
148
  meerschaum/config/stack/mosquitto/__init__.py,sha256=-OwOjq8KiBoSH_pmgCAAF3Dp3CRD4KgAEdimZSadROs,186
148
149
  meerschaum/config/stack/mosquitto/resources/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
149
150
  meerschaum/config/stack/resources/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
150
- meerschaum/config/static/__init__.py,sha256=ckRqGYD6xnIzWqSyPeKGVPgNCnNAIOvUGRlQLYnBpc0,4818
151
- meerschaum/connectors/Connector.py,sha256=sa95S2upqaMpwZoVm3SwDovUoMM5JiWD6qg6QT4jxdA,6476
152
- meerschaum/connectors/__init__.py,sha256=jo6X4AdhB2BXKIsoqHOqWtNqMaqLa_EqwopPNVE4vkc,12147
153
- meerschaum/connectors/parse.py,sha256=F2RLb6U7lW0BGDxSHcXdCDf5g4RibKFjX8jOAcfYvFU,4451
151
+ meerschaum/config/static/__init__.py,sha256=CvyWdb4B97PFjtNQx0mcz7g-kSbmDElipULUaKYav7k,5052
152
+ meerschaum/connectors/Connector.py,sha256=utNV3Fy5DhUVbQE-vtm7enH5rH2gxQERmgmP7PUzH30,6682
153
+ meerschaum/connectors/__init__.py,sha256=b1RdpMUNWtA5Q4KbymeUt9HtEiMWUHf0BBXzcl4itkc,12557
154
+ meerschaum/connectors/parse.py,sha256=sDeI2OIS9Inwhbn9jkFAXxOPnmmAHqsuHiiHfWjVnSA,4307
154
155
  meerschaum/connectors/poll.py,sha256=gIY9TvFBqMvMNQvR0O2No7koLLz2PjfExBr_Dsosgpg,7363
155
- meerschaum/connectors/api/APIConnector.py,sha256=CRPrlarB3QccY2sm7D1J-tZTfLcvP3BENwDE_skWKU0,4864
156
+ meerschaum/connectors/api/APIConnector.py,sha256=xe1Bsbnh5PBNR2r5yr6iqJ1UozEKXWJBZnUU0qdXC7c,4934
156
157
  meerschaum/connectors/api/__init__.py,sha256=JwKrGtuE5aOd2VnsRwudFBYyBf5IxczOwPVdNvCUgSQ,205
157
158
  meerschaum/connectors/api/_actions.py,sha256=KS2Ib5_yHuN0Fw86wyg0bXORV2xY4m3DQrBtcqIIjnY,2343
158
159
  meerschaum/connectors/api/_fetch.py,sha256=Khq9AFr1nk8Dsmcedb77aWhAuHw0JGgVeahDG95Q5MQ,2072
159
- meerschaum/connectors/api/_jobs.py,sha256=-8m-MRfpuldLmo4_ZSaJx-F5ok1kdYMq4c_QkubMaUc,9848
160
+ meerschaum/connectors/api/_jobs.py,sha256=sieFAgk38PdyAnCbgzA-gOWdGK1gyzLhxbapxr4Hg04,10696
160
161
  meerschaum/connectors/api/_login.py,sha256=5GsD-B214vr5EYfM3XrTUs1sTFApxZA-9dNxq8oNSyg,2050
161
162
  meerschaum/connectors/api/_misc.py,sha256=OZRZBYOokKIEjmQaR8jUYgu6ZRn9VzXBChzR8CfDv_w,1092
162
163
  meerschaum/connectors/api/_pipes.py,sha256=wf-_jqFBiTNw2s2msp0Ye6IyTl5JWiyC9aLBI0PQuPs,20962
@@ -183,7 +184,7 @@ meerschaum/connectors/sql/tables/types.py,sha256=Jc_MTHIBM-KHpQt__Lckp39CeOo7tGO
183
184
  meerschaum/core/__init__.py,sha256=tjASW10n9uLV6bYhcwP4rggh-ESXSJzgxpSBbVsuISs,251
184
185
  meerschaum/core/Pipe/__init__.py,sha256=7GnDY9FnGOTbVROGrWKdt4eZiCbk-f2UFg-U5L_738A,16598
185
186
  meerschaum/core/Pipe/_attributes.py,sha256=XbSHfDsomaNymzf7-__UhbHqu6mlTTx20xprsw_L04I,13202
186
- meerschaum/core/Pipe/_bootstrap.py,sha256=sTbHUX8V0Kfn6vEErXzsVslSjQNfQ5MxXxxuRYslr4w,7613
187
+ meerschaum/core/Pipe/_bootstrap.py,sha256=evyi07kkzAVMj66HfZkbYdcWk_oHUDsl6f13EnSPMYs,7723
187
188
  meerschaum/core/Pipe/_clear.py,sha256=hQVPztHiadzLB0c4_yFg6EETnf9MtFdJDCpO41Giuco,2261
188
189
  meerschaum/core/Pipe/_data.py,sha256=Ese54Qointav0M-bmIx5NrJIbIrFCb2hQvPEAfxRBAk,20922
189
190
  meerschaum/core/Pipe/_deduplicate.py,sha256=E3oXu6-0vZhzacv0GHri9yHd7XrSlIStZ--KE2EqeVM,10274
@@ -199,18 +200,23 @@ meerschaum/core/Pipe/_verify.py,sha256=KSnthUzImRLjt9fxyBaLvArqDuOLRpKBfk0tnseJC
199
200
  meerschaum/core/Plugin/__init__.py,sha256=UXg64EvJPgI1PCxkY_KM02-ZmBm4FZpLPIQR_uSJJDc,137
200
201
  meerschaum/core/User/_User.py,sha256=CApB7Y0QJL6S9QOCCfrG4SbPuPXJ9AsAYQ5pASMP_Aw,6527
201
202
  meerschaum/core/User/__init__.py,sha256=lJ7beIZTG9sO4dAi3367fFBl17dXYEWHKi7HoaPlDyk,193
203
+ meerschaum/jobs/_Executor.py,sha256=ZUsQl0hgU0HW_F9bQCfm8KwrdyTBLCrfxsSnbJOwtWI,1575
204
+ meerschaum/jobs/_Job.py,sha256=a0bND2kun57FZk8lthO7J6SQseVpkGhn7hmCo0_am-E,28759
205
+ meerschaum/jobs/_LocalExecutor.py,sha256=v_zvU1vgJDy-iiztXS5gnMayJ0UZnW48qJj3OSB6o-k,2195
206
+ meerschaum/jobs/_SystemdExecutor.py,sha256=Us3MH3KmAJxjLJPJPmegBlZy8HExgRIylNPb7Wro-qk,20933
207
+ meerschaum/jobs/__init__.py,sha256=Lhox8AboqyKmRyq13elSHq85rSDEuz0AQkoFW3PVzr8,10662
202
208
  meerschaum/plugins/_Plugin.py,sha256=q1B4gVAO2BGA-PIR0HI3-O9q1n8BaT7tSANIyW7gUPg,34084
203
- meerschaum/plugins/__init__.py,sha256=eo4evfzcZYzVVF29SUSuwAY6T-pDWOHlv5bgP4UpQd4,26176
209
+ meerschaum/plugins/__init__.py,sha256=3Hg9yyfkN0TxPPTnlt6pi53znjRIAR92WpG3zEKYm10,26152
204
210
  meerschaum/plugins/bootstrap.py,sha256=qg9MQ1YAU8ShwGqWDl38WjiXLIxDPl95pSIGDLN9rOw,11423
205
211
  meerschaum/utils/__init__.py,sha256=QrK1K9hIbPCRCM5k2nZGFqGnrqhA0Eh-iSmCU7FG6Cs,612
206
212
  meerschaum/utils/_get_pipes.py,sha256=dlPckpYYyM0IwRZ2VL0u9DiEeYhr5Ho9gkzvWxzNVwI,11460
207
213
  meerschaum/utils/dataframe.py,sha256=asZ2PMWVp7Gyh5RsJDCyW2E0RY7_5e8PAvV4Tr9ezKw,32056
208
214
  meerschaum/utils/debug.py,sha256=GyIzJmunkoPnOcZNYVQdT4Sgd-aOb5MI2VbIgATOjIQ,3695
209
215
  meerschaum/utils/interactive.py,sha256=t-6jWozXSqL7lYGDHuwiOjTgr-UKhdcg61q_eR5mikI,3196
210
- meerschaum/utils/misc.py,sha256=0x9_BGZFRMczPYDQtpUtMD401Ft9bTRa8hk9YqPwT30,45920
216
+ meerschaum/utils/misc.py,sha256=2f0wLQ0ymdOh5-5iP-jlyUxSUStvQAn5ot5_0GZTg-8,46381
211
217
  meerschaum/utils/networking.py,sha256=Sr_eYUGW8_UV9-k9LqRFf7xLtbUcsDucODyLCRsFRUc,1006
212
218
  meerschaum/utils/pool.py,sha256=vkE42af4fjrTEJTxf6Ek3xGucm1MtEkpsSEiaVzNKHs,2655
213
- meerschaum/utils/process.py,sha256=UyiNszYXdnjF6WN8Tt0NchWjkCV10MbOXEFn_TAhXeg,7510
219
+ meerschaum/utils/process.py,sha256=o7UtTQX87YGkg2dItPhlvN7gNQPkElXTYSzKf5Ro8Uc,7474
214
220
  meerschaum/utils/prompt.py,sha256=JCM36APVEJ6hN-ncQOD2qXtbyVlIey5OhhyWSIdRs9k,19008
215
221
  meerschaum/utils/schedule.py,sha256=WSJ0eDGvCVxkQwbUc_7vNm0uuKf9WJcY2NCZZdbnZrk,10837
216
222
  meerschaum/utils/sql.py,sha256=4sCNEpgUd6uFz6ySs4nnUMVaOT0YAvPM1ZlQYJTSF-0,46656
@@ -218,31 +224,29 @@ meerschaum/utils/threading.py,sha256=3N8JXPAnwqJiSjuQcbbJg3Rv9-CCUMJpeQRfKFR7MaA
218
224
  meerschaum/utils/typing.py,sha256=U3MC347sh1umpa3Xr1k71eADyDmk4LB6TnVCpq8dVzI,2830
219
225
  meerschaum/utils/warnings.py,sha256=IDiwYspsfjIi1gtk3V9cSo9vNLckB9bCsHhRClpPJTc,6639
220
226
  meerschaum/utils/yaml.py,sha256=Da9ZtNdT8f68sqz6g4eLQM3jz8QQ2J9_FglX-fw5VXY,3901
221
- meerschaum/utils/daemon/Daemon.py,sha256=WUMd8VghGic_-x23M9yoioA32rbuELQedz5sp5AHwVo,40996
227
+ meerschaum/utils/daemon/Daemon.py,sha256=mQG-bJNvATM0TDxyZVvXkQ1X3H9NZb3hlg3wEUB75bs,41274
222
228
  meerschaum/utils/daemon/FileDescriptorInterceptor.py,sha256=MJKMO0Syf3d8yWUs6xXcQzg8Ptsuvh2aCRRoglOjusA,5257
223
- meerschaum/utils/daemon/RotatingFile.py,sha256=qa0V53uocyayUk2Nj0A72hNIHueT6UoaVhkj59V2d1s,24220
224
- meerschaum/utils/daemon/StdinFile.py,sha256=ZB3PefiU5h61B3PryjB99-JmGlI0hDnXWutbTpnXyHw,2928
225
- meerschaum/utils/daemon/__init__.py,sha256=u9qT5mB0mv2jcaqWkhmFCubiU62JRWb0kLVrveOr39c,8632
229
+ meerschaum/utils/daemon/RotatingFile.py,sha256=ePm_svjwyFDWh6V1k-bp1RHXCSWlyxDtlFu4SU4XvPU,24369
230
+ meerschaum/utils/daemon/StdinFile.py,sha256=CECjb40If-TKTXwj_3nFkUfY2xTrrIx73M32mcn5hS8,3172
231
+ meerschaum/utils/daemon/__init__.py,sha256=o9jWb4lRTIyny4EPt7fPXFgV_vIf1mUofsTwoE1ZecA,8751
226
232
  meerschaum/utils/daemon/_names.py,sha256=Prf7xA2GWDbKR_9Xq9_5RTTIf9GNWY3Yt0s4tEU3JgM,4330
227
233
  meerschaum/utils/dtypes/__init__.py,sha256=JR9PViJTzhukZhq0QoPIs73HOnXZZr8OmfhAAD4OAUA,6261
228
234
  meerschaum/utils/dtypes/sql.py,sha256=IkEOyB63je-rCLHM6WwFzGbCerYk1zobL1cXkWqmTa4,14638
229
235
  meerschaum/utils/formatting/__init__.py,sha256=NcNPxXRSnKZAIBxAD0ictCjVBzYzFtOwpf2CDMfr4_Y,15354
230
- meerschaum/utils/formatting/_jobs.py,sha256=m3dVGRS3zRNAbu7zWPdpEuou6GEOe7hHWrTz1DkOJ2U,5495
236
+ meerschaum/utils/formatting/_jobs.py,sha256=izsqPJhTtUkXUUtWnbXtReYsUYwulXtci3pBj72Ne64,6637
231
237
  meerschaum/utils/formatting/_pipes.py,sha256=wy0iWJFsFl3X2VloaiA_gp9Yx9w6tD3FQZvAQAqef4A,19492
232
238
  meerschaum/utils/formatting/_pprint.py,sha256=tgrT3FyGyu5CWJYysqK3kX1xdZYorlbOk9fcU_vt9Qg,3096
233
239
  meerschaum/utils/formatting/_shell.py,sha256=jsjf_GMXBpGNBbpT7skTUZrHZl5HooFzffRDc4hz5Tc,3786
234
- meerschaum/utils/jobs/_Job.py,sha256=1glG_n8r6CuC2Al3NVYogwFMKjSxiM4GCT9o6WDtkGg,23322
235
- meerschaum/utils/jobs/__init__.py,sha256=NfO43tpGgPBikoFV98w2cFag0aQd7Z7FOpb5NCJZ0lg,6088
236
240
  meerschaum/utils/packages/__init__.py,sha256=zBy3cUy60Eht90PhgWzL_VjTjJSFpt5sA-DvrLch47A,63179
237
- meerschaum/utils/packages/_packages.py,sha256=pWSVUEQ0XXEmnRbVUOH-c17O0VGdxuGAixuE2-XJP0I,7976
241
+ meerschaum/utils/packages/_packages.py,sha256=GzbJ0kxW_EQogXmY4vguRkUyad42cshFs7wYmvqfdCA,8038
238
242
  meerschaum/utils/packages/lazy_loader.py,sha256=VHnph3VozH29R4JnSSBfwtA5WKZYZQFT_GeQSShCnuc,2540
239
243
  meerschaum/utils/venv/_Venv.py,sha256=sBnlmxHdAh2bx8btfVoD79-H9-cYsv5lP02IIXkyECs,3553
240
- meerschaum/utils/venv/__init__.py,sha256=7TjSHKbUAACqteNFkqp3CS8vxm9lMo8sJJ7q_oaCMd0,24365
241
- meerschaum-2.3.0.dev3.dist-info/LICENSE,sha256=jG2zQEdRNt88EgHUWPpXVWmOrOduUQRx7MnYV9YIPaw,11359
242
- meerschaum-2.3.0.dev3.dist-info/METADATA,sha256=EqHz-2EqQQmaoX6ptL-7G8tJHNbfH1CzICUberopzDc,24188
243
- meerschaum-2.3.0.dev3.dist-info/NOTICE,sha256=OTA9Fcthjf5BRvWDDIcBC_xfLpeDV-RPZh3M-HQBRtQ,114
244
- meerschaum-2.3.0.dev3.dist-info/WHEEL,sha256=R0nc6qTxuoLk7ShA2_Y-UWkN8ZdfDBG2B6Eqpz2WXbs,91
245
- meerschaum-2.3.0.dev3.dist-info/entry_points.txt,sha256=5YBVzibw-0rNA_1VjB16z5GABsOGf-CDhW4yqH8C7Gc,88
246
- meerschaum-2.3.0.dev3.dist-info/top_level.txt,sha256=bNoSiDj0El6buocix-FRoAtJOeq1qOF5rRm2u9i7Q6A,11
247
- meerschaum-2.3.0.dev3.dist-info/zip-safe,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
248
- meerschaum-2.3.0.dev3.dist-info/RECORD,,
244
+ meerschaum/utils/venv/__init__.py,sha256=bLAWnllKDuE_z6bLk7gLh4mI3Sp1j5hsboTqPKOQq84,24361
245
+ meerschaum-2.3.0rc2.dist-info/LICENSE,sha256=jG2zQEdRNt88EgHUWPpXVWmOrOduUQRx7MnYV9YIPaw,11359
246
+ meerschaum-2.3.0rc2.dist-info/METADATA,sha256=e_ahh83m8FwVMO1VezxSC_WnK-XJoDUNzmIkFgXbFs8,24009
247
+ meerschaum-2.3.0rc2.dist-info/NOTICE,sha256=OTA9Fcthjf5BRvWDDIcBC_xfLpeDV-RPZh3M-HQBRtQ,114
248
+ meerschaum-2.3.0rc2.dist-info/WHEEL,sha256=R0nc6qTxuoLk7ShA2_Y-UWkN8ZdfDBG2B6Eqpz2WXbs,91
249
+ meerschaum-2.3.0rc2.dist-info/entry_points.txt,sha256=5YBVzibw-0rNA_1VjB16z5GABsOGf-CDhW4yqH8C7Gc,88
250
+ meerschaum-2.3.0rc2.dist-info/top_level.txt,sha256=bNoSiDj0El6buocix-FRoAtJOeq1qOF5rRm2u9i7Q6A,11
251
+ meerschaum-2.3.0rc2.dist-info/zip-safe,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
252
+ meerschaum-2.3.0rc2.dist-info/RECORD,,
@@ -1,245 +0,0 @@
1
- #! /usr/bin/env python3
2
- # -*- coding: utf-8 -*-
3
- # vim:fenc=utf-8
4
-
5
- """
6
- Higher-level utilities for managing `meerschaum.utils.daemon.Daemon`.
7
- """
8
-
9
- import pathlib
10
-
11
- import meerschaum as mrsm
12
- from meerschaum.utils.jobs._Job import Job, StopMonitoringLogs
13
- from meerschaum.utils.typing import Dict, Optional, List, Callable, Any
14
-
15
- __all__ = (
16
- 'Job',
17
- 'get_jobs',
18
- 'get_filtered_jobs',
19
- 'get_restart_jobs',
20
- 'get_running_jobs',
21
- 'get_stopped_jobs',
22
- 'get_paused_jobs',
23
- 'get_restart_jobs',
24
- 'check_restart_jobs',
25
- 'start_check_jobs_thread',
26
- 'stop_check_jobs_thread',
27
- )
28
-
29
-
30
- def get_jobs(
31
- executor_keys: Optional[str] = None,
32
- debug: bool = False,
33
- ) -> Dict[str, Job]:
34
- """
35
- Return a dictionary of the existing jobs.
36
-
37
- Parameters
38
- ----------
39
- executor_keys: Optional[str], default None
40
- If provided, return remote jobs on the given API instance.
41
- Otherwise return local jobs.
42
-
43
- Returns
44
- -------
45
- A dictionary mapping job names to jobs.
46
- """
47
- from meerschaum.connectors.parse import parse_connector_keys
48
- if executor_keys == 'local':
49
- executor_keys = None
50
-
51
- if executor_keys is not None:
52
- try:
53
- _ = parse_connector_keys(executor_keys, construct=False)
54
- conn = mrsm.get_connector(executor_keys)
55
- return conn.get_jobs(debug=debug)
56
- except Exception:
57
- return {}
58
-
59
- from meerschaum.utils.daemon import get_daemons
60
- daemons = get_daemons()
61
- return {
62
- daemon.daemon_id: Job(name=daemon.daemon_id)
63
- for daemon in daemons
64
- }
65
-
66
-
67
- def get_filtered_jobs(
68
- executor_keys: Optional[str] = None,
69
- filter_list: Optional[List[str]] = None,
70
- warn: bool = False,
71
- debug: bool = False,
72
- ) -> Dict[str, Job]:
73
- """
74
- Return a list of jobs filtered by the user.
75
- """
76
- from meerschaum.utils.warnings import warn as _warn
77
- jobs = get_jobs(executor_keys, debug=debug)
78
-
79
- if not filter_list:
80
- return {
81
- name: job
82
- for name, job in jobs.items()
83
- if not job.hidden
84
- }
85
-
86
- jobs_to_return = {}
87
- for name in filter_list:
88
- job = jobs.get(name, None)
89
- if job is None:
90
- if warn:
91
- _warn(
92
- f"Job '{name}' does not exist.",
93
- stack=False,
94
- )
95
- continue
96
- jobs_to_return[name] = job
97
-
98
- return jobs_to_return
99
-
100
-
101
- def get_restart_jobs(
102
- executor_keys: Optional[str] = None,
103
- jobs: Optional[Dict[str, Job]] = None,
104
- debug: bool = False,
105
- ) -> Dict[str, Job]:
106
- """
107
- Return jobs which were created with `--restart` or `--loop`.
108
- """
109
- if jobs is None:
110
- jobs = get_jobs(executor_keys, debug=debug)
111
-
112
- return {
113
- name: job
114
- for name, job in jobs.items()
115
- if job.restart
116
- }
117
-
118
-
119
- def get_running_jobs(
120
- executor_keys: Optional[str] = None,
121
- jobs: Optional[Dict[str, Job]] = None,
122
- debug: bool = False,
123
- ) -> Dict[str, Job]:
124
- """
125
- Return a dictionary of running jobs.
126
- """
127
- if jobs is None:
128
- jobs = get_jobs(executor_keys, debug=debug)
129
-
130
- return {
131
- name: job
132
- for name, job in jobs.items()
133
- if job.status == 'running'
134
- }
135
-
136
-
137
- def get_paused_jobs(
138
- executor_keys: Optional[str] = None,
139
- jobs: Optional[Dict[str, Job]] = None,
140
- debug: bool = False,
141
- ) -> Dict[str, Job]:
142
- """
143
- Return a dictionary of paused jobs.
144
- """
145
- if jobs is None:
146
- jobs = get_jobs(executor_keys, debug=debug)
147
-
148
- return {
149
- name: job
150
- for name, job in jobs.items()
151
- if job.status == 'paused'
152
- }
153
-
154
-
155
- def get_stopped_jobs(
156
- executor_keys: Optional[str] = None,
157
- jobs: Optional[Dict[str, Job]] = None,
158
- debug: bool = False,
159
- ) -> Dict[str, Job]:
160
- """
161
- Return a dictionary of stopped jobs.
162
- """
163
- if jobs is None:
164
- jobs = get_jobs(executor_keys, debug=debug)
165
-
166
- return {
167
- name: job
168
- for name, job in jobs.items()
169
- if job.status == 'stopped'
170
- }
171
-
172
-
173
- def check_restart_jobs(
174
- executor_keys: Optional[str] = None,
175
- silent: bool = False,
176
- ) -> None:
177
- """
178
- Restart any stopped jobs which were created with `--restart`.
179
-
180
- Parameters
181
- ----------
182
- executor_keys: Optional[str], default None
183
- If provided, check jobs on the given remote API instance.
184
- Otherwise check local jobs.
185
-
186
- silent: bool, default False
187
- If `True`, do not print the restart success message.
188
- """
189
- jobs = get_jobs(executor_keys)
190
- for name, job in jobs.items():
191
- success, msg = job.check_restart()
192
- if not silent:
193
- mrsm.pprint((success, msg))
194
-
195
-
196
- def _check_restart_jobs_against_lock(*args, **kwargs):
197
- from meerschaum.config.paths import CHECK_JOBS_LOCK_PATH
198
- fasteners = mrsm.attempt_import('fasteners')
199
- lock = fasteners.InterProcessLock(CHECK_JOBS_LOCK_PATH)
200
- with lock:
201
- check_restart_jobs(*args, **kwargs)
202
-
203
-
204
- _check_loop_stop_thread = None
205
- def start_check_jobs_thread():
206
- """
207
- Start a thread to regularly monitor jobs.
208
- """
209
- import atexit
210
- from functools import partial
211
- from meerschaum.utils.threading import RepeatTimer
212
- from meerschaum.config.static import STATIC_CONFIG
213
-
214
- global _check_loop_stop_thread
215
- sleep_seconds = STATIC_CONFIG['jobs']['check_restart_seconds']
216
-
217
- _check_loop_stop_thread = RepeatTimer(
218
- sleep_seconds,
219
- partial(
220
- _check_restart_jobs_against_lock,
221
- silent=True,
222
- )
223
- )
224
- _check_loop_stop_thread.daemon = False
225
- atexit.register(stop_check_jobs_thread)
226
-
227
- _check_loop_stop_thread.start()
228
-
229
-
230
- def stop_check_jobs_thread():
231
- """
232
- Stop the job monitoring thread.
233
- """
234
- from meerschaum.config.paths import CHECK_JOBS_LOCK_PATH
235
- from meerschaum.utils.warnings import warn
236
- if _check_loop_stop_thread is None:
237
- return
238
-
239
- _check_loop_stop_thread.cancel()
240
-
241
- try:
242
- if CHECK_JOBS_LOCK_PATH.exists():
243
- CHECK_JOBS_LOCK_PATH.unlink()
244
- except Exception as e:
245
- warn(f"Failed to remove check jobs lock file:\n{e}")