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.
Files changed (594) hide show
  1. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/.github/PULL_REQUEST_TEMPLATE.md +35 -4
  2. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/.github/workflows/build.yml +4 -3
  3. flexmeasures-0.27.1.dev0/.github/workflows/codeql.yml +71 -0
  4. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/.github/workflows/lint-and-test.yml +4 -3
  5. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/.gitignore +2 -1
  6. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/Makefile +4 -3
  7. flexmeasures-0.27.1.dev0/PKG-INFO +169 -0
  8. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/ci/update-packages.sh +1 -1
  9. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/docker-compose.yml +3 -1
  10. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/documentation/api/change_log.rst +10 -0
  11. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/documentation/changelog.rst +88 -7
  12. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/documentation/cli/change_log.rst +6 -1
  13. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/documentation/cli/commands.rst +5 -1
  14. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/documentation/concepts/data-model.rst +19 -2
  15. flexmeasures-0.27.1.dev0/documentation/concepts/security_auth.rst +97 -0
  16. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/documentation/conf.py +3 -0
  17. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/documentation/configuration.rst +15 -1
  18. flexmeasures-0.26.0.dev1/documentation/dev/ci.rst → flexmeasures-0.27.1.dev0/documentation/dev/automated-deploy-via-GHActions.rst +87 -19
  19. flexmeasures-0.27.1.dev0/documentation/dev/ci.rst +27 -0
  20. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/documentation/dev/docker-compose.rst +7 -2
  21. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/documentation/dev/setup-and-guidelines.rst +2 -1
  22. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/documentation/dev/why.rst +1 -1
  23. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/documentation/features/forecasting.rst +2 -2
  24. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/documentation/features/scheduling.rst +23 -12
  25. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/documentation/getting-started.rst +2 -2
  26. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/documentation/host/docker.rst +2 -2
  27. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/documentation/host/installation.rst +69 -6
  28. flexmeasures-0.27.1.dev0/documentation/host/white-labelling.rst +20 -0
  29. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/documentation/index.rst +8 -6
  30. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/documentation/plugin/customisation.rst +6 -2
  31. flexmeasures-0.27.1.dev0/documentation/puppeteer-config.json +3 -0
  32. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/documentation/tut/forecasting_scheduling.rst +23 -5
  33. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/documentation/tut/posting_data.rst +28 -10
  34. flexmeasures-0.27.1.dev0/documentation/tut/scripts/Readme.md +24 -0
  35. flexmeasures-0.27.1.dev0/documentation/tut/scripts/run-tutorial-in-docker.sh +42 -0
  36. flexmeasures-0.27.1.dev0/documentation/tut/scripts/run-tutorial2-in-docker.sh +50 -0
  37. flexmeasures-0.27.1.dev0/documentation/tut/scripts/run-tutorial3-in-docker.sh +25 -0
  38. flexmeasures-0.27.1.dev0/documentation/tut/scripts/run-tutorial4-in-docker.sh +99 -0
  39. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/documentation/tut/toy-example-expanded.rst +137 -15
  40. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/documentation/tut/toy-example-from-scratch.rst +69 -7
  41. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/documentation/tut/toy-example-process.rst +15 -16
  42. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/documentation/tut/toy-example-reporter.rst +49 -42
  43. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/documentation/tut/toy-example-setup.rst +28 -26
  44. flexmeasures-0.27.1.dev0/documentation/views/asset-data.rst +163 -0
  45. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/documentation/views/dashboard.rst +2 -2
  46. flexmeasures-0.27.1.dev0/documentation/views/sensors.rst +36 -0
  47. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/api/common/responses.py +1 -1
  48. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/api/common/schemas/sensor_data.py +8 -3
  49. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/api/common/schemas/tests/test_sensor_data_schema.py +19 -11
  50. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/api/common/utils/args_parsing.py +21 -3
  51. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/api/tests/utils.py +8 -1
  52. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/api/v3_0/accounts.py +6 -8
  53. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/api/v3_0/assets.py +357 -25
  54. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/api/v3_0/sensors.py +183 -28
  55. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/api/v3_0/tests/conftest.py +14 -0
  56. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/api/v3_0/tests/test_accounts_api.py +27 -0
  57. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/api/v3_0/tests/test_api_v3_0_users.py +41 -2
  58. {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
  59. flexmeasures-0.27.1.dev0/flexmeasures/api/v3_0/tests/test_asset_schedules_fresh_db.py +289 -0
  60. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/api/v3_0/tests/test_assets_api.py +44 -51
  61. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/api/v3_0/tests/test_sensor_data_fresh_db.py +37 -0
  62. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/api/v3_0/tests/test_sensor_schedules.py +20 -11
  63. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/api/v3_0/tests/test_sensors_api.py +246 -42
  64. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/api/v3_0/tests/utils.py +19 -1
  65. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/api/v3_0/users.py +60 -29
  66. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/app.py +17 -3
  67. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/auth/policy.py +53 -3
  68. flexmeasures-0.27.1.dev0/flexmeasures/auth/tests/test_perm.py +208 -0
  69. flexmeasures-0.27.1.dev0/flexmeasures/auth/tests/test_principal_matching.py +196 -0
  70. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/cli/data_add.py +46 -28
  71. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/cli/data_delete.py +1 -1
  72. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/cli/data_show.py +68 -11
  73. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/cli/jobs.py +31 -3
  74. flexmeasures-0.27.1.dev0/flexmeasures/cli/tests/test_data_add.py +97 -0
  75. 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
  76. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/cli/utils.py +24 -0
  77. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/conftest.py +77 -5
  78. flexmeasures-0.27.1.dev0/flexmeasures/data/migrations/versions/0f64e22d6b9e_add_tf_totp_secret_column.py +70 -0
  79. flexmeasures-0.27.1.dev0/flexmeasures/data/migrations/versions/4dabf9663866_set_defaults_for_flex_context_and_.py +43 -0
  80. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/migrations/versions/ad98460751d9_remove_obsolete_tables.py +1 -5
  81. flexmeasures-0.27.1.dev0/flexmeasures/data/migrations/versions/ece7fb4207ed_adding_default_for_data_source_.py +33 -0
  82. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/models/audit_log.py +14 -11
  83. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/models/charts/belief_charts.py +439 -7
  84. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/models/generic_assets.py +78 -13
  85. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/models/planning/__init__.py +42 -31
  86. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/models/planning/storage.py +80 -67
  87. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/models/planning/tests/test_solver.py +17 -13
  88. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/models/planning/tests/test_storage.py +21 -68
  89. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/models/planning/tests/utils.py +22 -2
  90. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/models/planning/utils.py +7 -4
  91. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/models/reporting/pandas_reporter.py +1 -1
  92. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/models/time_series.py +51 -11
  93. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/models/user.py +25 -6
  94. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/schemas/account.py +3 -3
  95. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/schemas/generic_assets.py +27 -16
  96. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/schemas/reporting/__init__.py +1 -1
  97. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/schemas/reporting/pandas_reporter.py +1 -1
  98. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/schemas/reporting/profit.py +4 -4
  99. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/schemas/scheduling/__init__.py +69 -73
  100. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/schemas/scheduling/storage.py +4 -2
  101. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/schemas/sensors.py +155 -12
  102. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/schemas/tests/test_scheduling.py +7 -0
  103. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/schemas/users.py +12 -5
  104. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/schemas/utils.py +40 -1
  105. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/scripts/data_gen.py +12 -4
  106. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/services/scheduling.py +37 -14
  107. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/services/sensors.py +141 -60
  108. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/services/time_series.py +37 -18
  109. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/services/users.py +6 -0
  110. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/services/utils.py +18 -3
  111. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/tests/test_scheduling_simultaneous.py +17 -6
  112. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/utils.py +7 -4
  113. flexmeasures-0.27.1.dev0/flexmeasures/templates/security/_macros.html +38 -0
  114. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/ui/__init__.py +11 -3
  115. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/ui/static/css/flexmeasures.css +78 -18
  116. flexmeasures-0.27.1.dev0/flexmeasures/ui/static/examples/sensors-data.xlsx +0 -0
  117. flexmeasures-0.27.1.dev0/flexmeasures/ui/static/js/daterange-utils.js +207 -0
  118. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/ui/static/js/flexmeasures.js +159 -0
  119. flexmeasures-0.27.1.dev0/flexmeasures/ui/templates/_macros.html +204 -0
  120. {flexmeasures-0.26.0.dev1/flexmeasures/ui/templates/crud → flexmeasures-0.27.1.dev0/flexmeasures/ui/templates/accounts}/account.html +20 -20
  121. flexmeasures-0.27.1.dev0/flexmeasures/ui/templates/admin/login_user.html +59 -0
  122. flexmeasures-0.27.1.dev0/flexmeasures/ui/templates/admin/two_factor_verify_code.html +67 -0
  123. {flexmeasures-0.26.0.dev1/flexmeasures/ui/templates/crud → flexmeasures-0.27.1.dev0/flexmeasures/ui/templates/assets}/asset_audit_log.html +1 -0
  124. 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
  125. flexmeasures-0.27.1.dev0/flexmeasures/ui/templates/assets/asset_graph.html +828 -0
  126. {flexmeasures-0.26.0.dev1/flexmeasures/ui/templates/crud → flexmeasures-0.27.1.dev0/flexmeasures/ui/templates/assets}/asset_new.html +15 -13
  127. flexmeasures-0.27.1.dev0/flexmeasures/ui/templates/assets/asset_properties.html +386 -0
  128. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/ui/templates/base.html +338 -120
  129. flexmeasures-0.26.0.dev1/flexmeasures/ui/templates/views/new_dashboard.html → flexmeasures-0.27.1.dev0/flexmeasures/ui/templates/dashboard.html +35 -17
  130. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/ui/templates/defaults.jinja +2 -2
  131. flexmeasures-0.26.0.dev1/flexmeasures/ui/templates/views/sensors.html → flexmeasures-0.27.1.dev0/flexmeasures/ui/templates/sensors/index.html +88 -124
  132. {flexmeasures-0.26.0.dev1/flexmeasures/ui/templates/crud → flexmeasures-0.27.1.dev0/flexmeasures/ui/templates/sensors}/sensor_new.html +2 -7
  133. flexmeasures-0.27.1.dev0/flexmeasures/ui/templates/sensors/status.html +363 -0
  134. flexmeasures-0.27.1.dev0/flexmeasures/ui/templates/teaser.html +54 -0
  135. flexmeasures-0.27.1.dev0/flexmeasures/ui/templates/users/user.html +321 -0
  136. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/ui/tests/test_account_crud.py +30 -5
  137. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/ui/tests/test_asset_crud.py +24 -16
  138. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/ui/tests/test_assets_utils.py +1 -1
  139. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/ui/tests/test_views.py +0 -6
  140. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/ui/utils/breadcrumb_utils.py +58 -4
  141. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/ui/utils/color_defaults.py +47 -0
  142. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/ui/utils/view_utils.py +56 -11
  143. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/ui/views/__init__.py +2 -3
  144. {flexmeasures-0.26.0.dev1/flexmeasures/ui/crud → flexmeasures-0.27.1.dev0/flexmeasures/ui/views}/accounts.py +11 -4
  145. flexmeasures-0.27.1.dev0/flexmeasures/ui/views/assets/__init__.py +11 -0
  146. {flexmeasures-0.26.0.dev1/flexmeasures/ui/crud → flexmeasures-0.27.1.dev0/flexmeasures/ui/views}/assets/forms.py +19 -18
  147. {flexmeasures-0.26.0.dev1/flexmeasures/ui/crud → flexmeasures-0.27.1.dev0/flexmeasures/ui/views}/assets/utils.py +137 -6
  148. {flexmeasures-0.26.0.dev1/flexmeasures/ui/crud → flexmeasures-0.27.1.dev0/flexmeasures/ui/views}/assets/views.py +165 -94
  149. flexmeasures-0.26.0.dev1/flexmeasures/ui/views/new_dashboard.py → flexmeasures-0.27.1.dev0/flexmeasures/ui/views/dashboard.py +1 -1
  150. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/ui/views/sensors.py +5 -2
  151. flexmeasures-0.27.1.dev0/flexmeasures/ui/views/users/__init__.py +0 -0
  152. flexmeasures-0.26.0.dev1/flexmeasures/ui/crud/users.py → flexmeasures-0.27.1.dev0/flexmeasures/ui/views/users/views.py +21 -4
  153. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/utils/app_utils.py +85 -1
  154. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/utils/config_defaults.py +24 -0
  155. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/utils/config_utils.py +10 -3
  156. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/utils/plugin_utils.py +0 -5
  157. flexmeasures-0.27.1.dev0/flexmeasures/utils/tests/__init__.py +0 -0
  158. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/utils/unit_utils.py +54 -0
  159. flexmeasures-0.27.1.dev0/flexmeasures.egg-info/PKG-INFO +169 -0
  160. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures.egg-info/SOURCES.txt +49 -29
  161. flexmeasures-0.27.1.dev0/flexmeasures.egg-info/requires.txt +55 -0
  162. flexmeasures-0.27.1.dev0/pyproject.toml +51 -0
  163. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/requirements/3.10/app.txt +93 -51
  164. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/requirements/3.10/dev.txt +21 -10
  165. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/requirements/3.10/docs.txt +16 -7
  166. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/requirements/3.10/test.txt +27 -20
  167. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/requirements/3.11/app.txt +93 -49
  168. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/requirements/3.11/dev.txt +19 -10
  169. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/requirements/3.11/docs.txt +13 -6
  170. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/requirements/3.11/test.txt +22 -15
  171. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/requirements/3.12/app.txt +93 -49
  172. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/requirements/3.12/dev.txt +19 -10
  173. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/requirements/3.12/docs.txt +13 -6
  174. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/requirements/3.12/test.txt +22 -15
  175. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/requirements/3.8/app.txt +66 -25
  176. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/requirements/3.8/dev.txt +23 -6
  177. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/requirements/3.8/docs.txt +12 -5
  178. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/requirements/3.8/test.txt +15 -10
  179. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/requirements/3.9/app.txt +90 -45
  180. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/requirements/3.9/dev.txt +30 -10
  181. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/requirements/3.9/docs.txt +18 -9
  182. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/requirements/3.9/test.txt +28 -19
  183. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/requirements/app.in +11 -9
  184. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/requirements/dev.in +3 -0
  185. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/requirements/docs.in +1 -0
  186. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/requirements/test.in +2 -2
  187. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/setup.cfg +1 -1
  188. flexmeasures-0.27.1.dev0/setup.py +28 -0
  189. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/to_pypi.sh +8 -2
  190. flexmeasures-0.26.0.dev1/.github/workflows/deploy.yml +0 -33
  191. flexmeasures-0.26.0.dev1/PKG-INFO +0 -44
  192. flexmeasures-0.26.0.dev1/ci/DEPLOY.sh +0 -10
  193. flexmeasures-0.26.0.dev1/documentation/concepts/security_auth.rst +0 -54
  194. flexmeasures-0.26.0.dev1/documentation/views/asset-data.rst +0 -133
  195. flexmeasures-0.26.0.dev1/flexmeasures/api/common/schemas/generic_assets.py +0 -25
  196. flexmeasures-0.26.0.dev1/flexmeasures/auth/tests/test_principal_matching.py +0 -97
  197. flexmeasures-0.26.0.dev1/flexmeasures/ui/crud/__init__.py +0 -3
  198. flexmeasures-0.26.0.dev1/flexmeasures/ui/crud/assets/__init__.py +0 -11
  199. flexmeasures-0.26.0.dev1/flexmeasures/ui/static/js/daterange-utils.js +0 -70
  200. flexmeasures-0.26.0.dev1/flexmeasures/ui/templates/admin/login_user.html +0 -115
  201. flexmeasures-0.26.0.dev1/flexmeasures/ui/templates/crud/user.html +0 -123
  202. flexmeasures-0.26.0.dev1/flexmeasures/ui/templates/views/control.html +0 -268
  203. flexmeasures-0.26.0.dev1/flexmeasures/ui/templates/views/status.html +0 -182
  204. flexmeasures-0.26.0.dev1/flexmeasures/ui/views/control.py +0 -21
  205. flexmeasures-0.26.0.dev1/flexmeasures.egg-info/PKG-INFO +0 -44
  206. flexmeasures-0.26.0.dev1/pyproject.toml +0 -71
  207. flexmeasures-0.26.0.dev1/requirements.txt +0 -381
  208. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/.coveragerc +0 -0
  209. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/.flaskenv +0 -0
  210. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/.github/issue-branch.yml +0 -0
  211. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/.github/workflows/generate-dummy-price.sh +0 -0
  212. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/.pre-commit-config.yaml +0 -0
  213. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/.readthedocs.yaml +0 -0
  214. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/.vscode/settings.json +0 -0
  215. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/.vscode/spellright.dict +0 -0
  216. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/Dockerfile +0 -0
  217. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/LICENSE +0 -0
  218. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/NOTICE +0 -0
  219. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/README.md +0 -0
  220. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/ci/Dockerfile.update +0 -0
  221. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/ci/Readme.md +0 -0
  222. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/ci/install-cbc-from-source.sh +0 -0
  223. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/ci/load-psql-extensions.sql +0 -0
  224. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/ci/run_mypy.sh +0 -0
  225. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/ci/setup-postgres.sh +0 -0
  226. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/documentation/Makefile +0 -0
  227. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/documentation/_static/css/custom.css +0 -0
  228. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/documentation/_templates/custom-module-template.rst +0 -0
  229. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/documentation/api/aggregator.rst +0 -0
  230. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/documentation/api/dev.rst +0 -0
  231. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/documentation/api/introduction.rst +0 -0
  232. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/documentation/api/mdc.rst +0 -0
  233. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/documentation/api/notation.rst +0 -0
  234. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/documentation/api/prosumer.rst +0 -0
  235. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/documentation/api/supplier.rst +0 -0
  236. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/documentation/api/v1.rst +0 -0
  237. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/documentation/api/v1_1.rst +0 -0
  238. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/documentation/api/v1_2.rst +0 -0
  239. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/documentation/api/v1_3.rst +0 -0
  240. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/documentation/api/v2_0.rst +0 -0
  241. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/documentation/api/v3_0.rst +0 -0
  242. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/documentation/concepts/algorithms.rst +0 -0
  243. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/documentation/concepts/device_scheduler.rst +0 -0
  244. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/documentation/concepts/flexibility.rst +0 -0
  245. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/documentation/concepts/users.rst +0 -0
  246. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/documentation/dev/api.rst +0 -0
  247. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/documentation/dev/auth.rst +0 -0
  248. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/documentation/dev/dependency-management.rst +0 -0
  249. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/documentation/dev/note-on-datamodel-transition.rst +0 -0
  250. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/documentation/features/reporting.rst +0 -0
  251. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/documentation/get-in-touch.rst +0 -0
  252. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/documentation/host/data.rst +0 -0
  253. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/documentation/host/deployment.rst +0 -0
  254. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/documentation/host/error-monitoring.rst +0 -0
  255. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/documentation/host/modes.rst +0 -0
  256. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/documentation/host/queues.rst +0 -0
  257. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/documentation/make.bat +0 -0
  258. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/documentation/notes/macOS-docker-port-note.rst +0 -0
  259. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/documentation/notes/macOS-port-note.rst +0 -0
  260. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/documentation/plugin/introduction.rst +0 -0
  261. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/documentation/plugin/showcase.rst +0 -0
  262. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/documentation/tut/building_uis.rst +0 -0
  263. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/documentation/tut/flex-model-v2g.rst +0 -0
  264. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/documentation/views/account.rst +0 -0
  265. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/documentation/views/admin.rst +0 -0
  266. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/Readme.md +0 -0
  267. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/__init__.py +0 -0
  268. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/api/Readme.md +0 -0
  269. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/api/__init__.py +0 -0
  270. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/api/common/__init__.py +0 -0
  271. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/api/common/implementations.py +0 -0
  272. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/api/common/routes.py +0 -0
  273. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/api/common/schemas/__init__.py +0 -0
  274. /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
  275. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/api/common/schemas/search.py +0 -0
  276. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/api/common/schemas/sensors.py +0 -0
  277. {flexmeasures-0.26.0.dev1/flexmeasures/api/common/utils → flexmeasures-0.27.1.dev0/flexmeasures/api/common/schemas/tests}/__init__.py +0 -0
  278. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/api/common/schemas/tests/test_sensors.py +0 -0
  279. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/api/common/schemas/users.py +0 -0
  280. {flexmeasures-0.26.0.dev1/flexmeasures/api/dev/tests → flexmeasures-0.27.1.dev0/flexmeasures/api/common/utils}/__init__.py +0 -0
  281. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/api/common/utils/api_utils.py +0 -0
  282. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/api/common/utils/deprecation_utils.py +0 -0
  283. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/api/common/utils/validators.py +0 -0
  284. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/api/conftest.py +0 -0
  285. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/api/dev/__init__.py +0 -0
  286. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/api/dev/sensors.py +0 -0
  287. {flexmeasures-0.26.0.dev1/flexmeasures/api/sunset → flexmeasures-0.27.1.dev0/flexmeasures/api/dev}/tests/__init__.py +0 -0
  288. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/api/dev/tests/conftest.py +0 -0
  289. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/api/play/__init__.py +0 -0
  290. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/api/play/implementations.py +0 -0
  291. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/api/play/routes.py +0 -0
  292. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/api/sunset/__init__.py +0 -0
  293. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/api/sunset/routes.py +0 -0
  294. {flexmeasures-0.26.0.dev1/flexmeasures/api/v3_0 → flexmeasures-0.27.1.dev0/flexmeasures/api/sunset}/tests/__init__.py +0 -0
  295. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/api/sunset/tests/test_sunset.py +0 -0
  296. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/api/tests/conftest.py +0 -0
  297. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/api/tests/test_auth_token.py +0 -0
  298. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/api/tests/test_ping.py +0 -0
  299. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/api/tests/test_task_runs.py +0 -0
  300. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/api/v3_0/__init__.py +0 -0
  301. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/api/v3_0/health.py +0 -0
  302. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/api/v3_0/public.py +0 -0
  303. {flexmeasures-0.26.0.dev1/flexmeasures/cli → flexmeasures-0.27.1.dev0/flexmeasures/api/v3_0}/tests/__init__.py +0 -0
  304. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/api/v3_0/tests/test_assets_api_fresh_db.py +0 -0
  305. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/api/v3_0/tests/test_sensor_data.py +0 -0
  306. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/api/v3_0/tests/test_sensor_schedules_fresh_db.py +0 -0
  307. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/auth/__init__.py +0 -0
  308. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/auth/decorators.py +0 -0
  309. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/auth/error_handling.py +0 -0
  310. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/cli/Readme.md +0 -0
  311. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/cli/__init__.py +0 -0
  312. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/cli/data_edit.py +0 -0
  313. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/cli/db_ops.py +0 -0
  314. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/cli/monitor.py +0 -0
  315. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/cli/scripts/add_scripts_path.sh +0 -0
  316. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/cli/scripts/click-complete.bash +0 -0
  317. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/cli/scripts/click-complete.fish +0 -0
  318. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/cli/scripts/click-complete.zsh +0 -0
  319. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/cli/testing.py +0 -0
  320. {flexmeasures-0.26.0.dev1/flexmeasures/data/models/forecasting/model_specs → flexmeasures-0.27.1.dev0/flexmeasures/cli/tests}/__init__.py +0 -0
  321. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/cli/tests/conftest.py +0 -0
  322. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/cli/tests/test_data_delete.py +0 -0
  323. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/cli/tests/test_data_edit.py +0 -0
  324. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/cli/tests/test_data_show.py +0 -0
  325. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/cli/tests/test_utils.py +0 -0
  326. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/cli/tests/utils.py +0 -0
  327. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/Readme.md +0 -0
  328. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/__init__.py +0 -0
  329. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/config.py +0 -0
  330. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/migrations/README +0 -0
  331. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/migrations/alembic.ini +0 -0
  332. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/migrations/env.py +0 -0
  333. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/migrations/script.py.mako +0 -0
  334. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/migrations/versions/01fe99da5716_initial.py +0 -0
  335. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/migrations/versions/02ddbbff29a7_naming_conventions.py +0 -0
  336. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/migrations/versions/038bab973c40_add_unique_constraint_for_sensor_names_.py +0 -0
  337. {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
  338. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/migrations/versions/0af134879301_merge.py +0 -0
  339. {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
  340. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/migrations/versions/126d65cbe6b4_asset_audit_log.py +0 -0
  341. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/migrations/versions/1a4f0e5c4b86_unique_userids_in_ds.py +0 -0
  342. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/migrations/versions/1ae32ffc8c3f_rename_data_source_unique_constraint.py +0 -0
  343. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/migrations/versions/1b64acf01809_forecasting_job_table.py +0 -0
  344. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/migrations/versions/1bcccdf0c3e1_unique_usernames.py +0 -0
  345. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/migrations/versions/1e8d27922f56_create_price_table.py +0 -0
  346. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/migrations/versions/202505c5cb06_assets_inflexible_sensors_table_.py +0 -0
  347. {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
  348. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/migrations/versions/26373d8266db_owner_deletion_deletes_assets_and_power.py +0 -0
  349. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/migrations/versions/2ac7fb39ce0c_add_attribute_column_to_data_source.py +0 -0
  350. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/migrations/versions/2ba59c7c954e_clean_sensors_to_show_from_asset_.py +0 -0
  351. {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
  352. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/migrations/versions/30f7b63069e1_delete_asset_if_sensor_is_deleted.py +0 -0
  353. {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
  354. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/migrations/versions/31f251554682_merge.py +0 -0
  355. {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
  356. {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
  357. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/migrations/versions/3e43d3274d16_Asset_soc_udi_event_id.py +0 -0
  358. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/migrations/versions/3eb0564948ca_add_search_index_for_single_belief_.py +0 -0
  359. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/migrations/versions/40d6c8e4be94_add_parent_asset_id_column.py +0 -0
  360. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/migrations/versions/45d937300b0f_create_measurement_table.py +0 -0
  361. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/migrations/versions/4b5aa7856932_added_primary_and_secondary_color_field_.py +0 -0
  362. {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
  363. {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
  364. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/migrations/versions/521034349543_add_consultancy_account_to_account.py +0 -0
  365. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/migrations/versions/524800c11eec_add_warning_and_error_as_annotations_.py +0 -0
  366. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/migrations/versions/550a9020f1bf_default_resolution_for_existing_sensors.py +0 -0
  367. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/migrations/versions/564e8df4e3a9_stop_using_bvp_in_table_names.py +0 -0
  368. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/migrations/versions/565e092a6c5e_introduce_the_GenericAssetType_table.py +0 -0
  369. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/migrations/versions/5a9473a817cb_merge_a60cc43aef5e_and_521034349543.py +0 -0
  370. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/migrations/versions/5d39829d91af_create_data_sources_table.py +0 -0
  371. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/migrations/versions/61bfc6e45c4d_add_soc_columns_in_asset_table.py +0 -0
  372. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/migrations/versions/650b085c0ad3_consolidate_data_source_after_storage_.py +0 -0
  373. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/migrations/versions/6938f16617ab_add_search_index_for_beliefs.py +0 -0
  374. {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
  375. {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
  376. {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
  377. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/migrations/versions/7987667dbd43_add_asset_type_hover_label.py +0 -0
  378. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/migrations/versions/7f8b8920355f_create_annotation_table.py +0 -0
  379. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/migrations/versions/81cbbf42357b_added_audit_log_table.py +0 -0
  380. {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
  381. {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
  382. {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
  383. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/migrations/versions/919dc9f1dc1f_merge.py +0 -0
  384. {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
  385. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/migrations/versions/9254559dcac2_create_market_type_and_market_tables.py +0 -0
  386. {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
  387. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/migrations/versions/96f2db5bed30_add_account_roles.py +0 -0
  388. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/migrations/versions/994170c26bc6_add_account_table.py +0 -0
  389. {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
  390. {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
  391. {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
  392. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/migrations/versions/a528c3c81506_unique_generic_sensor_ids.py +0 -0
  393. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/migrations/versions/a5b970eadb3b_time_series_indexes.py +0 -0
  394. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/migrations/versions/a60cc43aef5e_delete_children_assets_on_cascade_when_.py +0 -0
  395. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/migrations/versions/a918360f7d63_add_unique_contraints_on_.py +0 -0
  396. {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
  397. {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
  398. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/migrations/versions/b087ce8b529f_create_latest_task_run_table.py +0 -0
  399. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/migrations/versions/b2b43f0eec40_weathersensors_unique_type_location.py +0 -0
  400. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/migrations/versions/b6d49ed7cceb_introduce_the_GenericAsset_table.py +0 -0
  401. {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
  402. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/migrations/versions/bddc5e9f72a3_add_event_resolution_field_to_asset_.py +0 -0
  403. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/migrations/versions/c1d316c60985_merge.py +0 -0
  404. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/migrations/versions/c349f52c700d_update_data_sources.py +0 -0
  405. {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
  406. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/migrations/versions/cb8df44ebda5_flexcontext_field.py +0 -0
  407. {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
  408. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/migrations/versions/d814c0688ae0_merge.py +0 -0
  409. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/migrations/versions/db00b66be82c_add_horizon_columns_as_primary_keys.py +0 -0
  410. {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
  411. {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
  412. {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
  413. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/migrations/versions/e62ac5f519d7_create_table_for_timed_beliefs.py +0 -0
  414. {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
  415. {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
  416. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/models/__init__.py +0 -0
  417. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/models/annotations.py +0 -0
  418. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/models/charts/__init__.py +0 -0
  419. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/models/charts/defaults.py +0 -0
  420. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/models/charts/readme.md +0 -0
  421. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/models/charts/test_chart_defaults.py +0 -0
  422. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/models/data_sources.py +0 -0
  423. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/models/forecasting/__init__.py +0 -0
  424. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/models/forecasting/exceptions.py +0 -0
  425. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/models/forecasting/model_spec_factory.py +0 -0
  426. {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
  427. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/models/forecasting/model_specs/linear_regression.py +0 -0
  428. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/models/forecasting/model_specs/naive.py +0 -0
  429. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/models/forecasting/utils.py +0 -0
  430. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/models/legacy_migration_utils.py +0 -0
  431. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/models/parsing_utils.py +0 -0
  432. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/models/planning/battery.py +0 -0
  433. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/models/planning/charging_station.py +0 -0
  434. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/models/planning/exceptions.py +0 -0
  435. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/models/planning/linear_optimization.py +0 -0
  436. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/models/planning/process.py +0 -0
  437. {flexmeasures-0.26.0.dev1/flexmeasures/data/models/reporting → flexmeasures-0.27.1.dev0/flexmeasures/data/models/planning}/tests/__init__.py +0 -0
  438. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/models/planning/tests/conftest.py +0 -0
  439. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/models/planning/tests/test_process.py +0 -0
  440. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/models/planning/tests/test_storage_utils.py +0 -0
  441. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/models/reporting/__init__.py +0 -0
  442. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/models/reporting/aggregator.py +0 -0
  443. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/models/reporting/profit.py +0 -0
  444. {flexmeasures-0.26.0.dev1/flexmeasures/data/schemas → flexmeasures-0.27.1.dev0/flexmeasures/data/models/reporting}/tests/__init__.py +0 -0
  445. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/models/reporting/tests/conftest.py +0 -0
  446. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/models/reporting/tests/test_aggregator.py +0 -0
  447. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/models/reporting/tests/test_pandas_reporter.py +0 -0
  448. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/models/reporting/tests/test_profit_reporter.py +0 -0
  449. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/models/reporting/tests/test_tibber_reporter.py +0 -0
  450. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/models/task_runs.py +0 -0
  451. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/models/validation_utils.py +0 -0
  452. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/models/weather.py +0 -0
  453. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/queries/__init__.py +0 -0
  454. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/queries/annotations.py +0 -0
  455. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/queries/data_sources.py +0 -0
  456. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/queries/generic_assets.py +0 -0
  457. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/queries/sensors.py +0 -0
  458. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/queries/users.py +0 -0
  459. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/queries/utils.py +0 -0
  460. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/schemas/__init__.py +0 -0
  461. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/schemas/attributes.py +0 -0
  462. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/schemas/io.py +0 -0
  463. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/schemas/locations.py +0 -0
  464. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/schemas/reporting/aggregation.py +0 -0
  465. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/schemas/scheduling/process.py +0 -0
  466. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/schemas/sources.py +0 -0
  467. {flexmeasures-0.26.0.dev1/flexmeasures/data → flexmeasures-0.27.1.dev0/flexmeasures/data/schemas}/tests/__init__.py +0 -0
  468. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/schemas/tests/conftest.py +0 -0
  469. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/schemas/tests/test_input_schema.py +0 -0
  470. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/schemas/tests/test_latitude_longitude.py +0 -0
  471. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/schemas/tests/test_reporting.py +0 -0
  472. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/schemas/tests/test_sensor.py +0 -0
  473. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/schemas/tests/test_times.py +0 -0
  474. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/schemas/times.py +0 -0
  475. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/schemas/units.py +0 -0
  476. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/scripts/__init__.py +0 -0
  477. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/scripts/clean_database.sh +0 -0
  478. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/scripts/visualize_data_model.py +0 -0
  479. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/services/__init__.py +0 -0
  480. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/services/accounts.py +0 -0
  481. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/services/annotations.py +0 -0
  482. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/services/asset_grouping.py +0 -0
  483. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/services/data_sources.py +0 -0
  484. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/services/forecasting.py +0 -0
  485. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/services/job_cache.py +0 -0
  486. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/services/timerange.py +0 -0
  487. {flexmeasures-0.26.0.dev1/flexmeasures/ui → flexmeasures-0.27.1.dev0/flexmeasures/data}/tests/__init__.py +0 -0
  488. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/tests/conftest.py +0 -0
  489. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/tests/dummy_scheduler.py +0 -0
  490. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/tests/test_SensorsToShowSchema.py +0 -0
  491. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/tests/test_accounts.py +0 -0
  492. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/tests/test_annotations.py +0 -0
  493. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/tests/test_chart_utils.py +0 -0
  494. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/tests/test_data_source.py +0 -0
  495. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/tests/test_forecasting_jobs.py +0 -0
  496. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/tests/test_forecasting_jobs_fresh_db.py +0 -0
  497. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/tests/test_generic_assets.py +0 -0
  498. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/tests/test_job_cache.py +0 -0
  499. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/tests/test_queries.py +0 -0
  500. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/tests/test_scheduling_jobs.py +0 -0
  501. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/tests/test_scheduling_jobs_fresh_db.py +0 -0
  502. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/tests/test_scheduling_repeated_jobs.py +0 -0
  503. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/tests/test_scheduling_repeated_jobs_fresh_db.py +0 -0
  504. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/tests/test_scheduling_sequential.py +0 -0
  505. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/tests/test_sensor_queries.py +0 -0
  506. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/tests/test_time_series_services.py +0 -0
  507. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/tests/test_timerange_services.py +0 -0
  508. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/tests/test_user_services.py +0 -0
  509. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/tests/utils.py +0 -0
  510. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/data/transactional.py +0 -0
  511. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/templates/security/email/reset_instructions.html +0 -0
  512. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/templates/security/email/reset_instructions.txt +0 -0
  513. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/templates/security/email/reset_notice.html +0 -0
  514. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/templates/security/email/reset_notice.txt +0 -0
  515. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/tests/__init__.py +0 -0
  516. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/tests/test_highlevel_class_imports.py +0 -0
  517. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/tests/utils.py +0 -0
  518. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/ui/error_handlers.py +0 -0
  519. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/ui/static/css/external/rq-dashboard-bootstrap.min.css +0 -0
  520. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/ui/static/css/external/weather-icons.min.css +0 -0
  521. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/ui/static/css/font/weathericons-regular-webfont.eot +0 -0
  522. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/ui/static/css/font/weathericons-regular-webfont.svg +0 -0
  523. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/ui/static/css/font/weathericons-regular-webfont.ttf +0 -0
  524. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/ui/static/css/font/weathericons-regular-webfont.woff +0 -0
  525. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/ui/static/css/font/weathericons-regular-webfont.woff2 +0 -0
  526. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/ui/static/css/fonts/FontAwesome.otf +0 -0
  527. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/ui/static/css/fonts/fontawesome-webfont.eot +0 -0
  528. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/ui/static/css/fonts/fontawesome-webfont.svg +0 -0
  529. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/ui/static/css/fonts/fontawesome-webfont.ttf +0 -0
  530. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/ui/static/css/fonts/fontawesome-webfont.woff +0 -0
  531. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/ui/static/css/fonts/fontawesome-webfont.woff2 +0 -0
  532. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/ui/static/css/fonts/glyphicons-halflings-regular.eot +0 -0
  533. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/ui/static/css/fonts/glyphicons-halflings-regular.svg +0 -0
  534. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/ui/static/css/fonts/glyphicons-halflings-regular.ttf +0 -0
  535. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/ui/static/css/fonts/glyphicons-halflings-regular.woff +0 -0
  536. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/ui/static/css/fonts/glyphicons-halflings-regular.woff2 +0 -0
  537. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/ui/static/css/fonts/glyphicons-halflings-white.png +0 -0
  538. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/ui/static/css/fonts/glyphicons-halflings.png +0 -0
  539. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/ui/static/favicon.ico +0 -0
  540. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/ui/static/font/seita-webfont.eot +0 -0
  541. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/ui/static/font/seita-webfont.svg +0 -0
  542. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/ui/static/font/seita-webfont.ttf +0 -0
  543. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/ui/static/font/seita-webfont.woff +0 -0
  544. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/ui/static/font/seita-webfont.woff2 +0 -0
  545. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/ui/static/images/chase-lewis-506404-unsplash.jpg +0 -0
  546. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/ui/static/images/flexmeasures-preview.jpg +0 -0
  547. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/ui/static/images/tj-k-349056-unsplash.jpg +0 -0
  548. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/ui/static/js/data-utils.js +0 -0
  549. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/ui/static/js/map-init.js +0 -0
  550. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/ui/static/js/replay-utils.js +0 -0
  551. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/ui/static/js/swiped-events.min.js +0 -0
  552. {flexmeasures-0.26.0.dev1/flexmeasures/ui/templates/crud → flexmeasures-0.27.1.dev0/flexmeasures/ui/templates/accounts}/account_audit_log.html +0 -0
  553. {flexmeasures-0.26.0.dev1/flexmeasures/ui/templates/crud → flexmeasures-0.27.1.dev0/flexmeasures/ui/templates/accounts}/accounts.html +0 -0
  554. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/ui/templates/admin/forgot_password.html +0 -0
  555. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/ui/templates/admin/logged_in_user.html +0 -0
  556. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/ui/templates/admin/reset_password.html +0 -0
  557. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/ui/templates/admin/upload.html +0 -0
  558. {flexmeasures-0.26.0.dev1/flexmeasures/ui/templates/crud → flexmeasures-0.27.1.dev0/flexmeasures/ui/templates/assets}/assets.html +0 -0
  559. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/ui/templates/error.html +0 -0
  560. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/ui/templates/rq_dashboard/base.html +0 -0
  561. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/ui/templates/rq_dashboard/update_links.js +0 -0
  562. {flexmeasures-0.26.0.dev1/flexmeasures/ui/templates/crud → flexmeasures-0.27.1.dev0/flexmeasures/ui/templates/users}/user_audit_log.html +0 -0
  563. {flexmeasures-0.26.0.dev1/flexmeasures/ui/templates/crud → flexmeasures-0.27.1.dev0/flexmeasures/ui/templates/users}/users.html +0 -0
  564. {flexmeasures-0.26.0.dev1/flexmeasures/utils → flexmeasures-0.27.1.dev0/flexmeasures/ui}/tests/__init__.py +0 -0
  565. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/ui/tests/conftest.py +0 -0
  566. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/ui/tests/test_color_defaults.py +0 -0
  567. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/ui/tests/test_error_handling.py +0 -0
  568. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/ui/tests/test_user_crud.py +0 -0
  569. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/ui/tests/test_utils.py +0 -0
  570. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/ui/tests/utils.py +0 -0
  571. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/ui/utils/__init__.py +0 -0
  572. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/ui/utils/chart_defaults.py +0 -0
  573. {flexmeasures-0.26.0.dev1/flexmeasures/ui/crud → flexmeasures-0.27.1.dev0/flexmeasures/ui/views}/api_wrapper.py +0 -0
  574. {flexmeasures-0.26.0.dev1/flexmeasures/ui/views → flexmeasures-0.27.1.dev0/flexmeasures/ui/views/users}/logged_in_user.py +0 -0
  575. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/utils/__init__.py +0 -0
  576. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/utils/calculations.py +0 -0
  577. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/utils/coding_utils.py +0 -0
  578. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/utils/entity_address_utils.py +0 -0
  579. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/utils/error_utils.py +0 -0
  580. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/utils/flexmeasures_inflection.py +0 -0
  581. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/utils/geo_utils.py +0 -0
  582. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/utils/grid_cells.py +0 -0
  583. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/utils/tests/test_coding_utils.py +0 -0
  584. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/utils/tests/test_entity_address_utils.py +0 -0
  585. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/utils/tests/test_time_utils.py +0 -0
  586. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/utils/tests/test_unit_utils.py +0 -0
  587. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/utils/time_utils.py +0 -0
  588. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures/utils/validation_utils.py +0 -0
  589. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures.egg-info/dependency_links.txt +0 -0
  590. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures.egg-info/entry_points.txt +0 -0
  591. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/flexmeasures.egg-info/top_level.txt +0 -0
  592. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/requirements/Readme.md +0 -0
  593. {flexmeasures-0.26.0.dev1 → flexmeasures-0.27.1.dev0}/run-local.py +0 -0
  594. {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
- Note regarding our changelog:
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
- This section can contain example pictures for UI, Input/Output for CLI, Request / Response for API endpoint, etc.
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. For example,
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 --consumption-price-sensor 1
60
- --start ${TOMORROW}T07:00+01:00 --duration PT12H
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.8", "3.9", "3.10", "3.11", "3.12" ]
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 / setuptools
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
@@ -53,4 +53,5 @@ coverage.lcov
53
53
  venv*
54
54
  logs/
55
55
  *.dump
56
- iframe_figures/
56
+ iframe_figures/
57
+ /docker-compose-data
@@ -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
+ ![FlexMeasures Logo Light](https://github.com/FlexMeasures/screenshots/blob/main/logo/flexmeasures-horizontal-color.svg#gh-light-mode-only)
86
+ ![FlexMeasures Logo Dark](https://github.com/FlexMeasures/screenshots/blob/main/logo/flexmeasures-horizontal-dark.svg#gh-dark-mode-only)
87
+
88
+ [![License](https://img.shields.io/github/license/seitabv/flexmeasures?color=blue)](https://github.com/FlexMeasures/flexmeasures/blob/main/LICENSE)
89
+ ![lint-and-test](https://github.com/FlexMeasures/flexmeasures/workflows/lint-and-test/badge.svg)
90
+ [![Pypi Version](https://img.shields.io/pypi/v/flexmeasures.svg)](https://pypi.python.org/pypi/flexmeasures)
91
+ [![](https://img.shields.io/badge/python-3.8+-blue.svg)](https://www.python.org/downloads/)
92
+ [![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black)
93
+ [![Documentation Status](https://readthedocs.org/projects/flexmeasures/badge/?version=latest)](https://flexmeasures.readthedocs.io/en/latest/?badge=latest)
94
+ [![Coverage](https://coveralls.io/repos/github/FlexMeasures/flexmeasures/badge.svg)](https://coveralls.io/github/FlexMeasures/flexmeasures)
95
+ [![CII Best Practices](https://bestpractices.coreinfrastructure.org/projects/6095/badge)](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
+ ![The most simple view of FlexMeasures, turning data into schedules](https://raw.githubusercontent.com/FlexMeasures/screenshots/main/architecture/simple-flexEMS.png)
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
+ ![High-level overview of FlexMeasures as an EMS for energy flexibility apps, using plugins to fit a given use case](https://raw.githubusercontent.com/FlexMeasures/screenshots/main/architecture/overview-flexEMS.png)
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).
@@ -12,7 +12,7 @@
12
12
  set -e
13
13
  set -x
14
14
 
15
- PYTHON_VERSIONS=(3.8 3.9 3.10 3.11 3.12)
15
+ PYTHON_VERSIONS=(3.9 3.10 3.11 3.12)
16
16
 
17
17
  # check if we will upgrade or just freeze
18
18
  UPDATE_CMD=freeze-deps
@@ -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
- v0.26.0 | May XX, 2025
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 storage schedule :abbr:`SoC (state of charge)` using the ``flex-model`` field ``state-of-charge`` to the ``flex-model`` [see `PR #1392 <https://github.com/FlexMeasures/flexmeasures/pull/1392>`_ and `PR #1406 <https://github.com/FlexMeasures/flexmeasures/pull/1406>`_]
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
- * Upgraded dependencies [see `PR #1400 <https://www.github.com/FlexMeasures/flexmeasures/pull/1400>`_]
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 ``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>`_]
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.26.0 | April XX, 2025
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
  =================================