diff --git a/.omeroci/cli-build b/.omeroci/cli-build
index 4b9bb4f..732901e 100755
--- a/.omeroci/cli-build
+++ b/.omeroci/cli-build
@@ -18,7 +18,7 @@ export JAVA_LD_LIBRARY_PATH="$JAVA_HOME/lib/:$JAVA_HOME/lib/server"
export CONDA_BACKUP_JAVA_HOME=$JAVA_HOME
export CONDA_BACKUP_JAVA_LD_LIBRARY_PATH=$JAVA_LD_LIBRARY_PATH
-source /tmp/miniconda/bin/activate
+source /tmp/miniforge/bin/activate
conda init
conda activate omero
diff --git a/.omeroci/py-setup b/.omeroci/py-setup
index e81561d..24f9387 100755
--- a/.omeroci/py-setup
+++ b/.omeroci/py-setup
@@ -12,14 +12,14 @@ export JAVA_HOME=$(readlink -f /usr/bin/java | sed "s:/bin/java::")
export JAVA_LD_LIBRARY_PATH="$JAVA_HOME/lib/:$JAVA_HOME/lib/server"
export CONDA_BACKUP_JAVA_HOME=$JAVA_HOME
export CONDA_BACKUP_JAVA_LD_LIBRARY_PATH=$JAVA_LD_LIBRARY_PATH
-wget --quiet https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh
-sh Miniconda3-latest-Linux-x86_64.sh -b -p /tmp/miniconda
-source /tmp/miniconda/bin/activate
+wget --quiet https://github.com/conda-forge/miniforge/releases/latest/download/Miniforge3-Linux-x86_64.sh
+sh Miniforge3-Linux-x86_64.sh -b -p /tmp/miniforge
+source /tmp/miniforge/bin/activate
conda init
-conda create -n omero python=3.9
+conda create -n omero python=3.11
conda activate omero
-pip install https://github.com/glencoesoftware/zeroc-ice-py-linux-x86_64/releases/download/20231130/zeroc_ice-3.6.5-cp39-cp39-manylinux_2_28_x86_64.whl
-conda install -y -c bioconda bftools
+pip install https://github.com/glencoesoftware/zeroc-ice-py-linux-x86_64/releases/download/20240202/zeroc_ice-3.6.5-cp311-cp311-manylinux_2_28_x86_64.whl
+conda install -y -c ome bftools
pip install pytest restview mox3
cd $TARGET
diff --git a/setup.py b/setup.py
index 5f6a8a6..29b1b9a 100755
--- a/setup.py
+++ b/setup.py
@@ -23,7 +23,7 @@ def read(fname):
packages=['', 'omero.plugins'],
package_dir={"": "src"},
name="omero-cli-transfer",
- version='1.1.0',
+ version='1.1.1',
maintainer="Erick Ratamero",
maintainer_email="erick.ratamero@jax.org",
description=("A set of utilities for exporting a transfer"
@@ -34,12 +34,12 @@ def read(fname):
long_description_content_type="text/markdown",
url="https://github.com/TheJacksonLaboratory/omero-cli-transfer",
install_requires=[
- 'ezomero>=3.0.0, <4.0.0',
- 'ome-types==0.5.1.post1'
+ 'ezomero>=3.1.0, <4.0.0',
+ 'ome-types>=0.6.1, <0.7.0'
],
extras_require={
"rocrate": ["rocrate>=0.7.0, <1.0.0"],
},
- python_requires='>=3.8',
+ python_requires='>=3.9',
)
diff --git a/src/generate_omero_objects.py b/src/generate_omero_objects.py
index ea277df..c332832 100644
--- a/src/generate_omero_objects.py
+++ b/src/generate_omero_objects.py
@@ -325,9 +325,9 @@ def create_plate_map(ome: OME, img_map: dict, conn: BlitzGateway
newome = copy.deepcopy(ome)
plate_map = {}
map_ref_ids = []
- for plate in ome.plates:
+ for plate in newome.plates:
ann_ids = [i.id for i in plate.annotation_refs]
- for ann in ome.structured_annotations:
+ for ann in newome.structured_annotations:
if (ann.id in ann_ids and
isinstance(ann, XMLAnnotation)):
tree = ETree.fromstring(to_xml(ann.value,
diff --git a/src/generate_xml.py b/src/generate_xml.py
index d5f756a..e538d0e 100644
--- a/src/generate_xml.py
+++ b/src/generate_xml.py
@@ -33,7 +33,7 @@
from generate_omero_objects import get_server_path
import xml.etree.cElementTree as ETree
from os import PathLike
-import pkg_resources
+import importlib
import ezomero
import os
import csv
@@ -456,7 +456,7 @@ def create_provenance_metadata(conn: BlitzGateway, img_id: int,
if not metadata:
return None, None
software = "omero-cli-transfer"
- version = pkg_resources.get_distribution(software).version
+ version = importlib.metadata.version(software)
date_time = datetime.now().strftime("%d/%m/%Y, %H:%M:%S")
ns = 'openmicroscopy.org/cli/transfer'
curr_user = conn.getUser().getName()
@@ -506,6 +506,7 @@ def create_objects(folder, filelist):
if img not in (targets):
continue
img_path = os.path.join(os.getcwd(), folder, img)
+ print(f"checking {img_path} for OMERO targets...")
cmd = ["omero", 'import', '-f', img_path, "\n"]
res = cli.popen(cmd, stdout=PIPE, stderr=DEVNULL)
std = res.communicate()
@@ -644,7 +645,7 @@ def create_path_xml(target):
def create_prepare_metadata(ann_id):
software = "omero-cli-transfer"
- version = pkg_resources.get_distribution(software).version
+ version = importlib.metadata.version(software)
date_time = datetime.now().strftime("%d/%m/%Y, %H:%M:%S")
ns = 'openmicroscopy.org/cli/transfer/prepare'
md_dict: Dict[str, Any] = {}
@@ -988,8 +989,7 @@ def populate_xml(datatype: str, id: int, filepath: str, conn: BlitzGateway,
return ome, path_id_dict
-def populate_xml_folder(folder: str, filelist: bool, conn: BlitzGateway,
- session: str) -> Tuple[OME, dict]:
+def populate_xml_folder(folder: str, filelist: bool) -> Tuple[OME, dict]:
ome = OME()
images, plates, annotations = create_objects(folder, filelist)
ome.images = images
@@ -1096,7 +1096,7 @@ def populate_figures(ome: OME, conn: BlitzGateway, filepath: str):
binary_file=binaryfile)
filepath_ann, ref = create_figure_annotations(f.id)
ome.structured_annotations.append(filepath_ann)
- f.annotation_ref.append(ref)
+ f.annotation_refs.append(ref)
ome.structured_annotations.append(f)
else:
os.remove(filepath)
diff --git a/src/omero_cli_transfer.py b/src/omero_cli_transfer.py
index 40c5706..7a0ef67 100644
--- a/src/omero_cli_transfer.py
+++ b/src/omero_cli_transfer.py
@@ -308,7 +308,6 @@ def unpack(self, args):
""" Implements the 'unpack' command """
self.__unpack(args)
- @gateway_required
def prepare(self, args):
""" Implements the 'prepare' command """
self.__prepare(args)
@@ -564,16 +563,16 @@ def __pack(self, args):
are located
image_filenames_mapping: dict that maps image ids to filenames
"""
- from pkg_resources import iter_entry_points
- entry_points = []
- for p in iter_entry_points(group="omero_cli_transfer.pack.plugin"):
+ from importlib.metadata import entry_points
+ entrypoints = []
+ for p in entry_points(group="omero_cli_transfer.pack.plugin"):
if p.name == args.plugin:
- entry_points.append(p.load())
- if len(entry_points) == 0:
+ entrypoints.append(p.load())
+ if len(entrypoints) == 0:
raise ValueError(f"Pack plugin {args.plugin} not found")
else:
- assert len(entry_points) == 1
- pack_plugin_func = entry_points[0]
+ assert len(entrypoints) == 1
+ pack_plugin_func = entrypoints[0]
pack_plugin_func(
ome_object=obj,
destination_path=Path(tar_path),
@@ -795,8 +794,7 @@ def _make_image_map(self, source_map: dict, dest_map: dict,
return imgmap
def __prepare(self, args):
- populate_xml_folder(args.folder, args.filelist, self.gateway,
- self.session)
+ populate_xml_folder(args.folder, args.filelist)
return
diff --git a/test/data/prepare/transfer.xml b/test/data/prepare/transfer.xml
index 706a391..9cf08d1 100644
--- a/test/data/prepare/transfer.xml
+++ b/test/data/prepare/transfer.xml
@@ -5,80 +5,108 @@
-
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
- default-plate&plates=1.fake
-
-
+
- omero-cli-transfer
- 0.6.0
- 08/08/2023, 13:51:49
+
+ default-plate&plates=1.fake
+
-
-
- default-plate&plates=1.fake
-
-
- test_pyramid.ome.tif
-
-
+
+
- omero-cli-transfer
- 0.6.0
- 08/08/2023, 13:51:51
+
+ omero-cli-transfer
+ 1.1.1
+ 19/02/2025, 14:38:13
+
-
-
- vsi-ets-test-jpg2k.vsi
-
-
+
+
- omero-cli-transfer
- 0.6.0
- 08/08/2023, 13:51:53
+
+ default-plate&plates=1.fake
+
-
-
- vsi-ets-test-jpg2k.vsi
-
-
+
+
- omero-cli-transfer
- 0.6.0
- 08/08/2023, 13:51:53
+
+ test_pyramid.ome.tif
+
-
+
+
+
+
+ omero-cli-transfer
+ 1.1.1
+ 19/02/2025, 14:38:15
+
+
+
+
+
+
+ vsi-ets-test-jpg2k.vsi
+
+
+
+
+
+
+ omero-cli-transfer
+ 1.1.1
+ 19/02/2025, 14:38:17
+
+
+
+
+
+
+ vsi-ets-test-jpg2k.vsi
+
+
+
+
+
+
+ omero-cli-transfer
+ 1.1.1
+ 19/02/2025, 14:38:17
+
+
+
diff --git a/test/integration/test_prepare.py b/test/integration/test_prepare.py
index d3b6628..20ff28d 100644
--- a/test/integration/test_prepare.py
+++ b/test/integration/test_prepare.py
@@ -17,7 +17,6 @@
from ome_types.model.map import M, Map
from uuid import uuid4
-
import ezomero
import pytest
import os
@@ -39,6 +38,7 @@ def setup_method(self, method):
self.args += ["transfer"]
self.gw = BlitzGateway(client_obj=self.client)
self.session = self.client.getSessionId()
+ self.cli.loadplugins()
def delete_all(self):
pjs = self.gw.getObjects("Project")
@@ -79,6 +79,22 @@ def test_non_existing_folder(self):
with pytest.raises(ValueError):
self.cli.invoke(self.args, strict=True)
+ def test_dummy_prepare(self):
+ folder = Path(TEST_FOLDERS[0])
+ if Path(folder / 'transfer.xml').exists():
+ print('transfer.xml exists! deleting.')
+ os.remove(str(folder / 'transfer.xml'))
+ args = self.args + ["prepare", str(folder)]
+ self.cli.invoke(args, strict=True)
+ assert Path(folder / 'transfer.xml').exists()
+ assert os.path.getsize(str(folder / 'transfer.xml')) > 0
+ args = self.args + ["unpack", "--folder", str(folder)]
+ with pytest.raises(KeyError):
+ self.cli.invoke(args, strict=True)
+ self.delete_all()
+ if Path(folder / 'transfer.xml').exists():
+ os.remove(str(folder / 'transfer.xml'))
+
@pytest.mark.parametrize('folder', sorted(TEST_FOLDERS))
def test_prepare_clean(self, folder):
folder = Path(folder)