flexmeasures 0.26.0.dev1__tar.gz → 0.27.1.dev0__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.
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/.github/PULL_REQUEST_TEMPLATE.md +35 -4
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/.github/workflows/build.yml +4 -3
- flexmeasures-0.27.1.dev0/.github/workflows/codeql.yml +71 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/.github/workflows/lint-and-test.yml +4 -3
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/.gitignore +2 -1
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/Makefile +4 -3
- flexmeasures-0.27.1.dev0/PKG-INFO +169 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/ci/update-packages.sh +1 -1
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/docker-compose.yml +3 -1
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/documentation/api/change_log.rst +10 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/documentation/changelog.rst +88 -7
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/documentation/cli/change_log.rst +6 -1
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/documentation/cli/commands.rst +5 -1
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/documentation/concepts/data-model.rst +19 -2
- flexmeasures-0.27.1.dev0/documentation/concepts/security_auth.rst +97 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/documentation/conf.py +3 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/documentation/configuration.rst +15 -1
- flexmeasures-0.26.0.dev1/documentation/dev/ci.rst → flexmeasures-0.27.1.dev0/documentation/dev/automated-deploy-via-GHActions.rst +87 -19
- flexmeasures-0.27.1.dev0/documentation/dev/ci.rst +27 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/documentation/dev/docker-compose.rst +7 -2
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/documentation/dev/setup-and-guidelines.rst +2 -1
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/documentation/dev/why.rst +1 -1
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/documentation/features/forecasting.rst +2 -2
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/documentation/features/scheduling.rst +23 -12
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/documentation/getting-started.rst +2 -2
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/documentation/host/docker.rst +2 -2
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/documentation/host/installation.rst +69 -6
- flexmeasures-0.27.1.dev0/documentation/host/white-labelling.rst +20 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/documentation/index.rst +8 -6
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/documentation/plugin/customisation.rst +6 -2
- flexmeasures-0.27.1.dev0/documentation/puppeteer-config.json +3 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/documentation/tut/forecasting_scheduling.rst +23 -5
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/documentation/tut/posting_data.rst +28 -10
- flexmeasures-0.27.1.dev0/documentation/tut/scripts/Readme.md +24 -0
- flexmeasures-0.27.1.dev0/documentation/tut/scripts/run-tutorial-in-docker.sh +42 -0
- flexmeasures-0.27.1.dev0/documentation/tut/scripts/run-tutorial2-in-docker.sh +50 -0
- flexmeasures-0.27.1.dev0/documentation/tut/scripts/run-tutorial3-in-docker.sh +25 -0
- flexmeasures-0.27.1.dev0/documentation/tut/scripts/run-tutorial4-in-docker.sh +99 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/documentation/tut/toy-example-expanded.rst +137 -15
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/documentation/tut/toy-example-from-scratch.rst +69 -7
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/documentation/tut/toy-example-process.rst +15 -16
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/documentation/tut/toy-example-reporter.rst +49 -42
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/documentation/tut/toy-example-setup.rst +28 -26
- flexmeasures-0.27.1.dev0/documentation/views/asset-data.rst +163 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/documentation/views/dashboard.rst +2 -2
- flexmeasures-0.27.1.dev0/documentation/views/sensors.rst +36 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/api/common/responses.py +1 -1
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/api/common/schemas/sensor_data.py +8 -3
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/api/common/schemas/tests/test_sensor_data_schema.py +19 -11
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/api/common/utils/args_parsing.py +21 -3
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/api/tests/utils.py +8 -1
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/api/v3_0/accounts.py +6 -8
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/api/v3_0/assets.py +357 -25
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/api/v3_0/sensors.py +183 -28
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/api/v3_0/tests/conftest.py +14 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/api/v3_0/tests/test_accounts_api.py +27 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/api/v3_0/tests/test_api_v3_0_users.py +41 -2
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/api/v3_0/tests/test_api_v3_0_users_fresh_db.py +32 -2
- flexmeasures-0.27.1.dev0/flexmeasures/api/v3_0/tests/test_asset_schedules_fresh_db.py +289 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/api/v3_0/tests/test_assets_api.py +44 -51
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/api/v3_0/tests/test_sensor_data_fresh_db.py +37 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/api/v3_0/tests/test_sensor_schedules.py +20 -11
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/api/v3_0/tests/test_sensors_api.py +246 -42
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/api/v3_0/tests/utils.py +19 -1
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/api/v3_0/users.py +60 -29
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/app.py +17 -3
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/auth/policy.py +53 -3
- flexmeasures-0.27.1.dev0/flexmeasures/auth/tests/test_perm.py +208 -0
- flexmeasures-0.27.1.dev0/flexmeasures/auth/tests/test_principal_matching.py +196 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/cli/data_add.py +46 -28
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/cli/data_delete.py +1 -1
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/cli/data_show.py +68 -11
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/cli/jobs.py +31 -3
- flexmeasures-0.27.1.dev0/flexmeasures/cli/tests/test_data_add.py +97 -0
- flexmeasures-0.26.0.dev1/flexmeasures/cli/tests/test_data_add.py → flexmeasures-0.27.1.dev0/flexmeasures/cli/tests/test_data_add_fresh_db.py +8 -99
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/cli/utils.py +24 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/conftest.py +77 -5
- flexmeasures-0.27.1.dev0/flexmeasures/data/migrations/versions/0f64e22d6b9e_add_tf_totp_secret_column.py +70 -0
- flexmeasures-0.27.1.dev0/flexmeasures/data/migrations/versions/4dabf9663866_set_defaults_for_flex_context_and_.py +43 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/migrations/versions/ad98460751d9_remove_obsolete_tables.py +1 -5
- flexmeasures-0.27.1.dev0/flexmeasures/data/migrations/versions/ece7fb4207ed_adding_default_for_data_source_.py +33 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/models/audit_log.py +14 -11
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/models/charts/belief_charts.py +439 -7
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/models/generic_assets.py +78 -13
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/models/planning/__init__.py +42 -31
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/models/planning/storage.py +80 -67
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/models/planning/tests/test_solver.py +17 -13
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/models/planning/tests/test_storage.py +21 -68
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/models/planning/tests/utils.py +22 -2
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/models/planning/utils.py +7 -4
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/models/reporting/pandas_reporter.py +1 -1
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/models/time_series.py +51 -11
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/models/user.py +25 -6
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/schemas/account.py +3 -3
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/schemas/generic_assets.py +27 -16
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/schemas/reporting/__init__.py +1 -1
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/schemas/reporting/pandas_reporter.py +1 -1
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/schemas/reporting/profit.py +4 -4
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/schemas/scheduling/__init__.py +69 -73
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/schemas/scheduling/storage.py +4 -2
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/schemas/sensors.py +155 -12
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/schemas/tests/test_scheduling.py +7 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/schemas/users.py +12 -5
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/schemas/utils.py +40 -1
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/scripts/data_gen.py +12 -4
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/services/scheduling.py +37 -14
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/services/sensors.py +141 -60
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/services/time_series.py +37 -18
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/services/users.py +6 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/services/utils.py +18 -3
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/tests/test_scheduling_simultaneous.py +17 -6
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/utils.py +7 -4
- flexmeasures-0.27.1.dev0/flexmeasures/templates/security/_macros.html +38 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/ui/__init__.py +11 -3
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/ui/static/css/flexmeasures.css +78 -18
- flexmeasures-0.27.1.dev0/flexmeasures/ui/static/examples/sensors-data.xlsx +0 -0
- flexmeasures-0.27.1.dev0/flexmeasures/ui/static/js/daterange-utils.js +207 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/ui/static/js/flexmeasures.js +159 -0
- flexmeasures-0.27.1.dev0/flexmeasures/ui/templates/_macros.html +204 -0
- {flexmeasures-0.26.0.dev1/flexmeasures/ui/templates/crud → flexmeasures-0.27.1.dev0/flexmeasures/ui/templates/accounts}/account.html +20 -20
- flexmeasures-0.27.1.dev0/flexmeasures/ui/templates/admin/login_user.html +59 -0
- flexmeasures-0.27.1.dev0/flexmeasures/ui/templates/admin/two_factor_verify_code.html +67 -0
- {flexmeasures-0.26.0.dev1/flexmeasures/ui/templates/crud → flexmeasures-0.27.1.dev0/flexmeasures/ui/templates/assets}/asset_audit_log.html +1 -0
- flexmeasures-0.26.0.dev1/flexmeasures/ui/templates/crud/asset.html → flexmeasures-0.27.1.dev0/flexmeasures/ui/templates/assets/asset_context.html +250 -600
- flexmeasures-0.27.1.dev0/flexmeasures/ui/templates/assets/asset_graph.html +828 -0
- {flexmeasures-0.26.0.dev1/flexmeasures/ui/templates/crud → flexmeasures-0.27.1.dev0/flexmeasures/ui/templates/assets}/asset_new.html +15 -13
- flexmeasures-0.27.1.dev0/flexmeasures/ui/templates/assets/asset_properties.html +386 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/ui/templates/base.html +338 -120
- flexmeasures-0.26.0.dev1/flexmeasures/ui/templates/views/new_dashboard.html → flexmeasures-0.27.1.dev0/flexmeasures/ui/templates/dashboard.html +35 -17
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/ui/templates/defaults.jinja +2 -2
- flexmeasures-0.26.0.dev1/flexmeasures/ui/templates/views/sensors.html → flexmeasures-0.27.1.dev0/flexmeasures/ui/templates/sensors/index.html +88 -124
- {flexmeasures-0.26.0.dev1/flexmeasures/ui/templates/crud → flexmeasures-0.27.1.dev0/flexmeasures/ui/templates/sensors}/sensor_new.html +2 -7
- flexmeasures-0.27.1.dev0/flexmeasures/ui/templates/sensors/status.html +363 -0
- flexmeasures-0.27.1.dev0/flexmeasures/ui/templates/teaser.html +54 -0
- flexmeasures-0.27.1.dev0/flexmeasures/ui/templates/users/user.html +321 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/ui/tests/test_account_crud.py +30 -5
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/ui/tests/test_asset_crud.py +24 -16
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/ui/tests/test_assets_utils.py +1 -1
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/ui/tests/test_views.py +0 -6
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/ui/utils/breadcrumb_utils.py +58 -4
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/ui/utils/color_defaults.py +47 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/ui/utils/view_utils.py +56 -11
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/ui/views/__init__.py +2 -3
- {flexmeasures-0.26.0.dev1/flexmeasures/ui/crud → flexmeasures-0.27.1.dev0/flexmeasures/ui/views}/accounts.py +11 -4
- flexmeasures-0.27.1.dev0/flexmeasures/ui/views/assets/__init__.py +11 -0
- {flexmeasures-0.26.0.dev1/flexmeasures/ui/crud → flexmeasures-0.27.1.dev0/flexmeasures/ui/views}/assets/forms.py +19 -18
- {flexmeasures-0.26.0.dev1/flexmeasures/ui/crud → flexmeasures-0.27.1.dev0/flexmeasures/ui/views}/assets/utils.py +137 -6
- {flexmeasures-0.26.0.dev1/flexmeasures/ui/crud → flexmeasures-0.27.1.dev0/flexmeasures/ui/views}/assets/views.py +165 -94
- flexmeasures-0.26.0.dev1/flexmeasures/ui/views/new_dashboard.py → flexmeasures-0.27.1.dev0/flexmeasures/ui/views/dashboard.py +1 -1
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/ui/views/sensors.py +5 -2
- flexmeasures-0.27.1.dev0/flexmeasures/ui/views/users/__init__.py +0 -0
- flexmeasures-0.26.0.dev1/flexmeasures/ui/crud/users.py → flexmeasures-0.27.1.dev0/flexmeasures/ui/views/users/views.py +21 -4
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/utils/app_utils.py +85 -1
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/utils/config_defaults.py +24 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/utils/config_utils.py +10 -3
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/utils/plugin_utils.py +0 -5
- flexmeasures-0.27.1.dev0/flexmeasures/utils/tests/__init__.py +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/utils/unit_utils.py +54 -0
- flexmeasures-0.27.1.dev0/flexmeasures.egg-info/PKG-INFO +169 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures.egg-info/SOURCES.txt +49 -29
- flexmeasures-0.27.1.dev0/flexmeasures.egg-info/requires.txt +55 -0
- flexmeasures-0.27.1.dev0/pyproject.toml +51 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/requirements/3.10/app.txt +93 -51
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/requirements/3.10/dev.txt +21 -10
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/requirements/3.10/docs.txt +16 -7
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/requirements/3.10/test.txt +27 -20
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/requirements/3.11/app.txt +93 -49
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/requirements/3.11/dev.txt +19 -10
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/requirements/3.11/docs.txt +13 -6
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/requirements/3.11/test.txt +22 -15
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/requirements/3.12/app.txt +93 -49
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/requirements/3.12/dev.txt +19 -10
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/requirements/3.12/docs.txt +13 -6
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/requirements/3.12/test.txt +22 -15
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/requirements/3.8/app.txt +66 -25
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/requirements/3.8/dev.txt +23 -6
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/requirements/3.8/docs.txt +12 -5
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/requirements/3.8/test.txt +15 -10
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/requirements/3.9/app.txt +90 -45
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/requirements/3.9/dev.txt +30 -10
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/requirements/3.9/docs.txt +18 -9
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/requirements/3.9/test.txt +28 -19
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/requirements/app.in +11 -9
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/requirements/dev.in +3 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/requirements/docs.in +1 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/requirements/test.in +2 -2
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/setup.cfg +1 -1
- flexmeasures-0.27.1.dev0/setup.py +28 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/to_pypi.sh +8 -2
- flexmeasures-0.26.0.dev1/.github/workflows/deploy.yml +0 -33
- flexmeasures-0.26.0.dev1/PKG-INFO +0 -44
- flexmeasures-0.26.0.dev1/ci/DEPLOY.sh +0 -10
- flexmeasures-0.26.0.dev1/documentation/concepts/security_auth.rst +0 -54
- flexmeasures-0.26.0.dev1/documentation/views/asset-data.rst +0 -133
- flexmeasures-0.26.0.dev1/flexmeasures/api/common/schemas/generic_assets.py +0 -25
- flexmeasures-0.26.0.dev1/flexmeasures/auth/tests/test_principal_matching.py +0 -97
- flexmeasures-0.26.0.dev1/flexmeasures/ui/crud/__init__.py +0 -3
- flexmeasures-0.26.0.dev1/flexmeasures/ui/crud/assets/__init__.py +0 -11
- flexmeasures-0.26.0.dev1/flexmeasures/ui/static/js/daterange-utils.js +0 -70
- flexmeasures-0.26.0.dev1/flexmeasures/ui/templates/admin/login_user.html +0 -115
- flexmeasures-0.26.0.dev1/flexmeasures/ui/templates/crud/user.html +0 -123
- flexmeasures-0.26.0.dev1/flexmeasures/ui/templates/views/control.html +0 -268
- flexmeasures-0.26.0.dev1/flexmeasures/ui/templates/views/status.html +0 -182
- flexmeasures-0.26.0.dev1/flexmeasures/ui/views/control.py +0 -21
- flexmeasures-0.26.0.dev1/flexmeasures.egg-info/PKG-INFO +0 -44
- flexmeasures-0.26.0.dev1/pyproject.toml +0 -71
- flexmeasures-0.26.0.dev1/requirements.txt +0 -381
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/.coveragerc +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/.flaskenv +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/.github/issue-branch.yml +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/.github/workflows/generate-dummy-price.sh +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/.pre-commit-config.yaml +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/.readthedocs.yaml +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/.vscode/settings.json +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/.vscode/spellright.dict +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/Dockerfile +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/LICENSE +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/NOTICE +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/README.md +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/ci/Dockerfile.update +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/ci/Readme.md +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/ci/install-cbc-from-source.sh +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/ci/load-psql-extensions.sql +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/ci/run_mypy.sh +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/ci/setup-postgres.sh +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/documentation/Makefile +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/documentation/_static/css/custom.css +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/documentation/_templates/custom-module-template.rst +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/documentation/api/aggregator.rst +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/documentation/api/dev.rst +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/documentation/api/introduction.rst +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/documentation/api/mdc.rst +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/documentation/api/notation.rst +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/documentation/api/prosumer.rst +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/documentation/api/supplier.rst +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/documentation/api/v1.rst +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/documentation/api/v1_1.rst +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/documentation/api/v1_2.rst +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/documentation/api/v1_3.rst +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/documentation/api/v2_0.rst +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/documentation/api/v3_0.rst +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/documentation/concepts/algorithms.rst +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/documentation/concepts/device_scheduler.rst +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/documentation/concepts/flexibility.rst +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/documentation/concepts/users.rst +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/documentation/dev/api.rst +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/documentation/dev/auth.rst +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/documentation/dev/dependency-management.rst +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/documentation/dev/note-on-datamodel-transition.rst +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/documentation/features/reporting.rst +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/documentation/get-in-touch.rst +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/documentation/host/data.rst +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/documentation/host/deployment.rst +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/documentation/host/error-monitoring.rst +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/documentation/host/modes.rst +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/documentation/host/queues.rst +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/documentation/make.bat +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/documentation/notes/macOS-docker-port-note.rst +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/documentation/notes/macOS-port-note.rst +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/documentation/plugin/introduction.rst +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/documentation/plugin/showcase.rst +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/documentation/tut/building_uis.rst +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/documentation/tut/flex-model-v2g.rst +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/documentation/views/account.rst +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/documentation/views/admin.rst +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/Readme.md +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/__init__.py +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/api/Readme.md +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/api/__init__.py +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/api/common/__init__.py +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/api/common/implementations.py +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/api/common/routes.py +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/api/common/schemas/__init__.py +0 -0
- /flexmeasures-0.26.0.dev1/flexmeasures/api/common/schemas/tests/__init__.py → /flexmeasures-0.27.1.dev0/flexmeasures/api/common/schemas/generic_assets.py +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/api/common/schemas/search.py +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/api/common/schemas/sensors.py +0 -0
- {flexmeasures-0.26.0.dev1/flexmeasures/api/common/utils → flexmeasures-0.27.1.dev0/flexmeasures/api/common/schemas/tests}/__init__.py +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/api/common/schemas/tests/test_sensors.py +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/api/common/schemas/users.py +0 -0
- {flexmeasures-0.26.0.dev1/flexmeasures/api/dev/tests → flexmeasures-0.27.1.dev0/flexmeasures/api/common/utils}/__init__.py +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/api/common/utils/api_utils.py +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/api/common/utils/deprecation_utils.py +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/api/common/utils/validators.py +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/api/conftest.py +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/api/dev/__init__.py +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/api/dev/sensors.py +0 -0
- {flexmeasures-0.26.0.dev1/flexmeasures/api/sunset → flexmeasures-0.27.1.dev0/flexmeasures/api/dev}/tests/__init__.py +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/api/dev/tests/conftest.py +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/api/play/__init__.py +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/api/play/implementations.py +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/api/play/routes.py +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/api/sunset/__init__.py +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/api/sunset/routes.py +0 -0
- {flexmeasures-0.26.0.dev1/flexmeasures/api/v3_0 → flexmeasures-0.27.1.dev0/flexmeasures/api/sunset}/tests/__init__.py +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/api/sunset/tests/test_sunset.py +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/api/tests/conftest.py +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/api/tests/test_auth_token.py +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/api/tests/test_ping.py +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/api/tests/test_task_runs.py +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/api/v3_0/__init__.py +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/api/v3_0/health.py +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/api/v3_0/public.py +0 -0
- {flexmeasures-0.26.0.dev1/flexmeasures/cli → flexmeasures-0.27.1.dev0/flexmeasures/api/v3_0}/tests/__init__.py +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/api/v3_0/tests/test_assets_api_fresh_db.py +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/api/v3_0/tests/test_sensor_data.py +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/api/v3_0/tests/test_sensor_schedules_fresh_db.py +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/auth/__init__.py +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/auth/decorators.py +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/auth/error_handling.py +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/cli/Readme.md +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/cli/__init__.py +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/cli/data_edit.py +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/cli/db_ops.py +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/cli/monitor.py +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/cli/scripts/add_scripts_path.sh +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/cli/scripts/click-complete.bash +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/cli/scripts/click-complete.fish +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/cli/scripts/click-complete.zsh +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/cli/testing.py +0 -0
- {flexmeasures-0.26.0.dev1/flexmeasures/data/models/forecasting/model_specs → flexmeasures-0.27.1.dev0/flexmeasures/cli/tests}/__init__.py +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/cli/tests/conftest.py +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/cli/tests/test_data_delete.py +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/cli/tests/test_data_edit.py +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/cli/tests/test_data_show.py +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/cli/tests/test_utils.py +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/cli/tests/utils.py +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/Readme.md +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/__init__.py +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/config.py +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/migrations/README +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/migrations/alembic.ini +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/migrations/env.py +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/migrations/script.py.mako +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/migrations/versions/01fe99da5716_initial.py +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/migrations/versions/02ddbbff29a7_naming_conventions.py +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/migrations/versions/038bab973c40_add_unique_constraint_for_sensor_names_.py +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/migrations/versions/04f0e2d2924a_add_source_id_as_primary_key_for_timed_beliefs.py +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/migrations/versions/0af134879301_merge.py +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/migrations/versions/11b735abebe7_create_power_table_and_drop_measurement_table.py +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/migrations/versions/126d65cbe6b4_asset_audit_log.py +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/migrations/versions/1a4f0e5c4b86_unique_userids_in_ds.py +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/migrations/versions/1ae32ffc8c3f_rename_data_source_unique_constraint.py +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/migrations/versions/1b64acf01809_forecasting_job_table.py +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/migrations/versions/1bcccdf0c3e1_unique_usernames.py +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/migrations/versions/1e8d27922f56_create_price_table.py +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/migrations/versions/202505c5cb06_assets_inflexible_sensors_table_.py +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/migrations/versions/22ce09690d23_mix_in_timely_beliefs_sensor_with_asset_market_and_weather_sensor.py +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/migrations/versions/26373d8266db_owner_deletion_deletes_assets_and_power.py +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/migrations/versions/2ac7fb39ce0c_add_attribute_column_to_data_source.py +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/migrations/versions/2ba59c7c954e_clean_sensors_to_show_from_asset_.py +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/migrations/versions/2c9a32614784_rename_data_source_columns_in_power_price_and_weather_tables.py +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/migrations/versions/30f7b63069e1_delete_asset_if_sensor_is_deleted.py +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/migrations/versions/30fe2267e7d5_add_optional_DataSource_columns_for_model_and_version.py +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/migrations/versions/31f251554682_merge.py +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/migrations/versions/3d56402cde15_drop_login_columns_in_bvp_users_table.py +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/migrations/versions/3db3e71d101d_make_datasource_a_subclass_of_timely_beliefs_beliefsource.py +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/migrations/versions/3e43d3274d16_Asset_soc_udi_event_id.py +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/migrations/versions/3eb0564948ca_add_search_index_for_single_belief_.py +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/migrations/versions/40d6c8e4be94_add_parent_asset_id_column.py +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/migrations/versions/45d937300b0f_create_measurement_table.py +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/migrations/versions/4b5aa7856932_added_primary_and_secondary_color_field_.py +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/migrations/versions/4b6cebbdf473_create_weather_sensor_type_and_weather_sensor_and_weather_tables.py +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/migrations/versions/50cf294e007d_complete_adding_units_to_all_generic_asset_tables_and_display_names_to_all_generic_asset_tables_and_generic_asset_type_tables.py +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/migrations/versions/521034349543_add_consultancy_account_to_account.py +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/migrations/versions/524800c11eec_add_warning_and_error_as_annotations_.py +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/migrations/versions/550a9020f1bf_default_resolution_for_existing_sensors.py +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/migrations/versions/564e8df4e3a9_stop_using_bvp_in_table_names.py +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/migrations/versions/565e092a6c5e_introduce_the_GenericAssetType_table.py +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/migrations/versions/5a9473a817cb_merge_a60cc43aef5e_and_521034349543.py +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/migrations/versions/5d39829d91af_create_data_sources_table.py +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/migrations/versions/61bfc6e45c4d_add_soc_columns_in_asset_table.py +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/migrations/versions/650b085c0ad3_consolidate_data_source_after_storage_.py +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/migrations/versions/6938f16617ab_add_search_index_for_beliefs.py +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/migrations/versions/6cf5b241b85f_copy_attributes_from_old_data_models_to_GenericAsset.py +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/migrations/versions/7113b0f00678_drop_forecasting_jobs_table_and_make_display_names_nullable.py +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/migrations/versions/75f53d2dbfae_new_field_last_seen_in_user_model.py +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/migrations/versions/7987667dbd43_add_asset_type_hover_label.py +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/migrations/versions/7f8b8920355f_create_annotation_table.py +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/migrations/versions/81cbbf42357b_added_audit_log_table.py +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/migrations/versions/830e72a8b218_migrate_sensor_relationships_for_power_price_weather.py +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/migrations/versions/8abe32ffa204_add_owner_id_column_in_asset_table.py +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/migrations/versions/8fcc5fec67bc_make_data_source_id_columns_primary_keys.py +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/migrations/versions/919dc9f1dc1f_merge.py +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/migrations/versions/91a938bfa5a8_add_horizon_columns_to_power_price_and_weather_tables.py +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/migrations/versions/9254559dcac2_create_market_type_and_market_tables.py +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/migrations/versions/950e23e3aa54_add_sensors_to_show_field_in_asset_model.py +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/migrations/versions/96f2db5bed30_add_account_roles.py +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/migrations/versions/994170c26bc6_add_account_table.py +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/migrations/versions/9b2b90ee5dbf_add_ondelete_cascade_to_foreign_keys_in_account_sensor_and_asset_relationships.py +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/migrations/versions/9c7fc8e46f1e_add_location_columns_to_weather_sensor_table.py +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/migrations/versions/a328412b4623_add_timezone_column_in_bvp_users_table.py +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/migrations/versions/a528c3c81506_unique_generic_sensor_ids.py +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/migrations/versions/a5b970eadb3b_time_series_indexes.py +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/migrations/versions/a60cc43aef5e_delete_children_assets_on_cascade_when_.py +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/migrations/versions/a918360f7d63_add_unique_contraints_on_.py +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/migrations/versions/ac2613fffc74_add_market_id_column_to_asset_table.py +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/migrations/versions/ac5e340cccea_change_scope_of_name_account_id_unique_constraint.py +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/migrations/versions/b087ce8b529f_create_latest_task_run_table.py +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/migrations/versions/b2b43f0eec40_weathersensors_unique_type_location.py +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/migrations/versions/b6d49ed7cceb_introduce_the_GenericAsset_table.py +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/migrations/versions/b797328ac32d_add_user_fs_uniquifier_for_faster_auth_.py +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/migrations/versions/bddc5e9f72a3_add_event_resolution_field_to_asset_.py +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/migrations/versions/c1d316c60985_merge.py +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/migrations/versions/c349f52c700d_update_data_sources.py +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/migrations/versions/c41beee0c904_rename_DataSource_type_for_forecasters_and_schedulers.py +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/migrations/versions/cb8df44ebda5_flexcontext_field.py +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/migrations/versions/d3440de27ab9_create_bvp_roles_and_bvp_users_and_bvp_roles_users_tables.py +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/migrations/versions/d814c0688ae0_merge.py +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/migrations/versions/db00b66be82c_add_horizon_columns_as_primary_keys.py +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/migrations/versions/db1f67336324_add_price_unit_and_display_name_columns_to_market_table.py +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/migrations/versions/e0c2f9aff251_rename_source_id_column_in_data_sources_table.py +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/migrations/versions/e4c9cf837311_sensor_generic_asset_id_should_not_be_.py +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/migrations/versions/e62ac5f519d7_create_table_for_timed_beliefs.py +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/migrations/versions/e690d373a3d9_copy_Power_Price_Weather_time_series_data_to_TimedBeliefs_table.py +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/migrations/versions/ea84cefba5c0_added_logo_url_field_to_account_model.py +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/models/__init__.py +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/models/annotations.py +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/models/charts/__init__.py +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/models/charts/defaults.py +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/models/charts/readme.md +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/models/charts/test_chart_defaults.py +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/models/data_sources.py +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/models/forecasting/__init__.py +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/models/forecasting/exceptions.py +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/models/forecasting/model_spec_factory.py +0 -0
- {flexmeasures-0.26.0.dev1/flexmeasures/data/models/planning/tests → flexmeasures-0.27.1.dev0/flexmeasures/data/models/forecasting/model_specs}/__init__.py +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/models/forecasting/model_specs/linear_regression.py +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/models/forecasting/model_specs/naive.py +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/models/forecasting/utils.py +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/models/legacy_migration_utils.py +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/models/parsing_utils.py +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/models/planning/battery.py +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/models/planning/charging_station.py +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/models/planning/exceptions.py +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/models/planning/linear_optimization.py +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/models/planning/process.py +0 -0
- {flexmeasures-0.26.0.dev1/flexmeasures/data/models/reporting → flexmeasures-0.27.1.dev0/flexmeasures/data/models/planning}/tests/__init__.py +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/models/planning/tests/conftest.py +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/models/planning/tests/test_process.py +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/models/planning/tests/test_storage_utils.py +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/models/reporting/__init__.py +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/models/reporting/aggregator.py +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/models/reporting/profit.py +0 -0
- {flexmeasures-0.26.0.dev1/flexmeasures/data/schemas → flexmeasures-0.27.1.dev0/flexmeasures/data/models/reporting}/tests/__init__.py +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/models/reporting/tests/conftest.py +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/models/reporting/tests/test_aggregator.py +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/models/reporting/tests/test_pandas_reporter.py +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/models/reporting/tests/test_profit_reporter.py +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/models/reporting/tests/test_tibber_reporter.py +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/models/task_runs.py +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/models/validation_utils.py +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/models/weather.py +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/queries/__init__.py +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/queries/annotations.py +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/queries/data_sources.py +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/queries/generic_assets.py +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/queries/sensors.py +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/queries/users.py +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/queries/utils.py +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/schemas/__init__.py +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/schemas/attributes.py +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/schemas/io.py +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/schemas/locations.py +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/schemas/reporting/aggregation.py +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/schemas/scheduling/process.py +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/schemas/sources.py +0 -0
- {flexmeasures-0.26.0.dev1/flexmeasures/data → flexmeasures-0.27.1.dev0/flexmeasures/data/schemas}/tests/__init__.py +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/schemas/tests/conftest.py +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/schemas/tests/test_input_schema.py +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/schemas/tests/test_latitude_longitude.py +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/schemas/tests/test_reporting.py +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/schemas/tests/test_sensor.py +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/schemas/tests/test_times.py +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/schemas/times.py +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/schemas/units.py +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/scripts/__init__.py +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/scripts/clean_database.sh +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/scripts/visualize_data_model.py +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/services/__init__.py +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/services/accounts.py +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/services/annotations.py +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/services/asset_grouping.py +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/services/data_sources.py +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/services/forecasting.py +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/services/job_cache.py +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/services/timerange.py +0 -0
- {flexmeasures-0.26.0.dev1/flexmeasures/ui → flexmeasures-0.27.1.dev0/flexmeasures/data}/tests/__init__.py +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/tests/conftest.py +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/tests/dummy_scheduler.py +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/tests/test_SensorsToShowSchema.py +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/tests/test_accounts.py +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/tests/test_annotations.py +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/tests/test_chart_utils.py +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/tests/test_data_source.py +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/tests/test_forecasting_jobs.py +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/tests/test_forecasting_jobs_fresh_db.py +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/tests/test_generic_assets.py +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/tests/test_job_cache.py +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/tests/test_queries.py +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/tests/test_scheduling_jobs.py +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/tests/test_scheduling_jobs_fresh_db.py +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/tests/test_scheduling_repeated_jobs.py +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/tests/test_scheduling_repeated_jobs_fresh_db.py +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/tests/test_scheduling_sequential.py +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/tests/test_sensor_queries.py +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/tests/test_time_series_services.py +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/tests/test_timerange_services.py +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/tests/test_user_services.py +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/tests/utils.py +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/transactional.py +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/templates/security/email/reset_instructions.html +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/templates/security/email/reset_instructions.txt +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/templates/security/email/reset_notice.html +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/templates/security/email/reset_notice.txt +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/tests/__init__.py +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/tests/test_highlevel_class_imports.py +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/tests/utils.py +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/ui/error_handlers.py +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/ui/static/css/external/rq-dashboard-bootstrap.min.css +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/ui/static/css/external/weather-icons.min.css +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/ui/static/css/font/weathericons-regular-webfont.eot +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/ui/static/css/font/weathericons-regular-webfont.svg +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/ui/static/css/font/weathericons-regular-webfont.ttf +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/ui/static/css/font/weathericons-regular-webfont.woff +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/ui/static/css/font/weathericons-regular-webfont.woff2 +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/ui/static/css/fonts/FontAwesome.otf +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/ui/static/css/fonts/fontawesome-webfont.eot +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/ui/static/css/fonts/fontawesome-webfont.svg +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/ui/static/css/fonts/fontawesome-webfont.ttf +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/ui/static/css/fonts/fontawesome-webfont.woff +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/ui/static/css/fonts/fontawesome-webfont.woff2 +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/ui/static/css/fonts/glyphicons-halflings-regular.eot +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/ui/static/css/fonts/glyphicons-halflings-regular.svg +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/ui/static/css/fonts/glyphicons-halflings-regular.ttf +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/ui/static/css/fonts/glyphicons-halflings-regular.woff +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/ui/static/css/fonts/glyphicons-halflings-regular.woff2 +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/ui/static/css/fonts/glyphicons-halflings-white.png +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/ui/static/css/fonts/glyphicons-halflings.png +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/ui/static/favicon.ico +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/ui/static/font/seita-webfont.eot +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/ui/static/font/seita-webfont.svg +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/ui/static/font/seita-webfont.ttf +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/ui/static/font/seita-webfont.woff +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/ui/static/font/seita-webfont.woff2 +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/ui/static/images/chase-lewis-506404-unsplash.jpg +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/ui/static/images/flexmeasures-preview.jpg +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/ui/static/images/tj-k-349056-unsplash.jpg +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/ui/static/js/data-utils.js +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/ui/static/js/map-init.js +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/ui/static/js/replay-utils.js +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/ui/static/js/swiped-events.min.js +0 -0
- {flexmeasures-0.26.0.dev1/flexmeasures/ui/templates/crud → flexmeasures-0.27.1.dev0/flexmeasures/ui/templates/accounts}/account_audit_log.html +0 -0
- {flexmeasures-0.26.0.dev1/flexmeasures/ui/templates/crud → flexmeasures-0.27.1.dev0/flexmeasures/ui/templates/accounts}/accounts.html +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/ui/templates/admin/forgot_password.html +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/ui/templates/admin/logged_in_user.html +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/ui/templates/admin/reset_password.html +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/ui/templates/admin/upload.html +0 -0
- {flexmeasures-0.26.0.dev1/flexmeasures/ui/templates/crud → flexmeasures-0.27.1.dev0/flexmeasures/ui/templates/assets}/assets.html +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/ui/templates/error.html +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/ui/templates/rq_dashboard/base.html +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/ui/templates/rq_dashboard/update_links.js +0 -0
- {flexmeasures-0.26.0.dev1/flexmeasures/ui/templates/crud → flexmeasures-0.27.1.dev0/flexmeasures/ui/templates/users}/user_audit_log.html +0 -0
- {flexmeasures-0.26.0.dev1/flexmeasures/ui/templates/crud → flexmeasures-0.27.1.dev0/flexmeasures/ui/templates/users}/users.html +0 -0
- {flexmeasures-0.26.0.dev1/flexmeasures/utils → flexmeasures-0.27.1.dev0/flexmeasures/ui}/tests/__init__.py +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/ui/tests/conftest.py +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/ui/tests/test_color_defaults.py +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/ui/tests/test_error_handling.py +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/ui/tests/test_user_crud.py +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/ui/tests/test_utils.py +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/ui/tests/utils.py +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/ui/utils/__init__.py +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/ui/utils/chart_defaults.py +0 -0
- {flexmeasures-0.26.0.dev1/flexmeasures/ui/crud → flexmeasures-0.27.1.dev0/flexmeasures/ui/views}/api_wrapper.py +0 -0
- {flexmeasures-0.26.0.dev1/flexmeasures/ui/views → flexmeasures-0.27.1.dev0/flexmeasures/ui/views/users}/logged_in_user.py +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/utils/__init__.py +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/utils/calculations.py +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/utils/coding_utils.py +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/utils/entity_address_utils.py +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/utils/error_utils.py +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/utils/flexmeasures_inflection.py +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/utils/geo_utils.py +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/utils/grid_cells.py +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/utils/tests/test_coding_utils.py +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/utils/tests/test_entity_address_utils.py +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/utils/tests/test_time_utils.py +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/utils/tests/test_unit_utils.py +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/utils/time_utils.py +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/utils/validation_utils.py +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures.egg-info/dependency_links.txt +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures.egg-info/entry_points.txt +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures.egg-info/top_level.txt +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/requirements/Readme.md +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/run-local.py +0 -0
- {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/wsgi.py +0 -0
|
@@ -1,36 +1,67 @@
|
|
|
1
1
|
## Description
|
|
2
2
|
|
|
3
|
+
<!--
|
|
3
4
|
Summary of the changes introduced in this PR. Try to use bullet points as much as possible.
|
|
5
|
+
-->
|
|
4
6
|
|
|
5
7
|
- [ ] ...
|
|
6
8
|
- [ ] Added changelog item in `documentation/changelog.rst`
|
|
7
9
|
|
|
8
10
|
<!--
|
|
9
|
-
|
|
11
|
+
For changelog entries, please take into account the intended audience.
|
|
12
|
+
|
|
13
|
+
In our main changelog:
|
|
10
14
|
- The 'New features' section targets API / CLI / UI users.
|
|
11
15
|
- The 'Infrastructure / Support' section targets plugin developers and hosts.
|
|
16
|
+
|
|
17
|
+
Finally, please note that the API and CLI keep additional changelogs:
|
|
18
|
+
- `documentation/api/changelog.rst`
|
|
19
|
+
- `documentation/cli/changelog.rst`
|
|
12
20
|
-->
|
|
13
21
|
|
|
14
22
|
## Look & Feel
|
|
15
23
|
|
|
16
|
-
|
|
24
|
+
<!--
|
|
25
|
+
This section can contain example pictures for the UI, Input/Output for the CLI, Request / Response for an API endpoint, etc.
|
|
26
|
+
-->
|
|
27
|
+
|
|
28
|
+
...
|
|
17
29
|
|
|
18
30
|
## How to test
|
|
19
31
|
|
|
32
|
+
<!--
|
|
20
33
|
Steps to test it or name of the tests functions.
|
|
21
34
|
|
|
22
|
-
The library [flexmeasures-client](https://github.com/FlexMeasures/flexmeasures-client/) can be useful to showcase new features.
|
|
23
|
-
it can be used to set some example data to be used in a new UI feature.
|
|
35
|
+
The library [flexmeasures-client](https://github.com/FlexMeasures/flexmeasures-client/) can be useful to showcase new features.
|
|
36
|
+
For example, it can be used to set some example data to be used in a new UI feature.
|
|
37
|
+
-->
|
|
38
|
+
|
|
39
|
+
...
|
|
24
40
|
|
|
25
41
|
## Further Improvements
|
|
26
42
|
|
|
43
|
+
<!--
|
|
27
44
|
Potential improvements to be done in the same PR or follow-up Issues/Discussions/PRs.
|
|
45
|
+
-->
|
|
46
|
+
|
|
47
|
+
...
|
|
28
48
|
|
|
29
49
|
## Related Items
|
|
30
50
|
|
|
51
|
+
<!--
|
|
31
52
|
Mention if this PR closes an Issue or Project.
|
|
53
|
+
-->
|
|
54
|
+
|
|
55
|
+
...
|
|
32
56
|
|
|
33
57
|
---
|
|
34
58
|
|
|
59
|
+
#### Sign-off
|
|
60
|
+
|
|
61
|
+
<!--
|
|
62
|
+
We ask contributors outside the FlexMeasures organisation to sign off on their contribution.
|
|
63
|
+
Please mark the below fields with an [x].
|
|
64
|
+
-->
|
|
65
|
+
|
|
35
66
|
- [ ] I agree to contribute to the project under Apache 2 License.
|
|
36
67
|
- [ ] To the best of my knowledge, the proposed patch is not based on code under GPL or other license that is incompatible with FlexMeasures
|
|
@@ -33,6 +33,8 @@ jobs:
|
|
|
33
33
|
- name: Generate random secret key
|
|
34
34
|
run: echo "SECRET_KEY=$(python3 -c 'import secrets; print(secrets.token_hex(24))')"
|
|
35
35
|
>> .env
|
|
36
|
+
- name: Generate random totp secret
|
|
37
|
+
run: echo "SECURITY_TOTP_SECRETS={\"1\":\"$(python3 -c 'import secrets; print(secrets.token_hex(24))')\"}" >> .env
|
|
36
38
|
- name: Export SQLALCHEMY_DATABASE_URI
|
|
37
39
|
run: echo "SQLALCHEMY_DATABASE_URI=postgresql://flexmeasures_test:flexmeasures_test@127.0.0.1:5432/flexmeasures_test"
|
|
38
40
|
>> .env
|
|
@@ -56,6 +58,5 @@ jobs:
|
|
|
56
58
|
>> $GITHUB_ENV
|
|
57
59
|
- name: Add schedule
|
|
58
60
|
run: docker exec --env-file .env fm-container flexmeasures
|
|
59
|
-
add schedule for-storage --sensor 2 --
|
|
60
|
-
--start
|
|
61
|
-
--soc-at-start 50% --roundtrip-efficiency 90%
|
|
61
|
+
add schedule for-storage --sensor 2 --start ${TOMORROW}T07:00+01:00
|
|
62
|
+
--duration PT12H --soc-at-start 50% --roundtrip-efficiency 90%
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
name: "CodeQL Security Analysis"
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
schedule:
|
|
5
|
+
- cron: '24 22 * * 5'
|
|
6
|
+
|
|
7
|
+
jobs:
|
|
8
|
+
analyze:
|
|
9
|
+
name: Analyze (${{ matrix.language }})
|
|
10
|
+
# Runner size impacts CodeQL analysis time. To learn more, please see:
|
|
11
|
+
# - https://gh.io/recommended-hardware-resources-for-running-codeql
|
|
12
|
+
# - https://gh.io/supported-runners-and-hardware-resources
|
|
13
|
+
# - https://gh.io/using-larger-runners (GitHub.com only)
|
|
14
|
+
# Consider using larger runners or machines with greater resources for possible analysis time improvements.
|
|
15
|
+
runs-on: ${{ (matrix.language == 'swift' && 'macos-latest') || 'ubuntu-latest' }}
|
|
16
|
+
permissions:
|
|
17
|
+
# required for all workflows
|
|
18
|
+
security-events: write
|
|
19
|
+
|
|
20
|
+
# required to fetch internal or private CodeQL packs
|
|
21
|
+
packages: read
|
|
22
|
+
|
|
23
|
+
strategy:
|
|
24
|
+
fail-fast: false
|
|
25
|
+
matrix:
|
|
26
|
+
include:
|
|
27
|
+
- language: python
|
|
28
|
+
build-mode: none
|
|
29
|
+
steps:
|
|
30
|
+
- name: Checkout repository
|
|
31
|
+
uses: actions/checkout@v4
|
|
32
|
+
|
|
33
|
+
# Add any setup steps before running the `github/codeql-action/init` action.
|
|
34
|
+
# This includes steps like installing compilers or runtimes (`actions/setup-node`
|
|
35
|
+
# or others). This is typically only required for manual builds.
|
|
36
|
+
# - name: Setup runtime (example)
|
|
37
|
+
# uses: actions/setup-example@v1
|
|
38
|
+
|
|
39
|
+
# Initializes the CodeQL tools for scanning.
|
|
40
|
+
- name: Initialize CodeQL
|
|
41
|
+
uses: github/codeql-action/init@v3
|
|
42
|
+
with:
|
|
43
|
+
languages: ${{ matrix.language }}
|
|
44
|
+
build-mode: ${{ matrix.build-mode }}
|
|
45
|
+
# If you wish to specify custom queries, you can do so here or in a config file.
|
|
46
|
+
# By default, queries listed here will override any specified in a config file.
|
|
47
|
+
# Prefix the list here with "+" to use these queries and those in the config file.
|
|
48
|
+
|
|
49
|
+
# For more details on CodeQL's query packs, refer to: https://docs.github.com/en/code-security/code-scanning/automatically-scanning-your-code-for-vulnerabilities-and-errors/configuring-code-scanning#using-queries-in-ql-packs
|
|
50
|
+
# queries: security-extended,security-and-quality
|
|
51
|
+
|
|
52
|
+
# If the analyze step fails for one of the languages you are analyzing with
|
|
53
|
+
# "We were unable to automatically build your code", modify the matrix above
|
|
54
|
+
# to set the build mode to "manual" for that language. Then modify this step
|
|
55
|
+
# to build your code.
|
|
56
|
+
# ℹ️ Command-line programs to run using the OS shell.
|
|
57
|
+
# 📚 See https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idstepsrun
|
|
58
|
+
- if: matrix.build-mode == 'manual'
|
|
59
|
+
shell: bash
|
|
60
|
+
run: |
|
|
61
|
+
echo 'If you are using a "manual" build mode for one or more of the' \
|
|
62
|
+
'languages you are analyzing, replace this with the commands to build' \
|
|
63
|
+
'your code, for example:'
|
|
64
|
+
echo ' make bootstrap'
|
|
65
|
+
echo ' make release'
|
|
66
|
+
exit 1
|
|
67
|
+
|
|
68
|
+
- name: Perform CodeQL Analysis
|
|
69
|
+
uses: github/codeql-action/analyze@v3
|
|
70
|
+
with:
|
|
71
|
+
category: "/language:${{matrix.language}}"
|
|
@@ -22,7 +22,7 @@ jobs:
|
|
|
22
22
|
strategy:
|
|
23
23
|
fail-fast: false
|
|
24
24
|
matrix:
|
|
25
|
-
py_version: [ "3.
|
|
25
|
+
py_version: [ "3.9", "3.10", "3.11", "3.12" ]
|
|
26
26
|
include:
|
|
27
27
|
- python-version: "3.9"
|
|
28
28
|
coverage: yes
|
|
@@ -37,10 +37,9 @@ jobs:
|
|
|
37
37
|
run: |
|
|
38
38
|
git fetch --prune --unshallow
|
|
39
39
|
git fetch --depth=1 origin +refs/tags/*:refs/tags/*
|
|
40
|
-
- name: Upgrade pip
|
|
40
|
+
- name: Upgrade pip
|
|
41
41
|
run: |
|
|
42
42
|
pip3 install --upgrade pip
|
|
43
|
-
pip3 install --upgrade setuptools
|
|
44
43
|
- name: "Caching for dependencies (.txt) - restore existing or ensure new cache will be made"
|
|
45
44
|
uses: actions/cache@v4
|
|
46
45
|
id: cache
|
|
@@ -61,6 +60,8 @@ jobs:
|
|
|
61
60
|
if: github.event_name == 'pull_request'
|
|
62
61
|
- name: Run all doctests in the data/schemas subpackage
|
|
63
62
|
run: pytest flexmeasures/data/schemas --doctest-modules --ignore flexmeasures/data/schemas/tests
|
|
63
|
+
- name: Run all doctests in the ui/utils subpackage
|
|
64
|
+
run: pytest flexmeasures/ui --doctest-modules --ignore flexmeasures/ui/tests
|
|
64
65
|
- name: Run all doctests in the utils subpackage
|
|
65
66
|
run: pytest flexmeasures/utils --doctest-modules --ignore flexmeasures/utils/tests
|
|
66
67
|
- name: Run all tests except those marked to be skipped by GitHub AND record coverage
|
|
@@ -25,13 +25,14 @@ update-docs:
|
|
|
25
25
|
@echo "Creating docs environment ..."
|
|
26
26
|
make install-docs-dependencies
|
|
27
27
|
@echo "Creating documentation ..."
|
|
28
|
-
export GEN_CODE_DOCS=${gen_code_docs}; cd documentation; make clean; make html SPHINXOPTS="-W --keep-going -n"; cd ..
|
|
28
|
+
export FLEXMEASURES_ENV=documentation; export FLEXMEASURES_PLUGINS=; export GEN_CODE_DOCS=${gen_code_docs}; cd documentation; make clean; make html SPHINXOPTS="-W --keep-going -n"; cd ..
|
|
29
29
|
|
|
30
30
|
update-docs-pdf:
|
|
31
31
|
@echo "NOTE: PDF documentation requires packages (on Debian: latexmk texlive-latex-recommended texlive-latex-extra texlive-fonts-recommended)"
|
|
32
|
+
@echo "Creating docs environment ..."
|
|
32
33
|
make install-docs-dependencies
|
|
33
|
-
|
|
34
|
-
export GEN_CODE_DOCS=${gen_code_docs}; cd documentation; make clean; make latexpdf; make latexpdf; cd .. # make latexpdf can require two passes
|
|
34
|
+
@echo "Creating documentation ..."
|
|
35
|
+
export FLEXMEASURES_ENV=documentation; export FLEXMEASURES_PLUGINS=; export GEN_CODE_DOCS=${gen_code_docs}; cd documentation; make clean; make latexpdf; make latexpdf; cd .. # make latexpdf can require two passes
|
|
35
36
|
|
|
36
37
|
# ---- Installation ---
|
|
37
38
|
|
|
@@ -0,0 +1,169 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: flexmeasures
|
|
3
|
+
Version: 0.27.1.dev0
|
|
4
|
+
Summary: The *FlexMeasures Platform* is the intelligent backend to support real-time energy flexibility apps, rapidly and scalable.
|
|
5
|
+
Author-email: Seita BV <nicolas@seita.nl>
|
|
6
|
+
License: Apache-2.0
|
|
7
|
+
Project-URL: Homepage, https://flexmeasures.io
|
|
8
|
+
Project-URL: Documentation, https://flexmeasures.readthedocs.io/
|
|
9
|
+
Project-URL: Source code, https://github.com/FlexMeasures/flexmeasures
|
|
10
|
+
Keywords: smart grid,renewables,balancing,forecasting,scheduling
|
|
11
|
+
Classifier: Environment :: Console
|
|
12
|
+
Classifier: Environment :: Web Environment
|
|
13
|
+
Classifier: Programming Language :: Python
|
|
14
|
+
Classifier: Programming Language :: Python :: 3
|
|
15
|
+
Classifier: Programming Language :: Python :: 3.8
|
|
16
|
+
Classifier: Programming Language :: Python :: 3.9
|
|
17
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
18
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
19
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
20
|
+
Classifier: Framework :: Flask
|
|
21
|
+
Classifier: Development Status :: 5 - Production/Stable
|
|
22
|
+
Classifier: Operating System :: POSIX :: Linux
|
|
23
|
+
Classifier: Operating System :: MacOS :: MacOS X
|
|
24
|
+
Classifier: Natural Language :: English
|
|
25
|
+
Requires-Python: >=3.8
|
|
26
|
+
Description-Content-Type: text/markdown
|
|
27
|
+
License-File: LICENSE
|
|
28
|
+
License-File: NOTICE
|
|
29
|
+
Requires-Dist: pyyaml
|
|
30
|
+
Requires-Dist: altair
|
|
31
|
+
Requires-Dist: pandas
|
|
32
|
+
Requires-Dist: pint>=0.19.1
|
|
33
|
+
Requires-Dist: py-moneyed
|
|
34
|
+
Requires-Dist: iso8601
|
|
35
|
+
Requires-Dist: xlrd
|
|
36
|
+
Requires-Dist: workalendar
|
|
37
|
+
Requires-Dist: inflection
|
|
38
|
+
Requires-Dist: inflect
|
|
39
|
+
Requires-Dist: pydantic
|
|
40
|
+
Requires-Dist: humanize
|
|
41
|
+
Requires-Dist: psycopg2-binary
|
|
42
|
+
Requires-Dist: bcrypt<=4.0.1
|
|
43
|
+
Requires-Dist: argon2_cffi
|
|
44
|
+
Requires-Dist: pytz
|
|
45
|
+
Requires-Dist: isodate
|
|
46
|
+
Requires-Dist: click<8.2.0
|
|
47
|
+
Requires-Dist: click-default-group
|
|
48
|
+
Requires-Dist: email_validator
|
|
49
|
+
Requires-Dist: rq
|
|
50
|
+
Requires-Dist: rq-dashboard>=0.8.0.2
|
|
51
|
+
Requires-Dist: rq-win; os_name == "nt" or os_name == "win"
|
|
52
|
+
Requires-Dist: redis>4.5
|
|
53
|
+
Requires-Dist: tldextract
|
|
54
|
+
Requires-Dist: pyomo<6.9,>=5.6
|
|
55
|
+
Requires-Dist: tabulate
|
|
56
|
+
Requires-Dist: timetomodel>=0.7.3
|
|
57
|
+
Requires-Dist: timely-beliefs[forecast]>=3.2
|
|
58
|
+
Requires-Dist: python-dotenv
|
|
59
|
+
Requires-Dist: importlib_metadata
|
|
60
|
+
Requires-Dist: sqlalchemy>=2.0
|
|
61
|
+
Requires-Dist: Flask-SSLify
|
|
62
|
+
Requires-Dist: Flask_JSON
|
|
63
|
+
Requires-Dist: Flask-Migrate
|
|
64
|
+
Requires-Dist: Flask-WTF
|
|
65
|
+
Requires-Dist: Flask-Mail
|
|
66
|
+
Requires-Dist: Flask-Security-Too[fsqla,mfa]>=5.0
|
|
67
|
+
Requires-Dist: Flask-Login
|
|
68
|
+
Requires-Dist: Flask-Classful>=0.16
|
|
69
|
+
Requires-Dist: Flask-Marshmallow
|
|
70
|
+
Requires-Dist: Flask-Cors
|
|
71
|
+
Requires-Dist: sentry-sdk[flask]
|
|
72
|
+
Requires-Dist: marshmallow<4,>=3
|
|
73
|
+
Requires-Dist: marshmallow-polyfield
|
|
74
|
+
Requires-Dist: marshmallow-sqlalchemy>=0.23.1
|
|
75
|
+
Requires-Dist: webargs
|
|
76
|
+
Requires-Dist: uniplot>=0.12.1
|
|
77
|
+
Requires-Dist: Flask-SQLAlchemy>=2.5.2
|
|
78
|
+
Requires-Dist: flask>=1.0
|
|
79
|
+
Requires-Dist: werkzeug
|
|
80
|
+
Requires-Dist: vl-convert-python
|
|
81
|
+
Requires-Dist: Pillow>=10.0.1
|
|
82
|
+
Dynamic: license-file
|
|
83
|
+
Dynamic: requires-dist
|
|
84
|
+
|
|
85
|
+

|
|
86
|
+

|
|
87
|
+
|
|
88
|
+
[](https://github.com/FlexMeasures/flexmeasures/blob/main/LICENSE)
|
|
89
|
+

|
|
90
|
+
[](https://pypi.python.org/pypi/flexmeasures)
|
|
91
|
+
[](https://www.python.org/downloads/)
|
|
92
|
+
[](https://github.com/psf/black)
|
|
93
|
+
[](https://flexmeasures.readthedocs.io/en/latest/?badge=latest)
|
|
94
|
+
[](https://coveralls.io/github/FlexMeasures/flexmeasures)
|
|
95
|
+
[](https://bestpractices.coreinfrastructure.org/projects/6095)
|
|
96
|
+
|
|
97
|
+
*FlexMeasures* is an intelligent EMS (energy management system) to optimize behind-the-meter energy flexibility.
|
|
98
|
+
Build your smart energy apps & services with FlexMeasures as backend for real-time orchestration!
|
|
99
|
+
|
|
100
|
+
In a nutshell, FlexMeasures turns data into optimized schedules for flexible assets like batteries and heat pumps, or for flexible industry processes:
|
|
101
|
+
|
|
102
|
+

|
|
103
|
+
|
|
104
|
+
|
|
105
|
+
Here is why using FlexMeasures is a great idea:
|
|
106
|
+
|
|
107
|
+
- Developing energy flexibility apps & services (e.g. to enable demand response) is crucial, but expensive.
|
|
108
|
+
- FlexMeasures reduces development costs with real-time data intelligence & integrations, uncertainty models and developer support such as API/UI and plugins.
|
|
109
|
+
|
|
110
|
+

|
|
111
|
+
|
|
112
|
+
|
|
113
|
+
So why optimise the schedules of flexible assets? Because planning ahead allows flexible assets to serve the whole system with their flexibility, e.g. by shifting energy consumption to other times.
|
|
114
|
+
For the asset owners, this creates CO₂ savings but also monetary value (e.g. through self-consumption, dynamic tariffs and grid incentives). FlexMeasures thrives to be applicable in cases with multiple sources of value ("value stacking") and multiple types of assets (e.g. home/office/factory).
|
|
115
|
+
|
|
116
|
+
As possible users, we see energy service companies (ESCOs) who want to build real-time apps & services around energy flexibility for their customers, or medium/large industrials who are looking for support in their internal digital tooling. However, even small companies and hobby projects might find FlexMeasures useful!
|
|
117
|
+
|
|
118
|
+
## How does FlexMeasures enable rapid development of energy flexibility apps?
|
|
119
|
+
|
|
120
|
+
FlexMeasures is designed to help with three basic needs of developers in the energy flexibility domain:
|
|
121
|
+
|
|
122
|
+
### I need help with integrating real-time data and continuously computing new data
|
|
123
|
+
|
|
124
|
+
FlexMeasures is designed to make decisions based on data in an automated way. Data pipelining and dedicated machine learning tooling is crucial.
|
|
125
|
+
|
|
126
|
+
- API/CLI functionality to read in time series data
|
|
127
|
+
- Extensions for integrating 3rd party data, e.g. from [ENTSO-E](https://github.com/SeitaBV/flexmeasures-entsoe) or [OpenWeatherMap](https://github.com/SeitaBV/flexmeasures-openweathermap)
|
|
128
|
+
- Forecasting for the upcoming hours
|
|
129
|
+
- Schedule optimization for flexible assets
|
|
130
|
+
|
|
131
|
+
|
|
132
|
+
### It's hard to correctly model data with different sources, resolutions, horizons and even uncertainties
|
|
133
|
+
|
|
134
|
+
Much developer time is spent correcting data and treating it correctly, so that you know you are computing on the right knowledge.
|
|
135
|
+
|
|
136
|
+
FlexMeasures is built on the [timely-beliefs framework](https://github.com/SeitaBV/timely-beliefs), so we model this real-world aspect accurately:
|
|
137
|
+
|
|
138
|
+
- Expected data properties are explicit (e.g. unit, time resolution)
|
|
139
|
+
- Incoming data is converted to fitting unit and time resolution automatically
|
|
140
|
+
- FlexMeasures also stores who thought that something happened (or that it will happen), and when they thought so
|
|
141
|
+
- Uncertainty can be modelled (useful for forecasting)
|
|
142
|
+
|
|
143
|
+
|
|
144
|
+
### I want to build new features quickly, not spend days solving basic problems
|
|
145
|
+
|
|
146
|
+
Building customer-facing apps & services is where developers make impact. We make their work easy.
|
|
147
|
+
|
|
148
|
+
- FlexMeasures has well-documented API endpoints and CLI commands to interact with its model and data
|
|
149
|
+
- You can extend it easily with your own logic by writing plugins
|
|
150
|
+
- A backend UI shows you your assets in maps and your data in plots. There is also support for plots to be available per API, for integration in your own frontend
|
|
151
|
+
- Multi-tenancy ― model multiple accounts on one server. Data is only seen/editable by authorized users in the right account
|
|
152
|
+
|
|
153
|
+
|
|
154
|
+
## Getting started
|
|
155
|
+
|
|
156
|
+
Head over to our [documentation](https://flexmeasures.readthedocs.io), e.g. the [getting started guide](https://flexmeasures.readthedocs.io/en/latest/getting-started.html) or the [5-minute tutorial](https://flexmeasures.readthedocs.io/en/latest/tut/toy-example-from-scratch.html). Or find more information on [FlexMeasures.io](https://flexmeasures.io).
|
|
157
|
+
|
|
158
|
+
See also [Seita's Github profile](https://github.com/SeitaBV), e.g. for FlexMeasures plugin examples.
|
|
159
|
+
|
|
160
|
+
|
|
161
|
+
## Development & community
|
|
162
|
+
|
|
163
|
+
FlexMeasures was initiated by [Seita BV](https://www.seita.nl) in The Netherlands in order to make sure that smart backend software is available to all parties working with energy flexibility, no matter where they are working on their local energy transition.
|
|
164
|
+
|
|
165
|
+
We made FlexMeasures freely available under the Apache2.0 licence and it is now [an incubation project at the Linux Energy Foundation](https://www.lfenergy.org/projects/flexmeasures/).
|
|
166
|
+
|
|
167
|
+
Within the FlexMeasures project, [we welcome contributions](https://github.com/FlexMeasures/tsc/blob/main/CONTRIBUTING.md). You can also [learn more about our governance](https://github.com/Flexmeasures/tsc/blob/main/GOVERNANCE.md).
|
|
168
|
+
|
|
169
|
+
You can connect with the community here on GitHub (e.g. by creating an issue), on [the mailing list](https://lists.lfenergy.org/g/flexmeasures), on [the FlexMeasures channel within the LF Energy Slack](https://slack.lfenergy.org/) or [by contacting the current maintainers](https://seita.nl/who-we-are/#contact).
|
|
@@ -23,6 +23,7 @@ services:
|
|
|
23
23
|
POSTGRES_PASSWORD: fm-dev-db-pass
|
|
24
24
|
volumes:
|
|
25
25
|
- ./ci/load-psql-extensions.sql:/docker-entrypoint-initdb.d/load-psql-extensions.sql
|
|
26
|
+
- ./docker-compose-data/dev-db:/var/lib/postgresql/data
|
|
26
27
|
queue-db:
|
|
27
28
|
image: redis
|
|
28
29
|
restart: always
|
|
@@ -60,6 +61,7 @@ services:
|
|
|
60
61
|
environment:
|
|
61
62
|
SQLALCHEMY_DATABASE_URI: "postgresql://fm-dev-db-user:fm-dev-db-pass@dev-db:5432/fm-dev-db"
|
|
62
63
|
SECRET_KEY: notsecret
|
|
64
|
+
SECURITY_TOTP_SECRETS: '{"1": "something-secret"}'
|
|
63
65
|
FLEXMEASURES_ENV: development
|
|
64
66
|
FLEXMEASURES_REDIS_URL: queue-db
|
|
65
67
|
FLEXMEASURES_REDIS_PASSWORD: fm-redis-pass
|
|
@@ -92,6 +94,7 @@ services:
|
|
|
92
94
|
FLEXMEASURES_REDIS_URL: queue-db
|
|
93
95
|
FLEXMEASURES_REDIS_PASSWORD: fm-redis-pass
|
|
94
96
|
SECRET_KEY: notsecret
|
|
97
|
+
SECURITY_TOTP_SECRETS: '{"1": "something-secret"}'
|
|
95
98
|
FLEXMEASURES_ENV: development
|
|
96
99
|
MAIL_SERVER: mailhog # MailHog mail server
|
|
97
100
|
MAIL_PORT: 1025 # MailHog mail port
|
|
@@ -115,7 +118,6 @@ services:
|
|
|
115
118
|
POSTGRES_PASSWORD: fm-test-db-pass
|
|
116
119
|
volumes:
|
|
117
120
|
- ./ci/load-psql-extensions.sql:/docker-entrypoint-initdb.d/load-psql-extensions.sql
|
|
118
|
-
|
|
119
121
|
volumes:
|
|
120
122
|
redis-cache:
|
|
121
123
|
driver: local
|
|
@@ -5,9 +5,17 @@ API change log
|
|
|
5
5
|
|
|
6
6
|
.. note:: The FlexMeasures API follows its own versioning scheme. This is also reflected in the URL (e.g. `/api/v3_0`), allowing developers to upgrade at their own pace.
|
|
7
7
|
|
|
8
|
+
v3.0-24 | 2025-06-10
|
|
9
|
+
""""""""""""""""""""
|
|
10
|
+
- New API endpoint `[POST] /assets/(id)/schedules/trigger <api/v3_0.html#post--api-v3_0-assets-(id)-schedules-trigger>`_ to schedule a site with multiple flexible devices.
|
|
11
|
+
- Introduce new ``relax-constraints`` field in the ``flex-context`` to relax all eligible constraints with default breach prices.
|
|
12
|
+
- Updated message for 404 Not Found on endpoints for managing assets: `/assets` (GET, POST) and `/assets/<id>` (GET, PATCH, DELETE).
|
|
13
|
+
|
|
14
|
+
|
|
8
15
|
v3.0-23 | 2025-04-08
|
|
9
16
|
""""""""""""""""""""
|
|
10
17
|
|
|
18
|
+
- Support saving the scheduled :abbr:`SoC (state of charge)` by referencing an appropriate sensor in the ``flex-model`` field ``state-of-charge``.
|
|
11
19
|
- Introduce new price fields in the ``flex-context`` in order to relax device-level power constraints in the ``device-model``:
|
|
12
20
|
|
|
13
21
|
- ``consumption-breach-price``: if set, the ``consumption-capacity`` is used as a soft constraint.
|
|
@@ -25,6 +33,8 @@ v3.0-22 | 2025-03-17
|
|
|
25
33
|
- In both cases, the price is applied both to (the height of) the highest breach in the planning window (as a per-kWh price) and to (the area of) each breach that occurs (as a per-kWh price per hour).
|
|
26
34
|
That means both high breaches and long breaches are penalized.
|
|
27
35
|
|
|
36
|
+
- Fixed two alternatives for expressing a variable quantity as a time series; specifically, those involving the ``duration`` field.
|
|
37
|
+
|
|
28
38
|
v3.0-22 | 2024-12-27
|
|
29
39
|
""""""""""""""""""""
|
|
30
40
|
|
|
@@ -4,28 +4,112 @@ FlexMeasures Changelog
|
|
|
4
4
|
**********************
|
|
5
5
|
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
|
|
8
|
+
v0.27.0 | July 20, 2025
|
|
9
|
+
============================
|
|
10
|
+
|
|
11
|
+
.. note:: Preparatory warning: The following release will not support Python 3.8 anymore.
|
|
12
|
+
|
|
13
|
+
.. warning:: Upgrading to this version requires running ``flexmeasures db upgrade`` (you can create a backup first with ``flexmeasures db-ops dump``).
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
New features
|
|
17
|
+
-------------
|
|
18
|
+
|
|
19
|
+
* New API endpoint `[POST] /assets/(id)/schedules/trigger <api/v3_0.html#post--api-v3_0-assets-(id)-schedules-trigger>`_ to schedule a site with multiple flexible devices [see `PR #1065 <https://github.com/FlexMeasures/flexmeasures/pull/1065/>`_]
|
|
20
|
+
* Add form to upload sensor data to the database [see `PR #1481 <https://github.com/FlexMeasures/flexmeasures/pull/1481>`_, `PR #1573 <https://github.com/FlexMeasures/flexmeasures/pull/1573>`_, `PR #1583 <https://github.com/FlexMeasures/flexmeasures/pull/1583>`_, `PR #1585 <https://github.com/FlexMeasures/flexmeasures/pull/1585>`_, `PR #1588 <https://github.com/FlexMeasures/flexmeasures/pull/1588>`_ and `PR #1590 <https://github.com/FlexMeasures/flexmeasures/pull/1590>`_]
|
|
21
|
+
* Improved the UX for creating child-assets and sensors in the UI [see `PR #1605 <https://github.com/FlexMeasures/flexmeasures/pull/1605>`_]
|
|
22
|
+
* Added :abbr:`2FA (two-factor authentication)` support for email and one time recovery, and also added ``_macros.html`` for UI components [see `PR #1555 <https://github.com/FlexMeasures/flexmeasures/pull/1555>`_, `PR #1564 <https://github.com/FlexMeasures/flexmeasures/pull/1564>`_ and `PR #1562 <https://github.com/FlexMeasures/flexmeasures/pull/1562>`_]
|
|
23
|
+
* Give consultants more permissions, so they can edit their client's accounts, assets and sensors. Also add test cases to check if these permissions work as expected [see `PR #1539 <https://github.com/FlexMeasures/flexmeasures/pull/1539>`_ and `PR #1550 <https://github.com/FlexMeasures/flexmeasures/pull/1550>`_]
|
|
24
|
+
* Allow editing users in the UI [see `PR #1502 <https://github.com/FlexMeasures/flexmeasures/pull/1502>`_]
|
|
25
|
+
* Scheduling job descriptions on the tasks page (RQ Dashboard) shows the whole flex-model and flex-context, including any server-side configuration of e.g. capacities [see `PR #1579 <https://github.com/FlexMeasures/flexmeasures/pull/1579>`_ and `PR #1601 <https://github.com/FlexMeasures/flexmeasures/pull/1601>`_]
|
|
26
|
+
* Smarter date range navigation [see `PR #1531 <https://github.com/FlexMeasures/flexmeasures/pull/1531>`_]
|
|
27
|
+
* Smarter toast notifications [see `PR #1530 <https://github.com/FlexMeasures/flexmeasures/pull/1530>`_]
|
|
28
|
+
* Move various warnings to toast notifications [see `PR #1529 <https://github.com/FlexMeasures/flexmeasures/pull/1529>`_]
|
|
29
|
+
* Document how to set a parent asset when creating an asset through the API, and show parent assets in ``flexmeasures show account`` [see `PR #1533 <https://github.com/FlexMeasures/flexmeasures/pull/1533>`_ and `PR #974 <https://github.com/FlexMeasures/flexmeasures/pull/974>`_]
|
|
30
|
+
* Add ``flexmeasures show assets`` CLI command for listing public assets and option ``--account <account-id>`` to list assets owned by a specific account [see `PR #1536 <https://github.com/FlexMeasures/flexmeasures/pull/1536>`_]
|
|
31
|
+
* Add ``flexmeasures jobs run-job`` CLI command to run a single job [see `PR #1602 <https://github.com/FlexMeasures/flexmeasures/pull/1602>`_]
|
|
32
|
+
* Add toggle to show sensor statistics based on selected date range [see `PR #1535 <https://github.com/FlexMeasures/flexmeasures/pull/1535>`_, `PR #1543 <https://github.com/FlexMeasures/flexmeasures/pull/1543>`_ and `PR #1589 <https://github.com/FlexMeasures/flexmeasures/pull/1589>`_]
|
|
33
|
+
* Scale sensor data to the lowest unit on graphs with multiple sensors and same dimension. [see `PR #1534 <https://github.com/FlexMeasures/flexmeasures/pull/1534>`_ and `PR #1544 <https://github.com/FlexMeasures/flexmeasures/pull/1544>`_]
|
|
34
|
+
* Group statistics on the UI's sensor page by data source ID, and show the description and ID of each data source [see `PR #1548 <https://github.com/FlexMeasures/flexmeasures/pull/1548>`_]
|
|
35
|
+
|
|
36
|
+
Infrastructure / Support
|
|
37
|
+
----------------------
|
|
38
|
+
* Upgraded dependencies [see `PR #1527 <https://www.github.com/FlexMeasures/flexmeasures/pull/1527>`_, `PR #1532 <https://www.github.com/FlexMeasures/flexmeasures/pull/1532>`_ and `PR #1567 <https://www.github.com/FlexMeasures/flexmeasures/pull/1567>`_, `PR #1611 <https://www.github.com/FlexMeasures/flexmeasures/pull/1611>`_ and `PR #1613 <https://www.github.com/FlexMeasures/flexmeasures/pull/1613>`_]
|
|
39
|
+
* Improved authorization checks for modifying roles [see `PR #1517 <https://github.com/FlexMeasures/flexmeasures/pull/1517>`_]
|
|
40
|
+
* In authorization, prevent accidental errors by not matching empty principals [see `PR #1556 <https://github.com/FlexMeasures/flexmeasures/pull/1556>`_]
|
|
41
|
+
* Tests: guarantee a clean db upon creating the test db [see `PR #1518 <https://github.com/FlexMeasures/flexmeasures/pull/1518>`_]
|
|
42
|
+
* Stopped testing Python3.8 in our GitHub Actions CI [see `PR #1541 <https://github.com/FlexMeasures/flexmeasures/pull/1541>`_]
|
|
43
|
+
* Stopped auto-deploying to Seita's staging server on commits to main. Kept scripts and documentation how to do it. Added short description of the two existing CI workflows [see `PR #1552 <https://github.com/FlexMeasures/flexmeasures/pull/1552>`_]
|
|
44
|
+
* Explain white-labeling in documentation [see `PR #1587 <https://github.com/FlexMeasures/flexmeasures/pull/1587>`_]
|
|
45
|
+
* Changed example ``docker-compose.yaml`` to persist database on local volume [see `PR #1584 <https://github.com/FlexMeasures/flexmeasures/pull/1584>`_]
|
|
46
|
+
|
|
47
|
+
Bugfixes
|
|
48
|
+
-----------
|
|
49
|
+
* Prevent redundant second call to fetch chart data on page load and start replay button [see `PR #1586 <https://github.com/FlexMeasures/flexmeasures/pull/1586>`_ and `PR #1596 <https://github.com/FlexMeasures/flexmeasures/pull/1596>`_]
|
|
50
|
+
* On the asset context page, send the highest ancestor as site_asset (then the asset context view uses this to look up sensors for the flex-context) [see `PR #1581 <https://www.github.com/FlexMeasures/flexmeasures/pull/1581>`_]
|
|
51
|
+
* Fix support for using 3-digit hex colors in account color scheme [see `PR #1569 <https://github.com/FlexMeasures/flexmeasures/pull/1569>`_]
|
|
52
|
+
* Fix deletion of sensors in the UI, also move the delete button for assets & sensors to the bottom of the page [see `PR #1597 <https://github.com/FlexMeasures/flexmeasures/pull/1597>`_]
|
|
53
|
+
|
|
54
|
+
|
|
55
|
+
v0.26.1 | June 09, 2025
|
|
8
56
|
============================
|
|
9
57
|
|
|
58
|
+
Bugfixes
|
|
59
|
+
-----------
|
|
60
|
+
* Fixed backwards compatibility for users still using deprecated flex-context fields [see `PR #1528 <https://github.com/FlexMeasures/flexmeasures/pull/1528>`_]
|
|
61
|
+
* Show job information again on the job page on rq-dashboard [see `PR #1526 <https://github.com/FlexMeasures/flexmeasures/pull/1526>`_]
|
|
62
|
+
|
|
63
|
+
|
|
64
|
+
v0.26.0 | June 03, 2025
|
|
65
|
+
============================
|
|
66
|
+
|
|
67
|
+
.. note:: Read more on these features on `the FlexMeasures blog <https://flexmeasures.io/v026-relaxed-scheduling-cleaner-asset-pages/>`_.
|
|
68
|
+
|
|
69
|
+
.. warning:: Upgrading to this version requires running ``flexmeasures db upgrade`` (you can create a backup first with ``flexmeasures db-ops dump``).
|
|
70
|
+
|
|
10
71
|
New features
|
|
11
72
|
-------------
|
|
12
73
|
|
|
13
|
-
* Support saving the
|
|
74
|
+
* Support saving the scheduled :abbr:`SoC (state of charge)` by referencing an appropriate sensor in the ``flex-model`` field ``state-of-charge`` [see `PR #1392 <https://github.com/FlexMeasures/flexmeasures/pull/1392>`_ and `PR #1406 <https://github.com/FlexMeasures/flexmeasures/pull/1406>`_]
|
|
14
75
|
* Allow relaxing :abbr:`SoC (state of charge)` minima and maxima, by setting penalties for not meeting these constraints, using two new ``flex-context`` fields [see `PR #1300 <https://github.com/FlexMeasures/flexmeasures/pull/1300>`_]
|
|
15
76
|
* Allow relaxing device-level power constraints, by setting penalties for not meeting these constraints, using two new ``flex-context`` fields [see `PR #1405 <https://github.com/FlexMeasures/flexmeasures/pull/1405>`_]
|
|
77
|
+
* Add flex-context fields to toggle on/off relaxation of various constraints [see `PR #1511 <https://github.com/FlexMeasures/flexmeasures/pull/1511>`_]
|
|
78
|
+
* Add sensor attribute (``frequency``) to align incoming measurements to a specified time interval [see `PR #1461 <https://github.com/FlexMeasures/flexmeasures/pull/1461>`_]
|
|
16
79
|
* Save changes in asset flex-context form right away [see `PR #1390 <https://github.com/FlexMeasures/flexmeasures/pull/1390>`_]
|
|
17
80
|
* Extending sensor CRUD functionality to the UI [see `PR #1394 <https://github.com/FlexMeasures/flexmeasures/pull/1394>`_ and `PR #1413 <https://github.com/FlexMeasures/flexmeasures/pull/1413>`_]
|
|
18
81
|
* Marker clusters on the dashboard map expand in a tree to show the hierarchical relationship of the assets they represent [see `PR #1410 <https://github.com/FlexMeasures/flexmeasures/pull/1410>`_]
|
|
82
|
+
* Load the sensors individually on the Sensors status page. Reload the jobs table using Ajax calls. Improve page performance and avoid timeouts. [see `PR #1425 <https://github.com/FlexMeasures/flexmeasures/pull/1425>`_ and `PR #1466 <https://github.com/FlexMeasures/flexmeasures/pull/1466>`_]
|
|
83
|
+
* New pages for `Properties`, `Graphs`, `Context`, `Status` and `Audit Log`. Simplified the main asset page. [see `PR #1416 <https://github.com/FlexMeasures/flexmeasures/pull/1416>`_, `PR #1387 <https://github.com/FlexMeasures/flexmeasures/pull/1387>`_, `PR #1442 <https://github.com/FlexMeasures/flexmeasures/pull/1442>`_, `PR #1470 <https://github.com/FlexMeasures/flexmeasures/pull/1470>`_, `PR #1473 <https://github.com/FlexMeasures/flexmeasures/pull/1473>`_, `PR #1478 <https://github.com/FlexMeasures/flexmeasures/pull/1478>`_, `PR #1480<https://github.com/FlexMeasures/flexmeasures/pull/1480>`_ and `PR #1482 <https://github.com/FlexMeasures/flexmeasures/pull/1482>`_]
|
|
84
|
+
* Only show important sensors statuses (flex-context and graph sensors) on the status page [see `PR #1439 <https://github.com/FlexMeasures/flexmeasures/pull/1439>`_]
|
|
85
|
+
* Let the user interact with the breadcrumbs on asset graphs page when the graphs are loading [see `PR #1472 <https://github.com/FlexMeasures/flexmeasures/pull/1472>`_]
|
|
86
|
+
* Added DB migrations to apply server defaults to ``generic_asset`` and ``data_sources`` tables [see `PR #1488 <https://github.com/FlexMeasures/flexmeasures/pull/1488>`_]
|
|
87
|
+
* Show visually distinct siblings and children in the assets dropdown [see `PR #1504 <https://github.com/FlexMeasures/flexmeasures/pull/1504>`_]
|
|
88
|
+
* Add resolution back to the CLI belief plotting [see `PR #1500 <https://github.com/FlexMeasures/flexmeasures/pull/1500>`_]
|
|
89
|
+
* Improved permission validation for user role updates. [see `PR #1465 <https://github.com/FlexMeasures/flexmeasures/pull/1465>`_]
|
|
90
|
+
* Statistics shown in the UI default to that of the freshest source [see `PR #1399 <https://github.com/FlexMeasures/flexmeasures/pull/1399/>`_]
|
|
19
91
|
|
|
20
92
|
Infrastructure / Support
|
|
21
93
|
----------------------
|
|
22
|
-
*
|
|
94
|
+
* Move to using a ``pyproject.toml`` [see `PR #1419 <https://www.github.com/FlexMeasures/flexmeasures/pull/1419>`_]
|
|
95
|
+
* Upgraded dependencies [see `PR #1400 <https://www.github.com/FlexMeasures/flexmeasures/pull/1400>`_, `PR #1444 <https://www.github.com/FlexMeasures/flexmeasures/pull/1444>`_, `PR #1448 <https://www.github.com/FlexMeasures/flexmeasures/pull/1448>`_, `PR #1484 <https://www.github.com/FlexMeasures/flexmeasures/pull/1484>`_, `PR #1490 <https://www.github.com/FlexMeasures/flexmeasures/pull/1490>`_ and `PR #1497 <https://www.github.com/FlexMeasures/flexmeasures/pull/1497>`_]
|
|
23
96
|
* Save last N jobs from any queue and registry to a file, and support filtering by asset ID or sensor ID [see `PR #1411 <https://github.com/FlexMeasures/flexmeasures/pull/1411>`_]
|
|
97
|
+
* Prevent accidentally still logging a warning in case a reporter already stopped using the ``use_latest_version_only`` argument [see `PR #1510 <https://github.com/FlexMeasures/flexmeasures/pull/1510>`_]
|
|
98
|
+
* Describe four supported user roles explicitly (docs and code) [see `PR #1451 <https://github.com/FlexMeasures/flexmeasures/pull/1451>`_]
|
|
99
|
+
* Updated the directory structure for crud operations for assets, sensors, users and accounts [see `PR #1467 <https://github.com/FlexMeasures/flexmeasures/pull/1467>`_ and `PR #1471 <https://github.com/FlexMeasures/flexmeasures/pull/1471>`_]
|
|
100
|
+
* Docs: Add tutorial scripts [see `PR #1505 <https://github.com/FlexMeasures/flexmeasures/pull/1505>`_]
|
|
101
|
+
* Docs: fix graphs page for assets in toy tutorial, display plotted sensors when CLI shows asset info [see `PR #1501 <https://github.com/FlexMeasures/flexmeasures/pull/1501>`_]
|
|
24
102
|
|
|
25
103
|
Bugfixes
|
|
26
104
|
-----------
|
|
105
|
+
* Fixed two alternatives for expressing a variable quantity as a time series; specifically, those involving the ``duration`` field [see `PR #1433 <https://github.com/FlexMeasures/flexmeasures/pull/1433>`_]
|
|
106
|
+
* Fix the preference to delay curtailment of any device [see `PR #1498 <https://github.com/FlexMeasures/flexmeasures/pull/1498>`_ and `PR #1499 <https://github.com/FlexMeasures/flexmeasures/pull/1499>`_]
|
|
27
107
|
* The data dashboard now supports overlapping sensors with instantaneous and non-instantaneous resolutions [see `PR #1407 <https://github.com/FlexMeasures/flexmeasures/pull/1407>`_]
|
|
28
108
|
* Fix map not loading when editing an asset [see `PR #1414 <https://github.com/FlexMeasures/flexmeasures/pull/1414>`_]
|
|
109
|
+
* Fix ``flexmeasures add schedule for-storage`` after flex-context database migration [see `PR #1417 <https://github.com/FlexMeasures/flexmeasures/pull/1417>`_ and `PR #1449 <https://github.com/FlexMeasures/flexmeasures/pull/1449>`_]
|
|
110
|
+
* Fix overriding of flex-context when asset is edited on the UI [see `PR #1469 <https://github.com/FlexMeasures/flexmeasures/pull/1469>`_]
|
|
111
|
+
* Support entering audit log entries by detached user instances [see `PR #1483 <https://github.com/FlexMeasures/flexmeasures/pull/1483>`_]
|
|
112
|
+
* Make flex context usage safer against this field being `None` [see `PR #1503 <https://github.com/FlexMeasures/flexmeasures/pull/1503>`_]
|
|
29
113
|
|
|
30
114
|
|
|
31
115
|
v0.25.0 | April 01, 2025
|
|
@@ -48,7 +132,7 @@ Infrastructure / Support
|
|
|
48
132
|
* Support multi-asset scheduling in the ``StorageScheduler`` and job queueing - functionality for (plugin) developers (incl. prep work for future API endpoint for multi-asset scheduling) [see `PR #1313 <https://github.com/FlexMeasures/flexmeasures/pull/1313>`_]
|
|
49
133
|
* Support PV curtailment in the ``StorageScheduler`` [see `PR #1395 <https://github.com/FlexMeasures/flexmeasures/pull/1395>`_]
|
|
50
134
|
* Validate shared units are used in time series segments of flex-context prices [see `PR #1396 <https://github.com/FlexMeasures/flexmeasures/pull/1396>`_]
|
|
51
|
-
* Migrate data for the ``
|
|
135
|
+
* Migrate data for the ``flex-context`` of an asset to a dedicated column in the database table for assets [see `PR #1293 <https://github.com/FlexMeasures/flexmeasures/pull/1293>`_, `PR #1354 <https://github.com/FlexMeasures/flexmeasures/pull/1354>`_ and `PR #1380 <https://github.com/FlexMeasures/flexmeasures/pull/1380>`_]
|
|
52
136
|
* Enhance reporting infrastructure by ensuring that all ``Sensor.search_beliefs`` filters can be used as report parameters [see `PR #1318 <https://github.com/FlexMeasures/flexmeasures/pull/1318>`_]
|
|
53
137
|
* Improve searching for multi-sourced data by returning data from only the latest version of a data generator (e.g. forecaster or scheduler) by default, when using ``Sensor.search_beliefs`` [see `PR #1306 <https://github.com/FlexMeasures/flexmeasures/pull/1306>`_]
|
|
54
138
|
* Extra reporter tests [see `PR #1317 <https://github.com/FlexMeasures/flexmeasures/pull/1317>`_]
|
|
@@ -57,9 +141,6 @@ Infrastructure / Support
|
|
|
57
141
|
* Add utils doctests to our CI pipeline [see `PR #1347 <https://github.com/FlexMeasures/flexmeasures/pull/1347>`_]
|
|
58
142
|
* Clarify default limitations to concurrent connections [see `PR #1391 <https://github.com/FlexMeasures/flexmeasures/pull/1391>`_]
|
|
59
143
|
|
|
60
|
-
Bugfixes
|
|
61
|
-
-----------
|
|
62
|
-
|
|
63
144
|
|
|
64
145
|
v0.24.1 | February 27, 2025
|
|
65
146
|
============================
|
|
@@ -4,9 +4,14 @@
|
|
|
4
4
|
FlexMeasures CLI Changelog
|
|
5
5
|
**********************
|
|
6
6
|
|
|
7
|
-
since v0.
|
|
7
|
+
since v0.27.0 | July 20, 2025
|
|
8
|
+
=================================
|
|
9
|
+
* Add ``flexmeasures show assets`` CLI command for listing public assets and option ``--account <account-id>`` to list assets owned by a specific account.
|
|
10
|
+
|
|
11
|
+
since v0.26.0 | June 03, 2025
|
|
8
12
|
=================================
|
|
9
13
|
* Switch to ``flexmeasures jobs save-last`` CLI command for saving the last n canceled/deferred/failed/finished/scheduled/started jobs (from the scheduling queue, by default).
|
|
14
|
+
* Add ``flexmeasures show assets`` CLI command for listing public assets and option ``--account <account-id>`` to list assets owned by a specific account.
|
|
10
15
|
|
|
11
16
|
since v0.25.0 | April 01, 2025
|
|
12
17
|
=================================
|