.clocignore
.coveragerc
.dockerignore
.gitattributes
.gitignore
.gitlab-ci.yml
API_demo.ipynb
LICENSE
MANIFEST.in
README.rst
docker-compose.yml
install-postgresql.sh
postgresql-bootstrap.sql
pylintrc
pyproject.toml
requirements.txt
run_cloc.sh
sample.env
setup.cfg
unittest.cfg
.github/workflows/pypi.yml
docker/Dockerfile
docker/README.md
docker/development.dockerfile
docker/main.template.conf
docker/nginx-joule.conf
docker/nginx.conf
docker/runner.sh
docker/user.template.conf
docker/nginx_scripts/15-local-resolvers.envsh
docker/nginx_scripts/20-envsubst-on-templates.sh
docker/nginx_scripts/35-tune-worker-processes.sh
docker/sample_configs/proxies.conf
docker/sample_configs/users.conf
docs/Makefile
docs/api_reference.rst
docs/cli.rst
docs/conf.py
docs/index.rst
docs/installation.rst
docs/interfaces.rst
docs/make.bat
docs/modules.rst
docs/pipes.rst
docs/prompt
docs/quick_start.rst
docs/using_joule.rst
docs/_static/joule_pipe.gif
docs/_static/logo.png
docs/_static/css/custom.css
docs/_static/js/custom.js
docs/_static/nilmdb/hdd_gparted_1.png
docs/_static/nilmdb/hdd_gparted_2.png
docs/_static/nilmdb/hdd_gparted_3.png
docs/_templates/layout.html
docs/archive/integration_testing.rst
docs/archive/nilmdb.rst
docs/composite_module/development.rst
docs/composite_module/example.rst
docs/composite_module/testing.rst
docs/filter_module/development.rst
docs/filter_module/example.rst
docs/filter_module/testing.rst
docs/images/composite_module.png
docs/images/data-app.png
docs/images/data_pipeline.png
docs/images/filter_module.png
docs/images/getting_started_pipeline.png
docs/images/intervals.png
docs/images/joule_system.png
docs/images/module_stream.png
docs/images/pipe_buffer.png
docs/images/pipeline_example.png
docs/images/quickstart-plot.png
docs/images/reader_module.png
docs/reader_module/development.rst
docs/reader_module/example.rst
docs/reader_module/testing.rst
docserver/.angular-cli.json
docserver/.editorconfig
docserver/.gitignore
docserver/README.md
docserver/deploy_me.sh
docserver/karma.conf.js
docserver/package.json
docserver/protractor.conf.js
docserver/tsconfig.json
docserver/tslint.json
docserver/e2e/app.e2e-spec.ts
docserver/e2e/app.po.ts
docserver/e2e/tsconfig.e2e.json
docserver/src/favicon.ico
docserver/src/index.html
docserver/src/main.ts
docserver/src/polyfills.ts
docserver/src/styles.css
docserver/src/test.ts
docserver/src/tsconfig.app.json
docserver/src/tsconfig.spec.json
docserver/src/typings.d.ts
docserver/src/app/app.component.css
docserver/src/app/app.component.html
docserver/src/app/app.component.spec.ts
docserver/src/app/app.component.ts
docserver/src/app/app.module.ts
docserver/src/app/app.service.ts
docserver/src/app/safe-pipe.pipe.spec.ts
docserver/src/app/safe-pipe.pipe.ts
docserver/src/app/module-details/module-details.component.css
docserver/src/app/module-details/module-details.component.html
docserver/src/app/module-details/module-details.component.spec.ts
docserver/src/app/module-details/module-details.component.ts
docserver/src/app/module-list/module-list.component.css
docserver/src/app/module-list/module-list.component.html
docserver/src/app/module-list/module-list.component.ts
docserver/src/assets/.gitkeep
docserver/src/assets/data.json
docserver/src/assets/doc_logo.png
docserver/src/assets/page_header.png
docserver/src/css/bootstrap.min.css
docserver/src/css/bootstrap.min.css.map
docserver/src/css/default.css
docserver/src/css/fa-solid.min.css
docserver/src/css/fontawesome-all.min.css
docserver/src/css/prism.css
docserver/src/environments/environment.prod.ts
docserver/src/environments/environment.ts
docserver/src/scripts/highlight.pack.js
docserver/src/webfonts/fa-brands-400.eot
docserver/src/webfonts/fa-brands-400.svg
docserver/src/webfonts/fa-brands-400.ttf
docserver/src/webfonts/fa-brands-400.woff
docserver/src/webfonts/fa-brands-400.woff2
docserver/src/webfonts/fa-light-300.eot
docserver/src/webfonts/fa-light-300.svg
docserver/src/webfonts/fa-light-300.ttf
docserver/src/webfonts/fa-light-300.woff
docserver/src/webfonts/fa-light-300.woff2
docserver/src/webfonts/fa-regular-400.eot
docserver/src/webfonts/fa-regular-400.svg
docserver/src/webfonts/fa-regular-400.ttf
docserver/src/webfonts/fa-regular-400.woff
docserver/src/webfonts/fa-regular-400.woff2
docserver/src/webfonts/fa-solid-900.eot
docserver/src/webfonts/fa-solid-900.svg
docserver/src/webfonts/fa-solid-900.ttf
docserver/src/webfonts/fa-solid-900.woff
docserver/src/webfonts/fa-solid-900.woff2
import_logs/diff_imports.py
import_logs/test_import.py
src/joule/__init__.py
src/joule/app_keys.py
src/joule/cli.py
src/joule/daemon.py
src/joule/errors.py
src/joule/middleware.py
src/joule/update_users.py
src/joule/version.py
src/joule.egg-info/PKG-INFO
src/joule.egg-info/SOURCES.txt
src/joule.egg-info/dependency_links.txt
src/joule.egg-info/entry_points.txt
src/joule.egg-info/requires.txt
src/joule.egg-info/top_level.txt
src/joule/api/__init__.py
src/joule/api/annotation.py
src/joule/api/data.py
src/joule/api/data_stream.py
src/joule/api/db.py
src/joule/api/event.py
src/joule/api/event_stream.py
src/joule/api/folder.py
src/joule/api/folder_type.py
src/joule/api/helpers.py
src/joule/api/master.py
src/joule/api/module.py
src/joule/api/proxy.py
src/joule/api/node/__init__.py
src/joule/api/node/base_node.py
src/joule/api/node/node_config.py
src/joule/api/node/node_info.py
src/joule/api/node/tcp_node.py
src/joule/api/node/unix_node.py
src/joule/api/session/__init__.py
src/joule/api/session/base_session.py
src/joule/api/session/tcp_session.py
src/joule/api/session/unix_session.py
src/joule/cli/__init__.py
src/joule/cli/config.py
src/joule/cli/folder.py
src/joule/cli/helpers.py
src/joule/cli/lazy_group.py
src/joule/cli/admin/__init__.py
src/joule/cli/admin/authorize.py
src/joule/cli/admin/backup.py
src/joule/cli/admin/erase.py
src/joule/cli/admin/ingest.py
src/joule/cli/admin/initialize.py
src/joule/cli/admin/local_postgres_templates/pg_hba.conf.jinja2
src/joule/cli/admin/local_postgres_templates/pg_ident.conf.jinja2
src/joule/cli/admin/local_postgres_templates/postgresql.conf.jinja2
src/joule/cli/admin/local_postgres_templates/recovery.conf.jinja2
src/joule/cli/data/__init__.py
src/joule/cli/data/consolidate.py
src/joule/cli/data/copy.py
src/joule/cli/data/delete.py
src/joule/cli/data/ingest.py
src/joule/cli/data/intervals.py
src/joule/cli/data/mean.py
src/joule/cli/data/median.py
src/joule/cli/data/merge.py
src/joule/cli/data/read.py
src/joule/cli/event/__init__.py
src/joule/cli/event/copy.py
src/joule/cli/event/destroy.py
src/joule/cli/event/info.py
src/joule/cli/event/move.py
src/joule/cli/event/rename.py
src/joule/cli/follower/__init__.py
src/joule/cli/follower/delete.py
src/joule/cli/follower/list.py
src/joule/cli/master/__init__.py
src/joule/cli/master/add.py
src/joule/cli/master/delete.py
src/joule/cli/master/list.py
src/joule/cli/module/__init__.py
src/joule/cli/module/info.py
src/joule/cli/module/list.py
src/joule/cli/module/logs.py
src/joule/cli/node/__init__.py
src/joule/cli/node/add.py
src/joule/cli/node/default.py
src/joule/cli/node/delete.py
src/joule/cli/node/info.py
src/joule/cli/node/list.py
src/joule/cli/proxy/__init__.py
src/joule/cli/proxy/info.py
src/joule/cli/proxy/list.py
src/joule/cli/stream/__init__.py
src/joule/cli/stream/annotation.py
src/joule/cli/stream/destroy.py
src/joule/cli/stream/info.py
src/joule/cli/stream/move.py
src/joule/cli/stream/rename.py
src/joule/client/__init__.py
src/joule/client/base_module.py
src/joule/client/composite_module.py
src/joule/client/filter_module.py
src/joule/client/fir_filter_module.py
src/joule/client/reader_module.py
src/joule/client/builtins/__init__.py
src/joule/client/builtins/file_reader.py
src/joule/client/builtins/mean_filter.py
src/joule/client/builtins/median_filter.py
src/joule/client/builtins/merge_filter.py
src/joule/client/builtins/random_reader.py
src/joule/client/builtins/visualizer.py
src/joule/client/builtins/assets/css/bootstrap.min.css
src/joule/client/builtins/assets/css/bootstrap.min.css.map
src/joule/client/builtins/assets/css/index.css
src/joule/client/builtins/assets/js/bootstrap.bundle.min.js
src/joule/client/builtins/assets/js/bootstrap.bundle.min.js.map
src/joule/client/builtins/assets/js/index.js
src/joule/client/builtins/assets/js/jquery-3.3.1.min.js
src/joule/client/builtins/assets/js/jquery-3.3.1.min.map
src/joule/client/builtins/assets/js/popper.min.js
src/joule/client/builtins/assets/js/popper.min.js.map
src/joule/client/builtins/assets/templates/base.jinja2
src/joule/client/builtins/assets/templates/index.jinja2
src/joule/client/helpers/__init__.py
src/joule/client/helpers/args.py
src/joule/client/helpers/pipes.py
src/joule/controllers/__init__.py
src/joule/controllers/annotation_controller.py
src/joule/controllers/app_controller.py
src/joule/controllers/data_controller.py
src/joule/controllers/event_controller.py
src/joule/controllers/folder_controller.py
src/joule/controllers/follower_controller.py
src/joule/controllers/master_controller.py
src/joule/controllers/module_controller.py
src/joule/controllers/proxy_controller.py
src/joule/controllers/root_controller.py
src/joule/controllers/stream_controller.py
src/joule/models/__init__.py
src/joule/models/annotation.py
src/joule/models/config.py
src/joule/models/data_stream.py
src/joule/models/element.py
src/joule/models/event_stream.py
src/joule/models/folder.py
src/joule/models/follower.py
src/joule/models/master.py
src/joule/models/meta.py
src/joule/models/module.py
src/joule/models/proxy.py
src/joule/models/supervisor.py
src/joule/models/worker.py
src/joule/models/data_store/__init__.py
src/joule/models/data_store/data_store.py
src/joule/models/data_store/errors.py
src/joule/models/data_store/event_store.py
src/joule/models/data_store/nilmdb.py
src/joule/models/data_store/nilmdb_helpers.py
src/joule/models/data_store/nilmdb_inserter.py
src/joule/models/data_store/psql_helpers.py
src/joule/models/data_store/timescale.py
src/joule/models/data_store/timescale_inserter.py
src/joule/models/pipes/__init__.py
src/joule/models/pipes/errors.py
src/joule/models/pipes/factories.py
src/joule/models/pipes/input_pipe.py
src/joule/models/pipes/local_pipe.py
src/joule/models/pipes/output_pipe.py
src/joule/models/pipes/pipe.py
src/joule/resources/joule.service
src/joule/resources/templates/main.conf.jinja2
src/joule/resources/templates/module.example
src/joule/resources/templates/stream.example
src/joule/services/__init__.py
src/joule/services/helpers.py
src/joule/services/load_config.py
src/joule/services/load_modules.py
src/joule/services/load_streams.py
src/joule/services/parse_pipe_config.py
src/joule/sql/fast_info.sql
src/joule/sql/info.sql
src/joule/sql/row_count.sql
src/joule/utilities/__init__.py
src/joule/utilities/connection_info.py
src/joule/utilities/interval_tools.py
src/joule/utilities/misc.py
src/joule/utilities/stream.py
src/joule/utilities/time.py
src/joule/utilities/validators.py
tests/__init__.py
tests/context.py
tests/helpers.py
tests/api/__init__.py
tests/api/ca.joule.crt
tests/api/helpers.py
tests/api/mock_session.py
tests/api/test_annotation_api.py
tests/api/test_data_api.py
tests/api/test_event_api.py
tests/api/test_folder_api.py
tests/api/test_helpers.py
tests/api/test_stream_api.py
tests/api/node_configs/ca.joule.crt
tests/api/node_configs/default_node.txt
tests/api/node_configs/nodes.json
tests/cli/__init__.py
tests/cli/dbinfo.json
tests/cli/fake_joule.py
tests/cli/test_root.py
tests/cli/version.json
tests/cli/data/__init__.py
tests/cli/data/test_copy.py
tests/cli/data/test_copy_nilmdb.py
tests/cli/data/test_delete.py
tests/cli/data/test_ingest.py
tests/cli/data/test_intervals.py
tests/cli/data/test_read.py
tests/cli/event/__init__.py
tests/cli/event/empty_event_info.json
tests/cli/event/event_info.json
tests/cli/event/test_builder.ipynb
tests/cli/event/test_copy.py
tests/cli/event/test_destroy.py
tests/cli/event/test_info.py
tests/cli/event/test_move.py
tests/cli/event/test_read.py
tests/cli/event/test_rename.py
tests/cli/event/.ipynb_checkpoints/event_info-checkpoint.json
tests/cli/event/.ipynb_checkpoints/test_info-checkpoint.py
tests/cli/folder/__init__.py
tests/cli/folder/folder.json
tests/cli/folder/folders.json
tests/cli/folder/test_copy.py
tests/cli/folder/test_list.py
tests/cli/folder/test_move.py
tests/cli/folder/test_remove.py
tests/cli/folder/test_rename.py
tests/cli/master/__init__.py
tests/cli/master/test_add.py
tests/cli/module/__init__.py
tests/cli/module/logs.json
tests/cli/module/module.json
tests/cli/module/modules.json
tests/cli/module/test_info.py
tests/cli/module/test_list.py
tests/cli/module/test_logs.py
tests/cli/stream/__init__.py
tests/cli/stream/annotations.json
tests/cli/stream/stream.json
tests/cli/stream/test_annotation.py
tests/cli/stream/test_destroy.py
tests/cli/stream/test_info.py
tests/cli/stream/test_move.py
tests/cli/stream/test_rename.py
tests/client/__init__.py
tests/client/test_base_module.py
tests/client/test_composite_module.py
tests/client/test_filter_module.py
tests/client/test_reader_module.py
tests/client/builtins/__init__.py
tests/client/builtins/test_file_reader.py
tests/client/builtins/test_mean.py
tests/client/builtins/test_median.py
tests/client/builtins/test_merge.py
tests/client/builtins/test_random.py
tests/client/helpers/__init__.py
tests/client/helpers/test_helpers.py
tests/client/helpers/test_pipe_builders.py
tests/controllers/__init__.py
tests/controllers/helpers.py
tests/controllers/test_annotation_controller.py
tests/controllers/test_annotation_controller_errors.py
tests/controllers/test_data_controller.py
tests/controllers/test_data_controller_errors.py
tests/controllers/test_folder_controller.py
tests/controllers/test_folder_controller_errors.py
tests/controllers/test_master_controller.py
tests/controllers/test_module_controller.py
tests/controllers/test_module_controller_errors.py
tests/controllers/test_root_controller.py
tests/controllers/test_stream_controller.py
tests/controllers/test_stream_controller_errors.py
tests/e2e/bootstrap_inner.sh
tests/e2e/csr.conf
tests/e2e/follower_node.py
tests/e2e/main_node.py
tests/e2e/nilmdb-docker-compose.yml
tests/e2e/profile.py
tests/e2e/raw_jouled.sh
tests/e2e/runner.sh
tests/e2e/stat_plots.m
tests/e2e/timescale-docker-compose.yml
tests/e2e/unittest-docker-compose.yml
tests/e2e/archive/bootstrap_inner.sh
tests/e2e/archive/bootstrap_nilmdb.sh
tests/e2e/archive/docker-compose.yml
tests/e2e/archive/patch_nilmdb
tests/e2e/follower/main.conf
tests/e2e/follower/module_configs/base.conf
tests/e2e/follower/security/ca.joule.crt
tests/e2e/follower/security/node2.joule.crt
tests/e2e/follower/security/node2.joule.key
tests/e2e/follower/stream_configs/.keep
tests/e2e/module_scripts/__init__.py
tests/e2e/module_scripts/adder.py
tests/e2e/module_scripts/broken_gen.py
tests/e2e/module_scripts/composite_adder.py
tests/e2e/module_scripts/counter.py
tests/e2e/module_scripts/merge_sum.py
tests/e2e/module_scripts/normal_gen.py
tests/e2e/module_scripts/repeat_inserter.py
tests/e2e/pki/ca.joule.key
tests/e2e/pki/csr.conf
tests/e2e/pki/make_key.sh
tests/e2e/pki/node1.joule.key
tests/e2e/pki/node2.joule.key
tests/e2e/pki/update_certs.sh
tests/e2e/scenarios/__init__.py
tests/e2e/scenarios/api_tests/data.py
tests/e2e/scenarios/api_tests/folder.py
tests/e2e/scenarios/api_tests/main.conf
tests/e2e/scenarios/api_tests/module.py
tests/e2e/scenarios/api_tests/stream.py
tests/e2e/scenarios/api_tests/test.py
tests/e2e/scenarios/api_tests/module_configs/base.conf
tests/e2e/scenarios/api_tests/module_configs/plus1.conf
tests/e2e/scenarios/api_tests/stream_configs/arch1.conf
tests/e2e/scenarios/api_tests/stream_configs/arch2.conf
tests/e2e/scenarios/api_tests/stream_configs/base.conf
tests/e2e/scenarios/api_tests/stream_configs/plus1.conf
tests/e2e/scenarios/api_tests/tests/__init__.py
tests/e2e/scenarios/basic_operation/local_exec_main.conf
tests/e2e/scenarios/basic_operation/main.conf
tests/e2e/scenarios/basic_operation/reset.sh
tests/e2e/scenarios/basic_operation/test.py
tests/e2e/scenarios/basic_operation/module_configs/broken.conf
tests/e2e/scenarios/basic_operation/module_configs/cadder.conf
tests/e2e/scenarios/basic_operation/module_configs/misconfigured.conf
tests/e2e/scenarios/basic_operation/module_configs/normal1.conf
tests/e2e/scenarios/basic_operation/module_configs/normal2.conf
tests/e2e/scenarios/basic_operation/stream_configs/broken_data.conf
tests/e2e/scenarios/basic_operation/stream_configs/filter1_data.conf
tests/e2e/scenarios/basic_operation/stream_configs/filter2_data.conf
tests/e2e/scenarios/basic_operation/stream_configs/filter3_data.conf
tests/e2e/scenarios/basic_operation/stream_configs/normal1_data.conf
tests/e2e/scenarios/basic_operation/stream_configs/normal2_data.conf
tests/e2e/scenarios/multiple_node_tests/basic.py
tests/e2e/scenarios/multiple_node_tests/main.conf
tests/e2e/scenarios/multiple_node_tests/test.py
tests/e2e/scenarios/multiple_node_tests/module_configs/remote.conf
tests/e2e/scenarios/multiple_node_tests/stream_configs/.keep
tests/e2e/scenarios/standalone_modules/main.conf
tests/e2e/scenarios/standalone_modules/reset.sh
tests/e2e/scenarios/standalone_modules/test.py
tests/e2e/scenarios/standalone_modules/module_configs/base.conf
tests/e2e/scenarios/standalone_modules/module_configs/plus1.conf
tests/e2e/scenarios/standalone_modules/standalone_modules/proc1/module.conf
tests/e2e/scenarios/standalone_modules/standalone_modules/proc1/stream_configs/plus3.conf
tests/e2e/scenarios/standalone_modules/standalone_modules/proc2/module.conf
tests/e2e/scenarios/standalone_modules/standalone_modules/proc2/stream_configs/.keep
tests/e2e/scenarios/standalone_modules/standalone_modules/proc3/module.conf
tests/e2e/scenarios/standalone_modules/standalone_modules/proc3/stream_configs/.keep
tests/e2e/scenarios/standalone_modules/standalone_modules/proc4/module.conf
tests/e2e/scenarios/standalone_modules/standalone_modules/proc4/stream_configs/.keep
tests/e2e/scenarios/standalone_modules/stream_configs/base.conf
tests/e2e/scenarios/standalone_modules/stream_configs/plus1.conf
tests/e2e/security/ca.joule.crt
tests/e2e/security/node1.joule.crt
tests/e2e/security/node1.joule.key
tests/models/__init__.py
tests/models/test_element.py
tests/models/test_element_errors.py
tests/models/test_event_stream.py
tests/models/test_event_stream_errors.py
tests/models/test_folder.py
tests/models/test_module.py
tests/models/test_module_errors.py
tests/models/test_schema.py
tests/models/test_stream.py
tests/models/test_stream_errors.py
tests/models/test_supervisor.py
tests/models/test_worker.py
tests/models/data_store/__init__.py
tests/models/data_store/fake_nilmdb.py
tests/models/data_store/postgresql.conf
tests/models/data_store/stream_list.json
tests/models/data_store/test_nilmdb.py
tests/models/data_store/test_nilmdb_inserter.py
tests/models/data_store/test_timescale.py
tests/models/event_store/__init__.py
tests/models/event_store/postgresql.conf
tests/models/event_store/test_event_store.py
tests/models/pipes/__init__.py
tests/models/pipes/reader.py
tests/models/pipes/test_local_pipe.py
tests/models/pipes/test_local_pipes_basic_operation.py
tests/models/pipes/test_pipe.py
tests/models/pipes/test_stream_pipes.py
tests/models/worker_scripts/echo_args.py
tests/models/worker_scripts/ignore_sigterm.py
tests/models/worker_scripts/infinite_print_loop.py
tests/models/worker_scripts/log_and_exit.py
tests/models/worker_scripts/simple_filter.py
tests/models/worker_scripts/stop_on_sigterm.py
tests/notebooks/API_demo.ipynb
tests/notebooks/data_generator.ipynb
tests/services/__init__.py
tests/services/test_helpers.py
tests/services/test_load_configs.py
tests/services/test_load_configs_errors.py
tests/services/test_load_modules.py
tests/services/test_load_modules_errors.py
tests/services/test_load_streams.py
tests/services/test_load_streams_errors.py
tests/services/test_parse_pipe_configs.py
tests/services/test_parse_pipe_configs_errors.py
tests/utilities/__init__.py
tests/utilities/test_misc.py
tests/utilities/test_time.py