meerschaum 2.4.0rc2__py3-none-any.whl → 2.4.1__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.
@@ -214,6 +214,13 @@ def update_content(*args):
214
214
  trigger = ctx.triggered[0]['prop_id'].split('.')[0] if not trigger else trigger
215
215
 
216
216
  session_data = args[-1]
217
+ mrsm_location_href = session_data.get('mrsm-location.href', None)
218
+ if (
219
+ initial_load
220
+ and mrsm_location_href
221
+ and not mrsm_location_href.rstrip('/').endswith('/dash')
222
+ ):
223
+ raise PreventUpdate
217
224
 
218
225
  ### NOTE: functions MUST return a list of content and a list of alerts
219
226
  triggers = {
@@ -5,7 +5,9 @@
5
5
  Define callbacks for the `/dash/pipes/` page.
6
6
  """
7
7
 
8
- from dash.dependencies import Input, Output
8
+ from urllib.parse import parse_qs
9
+
10
+ from dash.dependencies import Input, Output, State
9
11
  from dash import no_update
10
12
 
11
13
  import meerschaum as mrsm
@@ -13,17 +15,28 @@ from meerschaum.api.dash import dash_app
13
15
  from meerschaum.api.dash.pipes import build_pipe_card
14
16
  from meerschaum.api import CHECK_UPDATE
15
17
  from meerschaum.utils.packages import import_html, import_dcc
18
+ from meerschaum.api.dash.sessions import is_session_authenticated
19
+ from meerschaum.utils.typing import Optional, Dict, Any
16
20
  html, dcc = import_html(check_update=CHECK_UPDATE), import_dcc(check_update=CHECK_UPDATE)
17
21
 
18
22
 
19
23
  @dash_app.callback(
20
24
  Output('pipe-output-div', 'children'),
21
25
  Input('pipes-location', 'pathname'),
26
+ State('pipes-location', 'search'),
27
+ State('session-store', 'data'),
22
28
  )
23
- def render_page_from_url(pathname):
29
+ def render_page_from_url(
30
+ pathname: str,
31
+ pipe_search: str,
32
+ session_data: Optional[Dict[str, Any]],
33
+ ):
24
34
  if not str(pathname).startswith('/dash/pipes'):
25
35
  return no_update
26
36
 
37
+ session_id = (session_data or {}).get('session-id', None)
38
+ authenticated = is_session_authenticated(str(session_id))
39
+
27
40
  keys = pathname.replace('/dash/pipes', '').lstrip('/').rstrip('/').split('/')
28
41
  if len(keys) not in (2, 3):
29
42
  return no_update
@@ -31,11 +44,12 @@ def render_page_from_url(pathname):
31
44
  ck = keys[0]
32
45
  mk = keys[1]
33
46
  lk = keys[2] if len(keys) == 3 else None
47
+ query_params = parse_qs(pipe_search.lstrip('?')) if pipe_search else {}
48
+ instance = query_params.get('instance', [None])[0]
34
49
 
35
- pipe = mrsm.Pipe(ck, mk, lk)
36
- ### TODO Check if logged in
50
+ pipe = mrsm.Pipe(ck, mk, lk, instance=instance)
37
51
  return [
38
52
  html.Br(),
39
- build_pipe_card(pipe, authenticated=False),
53
+ build_pipe_card(pipe, authenticated=authenticated, include_manage=False),
40
54
  html.Br(),
41
55
  ]
@@ -10,6 +10,8 @@ from __future__ import annotations
10
10
  import json
11
11
  import shlex
12
12
  from textwrap import dedent
13
+ from urllib.parse import urlencode
14
+
13
15
  from dash.dependencies import Input, Output, State
14
16
  from meerschaum.utils.typing import List, Optional, Dict, Any, Tuple, Union
15
17
  from meerschaum.utils.misc import string_to_dict
@@ -30,6 +32,7 @@ html, dcc = import_html(check_update=CHECK_UPDATE), import_dcc(check_update=CHEC
30
32
  humanfriendly = attempt_import('humanfriendly', check_update=CHECK_UPDATE)
31
33
  pd = import_pandas()
32
34
 
35
+
33
36
  def pipe_from_ctx(ctx, trigger_property: str = 'n_clicks') -> Union[mrsm.Pipe, None]:
34
37
  """
35
38
  Return a `meerschaum.Pipe` object from a dynamic object with an
@@ -105,6 +108,7 @@ def pipes_from_state(
105
108
  def build_pipe_card(
106
109
  pipe: mrsm.Pipe,
107
110
  authenticated: bool = False,
111
+ include_manage: bool = True,
108
112
  _build_children_num: int = 10,
109
113
  ) -> 'dbc.Card':
110
114
  """
@@ -118,6 +122,9 @@ def build_pipe_card(
118
122
  authenticated: bool, default False
119
123
  If `True`, allow editing functionality to the card.
120
124
 
125
+ include_manage: bool, default True
126
+ If `True` and `authenticated` is `True`, include the "Manage" dropdown.
127
+
121
128
  Returns
122
129
  -------
123
130
  A dash bootstrap components Card representation of the pipe.
@@ -184,7 +191,7 @@ def build_pipe_card(
184
191
  size='sm',
185
192
  color='secondary',
186
193
  )
187
- ) if authenticated else [],
194
+ ) if authenticated and include_manage else [],
188
195
  width=2,
189
196
  ),
190
197
  dbc.Col(width=6),
@@ -217,8 +224,16 @@ def build_pipe_card(
217
224
 
218
225
  ]
219
226
 
227
+ query_params = {}
228
+ default_instance = get_config('meerschaum', 'instance')
229
+ if pipe.instance_keys != default_instance:
230
+ query_params['instance'] = pipe.instance_keys
220
231
  pipe_url = (
221
- f"/dash/pipes/{pipe.connector_keys}/{pipe.metric_key}/{pipe.location_key}"
232
+ f"/dash/pipes/"
233
+ + f"{pipe.connector_keys}/"
234
+ + f"{pipe.metric_key}/"
235
+ + (f"{pipe.location_key}" if pipe.location_key is not None else '')
236
+ + (f"?{urlencode(query_params)}" if query_params else "")
222
237
  )
223
238
 
224
239
  card_header_children = dbc.Row(
@@ -2,4 +2,4 @@
2
2
  Specify the Meerschaum release version.
3
3
  """
4
4
 
5
- __version__ = "2.4.0rc2"
5
+ __version__ = "2.4.1"
@@ -909,7 +909,7 @@ def get_pipe_data_query(
909
909
 
910
910
  cols_names = [sql_item_name(col, self.flavor, None) for col in select_columns]
911
911
  select_cols_str = (
912
- 'SELECT\n'
912
+ 'SELECT\n '
913
913
  + ',\n '.join(
914
914
  [
915
915
  (
@@ -953,14 +953,14 @@ def get_pipe_data_query(
953
953
  warn(
954
954
  f"No datetime could be determined for {pipe}."
955
955
  + "\n Ignoring begin and end...",
956
- stack = False,
956
+ stack=False,
957
957
  )
958
958
  begin, end = None, None
959
959
  else:
960
960
  warn(
961
961
  f"A datetime wasn't specified for {pipe}.\n"
962
962
  + f" Using column \"{_dt}\" for datetime bounds...",
963
- stack = False,
963
+ stack=False,
964
964
  )
965
965
 
966
966
  is_dt_bound = False
@@ -1014,9 +1014,12 @@ def get_pipe_data_query(
1014
1014
 
1015
1015
  if isinstance(limit, int):
1016
1016
  if self.flavor == 'mssql':
1017
- query = f'SELECT TOP {limit} ' + query[len("SELECT *"):]
1017
+ query = f'SELECT TOP {limit}\n' + query[len("SELECT "):]
1018
1018
  elif self.flavor == 'oracle':
1019
- query = f"SELECT * FROM (\n {query}\n)\nWHERE ROWNUM = 1"
1019
+ query = (
1020
+ f"SELECT * FROM (\n {query}\n)\n"
1021
+ + f"WHERE ROWNUM IN ({', '.join([str(i) for i in range(1, limit+1)])})"
1022
+ )
1020
1023
  else:
1021
1024
  query += f"\nLIMIT {limit}"
1022
1025
 
@@ -106,7 +106,7 @@ def get_data(
106
106
  from meerschaum.connectors import get_connector_plugin
107
107
  from meerschaum.utils.misc import iterate_chunks, items_str
108
108
  from meerschaum.utils.dtypes import to_pandas_dtype
109
- from meerschaum.utils.dataframe import add_missing_cols_to_df
109
+ from meerschaum.utils.dataframe import add_missing_cols_to_df, df_is_chunk_generator
110
110
  from meerschaum.utils.packages import attempt_import
111
111
  dd = attempt_import('dask.dataframe') if as_dask else None
112
112
  dask = attempt_import('dask') if as_dask else None
@@ -122,6 +122,8 @@ def get_data(
122
122
  as_iterator = as_iterator or as_chunks
123
123
 
124
124
  def _sort_df(_df):
125
+ if df_is_chunk_generator(_df):
126
+ return _df
125
127
  dt_col = self.columns.get('datetime', None)
126
128
  indices = [] if dt_col not in _df.columns else [dt_col]
127
129
  non_dt_cols = [
@@ -130,12 +132,19 @@ def get_data(
130
132
  if col_ix != 'datetime' and col in _df.columns
131
133
  ]
132
134
  indices.extend(non_dt_cols)
133
- _df.sort_values(
134
- by=indices,
135
- inplace=True,
136
- ascending=(str(order).lower() == 'asc')
137
- )
138
- _df.reset_index(drop=True, inplace=True)
135
+ if 'dask' not in _df.__module__:
136
+ _df.sort_values(
137
+ by=indices,
138
+ inplace=True,
139
+ ascending=(str(order).lower() == 'asc'),
140
+ )
141
+ _df.reset_index(drop=True, inplace=True)
142
+ else:
143
+ _df = _df.sort_values(
144
+ by=indices,
145
+ ascending=(str(order).lower() == 'asc'),
146
+ )
147
+ _df = _df.reset_index(drop=True)
139
148
  if limit is not None and len(_df) > limit:
140
149
  return _df.head(limit)
141
150
  return _df
@@ -26,8 +26,6 @@ from meerschaum.utils.typing import (
26
26
  SuccessTuple,
27
27
  Dict,
28
28
  List,
29
- Iterable,
30
- Generator,
31
29
  )
32
30
  from meerschaum.utils.warnings import warn, error
33
31
 
@@ -11,11 +11,12 @@ import pathlib
11
11
  import meerschaum as mrsm
12
12
  from meerschaum.utils.typing import Dict, Optional, List, SuccessTuple
13
13
 
14
- from meerschaum.jobs._Job import Job
14
+ from meerschaum.jobs._Job import Job, StopMonitoringLogs
15
15
  from meerschaum.jobs._Executor import Executor
16
16
 
17
17
  __all__ = (
18
18
  'Job',
19
+ 'StopMonitoringLogs',
19
20
  'systemd',
20
21
  'get_jobs',
21
22
  'get_filtered_jobs',
@@ -49,6 +49,7 @@ packages: Dict[str, Dict[str, str]] = {
49
49
  'more_itertools' : 'more-itertools>=8.7.0',
50
50
  'fasteners' : 'fasteners>=0.19.0',
51
51
  'virtualenv' : 'virtualenv>=20.1.0',
52
+ 'attrs' : 'attrs<24.2.0',
52
53
  'apscheduler' : 'APScheduler>=4.0.0a5',
53
54
  'uv' : 'uv>=0.2.11',
54
55
  },
@@ -101,6 +101,7 @@ def schedule_function(
101
101
  kw['debug'] = debug
102
102
  kw = filter_keywords(function, **kw)
103
103
 
104
+ _ = mrsm.attempt_import('attrs', lazy=False)
104
105
  apscheduler = mrsm.attempt_import('apscheduler', lazy=False)
105
106
  now = round_time(datetime.now(timezone.utc), timedelta(minutes=1))
106
107
  trigger = parse_schedule(schedule, now=now)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: meerschaum
3
- Version: 2.4.0rc2
3
+ Version: 2.4.1
4
4
  Summary: Sync Time-Series Pipes with Meerschaum
5
5
  Home-page: https://meerschaum.io
6
6
  Author: Bennett Meares
@@ -76,6 +76,7 @@ Requires-Dist: prompt-toolkit >=3.0.39 ; extra == 'api'
76
76
  Requires-Dist: more-itertools >=8.7.0 ; extra == 'api'
77
77
  Requires-Dist: fasteners >=0.19.0 ; extra == 'api'
78
78
  Requires-Dist: virtualenv >=20.1.0 ; extra == 'api'
79
+ Requires-Dist: attrs <24.2.0 ; extra == 'api'
79
80
  Requires-Dist: APScheduler >=4.0.0a5 ; extra == 'api'
80
81
  Requires-Dist: uv >=0.2.11 ; extra == 'api'
81
82
  Requires-Dist: pprintpp >=0.4.0 ; extra == 'api'
@@ -126,6 +127,7 @@ Requires-Dist: prompt-toolkit >=3.0.39 ; extra == 'core'
126
127
  Requires-Dist: more-itertools >=8.7.0 ; extra == 'core'
127
128
  Requires-Dist: fasteners >=0.19.0 ; extra == 'core'
128
129
  Requires-Dist: virtualenv >=20.1.0 ; extra == 'core'
130
+ Requires-Dist: attrs <24.2.0 ; extra == 'core'
129
131
  Requires-Dist: APScheduler >=4.0.0a5 ; extra == 'core'
130
132
  Requires-Dist: uv >=0.2.11 ; extra == 'core'
131
133
  Provides-Extra: dash
@@ -209,6 +211,7 @@ Requires-Dist: prompt-toolkit >=3.0.39 ; extra == 'full'
209
211
  Requires-Dist: more-itertools >=8.7.0 ; extra == 'full'
210
212
  Requires-Dist: fasteners >=0.19.0 ; extra == 'full'
211
213
  Requires-Dist: virtualenv >=20.1.0 ; extra == 'full'
214
+ Requires-Dist: attrs <24.2.0 ; extra == 'full'
212
215
  Requires-Dist: APScheduler >=4.0.0a5 ; extra == 'full'
213
216
  Requires-Dist: uv >=0.2.11 ; extra == 'full'
214
217
  Requires-Dist: dill >=0.3.3 ; extra == 'full'
@@ -300,6 +303,7 @@ Requires-Dist: prompt-toolkit >=3.0.39 ; extra == 'sql'
300
303
  Requires-Dist: more-itertools >=8.7.0 ; extra == 'sql'
301
304
  Requires-Dist: fasteners >=0.19.0 ; extra == 'sql'
302
305
  Requires-Dist: virtualenv >=20.1.0 ; extra == 'sql'
306
+ Requires-Dist: attrs <24.2.0 ; extra == 'sql'
303
307
  Requires-Dist: APScheduler >=4.0.0a5 ; extra == 'sql'
304
308
  Requires-Dist: uv >=0.2.11 ; extra == 'sql'
305
309
  Provides-Extra: stack
@@ -62,7 +62,7 @@ meerschaum/api/dash/connectors.py,sha256=nJxBOFldtCMJLYjUSVYZwX5BO-LNjTNHgoEaXe-
62
62
  meerschaum/api/dash/graphs.py,sha256=wJUDWzcLN8-C3xko6rj0F2v7Rt8YDkSXoVkkXJjYGIk,2046
63
63
  meerschaum/api/dash/jobs.py,sha256=kcWBdOk3tNQTTuN91nd5qbS4u8MmAl3SX0gkAfdKnpk,7279
64
64
  meerschaum/api/dash/keys.py,sha256=hzEVeN60SAfVTVSO5lajGaykxRIKGhj9Ph00HRJnNoE,12598
65
- meerschaum/api/dash/pipes.py,sha256=w-VEE4_fvSucsOwPLSUJRtRXtlpOgi3EBAgs78Sj0m0,21221
65
+ meerschaum/api/dash/pipes.py,sha256=mA2i7fsqNcOnQCt4r0mtOmCCQyNl3mEzgqGc5GHttWg,21764
66
66
  meerschaum/api/dash/plugins.py,sha256=KdfG04f6SsUpBg-nm7MUJegFGuElOj-GAkxDX98hi60,3768
67
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
@@ -77,10 +77,10 @@ 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=AI7jxthNQWPVFi9wOeKkjx5dCvy9J7fTBNanHfA5i8g,32500
80
+ meerschaum/api/dash/callbacks/dashboard.py,sha256=c0gEHVfxR4QeB87F3Bx4_cLK5xSrfqAzsiz7MwQRvdU,32731
81
81
  meerschaum/api/dash/callbacks/jobs.py,sha256=F0H8dDUMOr_1C6Pr8yNQCAHhqgJQklHBiOzstOjiQQo,7282
82
82
  meerschaum/api/dash/callbacks/login.py,sha256=mEvMgV-f85H6DvqNdTvJPoiwHqTnhWY2nf_zLB26ipE,2876
83
- meerschaum/api/dash/callbacks/pipes.py,sha256=OzSefhVkKBEmGserZVo2NV3yrh0XDP1IeWn3PO2YwD0,1098
83
+ meerschaum/api/dash/callbacks/pipes.py,sha256=AJcs-1BTc_gCxIE6Y2-DM7GB2Cg4QS3V_1HMCzwHF1Q,1688
84
84
  meerschaum/api/dash/callbacks/plugins.py,sha256=znPgw_Uf3__QEjKxoIHADfjVNubTehCDaTJ02b16pQo,2760
85
85
  meerschaum/api/dash/callbacks/register.py,sha256=KfMFgXWiFkemz0YriSPaLQBVnFDG8q6_t9gHuempOS0,3666
86
86
  meerschaum/api/dash/pages/__init__.py,sha256=ZZAWLCgFjl8Gh5MzqeWM7HkXP3uSUuUn-73vQisnAKc,312
@@ -142,7 +142,7 @@ 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=B5P7a5MTnW8iGJpqOWvRl0nEgpeslAo7vj61JOD9jx0,74
145
+ meerschaum/config/_version.py,sha256=MWDIPuVPrx0N5vxzIOy58EultrUEFqxSmbIAnQtAUAo,71
146
146
  meerschaum/config/paths.py,sha256=JjibeGN3YAdSNceRwsd42aNmeUrIgM6ndzC8qZAmNI0,621
147
147
  meerschaum/config/resources/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
148
148
  meerschaum/config/stack/__init__.py,sha256=jHnk1HE7riEVOFbt0SHgTM7kmrdRVic1raQSs220wn0,10550
@@ -175,7 +175,7 @@ meerschaum/connectors/sql/_cli.py,sha256=1SgnWeMIAihoxp4FzbNrcq1npXf0dSOQnCntpU9
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=p1oicTEu-fjnFt7Hk1LKsv2FIm5HczgzaJxHZFFQnNk,99518
178
+ meerschaum/connectors/sql/_pipes.py,sha256=cVdc929CIjyPPzM_QNVEkNfvROrksakEifgqJbm6jH0,99622
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
@@ -195,7 +195,7 @@ meerschaum/core/Pipe/_attributes.py,sha256=8nHMCZnQexAcG1ONXNqTldEowD7gstd34lDUc
195
195
  meerschaum/core/Pipe/_bootstrap.py,sha256=evyi07kkzAVMj66HfZkbYdcWk_oHUDsl6f13EnSPMYs,7723
196
196
  meerschaum/core/Pipe/_clear.py,sha256=yFAYQnDmL3m6DzyAutgnBDXSOL9gjIrLvlQXd86YFV0,2193
197
197
  meerschaum/core/Pipe/_copy.py,sha256=PcOeNUb0B4-HehTAAnBpjyT4uLLTR6VQOarY0SFA9wk,2912
198
- meerschaum/core/Pipe/_data.py,sha256=5NBWFdy0P20yFEbnX4q0J1e3VmVvrpx8kl2utAhNPr8,22429
198
+ meerschaum/core/Pipe/_data.py,sha256=pksExwAY1h0NAOgQi5vFqN6jcE0CarQAJPDKlXotYLI,22773
199
199
  meerschaum/core/Pipe/_deduplicate.py,sha256=E3oXu6-0vZhzacv0GHri9yHd7XrSlIStZ--KE2EqeVM,10274
200
200
  meerschaum/core/Pipe/_delete.py,sha256=1geNp9BgrocXP1gt76dMbnlJWKYFMuSNqPFA4K4-hXE,2118
201
201
  meerschaum/core/Pipe/_drop.py,sha256=gIKdHWm0RsIgC2nu768MtFnPbCXyiJjNxaiT1obyuIo,1036
@@ -204,14 +204,14 @@ meerschaum/core/Pipe/_edit.py,sha256=HrKWe9vhqKaNOjOcJzW5BNbaUBPIbgNAhJEK8OMsy7c
204
204
  meerschaum/core/Pipe/_fetch.py,sha256=LtYqZSN2kwc5Tl2gQ5kSmGN7Ombv86k1zDNTP3SUF1k,5417
205
205
  meerschaum/core/Pipe/_register.py,sha256=Sd5xaAW8H7uLTIoommcKb-6kHPRuHJLWNSbPnt2UbvA,2240
206
206
  meerschaum/core/Pipe/_show.py,sha256=nG50y8eBT9TVuKkRgAKtNDNIxysJvMNxfu__lkL1F9k,1352
207
- meerschaum/core/Pipe/_sync.py,sha256=ha0bk3FEw3foaWIpzYYxzAeFjXoOubVL-avfowKJImE,32132
207
+ meerschaum/core/Pipe/_sync.py,sha256=ly87zq2YmGiFrjL8ltfvy-MXBrxtxpR3Kho8rCZQ8dc,32103
208
208
  meerschaum/core/Pipe/_verify.py,sha256=GDCFRWWoaqXXfLQaTlS9_J7OqjuqA_JqXvUWZUOEclk,14218
209
209
  meerschaum/core/Plugin/__init__.py,sha256=UXg64EvJPgI1PCxkY_KM02-ZmBm4FZpLPIQR_uSJJDc,137
210
210
  meerschaum/core/User/_User.py,sha256=JZ9Y1tsjZe-cgD24m9YfZ6ZwSOKn_sHc4rbQ7KblBz8,6592
211
211
  meerschaum/core/User/__init__.py,sha256=lJ7beIZTG9sO4dAi3367fFBl17dXYEWHKi7HoaPlDyk,193
212
212
  meerschaum/jobs/_Executor.py,sha256=qM62BhFTM4tyJ7p90KOM0y3qyeRY9k3ZV_aTDJMHnO8,1682
213
213
  meerschaum/jobs/_Job.py,sha256=hkjHqG5YPej5rC4nwdU7Ay_mjep9Fy4HO5B-eqdBdfo,31984
214
- meerschaum/jobs/__init__.py,sha256=QW_uZfuv_WQmqVm71QNYsPdOEr5c8fq-l8vLr7aJzm8,12131
214
+ meerschaum/jobs/__init__.py,sha256=q0f_2zWw91sAyafP50IgMM06abe-BIYSR_SCWmI4W3E,12177
215
215
  meerschaum/jobs/systemd.py,sha256=Rq-tsDPslG17ZhpKMrVJ5r8Z0IPr6DEc9APObfIoXCg,24614
216
216
  meerschaum/plugins/_Plugin.py,sha256=rTiGNQ9nIQeVSG_P9C6DHCMLW0K-J7zzuu3FjNXUOlE,34056
217
217
  meerschaum/plugins/__init__.py,sha256=trMQ53qgP7ikJhhV_uXzqJw6X1NDz2rPOGXFk40bb1Y,26190
@@ -226,7 +226,7 @@ meerschaum/utils/networking.py,sha256=Sr_eYUGW8_UV9-k9LqRFf7xLtbUcsDucODyLCRsFRU
226
226
  meerschaum/utils/pool.py,sha256=vkE42af4fjrTEJTxf6Ek3xGucm1MtEkpsSEiaVzNKHs,2655
227
227
  meerschaum/utils/process.py,sha256=o7UtTQX87YGkg2dItPhlvN7gNQPkElXTYSzKf5Ro8Uc,7474
228
228
  meerschaum/utils/prompt.py,sha256=0asF_ndumQIN7p5kEOzK-ldsdE4m8FFapcT3-4wgPi8,19010
229
- meerschaum/utils/schedule.py,sha256=WSJ0eDGvCVxkQwbUc_7vNm0uuKf9WJcY2NCZZdbnZrk,10837
229
+ meerschaum/utils/schedule.py,sha256=6I2TFGa1aPRU9wTdd3YFrJq-DCPpnl-sTWeFEnrINYA,10886
230
230
  meerschaum/utils/sql.py,sha256=4sCNEpgUd6uFz6ySs4nnUMVaOT0YAvPM1ZlQYJTSF-0,46656
231
231
  meerschaum/utils/threading.py,sha256=3N8JXPAnwqJiSjuQcbbJg3Rv9-CCUMJpeQRfKFR7MaA,2489
232
232
  meerschaum/utils/typing.py,sha256=U3MC347sh1umpa3Xr1k71eADyDmk4LB6TnVCpq8dVzI,2830
@@ -246,15 +246,15 @@ meerschaum/utils/formatting/_pipes.py,sha256=wy0iWJFsFl3X2VloaiA_gp9Yx9w6tD3FQZv
246
246
  meerschaum/utils/formatting/_pprint.py,sha256=tgrT3FyGyu5CWJYysqK3kX1xdZYorlbOk9fcU_vt9Qg,3096
247
247
  meerschaum/utils/formatting/_shell.py,sha256=OMFh3cSZNr83z8m265irkS_JtEWHwjkEY2ybnMIOllY,3774
248
248
  meerschaum/utils/packages/__init__.py,sha256=aByhWPf4H7yilmSkEP4Qa0IXsZv6Aq1l19b40QydvG4,63393
249
- meerschaum/utils/packages/_packages.py,sha256=I1tXtYbMlITIVmoJhYQhWtCcmOwvK7iHdbbFrFFBVZg,8094
249
+ meerschaum/utils/packages/_packages.py,sha256=987HQ1SnjGh2r4Gp8pziX7VUzUHm-tM_g2oYsDdLfpM,8149
250
250
  meerschaum/utils/packages/lazy_loader.py,sha256=VHnph3VozH29R4JnSSBfwtA5WKZYZQFT_GeQSShCnuc,2540
251
251
  meerschaum/utils/venv/_Venv.py,sha256=sBnlmxHdAh2bx8btfVoD79-H9-cYsv5lP02IIXkyECs,3553
252
252
  meerschaum/utils/venv/__init__.py,sha256=bLAWnllKDuE_z6bLk7gLh4mI3Sp1j5hsboTqPKOQq84,24361
253
- meerschaum-2.4.0rc2.dist-info/LICENSE,sha256=jG2zQEdRNt88EgHUWPpXVWmOrOduUQRx7MnYV9YIPaw,11359
254
- meerschaum-2.4.0rc2.dist-info/METADATA,sha256=LhQQcwQDADYwB2yA8vZbWx_AK9X__r3k6lUr_cmzh-o,24104
255
- meerschaum-2.4.0rc2.dist-info/NOTICE,sha256=OTA9Fcthjf5BRvWDDIcBC_xfLpeDV-RPZh3M-HQBRtQ,114
256
- meerschaum-2.4.0rc2.dist-info/WHEEL,sha256=cVxcB9AmuTcXqmwrtPhNK88dr7IR_b6qagTj0UvIEbY,91
257
- meerschaum-2.4.0rc2.dist-info/entry_points.txt,sha256=5YBVzibw-0rNA_1VjB16z5GABsOGf-CDhW4yqH8C7Gc,88
258
- meerschaum-2.4.0rc2.dist-info/top_level.txt,sha256=bNoSiDj0El6buocix-FRoAtJOeq1qOF5rRm2u9i7Q6A,11
259
- meerschaum-2.4.0rc2.dist-info/zip-safe,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
260
- meerschaum-2.4.0rc2.dist-info/RECORD,,
253
+ meerschaum-2.4.1.dist-info/LICENSE,sha256=jG2zQEdRNt88EgHUWPpXVWmOrOduUQRx7MnYV9YIPaw,11359
254
+ meerschaum-2.4.1.dist-info/METADATA,sha256=akMpC-0UIHkMfPhDD1FqFnlWqTD3AXae8OtWtWJRyyc,24287
255
+ meerschaum-2.4.1.dist-info/NOTICE,sha256=OTA9Fcthjf5BRvWDDIcBC_xfLpeDV-RPZh3M-HQBRtQ,114
256
+ meerschaum-2.4.1.dist-info/WHEEL,sha256=5Mi1sN9lKoFv_gxcPtisEVrJZihrm_beibeg5R6xb4I,91
257
+ meerschaum-2.4.1.dist-info/entry_points.txt,sha256=5YBVzibw-0rNA_1VjB16z5GABsOGf-CDhW4yqH8C7Gc,88
258
+ meerschaum-2.4.1.dist-info/top_level.txt,sha256=bNoSiDj0El6buocix-FRoAtJOeq1qOF5rRm2u9i7Q6A,11
259
+ meerschaum-2.4.1.dist-info/zip-safe,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
260
+ meerschaum-2.4.1.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: setuptools (74.1.2)
2
+ Generator: setuptools (75.0.0)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5