meerschaum 2.4.0rc1__tar.gz → 2.4.1__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.4.0rc1/meerschaum.egg-info → meerschaum-2.4.1}/PKG-INFO +5 -1
- {meerschaum-2.4.0rc1 → meerschaum-2.4.1}/meerschaum/api/dash/callbacks/dashboard.py +7 -0
- {meerschaum-2.4.0rc1 → meerschaum-2.4.1}/meerschaum/api/dash/callbacks/pipes.py +19 -5
- {meerschaum-2.4.0rc1 → meerschaum-2.4.1}/meerschaum/api/dash/pipes.py +17 -2
- {meerschaum-2.4.0rc1 → meerschaum-2.4.1}/meerschaum/config/_version.py +1 -1
- {meerschaum-2.4.0rc1 → meerschaum-2.4.1}/meerschaum/connectors/sql/_pipes.py +8 -5
- {meerschaum-2.4.0rc1 → meerschaum-2.4.1}/meerschaum/core/Pipe/_data.py +17 -8
- {meerschaum-2.4.0rc1 → meerschaum-2.4.1}/meerschaum/core/Pipe/_sync.py +0 -2
- {meerschaum-2.4.0rc1 → meerschaum-2.4.1}/meerschaum/jobs/__init__.py +2 -1
- {meerschaum-2.4.0rc1 → meerschaum-2.4.1}/meerschaum/utils/packages/_packages.py +1 -0
- {meerschaum-2.4.0rc1 → meerschaum-2.4.1}/meerschaum/utils/schedule.py +1 -0
- {meerschaum-2.4.0rc1 → meerschaum-2.4.1/meerschaum.egg-info}/PKG-INFO +5 -1
- {meerschaum-2.4.0rc1 → meerschaum-2.4.1}/meerschaum.egg-info/SOURCES.txt +1 -0
- {meerschaum-2.4.0rc1 → meerschaum-2.4.1}/meerschaum.egg-info/requires.txt +4 -0
- meerschaum-2.4.1/tests/test_pipe_data.py +89 -0
- {meerschaum-2.4.0rc1 → meerschaum-2.4.1}/tests/test_pipes_dtypes.py +0 -1
- {meerschaum-2.4.0rc1 → meerschaum-2.4.1}/LICENSE +0 -0
- {meerschaum-2.4.0rc1 → meerschaum-2.4.1}/NOTICE +0 -0
- {meerschaum-2.4.0rc1 → meerschaum-2.4.1}/README.md +0 -0
- {meerschaum-2.4.0rc1 → meerschaum-2.4.1}/meerschaum/__init__.py +0 -0
- {meerschaum-2.4.0rc1 → meerschaum-2.4.1}/meerschaum/__main__.py +0 -0
- {meerschaum-2.4.0rc1 → meerschaum-2.4.1}/meerschaum/_internal/__init__.py +0 -0
- {meerschaum-2.4.0rc1 → meerschaum-2.4.1}/meerschaum/_internal/arguments/__init__.py +0 -0
- {meerschaum-2.4.0rc1 → meerschaum-2.4.1}/meerschaum/_internal/arguments/_parse_arguments.py +0 -0
- {meerschaum-2.4.0rc1 → meerschaum-2.4.1}/meerschaum/_internal/arguments/_parser.py +0 -0
- {meerschaum-2.4.0rc1 → meerschaum-2.4.1}/meerschaum/_internal/docs/__init__.py +0 -0
- {meerschaum-2.4.0rc1 → meerschaum-2.4.1}/meerschaum/_internal/docs/index.py +0 -0
- {meerschaum-2.4.0rc1 → meerschaum-2.4.1}/meerschaum/_internal/entry.py +0 -0
- {meerschaum-2.4.0rc1 → meerschaum-2.4.1}/meerschaum/_internal/gui/__init__.py +0 -0
- {meerschaum-2.4.0rc1 → meerschaum-2.4.1}/meerschaum/_internal/gui/app/__init__.py +0 -0
- {meerschaum-2.4.0rc1 → meerschaum-2.4.1}/meerschaum/_internal/gui/app/_windows.py +0 -0
- {meerschaum-2.4.0rc1 → meerschaum-2.4.1}/meerschaum/_internal/gui/app/actions.py +0 -0
- {meerschaum-2.4.0rc1 → meerschaum-2.4.1}/meerschaum/_internal/gui/app/pipes.py +0 -0
- {meerschaum-2.4.0rc1 → meerschaum-2.4.1}/meerschaum/_internal/shell/Shell.py +0 -0
- {meerschaum-2.4.0rc1 → meerschaum-2.4.1}/meerschaum/_internal/shell/ShellCompleter.py +0 -0
- {meerschaum-2.4.0rc1 → meerschaum-2.4.1}/meerschaum/_internal/shell/ValidAutoSuggest.py +0 -0
- {meerschaum-2.4.0rc1 → meerschaum-2.4.1}/meerschaum/_internal/shell/__init__.py +0 -0
- {meerschaum-2.4.0rc1 → meerschaum-2.4.1}/meerschaum/_internal/shell/resources/__init__.py +0 -0
- {meerschaum-2.4.0rc1 → meerschaum-2.4.1}/meerschaum/_internal/shell/updates.py +0 -0
- {meerschaum-2.4.0rc1 → meerschaum-2.4.1}/meerschaum/_internal/term/TermPageHandler.py +0 -0
- {meerschaum-2.4.0rc1 → meerschaum-2.4.1}/meerschaum/_internal/term/__init__.py +0 -0
- {meerschaum-2.4.0rc1 → meerschaum-2.4.1}/meerschaum/_internal/term/tools.py +0 -0
- {meerschaum-2.4.0rc1 → meerschaum-2.4.1}/meerschaum/actions/__init__.py +0 -0
- {meerschaum-2.4.0rc1 → meerschaum-2.4.1}/meerschaum/actions/api.py +0 -0
- {meerschaum-2.4.0rc1 → meerschaum-2.4.1}/meerschaum/actions/attach.py +0 -0
- {meerschaum-2.4.0rc1 → meerschaum-2.4.1}/meerschaum/actions/bootstrap.py +0 -0
- {meerschaum-2.4.0rc1 → meerschaum-2.4.1}/meerschaum/actions/clear.py +0 -0
- {meerschaum-2.4.0rc1 → meerschaum-2.4.1}/meerschaum/actions/copy.py +0 -0
- {meerschaum-2.4.0rc1 → meerschaum-2.4.1}/meerschaum/actions/deduplicate.py +0 -0
- {meerschaum-2.4.0rc1 → meerschaum-2.4.1}/meerschaum/actions/delete.py +0 -0
- {meerschaum-2.4.0rc1 → meerschaum-2.4.1}/meerschaum/actions/drop.py +0 -0
- {meerschaum-2.4.0rc1 → meerschaum-2.4.1}/meerschaum/actions/edit.py +0 -0
- {meerschaum-2.4.0rc1 → meerschaum-2.4.1}/meerschaum/actions/install.py +0 -0
- {meerschaum-2.4.0rc1 → meerschaum-2.4.1}/meerschaum/actions/login.py +0 -0
- {meerschaum-2.4.0rc1 → meerschaum-2.4.1}/meerschaum/actions/os.py +0 -0
- {meerschaum-2.4.0rc1 → meerschaum-2.4.1}/meerschaum/actions/pause.py +0 -0
- {meerschaum-2.4.0rc1 → meerschaum-2.4.1}/meerschaum/actions/python.py +0 -0
- {meerschaum-2.4.0rc1 → meerschaum-2.4.1}/meerschaum/actions/register.py +0 -0
- {meerschaum-2.4.0rc1 → meerschaum-2.4.1}/meerschaum/actions/reload.py +0 -0
- {meerschaum-2.4.0rc1 → meerschaum-2.4.1}/meerschaum/actions/restart.py +0 -0
- {meerschaum-2.4.0rc1 → meerschaum-2.4.1}/meerschaum/actions/setup.py +0 -0
- {meerschaum-2.4.0rc1 → meerschaum-2.4.1}/meerschaum/actions/sh.py +0 -0
- {meerschaum-2.4.0rc1 → meerschaum-2.4.1}/meerschaum/actions/show.py +0 -0
- {meerschaum-2.4.0rc1 → meerschaum-2.4.1}/meerschaum/actions/sql.py +0 -0
- {meerschaum-2.4.0rc1 → meerschaum-2.4.1}/meerschaum/actions/stack.py +0 -0
- {meerschaum-2.4.0rc1 → meerschaum-2.4.1}/meerschaum/actions/start.py +0 -0
- {meerschaum-2.4.0rc1 → meerschaum-2.4.1}/meerschaum/actions/stop.py +0 -0
- {meerschaum-2.4.0rc1 → meerschaum-2.4.1}/meerschaum/actions/sync.py +0 -0
- {meerschaum-2.4.0rc1 → meerschaum-2.4.1}/meerschaum/actions/tag.py +0 -0
- {meerschaum-2.4.0rc1 → meerschaum-2.4.1}/meerschaum/actions/uninstall.py +0 -0
- {meerschaum-2.4.0rc1 → meerschaum-2.4.1}/meerschaum/actions/upgrade.py +0 -0
- {meerschaum-2.4.0rc1 → meerschaum-2.4.1}/meerschaum/actions/verify.py +0 -0
- {meerschaum-2.4.0rc1 → meerschaum-2.4.1}/meerschaum/api/__init__.py +0 -0
- {meerschaum-2.4.0rc1 → meerschaum-2.4.1}/meerschaum/api/_chain.py +0 -0
- {meerschaum-2.4.0rc1 → meerschaum-2.4.1}/meerschaum/api/_events.py +0 -0
- {meerschaum-2.4.0rc1 → meerschaum-2.4.1}/meerschaum/api/_oauth2.py +0 -0
- {meerschaum-2.4.0rc1 → meerschaum-2.4.1}/meerschaum/api/_websockets.py +0 -0
- {meerschaum-2.4.0rc1 → meerschaum-2.4.1}/meerschaum/api/dash/__init__.py +0 -0
- {meerschaum-2.4.0rc1 → meerschaum-2.4.1}/meerschaum/api/dash/assets/__init__.py +0 -0
- {meerschaum-2.4.0rc1 → meerschaum-2.4.1}/meerschaum/api/dash/assets/ansi_up.js +0 -0
- {meerschaum-2.4.0rc1 → meerschaum-2.4.1}/meerschaum/api/dash/assets/banner_1920x320.png +0 -0
- {meerschaum-2.4.0rc1 → meerschaum-2.4.1}/meerschaum/api/dash/assets/favicon.ico +0 -0
- {meerschaum-2.4.0rc1 → meerschaum-2.4.1}/meerschaum/api/dash/assets/logo_48x48.png +0 -0
- {meerschaum-2.4.0rc1 → meerschaum-2.4.1}/meerschaum/api/dash/assets/logo_500x500.png +0 -0
- {meerschaum-2.4.0rc1 → meerschaum-2.4.1}/meerschaum/api/dash/callbacks/__init__.py +0 -0
- {meerschaum-2.4.0rc1 → meerschaum-2.4.1}/meerschaum/api/dash/callbacks/custom.py +0 -0
- {meerschaum-2.4.0rc1 → meerschaum-2.4.1}/meerschaum/api/dash/callbacks/jobs.py +0 -0
- {meerschaum-2.4.0rc1 → meerschaum-2.4.1}/meerschaum/api/dash/callbacks/login.py +0 -0
- {meerschaum-2.4.0rc1 → meerschaum-2.4.1}/meerschaum/api/dash/callbacks/plugins.py +0 -0
- {meerschaum-2.4.0rc1 → meerschaum-2.4.1}/meerschaum/api/dash/callbacks/register.py +0 -0
- {meerschaum-2.4.0rc1 → meerschaum-2.4.1}/meerschaum/api/dash/components.py +0 -0
- {meerschaum-2.4.0rc1 → meerschaum-2.4.1}/meerschaum/api/dash/connectors.py +0 -0
- {meerschaum-2.4.0rc1 → meerschaum-2.4.1}/meerschaum/api/dash/graphs.py +0 -0
- {meerschaum-2.4.0rc1 → meerschaum-2.4.1}/meerschaum/api/dash/jobs.py +0 -0
- {meerschaum-2.4.0rc1 → meerschaum-2.4.1}/meerschaum/api/dash/keys.py +0 -0
- {meerschaum-2.4.0rc1 → meerschaum-2.4.1}/meerschaum/api/dash/pages/__init__.py +0 -0
- {meerschaum-2.4.0rc1 → meerschaum-2.4.1}/meerschaum/api/dash/pages/dashboard.py +0 -0
- {meerschaum-2.4.0rc1 → meerschaum-2.4.1}/meerschaum/api/dash/pages/error.py +0 -0
- {meerschaum-2.4.0rc1 → meerschaum-2.4.1}/meerschaum/api/dash/pages/login.py +0 -0
- {meerschaum-2.4.0rc1 → meerschaum-2.4.1}/meerschaum/api/dash/pages/pipes.py +0 -0
- {meerschaum-2.4.0rc1 → meerschaum-2.4.1}/meerschaum/api/dash/pages/plugins.py +0 -0
- {meerschaum-2.4.0rc1 → meerschaum-2.4.1}/meerschaum/api/dash/pages/register.py +0 -0
- {meerschaum-2.4.0rc1 → meerschaum-2.4.1}/meerschaum/api/dash/plugins.py +0 -0
- {meerschaum-2.4.0rc1 → meerschaum-2.4.1}/meerschaum/api/dash/sessions.py +0 -0
- {meerschaum-2.4.0rc1 → meerschaum-2.4.1}/meerschaum/api/dash/sync.py +0 -0
- {meerschaum-2.4.0rc1 → meerschaum-2.4.1}/meerschaum/api/dash/users.py +0 -0
- {meerschaum-2.4.0rc1 → meerschaum-2.4.1}/meerschaum/api/dash/websockets.py +0 -0
- {meerschaum-2.4.0rc1 → meerschaum-2.4.1}/meerschaum/api/dash/webterm.py +0 -0
- {meerschaum-2.4.0rc1 → meerschaum-2.4.1}/meerschaum/api/models/__init__.py +0 -0
- {meerschaum-2.4.0rc1 → meerschaum-2.4.1}/meerschaum/api/models/_interfaces.py +0 -0
- {meerschaum-2.4.0rc1 → meerschaum-2.4.1}/meerschaum/api/models/_locations.py +0 -0
- {meerschaum-2.4.0rc1 → meerschaum-2.4.1}/meerschaum/api/models/_metrics.py +0 -0
- {meerschaum-2.4.0rc1 → meerschaum-2.4.1}/meerschaum/api/models/_pipes.py +0 -0
- {meerschaum-2.4.0rc1 → meerschaum-2.4.1}/meerschaum/api/resources/__init__.py +0 -0
- {meerschaum-2.4.0rc1 → meerschaum-2.4.1}/meerschaum/api/resources/static/__init__.py +0 -0
- {meerschaum-2.4.0rc1 → meerschaum-2.4.1}/meerschaum/api/resources/static/css/__init__.py +0 -0
- {meerschaum-2.4.0rc1 → meerschaum-2.4.1}/meerschaum/api/resources/static/css/bootstrap.min.css +0 -0
- {meerschaum-2.4.0rc1 → meerschaum-2.4.1}/meerschaum/api/resources/static/css/dash.css +0 -0
- {meerschaum-2.4.0rc1 → meerschaum-2.4.1}/meerschaum/api/resources/static/css/dbc_dark.css +0 -0
- {meerschaum-2.4.0rc1 → meerschaum-2.4.1}/meerschaum/api/resources/static/css/styles.css +0 -0
- {meerschaum-2.4.0rc1 → meerschaum-2.4.1}/meerschaum/api/resources/static/css/xterm.css +0 -0
- {meerschaum-2.4.0rc1 → meerschaum-2.4.1}/meerschaum/api/resources/static/ico/__init__.py +0 -0
- {meerschaum-2.4.0rc1 → meerschaum-2.4.1}/meerschaum/api/resources/static/ico/logo.ico +0 -0
- {meerschaum-2.4.0rc1 → meerschaum-2.4.1}/meerschaum/api/resources/static/js/__init__.py +0 -0
- {meerschaum-2.4.0rc1 → meerschaum-2.4.1}/meerschaum/api/resources/static/js/action_button.js +0 -0
- {meerschaum-2.4.0rc1 → meerschaum-2.4.1}/meerschaum/api/resources/static/js/main.js +0 -0
- {meerschaum-2.4.0rc1 → meerschaum-2.4.1}/meerschaum/api/resources/static/js/terminado.js +0 -0
- {meerschaum-2.4.0rc1 → meerschaum-2.4.1}/meerschaum/api/resources/static/js/xterm.js +0 -0
- {meerschaum-2.4.0rc1 → meerschaum-2.4.1}/meerschaum/api/resources/static/png/__init__.py +0 -0
- {meerschaum-2.4.0rc1 → meerschaum-2.4.1}/meerschaum/api/resources/templates/__init__.py +0 -0
- {meerschaum-2.4.0rc1 → meerschaum-2.4.1}/meerschaum/api/resources/templates/index.html +0 -0
- {meerschaum-2.4.0rc1 → meerschaum-2.4.1}/meerschaum/api/resources/templates/old_index.html +0 -0
- {meerschaum-2.4.0rc1 → meerschaum-2.4.1}/meerschaum/api/resources/templates/secret.html +0 -0
- {meerschaum-2.4.0rc1 → meerschaum-2.4.1}/meerschaum/api/resources/templates/termpage.html +0 -0
- {meerschaum-2.4.0rc1 → meerschaum-2.4.1}/meerschaum/api/routes/__init__.py +0 -0
- {meerschaum-2.4.0rc1 → meerschaum-2.4.1}/meerschaum/api/routes/_actions.py +0 -0
- {meerschaum-2.4.0rc1 → meerschaum-2.4.1}/meerschaum/api/routes/_connectors.py +0 -0
- {meerschaum-2.4.0rc1 → meerschaum-2.4.1}/meerschaum/api/routes/_index.py +0 -0
- {meerschaum-2.4.0rc1 → meerschaum-2.4.1}/meerschaum/api/routes/_jobs.py +0 -0
- {meerschaum-2.4.0rc1 → meerschaum-2.4.1}/meerschaum/api/routes/_login.py +0 -0
- {meerschaum-2.4.0rc1 → meerschaum-2.4.1}/meerschaum/api/routes/_misc.py +0 -0
- {meerschaum-2.4.0rc1 → meerschaum-2.4.1}/meerschaum/api/routes/_pipes.py +0 -0
- {meerschaum-2.4.0rc1 → meerschaum-2.4.1}/meerschaum/api/routes/_plugins.py +0 -0
- {meerschaum-2.4.0rc1 → meerschaum-2.4.1}/meerschaum/api/routes/_users.py +0 -0
- {meerschaum-2.4.0rc1 → meerschaum-2.4.1}/meerschaum/api/routes/_version.py +0 -0
- {meerschaum-2.4.0rc1 → meerschaum-2.4.1}/meerschaum/api/routes/_webterm.py +0 -0
- {meerschaum-2.4.0rc1 → meerschaum-2.4.1}/meerschaum/api/tables/__init__.py +0 -0
- {meerschaum-2.4.0rc1 → meerschaum-2.4.1}/meerschaum/config/__init__.py +0 -0
- {meerschaum-2.4.0rc1 → meerschaum-2.4.1}/meerschaum/config/_dash.py +0 -0
- {meerschaum-2.4.0rc1 → meerschaum-2.4.1}/meerschaum/config/_default.py +0 -0
- {meerschaum-2.4.0rc1 → meerschaum-2.4.1}/meerschaum/config/_edit.py +0 -0
- {meerschaum-2.4.0rc1 → meerschaum-2.4.1}/meerschaum/config/_environment.py +0 -0
- {meerschaum-2.4.0rc1 → meerschaum-2.4.1}/meerschaum/config/_formatting.py +0 -0
- {meerschaum-2.4.0rc1 → meerschaum-2.4.1}/meerschaum/config/_jobs.py +0 -0
- {meerschaum-2.4.0rc1 → meerschaum-2.4.1}/meerschaum/config/_patch.py +0 -0
- {meerschaum-2.4.0rc1 → meerschaum-2.4.1}/meerschaum/config/_paths.py +0 -0
- {meerschaum-2.4.0rc1 → meerschaum-2.4.1}/meerschaum/config/_preprocess.py +0 -0
- {meerschaum-2.4.0rc1 → meerschaum-2.4.1}/meerschaum/config/_read_config.py +0 -0
- {meerschaum-2.4.0rc1 → meerschaum-2.4.1}/meerschaum/config/_shell.py +0 -0
- {meerschaum-2.4.0rc1 → meerschaum-2.4.1}/meerschaum/config/_sync.py +0 -0
- {meerschaum-2.4.0rc1 → meerschaum-2.4.1}/meerschaum/config/paths.py +0 -0
- {meerschaum-2.4.0rc1 → meerschaum-2.4.1}/meerschaum/config/resources/__init__.py +0 -0
- {meerschaum-2.4.0rc1 → meerschaum-2.4.1}/meerschaum/config/stack/__init__.py +0 -0
- {meerschaum-2.4.0rc1 → meerschaum-2.4.1}/meerschaum/config/stack/grafana/__init__.py +0 -0
- {meerschaum-2.4.0rc1 → meerschaum-2.4.1}/meerschaum/config/stack/mosquitto/__init__.py +0 -0
- {meerschaum-2.4.0rc1 → meerschaum-2.4.1}/meerschaum/config/stack/mosquitto/resources/__init__.py +0 -0
- {meerschaum-2.4.0rc1 → meerschaum-2.4.1}/meerschaum/config/stack/resources/__init__.py +0 -0
- {meerschaum-2.4.0rc1 → meerschaum-2.4.1}/meerschaum/config/static/__init__.py +0 -0
- {meerschaum-2.4.0rc1 → meerschaum-2.4.1}/meerschaum/connectors/_Connector.py +0 -0
- {meerschaum-2.4.0rc1 → meerschaum-2.4.1}/meerschaum/connectors/__init__.py +0 -0
- {meerschaum-2.4.0rc1 → meerschaum-2.4.1}/meerschaum/connectors/api/_APIConnector.py +0 -0
- {meerschaum-2.4.0rc1 → meerschaum-2.4.1}/meerschaum/connectors/api/__init__.py +0 -0
- {meerschaum-2.4.0rc1 → meerschaum-2.4.1}/meerschaum/connectors/api/_actions.py +0 -0
- {meerschaum-2.4.0rc1 → meerschaum-2.4.1}/meerschaum/connectors/api/_fetch.py +0 -0
- {meerschaum-2.4.0rc1 → meerschaum-2.4.1}/meerschaum/connectors/api/_jobs.py +0 -0
- {meerschaum-2.4.0rc1 → meerschaum-2.4.1}/meerschaum/connectors/api/_login.py +0 -0
- {meerschaum-2.4.0rc1 → meerschaum-2.4.1}/meerschaum/connectors/api/_misc.py +0 -0
- {meerschaum-2.4.0rc1 → meerschaum-2.4.1}/meerschaum/connectors/api/_pipes.py +0 -0
- {meerschaum-2.4.0rc1 → meerschaum-2.4.1}/meerschaum/connectors/api/_plugins.py +0 -0
- {meerschaum-2.4.0rc1 → meerschaum-2.4.1}/meerschaum/connectors/api/_request.py +0 -0
- {meerschaum-2.4.0rc1 → meerschaum-2.4.1}/meerschaum/connectors/api/_uri.py +0 -0
- {meerschaum-2.4.0rc1 → meerschaum-2.4.1}/meerschaum/connectors/api/_users.py +0 -0
- {meerschaum-2.4.0rc1 → meerschaum-2.4.1}/meerschaum/connectors/parse.py +0 -0
- {meerschaum-2.4.0rc1 → meerschaum-2.4.1}/meerschaum/connectors/plugin/PluginConnector.py +0 -0
- {meerschaum-2.4.0rc1 → meerschaum-2.4.1}/meerschaum/connectors/plugin/__init__.py +0 -0
- {meerschaum-2.4.0rc1 → meerschaum-2.4.1}/meerschaum/connectors/poll.py +0 -0
- {meerschaum-2.4.0rc1 → meerschaum-2.4.1}/meerschaum/connectors/sql/_SQLConnector.py +0 -0
- {meerschaum-2.4.0rc1 → meerschaum-2.4.1}/meerschaum/connectors/sql/__init__.py +0 -0
- {meerschaum-2.4.0rc1 → meerschaum-2.4.1}/meerschaum/connectors/sql/_cli.py +0 -0
- {meerschaum-2.4.0rc1 → meerschaum-2.4.1}/meerschaum/connectors/sql/_create_engine.py +0 -0
- {meerschaum-2.4.0rc1 → meerschaum-2.4.1}/meerschaum/connectors/sql/_fetch.py +0 -0
- {meerschaum-2.4.0rc1 → meerschaum-2.4.1}/meerschaum/connectors/sql/_instance.py +0 -0
- {meerschaum-2.4.0rc1 → meerschaum-2.4.1}/meerschaum/connectors/sql/_plugins.py +0 -0
- {meerschaum-2.4.0rc1 → meerschaum-2.4.1}/meerschaum/connectors/sql/_sql.py +0 -0
- {meerschaum-2.4.0rc1 → meerschaum-2.4.1}/meerschaum/connectors/sql/_uri.py +0 -0
- {meerschaum-2.4.0rc1 → meerschaum-2.4.1}/meerschaum/connectors/sql/_users.py +0 -0
- {meerschaum-2.4.0rc1 → meerschaum-2.4.1}/meerschaum/connectors/sql/tables/__init__.py +0 -0
- {meerschaum-2.4.0rc1 → meerschaum-2.4.1}/meerschaum/connectors/sql/tables/types.py +0 -0
- {meerschaum-2.4.0rc1 → meerschaum-2.4.1}/meerschaum/connectors/sql/tools.py +0 -0
- {meerschaum-2.4.0rc1 → meerschaum-2.4.1}/meerschaum/connectors/valkey/_ValkeyConnector.py +0 -0
- {meerschaum-2.4.0rc1 → meerschaum-2.4.1}/meerschaum/connectors/valkey/__init__.py +0 -0
- {meerschaum-2.4.0rc1 → meerschaum-2.4.1}/meerschaum/connectors/valkey/_fetch.py +0 -0
- {meerschaum-2.4.0rc1 → meerschaum-2.4.1}/meerschaum/connectors/valkey/_pipes.py +0 -0
- {meerschaum-2.4.0rc1 → meerschaum-2.4.1}/meerschaum/connectors/valkey/_plugins.py +0 -0
- {meerschaum-2.4.0rc1 → meerschaum-2.4.1}/meerschaum/connectors/valkey/_users.py +0 -0
- {meerschaum-2.4.0rc1 → meerschaum-2.4.1}/meerschaum/core/Pipe/__init__.py +0 -0
- {meerschaum-2.4.0rc1 → meerschaum-2.4.1}/meerschaum/core/Pipe/_attributes.py +0 -0
- {meerschaum-2.4.0rc1 → meerschaum-2.4.1}/meerschaum/core/Pipe/_bootstrap.py +0 -0
- {meerschaum-2.4.0rc1 → meerschaum-2.4.1}/meerschaum/core/Pipe/_clear.py +0 -0
- {meerschaum-2.4.0rc1 → meerschaum-2.4.1}/meerschaum/core/Pipe/_copy.py +0 -0
- {meerschaum-2.4.0rc1 → meerschaum-2.4.1}/meerschaum/core/Pipe/_deduplicate.py +0 -0
- {meerschaum-2.4.0rc1 → meerschaum-2.4.1}/meerschaum/core/Pipe/_delete.py +0 -0
- {meerschaum-2.4.0rc1 → meerschaum-2.4.1}/meerschaum/core/Pipe/_drop.py +0 -0
- {meerschaum-2.4.0rc1 → meerschaum-2.4.1}/meerschaum/core/Pipe/_dtypes.py +0 -0
- {meerschaum-2.4.0rc1 → meerschaum-2.4.1}/meerschaum/core/Pipe/_edit.py +0 -0
- {meerschaum-2.4.0rc1 → meerschaum-2.4.1}/meerschaum/core/Pipe/_fetch.py +0 -0
- {meerschaum-2.4.0rc1 → meerschaum-2.4.1}/meerschaum/core/Pipe/_register.py +0 -0
- {meerschaum-2.4.0rc1 → meerschaum-2.4.1}/meerschaum/core/Pipe/_show.py +0 -0
- {meerschaum-2.4.0rc1 → meerschaum-2.4.1}/meerschaum/core/Pipe/_verify.py +0 -0
- {meerschaum-2.4.0rc1 → meerschaum-2.4.1}/meerschaum/core/Plugin/__init__.py +0 -0
- {meerschaum-2.4.0rc1 → meerschaum-2.4.1}/meerschaum/core/User/_User.py +0 -0
- {meerschaum-2.4.0rc1 → meerschaum-2.4.1}/meerschaum/core/User/__init__.py +0 -0
- {meerschaum-2.4.0rc1 → meerschaum-2.4.1}/meerschaum/core/__init__.py +0 -0
- {meerschaum-2.4.0rc1 → meerschaum-2.4.1}/meerschaum/jobs/_Executor.py +0 -0
- {meerschaum-2.4.0rc1 → meerschaum-2.4.1}/meerschaum/jobs/_Job.py +0 -0
- {meerschaum-2.4.0rc1 → meerschaum-2.4.1}/meerschaum/jobs/systemd.py +0 -0
- {meerschaum-2.4.0rc1 → meerschaum-2.4.1}/meerschaum/plugins/_Plugin.py +0 -0
- {meerschaum-2.4.0rc1 → meerschaum-2.4.1}/meerschaum/plugins/__init__.py +0 -0
- {meerschaum-2.4.0rc1 → meerschaum-2.4.1}/meerschaum/plugins/bootstrap.py +0 -0
- {meerschaum-2.4.0rc1 → meerschaum-2.4.1}/meerschaum/utils/__init__.py +0 -0
- {meerschaum-2.4.0rc1 → meerschaum-2.4.1}/meerschaum/utils/_get_pipes.py +0 -0
- {meerschaum-2.4.0rc1 → meerschaum-2.4.1}/meerschaum/utils/daemon/Daemon.py +0 -0
- {meerschaum-2.4.0rc1 → meerschaum-2.4.1}/meerschaum/utils/daemon/FileDescriptorInterceptor.py +0 -0
- {meerschaum-2.4.0rc1 → meerschaum-2.4.1}/meerschaum/utils/daemon/RotatingFile.py +0 -0
- {meerschaum-2.4.0rc1 → meerschaum-2.4.1}/meerschaum/utils/daemon/StdinFile.py +0 -0
- {meerschaum-2.4.0rc1 → meerschaum-2.4.1}/meerschaum/utils/daemon/__init__.py +0 -0
- {meerschaum-2.4.0rc1 → meerschaum-2.4.1}/meerschaum/utils/daemon/_names.py +0 -0
- {meerschaum-2.4.0rc1 → meerschaum-2.4.1}/meerschaum/utils/dataframe.py +0 -0
- {meerschaum-2.4.0rc1 → meerschaum-2.4.1}/meerschaum/utils/debug.py +0 -0
- {meerschaum-2.4.0rc1 → meerschaum-2.4.1}/meerschaum/utils/dtypes/__init__.py +0 -0
- {meerschaum-2.4.0rc1 → meerschaum-2.4.1}/meerschaum/utils/dtypes/sql.py +0 -0
- {meerschaum-2.4.0rc1 → meerschaum-2.4.1}/meerschaum/utils/formatting/__init__.py +0 -0
- {meerschaum-2.4.0rc1 → meerschaum-2.4.1}/meerschaum/utils/formatting/_jobs.py +0 -0
- {meerschaum-2.4.0rc1 → meerschaum-2.4.1}/meerschaum/utils/formatting/_pipes.py +0 -0
- {meerschaum-2.4.0rc1 → meerschaum-2.4.1}/meerschaum/utils/formatting/_pprint.py +0 -0
- {meerschaum-2.4.0rc1 → meerschaum-2.4.1}/meerschaum/utils/formatting/_shell.py +0 -0
- {meerschaum-2.4.0rc1 → meerschaum-2.4.1}/meerschaum/utils/interactive.py +0 -0
- {meerschaum-2.4.0rc1 → meerschaum-2.4.1}/meerschaum/utils/misc.py +0 -0
- {meerschaum-2.4.0rc1 → meerschaum-2.4.1}/meerschaum/utils/networking.py +0 -0
- {meerschaum-2.4.0rc1 → meerschaum-2.4.1}/meerschaum/utils/packages/__init__.py +0 -0
- {meerschaum-2.4.0rc1 → meerschaum-2.4.1}/meerschaum/utils/packages/lazy_loader.py +0 -0
- {meerschaum-2.4.0rc1 → meerschaum-2.4.1}/meerschaum/utils/pool.py +0 -0
- {meerschaum-2.4.0rc1 → meerschaum-2.4.1}/meerschaum/utils/process.py +0 -0
- {meerschaum-2.4.0rc1 → meerschaum-2.4.1}/meerschaum/utils/prompt.py +0 -0
- {meerschaum-2.4.0rc1 → meerschaum-2.4.1}/meerschaum/utils/sql.py +0 -0
- {meerschaum-2.4.0rc1 → meerschaum-2.4.1}/meerschaum/utils/threading.py +0 -0
- {meerschaum-2.4.0rc1 → meerschaum-2.4.1}/meerschaum/utils/typing.py +0 -0
- {meerschaum-2.4.0rc1 → meerschaum-2.4.1}/meerschaum/utils/venv/_Venv.py +0 -0
- {meerschaum-2.4.0rc1 → meerschaum-2.4.1}/meerschaum/utils/venv/__init__.py +0 -0
- {meerschaum-2.4.0rc1 → meerschaum-2.4.1}/meerschaum/utils/warnings.py +0 -0
- {meerschaum-2.4.0rc1 → meerschaum-2.4.1}/meerschaum/utils/yaml.py +0 -0
- {meerschaum-2.4.0rc1 → meerschaum-2.4.1}/meerschaum.egg-info/dependency_links.txt +0 -0
- {meerschaum-2.4.0rc1 → meerschaum-2.4.1}/meerschaum.egg-info/entry_points.txt +0 -0
- {meerschaum-2.4.0rc1 → meerschaum-2.4.1}/meerschaum.egg-info/top_level.txt +0 -0
- {meerschaum-2.4.0rc1 → meerschaum-2.4.1}/meerschaum.egg-info/zip-safe +0 -0
- {meerschaum-2.4.0rc1 → meerschaum-2.4.1}/setup.cfg +0 -0
- {meerschaum-2.4.0rc1 → meerschaum-2.4.1}/setup.py +0 -0
- {meerschaum-2.4.0rc1 → meerschaum-2.4.1}/tests/test_actions.py +0 -0
- {meerschaum-2.4.0rc1 → meerschaum-2.4.1}/tests/test_arguments.py +0 -0
- {meerschaum-2.4.0rc1 → meerschaum-2.4.1}/tests/test_deduplicate.py +0 -0
- {meerschaum-2.4.0rc1 → meerschaum-2.4.1}/tests/test_jobs.py +0 -0
- {meerschaum-2.4.0rc1 → meerschaum-2.4.1}/tests/test_sql.py +0 -0
- {meerschaum-2.4.0rc1 → meerschaum-2.4.1}/tests/test_sync.py +0 -0
- {meerschaum-2.4.0rc1 → meerschaum-2.4.1}/tests/test_users.py +0 -0
- {meerschaum-2.4.0rc1 → meerschaum-2.4.1}/tests/test_verify.py +0 -0
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: meerschaum
|
3
|
-
Version: 2.4.
|
3
|
+
Version: 2.4.1
|
4
4
|
Summary: Sync Time-Series Pipes with Meerschaum
|
5
5
|
Home-page: https://meerschaum.io
|
6
6
|
Author: Bennett Meares
|
@@ -61,6 +61,7 @@ Requires-Dist: prompt-toolkit>=3.0.39; extra == "core"
|
|
61
61
|
Requires-Dist: more-itertools>=8.7.0; extra == "core"
|
62
62
|
Requires-Dist: fasteners>=0.19.0; extra == "core"
|
63
63
|
Requires-Dist: virtualenv>=20.1.0; extra == "core"
|
64
|
+
Requires-Dist: attrs<24.2.0; extra == "core"
|
64
65
|
Requires-Dist: APScheduler>=4.0.0a5; extra == "core"
|
65
66
|
Requires-Dist: uv>=0.2.11; extra == "core"
|
66
67
|
Provides-Extra: jobs
|
@@ -156,6 +157,7 @@ Requires-Dist: prompt-toolkit>=3.0.39; extra == "sql"
|
|
156
157
|
Requires-Dist: more-itertools>=8.7.0; extra == "sql"
|
157
158
|
Requires-Dist: fasteners>=0.19.0; extra == "sql"
|
158
159
|
Requires-Dist: virtualenv>=20.1.0; extra == "sql"
|
160
|
+
Requires-Dist: attrs<24.2.0; extra == "sql"
|
159
161
|
Requires-Dist: APScheduler>=4.0.0a5; extra == "sql"
|
160
162
|
Requires-Dist: uv>=0.2.11; extra == "sql"
|
161
163
|
Provides-Extra: dash
|
@@ -212,6 +214,7 @@ Requires-Dist: prompt-toolkit>=3.0.39; extra == "api"
|
|
212
214
|
Requires-Dist: more-itertools>=8.7.0; extra == "api"
|
213
215
|
Requires-Dist: fasteners>=0.19.0; extra == "api"
|
214
216
|
Requires-Dist: virtualenv>=20.1.0; extra == "api"
|
217
|
+
Requires-Dist: attrs<24.2.0; extra == "api"
|
215
218
|
Requires-Dist: APScheduler>=4.0.0a5; extra == "api"
|
216
219
|
Requires-Dist: uv>=0.2.11; extra == "api"
|
217
220
|
Requires-Dist: pprintpp>=0.4.0; extra == "api"
|
@@ -261,6 +264,7 @@ Requires-Dist: prompt-toolkit>=3.0.39; extra == "full"
|
|
261
264
|
Requires-Dist: more-itertools>=8.7.0; extra == "full"
|
262
265
|
Requires-Dist: fasteners>=0.19.0; extra == "full"
|
263
266
|
Requires-Dist: virtualenv>=20.1.0; extra == "full"
|
267
|
+
Requires-Dist: attrs<24.2.0; extra == "full"
|
264
268
|
Requires-Dist: APScheduler>=4.0.0a5; extra == "full"
|
265
269
|
Requires-Dist: uv>=0.2.11; extra == "full"
|
266
270
|
Requires-Dist: dill>=0.3.3; extra == "full"
|
@@ -214,6 +214,13 @@ def update_content(*args):
|
|
214
214
|
trigger = ctx.triggered[0]['prop_id'].split('.')[0] if not trigger else trigger
|
215
215
|
|
216
216
|
session_data = args[-1]
|
217
|
+
mrsm_location_href = session_data.get('mrsm-location.href', None)
|
218
|
+
if (
|
219
|
+
initial_load
|
220
|
+
and mrsm_location_href
|
221
|
+
and not mrsm_location_href.rstrip('/').endswith('/dash')
|
222
|
+
):
|
223
|
+
raise PreventUpdate
|
217
224
|
|
218
225
|
### NOTE: functions MUST return a list of content and a list of alerts
|
219
226
|
triggers = {
|
@@ -5,7 +5,9 @@
|
|
5
5
|
Define callbacks for the `/dash/pipes/` page.
|
6
6
|
"""
|
7
7
|
|
8
|
-
from
|
8
|
+
from urllib.parse import parse_qs
|
9
|
+
|
10
|
+
from dash.dependencies import Input, Output, State
|
9
11
|
from dash import no_update
|
10
12
|
|
11
13
|
import meerschaum as mrsm
|
@@ -13,17 +15,28 @@ from meerschaum.api.dash import dash_app
|
|
13
15
|
from meerschaum.api.dash.pipes import build_pipe_card
|
14
16
|
from meerschaum.api import CHECK_UPDATE
|
15
17
|
from meerschaum.utils.packages import import_html, import_dcc
|
18
|
+
from meerschaum.api.dash.sessions import is_session_authenticated
|
19
|
+
from meerschaum.utils.typing import Optional, Dict, Any
|
16
20
|
html, dcc = import_html(check_update=CHECK_UPDATE), import_dcc(check_update=CHECK_UPDATE)
|
17
21
|
|
18
22
|
|
19
23
|
@dash_app.callback(
|
20
24
|
Output('pipe-output-div', 'children'),
|
21
25
|
Input('pipes-location', 'pathname'),
|
26
|
+
State('pipes-location', 'search'),
|
27
|
+
State('session-store', 'data'),
|
22
28
|
)
|
23
|
-
def render_page_from_url(
|
29
|
+
def render_page_from_url(
|
30
|
+
pathname: str,
|
31
|
+
pipe_search: str,
|
32
|
+
session_data: Optional[Dict[str, Any]],
|
33
|
+
):
|
24
34
|
if not str(pathname).startswith('/dash/pipes'):
|
25
35
|
return no_update
|
26
36
|
|
37
|
+
session_id = (session_data or {}).get('session-id', None)
|
38
|
+
authenticated = is_session_authenticated(str(session_id))
|
39
|
+
|
27
40
|
keys = pathname.replace('/dash/pipes', '').lstrip('/').rstrip('/').split('/')
|
28
41
|
if len(keys) not in (2, 3):
|
29
42
|
return no_update
|
@@ -31,11 +44,12 @@ def render_page_from_url(pathname):
|
|
31
44
|
ck = keys[0]
|
32
45
|
mk = keys[1]
|
33
46
|
lk = keys[2] if len(keys) == 3 else None
|
47
|
+
query_params = parse_qs(pipe_search.lstrip('?')) if pipe_search else {}
|
48
|
+
instance = query_params.get('instance', [None])[0]
|
34
49
|
|
35
|
-
pipe = mrsm.Pipe(ck, mk, lk)
|
36
|
-
### TODO Check if logged in
|
50
|
+
pipe = mrsm.Pipe(ck, mk, lk, instance=instance)
|
37
51
|
return [
|
38
52
|
html.Br(),
|
39
|
-
build_pipe_card(pipe, authenticated=False),
|
53
|
+
build_pipe_card(pipe, authenticated=authenticated, include_manage=False),
|
40
54
|
html.Br(),
|
41
55
|
]
|
@@ -10,6 +10,8 @@ from __future__ import annotations
|
|
10
10
|
import json
|
11
11
|
import shlex
|
12
12
|
from textwrap import dedent
|
13
|
+
from urllib.parse import urlencode
|
14
|
+
|
13
15
|
from dash.dependencies import Input, Output, State
|
14
16
|
from meerschaum.utils.typing import List, Optional, Dict, Any, Tuple, Union
|
15
17
|
from meerschaum.utils.misc import string_to_dict
|
@@ -30,6 +32,7 @@ html, dcc = import_html(check_update=CHECK_UPDATE), import_dcc(check_update=CHEC
|
|
30
32
|
humanfriendly = attempt_import('humanfriendly', check_update=CHECK_UPDATE)
|
31
33
|
pd = import_pandas()
|
32
34
|
|
35
|
+
|
33
36
|
def pipe_from_ctx(ctx, trigger_property: str = 'n_clicks') -> Union[mrsm.Pipe, None]:
|
34
37
|
"""
|
35
38
|
Return a `meerschaum.Pipe` object from a dynamic object with an
|
@@ -105,6 +108,7 @@ def pipes_from_state(
|
|
105
108
|
def build_pipe_card(
|
106
109
|
pipe: mrsm.Pipe,
|
107
110
|
authenticated: bool = False,
|
111
|
+
include_manage: bool = True,
|
108
112
|
_build_children_num: int = 10,
|
109
113
|
) -> 'dbc.Card':
|
110
114
|
"""
|
@@ -118,6 +122,9 @@ def build_pipe_card(
|
|
118
122
|
authenticated: bool, default False
|
119
123
|
If `True`, allow editing functionality to the card.
|
120
124
|
|
125
|
+
include_manage: bool, default True
|
126
|
+
If `True` and `authenticated` is `True`, include the "Manage" dropdown.
|
127
|
+
|
121
128
|
Returns
|
122
129
|
-------
|
123
130
|
A dash bootstrap components Card representation of the pipe.
|
@@ -184,7 +191,7 @@ def build_pipe_card(
|
|
184
191
|
size='sm',
|
185
192
|
color='secondary',
|
186
193
|
)
|
187
|
-
) if authenticated else [],
|
194
|
+
) if authenticated and include_manage else [],
|
188
195
|
width=2,
|
189
196
|
),
|
190
197
|
dbc.Col(width=6),
|
@@ -217,8 +224,16 @@ def build_pipe_card(
|
|
217
224
|
|
218
225
|
]
|
219
226
|
|
227
|
+
query_params = {}
|
228
|
+
default_instance = get_config('meerschaum', 'instance')
|
229
|
+
if pipe.instance_keys != default_instance:
|
230
|
+
query_params['instance'] = pipe.instance_keys
|
220
231
|
pipe_url = (
|
221
|
-
f"/dash/pipes/
|
232
|
+
f"/dash/pipes/"
|
233
|
+
+ f"{pipe.connector_keys}/"
|
234
|
+
+ f"{pipe.metric_key}/"
|
235
|
+
+ (f"{pipe.location_key}" if pipe.location_key is not None else '')
|
236
|
+
+ (f"?{urlencode(query_params)}" if query_params else "")
|
222
237
|
)
|
223
238
|
|
224
239
|
card_header_children = dbc.Row(
|
@@ -909,7 +909,7 @@ def get_pipe_data_query(
|
|
909
909
|
|
910
910
|
cols_names = [sql_item_name(col, self.flavor, None) for col in select_columns]
|
911
911
|
select_cols_str = (
|
912
|
-
'SELECT\n'
|
912
|
+
'SELECT\n '
|
913
913
|
+ ',\n '.join(
|
914
914
|
[
|
915
915
|
(
|
@@ -953,14 +953,14 @@ def get_pipe_data_query(
|
|
953
953
|
warn(
|
954
954
|
f"No datetime could be determined for {pipe}."
|
955
955
|
+ "\n Ignoring begin and end...",
|
956
|
-
stack
|
956
|
+
stack=False,
|
957
957
|
)
|
958
958
|
begin, end = None, None
|
959
959
|
else:
|
960
960
|
warn(
|
961
961
|
f"A datetime wasn't specified for {pipe}.\n"
|
962
962
|
+ f" Using column \"{_dt}\" for datetime bounds...",
|
963
|
-
stack
|
963
|
+
stack=False,
|
964
964
|
)
|
965
965
|
|
966
966
|
is_dt_bound = False
|
@@ -1014,9 +1014,12 @@ def get_pipe_data_query(
|
|
1014
1014
|
|
1015
1015
|
if isinstance(limit, int):
|
1016
1016
|
if self.flavor == 'mssql':
|
1017
|
-
query = f'SELECT TOP {limit}
|
1017
|
+
query = f'SELECT TOP {limit}\n' + query[len("SELECT "):]
|
1018
1018
|
elif self.flavor == 'oracle':
|
1019
|
-
query =
|
1019
|
+
query = (
|
1020
|
+
f"SELECT * FROM (\n {query}\n)\n"
|
1021
|
+
+ f"WHERE ROWNUM IN ({', '.join([str(i) for i in range(1, limit+1)])})"
|
1022
|
+
)
|
1020
1023
|
else:
|
1021
1024
|
query += f"\nLIMIT {limit}"
|
1022
1025
|
|
@@ -106,7 +106,7 @@ def get_data(
|
|
106
106
|
from meerschaum.connectors import get_connector_plugin
|
107
107
|
from meerschaum.utils.misc import iterate_chunks, items_str
|
108
108
|
from meerschaum.utils.dtypes import to_pandas_dtype
|
109
|
-
from meerschaum.utils.dataframe import add_missing_cols_to_df
|
109
|
+
from meerschaum.utils.dataframe import add_missing_cols_to_df, df_is_chunk_generator
|
110
110
|
from meerschaum.utils.packages import attempt_import
|
111
111
|
dd = attempt_import('dask.dataframe') if as_dask else None
|
112
112
|
dask = attempt_import('dask') if as_dask else None
|
@@ -122,20 +122,29 @@ def get_data(
|
|
122
122
|
as_iterator = as_iterator or as_chunks
|
123
123
|
|
124
124
|
def _sort_df(_df):
|
125
|
+
if df_is_chunk_generator(_df):
|
126
|
+
return _df
|
125
127
|
dt_col = self.columns.get('datetime', None)
|
126
128
|
indices = [] if dt_col not in _df.columns else [dt_col]
|
127
129
|
non_dt_cols = [
|
128
130
|
col
|
129
|
-
for col_ix, col in self.columns.
|
131
|
+
for col_ix, col in self.columns.items()
|
130
132
|
if col_ix != 'datetime' and col in _df.columns
|
131
133
|
]
|
132
134
|
indices.extend(non_dt_cols)
|
133
|
-
_df.
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
135
|
+
if 'dask' not in _df.__module__:
|
136
|
+
_df.sort_values(
|
137
|
+
by=indices,
|
138
|
+
inplace=True,
|
139
|
+
ascending=(str(order).lower() == 'asc'),
|
140
|
+
)
|
141
|
+
_df.reset_index(drop=True, inplace=True)
|
142
|
+
else:
|
143
|
+
_df = _df.sort_values(
|
144
|
+
by=indices,
|
145
|
+
ascending=(str(order).lower() == 'asc'),
|
146
|
+
)
|
147
|
+
_df = _df.reset_index(drop=True)
|
139
148
|
if limit is not None and len(_df) > limit:
|
140
149
|
return _df.head(limit)
|
141
150
|
return _df
|
@@ -11,11 +11,12 @@ import pathlib
|
|
11
11
|
import meerschaum as mrsm
|
12
12
|
from meerschaum.utils.typing import Dict, Optional, List, SuccessTuple
|
13
13
|
|
14
|
-
from meerschaum.jobs._Job import Job
|
14
|
+
from meerschaum.jobs._Job import Job, StopMonitoringLogs
|
15
15
|
from meerschaum.jobs._Executor import Executor
|
16
16
|
|
17
17
|
__all__ = (
|
18
18
|
'Job',
|
19
|
+
'StopMonitoringLogs',
|
19
20
|
'systemd',
|
20
21
|
'get_jobs',
|
21
22
|
'get_filtered_jobs',
|
@@ -49,6 +49,7 @@ packages: Dict[str, Dict[str, str]] = {
|
|
49
49
|
'more_itertools' : 'more-itertools>=8.7.0',
|
50
50
|
'fasteners' : 'fasteners>=0.19.0',
|
51
51
|
'virtualenv' : 'virtualenv>=20.1.0',
|
52
|
+
'attrs' : 'attrs<24.2.0',
|
52
53
|
'apscheduler' : 'APScheduler>=4.0.0a5',
|
53
54
|
'uv' : 'uv>=0.2.11',
|
54
55
|
},
|
@@ -101,6 +101,7 @@ def schedule_function(
|
|
101
101
|
kw['debug'] = debug
|
102
102
|
kw = filter_keywords(function, **kw)
|
103
103
|
|
104
|
+
_ = mrsm.attempt_import('attrs', lazy=False)
|
104
105
|
apscheduler = mrsm.attempt_import('apscheduler', lazy=False)
|
105
106
|
now = round_time(datetime.now(timezone.utc), timedelta(minutes=1))
|
106
107
|
trigger = parse_schedule(schedule, now=now)
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: meerschaum
|
3
|
-
Version: 2.4.
|
3
|
+
Version: 2.4.1
|
4
4
|
Summary: Sync Time-Series Pipes with Meerschaum
|
5
5
|
Home-page: https://meerschaum.io
|
6
6
|
Author: Bennett Meares
|
@@ -61,6 +61,7 @@ Requires-Dist: prompt-toolkit>=3.0.39; extra == "core"
|
|
61
61
|
Requires-Dist: more-itertools>=8.7.0; extra == "core"
|
62
62
|
Requires-Dist: fasteners>=0.19.0; extra == "core"
|
63
63
|
Requires-Dist: virtualenv>=20.1.0; extra == "core"
|
64
|
+
Requires-Dist: attrs<24.2.0; extra == "core"
|
64
65
|
Requires-Dist: APScheduler>=4.0.0a5; extra == "core"
|
65
66
|
Requires-Dist: uv>=0.2.11; extra == "core"
|
66
67
|
Provides-Extra: jobs
|
@@ -156,6 +157,7 @@ Requires-Dist: prompt-toolkit>=3.0.39; extra == "sql"
|
|
156
157
|
Requires-Dist: more-itertools>=8.7.0; extra == "sql"
|
157
158
|
Requires-Dist: fasteners>=0.19.0; extra == "sql"
|
158
159
|
Requires-Dist: virtualenv>=20.1.0; extra == "sql"
|
160
|
+
Requires-Dist: attrs<24.2.0; extra == "sql"
|
159
161
|
Requires-Dist: APScheduler>=4.0.0a5; extra == "sql"
|
160
162
|
Requires-Dist: uv>=0.2.11; extra == "sql"
|
161
163
|
Provides-Extra: dash
|
@@ -212,6 +214,7 @@ Requires-Dist: prompt-toolkit>=3.0.39; extra == "api"
|
|
212
214
|
Requires-Dist: more-itertools>=8.7.0; extra == "api"
|
213
215
|
Requires-Dist: fasteners>=0.19.0; extra == "api"
|
214
216
|
Requires-Dist: virtualenv>=20.1.0; extra == "api"
|
217
|
+
Requires-Dist: attrs<24.2.0; extra == "api"
|
215
218
|
Requires-Dist: APScheduler>=4.0.0a5; extra == "api"
|
216
219
|
Requires-Dist: uv>=0.2.11; extra == "api"
|
217
220
|
Requires-Dist: pprintpp>=0.4.0; extra == "api"
|
@@ -261,6 +264,7 @@ Requires-Dist: prompt-toolkit>=3.0.39; extra == "full"
|
|
261
264
|
Requires-Dist: more-itertools>=8.7.0; extra == "full"
|
262
265
|
Requires-Dist: fasteners>=0.19.0; extra == "full"
|
263
266
|
Requires-Dist: virtualenv>=20.1.0; extra == "full"
|
267
|
+
Requires-Dist: attrs<24.2.0; extra == "full"
|
264
268
|
Requires-Dist: APScheduler>=4.0.0a5; extra == "full"
|
265
269
|
Requires-Dist: uv>=0.2.11; extra == "full"
|
266
270
|
Requires-Dist: dill>=0.3.3; extra == "full"
|
@@ -44,6 +44,7 @@ prompt-toolkit>=3.0.39
|
|
44
44
|
more-itertools>=8.7.0
|
45
45
|
fasteners>=0.19.0
|
46
46
|
virtualenv>=20.1.0
|
47
|
+
attrs<24.2.0
|
47
48
|
APScheduler>=4.0.0a5
|
48
49
|
uv>=0.2.11
|
49
50
|
pprintpp>=0.4.0
|
@@ -97,6 +98,7 @@ prompt-toolkit>=3.0.39
|
|
97
98
|
more-itertools>=8.7.0
|
98
99
|
fasteners>=0.19.0
|
99
100
|
virtualenv>=20.1.0
|
101
|
+
attrs<24.2.0
|
100
102
|
APScheduler>=4.0.0a5
|
101
103
|
uv>=0.2.11
|
102
104
|
|
@@ -188,6 +190,7 @@ prompt-toolkit>=3.0.39
|
|
188
190
|
more-itertools>=8.7.0
|
189
191
|
fasteners>=0.19.0
|
190
192
|
virtualenv>=20.1.0
|
193
|
+
attrs<24.2.0
|
191
194
|
APScheduler>=4.0.0a5
|
192
195
|
uv>=0.2.11
|
193
196
|
dill>=0.3.3
|
@@ -285,6 +288,7 @@ prompt-toolkit>=3.0.39
|
|
285
288
|
more-itertools>=8.7.0
|
286
289
|
fasteners>=0.19.0
|
287
290
|
virtualenv>=20.1.0
|
291
|
+
attrs<24.2.0
|
288
292
|
APScheduler>=4.0.0a5
|
289
293
|
uv>=0.2.11
|
290
294
|
|
@@ -0,0 +1,89 @@
|
|
1
|
+
#! /usr/bin/env python3
|
2
|
+
# vim:fenc=utf-8
|
3
|
+
|
4
|
+
"""
|
5
|
+
Tests for reading data from a pipe.
|
6
|
+
"""
|
7
|
+
|
8
|
+
import pytest
|
9
|
+
from meerschaum import Pipe
|
10
|
+
|
11
|
+
from tests.connectors import conns, get_flavors
|
12
|
+
from tests import debug
|
13
|
+
|
14
|
+
|
15
|
+
@pytest.mark.parametrize("flavor", get_flavors())
|
16
|
+
def test_get_backtrack_data_limit(flavor: str):
|
17
|
+
"""
|
18
|
+
Test reading backtrack data
|
19
|
+
"""
|
20
|
+
conn = conns[flavor]
|
21
|
+
pipe = Pipe('test', 'get_backtrack_data_limit', 'foo', instance=conn)
|
22
|
+
_ = pipe.delete()
|
23
|
+
pipe = Pipe(
|
24
|
+
'test', 'get_backtrack_data_limit', 'foo',
|
25
|
+
columns={'datetime': 'id'},
|
26
|
+
dtypes={'id': 'int'},
|
27
|
+
instance=conn,
|
28
|
+
)
|
29
|
+
success, msg = pipe.sync(
|
30
|
+
[
|
31
|
+
{'id': 1, 'color': 'red'},
|
32
|
+
{'id': 2, 'color': 'green'},
|
33
|
+
{'id': 3, 'color': 'blue'},
|
34
|
+
],
|
35
|
+
check_existing=False,
|
36
|
+
debug=debug,
|
37
|
+
)
|
38
|
+
assert success, msg
|
39
|
+
|
40
|
+
limit = 1
|
41
|
+
df = pipe.get_backtrack_data(
|
42
|
+
limit=limit,
|
43
|
+
debug=debug,
|
44
|
+
)
|
45
|
+
assert df['id'][0] == 3
|
46
|
+
assert len(df) == limit
|
47
|
+
|
48
|
+
|
49
|
+
@pytest.mark.parametrize("flavor", get_flavors())
|
50
|
+
def test_get_data_order(flavor: str):
|
51
|
+
"""
|
52
|
+
Test reading backtrack data
|
53
|
+
"""
|
54
|
+
conn = conns[flavor]
|
55
|
+
pipe = Pipe('test', 'get_data_order', 'foo', instance=conn)
|
56
|
+
_ = pipe.delete()
|
57
|
+
pipe = Pipe(
|
58
|
+
'test', 'get_data_order', 'foo',
|
59
|
+
columns={'datetime': 'id'},
|
60
|
+
dtypes={'id': 'int'},
|
61
|
+
instance=conn,
|
62
|
+
)
|
63
|
+
success, msg = pipe.sync(
|
64
|
+
[
|
65
|
+
{'id': 1, 'color': 'red'},
|
66
|
+
{'id': 2, 'color': 'green'},
|
67
|
+
{'id': 3, 'color': 'blue'},
|
68
|
+
],
|
69
|
+
check_existing=False,
|
70
|
+
debug=debug,
|
71
|
+
)
|
72
|
+
assert success, msg
|
73
|
+
|
74
|
+
limit = 2
|
75
|
+
df = pipe.get_data(
|
76
|
+
limit=limit,
|
77
|
+
order='asc',
|
78
|
+
debug=debug,
|
79
|
+
)
|
80
|
+
assert len(df) == limit
|
81
|
+
assert df['id'][0] == 1
|
82
|
+
|
83
|
+
df = pipe.get_data(
|
84
|
+
limit=limit,
|
85
|
+
order='desc',
|
86
|
+
debug=debug,
|
87
|
+
)
|
88
|
+
assert len(df) == limit
|
89
|
+
assert df['id'][0] == 3
|
@@ -10,7 +10,6 @@ from tests.connectors import conns, get_flavors
|
|
10
10
|
from tests.test_users import test_register_user
|
11
11
|
import meerschaum as mrsm
|
12
12
|
from meerschaum import Pipe
|
13
|
-
from meerschaum.actions import actions
|
14
13
|
from meerschaum.utils.dtypes import are_dtypes_equal
|
15
14
|
from meerschaum.utils.sql import sql_item_name
|
16
15
|
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|