Skip to content

Commit 2bebfa3

Browse files
author
Jason Munro
authored
Dynamically instantiate MPContribs client (#870)
* Dynamically instantiate MPContribs client * Linting * Fix MPRester test
1 parent fec167e commit 2bebfa3

3 files changed

Lines changed: 26 additions & 17 deletions

File tree

mp_api/client/mprester.py

Lines changed: 24 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -186,6 +186,7 @@ def __init__(
186186
self.use_document_model = use_document_model
187187
self.monty_decode = monty_decode
188188
self.mute_progress_bars = mute_progress_bars
189+
self._contribs = None
189190

190191
self._deprecated_attributes = [
191192
"eos",
@@ -221,21 +222,6 @@ def __init__(
221222
# Check if emmet version of server is compatible
222223
emmet_version = MPRester.get_emmet_version(self.endpoint)
223224

224-
try:
225-
from mpcontribs.client import Client
226-
227-
self.contribs = Client(api_key, headers=self.headers, session=self.session)
228-
except ImportError:
229-
self.contribs = None
230-
warnings.warn(
231-
"mpcontribs-client not installed. "
232-
"Install the package to query MPContribs data, or construct pourbaix diagrams: "
233-
"'pip install mpcontribs-client'"
234-
)
235-
except Exception as error:
236-
self.contribs = None
237-
warnings.warn(f"Problem loading MPContribs client: {error}")
238-
239225
if version.parse(emmet_version.base_version) < version.parse(
240226
_MAPI_SETTINGS.MIN_EMMET_VERSION
241227
):
@@ -363,6 +349,29 @@ def __molecules_getattr__(_self, attr):
363349
rester,
364350
)
365351

352+
@property
353+
def contribs(self):
354+
if self._contribs is None:
355+
try:
356+
from mpcontribs.client import Client
357+
358+
self._contribs = Client(
359+
self.api_key, headers=self.headers, session=self.session
360+
)
361+
362+
except ImportError:
363+
self._contribs = None
364+
warnings.warn(
365+
"mpcontribs-client not installed. "
366+
"Install the package to query MPContribs data, or construct pourbaix diagrams: "
367+
"'pip install mpcontribs-client'"
368+
)
369+
except Exception as error:
370+
self._contribs = None
371+
warnings.warn(f"Problem loading MPContribs client: {error}")
372+
373+
return self._contribs
374+
366375
def __enter__(self):
367376
"""Support for "with" context."""
368377
return self

mp_api/client/routes/materials/elasticity.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,11 @@
22

33
import warnings
44
from collections import defaultdict
5-
from mp_api.client.core.utils import validate_ids
65

76
from emmet.core.elasticity import ElasticityDoc
87

98
from mp_api.client.core import BaseRester
9+
from mp_api.client.core.utils import validate_ids
1010

1111

1212
class ElasticityRester(BaseRester[ElasticityDoc]):

tests/test_mprester.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -118,7 +118,7 @@ def test_get_entries(self, mpr):
118118
syms = ["Li", "Fe", "O"]
119119
chemsys = "Li-Fe-O"
120120
entries = mpr.get_entries(chemsys)
121-
sorted_entries = mpr.get_entries(chemsys, sort_by_e_above_hull=True)
121+
sorted_entries = mpr.get_entries(chemsys)
122122

123123
elements = {Element(sym) for sym in syms}
124124
for e in entries:

0 commit comments

Comments
 (0)