meerschaum 2.2.0rc2__py3-none-any.whl → 2.2.0rc4__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 (34) hide show
  1. meerschaum/actions/show.py +2 -2
  2. meerschaum/api/__init__.py +24 -14
  3. meerschaum/api/_oauth2.py +4 -4
  4. meerschaum/api/dash/callbacks/dashboard.py +3 -3
  5. meerschaum/api/dash/keys.py +1 -1
  6. meerschaum/api/dash/pages/dashboard.py +14 -4
  7. meerschaum/config/_jobs.py +6 -3
  8. meerschaum/config/_paths.py +1 -0
  9. meerschaum/config/_version.py +1 -1
  10. meerschaum/config/static/__init__.py +1 -0
  11. meerschaum/connectors/__init__.py +2 -0
  12. meerschaum/connectors/sql/SQLConnector.py +4 -2
  13. meerschaum/connectors/sql/_create_engine.py +4 -4
  14. meerschaum/connectors/sql/_instance.py +3 -1
  15. meerschaum/connectors/sql/_pipes.py +54 -38
  16. meerschaum/connectors/sql/_sql.py +7 -9
  17. meerschaum/core/User/_User.py +2 -0
  18. meerschaum/plugins/__init__.py +23 -1
  19. meerschaum/utils/daemon/Daemon.py +21 -5
  20. meerschaum/utils/daemon/FileDescriptorInterceptor.py +46 -8
  21. meerschaum/utils/daemon/RotatingFile.py +12 -2
  22. meerschaum/utils/daemon/__init__.py +2 -0
  23. meerschaum/utils/packages/__init__.py +10 -4
  24. meerschaum/utils/packages/_packages.py +11 -13
  25. meerschaum/utils/process.py +13 -10
  26. meerschaum/utils/schedule.py +15 -1
  27. {meerschaum-2.2.0rc2.dist-info → meerschaum-2.2.0rc4.dist-info}/METADATA +45 -47
  28. {meerschaum-2.2.0rc2.dist-info → meerschaum-2.2.0rc4.dist-info}/RECORD +34 -34
  29. {meerschaum-2.2.0rc2.dist-info → meerschaum-2.2.0rc4.dist-info}/LICENSE +0 -0
  30. {meerschaum-2.2.0rc2.dist-info → meerschaum-2.2.0rc4.dist-info}/NOTICE +0 -0
  31. {meerschaum-2.2.0rc2.dist-info → meerschaum-2.2.0rc4.dist-info}/WHEEL +0 -0
  32. {meerschaum-2.2.0rc2.dist-info → meerschaum-2.2.0rc4.dist-info}/entry_points.txt +0 -0
  33. {meerschaum-2.2.0rc2.dist-info → meerschaum-2.2.0rc4.dist-info}/top_level.txt +0 -0
  34. {meerschaum-2.2.0rc2.dist-info → meerschaum-2.2.0rc4.dist-info}/zip-safe +0 -0
@@ -272,7 +272,7 @@ class RotatingFile(io.IOBase):
272
272
  warn(
273
273
  f"Encountered an issue when redirecting streams:\n{traceback.format_exc()}"
274
274
  )
275
- if start_interception:
275
+ if start_interception and self.write_timestamps:
276
276
  self.start_log_fd_interception()
277
277
 
278
278
  create_new_file = (
@@ -363,7 +363,7 @@ class RotatingFile(io.IOBase):
363
363
  suffix_str = "\n" if self.write_timestamps else ""
364
364
  self.refresh_files(
365
365
  potential_new_len = len(prefix_str + data + suffix_str),
366
- start_interception = True,
366
+ start_interception = self.write_timestamps,
367
367
  )
368
368
  try:
369
369
  if prefix_str:
@@ -591,6 +591,9 @@ class RotatingFile(io.IOBase):
591
591
  """
592
592
  Start the file descriptor monitoring threads.
593
593
  """
594
+ if not self.write_timestamps:
595
+ return
596
+
594
597
  threads = self.__dict__.get('_interceptor_threads', [])
595
598
  self._stdout_interceptor = FileDescriptorInterceptor(
596
599
  sys.stdout.fileno(),
@@ -621,12 +624,19 @@ class RotatingFile(io.IOBase):
621
624
  self._stdout_interceptor_thread,
622
625
  self._stderr_interceptor_thread,
623
626
  ])
627
+ self._interceptors.extend([
628
+ self._stdout_interceptor,
629
+ self._stderr_interceptor,
630
+ ])
624
631
  self.stop_log_fd_interception(unused_only=True)
625
632
 
633
+
626
634
  def stop_log_fd_interception(self, unused_only: bool = False):
627
635
  """
628
636
  Stop the file descriptor monitoring threads.
629
637
  """
638
+ if not self.write_timestamps:
639
+ return
630
640
  interceptors = self.__dict__.get('_interceptors', [])
631
641
  interceptor_threads = self.__dict__.get('_interceptor_threads', [])
632
642
 
@@ -64,6 +64,8 @@ def daemon_entry(sysargs: Optional[List[str]] = None) -> SuccessTuple:
64
64
 
65
65
  ### Only run if the kwargs equal or no actions are provided.
66
66
  if existing_kwargs == _args or not _args.get('action', []):
67
+ if daemon.status == 'running':
68
+ return True, f"Daemon '{daemon}' is already running."
67
69
  return daemon.run(
68
70
  debug = debug,
69
71
  allow_dirty_run = True,
@@ -829,8 +829,11 @@ def pip_install(
829
829
  check_wheel = False, debug = debug,
830
830
  ):
831
831
  warn(
832
- f"Failed to install `setuptools` and `wheel` for virtual environment '{venv}'.",
833
- color=False,
832
+ (
833
+ "Failed to install `setuptools` and `wheel` for virtual "
834
+ + f"environment '{venv}'."
835
+ ),
836
+ color = False,
834
837
  )
835
838
 
836
839
  if requirements_file_path is not None:
@@ -893,13 +896,16 @@ def pip_install(
893
896
  f"Failed to clean up package '{_install_no_version}'.",
894
897
  )
895
898
 
896
- success = run_python_package(
899
+ rc = run_python_package(
897
900
  'pip',
898
901
  _args + _packages,
899
902
  venv = venv,
900
903
  env = _get_pip_os_env(),
901
904
  debug = debug,
902
- ) == 0
905
+ )
906
+ if debug:
907
+ print(f"{rc=}")
908
+ success = rc == 0
903
909
 
904
910
  msg = (
905
911
  "Successfully " + ('un' if _uninstall else '') + "installed packages." if success
@@ -30,7 +30,7 @@ packages: Dict[str, Dict[str, str]] = {
30
30
  'more_termcolor' : 'more-termcolor>=1.1.3',
31
31
  'humanfriendly' : 'humanfriendly>=10.0.0',
32
32
  },
33
- '_required': {
33
+ 'core': {
34
34
  'wheel' : 'wheel>=0.34.2',
35
35
  'setuptools' : 'setuptools>=63.3.0',
36
36
  'yaml' : 'PyYAML>=5.3.1',
@@ -60,10 +60,10 @@ packages: Dict[str, Dict[str, str]] = {
60
60
  'pymysql' : 'PyMySQL>=0.9.0',
61
61
  'aiomysql' : 'aiomysql>=0.0.21',
62
62
  'sqlalchemy_cockroachdb' : 'sqlalchemy-cockroachdb>=2.0.0',
63
- 'duckdb' : 'duckdb>=0.9.0',
63
+ 'duckdb' : 'duckdb<0.10.3',
64
64
  'duckdb_engine' : 'duckdb-engine>=0.9.2',
65
65
  },
66
- '_drivers': {
66
+ 'drivers-extras': {
67
67
  'pyodbc' : 'pyodbc>=4.0.30',
68
68
  'cx_Oracle' : 'cx_Oracle>=8.3.0',
69
69
  },
@@ -120,8 +120,8 @@ packages: Dict[str, Dict[str, str]] = {
120
120
  packages['sql'] = {
121
121
  'numpy' : 'numpy>=1.18.5',
122
122
  'pandas' : 'pandas[parquet]>=2.0.1',
123
- 'pyarrow' : 'pyarrow>=7.0.0',
124
- 'dask' : 'dask>=2023.5.0',
123
+ 'pyarrow' : 'pyarrow>=16.1.0',
124
+ 'dask' : 'dask[dataframe]>=2024.5.1',
125
125
  'pytz' : 'pytz',
126
126
  'joblib' : 'joblib>=0.17.0',
127
127
  'sqlalchemy' : 'SQLAlchemy>=2.0.5',
@@ -130,7 +130,7 @@ packages['sql'] = {
130
130
  'asyncpg' : 'asyncpg>=0.21.0',
131
131
  }
132
132
  packages['sql'].update(packages['drivers'])
133
- packages['sql'].update(packages['_required'])
133
+ packages['sql'].update(packages['core'])
134
134
  packages['dash'] = {
135
135
  'flask_compress' : 'Flask-Compress>=1.10.1',
136
136
  'dash' : 'dash>=2.6.2',
@@ -142,16 +142,14 @@ packages['dash'] = {
142
142
  'tornado' : 'tornado>=6.1.0',
143
143
  }
144
144
  packages['api'] = {
145
- 'uvicorn' : 'uvicorn[standard]>=0.22.0',
146
- 'gunicorn' : 'gunicorn>=20.1.0',
145
+ 'uvicorn' : 'uvicorn[standard]>=0.29.0',
146
+ 'gunicorn' : 'gunicorn>=22.0.0',
147
147
  'dotenv' : 'python-dotenv>=0.20.0',
148
148
  'websockets' : 'websockets>=11.0.3',
149
- 'fastapi' : 'fastapi>=0.100.0',
150
- 'passlib' : 'passlib>=1.7.4',
149
+ 'fastapi' : 'fastapi>=0.111.0',
151
150
  'fastapi_login' : 'fastapi-login>=1.7.2',
152
- 'multipart' : 'python-multipart>=0.0.5',
151
+ 'multipart' : 'python-multipart>=0.0.9',
153
152
  'httpx' : 'httpx>=0.24.1',
154
- 'websockets' : 'websockets>=11.0.3',
155
153
  }
156
154
  packages['api'].update(packages['sql'])
157
155
  packages['api'].update(packages['formatting'])
@@ -171,7 +169,7 @@ def get_install_names():
171
169
  install_names[get_install_no_version(_install_name)] = _import_name
172
170
  return install_names
173
171
 
174
- skip_groups = {'docs', 'build', 'cli', 'dev-tools', 'portable', 'extras', 'stack', '_drivers'}
172
+ skip_groups = {'docs', 'build', 'cli', 'dev-tools', 'portable', 'extras', 'stack', 'drivers-extras'}
175
173
  full = []
176
174
  _full = {}
177
175
  for group, import_names in packages.items():
@@ -11,6 +11,7 @@ See `meerschaum.utils.pool` for multiprocessing and
11
11
  from __future__ import annotations
12
12
  import os, signal, subprocess, sys, platform
13
13
  from meerschaum.utils.typing import Union, Optional, Any, Callable, Dict, Tuple
14
+ from meerschaum.config.static import STATIC_CONFIG
14
15
 
15
16
  def run_process(
16
17
  *args,
@@ -68,9 +69,18 @@ def run_process(
68
69
  if platform.system() == 'Windows':
69
70
  foreground = False
70
71
 
71
- if line_callback is not None:
72
+ def print_line(line):
73
+ sys.stdout.write(line.decode('utf-8'))
74
+ sys.stdout.flush()
75
+
76
+ if capture_output or line_callback is not None:
77
+ kw['stdout'] = subprocess.PIPE
78
+ kw['stderr'] = subprocess.STDOUT
79
+ elif os.environ.get(STATIC_CONFIG['environment']['daemon_id']):
72
80
  kw['stdout'] = subprocess.PIPE
73
81
  kw['stderr'] = subprocess.STDOUT
82
+ if line_callback is None:
83
+ line_callback = print_line
74
84
 
75
85
  if 'env' not in kw:
76
86
  kw['env'] = os.environ
@@ -112,15 +122,6 @@ def run_process(
112
122
  kw['preexec_fn'] = new_pgid
113
123
 
114
124
  try:
115
- # fork the child
116
- # stdout, stderr = (
117
- # (sys.stdout, sys.stderr) if not capture_output
118
- # else (subprocess.PIPE, subprocess.PIPE)
119
- # )
120
- if capture_output:
121
- kw['stdout'] = subprocess.PIPE
122
- kw['stderr'] = subprocess.PIPE
123
-
124
125
  child = subprocess.Popen(*args, **kw)
125
126
 
126
127
  # we can't set the process group id from the parent since the child
@@ -197,6 +198,8 @@ def poll_process(
197
198
  while proc.poll() is None:
198
199
  line = proc.stdout.readline()
199
200
  line_callback(line)
201
+
200
202
  if timeout_seconds is not None:
201
203
  watchdog_thread.cancel()
204
+
202
205
  return proc.poll()
@@ -278,7 +278,21 @@ def parse_start_time(schedule: str, now: Optional[datetime] = None) -> datetime:
278
278
  starting_str = ('now' if len(starting_parts) == 1 else starting_parts[-1]).strip()
279
279
  now = now or round_time(datetime.now(timezone.utc), timedelta(minutes=1))
280
280
  try:
281
- starting_ts = now if starting_str == 'now' else dateutil_parser.parse(starting_str)
281
+ if starting_str == 'now':
282
+ starting_ts = now
283
+ elif 'tomorrow' in starting_str or 'today' in starting_str:
284
+ today = round_time(now, timedelta(days=1))
285
+ tomorrow = today + timedelta(days=1)
286
+ is_tomorrow = 'tomorrow' in starting_str
287
+ time_str = starting_str.replace('tomorrow', '').replace('today', '').strip()
288
+ time_ts = dateutil_parser.parse(time_str) if time_str else today
289
+ starting_ts = (
290
+ (tomorrow if is_tomorrow else today)
291
+ + timedelta(hours=time_ts.hour)
292
+ + timedelta(minutes=time_ts.minute)
293
+ )
294
+ else:
295
+ starting_ts = dateutil_parser.parse(starting_str)
282
296
  schedule_parse_error = None
283
297
  except Exception as e:
284
298
  warn(f"Unable to parse starting time from '{starting_str}'.", stack=False)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: meerschaum
3
- Version: 2.2.0rc2
3
+ Version: 2.2.0rc4
4
4
  Summary: Sync Time-Series Pipes with Meerschaum
5
5
  Home-page: https://meerschaum.io
6
6
  Author: Bennett Meares
@@ -31,46 +31,19 @@ Requires-Python: >=3.8
31
31
  Description-Content-Type: text/markdown
32
32
  License-File: LICENSE
33
33
  License-File: NOTICE
34
- Provides-Extra: _drivers
35
- Requires-Dist: pyodbc >=4.0.30 ; extra == '_drivers'
36
- Requires-Dist: cx-Oracle >=8.3.0 ; extra == '_drivers'
37
- Provides-Extra: _required
38
- Requires-Dist: wheel >=0.34.2 ; extra == '_required'
39
- Requires-Dist: setuptools >=63.3.0 ; extra == '_required'
40
- Requires-Dist: PyYAML >=5.3.1 ; extra == '_required'
41
- Requires-Dist: pip >=22.0.4 ; extra == '_required'
42
- Requires-Dist: update-checker >=0.18.0 ; extra == '_required'
43
- Requires-Dist: semver >=3.0.0 ; extra == '_required'
44
- Requires-Dist: pathspec >=0.9.0 ; extra == '_required'
45
- Requires-Dist: python-dateutil >=2.7.5 ; extra == '_required'
46
- Requires-Dist: requests >=2.23.0 ; extra == '_required'
47
- Requires-Dist: binaryornot >=0.4.4 ; extra == '_required'
48
- Requires-Dist: pyvim >=3.0.2 ; extra == '_required'
49
- Requires-Dist: aiofiles >=0.6.0 ; extra == '_required'
50
- Requires-Dist: packaging >=21.3.0 ; extra == '_required'
51
- Requires-Dist: prompt-toolkit >=3.0.39 ; extra == '_required'
52
- Requires-Dist: more-itertools >=8.7.0 ; extra == '_required'
53
- Requires-Dist: python-daemon >=0.2.3 ; extra == '_required'
54
- Requires-Dist: fasteners >=0.18.0 ; extra == '_required'
55
- Requires-Dist: psutil >=5.8.0 ; extra == '_required'
56
- Requires-Dist: watchfiles >=0.21.0 ; extra == '_required'
57
- Requires-Dist: dill >=0.3.3 ; extra == '_required'
58
- Requires-Dist: virtualenv >=20.1.0 ; extra == '_required'
59
- Requires-Dist: APScheduler >=4.0.0a5 ; extra == '_required'
60
34
  Provides-Extra: api
61
- Requires-Dist: uvicorn[standard] >=0.22.0 ; extra == 'api'
62
- Requires-Dist: gunicorn >=20.1.0 ; extra == 'api'
35
+ Requires-Dist: uvicorn[standard] >=0.29.0 ; extra == 'api'
36
+ Requires-Dist: gunicorn >=22.0.0 ; extra == 'api'
63
37
  Requires-Dist: python-dotenv >=0.20.0 ; extra == 'api'
64
38
  Requires-Dist: websockets >=11.0.3 ; extra == 'api'
65
- Requires-Dist: fastapi >=0.100.0 ; extra == 'api'
66
- Requires-Dist: passlib >=1.7.4 ; extra == 'api'
39
+ Requires-Dist: fastapi >=0.111.0 ; extra == 'api'
67
40
  Requires-Dist: fastapi-login >=1.7.2 ; extra == 'api'
68
- Requires-Dist: python-multipart >=0.0.5 ; extra == 'api'
41
+ Requires-Dist: python-multipart >=0.0.9 ; extra == 'api'
69
42
  Requires-Dist: httpx >=0.24.1 ; extra == 'api'
70
43
  Requires-Dist: numpy >=1.18.5 ; extra == 'api'
71
44
  Requires-Dist: pandas[parquet] >=2.0.1 ; extra == 'api'
72
- Requires-Dist: pyarrow >=7.0.0 ; extra == 'api'
73
- Requires-Dist: dask >=2023.5.0 ; extra == 'api'
45
+ Requires-Dist: pyarrow >=16.1.0 ; extra == 'api'
46
+ Requires-Dist: dask[dataframe] >=2024.5.1 ; extra == 'api'
74
47
  Requires-Dist: pytz ; extra == 'api'
75
48
  Requires-Dist: joblib >=0.17.0 ; extra == 'api'
76
49
  Requires-Dist: SQLAlchemy >=2.0.5 ; extra == 'api'
@@ -82,7 +55,7 @@ Requires-Dist: psycopg[binary] >=3.1.18 ; extra == 'api'
82
55
  Requires-Dist: PyMySQL >=0.9.0 ; extra == 'api'
83
56
  Requires-Dist: aiomysql >=0.0.21 ; extra == 'api'
84
57
  Requires-Dist: sqlalchemy-cockroachdb >=2.0.0 ; extra == 'api'
85
- Requires-Dist: duckdb >=0.9.0 ; extra == 'api'
58
+ Requires-Dist: duckdb <0.10.3 ; extra == 'api'
86
59
  Requires-Dist: duckdb-engine >=0.9.2 ; extra == 'api'
87
60
  Requires-Dist: wheel >=0.34.2 ; extra == 'api'
88
61
  Requires-Dist: setuptools >=63.3.0 ; extra == 'api'
@@ -131,6 +104,29 @@ Requires-Dist: mycli >=1.23.2 ; extra == 'cli'
131
104
  Requires-Dist: litecli >=1.5.0 ; extra == 'cli'
132
105
  Requires-Dist: mssql-cli >=1.0.0 ; extra == 'cli'
133
106
  Requires-Dist: gadwall >=0.2.0 ; extra == 'cli'
107
+ Provides-Extra: core
108
+ Requires-Dist: wheel >=0.34.2 ; extra == 'core'
109
+ Requires-Dist: setuptools >=63.3.0 ; extra == 'core'
110
+ Requires-Dist: PyYAML >=5.3.1 ; extra == 'core'
111
+ Requires-Dist: pip >=22.0.4 ; extra == 'core'
112
+ Requires-Dist: update-checker >=0.18.0 ; extra == 'core'
113
+ Requires-Dist: semver >=3.0.0 ; extra == 'core'
114
+ Requires-Dist: pathspec >=0.9.0 ; extra == 'core'
115
+ Requires-Dist: python-dateutil >=2.7.5 ; extra == 'core'
116
+ Requires-Dist: requests >=2.23.0 ; extra == 'core'
117
+ Requires-Dist: binaryornot >=0.4.4 ; extra == 'core'
118
+ Requires-Dist: pyvim >=3.0.2 ; extra == 'core'
119
+ Requires-Dist: aiofiles >=0.6.0 ; extra == 'core'
120
+ Requires-Dist: packaging >=21.3.0 ; extra == 'core'
121
+ Requires-Dist: prompt-toolkit >=3.0.39 ; extra == 'core'
122
+ Requires-Dist: more-itertools >=8.7.0 ; extra == 'core'
123
+ Requires-Dist: python-daemon >=0.2.3 ; extra == 'core'
124
+ Requires-Dist: fasteners >=0.18.0 ; extra == 'core'
125
+ Requires-Dist: psutil >=5.8.0 ; extra == 'core'
126
+ Requires-Dist: watchfiles >=0.21.0 ; extra == 'core'
127
+ Requires-Dist: dill >=0.3.3 ; extra == 'core'
128
+ Requires-Dist: virtualenv >=20.1.0 ; extra == 'core'
129
+ Requires-Dist: APScheduler >=4.0.0a5 ; extra == 'core'
134
130
  Provides-Extra: dash
135
131
  Requires-Dist: Flask-Compress >=1.10.1 ; extra == 'dash'
136
132
  Requires-Dist: dash >=2.6.2 ; extra == 'dash'
@@ -165,8 +161,11 @@ Requires-Dist: psycopg[binary] >=3.1.18 ; extra == 'drivers'
165
161
  Requires-Dist: PyMySQL >=0.9.0 ; extra == 'drivers'
166
162
  Requires-Dist: aiomysql >=0.0.21 ; extra == 'drivers'
167
163
  Requires-Dist: sqlalchemy-cockroachdb >=2.0.0 ; extra == 'drivers'
168
- Requires-Dist: duckdb >=0.9.0 ; extra == 'drivers'
164
+ Requires-Dist: duckdb <0.10.3 ; extra == 'drivers'
169
165
  Requires-Dist: duckdb-engine >=0.9.2 ; extra == 'drivers'
166
+ Provides-Extra: drivers-extras
167
+ Requires-Dist: pyodbc >=4.0.30 ; extra == 'drivers-extras'
168
+ Requires-Dist: cx-Oracle >=8.3.0 ; extra == 'drivers-extras'
170
169
  Provides-Extra: extras
171
170
  Requires-Dist: cmd2 >=1.4.0 ; extra == 'extras'
172
171
  Requires-Dist: ruamel.yaml >=0.16.12 ; extra == 'extras'
@@ -218,15 +217,15 @@ Requires-Dist: psycopg[binary] >=3.1.18 ; extra == 'full'
218
217
  Requires-Dist: PyMySQL >=0.9.0 ; extra == 'full'
219
218
  Requires-Dist: aiomysql >=0.0.21 ; extra == 'full'
220
219
  Requires-Dist: sqlalchemy-cockroachdb >=2.0.0 ; extra == 'full'
221
- Requires-Dist: duckdb >=0.9.0 ; extra == 'full'
220
+ Requires-Dist: duckdb <0.10.3 ; extra == 'full'
222
221
  Requires-Dist: duckdb-engine >=0.9.2 ; extra == 'full'
223
222
  Requires-Dist: toga >=0.3.0-dev29 ; extra == 'full'
224
223
  Requires-Dist: pywebview >=3.6.3 ; extra == 'full'
225
224
  Requires-Dist: pycparser >=2.21.0 ; extra == 'full'
226
225
  Requires-Dist: numpy >=1.18.5 ; extra == 'full'
227
226
  Requires-Dist: pandas[parquet] >=2.0.1 ; extra == 'full'
228
- Requires-Dist: pyarrow >=7.0.0 ; extra == 'full'
229
- Requires-Dist: dask >=2023.5.0 ; extra == 'full'
227
+ Requires-Dist: pyarrow >=16.1.0 ; extra == 'full'
228
+ Requires-Dist: dask[dataframe] >=2024.5.1 ; extra == 'full'
230
229
  Requires-Dist: pytz ; extra == 'full'
231
230
  Requires-Dist: joblib >=0.17.0 ; extra == 'full'
232
231
  Requires-Dist: SQLAlchemy >=2.0.5 ; extra == 'full'
@@ -241,14 +240,13 @@ Requires-Dist: dash-extensions >=1.0.4 ; extra == 'full'
241
240
  Requires-Dist: dash-daq >=0.5.0 ; extra == 'full'
242
241
  Requires-Dist: terminado >=0.12.1 ; extra == 'full'
243
242
  Requires-Dist: tornado >=6.1.0 ; extra == 'full'
244
- Requires-Dist: uvicorn[standard] >=0.22.0 ; extra == 'full'
245
- Requires-Dist: gunicorn >=20.1.0 ; extra == 'full'
243
+ Requires-Dist: uvicorn[standard] >=0.29.0 ; extra == 'full'
244
+ Requires-Dist: gunicorn >=22.0.0 ; extra == 'full'
246
245
  Requires-Dist: python-dotenv >=0.20.0 ; extra == 'full'
247
246
  Requires-Dist: websockets >=11.0.3 ; extra == 'full'
248
- Requires-Dist: fastapi >=0.100.0 ; extra == 'full'
249
- Requires-Dist: passlib >=1.7.4 ; extra == 'full'
247
+ Requires-Dist: fastapi >=0.111.0 ; extra == 'full'
250
248
  Requires-Dist: fastapi-login >=1.7.2 ; extra == 'full'
251
- Requires-Dist: python-multipart >=0.0.5 ; extra == 'full'
249
+ Requires-Dist: python-multipart >=0.0.9 ; extra == 'full'
252
250
  Requires-Dist: httpx >=0.24.1 ; extra == 'full'
253
251
  Provides-Extra: gui
254
252
  Requires-Dist: toga >=0.3.0-dev29 ; extra == 'gui'
@@ -260,8 +258,8 @@ Provides-Extra: setup
260
258
  Provides-Extra: sql
261
259
  Requires-Dist: numpy >=1.18.5 ; extra == 'sql'
262
260
  Requires-Dist: pandas[parquet] >=2.0.1 ; extra == 'sql'
263
- Requires-Dist: pyarrow >=7.0.0 ; extra == 'sql'
264
- Requires-Dist: dask >=2023.5.0 ; extra == 'sql'
261
+ Requires-Dist: pyarrow >=16.1.0 ; extra == 'sql'
262
+ Requires-Dist: dask[dataframe] >=2024.5.1 ; extra == 'sql'
265
263
  Requires-Dist: pytz ; extra == 'sql'
266
264
  Requires-Dist: joblib >=0.17.0 ; extra == 'sql'
267
265
  Requires-Dist: SQLAlchemy >=2.0.5 ; extra == 'sql'
@@ -273,7 +271,7 @@ Requires-Dist: psycopg[binary] >=3.1.18 ; extra == 'sql'
273
271
  Requires-Dist: PyMySQL >=0.9.0 ; extra == 'sql'
274
272
  Requires-Dist: aiomysql >=0.0.21 ; extra == 'sql'
275
273
  Requires-Dist: sqlalchemy-cockroachdb >=2.0.0 ; extra == 'sql'
276
- Requires-Dist: duckdb >=0.9.0 ; extra == 'sql'
274
+ Requires-Dist: duckdb <0.10.3 ; extra == 'sql'
277
275
  Requires-Dist: duckdb-engine >=0.9.2 ; extra == 'sql'
278
276
  Requires-Dist: wheel >=0.34.2 ; extra == 'sql'
279
277
  Requires-Dist: setuptools >=63.3.0 ; extra == 'sql'
@@ -38,7 +38,7 @@ meerschaum/actions/register.py,sha256=l_21LWZCzKwJVex_xAXECC5WVW1VEuIX9HSp7CuyCw
38
38
  meerschaum/actions/reload.py,sha256=gMXeFBGVfyQ7uhKhYf6bLaDMD0fLPcA9BrLBSiuvWIc,508
39
39
  meerschaum/actions/setup.py,sha256=KkAGWcgwzl_L6A19fTmTX1KtBjW2FwD8QenLjPy0mQQ,3205
40
40
  meerschaum/actions/sh.py,sha256=fLfTJaacKu4sjLTRqEzzYlT2WbbdZBEczsKb6F-qAek,2026
41
- meerschaum/actions/show.py,sha256=9TCiRp_KWjzXkEw3yBInFh2h-qzooj7TAkYd6xhKYbA,29016
41
+ meerschaum/actions/show.py,sha256=p92UahbFeKOThGooO8Ul5Z6s6_Ll54FCxXsMAFnhuT0,29024
42
42
  meerschaum/actions/sql.py,sha256=wYofwk1vGO96U2ncigGEfMtYMZeprz2FR1PRRZhkAPI,4311
43
43
  meerschaum/actions/stack.py,sha256=WMRMebyYwZGNlbnj6Ja09qvCSDNteFJOTa8_joHlnVo,5886
44
44
  meerschaum/actions/start.py,sha256=mNFWqxc_o9moavvDQWE4YoZF6b-SW2nKyw5MtwIj-90,18384
@@ -48,10 +48,10 @@ meerschaum/actions/tag.py,sha256=SJf5qFW0ccLXjqlTdkK_0MCcrCMdg6xhYrhKdco0hdA,305
48
48
  meerschaum/actions/uninstall.py,sha256=2fUd5ZK45VGGCI8V4NLmSnavdKjOv7cGM22x2WlTStw,6068
49
49
  meerschaum/actions/upgrade.py,sha256=VQKyjCGioEF2FYbQmldHh21imDqApNl0xal0rhxzrJk,6302
50
50
  meerschaum/actions/verify.py,sha256=tY5slGpHiWiE0v9TDnjbmxSKn86zBnu9WBpixUgKNQU,4885
51
- meerschaum/api/__init__.py,sha256=1PA77oMR9HAgrj2tIYvxwWjpYnx3H4lwm7jq0JVTYmM,7694
51
+ meerschaum/api/__init__.py,sha256=LEAAhOBNT6VHRTiLKWfVxBHBbqeucilHXLelrPkxjZI,7385
52
52
  meerschaum/api/_chain.py,sha256=h8-WXUGXX6AqzdALfsBC5uv0FkAcLdHJXCGzqzuq89k,875
53
53
  meerschaum/api/_events.py,sha256=NrjiabEr7rmHMfxnX07DOGzr9sPiEbRkFqPjuA_8Zx8,1603
54
- meerschaum/api/_oauth2.py,sha256=eH5r2rWuDmMHJPuukG0hj1E-LqtcDf5-lzp1YShOQOo,961
54
+ meerschaum/api/_oauth2.py,sha256=He8JnFDhfCq25Wlz1Jh3TcGz83VOttrJk6RgzJKbFLw,1056
55
55
  meerschaum/api/_websockets.py,sha256=OmrSDGx3xGlfP5XXeLEyYW6-Y3iRUcB-xSqL3RWsjqQ,1609
56
56
  meerschaum/api/dash/__init__.py,sha256=yr4zR7uFPlLFc_lDpwa2rCM1h9ZWGiu5-2XhHcM-5f8,2252
57
57
  meerschaum/api/dash/actions.py,sha256=eUClPPdNVNSCtyq8Ecr1saasxj5VBgd1gcXejvQxXEc,9418
@@ -59,7 +59,7 @@ meerschaum/api/dash/components.py,sha256=hdcxQahw9lHDBlZlztj-IKX4GueZRTVKfjGC6fF
59
59
  meerschaum/api/dash/connectors.py,sha256=nJxBOFldtCMJLYjUSVYZwX5BO-LNjTNHgoEaXe-0XMo,843
60
60
  meerschaum/api/dash/graphs.py,sha256=wJUDWzcLN8-C3xko6rj0F2v7Rt8YDkSXoVkkXJjYGIk,2046
61
61
  meerschaum/api/dash/jobs.py,sha256=htqnrtAGCOgn2-THezMGYM8n1E-M-sM5A5qNmOGfHzg,7529
62
- meerschaum/api/dash/keys.py,sha256=anGVwK5pVR5alVQS0oStl7iq9c6klsocENfSjCRdGyQ,12591
62
+ meerschaum/api/dash/keys.py,sha256=hzEVeN60SAfVTVSO5lajGaykxRIKGhj9Ph00HRJnNoE,12598
63
63
  meerschaum/api/dash/pipes.py,sha256=yGlLesL32XiHqt2n28876s49BlGEov2X18ZZhZJRw-M,19233
64
64
  meerschaum/api/dash/plugins.py,sha256=JrLLw2r1Ar7asBgbMbSuiuz8dB9bME41ChynYN2KO-Y,3662
65
65
  meerschaum/api/dash/sync.py,sha256=9lt7IRdG-fe9gf_ZO_viPiGlerX7ic6r_VFocv3I51A,504
@@ -73,13 +73,13 @@ meerschaum/api/dash/assets/favicon.ico,sha256=nDEekVxwS60wEDno1nbw5GF3TJOcDV26SE
73
73
  meerschaum/api/dash/assets/logo_48x48.png,sha256=hTR5BHUHEN4yP2xiqAcDciuigoII9T3-80R-dzsxVmw,10218
74
74
  meerschaum/api/dash/assets/logo_500x500.png,sha256=9EUtf6wQcEZTXHKfQ2kjNXod6Rn_4DTB_BkTgxggq00,67702
75
75
  meerschaum/api/dash/callbacks/__init__.py,sha256=tAcK0ZX5qAN9mD5f7AYv0IBsGI6vI5r6wswPXfGgJfM,325
76
- meerschaum/api/dash/callbacks/dashboard.py,sha256=LfK3EuaDEdImM0gN7SShnigaxJ4fYxQoBTDeKvw8UFo,32283
76
+ meerschaum/api/dash/callbacks/dashboard.py,sha256=M3VJoRoI89jjPLSQejwp5v56-nkzs-g30r6rRvwIkCQ,32301
77
77
  meerschaum/api/dash/callbacks/jobs.py,sha256=OEYxJRlmnxqbsvHb5jBJJCsRvVCsMNusm9AClCT9Pm0,7689
78
78
  meerschaum/api/dash/callbacks/login.py,sha256=dfl0EOkEUcF7a-u8fq0WGNtwV63714ds30yWfOM2rqE,2613
79
79
  meerschaum/api/dash/callbacks/plugins.py,sha256=7CrwwbBI2N3DR4Yb1bKmrtJ3cAQ3dVv1l6E_AtZ6Wng,2777
80
80
  meerschaum/api/dash/callbacks/register.py,sha256=9AgTcl--TPt6oETKzirQCkH9Azlm3XrU9U6XJM2b8Lk,3600
81
81
  meerschaum/api/dash/pages/__init__.py,sha256=1g3KAVYklZ5L8bpW-LfG5jBXRebnUeA_wmNsuIMRZEE,273
82
- meerschaum/api/dash/pages/dashboard.py,sha256=rD4UVu_9K2UOLQJR7_Wsv50Tn-RTnGMrivGP55_Q_Dg,3930
82
+ meerschaum/api/dash/pages/dashboard.py,sha256=WKwy40kgm2Qy0k1ZTIueFnnVu0YBzFAd_8AT6CHHvfM,3835
83
83
  meerschaum/api/dash/pages/error.py,sha256=-uCrASuIBrceHcc-leLeEoLos2ibSBWG0XMFQzFwtbw,595
84
84
  meerschaum/api/dash/pages/login.py,sha256=FXPUuakS1SBsa3vSQShRX-Py5FwFvd7poeBUahmIB8A,4600
85
85
  meerschaum/api/dash/pages/plugins.py,sha256=9VpRqWW-3OhgZDUoo4J8PYswd231HaxlcSntxOOKsQA,1549
@@ -128,23 +128,23 @@ meerschaum/config/_default.py,sha256=DSbyVcAL55Xf8MJCTxpgF7ZXL-O9peeMEqL29WFfsJ4
128
128
  meerschaum/config/_edit.py,sha256=CE8gumBiOtnZZdTATCLAZgUnhL04yJdReaNCrv1yuJc,8218
129
129
  meerschaum/config/_environment.py,sha256=Vv4DLDfc2vKLbCLsMvkQDj77K4kEvHKEBmUBo-wCrgo,4419
130
130
  meerschaum/config/_formatting.py,sha256=RT_oU0OSfUkzeqbY5jvEJwuove_t9sP4MyUb1Px250U,6635
131
- meerschaum/config/_jobs.py,sha256=ORoMQQeYQe_zWdgId4OL9R_n6KCFwKGM8T6KarCZDXI,1228
131
+ meerschaum/config/_jobs.py,sha256=2bEikO48qVSguFS3lrbWz6uiKt_0b3oSRWhwyz8RRDM,1279
132
132
  meerschaum/config/_patch.py,sha256=21N30q1ANmWMDQ-2RUjpMx7KafWfPQ3lKx9rrMqg1s4,1526
133
- meerschaum/config/_paths.py,sha256=Y8r60TdTGn9W9JBu5Ct0SsrsT1vu8rvfPBeC3kr-CNY,8064
133
+ meerschaum/config/_paths.py,sha256=TihDGA6IQou3ms1xKYHmRTU48kOflqV5ZOMguG25NM4,8154
134
134
  meerschaum/config/_preprocess.py,sha256=-AEA8m_--KivZwTQ1sWN6LTn5sio_fUr2XZ51BO6wLs,1220
135
135
  meerschaum/config/_read_config.py,sha256=WFZKIXZMDe_ca0ES7ivgM_mnwShvFxLdoeisT_X5-h0,14720
136
136
  meerschaum/config/_shell.py,sha256=s74cmJl8NrhM_Y1cB_P41_JDUYXV0g4WXnKFZWMtnrY,3551
137
137
  meerschaum/config/_sync.py,sha256=oK2ZujO2T1he08BXCFyiniBUevNGWSQKXLcS_jRv_7Y,4155
138
- meerschaum/config/_version.py,sha256=8rfJ7DJwhu8N0Yi83bVnmcqluaRt_x9NGVOkQZAP5co,74
138
+ meerschaum/config/_version.py,sha256=6-VmhSVm61Y2uCa9nlsUwmkBFChw3Ft25iUS-WOY4Ts,74
139
139
  meerschaum/config/resources/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
140
140
  meerschaum/config/stack/__init__.py,sha256=c_WdTSejVdj8lqSE_pK5MhIBkHoftiZWDuEuB9dmk2I,9007
141
141
  meerschaum/config/stack/grafana/__init__.py,sha256=LNXQw2FvHKrD68RDhqDmi2wJjAHaKw9IWx8rNuyWEPo,2010
142
142
  meerschaum/config/stack/mosquitto/__init__.py,sha256=-OwOjq8KiBoSH_pmgCAAF3Dp3CRD4KgAEdimZSadROs,186
143
143
  meerschaum/config/stack/mosquitto/resources/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
144
144
  meerschaum/config/stack/resources/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
145
- meerschaum/config/static/__init__.py,sha256=EvLb2Syq3zykmzM7r083HjAXTOfLBKjPuu5ZIMVVs9M,4435
145
+ meerschaum/config/static/__init__.py,sha256=zsSq54OkLqjfG_QGyH6zXzZnoaGpDyjmV0OCvbygFr8,4474
146
146
  meerschaum/connectors/Connector.py,sha256=cJKinmk7eWZwCBvtX4H9r66macTZOY1qjxR7JUEmDmg,6381
147
- meerschaum/connectors/__init__.py,sha256=0uAfGRyLhUI19p161wytmzAurx3znhh4I9O9PyZ4w_E,12023
147
+ meerschaum/connectors/__init__.py,sha256=OCNfIEeuom6g7GOO3xj37YAuxLOesGCZ-VrcltyHsSY,12071
148
148
  meerschaum/connectors/parse.py,sha256=gidA2jvOLTvEeL5hM9JjcUwkMRBadUhd4IfA5Jy1tgg,4044
149
149
  meerschaum/connectors/poll.py,sha256=gIY9TvFBqMvMNQvR0O2No7koLLz2PjfExBr_Dsosgpg,7363
150
150
  meerschaum/connectors/api/APIConnector.py,sha256=pj-RncLhDUEBK7R4tByH6nrxZWU8zxGVOS2Wyik36zs,4355
@@ -160,15 +160,15 @@ meerschaum/connectors/api/_uri.py,sha256=h4Gj63f0q2V-TNMd8aAkQZMIj_-pA6uGacg_RNE
160
160
  meerschaum/connectors/api/_users.py,sha256=kzb7ENgXwQ19OJYKOuuWzx2rwVuUZCly9dTnyvVuT2Q,5275
161
161
  meerschaum/connectors/plugin/PluginConnector.py,sha256=aQ1QaB7MordCFimZqoGLb0R12PfDUN_nWks2J5mzeAs,2084
162
162
  meerschaum/connectors/plugin/__init__.py,sha256=pwF7TGY4WNz2_HaVdmK4rPQ9ZwTOEuPHgzOqsGcoXJw,198
163
- meerschaum/connectors/sql/SQLConnector.py,sha256=dPMgJXLghzBmqHaT9qxvn8pzerQLpzkUPRx42W6mJIU,11522
163
+ meerschaum/connectors/sql/SQLConnector.py,sha256=QvsFgAv2NAUdsJrcNYZIkQ9x_ow5JRe4Ie_UgSrDz3M,11709
164
164
  meerschaum/connectors/sql/__init__.py,sha256=xwSYhYuketTXhQLXyD9pZ0NNBPboW5Oqv9zrKfjx0Ic,175
165
165
  meerschaum/connectors/sql/_cli.py,sha256=XaWjWZzGIfhMiYoXAs2FrwHUGNyZpxIzH4g4xugLKsw,4123
166
- meerschaum/connectors/sql/_create_engine.py,sha256=b1ICKl3ZnPX5R2vqbKcClsCnHih9SghF6ghpy19FEpQ,10375
166
+ meerschaum/connectors/sql/_create_engine.py,sha256=vPVwR3cpfcQm0aW9xo_DUWA3gMdlkuB0wJ8JoTpRYD0,10396
167
167
  meerschaum/connectors/sql/_fetch.py,sha256=NYYWDoEd-aGIS337KwH-D9_3KVWVCZOHAspGLfdEuUE,13086
168
- meerschaum/connectors/sql/_instance.py,sha256=jAGq_qjz2WyBrjtnI7FyGRLOs2l3o630vonPM5Pp4Mg,6447
169
- meerschaum/connectors/sql/_pipes.py,sha256=4v1-2AwW8QqOTRjNUEoDJJH8KsJa6FxMNSekEDWJu6o,100925
168
+ meerschaum/connectors/sql/_instance.py,sha256=r_S96vzSuKnBVGROSKQAPl-DnFnOOEPUkz1KFDFPHFQ,6509
169
+ meerschaum/connectors/sql/_pipes.py,sha256=rVNHYo7BwVe7PTNYBQVsjxH2bKT2XFqZO4Kakzv9AW8,101362
170
170
  meerschaum/connectors/sql/_plugins.py,sha256=OsCmDlZKyJnY77QAWghmpuXR0z_CmFq5uHpZK7Cj-ZI,8321
171
- meerschaum/connectors/sql/_sql.py,sha256=jNdIcwQC2ZMNKT9W6ugavQPtimUpoTr8cBt05z_vHIo,34262
171
+ meerschaum/connectors/sql/_sql.py,sha256=553BTPtvnnLMERYK8IcxR4CS3R4Sq7id-5hbApOEsIU,34199
172
172
  meerschaum/connectors/sql/_uri.py,sha256=0BrhQtqQdzg9mR04gWBZINs_BbPFtSlTECXT_TCUwik,3460
173
173
  meerschaum/connectors/sql/_users.py,sha256=JkD6lKYJO8JVnpVySMqPM20NWUr-XzD_JO-lLMcAD_c,10100
174
174
  meerschaum/connectors/sql/tools.py,sha256=jz8huOaRCwGlYdtGfAqAh7SoK8uydYBrasKQba9FT38,187
@@ -191,10 +191,10 @@ meerschaum/core/Pipe/_show.py,sha256=nG50y8eBT9TVuKkRgAKtNDNIxysJvMNxfu__lkL1F9k
191
191
  meerschaum/core/Pipe/_sync.py,sha256=48qk1xvkcKOqfzzYf3QdA7ojsP80yrso1YU8QIGJxwE,28038
192
192
  meerschaum/core/Pipe/_verify.py,sha256=KSnthUzImRLjt9fxyBaLvArqDuOLRpKBfk0tnseJClc,14262
193
193
  meerschaum/core/Plugin/__init__.py,sha256=UXg64EvJPgI1PCxkY_KM02-ZmBm4FZpLPIQR_uSJJDc,137
194
- meerschaum/core/User/_User.py,sha256=JZaIvRq32Hfp369s-TfouFUHzlBBsJHhcv3ug7DRwFM,6456
194
+ meerschaum/core/User/_User.py,sha256=CApB7Y0QJL6S9QOCCfrG4SbPuPXJ9AsAYQ5pASMP_Aw,6527
195
195
  meerschaum/core/User/__init__.py,sha256=lJ7beIZTG9sO4dAi3367fFBl17dXYEWHKi7HoaPlDyk,193
196
196
  meerschaum/plugins/_Plugin.py,sha256=LpplVPviSskKqf_igl4yIsD72H2C9vaFPQgU7-93ytg,34039
197
- meerschaum/plugins/__init__.py,sha256=pVRgbBk1UMlqLrM5p1s7_x_mN70epdDBZOa4vrt6C6w,20760
197
+ meerschaum/plugins/__init__.py,sha256=g-KFejGEqcfBukqqF13Vsj8TdjGo99nrv_Z6CB8-mCg,21866
198
198
  meerschaum/utils/__init__.py,sha256=QrK1K9hIbPCRCM5k2nZGFqGnrqhA0Eh-iSmCU7FG6Cs,612
199
199
  meerschaum/utils/_get_pipes.py,sha256=dlPckpYYyM0IwRZ2VL0u9DiEeYhr5Ho9gkzvWxzNVwI,11460
200
200
  meerschaum/utils/dataframe.py,sha256=vxZ72ME7IWuadtktgjFZF5bc9fXW_0TuynjFlJljlLU,31955
@@ -203,18 +203,18 @@ meerschaum/utils/interactive.py,sha256=t-6jWozXSqL7lYGDHuwiOjTgr-UKhdcg61q_eR5mi
203
203
  meerschaum/utils/misc.py,sha256=H26hLtCP8QHwXoHlvkxjWu6cPTwudDbbsbRkGw6ultg,43296
204
204
  meerschaum/utils/networking.py,sha256=Sr_eYUGW8_UV9-k9LqRFf7xLtbUcsDucODyLCRsFRUc,1006
205
205
  meerschaum/utils/pool.py,sha256=vkE42af4fjrTEJTxf6Ek3xGucm1MtEkpsSEiaVzNKHs,2655
206
- meerschaum/utils/process.py,sha256=tbEutHAg_Kn5UetOI-fduRjsafGOYX5tkLvpzqosgvc,7098
206
+ meerschaum/utils/process.py,sha256=IHnUhX79XofHwMsOs1A_irLMa7i48xXB-GCL83MtZOY,7192
207
207
  meerschaum/utils/prompt.py,sha256=0mBFbgi_l9rCou9UnC_6qKTHkqyl1Z_jSRzfmc0xRXM,16490
208
- meerschaum/utils/schedule.py,sha256=nXiOAHNq51WDS5NS4MPMDmv1MY7RV0TxRNXN69S_w1w,10020
208
+ meerschaum/utils/schedule.py,sha256=coJm8s91DZjezv4h9dkgUkU3R_O7gWJUBojxjItkrCQ,10654
209
209
  meerschaum/utils/sql.py,sha256=4sCNEpgUd6uFz6ySs4nnUMVaOT0YAvPM1ZlQYJTSF-0,46656
210
210
  meerschaum/utils/threading.py,sha256=3N8JXPAnwqJiSjuQcbbJg3Rv9-CCUMJpeQRfKFR7MaA,2489
211
211
  meerschaum/utils/typing.py,sha256=L05wOXfWdn_nJ0KnZVr-2zdMYcqjdyOW_7InT3xe6-s,2807
212
212
  meerschaum/utils/warnings.py,sha256=0b5O2DBbhEAGnu6RAB1hlHSVmwL_hcR3EiMkExXmBJ0,6535
213
213
  meerschaum/utils/yaml.py,sha256=vbCrFjdapKsZ9wRRaI9Ih8dVUwZ-KHpSzfGhRcpDBgQ,3162
214
- meerschaum/utils/daemon/Daemon.py,sha256=KRhK9n-UHVNHUBRKBkBFv-SB_DQpgZyqDQ712VmG7f4,33728
215
- meerschaum/utils/daemon/FileDescriptorInterceptor.py,sha256=eEOMxm9fO94rae4BSmkZjPj6evfwPLdJ2CS56ToiZl4,3180
216
- meerschaum/utils/daemon/RotatingFile.py,sha256=F-xXR7MATa-6roZUHVVoaPixOPKCjvWbpdfo_F8X1LU,23376
217
- meerschaum/utils/daemon/__init__.py,sha256=y4AZ0ddFJjAgT4yzkaJfH4qygF-Ypoj94F1YFjVrrPU,8262
214
+ meerschaum/utils/daemon/Daemon.py,sha256=iZzlPMF237sidfQJ3iNrhGJpV6onvEo1_9qtv9pE1j4,34595
215
+ meerschaum/utils/daemon/FileDescriptorInterceptor.py,sha256=1cn5nQYLImL-BHXlLoxN_TadgN7XmGRLl1b7xecYMPc,4544
216
+ meerschaum/utils/daemon/RotatingFile.py,sha256=LuaHPs-c4GaMc3VkMjvL6WJ5r7wmMUOm9ZLyk4OHAlg,23658
217
+ meerschaum/utils/daemon/__init__.py,sha256=I_ki51yml4vsh9OoH7BWTaz9SnATD8qM0i0fN3aUMn0,8375
218
218
  meerschaum/utils/daemon/_names.py,sha256=Prf7xA2GWDbKR_9Xq9_5RTTIf9GNWY3Yt0s4tEU3JgM,4330
219
219
  meerschaum/utils/dtypes/__init__.py,sha256=JR9PViJTzhukZhq0QoPIs73HOnXZZr8OmfhAAD4OAUA,6261
220
220
  meerschaum/utils/dtypes/sql.py,sha256=IkEOyB63je-rCLHM6WwFzGbCerYk1zobL1cXkWqmTa4,14638
@@ -223,16 +223,16 @@ meerschaum/utils/formatting/_jobs.py,sha256=s1lVcdMkzNj5Bqw-GsUhcguUFtahi5nQ-kg1
223
223
  meerschaum/utils/formatting/_pipes.py,sha256=wy0iWJFsFl3X2VloaiA_gp9Yx9w6tD3FQZvAQAqef4A,19492
224
224
  meerschaum/utils/formatting/_pprint.py,sha256=tgrT3FyGyu5CWJYysqK3kX1xdZYorlbOk9fcU_vt9Qg,3096
225
225
  meerschaum/utils/formatting/_shell.py,sha256=ox75O7VHDAiwzSvdMSJZhXLadvAqYJVeihU6WeZ2Ogc,3677
226
- meerschaum/utils/packages/__init__.py,sha256=Ohwzw1GufuqQd-N2fkPSCXXGaSSDKB5_zVZ3S9atviM,57032
227
- meerschaum/utils/packages/_packages.py,sha256=eSTwPNe2llLZFdBSofuKz903mxL7feNNUYb8YlkYjhQ,7968
226
+ meerschaum/utils/packages/__init__.py,sha256=HEJYz_rceqljpyRFlnToLR6vc_b7r-2d2K8zh_th2lg,57185
227
+ meerschaum/utils/packages/_packages.py,sha256=eAw_5D9AHblnUnKEiBMCElVgtCosxgrhQUAAktITSNA,7864
228
228
  meerschaum/utils/packages/lazy_loader.py,sha256=VHnph3VozH29R4JnSSBfwtA5WKZYZQFT_GeQSShCnuc,2540
229
229
  meerschaum/utils/venv/_Venv.py,sha256=sBnlmxHdAh2bx8btfVoD79-H9-cYsv5lP02IIXkyECs,3553
230
230
  meerschaum/utils/venv/__init__.py,sha256=sj-n8scWH2NPDJGAxfpqzsYqVUt2jMEr-7Uq9G7YUNQ,23183
231
- meerschaum-2.2.0rc2.dist-info/LICENSE,sha256=jG2zQEdRNt88EgHUWPpXVWmOrOduUQRx7MnYV9YIPaw,11359
232
- meerschaum-2.2.0rc2.dist-info/METADATA,sha256=awkeChQGlTmd76GyDGXCUsiBMNxD7WxpHpuI1ZRClQ0,23964
233
- meerschaum-2.2.0rc2.dist-info/NOTICE,sha256=OTA9Fcthjf5BRvWDDIcBC_xfLpeDV-RPZh3M-HQBRtQ,114
234
- meerschaum-2.2.0rc2.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
235
- meerschaum-2.2.0rc2.dist-info/entry_points.txt,sha256=5YBVzibw-0rNA_1VjB16z5GABsOGf-CDhW4yqH8C7Gc,88
236
- meerschaum-2.2.0rc2.dist-info/top_level.txt,sha256=bNoSiDj0El6buocix-FRoAtJOeq1qOF5rRm2u9i7Q6A,11
237
- meerschaum-2.2.0rc2.dist-info/zip-safe,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
238
- meerschaum-2.2.0rc2.dist-info/RECORD,,
231
+ meerschaum-2.2.0rc4.dist-info/LICENSE,sha256=jG2zQEdRNt88EgHUWPpXVWmOrOduUQRx7MnYV9YIPaw,11359
232
+ meerschaum-2.2.0rc4.dist-info/METADATA,sha256=KBLySrydHzynnwn50qWE8vmaRC7G5UjrRDU-R65BgoY,23806
233
+ meerschaum-2.2.0rc4.dist-info/NOTICE,sha256=OTA9Fcthjf5BRvWDDIcBC_xfLpeDV-RPZh3M-HQBRtQ,114
234
+ meerschaum-2.2.0rc4.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
235
+ meerschaum-2.2.0rc4.dist-info/entry_points.txt,sha256=5YBVzibw-0rNA_1VjB16z5GABsOGf-CDhW4yqH8C7Gc,88
236
+ meerschaum-2.2.0rc4.dist-info/top_level.txt,sha256=bNoSiDj0El6buocix-FRoAtJOeq1qOF5rRm2u9i7Q6A,11
237
+ meerschaum-2.2.0rc4.dist-info/zip-safe,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
238
+ meerschaum-2.2.0rc4.dist-info/RECORD,,