diff --git a/mars-cli/mars_lib/authentication.py b/mars-cli/mars_lib/authentication.py index 3a66845..755edca 100644 --- a/mars-cli/mars_lib/authentication.py +++ b/mars-cli/mars_lib/authentication.py @@ -24,7 +24,7 @@ def is_valid_provider(cls, provider: str): def load_credentials( - credentials_file: Union[io.TextIOWrapper, str] + credentials_file: Union[io.TextIOWrapper, str], ) -> dict[str, dict[str, str]]: """ Validate the credentials. diff --git a/mars-cli/mars_lib/isa_json.py b/mars-cli/mars_lib/isa_json.py index 7d2c687..793376b 100644 --- a/mars-cli/mars_lib/isa_json.py +++ b/mars-cli/mars_lib/isa_json.py @@ -304,7 +304,7 @@ def add_accession_to_data_file_node(node: DataFile, accession_number: str) -> No def create_accession_characteristic_category( - node: Union[Study, Assay] + node: Union[Study, Assay], ) -> Tuple[str, MaterialAttribute]: """ creates a new characteristic category for the accession number. @@ -348,7 +348,7 @@ def fetch_existing_accession_data_file_comment(node: DataFile) -> Comment: def fetch_existing_characteristic_category( - node: Union[Study, Assay] + node: Union[Study, Assay], ) -> Tuple[str, MaterialAttribute]: """ Fetches the existing characteristic category for the accession number. diff --git a/mars-cli/mars_lib/submit.py b/mars-cli/mars_lib/submit.py index 11a5063..89b0fb4 100644 --- a/mars-cli/mars_lib/submit.py +++ b/mars-cli/mars_lib/submit.py @@ -230,17 +230,17 @@ def submit_to_biosamples( ).model_dump(by_alias=True, exclude_none=True), ) - if result.status_code != 200: - body = ( - result.request.body.decode() - if isinstance(result.request.body, bytes) - else result.request.body or "" - ) - raise requests.HTTPError( - f"Request towards BioSamples failed!\nRequest:\nMethod:{result.request.method}\nStatus:{result.status_code}\nURL:{result.request.url}\nHeaders:{result.request.headers}\nBody:{body}" - ) + if result.status_code == 200 and not result.json().get("errors", []): + return result - return result + body = ( + result.request.body.decode() + if isinstance(result.request.body, bytes) + else result.request.body or "" + ) + raise requests.HTTPError( + f"Request towards BioSamples failed!\nRequest:\nMethod:{result.request.method}\nStatus:{result.status_code}\nURL:{result.request.url}\nHeaders:{result.request.headers}\nBody:{body}" + ) def upload_to_metabolights( @@ -282,6 +282,14 @@ def upload_to_metabolights( timeout=120, ) submission_response.raise_for_status() + if submission_response.json().get("errors", []): + response_body = submission_response.request.body + if isinstance(response_body, bytes): + response_body = response_body.decode("utf-8") + raise requests.HTTPError( + f"Request towards MetaboLights failed!\nRequest:\nMethod:{submission_response.request.method}\nStatus:{submission_response.status_code}\nURL:{submission_response.request.url}\nHeaders:{submission_response.request.headers}\nBody:{response_body}" + ) + result = submission_response.json() except Exception as exc: raise exc @@ -368,17 +376,17 @@ def submit_to_ena( ).model_dump(by_alias=True, exclude_none=True), ) - if result.status_code != 200: - body = ( - result.request.body.decode() - if isinstance(result.request.body, bytes) - else result.request.body or "" - ) - raise requests.HTTPError( - f"Request towards ENA failed!\nRequest:\nMethod:{result.request.method}\nStatus:{result.status_code}\nURL:{submission_url}\nParams: ['webinUserName': {params.get('webinUserName')}, 'webinPassword': ****]\nHeaders:{result.request.headers}\nBody:{body}" - ) + if result.status_code == 200 and not result.json().get("errors", []): + return result - return result + body = ( + result.request.body.decode() + if isinstance(result.request.body, bytes) + else result.request.body or "" + ) + raise requests.HTTPError( + f"Request towards ENA failed!\nRequest:\nMethod:{result.request.method}\nStatus:{result.status_code}\nURL:{submission_url}\nParams: ['webinUserName': {params.get('webinUserName')}, 'webinPassword': ****]\nHeaders:{result.request.headers}\nBody:{body}" + ) def upload_to_ena( diff --git a/mars-cli/setup.py b/mars-cli/setup.py index 0c87448..26e310a 100644 --- a/mars-cli/setup.py +++ b/mars-cli/setup.py @@ -38,7 +38,7 @@ def run(self): extras_require={ "test": [ # Dependencies for testing only - "black", + "black == 25.1.*", "ruff", "pytest", "pytest-cov",