meerschaum 3.0.0rc7__py3-none-any.whl → 3.0.0rc8__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.
@@ -90,7 +90,7 @@ class ActionWorker:
90
90
  """
91
91
  Return the job associated with this worker.
92
92
  """
93
- from meerschaum.config.paths import CLI_LOGS_RESOURCES_PATH
93
+ from meerschaum.config.paths import CLI_LOGS_RESOURCES_PATH, CLI_RESOURCES_PATH
94
94
  log_path = CLI_LOGS_RESOURCES_PATH / f'cli.{self.ix}.worker.log'
95
95
 
96
96
  return Job(
@@ -108,6 +108,7 @@ class ActionWorker:
108
108
  'redirect_streams': True,
109
109
  'lines_to_show': 0,
110
110
  },
111
+ 'cwd': CLI_RESOURCES_PATH.as_posix(),
111
112
  },
112
113
  )
113
114
 
@@ -37,6 +37,7 @@ from meerschaum.utils.misc import string_width, remove_ansi
37
37
  from meerschaum.utils.warnings import warn
38
38
  from meerschaum.jobs import get_executor_keys_from_context
39
39
  from meerschaum._internal.static import STATIC_CONFIG
40
+ from meerschaum.utils.formatting._shell import clear_screen, flush_stdout
40
41
  from meerschaum._internal.arguments._parse_arguments import (
41
42
  split_chained_sysargs,
42
43
  split_pipeline_sysargs,
@@ -534,8 +535,7 @@ class Shell(cmd.Cmd):
534
535
  )
535
536
  )
536
537
  shell_attrs['prompt'] = self.prompt
537
- ### flush stdout
538
- print("", end="", flush=True)
538
+ flush_stdout()
539
539
 
540
540
 
541
541
  def precmd(self, line: str):
@@ -568,7 +568,6 @@ class Shell(cmd.Cmd):
568
568
 
569
569
  ### if the user specifies, clear the screen before executing any commands
570
570
  if _clear_screen:
571
- from meerschaum.utils.formatting._shell import clear_screen
572
571
  clear_screen(debug=shell_attrs['debug'])
573
572
 
574
573
  ### return blank commands (spaces break argparse)
@@ -1104,7 +1103,6 @@ class Shell(cmd.Cmd):
1104
1103
 
1105
1104
  ### if the user specifies, clear the screen before initializing the shell
1106
1105
  if _clear_screen:
1107
- from meerschaum.utils.formatting._shell import clear_screen
1108
1106
  clear_screen(debug=shell_attrs['debug'])
1109
1107
 
1110
1108
  ### if sysargs are provided, skip printing the intro and execute instead
@@ -1258,7 +1256,6 @@ def input_with_sigint(_input, session, shell: Optional[Shell] = None):
1258
1256
  ### NOTE: would it be better to do nothing instead?
1259
1257
  if len(parsed.strip()) == 0:
1260
1258
  if _clear_screen:
1261
- from meerschaum.utils.formatting._shell import clear_screen
1262
1259
  clear_screen()
1263
1260
  except KeyboardInterrupt:
1264
1261
  print("^C")
@@ -325,6 +325,7 @@ STATIC_CONFIG: Dict[str, Any] = {
325
325
  'check_restart_seconds': 1.0,
326
326
  'stop_token': '<------- MRSM_STOP_TOKEN ------->',
327
327
  'clear_token': '<------- MRSM_CLEAR_TOKEN ------->',
328
+ 'flush_token': '<------- MRSM_FLUSH_TOKEN ------->\n',
328
329
  },
329
330
  'tokens': {
330
331
  'minimum_length': 24,
@@ -421,14 +421,24 @@ def revert_symlinks_config(config: Dict[str, Any]) -> Dict[str, Any]:
421
421
  -------
422
422
  A configuration dictionary with `_symlinks` re-applied.
423
423
  """
424
- from meerschaum.config import apply_patch_to_config
424
+ import copy
425
+ from meerschaum._internal.static import STATIC_CONFIG
426
+
425
427
  symlinks_key = STATIC_CONFIG['config']['symlinks_key']
426
428
  if symlinks_key not in config:
427
429
  return config
428
430
 
429
- symlinks_config = config[symlinks_key]
430
- reverted_config = apply_patch_to_config(symlinks_config, config, warn=False)
431
- _ = reverted_config.pop(symlinks_key, None)
431
+ reverted_config = copy.deepcopy(config)
432
+ symlinks_config = reverted_config.pop(symlinks_key)
433
+
434
+ def deep_patch(target_dict, patch_dict):
435
+ for key, value in patch_dict.items():
436
+ if isinstance(value, dict) and key in target_dict and isinstance(target_dict[key], dict):
437
+ deep_patch(target_dict[key], value)
438
+ else:
439
+ target_dict[key] = value
440
+
441
+ deep_patch(reverted_config, symlinks_config)
432
442
  return reverted_config
433
443
 
434
444
 
@@ -2,4 +2,4 @@
2
2
  Specify the Meerschaum release version.
3
3
  """
4
4
 
5
- __version__ = "3.0.0rc7"
5
+ __version__ = "3.0.0rc8"
meerschaum/jobs/_Job.py CHANGED
@@ -25,7 +25,7 @@ from meerschaum.utils.warnings import warn
25
25
  from meerschaum.config.paths import LOGS_RESOURCES_PATH
26
26
  from meerschaum.config import get_config
27
27
  from meerschaum._internal.static import STATIC_CONFIG
28
- from meerschaum.utils.formatting._shell import clear_screen
28
+ from meerschaum.utils.formatting._shell import clear_screen, flush_stdout
29
29
 
30
30
  if TYPE_CHECKING:
31
31
  from meerschaum.jobs._Executor import Executor
@@ -42,6 +42,8 @@ RESTART_FLAGS: List[str] = [
42
42
  ]
43
43
  STOP_TOKEN: str = STATIC_CONFIG['jobs']['stop_token']
44
44
  CLEAR_TOKEN: str = STATIC_CONFIG['jobs']['clear_token']
45
+ FLUSH_TOKEN: str = STATIC_CONFIG['jobs']['flush_token']
46
+
45
47
 
46
48
  class StopMonitoringLogs(Exception):
47
49
  """
@@ -50,8 +52,8 @@ class StopMonitoringLogs(Exception):
50
52
 
51
53
 
52
54
  def _default_stdout_callback(line: str):
53
- if line == '\n':
54
- print('', end='', flush=True)
55
+ if line == '\n' or line.startswith(FLUSH_TOKEN):
56
+ flush_stdout()
55
57
  return
56
58
 
57
59
  if CLEAR_TOKEN in line:
@@ -63,6 +65,7 @@ def _default_stdout_callback(line: str):
63
65
 
64
66
  print(line, end='', flush=True)
65
67
 
68
+
66
69
  class Job:
67
70
  """
68
71
  Manage a `meerschaum.utils.daemon.Daemon`, locally or remotely via the API.
@@ -638,16 +641,23 @@ class Job:
638
641
  if stop_event is not None and stop_event.is_set():
639
642
  return
640
643
 
641
- if strip_timestamp_from_line(line.strip()) == STOP_TOKEN:
644
+ line_stripped_extra = strip_timestamp_from_line(line.strip())
645
+ line_stripped = strip_timestamp_from_line(line)
646
+
647
+ if line_stripped_extra == STOP_TOKEN:
642
648
  events['stop_token'].set()
643
649
  return
644
650
 
645
- if strip_timestamp_from_line(line.strip()) == CLEAR_TOKEN:
651
+ if line_stripped_extra == CLEAR_TOKEN:
646
652
  clear_screen(debug=debug)
647
653
  continue
648
654
 
655
+ if line_stripped_extra == FLUSH_TOKEN.strip():
656
+ line_stripped = ''
657
+ line = ''
658
+
649
659
  if strip_timestamps:
650
- line = strip_timestamp_from_line(line)
660
+ line = line_stripped
651
661
 
652
662
  try:
653
663
  if asyncio.iscoroutinefunction(callback_function):
@@ -299,6 +299,7 @@ class Daemon:
299
299
  )
300
300
 
301
301
  capture_stdin = logs_cf.get('stdin', True)
302
+ cwd = self.properties.get('cwd', os.getcwd())
302
303
 
303
304
  ### NOTE: The SIGINT handler has been removed so that child processes may handle
304
305
  ### KeyboardInterrupts themselves.
@@ -308,7 +309,7 @@ class Daemon:
308
309
  stdout=self.rotating_log,
309
310
  stderr=self.rotating_log,
310
311
  stdin=(self.stdin_file if capture_stdin else None),
311
- working_directory=os.getcwd(),
312
+ working_directory=cwd,
312
313
  detach_process=True,
313
314
  files_preserve=list(self.rotating_log.subfile_objects.values()),
314
315
  signal_map={
@@ -9,6 +9,9 @@ Formatting functions for the interactive shell
9
9
  from meerschaum.utils.threading import Lock
10
10
  _locks = {'_tried_clear_command': Lock()}
11
11
 
12
+ from meerschaum._internal.static import STATIC_CONFIG
13
+ FLUSH_TOKEN: str = STATIC_CONFIG['jobs']['flush_token']
14
+
12
15
 
13
16
  def make_header(message: str, ruler: str = '─', left_pad: int = 2) -> str:
14
17
  """Format a message string with a ruler.
@@ -62,13 +65,14 @@ def clear_screen(debug: bool = False) -> bool:
62
65
  if running_in_daemon():
63
66
  if debug:
64
67
  dprint("Skip printing clear token.")
65
- print('\n', end='', flush=True)
68
+ flush_stdout()
66
69
  return True
70
+
67
71
  print(clear_token, flush=True)
68
72
  return True
69
73
 
70
74
 
71
- print("", end="", flush=True)
75
+ flush_stdout()
72
76
  if debug:
73
77
  dprint("Skipping screen clear.")
74
78
  return True
@@ -76,11 +80,11 @@ def clear_screen(debug: bool = False) -> bool:
76
80
  if ANSI and platform.system() != 'Windows':
77
81
  if get_console() is not None:
78
82
  get_console().clear()
79
- print("", end="", flush=True)
83
+ flush_stdout()
80
84
  return True
81
85
 
82
86
  print(clear_string + reset_string, end="")
83
- print("", end="", flush=True)
87
+ flush_stdout()
84
88
  return True
85
89
 
86
90
  ### ANSI support is disabled, try system level instead
@@ -99,6 +103,16 @@ def clear_screen(debug: bool = False) -> bool:
99
103
  return rc == 0
100
104
 
101
105
 
106
+ def flush_stdout():
107
+ """
108
+ Flush stdout, including printing the flush token for daemons.
109
+ """
110
+ from meerschaum.utils.daemon import running_in_daemon
111
+ print('', end='', flush=True)
112
+ if running_in_daemon():
113
+ print(FLUSH_TOKEN, end='', flush=True)
114
+
115
+
102
116
  def flush_with_newlines(debug: bool = False) -> None:
103
117
  """Print newlines such that the entire terminal is cleared and new text will show up at the bottom."""
104
118
  import sys
meerschaum/utils/misc.py CHANGED
@@ -1236,6 +1236,8 @@ def is_systemd_available() -> bool:
1236
1236
  stdout=subprocess.DEVNULL,
1237
1237
  stderr=subprocess.STDOUT,
1238
1238
  ) == 0
1239
+ except FileNotFoundError:
1240
+ has_systemctl = False
1239
1241
  except Exception:
1240
1242
  import traceback
1241
1243
  traceback.print_exc()
@@ -1254,6 +1256,8 @@ def is_tmux_available() -> bool:
1254
1256
  stdout=subprocess.DEVNULL,
1255
1257
  stderr=subprocess.STDOUT
1256
1258
  ) == 0
1259
+ except FileNotFoundError:
1260
+ has_tmux = False
1257
1261
  except Exception:
1258
1262
  has_tmux = False
1259
1263
  return has_tmux
@@ -74,6 +74,7 @@ def prompt(
74
74
  from meerschaum.config import get_config
75
75
  from meerschaum.utils.misc import filter_keywords, remove_ansi
76
76
  from meerschaum.utils.daemon import running_in_daemon, get_current_daemon
77
+ from meerschaum._internal.static import STATIC_CONFIG
77
78
 
78
79
  original_kwargs = {
79
80
  'question': question,
@@ -140,7 +141,7 @@ def prompt(
140
141
  else:
141
142
  import json
142
143
  daemon = get_current_daemon()
143
- print('', end='', flush=True)
144
+ print(STATIC_CONFIG['jobs']['flush_token'], end='', flush=True)
144
145
  wrote_file = False
145
146
  try:
146
147
  with open(daemon.prompt_kwargs_file_path, 'w+', encoding='utf-8') as f:
@@ -151,6 +152,7 @@ def prompt(
151
152
 
152
153
  if not silent and not wrote_file:
153
154
  print(question, end='', flush=True)
155
+ print(STATIC_CONFIG['jobs']['flush_token'], end='', flush=True)
154
156
  printed_question = True
155
157
 
156
158
  try:
@@ -159,7 +161,7 @@ def prompt(
159
161
  answer = ''
160
162
 
161
163
  if noask and not silent and not printed_question:
162
- print(question, flush=True)
164
+ print(question)
163
165
 
164
166
  if answer == '' and default is not None:
165
167
  return default_answer
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: meerschaum
3
- Version: 3.0.0rc7
3
+ Version: 3.0.0rc8
4
4
  Summary: Sync Time-Series Pipes with Meerschaum
5
5
  Author-email: Bennett Meares <bennett.meares@gmail.com>
6
6
  Maintainer-email: Bennett Meares <bennett.meares@gmail.com>
@@ -2,17 +2,17 @@ meerschaum/__init__.py,sha256=4gb50vOezjYiFHw6oHZfV7enCvCnUqTdZycWyD8BSzE,1766
2
2
  meerschaum/__main__.py,sha256=r5UjYxH1WA6dGG9YGBPul5xOdgF3Iwl0X4dWDtXU-30,2646
3
3
  meerschaum/_internal/__init__.py,sha256=5Z41PIj8BbJ2bZJykk7EE4ulyEKKZLCHGVgaTZLfkmY,223
4
4
  meerschaum/_internal/entry.py,sha256=uGerbHIQXhxJ6fujGxUQdxQGO9_I_5LjxIZNQ6zhwcU,13790
5
- meerschaum/_internal/static.py,sha256=axhTYH6HeoVXMHE542XX9ZO0FH89nUPFnmAnFRHpaLY,12162
5
+ meerschaum/_internal/static.py,sha256=TSSDB6fXObS9MNBCtZiRPYtFzsbwmyvWrwaNlV1nwTg,12225
6
6
  meerschaum/_internal/arguments/__init__.py,sha256=_nSKKVLXNsJeSv-buxEZsx8_c0BAbkhRyE4nT6Bv6q0,541
7
7
  meerschaum/_internal/arguments/_parse_arguments.py,sha256=B7eXnz2fGrDb_lWy2wagWVaIlPAGLJdDEtd39pv87fA,16442
8
8
  meerschaum/_internal/arguments/_parser.py,sha256=v4dlR5ElJFmKGiw35UGCiDI1XiH8-ma8PJwoV3O--c4,18082
9
9
  meerschaum/_internal/cli/__init__.py,sha256=ZZ_N_24WUg7fA6opMtSkS3OdtA6zgAe1rLMnS4-W1Zs,114
10
10
  meerschaum/_internal/cli/daemons.py,sha256=-qx5y9YSyGzeDrBIRjuSaeHgmSNmSqrRiyOjXduNaBc,2586
11
11
  meerschaum/_internal/cli/entry.py,sha256=gxXX4hma_2xH0TSXacamFbOhbOYI0vGqV0QKqIQalBo,6786
12
- meerschaum/_internal/cli/workers.py,sha256=-GwKvMDnwWAjneDLsQL7ekS3UiskucrjV_4UcyxHaio,12841
12
+ meerschaum/_internal/cli/workers.py,sha256=kzNIuIJhURbPzf9b7bz1Yu2ciyH0x7BcMWeeJpDMlAE,12915
13
13
  meerschaum/_internal/docs/__init__.py,sha256=ZQYHWo6n0kfLLkyG36YXqTYvv2Pc7it5HZHMylT6cBA,126
14
14
  meerschaum/_internal/docs/index.py,sha256=_ghUsrgjc2eo2c-CwvqY4gT2rgyXVONuT0oScyWkIz8,27401
15
- meerschaum/_internal/shell/Shell.py,sha256=KyHx55tS7QGY84FVDq-2fkZIUbiuxfL972lCQP4jfkc,44681
15
+ meerschaum/_internal/shell/Shell.py,sha256=-iF7EYZQcNS3GNvaUgo-T8tuIeQKUjlMoZeBI6GclI0,44491
16
16
  meerschaum/_internal/shell/ShellCompleter.py,sha256=Ex6mPv83RUNdC3ufRJCcaoOmQ8q8z6tCHDVzXQmWIpY,3293
17
17
  meerschaum/_internal/shell/ValidAutoSuggest.py,sha256=bARjOWMidz0dvMelLUe6yRPto5l3gcEHYHqFDjoh22I,1280
18
18
  meerschaum/_internal/shell/__init__.py,sha256=yxJhe-zNcsD2D8iTL7d30k5nfrV_tcRKjQxFXvyR7gY,316
@@ -151,10 +151,10 @@ meerschaum/config/_jobs.py,sha256=gS_4mMGdmVP7WB4V5Sz8kYP0HmhWcMY2jSWGR7jX6cw,12
151
151
  meerschaum/config/_patch.py,sha256=qCv1LqZSDUI8mbaxcoKfmR-XI4Dmtz3Kzgsv1XFDhUo,1569
152
152
  meerschaum/config/_paths.py,sha256=QAJrcBQ05RJFZmPufezr_Grb1Wwr9y69pKFude0DJoE,13450
153
153
  meerschaum/config/_preprocess.py,sha256=-AEA8m_--KivZwTQ1sWN6LTn5sio_fUr2XZ51BO6wLs,1220
154
- meerschaum/config/_read_config.py,sha256=lZ-hd54iDiIGRbZWfoLZdSDmcKhDjxP6_FrGzNgVBD4,15964
154
+ meerschaum/config/_read_config.py,sha256=IsTVrk8xQXf0nxIjb_ASyecgjkktVqjDt_wJvVGP98Y,16266
155
155
  meerschaum/config/_shell.py,sha256=46_m49Txc5q1rGfCgO49ca48BODx45DQJi8D0zz1R18,4245
156
156
  meerschaum/config/_sync.py,sha256=nN5bLCHU8sFDdlPi7pQXuRVFcX457rZjOiALTvqRS_E,4332
157
- meerschaum/config/_version.py,sha256=PBKkx-VJF0gzpU0Bke6t11fcLjKw3UttlVqwgeY9-ws,74
157
+ meerschaum/config/_version.py,sha256=_QoS5TIMS5E6sPxGe-U6Lwv3Ch78VYhT5eicxMAX3kk,74
158
158
  meerschaum/config/environment.py,sha256=8L342aHoY4AzBfW1w4khlQIdVjSF4U-Uia3GObwVHZ0,7547
159
159
  meerschaum/config/paths.py,sha256=JjibeGN3YAdSNceRwsd42aNmeUrIgM6ndzC8qZAmNI0,621
160
160
  meerschaum/config/static.py,sha256=92fSGxoHFDOK9GEsN8NVbAEh9W7-eZ1BS6thyEqcjeI,359
@@ -235,7 +235,7 @@ meerschaum/core/Token/__init__.py,sha256=QYgyoCVkt7bru3CynDKP3wy41BY1NVyAta8smUR
235
235
  meerschaum/core/User/_User.py,sha256=Usvql5K7fYm-F6ZCcUQ5gJOCU9fye5DANNyhOetjotI,7631
236
236
  meerschaum/core/User/__init__.py,sha256=XNKm09yoXNjTs6xo8pBmIYe0ME8NLuux9a6L3QSmhb4,1008
237
237
  meerschaum/jobs/_Executor.py,sha256=ILEhIo9Y2SPDIlIBhtYGFWi3kyK1oo7_BaYyJYGnez4,4101
238
- meerschaum/jobs/_Job.py,sha256=Pt2MjbKjuB9uyFP603jC5Ks1D-x2W3vZ8Cwyf30WzMA,35478
238
+ meerschaum/jobs/_Job.py,sha256=R3yEmsek81aEdIDDJPUxolfM9H0cgBtElH986FpzP7g,35785
239
239
  meerschaum/jobs/__init__.py,sha256=39QFUMdjTuqKxXut5AJUUr24DWddo2oxYf2-nZdWSso,12889
240
240
  meerschaum/jobs/systemd.py,sha256=pFBHXakxvCKne5-_wx-JQlOMRc6gCUyRH8g0_HPGprA,24788
241
241
  meerschaum/models/__init__.py,sha256=9OCElgSTRzgqAIpi_FSUzTAVJtUwOIi71BGFsqkn6PU,814
@@ -249,19 +249,19 @@ meerschaum/utils/_get_pipes.py,sha256=TbV77VjQ9qqCLOy06-hlnfQI_hS6PTcXkbO7aQ2csd
249
249
  meerschaum/utils/dataframe.py,sha256=JDf8Gus9ZrCKdOrcHcefsPxudbKinuadD9rH9LocLEg,67612
250
250
  meerschaum/utils/debug.py,sha256=zBYxcLJ5Ymzz1J5BVv7DXAZ7CWd6vYN9uFFdWKmny9U,4334
251
251
  meerschaum/utils/interactive.py,sha256=t-6jWozXSqL7lYGDHuwiOjTgr-UKhdcg61q_eR5mikI,3196
252
- meerschaum/utils/misc.py,sha256=2iPG84S2lKdNY6dVCc7u5KMYrke469I9sg06KFA-_-g,50336
252
+ meerschaum/utils/misc.py,sha256=792Ejz6FYrCoqTiyeWnC4n8t3-wcGXfJv5InSQIKGlM,50451
253
253
  meerschaum/utils/networking.py,sha256=Sr_eYUGW8_UV9-k9LqRFf7xLtbUcsDucODyLCRsFRUc,1006
254
254
  meerschaum/utils/pipes.py,sha256=ZJzUBd93a33aKOtQN6Jc1rDfdEaKPJB4-0hOcipG5RQ,6284
255
255
  meerschaum/utils/pool.py,sha256=vkE42af4fjrTEJTxf6Ek3xGucm1MtEkpsSEiaVzNKHs,2655
256
256
  meerschaum/utils/process.py,sha256=Y7yk7b-OEADd28E40ffvIGLS3shi4-e604YWX5aFUDo,8214
257
- meerschaum/utils/prompt.py,sha256=jS0p_IKh_u2zwCB-l831A1vYil3ppWX1XWuW4mVQjfo,19584
257
+ meerschaum/utils/prompt.py,sha256=NmbSRJyrapH7UKMV1Ry_LIjj2POVTpNCLS2QeIogge0,19740
258
258
  meerschaum/utils/schedule.py,sha256=TMUjQ57UFStfZfQk7GdQItDHrH888O178vum1ID_Drk,11454
259
259
  meerschaum/utils/sql.py,sha256=qTD3IHGT1NEL2wXN0A0icKY8xSjax3ox0V7kZ3aRM8k,86250
260
260
  meerschaum/utils/threading.py,sha256=FV6mtQecZNmXJgirMcElX_6S0UXVaQHqhC4vzfqarbs,4022
261
261
  meerschaum/utils/typing.py,sha256=LEoM4LbAbGIArBAecdRrtiMfrP8ctm9idjqCGJszVi4,2772
262
262
  meerschaum/utils/warnings.py,sha256=voneQTz4OHFaL5JJ0Hu1lZS_8DrhJJfomPIvnFGq6pQ,6521
263
263
  meerschaum/utils/yaml.py,sha256=PoC1du0pn2hLwTHwL-zuOf_EBWZSbCGOz-P-AZ4BWN0,3901
264
- meerschaum/utils/daemon/Daemon.py,sha256=vGmgWDvKf_QWiQIJuXB8jgXsyzGMsPYfM3QcpRz55Sk,50349
264
+ meerschaum/utils/daemon/Daemon.py,sha256=UJ7QxR0P8oj9n91lUZp-msBR6MyLn1LmoGdY6_Wi4H4,50395
265
265
  meerschaum/utils/daemon/FileDescriptorInterceptor.py,sha256=I2Y_1eKCoaKCg8JxH7w9F6JiwOaswJz9IhGAT3maqBY,5200
266
266
  meerschaum/utils/daemon/RotatingFile.py,sha256=8KlA0llydMBoeBRpYyyy7BZSjcaS6ubDI3VGwitfrpg,25096
267
267
  meerschaum/utils/daemon/StdinFile.py,sha256=jzJTqo36-XPVjzPCctvY_nHbhAUjLk7wN1Eq6gvvP3E,4771
@@ -273,17 +273,17 @@ meerschaum/utils/formatting/__init__.py,sha256=gP-vHE6iqyqdrTHXVjKc5ML5lUz2MFwaJ
273
273
  meerschaum/utils/formatting/_jobs.py,sha256=c2Kp51vRJkDs2OeYLiePjSJCYhWj5az4b8uGodhG2a0,6637
274
274
  meerschaum/utils/formatting/_pipes.py,sha256=CbCgUQadFR7i9gKogTPQ7vCgFguy9BW_hIT_aIwPhCw,19565
275
275
  meerschaum/utils/formatting/_pprint.py,sha256=DCwopIQUu2xsCETsmbfSYVupG6Uz95gyZ63pa_nDMPo,3097
276
- meerschaum/utils/formatting/_shell.py,sha256=WyvitNy2vUPqkVYyDJ4jtICDw9iMRDPCKoHlTSSkr9Y,4057
276
+ meerschaum/utils/formatting/_shell.py,sha256=e1SPZIUGRF6TkiKn4tULPGCE6ZbaxFdOTqosJA5rWX4,4378
277
277
  meerschaum/utils/packages/__init__.py,sha256=XcyT6OjPMsRg6Ja9WJ1jQlynvmNlI1qb5IdtZT-nOI4,63659
278
278
  meerschaum/utils/packages/_packages.py,sha256=Kv6A8Vlkgo4Odkw5jFr_zMlRw8FUlnMX8iGT3MsKA0U,9432
279
279
  meerschaum/utils/packages/lazy_loader.py,sha256=VHnph3VozH29R4JnSSBfwtA5WKZYZQFT_GeQSShCnuc,2540
280
280
  meerschaum/utils/venv/_Venv.py,sha256=dF-FqP7Boq-g-anj2Ps-UkTOL2qJtxY3bdz0HWF2zT8,3726
281
281
  meerschaum/utils/venv/__init__.py,sha256=_mabNYZwj5_XQCsdo8sED4HY-1q5s-3em6Bml7bc4BE,27301
282
- meerschaum-3.0.0rc7.dist-info/licenses/LICENSE,sha256=jG2zQEdRNt88EgHUWPpXVWmOrOduUQRx7MnYV9YIPaw,11359
283
- meerschaum-3.0.0rc7.dist-info/licenses/NOTICE,sha256=OTA9Fcthjf5BRvWDDIcBC_xfLpeDV-RPZh3M-HQBRtQ,114
284
- meerschaum-3.0.0rc7.dist-info/METADATA,sha256=qXh8lJkn7oVIXb6h2I_sn2lm5dsot9CKEelnlQ1tpgo,25328
285
- meerschaum-3.0.0rc7.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
286
- meerschaum-3.0.0rc7.dist-info/entry_points.txt,sha256=5YBVzibw-0rNA_1VjB16z5GABsOGf-CDhW4yqH8C7Gc,88
287
- meerschaum-3.0.0rc7.dist-info/top_level.txt,sha256=bNoSiDj0El6buocix-FRoAtJOeq1qOF5rRm2u9i7Q6A,11
288
- meerschaum-3.0.0rc7.dist-info/zip-safe,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
289
- meerschaum-3.0.0rc7.dist-info/RECORD,,
282
+ meerschaum-3.0.0rc8.dist-info/licenses/LICENSE,sha256=jG2zQEdRNt88EgHUWPpXVWmOrOduUQRx7MnYV9YIPaw,11359
283
+ meerschaum-3.0.0rc8.dist-info/licenses/NOTICE,sha256=OTA9Fcthjf5BRvWDDIcBC_xfLpeDV-RPZh3M-HQBRtQ,114
284
+ meerschaum-3.0.0rc8.dist-info/METADATA,sha256=Ee2h7JqWrTBuy4gXcdx7ybfvZjfl4AdO89yPuDjU3W0,25328
285
+ meerschaum-3.0.0rc8.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
286
+ meerschaum-3.0.0rc8.dist-info/entry_points.txt,sha256=5YBVzibw-0rNA_1VjB16z5GABsOGf-CDhW4yqH8C7Gc,88
287
+ meerschaum-3.0.0rc8.dist-info/top_level.txt,sha256=bNoSiDj0El6buocix-FRoAtJOeq1qOF5rRm2u9i7Q6A,11
288
+ meerschaum-3.0.0rc8.dist-info/zip-safe,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
289
+ meerschaum-3.0.0rc8.dist-info/RECORD,,