Skip to content

Commit d5fb390

Browse files
author
Jason
committed
Add messages client and 400,404 warnings
1 parent 04f0662 commit d5fb390

File tree

4 files changed

+61
-4
lines changed

4 files changed

+61
-4
lines changed

mp_api/client/core/client.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -694,6 +694,11 @@ def _submit_request_and_process(
694694
f"REST query timed out on URL {url}. Try again with a smaller request."
695695
)
696696

697+
if response.status_code in [400, 404]:
698+
warnings.warn(
699+
f"The server does not support the request made to {response.url}. This may be due to an outdated mp-api package, or a problem with the query."
700+
)
701+
697702
if response.status_code == 200:
698703
if self.monty_decode:
699704
data = json.loads(response.text, cls=MontyDecoder)

mp_api/client/mprester.py

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -23,10 +23,7 @@
2323
from mp_api.client.core import BaseRester, MPRestError
2424
from mp_api.client.core.settings import MAPIClientSettings
2525
from mp_api.client.core.utils import validate_ids
26-
from mp_api.client.routes import (
27-
GeneralStoreRester,
28-
UserSettingsRester,
29-
)
26+
from mp_api.client.routes import GeneralStoreRester, MessagesRester, UserSettingsRester
3027
from mp_api.client.routes.legacy import LegacyMoleculesRester
3128
from mp_api.client.routes.materials import (
3229
AbsorptionRester,
@@ -148,6 +145,7 @@ class MPRester:
148145
doi: DOIRester
149146
_user_settings: UserSettingsRester
150147
_general_store: GeneralStoreRester
148+
_messages: MessagesRester
151149

152150
def __init__(
153151
self,

mp_api/client/routes/__init__.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,3 @@
11
from ._general_store import GeneralStoreRester
2+
from ._messages import MessagesRester
23
from ._user_settings import UserSettingsRester

mp_api/client/routes/_messages.py

Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
from datetime import datetime
2+
from typing import List
3+
4+
from emmet.core._messages import MessagesDoc, MessageType
5+
6+
from mp_api.client.core import BaseRester
7+
8+
9+
class MessagesRester(BaseRester[MessagesDoc]): # pragma: no cover
10+
suffix = "_messages"
11+
document_model = MessagesDoc # type: ignore
12+
primary_key = "title"
13+
monty_decode = False
14+
use_document_model = False
15+
16+
def set_message(
17+
self,
18+
title: str,
19+
body: str,
20+
type: MessageType = MessageType.generic,
21+
authors: List[str] = [],
22+
): # pragma: no cover
23+
"""Set user settings
24+
25+
Args:
26+
title: Message title
27+
body: Message text body
28+
type: Message type
29+
authors: Message authors
30+
Returns:
31+
Dictionary with updated message data
32+
33+
34+
Raises:
35+
MPRestError.
36+
"""
37+
d = {"title": title, "body": body, "type": type.value, "authors": authors}
38+
39+
return self._post_resource(body=d).get("data")
40+
41+
def get_messages(self, last_updated: datetime): # pragma: no cover
42+
"""Get user settings.
43+
44+
Args:
45+
last_updated: Datetime to use to query for newer messages
46+
Returns:
47+
Dictionary with messages data
48+
49+
50+
Raises:
51+
MPRestError.
52+
"""
53+
return self._search(last_updated=last_updated)

0 commit comments

Comments
 (0)