diff --git a/.devcontainer/.bashrc b/.devcontainer/.bashrc index 4d486f0..0b4894c 100644 --- a/.devcontainer/.bashrc +++ b/.devcontainer/.bashrc @@ -2,10 +2,3 @@ PS1='${debian_chroot:+($debian_chroot)}\h:\w\[\033[1;36m\]$ \[\033[00m\]' export PATH=$PATH:$HOME/.local/bin - -#check if package is already installed before installing it -if ! python -c "import seismometer" 2> /dev/null; then - pip install pre-commit - pip install -r /home/seismo/workspace/requirements.txt - pre-commit install -fi diff --git a/.devcontainer/image/Dockerfile b/.devcontainer/image/Dockerfile index f69a7c6..afa19bd 100644 --- a/.devcontainer/image/Dockerfile +++ b/.devcontainer/image/Dockerfile @@ -1,13 +1,21 @@ -FROM python:3.11-slim as seismometer +FROM python:3.12-slim as seismometer RUN useradd --create-home --uid 1000 --shell /bin/bash seismo ENV PATH=${PATH}:/home/seismo/.local/bin -COPY ./stagefiles /env/ +# split copy to allow more caching of layers +#COPY ./stagefiles /env +COPY ./stagefiles/layer.sh /env/layer.sh RUN /bin/sh /env/layer.sh USER seismo -RUN pip install --no-cache-dir -r /env/python/requirements.txt + +COPY ./stagefiles/python /env/python +RUN pip install --no-cache-dir -c /env/python/constraints.txt -r /env/python/requirements.txt +RUN pip install --no-cache-dir -c /env/python/constraints.txt -r /env/python/requirements-dev.txt + +COPY ./stagefiles/audit_install.sh /env/audit_install.sh +RUN /bin/sh /env/audit_install.sh # https://github.com/opencontainers/image-spec/blob/main/annotations.md LABEL \ diff --git a/.devcontainer/image/stagefiles/audit_install.sh b/.devcontainer/image/stagefiles/audit_install.sh new file mode 100644 index 0000000..86f52f8 --- /dev/null +++ b/.devcontainer/image/stagefiles/audit_install.sh @@ -0,0 +1,6 @@ +set -e + +export DEBIAN_FRONTEND=noninteractive + +pip install -c /env/python/constraints.txt -r /env/python/requirements-audit.txt +pip install --no-deps aequitas diff --git a/.devcontainer/image/stagefiles/python/constraints.txt b/.devcontainer/image/stagefiles/python/constraints.txt new file mode 100644 index 0000000..f44f17e --- /dev/null +++ b/.devcontainer/image/stagefiles/python/constraints.txt @@ -0,0 +1,341 @@ +absl-py==2.1.0 +adagio==0.2.4 +aiohttp==3.9.3 +aiosignal==1.3.1 +alabaster==0.7.16 +alembic==1.13.1 +altair==4.2.2 +annotated-types==0.6.0 +antlr4-python3-runtime==4.11.1 +anyio==4.3.0 +appdirs==1.4.4 +argon2-cffi==23.1.0 +argon2-cffi-bindings==21.2.0 +arrow==1.3.0 +astroid==3.1.0 +asttokens==2.4.1 +astunparse==1.6.3 +async-generator==1.10 +async-lru==2.0.4 +attrs==23.2.0 +autograd==1.6.2 +autograd-gamma==0.5.0 +autopep8==2.0.4 +babel==2.14.0 +bcrypt==4.1.2 +beautifulsoup4==4.12.3 +black==24.2.0 +bleach==6.1.0 +blinker==1.7.0 +bokeh==3.4.1 +cachetools==5.3.3 +catboost==1.2.3 +certifi==2024.2.2 +certipy==0.1.3 +cffi==1.16.0 +charset-normalizer==3.3.2 +click==8.1.7 +cloudpickle==3.0.0 +cmdstanpy==1.2.1 +colorama==0.4.6 +colorlog==6.8.2 +comm==0.2.1 +contourpy==1.2.0 +coverage==7.4.3 +cryptography==42.0.5 +cycler==0.12.1 +Cython==3.0.9 +darts==0.28.0 +dash==2.16.1 +dash-core-components==2.0.0 +dash-cytoscape==1.0.0 +dash-html-components==2.0.0 +dash-table==5.0.0 +dask==2024.2.1 +debugpy==1.8.1 +decorator==5.1.1 +defusedxml==0.7.1 +dill==0.3.8 +distlib==0.3.8 +distributed==2024.2.1 +dm-tree==0.1.8 +docutils==0.20.1 +entrypoints==0.4 +et-xmlfile==1.1.0 +executing==2.0.1 +fairlearn==0.10.0 +fastjsonschema==2.19.1 +filelock==3.13.1 +flask==3.0.2 +flatbuffers==24.3.7 +fonttools==4.49.0 +formulaic==1.0.1 +fqdn==1.5.1 +frozenlist==1.4.1 +fs==2.4.16 +fsspec==2024.2.0 +fugue==0.8.7 +fugue-sql-antlr==0.2.0 +future==1.0.0 +gast==0.5.4 +geographiclib==2.0 +geopy==2.4.1 +gevent==24.2.1 +gitdb==4.0.11 +gitpython==3.1.42 +google-pasta==0.2.0 +graphviz==0.20.1 +great-expectations==0.18.10 +greenlet==3.0.3 +grpcio==1.62.0 +h11==0.14.0 +h5py==3.10.0 +holidays==0.44 +httpcore==1.0.4 +httpx==0.27.0 +idna==3.6 +imagesize==1.4.1 +importlib-metadata==7.0.2 +importlib-resources==6.1.3 +iniconfig==2.0.0 +interface-meta==1.3.0 +interpret==0.5.1 +interpret-core==0.5.1 +ipykernel==6.29.3 +ipython==8.22.2 +ipywidgets==8.1.2 +isoduration==20.11.0 +isort==5.13.2 +itsdangerous==2.1.2 +jedi==0.19.1 +jinja2==3.1.3 +joblib==1.3.2 +json5==0.9.22 +jsonpatch==1.33 +jsonpointer==2.4 +jsonschema==4.21.1 +jsonschema-specifications==2023.12.1 +jupyter==1.0.0 +jupyter-client==8.6.0 +jupyter-console==6.6.3 +jupyter-core==5.7.1 +jupyter-events==0.9.0 +jupyterhub==4.0.2 +jupyterlab==4.1.4 +jupyterlab-pygments==0.3.0 +jupyterlab-server==2.25.3 +jupyterlab-widgets==3.0.10 +jupyter-lsp==2.2.4 +jupyter-server==2.13.0 +jupyter-server-terminals==0.5.2 +jupyter-telemetry==0.1.0 +keras==3.0.5 +kiwisolver==1.4.5 +libclang==16.0.6 +lifelines==0.28.0 +lightgbm==4.3.0 +lightning-utilities==0.10.1 +llvmlite==0.42.0 +locket==1.0.0 +lz4==4.3.3 +makefun==1.15.2 +Mako==1.3.2 +markdown==3.5.2 +markdown-it-py==3.0.0 +markupsafe==2.1.5 +marshmallow==3.21.1 +matplotlib==3.8.3 +matplotlib-inline==0.1.6 +mccabe==0.7.0 +mdurl==0.1.2 +mistune==3.0.2 +ml-dtypes==0.3.2 +mlxtend==0.23.1 +modin==0.28.0 +mord==0.7 +mpmath==1.3.0 +msgpack==1.0.8 +multidict==6.0.5 +multiprocess==0.70.16 +mypy==1.9.0 +mypy-extensions==1.0.0 +namex==0.0.7 +nbclient==0.9.0 +nbconvert==7.16.2 +nbformat==5.9.2 +nest-asyncio==1.6.0 +networkx==3.2.1 +nfoursid==1.0.1 +nltk==3.8.1 +notebook==7.1.1 +notebook-shim==0.2.4 +numba==0.59.0 +numpy==1.26.4 +oauthlib==3.2.2 +openpyxl==3.1.2 +opt-einsum==3.3.0 +optuna==3.5.0 +overrides==7.7.0 +packaging==23.2 +pandas==2.2.1 +pandas-flavor==0.6.0 +pandocfilters==1.5.1 +paramiko==3.4.0 +parso==0.8.3 +partd==1.4.1 +pathspec==0.12.1 +patsy==0.5.6 +pillow==10.2.0 +pingouin==0.5.4 +pip==24.0 +platformdirs==4.2.0 +plotly==5.19.0 +pluggy==1.4.0 +pmdarima==2.0.4 +polars==0.20.14 +prometheus-client==0.20.0 +prompt-toolkit==3.0.43 +prophet==1.1.5 +protobuf==4.25.3 +psmpy==0.3.13 +psutil==5.9.8 +pure-eval==0.2.2 +pyarrow==15.0.1 +pyarrow-hotfix==0.6 +pycodestyle==2.11.1 +pycparser==2.21 +pydantic==2.6.3 +pydantic-core==2.16.3 +pydeck==0.8.1b0 +pygments==2.17.2 +pylint==3.1.0 +pynacl==1.5.0 +pyod==1.1.3 +pyodbc==5.1.0 +pyOpenSSL==24.0.0 +pyparsing==3.1.2 +pysftp==0.2.9 +pytest==8.0.2 +pytest-cov==4.1.0 +python-dateutil==2.9.0.post0 +python-json-logger==2.0.7 +pytorch-lightning==2.2.1 +pytz==2024.1 +pywin32==306 +pywinpty==2.0.13 +pyyaml==6.0.1 +pyzmq==25.1.2 +qpd==0.4.4 +qtconsole==5.5.1 +qtpy==2.4.1 +referencing==0.33.0 +regex==2023.12.25 +requests==2.31.0 +researchpy==0.3.6 +retrying==1.3.4 +rfc3339-validator==0.1.4 +rfc3986-validator==0.1.1 +rich==13.7.1 +rpds-py==0.18.0 +rpy2==3.5.15 +ruamel.yaml==0.17.17 +ruptures==1.1.9 +SALib==1.4.8 +scikit-learn==1.4.1.post1 +scikit-posthocs==0.9.0 +scipy==1.12.0 +seaborn==0.13.2 +Send2Trash==1.8.2 +setuptools==69.1.1 +shap==0.45.0 +Shapely==2.0.3 +six==1.16.0 +slicer==0.0.7 +smmap==5.0.1 +sniffio==1.3.1 +snowballstemmer==2.2.0 +sortedcontainers==2.4.0 +soupsieve==2.5 +sphinx==7.2.6 +sphinxcontrib-applehelp==1.0.8 +sphinxcontrib-devhelp==1.0.6 +sphinxcontrib-htmlhelp==2.0.5 +sphinxcontrib-jsmath==1.0.1 +sphinxcontrib-qthelp==1.0.7 +sphinxcontrib-serializinghtml==1.1.10 +sqlalchemy==2.0.28 +sqlglot==22.2.1 +stack-data==0.6.3 +stanio==0.3.0 +statistics==1.0.3.5 +statsforecast==1.7.3 +statsmodels==0.14.1 +streamlit==1.32.0 +sympy==1.12 +tabulate==0.9.0 +tbats==1.1.3 +tblib==3.0.0 +tenacity==8.2.3 +tensorboard==2.16.2 +tensorboard-data-server==0.7.2 +tensorboardx==2.6.2.2 +tensorflow==2.16.0rc0 +tensorflow-intel==2.16.0rc0 +termcolor==2.4.0 +terminado==0.18.0 +textdistance==4.6.1 +threadpoolctl==3.3.0 +tinycss2==1.2.1 +toml==0.10.2 +tomlkit==0.12.4 +toolz==0.12.1 +torch==2.2.1 +torchaudio==2.2.1 +torchmetrics==1.3.1 +torchvision==0.17.1 +tornado==6.4 +tqdm==4.66.2 +traitlets==5.14.1 +triad==0.9.5 +types-python-dateutil==2.8.19.20240106 +typing-extensions==4.10.0 +tzdata==2024.1 +tzlocal==5.2 +uri-template==1.3.0 +urllib3==2.2.1 +utilsforecast==0.1.1 +virtualenv==20.25.1 +watchdog==4.0.0 +wcwidth==0.2.13 +webcolors==1.13 +webencodings==0.5.1 +websocket-client==1.7.0 +werkzeug==3.0.1 +wheel==0.42.0 +widgetsnbextension==4.0.10 +wrapt==1.16.0 +xarray==2024.2.0 +xgboost==2.0.3 +xlsx2csv==0.8.2 +xyzservices==2024.4.0 +yarl==1.9.4 +zict==3.0.0 +zipp==3.17.0 +zope.event==5.0 +zope.interface==6.2 + +dask-ml==2024.4.4 +dask-glm==0.3.2 +multipledispatch==1.0.0 +sparse==0.15.3 + +visions==0.7.6 +htmlmin==0.1.12 +phik==0.12.4 +multimethod==1.11.2 +typeguard==4.2.1 +imagehash==4.3.1 +wordcloud==1.9.3 +dacite==1.8.1 +pywavelets==1.6.0 +captum==0.7.0 diff --git a/.devcontainer/image/stagefiles/python/requirements-audit.txt b/.devcontainer/image/stagefiles/python/requirements-audit.txt new file mode 100644 index 0000000..1abe870 --- /dev/null +++ b/.devcontainer/image/stagefiles/python/requirements-audit.txt @@ -0,0 +1,11 @@ +millify==0.1.1 +aif360>=0.5.0 +fairgbm==0.9.14 +hydra-core #0.11.3 +validators>=0.22.0 +hyperparameter-tuning>=0.3.1 +fastparquet==2024.2.0 + +altair #4.2.2 +fairlearn>=0.8.0 +#numpy diff --git a/.devcontainer/image/stagefiles/python/requirements-dev.txt b/.devcontainer/image/stagefiles/python/requirements-dev.txt new file mode 100644 index 0000000..580808a --- /dev/null +++ b/.devcontainer/image/stagefiles/python/requirements-dev.txt @@ -0,0 +1,6 @@ +coverage>=7.4.3 +autopep8>=1.3.5 +pytest-json>=0.4.0 +pytest>=5.1.1 +traitlets>=5.1.1 +pygments>=2.4.1 diff --git a/.devcontainer/image/stagefiles/python/requirements.txt b/.devcontainer/image/stagefiles/python/requirements.txt index 5011adb..6566f63 100644 --- a/.devcontainer/image/stagefiles/python/requirements.txt +++ b/.devcontainer/image/stagefiles/python/requirements.txt @@ -2,17 +2,18 @@ #aequitas==1.0.0 # numpy needs 1.26 starting at py3.12 -numpy>=1.23.5 +# pinned version come from constraints +numpy # All python -ipython==8.22.2 -ipywidgets==8.0.4 -jupyterlab==4.1.5 -matplotlib==3.8.4 -pandas==1.5.2 -pydantic==2.6.4 -pyarrow==16.1.0 -scikit-learn==1.2.0 -seaborn==0.12.2 -ydata-profiling==4.7.0 -numba<0.59 +ipython +ipywidgets +jupyterlab +matplotlib +pandas +pydantic +pyarrow +scikit-learn +seaborn +ydata-profiling +numba diff --git a/setup.cfg b/setup.cfg index 8c085b7..e22314e 100644 --- a/setup.cfg +++ b/setup.cfg @@ -52,7 +52,7 @@ audit = aequitas>=1.0.0,<2 dev = %(audit)s - coverage>=7.5.1 + coverage>=7.4.3 autopep8>=1.3.5 pytest-json>=0.4.0 pytest>=5.1.1