🌠 To-Do / Wish List¶
Below are some ongoing tasks I have planned for Meerschaum. This is not an exhaustive list, and if you would like to contribute a feature idea or point out a bug, please start a discussion or open an issue on the GitHub repository.
📝 General¶
- Documentation
- Tutorials
- FAQs
- How-To's
- Reference concepts
- Videos
- Tutorial series
- Usage and demonstration
- Tests
- More coverage
- Syncing
- Add more databases to supported flavors
- Relational databases
- CockroachDB
- MSSQL
- NoSQL databases
- InfluxDB
- Relational databases
🐞 Bugs¶
-
Add locks to connectors to avoid concurrency issues. -
Disableprompt_toolkitnewlines in shell prompt. -
parameterscolumn in thepipestable is a string, not JSON. -
instancecommand does not work after reloading when closing a config file -
Inconsistent web console colors (e.g.show connectorsvsshow config) -
--nameflag is broken when spawning jobs -
Reload plugins when installing updates. -
When upgrading plugins, only install plugin if updates are available. -
RemoveLiteralimport fromtypingfor compatibility with Python 3.7. -
defaultvalues are populated from the active instance. -
Microsoft SQL autocommit breaks fetching values fromsqlalchemy
✨ Features¶
-
Syncing
- Timeouts
Allow for--timeout-secondsto kill long-running syncing processes. - Parents
Build a dependency graph and sync pipes' ancestors first. - New syncing algorithm
I have been brainstorming a better way to detect differences between source and cache when syncing, so a future release of Meerschaum will be able to detect changes in past data. - Local Pipe HD5 caching
When requesting data viapipe.get_data(), cache data locally and sync any changes. I am investigating usingduckdbas a local cache database. - Rewrite API data to paginate downstream
When syncing upstream, Meerschaum defaults to sendingPOSTrequests for chunks. The chunking logic is mostly there, so I need to implement the same process in reverse.
- Timeouts
-
Web Interface
- Login html page
Request an OAuth2 token via a pretty web page. - Meerschaum JS
Interact with a Meerschaum API via web requests in Javascript. - Meerschaum web dashboard
Interact with a Meerschaum API via a web interface.
- Login html page
-
Diagnostics
- Logging system
Emit log messages to a more universal bus, similar to Splunk / Logstash. - Diagnostic Grafana dashboards
Ship pre-configured diagnostic dashboards. - Monitoring daemon
Handle logging and other child processes with a persistent Meerschaum daemon.
- Logging system
-
Job management
- Run in the background with
-d/--daemonflag - Save and restart jobs
Like withpm2, add the ability to save the current state of running jobs to be started on system startup. - Show jobs
The actionshow jobswill display running and stopped jobs. - Show logs
Display jobs' logs withshow logs. - Start job
The actionstart jobcan spawn a new job (like with-d) or restart a stopped job. - Stop job
Cancel running jobs. - Delete jobs
Remove jobs with
delete jobs. - Bootstrap job
Guide the user through defining and running jobs.
- Run in the background with
-
Plugins
-
Reuse packages across virtual environments
In an attempt to save space, if a package is already installed in another virtual environment and satisfies the requirements for a plugin, attempt to use that version instead of installing a new version. -
API Plugins
Add the decorator@api_pluginto defer API plugin initialization (lazy loading).
-
-
Other System Features
- Daemonize any process
Allow any Meerschaum action to run in the background. - GUI terminal
Add apywebviewandterm.jsterminal for desktop usage. - Clear pipe intervals
Addclear pipesto delete rows of a pipe within an interval.
- Daemonize any process
🔨 Refactoring¶
- Consolidate SQL-specific functions to one package to make adding flavors easier.
- Add
typinghinting to the Python package API. - Migrate
meerschaum.actions.shelltomeerschaum._internal.shell. - Migrate
PluginandPipetocore. - Rewrite docstrings from reST- to numpy-style.
- Fix pydoc formatting.