From e24949026717947b960dd598df179e5351a70dae Mon Sep 17 00:00:00 2001
From: alaskowski <alaskowski@ethz.ch>
Date: Wed, 19 Jul 2023 10:47:49 +0200
Subject: [PATCH] SSDM-13735: Improved dataset upload performance. PyBIS
 1.35.11

---
 api-openbis-python3-pybis/src/python/CHANGELOG.md     |  4 ++++
 .../src/python/pybis/__init__.py                      |  2 +-
 api-openbis-python3-pybis/src/python/pybis/dataset.py | 11 ++++++++---
 api-openbis-python3-pybis/src/python/setup.cfg        |  2 +-
 api-openbis-python3-pybis/src/python/setup.py         |  2 +-
 5 files changed, 15 insertions(+), 6 deletions(-)

diff --git a/api-openbis-python3-pybis/src/python/CHANGELOG.md b/api-openbis-python3-pybis/src/python/CHANGELOG.md
index 682a0df5180..f9a9f9fe982 100644
--- a/api-openbis-python3-pybis/src/python/CHANGELOG.md
+++ b/api-openbis-python3-pybis/src/python/CHANGELOG.md
@@ -1,3 +1,7 @@
+## Changes with pybis-1.35.11
+
+- Improvements to dataset upload performance
+
 ## Changes with pybis-1.35.10
 
 - Fixed issue with changing properties for linked datasets 
diff --git a/api-openbis-python3-pybis/src/python/pybis/__init__.py b/api-openbis-python3-pybis/src/python/pybis/__init__.py
index 5d5df0f11d7..c2b117fa519 100644
--- a/api-openbis-python3-pybis/src/python/pybis/__init__.py
+++ b/api-openbis-python3-pybis/src/python/pybis/__init__.py
@@ -15,7 +15,7 @@
 name = "pybis"
 __author__ = "ID SIS • ETH Zürich"
 __email__ = "openbis-support@id.ethz.ch"
-__version__ = "1.35.10"
+__version__ = "1.35.11"
 
 from . import pybis
 from .pybis import DataSet
diff --git a/api-openbis-python3-pybis/src/python/pybis/dataset.py b/api-openbis-python3-pybis/src/python/pybis/dataset.py
index 9ba2f319b59..7b29adfc32c 100644
--- a/api-openbis-python3-pybis/src/python/pybis/dataset.py
+++ b/api-openbis-python3-pybis/src/python/pybis/dataset.py
@@ -1245,9 +1245,14 @@ class DataSetUploadQueue:
             file_size = os.path.getsize(filename)
 
             if self.multipart is True:
-                file = {filename: open(filename, "rb")}
-                resp = requests.post(upload_url, files=file, verify=verify_certificates)
-                resp.raise_for_status()
+                from requests_toolbelt.multipart.encoder import MultipartEncoder
+                with open(filename, "rb") as f:
+                    m = MultipartEncoder(
+                        fields={filename: (filename, f, 'application/octet-stream')})
+                    headers = {'Content-Type': m.content_type}
+                    r = requests.post(upload_url, data=m, headers=headers,
+                                      verify=verify_certificates)
+                    r.raise_for_status()
             else:
                 # upload the file to our DSS session workspace
                 with open(filename, "rb") as f:
diff --git a/api-openbis-python3-pybis/src/python/setup.cfg b/api-openbis-python3-pybis/src/python/setup.cfg
index 8c8e06e5b17..0cdcd3a74f7 100644
--- a/api-openbis-python3-pybis/src/python/setup.cfg
+++ b/api-openbis-python3-pybis/src/python/setup.cfg
@@ -1,6 +1,6 @@
 [metadata]
 name = PyBIS
-version = 1.35.10
+version = 1.35.11
 author = ID SIS • ETH Zürich
 author_email = openbis-support@id.ethz.ch
 license = Apache Software License Version 2.0
diff --git a/api-openbis-python3-pybis/src/python/setup.py b/api-openbis-python3-pybis/src/python/setup.py
index 6bf70e05b69..8d94cd3df95 100644
--- a/api-openbis-python3-pybis/src/python/setup.py
+++ b/api-openbis-python3-pybis/src/python/setup.py
@@ -26,7 +26,7 @@ with open("README.md", "r", encoding="utf-8") as fh:
 
 setup(
     name="PyBIS",
-    version="1.35.10",
+    version="1.35.11",
     author="ID SIS • ETH Zürich",
     author_email="openbis-support@id.ethz.ch",
     description="openBIS connection and interaction, optimized for using with Jupyter",
-- 
GitLab