meerschaum 2.8.4__py3-none-any.whl → 2.9.0.dev1__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 (31) hide show
  1. meerschaum/api/_chunks.py +67 -0
  2. meerschaum/api/dash/callbacks/custom.py +23 -2
  3. meerschaum/api/dash/callbacks/dashboard.py +41 -3
  4. meerschaum/api/dash/components.py +27 -19
  5. meerschaum/api/dash/pages/dashboard.py +11 -9
  6. meerschaum/api/dash/pages/plugins.py +31 -27
  7. meerschaum/api/dash/webterm.py +6 -3
  8. meerschaum/api/resources/static/css/dash.css +1 -1
  9. meerschaum/api/resources/templates/termpage.html +4 -0
  10. meerschaum/api/routes/_pipes.py +191 -78
  11. meerschaum/config/_default.py +3 -0
  12. meerschaum/config/_version.py +1 -1
  13. meerschaum/connectors/api/_APIConnector.py +12 -1
  14. meerschaum/connectors/api/_pipes.py +27 -15
  15. meerschaum/connectors/api/_plugins.py +51 -45
  16. meerschaum/connectors/api/_request.py +1 -1
  17. meerschaum/connectors/parse.py +1 -2
  18. meerschaum/core/Pipe/_data.py +1 -2
  19. meerschaum/plugins/_Plugin.py +21 -5
  20. meerschaum/plugins/__init__.py +6 -4
  21. meerschaum/utils/formatting/_shell.py +1 -4
  22. meerschaum/utils/packages/_packages.py +1 -0
  23. meerschaum/utils/venv/__init__.py +2 -0
  24. {meerschaum-2.8.4.dist-info → meerschaum-2.9.0.dev1.dist-info}/METADATA +4 -1
  25. {meerschaum-2.8.4.dist-info → meerschaum-2.9.0.dev1.dist-info}/RECORD +31 -30
  26. {meerschaum-2.8.4.dist-info → meerschaum-2.9.0.dev1.dist-info}/WHEEL +1 -1
  27. {meerschaum-2.8.4.dist-info → meerschaum-2.9.0.dev1.dist-info}/LICENSE +0 -0
  28. {meerschaum-2.8.4.dist-info → meerschaum-2.9.0.dev1.dist-info}/NOTICE +0 -0
  29. {meerschaum-2.8.4.dist-info → meerschaum-2.9.0.dev1.dist-info}/entry_points.txt +0 -0
  30. {meerschaum-2.8.4.dist-info → meerschaum-2.9.0.dev1.dist-info}/top_level.txt +0 -0
  31. {meerschaum-2.8.4.dist-info → meerschaum-2.9.0.dev1.dist-info}/zip-safe +0 -0
@@ -7,21 +7,25 @@ Manage plugins via the API connector
7
7
  """
8
8
 
9
9
  from __future__ import annotations
10
- from meerschaum.utils.typing import Union, Any, Optional, SuccessTuple, Mapping, Sequence
10
+
11
+ import meerschaum as mrsm
12
+ from meerschaum.utils.typing import Union, Any, Optional, SuccessTuple, List, Dict
13
+
11
14
 
12
15
  def plugin_r_url(
13
- plugin: Union[meerschaum.core.Plugin, str]
14
- ) -> str:
16
+ plugin: Union[mrsm.core.Plugin, str],
17
+ ) -> str:
15
18
  """Generate a relative URL path from a Plugin."""
16
19
  from meerschaum.config.static import STATIC_CONFIG
17
20
  return f"{STATIC_CONFIG['api']['endpoints']['plugins']}/{plugin}"
18
21
 
22
+
19
23
  def register_plugin(
20
- self,
21
- plugin: meerschaum.core.Plugin,
22
- make_archive: bool = True,
23
- debug: bool = False,
24
- ) -> SuccessTuple:
24
+ self,
25
+ plugin: mrsm.core.Plugin,
26
+ make_archive: bool = True,
27
+ debug: bool = False,
28
+ ) -> SuccessTuple:
25
29
  """Register a plugin and upload its archive."""
26
30
  import json
27
31
  archive_path = plugin.make_tar(debug=debug) if make_archive else plugin.archive_path
@@ -34,27 +38,30 @@ def register_plugin(
34
38
  r_url = plugin_r_url(plugin)
35
39
  try:
36
40
  response = self.post(r_url, files=files, params=metadata, debug=debug)
37
- except Exception as e:
41
+ except Exception:
38
42
  return False, f"Failed to register plugin '{plugin}'."
39
43
  finally:
40
44
  file_pointer.close()
41
45
 
42
46
  try:
43
47
  success, msg = json.loads(response.text)
44
- except Exception as e:
48
+ except Exception:
45
49
  return False, response.text
46
50
 
47
51
  return success, msg
48
52
 
53
+
49
54
  def install_plugin(
50
- self,
51
- name: str,
52
- skip_deps: bool = False,
53
- force: bool = False,
54
- debug: bool = False
55
- ) -> SuccessTuple:
55
+ self,
56
+ name: str,
57
+ skip_deps: bool = False,
58
+ force: bool = False,
59
+ debug: bool = False
60
+ ) -> SuccessTuple:
56
61
  """Download and attempt to install a plugin from the API."""
57
- import os, pathlib, json
62
+ import os
63
+ import pathlib
64
+ import json
58
65
  from meerschaum.core import Plugin
59
66
  from meerschaum.config._paths import PLUGINS_TEMP_RESOURCES_PATH
60
67
  from meerschaum.utils.debug import dprint
@@ -75,41 +82,39 @@ def install_plugin(
75
82
  success, msg = tuple(j)
76
83
  elif isinstance(j, dict) and 'detail' in j:
77
84
  success, msg = False, fail_msg
78
- except Exception as e:
85
+ except Exception:
79
86
  success, msg = False, fail_msg
80
87
  return success, msg
81
88
  plugin = Plugin(name, archive_path=archive_path, repo_connector=self)
82
89
  return plugin.install(skip_deps=skip_deps, force=force, debug=debug)
83
90
 
91
+
84
92
  def get_plugins(
85
- self,
86
- user_id : Optional[int] = None,
87
- search_term : Optional[str] = None,
88
- debug : bool = False
89
- ) -> Sequence[str]:
93
+ self,
94
+ user_id: Optional[int] = None,
95
+ search_term: Optional[str] = None,
96
+ debug: bool = False
97
+ ) -> List[str]:
90
98
  """Return a list of registered plugin names.
91
99
 
92
100
  Parameters
93
101
  ----------
94
- user_id :
102
+ user_id: Optional[int], default None
95
103
  If specified, return all plugins from a certain user.
96
- user_id : Optional[int] :
97
- (Default value = None)
98
- search_term : Optional[str] :
99
- (Default value = None)
100
- debug : bool :
101
- (Default value = False)
104
+
105
+ search_term: Optional[str], default None
106
+ If specified, return plugins beginning with this string.
102
107
 
103
108
  Returns
104
109
  -------
105
-
110
+ A list of plugin names.
106
111
  """
107
112
  import json
108
- from meerschaum.utils.warnings import warn, error
113
+ from meerschaum.utils.warnings import error
109
114
  from meerschaum.config.static import STATIC_CONFIG
110
115
  response = self.get(
111
116
  STATIC_CONFIG['api']['endpoints']['plugins'],
112
- params = {'user_id' : user_id, 'search_term' : search_term},
117
+ params = {'user_id': user_id, 'search_term': search_term},
113
118
  use_token = True,
114
119
  debug = debug
115
120
  )
@@ -120,11 +125,12 @@ def get_plugins(
120
125
  error(response.text)
121
126
  return plugins
122
127
 
128
+
123
129
  def get_plugin_attributes(
124
- self,
125
- plugin: meerschaum.core.Plugin,
126
- debug: bool = False
127
- ) -> Mapping[str, Any]:
130
+ self,
131
+ plugin: mrsm.core.Plugin,
132
+ debug: bool = False
133
+ ) -> Dict[str, Any]:
128
134
  """
129
135
  Return a plugin's attributes.
130
136
  """
@@ -136,7 +142,7 @@ def get_plugin_attributes(
136
142
  if isinstance(attributes, str) and attributes and attributes[0] == '{':
137
143
  try:
138
144
  attributes = json.loads(attributes)
139
- except Exception as e:
145
+ except Exception:
140
146
  pass
141
147
  if not isinstance(attributes, dict):
142
148
  error(response.text)
@@ -145,23 +151,23 @@ def get_plugin_attributes(
145
151
  return {}
146
152
  return attributes
147
153
 
154
+
148
155
  def delete_plugin(
149
- self,
150
- plugin: meerschaum.core.Plugin,
151
- debug: bool = False
152
- ) -> SuccessTuple:
156
+ self,
157
+ plugin: mrsm.core.Plugin,
158
+ debug: bool = False
159
+ ) -> SuccessTuple:
153
160
  """Delete a plugin from an API repository."""
154
161
  import json
155
162
  r_url = plugin_r_url(plugin)
156
163
  try:
157
164
  response = self.delete(r_url, debug=debug)
158
- except Exception as e:
165
+ except Exception:
159
166
  return False, f"Failed to delete plugin '{plugin}'."
160
167
 
161
168
  try:
162
169
  success, msg = json.loads(response.text)
163
- except Exception as e:
170
+ except Exception:
164
171
  return False, response.text
165
172
 
166
173
  return success, msg
167
-
@@ -95,7 +95,7 @@ def make_request(
95
95
  return self.session.request(
96
96
  method.upper(),
97
97
  request_url,
98
- headers = headers,
98
+ headers=headers,
99
99
  **kwargs
100
100
  )
101
101
 
@@ -140,7 +140,6 @@ def is_valid_connector_keys(
140
140
  """
141
141
  try:
142
142
  success = parse_connector_keys(keys, construct=False) is not None
143
- except Exception as e:
143
+ except Exception:
144
144
  success = False
145
145
  return success
146
-
@@ -88,9 +88,8 @@ def get_data(
88
88
  limit: Optional[int], default None
89
89
  If provided, cap the dataframe to this many rows.
90
90
 
91
- fresh: bool, default True
91
+ fresh: bool, default False
92
92
  If `True`, skip local cache and directly query the instance connector.
93
- Defaults to `True`.
94
93
 
95
94
  debug: bool, default False
96
95
  Verbosity toggle.
@@ -450,7 +450,7 @@ class Plugin:
450
450
  success, msg = False, (
451
451
  f"Failed to run post-install setup for plugin '{self}'." + '\n' +
452
452
  f"Check `setup()` in '{self.__file__}' for more information " +
453
- f"(no error message provided)."
453
+ "(no error message provided)."
454
454
  )
455
455
  else:
456
456
  success, msg = True, success_msg
@@ -458,7 +458,7 @@ class Plugin:
458
458
  success = True
459
459
  msg = (
460
460
  f"Post-install for plugin '{self}' returned None. " +
461
- f"Assuming plugin successfully installed."
461
+ "Assuming plugin successfully installed."
462
462
  )
463
463
  warn(msg)
464
464
  else:
@@ -469,7 +469,7 @@ class Plugin:
469
469
  )
470
470
 
471
471
  _ongoing_installations.remove(self.full_name)
472
- module = self.module
472
+ _ = self.module
473
473
  return success, msg
474
474
 
475
475
 
@@ -716,13 +716,14 @@ class Plugin:
716
716
  return required
717
717
 
718
718
 
719
- def get_required_plugins(self, debug: bool=False) -> List[meerschaum.plugins.Plugin]:
719
+ def get_required_plugins(self, debug: bool=False) -> List[mrsm.plugins.Plugin]:
720
720
  """
721
721
  Return a list of required Plugin objects.
722
722
  """
723
723
  from meerschaum.utils.warnings import warn
724
724
  from meerschaum.config import get_config
725
725
  from meerschaum.config.static import STATIC_CONFIG
726
+ from meerschaum.connectors.parse import is_valid_connector_keys
726
727
  plugins = []
727
728
  _deps = self.get_dependencies(debug=debug)
728
729
  sep = STATIC_CONFIG['plugins']['repo_separator']
@@ -731,11 +732,13 @@ class Plugin:
731
732
  if _d.startswith('plugin:') and len(_d) > len('plugin:')
732
733
  ]
733
734
  default_repo_keys = get_config('meerschaum', 'default_repository')
735
+ skipped_repo_keys = set()
736
+
734
737
  for _plugin_name in plugin_names:
735
738
  if sep in _plugin_name:
736
739
  try:
737
740
  _plugin_name, _repo_keys = _plugin_name.split(sep)
738
- except Exception as e:
741
+ except Exception:
739
742
  _repo_keys = default_repo_keys
740
743
  warn(
741
744
  f"Invalid repo keys for required plugin '{_plugin_name}'.\n "
@@ -744,7 +747,20 @@ class Plugin:
744
747
  )
745
748
  else:
746
749
  _repo_keys = default_repo_keys
750
+
751
+ if _repo_keys in skipped_repo_keys:
752
+ continue
753
+
754
+ if not is_valid_connector_keys(_repo_keys):
755
+ warn(
756
+ f"Invalid connector '{_repo_keys}'.\n"
757
+ f" Skipping required plugins from repository '{_repo_keys}'",
758
+ stack=False,
759
+ )
760
+ continue
761
+
747
762
  plugins.append(Plugin(_plugin_name, repo=_repo_keys))
763
+
748
764
  return plugins
749
765
 
750
766
 
@@ -166,10 +166,11 @@ def post_sync_hook(
166
166
 
167
167
  _plugin_endpoints_to_pages = {}
168
168
  def web_page(
169
- page: Union[str, None, Callable[[Any], Any]] = None,
170
- login_required: bool = True,
171
- **kwargs
172
- ) -> Any:
169
+ page: Union[str, None, Callable[[Any], Any]] = None,
170
+ login_required: bool = True,
171
+ skip_navbar: bool = False,
172
+ **kwargs
173
+ ) -> Any:
173
174
  """
174
175
  Quickly add pages to the dash application.
175
176
 
@@ -200,6 +201,7 @@ def web_page(
200
201
  _plugin_endpoints_to_pages[page_str] = {
201
202
  'function': _func,
202
203
  'login_required': login_required,
204
+ 'skip_navbar': skip_navbar,
203
205
  }
204
206
  return wrapper
205
207
 
@@ -66,10 +66,7 @@ def clear_screen(debug: bool = False) -> bool:
66
66
  get_console().clear()
67
67
  print("", end="", flush=True)
68
68
  return True
69
- clear_string = (
70
- '\033c' if platform.system() != 'Windows'
71
- else '\033[2J'
72
- )
69
+ clear_string = '\033[2J'
73
70
  reset_string = '\033[0m'
74
71
  print(clear_string + reset_string, end="")
75
72
  print("", end="", flush=True)
@@ -135,6 +135,7 @@ packages: Dict[str, Dict[str, str]] = {
135
135
  packages['sql'] = {
136
136
  'numpy' : 'numpy>=1.18.5',
137
137
  'pandas' : 'pandas[parquet]>=2.0.1',
138
+ 'geopandas' : 'geopandas>=1.0.1',
138
139
  'pyarrow' : 'pyarrow>=16.1.0',
139
140
  'dask' : 'dask[complete]>=2024.12.1',
140
141
  'partd' : 'partd>=1.4.2',
@@ -410,6 +410,8 @@ def init_venv(
410
410
  pass
411
411
 
412
412
  def wait_for_lock():
413
+ if platform.system() == 'Windows':
414
+ return
413
415
  max_lock_seconds = 30.0
414
416
  sleep_message_seconds = 5.0
415
417
  step_sleep_seconds = 0.1
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: meerschaum
3
- Version: 2.8.4
3
+ Version: 2.9.0.dev1
4
4
  Summary: Sync Time-Series Pipes with Meerschaum
5
5
  Home-page: https://meerschaum.io
6
6
  Author: Bennett Meares
@@ -126,6 +126,7 @@ Requires-Dist: importlib-metadata>=4.12.0; extra == "extras"
126
126
  Provides-Extra: sql
127
127
  Requires-Dist: numpy>=1.18.5; extra == "sql"
128
128
  Requires-Dist: pandas[parquet]>=2.0.1; extra == "sql"
129
+ Requires-Dist: geopandas>=1.0.1; extra == "sql"
129
130
  Requires-Dist: pyarrow>=16.1.0; extra == "sql"
130
131
  Requires-Dist: dask[complete]>=2024.12.1; extra == "sql"
131
132
  Requires-Dist: partd>=1.4.2; extra == "sql"
@@ -186,6 +187,7 @@ Requires-Dist: httpcore>=1.0.6; extra == "api"
186
187
  Requires-Dist: valkey>=6.0.0; extra == "api"
187
188
  Requires-Dist: numpy>=1.18.5; extra == "api"
188
189
  Requires-Dist: pandas[parquet]>=2.0.1; extra == "api"
190
+ Requires-Dist: geopandas>=1.0.1; extra == "api"
189
191
  Requires-Dist: pyarrow>=16.1.0; extra == "api"
190
192
  Requires-Dist: dask[complete]>=2024.12.1; extra == "api"
191
193
  Requires-Dist: partd>=1.4.2; extra == "api"
@@ -291,6 +293,7 @@ Requires-Dist: pywebview>=3.6.3; extra == "full"
291
293
  Requires-Dist: pycparser>=2.21.0; extra == "full"
292
294
  Requires-Dist: numpy>=1.18.5; extra == "full"
293
295
  Requires-Dist: pandas[parquet]>=2.0.1; extra == "full"
296
+ Requires-Dist: geopandas>=1.0.1; extra == "full"
294
297
  Requires-Dist: pyarrow>=16.1.0; extra == "full"
295
298
  Requires-Dist: dask[complete]>=2024.12.1; extra == "full"
296
299
  Requires-Dist: partd>=1.4.2; extra == "full"
@@ -54,12 +54,13 @@ meerschaum/actions/upgrade.py,sha256=AjuC93Te-I_GWwIfuNkFJ2q1zVHDQ2Oco34S4JgK2iA
54
54
  meerschaum/actions/verify.py,sha256=81Km4sPkLVAzPG6pDbMfoBpEWsk8pxjVGXgu-k8seSs,5019
55
55
  meerschaum/api/__init__.py,sha256=UsAFx7oOTB9Z8m1u0DRfiQFdSxjoyqgVaICuwv7loDg,10414
56
56
  meerschaum/api/_chain.py,sha256=h8-WXUGXX6AqzdALfsBC5uv0FkAcLdHJXCGzqzuq89k,875
57
+ meerschaum/api/_chunks.py,sha256=rmhz8h4MZDnjkE02fDqDEwbYwwZbnU4gVwy3-QqB5y0,1898
57
58
  meerschaum/api/_events.py,sha256=f-98AXHU10IL9zRGX1FrZFANxxiMz5ryeJnfFWaU8R8,2232
58
59
  meerschaum/api/_exceptions.py,sha256=xfbWp8F8JYrMUdtDXesn8C8e39_jAXHz51IosIGjkVM,463
59
60
  meerschaum/api/_oauth2.py,sha256=dJTIVlPpX3sAVW-PcN6pXRNy2RR5QAalu2RHp3l14YU,1683
60
61
  meerschaum/api/_websockets.py,sha256=EMT9wB3yELu_WyCMqn9ZpgMDh23spUUchouRLCCLVuw,1509
61
62
  meerschaum/api/dash/__init__.py,sha256=SpM96oyOy_MUswZHtJkVzMn91PjdADPyCAkyTQjL7LA,2079
62
- meerschaum/api/dash/components.py,sha256=QRpBpUOhBZE5F_lELZ17xtubblRQVuANwWyIQk03Vkc,6573
63
+ meerschaum/api/dash/components.py,sha256=vePWQUf00l_YdVTj_UWfMr1lPq50hV0XpkFLc8iylpk,6571
63
64
  meerschaum/api/dash/connectors.py,sha256=-Wd40ieYJI2nOASXi4V1C4bvLekjnN_tj6zp7HgZDl0,791
64
65
  meerschaum/api/dash/graphs.py,sha256=wJUDWzcLN8-C3xko6rj0F2v7Rt8YDkSXoVkkXJjYGIk,2046
65
66
  meerschaum/api/dash/jobs.py,sha256=mj9STE6AaQY4fwkjD1JcYRG0iW3VEcP04bO1SlKgiXw,7681
@@ -70,7 +71,7 @@ meerschaum/api/dash/sessions.py,sha256=i8qFGZX1zlxskj13F5B9TYd-mXdVA71Q8d8nESbiJ
70
71
  meerschaum/api/dash/sync.py,sha256=9lt7IRdG-fe9gf_ZO_viPiGlerX7ic6r_VFocv3I51A,504
71
72
  meerschaum/api/dash/users.py,sha256=3wq3ZG51DxOjNeF-X5HdlXD1MYQ1nQ9oowYSvFEY7hs,1050
72
73
  meerschaum/api/dash/websockets.py,sha256=0iwRaI9k2okU1baYstOkehfZ6-qMi_S6qm4lPBjVlH8,924
73
- meerschaum/api/dash/webterm.py,sha256=Vm8mPOoOH-_puzMCGxWDEcqbUEItBGbXeMVqA_7JnsA,4273
74
+ meerschaum/api/dash/webterm.py,sha256=KyCe5yUZ2IXEDqJxoMcruenpvuwA1wWqRwXVnEOVMY0,4394
74
75
  meerschaum/api/dash/assets/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
75
76
  meerschaum/api/dash/assets/ansi_up.js,sha256=in4bWSCayjzXbOgROw7eLRrFwCTIiLxh8nbFSJXtDl4,21923
76
77
  meerschaum/api/dash/assets/banner_1920x320.png,sha256=n2cNTSVEsGxO9XZg2keb85J3UOkux70nyIMNII5m4SA,338636
@@ -78,20 +79,20 @@ meerschaum/api/dash/assets/favicon.ico,sha256=nDEekVxwS60wEDno1nbw5GF3TJOcDV26SE
78
79
  meerschaum/api/dash/assets/logo_48x48.png,sha256=hTR5BHUHEN4yP2xiqAcDciuigoII9T3-80R-dzsxVmw,10218
79
80
  meerschaum/api/dash/assets/logo_500x500.png,sha256=9EUtf6wQcEZTXHKfQ2kjNXod6Rn_4DTB_BkTgxggq00,67702
80
81
  meerschaum/api/dash/callbacks/__init__.py,sha256=5nLDkziaWWWt5ivmuMNG3kVBMOfqB6KQNIAS8f16bmA,493
81
- meerschaum/api/dash/callbacks/custom.py,sha256=N9pVolAF8sIuJD3V6xBSgS7k8THJo_f8d1qAoh1Kg60,1161
82
- meerschaum/api/dash/callbacks/dashboard.py,sha256=bwLr0bzWyzf5oTNLxD_j1KMU5yXvJfODxc4iazF-DIg,35005
82
+ meerschaum/api/dash/callbacks/custom.py,sha256=p1ki5jvc6FT628Qz_hm1TMDWGLV7m670R6yRJwsWvuE,1905
83
+ meerschaum/api/dash/callbacks/dashboard.py,sha256=BRYypI3Zwx8k7KEZjQDVLI4Z0OQuXBLBlhmhlCvg6JU,36112
83
84
  meerschaum/api/dash/callbacks/jobs.py,sha256=JYTrDcUEte_MIT3EegLDmQDsmU_Mxqw8L60dvF71ho4,8418
84
85
  meerschaum/api/dash/callbacks/login.py,sha256=mEvMgV-f85H6DvqNdTvJPoiwHqTnhWY2nf_zLB26ipE,2876
85
86
  meerschaum/api/dash/callbacks/pipes.py,sha256=byphQn-wJOe8ft-fGU9wac0n5xsMjVHJzNvYYb9NsKU,1693
86
87
  meerschaum/api/dash/callbacks/plugins.py,sha256=znPgw_Uf3__QEjKxoIHADfjVNubTehCDaTJ02b16pQo,2760
87
88
  meerschaum/api/dash/callbacks/register.py,sha256=KfMFgXWiFkemz0YriSPaLQBVnFDG8q6_t9gHuempOS0,3666
88
89
  meerschaum/api/dash/pages/__init__.py,sha256=E3MI73_FR21R_-npTJ9HBNd7hdbOwQ75V-TMpq3ohz8,349
89
- meerschaum/api/dash/pages/dashboard.py,sha256=k6mmvPWXQD6NpAO4_y9Y9r8n-IU5Ql1IOuczOl7OWPs,3802
90
+ meerschaum/api/dash/pages/dashboard.py,sha256=d6zPEycsbiFJyvufN6kt5JsOZbpW9zy-mNxPAJ_wOFo,3830
90
91
  meerschaum/api/dash/pages/error.py,sha256=-uCrASuIBrceHcc-leLeEoLos2ibSBWG0XMFQzFwtbw,595
91
92
  meerschaum/api/dash/pages/job.py,sha256=bAXXDB0fM3bSiqqJ2XlTwVdg2lohRaWdIGZp7ZtTZOw,544
92
93
  meerschaum/api/dash/pages/login.py,sha256=Qjc-kDL9wW4D1cN48x0MrmWCME4igHDt0VkX9JSipjY,4603
93
94
  meerschaum/api/dash/pages/pipes.py,sha256=Cd5XY_m4nBIsEk6TQadpcajuBRzxw1cyDaTtojwykcI,506
94
- meerschaum/api/dash/pages/plugins.py,sha256=9VpRqWW-3OhgZDUoo4J8PYswd231HaxlcSntxOOKsQA,1549
95
+ meerschaum/api/dash/pages/plugins.py,sha256=EX-M99bxvRSrI-9bIBocj-tmBpf6NgPQ813sJ_HSXS8,1731
95
96
  meerschaum/api/dash/pages/register.py,sha256=dqhsiu2OhrXhs4RL41_CpqipdrWo1-_roASvZIDBAq8,2364
96
97
  meerschaum/api/models/__init__.py,sha256=WrSLChqDkw5y9uU_ma2xJFFLqqVAQvHoIjuYrZDxOcM,276
97
98
  meerschaum/api/models/_interfaces.py,sha256=XtqxzWvUhZ-_SDia45Ut9K_VNziSltGjmLlUt-tMcJY,263
@@ -102,7 +103,7 @@ meerschaum/api/resources/__init__.py,sha256=LshFiqh0sL55QtC_15fz6A6r-1_H9sQWtlif
102
103
  meerschaum/api/resources/static/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
103
104
  meerschaum/api/resources/static/css/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
104
105
  meerschaum/api/resources/static/css/bootstrap.min.css,sha256=W8ArKu4Q_NnxCNqO3doJB2hqrNOIHNLFroAxpyxnYL8,180286
105
- meerschaum/api/resources/static/css/dash.css,sha256=JHY29ivJFJ8FN7u3y0mQNhC5BjGay20M2RTX3kKpW-8,1714
106
+ meerschaum/api/resources/static/css/dash.css,sha256=T30ZHWx1Kq-E0BaUJrMwVeTba_lxsFaO2r5AL8716W8,1714
106
107
  meerschaum/api/resources/static/css/dbc_dark.css,sha256=2pka1ymFAjlWLv-mJaxGkPeL-gTEMD2g4Ba6LMuhHV4,6087
107
108
  meerschaum/api/resources/static/css/styles.css,sha256=dHcCtRUzs8kJhpG6d4gusROLSe9AFkUitybvgFmEDvI,81
108
109
  meerschaum/api/resources/static/css/xterm.css,sha256=gy8_LGA7Q61DUf8ElwFQzHqHMBQnbbEmpgZcbdgeSHI,5383
@@ -118,7 +119,7 @@ meerschaum/api/resources/templates/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQe
118
119
  meerschaum/api/resources/templates/index.html,sha256=Ck-S0U5abJgB-wTOKIGg0ispGzKlXXqvFUoNAAByzLA,1019
119
120
  meerschaum/api/resources/templates/old_index.html,sha256=BDeOlcXhSsBH3-NaRtuX4Z1sDuhOoCMa_Dq-6g5RMpc,1711
120
121
  meerschaum/api/resources/templates/secret.html,sha256=0QWkm4ZoN81Aw1pd2-62rGCvx3nXPHfFUoegj3Iy8Ls,141
121
- meerschaum/api/resources/templates/termpage.html,sha256=7PX04aV52yb56nOtSq69ApqYku8Uc-xNACjbE66SdQs,6084
122
+ meerschaum/api/resources/templates/termpage.html,sha256=xW1_a7Anbk2RM-P75EuAVKYPOo6_36fByT0OMxD-yos,6168
122
123
  meerschaum/api/routes/__init__.py,sha256=38k-iGm7LM30C1jfvkt7_tatRO3tfx-eOd8AnTgLkc0,611
123
124
  meerschaum/api/routes/_actions.py,sha256=VUasS1dpr4d3TXHcR1CXlRZPAqvGKKuHv_f9PsOkQ5c,1732
124
125
  meerschaum/api/routes/_connectors.py,sha256=E2Icawy42nBPM7peRlHBM9_v4vF0daWCf-_Ok14LbqI,1776
@@ -126,7 +127,7 @@ meerschaum/api/routes/_index.py,sha256=Z8kuyqm3vmJadw8iIYyswYI4-3IOJ7KXdkhDTv1oU
126
127
  meerschaum/api/routes/_jobs.py,sha256=sEt-UtVd5pN-hJgikTvj1oTKJQ2hhNe8XhjkclwOXOE,12568
127
128
  meerschaum/api/routes/_login.py,sha256=tygEp50EVOMgvTG6CEASlShflbtEK8viJ9O07o0lnnE,2434
128
129
  meerschaum/api/routes/_misc.py,sha256=XxfSvXNGAm8rdvXePXWxX8wc5tjeAdBOSZwYveL3oAM,2591
129
- meerschaum/api/routes/_pipes.py,sha256=4cHjGNXKnPQsF7_TZClpTv3QyILLFlgYPKQjxNYCqy8,25247
130
+ meerschaum/api/routes/_pipes.py,sha256=1NiL6xKPdFh4LNm5OioedZ_bHUlDBRM7uJU4frjXcDE,28111
130
131
  meerschaum/api/routes/_plugins.py,sha256=okstNlv9Bhoiy6JvQWgwjxEi4kQ8adPUcir6k3Y7hH8,6329
131
132
  meerschaum/api/routes/_users.py,sha256=i55LuLTQ2cuzIyWz0PxkWji6aQQUIBPf_FEryKwXI50,7197
132
133
  meerschaum/api/routes/_version.py,sha256=-3A0i4Gk54netFOOwjI_x3YQik9vgHjtq7G_VYbzIJo,750
@@ -134,7 +135,7 @@ meerschaum/api/routes/_webterm.py,sha256=S7RXV8vvaTFbmVeehh4UhyXb4NCgcsyOQzoAG7j
134
135
  meerschaum/api/tables/__init__.py,sha256=e2aNC0CdlWICTUMx1i9RauF8Pm426J0RZJbsJWv4SWo,482
135
136
  meerschaum/config/__init__.py,sha256=5ZBq71P9t3nb74r5CGvMfNuauPscfegBX-nkaAUi5C4,11541
136
137
  meerschaum/config/_dash.py,sha256=BJHl4xMrQB-YHUEU7ldEW8q_nOPoIRSOqLrfGElc6Dw,187
137
- meerschaum/config/_default.py,sha256=F1xVug-lhVeIXTL1wvHrIPFmBsL2dGz4lHFakIleeZk,6473
138
+ meerschaum/config/_default.py,sha256=8Jd-zvL159MtyOVvzMr7v2najvC-IqiCqBB4iOTs9v4,6549
138
139
  meerschaum/config/_edit.py,sha256=M9yX_SDD24gV5kWITZpy7p9AWTizJsIAGWAs3WZx-Ws,9087
139
140
  meerschaum/config/_environment.py,sha256=Vv4DLDfc2vKLbCLsMvkQDj77K4kEvHKEBmUBo-wCrgo,4419
140
141
  meerschaum/config/_formatting.py,sha256=OMuqS1EWOsj_34wSs2tOqGIWci3bTMIZ5l-uelZgsIM,6672
@@ -145,7 +146,7 @@ meerschaum/config/_preprocess.py,sha256=-AEA8m_--KivZwTQ1sWN6LTn5sio_fUr2XZ51BO6
145
146
  meerschaum/config/_read_config.py,sha256=RLC3HHi_1ndj7ITVDKLD9_uULY3caGRwSz3ATYE-ixA,15014
146
147
  meerschaum/config/_shell.py,sha256=46_m49Txc5q1rGfCgO49ca48BODx45DQJi8D0zz1R18,4245
147
148
  meerschaum/config/_sync.py,sha256=jHcWRkxd82_BgX8Xo8agsWvf7BSbv3qHLWmYl6ehp_0,4242
148
- meerschaum/config/_version.py,sha256=qo9eC8a6skjLulPkTYodkLffX9t1hvHTg8JGgbZo4Do,71
149
+ meerschaum/config/_version.py,sha256=sy5oF3pXniu3CK-n6ajL2bnNRMZ4Js9kCqgkZH_UoTI,76
149
150
  meerschaum/config/paths.py,sha256=JjibeGN3YAdSNceRwsd42aNmeUrIgM6ndzC8qZAmNI0,621
150
151
  meerschaum/config/resources/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
151
152
  meerschaum/config/stack/__init__.py,sha256=2UukC0Lmk-aVL1o1qXzumqmuIrw3vu9fD7iCuz4XD4I,10544
@@ -156,18 +157,18 @@ meerschaum/config/stack/resources/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeR
156
157
  meerschaum/config/static/__init__.py,sha256=ccm5oaYnLu0j5B85C9a8Y7jWsw4ReJq5RqyvLd-rW_s,5519
157
158
  meerschaum/connectors/_Connector.py,sha256=VaVNg0SlQCTXk4shl3c68QdkbymA2Y9ScUlUjckk8PY,6795
158
159
  meerschaum/connectors/__init__.py,sha256=bpWsnU0uvoowWyUkFTwfEkadK84pssZUJ4M7yReudOU,12703
159
- meerschaum/connectors/parse.py,sha256=tnqzkzt_suOXYzktn_XVUrprtfym9ThijUf8HXZZlhY,4194
160
+ meerschaum/connectors/parse.py,sha256=Dzu3fiZu-Vd5d0qje-HCwIIolfmWmUYEOpYRjc7vDqw,4188
160
161
  meerschaum/connectors/poll.py,sha256=23yRUeIqqyNVt8VoJErhirW543YZ6X0ocfBauMJnC_g,7465
161
- meerschaum/connectors/api/_APIConnector.py,sha256=h4keIKtMLLF7IO8yhP42KMfMICu-owgjDsoOxo_Dyt8,5260
162
+ meerschaum/connectors/api/_APIConnector.py,sha256=bcjvPVfxE7y7i_r3FTPL1phzjTMqWq4szJzeusaNqQg,5598
162
163
  meerschaum/connectors/api/__init__.py,sha256=rYHDMK7n-5X5HoxiRITt-sVLgePnPQbgwntkhzvJvOk,234
163
164
  meerschaum/connectors/api/_actions.py,sha256=gd3F8i5BvN8XRvMcPvPVR8sc1DeLzgoBHdDhc8PtACE,3966
164
165
  meerschaum/connectors/api/_fetch.py,sha256=Khq9AFr1nk8Dsmcedb77aWhAuHw0JGgVeahDG95Q5MQ,2072
165
166
  meerschaum/connectors/api/_jobs.py,sha256=N5lpHFGG10jlVgaJeWAOTuLBQw3AdgjXsEPpp1YwZQE,11270
166
167
  meerschaum/connectors/api/_login.py,sha256=cVVmiS-QT0y0QHdrG25eGB4f7j44om1E0YPxnMCNeas,2049
167
168
  meerschaum/connectors/api/_misc.py,sha256=XK0LLexNUEKZjAAqoJ-9oOgwLlMdwxSOvcpqO5NuOas,1083
168
- meerschaum/connectors/api/_pipes.py,sha256=WyFb5RUGqzJSounaotJXtyKKLBN5tVeRZkC2XMrnKKo,21804
169
- meerschaum/connectors/api/_plugins.py,sha256=z04tPjfZZWwa7T60mogZH3X3wDmeLdnoN5Oh8m_YsU8,5217
170
- meerschaum/connectors/api/_request.py,sha256=WTDBkvQUzbHv49kB_3E0SWuS_4r8Dhxmmqr8TTaowcU,6959
169
+ meerschaum/connectors/api/_pipes.py,sha256=yeyxb83RBtqK2RuBhrmifN0mUwobN5IAetn-SGB3Qjo,22384
170
+ meerschaum/connectors/api/_plugins.py,sha256=hv0rqWaH8GrQMup8XMdfUbpv_qGcEAjnl3S8yYQGcsI,5072
171
+ meerschaum/connectors/api/_request.py,sha256=JtnDa14nkC5CDCuYhutUPztnbLxxzgjmGG_0k09B4mY,6957
171
172
  meerschaum/connectors/api/_uri.py,sha256=HWxqGx4R1cHZ3ywy9Ro9ePbFxxusw4RLaC3hpGt9Z6I,1469
172
173
  meerschaum/connectors/api/_users.py,sha256=kzb7ENgXwQ19OJYKOuuWzx2rwVuUZCly9dTnyvVuT2Q,5275
173
174
  meerschaum/connectors/plugin/PluginConnector.py,sha256=aQ1QaB7MordCFimZqoGLb0R12PfDUN_nWks2J5mzeAs,2084
@@ -198,7 +199,7 @@ meerschaum/core/Pipe/_attributes.py,sha256=wZQBGspZHmqmab_DNEUrvYsJSZtwaDsj0zeXD
198
199
  meerschaum/core/Pipe/_bootstrap.py,sha256=gTNGh5e2LmTMrgIpHqrVaL60uPKWCphhsuz8j-lJ2HI,7348
199
200
  meerschaum/core/Pipe/_clear.py,sha256=LghXabgyyc1tD7FNQrh9ExT71ipcg2poM9FDA3k9e4M,2230
200
201
  meerschaum/core/Pipe/_copy.py,sha256=YDclAapf_spm9phpFr4-CALyYyw7nUsyKyiaLM1cnm4,2965
201
- meerschaum/core/Pipe/_data.py,sha256=FOmMmS_TjcSaCehVbT6NFj7vO3fX2oZOiV0iZpQlC6Y,26819
202
+ meerschaum/core/Pipe/_data.py,sha256=5iHl-_Nsp1xizcNF60ZcEbDvtIYzmdLqpx0Q596Kz4Q,26792
202
203
  meerschaum/core/Pipe/_deduplicate.py,sha256=Wsa1cJk41LgaHwIsJC9OZfPZ_3GoMP26_y8MmJdTrO8,10137
203
204
  meerschaum/core/Pipe/_delete.py,sha256=1geNp9BgrocXP1gt76dMbnlJWKYFMuSNqPFA4K4-hXE,2118
204
205
  meerschaum/core/Pipe/_drop.py,sha256=KDfJVz2aGjHUE1Jkmj7Ej4ICPR5xPiuhyhgRO7Lu9d4,3299
@@ -217,8 +218,8 @@ meerschaum/jobs/_Executor.py,sha256=qM62BhFTM4tyJ7p90KOM0y3qyeRY9k3ZV_aTDJMHnO8,
217
218
  meerschaum/jobs/_Job.py,sha256=D4TFrEQQ9EYqZrnepLBO7T3Sx2mOOdgBs2JnBdC1dNc,32257
218
219
  meerschaum/jobs/__init__.py,sha256=YmZr1ZU8MLUjlTSLQ61Y6eE-a-SYuSMSMhiIpJKao_Y,12829
219
220
  meerschaum/jobs/systemd.py,sha256=CZbBkm-2z8z7G3CNmP5yBRj2VtWuxmxXVIv97cGhZGc,24613
220
- meerschaum/plugins/_Plugin.py,sha256=bIo4HX8TTWIcwIHROwMt4VK6OoEUhY_3Qc8q-2dp-ZA,33895
221
- meerschaum/plugins/__init__.py,sha256=Kl7Dz0CwUUxyjRC5RWnYo6WMLsOvdX2eQ38Rh3BjdzY,26465
221
+ meerschaum/plugins/_Plugin.py,sha256=CyaWg0TImFui9NMJkTP3bYKnYHmRC5uVrPSPKoiB_Dc,34359
222
+ meerschaum/plugins/__init__.py,sha256=Tl5B0Q4rIfgkPpgknJH3UKKB3fS_cAWI9TspKosvBPM,26520
222
223
  meerschaum/plugins/bootstrap.py,sha256=VwjpZAuYdqPJW0YoVgAoM_taHkdQHqP902-8T7OWWCI,11339
223
224
  meerschaum/utils/__init__.py,sha256=QrK1K9hIbPCRCM5k2nZGFqGnrqhA0Eh-iSmCU7FG6Cs,612
224
225
  meerschaum/utils/_get_pipes.py,sha256=tu4xKPoDn79Dz2kWM13cXTP4DSCkn-3G9M8KiLftopw,11073
@@ -248,17 +249,17 @@ meerschaum/utils/formatting/__init__.py,sha256=bA8qwBeTNIVHVQOBK682bJsKSKik1yS6x
248
249
  meerschaum/utils/formatting/_jobs.py,sha256=izsqPJhTtUkXUUtWnbXtReYsUYwulXtci3pBj72Ne64,6637
249
250
  meerschaum/utils/formatting/_pipes.py,sha256=gwl8-xCN5GYqBZJ7SkY20BebcofY0nU5X8Y4Emf5dz8,19570
250
251
  meerschaum/utils/formatting/_pprint.py,sha256=wyTmjHFnsHbxfyuytjTWzH-D42Z65GuIisQ_W6UnRPg,3096
251
- meerschaum/utils/formatting/_shell.py,sha256=XH7VFLteNv7NGtWhJl7FdIGt80sKeTiDoJokGSDAwBM,3761
252
+ meerschaum/utils/formatting/_shell.py,sha256=2bFvtwNXapjl9jdlc0fg79PRWHbYVcllKiVcG5g36qI,3678
252
253
  meerschaum/utils/packages/__init__.py,sha256=TdKaj2tmN4bFwzusOfMv24P5ET7Zv73vyoOf9GOIr5E,64427
253
- meerschaum/utils/packages/_packages.py,sha256=yeeMIUWr7TkMknGmkzUj4_BJtidOoCadW7m0C389_UQ,8868
254
+ meerschaum/utils/packages/_packages.py,sha256=_ygc4zH7z80TuxRz7ThIm8TuMtklpPWa4Yv8WoDjiSk,8928
254
255
  meerschaum/utils/packages/lazy_loader.py,sha256=VHnph3VozH29R4JnSSBfwtA5WKZYZQFT_GeQSShCnuc,2540
255
256
  meerschaum/utils/venv/_Venv.py,sha256=gc1TCeAj-kTZbQFAT9xl1bi4HXFV5ApT0dPOJfxwr78,3748
256
- meerschaum/utils/venv/__init__.py,sha256=AJH9BEO2Eadwn17E_uynca_picaJTlMPP_s4y5RHpJw,27187
257
- meerschaum-2.8.4.dist-info/LICENSE,sha256=jG2zQEdRNt88EgHUWPpXVWmOrOduUQRx7MnYV9YIPaw,11359
258
- meerschaum-2.8.4.dist-info/METADATA,sha256=ADfvDN1hru7HrOqr5MwrRFd0qLB9Y2ewvoa3H0nE9Ss,24489
259
- meerschaum-2.8.4.dist-info/NOTICE,sha256=OTA9Fcthjf5BRvWDDIcBC_xfLpeDV-RPZh3M-HQBRtQ,114
260
- meerschaum-2.8.4.dist-info/WHEEL,sha256=In9FTNxeP60KnTkGw7wk6mJPYd_dQSjEZmXdBdMCI-8,91
261
- meerschaum-2.8.4.dist-info/entry_points.txt,sha256=5YBVzibw-0rNA_1VjB16z5GABsOGf-CDhW4yqH8C7Gc,88
262
- meerschaum-2.8.4.dist-info/top_level.txt,sha256=bNoSiDj0El6buocix-FRoAtJOeq1qOF5rRm2u9i7Q6A,11
263
- meerschaum-2.8.4.dist-info/zip-safe,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
264
- meerschaum-2.8.4.dist-info/RECORD,,
257
+ meerschaum/utils/venv/__init__.py,sha256=6FDfOSBsGgw2RIXvBuFEwlF5740RIHs4Qum0ekati9I,27249
258
+ meerschaum-2.9.0.dev1.dist-info/LICENSE,sha256=jG2zQEdRNt88EgHUWPpXVWmOrOduUQRx7MnYV9YIPaw,11359
259
+ meerschaum-2.9.0.dev1.dist-info/METADATA,sha256=xo2G8mHGjiEnAk4r3W5sfOxPGxT2TPg58zhpE7MPRPA,24639
260
+ meerschaum-2.9.0.dev1.dist-info/NOTICE,sha256=OTA9Fcthjf5BRvWDDIcBC_xfLpeDV-RPZh3M-HQBRtQ,114
261
+ meerschaum-2.9.0.dev1.dist-info/WHEEL,sha256=52BFRY2Up02UkjOa29eZOS2VxUrpPORXg1pkohGGUS8,91
262
+ meerschaum-2.9.0.dev1.dist-info/entry_points.txt,sha256=5YBVzibw-0rNA_1VjB16z5GABsOGf-CDhW4yqH8C7Gc,88
263
+ meerschaum-2.9.0.dev1.dist-info/top_level.txt,sha256=bNoSiDj0El6buocix-FRoAtJOeq1qOF5rRm2u9i7Q6A,11
264
+ meerschaum-2.9.0.dev1.dist-info/zip-safe,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
265
+ meerschaum-2.9.0.dev1.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: setuptools (75.8.0)
2
+ Generator: setuptools (76.0.0)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5