From 9014451e7289989d32a4f4ee7f706c3f927ece35 Mon Sep 17 00:00:00 2001
From: vermeul <swen@ethz.ch>
Date: Tue, 15 Mar 2022 10:37:31 +0100
Subject: [PATCH] sample: automatically add project if it is missing

---
 pybis/src/python/CHANGELOG.md      |  4 ++++
 pybis/src/python/pybis/__init__.py |  2 +-
 pybis/src/python/pybis/dataset.py  |  5 ++++-
 pybis/src/python/pybis/sample.py   | 20 +++++++++++---------
 pybis/src/python/setup.py          |  2 +-
 5 files changed, 21 insertions(+), 12 deletions(-)

diff --git a/pybis/src/python/CHANGELOG.md b/pybis/src/python/CHANGELOG.md
index a5f4e036737..08768a521de 100644
--- a/pybis/src/python/CHANGELOG.md
+++ b/pybis/src/python/CHANGELOG.md
@@ -1,3 +1,7 @@
+## Changes with pybis-1.31.6
+
+- automatically setting the project if only experiment was set
+
 ## Changes with pybis-1.31.5
 
 - optimised error generation without assert
diff --git a/pybis/src/python/pybis/__init__.py b/pybis/src/python/pybis/__init__.py
index fd168de3f6c..48ae574245e 100644
--- a/pybis/src/python/pybis/__init__.py
+++ b/pybis/src/python/pybis/__init__.py
@@ -1,7 +1,7 @@
 name = "pybis"
 __author__ = "Swen Vermeul"
 __email__ = "swen@ethz.ch"
-__version__ = "1.31.5"
+__version__ = "1.31.6"
 
 from . import pybis
 from .pybis import DataSet
diff --git a/pybis/src/python/pybis/dataset.py b/pybis/src/python/pybis/dataset.py
index 25b8c5581d5..df057ce229c 100644
--- a/pybis/src/python/pybis/dataset.py
+++ b/pybis/src/python/pybis/dataset.py
@@ -1060,7 +1060,10 @@ class DataSetUploadQueue:
                 resp = requests.post(upload_url, data=f, verify=verify_certificates)
                 resp.raise_for_status()
                 data = resp.json()
-                assert filesize == int(data["size"])
+                if filesize != int(data["size"]):
+                    raise ValueError(
+                        f'size of file uploaded: {filesize} != data received: {int(data["size"])}'
+                    )
 
             # Tell the queue that we are done
             self.upload_queue.task_done()
diff --git a/pybis/src/python/pybis/sample.py b/pybis/src/python/pybis/sample.py
index f0e8ee1514e..df1d7b0828e 100644
--- a/pybis/src/python/pybis/sample.py
+++ b/pybis/src/python/pybis/sample.py
@@ -21,15 +21,6 @@ class Sample(OpenBisObject, entity="sample", single_item_method_name="get_sample
         if data is not None:
             self._set_data(data)
 
-        # TODO: Why are we using getattr() and setattr() here? They are considerably slower.
-        if project is not None:
-            self.project = project
-
-        if props is not None:
-            for key in props:
-                # self.p[key] = props[key]
-                setattr(self.p, key, props[key])
-
         if kwargs is not None:
             for key in kwargs:
                 setattr(self, key, kwargs[key])
@@ -43,6 +34,17 @@ class Sample(OpenBisObject, entity="sample", single_item_method_name="get_sample
                 except Exception:
                     pass
 
+        if project is None:
+            if self.experiment:
+                self.project = self.experiment.project
+        else:
+            self.project = project
+
+        if props is not None:
+            for key in props:
+                # self.p[key] = props[key]
+                setattr(self.p, key, props[key])
+
         if getattr(self, "parents") is None:
             self.a.__dict__["_parents"] = []
         else:
diff --git a/pybis/src/python/setup.py b/pybis/src/python/setup.py
index 51ce66285fe..77513791c50 100644
--- a/pybis/src/python/setup.py
+++ b/pybis/src/python/setup.py
@@ -13,7 +13,7 @@ with open("README.md", "r", encoding="utf-8") as fh:
 
 setup(
     name="PyBIS",
-    version="1.31.5",
+    version="1.31.6",
     author="Swen Vermeul • ID SIS • ETH Zürich",
     author_email="swen@ethz.ch",
     description="openBIS connection and interaction, optimized for using with Jupyter",
-- 
GitLab