diff --git a/.gitmodules b/.gitmodules index ecb757aca34d30922c52de87b60f9a1bdc9252ea..326af5de69b54df4156b64b2bab28dc440357b70 100644 --- a/.gitmodules +++ b/.gitmodules @@ -8,9 +8,6 @@ path = dependencies/parsers/eelsdb url = https://github.com/nomad-coe/nomad-parser-eelsdb.git branch = master -[submodule "dependencies/parsers/example"] - path = dependencies/parsers/example - url = https://github.com/nomad-coe/nomad-parser-example.git [submodule "dependencies/nomad-remote-tools-hub"] path = dependencies/nomad-remote-tools-hub url = https://gitlab.mpcdf.mpg.de/nomad-lab/nomad-remote-tools-hub.git diff --git a/Dockerfile b/Dockerfile index 9d710cd88e894d2131b2e8a5f2855f697f1e1ba2..ff4502bcfcdfc0379fad40692ca5d6616d065eb5 100644 --- a/Dockerfile +++ b/Dockerfile @@ -67,8 +67,10 @@ RUN rm -rf /pymolfile # Copy files and install nomad@FAIRDI WORKDIR /install COPY . /install -RUN python setup.py compile +# RUN python setup.py compile +RUN pip install -r requirements-all.txt RUN pip install .[all] +RUN ./dependencies.sh RUN ./generate_gui_artifacts.sh RUN ./generate_docs_artifacts.sh RUN mkdocs build && mv site docs/build @@ -95,6 +97,7 @@ COPY --from=build /install/gui/src/toolkitMetadata.json /app/src/toolkitMetadata COPY --from=build /install/gui/src/exampleUploads.json /app/src/exampleUploads.json COPY --from=build /install/gui/src/unitsData.js /app/src/unitsData.js COPY --from=build /install/gui/src/northTools.json /app/src/northTools.json +ENV NODE_OPTIONS "--max_old_space_size=3072" RUN yarn run build # Third, create a slim final image diff --git a/MANIFEST.in b/MANIFEST.in index fe15e110b79a7b3e7e4c51e35750ebe64b8f8dde..54a26a510fe9f713fd8be2d3248aaa333f2fb4fe 100644 --- a/MANIFEST.in +++ b/MANIFEST.in @@ -1,15 +1 @@ -recursive-include dependencies/optimade-python-tools *.txt *.g *.py *.ini *.json -recursive-include nomad *.json *.j2 *.md *.yaml -include nomad/units/*.txt -include README.md -include LICENSE.txt -include requirements.txt -include auto_complete_install.sh -include setup.json -recursive-include nomad/app/static/gui/ *.css *.ico *.html *.json *.js *.map *.txt *.svg *.png -recursive-include docs/build/ *.css *.ico *.html *.json *.js *.map *.txt *.svg *.png recursive-include dependencies/parsers/ metadata.yaml -recursive-include dependencies/parsers/nexus/nexusparser/definitions/base_classes/ *.xml -recursive-include dependencies/parsers/nexus/nexusparser/definitions/applications/ *.xml -recursive-include dependencies/parsers/nexus/nexusparser/definitions/contributed_definitions/ *.xml -include dependencies/parsers/nexus/nexusparser/definitions/ *.xsd diff --git a/dependencies/parsers/electronic b/dependencies/parsers/electronic index 5c077f48adcda8e6ec2f5cfb2220adc04100c3e6..9c1c9a5adaa4a50fee11292751ba29bb2ef3db2f 160000 --- a/dependencies/parsers/electronic +++ b/dependencies/parsers/electronic @@ -1 +1 @@ -Subproject commit 5c077f48adcda8e6ec2f5cfb2220adc04100c3e6 +Subproject commit 9c1c9a5adaa4a50fee11292751ba29bb2ef3db2f diff --git a/dependencies/parsers/example b/dependencies/parsers/example deleted file mode 160000 index 8d8b58027e9ab4e61077b94d19e74bc0645419a3..0000000000000000000000000000000000000000 --- a/dependencies/parsers/example +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 8d8b58027e9ab4e61077b94d19e74bc0645419a3 diff --git a/dependencies/parsers/nexus b/dependencies/parsers/nexus index 78b721318cb824e404234702c0aef19a7d8b6dba..baba4b0ed3388c7b603347bce375d2c1bbf2314b 160000 --- a/dependencies/parsers/nexus +++ b/dependencies/parsers/nexus @@ -1 +1 @@ -Subproject commit 78b721318cb824e404234702c0aef19a7d8b6dba +Subproject commit baba4b0ed3388c7b603347bce375d2c1bbf2314b diff --git a/dependencies/parsers/workflow b/dependencies/parsers/workflow index ed2592c0953ebad15e59ca6f60b2b7eb3c2afcd1..a7090a14cd19416ded74c33ebb1d8581402af1c0 160000 --- a/dependencies/parsers/workflow +++ b/dependencies/parsers/workflow @@ -1 +1 @@ -Subproject commit ed2592c0953ebad15e59ca6f60b2b7eb3c2afcd1 +Subproject commit a7090a14cd19416ded74c33ebb1d8581402af1c0 diff --git a/generate_sdist.sh b/generate_sdist.sh new file mode 100755 index 0000000000000000000000000000000000000000..a2c7cfa724cc362514bc997930d982e9d7b60a41 --- /dev/null +++ b/generate_sdist.sh @@ -0,0 +1,21 @@ +#!/bin/sh + +./gitinfo.sh + +./generate_docs_artifacts.sh +mkdocs build +mkdir -p nomad/app/static/docs +cp -r site/* nomad/app/static/docs/ + + +./generate_gui_artifacts.sh +cd gui +yarn +yarn build +cd .. +mkdir -p nomad/app/static/gui +cp -r gui/build/* nomad/app/static/gui +rm nomad/app/static/gui/env.js + +rm -rf nomad_lab.egg-info dist build +python setup.py sdist \ No newline at end of file diff --git a/nomad/app/main.py b/nomad/app/main.py index 04b2a10675f98d934153dc819d7ca817adc93b1f..5c940fc865f52e93f19a9a6033ed06301267816e 100644 --- a/nomad/app/main.py +++ b/nomad/app/main.py @@ -65,7 +65,7 @@ app.mount(f'{app_base}/optimade', optimade_app) app.mount(f'{app_base}/h5grove', h5grove_app) dist_folder = os.path.abspath(os.path.join(os.path.dirname(__file__), '../../dist')) -docs_folder = os.path.abspath(os.path.join(os.path.dirname(__file__), '../../docs/build')) +docs_folder = os.path.abspath(os.path.join(os.path.dirname(__file__), 'static/docs')) gui_folder = os.path.abspath(os.path.join(os.path.dirname(__file__), 'static/gui')) if not os.path.exists(gui_folder): os.makedirs(gui_folder) diff --git a/pyproject.toml b/pyproject.toml index 829d4b6f37c9bca3e36ac409b394f15df4f95082..3945c583ced2841a644f399b9b1d734f1827269b 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,2 +1,153 @@ [build-system] -requires = ["pip", "setuptools", "wheel", "fastentrypoints", "numpy", "pyyaml"] \ No newline at end of file +requires = ["setuptools"] +build-backend = "setuptools.build_meta" + +[project] +name = 'nomad-lab' +version = '1.1.2' +description = 'The NOvel MAterials Discovery (NOMAD) Python package' +readme = "README.md" +authors = [ + { name = "NOMAD Laboratory" }, + { email = 'markus.scheidgen@physik.hu-berlin.de' }, +] +license = { file = "LICENSE" } +requires-python = ">=3.6" +dependencies = [ + 'nptyping==1.4.4', + 'cachetools==4.2.4', + 'docstring-parser==0.12', + 'Pint==0.17', + 'orjson==3.6.0', + 'click>=7.1.2', + 'requests==2.27.1', + 'pytz==2021.1', + 'aniso8601==7.0.0', + 'ase==3.19.0', + 'python-keycloak==0.26.1', + 'elasticsearch-dsl==7.4.0', + 'pydantic==1.9.1', + 'jmespath==0.10.0', + 'h5grove==1.0.0', + 'httpx==0.22.0', + 'memoization==0.4.0', + 'lxml~=4.6', +] + +[project.urls] +homepage = "https://nomad-lab.eu/" +documentation = "https://nomad-lab.eu/prod/v1/docs" +repository = 'https://gitlab.mpcdf.mpg.de/nomad-lab/nomad-FAIR' + +[project.optional-dependencies] +parsing = [ + 'netCDF4==1.5.4', + 'h5py==3.6.0', + 'hjson==3.0.2', + 'scipy==1.7.1', + 'scikit-learn==0.24.2', + 'matid==0.6.1', + 'python-magic==0.4.24', + 'panedr==0.2', + 'parmed==3.0.0', + 'mdtraj==1.9.6', + 'mdanalysis', + 'xarray~=0.19', + 'phonopy==2.11.0', + 'pymatgen==2022.0.17', + 'asr==0.4.1', + 'bitarray==2.3.5', + 'xrdtools==0.1.1', + 'openpyxl==3.0.9', +] +infrastructure = [ + 'optimade[mongo]==0.18.0', + 'structlog==20.1.0', + 'elasticsearch==7.17.1', + 'msgpack', + 'celery[redis]==4.4.7', + 'mongoengine', + 'pymongo==3.12.1', + # 'Werkzeug', + 'itsdangerous==2.0.1', + 'passlib==1.7.4', + 'python-logstash==0.4.6', + 'gitpython==3.1.24', + 'm2r==0.2.1', + 'zipstream-new==1.1.5', + 'bagit==1.8.1', + 'bcrypt==3.2.0', + 'filelock==3.3.1', + 'pyjwt[crypto]==1.7.1', + 'cryptography', + 'jsonschema[format]==4.1.2', + 'runstats==2.0.0', + 'pyyaml==6.0', + 'tabulate==0.8.9', + 'bs4==0.0.1', + 'html5lib==1.1', + 'zipfile37==0.1.3', + 'basicauth==0.4.1', + 'inflection==0.5.1', + 'unidecode==1.3.2', + 'python-json-logger==2.0.2', + 'recommonmark==0.7.1', + 'jinja2==3.0.3', + 'rdflib==5.0.0', + 'fastapi==0.65.3', + 'uvicorn[standard]', + 'python-multipart==0.0.5', + 'jupyterhub==1.4.2', + 'dockerspawner==12.1.0', + 'oauthenticator==14.2.0', + 'validators==0.18.2', + 'aiofiles==0.8.0', + 'joblib==1.1.0', +] +dev = [ + 'markupsafe', + 'setuptools==57.5.0', + 'gitpython==3.1.24', + 'mypy==0.730', + 'typed-ast==1.4.2', + 'astroid==2.5.1', + 'pylint==2.3.1', + 'pylint_plugin_utils==0.5', + 'pylint_mongoengine==0.3.3', + 'pycodestyle==2.8.0', + 'pytest==3.10.0', + 'pytest-timeout==1.4.2', + 'pytest-cov==2.7.1', + 'rope==0.21.0', + 'names==0.3.0', + 'essential_generators==1.0', + 'twine==3.4.2', + 'python-gitlab==2.10.1', + 'devtools==0.8.0', + 'mkdocs==1.2.3', + 'mkdocs-material==8.1.1', + 'mkdocs-material-extensions==1.0.3', + 'mkdocs-macros-plugin==0.6.3', +] + +[project.scripts] +nomad = "nomad.cli:run_cli" + +[tool.setuptools.packages.find] +where = [ + ".", + "dependencies/matid", + "dependencies/nomad-dos-fingerprints", + "dependencies/parsers/atomistic", + "dependencies/parsers/database", + "dependencies/parsers/eelsdb", + "dependencies/parsers/electronic", + "dependencies/parsers/nexus", + "dependencies/parsers/workflow", +] +exclude = ["tests*"] +namespaces = false + +[tool.setuptools.package-data] +nomad = ["**/*.json", "**/*.j2", "**/*.md", "**/*.txt", "app/static/**/*"] +nexusparser = ["definitions/**/*.xml", "definitions/**/*.xsd"] diff --git a/requirements-all.txt b/requirements-all.txt new file mode 100644 index 0000000000000000000000000000000000000000..a61292685a712d952284712559b65f1d98811603 --- /dev/null +++ b/requirements-all.txt @@ -0,0 +1,264 @@ +# +# This file is autogenerated by pip-compile with python 3.7 +# To update, run: +# +# pip-compile --annotation-style=line --extra=dev --extra=infrastructure --extra=parsing --output-file=requirements-all.txt dependencies/matid/setup.py dependencies/nomad-dos-fingerprints/setup.py dependencies/parsers/atomistic/requirements.txt dependencies/parsers/database/requirements.txt dependencies/parsers/eelsdb/requirements.txt dependencies/parsers/electronic/requirements.txt dependencies/parsers/nexus/requirements.txt dependencies/parsers/workflow/requirements.txt pyproject.toml +# +aiofiles==0.8.0 # via nomad-lab (pyproject.toml) +alabaster==0.7.12 # via sphinx +alembic==1.8.1 # via jupyterhub +amqp==2.6.1 # via kombu +aniso8601==7.0.0 # via nomad-lab (pyproject.toml) +anyio==3.6.1 # via httpcore, watchfiles +arrow==1.2.3 # via isoduration +ase==3.19.0 # via -r dependencies/parsers/nexus/requirements.txt, asr, matid, matid (dependencies/matid/setup.py), nomad-lab (pyproject.toml) +asr==0.4.1 # via -r dependencies/parsers/workflow/requirements.txt, nomad-lab (pyproject.toml) +astroid==2.5.1 # via nomad-lab (pyproject.toml), pylint +asttokens==2.0.8 # via devtools +astunparse==1.6.3 # via mdtraj +async-generator==1.10 # via jupyterhub +async-timeout==4.0.2 # via redis +atomicwrites==1.4.1 # via pytest +attrs==22.1.0 # via jsonschema, pytest +babel==2.10.3 # via sphinx +bagit==1.8.1 # via nomad-lab (pyproject.toml) +basicauth==0.4.1 # via nomad-lab (pyproject.toml) +bcrypt==3.2.0 # via nomad-lab (pyproject.toml) +beautifulsoup4==4.11.1 # via bs4 +billiard==3.6.4.0 # via celery +biopython==1.79 # via mdanalysis +bitarray==2.3.5 # via nomad-dos-fingerprints (dependencies/nomad-dos-fingerprints/setup.py), nomad-lab (pyproject.toml) +bleach==5.0.1 # via readme-renderer +bs4==0.0.1 # via nomad-lab (pyproject.toml) +cached-property==1.5.2 # via fqdn, h5py +cachetools==4.2.4 # via nomad-lab (pyproject.toml) +celery[redis]==4.4.7 # via nomad-lab (pyproject.toml) +certifi==2022.9.14 # via elasticsearch, httpcore, httpx, requests +certipy==0.1.3 # via jupyterhub +cffi==1.15.1 # via bcrypt, cryptography +cftime==1.6.2 # via netcdf4 +charset-normalizer==2.0.12 # via httpx, requests +chronic==0.3.4 # via matid +click==8.1.3 # via -r dependencies/parsers/nexus/requirements.txt, asr, flask, mkdocs, nomad-lab (pyproject.toml), uvicorn +colorama==0.4.5 # via twine +commonmark==0.9.1 # via recommonmark +coverage==6.4.4 # via pytest-cov +cryptography==38.0.1 # via nomad-lab (pyproject.toml), pyjwt, pyopenssl +cycler==0.11.0 # via matplotlib +decorator==5.1.1 # via validators +defusedxml==0.7.1 # via odfpy +deprecated==1.2.13 # via redis +devtools==0.8.0 # via nomad-lab (pyproject.toml) +dnspython==2.2.1 # via email-validator +docker==6.0.0 # via dockerspawner +dockerspawner==12.1.0 # via nomad-lab (pyproject.toml) +docstring-parser==0.12 # via nomad-lab (pyproject.toml) +docutils==0.19 # via m2r, readme-renderer, recommonmark, sphinx +ecdsa==0.18.0 # via python-jose +elasticsearch==7.17.1 # via elasticsearch-dsl, nomad-lab (pyproject.toml) +elasticsearch-dsl==7.4.0 # via nomad-lab (pyproject.toml) +email-validator==1.3.0 # via optimade +entrypoints==0.4 # via jupyterhub +escapism==1.0.1 # via dockerspawner +essential-generators==1.0 # via nomad-lab (pyproject.toml) +et-xmlfile==1.1.0 # via openpyxl +executing==0.10.0 # via devtools +fastapi==0.65.3 # via nomad-lab (pyproject.toml), optimade +filelock==3.3.1 # via nomad-lab (pyproject.toml) +flask==2.2.2 # via asr +fonttools==4.37.3 # via matplotlib +fqdn==1.5.1 # via jsonschema +future==0.18.2 # via matid, uncertainties +ghp-import==2.1.0 # via mkdocs +gitdb==4.0.9 # via gitpython +gitpython==3.1.24 # via nomad-lab (pyproject.toml) +greenlet==1.1.3 # via sqlalchemy +griddataformats==0.7.0 # via mdanalysis +gsd==2.6.0 # via mdanalysis +h11==0.12.0 # via httpcore, uvicorn +h5grove==1.0.0 # via nomad-lab (pyproject.toml) +h5py==3.6.0 # via -r dependencies/parsers/nexus/requirements.txt, -r dependencies/parsers/workflow/requirements.txt, h5grove, nomad-lab (pyproject.toml), phonopy, pyscf +hjson==3.0.2 # via nomad-lab (pyproject.toml) +html5lib==1.1 # via nomad-lab (pyproject.toml) +httpcore==0.14.7 # via httpx +httptools==0.5.0 # via uvicorn +httpx==0.22.0 # via nomad-lab (pyproject.toml) +idna==3.4 # via anyio, email-validator, jsonschema, requests, rfc3986 +imagesize==1.4.1 # via sphinx +importlib-metadata==4.12.0 # via alembic, click, flask, jsonschema, keyring, kombu, mako, markdown, mkdocs, pint, pluggy, redis, sphinx, sqlalchemy, twine, xarray +importlib-resources==5.9.0 # via alembic +inflection==0.5.1 # via nomad-lab (pyproject.toml) +isodate==0.6.1 # via rdflib +isoduration==20.11.0 # via jsonschema +isort==4.3.21 # via pylint +itsdangerous==2.0.1 # via flask, nomad-lab (pyproject.toml) +jaraco-classes==3.2.2 # via keyring +jinja2==3.0.3 # via flask, jupyterhub, mkdocs, mkdocs-macros-plugin, mkdocs-material, nomad-lab (pyproject.toml), sphinx +jmespath==0.10.0 # via nomad-lab (pyproject.toml) +joblib==1.1.0 # via mdanalysis, nomad-lab (pyproject.toml), scikit-learn +jsonpointer==2.3 # via jsonschema +jsonschema[format]==4.1.2 # via jupyter-telemetry, nomad-lab (pyproject.toml) +jupyter-telemetry==0.1.0 # via jupyterhub +jupyterhub==1.4.2 # via dockerspawner, nomad-lab (pyproject.toml), oauthenticator +keyring==23.9.3 # via twine +kiwisolver==1.4.4 # via matplotlib +kombu==4.6.11 # via celery +lark-parser==0.12.0 # via optimade +lazy-object-proxy==1.7.1 # via astroid +lxml==4.7.1 # via -r dependencies/parsers/atomistic/requirements.txt, -r dependencies/parsers/electronic/requirements.txt, -r dependencies/parsers/nexus/requirements.txt, -r dependencies/parsers/workflow/requirements.txt, nomad-lab (pyproject.toml), xrdtools +m2r==0.2.1 # via nomad-lab (pyproject.toml) +mako==1.2.2 # via alembic +markdown==3.4.1 # via mkdocs, mkdocs-material, pymdown-extensions +markupsafe==2.1.1 # via jinja2, mako, nomad-lab (pyproject.toml), werkzeug +matid==0.6.1 # via -r dependencies/parsers/electronic/requirements.txt, nomad-lab (pyproject.toml) +matplotlib==3.5.3 # via ase, asr, mdanalysis, phonopy, pymatgen +mccabe==0.6.1 # via pylint +mdanalysis==2.1.0 # via -r dependencies/parsers/atomistic/requirements.txt, nomad-lab (pyproject.toml) +mdtraj==1.9.6 # via nomad-lab (pyproject.toml) +memoization==0.4.0 # via nomad-lab (pyproject.toml) +mergedeep==1.3.4 # via mkdocs +mistune==2.0.4 # via m2r +mkdocs==1.2.3 # via mkdocs-macros-plugin, mkdocs-material, nomad-lab (pyproject.toml) +mkdocs-macros-plugin==0.6.3 # via nomad-lab (pyproject.toml) +mkdocs-material==8.1.1 # via nomad-lab (pyproject.toml) +mkdocs-material-extensions==1.0.3 # via mkdocs-material, nomad-lab (pyproject.toml) +mmtf-python==1.1.3 # via mdanalysis +mongoengine==0.24.2 # via nomad-lab (pyproject.toml) +mongomock==4.1.2 # via optimade +monty==2022.9.9 # via pymatgen +more-itertools==8.14.0 # via jaraco-classes, pytest +mpmath==1.2.1 # via sympy +mrcfile==1.4.2 # via griddataformats +msgpack==1.0.4 # via mmtf-python, nomad-lab (pyproject.toml) +mypy==0.730 # via -r dependencies/parsers/atomistic/requirements.txt, -r dependencies/parsers/database/requirements.txt, -r dependencies/parsers/eelsdb/requirements.txt, -r dependencies/parsers/electronic/requirements.txt, -r dependencies/parsers/nexus/requirements.txt, -r dependencies/parsers/workflow/requirements.txt, nomad-lab (pyproject.toml) +mypy-extensions==0.4.3 # via mypy +names==0.3.0 # via nomad-lab (pyproject.toml) +netcdf4==1.5.4 # via -r dependencies/parsers/electronic/requirements.txt, nomad-lab (pyproject.toml) +networkx==2.6.3 # via matid, matid (dependencies/matid/setup.py), mdanalysis, pymatgen +nptyping==1.4.4 # via nomad-lab (pyproject.toml) +numpy==1.21.2 # via -r dependencies/parsers/nexus/requirements.txt, ase, biopython, cftime, griddataformats, gsd, h5grove, h5py, matid, matid (dependencies/matid/setup.py), matplotlib, mdanalysis, mdtraj, mrcfile, netcdf4, nomad-dos-fingerprints (dependencies/nomad-dos-fingerprints/setup.py), nptyping, pandas, phonopy, pymatgen, pyscf, scikit-learn, scipy, spglib, tifffile, xarray, xrdtools +oauthenticator==14.2.0 # via nomad-lab (pyproject.toml) +oauthlib==3.2.1 # via jupyterhub +odfpy==1.4.1 # via -r dependencies/parsers/nexus/requirements.txt +openpyxl==3.0.9 # via nomad-lab (pyproject.toml) +optimade[mongo]==0.18.0 # via nomad-lab (pyproject.toml) +orjson==3.6.0 # via h5grove, nomad-lab (pyproject.toml) +packaging==21.3 # via docker, matplotlib, mdanalysis, mkdocs, mongomock, pint, redis, sphinx +palettable==3.3.0 # via pymatgen +pamela==1.0.0 # via jupyterhub +pandas==1.3.5 # via -r dependencies/parsers/eelsdb/requirements.txt, -r dependencies/parsers/nexus/requirements.txt, panedr, pymatgen, xarray +panedr==0.2 # via -r dependencies/parsers/atomistic/requirements.txt, nomad-lab (pyproject.toml) +parmed==3.0.0 # via nomad-lab (pyproject.toml) +passlib==1.7.4 # via nomad-lab (pyproject.toml) +phonopy==2.11.0 # via -r dependencies/parsers/workflow/requirements.txt, asr, nomad-lab (pyproject.toml) +pillow==9.2.0 # via matplotlib +pint==0.17 # via nomad-lab (pyproject.toml) +pkginfo==1.8.3 # via twine +plotly==5.10.0 # via asr, pymatgen +pluggy==1.0.0 # via pytest +prometheus-client==0.14.1 # via jupyterhub +py==1.11.0 # via pytest +pyaml==21.10.1 # via -r dependencies/parsers/nexus/requirements.txt +pyasn1==0.4.8 # via python-jose, rsa +pycodestyle==2.8.0 # via -r dependencies/parsers/atomistic/requirements.txt, -r dependencies/parsers/database/requirements.txt, -r dependencies/parsers/eelsdb/requirements.txt, -r dependencies/parsers/electronic/requirements.txt, -r dependencies/parsers/nexus/requirements.txt, -r dependencies/parsers/workflow/requirements.txt, nomad-lab (pyproject.toml) +pycparser==2.21 # via cffi +pydantic==1.9.1 # via fastapi, nomad-lab (pyproject.toml), optimade +pygments==2.13.0 # via mkdocs-material, readme-renderer, sphinx +pyjwt[crypto]==1.7.1 # via nomad-lab (pyproject.toml) +pylint==2.3.1 # via -r dependencies/parsers/atomistic/requirements.txt, -r dependencies/parsers/database/requirements.txt, -r dependencies/parsers/eelsdb/requirements.txt, -r dependencies/parsers/electronic/requirements.txt, -r dependencies/parsers/nexus/requirements.txt, -r dependencies/parsers/workflow/requirements.txt, nomad-lab (pyproject.toml), pylint-mongoengine, pylint-plugin-utils +pylint-mongoengine==0.3.3 # via nomad-lab (pyproject.toml) +pylint-plugin-utils==0.5 # via -r dependencies/parsers/atomistic/requirements.txt, -r dependencies/parsers/database/requirements.txt, -r dependencies/parsers/eelsdb/requirements.txt, -r dependencies/parsers/electronic/requirements.txt, -r dependencies/parsers/nexus/requirements.txt, -r dependencies/parsers/workflow/requirements.txt, nomad-lab (pyproject.toml), pylint-mongoengine +pymatgen==2022.0.17 # via asr, nomad-lab (pyproject.toml) +pymdown-extensions==9.5 # via mkdocs-material +pymongo==3.12.1 # via mongoengine, nomad-lab (pyproject.toml), optimade +pyopenssl==22.0.0 # via certipy +pyparsing==3.0.9 # via matplotlib, mdtraj, packaging, rdflib +pyrsistent==0.18.1 # via jsonschema +pyscf==2.0.1 ; sys_platform == "darwin" # via -r dependencies/parsers/electronic/requirements.txt +pytest==3.10.0 # via -r dependencies/parsers/atomistic/requirements.txt, -r dependencies/parsers/database/requirements.txt, -r dependencies/parsers/eelsdb/requirements.txt, -r dependencies/parsers/electronic/requirements.txt, -r dependencies/parsers/nexus/requirements.txt, -r dependencies/parsers/workflow/requirements.txt, nomad-lab (pyproject.toml), pytest-cov, pytest-timeout +pytest-cov==2.7.1 # via -r dependencies/parsers/atomistic/requirements.txt, -r dependencies/parsers/database/requirements.txt, -r dependencies/parsers/eelsdb/requirements.txt, -r dependencies/parsers/electronic/requirements.txt, -r dependencies/parsers/nexus/requirements.txt, -r dependencies/parsers/workflow/requirements.txt, nomad-lab (pyproject.toml) +pytest-timeout==1.4.2 # via -r dependencies/parsers/atomistic/requirements.txt, -r dependencies/parsers/database/requirements.txt, -r dependencies/parsers/eelsdb/requirements.txt, -r dependencies/parsers/electronic/requirements.txt, -r dependencies/parsers/nexus/requirements.txt, -r dependencies/parsers/workflow/requirements.txt, nomad-lab (pyproject.toml) +python-dateutil==2.8.2 # via arrow, elasticsearch-dsl, ghp-import, jupyterhub, matplotlib, mkdocs-macros-plugin, pandas +python-dotenv==0.21.0 # via uvicorn +python-gitlab==2.10.1 # via nomad-lab (pyproject.toml) +python-jose==3.3.0 # via python-keycloak +python-json-logger==2.0.2 # via -r dependencies/parsers/nexus/requirements.txt, jupyter-telemetry, nomad-lab (pyproject.toml) +python-keycloak==0.26.1 # via nomad-lab (pyproject.toml) +python-logstash==0.4.6 # via nomad-lab (pyproject.toml) +python-magic==0.4.24 # via nomad-lab (pyproject.toml) +python-multipart==0.0.5 # via nomad-lab (pyproject.toml) +pytz==2021.1 # via babel, celery, nomad-lab (pyproject.toml), pandas +pyyaml==6.0 # via mkdocs, mkdocs-macros-plugin, nomad-lab (pyproject.toml), phonopy, pyaml, pyyaml-env-tag, uvicorn +pyyaml-env-tag==0.1 # via mkdocs +rdflib==5.0.0 # via nomad-lab (pyproject.toml) +readme-renderer==37.1 # via twine +recommonmark==0.7.1 # via nomad-lab (pyproject.toml) +redis==4.3.4 # via celery +requests==2.27.1 # via docker, jupyterhub, nomad-lab (pyproject.toml), optimade, pymatgen, python-gitlab, python-keycloak, requests-toolbelt, sphinx, twine +requests-toolbelt==0.9.1 # via python-gitlab, twine +rfc3339-validator==0.1.4 # via jsonschema +rfc3986[idna2008]==1.5.0 # via httpx, twine +rfc3987==1.3.8 # via jsonschema +rope==0.21.0 # via nomad-lab (pyproject.toml) +rsa==4.9 # via python-jose +ruamel-yaml==0.17.21 # via jupyter-telemetry, pymatgen +ruamel-yaml-clib==0.2.6 # via ruamel-yaml +runstats==2.0.0 # via nomad-lab (pyproject.toml) +scikit-learn==0.24.2 # via matid (dependencies/matid/setup.py), nomad-lab (pyproject.toml), sklearn +scipy==1.7.1 # via -r dependencies/parsers/atomistic/requirements.txt, ase, griddataformats, matid, matid (dependencies/matid/setup.py), mdanalysis, mdtraj, nomad-lab (pyproject.toml), pymatgen, pyscf, scikit-learn +sentinels==1.0.0 # via mongomock +six==1.16.0 # via asttokens, astunparse, basicauth, bcrypt, bleach, ecdsa, elasticsearch-dsl, griddataformats, html5lib, isodate, pytest, python-dateutil, python-multipart, rdflib, rfc3339-validator, structlog, validators +sklearn==0.0 # via matid +smmap==5.0.0 # via gitdb +sniffio==1.3.0 # via anyio, httpcore, httpx +snowballstemmer==2.2.0 # via sphinx +soupsieve==2.3.2.post1 # via beautifulsoup4 +spglib==2.0.1 # via asr, matid, matid (dependencies/matid/setup.py), phonopy, pymatgen +sphinx==5.1.1 # via recommonmark +sphinxcontrib-applehelp==1.0.2 # via sphinx +sphinxcontrib-devhelp==1.0.2 # via sphinx +sphinxcontrib-htmlhelp==2.0.0 # via sphinx +sphinxcontrib-jsmath==1.0.1 # via sphinx +sphinxcontrib-qthelp==1.0.3 # via sphinx +sphinxcontrib-serializinghtml==1.1.5 # via sphinx +sqlalchemy==1.4.41 # via alembic, jupyterhub +starlette==0.14.2 # via fastapi +structlog==20.1.0 # via nomad-lab (pyproject.toml) +sympy==1.10.1 # via pymatgen +tabulate==0.8.9 # via nomad-lab (pyproject.toml), pymatgen +tenacity==8.1.0 # via plotly +termcolor==2.0.1 # via mkdocs-macros-plugin +threadpoolctl==3.1.0 # via mdanalysis, scikit-learn +tifffile==2021.11.2 # via h5grove +tornado==6.2 # via jupyterhub +tqdm==4.64.1 # via mdanalysis, twine +traitlets==5.4.0 # via jupyter-telemetry, jupyterhub +twine==3.4.2 # via nomad-lab (pyproject.toml) +typed-ast==1.4.2 # via astroid, mypy, nomad-lab (pyproject.toml) +typing-extensions==4.3.0 # via anyio, arrow, async-timeout, gitpython, importlib-metadata, kiwisolver, mypy, optimade, pydantic, pymatgen, redis, uvicorn, xarray +typish==1.9.3 # via nptyping +uncertainties==3.1.7 # via pymatgen +unidecode==1.3.2 # via nomad-lab (pyproject.toml) +uri-template==1.2.0 # via jsonschema +urllib3==1.26.12 # via docker, elasticsearch, requests +uvicorn[standard]==0.18.3 # via nomad-lab (pyproject.toml) +uvloop==0.17.0 # via uvicorn +validators==0.18.2 # via nomad-lab (pyproject.toml) +vine==1.3.0 # via amqp, celery +watchdog==2.1.9 # via mkdocs +watchfiles==0.17.0 # via uvicorn +webcolors==1.12 # via jsonschema +webencodings==0.5.1 # via bleach, html5lib +websocket-client==1.4.1 # via docker +websockets==10.3 # via uvicorn +werkzeug==2.2.2 # via flask +wheel==0.37.1 # via astunparse +wrapt==1.12.1 # via astroid, deprecated +xarray==0.20.2 # via -r dependencies/parsers/nexus/requirements.txt, -r dependencies/parsers/workflow/requirements.txt, nomad-lab (pyproject.toml) +xrdtools==0.1.1 # via nomad-lab (pyproject.toml) +zipfile37==0.1.3 # via nomad-lab (pyproject.toml) +zipp==3.8.1 # via importlib-metadata, importlib-resources +zipstream-new==1.1.5 # via nomad-lab (pyproject.toml) + +# The following packages are considered to be unsafe in a requirements file: +# setuptools diff --git a/requirements.txt b/requirements.txt index b763636cd8fcb8f4a44f84ed7226c296d25e61c3..51171f7876e80f3935ffc857dec5664bd0160a55 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,119 +1,237 @@ -# install -pip -wheel -pyyaml==6.0 -numpy==1.21.2 -pandas==1.3.5 -fastentrypoints==0.12 -cython>=0.19 -future==0.18.2 +# +# This file is autogenerated by pip-compile with python 3.7 +# To update, run: +# +# pip-compile --annotation-style=line --extra=infrastructure --extra=parsing --output-file=requirements.txt dependencies/matid/setup.py dependencies/nomad-dos-fingerprints/setup.py dependencies/parsers/atomistic/requirements.txt dependencies/parsers/database/requirements.txt dependencies/parsers/eelsdb/requirements.txt dependencies/parsers/electronic/requirements.txt dependencies/parsers/nexus/requirements.txt dependencies/parsers/workflow/requirements.txt pyproject.toml +# +aiofiles==0.8.0 # via nomad-lab (pyproject.toml) +alabaster==0.7.12 # via sphinx +alembic==1.8.1 # via jupyterhub +amqp==2.6.1 # via kombu +aniso8601==7.0.0 # via nomad-lab (pyproject.toml) +anyio==3.6.1 # via httpcore, watchfiles +arrow==1.2.3 # via isoduration +ase==3.19.0 # via -r dependencies/parsers/nexus/requirements.txt, asr, matid, matid (dependencies/matid/setup.py), nomad-lab (pyproject.toml) +asr==0.4.1 # via -r dependencies/parsers/workflow/requirements.txt, nomad-lab (pyproject.toml) +astroid==2.12.10 # via pylint +astunparse==1.6.3 # via mdtraj +async-generator==1.10 # via jupyterhub +async-timeout==4.0.2 # via redis +atomicwrites==1.4.1 # via pytest +attrs==22.1.0 # via jsonschema, pytest +babel==2.10.3 # via sphinx +bagit==1.8.1 # via nomad-lab (pyproject.toml) +basicauth==0.4.1 # via nomad-lab (pyproject.toml) +bcrypt==3.2.0 # via nomad-lab (pyproject.toml) +beautifulsoup4==4.11.1 # via bs4 +billiard==3.6.4.0 # via celery +biopython==1.79 # via mdanalysis +bitarray==2.3.5 # via nomad-dos-fingerprints (dependencies/nomad-dos-fingerprints/setup.py), nomad-lab (pyproject.toml) +bs4==0.0.1 # via nomad-lab (pyproject.toml) +cached-property==1.5.2 # via fqdn, h5py +cachetools==4.2.4 # via nomad-lab (pyproject.toml) +celery[redis]==4.4.7 # via nomad-lab (pyproject.toml) +certifi==2022.9.14 # via elasticsearch, httpcore, httpx, requests +certipy==0.1.3 # via jupyterhub +cffi==1.15.1 # via bcrypt, cryptography +cftime==1.6.2 # via netcdf4 +charset-normalizer==2.0.12 # via httpx, requests +chronic==0.3.4 # via matid +click==8.1.3 # via -r dependencies/parsers/nexus/requirements.txt, asr, flask, nomad-lab (pyproject.toml), uvicorn +commonmark==0.9.1 # via recommonmark +coverage==6.4.4 # via pytest-cov +cryptography==38.0.1 # via nomad-lab (pyproject.toml), pyjwt, pyopenssl +cycler==0.11.0 # via matplotlib +decorator==5.1.1 # via validators +defusedxml==0.7.1 # via odfpy +deprecated==1.2.13 # via redis +dnspython==2.2.1 # via email-validator +docker==6.0.0 # via dockerspawner +dockerspawner==12.1.0 # via nomad-lab (pyproject.toml) +docstring-parser==0.12 # via nomad-lab (pyproject.toml) +docutils==0.19 # via m2r, recommonmark, sphinx +ecdsa==0.18.0 # via python-jose +elasticsearch==7.17.1 # via elasticsearch-dsl, nomad-lab (pyproject.toml) +elasticsearch-dsl==7.4.0 # via nomad-lab (pyproject.toml) +email-validator==1.3.0 # via optimade +entrypoints==0.4 # via jupyterhub +escapism==1.0.1 # via dockerspawner +et-xmlfile==1.1.0 # via openpyxl +fastapi==0.65.3 # via nomad-lab (pyproject.toml), optimade +filelock==3.3.1 # via nomad-lab (pyproject.toml) +flask==2.2.2 # via asr +fonttools==4.37.3 # via matplotlib +fqdn==1.5.1 # via jsonschema +future==0.18.2 # via matid, uncertainties +gitdb==4.0.9 # via gitpython +gitpython==3.1.24 # via nomad-lab (pyproject.toml) +greenlet==1.1.3 # via sqlalchemy +griddataformats==0.7.0 # via mdanalysis +gsd==2.6.0 # via mdanalysis +h11==0.12.0 # via httpcore, uvicorn +h5grove==1.0.0 # via nomad-lab (pyproject.toml) +h5py==3.6.0 # via -r dependencies/parsers/nexus/requirements.txt, -r dependencies/parsers/workflow/requirements.txt, h5grove, nomad-lab (pyproject.toml), phonopy, pyscf +hjson==3.0.2 # via nomad-lab (pyproject.toml) +html5lib==1.1 # via nomad-lab (pyproject.toml) +httpcore==0.14.7 # via httpx +httptools==0.5.0 # via uvicorn +httpx==0.22.0 # via nomad-lab (pyproject.toml) +idna==3.4 # via anyio, email-validator, jsonschema, requests, rfc3986 +imagesize==1.4.1 # via sphinx +importlib-metadata==4.12.0 # via alembic, click, flask, jsonschema, kombu, mako, pint, pluggy, redis, sphinx, sqlalchemy, xarray +importlib-resources==5.9.0 # via alembic +inflection==0.5.1 # via nomad-lab (pyproject.toml) +isodate==0.6.1 # via rdflib +isoduration==20.11.0 # via jsonschema +isort==4.3.21 # via pylint +itsdangerous==2.0.1 # via flask, nomad-lab (pyproject.toml) +jinja2==3.0.3 # via flask, jupyterhub, nomad-lab (pyproject.toml), sphinx +jmespath==0.10.0 # via nomad-lab (pyproject.toml) +joblib==1.1.0 # via mdanalysis, nomad-lab (pyproject.toml), scikit-learn +jsonpointer==2.3 # via jsonschema +jsonschema[format]==4.1.2 # via jupyter-telemetry, nomad-lab (pyproject.toml) +jupyter-telemetry==0.1.0 # via jupyterhub +jupyterhub==1.4.2 # via dockerspawner, nomad-lab (pyproject.toml), oauthenticator +kiwisolver==1.4.4 # via matplotlib +kombu==4.6.11 # via celery +lark-parser==0.12.0 # via optimade +lazy-object-proxy==1.7.1 # via astroid +lxml==4.7.1 # via -r dependencies/parsers/atomistic/requirements.txt, -r dependencies/parsers/electronic/requirements.txt, -r dependencies/parsers/nexus/requirements.txt, -r dependencies/parsers/workflow/requirements.txt, nomad-lab (pyproject.toml), xrdtools +m2r==0.2.1 # via nomad-lab (pyproject.toml) +mako==1.2.2 # via alembic +markupsafe==2.1.1 # via jinja2, mako, werkzeug +matid==0.6.1 # via -r dependencies/parsers/electronic/requirements.txt, nomad-lab (pyproject.toml) +matplotlib==3.5.3 # via ase, asr, mdanalysis, phonopy, pymatgen +mccabe==0.6.1 # via pylint +mdanalysis==2.1.0 # via -r dependencies/parsers/atomistic/requirements.txt, nomad-lab (pyproject.toml) +mdtraj==1.9.6 # via nomad-lab (pyproject.toml) +memoization==0.4.0 # via nomad-lab (pyproject.toml) +mistune==2.0.4 # via m2r +mmtf-python==1.1.3 # via mdanalysis +mongoengine==0.24.2 # via nomad-lab (pyproject.toml) +mongomock==4.1.2 # via optimade +monty==2022.9.9 # via pymatgen +more-itertools==8.14.0 # via pytest +mpmath==1.2.1 # via sympy +mrcfile==1.4.2 # via griddataformats +msgpack==1.0.4 # via mmtf-python, nomad-lab (pyproject.toml) +mypy==0.730 # via -r dependencies/parsers/atomistic/requirements.txt, -r dependencies/parsers/database/requirements.txt, -r dependencies/parsers/eelsdb/requirements.txt, -r dependencies/parsers/electronic/requirements.txt, -r dependencies/parsers/nexus/requirements.txt, -r dependencies/parsers/workflow/requirements.txt +mypy-extensions==0.4.3 # via mypy +netcdf4==1.5.4 # via -r dependencies/parsers/electronic/requirements.txt, nomad-lab (pyproject.toml) +networkx==2.6.3 # via matid, matid (dependencies/matid/setup.py), mdanalysis, pymatgen +nptyping==1.4.4 # via nomad-lab (pyproject.toml) +numpy==1.21.2 # via -r dependencies/parsers/nexus/requirements.txt, ase, biopython, cftime, griddataformats, gsd, h5grove, h5py, matid, matid (dependencies/matid/setup.py), matplotlib, mdanalysis, mdtraj, mrcfile, netcdf4, nomad-dos-fingerprints (dependencies/nomad-dos-fingerprints/setup.py), nptyping, pandas, phonopy, pymatgen, pyscf, scikit-learn, scipy, spglib, tifffile, xarray, xrdtools +oauthenticator==14.2.0 # via nomad-lab (pyproject.toml) +oauthlib==3.2.1 # via jupyterhub +odfpy==1.4.1 # via -r dependencies/parsers/nexus/requirements.txt +openpyxl==3.0.9 # via nomad-lab (pyproject.toml) +optimade[mongo]==0.18.0 # via nomad-lab (pyproject.toml) +orjson==3.6.0 # via h5grove, nomad-lab (pyproject.toml) +packaging==21.3 # via docker, matplotlib, mdanalysis, mongomock, pint, redis, sphinx +palettable==3.3.0 # via pymatgen +pamela==1.0.0 # via jupyterhub +pandas==1.3.5 # via -r dependencies/parsers/eelsdb/requirements.txt, -r dependencies/parsers/nexus/requirements.txt, panedr, pymatgen, xarray +panedr==0.2 # via -r dependencies/parsers/atomistic/requirements.txt, nomad-lab (pyproject.toml) +parmed==3.0.0 # via nomad-lab (pyproject.toml) +passlib==1.7.4 # via nomad-lab (pyproject.toml) +phonopy==2.11.0 # via -r dependencies/parsers/workflow/requirements.txt, asr, nomad-lab (pyproject.toml) +pillow==9.2.0 # via matplotlib +pint==0.17 # via nomad-lab (pyproject.toml) +plotly==5.10.0 # via asr, pymatgen +pluggy==1.0.0 # via pytest +prometheus-client==0.14.1 # via jupyterhub +py==1.11.0 # via pytest +pyaml==21.10.1 # via -r dependencies/parsers/nexus/requirements.txt +pyasn1==0.4.8 # via python-jose, rsa +pycodestyle==2.8.0 # via -r dependencies/parsers/atomistic/requirements.txt, -r dependencies/parsers/database/requirements.txt, -r dependencies/parsers/eelsdb/requirements.txt, -r dependencies/parsers/electronic/requirements.txt, -r dependencies/parsers/nexus/requirements.txt, -r dependencies/parsers/workflow/requirements.txt +pycparser==2.21 # via cffi +pydantic==1.9.1 # via fastapi, nomad-lab (pyproject.toml), optimade +pygments==2.13.0 # via sphinx +pyjwt[crypto]==1.7.1 # via nomad-lab (pyproject.toml) +pylint==2.3.1 # via -r dependencies/parsers/atomistic/requirements.txt, -r dependencies/parsers/database/requirements.txt, -r dependencies/parsers/eelsdb/requirements.txt, -r dependencies/parsers/electronic/requirements.txt, -r dependencies/parsers/nexus/requirements.txt, -r dependencies/parsers/workflow/requirements.txt, pylint-plugin-utils +pylint-plugin-utils==0.5 # via -r dependencies/parsers/atomistic/requirements.txt, -r dependencies/parsers/database/requirements.txt, -r dependencies/parsers/eelsdb/requirements.txt, -r dependencies/parsers/electronic/requirements.txt, -r dependencies/parsers/nexus/requirements.txt, -r dependencies/parsers/workflow/requirements.txt +pymatgen==2022.0.17 # via asr, nomad-lab (pyproject.toml) +pymongo==3.12.1 # via mongoengine, nomad-lab (pyproject.toml), optimade +pyopenssl==22.0.0 # via certipy +pyparsing==3.0.9 # via matplotlib, mdtraj, packaging, rdflib +pyrsistent==0.18.1 # via jsonschema +pyscf==2.0.1 ; sys_platform == "darwin" # via -r dependencies/parsers/electronic/requirements.txt +pytest==3.10.0 # via -r dependencies/parsers/atomistic/requirements.txt, -r dependencies/parsers/database/requirements.txt, -r dependencies/parsers/eelsdb/requirements.txt, -r dependencies/parsers/electronic/requirements.txt, -r dependencies/parsers/nexus/requirements.txt, -r dependencies/parsers/workflow/requirements.txt, pytest-cov, pytest-timeout +pytest-cov==2.7.1 # via -r dependencies/parsers/atomistic/requirements.txt, -r dependencies/parsers/database/requirements.txt, -r dependencies/parsers/eelsdb/requirements.txt, -r dependencies/parsers/electronic/requirements.txt, -r dependencies/parsers/nexus/requirements.txt, -r dependencies/parsers/workflow/requirements.txt +pytest-timeout==1.4.2 # via -r dependencies/parsers/atomistic/requirements.txt, -r dependencies/parsers/database/requirements.txt, -r dependencies/parsers/eelsdb/requirements.txt, -r dependencies/parsers/electronic/requirements.txt, -r dependencies/parsers/nexus/requirements.txt, -r dependencies/parsers/workflow/requirements.txt +python-dateutil==2.8.2 # via arrow, elasticsearch-dsl, jupyterhub, matplotlib, pandas +python-dotenv==0.21.0 # via uvicorn +python-jose==3.3.0 # via python-keycloak +python-json-logger==2.0.2 # via -r dependencies/parsers/nexus/requirements.txt, jupyter-telemetry, nomad-lab (pyproject.toml) +python-keycloak==0.26.1 # via nomad-lab (pyproject.toml) +python-logstash==0.4.6 # via nomad-lab (pyproject.toml) +python-magic==0.4.24 # via nomad-lab (pyproject.toml) +python-multipart==0.0.5 # via nomad-lab (pyproject.toml) +pytz==2021.1 # via babel, celery, nomad-lab (pyproject.toml), pandas +pyyaml==6.0 # via nomad-lab (pyproject.toml), phonopy, pyaml, uvicorn +rdflib==5.0.0 # via nomad-lab (pyproject.toml) +recommonmark==0.7.1 # via nomad-lab (pyproject.toml) +redis==4.3.4 # via celery +requests==2.27.1 # via docker, jupyterhub, nomad-lab (pyproject.toml), optimade, pymatgen, python-keycloak, sphinx +rfc3339-validator==0.1.4 # via jsonschema +rfc3986[idna2008]==1.5.0 # via httpx +rfc3987==1.3.8 # via jsonschema +rsa==4.9 # via python-jose +ruamel-yaml==0.17.21 # via jupyter-telemetry, pymatgen +ruamel-yaml-clib==0.2.6 # via ruamel-yaml +runstats==2.0.0 # via nomad-lab (pyproject.toml) +scikit-learn==0.24.2 # via matid (dependencies/matid/setup.py), nomad-lab (pyproject.toml), sklearn +scipy==1.7.1 # via -r dependencies/parsers/atomistic/requirements.txt, ase, griddataformats, matid, matid (dependencies/matid/setup.py), mdanalysis, mdtraj, nomad-lab (pyproject.toml), pymatgen, pyscf, scikit-learn +sentinels==1.0.0 # via mongomock +six==1.16.0 # via astunparse, basicauth, bcrypt, ecdsa, elasticsearch-dsl, griddataformats, html5lib, isodate, pytest, python-dateutil, python-multipart, rdflib, rfc3339-validator, structlog, validators +sklearn==0.0 # via matid +smmap==5.0.0 # via gitdb +sniffio==1.3.0 # via anyio, httpcore, httpx +snowballstemmer==2.2.0 # via sphinx +soupsieve==2.3.2.post1 # via beautifulsoup4 +spglib==2.0.1 # via asr, matid, matid (dependencies/matid/setup.py), phonopy, pymatgen +sphinx==5.1.1 # via recommonmark +sphinxcontrib-applehelp==1.0.2 # via sphinx +sphinxcontrib-devhelp==1.0.2 # via sphinx +sphinxcontrib-htmlhelp==2.0.0 # via sphinx +sphinxcontrib-jsmath==1.0.1 # via sphinx +sphinxcontrib-qthelp==1.0.3 # via sphinx +sphinxcontrib-serializinghtml==1.1.5 # via sphinx +sqlalchemy==1.4.41 # via alembic, jupyterhub +starlette==0.14.2 # via fastapi +structlog==20.1.0 # via nomad-lab (pyproject.toml) +sympy==1.10.1 # via pymatgen +tabulate==0.8.9 # via nomad-lab (pyproject.toml), pymatgen +tenacity==8.1.0 # via plotly +threadpoolctl==3.1.0 # via mdanalysis, scikit-learn +tifffile==2021.11.2 # via h5grove +tornado==6.2 # via jupyterhub +tqdm==4.64.1 # via mdanalysis +traitlets==5.4.0 # via jupyter-telemetry, jupyterhub +typed-ast==1.4.3 # via astroid, mypy +typing-extensions==4.3.0 # via anyio, arrow, astroid, async-timeout, gitpython, importlib-metadata, kiwisolver, mypy, optimade, pydantic, pymatgen, redis, uvicorn, xarray +typish==1.9.3 # via nptyping +uncertainties==3.1.7 # via pymatgen +unidecode==1.3.2 # via nomad-lab (pyproject.toml) +uri-template==1.2.0 # via jsonschema +urllib3==1.26.12 # via docker, elasticsearch, requests +uvicorn[standard]==0.18.3 # via nomad-lab (pyproject.toml) +uvloop==0.17.0 # via uvicorn +validators==0.18.2 # via nomad-lab (pyproject.toml) +vine==1.3.0 # via amqp, celery +watchfiles==0.17.0 # via uvicorn +webcolors==1.12 # via jsonschema +webencodings==0.5.1 # via html5lib +websocket-client==1.4.1 # via docker +websockets==10.3 # via uvicorn +werkzeug==2.2.2 # via flask +wheel==0.37.1 # via astunparse +wrapt==1.14.1 # via astroid, deprecated +xarray==0.20.2 # via -r dependencies/parsers/nexus/requirements.txt, -r dependencies/parsers/workflow/requirements.txt, nomad-lab (pyproject.toml) +xrdtools==0.1.1 # via nomad-lab (pyproject.toml) +zipfile37==0.1.3 # via nomad-lab (pyproject.toml) +zipp==3.8.1 # via importlib-metadata, importlib-resources +zipstream-new==1.1.5 # via nomad-lab (pyproject.toml) -# nomad -nptyping==1.4.4 -cachetools==4.2.4 -docstring-parser==0.12 -Pint==0.17 -orjson==3.6.0 -click==7.1.2 -requests==2.27.1 -pytz==2021.1 -aniso8601==7.0.0 -ase==3.19.0 -python-keycloak==0.26.1 -elasticsearch-dsl==7.4.0 -pydantic==1.9.1 -jmespath==0.10.0 -h5grove==1.0.0 -httpx==0.22.0 -memoization==0.4.0 - -# [parsing] -netCDF4==1.5.4 -h5py==3.6.0 -hjson==3.0.2 -scipy==1.7.1 -scikit-learn==0.24.2 -python-magic==0.4.24 -panedr==0.2 -parmed==3.0.0 -mdtraj==1.9.6 -mdanalysis -lxml==4.7.1 -xarray==0.19.0 -phonopy==2.11.0 -pymatgen==2022.0.17 -asr==0.4.1 -bitarray==2.3.5 -xrdtools==0.1.1 -openpyxl==3.0.9 - -# [infrastructure] -optimade[mongo]==0.18.0 -structlog==20.1.0 -elasticsearch==7.17.1 -msgpack==0.5.6 -celery[redis]==4.4.7 -mongoengine==0.19.1 -pymongo==3.12.1 -Werkzeug==2.0.3 -itsdangerous==2.0.1 -passlib==1.7.4 -python-logstash==0.4.6 -gitpython==3.1.24 -m2r==0.2.1 -zipstream-new==1.1.5 -bagit==1.8.1 -bcrypt==3.2.0 -filelock==3.3.1 -cryptography==3.3.2 -pyjwt[crypto]==1.7.1 -cryptography==3.3.2 -jsonschema[format]==4.1.2 -runstats==2.0.0 -pyyaml==6.0 -tabulate==0.8.9 -bs4==0.0.1 -html5lib==1.1 -zipfile37==0.1.3 -basicauth==0.4.1 -inflection==0.5.1 -unidecode==1.3.2 -python-json-logger==2.0.2 -recommonmark==0.7.1 -jinja2==3.0.3 -rdflib==5.0.0 -fastapi==0.65.3 -uvicorn[standard]==0.13.4 -python-multipart==0.0.5 -jupyterhub==1.4.2 -dockerspawner==12.1.0 -oauthenticator==14.2.0 -validators==0.18.2 -aiofiles==0.8.0 -joblib==1.1.0 - -# [dev] -markupsafe==2.0.1 -setuptools==57.5.0 -gitpython==3.1.24 -mypy==0.750 -typed-ast==1.4.2 -astroid==2.5.1 -pylint==2.3.1 -pylint_plugin_utils==0.5 -pylint_mongoengine==0.3.3 -pycodestyle==2.8.0 -pytest==3.10.0 -pytest-timeout==1.4.2 -pytest-cov==2.7.1 -rope==0.21.0 -names==0.3.0 -essential_generators==1.0 -twine==3.4.2 -python-gitlab==2.10.1 -devtools==0.8.0 -markupsafe==2.0.1 -mkdocs==1.2.3 -mkdocs-material==8.1.1 -mkdocs-material-extensions==1.0.3 -mkdocs-macros-plugin==0.6.3 +# The following packages are considered to be unsafe in a requirements file: +# setuptools diff --git a/setup.py b/setup.py index cffd58698c611b8674cc7d3b1051703f9814c3f0..606849326a4002007fd42060b51e69a19c18675c 100644 --- a/setup.py +++ b/setup.py @@ -1,292 +1,3 @@ -# -# Copyright The NOMAD Authors. -# -# This file is part of NOMAD. See https://nomad-lab.eu for further info. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# +from setuptools import setup -from setuptools import setup, find_packages -from subprocess import call -from setuptools.command.install import install as setup_install -import runpy -import os -import sys -import json -import re -import fastentrypoints # pylint: disable=unused-import - -''' -This setup.py works differently for creating a distribution than installing for -development. The idea is that for distributions, we compile the requirements, packages, and -data files from all dependencies and install everything under one package called 'nomad-lab'. -For development we install each dependency as its own project. This is mainly due to -pip's limitation of not being able to install from multiple source folders in develop -mode. - -The compilation process can by run with ``python setup.py compile``. It will create a -file with setup kwargs calles ``./setup.json``. If this file exists setup will be called -with compiled args. If this file does not exist, setup will be called with regular args. - -This setup makes use of ``extras_require``. The extras are parsing, infrastructure, dev, -and all. Where all is the union of the other ones. The extras are parsed from the -requirements.txt where specific comments are used to assign an extra to requirements. -''' - - -ignore_extra_requires = ['optimade'] -''' Dependencies where the extra_requires should not be added ''' - - -def parse_requirements(): - ''' - Parses the requirements.txt file to extras install and extra requirements. - Sections headed with # [extra] are assigned to the 'extra' extra. - - Returns: - Tuple with install and extra requires passible to :func:`setuptools.setup`. - ''' - with open('requirements.txt', 'rt') as f: - lines = f.readlines() - - extras_require = {} - requires = [] - all_requires = [] - current = None - for line in lines: - line = line.strip() - - if line == '': - continue - - match = re.match(r'^#\s*\[([a-zA-Z0-9_]+)\]$', line) - if match: - extra = match.group(1) - current = list() - extras_require[extra] = current - elif line.startswith('#'): - continue - else: - line = line.split('#')[0].strip() - if current is None: - requires.append(line) - else: - current.append(line) - all_requires.append(line) - - extras_require['all'] = all_requires - - return requires, extras_require - - -class install(setup_install): - def __post_install(self, dir): - if os.name == 'posix': - call(['./auto_complete_install.sh']) - - def run(self): - setup_install.run(self) - self.execute(self.__post_install, (self.install_lib, ), msg='installing autocompletion') - - -def compile_dependency_setup_kwargs(paths, **kwargs): - import setuptools - import distutils.core as distutils_core - - # collect all kwargs from all setup.pys - results = {} - current = {} - - def patched_setup(*args, **kwargs): - assert len(args) == 0 - assert current['name'] not in results, 'current is %s' % current['name'] - - results[current['name']] = { - 'meta': dict(**current), - 'kwargs': kwargs - } - - if len(kwargs) > 0: - current['name'] = kwargs.get('name', 'nomad') - current['directory'] = './' - current['setup.py'] = './setup.py' - patched_setup(**kwargs) - - setuptoolss = [setuptools, distutils_core] - orig_setups = [] - for st in setuptoolss: - orig_setups.append((st, getattr(st, 'setup'))) - setattr(st, 'setup', patched_setup) - - for path in paths: - for root, _, files in os.walk(path): - for file in files: - if os.path.basename(file) == 'setup.py': - setup_path = os.path.join(root, file) - current['name'] = os.path.basename(os.path.dirname(setup_path)) - current['directory'] = os.path.dirname(setup_path) - current['setup.py'] = setup_path - cwd = os.getcwd() - os.chdir(os.path.dirname(setup_path)) - try: - runpy.run_path(file, run_name='__main__') - except Exception: - import traceback - traceback.print_exc() - print('Could not run %s' % setup_path) - sys.exit(1) - finally: - os.chdir(cwd) - - for st, setup in orig_setups: - setattr(st, 'setup', setup) - - # combine the kwargs - all_packages = [] - all_package_dir = {} - all_package_data = {} - all_install_requires = {} - all_names = set() - for _, setup_data in results.items(): - meta = setup_data['meta'] - local_kwargs = setup_data['kwargs'] - - if 'name' in local_kwargs: - all_names.add(local_kwargs['name']) - - name = local_kwargs.get('name', meta['name']) - - # 1. packages, package_dir - package_dir = local_kwargs.get('package_dir', {'': './'}) - packages = local_kwargs.get('packages', []) - - assert len(package_dir) == 1 - assert '' in package_dir - - for package in packages: - root = package.split('.')[0] - if root not in package_dir and root not in all_package_dir: - all_package_dir[root] = os.path.normpath( - os.path.join(meta['directory'], package_dir[''], root)) - all_packages.append(package) - - # 2. package_data - all_package_data.update(**local_kwargs.get('package_data', {})) - - # 3. requires - local_install_requires = set() - if name not in ignore_extra_requires: - for extra_require in local_kwargs.get('extras_require', {}).values(): - for require in extra_require: - local_install_requires.add(require) - - for require in local_kwargs.get('install_requires', []): - local_install_requires.add(require) - all_install_requires[name] = local_install_requires - - # automatically add parser deps - for _, setup_data in results.items(): - if 'parsers' in setup_data['meta']['setup.py']: - parsing = kwargs.setdefault('extras_require', {}).setdefault('parsing', []) - all = kwargs.setdefault('extras_require', {}).setdefault('all', []) - for require in setup_data['kwargs'].get('install_requires', []): - if require not in parsing: - parsing.append(require) - all.append(require) - - def replace_own_packages(requires): - ''' replaces nomad dependencies with their requirements ''' - for other in all_names: - if other in requires: - requires.remove(other) - requires.extend(all_install_requires[other]) - - # remove dups - sorted_requires = sorted(requires) - sorted_normalized = [re.match(r'^([a-zA-Z0-9_\.\-]*).*$', r).group(1) for r in sorted_requires] - to_remove = [] - for i, require in enumerate(sorted_normalized): - if i + 1 < len(sorted_requires) and require == sorted_normalized[i + 1]: - to_remove.append(i) - for i in to_remove: - requires.remove(sorted_requires[i]) - - # run twice because dependencies can be dependencies of dependencies - for _ in range(0, 2): - for extra_require in kwargs.get('extras_require', {}).values(): - replace_own_packages(extra_require) - replace_own_packages(kwargs.get('install_requires', [])) - - kwargs.update(**{ - 'package_dir': all_package_dir, - 'packages': all_packages, - 'package_data': all_package_data - }) - - return kwargs - - -def setup_kwargs(): - from nomad import config - - install_requires, extras_require = parse_requirements() - with open("README.md", "r") as fh: - long_description = fh.read() - - return dict( - name='nomad-lab', - author='NOMAD Laboratory', - author_email='markus.scheidgen@physik.hu-berlin.de', - url='https://gitlab.mpcdf.mpg.de/nomad-lab/nomad-FAIR', - version=config.meta.version, - license='APACHE 2.0', - description='The NOvel MAterials Discovery (NOMAD) Python package', - long_description=long_description, - long_description_content_type="text/markdown", - package_dir={'': './'}, - packages=['nomad.%s' % pkg for pkg in find_packages('./nomad')] + ['nomad'], - setup_requires=['pip', 'setuptools', 'wheel', 'fastentrypoints', 'numpy', 'pyyaml'], - install_requires=install_requires, - extras_require=extras_require, - include_package_data=True, - python_requires='>=3.6', - entry_points={ - 'console_scripts': [ - 'nomad = nomad.cli:run_cli' - ] - } - ) - - -if __name__ == '__main__': - if len(sys.argv) == 2 and sys.argv[1] == 'compile': - kwargs = compile_dependency_setup_kwargs(['dependencies'], **setup_kwargs()) - kwargs['package_data']['optimade.grammar'] = ['*.lark'] - with open('setup.json', 'wt') as f: - json.dump(kwargs, f, indent=2) - sys.exit(0) - - if len(sys.argv) == 2 and sys.argv[1] == 'dry': - import pprint - pprint.pprint( - compile_dependency_setup_kwargs(['dependencies'], **setup_kwargs())) - sys.exit(0) - - if os.path.exists('setup.json'): - with open('setup.json', 'rt') as f: - kwargs = json.load(f) - - else: - kwargs = setup_kwargs() - - setup(cmdclass={'install': install}, **kwargs) +setup()