Skip to content

Commit 6ff1e3c

Browse files
exception tests for es
1 parent 018f68b commit 6ff1e3c

File tree

2 files changed

+33
-12
lines changed

2 files changed

+33
-12
lines changed

mp_api/client/routes/materials/electronic_structure.py

Lines changed: 16 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -265,15 +265,17 @@ def get_bandstructure_from_task_id(self, task_id: str):
265265
Returns:
266266
bandstructure (BandStructure): BandStructure or BandStructureSymmLine object
267267
"""
268-
result = self._query_open_data(
269-
bucket="materialsproject-parsed",
270-
key=f"bandstructures/{validate_ids([task_id])[0]}.json.gz",
271-
)[0]
268+
try:
269+
result = self._query_open_data(
270+
bucket="materialsproject-parsed",
271+
key=f"bandstructures/{validate_ids([task_id])[0]}.json.gz",
272+
)[0]
273+
except OSError:
274+
result = None
272275

273276
if result:
274277
return result[0]["data"]
275-
else:
276-
raise MPRestError("No object found")
278+
raise MPRestError("No object found")
277279

278280
def get_bandstructure_from_material_id(
279281
self,
@@ -467,15 +469,17 @@ def get_dos_from_task_id(self, task_id: str) -> CompleteDos:
467469
Returns:
468470
bandstructure (CompleteDos): CompleteDos object
469471
"""
470-
result = self._query_open_data(
471-
bucket="materialsproject-parsed",
472-
key=f"dos/{validate_ids([task_id])[0]}.json.gz",
473-
)[0]
472+
try:
473+
result = self._query_open_data(
474+
bucket="materialsproject-parsed",
475+
key=f"dos/{validate_ids([task_id])[0]}.json.gz",
476+
)[0]
477+
except OSError:
478+
result = None
474479

475480
if result:
476481
return result[0]["data"] # type: ignore
477-
else:
478-
raise MPRestError("No object found")
482+
raise MPRestError("No object found")
479483

480484
def get_dos_from_material_id(self, material_id: str):
481485
"""Get the complete density of states pymatgen object associated with a Materials Project ID.

tests/materials/test_electronic_structure.py

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import pytest
55
from pymatgen.analysis.magnetism import Ordering
66

7+
from mp_api.client.core.client import MPRestError
78
from mp_api.client.routes.materials.electronic_structure import (
89
BandStructureRester,
910
DosRester,
@@ -100,6 +101,12 @@ def test_bs_client():
100101
is not None
101102
)
102103

104+
with pytest.raises(MPRestError, match="No electronic structure data found."):
105+
_ = bs_rester.get_bandstructure_from_material_id("mp-0")
106+
107+
with pytest.raises(MPRestError, match="No object found"):
108+
_ = bs_rester.get_bandstructure_from_task_id("mp-0")
109+
103110

104111
dos_custom_field_tests = [
105112
{"magnetic_ordering": Ordering.FM},
@@ -143,3 +150,13 @@ def test_dos_client():
143150
assert all(
144151
doc[dos_alt_name_dict.get(param, param)] is not None for param in params
145152
)
153+
154+
with pytest.raises(MPRestError, match="To query element-projected DOS"):
155+
_ = dos_rester.search(projection_type="elemental")
156+
157+
with pytest.raises(MPRestError, match="To query orbital-projected DOS"):
158+
_ = dos_rester.search(projection_type="orbital")
159+
160+
assert dos_rester.get_dos_from_material_id("mp-0") is None
161+
with pytest.raises(MPRestError, match="No object found"):
162+
_ = dos_rester.get_dos_from_task_id("mp-0")

0 commit comments

Comments
 (0)