From c56b81a6e421102fa44dc1622d722e531a4fcc9b Mon Sep 17 00:00:00 2001 From: Sander Roosendaal Date: Fri, 31 May 2024 15:13:57 +0200 Subject: [PATCH 1/5] fix --- diff.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/diff.txt b/diff.txt index 54a99f09..e9a4aa85 100644 --- a/diff.txt +++ b/diff.txt @@ -2,6 +2,7 @@ Install common-fate-schema==0.7.0 types-python-dateutil==2.9.0.20240316 +pymemcache Upgrade From 8a2457b6e2edc975dd5f74b298e6efd735381446 Mon Sep 17 00:00:00 2001 From: Sander Roosendaal Date: Fri, 31 May 2024 15:24:28 +0200 Subject: [PATCH 2/5] to do list --- todo.txt | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 todo.txt diff --git a/todo.txt b/todo.txt new file mode 100644 index 00000000..40e0b84b --- /dev/null +++ b/todo.txt @@ -0,0 +1,2 @@ +- zoom on chart stack +- check force curve From 1869dc5883ba53e15c78885e3f205ed950466f3b Mon Sep 17 00:00:00 2001 From: Sander Roosendaal Date: Fri, 31 May 2024 15:25:40 +0200 Subject: [PATCH 3/5] cleaning up a bit --- requirements39.txt | 179 -------------------------- requirements_django3.txt | 259 -------------------------------------- requirements_nomail.txt | 259 -------------------------------------- requirementsdj4.2_dev.txt | 214 ------------------------------- 4 files changed, 911 deletions(-) delete mode 100644 requirements39.txt delete mode 100644 requirements_django3.txt delete mode 100644 requirements_nomail.txt delete mode 100644 requirementsdj4.2_dev.txt diff --git a/requirements39.txt b/requirements39.txt deleted file mode 100644 index 47dc6125..00000000 --- a/requirements39.txt +++ /dev/null @@ -1,179 +0,0 @@ -aiohttp==3.8.4 -aiosignal==1.3.1 -amqp==5.1.1 -arrow==1.2.3 -asgiref==3.7.2 -asttokens==2.2.1 -async-timeout==4.0.2 -attrs==23.1.0 -backcall==0.2.0 -beautifulsoup4==4.12.2 -billiard==3.6.4.0 -bleach==6.0.0 -bokeh==3.1.1 -braintree==4.20.0 -celery==5.2.1 -certifi==2023.5.7 -cffi==1.15.1 -charset-normalizer==3.1.0 -click==8.1.3 -click-didyoumean==0.3.0 -click-plugins==1.1.1 -click-repl==0.2.0 -cloudpickle==2.2.1 -colorcet==3.0.1 -contourpy==1.0.7 -coreapi==2.3.3 -coreschema==0.0.4 -cramjam==2.6.2 -cycler==0.11.0 -Cython==0.29.35 -dask==2023.5.1 -decorator==5.1.1 -Django==3.2.12 -django-analytical==2.5.0 -django-async-messages==0.3.1 -django-classy-tags==4.0.0 -django-cookie-law==2.0.1 -django-cors-headers==3.10.1 -django-countries==7.5.1 -django-datetime-widget2==0.9.5 -django-debug-toolbar==2.0 -django-leaflet==0.28.2 -django-oauth-toolkit==1.2.0 -django-oauth2-provider==0.2.6.1 -django-rest-framework==0.1.0 -django-rest-swagger==2.2.0 -django-rq==2.5.1 -django-shell-plus==1.1.7 -django-social-share==1.3.2 -django-taggit==4.0.0 -django-tz-detect==0.2.9 -djangorestframework==3.14.0 -docopt==0.6.2 -exceptiongroup==1.1.1 -executing==1.2.0 -factory-boy==2.11.1 -Faker==18.10.0 -fastparquet==2023.4.0 -fitparse==1.2.0 -fonttools==4.39.4 -frozenlist==1.3.3 -fsspec==2023.5.0 -future==0.18.3 -geocoder==1.38.1 -geoip2==4.7.0 -greenlet==2.0.2 -grpcio==1.26.0 -h3==3.7.6 -holoviews==1.16.0 -httplib2==0.22.0 -humanize==4.6.0 -icalendar==5.0.7 -idna==3.4 -importlib-metadata==6.6.0 -importlib-resources==5.12.0 -iniconfig==2.0.0 -ipython==8.14.0 -iso8601==1.1.0 -isodate==0.6.1 -itypes==1.2.0 -jedi==0.18.2 -Jinja2==3.0.3 -kiwisolver==1.4.4 -kombu==5.2.4 -linkify-it-py==2.0.2 -locket==1.0.0 -lxml==4.9.2 -Markdown==3.4.3 -markdown-it-py==2.2.0 -MarkupSafe==2.1.2 -matplotlib==3.7.1 -matplotlib-inline==0.1.6 -maxminddb==2.3.0 -mdit-py-plugins==0.3.5 -mdurl==0.1.2 -mock==5.0.2 -mpld3==0.5.9 -multidict==6.0.4 -nose==1.3.7 -nose-parameterized==0.6.0 -numpy==1.24.3 -oauth2==1.9.0.post1 -oauth2-provider==0.0 -oauthlib==3.2.2 -openapi-codec==1.3.2 -packaging==23.1 -pandas==2.0.2 -panel==1.0.4 -param==1.13.0 -parso==0.8.3 -partd==1.4.0 -pathspec==0.11.1 -pendulum==2.1.2 -pexpect==4.8.0 -pickleshare==0.7.5 -Pillow==9.5.0 -Pint==0.22 -pluggy==1.0.0 -prompt-toolkit==3.0.38 -protobuf==3.19.4 -ptyprocess==0.7.0 -pure-eval==0.2.2 -pyarrow==12.0.0 -pycairo==1.23.0 -pycparser==2.21 -pyct==0.5.0 -pydantic==1.10.8 -Pygments==2.15.1 -pyparsing==3.0.9 -pytest==7.3.1 -pytest-runner==6.0.0 -python-dateutil==2.8.2 -python-twitter==3.5 -pytz==2023.3 -pytzdata==2020.1 -pyviz-comms==2.3.0 -PyYAML==6.0 -ratelim==0.1.6 -redis==4.5.5 -requests==2.31.0 -requests-oauthlib==1.2.0 -rowingdata==3.5.29 -rowingphysics==0.5.2 -rq==1.15.0 -rules==3.3 -ruptures==1.1.7 -scipy==1.10.1 -shortuuid==1.0.11 -simplejson==3.19.1 -six==1.16.0 -soupsieve==2.4.1 -SQLAlchemy==2.0.15 -sqlparse==0.4.4 -stack-data==0.6.2 -stravalib==1.3.0 -timezonefinder==6.2.0 -tk==0.1.0 -tomli==2.0.1 -toolz==0.12.0 -tornado==6.3.2 -tqdm==4.65.0 -traitlets==5.9.0 -trueskill==0.4.5 -typing_extensions==4.6.3 -tzdata==2023.3 -uc-micro-py==1.0.2 -uritemplate==4.1.1 -urllib3==2.0.2 -VerbalExpressions==0.0.2 -vine==5.0.0 -wcwidth==0.2.6 -webencodings==0.5.1 -Werkzeug==2.3.4 -xmltodict==0.13.0 -xyzservices==2023.5.0 -yamjam==0.1.7 -yamllint==1.32.0 -yarl==1.9.2 -zipp==3.15.0 diff --git a/requirements_django3.txt b/requirements_django3.txt deleted file mode 100644 index 4437b52d..00000000 --- a/requirements_django3.txt +++ /dev/null @@ -1,259 +0,0 @@ -amqp==5.0.7 -anyio==3.4.0 -apipkg==1.5 -appdirs==1.4.3 -arcgis==1.6.0 -argon2-cffi==21.3.0 -argon2-cffi-bindings==21.2.0 -arrow==1.0.2 -asgiref==3.4.1 -asn1crypto==0.24.0 -atomicwrites==1.3.0 -attrs==19.1.0 -Babel==2.9.1 -backcall==0.1.0 -backports.zoneinfo==0.2.1 -beautifulsoup4==4.7.1 -billiard==3.6.4.0 -bleach==4.1.0 -bokeh==2.2.3 -boto==2.49.0 -boto3==1.17.45 -botocore==1.20.45 -bottle==0.12.19 -braintree==3.55.0 -cairocffi==1.0.2 -celery==5.2.1 -certifi==2019.3.9 -cffi==1.14.0 -chardet==3.0.4 -click==8.0.3 -click-didyoumean==0.3.0 -click-plugins==1.1.1 -click-repl==0.2.0 -cloudpickle==1.2.2 -colorama==0.4.1 -colorclass==2.2.0 -cookies==2.2.1 -coreapi==2.3.3 -coreschema==0.0.4 -coverage==5.5 -cryptography==3.4.7 -cycler==0.10.0 -Cython==0.29.21 -dask==2021.12.0 -decorator==4.4.0 -defusedxml==0.5.0 -Django==3.2.10 -django-analytical==2.5.0 -django-async-messages==0.3.1 -django-braces==1.13.0 -django-classy-tags==0.8.0 -django-cookie-law==2.0.1 -django-cors-headers==3.10.1 -django-countries==7.2.1 -django-datetime-widget2==0.9.5 -django-debug-toolbar==2.0 -django-extensions==2.1.6 -django-htmlmin==0.11.0 -django-leaflet==0.28.2 -django-mailbox==4.8.2 -django-oauth-toolkit==1.2.0 -django-oauth2-provider==0.2.6.1 -django-picklefield==2.1.1 -django-redis==4.10.0 -django-rest-framework==0.1.0 -django-rest-swagger==2.2.0 -django-rq==2.4.1 -django-rq-dashboard==0.3.3 -django-ses==2.0.0 -django-shell-plus==1.1.7 -django-social-share==1.3.2 -django-suit==0.2.28 -django-suit-rq==1.0.1 -django-taggit==1.3.0 -django-tz-detect==0.2.9 -djangorestframework==3.13.0 -docopt==0.6.2 -docutils==0.14 -dparse==0.5.1 -entrypoints==0.3 -execnet==1.5.0 -factory-boy==2.11.1 -Faker==1.0.4 -fastparquet==0.5.0 -fitparse==1.2.0 -Flask==1.0.2 -fonttools==4.28.2 -fsspec==2021.11.1 -future==0.17.1 -geocoder==1.38.1 -geoip2==3.0.0 -geos==0.2.1 -grpcio==1.26.0 -grpcio-tools==1.26.0 -gunicorn==20.0.4 -holoviews==1.13.5 -html5lib==1.1 -htmlmin==0.1.12 -HTMLParser==0.0.2 -httplib2==0.20.2 -humanize==3.3.0 -hvplot==0.4.0 -icalendar==4.0.3 -idna==2.8 -image==1.5.27 -importlib-resources==1.0.2 -ipykernel==5.1.0 -ipython==7.22.0 -ipython-genutils==0.2.0 -ipywidgets==7.4.2 -iso8601==0.1.12 -isodate==0.6.0 -itsdangerous==1.1.0 -itypes==1.2.0 -jedi==0.18.0 -jeepney==0.6.0 -Jinja2==3.0.3 -jmespath==0.10.0 -json5==0.8.5 -jsonschema==3.0.1 -jupyter==1.0.0 -jupyter-client==6.1.7 -jupyter-console==6.2.0 -jupyter-core==4.7.0 -jupyter-server==1.13.1 -jupyterlab==3.2.5 -jupyterlab-server==2.9.0 -keyring==18.0.0 -kiwisolver==1.0.1 -kombu==5.2.2 -llvmlite==0.36.0 -locket==0.2.1 -lxml==4.7.1 -Markdown==3.0.1 -MarkupSafe==2.0.1 -matplotlib==3.5.0 -maxminddb==1.5.4 -MiniMockTest==0.5 -mistune==0.8.4 -mock==2.0.0 -more-itertools==6.0.0 -mpld3==0.3 -mysqlclient==1.4.2.post1 -nbclassic==0.3.4 -nbconvert==5.4.1 -nbformat==4.4.0 -nest-asyncio==1.5.4 -newrelic==5.2.1.129 -nose==1.3.7 -nose-parameterized==0.6.0 -notebook==6.4.6 -numba==0.53.1 -numpy==1.18.5 -oauth2==1.9.0.post1 -oauth2-provider==0.0 -oauthlib==3.0.1 -openapi-codec==1.3.2 -packaging==21.3 -pandas==1.2.4 -pandocfilters==1.4.2 -panel==0.10.1 -param==1.10.0 -parameterized==0.8.1 -parso==0.8.2 -partd==1.2.0 -pathspec==0.5.9 -pbr==5.1.3 -pendulum==2.1.2 -pexpect==4.6.0 -pickleshare==0.7.5 -Pillow==8.4.0 -pip-upgrader==1.4.6 -pluggy==0.9.0 -prometheus-client==0.6.0 -prompt-toolkit==2.0.9 -protobuf==3.11.1 -psycopg2==2.8.1 -ptyprocess==0.6.0 -py==1.11.0 -pyarrow==2.0.0 -pycairo==1.19.0 -pycparser==2.19 -pyct==0.4.8 -Pygments==2.3.1 -PyJWT==2.1.0 -pyOpenSSL==20.0.1 -pyparsing==3.0.6 -pyrsistent==0.14.11 -pyshp==2.1.0 -pytest==4.3.1 -pytest-django==3.4.8 -pytest-forked==1.0.2 -pytest-runner==4.4 -pytest-sugar==0.9.2 -pytest-xdist==1.27.0 -python-dateutil==2.8.0 -python-memcached==1.59 -python-twitter==3.5 -pytz==2020.1 -pytzdata==2020.1 -pyviz-comms==0.7.6 -pywin32-ctypes==0.2.0 -PyYAML==6.0 -pyzmq==18.0.1 -qtconsole==4.4.3 -ratelim==0.1.6 -rauth==0.7.3 -redis==3.5.3 -requests==2.23.0 -requests-oauthlib==1.2.0 -rowingdata==3.4.9 -rowingphysics==0.5.0 -rq==1.10.1 -rules==3.0 -ruptures==1.1.3 -s3transfer==0.3.4 -safety==1.10.3 -scipy==1.5.4 -SecretStorage==3.3.1 -Send2Trash==1.8.0 -setuptools-scm==6.3.2 -shell==1.0.1 -shortuuid==0.5.0 -simplejson==3.17.2 -six==1.12.0 -sniffio==1.2.0 -soupsieve==1.8 -SQLAlchemy==1.3.1 -sqlparse==0.3.0 -stravalib==0.10.4 -termcolor==1.1.0 -terminado==0.12.1 -terminaltables==3.1.0 -testpath==0.4.2 -text-unidecode==1.2 -thrift==0.15.0 -timezonefinder==5.2.0 -tk==0.1.0 -toml==0.10.2 -tomli==1.2.2 -toolz==0.10.0 -tornado==6.1 -tqdm==4.31.1 -traitlets==4.3.2 -typing_extensions==4.0.1 -units==0.7 -uritemplate==3.0.0 -urllib3==1.25.9 -VerbalExpressions==0.0.2 -vine==5.0.0 -wcwidth==0.1.7 -webencodings==0.5.1 -websocket-client==1.2.3 -Werkzeug==0.15.1 -widgetsnbextension==3.4.2 -xlrd==1.2.0 -xmltodict==0.12.0 -yamjam==0.1.7 -yamllint==1.15.0 diff --git a/requirements_nomail.txt b/requirements_nomail.txt deleted file mode 100644 index 341b5026..00000000 --- a/requirements_nomail.txt +++ /dev/null @@ -1,259 +0,0 @@ -amqp==5.0.7 -anyio==3.4.0 -apipkg==1.5 -appdirs==1.4.3 -arcgis==1.6.0 -argon2-cffi==21.3.0 -argon2-cffi-bindings==21.2.0 -arrow==1.0.2 -asgiref==3.4.1 -asn1crypto==0.24.0 -atomicwrites==1.3.0 -attrs==19.1.0 -Babel==2.9.1 -backcall==0.1.0 -backports.zoneinfo==0.2.1 -beautifulsoup4==4.7.1 -billiard==3.6.4.0 -bleach==4.1.0 -bokeh==2.2.3 -boto==2.49.0 -boto3==1.17.45 -botocore==1.20.45 -bottle==0.12.19 -braintree==3.55.0 -cairocffi==1.0.2 -celery==5.2.1 -certifi==2019.3.9 -cffi==1.14.0 -chardet==3.0.4 -click==8.0.3 -click-didyoumean==0.3.0 -click-plugins==1.1.1 -click-repl==0.2.0 -cloudpickle==1.2.2 -colorama==0.4.1 -colorclass==2.2.0 -cookies==2.2.1 -coreapi==2.3.3 -coreschema==0.0.4 -coverage==5.5 -cryptography==3.4.7 -cycler==0.10.0 -Cython==0.29.21 -dask==2021.12.0 -decorator==4.4.0 -defusedxml==0.5.0 -Deprecated==1.2.13 -Django==3.2.10 -django-analytical==2.5.0 -django-async-messages==0.3.1 -django-braces==1.13.0 -django-classy-tags==0.8.0 -django-cookie-law==2.0.1 -django-cors-headers==3.10.1 -django-countries==7.2.1 -django-datetime-widget2==0.9.5 -django-debug-toolbar==2.0 -django-extensions==2.1.6 -django-htmlmin==0.11.0 -django-leaflet==0.28.2 -django-oauth-toolkit==1.2.0 -django-oauth2-provider==0.2.6.1 -django-picklefield==2.1.1 -django-redis==4.10.0 -django-rest-framework==0.1.0 -django-rest-swagger==2.2.0 -django-rq==2.5.1 -django-rq-dashboard==0.3.3 -django-ses==2.0.0 -django-shell-plus==1.1.7 -django-social-share==1.3.2 -django-taggit==1.3.0 -django-tz-detect==0.2.9 -djangorestframework==3.13.0 -docopt==0.6.2 -docutils==0.14 -dparse==0.5.1 -entrypoints==0.3 -execnet==1.5.0 -factory-boy==2.11.1 -Faker==1.0.4 -fastparquet==0.5.0 -fitparse==1.2.0 -Flask==1.0.2 -fonttools==4.28.2 -fsspec==2021.11.1 -future==0.17.1 -geocoder==1.38.1 -geoip2==3.0.0 -geos==0.2.1 -grpcio==1.26.0 -grpcio-tools==1.26.0 -gunicorn==20.0.4 -holoviews==1.13.5 -html5lib==1.1 -htmlmin==0.1.12 -HTMLParser==0.0.2 -httplib2==0.20.2 -humanize==3.3.0 -hvplot==0.4.0 -icalendar==4.0.3 -idna==2.8 -image==1.5.27 -importlib-resources==1.0.2 -ipykernel==5.1.0 -ipython==7.22.0 -ipython-genutils==0.2.0 -ipywidgets==7.4.2 -iso8601==0.1.12 -isodate==0.6.0 -itsdangerous==1.1.0 -itypes==1.2.0 -jedi==0.18.0 -jeepney==0.6.0 -Jinja2==3.0.3 -jmespath==0.10.0 -json5==0.8.5 -jsonschema==3.0.1 -jupyter==1.0.0 -jupyter-client==6.1.7 -jupyter-console==6.2.0 -jupyter-core==4.7.0 -jupyter-server==1.13.1 -jupyterlab==3.2.5 -jupyterlab-server==2.9.0 -jwcrypto==1.0 -keyring==18.0.0 -kiwisolver==1.0.1 -kombu==5.2.2 -llvmlite==0.36.0 -locket==0.2.1 -lxml==4.7.1 -Markdown==3.0.1 -MarkupSafe==2.0.1 -matplotlib==3.5.0 -maxminddb==1.5.4 -MiniMockTest==0.5 -mistune==0.8.4 -mock==2.0.0 -more-itertools==6.0.0 -mpld3==0.3 -mysqlclient==1.4.2.post1 -nbclassic==0.3.4 -nbconvert==5.4.1 -nbformat==4.4.0 -nest-asyncio==1.5.4 -newrelic==5.2.1.129 -nose==1.3.7 -nose-parameterized==0.6.0 -notebook==6.4.6 -numba==0.53.1 -numpy==1.18.5 -oauth2==1.9.0.post1 -oauth2-provider==0.0 -oauthlib==3.0.1 -openapi-codec==1.3.2 -packaging==21.3 -pandas==1.2.4 -pandocfilters==1.4.2 -panel==0.10.1 -param==1.10.0 -parameterized==0.8.1 -parso==0.8.2 -partd==1.2.0 -pathspec==0.5.9 -pbr==5.1.3 -pendulum==2.1.2 -pexpect==4.6.0 -pickleshare==0.7.5 -Pillow==8.4.0 -pip-upgrader==1.4.6 -pluggy==0.9.0 -prometheus-client==0.6.0 -prompt-toolkit==2.0.9 -protobuf==3.11.1 -psycopg2==2.8.1 -ptyprocess==0.6.0 -py==1.11.0 -pyarrow==2.0.0 -pycairo==1.19.0 -pycparser==2.19 -pyct==0.4.8 -Pygments==2.3.1 -PyJWT==2.1.0 -pyOpenSSL==20.0.1 -pyparsing==3.0.6 -pyrsistent==0.14.11 -pyshp==2.1.0 -pytest==4.3.1 -pytest-django==3.4.8 -pytest-forked==1.0.2 -pytest-runner==4.4 -pytest-sugar==0.9.2 -pytest-xdist==1.27.0 -python-dateutil==2.8.0 -python-memcached==1.59 -python-twitter==3.5 -pytz==2020.1 -pytzdata==2020.1 -pyviz-comms==0.7.6 -pywin32-ctypes==0.2.0 -PyYAML==6.0 -pyzmq==18.0.1 -qtconsole==4.4.3 -ratelim==0.1.6 -rauth==0.7.3 -redis==3.5.3 -requests==2.23.0 -requests-oauthlib==1.2.0 -rowingdata==3.4.9 -rowingphysics==0.5.0 -rq==1.10.1 -rules==3.0 -ruptures==1.1.3 -s3transfer==0.3.4 -safety==1.10.3 -scipy==1.5.4 -SecretStorage==3.3.1 -Send2Trash==1.8.0 -setuptools-scm==6.3.2 -shell==1.0.1 -shortuuid==0.5.0 -simplejson==3.17.2 -six==1.12.0 -sniffio==1.2.0 -soupsieve==1.8 -SQLAlchemy==1.3.1 -sqlparse==0.3.0 -stravalib==0.10.4 -termcolor==1.1.0 -terminado==0.12.1 -terminaltables==3.1.0 -testpath==0.4.2 -text-unidecode==1.2 -thrift==0.15.0 -timezonefinder==5.2.0 -tk==0.1.0 -toml==0.10.2 -tomli==1.2.2 -toolz==0.10.0 -tornado==6.1 -tqdm==4.31.1 -traitlets==4.3.2 -typing_extensions==4.0.1 -units==0.7 -uritemplate==3.0.0 -urllib3==1.25.9 -VerbalExpressions==0.0.2 -vine==5.0.0 -wcwidth==0.1.7 -webencodings==0.5.1 -websocket-client==1.2.3 -Werkzeug==0.15.1 -widgetsnbextension==3.4.2 -wrapt==1.13.3 -xlrd==1.2.0 -xmltodict==0.12.0 -yamjam==0.1.7 -yamllint==1.15.0 diff --git a/requirementsdj4.2_dev.txt b/requirementsdj4.2_dev.txt deleted file mode 100644 index 06a44e40..00000000 --- a/requirementsdj4.2_dev.txt +++ /dev/null @@ -1,214 +0,0 @@ -aiohttp==3.8.4 -aiosignal==1.3.1 -alabaster==0.7.13 -amqp==5.1.1 -arrow==1.2.3 -asgiref==3.7.2 -asttokens==2.2.1 -async-timeout==4.0.2 -attrs==23.1.0 -Babel==2.12.1 -backcall==0.2.0 -beautifulsoup4==4.12.2 -billiard==3.6.4.0 -bleach==6.0.0 -bokeh==3.1.1 -boto3==1.26.159 -botocore==1.29.159 -braintree==4.21.0 -celery==5.2.1 -certifi==2023.5.7 -cffi==1.15.1 -charset-normalizer==3.1.0 -click==8.1.3 -click-didyoumean==0.3.0 -click-plugins==1.1.1 -click-repl==0.2.0 -cloudpickle==2.2.1 -colorcet==3.0.1 -common-fate-schema==0.7.0 -contourpy==1.0.7 -coreapi==2.3.3 -coreschema==0.0.4 -cramjam==2.6.2 -cryptography==41.0.1 -cycler==0.11.0 -Cython==0.29.35 -dask==2023.5.1 -decorator==5.1.1 -Django==4.2.13 -django-analytical==2.5.0 -django-async-messages==0.3.1 -django-classy-tags==4.0.0 -django-cookie-law==2.0.1 -django-cors-headers==3.10.1 -django-countries==7.5.1 -django-datetime-widget2==0.9.5 -django-debug-toolbar==2.0 -django-leaflet==0.28.2 -django-oauth-toolkit==1.2.0 -django-recaptcha==4.0.0 -django-rest-framework==0.1.0 -django-rest-swagger==2.2.0 -django-rq==2.5.1 -django-ses==2.0.0 -django-shell-plus==1.1.7 -django-social-share==1.3.2 -django-taggit==4.0.0 -django-tz-detect==0.5.0 -djangorestframework==3.14.0 -docopt==0.6.2 -docutils==0.20.1 -exceptiongroup==1.1.1 -executing==1.2.0 -factory-boy==2.11.1 -Faker==18.10.0 -fastparquet==2023.4.0 -fitparse==1.2.0 -fonttools==4.39.4 -frozenlist==1.3.3 -fsspec==2023.5.0 -future==0.18.3 -geocoder==1.38.1 -geoip2==4.8.0 -greenlet==2.0.2 -grpcio==1.26.0 -gunicorn==20.1.0 -h3==3.7.6 -hashring==1.5.1 -holoviews==1.16.0 -httplib2==0.22.0 -humanize==4.6.0 -icalendar==5.0.7 -idna==3.4 -imagesize==1.4.1 -importlib-metadata==6.6.0 -importlib-resources==5.12.0 -iniconfig==2.0.0 -ipython==8.14.0 -iso8601==1.1.0 -isodate==0.6.1 -itypes==1.2.0 -jaraco.classes==3.2.3 -jedi==0.18.2 -jeepney==0.8.0 -Jinja2==3.0.3 -jmespath==1.0.1 -keyring==23.13.1 -kiwisolver==1.4.4 -kombu==5.2.4 -linkify-it-py==2.0.2 -locket==1.0.0 -lxml==4.9.2 -Markdown==3.4.3 -markdown-it-py==2.2.0 -MarkupSafe==2.1.2 -matplotlib==3.7.1 -matplotlib-inline==0.1.6 -maxminddb==2.6.1 -mdit-py-plugins==0.3.5 -mdurl==0.1.2 -mock==5.0.2 -more-itertools==9.1.0 -mpld3==0.5.9 -multidict==6.0.4 -mysqlclient==2.2.0 -newrelic==8.1.0.180 -nose==1.3.7 -nose-parameterized==0.6.0 -numpy==1.24.3 -oauthlib==3.2.2 -openapi-codec==1.3.2 -packaging==23.1 -pandas==2.0.2 -panel==1.0.4 -param==1.13.0 -parso==0.8.3 -partd==1.4.0 -pathspec==0.11.1 -pendulum==2.1.2 -pexpect==4.8.0 -pickleshare==0.7.5 -Pillow==9.5.0 -Pint==0.22 -pkginfo==1.9.6 -pluggy==1.0.0 -polars==0.20.18 -prompt-toolkit==3.0.38 -protobuf==4.25.3 -ptyprocess==0.7.0 -pure-eval==0.2.2 -pyarrow==12.0.0 -pycairo==1.23.0 -pycparser==2.21 -pyct==0.5.0 -pydantic==1.10.8 -Pygments==2.15.1 -pyparsing==3.0.9 -pytest==7.3.1 -pytest-runner==6.0.0 -python-dateutil==2.8.2 -python-memcached==1.59 -python-twitter==3.5 -pytz==2023.3 -pytzdata==2020.1 -pyviz-comms==2.3.0 -PyYAML==6.0 -ratelim==0.1.6 -readme-renderer==37.3 -redis==4.5.5 -requests==2.31.0 -requests-oauthlib==1.2.0 -requests-toolbelt==1.0.0 -rfc3986==2.0.0 -rich==13.4.1 -rowingdata==3.6.10 -rowingphysics==0.5.2 -rq==1.15.0 -rules==3.3 -ruptures==1.1.7 -s3transfer==0.6.1 -scipy==1.10.1 -SecretStorage==3.3.3 -shortuuid==1.0.11 -simplejson==3.19.1 -six==1.16.0 -snowballstemmer==2.2.0 -soupsieve==2.4.1 -Sphinx==7.0.1 -sphinxcontrib-applehelp==1.0.4 -sphinxcontrib-devhelp==1.0.2 -sphinxcontrib-htmlhelp==2.0.1 -sphinxcontrib-jsmath==1.0.1 -sphinxcontrib-qthelp==1.0.3 -sphinxcontrib-serializinghtml==1.1.5 -SQLAlchemy==2.0.15 -sqlparse==0.4.4 -stack-data==0.6.2 -stravalib==1.3.0 -timezonefinder==6.2.0 -tk==0.1.0 -tomli==2.0.1 -toolz==0.12.0 -tornado==6.3.2 -tqdm==4.65.0 -traitlets==5.9.0 -trueskill==0.4.5 -twine==4.0.2 -types-python-dateutil==2.9.0.20240316 -typing_extensions==4.6.3 -tzdata==2023.3 -uc-micro-py==1.0.2 -uritemplate==4.1.1 -urllib3==1.26.16 -VerbalExpressions==0.0.2 -vine==5.0.0 -wcwidth==0.2.6 -webencodings==0.5.1 -Werkzeug==2.3.4 -xmltodict==0.13.0 -xyzservices==2023.5.0 -yamjam==0.1.7 -yamllint==1.32.0 -yarl==1.9.2 -zipp==3.15.0 From 258b083efdf6c5602fb40b2586df5504c1ffd0b2 Mon Sep 17 00:00:00 2001 From: Sander Roosendaal Date: Sat, 1 Jun 2024 14:24:44 +0200 Subject: [PATCH 4/5] fix --- rowers/interactiveplots.py | 1 - rowers/tests/testdata/testdata.tcx.gz | Bin 4000 -> 4001 bytes rowers/views/workoutviews.py | 2 ++ 3 files changed, 2 insertions(+), 1 deletion(-) diff --git a/rowers/interactiveplots.py b/rowers/interactiveplots.py index 779511d8..2f13b840 100644 --- a/rowers/interactiveplots.py +++ b/rowers/interactiveplots.py @@ -1311,7 +1311,6 @@ def instroke_interactive_chart(df,metric, workout, spm_min, spm_max, if df.empty: return "", "No data in selection" - df_pos = (df+abs(df))/2. df_min = -(-df+abs(-df))/2. diff --git a/rowers/tests/testdata/testdata.tcx.gz b/rowers/tests/testdata/testdata.tcx.gz index 0a90e12f7860ffabf41f8525a6733bbd92242b0a..549e76ff8842a33bdd46ad8da0c75276c5caa135 100644 GIT binary patch literal 4001 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 H#DD<+sO~&e literal 4000 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 GfB^vHP%66s diff --git a/rowers/views/workoutviews.py b/rowers/views/workoutviews.py index 6385e646..288614a2 100644 --- a/rowers/views/workoutviews.py +++ b/rowers/views/workoutviews.py @@ -3088,6 +3088,8 @@ def instroke_chart_interactive(request, id=0, analysis=0, userid=0): factor=factor, ) + data = data.fillna(method='ffill').fillna(method='bfill') + if metric == 'boat accelerator curve' and data.median().max() < 0.5: data = 9.81*data From fcc03b1195746cb130de536005bb22b4a08f8575 Mon Sep 17 00:00:00 2001 From: Sander Roosendaal Date: Sat, 1 Jun 2024 14:41:13 +0200 Subject: [PATCH 5/5] fix instroke chart --- rowers/tests/testdata/testdata.tcx.gz | Bin 4001 -> 4000 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/rowers/tests/testdata/testdata.tcx.gz b/rowers/tests/testdata/testdata.tcx.gz index 549e76ff8842a33bdd46ad8da0c75276c5caa135..2c7970968853c425fa962df8780b7db0add8220f 100644 GIT binary patch literal 4000 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 H#DD<+sO~&e