From 2222c22247682f642487ec5da9fa36ae163689d8 Mon Sep 17 00:00:00 2001 From: MrEx3cut0r Date: Tue, 19 May 2026 14:45:19 +0300 Subject: [PATCH 1/3] [task-419] 502 Bad Gateway error added --- mpds_client/errors.py | 1 + mpds_client/retrieve_MPDS.py | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/mpds_client/errors.py b/mpds_client/errors.py index de3d0ef..69ebbe7 100755 --- a/mpds_client/errors.py +++ b/mpds_client/errors.py @@ -14,6 +14,7 @@ class APIError(Exception): 429: "Too Many Requests (Rate Limiting)", 500: "Internal Server Error", 501: "Not Implemented", + 502: "Bad Gateway", 503: "Service Unavailable", } diff --git a/mpds_client/retrieve_MPDS.py b/mpds_client/retrieve_MPDS.py index 5cdf34c..8b6f465 100755 --- a/mpds_client/retrieve_MPDS.py +++ b/mpds_client/retrieve_MPDS.py @@ -11,7 +11,7 @@ from numpy import array_split import jmespath -from errors import APIError +from .errors import APIError use_pmg, use_ase = False, False From 259d85bfcbdf1304f9891d32d6de1e62a806bc5c Mon Sep 17 00:00:00 2001 From: MrEx3cut0r Date: Wed, 20 May 2026 20:52:19 +0300 Subject: [PATCH 2/3] migrated from httplib2 to requests --- mpds_client/retrieve_MPDS.py | 16 ++++++---------- mpds_client/test_export_MPDS.py | 2 +- mpds_client/test_retrieve_MPDS.py | 14 +++++--------- setup.py | 2 +- 4 files changed, 13 insertions(+), 21 deletions(-) diff --git a/mpds_client/retrieve_MPDS.py b/mpds_client/retrieve_MPDS.py index 8b6f465..a62f660 100755 --- a/mpds_client/retrieve_MPDS.py +++ b/mpds_client/retrieve_MPDS.py @@ -5,7 +5,7 @@ import warnings from urllib.parse import urlencode -import httplib2 +import requests import ujson as json import polars as pl from numpy import array_split @@ -127,8 +127,6 @@ def __init__( """ self.api_key = api_key if api_key else os.environ["MPDS_KEY"] - self.network = httplib2.Http() - self.endpoint = endpoint or self.endpoint self.dtype = dtype or MPDSDataTypes.PEER_REVIEWED self.verbose = verbose if verbose is not None else self.verbose @@ -154,16 +152,14 @@ def _request(self, query, phases=None, page=0, pagesize=None): if self.debug: print('curl -XGET -HKey:%s "%s"' % (self.api_key, uri)) - response, content = self.network.request( - uri=uri, method="GET", headers={"Key": self.api_key} - ) + response = requests.get(uri, headers={"Key": self.api_key}) - if response.status != 200: - return {"error": content, "code": response.status} + if response.status_code != 200: + return {"error": response.text, "code": response.status_code} try: - content = json.loads(content) - except: + content = json.loads(response.text) + except (ValueError, json.JSONDecodeError): return {"error": "Unreadable data obtained"} if content.get("error"): diff --git a/mpds_client/test_export_MPDS.py b/mpds_client/test_export_MPDS.py index fbe8d94..55a58e2 100644 --- a/mpds_client/test_export_MPDS.py +++ b/mpds_client/test_export_MPDS.py @@ -1,7 +1,7 @@ import unittest import os import polars as pl -from export_MPDS import MPDSExport +from .export_MPDS import MPDSExport class TestMPDSExport(unittest.TestCase): diff --git a/mpds_client/test_retrieve_MPDS.py b/mpds_client/test_retrieve_MPDS.py index 9319a83..82f1ae6 100755 --- a/mpds_client/test_retrieve_MPDS.py +++ b/mpds_client/test_retrieve_MPDS.py @@ -3,12 +3,11 @@ import polars as pl -import httplib2 -import ujson as json +import requests from jsonschema import validate, Draft4Validator from jsonschema.exceptions import ValidationError -from retrieve_MPDS import MPDSDataRetrieval +from .retrieve_MPDS import MPDSDataRetrieval import logging @@ -17,13 +16,10 @@ class MPDSDataRetrievalTest(unittest.TestCase): def setUpClass(cls): # warnings.filterwarnings("ignore", category=ResourceWarning, message="unclosed.*") - network = httplib2.Http() - response, content = network.request( - "https://developer.mpds.io/mpds.schema.json" - ) - assert response.status == 200 + response = requests.get("https://developer.mpds.io/mpds.schema.json") + assert response.status_code == 200 - cls.schema = json.loads(content) + cls.schema = response.json() Draft4Validator.check_schema(cls.schema) def test_valid_answer(self): diff --git a/setup.py b/setup.py index 5ae8091..f776809 100755 --- a/setup.py +++ b/setup.py @@ -2,7 +2,7 @@ from setuptools import setup install_requires = [ - 'httplib2', + 'requests', 'ujson', 'numpy', 'polars', From a063abf5cf0843331ce1bd14c260e214bd81ded3 Mon Sep 17 00:00:00 2001 From: MrEx3cut0r Date: Fri, 29 May 2026 12:19:36 -0500 Subject: [PATCH 3/3] JSONDecodeError deleted --- mpds_client/retrieve_MPDS.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mpds_client/retrieve_MPDS.py b/mpds_client/retrieve_MPDS.py index a62f660..c0475fb 100755 --- a/mpds_client/retrieve_MPDS.py +++ b/mpds_client/retrieve_MPDS.py @@ -159,7 +159,7 @@ def _request(self, query, phases=None, page=0, pagesize=None): try: content = json.loads(response.text) - except (ValueError, json.JSONDecodeError): + except ValueError: return {"error": "Unreadable data obtained"} if content.get("error"):