From 461b4d05804fc8d812fce57c7ec2b6a35b0bd165 Mon Sep 17 00:00:00 2001 From: esoteric-ephemera Date: Thu, 14 Aug 2025 10:42:51 -0700 Subject: [PATCH 1/6] remove maggma dependencies --- LICENSE | 2 +- mp_api/client/core/utils.py | 2 +- mp_api/client/routes/materials/robocrys.py | 2 +- pyproject.toml | 1 - 4 files changed, 3 insertions(+), 4 deletions(-) diff --git a/LICENSE b/LICENSE index 2ae1bd118..ee5ed1792 100644 --- a/LICENSE +++ b/LICENSE @@ -1,4 +1,4 @@ -maggma Copyright (c) 2017, The Regents of the University of +Copyright (c) 2017, The Regents of the University of California, through Lawrence Berkeley National Laboratory (subject to receipt of any required approvals from the U.S. Dept. of Energy). All rights reserved. diff --git a/mp_api/client/core/utils.py b/mp_api/client/core/utils.py index fb25221ff..600c47e5b 100644 --- a/mp_api/client/core/utils.py +++ b/mp_api/client/core/utils.py @@ -4,7 +4,7 @@ from functools import cache from typing import Optional, get_args -from maggma.utils import get_flat_models_from_model +from emmet.core.utils import get_flat_models_from_model from monty.json import MSONable from pydantic import BaseModel from pydantic._internal._utils import lenient_issubclass diff --git a/mp_api/client/routes/materials/robocrys.py b/mp_api/client/routes/materials/robocrys.py index 829a78253..bf24ccc65 100644 --- a/mp_api/client/routes/materials/robocrys.py +++ b/mp_api/client/routes/materials/robocrys.py @@ -32,7 +32,7 @@ def search( robocrys_docs = self._query_resource( criteria={"keywords": keyword_string, "_limit": chunk_size}, suburl="text_search", - use_document_model=True, + use_document_model=self.use_document_model, chunk_size=chunk_size, num_chunks=num_chunks, ).get("data", None) diff --git a/pyproject.toml b/pyproject.toml index b75c1f67d..7960aa045 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -22,7 +22,6 @@ classifiers = [ dependencies = [ "setuptools", "msgpack", - "maggma>=0.57.1", "pymatgen>=2022.3.7,!=2024.2.20", "typing-extensions>=3.7.4.1", "requests>=2.23.0", From 9682edc190fdb73465a89ee19c330192000e0c2f Mon Sep 17 00:00:00 2001 From: github-actions Date: Thu, 14 Aug 2025 17:46:31 +0000 Subject: [PATCH 2/6] Update ubuntu-latest dependencies for mp-api --- .../requirements-ubuntu-latest_py3.11.txt | 150 ++++------------ ...quirements-ubuntu-latest_py3.11_extras.txt | 166 +++++++----------- 2 files changed, 89 insertions(+), 227 deletions(-) diff --git a/requirements/requirements-ubuntu-latest_py3.11.txt b/requirements/requirements-ubuntu-latest_py3.11.txt index e35945bd7..14be0b6a3 100644 --- a/requirements/requirements-ubuntu-latest_py3.11.txt +++ b/requirements/requirements-ubuntu-latest_py3.11.txt @@ -4,214 +4,126 @@ # # pip-compile --output-file=requirements/requirements-ubuntu-latest_py3.11.txt pyproject.toml # -aioitertools==0.12.0 - # via maggma annotated-types==0.7.0 # via pydantic -attrs==25.3.0 - # via - # jsonlines - # jsonschema - # referencing -bcrypt==4.3.0 - # via paramiko bibtexparser==1.4.3 # via pymatgen -boto3==1.38.37 - # via maggma -botocore==1.38.37 - # via - # boto3 - # s3transfer -certifi==2025.6.15 +certifi==2025.8.3 # via requests -cffi==1.17.1 - # via - # cryptography - # pynacl -charset-normalizer==3.4.2 +charset-normalizer==3.4.3 # via requests -contourpy==1.3.2 +contourpy==1.3.3 # via matplotlib -cryptography==45.0.4 - # via paramiko cycler==0.12.1 # via matplotlib -dnspython==2.7.0 - # via - # maggma - # pymongo -emmet-core==0.84.8 +emmet-core==0.84.9 # via mp-api (pyproject.toml) -fonttools==4.58.4 +fonttools==4.59.1 # via matplotlib idna==3.10 # via requests -jmespath==1.0.1 - # via - # boto3 - # botocore joblib==1.5.1 # via pymatgen -jsonlines==4.0.0 - # via maggma -jsonschema==4.24.0 - # via maggma -jsonschema-specifications==2025.4.1 - # via jsonschema -kiwisolver==1.4.8 +kiwisolver==1.4.9 # via matplotlib -latexcodec==3.0.0 +latexcodec==3.0.1 # via pybtex -maggma==0.71.5 - # via mp-api (pyproject.toml) -matplotlib==3.10.3 +matplotlib==3.10.5 # via pymatgen -mongomock==4.3.0 - # via maggma monty==2025.3.3 # via # emmet-core - # maggma # mp-api (pyproject.toml) # pymatgen mpmath==1.3.0 # via sympy msgpack==1.1.1 - # via - # maggma - # mp-api (pyproject.toml) -narwhals==1.43.0 + # via mp-api (pyproject.toml) +narwhals==2.1.1 # via plotly networkx==3.5 # via pymatgen -numpy==2.3.0 +numpy==2.3.2 # via # contourpy - # maggma # matplotlib # monty # pandas # pymatgen # scipy # spglib -orjson==3.10.18 - # via - # maggma - # pymatgen +orjson==3.11.2 + # via pymatgen packaging==25.0 # via # matplotlib - # mongomock # plotly palettable==3.3.3 # via pymatgen -pandas==2.3.0 - # via - # maggma - # pymatgen -paramiko==3.5.1 - # via sshtunnel -pillow==11.2.1 +pandas==2.3.1 + # via pymatgen +pillow==11.3.0 # via matplotlib -plotly==6.1.2 +plotly==6.3.0 # via pymatgen -pybtex==0.24.0 +pybtex==0.25.1 # via emmet-core -pycparser==2.22 - # via cffi pydantic==2.11.7 # via # emmet-core - # maggma # pydantic-settings pydantic-core==2.33.2 # via pydantic -pydantic-settings==2.9.1 - # via - # emmet-core - # maggma -pydash==8.0.5 - # via maggma +pydantic-settings==2.10.1 + # via emmet-core pymatgen==2025.6.14 # via # emmet-core # mp-api (pyproject.toml) -pymongo==4.10.1 - # via maggma -pynacl==1.5.0 - # via paramiko pyparsing==3.2.3 # via # bibtexparser # matplotlib python-dateutil==2.9.0.post0 # via - # botocore - # maggma # matplotlib # pandas -python-dotenv==1.1.0 +python-dotenv==1.1.1 # via pydantic-settings pytz==2025.2 - # via - # mongomock - # pandas + # via pandas pyyaml==6.0.2 # via pybtex -pyzmq==27.0.0 - # via maggma -referencing==0.36.2 - # via - # jsonschema - # jsonschema-specifications requests==2.32.4 # via # mp-api (pyproject.toml) # pymatgen -rpds-py==0.25.1 - # via - # jsonschema - # referencing ruamel-yaml==0.18.14 # via - # maggma # monty # pymatgen ruamel-yaml-clib==0.2.12 # via ruamel-yaml -s3transfer==0.13.0 - # via boto3 -scipy==1.15.3 +scipy==1.16.1 # via pymatgen -sentinels==1.0.0 - # via mongomock six==1.17.0 - # via - # pybtex - # python-dateutil -smart-open==7.1.0 + # via python-dateutil +smart-open==7.3.0.post1 # via mp-api (pyproject.toml) spglib==2.6.0 # via pymatgen -sshtunnel==0.4.0 - # via maggma sympy==1.14.0 # via pymatgen tabulate==0.9.0 # via pymatgen tqdm==4.67.1 - # via - # maggma - # pymatgen -typing-extensions==4.14.0 + # via pymatgen +typing-extensions==4.14.1 # via # emmet-core # mp-api (pyproject.toml) # pydantic # pydantic-core - # pydash - # referencing # spglib # typing-inspection typing-inspection==0.4.1 @@ -222,11 +134,9 @@ tzdata==2025.2 # via pandas uncertainties==3.2.3 # via pymatgen -urllib3==2.4.0 - # via - # botocore - # requests -wrapt==1.17.2 +urllib3==2.5.0 + # via requests +wrapt==1.17.3 # via smart-open # The following packages are considered to be unsafe in a requirements file: diff --git a/requirements/requirements-ubuntu-latest_py3.11_extras.txt b/requirements/requirements-ubuntu-latest_py3.11_extras.txt index f1584c710..197fcfcc3 100644 --- a/requirements/requirements-ubuntu-latest_py3.11_extras.txt +++ b/requirements/requirements-ubuntu-latest_py3.11_extras.txt @@ -4,36 +4,29 @@ # # pip-compile --all-extras --output-file=requirements/requirements-ubuntu-latest_py3.11_extras.txt pyproject.toml # -aioitertools==0.12.0 - # via maggma alabaster==1.0.0 # via sphinx annotated-types==0.7.0 # via pydantic arrow==1.3.0 # via isoduration -ase==3.25.0 +ase==3.26.0 # via pymatgen-analysis-diffusion asttokens==3.0.0 # via stack-data attrs==25.3.0 # via - # jsonlines # jsonschema # referencing babel==2.17.0 # via sphinx -bcrypt==4.3.0 - # via paramiko bibtexparser==1.4.3 # via pymatgen boltons==25.0.0 # via mpcontribs-client -boto3==1.38.37 - # via - # maggma - # mp-api (pyproject.toml) -botocore==1.38.37 +boto3==1.40.9 + # via mp-api (pyproject.toml) +botocore==1.40.9 # via # boto3 # s3transfer @@ -43,48 +36,41 @@ bravado-core==6.1.1 # via bravado cachetools==6.1.0 # via mpcontribs-client -certifi==2025.6.15 +certifi==2025.8.3 # via requests -cffi==1.17.1 - # via - # cryptography - # pynacl cfgv==3.4.0 # via pre-commit -charset-normalizer==3.4.2 +charset-normalizer==3.4.3 # via requests -contourpy==1.3.2 +contourpy==1.3.3 # via matplotlib -coverage[toml]==7.9.1 +coverage[toml]==7.10.3 # via pytest-cov -cryptography==45.0.4 - # via paramiko -custodian==2025.5.12 +custodian==2025.8.13 # via mp-api (pyproject.toml) cycler==0.12.1 # via matplotlib decorator==5.2.1 # via ipython -distlib==0.3.9 +distlib==0.4.0 # via virtualenv dnspython==2.7.0 # via - # maggma # pyisemail # pymongo docutils==0.21.2 # via sphinx -emmet-core[all]==0.84.8 +emmet-core[all]==0.84.9 # via mp-api (pyproject.toml) executing==2.2.0 # via stack-data -filelock==3.18.0 +filelock==3.19.1 # via # mdanalysis # virtualenv filetype==1.2.0 # via mpcontribs-client -flake8==7.2.0 +flake8==7.3.0 # via mp-api (pyproject.toml) flatten-dict==0.4.2 # via mpcontribs-client @@ -92,13 +78,13 @@ flexcache==0.3 # via pint flexparser==0.4 # via pint -fonttools==4.58.4 +fonttools==4.59.1 # via matplotlib fqdn==1.5.1 # via jsonschema griddataformats==1.0.2 # via mdanalysis -identify==2.6.12 +identify==2.6.13 # via pre-commit idna==3.10 # via @@ -114,7 +100,7 @@ inflect==7.5.0 # via robocrys iniconfig==2.1.0 # via pytest -ipython==9.3.0 +ipython==9.4.0 # via mpcontribs-client ipython-pygments-lexers==1.1.1 # via ipython @@ -136,32 +122,29 @@ joblib==1.5.1 # scikit-learn json2html==1.3.0 # via mpcontribs-client -jsonlines==4.0.0 - # via maggma jsonpointer==3.0.0 # via jsonschema jsonref==1.1.0 # via bravado-core -jsonschema[format-nongpl]==4.24.0 +jsonschema[format-nongpl]==4.25.0 # via # bravado-core - # maggma # swagger-spec-validator jsonschema-specifications==2025.4.1 # via jsonschema -kiwisolver==1.4.8 +kiwisolver==1.4.9 # via matplotlib -latexcodec==3.0.0 +lark==1.2.2 + # via rfc3987-syntax +latexcodec==3.0.1 # via pybtex lazy-loader==0.4 # via scikit-image -maggma==0.71.5 - # via mp-api (pyproject.toml) markupsafe==3.0.2 # via jinja2 matminer==0.9.3 # via robocrys -matplotlib==3.10.3 +matplotlib==3.10.5 # via # ase # mdanalysis @@ -181,15 +164,12 @@ mdanalysis==2.9.0 # transport-analysis mmtf-python==1.1.3 # via mdanalysis -mongomock==4.3.0 - # via maggma monotonic==1.6 # via bravado monty==2025.3.3 # via # custodian # emmet-core - # maggma # matminer # mp-api (pyproject.toml) # pymatgen @@ -208,16 +188,15 @@ msgpack==1.1.1 # via # bravado # bravado-core - # maggma # mmtf-python # mp-api (pyproject.toml) -mypy==1.16.1 +mypy==1.17.1 # via mp-api (pyproject.toml) mypy-extensions==1.1.0 # via # mp-api (pyproject.toml) # mypy -narwhals==1.43.0 +narwhals==2.1.1 # via plotly networkx==3.5 # via @@ -232,7 +211,6 @@ numpy==1.26.4 # contourpy # griddataformats # imageio - # maggma # matminer # matplotlib # mdanalysis @@ -257,16 +235,13 @@ numpy==1.26.4 # statsmodels # tidynamics # tifffile -orjson==3.10.18 - # via - # maggma - # pymatgen +orjson==3.11.2 + # via pymatgen packaging==25.0 # via # lazy-loader # matplotlib # mdanalysis - # mongomock # plotly # pytest # scikit-image @@ -274,17 +249,14 @@ packaging==25.0 # statsmodels palettable==3.3.3 # via pymatgen -pandas==2.3.0 +pandas==2.3.1 # via - # maggma # matminer # mpcontribs-client # pymatgen # seaborn # solvation-analysis # statsmodels -paramiko==3.5.1 - # via sshtunnel parso==0.8.4 # via jedi pathspec==0.12.1 @@ -293,7 +265,7 @@ patsy==1.0.1 # via statsmodels pexpect==4.9.0 # via ipython -pillow==11.2.1 +pillow==11.3.0 # via # imageio # matplotlib @@ -305,7 +277,7 @@ platformdirs==4.3.8 # via # pint # virtualenv -plotly==6.1.2 +plotly==6.3.0 # via # mpcontribs-client # pymatgen @@ -314,7 +286,7 @@ pluggy==1.6.0 # via # pytest # pytest-cov -pre-commit==4.2.0 +pre-commit==4.3.0 # via mp-api (pyproject.toml) prompt-toolkit==3.0.51 # via ipython @@ -326,34 +298,27 @@ pubchempy==1.0.4 # via robocrys pure-eval==0.2.3 # via stack-data -pyarrow==20.0.0 +pyarrow==21.0.0 # via emmet-core -pybtex==0.24.0 +pybtex==0.25.1 # via # emmet-core # robocrys -pycodestyle==2.13.0 +pycodestyle==2.14.0 # via # flake8 # mp-api (pyproject.toml) -pycparser==2.22 - # via cffi pydantic==2.11.7 # via # emmet-core - # maggma # pydantic-settings pydantic-core==2.33.2 # via pydantic -pydantic-settings==2.9.1 - # via - # emmet-core - # maggma -pydash==8.0.5 - # via maggma -pyflakes==3.3.2 +pydantic-settings==2.10.1 + # via emmet-core +pyflakes==3.4.0 # via flake8 -pygments==2.19.1 +pygments==2.19.2 # via # ipython # ipython-pygments-lexers @@ -372,31 +337,28 @@ pymatgen==2025.6.14 # pymatgen-analysis-defects # pymatgen-analysis-diffusion # robocrys -pymatgen-analysis-alloys==0.0.7 +pymatgen-analysis-alloys==0.0.8 # via emmet-core pymatgen-analysis-defects==2025.1.18 # via emmet-core pymatgen-analysis-diffusion==2024.7.15 # via emmet-core -pymongo==4.10.1 +pymongo==4.14.0 # via - # maggma # matminer # mpcontribs-client -pynacl==1.5.0 - # via paramiko pyparsing==3.2.3 # via # bibtexparser # matplotlib -pytest==8.4.0 +pytest==8.4.1 # via # mp-api (pyproject.toml) # pytest-asyncio # pytest-cov # pytest-mock # solvation-analysis -pytest-asyncio==1.0.0 +pytest-asyncio==1.1.0 # via mp-api (pyproject.toml) pytest-cov==6.2.1 # via mp-api (pyproject.toml) @@ -408,15 +370,13 @@ python-dateutil==2.9.0.post0 # botocore # bravado # bravado-core - # maggma # matplotlib # pandas -python-dotenv==1.1.0 +python-dotenv==1.1.1 # via pydantic-settings pytz==2025.2 # via # bravado-core - # mongomock # pandas pyyaml==6.0.2 # via @@ -425,9 +385,7 @@ pyyaml==6.0.2 # pre-commit # pybtex # swagger-spec-validator -pyzmq==27.0.0 - # via maggma -rdkit==2025.3.3 +rdkit==2025.3.5 # via solvation-analysis referencing==0.36.2 # via @@ -448,30 +406,31 @@ rfc3339-validator==0.1.4 # via jsonschema rfc3986-validator==0.1.1 # via jsonschema +rfc3987-syntax==1.1.0 + # via jsonschema robocrys==0.2.11 # via emmet-core roman-numerals-py==3.1.0 # via sphinx -rpds-py==0.25.1 +rpds-py==0.27.0 # via # jsonschema # referencing ruamel-yaml==0.18.14 # via # custodian - # maggma # monty # pymatgen # robocrys ruamel-yaml-clib==0.2.12 # via ruamel-yaml -s3transfer==0.13.0 +s3transfer==0.13.1 # via boto3 scikit-image==0.25.2 # via pymatgen-analysis-defects -scikit-learn==1.7.0 +scikit-learn==1.7.1 # via matminer -scipy==1.15.3 +scipy==1.16.1 # via # ase # griddataformats @@ -488,8 +447,6 @@ seekpath==2.1.0 # via emmet-core semantic-version==2.10.0 # via mpcontribs-client -sentinels==1.0.0 - # via mongomock shapely==2.1.1 # via pymatgen-analysis-alloys simplejson==3.20.1 @@ -501,10 +458,9 @@ six==1.17.0 # bravado # bravado-core # flatten-dict - # pybtex # python-dateutil # rfc3339-validator -smart-open==7.1.0 +smart-open==7.3.0.post1 # via mp-api (pyproject.toml) snowballstemmer==3.0.1 # via sphinx @@ -529,11 +485,9 @@ sphinxcontrib-qthelp==2.0.0 # via sphinx sphinxcontrib-serializinghtml==2.0.0 # via sphinx -sshtunnel==0.4.0 - # via maggma stack-data==0.6.3 # via ipython -statsmodels==0.14.4 +statsmodels==0.14.5 # via solvation-analysis swagger-spec-validator==3.0.4 # via @@ -555,7 +509,6 @@ tifffile==2025.6.11 # via scikit-image tqdm==4.67.1 # via - # maggma # matminer # mdanalysis # mpcontribs-client @@ -566,15 +519,15 @@ traitlets==5.14.3 # matplotlib-inline transport-analysis==0.1.2 # via emmet-core -typeguard==4.4.3 +typeguard==4.4.4 # via inflect -types-python-dateutil==2.9.0.20250516 +types-python-dateutil==2.9.0.20250809 # via arrow -types-requests==2.32.4.20250611 +types-requests==2.32.4.20250809 # via mp-api (pyproject.toml) -types-setuptools==80.9.0.20250529 +types-setuptools==80.9.0.20250809 # via mp-api (pyproject.toml) -typing-extensions==4.14.0 +typing-extensions==4.14.1 # via # bravado # emmet-core @@ -586,7 +539,6 @@ typing-extensions==4.14.0 # pint # pydantic # pydantic-core - # pydash # referencing # spglib # swagger-spec-validator @@ -604,18 +556,18 @@ uncertainties==3.2.3 # via pymatgen uri-template==1.3.0 # via jsonschema -urllib3==2.4.0 +urllib3==2.5.0 # via # botocore # requests # types-requests -virtualenv==20.31.2 +virtualenv==20.34.0 # via pre-commit wcwidth==0.2.13 # via prompt-toolkit webcolors==24.11.1 # via jsonschema -wrapt==1.17.2 +wrapt==1.17.3 # via smart-open # The following packages are considered to be unsafe in a requirements file: From 3c0d04053fae07570cd8151641cb3b0699bfaa5d Mon Sep 17 00:00:00 2001 From: github-actions Date: Thu, 14 Aug 2025 17:46:28 +0000 Subject: [PATCH 3/6] Update ubuntu-latest dependencies for mp-api --- .../requirements-ubuntu-latest_py3.12.txt | 150 ++++------------ ...quirements-ubuntu-latest_py3.12_extras.txt | 166 +++++++----------- 2 files changed, 89 insertions(+), 227 deletions(-) diff --git a/requirements/requirements-ubuntu-latest_py3.12.txt b/requirements/requirements-ubuntu-latest_py3.12.txt index 8de2cc856..ad62ed61e 100644 --- a/requirements/requirements-ubuntu-latest_py3.12.txt +++ b/requirements/requirements-ubuntu-latest_py3.12.txt @@ -4,214 +4,126 @@ # # pip-compile --output-file=requirements/requirements-ubuntu-latest_py3.12.txt pyproject.toml # -aioitertools==0.12.0 - # via maggma annotated-types==0.7.0 # via pydantic -attrs==25.3.0 - # via - # jsonlines - # jsonschema - # referencing -bcrypt==4.3.0 - # via paramiko bibtexparser==1.4.3 # via pymatgen -boto3==1.38.37 - # via maggma -botocore==1.38.37 - # via - # boto3 - # s3transfer -certifi==2025.6.15 +certifi==2025.8.3 # via requests -cffi==1.17.1 - # via - # cryptography - # pynacl -charset-normalizer==3.4.2 +charset-normalizer==3.4.3 # via requests -contourpy==1.3.2 +contourpy==1.3.3 # via matplotlib -cryptography==45.0.4 - # via paramiko cycler==0.12.1 # via matplotlib -dnspython==2.7.0 - # via - # maggma - # pymongo -emmet-core==0.84.8 +emmet-core==0.84.9 # via mp-api (pyproject.toml) -fonttools==4.58.4 +fonttools==4.59.1 # via matplotlib idna==3.10 # via requests -jmespath==1.0.1 - # via - # boto3 - # botocore joblib==1.5.1 # via pymatgen -jsonlines==4.0.0 - # via maggma -jsonschema==4.24.0 - # via maggma -jsonschema-specifications==2025.4.1 - # via jsonschema -kiwisolver==1.4.8 +kiwisolver==1.4.9 # via matplotlib -latexcodec==3.0.0 +latexcodec==3.0.1 # via pybtex -maggma==0.71.5 - # via mp-api (pyproject.toml) -matplotlib==3.10.3 +matplotlib==3.10.5 # via pymatgen -mongomock==4.3.0 - # via maggma monty==2025.3.3 # via # emmet-core - # maggma # mp-api (pyproject.toml) # pymatgen mpmath==1.3.0 # via sympy msgpack==1.1.1 - # via - # maggma - # mp-api (pyproject.toml) -narwhals==1.43.0 + # via mp-api (pyproject.toml) +narwhals==2.1.1 # via plotly networkx==3.5 # via pymatgen -numpy==2.3.0 +numpy==2.3.2 # via # contourpy - # maggma # matplotlib # monty # pandas # pymatgen # scipy # spglib -orjson==3.10.18 - # via - # maggma - # pymatgen +orjson==3.11.2 + # via pymatgen packaging==25.0 # via # matplotlib - # mongomock # plotly palettable==3.3.3 # via pymatgen -pandas==2.3.0 - # via - # maggma - # pymatgen -paramiko==3.5.1 - # via sshtunnel -pillow==11.2.1 +pandas==2.3.1 + # via pymatgen +pillow==11.3.0 # via matplotlib -plotly==6.1.2 +plotly==6.3.0 # via pymatgen -pybtex==0.24.0 +pybtex==0.25.1 # via emmet-core -pycparser==2.22 - # via cffi pydantic==2.11.7 # via # emmet-core - # maggma # pydantic-settings pydantic-core==2.33.2 # via pydantic -pydantic-settings==2.9.1 - # via - # emmet-core - # maggma -pydash==8.0.5 - # via maggma +pydantic-settings==2.10.1 + # via emmet-core pymatgen==2025.6.14 # via # emmet-core # mp-api (pyproject.toml) -pymongo==4.10.1 - # via maggma -pynacl==1.5.0 - # via paramiko pyparsing==3.2.3 # via # bibtexparser # matplotlib python-dateutil==2.9.0.post0 # via - # botocore - # maggma # matplotlib # pandas -python-dotenv==1.1.0 +python-dotenv==1.1.1 # via pydantic-settings pytz==2025.2 - # via - # mongomock - # pandas + # via pandas pyyaml==6.0.2 # via pybtex -pyzmq==27.0.0 - # via maggma -referencing==0.36.2 - # via - # jsonschema - # jsonschema-specifications requests==2.32.4 # via # mp-api (pyproject.toml) # pymatgen -rpds-py==0.25.1 - # via - # jsonschema - # referencing ruamel-yaml==0.18.14 # via - # maggma # monty # pymatgen ruamel-yaml-clib==0.2.12 # via ruamel-yaml -s3transfer==0.13.0 - # via boto3 -scipy==1.15.3 +scipy==1.16.1 # via pymatgen -sentinels==1.0.0 - # via mongomock six==1.17.0 - # via - # pybtex - # python-dateutil -smart-open==7.1.0 + # via python-dateutil +smart-open==7.3.0.post1 # via mp-api (pyproject.toml) spglib==2.6.0 # via pymatgen -sshtunnel==0.4.0 - # via maggma sympy==1.14.0 # via pymatgen tabulate==0.9.0 # via pymatgen tqdm==4.67.1 - # via - # maggma - # pymatgen -typing-extensions==4.14.0 + # via pymatgen +typing-extensions==4.14.1 # via # emmet-core # mp-api (pyproject.toml) # pydantic # pydantic-core - # pydash - # referencing # spglib # typing-inspection typing-inspection==0.4.1 @@ -222,11 +134,9 @@ tzdata==2025.2 # via pandas uncertainties==3.2.3 # via pymatgen -urllib3==2.4.0 - # via - # botocore - # requests -wrapt==1.17.2 +urllib3==2.5.0 + # via requests +wrapt==1.17.3 # via smart-open # The following packages are considered to be unsafe in a requirements file: diff --git a/requirements/requirements-ubuntu-latest_py3.12_extras.txt b/requirements/requirements-ubuntu-latest_py3.12_extras.txt index bf6951ce0..f3e283308 100644 --- a/requirements/requirements-ubuntu-latest_py3.12_extras.txt +++ b/requirements/requirements-ubuntu-latest_py3.12_extras.txt @@ -4,36 +4,29 @@ # # pip-compile --all-extras --output-file=requirements/requirements-ubuntu-latest_py3.12_extras.txt pyproject.toml # -aioitertools==0.12.0 - # via maggma alabaster==1.0.0 # via sphinx annotated-types==0.7.0 # via pydantic arrow==1.3.0 # via isoduration -ase==3.25.0 +ase==3.26.0 # via pymatgen-analysis-diffusion asttokens==3.0.0 # via stack-data attrs==25.3.0 # via - # jsonlines # jsonschema # referencing babel==2.17.0 # via sphinx -bcrypt==4.3.0 - # via paramiko bibtexparser==1.4.3 # via pymatgen boltons==25.0.0 # via mpcontribs-client -boto3==1.38.37 - # via - # maggma - # mp-api (pyproject.toml) -botocore==1.38.37 +boto3==1.40.9 + # via mp-api (pyproject.toml) +botocore==1.40.9 # via # boto3 # s3transfer @@ -43,48 +36,41 @@ bravado-core==6.1.1 # via bravado cachetools==6.1.0 # via mpcontribs-client -certifi==2025.6.15 +certifi==2025.8.3 # via requests -cffi==1.17.1 - # via - # cryptography - # pynacl cfgv==3.4.0 # via pre-commit -charset-normalizer==3.4.2 +charset-normalizer==3.4.3 # via requests -contourpy==1.3.2 +contourpy==1.3.3 # via matplotlib -coverage[toml]==7.9.1 +coverage[toml]==7.10.3 # via pytest-cov -cryptography==45.0.4 - # via paramiko -custodian==2025.5.12 +custodian==2025.8.13 # via mp-api (pyproject.toml) cycler==0.12.1 # via matplotlib decorator==5.2.1 # via ipython -distlib==0.3.9 +distlib==0.4.0 # via virtualenv dnspython==2.7.0 # via - # maggma # pyisemail # pymongo docutils==0.21.2 # via sphinx -emmet-core[all]==0.84.8 +emmet-core[all]==0.84.9 # via mp-api (pyproject.toml) executing==2.2.0 # via stack-data -filelock==3.18.0 +filelock==3.19.1 # via # mdanalysis # virtualenv filetype==1.2.0 # via mpcontribs-client -flake8==7.2.0 +flake8==7.3.0 # via mp-api (pyproject.toml) flatten-dict==0.4.2 # via mpcontribs-client @@ -92,13 +78,13 @@ flexcache==0.3 # via pint flexparser==0.4 # via pint -fonttools==4.58.4 +fonttools==4.59.1 # via matplotlib fqdn==1.5.1 # via jsonschema griddataformats==1.0.2 # via mdanalysis -identify==2.6.12 +identify==2.6.13 # via pre-commit idna==3.10 # via @@ -114,7 +100,7 @@ inflect==7.5.0 # via robocrys iniconfig==2.1.0 # via pytest -ipython==9.3.0 +ipython==9.4.0 # via mpcontribs-client ipython-pygments-lexers==1.1.1 # via ipython @@ -136,32 +122,29 @@ joblib==1.5.1 # scikit-learn json2html==1.3.0 # via mpcontribs-client -jsonlines==4.0.0 - # via maggma jsonpointer==3.0.0 # via jsonschema jsonref==1.1.0 # via bravado-core -jsonschema[format-nongpl]==4.24.0 +jsonschema[format-nongpl]==4.25.0 # via # bravado-core - # maggma # swagger-spec-validator jsonschema-specifications==2025.4.1 # via jsonschema -kiwisolver==1.4.8 +kiwisolver==1.4.9 # via matplotlib -latexcodec==3.0.0 +lark==1.2.2 + # via rfc3987-syntax +latexcodec==3.0.1 # via pybtex lazy-loader==0.4 # via scikit-image -maggma==0.71.5 - # via mp-api (pyproject.toml) markupsafe==3.0.2 # via jinja2 matminer==0.9.3 # via robocrys -matplotlib==3.10.3 +matplotlib==3.10.5 # via # ase # mdanalysis @@ -181,15 +164,12 @@ mdanalysis==2.9.0 # transport-analysis mmtf-python==1.1.3 # via mdanalysis -mongomock==4.3.0 - # via maggma monotonic==1.6 # via bravado monty==2025.3.3 # via # custodian # emmet-core - # maggma # matminer # mp-api (pyproject.toml) # pymatgen @@ -208,16 +188,15 @@ msgpack==1.1.1 # via # bravado # bravado-core - # maggma # mmtf-python # mp-api (pyproject.toml) -mypy==1.16.1 +mypy==1.17.1 # via mp-api (pyproject.toml) mypy-extensions==1.1.0 # via # mp-api (pyproject.toml) # mypy -narwhals==1.43.0 +narwhals==2.1.1 # via plotly networkx==3.5 # via @@ -232,7 +211,6 @@ numpy==1.26.4 # contourpy # griddataformats # imageio - # maggma # matminer # matplotlib # mdanalysis @@ -257,16 +235,13 @@ numpy==1.26.4 # statsmodels # tidynamics # tifffile -orjson==3.10.18 - # via - # maggma - # pymatgen +orjson==3.11.2 + # via pymatgen packaging==25.0 # via # lazy-loader # matplotlib # mdanalysis - # mongomock # plotly # pytest # scikit-image @@ -274,17 +249,14 @@ packaging==25.0 # statsmodels palettable==3.3.3 # via pymatgen -pandas==2.3.0 +pandas==2.3.1 # via - # maggma # matminer # mpcontribs-client # pymatgen # seaborn # solvation-analysis # statsmodels -paramiko==3.5.1 - # via sshtunnel parso==0.8.4 # via jedi pathspec==0.12.1 @@ -293,7 +265,7 @@ patsy==1.0.1 # via statsmodels pexpect==4.9.0 # via ipython -pillow==11.2.1 +pillow==11.3.0 # via # imageio # matplotlib @@ -305,7 +277,7 @@ platformdirs==4.3.8 # via # pint # virtualenv -plotly==6.1.2 +plotly==6.3.0 # via # mpcontribs-client # pymatgen @@ -314,7 +286,7 @@ pluggy==1.6.0 # via # pytest # pytest-cov -pre-commit==4.2.0 +pre-commit==4.3.0 # via mp-api (pyproject.toml) prompt-toolkit==3.0.51 # via ipython @@ -326,34 +298,27 @@ pubchempy==1.0.4 # via robocrys pure-eval==0.2.3 # via stack-data -pyarrow==20.0.0 +pyarrow==21.0.0 # via emmet-core -pybtex==0.24.0 +pybtex==0.25.1 # via # emmet-core # robocrys -pycodestyle==2.13.0 +pycodestyle==2.14.0 # via # flake8 # mp-api (pyproject.toml) -pycparser==2.22 - # via cffi pydantic==2.11.7 # via # emmet-core - # maggma # pydantic-settings pydantic-core==2.33.2 # via pydantic -pydantic-settings==2.9.1 - # via - # emmet-core - # maggma -pydash==8.0.5 - # via maggma -pyflakes==3.3.2 +pydantic-settings==2.10.1 + # via emmet-core +pyflakes==3.4.0 # via flake8 -pygments==2.19.1 +pygments==2.19.2 # via # ipython # ipython-pygments-lexers @@ -372,31 +337,28 @@ pymatgen==2025.6.14 # pymatgen-analysis-defects # pymatgen-analysis-diffusion # robocrys -pymatgen-analysis-alloys==0.0.7 +pymatgen-analysis-alloys==0.0.8 # via emmet-core pymatgen-analysis-defects==2025.1.18 # via emmet-core pymatgen-analysis-diffusion==2024.7.15 # via emmet-core -pymongo==4.10.1 +pymongo==4.14.0 # via - # maggma # matminer # mpcontribs-client -pynacl==1.5.0 - # via paramiko pyparsing==3.2.3 # via # bibtexparser # matplotlib -pytest==8.4.0 +pytest==8.4.1 # via # mp-api (pyproject.toml) # pytest-asyncio # pytest-cov # pytest-mock # solvation-analysis -pytest-asyncio==1.0.0 +pytest-asyncio==1.1.0 # via mp-api (pyproject.toml) pytest-cov==6.2.1 # via mp-api (pyproject.toml) @@ -408,15 +370,13 @@ python-dateutil==2.9.0.post0 # botocore # bravado # bravado-core - # maggma # matplotlib # pandas -python-dotenv==1.1.0 +python-dotenv==1.1.1 # via pydantic-settings pytz==2025.2 # via # bravado-core - # mongomock # pandas pyyaml==6.0.2 # via @@ -425,9 +385,7 @@ pyyaml==6.0.2 # pre-commit # pybtex # swagger-spec-validator -pyzmq==27.0.0 - # via maggma -rdkit==2025.3.3 +rdkit==2025.3.5 # via solvation-analysis referencing==0.36.2 # via @@ -448,30 +406,31 @@ rfc3339-validator==0.1.4 # via jsonschema rfc3986-validator==0.1.1 # via jsonschema +rfc3987-syntax==1.1.0 + # via jsonschema robocrys==0.2.11 # via emmet-core roman-numerals-py==3.1.0 # via sphinx -rpds-py==0.25.1 +rpds-py==0.27.0 # via # jsonschema # referencing ruamel-yaml==0.18.14 # via # custodian - # maggma # monty # pymatgen # robocrys ruamel-yaml-clib==0.2.12 # via ruamel-yaml -s3transfer==0.13.0 +s3transfer==0.13.1 # via boto3 scikit-image==0.25.2 # via pymatgen-analysis-defects -scikit-learn==1.7.0 +scikit-learn==1.7.1 # via matminer -scipy==1.15.3 +scipy==1.16.1 # via # ase # griddataformats @@ -488,8 +447,6 @@ seekpath==2.1.0 # via emmet-core semantic-version==2.10.0 # via mpcontribs-client -sentinels==1.0.0 - # via mongomock shapely==2.1.1 # via pymatgen-analysis-alloys simplejson==3.20.1 @@ -501,10 +458,9 @@ six==1.17.0 # bravado # bravado-core # flatten-dict - # pybtex # python-dateutil # rfc3339-validator -smart-open==7.1.0 +smart-open==7.3.0.post1 # via mp-api (pyproject.toml) snowballstemmer==3.0.1 # via sphinx @@ -529,11 +485,9 @@ sphinxcontrib-qthelp==2.0.0 # via sphinx sphinxcontrib-serializinghtml==2.0.0 # via sphinx -sshtunnel==0.4.0 - # via maggma stack-data==0.6.3 # via ipython -statsmodels==0.14.4 +statsmodels==0.14.5 # via solvation-analysis swagger-spec-validator==3.0.4 # via @@ -555,7 +509,6 @@ tifffile==2025.6.11 # via scikit-image tqdm==4.67.1 # via - # maggma # matminer # mdanalysis # mpcontribs-client @@ -566,15 +519,15 @@ traitlets==5.14.3 # matplotlib-inline transport-analysis==0.1.2 # via emmet-core -typeguard==4.4.3 +typeguard==4.4.4 # via inflect -types-python-dateutil==2.9.0.20250516 +types-python-dateutil==2.9.0.20250809 # via arrow -types-requests==2.32.4.20250611 +types-requests==2.32.4.20250809 # via mp-api (pyproject.toml) -types-setuptools==80.9.0.20250529 +types-setuptools==80.9.0.20250809 # via mp-api (pyproject.toml) -typing-extensions==4.14.0 +typing-extensions==4.14.1 # via # bravado # emmet-core @@ -585,7 +538,6 @@ typing-extensions==4.14.0 # pint # pydantic # pydantic-core - # pydash # referencing # spglib # swagger-spec-validator @@ -603,18 +555,18 @@ uncertainties==3.2.3 # via pymatgen uri-template==1.3.0 # via jsonschema -urllib3==2.4.0 +urllib3==2.5.0 # via # botocore # requests # types-requests -virtualenv==20.31.2 +virtualenv==20.34.0 # via pre-commit wcwidth==0.2.13 # via prompt-toolkit webcolors==24.11.1 # via jsonschema -wrapt==1.17.2 +wrapt==1.17.3 # via smart-open # The following packages are considered to be unsafe in a requirements file: From 07fcdab585de60269fd6ea0aa0aa1ff503ab6c85 Mon Sep 17 00:00:00 2001 From: esoteric-ephemera Date: Wed, 20 Aug 2025 10:45:15 -0700 Subject: [PATCH 4/6] bump emmet core --- pyproject.toml | 4 ++-- requirements/requirements-ubuntu-latest_py3.11.txt | 2 +- requirements/requirements-ubuntu-latest_py3.12.txt | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index 7960aa045..934b15c44 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -26,13 +26,13 @@ dependencies = [ "typing-extensions>=3.7.4.1", "requests>=2.23.0", "monty>=2024.12.10", - "emmet-core>=0.84.3rc6", + "emmet-core>=0.84.10rc1", "smart_open", ] dynamic = ["version"] [project.optional-dependencies] -all = ["emmet-core[all]>=0.69.1", "custodian", "mpcontribs-client", "boto3"] +all = ["emmet-core[all]>=0.84.10rc1", "custodian", "mpcontribs-client", "boto3"] test = [ "pre-commit", "pytest", diff --git a/requirements/requirements-ubuntu-latest_py3.11.txt b/requirements/requirements-ubuntu-latest_py3.11.txt index 14be0b6a3..008bfd613 100644 --- a/requirements/requirements-ubuntu-latest_py3.11.txt +++ b/requirements/requirements-ubuntu-latest_py3.11.txt @@ -16,7 +16,7 @@ contourpy==1.3.3 # via matplotlib cycler==0.12.1 # via matplotlib -emmet-core==0.84.9 +emmet-core==0.84.10rc2 # via mp-api (pyproject.toml) fonttools==4.59.1 # via matplotlib diff --git a/requirements/requirements-ubuntu-latest_py3.12.txt b/requirements/requirements-ubuntu-latest_py3.12.txt index ad62ed61e..9aa8cef4c 100644 --- a/requirements/requirements-ubuntu-latest_py3.12.txt +++ b/requirements/requirements-ubuntu-latest_py3.12.txt @@ -16,7 +16,7 @@ contourpy==1.3.3 # via matplotlib cycler==0.12.1 # via matplotlib -emmet-core==0.84.9 +emmet-core==0.84.10rc2 # via mp-api (pyproject.toml) fonttools==4.59.1 # via matplotlib From d481afdf607836a30ea4115ebe2b8a0d2d74fb66 Mon Sep 17 00:00:00 2001 From: esoteric-ephemera Date: Wed, 27 Aug 2025 13:50:15 -0700 Subject: [PATCH 5/6] Conversion electrode rester --- mp_api/client/mprester.py | 2 + mp_api/client/routes/materials/__init__.py | 2 +- mp_api/client/routes/materials/electrodes.py | 48 +++++++++++++++++--- mp_api/client/routes/materials/materials.py | 3 ++ tests/materials/core_function.py | 2 +- tests/materials/test_electrodes.py | 36 +++++++++++++-- 6 files changed, 80 insertions(+), 13 deletions(-) diff --git a/mp_api/client/mprester.py b/mp_api/client/mprester.py index 064550b98..5ed72aceb 100644 --- a/mp_api/client/mprester.py +++ b/mp_api/client/mprester.py @@ -35,6 +35,7 @@ BandStructureRester, BondsRester, ChemenvRester, + ConversionElectrodeRester, DielectricRester, DOIRester, DosRester, @@ -99,6 +100,7 @@ class MPRester: robocrys: RobocrysRester synthesis: SynthesisRester insertion_electrodes: ElectrodeRester + conversion_electrodes: ConversionElectrodeRester electronic_structure: ElectronicStructureRester electronic_structure_bandstructure: BandStructureRester electronic_structure_dos: DosRester diff --git a/mp_api/client/routes/materials/__init__.py b/mp_api/client/routes/materials/__init__.py index 382fb8f63..63fd0e3bd 100644 --- a/mp_api/client/routes/materials/__init__.py +++ b/mp_api/client/routes/materials/__init__.py @@ -6,7 +6,7 @@ from .dielectric import DielectricRester from .doi import DOIRester from .elasticity import ElasticityRester -from .electrodes import ElectrodeRester +from .electrodes import ConversionElectrodeRester, ElectrodeRester from .electronic_structure import ( BandStructureRester, DosRester, diff --git a/mp_api/client/routes/materials/electrodes.py b/mp_api/client/routes/materials/electrodes.py index e2555ac06..08432cf7b 100644 --- a/mp_api/client/routes/materials/electrodes.py +++ b/mp_api/client/routes/materials/electrodes.py @@ -1,18 +1,18 @@ from __future__ import annotations +import warnings from collections import defaultdict -from emmet.core.electrode import InsertionElectrodeDoc +from emmet.core.electrode import ConversionElectrodeDoc, InsertionElectrodeDoc from pymatgen.core.periodic_table import Element from mp_api.client.core import BaseRester from mp_api.client.core.utils import validate_ids -class ElectrodeRester(BaseRester[InsertionElectrodeDoc]): - suffix = "materials/insertion_electrodes" - document_model = InsertionElectrodeDoc # type: ignore +class BaseElectrodeRester(BaseRester): primary_key = "battery_id" + _exclude_search_fields: list[str] | None = None def search( # pragma: ignore self, @@ -39,7 +39,7 @@ def search( # pragma: ignore chunk_size: int = 1000, all_fields: bool = True, fields: list[str] | None = None, - ) -> list[InsertionElectrodeDoc] | list[dict]: + ) -> list[InsertionElectrodeDoc | ConversionElectrodeDoc] | list[dict]: """Query using a variety of search criteria. Arguments: @@ -77,11 +77,11 @@ def search( # pragma: ignore num_chunks (int): Maximum number of chunks of data to yield. None will yield all possible. chunk_size (int): Number of data entries per chunk. all_fields (bool): Whether to return all fields in the document. Defaults to True. - fields (List[str]): List of fields in InsertionElectrodeDoc to return data for. + fields (List[str]): List of fields in InsertionElectrodeDoc or ConversionElectrodeDoc to return data for. Default is battery_id and last_updated if all_fields is False. Returns: - ([InsertionElectrodeDoc], [dict]) List of insertion electrode documents or dictionaries. + ([InsertionElectrodeDoc or ConversionElectrodeDoc], [dict]) List of insertion/conversion electrode documents or dictionaries. """ query_params = defaultdict(dict) # type: dict @@ -143,6 +143,17 @@ def search( # pragma: ignore else: query_params.update({param: value}) + excluded_fields = self._exclude_search_fields or [] + ignored_fields = { + entry + for entry in excluded_fields + if query_params.pop(entry, None) is not None + } + if ignored_fields: + warnings.warn( + f"Ignoring fields {', '.join(ignored_fields)} which are not valid options for {self.__class__.__name__}" + ) + query_params = { entry: query_params[entry] for entry in query_params @@ -150,3 +161,26 @@ def search( # pragma: ignore } return super()._search(**query_params) + + +class ElectrodeRester(BaseElectrodeRester): + """Search insertion electrode documents.""" + + suffix = "materials/insertion_electrodes" + document_model = InsertionElectrodeDoc # type: ignore + + +class ConversionElectrodeRester(BaseElectrodeRester): + """Search conversion electrode documents.""" + + suffix = "materials/conversion_electrodes" + document_model = ConversionElectrodeDoc # type: ignore + # TODO: formula, chemsys, and elements do not appear to work in the API + _exclude_search_fields = [ + "material_ids", + "formula", + "chemsys", + "elements", + "stability_charge", + "stability_discharge", + ] diff --git a/mp_api/client/routes/materials/materials.py b/mp_api/client/routes/materials/materials.py index 1e8f0157a..a7bff5c46 100644 --- a/mp_api/client/routes/materials/materials.py +++ b/mp_api/client/routes/materials/materials.py @@ -13,6 +13,7 @@ BandStructureRester, BondsRester, ChemenvRester, + ConversionElectrodeRester, DielectricRester, DosRester, ElasticityRester, @@ -62,6 +63,7 @@ class MaterialsRester(BaseRester[MaterialsDoc]): "robocrys", "synthesis", "insertion_electrodes", + "conversion_electrodes", "electronic_structure", "electronic_structure_bandstructure", "electronic_structure_dos", @@ -92,6 +94,7 @@ class MaterialsRester(BaseRester[MaterialsDoc]): robocrys: RobocrysRester synthesis: SynthesisRester insertion_electrodes: ElectrodeRester + conversion_electrodes: ConversionElectrodeRester electronic_structure: ElectronicStructureRester electronic_structure_bandstructure: BandStructureRester electronic_structure_dos: DosRester diff --git a/tests/materials/core_function.py b/tests/materials/core_function.py index bb7138c62..c42b6324e 100644 --- a/tests/materials/core_function.py +++ b/tests/materials/core_function.py @@ -66,7 +66,7 @@ def client_search_testing( f"Parameter '{param}' with type '{param_type}' was not " "properly identified in the generic search method test." ) - + print(q) doc = search_method(**q)[0].model_dump() for sub_field in sub_doc_fields: diff --git a/tests/materials/test_electrodes.py b/tests/materials/test_electrodes.py index 14b28f684..dc0372ef0 100644 --- a/tests/materials/test_electrodes.py +++ b/tests/materials/test_electrodes.py @@ -4,16 +4,26 @@ import pytest from pymatgen.core.periodic_table import Element -from mp_api.client.routes.materials.electrodes import ElectrodeRester +from mp_api.client.routes.materials.electrodes import ( + ElectrodeRester, + ConversionElectrodeRester, +) @pytest.fixture -def rester(): +def insertion_rester(): rester = ElectrodeRester() yield rester rester.session.close() +@pytest.fixture +def conversion_rester(): + rester = ConversionElectrodeRester() + yield rester + rester.session.close() + + excluded_params = [ "sort_fields", "chunk_size", @@ -44,8 +54,8 @@ def rester(): @pytest.mark.skipif(os.getenv("MP_API_KEY", None) is None, reason="No API key found.") -def test_client(rester): - search_method = rester.search +def test_insertion_client(insertion_rester): + search_method = insertion_rester.search client_search_testing( search_method=search_method, @@ -54,3 +64,21 @@ def test_client(rester): custom_field_tests=custom_field_tests, sub_doc_fields=sub_doc_fields, ) + + +@pytest.mark.skipif(os.getenv("MP_API_KEY", None) is None, reason="No API key found.") +def test_conversion_client(conversion_rester): + search_method = conversion_rester.search + + excl = ConversionElectrodeRester._exclude_search_fields + client_search_testing( + search_method=search_method, + excluded_params=excluded_params + excl, + alt_name_dict=alt_name_dict, + custom_field_tests={ + "battery_ids": ["mp-1067_Al"], + "working_ion": Element("Li"), + "exclude_elements": ["Co", "O"], + }, + sub_doc_fields=sub_doc_fields, + ) From eab7fc90244c99b43b7620141c69980c5a314290 Mon Sep 17 00:00:00 2001 From: esoteric-ephemera Date: Thu, 4 Sep 2025 08:53:33 -0700 Subject: [PATCH 6/6] remove errant print --- .pre-commit-config.yaml | 4 ++-- tests/materials/core_function.py | 1 - 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index a3f20b1a0..d7983abcf 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -1,4 +1,4 @@ -default_stages: [commit] +default_stages: [pre-commit] default_install_hook_types: [pre-commit, commit-msg] ci: @@ -37,6 +37,6 @@ repos: rev: v2.2.6 hooks: - id: codespell - stages: [commit, commit-msg] + stages: [pre-commit, commit-msg] exclude_types: [json, bib, svg] args: [--ignore-words-list, "mater,fwe,te"] diff --git a/tests/materials/core_function.py b/tests/materials/core_function.py index c42b6324e..5d5226236 100644 --- a/tests/materials/core_function.py +++ b/tests/materials/core_function.py @@ -66,7 +66,6 @@ def client_search_testing( f"Parameter '{param}' with type '{param_type}' was not " "properly identified in the generic search method test." ) - print(q) doc = search_method(**q)[0].model_dump() for sub_field in sub_doc_fields: