From bc12f5d7e2254f3142cd6e590583b7225805e767 Mon Sep 17 00:00:00 2001 From: "F.N. Claessen" Date: Fri, 2 Apr 2021 11:55:15 +0200 Subject: [PATCH 01/13] Add developer requirements --- requirements/dev.in | 2 ++ 1 file changed, 2 insertions(+) diff --git a/requirements/dev.in b/requirements/dev.in index 17dc56110..840713a1a 100644 --- a/requirements/dev.in +++ b/requirements/dev.in @@ -6,4 +6,6 @@ black flake8 flake8-blind-except mypy +pytest-runner +setuptools_scm watchdog \ No newline at end of file From b822f8d4a3cfa1c87a5e29b69113c9f21232f033 Mon Sep 17 00:00:00 2001 From: "F.N. Claessen" Date: Fri, 2 Apr 2021 11:56:17 +0200 Subject: [PATCH 02/13] New pip-tools formatting since 5.5.0 --- requirements/app.txt | 461 ++++++++++++++++++++++++++++++++---------- requirements/dev.txt | 101 ++++++--- requirements/test.txt | 134 +++++++++--- 3 files changed, 531 insertions(+), 165 deletions(-) diff --git a/requirements/app.txt b/requirements/app.txt index c9ed77bec..bab80dee3 100644 --- a/requirements/app.txt +++ b/requirements/app.txt @@ -4,115 +4,358 @@ # # pip-compile --output-file=requirements/app.txt requirements/app.in # -alembic==1.4.2 # via flask-migrate -altair==3.0.0 # via timely-beliefs -appdirs==1.4.4 # via pyomo -arrow==0.16.0 # via rq-dashboard -attrs==20.2.0 # via jsonschema -babel==2.8.0 # via flask-babelex -bcrypt==3.2.0 # via -r requirements/app.in -beautifulsoup4==4.9.3 # via siphon -blinker==1.4 # via flask-mail, flask-principal -bokeh==1.0.4 # via -r requirements/app.in, pandas-bokeh -certifi==2020.6.20 # via matplotlib, requests -cffi==1.14.2 # via bcrypt -cftime==1.4.1 # via netcdf4 -chardet==3.0.4 # via requests -click==7.1.2 # via -r requirements/app.in, flask, rq -colour==0.1.5 # via -r requirements/app.in -cycler==0.10.0 # via matplotlib -dnspython==2.0.0 # via email-validator -email-validator==1.1.1 # via -r requirements/app.in, flask-security-too -entrypoints==0.3 # via altair -filelock==3.0.12 # via tldextract -flask-babelex==0.9.4 # via flask-security-too -flask-classful==0.14.2 # via -r requirements/app.in -flask-cors==3.0.10 # via -r requirements/app.in -flask-json==0.3.4 # via -r requirements/app.in -flask-login==0.5.0 # via -r requirements/app.in, flask-security-too -flask-mail==0.9.1 # via -r requirements/app.in, flask-security-too -flask-marshmallow==0.13.0 # via -r requirements/app.in -flask-migrate==2.5.3 # via -r requirements/app.in -flask-principal==0.4.0 # via flask-security-too -flask-security-too==3.4.4 # via -r requirements/app.in -flask-sqlalchemy==2.4.4 # via -r requirements/app.in, flask-migrate -flask-sslify==0.1.5 # via -r requirements/app.in -flask-wtf==0.14.3 # via -r requirements/app.in, flask-security-too -flask==1.1.2 # via -r requirements/app.in, flask-babelex, flask-classful, flask-cors, flask-json, flask-login, flask-mail, flask-marshmallow, flask-migrate, flask-principal, flask-security-too, flask-sqlalchemy, flask-sslify, flask-wtf, rq-dashboard -forecastiopy==0.22 # via -r requirements/app.in -humanize==2.6.0 # via -r requirements/app.in -idna==2.10 # via email-validator, requests, tldextract -importlib-metadata==3.7.0 # via -r requirements/app.in -inflect==4.1.0 # via -r requirements/app.in -inflection==0.5.1 # via -r requirements/app.in -iso8601==0.1.12 # via -r requirements/app.in -isodate==0.6.0 # via -r requirements/app.in, timely-beliefs -itsdangerous==1.1.0 # via flask, flask-security-too, flask-wtf -jinja2==2.11.2 # via altair, bokeh, flask, flask-babelex -joblib==0.16.0 # via scikit-learn -jsonschema==3.2.0 # via altair -kiwisolver==1.2.0 # via matplotlib -mako==1.1.3 # via alembic -markupsafe==1.1.1 # via jinja2, mako, wtforms -marshmallow-sqlalchemy==0.23.1 # via -r requirements/app.in -marshmallow==3.7.1 # via flask-marshmallow, marshmallow-sqlalchemy, webargs -matplotlib==3.3.1 # via timetomodel -netcdf4==1.5.5.1 # via -r requirements/app.in -nose==1.3.7 # via pyutilib -numexpr==2.7.2 # via tables -numpy==1.19.1 # via -r requirements/app.in, altair, bokeh, cftime, matplotlib, netcdf4, numexpr, pandas, patsy, properscoring, pvlib, scikit-learn, scipy, siphon, statsmodels, tables, timely-beliefs, timetomodel -openturns==1.15 # via timely-beliefs -packaging==20.4 # via bokeh -pandas-bokeh==0.4.3 # via -r requirements/app.in -pandas==1.2.0 # via -r requirements/app.in, altair, pandas-bokeh, pvlib, siphon, statsmodels, timely-beliefs, timetomodel -passlib==1.7.2 # via flask-security-too -patsy==0.5.1 # via statsmodels -pillow==7.2.0 # via bokeh, matplotlib -ply==3.11 # via pyomo -properscoring==0.1 # via timely-beliefs -protobuf==3.14.0 # via siphon -pscript==0.7.4 # via -r requirements/app.in -psycopg2-binary==2.8.6 # via -r requirements/app.in, timely-beliefs -pvlib==0.8.1 # via -r requirements/app.in -pycparser==2.20 # via cffi -pyomo==5.7 # via -r requirements/app.in -pyparsing==2.4.7 # via matplotlib, packaging -pyrsistent==0.16.0 # via jsonschema -python-dateutil==2.8.1 # via alembic, arrow, bokeh, matplotlib, pandas, timetomodel -python-dotenv==0.14.0 # via -r requirements/app.in -python-editor==1.0.4 # via alembic -pytz==2020.1 # via -r requirements/app.in, babel, pandas, pvlib, timely-beliefs, timetomodel, tzlocal -pyutilib==6.0.0 # via pyomo -pyyaml==5.3.1 # via bokeh -redis==3.5.3 # via rq, rq-dashboard -requests-file==1.5.1 # via tldextract -requests==2.24.0 # via forecastiopy, pvlib, requests-file, siphon, tldextract -rq-dashboard==0.6.1 # via -r requirements/app.in -rq==1.5.2 # via -r requirements/app.in, rq-dashboard -scikit-learn==0.23.2 # via sklearn -scipy==1.5.2 # via properscoring, pvlib, scikit-learn, statsmodels, timely-beliefs, timetomodel -selenium==3.141.0 # via timely-beliefs -siphon==0.8.0 # via -r requirements/app.in -six==1.15.0 # via altair, bcrypt, bokeh, cycler, flask-cors, flask-marshmallow, isodate, jsonschema, packaging, patsy, protobuf, pyomo, python-dateutil, pyutilib, requests-file -sklearn==0.0 # via timetomodel -soupsieve==2.2 # via beautifulsoup4 -speaklater==1.3 # via flask-babelex -sqlalchemy==1.3.19 # via alembic, flask-sqlalchemy, marshmallow-sqlalchemy, timely-beliefs, timetomodel -statsmodels==0.12.0 # via timetomodel -tables==3.6.1 # via -r requirements/app.in -threadpoolctl==2.1.0 # via scikit-learn -timely-beliefs==1.2.1 # via -r requirements/app.in -timetomodel==0.6.8 # via -r requirements/app.in -tldextract==3.1.0 # via -r requirements/app.in -toolz==0.10.0 # via altair -tornado==6.0.4 # via bokeh -tzlocal==2.1 # via -r requirements/app.in -urllib3==1.25.10 # via requests, selenium -webargs==7.0.1 # via -r requirements/app.in -werkzeug==1.0.1 # via flask -wtforms==2.3.3 # via flask-wtf -xlrd==1.2.0 # via -r requirements/app.in -zipp==3.4.1 # via importlib-metadata +alembic==1.4.2 + # via flask-migrate +altair==3.0.0 + # via timely-beliefs +appdirs==1.4.4 + # via pyomo +arrow==0.16.0 + # via rq-dashboard +attrs==20.2.0 + # via jsonschema +babel==2.8.0 + # via flask-babelex +bcrypt==3.2.0 + # via -r requirements/app.in +beautifulsoup4==4.9.3 + # via siphon +blinker==1.4 + # via + # flask-mail + # flask-principal +bokeh==1.0.4 + # via + # -r requirements/app.in + # pandas-bokeh +certifi==2020.6.20 + # via + # matplotlib + # requests +cffi==1.14.2 + # via bcrypt +cftime==1.4.1 + # via netcdf4 +chardet==3.0.4 + # via requests +click==7.1.2 + # via + # -r requirements/app.in + # flask + # rq +colour==0.1.5 + # via -r requirements/app.in +cycler==0.10.0 + # via matplotlib +dnspython==2.0.0 + # via email-validator +email-validator==1.1.1 + # via + # -r requirements/app.in + # flask-security-too +entrypoints==0.3 + # via altair +filelock==3.0.12 + # via tldextract +flask-babelex==0.9.4 + # via flask-security-too +flask-classful==0.14.2 + # via -r requirements/app.in +flask-cors==3.0.10 + # via -r requirements/app.in +flask-json==0.3.4 + # via -r requirements/app.in +flask-login==0.5.0 + # via + # -r requirements/app.in + # flask-security-too +flask-mail==0.9.1 + # via + # -r requirements/app.in + # flask-security-too +flask-marshmallow==0.13.0 + # via -r requirements/app.in +flask-migrate==2.5.3 + # via -r requirements/app.in +flask-principal==0.4.0 + # via flask-security-too +flask-security-too==3.4.4 + # via -r requirements/app.in +flask-sqlalchemy==2.4.4 + # via + # -r requirements/app.in + # flask-migrate +flask-sslify==0.1.5 + # via -r requirements/app.in +flask-wtf==0.14.3 + # via + # -r requirements/app.in + # flask-security-too +flask==1.1.2 + # via + # -r requirements/app.in + # flask-babelex + # flask-classful + # flask-cors + # flask-json + # flask-login + # flask-mail + # flask-marshmallow + # flask-migrate + # flask-principal + # flask-security-too + # flask-sqlalchemy + # flask-sslify + # flask-wtf + # rq-dashboard +forecastiopy==0.22 + # via -r requirements/app.in +humanize==2.6.0 + # via -r requirements/app.in +idna==2.10 + # via + # email-validator + # requests + # tldextract +importlib-metadata==3.7.0 + # via -r requirements/app.in +inflect==4.1.0 + # via -r requirements/app.in +inflection==0.5.1 + # via -r requirements/app.in +iso8601==0.1.12 + # via -r requirements/app.in +isodate==0.6.0 + # via + # -r requirements/app.in + # timely-beliefs +itsdangerous==1.1.0 + # via + # flask + # flask-security-too + # flask-wtf +jinja2==2.11.2 + # via + # altair + # bokeh + # flask + # flask-babelex +joblib==0.16.0 + # via scikit-learn +jsonschema==3.2.0 + # via altair +kiwisolver==1.2.0 + # via matplotlib +mako==1.1.3 + # via alembic +markupsafe==1.1.1 + # via + # jinja2 + # mako + # wtforms +marshmallow-sqlalchemy==0.23.1 + # via -r requirements/app.in +marshmallow==3.7.1 + # via + # flask-marshmallow + # marshmallow-sqlalchemy + # webargs +matplotlib==3.3.1 + # via timetomodel +netcdf4==1.5.5.1 + # via -r requirements/app.in +nose==1.3.7 + # via pyutilib +numexpr==2.7.2 + # via tables +numpy==1.19.1 + # via + # -r requirements/app.in + # altair + # bokeh + # cftime + # matplotlib + # netcdf4 + # numexpr + # pandas + # patsy + # properscoring + # pvlib + # scikit-learn + # scipy + # siphon + # statsmodels + # tables + # timely-beliefs + # timetomodel +openturns==1.15 + # via timely-beliefs +packaging==20.4 + # via bokeh +pandas-bokeh==0.4.3 + # via -r requirements/app.in +pandas==1.2.0 + # via + # -r requirements/app.in + # altair + # pandas-bokeh + # pvlib + # siphon + # statsmodels + # timely-beliefs + # timetomodel +passlib==1.7.2 + # via flask-security-too +patsy==0.5.1 + # via statsmodels +pillow==7.2.0 + # via + # bokeh + # matplotlib +ply==3.11 + # via pyomo +properscoring==0.1 + # via timely-beliefs +protobuf==3.14.0 + # via siphon +pscript==0.7.4 + # via -r requirements/app.in +psycopg2-binary==2.8.6 + # via + # -r requirements/app.in + # timely-beliefs +pvlib==0.8.1 + # via -r requirements/app.in +pycparser==2.20 + # via cffi +pyomo==5.7 + # via -r requirements/app.in +pyparsing==2.4.7 + # via + # matplotlib + # packaging +pyrsistent==0.16.0 + # via jsonschema +python-dateutil==2.8.1 + # via + # alembic + # arrow + # bokeh + # matplotlib + # pandas + # timetomodel +python-dotenv==0.14.0 + # via -r requirements/app.in +python-editor==1.0.4 + # via alembic +pytz==2020.1 + # via + # -r requirements/app.in + # babel + # pandas + # pvlib + # timely-beliefs + # timetomodel + # tzlocal +pyutilib==6.0.0 + # via pyomo +pyyaml==5.3.1 + # via bokeh +redis==3.5.3 + # via + # rq + # rq-dashboard +requests-file==1.5.1 + # via tldextract +requests==2.24.0 + # via + # forecastiopy + # pvlib + # requests-file + # siphon + # tldextract +rq-dashboard==0.6.1 + # via -r requirements/app.in +rq==1.5.2 + # via + # -r requirements/app.in + # rq-dashboard +scikit-learn==0.23.2 + # via sklearn +scipy==1.5.2 + # via + # properscoring + # pvlib + # scikit-learn + # statsmodels + # timely-beliefs + # timetomodel +selenium==3.141.0 + # via timely-beliefs +siphon==0.8.0 + # via -r requirements/app.in +six==1.15.0 + # via + # altair + # bcrypt + # bokeh + # cycler + # flask-cors + # flask-marshmallow + # isodate + # jsonschema + # packaging + # patsy + # protobuf + # pyomo + # python-dateutil + # pyutilib + # requests-file +sklearn==0.0 + # via timetomodel +soupsieve==2.2 + # via beautifulsoup4 +speaklater==1.3 + # via flask-babelex +sqlalchemy==1.3.19 + # via + # alembic + # flask-sqlalchemy + # marshmallow-sqlalchemy + # timely-beliefs + # timetomodel +statsmodels==0.12.0 + # via timetomodel +tables==3.6.1 + # via -r requirements/app.in +threadpoolctl==2.1.0 + # via scikit-learn +timely-beliefs==1.2.1 + # via -r requirements/app.in +timetomodel==0.6.8 + # via -r requirements/app.in +tldextract==3.1.0 + # via -r requirements/app.in +toolz==0.10.0 + # via altair +tornado==6.0.4 + # via bokeh +tzlocal==2.1 + # via -r requirements/app.in +urllib3==1.25.10 + # via + # requests + # selenium +webargs==7.0.1 + # via -r requirements/app.in +werkzeug==1.0.1 + # via flask +wtforms==2.3.3 + # via flask-wtf +xlrd==1.2.0 + # via -r requirements/app.in +zipp==3.4.1 + # via importlib-metadata # The following packages are considered to be unsafe in a requirements file: # setuptools diff --git a/requirements/dev.txt b/requirements/dev.txt index 9cbaeda3d..0ab01b691 100644 --- a/requirements/dev.txt +++ b/requirements/dev.txt @@ -4,31 +4,82 @@ # # pip-compile --output-file=requirements/dev.txt requirements/dev.in # -appdirs==1.4.4 # via -c requirements/app.txt, black, virtualenv -black==20.8b1 # via -r requirements/dev.in -cfgv==3.2.0 # via pre-commit -click==7.1.2 # via -c requirements/app.txt, -c requirements/test.txt, black -distlib==0.3.1 # via virtualenv -filelock==3.0.12 # via -c requirements/app.txt, virtualenv -flake8-blind-except==0.1.1 # via -r requirements/dev.in -flake8==3.8.3 # via -r requirements/dev.in -identify==1.5.0 # via pre-commit -mccabe==0.6.1 # via flake8 -mypy-extensions==0.4.3 # via black, mypy -mypy==0.782 # via -r requirements/dev.in -nodeenv==1.5.0 # via pre-commit -pathspec==0.8.0 # via black -pre-commit==2.7.1 # via -r requirements/dev.in -pycodestyle==2.6.0 # via flake8 -pyflakes==2.2.0 # via flake8 -pyyaml==5.3.1 # via -c requirements/app.txt, pre-commit -regex==2020.7.14 # via black -six==1.15.0 # via -c requirements/app.txt, -c requirements/test.txt, virtualenv -toml==0.10.1 # via -c requirements/test.txt, black, pre-commit -typed-ast==1.4.1 # via black, mypy -typing-extensions==3.7.4.3 # via black, mypy -virtualenv==20.0.31 # via pre-commit -watchdog==2.0.2 # via -r requirements/dev.in +appdirs==1.4.4 + # via + # -c requirements/app.txt + # black + # virtualenv +black==20.8b1 + # via -r requirements/dev.in +cfgv==3.2.0 + # via pre-commit +click==7.1.2 + # via + # -c requirements/app.txt + # -c requirements/test.txt + # black +distlib==0.3.1 + # via virtualenv +filelock==3.0.12 + # via + # -c requirements/app.txt + # virtualenv +flake8-blind-except==0.1.1 + # via -r requirements/dev.in +flake8==3.8.3 + # via -r requirements/dev.in +identify==1.5.0 + # via pre-commit +mccabe==0.6.1 + # via flake8 +mypy-extensions==0.4.3 + # via + # black + # mypy +mypy==0.782 + # via -r requirements/dev.in +nodeenv==1.5.0 + # via pre-commit +pathspec==0.8.0 + # via black +pre-commit==2.7.1 + # via -r requirements/dev.in +pycodestyle==2.6.0 + # via flake8 +pyflakes==2.2.0 + # via flake8 +pytest-runner==5.3.0 + # via -r requirements/dev.in +pyyaml==5.3.1 + # via + # -c requirements/app.txt + # pre-commit +regex==2020.7.14 + # via black +setuptools-scm==6.0.1 + # via -r requirements/dev.in +six==1.15.0 + # via + # -c requirements/app.txt + # -c requirements/test.txt + # virtualenv +toml==0.10.1 + # via + # -c requirements/test.txt + # black + # pre-commit +typed-ast==1.4.1 + # via + # black + # mypy +typing-extensions==3.7.4.3 + # via + # black + # mypy +virtualenv==20.0.31 + # via pre-commit +watchdog==2.0.2 + # via -r requirements/dev.in # The following packages are considered to be unsafe in a requirements file: # setuptools diff --git a/requirements/test.txt b/requirements/test.txt index 6f2ff87b8..702d00be3 100644 --- a/requirements/test.txt +++ b/requirements/test.txt @@ -4,34 +4,106 @@ # # pip-compile --output-file=requirements/test.txt requirements/test.in # -attrs==20.2.0 # via -c requirements/app.txt, pytest -certifi==2020.6.20 # via -c requirements/app.txt, requests -chardet==3.0.4 # via -c requirements/app.txt, requests -click==7.1.2 # via -c requirements/app.txt, flask -coverage==5.2.1 # via pytest-cov -fakeredis==1.4.3 # via -r requirements/test.in -flask==1.1.2 # via -c requirements/app.txt, pytest-flask -idna==2.10 # via -c requirements/app.txt, requests -iniconfig==1.0.1 # via pytest -itsdangerous==1.1.0 # via -c requirements/app.txt, flask -jinja2==2.11.2 # via -c requirements/app.txt, flask -lupa==1.9 # via -r requirements/test.in -markupsafe==1.1.1 # via -c requirements/app.txt, jinja2 -more-itertools==8.5.0 # via pytest -packaging==20.4 # via -c requirements/app.txt, pytest, pytest-sugar -pluggy==0.13.1 # via pytest -py==1.9.0 # via pytest -pyparsing==2.4.7 # via -c requirements/app.txt, packaging -pytest-cov==2.10.1 # via -r requirements/test.in -pytest-flask==1.0.0 # via -r requirements/test.in -pytest-sugar==0.9.4 # via -r requirements/test.in -pytest==6.0.1 # via -r requirements/test.in, pytest-cov, pytest-flask, pytest-sugar -redis==3.5.3 # via -c requirements/app.txt, fakeredis -requests-mock==1.8.0 # via -r requirements/test.in -requests==2.24.0 # via -c requirements/app.txt, -r requirements/test.in, requests-mock -six==1.15.0 # via -c requirements/app.txt, fakeredis, packaging, requests-mock -sortedcontainers==2.2.2 # via fakeredis -termcolor==1.1.0 # via pytest-sugar -toml==0.10.1 # via pytest -urllib3==1.25.10 # via -c requirements/app.txt, requests -werkzeug==1.0.1 # via -c requirements/app.txt, flask, pytest-flask +attrs==20.2.0 + # via + # -c requirements/app.txt + # pytest +certifi==2020.6.20 + # via + # -c requirements/app.txt + # requests +chardet==3.0.4 + # via + # -c requirements/app.txt + # requests +click==7.1.2 + # via + # -c requirements/app.txt + # flask +coverage==5.2.1 + # via pytest-cov +fakeredis==1.4.3 + # via -r requirements/test.in +flask==1.1.2 + # via + # -c requirements/app.txt + # pytest-flask +idna==2.10 + # via + # -c requirements/app.txt + # requests +iniconfig==1.0.1 + # via pytest +itsdangerous==1.1.0 + # via + # -c requirements/app.txt + # flask +jinja2==2.11.2 + # via + # -c requirements/app.txt + # flask +lupa==1.9 + # via -r requirements/test.in +markupsafe==1.1.1 + # via + # -c requirements/app.txt + # jinja2 +more-itertools==8.5.0 + # via pytest +packaging==20.4 + # via + # -c requirements/app.txt + # pytest + # pytest-sugar +pluggy==0.13.1 + # via pytest +py==1.9.0 + # via pytest +pyparsing==2.4.7 + # via + # -c requirements/app.txt + # packaging +pytest-cov==2.10.1 + # via -r requirements/test.in +pytest-flask==1.0.0 + # via -r requirements/test.in +pytest-sugar==0.9.4 + # via -r requirements/test.in +pytest==6.0.1 + # via + # -r requirements/test.in + # pytest-cov + # pytest-flask + # pytest-sugar +redis==3.5.3 + # via + # -c requirements/app.txt + # fakeredis +requests-mock==1.8.0 + # via -r requirements/test.in +requests==2.24.0 + # via + # -c requirements/app.txt + # -r requirements/test.in + # requests-mock +six==1.15.0 + # via + # -c requirements/app.txt + # fakeredis + # packaging + # requests-mock +sortedcontainers==2.2.2 + # via fakeredis +termcolor==1.1.0 + # via pytest-sugar +toml==0.10.1 + # via pytest +urllib3==1.25.10 + # via + # -c requirements/app.txt + # requests +werkzeug==1.0.1 + # via + # -c requirements/app.txt + # flask + # pytest-flask From 0813806b6f71f5d941cd6001ecdbf721b4c64d1d Mon Sep 17 00:00:00 2001 From: "F.N. Claessen" Date: Fri, 2 Apr 2021 12:01:15 +0200 Subject: [PATCH 03/13] Update flake8 and add hints in our yaml on where to find new version tags --- .pre-commit-config.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index f4c994be1..f6535cac9 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -1,12 +1,12 @@ repos: - repo: https://gitlab.com/pycqa/flake8 - rev: 3.8.4 + rev: 3.9.0 # New version tags can be found here: https://gitlab.com/pycqa/flake8/-/tags hooks: - id: flake8 name: flake8 (code linting) language_version: python3.8 - repo: https://github.com/psf/black - rev: 20.8b1 + rev: 20.8b1 # New version tags can be found here: https://github.com/psf/black/tags hooks: - id: black name: black (code formatting) From 59faa73c46b8f4f42cbeb3a9edcd3c722849897c Mon Sep 17 00:00:00 2001 From: "F.N. Claessen" Date: Fri, 2 Apr 2021 12:28:48 +0200 Subject: [PATCH 04/13] make upgrade-deps --- requirements/app.txt | 124 +++++++++++++++++++----------------------- requirements/dev.txt | 25 ++++----- requirements/test.txt | 35 ++++++------ 3 files changed, 83 insertions(+), 101 deletions(-) diff --git a/requirements/app.txt b/requirements/app.txt index bab80dee3..1d6cb1e19 100644 --- a/requirements/app.txt +++ b/requirements/app.txt @@ -4,18 +4,14 @@ # # pip-compile --output-file=requirements/app.txt requirements/app.in # -alembic==1.4.2 +alembic==1.5.8 # via flask-migrate altair==3.0.0 # via timely-beliefs -appdirs==1.4.4 - # via pyomo -arrow==0.16.0 +arrow==1.0.3 # via rq-dashboard -attrs==20.2.0 +attrs==20.3.0 # via jsonschema -babel==2.8.0 - # via flask-babelex bcrypt==3.2.0 # via -r requirements/app.in beautifulsoup4==4.9.3 @@ -28,15 +24,13 @@ bokeh==1.0.4 # via # -r requirements/app.in # pandas-bokeh -certifi==2020.6.20 - # via - # matplotlib - # requests -cffi==1.14.2 +certifi==2020.12.5 + # via requests +cffi==1.14.5 # via bcrypt cftime==1.4.1 # via netcdf4 -chardet==3.0.4 +chardet==4.0.0 # via requests click==7.1.2 # via @@ -47,9 +41,9 @@ colour==0.1.5 # via -r requirements/app.in cycler==0.10.0 # via matplotlib -dnspython==2.0.0 +dnspython==2.1.0 # via email-validator -email-validator==1.1.1 +email-validator==1.1.2 # via # -r requirements/app.in # flask-security-too @@ -57,8 +51,6 @@ entrypoints==0.3 # via altair filelock==3.0.12 # via tldextract -flask-babelex==0.9.4 - # via flask-security-too flask-classful==0.14.2 # via -r requirements/app.in flask-cors==3.0.10 @@ -70,18 +62,16 @@ flask-login==0.5.0 # -r requirements/app.in # flask-security-too flask-mail==0.9.1 - # via - # -r requirements/app.in - # flask-security-too -flask-marshmallow==0.13.0 # via -r requirements/app.in -flask-migrate==2.5.3 +flask-marshmallow==0.14.0 + # via -r requirements/app.in +flask-migrate==2.7.0 # via -r requirements/app.in flask-principal==0.4.0 # via flask-security-too -flask-security-too==3.4.4 +flask-security-too==4.0.0 # via -r requirements/app.in -flask-sqlalchemy==2.4.4 +flask-sqlalchemy==2.5.1 # via # -r requirements/app.in # flask-migrate @@ -94,7 +84,6 @@ flask-wtf==0.14.3 flask==1.1.2 # via # -r requirements/app.in - # flask-babelex # flask-classful # flask-cors # flask-json @@ -110,20 +99,22 @@ flask==1.1.2 # rq-dashboard forecastiopy==0.22 # via -r requirements/app.in -humanize==2.6.0 +greenlet==1.0.0 + # via sqlalchemy +humanize==3.3.0 # via -r requirements/app.in idna==2.10 # via # email-validator # requests # tldextract -importlib-metadata==3.7.0 +importlib-metadata==3.10.0 # via -r requirements/app.in -inflect==4.1.0 +inflect==5.3.0 # via -r requirements/app.in inflection==0.5.1 # via -r requirements/app.in -iso8601==0.1.12 +iso8601==0.1.14 # via -r requirements/app.in isodate==0.6.0 # via @@ -134,41 +125,40 @@ itsdangerous==1.1.0 # flask # flask-security-too # flask-wtf -jinja2==2.11.2 +jinja2==2.11.3 # via # altair # bokeh # flask - # flask-babelex -joblib==0.16.0 +joblib==1.0.1 # via scikit-learn jsonschema==3.2.0 # via altair -kiwisolver==1.2.0 +kiwisolver==1.3.1 # via matplotlib -mako==1.1.3 +mako==1.1.4 # via alembic markupsafe==1.1.1 # via # jinja2 # mako # wtforms -marshmallow-sqlalchemy==0.23.1 +marshmallow-sqlalchemy==0.24.2 # via -r requirements/app.in -marshmallow==3.7.1 +marshmallow==3.11.1 # via # flask-marshmallow # marshmallow-sqlalchemy # webargs -matplotlib==3.3.1 +matplotlib==3.4.1 # via timetomodel -netcdf4==1.5.5.1 +netcdf4==1.5.6 # via -r requirements/app.in nose==1.3.7 # via pyutilib -numexpr==2.7.2 +numexpr==2.7.3 # via tables -numpy==1.19.1 +numpy==1.20.2 # via # -r requirements/app.in # altair @@ -188,13 +178,13 @@ numpy==1.19.1 # tables # timely-beliefs # timetomodel -openturns==1.15 +openturns==1.16 # via timely-beliefs -packaging==20.4 +packaging==20.9 # via bokeh pandas-bokeh==0.4.3 # via -r requirements/app.in -pandas==1.2.0 +pandas==1.2.3 # via # -r requirements/app.in # altair @@ -204,11 +194,11 @@ pandas==1.2.0 # statsmodels # timely-beliefs # timetomodel -passlib==1.7.2 +passlib==1.7.4 # via flask-security-too patsy==0.5.1 # via statsmodels -pillow==7.2.0 +pillow==8.2.0 # via # bokeh # matplotlib @@ -216,9 +206,9 @@ ply==3.11 # via pyomo properscoring==0.1 # via timely-beliefs -protobuf==3.14.0 +protobuf==3.15.6 # via siphon -pscript==0.7.4 +pscript==0.7.5 # via -r requirements/app.in psycopg2-binary==2.8.6 # via @@ -228,13 +218,13 @@ pvlib==0.8.1 # via -r requirements/app.in pycparser==2.20 # via cffi -pyomo==5.7 +pyomo==5.7.3 # via -r requirements/app.in pyparsing==2.4.7 # via # matplotlib # packaging -pyrsistent==0.16.0 +pyrsistent==0.17.3 # via jsonschema python-dateutil==2.8.1 # via @@ -244,14 +234,13 @@ python-dateutil==2.8.1 # matplotlib # pandas # timetomodel -python-dotenv==0.14.0 +python-dotenv==0.16.0 # via -r requirements/app.in python-editor==1.0.4 # via alembic -pytz==2020.1 +pytz==2021.1 # via # -r requirements/app.in - # babel # pandas # pvlib # timely-beliefs @@ -259,7 +248,7 @@ pytz==2020.1 # tzlocal pyutilib==6.0.0 # via pyomo -pyyaml==5.3.1 +pyyaml==5.4.1 # via bokeh redis==3.5.3 # via @@ -267,7 +256,7 @@ redis==3.5.3 # rq-dashboard requests-file==1.5.1 # via tldextract -requests==2.24.0 +requests==2.25.1 # via # forecastiopy # pvlib @@ -276,13 +265,13 @@ requests==2.24.0 # tldextract rq-dashboard==0.6.1 # via -r requirements/app.in -rq==1.5.2 +rq==1.8.0 # via # -r requirements/app.in # rq-dashboard -scikit-learn==0.23.2 +scikit-learn==0.24.1 # via sklearn -scipy==1.5.2 +scipy==1.6.2 # via # properscoring # pvlib @@ -292,7 +281,7 @@ scipy==1.5.2 # timetomodel selenium==3.141.0 # via timely-beliefs -siphon==0.8.0 +siphon==0.9 # via -r requirements/app.in six==1.15.0 # via @@ -304,7 +293,6 @@ six==1.15.0 # flask-marshmallow # isodate # jsonschema - # packaging # patsy # protobuf # pyomo @@ -313,18 +301,16 @@ six==1.15.0 # requests-file sklearn==0.0 # via timetomodel -soupsieve==2.2 +soupsieve==2.2.1 # via beautifulsoup4 -speaklater==1.3 - # via flask-babelex -sqlalchemy==1.3.19 +sqlalchemy==1.4.4 # via # alembic # flask-sqlalchemy # marshmallow-sqlalchemy # timely-beliefs # timetomodel -statsmodels==0.12.0 +statsmodels==0.12.2 # via timetomodel tables==3.6.1 # via -r requirements/app.in @@ -332,17 +318,17 @@ threadpoolctl==2.1.0 # via scikit-learn timely-beliefs==1.2.1 # via -r requirements/app.in -timetomodel==0.6.8 +timetomodel==0.6.9 # via -r requirements/app.in tldextract==3.1.0 # via -r requirements/app.in -toolz==0.10.0 +toolz==0.11.1 # via altair -tornado==6.0.4 +tornado==6.1 # via bokeh tzlocal==2.1 # via -r requirements/app.in -urllib3==1.25.10 +urllib3==1.26.4 # via # requests # selenium @@ -352,7 +338,7 @@ werkzeug==1.0.1 # via flask wtforms==2.3.3 # via flask-wtf -xlrd==1.2.0 +xlrd==2.0.1 # via -r requirements/app.in zipp==3.4.1 # via importlib-metadata diff --git a/requirements/dev.txt b/requirements/dev.txt index 0ab01b691..85950a93f 100644 --- a/requirements/dev.txt +++ b/requirements/dev.txt @@ -6,7 +6,6 @@ # appdirs==1.4.4 # via - # -c requirements/app.txt # black # virtualenv black==20.8b1 @@ -24,11 +23,11 @@ filelock==3.0.12 # via # -c requirements/app.txt # virtualenv -flake8-blind-except==0.1.1 +flake8-blind-except==0.2.0 # via -r requirements/dev.in -flake8==3.8.3 +flake8==3.9.0 # via -r requirements/dev.in -identify==1.5.0 +identify==2.2.2 # via pre-commit mccabe==0.6.1 # via flake8 @@ -36,25 +35,25 @@ mypy-extensions==0.4.3 # via # black # mypy -mypy==0.782 +mypy==0.812 # via -r requirements/dev.in nodeenv==1.5.0 # via pre-commit -pathspec==0.8.0 +pathspec==0.8.1 # via black -pre-commit==2.7.1 +pre-commit==2.11.1 # via -r requirements/dev.in -pycodestyle==2.6.0 +pycodestyle==2.7.0 # via flake8 -pyflakes==2.2.0 +pyflakes==2.3.1 # via flake8 pytest-runner==5.3.0 # via -r requirements/dev.in -pyyaml==5.3.1 +pyyaml==5.4.1 # via # -c requirements/app.txt # pre-commit -regex==2020.7.14 +regex==2021.3.17 # via black setuptools-scm==6.0.1 # via -r requirements/dev.in @@ -68,7 +67,7 @@ toml==0.10.1 # -c requirements/test.txt # black # pre-commit -typed-ast==1.4.1 +typed-ast==1.4.2 # via # black # mypy @@ -76,7 +75,7 @@ typing-extensions==3.7.4.3 # via # black # mypy -virtualenv==20.0.31 +virtualenv==20.4.3 # via pre-commit watchdog==2.0.2 # via -r requirements/dev.in diff --git a/requirements/test.txt b/requirements/test.txt index 702d00be3..338c60126 100644 --- a/requirements/test.txt +++ b/requirements/test.txt @@ -4,15 +4,15 @@ # # pip-compile --output-file=requirements/test.txt requirements/test.in # -attrs==20.2.0 +attrs==20.3.0 # via # -c requirements/app.txt # pytest -certifi==2020.6.20 +certifi==2020.12.5 # via # -c requirements/app.txt # requests -chardet==3.0.4 +chardet==4.0.0 # via # -c requirements/app.txt # requests @@ -20,9 +20,9 @@ click==7.1.2 # via # -c requirements/app.txt # flask -coverage==5.2.1 +coverage==5.5 # via pytest-cov -fakeredis==1.4.3 +fakeredis==1.5.0 # via -r requirements/test.in flask==1.1.2 # via @@ -32,13 +32,13 @@ idna==2.10 # via # -c requirements/app.txt # requests -iniconfig==1.0.1 +iniconfig==1.1.1 # via pytest itsdangerous==1.1.0 # via # -c requirements/app.txt # flask -jinja2==2.11.2 +jinja2==2.11.3 # via # -c requirements/app.txt # flask @@ -48,28 +48,26 @@ markupsafe==1.1.1 # via # -c requirements/app.txt # jinja2 -more-itertools==8.5.0 - # via pytest -packaging==20.4 +packaging==20.9 # via # -c requirements/app.txt # pytest # pytest-sugar pluggy==0.13.1 # via pytest -py==1.9.0 +py==1.10.0 # via pytest pyparsing==2.4.7 # via # -c requirements/app.txt # packaging -pytest-cov==2.10.1 +pytest-cov==2.11.1 # via -r requirements/test.in -pytest-flask==1.0.0 +pytest-flask==1.2.0 # via -r requirements/test.in pytest-sugar==0.9.4 # via -r requirements/test.in -pytest==6.0.1 +pytest==6.2.2 # via # -r requirements/test.in # pytest-cov @@ -81,7 +79,7 @@ redis==3.5.3 # fakeredis requests-mock==1.8.0 # via -r requirements/test.in -requests==2.24.0 +requests==2.25.1 # via # -c requirements/app.txt # -r requirements/test.in @@ -90,15 +88,14 @@ six==1.15.0 # via # -c requirements/app.txt # fakeredis - # packaging # requests-mock -sortedcontainers==2.2.2 +sortedcontainers==2.3.0 # via fakeredis termcolor==1.1.0 # via pytest-sugar -toml==0.10.1 +toml==0.10.2 # via pytest -urllib3==1.25.10 +urllib3==1.26.4 # via # -c requirements/app.txt # requests From 4879a8d786fe5ff509078da34e2fa6be04040d88 Mon Sep 17 00:00:00 2001 From: "F.N. Claessen" Date: Fri, 2 Apr 2021 12:54:18 +0200 Subject: [PATCH 05/13] Set explicit minimum security dependency --- requirements/app.in | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements/app.in b/requirements/app.in index 592ed01c5..99e3434d2 100644 --- a/requirements/app.in +++ b/requirements/app.in @@ -43,7 +43,7 @@ Flask-Migrate Flask-WTF Flask-Login Flask-Mail -Flask-Security-Too +Flask-Security-Too<=4.0 Flask-Classful Flask-Marshmallow Flask-Cors From 81113006e95b40d9f455f0054f9837fc5d3aec08 Mon Sep 17 00:00:00 2001 From: "F.N. Claessen" Date: Fri, 2 Apr 2021 13:29:47 +0200 Subject: [PATCH 06/13] Fix explicit minimum security dependency --- requirements/app.in | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements/app.in b/requirements/app.in index 99e3434d2..9534b06cd 100644 --- a/requirements/app.in +++ b/requirements/app.in @@ -43,7 +43,7 @@ Flask-Migrate Flask-WTF Flask-Login Flask-Mail -Flask-Security-Too<=4.0 +Flask-Security-Too>=4.0 Flask-Classful Flask-Marshmallow Flask-Cors From a2df6628c128ae02ec1079b920aaa4be0d698d85 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicolas=20H=C3=B6ning?= Date: Fri, 2 Apr 2021 13:38:51 +0200 Subject: [PATCH 07/13] Update changelog for 0.2.4 --- documentation/api/introduction.rst | 2 +- documentation/changelog.rst | 4 +++- documentation/cli/commands.rst | 2 +- 3 files changed, 5 insertions(+), 3 deletions(-) diff --git a/documentation/api/introduction.rst b/documentation/api/introduction.rst index df8fa2258..117113d51 100644 --- a/documentation/api/introduction.rst +++ b/documentation/api/introduction.rst @@ -342,7 +342,7 @@ Prognoses Some POST endpoints have two optional fields to allow setting the time at which beliefs are recorded explicitly. This is useful to keep an accurate history of what was known at what time, especially for prognoses. -If not used, |FLEXMEASURES_PLATFORM_NAME| will infer the prior from the arrival time of the message. +If not used, FlexMeasures will infer the prior from the arrival time of the message. The "prior" field (a timestamp) can be used to set a single time at which the entire prognosis was recorded. Alternatively, the "horizon" field (a duration) can be used to set the recording times relative to each prognosed event. diff --git a/documentation/changelog.rst b/documentation/changelog.rst index 07c8d3c19..14aa5568a 100644 --- a/documentation/changelog.rst +++ b/documentation/changelog.rst @@ -3,7 +3,7 @@ FlexMeasures Changelog ********************** -v0.2.4 | March XX, 2021 +v0.2.4 | April 2, 2021 =========================== New features @@ -12,6 +12,8 @@ New features * Optionally setting recording time when posting data [see `PR #41 `_] * Add assets and weather sensors with CLI commands [see `PR #74 `_] +.. note:: Read more on these features on `the FlexMeasures blog `__. + Bugfixes -------- * Show screenshots in documentation and add some missing content [see `PR #60 `_] diff --git a/documentation/cli/commands.rst b/documentation/cli/commands.rst index 69dbefe07..d56afc785 100644 --- a/documentation/cli/commands.rst +++ b/documentation/cli/commands.rst @@ -1,6 +1,6 @@ .. _cli: -Command Line Interface (CLI) +CLI Commands ============================= FlexMeasures comes with a command-line utility, which helps to manage data. From 8d13942dc1821e4dd9bdd44c7e15321f12cc7d3b Mon Sep 17 00:00:00 2001 From: "F.N. Claessen" Date: Fri, 2 Apr 2021 15:11:24 +0200 Subject: [PATCH 08/13] Fix tests with deprecation of sqlalchemy RowProxy in 1.4 --- flexmeasures/data/queries/utils.py | 27 ------------------------- flexmeasures/data/scripts/data_gen.py | 5 +++-- flexmeasures/data/services/resources.py | 15 +++++++------- 3 files changed, 10 insertions(+), 37 deletions(-) diff --git a/flexmeasures/data/queries/utils.py b/flexmeasures/data/queries/utils.py index 0fb54a421..e2c025cba 100644 --- a/flexmeasures/data/queries/utils.py +++ b/flexmeasures/data/queries/utils.py @@ -5,7 +5,6 @@ import timely_beliefs as tb from sqlalchemy.orm import Query, Session -from sqlalchemy.engine.result import RowProxy from flexmeasures.data.config import db from flexmeasures.data.models.data_sources import DataSource @@ -158,32 +157,6 @@ def add_belief_timing_filter( return query -def parse_sqlalchemy_results(results: List[RowProxy]) -> List[dict]: - """ - Returns a list of dicts, whose keys are column names. E.g.: - - data = session.execute("Select latitude from asset;").fetchall() - for row in parse_sqlalchemy_results(data): - print("------------") - for key, val in row: - print f"{key}: {val}" - - """ - parsed_results: List[dict] = [] - - if len(results) == 0: - return parsed_results - - # results from SQLAlchemy are returned as a list of tuples; - # this procedure converts it into a list of dicts - for row_number, row in enumerate(results): - parsed_results.append({}) - for column_number, value in enumerate(row): - parsed_results[row_number][row.keys()[column_number]] = value - - return parsed_results - - def simplify_index( bdf: tb.BeliefsDataFrame, index_levels_to_columns: Optional[List[str]] = None ) -> pd.DataFrame: diff --git a/flexmeasures/data/scripts/data_gen.py b/flexmeasures/data/scripts/data_gen.py index a71a7e0b3..700838bd2 100644 --- a/flexmeasures/data/scripts/data_gen.py +++ b/flexmeasures/data/scripts/data_gen.py @@ -19,13 +19,13 @@ import inflect from flexmeasures.data.models.markets import MarketType, Market, Price +from flexmeasures.data.models.time_series import Sensor from flexmeasures.data.models.assets import AssetType, Asset, Power from flexmeasures.data.models.data_sources import DataSource from flexmeasures.data.models.weather import WeatherSensorType, WeatherSensor, Weather from flexmeasures.data.models.user import User, Role, RolesUsers from flexmeasures.data.models.forecasting import lookup_model_specs_configurator from flexmeasures.data.models.forecasting.exceptions import NotEnoughDataException -from flexmeasures.data.queries.utils import parse_sqlalchemy_results from flexmeasures.utils.time_utils import ensure_local_timezone from flexmeasures.data.transactional import as_transaction @@ -641,7 +641,7 @@ def load_tables( affected_classes = get_affected_classes(structure, data) statement = "SELECT sequence_name from information_schema.sequences;" data = db.session.execute(statement).fetchall() - sequence_names = [s["sequence_name"] for s in parse_sqlalchemy_results(data)] + sequence_names = [s.sequence_name for s in data] for c in affected_classes: file_path = "%s/%s/%s.obj" % (backup_path, backup_name, c.__tablename__) sequence_name = "%s_id_seq" % c.__tablename__ @@ -682,6 +682,7 @@ def get_affected_classes(structure: bool = True, data: bool = False) -> List: Role, User, RolesUsers, + Sensor, MarketType, Market, AssetType, diff --git a/flexmeasures/data/services/resources.py b/flexmeasures/data/services/resources.py index 6fc21eee7..f66f7fabf 100644 --- a/flexmeasures/data/services/resources.py +++ b/flexmeasures/data/services/resources.py @@ -13,6 +13,7 @@ import inflect import pandas as pd from sqlalchemy.orm import Query, Session +from sqlalchemy.engine import Row import timely_beliefs as tb from flexmeasures.data.models.assets import ( @@ -24,7 +25,7 @@ from flexmeasures.data.models.markets import Market, Price from flexmeasures.data.models.weather import Weather, WeatherSensor, WeatherSensorType from flexmeasures.data.models.user import User -from flexmeasures.data.queries.utils import simplify_index, parse_sqlalchemy_results +from flexmeasures.data.queries.utils import simplify_index from flexmeasures.data.services.time_series import aggregate_values from flexmeasures.utils.geo_utils import parse_lat_lng from flexmeasures.utils import coding_utils, time_utils @@ -207,16 +208,14 @@ def get_center_location(db: Session, user: Optional[User]) -> Tuple[float, float ) if user and not user.has_role("admin"): query += f" where owner_id = {user.id}" - locations: List[dict] = parse_sqlalchemy_results( - db.session.execute(query + ";").fetchall() - ) + locations: List[Row] = db.session.execute(query + ";").fetchall() if ( len(locations) == 0 - or locations[0]["latitude"] is None - or locations[0]["longitude"] is None + or locations[0].latitude is None + or locations[0].longitude is None ): - return (52.38, 4.88) # Amsterdam, NL - return locations[0]["latitude"], locations[0]["longitude"] + return 52.366, 4.904 # Amsterdam, NL + return locations[0].latitude, locations[0].longitude def check_cache(attribute): From 9aa4539957a2bfdeeff9b601b90b9797f6c16e6b Mon Sep 17 00:00:00 2001 From: "F.N. Claessen" Date: Fri, 2 Apr 2021 15:13:55 +0200 Subject: [PATCH 09/13] One more upgrade --- requirements/dev.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements/dev.txt b/requirements/dev.txt index 85950a93f..64051526a 100644 --- a/requirements/dev.txt +++ b/requirements/dev.txt @@ -62,7 +62,7 @@ six==1.15.0 # -c requirements/app.txt # -c requirements/test.txt # virtualenv -toml==0.10.1 +toml==0.10.2 # via # -c requirements/test.txt # black From 5c5aeb5cbc9cfa8d4c867f2f701c2cab137f0724 Mon Sep 17 00:00:00 2001 From: "F.N. Claessen" Date: Fri, 2 Apr 2021 15:49:37 +0200 Subject: [PATCH 10/13] Make test after upgrading dependencies --- Makefile | 1 + 1 file changed, 1 insertion(+) diff --git a/Makefile b/Makefile index 5b0d11aae..dd8797f93 100644 --- a/Makefile +++ b/Makefile @@ -53,6 +53,7 @@ upgrade-deps: pip-compile --upgrade -o requirements/app.txt requirements/app.in pip-compile --upgrade -o requirements/dev.txt requirements/dev.in pip-compile --upgrade -o requirements/test.txt requirements/test.in + make test # ---- Data ---- From a03f21eff2ab125b54b6ffe24e8d059abe1ff3c4 Mon Sep 17 00:00:00 2001 From: "F.N. Claessen" Date: Fri, 2 Apr 2021 16:02:13 +0200 Subject: [PATCH 11/13] Changelog entry --- documentation/changelog.rst | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/documentation/changelog.rst b/documentation/changelog.rst index 14aa5568a..49fb85af2 100644 --- a/documentation/changelog.rst +++ b/documentation/changelog.rst @@ -3,6 +3,16 @@ FlexMeasures Changelog ********************** +v0.2.5 | April XX, 2021 +=========================== + +Infrastructure / Support +---------------------- +* Updated dependencies, including Flask-Security-Too [see `PR #82 `_] + + + + v0.2.4 | April 2, 2021 =========================== From 531ed41ae23a20025e20def8195837b38e55dee4 Mon Sep 17 00:00:00 2001 From: "F.N. Claessen" Date: Fri, 2 Apr 2021 19:32:02 +0200 Subject: [PATCH 12/13] Set minimum sqlalchemy dependency --- requirements/app.in | 1 + 1 file changed, 1 insertion(+) diff --git a/requirements/app.in b/requirements/app.in index 9534b06cd..60a3f64a5 100644 --- a/requirements/app.in +++ b/requirements/app.in @@ -36,6 +36,7 @@ timely-beliefs>=1.2.1 python-dotenv # a backport, not needed in Python3.8 importlib_metadata +sqlalchemy>=1.4.0 Flask-SSLify Flask_JSON Flask-SQLAlchemy>=2.4.3 From c7d68b02d7e716ae83e511c09d0c78ded7028b86 Mon Sep 17 00:00:00 2001 From: "F.N. Claessen" Date: Fri, 2 Apr 2021 19:35:58 +0200 Subject: [PATCH 13/13] Two more recent upgrades --- requirements/app.txt | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/requirements/app.txt b/requirements/app.txt index 1d6cb1e19..35570ffd7 100644 --- a/requirements/app.txt +++ b/requirements/app.txt @@ -303,8 +303,9 @@ sklearn==0.0 # via timetomodel soupsieve==2.2.1 # via beautifulsoup4 -sqlalchemy==1.4.4 +sqlalchemy==1.4.5 # via + # -r requirements/app.in # alembic # flask-sqlalchemy # marshmallow-sqlalchemy @@ -316,7 +317,7 @@ tables==3.6.1 # via -r requirements/app.in threadpoolctl==2.1.0 # via scikit-learn -timely-beliefs==1.2.1 +timely-beliefs==1.3.0 # via -r requirements/app.in timetomodel==0.6.9 # via -r requirements/app.in