meerschaum 2.2.5.dev3__py3-none-any.whl → 2.2.7__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- meerschaum/__init__.py +4 -1
- meerschaum/__main__.py +10 -5
- meerschaum/_internal/arguments/_parser.py +13 -2
- meerschaum/_internal/docs/index.py +523 -26
- meerschaum/_internal/entry.py +13 -13
- meerschaum/_internal/shell/Shell.py +26 -22
- meerschaum/_internal/shell/updates.py +175 -0
- meerschaum/_internal/term/__init__.py +2 -2
- meerschaum/actions/bootstrap.py +13 -14
- meerschaum/actions/python.py +11 -8
- meerschaum/actions/register.py +149 -37
- meerschaum/actions/show.py +79 -71
- meerschaum/actions/stop.py +11 -11
- meerschaum/actions/sync.py +3 -3
- meerschaum/actions/upgrade.py +28 -36
- meerschaum/api/dash/callbacks/login.py +21 -13
- meerschaum/api/dash/pages/login.py +2 -2
- meerschaum/api/routes/_login.py +5 -5
- meerschaum/api/routes/_pipes.py +20 -20
- meerschaum/config/__init__.py +8 -1
- meerschaum/config/_formatting.py +1 -0
- meerschaum/config/_paths.py +24 -2
- meerschaum/config/_shell.py +78 -66
- meerschaum/config/_version.py +1 -1
- meerschaum/config/paths.py +21 -2
- meerschaum/config/static/__init__.py +2 -0
- meerschaum/connectors/Connector.py +7 -2
- meerschaum/connectors/__init__.py +7 -5
- meerschaum/connectors/api/APIConnector.py +7 -2
- meerschaum/connectors/api/_actions.py +23 -31
- meerschaum/connectors/api/_misc.py +1 -1
- meerschaum/connectors/api/_request.py +13 -9
- meerschaum/connectors/api/_uri.py +5 -5
- meerschaum/core/Pipe/__init__.py +7 -3
- meerschaum/core/Pipe/_data.py +23 -15
- meerschaum/core/Pipe/_deduplicate.py +1 -1
- meerschaum/core/Pipe/_dtypes.py +5 -0
- meerschaum/core/Pipe/_fetch.py +18 -16
- meerschaum/core/Pipe/_sync.py +23 -15
- meerschaum/plugins/_Plugin.py +6 -6
- meerschaum/plugins/__init__.py +1 -1
- meerschaum/utils/daemon/Daemon.py +88 -129
- meerschaum/utils/daemon/FileDescriptorInterceptor.py +14 -5
- meerschaum/utils/daemon/RotatingFile.py +23 -17
- meerschaum/utils/daemon/__init__.py +28 -21
- meerschaum/utils/dataframe.py +12 -4
- meerschaum/utils/debug.py +9 -15
- meerschaum/utils/formatting/__init__.py +92 -46
- meerschaum/utils/formatting/_jobs.py +47 -9
- meerschaum/utils/misc.py +117 -11
- meerschaum/utils/packages/__init__.py +28 -16
- meerschaum/utils/prompt.py +5 -0
- meerschaum/utils/schedule.py +21 -15
- meerschaum/utils/typing.py +1 -0
- meerschaum/utils/venv/__init__.py +5 -1
- meerschaum/utils/warnings.py +8 -1
- meerschaum/utils/yaml.py +2 -2
- {meerschaum-2.2.5.dev3.dist-info → meerschaum-2.2.7.dist-info}/METADATA +1 -1
- {meerschaum-2.2.5.dev3.dist-info → meerschaum-2.2.7.dist-info}/RECORD +65 -64
- {meerschaum-2.2.5.dev3.dist-info → meerschaum-2.2.7.dist-info}/WHEEL +1 -1
- {meerschaum-2.2.5.dev3.dist-info → meerschaum-2.2.7.dist-info}/LICENSE +0 -0
- {meerschaum-2.2.5.dev3.dist-info → meerschaum-2.2.7.dist-info}/NOTICE +0 -0
- {meerschaum-2.2.5.dev3.dist-info → meerschaum-2.2.7.dist-info}/entry_points.txt +0 -0
- {meerschaum-2.2.5.dev3.dist-info → meerschaum-2.2.7.dist-info}/top_level.txt +0 -0
- {meerschaum-2.2.5.dev3.dist-info → meerschaum-2.2.7.dist-info}/zip-safe +0 -0
meerschaum/__init__.py
CHANGED
@@ -23,7 +23,7 @@ from meerschaum.utils.typing import SuccessTuple
|
|
23
23
|
from meerschaum.core.Pipe import Pipe
|
24
24
|
from meerschaum.plugins import Plugin
|
25
25
|
from meerschaum.utils.venv import Venv
|
26
|
-
from meerschaum.connectors import get_connector
|
26
|
+
from meerschaum.connectors import get_connector, Connector, make_connector
|
27
27
|
from meerschaum.utils import get_pipes
|
28
28
|
from meerschaum.utils.formatting import pprint
|
29
29
|
from meerschaum._internal.docs import index as __doc__
|
@@ -49,4 +49,7 @@ __all__ = (
|
|
49
49
|
"connectors",
|
50
50
|
"plugins",
|
51
51
|
"utils",
|
52
|
+
"SuccessTuple",
|
53
|
+
"Connector",
|
54
|
+
"make_connector",
|
52
55
|
)
|
meerschaum/__main__.py
CHANGED
@@ -19,9 +19,15 @@ See the License for the specific language governing permissions and
|
|
19
19
|
limitations under the License.
|
20
20
|
"""
|
21
21
|
|
22
|
-
import sys
|
22
|
+
import sys
|
23
|
+
import os
|
24
|
+
import copy
|
23
25
|
|
24
|
-
|
26
|
+
from meerschaum.utils.typing import List, Optional
|
27
|
+
from meerschaum.utils.formatting import print_tuple as _print_tuple
|
28
|
+
|
29
|
+
|
30
|
+
def main(sysargs: Optional[List[str]] = None) -> None:
|
25
31
|
"""Main CLI entry point."""
|
26
32
|
if sysargs is None:
|
27
33
|
sysargs = copy.deepcopy(sys.argv[1:])
|
@@ -41,7 +47,7 @@ def main(sysargs: list = None) -> None:
|
|
41
47
|
|
42
48
|
if ('-d' in sysargs or '--daemon' in sysargs) and ('stack' not in sysargs):
|
43
49
|
from meerschaum.utils.daemon import daemon_entry
|
44
|
-
daemon_entry(sysargs)
|
50
|
+
_print_tuple(daemon_entry(sysargs), upper_padding=1)
|
45
51
|
return _exit(old_cwd=old_cwd)
|
46
52
|
|
47
53
|
from meerschaum._internal.entry import entry, get_shell
|
@@ -57,8 +63,7 @@ def main(sysargs: list = None) -> None:
|
|
57
63
|
return_tuple = entry(sysargs)
|
58
64
|
rc = 0
|
59
65
|
if isinstance(return_tuple, tuple) and '--nopretty' not in sysargs:
|
60
|
-
|
61
|
-
print_tuple(return_tuple, upper_padding=1)
|
66
|
+
_print_tuple(return_tuple, upper_padding=1)
|
62
67
|
rc = 0 if (return_tuple[0] is True) else 1
|
63
68
|
|
64
69
|
return _exit(rc, old_cwd=old_cwd)
|
@@ -61,6 +61,7 @@ def parse_datetime(dt_str: str) -> Union[datetime, int, str]:
|
|
61
61
|
error(f"'{dt_str}' is not a valid datetime format.", stack=False)
|
62
62
|
return dt
|
63
63
|
|
64
|
+
|
64
65
|
def parse_help(sysargs : Union[List[str], Dict[str, Any]]) -> None:
|
65
66
|
"""Parse the `--help` flag to determine which help message to print."""
|
66
67
|
from meerschaum._internal.arguments._parse_arguments import parse_arguments, parse_line
|
@@ -97,7 +98,8 @@ def parse_help(sysargs : Union[List[str], Dict[str, Any]]) -> None:
|
|
97
98
|
doc = "No help available for '" + f"{args['action'][0]}" + "'."
|
98
99
|
return print(textwrap.dedent(doc))
|
99
100
|
|
100
|
-
|
101
|
+
|
102
|
+
def parse_version(sysargs: List[str]):
|
101
103
|
"""Print the Meerschaum version."""
|
102
104
|
from meerschaum.config import __version__ as version
|
103
105
|
from meerschaum.config import __doc__ as doc
|
@@ -105,6 +107,15 @@ def parse_version(sysargs : List[str]):
|
|
105
107
|
return print(version)
|
106
108
|
return print(doc)
|
107
109
|
|
110
|
+
|
111
|
+
def parse_name(name_str: str) -> str:
|
112
|
+
"""
|
113
|
+
Ensure that `--name` is not an empty string.
|
114
|
+
"""
|
115
|
+
if not name_str:
|
116
|
+
return None
|
117
|
+
return name_str
|
118
|
+
|
108
119
|
def get_arguments_triggers() -> Dict[str, Tuple[str]]:
|
109
120
|
""" """
|
110
121
|
triggers = {}
|
@@ -162,7 +173,7 @@ groups['actions'].add_argument(
|
|
162
173
|
'--rm', action='store_true', help="Delete a job once it has finished executing."
|
163
174
|
)
|
164
175
|
groups['actions'].add_argument(
|
165
|
-
'--name', '--job-name', type=
|
176
|
+
'--name', '--job-name', type=parse_name, help=(
|
166
177
|
"Assign a name to a job. If no name is provided, a random name will be assigned."
|
167
178
|
),
|
168
179
|
)
|
@@ -3,38 +3,535 @@
|
|
3
3
|
# vim:fenc=utf-8
|
4
4
|
|
5
5
|
"""
|
6
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
7
|
+
<style>
|
8
|
+
|
9
|
+
.container {
|
10
|
+
display: flex;
|
11
|
+
justify-content: space-between;
|
12
|
+
}
|
13
|
+
.left, .right {
|
14
|
+
width: 45%; /* Adjust width as needed */
|
15
|
+
}
|
16
|
+
|
17
|
+
</style>
|
18
|
+
|
6
19
|
<img src="https://meerschaum.io/assets/banner_1920x320.png" alt="Meerschaum banner" style="width: 100%;"/>
|
7
20
|
|
8
21
|
# Meerschaum Python API
|
9
22
|
|
10
|
-
Welcome to the Meerschaum Python API technical documentation!
|
23
|
+
Welcome to the Meerschaum Python API technical documentation! Here you can find information about the classes and functions provided by the `meerschaum` package. Visit [meerschaum.io](https://meerschaum.io) for general usage documentation.
|
24
|
+
|
25
|
+
## Root Module
|
26
|
+
|
27
|
+
For your convenience, the following classes and functions may be imported from the root `meerschaum` namespace:
|
28
|
+
|
29
|
+
<div class="container" style="display: flex; justify-content: space-between">
|
30
|
+
|
31
|
+
<div class="left" style="width: 45%;">
|
32
|
+
|
33
|
+
<h3>Classes</h3>
|
34
|
+
|
35
|
+
<ul>
|
36
|
+
<li><code>meerschaum.Connector</code></li>
|
37
|
+
<li><code>meerschaum.Pipe</code></li>
|
38
|
+
<li><code>meerschaum.Plugin</code></li>
|
39
|
+
<li><code>meerschaum.SuccessTuple</code></li>
|
40
|
+
<li><code>meerschaum.Venv</code></li>
|
41
|
+
</ul>
|
42
|
+
|
43
|
+
</div>
|
44
|
+
|
45
|
+
|
46
|
+
<div class="right" style="width: 45%">
|
47
|
+
|
48
|
+
<h3>Functions</h3>
|
49
|
+
|
50
|
+
<ul>
|
51
|
+
<li><code>meerschaum.get_config()</code></li>
|
52
|
+
<li><code>meerschaum.get_connector()</code></li>
|
53
|
+
<li><code>meerschaum.get_pipes()</code></li>
|
54
|
+
<li><code>meerschaum.make_connector()</code></li>
|
55
|
+
<li><code>meerschaum.pprint()</code></li>
|
56
|
+
<li><code>meerschaum.attempt_import()</code></li>
|
57
|
+
</ul>
|
58
|
+
|
59
|
+
</div>
|
60
|
+
</div>
|
61
|
+
|
62
|
+
### Examples
|
63
|
+
|
64
|
+
#### Build a Connector
|
65
|
+
|
66
|
+
```python
|
67
|
+
import meerschaum as mrsm
|
68
|
+
|
69
|
+
sql_conn = mrsm.get_connector(
|
70
|
+
'sql:temp',
|
71
|
+
flavor='sqlite',
|
72
|
+
database='/tmp/tmp.db',
|
73
|
+
)
|
74
|
+
df = sql_conn.read("SELECT 1 AS foo")
|
75
|
+
print(df)
|
76
|
+
# foo
|
77
|
+
# 0 1
|
78
|
+
|
79
|
+
sql_conn.to_sql(df, 'foo')
|
80
|
+
print(sql_conn.read('foo'))
|
81
|
+
# foo
|
82
|
+
# 0 1
|
83
|
+
```
|
84
|
+
|
85
|
+
#### Create a Custom Connector Class
|
86
|
+
|
87
|
+
```python
|
88
|
+
from datetime import datetime, timezone
|
89
|
+
from random import randint
|
90
|
+
import meerschaum as mrsm
|
91
|
+
from meerschaum.utils.misc import round_time
|
92
|
+
|
93
|
+
@mrsm.make_connector
|
94
|
+
class FooConnector(mrsm.Connector):
|
95
|
+
REQUIRED_ATTRIBUTES = ['username', 'password']
|
96
|
+
|
97
|
+
def fetch(
|
98
|
+
self,
|
99
|
+
begin: datetime | None = None,
|
100
|
+
end: datetime | None = None,
|
101
|
+
):
|
102
|
+
now = begin or round_time(datetime.now(timezone.utc))
|
103
|
+
return [
|
104
|
+
{'ts': now, 'id': 1, 'vl': randint(1, 100)},
|
105
|
+
{'ts': now, 'id': 2, 'vl': randint(1, 100)},
|
106
|
+
{'ts': now, 'id': 3, 'vl': randint(1, 100)},
|
107
|
+
]
|
108
|
+
|
109
|
+
foo_conn = mrsm.get_connector(
|
110
|
+
'foo:bar',
|
111
|
+
username='foo',
|
112
|
+
password='bar',
|
113
|
+
)
|
114
|
+
docs = foo_conn.fetch()
|
115
|
+
```
|
116
|
+
|
117
|
+
#### Build a Pipe
|
118
|
+
|
119
|
+
```python
|
120
|
+
from datetime import datetime
|
121
|
+
import meerschaum as mrsm
|
122
|
+
|
123
|
+
pipe = mrsm.Pipe(
|
124
|
+
foo_conn, 'demo',
|
125
|
+
instance=sql_conn,
|
126
|
+
columns={'datetime': 'ts', 'id': 'id'},
|
127
|
+
tags=['production'],
|
128
|
+
)
|
129
|
+
pipe.sync(begin=datetime(2024, 1, 1))
|
130
|
+
df = pipe.get_data()
|
131
|
+
print(df)
|
132
|
+
# ts id vl
|
133
|
+
# 0 2024-01-01 1 97
|
134
|
+
# 1 2024-01-01 2 18
|
135
|
+
# 2 2024-01-01 3 96
|
136
|
+
```
|
137
|
+
|
138
|
+
#### Get Registered Pipes
|
139
|
+
|
140
|
+
```python
|
141
|
+
import meerschaum as mrsm
|
11
142
|
|
12
|
-
|
143
|
+
pipes = mrsm.get_pipes(
|
144
|
+
tags=['production'],
|
145
|
+
instance=sql_conn,
|
146
|
+
as_list=True,
|
147
|
+
)
|
148
|
+
print(pipes)
|
149
|
+
# [Pipe('foo:bar', 'demo', instance='sql:temp')]
|
150
|
+
```
|
151
|
+
|
152
|
+
#### Access a Plugin's Module
|
153
|
+
|
154
|
+
```python
|
155
|
+
import meerschaum as mrsm
|
156
|
+
|
157
|
+
plugin = mrsm.Plugin('noaa')
|
158
|
+
with mrsm.Venv(plugin):
|
159
|
+
noaa = plugin.module
|
160
|
+
print(noaa.get_station_info('KGMU'))
|
161
|
+
# {'name': 'Greenville Downtown Airport', 'geometry': {'type': 'Point', 'coordinates': [-82.35004, 34.84873]}}
|
162
|
+
```
|
163
|
+
|
164
|
+
## Submodules
|
165
|
+
|
166
|
+
<details>
|
167
|
+
<summary>
|
168
|
+
`meerschaum.actions`<br>
|
13
169
|
Access functions for actions and subactions.
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
- `meerschaum.
|
18
|
-
|
19
|
-
- `meerschaum.
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
- `meerschaum.
|
32
|
-
|
33
|
-
- `meerschaum.
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
170
|
+
</summary>
|
171
|
+
|
172
|
+
- `meerschaum.actions.actions`
|
173
|
+
- `meerschaum.actions.get_action()`
|
174
|
+
- `meerschaum.actions.get_completer()`
|
175
|
+
- `meerschaum.actions.get_main_action_name()`
|
176
|
+
- `meerschaum.actions.get_subactions()`
|
177
|
+
|
178
|
+
</details>
|
179
|
+
|
180
|
+
<details>
|
181
|
+
<summary>
|
182
|
+
`meerschaum.config`<br>
|
183
|
+
Read and write the Meerschaum configuration registry.
|
184
|
+
</summary>
|
185
|
+
|
186
|
+
- `meerschaum.config.get_config()`
|
187
|
+
- `meerschaum.config.get_plugin_config()`
|
188
|
+
- `meerschaum.config.write_config()`
|
189
|
+
- `meerschaum.config.write_plugin_config()`
|
190
|
+
|
191
|
+
</details>
|
192
|
+
|
193
|
+
<details>
|
194
|
+
<summary>
|
195
|
+
`meerschaum.connectors`<br>
|
196
|
+
Build connectors to interact with databases and fetch data.
|
197
|
+
</summary>
|
198
|
+
|
199
|
+
- `meerschaum.connectors.get_connector()`
|
200
|
+
- `meerschaum.connectors.make_connector()`
|
201
|
+
- `meerschaum.connectors.is_connected()`
|
202
|
+
- `meerschaum.connectors.poll.retry_connect()`
|
203
|
+
- `meerschaum.connectors.Connector`
|
204
|
+
- `meerschaum.connectors.SQLConnector`
|
205
|
+
- `meerschaum.connectors.APIConnector`
|
206
|
+
|
207
|
+
</details>
|
208
|
+
|
209
|
+
<details>
|
210
|
+
<summary>
|
211
|
+
`meerschaum.plugins`<br>
|
212
|
+
Access plugin modules and other API utilties.
|
213
|
+
</summary>
|
214
|
+
|
215
|
+
- `meerschaum.plugins.Plugin`
|
216
|
+
- `meerschaum.plugins.api_plugin()`
|
217
|
+
- `meerschaum.plugins.dash_plugin()`
|
218
|
+
- `meerschaum.plugins.import_plugins()`
|
219
|
+
- `meerschaum.plugins.reload_plugins()`
|
220
|
+
- `meerschaum.plugins.get_plugins()`
|
221
|
+
- `meerschaum.plugins.get_data_plugins()`
|
222
|
+
- `meerschaum.plugins.add_plugin_argument()`
|
223
|
+
- `meerschaum.plugins.pre_sync_hook()`
|
224
|
+
- `meerschaum.plugins.post_sync_hook()`
|
225
|
+
|
226
|
+
</details>
|
227
|
+
|
228
|
+
<details>
|
229
|
+
<summary><code>meerschaum.utils</code><br>
|
230
|
+
Utility functions are available in several submodules:<br>
|
231
|
+
</summary>
|
232
|
+
|
233
|
+
<ul>
|
234
|
+
<details>
|
235
|
+
<summary>
|
236
|
+
<code>meerschaum.utils.daemon</code><br>
|
237
|
+
Manage background jobs.<br>
|
238
|
+
</summary>
|
239
|
+
<p></p>
|
240
|
+
<ul>
|
241
|
+
<li><code>meerschaum.utils.daemon.daemon_entry()</code></li>
|
242
|
+
<li><code>meerschaum.utils.daemon.daemon_action()</code></li>
|
243
|
+
<li><code>meerschaum.utils.daemon.get_daemons()</code></li>
|
244
|
+
<li><code>meerschaum.utils.daemon.get_daemon_ids()</code></li>
|
245
|
+
<li><code>meerschaum.utils.daemon.get_running_daemons()</code></li>
|
246
|
+
<li><code>meerschaum.utils.daemon.get_paused_daemons()</code></li>
|
247
|
+
<li><code>meerschaum.utils.daemon.get_stopped_daemons()</code></li>
|
248
|
+
<li><code>meerschaum.utils.daemon.get_filtered_daemons()</code></li>
|
249
|
+
<li><code>meerschaum.utils.daemon.run_daemon()</code></li>
|
250
|
+
<li><code>meerschaum.utils.daemon.Daemon</code></li>
|
251
|
+
<li><code>meerschaum.utils.daemon.FileDescriptorInterceptor</code></li>
|
252
|
+
<li><code>meerschaum.utils.daemon.RotatingFile</code></li>
|
253
|
+
</ul>
|
254
|
+
</details>
|
255
|
+
</ul>
|
256
|
+
|
257
|
+
<ul>
|
258
|
+
<details>
|
259
|
+
<summary>
|
260
|
+
<code>meerschaum.utils.debug</code><br>
|
261
|
+
Debugging tools.<br>
|
262
|
+
</summary>
|
263
|
+
<p></p>
|
264
|
+
<ul>
|
265
|
+
<li><code>meerschaum.utils.debug.dprint()</code></li>
|
266
|
+
<li><code>meerschaum.utils.debug.trace()</code></li>
|
267
|
+
</ul>
|
268
|
+
</details>
|
269
|
+
</ul>
|
270
|
+
|
271
|
+
<ul>
|
272
|
+
<details>
|
273
|
+
<summary>
|
274
|
+
<code>meerschaum.utils.dataframe</code><br>
|
275
|
+
Manipulate dataframes.<br>
|
276
|
+
</summary>
|
277
|
+
<p></p>
|
278
|
+
<ul>
|
279
|
+
<li><code>meerschaum.utils.dataframe.add_missing_cols_to_df()</code></li>
|
280
|
+
<li><code>meerschaum.utils.dataframe.df_is_chunk_generator()</code></li>
|
281
|
+
<li><code>meerschaum.utils.dataframe.enforce_dtypes()</code></li>
|
282
|
+
<li><code>meerschaum.utils.dataframe.filter_unseen_df()</code></li>
|
283
|
+
<li><code>meerschaum.utils.dataframe.get_datetime_bound_from_df()</code></li>
|
284
|
+
<li><code>meerschaum.utils.dataframe.get_first_valid_dask_partition()</code></li>
|
285
|
+
<li><code>meerschaum.utils.dataframe.get_json_cols()</code></li>
|
286
|
+
<li><code>meerschaum.utils.dataframe.get_numeric_cols()</code></li>
|
287
|
+
<li><code>meerschaum.utils.dataframe.get_unhashable_cols()</code></li>
|
288
|
+
<li><code>meerschaum.utils.dataframe.parse_df_datetimes()</code></li>
|
289
|
+
<li><code>meerschaum.utils.dataframe.query_df()</code></li>
|
290
|
+
</ul>
|
291
|
+
</details>
|
292
|
+
</ul>
|
293
|
+
|
294
|
+
<ul>
|
295
|
+
<details>
|
296
|
+
<summary>
|
297
|
+
<code>meerschaum.utils.dtypes</code><br>
|
298
|
+
Work with data types.<br>
|
299
|
+
</summary>
|
300
|
+
<p></p>
|
301
|
+
<ul>
|
302
|
+
<li><code>meerschaum.utils.dtypes.are_dtypes_equal()</code></li>
|
303
|
+
<li><code>meerschaum.utils.dtypes.attempt_cast_to_numeric()</code></li>
|
304
|
+
<li><code>meerschaum.utils.dtypes.is_dtype_numeric()</code></li>
|
305
|
+
<li><code>meerschaum.utils.dtypes.none_if_null()</code></li>
|
306
|
+
<li><code>meerschaum.utils.dtypes.quantize_decimal()</code></li>
|
307
|
+
<li><code>meerschaum.utils.dtypes.to_pandas_dtype()</code></li>
|
308
|
+
<li><code>meerschaum.utils.dtypes.value_is_null()</code></li>
|
309
|
+
<li><code>meerschaum.utils.dtypes.sql.get_pd_type_from_db_type()</code></li>
|
310
|
+
<li><code>meerschaum.utils.dtypes.sql.get_db_type_from_pd_type()</code></li>
|
311
|
+
</ul>
|
312
|
+
</details>
|
313
|
+
</ul>
|
314
|
+
|
315
|
+
<ul>
|
316
|
+
<details>
|
317
|
+
<summary>
|
318
|
+
<code>meerschaum.utils.formatting</code><br>
|
319
|
+
Format output text.<br>
|
320
|
+
</summary>
|
321
|
+
<p></p>
|
322
|
+
<ul>
|
323
|
+
<li><code>meerschaum.utils.formatting.colored()</code></li>
|
324
|
+
<li><code>meerschaum.utils.formatting.extract_stats_from_message()</code></li>
|
325
|
+
<li><code>meerschaum.utils.formatting.fill_ansi()</code></li>
|
326
|
+
<li><code>meerschaum.utils.formatting.get_console()</code></li>
|
327
|
+
<li><code>meerschaum.utils.formatting.highlight_pipes()</code></li>
|
328
|
+
<li><code>meerschaum.utils.formatting.make_header()</code></li>
|
329
|
+
<li><code>meerschaum.utils.formatting.pipe_repr()</code></li>
|
330
|
+
<li><code>meerschaum.utils.formatting.pprint()</code></li>
|
331
|
+
<li><code>meerschaum.utils.formatting.pprint_pipes()</code></li>
|
332
|
+
<li><code>meerschaum.utils.formatting.print_options()</code></li>
|
333
|
+
<li><code>meerschaum.utils.formatting.print_pipes_results()</code></li>
|
334
|
+
<li><code>meerschaum.utils.formatting.print_tuple()</code></li>
|
335
|
+
<li><code>meerschaum.utils.formatting.translate_rich_to_termcolor()</code></li>
|
336
|
+
</ul>
|
337
|
+
</details>
|
338
|
+
</ul>
|
339
|
+
|
340
|
+
<ul>
|
341
|
+
<details>
|
342
|
+
<summary>
|
343
|
+
<code>meerschaum.utils.misc</code><br>
|
344
|
+
Miscellaneous utility functions.<br>
|
345
|
+
</summary>
|
346
|
+
<p></p>
|
347
|
+
<ul>
|
348
|
+
<li><code>meerschaum.utils.misc.items_str()</code></li>
|
349
|
+
<li><code>meerschaum.utils.misc.round_time()</code></li>
|
350
|
+
<li><code>meerschaum.utils.misc.is_int()</code></li>
|
351
|
+
<li><code>meerschaum.utils.misc.interval_str()</code></li>
|
352
|
+
<li><code>meerschaum.utils.misc.filter_keywords()</code></li>
|
353
|
+
<li><code>meerschaum.utils.misc.generate_password()</code></li>
|
354
|
+
<li><code>meerschaum.utils.misc.string_to_dict()</code></li>
|
355
|
+
<li><code>meerschaum.utils.misc.iterate_chunks()</code></li>
|
356
|
+
<li><code>meerschaum.utils.misc.timed_input()</code></li>
|
357
|
+
<li><code>meerschaum.utils.misc.replace_pipes_in_dict()</code></li>
|
358
|
+
<li><code>meerschaum.utils.misc.is_valid_email()</code></li>
|
359
|
+
<li><code>meerschaum.utils.misc.string_width()</code></li>
|
360
|
+
<li><code>meerschaum.utils.misc.replace_password()</code></li>
|
361
|
+
<li><code>meerschaum.utils.misc.parse_config_substitution()</code></li>
|
362
|
+
<li><code>meerschaum.utils.misc.edit_file()</code></li>
|
363
|
+
<li><code>meerschaum.utils.misc.get_in_ex_params()</code></li>
|
364
|
+
<li><code>meerschaum.utils.misc.separate_negation_values()</code></li>
|
365
|
+
<li><code>meerschaum.utils.misc.flatten_list()</code></li>
|
366
|
+
<li><code>meerschaum.utils.misc.make_symlink()</code></li>
|
367
|
+
<li><code>meerschaum.utils.misc.is_symlink()</code></li>
|
368
|
+
<li><code>meerschaum.utils.misc.wget()</code></li>
|
369
|
+
<li><code>meerschaum.utils.misc.add_method_to_class()</code></li>
|
370
|
+
<li><code>meerschaum.utils.misc.is_pipe_registered()</code></li>
|
371
|
+
<li><code>meerschaum.utils.misc.get_cols_lines()</code></li>
|
372
|
+
<li><code>meerschaum.utils.misc.sorted_dict()</code></li>
|
373
|
+
<li><code>meerschaum.utils.misc.flatten_pipes_dict()</code></li>
|
374
|
+
<li><code>meerschaum.utils.misc.dict_from_od()</code></li>
|
375
|
+
<li><code>meerschaum.utils.misc.remove_ansi()</code></li>
|
376
|
+
<li><code>meerschaum.utils.misc.get_connector_labels()</code></li>
|
377
|
+
<li><code>meerschaum.utils.misc.json_serialize_datetime()</code></li>
|
378
|
+
<li><code>meerschaum.utils.misc.async_wrap()</code></li>
|
379
|
+
<li><code>meerschaum.utils.misc.is_docker_available()</code></li>
|
380
|
+
<li><code>meerschaum.utils.misc.is_android()</code></li>
|
381
|
+
<li><code>meerschaum.utils.misc.is_bcp_available()</code></li>
|
382
|
+
<li><code>meerschaum.utils.misc.truncate_string_sections()</code></li>
|
383
|
+
<li><code>meerschaum.utils.misc.safely_extract_tar()</code></li>
|
384
|
+
</ul>
|
385
|
+
</details>
|
386
|
+
</ul>
|
387
|
+
|
388
|
+
<ul>
|
389
|
+
<details>
|
390
|
+
<summary>
|
391
|
+
<code>meerschaum.utils.packages</code><br>
|
392
|
+
Manage Python packages.
|
393
|
+
<br>
|
394
|
+
</summary>
|
395
|
+
<p></p>
|
396
|
+
<ul>
|
397
|
+
<li><code>meerschaum.utils.packages.attempt_import()</code></li>
|
398
|
+
<li><code>meerschaum.utils.packages.get_module_path()</code></li>
|
399
|
+
<li><code>meerschaum.utils.packages.manually_import_module()</code></li>
|
400
|
+
<li><code>meerschaum.utils.packages.get_install_no_version()</code></li>
|
401
|
+
<li><code>meerschaum.utils.packages.determine_version()</code></li>
|
402
|
+
<li><code>meerschaum.utils.packages.need_update()</code></li>
|
403
|
+
<li><code>meerschaum.utils.packages.get_pip()</code></li>
|
404
|
+
<li><code>meerschaum.utils.packages.pip_install()</code></li>
|
405
|
+
<li><code>meerschaum.utils.packages.pip_uninstall()</code></li>
|
406
|
+
<li><code>meerschaum.utils.packages.completely_uninstall_package()</code></li>
|
407
|
+
<li><code>meerschaum.utils.packages.run_python_package()</code></li>
|
408
|
+
<li><code>meerschaum.utils.packages.lazy_import()</code></li>
|
409
|
+
<li><code>meerschaum.utils.packages.pandas_name()</code></li>
|
410
|
+
<li><code>meerschaum.utils.packages.import_pandas()</code></li>
|
411
|
+
<li><code>meerschaum.utils.packages.import_rich()</code></li>
|
412
|
+
<li><code>meerschaum.utils.packages.import_dcc()</code></li>
|
413
|
+
<li><code>meerschaum.utils.packages.import_html()</code></li>
|
414
|
+
<li><code>meerschaum.utils.packages.get_modules_from_package()</code></li>
|
415
|
+
<li><code>meerschaum.utils.packages.import_children()</code></li>
|
416
|
+
<li><code>meerschaum.utils.packages.reload_package()</code></li>
|
417
|
+
<li><code>meerschaum.utils.packages.reload_meerschaum()</code></li>
|
418
|
+
<li><code>meerschaum.utils.packages.is_installed()</code></li>
|
419
|
+
<li><code>meerschaum.utils.packages.venv_contains_package()</code></li>
|
420
|
+
<li><code>meerschaum.utils.packages.package_venv()</code></li>
|
421
|
+
<li><code>meerschaum.utils.packages.ensure_readline()</code></li>
|
422
|
+
<li><code>meerschaum.utils.packages.get_prerelease_dependencies()</code></li>
|
423
|
+
</ul>
|
424
|
+
</details>
|
425
|
+
</ul>
|
426
|
+
|
427
|
+
<ul>
|
428
|
+
<details>
|
429
|
+
<summary>
|
430
|
+
<code>meerschaum.utils.prompt</code><br>
|
431
|
+
Read input from the user.
|
432
|
+
<br>
|
433
|
+
</summary>
|
434
|
+
<p></p>
|
435
|
+
<ul>
|
436
|
+
<li><code>meerschaum.utils.prompt.prompt()</code></li>
|
437
|
+
<li><code>meerschaum.utils.prompt.yes_no()</code></li>
|
438
|
+
<li><code>meerschaum.utils.prompt.choose()</code></li>
|
439
|
+
<li><code>meerschaum.utils.prompt.get_password()</code></li>
|
440
|
+
<li><code>meerschaum.utils.prompt.get_email()</code></li>
|
441
|
+
</ul>
|
442
|
+
</details>
|
443
|
+
</ul>
|
444
|
+
|
445
|
+
<ul>
|
446
|
+
<details>
|
447
|
+
<summary>
|
448
|
+
<code>meerschaum.utils.schedule</code><br>
|
449
|
+
Schedule processes and threads.
|
450
|
+
<br>
|
451
|
+
</summary>
|
452
|
+
<p></p>
|
453
|
+
<ul>
|
454
|
+
<li><code>meerschaum.utils.schedule.schedule_function()</code></li>
|
455
|
+
<li><code>meerschaum.utils.schedule.parse_schedule()</code></li>
|
456
|
+
<li><code>meerschaum.utils.schedule.parse_start_time()</code></li>
|
457
|
+
</ul>
|
458
|
+
</details>
|
459
|
+
</ul>
|
460
|
+
|
461
|
+
<ul>
|
462
|
+
<details>
|
463
|
+
<summary>
|
464
|
+
<code>meerschaum.utils.sql</code><br>
|
465
|
+
Build SQL queries.
|
466
|
+
<br>
|
467
|
+
</summary>
|
468
|
+
<p></p>
|
469
|
+
<ul>
|
470
|
+
<li><code>meerschaum.utils.sql.build_where()</code></li>
|
471
|
+
<li><code>meerschaum.utils.sql.clean()</code></li>
|
472
|
+
<li><code>meerschaum.utils.sql.dateadd_str()</code></li>
|
473
|
+
<li><code>meerschaum.utils.sql.test_connection()</code></li>
|
474
|
+
<li><code>meerschaum.utils.sql.get_distinct_col_count()</code></li>
|
475
|
+
<li><code>meerschaum.utils.sql.sql_item_name()</code></li>
|
476
|
+
<li><code>meerschaum.utils.sql.pg_capital()</code></li>
|
477
|
+
<li><code>meerschaum.utils.sql.oracle_capital()</code></li>
|
478
|
+
<li><code>meerschaum.utils.sql.truncate_item_name()</code></li>
|
479
|
+
<li><code>meerschaum.utils.sql.table_exists()</code></li>
|
480
|
+
<li><code>meerschaum.utils.sql.get_table_cols_types()</code></li>
|
481
|
+
<li><code>meerschaum.utils.sql.get_update_queries()</code></li>
|
482
|
+
<li><code>meerschaum.utils.sql.get_null_replacement()</code></li>
|
483
|
+
<li><code>meerschaum.utils.sql.get_db_version()</code></li>
|
484
|
+
<li><code>meerschaum.utils.sql.get_rename_table_queries()</code></li>
|
485
|
+
<li><code>meerschaum.utils.sql.get_create_table_query()</code></li>
|
486
|
+
<li><code>meerschaum.utils.sql.format_cte_subquery()</code></li>
|
487
|
+
<li><code>meerschaum.utils.sql.session_execute()</code></li>
|
488
|
+
</ul>
|
489
|
+
</details>
|
490
|
+
</ul>
|
491
|
+
|
492
|
+
<ul>
|
493
|
+
<details>
|
494
|
+
<summary>
|
495
|
+
<code>meerschaum.utils.venv</code><br>
|
496
|
+
Manage virtual environments.
|
497
|
+
<br>
|
498
|
+
</summary>
|
499
|
+
<p></p>
|
500
|
+
<ul>
|
501
|
+
<li><code>meerschaum.utils.venv.Venv</code></li>
|
502
|
+
<li><code>meerschaum.utils.venv.activate_venv()</code></li>
|
503
|
+
<li><code>meerschaum.utils.venv.deactivate_venv()</code></li>
|
504
|
+
<li><code>meerschaum.utils.venv.get_module_venv()</code></li>
|
505
|
+
<li><code>meerschaum.utils.venv.get_venvs()</code></li>
|
506
|
+
<li><code>meerschaum.utils.venv.init_venv()</code></li>
|
507
|
+
<li><code>meerschaum.utils.venv.inside_venv()</code></li>
|
508
|
+
<li><code>meerschaum.utils.venv.is_venv_active()</code></li>
|
509
|
+
<li><code>meerschaum.utils.venv.venv_exec()</code></li>
|
510
|
+
<li><code>meerschaum.utils.venv.venv_executable()</code></li>
|
511
|
+
<li><code>meerschaum.utils.venv.venv_exists()</code></li>
|
512
|
+
<li><code>meerschaum.utils.venv.venv_target_path()</code></li>
|
513
|
+
<li><code>meerschaum.utils.venv.verify_venv()</code></li>
|
514
|
+
</ul>
|
515
|
+
</details>
|
516
|
+
</ul>
|
517
|
+
|
518
|
+
<ul>
|
519
|
+
<details>
|
520
|
+
<summary>
|
521
|
+
<code>meerschaum.utils.warnings</code><br>
|
38
522
|
Print warnings, errors, info, and debug messages.
|
523
|
+
<br>
|
524
|
+
</summary>
|
525
|
+
<p></p>
|
526
|
+
<ul>
|
527
|
+
<li><code>meerschaum.utils.warnings.dprint()</code></li>
|
528
|
+
<li><code>meerschaum.utils.warnings.error()</code></li>
|
529
|
+
<li><code>meerschaum.utils.warnings.info()</code></li>
|
530
|
+
<li><code>meerschaum.utils.warnings.warn()</code></li>
|
531
|
+
</ul>
|
532
|
+
</details>
|
533
|
+
</ul>
|
534
|
+
|
535
|
+
</details>
|
39
536
|
|
40
537
|
"""
|