diff --git a/mp_api/client/mprester.py b/mp_api/client/mprester.py index adf3bcd0..6029995c 100644 --- a/mp_api/client/mprester.py +++ b/mp_api/client/mprester.py @@ -186,6 +186,7 @@ def __init__( self.use_document_model = use_document_model self.monty_decode = monty_decode self.mute_progress_bars = mute_progress_bars + self._contribs = None self._deprecated_attributes = [ "eos", @@ -221,21 +222,6 @@ def __init__( # Check if emmet version of server is compatible emmet_version = MPRester.get_emmet_version(self.endpoint) - try: - from mpcontribs.client import Client - - self.contribs = Client(api_key, headers=self.headers, session=self.session) - except ImportError: - self.contribs = None - warnings.warn( - "mpcontribs-client not installed. " - "Install the package to query MPContribs data, or construct pourbaix diagrams: " - "'pip install mpcontribs-client'" - ) - except Exception as error: - self.contribs = None - warnings.warn(f"Problem loading MPContribs client: {error}") - if version.parse(emmet_version.base_version) < version.parse( _MAPI_SETTINGS.MIN_EMMET_VERSION ): @@ -363,6 +349,29 @@ def __molecules_getattr__(_self, attr): rester, ) + @property + def contribs(self): + if self._contribs is None: + try: + from mpcontribs.client import Client + + self._contribs = Client( + self.api_key, headers=self.headers, session=self.session + ) + + except ImportError: + self._contribs = None + warnings.warn( + "mpcontribs-client not installed. " + "Install the package to query MPContribs data, or construct pourbaix diagrams: " + "'pip install mpcontribs-client'" + ) + except Exception as error: + self._contribs = None + warnings.warn(f"Problem loading MPContribs client: {error}") + + return self._contribs + def __enter__(self): """Support for "with" context.""" return self diff --git a/mp_api/client/routes/materials/elasticity.py b/mp_api/client/routes/materials/elasticity.py index b9eefd10..07433332 100644 --- a/mp_api/client/routes/materials/elasticity.py +++ b/mp_api/client/routes/materials/elasticity.py @@ -2,11 +2,11 @@ import warnings from collections import defaultdict -from mp_api.client.core.utils import validate_ids from emmet.core.elasticity import ElasticityDoc from mp_api.client.core import BaseRester +from mp_api.client.core.utils import validate_ids class ElasticityRester(BaseRester[ElasticityDoc]): diff --git a/tests/test_mprester.py b/tests/test_mprester.py index a496c711..f52d879a 100644 --- a/tests/test_mprester.py +++ b/tests/test_mprester.py @@ -118,7 +118,7 @@ def test_get_entries(self, mpr): syms = ["Li", "Fe", "O"] chemsys = "Li-Fe-O" entries = mpr.get_entries(chemsys) - sorted_entries = mpr.get_entries(chemsys, sort_by_e_above_hull=True) + sorted_entries = mpr.get_entries(chemsys) elements = {Element(sym) for sym in syms} for e in entries: