meerschaum 2.2.6__tar.gz → 2.3.0__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-2.2.6/meerschaum.egg-info → meerschaum-2.3.0}/PKG-INFO +22 -25
- {meerschaum-2.2.6 → meerschaum-2.3.0}/meerschaum/__init__.py +6 -1
- {meerschaum-2.2.6 → meerschaum-2.3.0}/meerschaum/__main__.py +9 -9
- {meerschaum-2.2.6 → meerschaum-2.3.0}/meerschaum/_internal/arguments/__init__.py +1 -1
- {meerschaum-2.2.6 → meerschaum-2.3.0}/meerschaum/_internal/arguments/_parse_arguments.py +72 -6
- {meerschaum-2.2.6 → meerschaum-2.3.0}/meerschaum/_internal/arguments/_parser.py +45 -15
- {meerschaum-2.2.6 → meerschaum-2.3.0}/meerschaum/_internal/docs/index.py +265 -8
- meerschaum-2.3.0/meerschaum/_internal/entry.py +301 -0
- {meerschaum-2.2.6 → meerschaum-2.3.0}/meerschaum/_internal/shell/Shell.py +290 -99
- meerschaum-2.3.0/meerschaum/_internal/shell/updates.py +175 -0
- {meerschaum-2.2.6 → meerschaum-2.3.0}/meerschaum/actions/__init__.py +29 -17
- {meerschaum-2.2.6 → meerschaum-2.3.0}/meerschaum/actions/api.py +12 -12
- meerschaum-2.3.0/meerschaum/actions/attach.py +113 -0
- {meerschaum-2.2.6 → meerschaum-2.3.0}/meerschaum/actions/copy.py +68 -41
- {meerschaum-2.2.6 → meerschaum-2.3.0}/meerschaum/actions/delete.py +112 -50
- {meerschaum-2.2.6 → meerschaum-2.3.0}/meerschaum/actions/edit.py +3 -3
- {meerschaum-2.2.6 → meerschaum-2.3.0}/meerschaum/actions/install.py +40 -32
- {meerschaum-2.2.6 → meerschaum-2.3.0}/meerschaum/actions/pause.py +44 -27
- {meerschaum-2.2.6 → meerschaum-2.3.0}/meerschaum/actions/register.py +19 -5
- meerschaum-2.3.0/meerschaum/actions/restart.py +107 -0
- {meerschaum-2.2.6 → meerschaum-2.3.0}/meerschaum/actions/show.py +130 -159
- {meerschaum-2.2.6 → meerschaum-2.3.0}/meerschaum/actions/start.py +161 -100
- {meerschaum-2.2.6 → meerschaum-2.3.0}/meerschaum/actions/stop.py +78 -42
- {meerschaum-2.2.6 → meerschaum-2.3.0}/meerschaum/actions/sync.py +3 -3
- {meerschaum-2.2.6 → meerschaum-2.3.0}/meerschaum/actions/upgrade.py +28 -36
- {meerschaum-2.2.6 → meerschaum-2.3.0}/meerschaum/api/_events.py +25 -1
- {meerschaum-2.2.6 → meerschaum-2.3.0}/meerschaum/api/_oauth2.py +2 -0
- {meerschaum-2.2.6 → meerschaum-2.3.0}/meerschaum/api/_websockets.py +2 -2
- {meerschaum-2.2.6 → meerschaum-2.3.0}/meerschaum/api/dash/callbacks/jobs.py +36 -44
- {meerschaum-2.2.6 → meerschaum-2.3.0}/meerschaum/api/dash/jobs.py +89 -78
- {meerschaum-2.2.6 → meerschaum-2.3.0}/meerschaum/api/routes/__init__.py +1 -0
- meerschaum-2.3.0/meerschaum/api/routes/_actions.py +202 -0
- meerschaum-2.3.0/meerschaum/api/routes/_jobs.py +407 -0
- {meerschaum-2.2.6 → meerschaum-2.3.0}/meerschaum/api/routes/_pipes.py +25 -25
- {meerschaum-2.2.6 → meerschaum-2.3.0}/meerschaum/config/_default.py +1 -0
- {meerschaum-2.2.6 → meerschaum-2.3.0}/meerschaum/config/_formatting.py +1 -0
- {meerschaum-2.2.6 → meerschaum-2.3.0}/meerschaum/config/_jobs.py +1 -1
- {meerschaum-2.2.6 → meerschaum-2.3.0}/meerschaum/config/_paths.py +11 -0
- meerschaum-2.3.0/meerschaum/config/_shell.py +149 -0
- {meerschaum-2.2.6 → meerschaum-2.3.0}/meerschaum/config/_version.py +1 -1
- {meerschaum-2.2.6 → meerschaum-2.3.0}/meerschaum/config/static/__init__.py +18 -0
- {meerschaum-2.2.6 → meerschaum-2.3.0}/meerschaum/connectors/Connector.py +13 -7
- {meerschaum-2.2.6 → meerschaum-2.3.0}/meerschaum/connectors/__init__.py +28 -15
- {meerschaum-2.2.6 → meerschaum-2.3.0}/meerschaum/connectors/api/APIConnector.py +27 -1
- {meerschaum-2.2.6 → meerschaum-2.3.0}/meerschaum/connectors/api/_actions.py +71 -6
- meerschaum-2.3.0/meerschaum/connectors/api/_jobs.py +368 -0
- {meerschaum-2.2.6 → meerschaum-2.3.0}/meerschaum/connectors/api/_misc.py +1 -1
- {meerschaum-2.2.6 → meerschaum-2.3.0}/meerschaum/connectors/api/_pipes.py +85 -84
- {meerschaum-2.2.6 → meerschaum-2.3.0}/meerschaum/connectors/api/_request.py +13 -9
- {meerschaum-2.2.6 → meerschaum-2.3.0}/meerschaum/connectors/parse.py +27 -15
- {meerschaum-2.2.6 → meerschaum-2.3.0}/meerschaum/core/Pipe/_bootstrap.py +16 -8
- {meerschaum-2.2.6 → meerschaum-2.3.0}/meerschaum/core/Pipe/_sync.py +3 -0
- meerschaum-2.3.0/meerschaum/jobs/_Executor.py +69 -0
- meerschaum-2.3.0/meerschaum/jobs/_Job.py +899 -0
- meerschaum-2.3.0/meerschaum/jobs/__init__.py +396 -0
- meerschaum-2.3.0/meerschaum/jobs/systemd.py +694 -0
- {meerschaum-2.2.6 → meerschaum-2.3.0}/meerschaum/plugins/__init__.py +97 -12
- {meerschaum-2.2.6 → meerschaum-2.3.0}/meerschaum/utils/daemon/Daemon.py +352 -147
- {meerschaum-2.2.6 → meerschaum-2.3.0}/meerschaum/utils/daemon/FileDescriptorInterceptor.py +19 -10
- {meerschaum-2.2.6 → meerschaum-2.3.0}/meerschaum/utils/daemon/RotatingFile.py +22 -8
- meerschaum-2.3.0/meerschaum/utils/daemon/StdinFile.py +121 -0
- {meerschaum-2.2.6 → meerschaum-2.3.0}/meerschaum/utils/daemon/__init__.py +42 -27
- {meerschaum-2.2.6 → meerschaum-2.3.0}/meerschaum/utils/daemon/_names.py +15 -13
- {meerschaum-2.2.6 → meerschaum-2.3.0}/meerschaum/utils/formatting/__init__.py +83 -37
- meerschaum-2.3.0/meerschaum/utils/formatting/_jobs.py +200 -0
- {meerschaum-2.2.6 → meerschaum-2.3.0}/meerschaum/utils/formatting/_shell.py +6 -0
- {meerschaum-2.2.6 → meerschaum-2.3.0}/meerschaum/utils/misc.py +41 -22
- {meerschaum-2.2.6 → meerschaum-2.3.0}/meerschaum/utils/packages/__init__.py +21 -15
- {meerschaum-2.2.6 → meerschaum-2.3.0}/meerschaum/utils/packages/_packages.py +9 -6
- {meerschaum-2.2.6 → meerschaum-2.3.0}/meerschaum/utils/process.py +9 -9
- {meerschaum-2.2.6 → meerschaum-2.3.0}/meerschaum/utils/prompt.py +20 -7
- {meerschaum-2.2.6 → meerschaum-2.3.0}/meerschaum/utils/schedule.py +21 -15
- {meerschaum-2.2.6 → meerschaum-2.3.0}/meerschaum/utils/venv/__init__.py +2 -2
- {meerschaum-2.2.6 → meerschaum-2.3.0/meerschaum.egg-info}/PKG-INFO +22 -25
- {meerschaum-2.2.6 → meerschaum-2.3.0}/meerschaum.egg-info/SOURCES.txt +13 -0
- {meerschaum-2.2.6 → meerschaum-2.3.0}/meerschaum.egg-info/requires.txt +22 -24
- meerschaum-2.3.0/tests/test_actions.py +7 -0
- meerschaum-2.3.0/tests/test_arguments.py +112 -0
- meerschaum-2.3.0/tests/test_jobs.py +39 -0
- meerschaum-2.2.6/meerschaum/_internal/entry.py +0 -171
- meerschaum-2.2.6/meerschaum/api/routes/_actions.py +0 -71
- meerschaum-2.2.6/meerschaum/config/_shell.py +0 -132
- meerschaum-2.2.6/meerschaum/utils/formatting/_jobs.py +0 -109
- {meerschaum-2.2.6 → meerschaum-2.3.0}/LICENSE +0 -0
- {meerschaum-2.2.6 → meerschaum-2.3.0}/NOTICE +0 -0
- {meerschaum-2.2.6 → meerschaum-2.3.0}/README.md +0 -0
- {meerschaum-2.2.6 → meerschaum-2.3.0}/meerschaum/_internal/__init__.py +0 -0
- {meerschaum-2.2.6 → meerschaum-2.3.0}/meerschaum/_internal/docs/__init__.py +0 -0
- {meerschaum-2.2.6 → meerschaum-2.3.0}/meerschaum/_internal/gui/__init__.py +0 -0
- {meerschaum-2.2.6 → meerschaum-2.3.0}/meerschaum/_internal/gui/app/__init__.py +0 -0
- {meerschaum-2.2.6 → meerschaum-2.3.0}/meerschaum/_internal/gui/app/_windows.py +0 -0
- {meerschaum-2.2.6 → meerschaum-2.3.0}/meerschaum/_internal/gui/app/actions.py +0 -0
- {meerschaum-2.2.6 → meerschaum-2.3.0}/meerschaum/_internal/gui/app/pipes.py +0 -0
- {meerschaum-2.2.6 → meerschaum-2.3.0}/meerschaum/_internal/shell/ShellCompleter.py +0 -0
- {meerschaum-2.2.6 → meerschaum-2.3.0}/meerschaum/_internal/shell/ValidAutoSuggest.py +0 -0
- {meerschaum-2.2.6 → meerschaum-2.3.0}/meerschaum/_internal/shell/__init__.py +0 -0
- {meerschaum-2.2.6 → meerschaum-2.3.0}/meerschaum/_internal/shell/resources/__init__.py +0 -0
- {meerschaum-2.2.6 → meerschaum-2.3.0}/meerschaum/_internal/term/TermPageHandler.py +0 -0
- {meerschaum-2.2.6 → meerschaum-2.3.0}/meerschaum/_internal/term/__init__.py +0 -0
- {meerschaum-2.2.6 → meerschaum-2.3.0}/meerschaum/_internal/term/tools.py +0 -0
- {meerschaum-2.2.6 → meerschaum-2.3.0}/meerschaum/actions/bootstrap.py +0 -0
- {meerschaum-2.2.6 → meerschaum-2.3.0}/meerschaum/actions/clear.py +0 -0
- {meerschaum-2.2.6 → meerschaum-2.3.0}/meerschaum/actions/deduplicate.py +0 -0
- {meerschaum-2.2.6 → meerschaum-2.3.0}/meerschaum/actions/drop.py +0 -0
- {meerschaum-2.2.6 → meerschaum-2.3.0}/meerschaum/actions/login.py +0 -0
- {meerschaum-2.2.6 → meerschaum-2.3.0}/meerschaum/actions/os.py +0 -0
- {meerschaum-2.2.6 → meerschaum-2.3.0}/meerschaum/actions/python.py +0 -0
- {meerschaum-2.2.6 → meerschaum-2.3.0}/meerschaum/actions/reload.py +0 -0
- {meerschaum-2.2.6 → meerschaum-2.3.0}/meerschaum/actions/setup.py +0 -0
- {meerschaum-2.2.6 → meerschaum-2.3.0}/meerschaum/actions/sh.py +0 -0
- {meerschaum-2.2.6 → meerschaum-2.3.0}/meerschaum/actions/sql.py +0 -0
- {meerschaum-2.2.6 → meerschaum-2.3.0}/meerschaum/actions/stack.py +0 -0
- {meerschaum-2.2.6 → meerschaum-2.3.0}/meerschaum/actions/tag.py +0 -0
- {meerschaum-2.2.6 → meerschaum-2.3.0}/meerschaum/actions/uninstall.py +0 -0
- {meerschaum-2.2.6 → meerschaum-2.3.0}/meerschaum/actions/verify.py +0 -0
- {meerschaum-2.2.6 → meerschaum-2.3.0}/meerschaum/api/__init__.py +0 -0
- {meerschaum-2.2.6 → meerschaum-2.3.0}/meerschaum/api/_chain.py +0 -0
- {meerschaum-2.2.6 → meerschaum-2.3.0}/meerschaum/api/dash/__init__.py +0 -0
- {meerschaum-2.2.6 → meerschaum-2.3.0}/meerschaum/api/dash/actions.py +0 -0
- {meerschaum-2.2.6 → meerschaum-2.3.0}/meerschaum/api/dash/assets/__init__.py +0 -0
- {meerschaum-2.2.6 → meerschaum-2.3.0}/meerschaum/api/dash/assets/ansi_up.js +0 -0
- {meerschaum-2.2.6 → meerschaum-2.3.0}/meerschaum/api/dash/assets/banner_1920x320.png +0 -0
- {meerschaum-2.2.6 → meerschaum-2.3.0}/meerschaum/api/dash/assets/favicon.ico +0 -0
- {meerschaum-2.2.6 → meerschaum-2.3.0}/meerschaum/api/dash/assets/logo_48x48.png +0 -0
- {meerschaum-2.2.6 → meerschaum-2.3.0}/meerschaum/api/dash/assets/logo_500x500.png +0 -0
- {meerschaum-2.2.6 → meerschaum-2.3.0}/meerschaum/api/dash/callbacks/__init__.py +0 -0
- {meerschaum-2.2.6 → meerschaum-2.3.0}/meerschaum/api/dash/callbacks/custom.py +0 -0
- {meerschaum-2.2.6 → meerschaum-2.3.0}/meerschaum/api/dash/callbacks/dashboard.py +0 -0
- {meerschaum-2.2.6 → meerschaum-2.3.0}/meerschaum/api/dash/callbacks/login.py +0 -0
- {meerschaum-2.2.6 → meerschaum-2.3.0}/meerschaum/api/dash/callbacks/plugins.py +0 -0
- {meerschaum-2.2.6 → meerschaum-2.3.0}/meerschaum/api/dash/callbacks/register.py +0 -0
- {meerschaum-2.2.6 → meerschaum-2.3.0}/meerschaum/api/dash/components.py +0 -0
- {meerschaum-2.2.6 → meerschaum-2.3.0}/meerschaum/api/dash/connectors.py +0 -0
- {meerschaum-2.2.6 → meerschaum-2.3.0}/meerschaum/api/dash/graphs.py +0 -0
- {meerschaum-2.2.6 → meerschaum-2.3.0}/meerschaum/api/dash/keys.py +0 -0
- {meerschaum-2.2.6 → meerschaum-2.3.0}/meerschaum/api/dash/pages/__init__.py +0 -0
- {meerschaum-2.2.6 → meerschaum-2.3.0}/meerschaum/api/dash/pages/dashboard.py +0 -0
- {meerschaum-2.2.6 → meerschaum-2.3.0}/meerschaum/api/dash/pages/error.py +0 -0
- {meerschaum-2.2.6 → meerschaum-2.3.0}/meerschaum/api/dash/pages/login.py +0 -0
- {meerschaum-2.2.6 → meerschaum-2.3.0}/meerschaum/api/dash/pages/plugins.py +0 -0
- {meerschaum-2.2.6 → meerschaum-2.3.0}/meerschaum/api/dash/pages/register.py +0 -0
- {meerschaum-2.2.6 → meerschaum-2.3.0}/meerschaum/api/dash/pipes.py +0 -0
- {meerschaum-2.2.6 → meerschaum-2.3.0}/meerschaum/api/dash/plugins.py +0 -0
- {meerschaum-2.2.6 → meerschaum-2.3.0}/meerschaum/api/dash/sync.py +0 -0
- {meerschaum-2.2.6 → meerschaum-2.3.0}/meerschaum/api/dash/users.py +0 -0
- {meerschaum-2.2.6 → meerschaum-2.3.0}/meerschaum/api/dash/websockets.py +0 -0
- {meerschaum-2.2.6 → meerschaum-2.3.0}/meerschaum/api/dash/webterm.py +0 -0
- {meerschaum-2.2.6 → meerschaum-2.3.0}/meerschaum/api/models/__init__.py +0 -0
- {meerschaum-2.2.6 → meerschaum-2.3.0}/meerschaum/api/models/_interfaces.py +0 -0
- {meerschaum-2.2.6 → meerschaum-2.3.0}/meerschaum/api/models/_locations.py +0 -0
- {meerschaum-2.2.6 → meerschaum-2.3.0}/meerschaum/api/models/_metrics.py +0 -0
- {meerschaum-2.2.6 → meerschaum-2.3.0}/meerschaum/api/models/_pipes.py +0 -0
- {meerschaum-2.2.6 → meerschaum-2.3.0}/meerschaum/api/resources/__init__.py +0 -0
- {meerschaum-2.2.6 → meerschaum-2.3.0}/meerschaum/api/resources/static/__init__.py +0 -0
- {meerschaum-2.2.6 → meerschaum-2.3.0}/meerschaum/api/resources/static/css/__init__.py +0 -0
- {meerschaum-2.2.6 → meerschaum-2.3.0}/meerschaum/api/resources/static/css/bootstrap.min.css +0 -0
- {meerschaum-2.2.6 → meerschaum-2.3.0}/meerschaum/api/resources/static/css/dash.css +0 -0
- {meerschaum-2.2.6 → meerschaum-2.3.0}/meerschaum/api/resources/static/css/dbc_dark.css +0 -0
- {meerschaum-2.2.6 → meerschaum-2.3.0}/meerschaum/api/resources/static/css/styles.css +0 -0
- {meerschaum-2.2.6 → meerschaum-2.3.0}/meerschaum/api/resources/static/css/xterm.css +0 -0
- {meerschaum-2.2.6 → meerschaum-2.3.0}/meerschaum/api/resources/static/ico/__init__.py +0 -0
- {meerschaum-2.2.6 → meerschaum-2.3.0}/meerschaum/api/resources/static/ico/logo.ico +0 -0
- {meerschaum-2.2.6 → meerschaum-2.3.0}/meerschaum/api/resources/static/js/__init__.py +0 -0
- {meerschaum-2.2.6 → meerschaum-2.3.0}/meerschaum/api/resources/static/js/action_button.js +0 -0
- {meerschaum-2.2.6 → meerschaum-2.3.0}/meerschaum/api/resources/static/js/main.js +0 -0
- {meerschaum-2.2.6 → meerschaum-2.3.0}/meerschaum/api/resources/static/js/terminado.js +0 -0
- {meerschaum-2.2.6 → meerschaum-2.3.0}/meerschaum/api/resources/static/js/xterm.js +0 -0
- {meerschaum-2.2.6 → meerschaum-2.3.0}/meerschaum/api/resources/static/png/__init__.py +0 -0
- {meerschaum-2.2.6 → meerschaum-2.3.0}/meerschaum/api/resources/templates/__init__.py +0 -0
- {meerschaum-2.2.6 → meerschaum-2.3.0}/meerschaum/api/resources/templates/index.html +0 -0
- {meerschaum-2.2.6 → meerschaum-2.3.0}/meerschaum/api/resources/templates/old_index.html +0 -0
- {meerschaum-2.2.6 → meerschaum-2.3.0}/meerschaum/api/resources/templates/secret.html +0 -0
- {meerschaum-2.2.6 → meerschaum-2.3.0}/meerschaum/api/resources/templates/termpage.html +0 -0
- {meerschaum-2.2.6 → meerschaum-2.3.0}/meerschaum/api/routes/_connectors.py +0 -0
- {meerschaum-2.2.6 → meerschaum-2.3.0}/meerschaum/api/routes/_index.py +0 -0
- {meerschaum-2.2.6 → meerschaum-2.3.0}/meerschaum/api/routes/_login.py +0 -0
- {meerschaum-2.2.6 → meerschaum-2.3.0}/meerschaum/api/routes/_misc.py +0 -0
- {meerschaum-2.2.6 → meerschaum-2.3.0}/meerschaum/api/routes/_plugins.py +0 -0
- {meerschaum-2.2.6 → meerschaum-2.3.0}/meerschaum/api/routes/_users.py +0 -0
- {meerschaum-2.2.6 → meerschaum-2.3.0}/meerschaum/api/routes/_version.py +0 -0
- {meerschaum-2.2.6 → meerschaum-2.3.0}/meerschaum/api/routes/_webterm.py +0 -0
- {meerschaum-2.2.6 → meerschaum-2.3.0}/meerschaum/api/tables/__init__.py +0 -0
- {meerschaum-2.2.6 → meerschaum-2.3.0}/meerschaum/config/__init__.py +0 -0
- {meerschaum-2.2.6 → meerschaum-2.3.0}/meerschaum/config/_dash.py +0 -0
- {meerschaum-2.2.6 → meerschaum-2.3.0}/meerschaum/config/_edit.py +0 -0
- {meerschaum-2.2.6 → meerschaum-2.3.0}/meerschaum/config/_environment.py +0 -0
- {meerschaum-2.2.6 → meerschaum-2.3.0}/meerschaum/config/_patch.py +0 -0
- {meerschaum-2.2.6 → meerschaum-2.3.0}/meerschaum/config/_preprocess.py +0 -0
- {meerschaum-2.2.6 → meerschaum-2.3.0}/meerschaum/config/_read_config.py +0 -0
- {meerschaum-2.2.6 → meerschaum-2.3.0}/meerschaum/config/_sync.py +0 -0
- {meerschaum-2.2.6 → meerschaum-2.3.0}/meerschaum/config/paths.py +0 -0
- {meerschaum-2.2.6 → meerschaum-2.3.0}/meerschaum/config/resources/__init__.py +0 -0
- {meerschaum-2.2.6 → meerschaum-2.3.0}/meerschaum/config/stack/__init__.py +0 -0
- {meerschaum-2.2.6 → meerschaum-2.3.0}/meerschaum/config/stack/grafana/__init__.py +0 -0
- {meerschaum-2.2.6 → meerschaum-2.3.0}/meerschaum/config/stack/mosquitto/__init__.py +0 -0
- {meerschaum-2.2.6 → meerschaum-2.3.0}/meerschaum/config/stack/mosquitto/resources/__init__.py +0 -0
- {meerschaum-2.2.6 → meerschaum-2.3.0}/meerschaum/config/stack/resources/__init__.py +0 -0
- {meerschaum-2.2.6 → meerschaum-2.3.0}/meerschaum/connectors/api/__init__.py +0 -0
- {meerschaum-2.2.6 → meerschaum-2.3.0}/meerschaum/connectors/api/_fetch.py +0 -0
- {meerschaum-2.2.6 → meerschaum-2.3.0}/meerschaum/connectors/api/_login.py +0 -0
- {meerschaum-2.2.6 → meerschaum-2.3.0}/meerschaum/connectors/api/_plugins.py +0 -0
- {meerschaum-2.2.6 → meerschaum-2.3.0}/meerschaum/connectors/api/_uri.py +0 -0
- {meerschaum-2.2.6 → meerschaum-2.3.0}/meerschaum/connectors/api/_users.py +0 -0
- {meerschaum-2.2.6 → meerschaum-2.3.0}/meerschaum/connectors/plugin/PluginConnector.py +0 -0
- {meerschaum-2.2.6 → meerschaum-2.3.0}/meerschaum/connectors/plugin/__init__.py +0 -0
- {meerschaum-2.2.6 → meerschaum-2.3.0}/meerschaum/connectors/poll.py +0 -0
- {meerschaum-2.2.6 → meerschaum-2.3.0}/meerschaum/connectors/sql/SQLConnector.py +0 -0
- {meerschaum-2.2.6 → meerschaum-2.3.0}/meerschaum/connectors/sql/__init__.py +0 -0
- {meerschaum-2.2.6 → meerschaum-2.3.0}/meerschaum/connectors/sql/_cli.py +0 -0
- {meerschaum-2.2.6 → meerschaum-2.3.0}/meerschaum/connectors/sql/_create_engine.py +0 -0
- {meerschaum-2.2.6 → meerschaum-2.3.0}/meerschaum/connectors/sql/_fetch.py +0 -0
- {meerschaum-2.2.6 → meerschaum-2.3.0}/meerschaum/connectors/sql/_instance.py +0 -0
- {meerschaum-2.2.6 → meerschaum-2.3.0}/meerschaum/connectors/sql/_pipes.py +0 -0
- {meerschaum-2.2.6 → meerschaum-2.3.0}/meerschaum/connectors/sql/_plugins.py +0 -0
- {meerschaum-2.2.6 → meerschaum-2.3.0}/meerschaum/connectors/sql/_sql.py +0 -0
- {meerschaum-2.2.6 → meerschaum-2.3.0}/meerschaum/connectors/sql/_uri.py +0 -0
- {meerschaum-2.2.6 → meerschaum-2.3.0}/meerschaum/connectors/sql/_users.py +0 -0
- {meerschaum-2.2.6 → meerschaum-2.3.0}/meerschaum/connectors/sql/tables/__init__.py +0 -0
- {meerschaum-2.2.6 → meerschaum-2.3.0}/meerschaum/connectors/sql/tables/types.py +0 -0
- {meerschaum-2.2.6 → meerschaum-2.3.0}/meerschaum/connectors/sql/tools.py +0 -0
- {meerschaum-2.2.6 → meerschaum-2.3.0}/meerschaum/core/Pipe/__init__.py +0 -0
- {meerschaum-2.2.6 → meerschaum-2.3.0}/meerschaum/core/Pipe/_attributes.py +0 -0
- {meerschaum-2.2.6 → meerschaum-2.3.0}/meerschaum/core/Pipe/_clear.py +0 -0
- {meerschaum-2.2.6 → meerschaum-2.3.0}/meerschaum/core/Pipe/_data.py +0 -0
- {meerschaum-2.2.6 → meerschaum-2.3.0}/meerschaum/core/Pipe/_deduplicate.py +0 -0
- {meerschaum-2.2.6 → meerschaum-2.3.0}/meerschaum/core/Pipe/_delete.py +0 -0
- {meerschaum-2.2.6 → meerschaum-2.3.0}/meerschaum/core/Pipe/_drop.py +0 -0
- {meerschaum-2.2.6 → meerschaum-2.3.0}/meerschaum/core/Pipe/_dtypes.py +0 -0
- {meerschaum-2.2.6 → meerschaum-2.3.0}/meerschaum/core/Pipe/_edit.py +0 -0
- {meerschaum-2.2.6 → meerschaum-2.3.0}/meerschaum/core/Pipe/_fetch.py +0 -0
- {meerschaum-2.2.6 → meerschaum-2.3.0}/meerschaum/core/Pipe/_register.py +0 -0
- {meerschaum-2.2.6 → meerschaum-2.3.0}/meerschaum/core/Pipe/_show.py +0 -0
- {meerschaum-2.2.6 → meerschaum-2.3.0}/meerschaum/core/Pipe/_verify.py +0 -0
- {meerschaum-2.2.6 → meerschaum-2.3.0}/meerschaum/core/Plugin/__init__.py +0 -0
- {meerschaum-2.2.6 → meerschaum-2.3.0}/meerschaum/core/User/_User.py +0 -0
- {meerschaum-2.2.6 → meerschaum-2.3.0}/meerschaum/core/User/__init__.py +0 -0
- {meerschaum-2.2.6 → meerschaum-2.3.0}/meerschaum/core/__init__.py +0 -0
- {meerschaum-2.2.6 → meerschaum-2.3.0}/meerschaum/plugins/_Plugin.py +0 -0
- {meerschaum-2.2.6 → meerschaum-2.3.0}/meerschaum/plugins/bootstrap.py +0 -0
- {meerschaum-2.2.6 → meerschaum-2.3.0}/meerschaum/utils/__init__.py +0 -0
- {meerschaum-2.2.6 → meerschaum-2.3.0}/meerschaum/utils/_get_pipes.py +0 -0
- {meerschaum-2.2.6 → meerschaum-2.3.0}/meerschaum/utils/dataframe.py +0 -0
- {meerschaum-2.2.6 → meerschaum-2.3.0}/meerschaum/utils/debug.py +0 -0
- {meerschaum-2.2.6 → meerschaum-2.3.0}/meerschaum/utils/dtypes/__init__.py +0 -0
- {meerschaum-2.2.6 → meerschaum-2.3.0}/meerschaum/utils/dtypes/sql.py +0 -0
- {meerschaum-2.2.6 → meerschaum-2.3.0}/meerschaum/utils/formatting/_pipes.py +0 -0
- {meerschaum-2.2.6 → meerschaum-2.3.0}/meerschaum/utils/formatting/_pprint.py +0 -0
- {meerschaum-2.2.6 → meerschaum-2.3.0}/meerschaum/utils/interactive.py +0 -0
- {meerschaum-2.2.6 → meerschaum-2.3.0}/meerschaum/utils/networking.py +0 -0
- {meerschaum-2.2.6 → meerschaum-2.3.0}/meerschaum/utils/packages/lazy_loader.py +0 -0
- {meerschaum-2.2.6 → meerschaum-2.3.0}/meerschaum/utils/pool.py +0 -0
- {meerschaum-2.2.6 → meerschaum-2.3.0}/meerschaum/utils/sql.py +0 -0
- {meerschaum-2.2.6 → meerschaum-2.3.0}/meerschaum/utils/threading.py +0 -0
- {meerschaum-2.2.6 → meerschaum-2.3.0}/meerschaum/utils/typing.py +0 -0
- {meerschaum-2.2.6 → meerschaum-2.3.0}/meerschaum/utils/venv/_Venv.py +0 -0
- {meerschaum-2.2.6 → meerschaum-2.3.0}/meerschaum/utils/warnings.py +0 -0
- {meerschaum-2.2.6 → meerschaum-2.3.0}/meerschaum/utils/yaml.py +0 -0
- {meerschaum-2.2.6 → meerschaum-2.3.0}/meerschaum.egg-info/dependency_links.txt +0 -0
- {meerschaum-2.2.6 → meerschaum-2.3.0}/meerschaum.egg-info/entry_points.txt +0 -0
- {meerschaum-2.2.6 → meerschaum-2.3.0}/meerschaum.egg-info/top_level.txt +0 -0
- {meerschaum-2.2.6 → meerschaum-2.3.0}/meerschaum.egg-info/zip-safe +0 -0
- {meerschaum-2.2.6 → meerschaum-2.3.0}/setup.cfg +0 -0
- {meerschaum-2.2.6 → meerschaum-2.3.0}/setup.py +0 -0
- {meerschaum-2.2.6 → meerschaum-2.3.0}/tests/test_deduplicate.py +0 -0
- {meerschaum-2.2.6 → meerschaum-2.3.0}/tests/test_pipes_dtypes.py +0 -0
- {meerschaum-2.2.6 → meerschaum-2.3.0}/tests/test_sql.py +0 -0
- {meerschaum-2.2.6 → meerschaum-2.3.0}/tests/test_sync.py +0 -0
- {meerschaum-2.2.6 → meerschaum-2.3.0}/tests/test_users.py +0 -0
- {meerschaum-2.2.6 → meerschaum-2.3.0}/tests/test_verify.py +0 -0
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: meerschaum
|
3
|
-
Version: 2.
|
3
|
+
Version: 2.3.0
|
4
4
|
Summary: Sync Time-Series Pipes with Meerschaum
|
5
5
|
Home-page: https://meerschaum.io
|
6
6
|
Author: Bennett Meares
|
@@ -59,17 +59,18 @@ Requires-Dist: aiofiles>=0.6.0; extra == "core"
|
|
59
59
|
Requires-Dist: packaging>=21.3.0; extra == "core"
|
60
60
|
Requires-Dist: prompt-toolkit>=3.0.39; extra == "core"
|
61
61
|
Requires-Dist: more-itertools>=8.7.0; extra == "core"
|
62
|
-
Requires-Dist:
|
63
|
-
Requires-Dist: fasteners>=0.18.0; extra == "core"
|
64
|
-
Requires-Dist: psutil>=5.8.0; extra == "core"
|
65
|
-
Requires-Dist: watchfiles>=0.21.0; extra == "core"
|
66
|
-
Requires-Dist: dill>=0.3.3; extra == "core"
|
62
|
+
Requires-Dist: fasteners>=0.19.0; extra == "core"
|
67
63
|
Requires-Dist: virtualenv>=20.1.0; extra == "core"
|
68
64
|
Requires-Dist: APScheduler>=4.0.0a5; extra == "core"
|
69
65
|
Requires-Dist: uv>=0.2.11; extra == "core"
|
66
|
+
Provides-Extra: jobs
|
67
|
+
Requires-Dist: dill>=0.3.3; extra == "jobs"
|
68
|
+
Requires-Dist: python-daemon>=0.2.3; extra == "jobs"
|
69
|
+
Requires-Dist: watchfiles>=0.21.0; extra == "jobs"
|
70
|
+
Requires-Dist: psutil>=5.8.0; extra == "jobs"
|
70
71
|
Provides-Extra: drivers
|
71
72
|
Requires-Dist: cryptography>=38.0.1; extra == "drivers"
|
72
|
-
Requires-Dist: psycopg[binary]>=3.1
|
73
|
+
Requires-Dist: psycopg[binary]>=3.2.1; extra == "drivers"
|
73
74
|
Requires-Dist: PyMySQL>=0.9.0; extra == "drivers"
|
74
75
|
Requires-Dist: aiomysql>=0.0.21; extra == "drivers"
|
75
76
|
Requires-Dist: sqlalchemy-cockroachdb>=2.0.0; extra == "drivers"
|
@@ -131,7 +132,7 @@ Requires-Dist: databases>=0.4.0; extra == "sql"
|
|
131
132
|
Requires-Dist: aiosqlite>=0.16.0; extra == "sql"
|
132
133
|
Requires-Dist: asyncpg>=0.21.0; extra == "sql"
|
133
134
|
Requires-Dist: cryptography>=38.0.1; extra == "sql"
|
134
|
-
Requires-Dist: psycopg[binary]>=3.1
|
135
|
+
Requires-Dist: psycopg[binary]>=3.2.1; extra == "sql"
|
135
136
|
Requires-Dist: PyMySQL>=0.9.0; extra == "sql"
|
136
137
|
Requires-Dist: aiomysql>=0.0.21; extra == "sql"
|
137
138
|
Requires-Dist: sqlalchemy-cockroachdb>=2.0.0; extra == "sql"
|
@@ -153,11 +154,7 @@ Requires-Dist: aiofiles>=0.6.0; extra == "sql"
|
|
153
154
|
Requires-Dist: packaging>=21.3.0; extra == "sql"
|
154
155
|
Requires-Dist: prompt-toolkit>=3.0.39; extra == "sql"
|
155
156
|
Requires-Dist: more-itertools>=8.7.0; extra == "sql"
|
156
|
-
Requires-Dist:
|
157
|
-
Requires-Dist: fasteners>=0.18.0; extra == "sql"
|
158
|
-
Requires-Dist: psutil>=5.8.0; extra == "sql"
|
159
|
-
Requires-Dist: watchfiles>=0.21.0; extra == "sql"
|
160
|
-
Requires-Dist: dill>=0.3.3; extra == "sql"
|
157
|
+
Requires-Dist: fasteners>=0.19.0; extra == "sql"
|
161
158
|
Requires-Dist: virtualenv>=20.1.0; extra == "sql"
|
162
159
|
Requires-Dist: APScheduler>=4.0.0a5; extra == "sql"
|
163
160
|
Requires-Dist: uv>=0.2.11; extra == "sql"
|
@@ -190,7 +187,7 @@ Requires-Dist: databases>=0.4.0; extra == "api"
|
|
190
187
|
Requires-Dist: aiosqlite>=0.16.0; extra == "api"
|
191
188
|
Requires-Dist: asyncpg>=0.21.0; extra == "api"
|
192
189
|
Requires-Dist: cryptography>=38.0.1; extra == "api"
|
193
|
-
Requires-Dist: psycopg[binary]>=3.1
|
190
|
+
Requires-Dist: psycopg[binary]>=3.2.1; extra == "api"
|
194
191
|
Requires-Dist: PyMySQL>=0.9.0; extra == "api"
|
195
192
|
Requires-Dist: aiomysql>=0.0.21; extra == "api"
|
196
193
|
Requires-Dist: sqlalchemy-cockroachdb>=2.0.0; extra == "api"
|
@@ -212,11 +209,7 @@ Requires-Dist: aiofiles>=0.6.0; extra == "api"
|
|
212
209
|
Requires-Dist: packaging>=21.3.0; extra == "api"
|
213
210
|
Requires-Dist: prompt-toolkit>=3.0.39; extra == "api"
|
214
211
|
Requires-Dist: more-itertools>=8.7.0; extra == "api"
|
215
|
-
Requires-Dist:
|
216
|
-
Requires-Dist: fasteners>=0.18.0; extra == "api"
|
217
|
-
Requires-Dist: psutil>=5.8.0; extra == "api"
|
218
|
-
Requires-Dist: watchfiles>=0.21.0; extra == "api"
|
219
|
-
Requires-Dist: dill>=0.3.3; extra == "api"
|
212
|
+
Requires-Dist: fasteners>=0.19.0; extra == "api"
|
220
213
|
Requires-Dist: virtualenv>=20.1.0; extra == "api"
|
221
214
|
Requires-Dist: APScheduler>=4.0.0a5; extra == "api"
|
222
215
|
Requires-Dist: uv>=0.2.11; extra == "api"
|
@@ -236,6 +229,10 @@ Requires-Dist: dash-extensions>=1.0.4; extra == "api"
|
|
236
229
|
Requires-Dist: dash-daq>=0.5.0; extra == "api"
|
237
230
|
Requires-Dist: terminado>=0.12.1; extra == "api"
|
238
231
|
Requires-Dist: tornado>=6.1.0; extra == "api"
|
232
|
+
Requires-Dist: dill>=0.3.3; extra == "api"
|
233
|
+
Requires-Dist: python-daemon>=0.2.3; extra == "api"
|
234
|
+
Requires-Dist: watchfiles>=0.21.0; extra == "api"
|
235
|
+
Requires-Dist: psutil>=5.8.0; extra == "api"
|
239
236
|
Provides-Extra: full
|
240
237
|
Requires-Dist: pprintpp>=0.4.0; extra == "full"
|
241
238
|
Requires-Dist: asciitree>=0.3.3; extra == "full"
|
@@ -261,16 +258,16 @@ Requires-Dist: aiofiles>=0.6.0; extra == "full"
|
|
261
258
|
Requires-Dist: packaging>=21.3.0; extra == "full"
|
262
259
|
Requires-Dist: prompt-toolkit>=3.0.39; extra == "full"
|
263
260
|
Requires-Dist: more-itertools>=8.7.0; extra == "full"
|
264
|
-
Requires-Dist:
|
265
|
-
Requires-Dist: fasteners>=0.18.0; extra == "full"
|
266
|
-
Requires-Dist: psutil>=5.8.0; extra == "full"
|
267
|
-
Requires-Dist: watchfiles>=0.21.0; extra == "full"
|
268
|
-
Requires-Dist: dill>=0.3.3; extra == "full"
|
261
|
+
Requires-Dist: fasteners>=0.19.0; extra == "full"
|
269
262
|
Requires-Dist: virtualenv>=20.1.0; extra == "full"
|
270
263
|
Requires-Dist: APScheduler>=4.0.0a5; extra == "full"
|
271
264
|
Requires-Dist: uv>=0.2.11; extra == "full"
|
265
|
+
Requires-Dist: dill>=0.3.3; extra == "full"
|
266
|
+
Requires-Dist: python-daemon>=0.2.3; extra == "full"
|
267
|
+
Requires-Dist: watchfiles>=0.21.0; extra == "full"
|
268
|
+
Requires-Dist: psutil>=5.8.0; extra == "full"
|
272
269
|
Requires-Dist: cryptography>=38.0.1; extra == "full"
|
273
|
-
Requires-Dist: psycopg[binary]>=3.1
|
270
|
+
Requires-Dist: psycopg[binary]>=3.2.1; extra == "full"
|
274
271
|
Requires-Dist: PyMySQL>=0.9.0; extra == "full"
|
275
272
|
Requires-Dist: aiomysql>=0.0.21; extra == "full"
|
276
273
|
Requires-Dist: sqlalchemy-cockroachdb>=2.0.0; extra == "full"
|
@@ -20,15 +20,17 @@ limitations under the License.
|
|
20
20
|
|
21
21
|
import atexit
|
22
22
|
from meerschaum.utils.typing import SuccessTuple
|
23
|
+
from meerschaum.utils.packages import attempt_import
|
23
24
|
from meerschaum.core.Pipe import Pipe
|
24
25
|
from meerschaum.plugins import Plugin
|
25
26
|
from meerschaum.utils.venv import Venv
|
27
|
+
from meerschaum.jobs import Job, make_executor
|
26
28
|
from meerschaum.connectors import get_connector, Connector, make_connector
|
27
29
|
from meerschaum.utils import get_pipes
|
28
30
|
from meerschaum.utils.formatting import pprint
|
29
31
|
from meerschaum._internal.docs import index as __doc__
|
30
32
|
from meerschaum.config import __version__, get_config
|
31
|
-
from meerschaum.
|
33
|
+
from meerschaum._internal.entry import entry
|
32
34
|
from meerschaum.__main__ import _close_pools
|
33
35
|
|
34
36
|
atexit.register(_close_pools)
|
@@ -42,14 +44,17 @@ __all__ = (
|
|
42
44
|
"Plugin",
|
43
45
|
"Venv",
|
44
46
|
"Plugin",
|
47
|
+
"Job",
|
45
48
|
"pprint",
|
46
49
|
"attempt_import",
|
47
50
|
"actions",
|
48
51
|
"config",
|
49
52
|
"connectors",
|
53
|
+
"jobs",
|
50
54
|
"plugins",
|
51
55
|
"utils",
|
52
56
|
"SuccessTuple",
|
53
57
|
"Connector",
|
54
58
|
"make_connector",
|
59
|
+
"entry",
|
55
60
|
)
|
@@ -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:])
|
@@ -39,11 +45,6 @@ def main(sysargs: list = None) -> None:
|
|
39
45
|
parse_version(sysargs)
|
40
46
|
return _exit(old_cwd=old_cwd)
|
41
47
|
|
42
|
-
if ('-d' in sysargs or '--daemon' in sysargs) and ('stack' not in sysargs):
|
43
|
-
from meerschaum.utils.daemon import daemon_entry
|
44
|
-
daemon_entry(sysargs)
|
45
|
-
return _exit(old_cwd=old_cwd)
|
46
|
-
|
47
48
|
from meerschaum._internal.entry import entry, get_shell
|
48
49
|
|
49
50
|
### Try to launch a shell if --shell is provided.
|
@@ -57,8 +58,7 @@ def main(sysargs: list = None) -> None:
|
|
57
58
|
return_tuple = entry(sysargs)
|
58
59
|
rc = 0
|
59
60
|
if isinstance(return_tuple, tuple) and '--nopretty' not in sysargs:
|
60
|
-
|
61
|
-
print_tuple(return_tuple, upper_padding=1)
|
61
|
+
_print_tuple(return_tuple, upper_padding=1)
|
62
62
|
rc = 0 if (return_tuple[0] is True) else 1
|
63
63
|
|
64
64
|
return _exit(rc, old_cwd=old_cwd)
|
@@ -8,7 +8,7 @@ This package includes argument parsing utilities.
|
|
8
8
|
|
9
9
|
from meerschaum._internal.arguments._parse_arguments import (
|
10
10
|
parse_arguments, parse_line, remove_leading_action,
|
11
|
-
parse_dict_to_sysargs,
|
11
|
+
parse_dict_to_sysargs, split_chained_sysargs, split_pipeline_sysargs,
|
12
12
|
)
|
13
13
|
from meerschaum._internal.arguments._parser import parser
|
14
14
|
from meerschaum.plugins import add_plugin_argument
|
@@ -10,7 +10,7 @@ This module contains functions for parsing arguments
|
|
10
10
|
from __future__ import annotations
|
11
11
|
import json
|
12
12
|
from datetime import timedelta
|
13
|
-
from meerschaum.utils.typing import List, Dict, Any, Optional, Callable, SuccessTuple
|
13
|
+
from meerschaum.utils.typing import List, Dict, Any, Optional, Callable, SuccessTuple, Tuple
|
14
14
|
from meerschaum.utils.threading import RLock
|
15
15
|
|
16
16
|
_locks = {
|
@@ -18,6 +18,59 @@ _locks = {
|
|
18
18
|
}
|
19
19
|
_loaded_plugins_args: bool = False
|
20
20
|
|
21
|
+
def split_pipeline_sysargs(sysargs: List[str]) -> Tuple[List[str], List[str]]:
|
22
|
+
"""
|
23
|
+
Split `sysargs` into the main pipeline and the flags following the pipeline separator (`:`).
|
24
|
+
"""
|
25
|
+
from meerschaum.config.static import STATIC_CONFIG
|
26
|
+
pipeline_key = STATIC_CONFIG['system']['arguments']['pipeline_key']
|
27
|
+
if pipeline_key not in sysargs:
|
28
|
+
return sysargs, []
|
29
|
+
|
30
|
+
### Find the index of the last occurrence of `:`.
|
31
|
+
pipeline_ix = len(sysargs) - 1 - sysargs[::-1].index(pipeline_key)
|
32
|
+
sysargs_after_pipeline_key = sysargs[pipeline_ix+1:]
|
33
|
+
sysargs = [arg for arg in sysargs[:pipeline_ix] if arg != pipeline_key]
|
34
|
+
return sysargs, sysargs_after_pipeline_key
|
35
|
+
|
36
|
+
|
37
|
+
def split_chained_sysargs(sysargs: List[str]) -> List[List[str]]:
|
38
|
+
"""
|
39
|
+
Split a `sysargs` list containing "and" keys (`+`)
|
40
|
+
into a list of individual `sysargs`.
|
41
|
+
"""
|
42
|
+
from meerschaum.config.static import STATIC_CONFIG
|
43
|
+
and_key = STATIC_CONFIG['system']['arguments']['and_key']
|
44
|
+
|
45
|
+
if not sysargs or and_key not in sysargs:
|
46
|
+
return [sysargs]
|
47
|
+
|
48
|
+
### Coalesce and consecutive joiners into one.
|
49
|
+
coalesce_args = []
|
50
|
+
previous_arg = None
|
51
|
+
for arg in [_arg for _arg in sysargs]:
|
52
|
+
if arg == and_key and previous_arg == and_key:
|
53
|
+
continue
|
54
|
+
coalesce_args.append(arg)
|
55
|
+
previous_arg = arg
|
56
|
+
|
57
|
+
### Remove any joiners from the ends.
|
58
|
+
if coalesce_args[0] == and_key:
|
59
|
+
coalesce_args = coalesce_args[1:]
|
60
|
+
if coalesce_args[-1] == and_key:
|
61
|
+
coalesce_args = coalesce_args[:-1]
|
62
|
+
|
63
|
+
chained_sysargs = []
|
64
|
+
current_sysargs = []
|
65
|
+
for arg in coalesce_args:
|
66
|
+
if arg != and_key:
|
67
|
+
current_sysargs.append(arg)
|
68
|
+
else:
|
69
|
+
chained_sysargs.append(current_sysargs)
|
70
|
+
current_sysargs = []
|
71
|
+
chained_sysargs.append(current_sysargs)
|
72
|
+
return chained_sysargs
|
73
|
+
|
21
74
|
|
22
75
|
def parse_arguments(sysargs: List[str]) -> Dict[str, Any]:
|
23
76
|
"""
|
@@ -206,9 +259,14 @@ def parse_dict_to_sysargs(
|
|
206
259
|
args_dict: Dict[str, Any]
|
207
260
|
) -> List[str]:
|
208
261
|
"""Revert an arguments dictionary back to a command line list."""
|
262
|
+
import shlex
|
209
263
|
from meerschaum._internal.arguments._parser import get_arguments_triggers
|
210
|
-
|
211
|
-
|
264
|
+
from meerschaum.config.static import STATIC_CONFIG
|
265
|
+
from meerschaum.utils.warnings import warn
|
266
|
+
|
267
|
+
action = args_dict.get('action', None)
|
268
|
+
sysargs: List[str] = []
|
269
|
+
sysargs.extend(action or [])
|
212
270
|
allow_none_args = {'location_keys'}
|
213
271
|
|
214
272
|
triggers = get_arguments_triggers()
|
@@ -216,6 +274,7 @@ def parse_dict_to_sysargs(
|
|
216
274
|
for a, t in triggers.items():
|
217
275
|
if a == 'action' or a not in args_dict:
|
218
276
|
continue
|
277
|
+
|
219
278
|
### Add boolean flags
|
220
279
|
if isinstance(args_dict[a], bool):
|
221
280
|
if args_dict[a] is True:
|
@@ -288,9 +347,6 @@ def remove_leading_action(
|
|
288
347
|
for a in action:
|
289
348
|
_action.append(a.replace('_', UNDERSCORE_STANDIN))
|
290
349
|
|
291
|
-
### e.g. 'show_pipes_baz'
|
292
|
-
action_str = '_'.join(_action)
|
293
|
-
|
294
350
|
### e.g. 'show_pipes'
|
295
351
|
action_name = action_function.__name__.lstrip('_')
|
296
352
|
|
@@ -300,6 +356,16 @@ def remove_leading_action(
|
|
300
356
|
### Strip away any leading prefices.
|
301
357
|
action_name = action_name[main_action_index:]
|
302
358
|
|
359
|
+
subaction_parts = action_name.replace(main_action_name, '').lstrip('_').split('_')
|
360
|
+
subaction_name = subaction_parts[0] if subaction_parts else None
|
361
|
+
|
362
|
+
### e.g. 'pipe' -> 'pipes'
|
363
|
+
if subaction_name and subaction_name.endswith('s') and not action[1].endswith('s'):
|
364
|
+
_action[1] += 's'
|
365
|
+
|
366
|
+
### e.g. 'show_pipes_baz'
|
367
|
+
action_str = '_'.join(_action)
|
368
|
+
|
303
369
|
if not action_str.replace(UNDERSCORE_STANDIN, '_').startswith(action_name):
|
304
370
|
warn(f"Unable to parse '{action_str}' for action '{action_name}'.")
|
305
371
|
return action
|
@@ -62,7 +62,24 @@ def parse_datetime(dt_str: str) -> Union[datetime, int, str]:
|
|
62
62
|
return dt
|
63
63
|
|
64
64
|
|
65
|
-
def
|
65
|
+
def parse_executor_keys(executor_keys_str: str) -> Union[str, None]:
|
66
|
+
"""
|
67
|
+
Ensure that only API keys are provided for executor_keys.
|
68
|
+
"""
|
69
|
+
if executor_keys_str in ('local', 'systemd'):
|
70
|
+
return executor_keys_str
|
71
|
+
|
72
|
+
if executor_keys_str.lower() == 'none':
|
73
|
+
return 'local'
|
74
|
+
|
75
|
+
if not executor_keys_str.startswith('api:'):
|
76
|
+
from meerschaum.utils.warnings import error
|
77
|
+
error(f"Invalid exectutor keys '{executor_keys_str}'.", stack=False)
|
78
|
+
|
79
|
+
return executor_keys_str
|
80
|
+
|
81
|
+
|
82
|
+
def parse_help(sysargs: Union[List[str], Dict[str, Any]]) -> None:
|
66
83
|
"""Parse the `--help` flag to determine which help message to print."""
|
67
84
|
from meerschaum._internal.arguments._parse_arguments import parse_arguments, parse_line
|
68
85
|
from meerschaum.actions import actions, get_subactions
|
@@ -135,6 +152,7 @@ _seen_plugin_args = {}
|
|
135
152
|
|
136
153
|
groups = {}
|
137
154
|
groups['actions'] = parser.add_argument_group(title='Actions options')
|
155
|
+
groups['jobs'] = parser.add_argument_group(title='Jobs options')
|
138
156
|
groups['pipes'] = parser.add_argument_group(title='Pipes options')
|
139
157
|
groups['sync'] = parser.add_argument_group(title='Sync options')
|
140
158
|
groups['api'] = parser.add_argument_group(title='API options')
|
@@ -166,18 +184,25 @@ groups['actions'].add_argument(
|
|
166
184
|
help="Automatically choose the defaults answers to questions. Does not result in data loss.",
|
167
185
|
)
|
168
186
|
groups['actions'].add_argument(
|
169
|
-
'-
|
170
|
-
help =
|
187
|
+
'-A', '--sub-args', nargs=argparse.REMAINDER,
|
188
|
+
help = (
|
189
|
+
"Provide a list of arguments for subprocesses. " +
|
190
|
+
"You can also type sub-arguments in [] instead." +
|
191
|
+
" E.g. `stack -A='--version'`, `ls [-lh]`, `echo -A these are sub-arguments`"
|
192
|
+
)
|
171
193
|
)
|
172
|
-
|
173
|
-
|
194
|
+
|
195
|
+
### Jobs options
|
196
|
+
groups['jobs'].add_argument(
|
197
|
+
'-d', '--daemon', action='store_true',
|
198
|
+
help = "Run an action as a background daemon to create a job."
|
174
199
|
)
|
175
|
-
groups['
|
200
|
+
groups['jobs'].add_argument(
|
176
201
|
'--name', '--job-name', type=parse_name, help=(
|
177
202
|
"Assign a name to a job. If no name is provided, a random name will be assigned."
|
178
203
|
),
|
179
204
|
)
|
180
|
-
groups['
|
205
|
+
groups['jobs'].add_argument(
|
181
206
|
'-s', '--schedule', '--cron', type=str,
|
182
207
|
help = (
|
183
208
|
"Continue executing the action according to a schedule (e.g. 'every 1 seconds'). \n"
|
@@ -185,15 +210,20 @@ groups['actions'].add_argument(
|
|
185
210
|
+ "https://red-engine.readthedocs.io/en/stable/condition_syntax/index.html"
|
186
211
|
)
|
187
212
|
)
|
188
|
-
groups['
|
189
|
-
'
|
190
|
-
help
|
191
|
-
|
192
|
-
|
193
|
-
|
194
|
-
|
213
|
+
groups['jobs'].add_argument(
|
214
|
+
'--restart', action='store_true',
|
215
|
+
help=("Restart a job if not stopped manually."),
|
216
|
+
)
|
217
|
+
groups['jobs'].add_argument(
|
218
|
+
'-e', '--executor-keys', type=parse_executor_keys,
|
219
|
+
help=(
|
220
|
+
"Execute jobs locally or remotely. "
|
221
|
+
"Supported values are 'local', 'systemd', and 'api:{label}'."
|
222
|
+
),
|
223
|
+
)
|
224
|
+
groups['jobs'].add_argument(
|
225
|
+
'--rm', action='store_true', help="Delete a job once it has finished executing."
|
195
226
|
)
|
196
|
-
|
197
227
|
### Pipes options
|
198
228
|
groups['pipes'].add_argument(
|
199
229
|
'-c', '-C', '--connector-keys', nargs='+',
|