From 16597973548c93e072201a772a9e510ff9c0bdca Mon Sep 17 00:00:00 2001 From: Richard Adams Date: Thu, 10 Feb 2022 18:05:40 +0000 Subject: [PATCH] black --- CHANGELOG.md | 6 +++++ README.md | 2 +- rspace_client/client_base.py | 8 ++---- rspace_client/eln/eln.py | 19 +++++--------- rspace_client/eln/filetree_importer.py | 4 +-- rspace_client/inv/inv.py | 26 ++++++-------------- rspace_client/tests/invapi_test.py | 18 ++++++++------ rspace_client/tests/template_builder_test.py | 19 +++----------- 8 files changed, 38 insertions(+), 64 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index fc29a1d..55fb189 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,6 +8,12 @@ All notable changes to this project will be documented in this file ## Unreleased +## 2.3.2 2022-02-09 + +### Fixed + +- #31 Extra fields ignored in bulk/ sample posts + ## 2.3.1 2022-02-09 ### Added diff --git a/README.md b/README.md index 6d8ee97..21b477a 100644 --- a/README.md +++ b/README.md @@ -23,7 +23,7 @@ See [DEVELOPING.md](DEVELOPING.md) for details of running tests. To install rspace-client and its dependencies, run ```bash -pip install rspace-client==2.3.1 +pip install rspace-client==2.3.2 ``` ### Compatibility with RSpace server versions diff --git a/rspace_client/client_base.py b/rspace_client/client_base.py index 5625f94..1984068 100644 --- a/rspace_client/client_base.py +++ b/rspace_client/client_base.py @@ -99,9 +99,7 @@ def doDelete(self, path, resource_id): """ numeric_id = self._get_numeric_record_id(resource_id) return self.retrieve_api_results( - "/{}/{}".format(path, numeric_id), - content_type=None, - request_type="DELETE", + "/{}/{}".format(path, numeric_id), content_type=None, request_type="DELETE", ) def retrieve_api_results( @@ -207,9 +205,7 @@ def serr(self, msg: str): print(msg, file=sys.stderr) def _stream( - self, - endpoint: str, - pagination: Pagination = Pagination(), + self, endpoint: str, pagination: Pagination = Pagination(), ): """ Yields items, making paginated requests to the server as each page diff --git a/rspace_client/eln/eln.py b/rspace_client/eln/eln.py index 9a8fa99..9e63c05 100644 --- a/rspace_client/eln/eln.py +++ b/rspace_client/eln/eln.py @@ -97,8 +97,7 @@ def get_document_csv(self, doc_id): """ numeric_doc_id = self._get_numeric_record_id(doc_id) return self.retrieve_api_results( - "/documents/{}".format(numeric_doc_id), - content_type="text/csv", + "/documents/{}".format(numeric_doc_id), content_type="text/csv", ) def create_document( @@ -245,9 +244,7 @@ def update_document( data["fields"] = fields numeric_doc_id = self._get_numeric_record_id(document_id) return self.retrieve_api_results( - "/documents/{}".format(numeric_doc_id), - request_type="PUT", - params=data, + "/documents/{}".format(numeric_doc_id), request_type="PUT", params=data, ) # Sharing methods @@ -687,8 +684,7 @@ def publish_form(self, form_id): """ numeric_doc_id = self._get_numeric_record_id(form_id) return self.retrieve_api_results( - "/forms/{}/publish".format(numeric_doc_id), - request_type="PUT", + "/forms/{}/publish".format(numeric_doc_id), request_type="PUT", ) def unpublish_form(self, form_id): @@ -700,8 +696,7 @@ def unpublish_form(self, form_id): """ numeric_doc_id = self._get_numeric_record_id(form_id) return self.retrieve_api_results( - "/forms/{}/unpublish".format(numeric_doc_id), - request_type="PUT", + "/forms/{}/unpublish".format(numeric_doc_id), request_type="PUT", ) def share_form(self, form_id): @@ -713,8 +708,7 @@ def share_form(self, form_id): """ numeric_doc_id = self._get_numeric_record_id(form_id) return self.retrieve_api_results( - "/forms/{}/share".format(numeric_doc_id), - request_type="PUT", + "/forms/{}/share".format(numeric_doc_id), request_type="PUT", ) def unshare_form(self, form_id): @@ -727,8 +721,7 @@ def unshare_form(self, form_id): """ numeric_doc_id = self._get_numeric_record_id(form_id) return self.retrieve_api_results( - "/forms/{}/unshare".format(numeric_doc_id), - request_type="PUT", + "/forms/{}/unshare".format(numeric_doc_id), request_type="PUT", ) # Folder / notebook methods diff --git a/rspace_client/eln/filetree_importer.py b/rspace_client/eln/filetree_importer.py index 47dd343..af109dd 100644 --- a/rspace_client/eln/filetree_importer.py +++ b/rspace_client/eln/filetree_importer.py @@ -24,9 +24,7 @@ def __init__(self, eln_client): def _create_file_linking_doc(self, content, parent_folder_id, name, path2Id): rs_doc = self.cli.create_document( - name, - parent_folder_id=parent_folder_id, - fields=[{"content": content}], + name, parent_folder_id=parent_folder_id, fields=[{"content": content}], ) path2Id[name] = rs_doc["globalId"] diff --git a/rspace_client/inv/inv.py b/rspace_client/inv/inv.py index 30392f2..6dc0f59 100644 --- a/rspace_client/inv/inv.py +++ b/rspace_client/inv/inv.py @@ -755,7 +755,7 @@ class ItemPost: def __init__( self, name: str, - itemType:str, + itemType: str, tags: Optional[str] = None, description: Optional[str] = None, extra_fields: Optional[Sequence] = [], @@ -791,9 +791,9 @@ def __init__( total_quantity: Quantity = None, attachments=None, ): - super().__init__(name,"SAMPLE", tags, description, extra_fields) + super().__init__(name, "SAMPLE", tags, description, extra_fields) ## converts arguments into JSON POST syntax - + if storage_temperature_min is not None: self.data["storageTempMin"] = storage_temperature_min._toDict() if storage_temperature_max is not None: @@ -1206,9 +1206,7 @@ def _do_simple_list(self, endpoint, pagination, sample_filter): if sample_filter is not None: pagination.data.update(sample_filter.data) return self.retrieve_api_results( - f"/{endpoint}", - request_type="GET", - params=pagination.data, + f"/{endpoint}", request_type="GET", params=pagination.data, ) def stream_samples( @@ -1413,8 +1411,7 @@ def duplicate( id_to_copy = Id(item_to_duplicate) endpoint = id_to_copy.get_api_endpoint() rc = self.retrieve_api_results( - f"/{endpoint}/{id_to_copy.as_id()}/actions/duplicate", - request_type="POST", + f"/{endpoint}/{id_to_copy.as_id()}/actions/duplicate", request_type="POST", ) if new_name is not None: rc = self.rename(rc, new_name) @@ -1455,9 +1452,7 @@ def add_note_to_subsample( raise ValueError("Supplied id is not a subsamples") data = {"content": note} return self.retrieve_api_results( - f"/subSamples/{ss_id.as_id()}/notes", - request_type="POST", - params=data, + f"/subSamples/{ss_id.as_id()}/notes", request_type="POST", params=data, ) def get_workbenches(self) -> Sequence[dict]: @@ -1629,11 +1624,7 @@ def _id_as_container_id(self, target_container_id): raise ValueError("Target must be a container") return id_target - def add_items_to_list_container( - self, - target_container_id, - *item_ids: str, - ) -> list: + def add_items_to_list_container(self, target_container_id, *item_ids: str,) -> list: """ Adds 1 or more items to a list container @@ -2023,8 +2014,7 @@ def restore_sample_template(self, sample_template_id: Union[int, str]) -> dict: """ id_to_restore = Id(sample_template_id) return self.retrieve_api_results( - f"/sampleTemplates/{id_to_restore.as_id()}/restore", - request_type="PUT", + f"/sampleTemplates/{id_to_restore.as_id()}/restore", request_type="PUT", ) def transfer_sample_template_owner( diff --git a/rspace_client/tests/invapi_test.py b/rspace_client/tests/invapi_test.py index e350e78..048d52b 100644 --- a/rspace_client/tests/invapi_test.py +++ b/rspace_client/tests/invapi_test.py @@ -154,23 +154,25 @@ def test_stream_samples(self): for sample in gen: result_count += 1 self.assertEqual(0, result_count) - + def test_create_sample_withextra_fields(self): ef1 = inv.ExtraField(name="ef1", content="createdf1 content") - sample = self.invapi.create_sample(base.random_string(),extra_fields=[ef1]) + sample = self.invapi.create_sample(base.random_string(), extra_fields=[ef1]) updatedS = self.invapi.get_sample_by_id(sample["globalId"]) self.assertEqual(1, len(updatedS["extraFields"])) - + def test_bulkcreate_sample_withextra_fields(self): ## TODO Fix - ef1 = inv.ExtraField(name="ef1",fieldType=inv.ExtraFieldType.TEXT, content="createdf1 content") - sample_post=inv.SamplePost(base.random_string(),extra_fields=[ef1]) - sample = self.invapi.bulk_create_sample(sample_post).success_results()[0]['record'] + ef1 = inv.ExtraField( + name="ef1", fieldType=inv.ExtraFieldType.TEXT, content="createdf1 content" + ) + sample_post = inv.SamplePost(base.random_string(), extra_fields=[ef1]) + sample = self.invapi.bulk_create_sample(sample_post).success_results()[0][ + "record" + ] self.assertEqual(1, len(sample["extraFields"])) ## this works: { - - def test_add_extra_fields(self): sample = self.invapi.create_sample(base.random_string()) ef1 = inv.ExtraField(name="ef1", content="ef1 content") diff --git a/rspace_client/tests/template_builder_test.py b/rspace_client/tests/template_builder_test.py index 2e41d0d..aca92d7 100755 --- a/rspace_client/tests/template_builder_test.py +++ b/rspace_client/tests/template_builder_test.py @@ -17,10 +17,7 @@ class TemplateBuilderTest(unittest.TestCase): def test_invalid_unit(self): self.assertRaises( - ValueError, - TemplateBuilder, - "name", - "unknownUnit", + ValueError, TemplateBuilder, "name", "unknownUnit", ) def test_add_radio(self): @@ -69,10 +66,7 @@ def test_add_number_field_requires_number(self): builder = TemplateBuilder("myTemplate", "ml") self.assertRaises( - ValueError, - builder.number, - "pH", - "XXX", + ValueError, builder.number, "pH", "XXX", ) def test_add_number_field_no_default(self): @@ -83,9 +77,7 @@ def test_add_number_field_no_default(self): def test_name_required(self): builder = TemplateBuilder("myTemplate", "ml") self.assertRaises( - ValueError, - builder.number, - "", + ValueError, builder.number, "", ) def test_add_date(self): @@ -136,10 +128,7 @@ def test_add_uri(self): self.assertEqual(2, builder.field_count()) self.assertEqual("https://www.google.com", builder._fields()[0]["content"]) self.assertRaises( - ValueError, - builder.uri, - "name", - "aa://www.goog[le.com:XXXX", + ValueError, builder.uri, "name", "aa://www.goog[le.com:XXXX", ) def test_build(self):