meerschaum 2.3.4__py3-none-any.whl → 2.3.5.dev0__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.
- meerschaum/_internal/arguments/__init__.py +1 -5
- meerschaum/_internal/arguments/_parse_arguments.py +38 -9
- meerschaum/_internal/docs/index.py +1 -1
- meerschaum/_internal/entry.py +9 -7
- meerschaum/actions/python.py +4 -0
- meerschaum/actions/start.py +6 -4
- meerschaum/api/routes/_actions.py +29 -19
- meerschaum/api/routes/_jobs.py +1 -1
- meerschaum/config/_version.py +1 -1
- meerschaum/jobs/_Job.py +6 -1
- meerschaum/jobs/systemd.py +1 -1
- {meerschaum-2.3.4.dist-info → meerschaum-2.3.5.dev0.dist-info}/METADATA +1 -1
- {meerschaum-2.3.4.dist-info → meerschaum-2.3.5.dev0.dist-info}/RECORD +19 -19
- {meerschaum-2.3.4.dist-info → meerschaum-2.3.5.dev0.dist-info}/LICENSE +0 -0
- {meerschaum-2.3.4.dist-info → meerschaum-2.3.5.dev0.dist-info}/NOTICE +0 -0
- {meerschaum-2.3.4.dist-info → meerschaum-2.3.5.dev0.dist-info}/WHEEL +0 -0
- {meerschaum-2.3.4.dist-info → meerschaum-2.3.5.dev0.dist-info}/entry_points.txt +0 -0
- {meerschaum-2.3.4.dist-info → meerschaum-2.3.5.dev0.dist-info}/top_level.txt +0 -0
- {meerschaum-2.3.4.dist-info → meerschaum-2.3.5.dev0.dist-info}/zip-safe +0 -0
@@ -9,11 +9,7 @@ This package includes argument parsing utilities.
|
|
9
9
|
from meerschaum._internal.arguments._parse_arguments import (
|
10
10
|
parse_arguments, parse_line, remove_leading_action,
|
11
11
|
parse_dict_to_sysargs, split_chained_sysargs, split_pipeline_sysargs,
|
12
|
+
sysargs_has_api_executor_keys,
|
12
13
|
)
|
13
14
|
from meerschaum._internal.arguments._parser import parser
|
14
15
|
from meerschaum.plugins import add_plugin_argument
|
15
|
-
|
16
|
-
__all__ = [
|
17
|
-
'parser', 'parse_arguments', 'parse_line', 'add_plugin_argument', 'parse_dict_to_sysargs',
|
18
|
-
'remove_leading_action',
|
19
|
-
]
|
@@ -283,18 +283,29 @@ def parse_dict_to_sysargs(
|
|
283
283
|
### Add list flags
|
284
284
|
if isinstance(args_dict[a], (list, tuple)):
|
285
285
|
if len(args_dict[a]) > 0:
|
286
|
-
|
287
|
-
[
|
288
|
-
|
289
|
-
|
290
|
-
|
291
|
-
|
292
|
-
|
286
|
+
if a == 'sub_args' and args_dict[a] != ['']:
|
287
|
+
print(f"{args_dict[a]=}")
|
288
|
+
sysargs.extend(
|
289
|
+
[
|
290
|
+
'-A',
|
291
|
+
shlex.join([
|
292
|
+
str(item) for item in args_dict[a]
|
293
|
+
]),
|
294
|
+
]
|
295
|
+
)
|
296
|
+
else:
|
297
|
+
sysargs.extend(
|
298
|
+
[t[0]]
|
299
|
+
+ [
|
300
|
+
str(item)
|
301
|
+
for item in args_dict[a]
|
302
|
+
]
|
303
|
+
)
|
293
304
|
|
294
305
|
### Add dict flags
|
295
306
|
elif isinstance(args_dict[a], dict):
|
296
307
|
if len(args_dict[a]) > 0:
|
297
|
-
sysargs += [t[0], json.dumps(args_dict[a])]
|
308
|
+
sysargs += [t[0], json.dumps(args_dict[a], separators=(',', ':'))]
|
298
309
|
|
299
310
|
### Account for None and other values
|
300
311
|
elif (args_dict[a] is not None) or (args_dict[a] is None and a in allow_none_args):
|
@@ -403,4 +414,22 @@ def load_plugin_args() -> None:
|
|
403
414
|
to_import.append(plugin.name)
|
404
415
|
if not to_import:
|
405
416
|
return
|
406
|
-
import_plugins(*to_import)
|
417
|
+
import_plugins(*to_import)
|
418
|
+
|
419
|
+
|
420
|
+
def sysargs_has_api_executor_keys(sysargs: List[str]) -> bool:
|
421
|
+
"""
|
422
|
+
Check whether a `sysargs` list contains an `api` executor.
|
423
|
+
"""
|
424
|
+
if '-e' not in sysargs and '--executor-keys' not in sysargs:
|
425
|
+
return False
|
426
|
+
|
427
|
+
executor_keys_flag = '-e' if '-e' in sysargs else '--executor-keys'
|
428
|
+
executor_keys_flag_ix = sysargs.index(executor_keys_flag)
|
429
|
+
executor_keys_ix = executor_keys_flag_ix + 1
|
430
|
+
|
431
|
+
if len(sysargs) < executor_keys_ix:
|
432
|
+
return False
|
433
|
+
|
434
|
+
executor_keys = sysargs[executor_keys_ix]
|
435
|
+
return executor_keys.startswith('api:')
|
meerschaum/_internal/entry.py
CHANGED
@@ -50,6 +50,7 @@ def entry(
|
|
50
50
|
parse_arguments,
|
51
51
|
split_chained_sysargs,
|
52
52
|
split_pipeline_sysargs,
|
53
|
+
sysargs_has_api_executor_keys,
|
53
54
|
)
|
54
55
|
from meerschaum.config.static import STATIC_CONFIG
|
55
56
|
if sysargs is None:
|
@@ -63,21 +64,22 @@ def entry(
|
|
63
64
|
|
64
65
|
has_daemon = '-d' in sysargs or '--daemon' in sysargs
|
65
66
|
has_start_job = sysargs[:2] == ['start', 'job']
|
67
|
+
pipeline_has_api_executor_keys = sysargs_has_api_executor_keys(pipeline_args)
|
68
|
+
|
66
69
|
chained_sysargs = (
|
67
70
|
[sysargs]
|
68
|
-
if has_daemon or has_start_job
|
71
|
+
if has_daemon or has_start_job or pipeline_has_api_executor_keys
|
69
72
|
else split_chained_sysargs(sysargs)
|
70
73
|
)
|
71
74
|
if pipeline_args:
|
75
|
+
start_pipeline_params = {
|
76
|
+
'sub_args_line': shlex.join(sysargs),
|
77
|
+
'patch_args': _patch_args,
|
78
|
+
}
|
72
79
|
chained_sysargs = [
|
73
80
|
['start', 'pipeline']
|
74
81
|
+ [str(arg) for arg in pipeline_args]
|
75
|
-
+ (
|
76
|
-
['--params', json.dumps(_patch_args)]
|
77
|
-
if _patch_args
|
78
|
-
else []
|
79
|
-
)
|
80
|
-
+ ['--sub-args', shlex.join(sysargs)]
|
82
|
+
+ ['-P', json.dumps(start_pipeline_params, separators=(',', ':'))]
|
81
83
|
]
|
82
84
|
|
83
85
|
results: List[SuccessTuple] = []
|
meerschaum/actions/python.py
CHANGED
@@ -14,6 +14,7 @@ def python(
|
|
14
14
|
nopretty: bool = False,
|
15
15
|
noask: bool = False,
|
16
16
|
venv: Optional[str] = None,
|
17
|
+
executor_keys: Optional[str] = None,
|
17
18
|
debug: bool = False,
|
18
19
|
**kw: Any
|
19
20
|
) -> SuccessTuple:
|
@@ -53,6 +54,9 @@ def python(
|
|
53
54
|
from meerschaum.utils.packages import run_python_package, attempt_import
|
54
55
|
from meerschaum.utils.process import run_process
|
55
56
|
|
57
|
+
if executor_keys and executor_keys.startswith('api:'):
|
58
|
+
warn("Cannot open a Python REPL remotely, falling back to local...", stack=False)
|
59
|
+
|
56
60
|
if action is None:
|
57
61
|
action = []
|
58
62
|
|
meerschaum/actions/start.py
CHANGED
@@ -7,7 +7,7 @@ Start subsystems (API server, logging daemon, etc.).
|
|
7
7
|
"""
|
8
8
|
|
9
9
|
from __future__ import annotations
|
10
|
-
from meerschaum.utils.typing import SuccessTuple, Optional, List, Any, Union
|
10
|
+
from meerschaum.utils.typing import SuccessTuple, Optional, List, Any, Union, Dict
|
11
11
|
|
12
12
|
def start(
|
13
13
|
action: Optional[List[str]] = None,
|
@@ -539,7 +539,6 @@ def _complete_start_connectors(**kw) -> List[str]:
|
|
539
539
|
|
540
540
|
def _start_pipeline(
|
541
541
|
action: Optional[List[str]] = None,
|
542
|
-
sub_args: Optional[List[str]] = None,
|
543
542
|
loop: bool = False,
|
544
543
|
min_seconds: Union[float, int, None] = 1.0,
|
545
544
|
params: Optional[Dict[str, Any]] = None,
|
@@ -569,7 +568,10 @@ def _start_pipeline(
|
|
569
568
|
else 1
|
570
569
|
)
|
571
570
|
|
572
|
-
|
571
|
+
sub_args_line = params.get('sub_args_line', None)
|
572
|
+
patch_args = params.get('patch_args', None)
|
573
|
+
|
574
|
+
if not sub_args_line:
|
573
575
|
return False, "Nothing to do."
|
574
576
|
|
575
577
|
if min_seconds is None:
|
@@ -580,7 +582,7 @@ def _start_pipeline(
|
|
580
582
|
def run_loop():
|
581
583
|
nonlocal ran_n_times, success, msg
|
582
584
|
while True:
|
583
|
-
success, msg = entry(
|
585
|
+
success, msg = entry(sub_args_line, _patch_args=patch_args)
|
584
586
|
ran_n_times += 1
|
585
587
|
|
586
588
|
if not loop and do_n_times == 1:
|
@@ -14,6 +14,7 @@ from functools import partial
|
|
14
14
|
from datetime import datetime, timezone
|
15
15
|
|
16
16
|
from fastapi import WebSocket, WebSocketDisconnect
|
17
|
+
from websockets.exceptions import ConnectionClosedError
|
17
18
|
|
18
19
|
from meerschaum.utils.misc import generate_password
|
19
20
|
from meerschaum.jobs import Job
|
@@ -27,6 +28,7 @@ import meerschaum.core
|
|
27
28
|
from meerschaum.config import get_config
|
28
29
|
from meerschaum._internal.arguments._parse_arguments import parse_dict_to_sysargs, parse_arguments
|
29
30
|
from meerschaum.api.routes._jobs import clean_sysargs
|
31
|
+
from meerschaum.jobs._Job import StopMonitoringLogs
|
30
32
|
|
31
33
|
actions_endpoint = endpoints['actions']
|
32
34
|
|
@@ -71,8 +73,8 @@ async def notify_client(client, content: str):
|
|
71
73
|
"""
|
72
74
|
try:
|
73
75
|
await client.send_text(content)
|
74
|
-
except WebSocketDisconnect:
|
75
|
-
|
76
|
+
except (RuntimeError, WebSocketDisconnect, Exception):
|
77
|
+
raise StopMonitoringLogs
|
76
78
|
|
77
79
|
_temp_jobs = {}
|
78
80
|
@app.websocket(actions_endpoint + '/ws')
|
@@ -83,6 +85,8 @@ async def do_action_websocket(websocket: WebSocket):
|
|
83
85
|
await websocket.accept()
|
84
86
|
|
85
87
|
stop_event = asyncio.Event()
|
88
|
+
job_name = '.' + generate_password(12)
|
89
|
+
job = None
|
86
90
|
|
87
91
|
async def monitor_logs(job):
|
88
92
|
success, msg = job.start()
|
@@ -92,12 +96,14 @@ async def do_action_websocket(websocket: WebSocket):
|
|
92
96
|
stop_on_exit=True,
|
93
97
|
)
|
94
98
|
|
95
|
-
job = None
|
96
|
-
job_name = '.' + generate_password(12)
|
97
99
|
try:
|
98
100
|
token = await websocket.receive_text()
|
99
101
|
user = await manager.get_current_user(token) if not no_auth else None
|
100
102
|
if user is None and not no_auth:
|
103
|
+
stop_event.set()
|
104
|
+
if job is not None:
|
105
|
+
job.delete()
|
106
|
+
_ = _temp_jobs.pop(job_name, None)
|
101
107
|
raise fastapi.HTTPException(
|
102
108
|
status_code=401,
|
103
109
|
detail="Invalid credentials.",
|
@@ -114,14 +120,11 @@ async def do_action_websocket(websocket: WebSocket):
|
|
114
120
|
}
|
115
121
|
await websocket.send_json(auth_payload)
|
116
122
|
if not auth_success:
|
123
|
+
stop_event.set()
|
124
|
+
job.stop()
|
117
125
|
await websocket.close()
|
118
126
|
|
119
127
|
sysargs = clean_sysargs(await websocket.receive_json())
|
120
|
-
# kwargs = parse_arguments(sysargs)
|
121
|
-
# _ = kwargs.pop('executor_keys', None)
|
122
|
-
# _ = kwargs.pop('shell', None)
|
123
|
-
# sysargs = parse_dict_to_sysargs(kwargs)
|
124
|
-
|
125
128
|
job = Job(
|
126
129
|
job_name,
|
127
130
|
sysargs,
|
@@ -134,25 +137,32 @@ async def do_action_websocket(websocket: WebSocket):
|
|
134
137
|
)
|
135
138
|
_temp_jobs[job_name] = job
|
136
139
|
monitor_task = asyncio.create_task(monitor_logs(job))
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
140
|
+
|
141
|
+
### NOTE: Await incoming text to trigger `WebSocketDisconnect`.
|
142
|
+
while True:
|
143
|
+
await websocket.receive_text()
|
144
|
+
|
142
145
|
except fastapi.HTTPException:
|
143
146
|
await websocket.send_text("Invalid credentials.")
|
144
147
|
await websocket.close()
|
145
|
-
except WebSocketDisconnect:
|
146
|
-
|
147
|
-
|
148
|
-
pass
|
148
|
+
except (WebSocketDisconnect, asyncio.CancelledError):
|
149
|
+
stop_event.set()
|
150
|
+
job.stop()
|
149
151
|
except Exception:
|
152
|
+
stop_event.set()
|
153
|
+
job.stop()
|
150
154
|
warn(f"Error in logs websocket:\n{traceback.format_exc()}")
|
151
155
|
finally:
|
156
|
+
stop_event.set()
|
157
|
+
job.stop()
|
158
|
+
monitor_task.cancel()
|
152
159
|
if job is not None:
|
153
160
|
job.delete()
|
154
161
|
_ = _temp_jobs.pop(job_name, None)
|
155
|
-
|
162
|
+
try:
|
163
|
+
await websocket.close()
|
164
|
+
except RuntimeError:
|
165
|
+
pass
|
156
166
|
|
157
167
|
|
158
168
|
@app.post(actions_endpoint + "/{action}", tags=['Actions'])
|
meerschaum/api/routes/_jobs.py
CHANGED
@@ -114,7 +114,7 @@ def clean_sysargs(sysargs: List[str]) -> List[str]:
|
|
114
114
|
clean_sysargs = []
|
115
115
|
executor_flag = False
|
116
116
|
for arg in sysargs:
|
117
|
-
if arg in ('-e', '--executor', 'api'):
|
117
|
+
if arg in ('-e', '--executor-keys', 'api'):
|
118
118
|
executor_flag = True
|
119
119
|
continue
|
120
120
|
if executor_flag:
|
meerschaum/config/_version.py
CHANGED
meerschaum/jobs/_Job.py
CHANGED
@@ -494,13 +494,15 @@ class Job:
|
|
494
494
|
await asyncio.sleep(sleep_time)
|
495
495
|
sleep_time = round(sleep_time * 1.1, 2)
|
496
496
|
continue
|
497
|
-
|
497
|
+
|
498
498
|
if stop_callback_function is not None:
|
499
499
|
try:
|
500
500
|
if asyncio.iscoroutinefunction(stop_callback_function):
|
501
501
|
await stop_callback_function(self.result)
|
502
502
|
else:
|
503
503
|
stop_callback_function(self.result)
|
504
|
+
except asyncio.exceptions.CancelledError:
|
505
|
+
break
|
504
506
|
except Exception:
|
505
507
|
warn(traceback.format_exc())
|
506
508
|
|
@@ -555,6 +557,7 @@ class Job:
|
|
555
557
|
for task in pending:
|
556
558
|
task.cancel()
|
557
559
|
except asyncio.exceptions.CancelledError:
|
560
|
+
print('cancelled?')
|
558
561
|
pass
|
559
562
|
finally:
|
560
563
|
combined_event.set()
|
@@ -596,6 +599,8 @@ class Job:
|
|
596
599
|
)
|
597
600
|
try:
|
598
601
|
_ = asyncio.gather(*tasks, return_exceptions=True)
|
602
|
+
except asyncio.exceptions.CancelledError:
|
603
|
+
raise
|
599
604
|
except Exception:
|
600
605
|
warn(f"Failed to run async checks:\n{traceback.format_exc()}")
|
601
606
|
|
meerschaum/jobs/systemd.py
CHANGED
@@ -152,7 +152,7 @@ class SystemdExecutor(Executor):
|
|
152
152
|
mrsm_env_vars.update(job.env)
|
153
153
|
|
154
154
|
environment_lines = [
|
155
|
-
f"Environment={key}={val}"
|
155
|
+
f"Environment={key}={shlex.quote(str(val))}"
|
156
156
|
for key, val in mrsm_env_vars.items()
|
157
157
|
]
|
158
158
|
environment_str = '\n'.join(environment_lines)
|
@@ -1,12 +1,12 @@
|
|
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=
|
5
|
-
meerschaum/_internal/arguments/__init__.py,sha256=
|
6
|
-
meerschaum/_internal/arguments/_parse_arguments.py,sha256=
|
4
|
+
meerschaum/_internal/entry.py,sha256=N14gqUfKZGgB3HZAm4ceFlYd3Phb4z_qo8LVAhsBOVM,11430
|
5
|
+
meerschaum/_internal/arguments/__init__.py,sha256=UehxpvVPD6VGzl24xZBzjQzRZWFiKdAeJgXTCIronGQ,462
|
6
|
+
meerschaum/_internal/arguments/_parse_arguments.py,sha256=lKGQzZEMEZyY3n11lYSRUcPNoDCjp6ndYxTfFbbp8XM,14058
|
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=
|
9
|
+
meerschaum/_internal/docs/index.py,sha256=LOxk1p_ChRkijfRGOB6UnoUEzt-SvtnMO56fTcSIMsU,24390
|
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
|
@@ -35,7 +35,7 @@ meerschaum/actions/install.py,sha256=jdhOrR_KlvinTKr0YJNkUHsnh5EY6OzA7cRq0Vnp1oU
|
|
35
35
|
meerschaum/actions/login.py,sha256=fNgsgkrFCn9wBQJY50SQhz2PwsN_TvEYYHnXK3JG4ig,4206
|
36
36
|
meerschaum/actions/os.py,sha256=dtoppoBhLzW3rLNF0SFovEfNxA4WJWt_9WrOGlS5KbA,2251
|
37
37
|
meerschaum/actions/pause.py,sha256=WI4dQFfjQ6ObWKUzwQ5FrtYPDyEcnxWwval8cSIzzJw,4221
|
38
|
-
meerschaum/actions/python.py,sha256=
|
38
|
+
meerschaum/actions/python.py,sha256=k3Oo64RhyPd49W8bSjYvm6DOXuqY17NpR6BmfZb3-os,4737
|
39
39
|
meerschaum/actions/register.py,sha256=bOQY0AlZlchsxPF27LL7G1OgdiCyj7mkBaD-PO6bFZc,14491
|
40
40
|
meerschaum/actions/reload.py,sha256=gMXeFBGVfyQ7uhKhYf6bLaDMD0fLPcA9BrLBSiuvWIc,508
|
41
41
|
meerschaum/actions/restart.py,sha256=6ffp3-X9eTEgunVSdD41HnOwqp71yjuSAmXJ5j39ONI,3038
|
@@ -44,7 +44,7 @@ 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
46
|
meerschaum/actions/stack.py,sha256=7ODAxzmCx8i9AHxvkbr5ZtzUNPpY-iqlSVo4rZHMOw4,5900
|
47
|
-
meerschaum/actions/start.py,sha256=
|
47
|
+
meerschaum/actions/start.py,sha256=Tma2VhH3mDsufQvp_1ZWHHspHw1SPwKWYC7_BYv4ME4,19343
|
48
48
|
meerschaum/actions/stop.py,sha256=5fdUw70YN-yuUWrC-NhA88cxr9FZ5NbssbQ8xXO8nFU,4632
|
49
49
|
meerschaum/actions/sync.py,sha256=AkH-1O5bkUC-UElQGr0lRhrX-z18ZY2nBPSy9EsW1Kc,17506
|
50
50
|
meerschaum/actions/tag.py,sha256=SJf5qFW0ccLXjqlTdkK_0MCcrCMdg6xhYrhKdco0hdA,3053
|
@@ -115,10 +115,10 @@ meerschaum/api/resources/templates/old_index.html,sha256=BDeOlcXhSsBH3-NaRtuX4Z1
|
|
115
115
|
meerschaum/api/resources/templates/secret.html,sha256=0QWkm4ZoN81Aw1pd2-62rGCvx3nXPHfFUoegj3Iy8Ls,141
|
116
116
|
meerschaum/api/resources/templates/termpage.html,sha256=qspXRuOkzqOn2mXw9mmUldzsvOHq_LyaywQ29CUevp0,4527
|
117
117
|
meerschaum/api/routes/__init__.py,sha256=jbkeFNl51Tg8aT5gWe560ZLZLojFJsLMe5IENRjRkb0,606
|
118
|
-
meerschaum/api/routes/_actions.py,sha256=
|
118
|
+
meerschaum/api/routes/_actions.py,sha256=xB_g1AeVGdFo0qBZgAmXPA1GuVkWGNFWihqON_N7bZ4,6574
|
119
119
|
meerschaum/api/routes/_connectors.py,sha256=NNbcn5xWhKqw2PqueSEaqRaZ95hFGDKazG5lE7gsssc,1849
|
120
120
|
meerschaum/api/routes/_index.py,sha256=QI6CBo6pI2Zi0a6fJHDjZfiLa9f4okb0BGe3A_JD0kM,578
|
121
|
-
meerschaum/api/routes/_jobs.py,sha256=
|
121
|
+
meerschaum/api/routes/_jobs.py,sha256=odL_roGipSwvZ-heGZd7Ub59a7-e0PeDmuqi3YfwQ9g,11227
|
122
122
|
meerschaum/api/routes/_login.py,sha256=psPKmFkXgYVX83NepqwIhaLsQ5uWgOc4F2QZtPGxY1A,2482
|
123
123
|
meerschaum/api/routes/_misc.py,sha256=05--9ZVFeaCgZrHER2kA3SYdK4TyfkEXOCjLvPbum-w,2469
|
124
124
|
meerschaum/api/routes/_pipes.py,sha256=1gBuE4E-QvIK_kmbmiw7uLcXjnIobFI1t4tb2skpp6E,21592
|
@@ -140,7 +140,7 @@ meerschaum/config/_preprocess.py,sha256=-AEA8m_--KivZwTQ1sWN6LTn5sio_fUr2XZ51BO6
|
|
140
140
|
meerschaum/config/_read_config.py,sha256=WFZKIXZMDe_ca0ES7ivgM_mnwShvFxLdoeisT_X5-h0,14720
|
141
141
|
meerschaum/config/_shell.py,sha256=46_m49Txc5q1rGfCgO49ca48BODx45DQJi8D0zz1R18,4245
|
142
142
|
meerschaum/config/_sync.py,sha256=oK2ZujO2T1he08BXCFyiniBUevNGWSQKXLcS_jRv_7Y,4155
|
143
|
-
meerschaum/config/_version.py,sha256=
|
143
|
+
meerschaum/config/_version.py,sha256=glPnSrQWzzidiljlSe9lTKxgO5s_mx2sORdE64VNYgU,76
|
144
144
|
meerschaum/config/paths.py,sha256=JjibeGN3YAdSNceRwsd42aNmeUrIgM6ndzC8qZAmNI0,621
|
145
145
|
meerschaum/config/resources/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
146
146
|
meerschaum/config/stack/__init__.py,sha256=Yt7GNzC_hz7iUDZ4gVho_lugJO2DnXgnMtsMG_ReoRg,9114
|
@@ -201,9 +201,9 @@ meerschaum/core/Plugin/__init__.py,sha256=UXg64EvJPgI1PCxkY_KM02-ZmBm4FZpLPIQR_u
|
|
201
201
|
meerschaum/core/User/_User.py,sha256=CApB7Y0QJL6S9QOCCfrG4SbPuPXJ9AsAYQ5pASMP_Aw,6527
|
202
202
|
meerschaum/core/User/__init__.py,sha256=lJ7beIZTG9sO4dAi3367fFBl17dXYEWHKi7HoaPlDyk,193
|
203
203
|
meerschaum/jobs/_Executor.py,sha256=qM62BhFTM4tyJ7p90KOM0y3qyeRY9k3ZV_aTDJMHnO8,1682
|
204
|
-
meerschaum/jobs/_Job.py,sha256=
|
204
|
+
meerschaum/jobs/_Job.py,sha256=f8eeH6OpBF4YEKTRB2Jx-SUWGiAxe0cUtdwDGhNEZLo,31240
|
205
205
|
meerschaum/jobs/__init__.py,sha256=ieruFbPxozkgyYMEO5wWQ4OXqfD5Pw9VtFWGub6DQxs,11970
|
206
|
-
meerschaum/jobs/systemd.py,sha256=
|
206
|
+
meerschaum/jobs/systemd.py,sha256=tQl5VFqGa3fiaX412fsjAFQAAW07o54ADmzAy3W-QWA,24165
|
207
207
|
meerschaum/plugins/_Plugin.py,sha256=p6j39tm-xrZENBq-eGtixBuXxLLddtEKWRCRFNqpRu0,34086
|
208
208
|
meerschaum/plugins/__init__.py,sha256=trMQ53qgP7ikJhhV_uXzqJw6X1NDz2rPOGXFk40bb1Y,26190
|
209
209
|
meerschaum/plugins/bootstrap.py,sha256=qg9MQ1YAU8ShwGqWDl38WjiXLIxDPl95pSIGDLN9rOw,11423
|
@@ -241,11 +241,11 @@ meerschaum/utils/packages/_packages.py,sha256=GzbJ0kxW_EQogXmY4vguRkUyad42cshFs7
|
|
241
241
|
meerschaum/utils/packages/lazy_loader.py,sha256=VHnph3VozH29R4JnSSBfwtA5WKZYZQFT_GeQSShCnuc,2540
|
242
242
|
meerschaum/utils/venv/_Venv.py,sha256=sBnlmxHdAh2bx8btfVoD79-H9-cYsv5lP02IIXkyECs,3553
|
243
243
|
meerschaum/utils/venv/__init__.py,sha256=bLAWnllKDuE_z6bLk7gLh4mI3Sp1j5hsboTqPKOQq84,24361
|
244
|
-
meerschaum-2.3.
|
245
|
-
meerschaum-2.3.
|
246
|
-
meerschaum-2.3.
|
247
|
-
meerschaum-2.3.
|
248
|
-
meerschaum-2.3.
|
249
|
-
meerschaum-2.3.
|
250
|
-
meerschaum-2.3.
|
251
|
-
meerschaum-2.3.
|
244
|
+
meerschaum-2.3.5.dev0.dist-info/LICENSE,sha256=jG2zQEdRNt88EgHUWPpXVWmOrOduUQRx7MnYV9YIPaw,11359
|
245
|
+
meerschaum-2.3.5.dev0.dist-info/METADATA,sha256=aW9MN6MOEmWcmHoVp9T2UexyQrQ2-3lf2Lcnyo978M8,24011
|
246
|
+
meerschaum-2.3.5.dev0.dist-info/NOTICE,sha256=OTA9Fcthjf5BRvWDDIcBC_xfLpeDV-RPZh3M-HQBRtQ,114
|
247
|
+
meerschaum-2.3.5.dev0.dist-info/WHEEL,sha256=R0nc6qTxuoLk7ShA2_Y-UWkN8ZdfDBG2B6Eqpz2WXbs,91
|
248
|
+
meerschaum-2.3.5.dev0.dist-info/entry_points.txt,sha256=5YBVzibw-0rNA_1VjB16z5GABsOGf-CDhW4yqH8C7Gc,88
|
249
|
+
meerschaum-2.3.5.dev0.dist-info/top_level.txt,sha256=bNoSiDj0El6buocix-FRoAtJOeq1qOF5rRm2u9i7Q6A,11
|
250
|
+
meerschaum-2.3.5.dev0.dist-info/zip-safe,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
|
251
|
+
meerschaum-2.3.5.dev0.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|