meerschaum 3.0.0rc3__tar.gz → 3.0.0rc4__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.0rc3/meerschaum.egg-info → meerschaum-3.0.0rc4}/PKG-INFO +1 -1
- {meerschaum-3.0.0rc3 → meerschaum-3.0.0rc4}/meerschaum/api/_events.py +5 -0
- {meerschaum-3.0.0rc3 → meerschaum-3.0.0rc4}/meerschaum/api/dash/callbacks/dashboard.py +74 -97
- meerschaum-3.0.0rc4/meerschaum/api/dash/callbacks/pipes.py +235 -0
- {meerschaum-3.0.0rc3 → meerschaum-3.0.0rc4}/meerschaum/api/dash/callbacks/tokens.py +2 -1
- {meerschaum-3.0.0rc3 → meerschaum-3.0.0rc4}/meerschaum/api/dash/components.py +6 -7
- {meerschaum-3.0.0rc3 → meerschaum-3.0.0rc4}/meerschaum/api/dash/keys.py +17 -1
- {meerschaum-3.0.0rc3 → meerschaum-3.0.0rc4}/meerschaum/api/dash/pages/pipes.py +14 -4
- {meerschaum-3.0.0rc3 → meerschaum-3.0.0rc4}/meerschaum/api/dash/pipes.py +114 -29
- {meerschaum-3.0.0rc3 → meerschaum-3.0.0rc4}/meerschaum/api/dash/tokens.py +1 -1
- {meerschaum-3.0.0rc3 → meerschaum-3.0.0rc4}/meerschaum/config/_version.py +1 -1
- {meerschaum-3.0.0rc3 → meerschaum-3.0.0rc4}/meerschaum/connectors/sql/_pipes.py +10 -5
- {meerschaum-3.0.0rc3 → meerschaum-3.0.0rc4}/meerschaum/connectors/sql/tables/__init__.py +20 -3
- {meerschaum-3.0.0rc3 → meerschaum-3.0.0rc4}/meerschaum/core/Pipe/__init__.py +17 -1
- {meerschaum-3.0.0rc3 → meerschaum-3.0.0rc4}/meerschaum/utils/_get_pipes.py +30 -4
- {meerschaum-3.0.0rc3 → meerschaum-3.0.0rc4}/meerschaum/utils/formatting/_pprint.py +1 -0
- {meerschaum-3.0.0rc3 → meerschaum-3.0.0rc4}/meerschaum/utils/pipes.py +6 -2
- {meerschaum-3.0.0rc3 → meerschaum-3.0.0rc4/meerschaum.egg-info}/PKG-INFO +1 -1
- meerschaum-3.0.0rc3/meerschaum/api/dash/callbacks/pipes.py +0 -156
- {meerschaum-3.0.0rc3 → meerschaum-3.0.0rc4}/LICENSE +0 -0
- {meerschaum-3.0.0rc3 → meerschaum-3.0.0rc4}/MANIFEST.in +0 -0
- {meerschaum-3.0.0rc3 → meerschaum-3.0.0rc4}/NOTICE +0 -0
- {meerschaum-3.0.0rc3 → meerschaum-3.0.0rc4}/README.md +0 -0
- {meerschaum-3.0.0rc3 → meerschaum-3.0.0rc4}/meerschaum/__init__.py +0 -0
- {meerschaum-3.0.0rc3 → meerschaum-3.0.0rc4}/meerschaum/__main__.py +0 -0
- {meerschaum-3.0.0rc3 → meerschaum-3.0.0rc4}/meerschaum/_internal/__init__.py +0 -0
- {meerschaum-3.0.0rc3 → meerschaum-3.0.0rc4}/meerschaum/_internal/arguments/__init__.py +0 -0
- {meerschaum-3.0.0rc3 → meerschaum-3.0.0rc4}/meerschaum/_internal/arguments/_parse_arguments.py +0 -0
- {meerschaum-3.0.0rc3 → meerschaum-3.0.0rc4}/meerschaum/_internal/arguments/_parser.py +0 -0
- {meerschaum-3.0.0rc3 → meerschaum-3.0.0rc4}/meerschaum/_internal/docs/__init__.py +0 -0
- {meerschaum-3.0.0rc3 → meerschaum-3.0.0rc4}/meerschaum/_internal/docs/index.py +0 -0
- {meerschaum-3.0.0rc3 → meerschaum-3.0.0rc4}/meerschaum/_internal/entry.py +0 -0
- {meerschaum-3.0.0rc3 → meerschaum-3.0.0rc4}/meerschaum/_internal/shell/Shell.py +0 -0
- {meerschaum-3.0.0rc3 → meerschaum-3.0.0rc4}/meerschaum/_internal/shell/ShellCompleter.py +0 -0
- {meerschaum-3.0.0rc3 → meerschaum-3.0.0rc4}/meerschaum/_internal/shell/ValidAutoSuggest.py +0 -0
- {meerschaum-3.0.0rc3 → meerschaum-3.0.0rc4}/meerschaum/_internal/shell/__init__.py +0 -0
- {meerschaum-3.0.0rc3 → meerschaum-3.0.0rc4}/meerschaum/_internal/shell/resources/__init__.py +0 -0
- {meerschaum-3.0.0rc3 → meerschaum-3.0.0rc4}/meerschaum/_internal/shell/updates.py +0 -0
- {meerschaum-3.0.0rc3 → meerschaum-3.0.0rc4}/meerschaum/_internal/static.py +0 -0
- {meerschaum-3.0.0rc3 → meerschaum-3.0.0rc4}/meerschaum/_internal/term/TermPageHandler.py +0 -0
- {meerschaum-3.0.0rc3 → meerschaum-3.0.0rc4}/meerschaum/_internal/term/__init__.py +0 -0
- {meerschaum-3.0.0rc3 → meerschaum-3.0.0rc4}/meerschaum/_internal/term/tools.py +0 -0
- {meerschaum-3.0.0rc3 → meerschaum-3.0.0rc4}/meerschaum/actions/__init__.py +0 -0
- {meerschaum-3.0.0rc3 → meerschaum-3.0.0rc4}/meerschaum/actions/api.py +0 -0
- {meerschaum-3.0.0rc3 → meerschaum-3.0.0rc4}/meerschaum/actions/attach.py +0 -0
- {meerschaum-3.0.0rc3 → meerschaum-3.0.0rc4}/meerschaum/actions/bootstrap.py +0 -0
- {meerschaum-3.0.0rc3 → meerschaum-3.0.0rc4}/meerschaum/actions/clear.py +0 -0
- {meerschaum-3.0.0rc3 → meerschaum-3.0.0rc4}/meerschaum/actions/copy.py +0 -0
- {meerschaum-3.0.0rc3 → meerschaum-3.0.0rc4}/meerschaum/actions/deduplicate.py +0 -0
- {meerschaum-3.0.0rc3 → meerschaum-3.0.0rc4}/meerschaum/actions/delete.py +0 -0
- {meerschaum-3.0.0rc3 → meerschaum-3.0.0rc4}/meerschaum/actions/drop.py +0 -0
- {meerschaum-3.0.0rc3 → meerschaum-3.0.0rc4}/meerschaum/actions/edit.py +0 -0
- {meerschaum-3.0.0rc3 → meerschaum-3.0.0rc4}/meerschaum/actions/index.py +0 -0
- {meerschaum-3.0.0rc3 → meerschaum-3.0.0rc4}/meerschaum/actions/install.py +0 -0
- {meerschaum-3.0.0rc3 → meerschaum-3.0.0rc4}/meerschaum/actions/login.py +0 -0
- {meerschaum-3.0.0rc3 → meerschaum-3.0.0rc4}/meerschaum/actions/os.py +0 -0
- {meerschaum-3.0.0rc3 → meerschaum-3.0.0rc4}/meerschaum/actions/pause.py +0 -0
- {meerschaum-3.0.0rc3 → meerschaum-3.0.0rc4}/meerschaum/actions/python.py +0 -0
- {meerschaum-3.0.0rc3 → meerschaum-3.0.0rc4}/meerschaum/actions/register.py +0 -0
- {meerschaum-3.0.0rc3 → meerschaum-3.0.0rc4}/meerschaum/actions/reload.py +0 -0
- {meerschaum-3.0.0rc3 → meerschaum-3.0.0rc4}/meerschaum/actions/restart.py +0 -0
- {meerschaum-3.0.0rc3 → meerschaum-3.0.0rc4}/meerschaum/actions/setup.py +0 -0
- {meerschaum-3.0.0rc3 → meerschaum-3.0.0rc4}/meerschaum/actions/sh.py +0 -0
- {meerschaum-3.0.0rc3 → meerschaum-3.0.0rc4}/meerschaum/actions/show.py +0 -0
- {meerschaum-3.0.0rc3 → meerschaum-3.0.0rc4}/meerschaum/actions/sql.py +0 -0
- {meerschaum-3.0.0rc3 → meerschaum-3.0.0rc4}/meerschaum/actions/stack.py +0 -0
- {meerschaum-3.0.0rc3 → meerschaum-3.0.0rc4}/meerschaum/actions/start.py +0 -0
- {meerschaum-3.0.0rc3 → meerschaum-3.0.0rc4}/meerschaum/actions/stop.py +0 -0
- {meerschaum-3.0.0rc3 → meerschaum-3.0.0rc4}/meerschaum/actions/sync.py +0 -0
- {meerschaum-3.0.0rc3 → meerschaum-3.0.0rc4}/meerschaum/actions/tag.py +0 -0
- {meerschaum-3.0.0rc3 → meerschaum-3.0.0rc4}/meerschaum/actions/uninstall.py +0 -0
- {meerschaum-3.0.0rc3 → meerschaum-3.0.0rc4}/meerschaum/actions/upgrade.py +0 -0
- {meerschaum-3.0.0rc3 → meerschaum-3.0.0rc4}/meerschaum/actions/verify.py +0 -0
- {meerschaum-3.0.0rc3 → meerschaum-3.0.0rc4}/meerschaum/api/__init__.py +0 -0
- {meerschaum-3.0.0rc3 → meerschaum-3.0.0rc4}/meerschaum/api/_chain.py +0 -0
- {meerschaum-3.0.0rc3 → meerschaum-3.0.0rc4}/meerschaum/api/_chunks.py +0 -0
- {meerschaum-3.0.0rc3 → meerschaum-3.0.0rc4}/meerschaum/api/_exceptions.py +0 -0
- {meerschaum-3.0.0rc3 → meerschaum-3.0.0rc4}/meerschaum/api/_oauth2.py +0 -0
- {meerschaum-3.0.0rc3 → meerschaum-3.0.0rc4}/meerschaum/api/_tokens.py +0 -0
- {meerschaum-3.0.0rc3 → meerschaum-3.0.0rc4}/meerschaum/api/_websockets.py +0 -0
- {meerschaum-3.0.0rc3 → meerschaum-3.0.0rc4}/meerschaum/api/dash/__init__.py +0 -0
- {meerschaum-3.0.0rc3 → meerschaum-3.0.0rc4}/meerschaum/api/dash/assets/__init__.py +0 -0
- {meerschaum-3.0.0rc3 → meerschaum-3.0.0rc4}/meerschaum/api/dash/assets/ansi_up.js +0 -0
- {meerschaum-3.0.0rc3 → meerschaum-3.0.0rc4}/meerschaum/api/dash/assets/banner_1920x320.png +0 -0
- {meerschaum-3.0.0rc3 → meerschaum-3.0.0rc4}/meerschaum/api/dash/assets/favicon.ico +0 -0
- {meerschaum-3.0.0rc3 → meerschaum-3.0.0rc4}/meerschaum/api/dash/assets/logo_48x48.png +0 -0
- {meerschaum-3.0.0rc3 → meerschaum-3.0.0rc4}/meerschaum/api/dash/assets/logo_500x500.png +0 -0
- {meerschaum-3.0.0rc3 → meerschaum-3.0.0rc4}/meerschaum/api/dash/callbacks/__init__.py +0 -0
- {meerschaum-3.0.0rc3 → meerschaum-3.0.0rc4}/meerschaum/api/dash/callbacks/custom.py +0 -0
- {meerschaum-3.0.0rc3 → meerschaum-3.0.0rc4}/meerschaum/api/dash/callbacks/jobs.py +0 -0
- {meerschaum-3.0.0rc3 → meerschaum-3.0.0rc4}/meerschaum/api/dash/callbacks/login.py +0 -0
- {meerschaum-3.0.0rc3 → meerschaum-3.0.0rc4}/meerschaum/api/dash/callbacks/plugins.py +0 -0
- {meerschaum-3.0.0rc3 → meerschaum-3.0.0rc4}/meerschaum/api/dash/callbacks/register.py +0 -0
- {meerschaum-3.0.0rc3 → meerschaum-3.0.0rc4}/meerschaum/api/dash/callbacks/settings/__init__.py +0 -0
- {meerschaum-3.0.0rc3 → meerschaum-3.0.0rc4}/meerschaum/api/dash/callbacks/settings/password_reset.py +0 -0
- {meerschaum-3.0.0rc3 → meerschaum-3.0.0rc4}/meerschaum/api/dash/connectors.py +0 -0
- {meerschaum-3.0.0rc3 → meerschaum-3.0.0rc4}/meerschaum/api/dash/graphs.py +0 -0
- {meerschaum-3.0.0rc3 → meerschaum-3.0.0rc4}/meerschaum/api/dash/jobs.py +0 -0
- {meerschaum-3.0.0rc3 → meerschaum-3.0.0rc4}/meerschaum/api/dash/pages/__init__.py +0 -0
- {meerschaum-3.0.0rc3 → meerschaum-3.0.0rc4}/meerschaum/api/dash/pages/dashboard.py +0 -0
- {meerschaum-3.0.0rc3 → meerschaum-3.0.0rc4}/meerschaum/api/dash/pages/error.py +0 -0
- {meerschaum-3.0.0rc3 → meerschaum-3.0.0rc4}/meerschaum/api/dash/pages/jobs.py +0 -0
- {meerschaum-3.0.0rc3 → meerschaum-3.0.0rc4}/meerschaum/api/dash/pages/login.py +0 -0
- {meerschaum-3.0.0rc3 → meerschaum-3.0.0rc4}/meerschaum/api/dash/pages/plugins.py +0 -0
- {meerschaum-3.0.0rc3 → meerschaum-3.0.0rc4}/meerschaum/api/dash/pages/register.py +0 -0
- {meerschaum-3.0.0rc3 → meerschaum-3.0.0rc4}/meerschaum/api/dash/pages/settings/__init__.py +0 -0
- {meerschaum-3.0.0rc3 → meerschaum-3.0.0rc4}/meerschaum/api/dash/pages/settings/password_reset.py +0 -0
- {meerschaum-3.0.0rc3 → meerschaum-3.0.0rc4}/meerschaum/api/dash/pages/tokens.py +0 -0
- {meerschaum-3.0.0rc3 → meerschaum-3.0.0rc4}/meerschaum/api/dash/plugins.py +0 -0
- {meerschaum-3.0.0rc3 → meerschaum-3.0.0rc4}/meerschaum/api/dash/sessions.py +0 -0
- {meerschaum-3.0.0rc3 → meerschaum-3.0.0rc4}/meerschaum/api/dash/sync.py +0 -0
- {meerschaum-3.0.0rc3 → meerschaum-3.0.0rc4}/meerschaum/api/dash/users.py +0 -0
- {meerschaum-3.0.0rc3 → meerschaum-3.0.0rc4}/meerschaum/api/dash/websockets.py +0 -0
- {meerschaum-3.0.0rc3 → meerschaum-3.0.0rc4}/meerschaum/api/dash/webterm.py +0 -0
- {meerschaum-3.0.0rc3 → meerschaum-3.0.0rc4}/meerschaum/api/models/__init__.py +0 -0
- {meerschaum-3.0.0rc3 → meerschaum-3.0.0rc4}/meerschaum/api/models/_actions.py +0 -0
- {meerschaum-3.0.0rc3 → meerschaum-3.0.0rc4}/meerschaum/api/models/_pipes.py +0 -0
- {meerschaum-3.0.0rc3 → meerschaum-3.0.0rc4}/meerschaum/api/models/_tokens.py +0 -0
- {meerschaum-3.0.0rc3 → meerschaum-3.0.0rc4}/meerschaum/api/resources/__init__.py +0 -0
- {meerschaum-3.0.0rc3 → meerschaum-3.0.0rc4}/meerschaum/api/resources/static/__init__.py +0 -0
- {meerschaum-3.0.0rc3 → meerschaum-3.0.0rc4}/meerschaum/api/resources/static/css/__init__.py +0 -0
- {meerschaum-3.0.0rc3 → meerschaum-3.0.0rc4}/meerschaum/api/resources/static/css/bootstrap.min.css +0 -0
- {meerschaum-3.0.0rc3 → meerschaum-3.0.0rc4}/meerschaum/api/resources/static/css/dash.css +0 -0
- {meerschaum-3.0.0rc3 → meerschaum-3.0.0rc4}/meerschaum/api/resources/static/css/dbc_dark.css +0 -0
- {meerschaum-3.0.0rc3 → meerschaum-3.0.0rc4}/meerschaum/api/resources/static/css/styles.css +0 -0
- {meerschaum-3.0.0rc3 → meerschaum-3.0.0rc4}/meerschaum/api/resources/static/css/xterm.css +0 -0
- {meerschaum-3.0.0rc3 → meerschaum-3.0.0rc4}/meerschaum/api/resources/static/ico/__init__.py +0 -0
- {meerschaum-3.0.0rc3 → meerschaum-3.0.0rc4}/meerschaum/api/resources/static/ico/logo.ico +0 -0
- {meerschaum-3.0.0rc3 → meerschaum-3.0.0rc4}/meerschaum/api/resources/static/js/__init__.py +0 -0
- {meerschaum-3.0.0rc3 → meerschaum-3.0.0rc4}/meerschaum/api/resources/static/js/action_button.js +0 -0
- {meerschaum-3.0.0rc3 → meerschaum-3.0.0rc4}/meerschaum/api/resources/static/js/main.js +0 -0
- {meerschaum-3.0.0rc3 → meerschaum-3.0.0rc4}/meerschaum/api/resources/static/js/terminado.js +0 -0
- {meerschaum-3.0.0rc3 → meerschaum-3.0.0rc4}/meerschaum/api/resources/static/js/xterm.js +0 -0
- {meerschaum-3.0.0rc3 → meerschaum-3.0.0rc4}/meerschaum/api/resources/static/png/__init__.py +0 -0
- {meerschaum-3.0.0rc3 → meerschaum-3.0.0rc4}/meerschaum/api/resources/templates/__init__.py +0 -0
- {meerschaum-3.0.0rc3 → meerschaum-3.0.0rc4}/meerschaum/api/resources/templates/index.html +0 -0
- {meerschaum-3.0.0rc3 → meerschaum-3.0.0rc4}/meerschaum/api/resources/templates/old_index.html +0 -0
- {meerschaum-3.0.0rc3 → meerschaum-3.0.0rc4}/meerschaum/api/resources/templates/secret.html +0 -0
- {meerschaum-3.0.0rc3 → meerschaum-3.0.0rc4}/meerschaum/api/resources/templates/termpage.html +0 -0
- {meerschaum-3.0.0rc3 → meerschaum-3.0.0rc4}/meerschaum/api/routes/__init__.py +0 -0
- {meerschaum-3.0.0rc3 → meerschaum-3.0.0rc4}/meerschaum/api/routes/_actions.py +0 -0
- {meerschaum-3.0.0rc3 → meerschaum-3.0.0rc4}/meerschaum/api/routes/_connectors.py +0 -0
- {meerschaum-3.0.0rc3 → meerschaum-3.0.0rc4}/meerschaum/api/routes/_index.py +0 -0
- {meerschaum-3.0.0rc3 → meerschaum-3.0.0rc4}/meerschaum/api/routes/_jobs.py +0 -0
- {meerschaum-3.0.0rc3 → meerschaum-3.0.0rc4}/meerschaum/api/routes/_login.py +0 -0
- {meerschaum-3.0.0rc3 → meerschaum-3.0.0rc4}/meerschaum/api/routes/_misc.py +0 -0
- {meerschaum-3.0.0rc3 → meerschaum-3.0.0rc4}/meerschaum/api/routes/_pipes.py +0 -0
- {meerschaum-3.0.0rc3 → meerschaum-3.0.0rc4}/meerschaum/api/routes/_plugins.py +0 -0
- {meerschaum-3.0.0rc3 → meerschaum-3.0.0rc4}/meerschaum/api/routes/_tokens.py +0 -0
- {meerschaum-3.0.0rc3 → meerschaum-3.0.0rc4}/meerschaum/api/routes/_users.py +0 -0
- {meerschaum-3.0.0rc3 → meerschaum-3.0.0rc4}/meerschaum/api/routes/_version.py +0 -0
- {meerschaum-3.0.0rc3 → meerschaum-3.0.0rc4}/meerschaum/api/routes/_webterm.py +0 -0
- {meerschaum-3.0.0rc3 → meerschaum-3.0.0rc4}/meerschaum/api/tables/__init__.py +0 -0
- {meerschaum-3.0.0rc3 → meerschaum-3.0.0rc4}/meerschaum/config/__init__.py +0 -0
- {meerschaum-3.0.0rc3 → meerschaum-3.0.0rc4}/meerschaum/config/_dash.py +0 -0
- {meerschaum-3.0.0rc3 → meerschaum-3.0.0rc4}/meerschaum/config/_default.py +0 -0
- {meerschaum-3.0.0rc3 → meerschaum-3.0.0rc4}/meerschaum/config/_edit.py +0 -0
- {meerschaum-3.0.0rc3 → meerschaum-3.0.0rc4}/meerschaum/config/_environment.py +0 -0
- {meerschaum-3.0.0rc3 → meerschaum-3.0.0rc4}/meerschaum/config/_formatting.py +0 -0
- {meerschaum-3.0.0rc3 → meerschaum-3.0.0rc4}/meerschaum/config/_jobs.py +0 -0
- {meerschaum-3.0.0rc3 → meerschaum-3.0.0rc4}/meerschaum/config/_patch.py +0 -0
- {meerschaum-3.0.0rc3 → meerschaum-3.0.0rc4}/meerschaum/config/_paths.py +0 -0
- {meerschaum-3.0.0rc3 → meerschaum-3.0.0rc4}/meerschaum/config/_preprocess.py +0 -0
- {meerschaum-3.0.0rc3 → meerschaum-3.0.0rc4}/meerschaum/config/_read_config.py +0 -0
- {meerschaum-3.0.0rc3 → meerschaum-3.0.0rc4}/meerschaum/config/_shell.py +0 -0
- {meerschaum-3.0.0rc3 → meerschaum-3.0.0rc4}/meerschaum/config/_sync.py +0 -0
- {meerschaum-3.0.0rc3 → meerschaum-3.0.0rc4}/meerschaum/config/paths.py +0 -0
- {meerschaum-3.0.0rc3 → meerschaum-3.0.0rc4}/meerschaum/config/resources/__init__.py +0 -0
- {meerschaum-3.0.0rc3 → meerschaum-3.0.0rc4}/meerschaum/config/stack/__init__.py +0 -0
- {meerschaum-3.0.0rc3 → meerschaum-3.0.0rc4}/meerschaum/config/stack/grafana/__init__.py +0 -0
- {meerschaum-3.0.0rc3 → meerschaum-3.0.0rc4}/meerschaum/config/stack/mosquitto/__init__.py +0 -0
- {meerschaum-3.0.0rc3 → meerschaum-3.0.0rc4}/meerschaum/config/stack/mosquitto/resources/__init__.py +0 -0
- {meerschaum-3.0.0rc3 → meerschaum-3.0.0rc4}/meerschaum/config/stack/resources/__init__.py +0 -0
- {meerschaum-3.0.0rc3 → meerschaum-3.0.0rc4}/meerschaum/config/static.py +0 -0
- {meerschaum-3.0.0rc3 → meerschaum-3.0.0rc4}/meerschaum/connectors/_Connector.py +0 -0
- {meerschaum-3.0.0rc3 → meerschaum-3.0.0rc4}/meerschaum/connectors/__init__.py +0 -0
- {meerschaum-3.0.0rc3 → meerschaum-3.0.0rc4}/meerschaum/connectors/api/_APIConnector.py +0 -0
- {meerschaum-3.0.0rc3 → meerschaum-3.0.0rc4}/meerschaum/connectors/api/__init__.py +0 -0
- {meerschaum-3.0.0rc3 → meerschaum-3.0.0rc4}/meerschaum/connectors/api/_actions.py +0 -0
- {meerschaum-3.0.0rc3 → meerschaum-3.0.0rc4}/meerschaum/connectors/api/_fetch.py +0 -0
- {meerschaum-3.0.0rc3 → meerschaum-3.0.0rc4}/meerschaum/connectors/api/_jobs.py +0 -0
- {meerschaum-3.0.0rc3 → meerschaum-3.0.0rc4}/meerschaum/connectors/api/_login.py +0 -0
- {meerschaum-3.0.0rc3 → meerschaum-3.0.0rc4}/meerschaum/connectors/api/_misc.py +0 -0
- {meerschaum-3.0.0rc3 → meerschaum-3.0.0rc4}/meerschaum/connectors/api/_pipes.py +0 -0
- {meerschaum-3.0.0rc3 → meerschaum-3.0.0rc4}/meerschaum/connectors/api/_plugins.py +0 -0
- {meerschaum-3.0.0rc3 → meerschaum-3.0.0rc4}/meerschaum/connectors/api/_request.py +0 -0
- {meerschaum-3.0.0rc3 → meerschaum-3.0.0rc4}/meerschaum/connectors/api/_tokens.py +0 -0
- {meerschaum-3.0.0rc3 → meerschaum-3.0.0rc4}/meerschaum/connectors/api/_uri.py +0 -0
- {meerschaum-3.0.0rc3 → meerschaum-3.0.0rc4}/meerschaum/connectors/api/_users.py +0 -0
- {meerschaum-3.0.0rc3 → meerschaum-3.0.0rc4}/meerschaum/connectors/instance/_InstanceConnector.py +0 -0
- {meerschaum-3.0.0rc3 → meerschaum-3.0.0rc4}/meerschaum/connectors/instance/__init__.py +0 -0
- {meerschaum-3.0.0rc3 → meerschaum-3.0.0rc4}/meerschaum/connectors/instance/_pipes.py +0 -0
- {meerschaum-3.0.0rc3 → meerschaum-3.0.0rc4}/meerschaum/connectors/instance/_plugins.py +0 -0
- {meerschaum-3.0.0rc3 → meerschaum-3.0.0rc4}/meerschaum/connectors/instance/_tokens.py +0 -0
- {meerschaum-3.0.0rc3 → meerschaum-3.0.0rc4}/meerschaum/connectors/instance/_users.py +0 -0
- {meerschaum-3.0.0rc3 → meerschaum-3.0.0rc4}/meerschaum/connectors/parse.py +0 -0
- {meerschaum-3.0.0rc3 → meerschaum-3.0.0rc4}/meerschaum/connectors/plugin/PluginConnector.py +0 -0
- {meerschaum-3.0.0rc3 → meerschaum-3.0.0rc4}/meerschaum/connectors/plugin/__init__.py +0 -0
- {meerschaum-3.0.0rc3 → meerschaum-3.0.0rc4}/meerschaum/connectors/poll.py +0 -0
- {meerschaum-3.0.0rc3 → meerschaum-3.0.0rc4}/meerschaum/connectors/sql/_SQLConnector.py +0 -0
- {meerschaum-3.0.0rc3 → meerschaum-3.0.0rc4}/meerschaum/connectors/sql/__init__.py +0 -0
- {meerschaum-3.0.0rc3 → meerschaum-3.0.0rc4}/meerschaum/connectors/sql/_cli.py +0 -0
- {meerschaum-3.0.0rc3 → meerschaum-3.0.0rc4}/meerschaum/connectors/sql/_create_engine.py +0 -0
- {meerschaum-3.0.0rc3 → meerschaum-3.0.0rc4}/meerschaum/connectors/sql/_fetch.py +0 -0
- {meerschaum-3.0.0rc3 → meerschaum-3.0.0rc4}/meerschaum/connectors/sql/_instance.py +0 -0
- {meerschaum-3.0.0rc3 → meerschaum-3.0.0rc4}/meerschaum/connectors/sql/_plugins.py +0 -0
- {meerschaum-3.0.0rc3 → meerschaum-3.0.0rc4}/meerschaum/connectors/sql/_sql.py +0 -0
- {meerschaum-3.0.0rc3 → meerschaum-3.0.0rc4}/meerschaum/connectors/sql/_uri.py +0 -0
- {meerschaum-3.0.0rc3 → meerschaum-3.0.0rc4}/meerschaum/connectors/sql/_users.py +0 -0
- {meerschaum-3.0.0rc3 → meerschaum-3.0.0rc4}/meerschaum/connectors/sql/tables/types.py +0 -0
- {meerschaum-3.0.0rc3 → meerschaum-3.0.0rc4}/meerschaum/connectors/sql/tools.py +0 -0
- {meerschaum-3.0.0rc3 → meerschaum-3.0.0rc4}/meerschaum/connectors/valkey/_ValkeyConnector.py +0 -0
- {meerschaum-3.0.0rc3 → meerschaum-3.0.0rc4}/meerschaum/connectors/valkey/__init__.py +0 -0
- {meerschaum-3.0.0rc3 → meerschaum-3.0.0rc4}/meerschaum/connectors/valkey/_fetch.py +0 -0
- {meerschaum-3.0.0rc3 → meerschaum-3.0.0rc4}/meerschaum/connectors/valkey/_pipes.py +0 -0
- {meerschaum-3.0.0rc3 → meerschaum-3.0.0rc4}/meerschaum/connectors/valkey/_plugins.py +0 -0
- {meerschaum-3.0.0rc3 → meerschaum-3.0.0rc4}/meerschaum/connectors/valkey/_users.py +0 -0
- {meerschaum-3.0.0rc3 → meerschaum-3.0.0rc4}/meerschaum/core/Pipe/_attributes.py +0 -0
- {meerschaum-3.0.0rc3 → meerschaum-3.0.0rc4}/meerschaum/core/Pipe/_bootstrap.py +0 -0
- {meerschaum-3.0.0rc3 → meerschaum-3.0.0rc4}/meerschaum/core/Pipe/_clear.py +0 -0
- {meerschaum-3.0.0rc3 → meerschaum-3.0.0rc4}/meerschaum/core/Pipe/_copy.py +0 -0
- {meerschaum-3.0.0rc3 → meerschaum-3.0.0rc4}/meerschaum/core/Pipe/_data.py +0 -0
- {meerschaum-3.0.0rc3 → meerschaum-3.0.0rc4}/meerschaum/core/Pipe/_deduplicate.py +0 -0
- {meerschaum-3.0.0rc3 → meerschaum-3.0.0rc4}/meerschaum/core/Pipe/_delete.py +0 -0
- {meerschaum-3.0.0rc3 → meerschaum-3.0.0rc4}/meerschaum/core/Pipe/_drop.py +0 -0
- {meerschaum-3.0.0rc3 → meerschaum-3.0.0rc4}/meerschaum/core/Pipe/_dtypes.py +0 -0
- {meerschaum-3.0.0rc3 → meerschaum-3.0.0rc4}/meerschaum/core/Pipe/_edit.py +0 -0
- {meerschaum-3.0.0rc3 → meerschaum-3.0.0rc4}/meerschaum/core/Pipe/_fetch.py +0 -0
- {meerschaum-3.0.0rc3 → meerschaum-3.0.0rc4}/meerschaum/core/Pipe/_index.py +0 -0
- {meerschaum-3.0.0rc3 → meerschaum-3.0.0rc4}/meerschaum/core/Pipe/_register.py +0 -0
- {meerschaum-3.0.0rc3 → meerschaum-3.0.0rc4}/meerschaum/core/Pipe/_show.py +0 -0
- {meerschaum-3.0.0rc3 → meerschaum-3.0.0rc4}/meerschaum/core/Pipe/_sync.py +0 -0
- {meerschaum-3.0.0rc3 → meerschaum-3.0.0rc4}/meerschaum/core/Pipe/_verify.py +0 -0
- {meerschaum-3.0.0rc3 → meerschaum-3.0.0rc4}/meerschaum/core/Plugin/_Plugin.py +0 -0
- {meerschaum-3.0.0rc3 → meerschaum-3.0.0rc4}/meerschaum/core/Plugin/__init__.py +0 -0
- {meerschaum-3.0.0rc3 → meerschaum-3.0.0rc4}/meerschaum/core/Token/_Token.py +0 -0
- {meerschaum-3.0.0rc3 → meerschaum-3.0.0rc4}/meerschaum/core/Token/__init__.py +0 -0
- {meerschaum-3.0.0rc3 → meerschaum-3.0.0rc4}/meerschaum/core/User/_User.py +0 -0
- {meerschaum-3.0.0rc3 → meerschaum-3.0.0rc4}/meerschaum/core/User/__init__.py +0 -0
- {meerschaum-3.0.0rc3 → meerschaum-3.0.0rc4}/meerschaum/core/__init__.py +0 -0
- {meerschaum-3.0.0rc3 → meerschaum-3.0.0rc4}/meerschaum/jobs/_Executor.py +0 -0
- {meerschaum-3.0.0rc3 → meerschaum-3.0.0rc4}/meerschaum/jobs/_Job.py +0 -0
- {meerschaum-3.0.0rc3 → meerschaum-3.0.0rc4}/meerschaum/jobs/__init__.py +0 -0
- {meerschaum-3.0.0rc3 → meerschaum-3.0.0rc4}/meerschaum/jobs/systemd.py +0 -0
- {meerschaum-3.0.0rc3 → meerschaum-3.0.0rc4}/meerschaum/models/__init__.py +0 -0
- {meerschaum-3.0.0rc3 → meerschaum-3.0.0rc4}/meerschaum/models/pipes.py +0 -0
- {meerschaum-3.0.0rc3 → meerschaum-3.0.0rc4}/meerschaum/models/tokens.py +0 -0
- {meerschaum-3.0.0rc3 → meerschaum-3.0.0rc4}/meerschaum/models/users.py +0 -0
- {meerschaum-3.0.0rc3 → meerschaum-3.0.0rc4}/meerschaum/plugins/__init__.py +0 -0
- {meerschaum-3.0.0rc3 → meerschaum-3.0.0rc4}/meerschaum/plugins/bootstrap.py +0 -0
- {meerschaum-3.0.0rc3 → meerschaum-3.0.0rc4}/meerschaum/utils/__init__.py +0 -0
- {meerschaum-3.0.0rc3 → meerschaum-3.0.0rc4}/meerschaum/utils/daemon/Daemon.py +0 -0
- {meerschaum-3.0.0rc3 → meerschaum-3.0.0rc4}/meerschaum/utils/daemon/FileDescriptorInterceptor.py +0 -0
- {meerschaum-3.0.0rc3 → meerschaum-3.0.0rc4}/meerschaum/utils/daemon/RotatingFile.py +0 -0
- {meerschaum-3.0.0rc3 → meerschaum-3.0.0rc4}/meerschaum/utils/daemon/StdinFile.py +0 -0
- {meerschaum-3.0.0rc3 → meerschaum-3.0.0rc4}/meerschaum/utils/daemon/__init__.py +0 -0
- {meerschaum-3.0.0rc3 → meerschaum-3.0.0rc4}/meerschaum/utils/daemon/_names.py +0 -0
- {meerschaum-3.0.0rc3 → meerschaum-3.0.0rc4}/meerschaum/utils/dataframe.py +0 -0
- {meerschaum-3.0.0rc3 → meerschaum-3.0.0rc4}/meerschaum/utils/debug.py +0 -0
- {meerschaum-3.0.0rc3 → meerschaum-3.0.0rc4}/meerschaum/utils/dtypes/__init__.py +0 -0
- {meerschaum-3.0.0rc3 → meerschaum-3.0.0rc4}/meerschaum/utils/dtypes/sql.py +0 -0
- {meerschaum-3.0.0rc3 → meerschaum-3.0.0rc4}/meerschaum/utils/formatting/__init__.py +0 -0
- {meerschaum-3.0.0rc3 → meerschaum-3.0.0rc4}/meerschaum/utils/formatting/_jobs.py +0 -0
- {meerschaum-3.0.0rc3 → meerschaum-3.0.0rc4}/meerschaum/utils/formatting/_pipes.py +0 -0
- {meerschaum-3.0.0rc3 → meerschaum-3.0.0rc4}/meerschaum/utils/formatting/_shell.py +0 -0
- {meerschaum-3.0.0rc3 → meerschaum-3.0.0rc4}/meerschaum/utils/interactive.py +0 -0
- {meerschaum-3.0.0rc3 → meerschaum-3.0.0rc4}/meerschaum/utils/misc.py +0 -0
- {meerschaum-3.0.0rc3 → meerschaum-3.0.0rc4}/meerschaum/utils/networking.py +0 -0
- {meerschaum-3.0.0rc3 → meerschaum-3.0.0rc4}/meerschaum/utils/packages/__init__.py +0 -0
- {meerschaum-3.0.0rc3 → meerschaum-3.0.0rc4}/meerschaum/utils/packages/_packages.py +0 -0
- {meerschaum-3.0.0rc3 → meerschaum-3.0.0rc4}/meerschaum/utils/packages/lazy_loader.py +0 -0
- {meerschaum-3.0.0rc3 → meerschaum-3.0.0rc4}/meerschaum/utils/pool.py +0 -0
- {meerschaum-3.0.0rc3 → meerschaum-3.0.0rc4}/meerschaum/utils/process.py +0 -0
- {meerschaum-3.0.0rc3 → meerschaum-3.0.0rc4}/meerschaum/utils/prompt.py +0 -0
- {meerschaum-3.0.0rc3 → meerschaum-3.0.0rc4}/meerschaum/utils/schedule.py +0 -0
- {meerschaum-3.0.0rc3 → meerschaum-3.0.0rc4}/meerschaum/utils/sql.py +0 -0
- {meerschaum-3.0.0rc3 → meerschaum-3.0.0rc4}/meerschaum/utils/threading.py +0 -0
- {meerschaum-3.0.0rc3 → meerschaum-3.0.0rc4}/meerschaum/utils/typing.py +0 -0
- {meerschaum-3.0.0rc3 → meerschaum-3.0.0rc4}/meerschaum/utils/venv/_Venv.py +0 -0
- {meerschaum-3.0.0rc3 → meerschaum-3.0.0rc4}/meerschaum/utils/venv/__init__.py +0 -0
- {meerschaum-3.0.0rc3 → meerschaum-3.0.0rc4}/meerschaum/utils/warnings.py +0 -0
- {meerschaum-3.0.0rc3 → meerschaum-3.0.0rc4}/meerschaum/utils/yaml.py +0 -0
- {meerschaum-3.0.0rc3 → meerschaum-3.0.0rc4}/meerschaum.egg-info/SOURCES.txt +0 -0
- {meerschaum-3.0.0rc3 → meerschaum-3.0.0rc4}/meerschaum.egg-info/dependency_links.txt +0 -0
- {meerschaum-3.0.0rc3 → meerschaum-3.0.0rc4}/meerschaum.egg-info/entry_points.txt +0 -0
- {meerschaum-3.0.0rc3 → meerschaum-3.0.0rc4}/meerschaum.egg-info/requires.txt +0 -0
- {meerschaum-3.0.0rc3 → meerschaum-3.0.0rc4}/meerschaum.egg-info/top_level.txt +0 -0
- {meerschaum-3.0.0rc3 → meerschaum-3.0.0rc4}/meerschaum.egg-info/zip-safe +0 -0
- {meerschaum-3.0.0rc3 → meerschaum-3.0.0rc4}/pyproject.toml +0 -0
- {meerschaum-3.0.0rc3 → meerschaum-3.0.0rc4}/setup.cfg +0 -0
- {meerschaum-3.0.0rc3 → meerschaum-3.0.0rc4}/setup.py +0 -0
@@ -98,6 +98,11 @@ async def startup():
|
|
98
98
|
await shutdown()
|
99
99
|
os._exit(1)
|
100
100
|
|
101
|
+
conn = get_api_connector()
|
102
|
+
if conn.type == 'sql':
|
103
|
+
from meerschaum.connectors.sql.tables import get_tables
|
104
|
+
_ = get_tables(conn, refresh=True, create=True, debug=debug)
|
105
|
+
|
101
106
|
start_check_jobs_thread()
|
102
107
|
|
103
108
|
|
@@ -498,13 +498,9 @@ def update_flags(input_flags_dropdown_values, n_clicks, input_flags_texts):
|
|
498
498
|
|
499
499
|
@dash_app.callback(
|
500
500
|
Output('connector-keys-dropdown', 'options'),
|
501
|
-
Output('connector-keys-dropdown', 'value'),
|
502
501
|
Output('metric-keys-dropdown', 'options'),
|
503
|
-
Output('metric-keys-dropdown', 'value'),
|
504
502
|
Output('location-keys-dropdown', 'options'),
|
505
|
-
Output('location-keys-dropdown', 'value'),
|
506
503
|
Output('tags-dropdown', 'options'),
|
507
|
-
Output('tags-dropdown', 'value'),
|
508
504
|
Output('instance-select', 'value'),
|
509
505
|
Output('instance-alert-div', 'children'),
|
510
506
|
Input('connector-keys-dropdown', 'value'),
|
@@ -546,15 +542,6 @@ def update_keys_options(
|
|
546
542
|
except Exception as e:
|
547
543
|
instance_alerts += [alert_from_success_tuple((False, str(e)))]
|
548
544
|
|
549
|
-
### Update the keys filters.
|
550
|
-
if connector_keys is None:
|
551
|
-
connector_keys = []
|
552
|
-
if metric_keys is None:
|
553
|
-
metric_keys = []
|
554
|
-
if location_keys is None:
|
555
|
-
location_keys = []
|
556
|
-
if tags is None:
|
557
|
-
tags = []
|
558
545
|
num_filter = 0
|
559
546
|
if connector_keys:
|
560
547
|
num_filter += 1
|
@@ -565,10 +552,6 @@ def update_keys_options(
|
|
565
552
|
if tags:
|
566
553
|
num_filter += 1
|
567
554
|
|
568
|
-
_ck_filter = connector_keys
|
569
|
-
_mk_filter = metric_keys
|
570
|
-
_lk_filter = location_keys
|
571
|
-
_tags_filter = tags
|
572
555
|
_ck_alone = (connector_keys and num_filter == 1) or instance_click
|
573
556
|
_mk_alone = (metric_keys and num_filter == 1) or instance_click
|
574
557
|
_lk_alone = (location_keys and num_filter == 1) or instance_click
|
@@ -581,101 +564,95 @@ def update_keys_options(
|
|
581
564
|
_keys = fetch_pipes_keys(
|
582
565
|
'registered',
|
583
566
|
get_web_connector(ctx.states),
|
584
|
-
connector_keys=
|
585
|
-
metric_keys=
|
586
|
-
location_keys=
|
587
|
-
tags=
|
567
|
+
connector_keys=connector_keys,
|
568
|
+
metric_keys=metric_keys,
|
569
|
+
location_keys=location_keys,
|
570
|
+
tags=tags,
|
588
571
|
)
|
589
572
|
_tags_pipes = mrsm.get_pipes(
|
590
|
-
connector_keys=
|
591
|
-
metric_keys=
|
592
|
-
location_keys=
|
593
|
-
tags=
|
573
|
+
connector_keys=connector_keys,
|
574
|
+
metric_keys=metric_keys,
|
575
|
+
location_keys=location_keys,
|
576
|
+
tags=tags,
|
594
577
|
instance=get_web_connector(ctx.states),
|
595
578
|
as_tags_dict=True,
|
596
579
|
)
|
597
580
|
_all_tags = list(
|
598
|
-
|
599
|
-
|
600
|
-
|
601
|
-
|
581
|
+
set(
|
582
|
+
mrsm.get_pipes(
|
583
|
+
instance=get_web_connector(ctx.states),
|
584
|
+
as_tags_dict=True,
|
585
|
+
)
|
586
|
+
).union(tags or [])
|
602
587
|
) if _tags_alone else []
|
603
588
|
except Exception as e:
|
604
589
|
instance_alerts += [alert_from_success_tuple((False, str(e)))]
|
605
|
-
_all_keys, _keys = [], []
|
606
|
-
|
607
|
-
|
608
|
-
|
609
|
-
|
610
|
-
|
611
|
-
|
612
|
-
|
613
|
-
|
614
|
-
|
615
|
-
|
616
|
-
|
617
|
-
|
618
|
-
|
619
|
-
|
620
|
-
|
621
|
-
|
622
|
-
|
623
|
-
|
624
|
-
|
625
|
-
|
626
|
-
|
627
|
-
|
628
|
-
|
590
|
+
_all_keys, _all_tags, _keys = [], [], []
|
591
|
+
|
592
|
+
connectors_options = sorted(
|
593
|
+
list(
|
594
|
+
set(
|
595
|
+
keys_tuple[0] for keys_tuple in (_all_keys if _ck_alone else _keys)
|
596
|
+
).union(set(connector_keys or []))
|
597
|
+
),
|
598
|
+
key=(lambda x: str(x).lower()),
|
599
|
+
)
|
600
|
+
metrics_options = sorted(
|
601
|
+
list(
|
602
|
+
set(
|
603
|
+
keys_tuple[1] for keys_tuple in (_all_keys if _mk_alone else _keys)
|
604
|
+
).union(set(metric_keys or []))
|
605
|
+
),
|
606
|
+
key=(lambda x: str(x).lower()),
|
607
|
+
)
|
608
|
+
locations_options = sorted(
|
609
|
+
list(
|
610
|
+
set(
|
611
|
+
(
|
612
|
+
str(keys_tuple[2])
|
613
|
+
for keys_tuple in (_all_keys if _lk_alone else _keys)
|
614
|
+
)
|
615
|
+
).union(set((str(_lk) for _lk in (location_keys or []))))
|
616
|
+
),
|
617
|
+
key=(lambda x: str(x).lower()),
|
618
|
+
)
|
619
|
+
|
620
|
+
tags_options = sorted(
|
621
|
+
list(
|
622
|
+
set(
|
623
|
+
(_all_tags if _tags_alone else _tags_pipes)
|
624
|
+
).union(set(tags or []))
|
625
|
+
),
|
626
|
+
key=(lambda x: str(x).lower()),
|
627
|
+
)
|
629
628
|
|
630
|
-
_connectors_options.sort(key=lambda x: str(x).lower())
|
631
|
-
_metrics_options.sort(key=lambda x: str(x).lower())
|
632
|
-
_locations_options.sort(key=lambda x: str(x).lower())
|
633
|
-
_tags_options.sort(key=lambda x: str(x).lower())
|
634
|
-
connector_keys = [
|
635
|
-
ck
|
636
|
-
for ck in connector_keys
|
637
|
-
if ck in [
|
638
|
-
_ck['value']
|
639
|
-
for _ck in _connectors_options
|
640
|
-
]
|
641
|
-
]
|
642
|
-
metric_keys = [
|
643
|
-
mk
|
644
|
-
for mk in metric_keys
|
645
|
-
if mk in [
|
646
|
-
_mk['value']
|
647
|
-
for _mk in _metrics_options
|
648
|
-
]
|
649
|
-
]
|
650
|
-
location_keys = [
|
651
|
-
lk
|
652
|
-
for lk in location_keys
|
653
|
-
if lk in [
|
654
|
-
_lk['value']
|
655
|
-
for _lk in _locations_options
|
656
|
-
]
|
657
|
-
]
|
658
|
-
tags = [
|
659
|
-
tag
|
660
|
-
for tag in tags
|
661
|
-
if tag in [
|
662
|
-
_tag['value']
|
663
|
-
for _tag in _tags_options
|
664
|
-
]
|
665
|
-
]
|
666
629
|
return (
|
667
|
-
|
668
|
-
|
669
|
-
|
670
|
-
|
671
|
-
_locations_options,
|
672
|
-
location_keys,
|
673
|
-
_tags_options,
|
674
|
-
tags,
|
630
|
+
connectors_options,
|
631
|
+
metrics_options,
|
632
|
+
locations_options,
|
633
|
+
tags_options,
|
675
634
|
(instance_keys if update_instance_keys else dash.no_update),
|
676
635
|
instance_alerts,
|
677
636
|
)
|
678
637
|
|
638
|
+
|
639
|
+
@dash_app.callback(
|
640
|
+
Output('connector-keys-dropdown', 'value'),
|
641
|
+
Output('metric-keys-dropdown', 'value'),
|
642
|
+
Output('location-keys-dropdown', 'value'),
|
643
|
+
Output('tags-dropdown', 'value'),
|
644
|
+
Input('clear-all-keys-button', 'n_clicks'),
|
645
|
+
prevent_initial_call=True,
|
646
|
+
)
|
647
|
+
def clear_all_keys_button_click(n_clicks):
|
648
|
+
"""
|
649
|
+
Clear the keys dropdowns when the `Clear all` button is clicked.
|
650
|
+
"""
|
651
|
+
if not n_clicks:
|
652
|
+
raise PreventUpdate
|
653
|
+
|
654
|
+
return [], [], [], []
|
655
|
+
|
679
656
|
dash_app.clientside_callback(
|
680
657
|
"""
|
681
658
|
function(
|
@@ -0,0 +1,235 @@
|
|
1
|
+
#! /usr/bin/env python3
|
2
|
+
# vim:fenc=utf-8
|
3
|
+
|
4
|
+
"""
|
5
|
+
Define callbacks for the `/dash/pipes/` page.
|
6
|
+
"""
|
7
|
+
|
8
|
+
from urllib.parse import parse_qs, quote_plus
|
9
|
+
from typing import List, Optional, Dict, Any
|
10
|
+
|
11
|
+
import dash
|
12
|
+
from dash.dependencies import Input, Output, State
|
13
|
+
from dash import no_update
|
14
|
+
from dash.exceptions import PreventUpdate
|
15
|
+
import dash_bootstrap_components as dbc
|
16
|
+
|
17
|
+
import meerschaum as mrsm
|
18
|
+
from meerschaum.api.dash import dash_app
|
19
|
+
from meerschaum.api.dash.components import (
|
20
|
+
alert_from_success_tuple,
|
21
|
+
build_cards_grid,
|
22
|
+
)
|
23
|
+
from meerschaum.api.dash.pipes import (
|
24
|
+
build_pipe_card,
|
25
|
+
build_pipes_dropdown_keys_row,
|
26
|
+
build_pipes_tags_dropdown,
|
27
|
+
build_pipes_navbar,
|
28
|
+
)
|
29
|
+
from meerschaum.api import CHECK_UPDATE, get_api_connector
|
30
|
+
from meerschaum.utils.packages import import_html, import_dcc
|
31
|
+
from meerschaum.api.dash.sessions import is_session_authenticated
|
32
|
+
html, dcc = import_html(check_update=CHECK_UPDATE), import_dcc(check_update=CHECK_UPDATE)
|
33
|
+
|
34
|
+
|
35
|
+
@dash_app.callback(
|
36
|
+
Output('pipes-navbar-div', 'children'),
|
37
|
+
Output('pipe-output-div', 'children'),
|
38
|
+
Input('pipes-location', 'pathname'),
|
39
|
+
State('pipes-location', 'search'),
|
40
|
+
State('session-store', 'data'),
|
41
|
+
)
|
42
|
+
def render_pipe_page_from_url(
|
43
|
+
pathname: str,
|
44
|
+
pipe_search: str,
|
45
|
+
session_data: Optional[Dict[str, Any]],
|
46
|
+
):
|
47
|
+
if not str(pathname).startswith('/dash/pipes'):
|
48
|
+
raise PreventUpdate
|
49
|
+
|
50
|
+
session_id = (session_data or {}).get('session-id', None)
|
51
|
+
authenticated = is_session_authenticated(str(session_id))
|
52
|
+
query_params = parse_qs(pipe_search.lstrip('?')) if pipe_search else {}
|
53
|
+
instance = query_params.get('instance', [None])[0] or str(get_api_connector())
|
54
|
+
tags = query_params.get('tags', [None])[0] or []
|
55
|
+
if isinstance(tags, str):
|
56
|
+
tags = tags.split(',')
|
57
|
+
|
58
|
+
connector_keys = query_params.get('connector_keys', [None])[0] or []
|
59
|
+
if isinstance(connector_keys, str):
|
60
|
+
connector_keys = connector_keys.split(',')
|
61
|
+
|
62
|
+
metric_keys = query_params.get('metric_keys', [None])[0] or []
|
63
|
+
if isinstance(metric_keys, str):
|
64
|
+
metric_keys = metric_keys.split(',')
|
65
|
+
|
66
|
+
location_keys = query_params.get('location_keys', [None])[0] or []
|
67
|
+
if isinstance(location_keys, str):
|
68
|
+
location_keys = location_keys.split(',')
|
69
|
+
|
70
|
+
keys = pathname.replace('/dash/pipes', '').lstrip('/').rstrip('/').split('/')
|
71
|
+
instance_connector = mrsm.get_connector(instance)
|
72
|
+
viewing_single_pipe = len(keys) in (2, 3)
|
73
|
+
if instance_connector is None:
|
74
|
+
return (
|
75
|
+
build_pipes_navbar(instance, with_instance_select=(not viewing_single_pipe)),
|
76
|
+
[
|
77
|
+
html.Br(),
|
78
|
+
alert_from_success_tuple((False, f"Invalid instance keys '{instance}'.")),
|
79
|
+
html.Br(),
|
80
|
+
]
|
81
|
+
)
|
82
|
+
|
83
|
+
if not viewing_single_pipe:
|
84
|
+
try:
|
85
|
+
pipes = mrsm.get_pipes(
|
86
|
+
as_list=True,
|
87
|
+
connector_keys=connector_keys,
|
88
|
+
metric_keys=metric_keys,
|
89
|
+
location_keys=location_keys,
|
90
|
+
tags=tags,
|
91
|
+
instance=instance_connector,
|
92
|
+
)
|
93
|
+
except Exception as e:
|
94
|
+
return (
|
95
|
+
build_pipes_navbar(instance, with_instance_select=False),
|
96
|
+
[
|
97
|
+
html.Br(),
|
98
|
+
alert_from_success_tuple(
|
99
|
+
(False, f"Failed to get pipes for instance '{instance}':\n{e}")
|
100
|
+
),
|
101
|
+
html.Br(),
|
102
|
+
dbc.Row(
|
103
|
+
[
|
104
|
+
dbc.Button(
|
105
|
+
"Reload",
|
106
|
+
id='pipes-reload-button',
|
107
|
+
size='lg',
|
108
|
+
href=(
|
109
|
+
"/dash/pipes"
|
110
|
+
if pathname.startswith('/dash/pipes/')
|
111
|
+
else "/dash/pipes/"
|
112
|
+
)
|
113
|
+
),
|
114
|
+
],
|
115
|
+
justify='center',
|
116
|
+
align='center',
|
117
|
+
className='h-50',
|
118
|
+
),
|
119
|
+
]
|
120
|
+
)
|
121
|
+
|
122
|
+
cards = [
|
123
|
+
build_pipe_card(pipe, authenticated=authenticated, include_manage=False)
|
124
|
+
for pipe in pipes
|
125
|
+
]
|
126
|
+
return (
|
127
|
+
build_pipes_navbar(instance, with_instance_select=True),
|
128
|
+
[
|
129
|
+
html.Div([
|
130
|
+
html.Br(),
|
131
|
+
build_pipes_dropdown_keys_row(
|
132
|
+
connector_keys,
|
133
|
+
metric_keys,
|
134
|
+
location_keys,
|
135
|
+
tags,
|
136
|
+
pipes,
|
137
|
+
instance_connector,
|
138
|
+
),
|
139
|
+
html.Br(),
|
140
|
+
build_pipes_tags_dropdown(
|
141
|
+
connector_keys,
|
142
|
+
metric_keys,
|
143
|
+
location_keys,
|
144
|
+
tags,
|
145
|
+
instance,
|
146
|
+
),
|
147
|
+
]),
|
148
|
+
html.Br(),
|
149
|
+
build_cards_grid(cards, 1),
|
150
|
+
html.Br(),
|
151
|
+
]
|
152
|
+
)
|
153
|
+
|
154
|
+
ck = keys[0]
|
155
|
+
mk = keys[1]
|
156
|
+
lk = keys[2] if len(keys) == 3 else None
|
157
|
+
|
158
|
+
pipe = mrsm.Pipe(ck, mk, lk, instance=instance)
|
159
|
+
return (
|
160
|
+
build_pipes_navbar(instance, with_instance_select=False),
|
161
|
+
[
|
162
|
+
html.Br(),
|
163
|
+
build_pipe_card(pipe, authenticated=authenticated, include_manage=False),
|
164
|
+
html.Br(),
|
165
|
+
]
|
166
|
+
)
|
167
|
+
|
168
|
+
|
169
|
+
@dash_app.callback(
|
170
|
+
Output('pipes-location', 'search'),
|
171
|
+
Input('pipes-connector-keys-dropdown', 'value'),
|
172
|
+
Input('pipes-metric-keys-dropdown', 'value'),
|
173
|
+
Input('pipes-location-keys-dropdown', 'value'),
|
174
|
+
Input('pipes-tags-dropdown', 'value'),
|
175
|
+
Input('instance-select', 'value'),
|
176
|
+
Input('pipes-clear-all-button', 'n_clicks'),
|
177
|
+
)
|
178
|
+
def update_location_on_pipes_filter_change(
|
179
|
+
connector_keys: Optional[List[str]],
|
180
|
+
metric_keys: Optional[List[str]],
|
181
|
+
location_keys: Optional[List[str]],
|
182
|
+
tags: Optional[List[str]],
|
183
|
+
instance_keys: str,
|
184
|
+
clear_all_button_n_clicks: Optional[int],
|
185
|
+
):
|
186
|
+
"""
|
187
|
+
Update the URL parameters when clicking the dropdowns.
|
188
|
+
"""
|
189
|
+
ctx = dash.callback_context.triggered
|
190
|
+
if len(ctx) != 1:
|
191
|
+
raise PreventUpdate
|
192
|
+
|
193
|
+
if not any(
|
194
|
+
(connector_keys or [])
|
195
|
+
+ (metric_keys or [])
|
196
|
+
+ (location_keys or [])
|
197
|
+
+ (tags or [])
|
198
|
+
+ ([instance_keys] if instance_keys else [])
|
199
|
+
):
|
200
|
+
return ''
|
201
|
+
|
202
|
+
if ctx[0].get('prop_id', None) == 'pipes-clear-all-button.n_clicks':
|
203
|
+
connector_keys = []
|
204
|
+
metric_keys = []
|
205
|
+
location_keys = []
|
206
|
+
tags = []
|
207
|
+
|
208
|
+
include_instance_keys = instance_keys and instance_keys != str(get_api_connector())
|
209
|
+
search_str = ""
|
210
|
+
|
211
|
+
if connector_keys:
|
212
|
+
search_str += "connector_keys=" + ','.join((quote_plus(ck) for ck in connector_keys))
|
213
|
+
if metric_keys or location_keys or tags or include_instance_keys:
|
214
|
+
search_str += '&'
|
215
|
+
|
216
|
+
if metric_keys:
|
217
|
+
search_str += "metric_keys=" + ','.join((quote_plus(mk) for mk in metric_keys))
|
218
|
+
if location_keys or tags or include_instance_keys:
|
219
|
+
search_str += '&'
|
220
|
+
|
221
|
+
if location_keys:
|
222
|
+
search_str += "location_keys=" + ','.join((quote_plus(str(lk)) for lk in location_keys))
|
223
|
+
if tags or include_instance_keys:
|
224
|
+
search_str += '&'
|
225
|
+
|
226
|
+
if tags:
|
227
|
+
search_str += "tags=" + ','.join((quote_plus(tag) for tag in tags))
|
228
|
+
if include_instance_keys:
|
229
|
+
search_str += '&'
|
230
|
+
|
231
|
+
if instance_keys:
|
232
|
+
if include_instance_keys:
|
233
|
+
search_str += "instance=" + quote_plus(instance_keys)
|
234
|
+
|
235
|
+
return ('?' + search_str) if search_str else ''
|
@@ -54,7 +54,8 @@ def refresh_tokens_button_click(
|
|
54
54
|
html.H4('No tokens registered.'),
|
55
55
|
html.P('Click the `+` button to register a new token.'),
|
56
56
|
],
|
57
|
-
|
57
|
+
build_tokens_register_input_modal(),
|
58
|
+
alerts,
|
58
59
|
)
|
59
60
|
|
60
61
|
return tokens_table, build_tokens_register_input_modal(), alerts
|
@@ -13,7 +13,7 @@ from meerschaum.utils.typing import SuccessTuple, List
|
|
13
13
|
from meerschaum._internal.static import STATIC_CONFIG
|
14
14
|
from meerschaum.utils.misc import remove_ansi
|
15
15
|
from meerschaum._internal.shell.Shell import get_shell_intro
|
16
|
-
from meerschaum.api import endpoints, CHECK_UPDATE, docs_enabled
|
16
|
+
from meerschaum.api import endpoints, CHECK_UPDATE, docs_enabled, get_api_connector
|
17
17
|
from meerschaum.connectors import instance_types, _load_builtin_custom_connectors
|
18
18
|
from meerschaum.utils.misc import get_connector_labels
|
19
19
|
from meerschaum.config import __doc__ as doc
|
@@ -104,7 +104,7 @@ instance_select = dbc.Select(
|
|
104
104
|
id='instance-select',
|
105
105
|
size='sm',
|
106
106
|
options=[
|
107
|
-
{'label': i, 'value': i}
|
107
|
+
{'label': (i[:32] + '…') if len(i) > 32 else i, 'value': i}
|
108
108
|
for i in get_connector_labels(*instance_types)
|
109
109
|
],
|
110
110
|
class_name='dbc_dark custom-select custom-select-sm',
|
@@ -163,6 +163,7 @@ pages_navbar = html.Div(
|
|
163
163
|
id='pages-navbar-div',
|
164
164
|
)
|
165
165
|
|
166
|
+
|
166
167
|
navbar = dbc.Navbar(
|
167
168
|
dbc.Container(
|
168
169
|
[
|
@@ -171,13 +172,11 @@ navbar = dbc.Navbar(
|
|
171
172
|
dbc.Collapse(
|
172
173
|
dbc.Row(
|
173
174
|
[
|
174
|
-
dbc.Col(instance_select),
|
175
|
-
dbc.Col(
|
176
|
-
sign_out_button,
|
177
|
-
className="ms-auto",
|
178
|
-
),
|
175
|
+
dbc.Col(instance_select, width="auto"),
|
176
|
+
dbc.Col(sign_out_button, width="auto"),
|
179
177
|
],
|
180
178
|
className="g-0 ms-auto flex-nowrap mt-3 mt-md-0",
|
179
|
+
align="center",
|
181
180
|
),
|
182
181
|
id='navbar-collapse',
|
183
182
|
is_open=False,
|
@@ -227,7 +227,23 @@ dropdown_tab_content = html.Div([
|
|
227
227
|
[
|
228
228
|
dropdown_keys_row,
|
229
229
|
html.Br(),
|
230
|
-
|
230
|
+
dbc.Row(
|
231
|
+
[
|
232
|
+
dbc.Col(tags_dropdown, width=True),
|
233
|
+
dbc.Col(
|
234
|
+
dbc.Button(
|
235
|
+
"Clear all",
|
236
|
+
id='clear-all-keys-button',
|
237
|
+
color='link',
|
238
|
+
size='sm',
|
239
|
+
style={'text-decoration': 'none'},
|
240
|
+
),
|
241
|
+
width='auto',
|
242
|
+
),
|
243
|
+
],
|
244
|
+
className='g-0',
|
245
|
+
align='center',
|
246
|
+
),
|
231
247
|
], ### end of card children
|
232
248
|
className='card-text',
|
233
249
|
)
|
@@ -7,17 +7,27 @@ Display pipes via a shareable URL.
|
|
7
7
|
|
8
8
|
from meerschaum.api import CHECK_UPDATE
|
9
9
|
from meerschaum.utils.packages import import_html, import_dcc
|
10
|
-
from meerschaum.api.dash.components import
|
10
|
+
from meerschaum.api.dash.components import (
|
11
|
+
download_dataframe,
|
12
|
+
)
|
11
13
|
|
12
14
|
html, dcc = import_html(check_update=CHECK_UPDATE), import_dcc(check_update=CHECK_UPDATE)
|
13
15
|
import dash_bootstrap_components as dbc
|
14
16
|
|
15
|
-
|
16
17
|
layout = [
|
17
|
-
|
18
|
+
html.Div(id='pipes-navbar-div'),
|
18
19
|
dcc.Location('pipes-location'),
|
19
20
|
download_dataframe,
|
20
21
|
dbc.Container([
|
21
|
-
|
22
|
+
dcc.Loading(
|
23
|
+
html.Div(id='pipe-output-div'),
|
24
|
+
id='pipes-loading',
|
25
|
+
type='circle',
|
26
|
+
delay_hide=1000,
|
27
|
+
delay_show=1000,
|
28
|
+
style={
|
29
|
+
'padding-top': '100px',
|
30
|
+
},
|
31
|
+
),
|
22
32
|
])
|
23
33
|
]
|