Skip to content

Commit

Permalink
Add messages client and 400,404 warnings
Browse files Browse the repository at this point in the history
  • Loading branch information
munrojm committed Jun 13, 2023
1 parent 04f0662 commit d5fb390
Show file tree
Hide file tree
Showing 4 changed files with 61 additions and 4 deletions.
5 changes: 5 additions & 0 deletions mp_api/client/core/client.py
Original file line number Diff line number Diff line change
Expand Up @@ -694,6 +694,11 @@ def _submit_request_and_process(
f"REST query timed out on URL {url}. Try again with a smaller request."
)

if response.status_code in [400, 404]:
warnings.warn(
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."
)

if response.status_code == 200:
if self.monty_decode:
data = json.loads(response.text, cls=MontyDecoder)
Expand Down
6 changes: 2 additions & 4 deletions mp_api/client/mprester.py
Original file line number Diff line number Diff line change
Expand Up @@ -23,10 +23,7 @@
from mp_api.client.core import BaseRester, MPRestError
from mp_api.client.core.settings import MAPIClientSettings
from mp_api.client.core.utils import validate_ids
from mp_api.client.routes import (
GeneralStoreRester,
UserSettingsRester,
)
from mp_api.client.routes import GeneralStoreRester, MessagesRester, UserSettingsRester
from mp_api.client.routes.legacy import LegacyMoleculesRester
from mp_api.client.routes.materials import (
AbsorptionRester,
Expand Down Expand Up @@ -148,6 +145,7 @@ class MPRester:
doi: DOIRester
_user_settings: UserSettingsRester
_general_store: GeneralStoreRester
_messages: MessagesRester

def __init__(
self,
Expand Down
1 change: 1 addition & 0 deletions mp_api/client/routes/__init__.py
Original file line number Diff line number Diff line change
@@ -1,2 +1,3 @@
from ._general_store import GeneralStoreRester
from ._messages import MessagesRester
from ._user_settings import UserSettingsRester
53 changes: 53 additions & 0 deletions mp_api/client/routes/_messages.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
from datetime import datetime
from typing import List

from emmet.core._messages import MessagesDoc, MessageType

from mp_api.client.core import BaseRester


class MessagesRester(BaseRester[MessagesDoc]): # pragma: no cover
suffix = "_messages"
document_model = MessagesDoc # type: ignore
primary_key = "title"
monty_decode = False
use_document_model = False

def set_message(
self,
title: str,
body: str,
type: MessageType = MessageType.generic,
authors: List[str] = [],
): # pragma: no cover
"""Set user settings
Args:
title: Message title
body: Message text body
type: Message type
authors: Message authors
Returns:
Dictionary with updated message data
Raises:
MPRestError.
"""
d = {"title": title, "body": body, "type": type.value, "authors": authors}

return self._post_resource(body=d).get("data")

def get_messages(self, last_updated: datetime): # pragma: no cover
"""Get user settings.
Args:
last_updated: Datetime to use to query for newer messages
Returns:
Dictionary with messages data
Raises:
MPRestError.
"""
return self._search(last_updated=last_updated)

0 comments on commit d5fb390

Please sign in to comment.