🌠 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
- [x] Tutorials
- [x] FAQs
- [ ] How-To's
- [x] Reference concepts
- Videos
- [x] Tutorial series
- [x] Usage and demonstration
- Tests
- [ ] More coverage
- [x] Syncing
- Add more databases to supported flavors
- Relational databases
- [x] CockroachDB
- [x] MSSQL
- NoSQL databases
- [ ] InfluxDB
- Relational databases
🐞 Bugs¶
- [x] ~~Add locks to connectors to avoid concurrency issues.~~
- [x] ~~Disable
prompt_toolkitnewlines in shell prompt.~~ - [x] ~~
parameterscolumn in thepipestable is a string, not JSON.~~ - [x] ~~
instancecommand does not work after reloading when closing a config file~~ - [x] ~~Inconsistent web console colors (e.g.
show connectorsvsshow config)~~ - [x] ~~
--nameflag is broken when spawning jobs~~ - [x] ~~Reload plugins when installing updates.~~
- [x] ~~When upgrading plugins, only install plugin if updates are available.~~
- [x] ~~Remove
Literalimport fromtypingfor compatibility with Python 3.7.~~ - [x] ~~
defaultvalues are populated from the active instance.~~ - [x] ~~Microsoft SQL autocommit breaks fetching values from
sqlalchemy~~
✨ Features¶
-
Syncing
- [x] 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. - [x] 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.
- [x] Timeouts
-
Web Interface
- [x] Login html page
Request an OAuth2 token via a pretty web page. - [ ] Meerschaum JS
Interact with a Meerschaum API via web requests in Javascript. - [x] Meerschaum web dashboard
Interact with a Meerschaum API via a web interface.
- [x] Login html page
-
Diagnostics
- [x] 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.
- [x] Logging system
-
Job management
- [x] 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. - [x] Show jobs
The actionshow jobswill display running and stopped jobs. - [x] Show logs
Display jobs' logs withshow logs. - [x] Start job
The actionstart jobcan spawn a new job (like with-d) or restart a stopped job. - [x] Stop job
Cancel running jobs. - [x] Delete jobs
Remove jobs with
delete jobs. - [ ] Bootstrap job
Guide the user through defining and running jobs.
- [x] Run in the background with
-
Plugins
-
[x] 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. -
[x] API Plugins
Add the decorator@api_pluginto defer API plugin initialization (lazy loading).
-
-
Other System Features
- [x] Daemonize any process
Allow any Meerschaum action to run in the background. - [x] GUI terminal
Add apywebviewandterm.jsterminal for desktop usage. - [x] Clear pipe intervals
Addclear pipesto delete rows of a pipe within an interval.
- [x] Daemonize any process
🔨 Refactoring¶
- [x] Consolidate SQL-specific functions to one package to make adding flavors easier.
- [x] Add
typinghinting to the Python package API. - [x] Migrate
meerschaum.actions.shelltomeerschaum._internal.shell. - [x] Migrate
PluginandPipetocore. - [x] Rewrite docstrings from reST- to numpy-style.
- [x] Fix pydoc formatting.