Skip to content

Commit 858409f

Browse files
author
Jason Munro
authored
Default API key value to None in MPRester (#743)
* api_key default to None * Fix default key in base rester * Update mpcontribs client in reqs * Fix pytest stripping api_key * Fix api_key setting in session * Fix alloy key * Fix alloys sort fields * Remove print statements * Linting
1 parent 2ec98bd commit 858409f

File tree

7 files changed

+25
-33
lines changed

7 files changed

+25
-33
lines changed

mp_api/client/core/client.py

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ class BaseRester(Generic[T]):
5454

5555
def __init__(
5656
self,
57-
api_key: Union[str, None] = DEFAULT_API_KEY,
57+
api_key: Union[str, None] = None,
5858
endpoint: str = DEFAULT_ENDPOINT,
5959
include_user_agent: bool = True,
6060
session: Optional[requests.Session] = None,
@@ -93,7 +93,7 @@ def __init__(
9393
headers (dict): Custom headers for localhost connections.
9494
"""
9595

96-
self.api_key = api_key
96+
self.api_key = api_key or DEFAULT_API_KEY
9797
self.base_endpoint = endpoint
9898
self.endpoint = endpoint
9999
self.debug = debug
@@ -845,8 +845,12 @@ def get_data_by_id(
845845
from mp_api.client.routes.materials import MaterialsRester
846846

847847
with MaterialsRester(
848-
api_key=self.api_key, endpoint=self.base_endpoint, use_document_model=False, monty_decode=False,
849-
session=self.session, headers=self.headers
848+
api_key=self.api_key,
849+
endpoint=self.base_endpoint,
850+
use_document_model=False,
851+
monty_decode=False,
852+
session=self.session,
853+
headers=self.headers,
850854
) as mpr:
851855
docs = mpr.search(task_ids=[document_id], fields=["material_id"])
852856

mp_api/client/mprester.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,7 @@ class MPRester:
7979

8080
def __init__(
8181
self,
82-
api_key: Optional[str] = DEFAULT_API_KEY,
82+
api_key: Optional[str] = None,
8383
endpoint: str = DEFAULT_ENDPOINT,
8484
notify_db_version: bool = False,
8585
include_user_agent: bool = True,
@@ -128,11 +128,11 @@ def __init__(
128128
"API are 16 characters."
129129
)
130130

131-
self.api_key = api_key
131+
self.api_key = api_key or DEFAULT_API_KEY
132132
self.endpoint = endpoint
133133
self.headers = headers or {}
134134
self.session = session or BaseRester._create_session(
135-
api_key=api_key, include_user_agent=include_user_agent, headers=self.headers
135+
api_key=self.api_key, include_user_agent=include_user_agent, headers=self.headers
136136
)
137137
self.use_document_model = use_document_model
138138
self.monty_decode = monty_decode

mp_api/client/routes/alloys.py

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ class AlloysRester(BaseRester[AlloyPairDoc]):
1010

1111
suffix = "alloys"
1212
document_model = AlloyPairDoc # type: ignore
13-
primary_key = "material_id"
13+
primary_key = "pair_id"
1414

1515
def search(
1616
self,
@@ -45,18 +45,17 @@ def search(
4545

4646
query_params = defaultdict(dict) # type: dict
4747

48-
query_params = {
49-
entry: query_params[entry]
50-
for entry in query_params
51-
if query_params[entry] is not None
52-
}
48+
query_params = {entry: query_params[entry] for entry in query_params if query_params[entry] is not None}
5349

5450
if material_ids:
5551
if isinstance(material_ids, str):
5652
material_ids = [material_ids]
5753

5854
query_params.update({"material_ids": ",".join(validate_ids(material_ids))})
5955

56+
if sort_fields:
57+
query_params.update({"_sort_fields": ",".join([s.strip() for s in sort_fields])})
58+
6059
return super()._search(
6160
formulae=formulae,
6261
num_chunks=num_chunks,

requirements.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ pymatgen-analysis-alloys>=0.0.3
55
typing-extensions==4.1.1
66
requests==2.27.1
77
monty==2022.3.12
8-
mpcontribs-client>=4.2.9
8+
mpcontribs-client>=5.0.10
99
custodian
1010
boto3
1111
msgpack

tests/test_client.py

Lines changed: 8 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -29,44 +29,36 @@
2929
ignore_generic = [
3030
"_user_settings",
3131
"_general_store",
32-
"tasks",
33-
"bonds",
32+
# "tasks",
33+
# "bonds",
3434
"xas",
3535
"elasticity",
3636
"fermi",
37-
"alloys",
38-
"summary",
37+
# "alloys",
38+
# "summary",
3939
] # temp
4040

4141

4242
mpr = MPRester()
4343

4444

45-
@pytest.mark.skipif(
46-
os.environ.get("MP_API_KEY", None) is None, reason="No API key found."
47-
)
45+
@pytest.mark.skipif(os.environ.get("MP_API_KEY", None) is None, reason="No API key found.")
4846
@pytest.mark.parametrize("rester", mpr._all_resters)
4947
def test_generic_get_methods(rester):
5048

5149
# -- Test generic search and get_data_by_id methods
5250
name = rester.suffix.replace("/", "_")
5351
if name not in ignore_generic:
5452
if name not in key_only_resters:
55-
doc = rester._query_resource_data(
56-
{"_limit": 1}, fields=[rester.primary_key]
57-
)[0]
53+
doc = rester._query_resource_data({"_limit": 1}, fields=[rester.primary_key])[0]
5854
assert isinstance(doc, rester.document_model)
5955

6056
if name not in search_only_resters:
61-
doc = rester.get_data_by_id(
62-
doc.dict()[rester.primary_key], fields=[rester.primary_key]
63-
)
57+
doc = rester.get_data_by_id(doc.dict()[rester.primary_key], fields=[rester.primary_key])
6458
assert isinstance(doc, rester.document_model)
6559

6660
elif name not in special_resters:
67-
doc = rester.get_data_by_id(
68-
key_only_resters[name], fields=[rester.primary_key]
69-
)
61+
doc = rester.get_data_by_id(key_only_resters[name], fields=[rester.primary_key])
7062
assert isinstance(doc, rester.document_model)
7163

7264

tests/test_oxidation_states.py

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -80,8 +80,6 @@ def test_client(rester):
8080
"num_chunks": 1,
8181
}
8282

83-
print(q)
84-
8583
doc = search_method(**q)[0].dict()
8684
for sub_field in sub_doc_fields:
8785
if sub_field in doc:

tests/test_thermo.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,6 @@ def test_client(rester):
5959
# Query API for each numeric and boolean parameter and check if returned
6060
for entry in param_tuples:
6161
param = entry[0]
62-
print(param)
6362
if param not in excluded_params:
6463
param_type = entry[1].__args__[0]
6564
q = None

0 commit comments

Comments
 (0)