meerschaum 3.0.0rc8__tar.gz → 3.0.2__tar.gz
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-3.0.0rc8/meerschaum.egg-info → meerschaum-3.0.2}/PKG-INFO +4 -4
- {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/_internal/cli/entry.py +1 -0
- {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/_internal/cli/workers.py +7 -2
- {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/_internal/entry.py +2 -0
- {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/_internal/term/__init__.py +5 -12
- {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/actions/api.py +11 -5
- {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/actions/install.py +17 -19
- {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/actions/start.py +30 -2
- {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/actions/upgrade.py +25 -11
- {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/api/dash/callbacks/custom.py +2 -1
- {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/api/dash/callbacks/dashboard.py +11 -22
- {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/config/_default.py +5 -1
- {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/config/_read_config.py +0 -1
- {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/config/_version.py +1 -1
- {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/config/environment.py +26 -2
- {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/connectors/sql/_create_engine.py +2 -2
- {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/connectors/sql/_pipes.py +3 -6
- {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/plugins/__init__.py +13 -5
- {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/utils/packages/__init__.py +3 -1
- {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/utils/packages/_packages.py +1 -1
- {meerschaum-3.0.0rc8 → meerschaum-3.0.2/meerschaum.egg-info}/PKG-INFO +4 -4
- {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum.egg-info/requires.txt +3 -3
- {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/LICENSE +0 -0
- {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/MANIFEST.in +0 -0
- {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/NOTICE +0 -0
- {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/README.md +0 -0
- {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/__init__.py +0 -0
- {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/__main__.py +0 -0
- {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/_internal/__init__.py +0 -0
- {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/_internal/arguments/__init__.py +0 -0
- {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/_internal/arguments/_parse_arguments.py +0 -0
- {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/_internal/arguments/_parser.py +0 -0
- {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/_internal/cli/__init__.py +0 -0
- {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/_internal/cli/daemons.py +0 -0
- {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/_internal/docs/__init__.py +0 -0
- {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/_internal/docs/index.py +0 -0
- {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/_internal/shell/Shell.py +0 -0
- {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/_internal/shell/ShellCompleter.py +0 -0
- {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/_internal/shell/ValidAutoSuggest.py +0 -0
- {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/_internal/shell/__init__.py +0 -0
- {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/_internal/shell/resources/__init__.py +0 -0
- {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/_internal/shell/updates.py +0 -0
- {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/_internal/static.py +0 -0
- {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/_internal/term/TermPageHandler.py +0 -0
- {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/_internal/term/tools.py +0 -0
- {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/actions/__init__.py +0 -0
- {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/actions/attach.py +0 -0
- {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/actions/bootstrap.py +0 -0
- {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/actions/clear.py +0 -0
- {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/actions/copy.py +0 -0
- {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/actions/deduplicate.py +0 -0
- {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/actions/delete.py +0 -0
- {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/actions/drop.py +0 -0
- {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/actions/edit.py +0 -0
- {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/actions/index.py +0 -0
- {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/actions/login.py +0 -0
- {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/actions/os.py +0 -0
- {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/actions/pause.py +0 -0
- {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/actions/python.py +0 -0
- {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/actions/register.py +0 -0
- {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/actions/reload.py +0 -0
- {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/actions/restart.py +0 -0
- {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/actions/setup.py +0 -0
- {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/actions/sh.py +0 -0
- {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/actions/show.py +0 -0
- {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/actions/sql.py +0 -0
- {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/actions/stack.py +0 -0
- {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/actions/stop.py +0 -0
- {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/actions/sync.py +0 -0
- {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/actions/tag.py +0 -0
- {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/actions/uninstall.py +0 -0
- {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/actions/verify.py +0 -0
- {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/api/__init__.py +0 -0
- {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/api/_chain.py +0 -0
- {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/api/_chunks.py +0 -0
- {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/api/_events.py +0 -0
- {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/api/_exceptions.py +0 -0
- {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/api/_oauth2.py +0 -0
- {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/api/_tokens.py +0 -0
- {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/api/_websockets.py +0 -0
- {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/api/dash/__init__.py +0 -0
- {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/api/dash/assets/__init__.py +0 -0
- {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/api/dash/assets/ansi_up.js +0 -0
- {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/api/dash/assets/banner_1920x320.png +0 -0
- {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/api/dash/assets/favicon.ico +0 -0
- {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/api/dash/assets/logo_48x48.png +0 -0
- {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/api/dash/assets/logo_500x500.png +0 -0
- {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/api/dash/callbacks/__init__.py +0 -0
- {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/api/dash/callbacks/jobs.py +0 -0
- {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/api/dash/callbacks/login.py +0 -0
- {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/api/dash/callbacks/pipes.py +0 -0
- {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/api/dash/callbacks/plugins.py +0 -0
- {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/api/dash/callbacks/register.py +0 -0
- {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/api/dash/callbacks/settings/__init__.py +0 -0
- {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/api/dash/callbacks/settings/password_reset.py +0 -0
- {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/api/dash/callbacks/tokens.py +0 -0
- {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/api/dash/components.py +0 -0
- {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/api/dash/connectors.py +0 -0
- {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/api/dash/graphs.py +0 -0
- {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/api/dash/jobs.py +0 -0
- {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/api/dash/keys.py +0 -0
- {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/api/dash/pages/__init__.py +0 -0
- {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/api/dash/pages/dashboard.py +0 -0
- {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/api/dash/pages/error.py +0 -0
- {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/api/dash/pages/jobs.py +0 -0
- {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/api/dash/pages/login.py +0 -0
- {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/api/dash/pages/pipes.py +0 -0
- {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/api/dash/pages/plugins.py +0 -0
- {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/api/dash/pages/register.py +0 -0
- {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/api/dash/pages/settings/__init__.py +0 -0
- {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/api/dash/pages/settings/password_reset.py +0 -0
- {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/api/dash/pages/tokens.py +0 -0
- {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/api/dash/pipes.py +0 -0
- {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/api/dash/plugins.py +0 -0
- {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/api/dash/sessions.py +0 -0
- {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/api/dash/sync.py +0 -0
- {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/api/dash/tokens.py +0 -0
- {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/api/dash/users.py +0 -0
- {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/api/dash/websockets.py +0 -0
- {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/api/dash/webterm.py +0 -0
- {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/api/models/__init__.py +0 -0
- {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/api/models/_actions.py +0 -0
- {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/api/models/_pipes.py +0 -0
- {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/api/models/_tokens.py +0 -0
- {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/api/resources/__init__.py +0 -0
- {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/api/resources/static/__init__.py +0 -0
- {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/api/resources/static/css/__init__.py +0 -0
- {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/api/resources/static/css/bootstrap.min.css +0 -0
- {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/api/resources/static/css/dash.css +0 -0
- {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/api/resources/static/css/dbc_dark.css +0 -0
- {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/api/resources/static/css/styles.css +0 -0
- {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/api/resources/static/css/xterm.css +0 -0
- {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/api/resources/static/ico/__init__.py +0 -0
- {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/api/resources/static/ico/logo.ico +0 -0
- {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/api/resources/static/js/__init__.py +0 -0
- {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/api/resources/static/js/action_button.js +0 -0
- {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/api/resources/static/js/main.js +0 -0
- {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/api/resources/static/js/terminado.js +0 -0
- {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/api/resources/static/js/xterm-addon-unicode11.js +0 -0
- {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/api/resources/static/js/xterm.js +0 -0
- {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/api/resources/static/png/__init__.py +0 -0
- {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/api/resources/templates/__init__.py +0 -0
- {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/api/resources/templates/index.html +0 -0
- {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/api/resources/templates/old_index.html +0 -0
- {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/api/resources/templates/secret.html +0 -0
- {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/api/resources/templates/termpage.html +0 -0
- {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/api/routes/__init__.py +0 -0
- {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/api/routes/_actions.py +0 -0
- {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/api/routes/_connectors.py +0 -0
- {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/api/routes/_index.py +0 -0
- {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/api/routes/_jobs.py +0 -0
- {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/api/routes/_login.py +0 -0
- {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/api/routes/_misc.py +0 -0
- {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/api/routes/_pipes.py +0 -0
- {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/api/routes/_plugins.py +0 -0
- {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/api/routes/_tokens.py +0 -0
- {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/api/routes/_users.py +0 -0
- {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/api/routes/_version.py +0 -0
- {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/api/routes/_webterm.py +0 -0
- {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/api/tables/__init__.py +0 -0
- {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/config/__init__.py +0 -0
- {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/config/_dash.py +0 -0
- {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/config/_edit.py +0 -0
- {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/config/_formatting.py +0 -0
- {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/config/_jobs.py +0 -0
- {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/config/_patch.py +0 -0
- {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/config/_paths.py +0 -0
- {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/config/_preprocess.py +0 -0
- {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/config/_shell.py +0 -0
- {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/config/_sync.py +0 -0
- {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/config/paths.py +0 -0
- {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/config/resources/__init__.py +0 -0
- {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/config/stack/__init__.py +0 -0
- {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/config/stack/grafana/__init__.py +0 -0
- {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/config/stack/mosquitto/__init__.py +0 -0
- {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/config/stack/mosquitto/resources/__init__.py +0 -0
- {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/config/stack/resources/__init__.py +0 -0
- {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/config/static.py +0 -0
- {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/connectors/_Connector.py +0 -0
- {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/connectors/__init__.py +0 -0
- {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/connectors/api/_APIConnector.py +0 -0
- {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/connectors/api/__init__.py +0 -0
- {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/connectors/api/_actions.py +0 -0
- {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/connectors/api/_fetch.py +0 -0
- {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/connectors/api/_jobs.py +0 -0
- {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/connectors/api/_login.py +0 -0
- {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/connectors/api/_misc.py +0 -0
- {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/connectors/api/_pipes.py +0 -0
- {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/connectors/api/_plugins.py +0 -0
- {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/connectors/api/_request.py +0 -0
- {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/connectors/api/_tokens.py +0 -0
- {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/connectors/api/_uri.py +0 -0
- {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/connectors/api/_users.py +0 -0
- {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/connectors/instance/_InstanceConnector.py +0 -0
- {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/connectors/instance/__init__.py +0 -0
- {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/connectors/instance/_pipes.py +0 -0
- {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/connectors/instance/_plugins.py +0 -0
- {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/connectors/instance/_tokens.py +0 -0
- {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/connectors/instance/_users.py +0 -0
- {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/connectors/parse.py +0 -0
- {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/connectors/plugin/PluginConnector.py +0 -0
- {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/connectors/plugin/__init__.py +0 -0
- {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/connectors/poll.py +0 -0
- {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/connectors/sql/_SQLConnector.py +0 -0
- {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/connectors/sql/__init__.py +0 -0
- {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/connectors/sql/_cli.py +0 -0
- {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/connectors/sql/_fetch.py +0 -0
- {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/connectors/sql/_instance.py +0 -0
- {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/connectors/sql/_plugins.py +0 -0
- {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/connectors/sql/_sql.py +0 -0
- {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/connectors/sql/_uri.py +0 -0
- {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/connectors/sql/_users.py +0 -0
- {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/connectors/sql/tables/__init__.py +0 -0
- {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/connectors/sql/tables/types.py +0 -0
- {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/connectors/sql/tools.py +0 -0
- {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/connectors/valkey/_ValkeyConnector.py +0 -0
- {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/connectors/valkey/__init__.py +0 -0
- {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/connectors/valkey/_fetch.py +0 -0
- {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/connectors/valkey/_pipes.py +0 -0
- {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/connectors/valkey/_plugins.py +0 -0
- {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/connectors/valkey/_users.py +0 -0
- {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/core/Pipe/__init__.py +0 -0
- {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/core/Pipe/_attributes.py +0 -0
- {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/core/Pipe/_bootstrap.py +0 -0
- {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/core/Pipe/_cache.py +0 -0
- {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/core/Pipe/_clear.py +0 -0
- {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/core/Pipe/_copy.py +0 -0
- {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/core/Pipe/_data.py +0 -0
- {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/core/Pipe/_deduplicate.py +0 -0
- {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/core/Pipe/_delete.py +0 -0
- {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/core/Pipe/_drop.py +0 -0
- {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/core/Pipe/_dtypes.py +0 -0
- {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/core/Pipe/_edit.py +0 -0
- {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/core/Pipe/_fetch.py +0 -0
- {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/core/Pipe/_index.py +0 -0
- {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/core/Pipe/_register.py +0 -0
- {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/core/Pipe/_show.py +0 -0
- {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/core/Pipe/_sync.py +0 -0
- {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/core/Pipe/_verify.py +0 -0
- {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/core/Plugin/_Plugin.py +0 -0
- {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/core/Plugin/__init__.py +0 -0
- {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/core/Token/_Token.py +0 -0
- {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/core/Token/__init__.py +0 -0
- {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/core/User/_User.py +0 -0
- {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/core/User/__init__.py +0 -0
- {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/core/__init__.py +0 -0
- {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/jobs/_Executor.py +0 -0
- {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/jobs/_Job.py +0 -0
- {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/jobs/__init__.py +0 -0
- {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/jobs/systemd.py +0 -0
- {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/models/__init__.py +0 -0
- {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/models/pipes.py +0 -0
- {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/models/tokens.py +0 -0
- {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/models/users.py +0 -0
- {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/plugins/bootstrap.py +0 -0
- {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/utils/__init__.py +0 -0
- {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/utils/_get_pipes.py +0 -0
- {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/utils/daemon/Daemon.py +0 -0
- {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/utils/daemon/FileDescriptorInterceptor.py +0 -0
- {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/utils/daemon/RotatingFile.py +0 -0
- {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/utils/daemon/StdinFile.py +0 -0
- {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/utils/daemon/__init__.py +0 -0
- {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/utils/daemon/_names.py +0 -0
- {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/utils/dataframe.py +0 -0
- {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/utils/debug.py +0 -0
- {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/utils/dtypes/__init__.py +0 -0
- {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/utils/dtypes/sql.py +0 -0
- {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/utils/formatting/__init__.py +0 -0
- {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/utils/formatting/_jobs.py +0 -0
- {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/utils/formatting/_pipes.py +0 -0
- {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/utils/formatting/_pprint.py +0 -0
- {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/utils/formatting/_shell.py +0 -0
- {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/utils/interactive.py +0 -0
- {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/utils/misc.py +0 -0
- {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/utils/networking.py +0 -0
- {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/utils/packages/lazy_loader.py +0 -0
- {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/utils/pipes.py +0 -0
- {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/utils/pool.py +0 -0
- {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/utils/process.py +0 -0
- {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/utils/prompt.py +0 -0
- {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/utils/schedule.py +0 -0
- {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/utils/sql.py +0 -0
- {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/utils/threading.py +0 -0
- {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/utils/typing.py +0 -0
- {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/utils/venv/_Venv.py +0 -0
- {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/utils/venv/__init__.py +0 -0
- {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/utils/warnings.py +0 -0
- {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/utils/yaml.py +0 -0
- {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum.egg-info/SOURCES.txt +0 -0
- {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum.egg-info/dependency_links.txt +0 -0
- {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum.egg-info/entry_points.txt +0 -0
- {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum.egg-info/top_level.txt +0 -0
- {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum.egg-info/zip-safe +0 -0
- {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/pyproject.toml +0 -0
- {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/setup.cfg +0 -0
- {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/setup.py +0 -0
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: meerschaum
|
3
|
-
Version: 3.0.
|
3
|
+
Version: 3.0.2
|
4
4
|
Summary: Sync Time-Series Pipes with Meerschaum
|
5
5
|
Author-email: Bennett Meares <bennett.meares@gmail.com>
|
6
6
|
Maintainer-email: Bennett Meares <bennett.meares@gmail.com>
|
@@ -134,7 +134,7 @@ Requires-Dist: partd>=1.4.2; extra == "sql"
|
|
134
134
|
Requires-Dist: pytz; extra == "sql"
|
135
135
|
Requires-Dist: joblib>=1.5.1; extra == "sql"
|
136
136
|
Requires-Dist: SQLAlchemy>=2.0.41; extra == "sql"
|
137
|
-
Requires-Dist: GeoAlchemy2>=0.
|
137
|
+
Requires-Dist: GeoAlchemy2>=0.18.0; extra == "sql"
|
138
138
|
Requires-Dist: databases>=0.9.0; extra == "sql"
|
139
139
|
Requires-Dist: aiosqlite>=0.21.0; extra == "sql"
|
140
140
|
Requires-Dist: asyncpg>=0.30.0; extra == "sql"
|
@@ -201,7 +201,7 @@ Requires-Dist: partd>=1.4.2; extra == "api"
|
|
201
201
|
Requires-Dist: pytz; extra == "api"
|
202
202
|
Requires-Dist: joblib>=1.5.1; extra == "api"
|
203
203
|
Requires-Dist: SQLAlchemy>=2.0.41; extra == "api"
|
204
|
-
Requires-Dist: GeoAlchemy2>=0.
|
204
|
+
Requires-Dist: GeoAlchemy2>=0.18.0; extra == "api"
|
205
205
|
Requires-Dist: databases>=0.9.0; extra == "api"
|
206
206
|
Requires-Dist: aiosqlite>=0.21.0; extra == "api"
|
207
207
|
Requires-Dist: asyncpg>=0.30.0; extra == "api"
|
@@ -316,7 +316,7 @@ Requires-Dist: partd>=1.4.2; extra == "full"
|
|
316
316
|
Requires-Dist: pytz; extra == "full"
|
317
317
|
Requires-Dist: joblib>=1.5.1; extra == "full"
|
318
318
|
Requires-Dist: SQLAlchemy>=2.0.41; extra == "full"
|
319
|
-
Requires-Dist: GeoAlchemy2>=0.
|
319
|
+
Requires-Dist: GeoAlchemy2>=0.18.0; extra == "full"
|
320
320
|
Requires-Dist: databases>=0.9.0; extra == "full"
|
321
321
|
Requires-Dist: aiosqlite>=0.21.0; extra == "full"
|
322
322
|
Requires-Dist: asyncpg>=0.30.0; extra == "full"
|
@@ -90,7 +90,7 @@ class ActionWorker:
|
|
90
90
|
"""
|
91
91
|
Return the job associated with this worker.
|
92
92
|
"""
|
93
|
-
from meerschaum.config.paths import CLI_LOGS_RESOURCES_PATH,
|
93
|
+
from meerschaum.config.paths import CLI_LOGS_RESOURCES_PATH, PACKAGE_ROOT_PATH
|
94
94
|
log_path = CLI_LOGS_RESOURCES_PATH / f'cli.{self.ix}.worker.log'
|
95
95
|
|
96
96
|
return Job(
|
@@ -108,7 +108,7 @@ class ActionWorker:
|
|
108
108
|
'redirect_streams': True,
|
109
109
|
'lines_to_show': 0,
|
110
110
|
},
|
111
|
-
'cwd':
|
111
|
+
'cwd': PACKAGE_ROOT_PATH.parent.as_posix(),
|
112
112
|
},
|
113
113
|
)
|
114
114
|
|
@@ -319,6 +319,9 @@ class ActionWorker:
|
|
319
319
|
action_id = input_data.get('action_id', None)
|
320
320
|
patch_args = input_data.get('patch_args', None)
|
321
321
|
env = input_data.get('env', {})
|
322
|
+
old_cwd = os.getcwd()
|
323
|
+
cwd = input_data.get('cwd', os.getcwd())
|
324
|
+
os.chdir(cwd)
|
322
325
|
config = input_data.get('config', {})
|
323
326
|
self.write_output_data({
|
324
327
|
'state': 'accepted',
|
@@ -335,6 +338,8 @@ class ActionWorker:
|
|
335
338
|
)
|
336
339
|
print(STOP_TOKEN, flush=True, end='\n')
|
337
340
|
|
341
|
+
os.chdir(old_cwd)
|
342
|
+
|
338
343
|
self.write_output_data({
|
339
344
|
'state': 'completed',
|
340
345
|
'session_id': session_id,
|
@@ -62,6 +62,7 @@ def entry(
|
|
62
62
|
A `SuccessTuple` indicating success.
|
63
63
|
"""
|
64
64
|
start = time.perf_counter()
|
65
|
+
from meerschaum.config.environment import get_daemon_env_vars
|
65
66
|
sysargs_list = shlex.split(sysargs) if isinstance(sysargs, str) else sysargs
|
66
67
|
if (
|
67
68
|
not _use_cli_daemon
|
@@ -69,6 +70,7 @@ def entry(
|
|
69
70
|
or '--no-daemon' in sysargs_list
|
70
71
|
or '--daemon' in sysargs_list
|
71
72
|
or '-d' in sysargs_list
|
73
|
+
or get_daemon_env_vars()
|
72
74
|
or not mrsm.get_config('system', 'experimental', 'cli_daemon')
|
73
75
|
):
|
74
76
|
success, msg = entry_without_daemon(sysargs, _patch_args=_patch_args)
|
@@ -40,23 +40,16 @@ def get_webterm_app_and_manager(
|
|
40
40
|
-------
|
41
41
|
A tuple of the Tornado web application and term manager.
|
42
42
|
"""
|
43
|
-
from meerschaum.config.environment import get_env_vars
|
44
|
-
from meerschaum._internal.static import STATIC_CONFIG
|
43
|
+
from meerschaum.config.environment import get_env_vars, get_daemon_env_vars
|
45
44
|
if env_path is None:
|
46
45
|
from meerschaum.config.paths import WEBTERM_INTERNAL_RESOURCES_PATH
|
47
46
|
env_path = WEBTERM_INTERNAL_RESOURCES_PATH / (str(port) + '.json')
|
48
47
|
|
49
|
-
|
48
|
+
daemon_env_vars = get_daemon_env_vars()
|
50
49
|
env_dict = {
|
51
|
-
env_var:
|
52
|
-
for env_var in
|
53
|
-
if env_var not in
|
54
|
-
STATIC_CONFIG['environment']['systemd_log_path'],
|
55
|
-
STATIC_CONFIG['environment']['systemd_result_path'],
|
56
|
-
STATIC_CONFIG['environment']['systemd_delete_job'],
|
57
|
-
STATIC_CONFIG['environment']['systemd_stdin_path'],
|
58
|
-
STATIC_CONFIG['environment']['daemon_id'],
|
59
|
-
)
|
50
|
+
env_var: env_val
|
51
|
+
for env_var, env_val in get_env_vars().items()
|
52
|
+
if env_var not in daemon_env_vars
|
60
53
|
}
|
61
54
|
with open(env_path, 'w+', encoding='utf-8') as f:
|
62
55
|
json.dump(env_dict, f)
|
@@ -173,7 +173,7 @@ def _api_start(
|
|
173
173
|
ROOT_DIR_PATH,
|
174
174
|
)
|
175
175
|
from meerschaum.config._patch import apply_patch_to_config
|
176
|
-
from meerschaum.config.environment import get_env_vars
|
176
|
+
from meerschaum.config.environment import get_env_vars, get_daemon_env_vars
|
177
177
|
from meerschaum._internal.static import STATIC_CONFIG, SERVER_ID
|
178
178
|
from meerschaum.connectors.parse import parse_instance_keys
|
179
179
|
from meerschaum.utils.pool import get_pool
|
@@ -335,11 +335,17 @@ def _api_start(
|
|
335
335
|
)
|
336
336
|
),
|
337
337
|
'HOSTNAME': os.environ.get('HOSTNAME', 'api'),
|
338
|
+
'XDG_RUNTIME_DIR': os.environ.get('XDG_RUNTIME_DIR', ''),
|
339
|
+
'DBUS_SESSION_BUS_ADDRESS': os.environ.get('DBUS_SESSION_BUS_ADDRESS', ''),
|
338
340
|
})
|
339
|
-
|
340
|
-
|
341
|
-
|
342
|
-
|
341
|
+
|
342
|
+
daemon_env_vars = get_daemon_env_vars()
|
343
|
+
env_vars = {
|
344
|
+
env_var: env_val
|
345
|
+
for env_var, env_val in get_env_vars().items()
|
346
|
+
if env_var not in daemon_env_vars and env_var not in env_dict
|
347
|
+
}
|
348
|
+
env_dict.update(env_vars)
|
343
349
|
|
344
350
|
env_dict[MRSM_CONFIG] = apply_patch_to_config(
|
345
351
|
env_dict.get(MRSM_CONFIG, {}),
|
@@ -74,14 +74,10 @@ def _install_plugins(
|
|
74
74
|
- install plugins noaa --repo mrsm (mrsm is the default instance)
|
75
75
|
- install plugins noaa --repo mycustominstance
|
76
76
|
"""
|
77
|
-
from meerschaum.utils.debug import dprint
|
78
77
|
from meerschaum.utils.warnings import info
|
79
|
-
from meerschaum.plugins import reload_plugins
|
80
78
|
from meerschaum.connectors.parse import parse_repo_keys
|
81
|
-
|
79
|
+
from meerschaum.actions import actions
|
82
80
|
from meerschaum.utils.formatting import print_tuple
|
83
|
-
from meerschaum.core import Plugin
|
84
|
-
from meerschaum.connectors.api import APIConnector
|
85
81
|
|
86
82
|
if not action:
|
87
83
|
return False, "No plugins to install."
|
@@ -98,8 +94,7 @@ def _install_plugins(
|
|
98
94
|
)
|
99
95
|
print_tuple((success, msg))
|
100
96
|
|
101
|
-
|
102
|
-
return True, "Success"
|
97
|
+
return actions['reload'](debug=debug)
|
103
98
|
|
104
99
|
|
105
100
|
def _complete_install_plugins(
|
@@ -132,8 +127,9 @@ def _complete_install_plugins(
|
|
132
127
|
from meerschaum.connectors.parse import parse_repo_keys
|
133
128
|
try:
|
134
129
|
repo_connector = parse_repo_keys(repository)
|
135
|
-
except Exception
|
130
|
+
except Exception:
|
136
131
|
return []
|
132
|
+
|
137
133
|
results = repo_connector.get_plugins(search_term=search_term)
|
138
134
|
if len(results) == 1 and results[0] == search_term:
|
139
135
|
return []
|
@@ -156,10 +152,11 @@ def _install_packages(
|
|
156
152
|
`install packages pandas numpy`
|
157
153
|
"""
|
158
154
|
if not action:
|
159
|
-
return False,
|
160
|
-
|
155
|
+
return False, "No packages to install."
|
156
|
+
|
161
157
|
from meerschaum.utils.packages import pip_install
|
162
158
|
from meerschaum.utils.misc import items_str
|
159
|
+
from meerschaum.actions import actions
|
163
160
|
if venv is NoVenv:
|
164
161
|
venv = 'mrsm'
|
165
162
|
|
@@ -169,11 +166,16 @@ def _install_packages(
|
|
169
166
|
venv = venv,
|
170
167
|
debug = debug,
|
171
168
|
):
|
169
|
+
reload_success, reload_msg = actions['reload'](debug=debug)
|
170
|
+
if not reload_success:
|
171
|
+
return reload_success, reload_msg
|
172
|
+
|
172
173
|
return True, (
|
173
174
|
"Successfully installed package" + ("s" if len(action) != 1 else '')
|
174
175
|
+ f" {items_str(action)}"
|
175
176
|
+ f" into the virtual environment '{venv}'."
|
176
177
|
)
|
178
|
+
|
177
179
|
return False, (
|
178
180
|
"Failed to install package" + ("s" if len(action) != 1 else '') + f" {items_str(action)}."
|
179
181
|
)
|
@@ -201,6 +203,7 @@ def _install_required(
|
|
201
203
|
from meerschaum.utils.warnings import warn, info
|
202
204
|
from meerschaum.connectors.parse import parse_repo_keys
|
203
205
|
from meerschaum.plugins import get_plugins_names
|
206
|
+
from meerschaum.actions import actions
|
204
207
|
repo_connector = parse_repo_keys(repository)
|
205
208
|
|
206
209
|
plugins_names = action or get_plugins_names()
|
@@ -221,6 +224,10 @@ def _install_required(
|
|
221
224
|
else:
|
222
225
|
success_count += 1
|
223
226
|
|
227
|
+
reload_success, reload_msg = actions['reload'](debug=debug)
|
228
|
+
if not reload_success:
|
229
|
+
return reload_success, reload_msg
|
230
|
+
|
224
231
|
success = fail_count == 0
|
225
232
|
msg = (
|
226
233
|
f"Installed packages for {success_count + fail_count} plugins\n "
|
@@ -234,15 +241,6 @@ def _complete_install_required(*args, **kw) -> List[str]:
|
|
234
241
|
return _complete_uninstall_plugins(*args, **kw)
|
235
242
|
|
236
243
|
|
237
|
-
def _install_systemd(
|
238
|
-
action: Optional[List[str]] = None,
|
239
|
-
**kwargs: Any
|
240
|
-
) -> SuccessTuple:
|
241
|
-
"""
|
242
|
-
Install the Meerschaum job monitor as a systemd service.
|
243
|
-
"""
|
244
|
-
import sys
|
245
|
-
|
246
244
|
|
247
245
|
### NOTE: This must be the final statement of the module.
|
248
246
|
### Any subactions added below these lines will not
|
@@ -94,6 +94,7 @@ def _start_jobs(
|
|
94
94
|
sysargs: Optional[List[str]] = None,
|
95
95
|
executor_keys: Optional[str] = None,
|
96
96
|
rm: bool = False,
|
97
|
+
line: Optional[str] = None,
|
97
98
|
debug: bool = False,
|
98
99
|
**kw
|
99
100
|
) -> SuccessTuple:
|
@@ -125,6 +126,7 @@ def _start_jobs(
|
|
125
126
|
- `start job --name happy_seal`
|
126
127
|
Start the job 'happy_seal' but via the `--name` flag.
|
127
128
|
"""
|
129
|
+
import shlex
|
128
130
|
from meerschaum.utils.warnings import warn, info
|
129
131
|
from meerschaum.utils.daemon._names import get_new_daemon_name
|
130
132
|
from meerschaum.jobs import (
|
@@ -215,7 +217,29 @@ def _start_jobs(
|
|
215
217
|
|
216
218
|
def _run_new_job(name: Optional[str] = None):
|
217
219
|
name = name or get_new_daemon_name()
|
218
|
-
|
220
|
+
if len(sysargs or []) >= 2 and sysargs[0] == 'start' and sysargs[1].startswith('job'):
|
221
|
+
return (False, "Create a new job with `-d` / `--daemon`."), name
|
222
|
+
|
223
|
+
job_sysargs = (
|
224
|
+
shlex.join([a for a in sysargs if a not in ('-d', '--daemon')])
|
225
|
+
if not line
|
226
|
+
else line
|
227
|
+
)
|
228
|
+
job = Job(name, job_sysargs, executor_keys=executor_keys, delete_after_completion=rm)
|
229
|
+
|
230
|
+
if not job.exists():
|
231
|
+
try:
|
232
|
+
confirm = yes_no(
|
233
|
+
f"Create new job '{name}'?\n {job_sysargs}\n",
|
234
|
+
default='y',
|
235
|
+
yes=kw.get('yes', False),
|
236
|
+
noask=kw.get('noask', False),
|
237
|
+
)
|
238
|
+
except Exception:
|
239
|
+
confirm = True
|
240
|
+
if not confirm:
|
241
|
+
return (False, "Nothing changed."), name
|
242
|
+
|
219
243
|
return job.start(debug=debug), name
|
220
244
|
|
221
245
|
def _run_existing_job(name: str):
|
@@ -288,6 +312,7 @@ def _start_jobs(
|
|
288
312
|
if new_job
|
289
313
|
else _run_existing_job(_name)
|
290
314
|
)
|
315
|
+
|
291
316
|
if not kw.get('nopretty', False):
|
292
317
|
print_tuple(success_tuple)
|
293
318
|
|
@@ -303,7 +328,10 @@ def _start_jobs(
|
|
303
328
|
+ ("Failed to start job" + ("s" if len(_failures) != 1 else '')
|
304
329
|
+ f" {items_str(_failures)}." if _failures else '')
|
305
330
|
)
|
306
|
-
|
331
|
+
if not msg:
|
332
|
+
msg = "Nothing changed."
|
333
|
+
else:
|
334
|
+
_install_healthcheck_job()
|
307
335
|
return len(_failures) == 0, msg
|
308
336
|
|
309
337
|
|
@@ -51,19 +51,16 @@ def _upgrade_meerschaum(
|
|
51
51
|
- `upgrade meerschaum full`
|
52
52
|
|
53
53
|
"""
|
54
|
-
import subprocess
|
55
|
-
import json
|
56
54
|
from meerschaum.utils.debug import dprint
|
57
55
|
from meerschaum.utils.warnings import info
|
58
56
|
from meerschaum.actions import actions
|
59
57
|
from meerschaum.utils.prompt import yes_no
|
60
|
-
from meerschaum.utils.packages import pip_install
|
58
|
+
from meerschaum.utils.packages import pip_install
|
61
59
|
from meerschaum.utils.misc import is_docker_available
|
62
60
|
|
63
61
|
if action is None:
|
64
62
|
action = []
|
65
63
|
|
66
|
-
is_stack_running = False
|
67
64
|
try:
|
68
65
|
success, msg = actions['stack'](
|
69
66
|
['ps', '-q'], _capture_output=True, debug=debug
|
@@ -71,7 +68,7 @@ def _upgrade_meerschaum(
|
|
71
68
|
if msg.endswith('\n'):
|
72
69
|
msg = msg[:-1]
|
73
70
|
containers = msg.split('\n')
|
74
|
-
except Exception
|
71
|
+
except Exception:
|
75
72
|
containers = []
|
76
73
|
|
77
74
|
if containers:
|
@@ -103,7 +100,7 @@ def _upgrade_meerschaum(
|
|
103
100
|
if is_docker_available():
|
104
101
|
actions['stack'](['pull'], debug=debug)
|
105
102
|
|
106
|
-
return
|
103
|
+
return actions['reload'](debug=debug)
|
107
104
|
|
108
105
|
|
109
106
|
class NoVenv:
|
@@ -128,10 +125,10 @@ def _upgrade_packages(
|
|
128
125
|
upgrade packages full
|
129
126
|
"""
|
130
127
|
from meerschaum.utils.packages import packages, pip_install, get_prerelease_dependencies
|
131
|
-
from meerschaum.utils.warnings import
|
128
|
+
from meerschaum.utils.warnings import warn
|
132
129
|
from meerschaum.utils.prompt import yes_no
|
133
130
|
from meerschaum.utils.formatting import make_header, pprint
|
134
|
-
from meerschaum.
|
131
|
+
from meerschaum.actions import actions
|
135
132
|
if action is None:
|
136
133
|
action = []
|
137
134
|
if venv is NoVenv:
|
@@ -164,7 +161,7 @@ def _upgrade_packages(
|
|
164
161
|
if (install_name not in prereleases_to_install) or group == '_internal'
|
165
162
|
]
|
166
163
|
|
167
|
-
success, msg = False,
|
164
|
+
success, msg = False, "Nothing installed."
|
168
165
|
if force or yes_no(question, noask=noask, yes=yes):
|
169
166
|
success = pip_install(*to_install, debug=debug)
|
170
167
|
if success and prereleases_to_install:
|
@@ -173,6 +170,14 @@ def _upgrade_packages(
|
|
173
170
|
f"Successfully installed {len(packages[group])} packages." if success
|
174
171
|
else f"Failed to install packages in dependency group '{group}'."
|
175
172
|
)
|
173
|
+
|
174
|
+
if not success:
|
175
|
+
return success, msg
|
176
|
+
|
177
|
+
reload_success, reload_msg = actions['reload'](debug=debug)
|
178
|
+
if not reload_success:
|
179
|
+
return reload_success, reload_msg
|
180
|
+
|
176
181
|
return success, msg
|
177
182
|
|
178
183
|
|
@@ -205,11 +210,20 @@ def _upgrade_plugins(
|
|
205
210
|
to_install = get_plugins_names() if len(action) == 0 else action
|
206
211
|
if len(to_install) == 0:
|
207
212
|
return False, "No plugins to upgrade."
|
213
|
+
|
208
214
|
print_options(to_install, header="Plugins to Upgrade:")
|
209
215
|
if force or yes_no(f"Upgrade {len(to_install)} plugins?", yes=yes, noask=noask):
|
210
|
-
|
211
|
-
action=['plugins'] + to_install,
|
216
|
+
install_success, install_msg = actions['install'](
|
217
|
+
action=['plugins'] + to_install,
|
218
|
+
debug=debug,
|
219
|
+
force=force,
|
220
|
+
noask=noask,
|
221
|
+
yes=yes,
|
222
|
+
**kw
|
212
223
|
)
|
224
|
+
|
225
|
+
return install_success, install_msg
|
226
|
+
|
213
227
|
return False, "No plugins upgraded."
|
214
228
|
|
215
229
|
### NOTE: This must be the final statement of the module.
|
@@ -7,7 +7,6 @@ Import custom callbacks created by plugins.
|
|
7
7
|
"""
|
8
8
|
|
9
9
|
import traceback
|
10
|
-
from typing import Any, Dict
|
11
10
|
|
12
11
|
from meerschaum.api.dash import dash_app
|
13
12
|
from meerschaum.plugins import _dash_plugins, _plugin_endpoints_to_pages
|
@@ -47,6 +46,8 @@ def add_plugin_pages(debug: bool = False):
|
|
47
46
|
else:
|
48
47
|
page_layout = [pages_navbar, page_layout]
|
49
48
|
_pages[_page_dict['page_key']] = _endpoint
|
49
|
+
if not _endpoint.lstrip('/').startswith('dash'):
|
50
|
+
_endpoint = '/dash/' + _endpoint.lstrip('/')
|
50
51
|
_paths[_endpoint] = page_layout
|
51
52
|
if _page_dict['login_required']:
|
52
53
|
_required_login.add(_endpoint)
|
@@ -99,16 +99,15 @@ omit_actions = {
|
|
99
99
|
|
100
100
|
### Map endpoints to page layouts.
|
101
101
|
_paths = {
|
102
|
-
'login' : pages.login.layout,
|
103
|
-
''
|
104
|
-
'
|
105
|
-
'
|
106
|
-
'
|
107
|
-
'
|
108
|
-
'
|
109
|
-
'jobs' : pages.jobs.layout,
|
102
|
+
'/dash/login' : pages.login.layout,
|
103
|
+
'/dash' : pages.dashboard.layout,
|
104
|
+
'/dash/plugins' : pages.plugins.layout,
|
105
|
+
'/dash/tokens' : pages.tokens.layout,
|
106
|
+
'/dash/register': pages.register.layout,
|
107
|
+
'/dash/pipes' : pages.pipes.layout,
|
108
|
+
'/dash/jobs' : pages.jobs.layout,
|
110
109
|
}
|
111
|
-
_required_login = {'', 'tokens', 'jobs', 'pipes'}
|
110
|
+
_required_login = {'', '/dash', '/dash/', '/dash/tokens', '/dash/jobs', '/dash/pipes'}
|
112
111
|
_pages = {
|
113
112
|
'Web Console': '/dash/',
|
114
113
|
'Pipes': '/dash/pipes',
|
@@ -145,7 +144,6 @@ def update_page_layout_div(
|
|
145
144
|
-------
|
146
145
|
A tuple of the page layout and new session store data.
|
147
146
|
"""
|
148
|
-
dash_endpoint = endpoints['dash']
|
149
147
|
try:
|
150
148
|
session_id = session_store_data.get('session-id', None)
|
151
149
|
except AttributeError:
|
@@ -162,18 +160,9 @@ def update_page_layout_div(
|
|
162
160
|
else:
|
163
161
|
session_store_to_return = dash.no_update
|
164
162
|
|
165
|
-
base_path = (
|
166
|
-
pathname.rstrip('/') + '/'
|
167
|
-
).replace(
|
168
|
-
(dash_endpoint + '/'),
|
169
|
-
''
|
170
|
-
).rstrip('/').split('/')[0]
|
171
|
-
|
163
|
+
base_path = '/'.join(pathname.split('/')[:2])
|
172
164
|
complete_path = (
|
173
165
|
pathname.rstrip('/') + '/'
|
174
|
-
).replace(
|
175
|
-
dash_endpoint + '/',
|
176
|
-
''
|
177
166
|
).rstrip('/')
|
178
167
|
|
179
168
|
if complete_path in _paths:
|
@@ -181,14 +170,14 @@ def update_page_layout_div(
|
|
181
170
|
elif base_path in _paths:
|
182
171
|
path_str = base_path
|
183
172
|
else:
|
184
|
-
path_str = ''
|
173
|
+
path_str = '/dash'
|
185
174
|
|
186
175
|
path = (
|
187
176
|
path_str
|
188
177
|
if no_auth or path_str not in _required_login else (
|
189
178
|
path_str
|
190
179
|
if is_session_active(session_id)
|
191
|
-
else 'login'
|
180
|
+
else '/dash/login'
|
192
181
|
)
|
193
182
|
)
|
194
183
|
layout = _paths.get(path, pages.error.layout)
|
@@ -129,12 +129,16 @@ default_system_config = {
|
|
129
129
|
'edit',
|
130
130
|
'start daemon',
|
131
131
|
'start job',
|
132
|
+
'stop job',
|
133
|
+
'delete job',
|
132
134
|
'stop daemon',
|
133
135
|
'show daemon',
|
134
136
|
'restart daemon',
|
137
|
+
'install',
|
138
|
+
'upgrade',
|
135
139
|
'reload',
|
136
140
|
'start worker',
|
137
|
-
'
|
141
|
+
'show log',
|
138
142
|
'python',
|
139
143
|
'login',
|
140
144
|
'executor',
|
@@ -162,13 +162,37 @@ def apply_connector_uri(env_var: str, env: Optional[Dict[str, Any]] = None) -> N
|
|
162
162
|
)
|
163
163
|
|
164
164
|
|
165
|
-
def get_env_vars(env: Optional[Dict[str, Any]] = None) ->
|
165
|
+
def get_env_vars(env: Optional[Dict[str, Any]] = None) -> Dict[str, Any]:
|
166
166
|
"""
|
167
167
|
Return all environment variables which begin with `'MRSM_'`.
|
168
168
|
"""
|
169
169
|
prefix = STATIC_CONFIG['environment']['prefix']
|
170
170
|
env = env if env is not None else os.environ
|
171
|
-
return
|
171
|
+
return {
|
172
|
+
env_var: env_val
|
173
|
+
for env_var, env_val in env.items()
|
174
|
+
if env_var.startswith(prefix)
|
175
|
+
}
|
176
|
+
|
177
|
+
|
178
|
+
def get_daemon_env_vars(env: Optional[Dict[str, Any]] = None) -> Dict[str, str]:
|
179
|
+
"""
|
180
|
+
Return the daemon-specific environment vars in the current environment.
|
181
|
+
"""
|
182
|
+
env = env if env is not None else os.environ
|
183
|
+
|
184
|
+
daemon_env_var_names = (
|
185
|
+
STATIC_CONFIG['environment']['systemd_log_path'],
|
186
|
+
STATIC_CONFIG['environment']['systemd_result_path'],
|
187
|
+
STATIC_CONFIG['environment']['systemd_delete_job'],
|
188
|
+
STATIC_CONFIG['environment']['systemd_stdin_path'],
|
189
|
+
STATIC_CONFIG['environment']['daemon_id'],
|
190
|
+
)
|
191
|
+
return {
|
192
|
+
env_var: env.get(env_var, '')
|
193
|
+
for env_var in daemon_env_var_names
|
194
|
+
if env_var in env
|
195
|
+
}
|
172
196
|
|
173
197
|
|
174
198
|
@contextlib.contextmanager
|
@@ -23,9 +23,9 @@ install_flavor_drivers = {
|
|
23
23
|
'mysql': ['pymysql'],
|
24
24
|
'mariadb': ['pymysql'],
|
25
25
|
'timescaledb': ['psycopg'],
|
26
|
-
'timescaledb-ha': ['psycopg', '
|
26
|
+
'timescaledb-ha': ['psycopg', 'geoalchemy2'],
|
27
27
|
'postgresql': ['psycopg'],
|
28
|
-
'postgis': ['psycopg', '
|
28
|
+
'postgis': ['psycopg', 'geoalchemy2'],
|
29
29
|
'citus': ['psycopg'],
|
30
30
|
'cockroachdb': ['psycopg', 'sqlalchemy_cockroachdb', 'sqlalchemy_cockroachdb.psycopg'],
|
31
31
|
'mssql': ['pyodbc'],
|
@@ -280,22 +280,19 @@ def fetch_pipes_keys(
|
|
280
280
|
|
281
281
|
ors, nands = [], []
|
282
282
|
if self.flavor in json_flavors:
|
283
|
+
tags_jsonb = pipes_tbl.c['parameters'].cast(JSONB).op('->')('tags').cast(JSONB)
|
283
284
|
for _in_tags, _ex_tags in in_ex_tag_groups:
|
284
285
|
if _in_tags:
|
285
286
|
ors.append(
|
286
287
|
sqlalchemy.and_(
|
287
|
-
|
288
|
-
JSONB
|
289
|
-
).contains(_in_tags)
|
288
|
+
tags_jsonb.contains(_in_tags)
|
290
289
|
)
|
291
290
|
)
|
292
291
|
for xt in _ex_tags:
|
293
292
|
nands.append(
|
294
293
|
sqlalchemy.not_(
|
295
294
|
sqlalchemy.and_(
|
296
|
-
|
297
|
-
JSONB
|
298
|
-
).contains([xt])
|
295
|
+
tags_jsonb.contains([xt])
|
299
296
|
)
|
300
297
|
)
|
301
298
|
)
|