From 72a36391af9931e9f863d158a74d43fc7e31f58f Mon Sep 17 00:00:00 2001 From: chStaiger Date: Fri, 30 Aug 2024 20:46:28 +0200 Subject: [PATCH 1/9] Notebooks (#260) * rewording, using new func of IrodsPaths * typo * remove last line * using IrodsPaths * Path.home * Use IrodsPath.meta * upgrade to irods 4.3.3 * upgrade to irods 4.3.3 * setup file * remove output --------- Co-authored-by: Staiger, Christine --- docker/irods_catalog_provider/Dockerfile | 49 +++++++---- .../irods_catalog_provider/setup-4.3.3.input | 29 +++++++ .../environments/plain-irods/config.toml | 2 +- tutorials/00-FirstSteps.ipynb | 53 ++++++++---- tutorials/01-Setup-and-connect.ipynb | 12 +-- tutorials/02-iRODS-paths.ipynb | 10 +-- tutorials/03-Working-with-data.ipynb | 82 ++++++++++--------- tutorials/05-Data-Sharing.ipynb | 2 +- tutorials/06-Data-sync.ipynb | 12 +-- tutorials/07-Streaming-iRODS-data.ipynb | 25 ++---- 10 files changed, 156 insertions(+), 120 deletions(-) create mode 100644 docker/irods_catalog_provider/setup-4.3.3.input diff --git a/docker/irods_catalog_provider/Dockerfile b/docker/irods_catalog_provider/Dockerfile index 07f453ee..fcda9567 100644 --- a/docker/irods_catalog_provider/Dockerfile +++ b/docker/irods_catalog_provider/Dockerfile @@ -1,33 +1,46 @@ FROM ubuntu:22.04 -ARG os_name=jammy ENV DEBIAN_FRONTEND=noninteractive -ARG ubuntu_name=focal -RUN apt-get update -RUN apt-get install -y lsb-release gnupg wget sudo -RUN apt-get clean && \ +RUN apt-get update && \ + apt-get install -y \ + apt-transport-https \ + gnupg \ + wget \ + && \ + apt-get clean && \ rm -rf /var/lib/apt/lists/* /tmp/* -# IRODS SERVER PACKAGES -RUN wget -qO - https://packages.irods.org/irods-signing-key.asc | sudo apt-key add - -RUN sudo rm -rf /etc/apt/sources.list.d/renci-irods.list -RUN sudo echo "deb [arch=amd64] https://packages.irods.org/apt/ $(lsb_release -sc) main" |sudo tee /etc/apt/sources.list.d/renci-irods.list +RUN wget -qO - https://packages.irods.org/irods-signing-key.asc | apt-key add - && \ + echo "deb [arch=amd64] https://packages.irods.org/apt/ jammy main" | tee /etc/apt/sources.list.d/renci-irods.list -RUN apt-get update -RUN apt-get install -y python3 unixodbc -RUN apt-get clean && \ +RUN apt-get update && \ + apt-get install -y \ + libcurl4-gnutls-dev \ + python3 \ + python3-distro \ + python3-jsonschema \ + python3-pip \ + python3-psutil \ + python3-requests \ + rsyslog \ + unixodbc \ + && \ + apt-get clean && \ rm -rf /var/lib/apt/lists/* /tmp/* -ARG irods_version=4.3.2 -ARG irods_package_version_suffix=-0~${os_name} +ARG irods_version=4.3.3 +ARG irods_package_version_suffix=-0~jammy ARG irods_package_version=${irods_version}${irods_package_version_suffix} -#ARG irods_resource_plugin_version=${irods_version}.0${irods_package_version_suffix} +ARG irods_package_plugin_version_suffix=-0+${irods_version}~jammy RUN apt-get update && \ - apt-get install -y irods-database-plugin-postgres=$irods_package_version -RUN apt-get install irods-server=$irods_package_version -RUN apt-get clean && \ + apt-get install -y \ + irods-database-plugin-postgres=${irods_package_version} \ + irods-runtime=${irods_package_version} \ + irods-server=${irods_package_version} \ + && \ + apt-get clean && \ rm -rf /var/lib/apt/lists/* /tmp/* COPY setup-${irods_version}.input / diff --git a/docker/irods_catalog_provider/setup-4.3.3.input b/docker/irods_catalog_provider/setup-4.3.3.input new file mode 100644 index 00000000..8c6c0b70 --- /dev/null +++ b/docker/irods_catalog_provider/setup-4.3.3.input @@ -0,0 +1,29 @@ + + + + +irods-catalog +5432 +ICAT +irods +y +testpassword + +y +demoResc + +tempZone +1247 +20000 +20199 +1248 + +rods +y +TEMPORARY_ZONE_KEY +32_byte_server_negotiation_key__ +32_byte_server_control_plane_key +rods + + + diff --git a/docker/irods_client/environments/plain-irods/config.toml b/docker/irods_client/environments/plain-irods/config.toml index 4c4046b1..c9956096 100644 --- a/docker/irods_client/environments/plain-irods/config.toml +++ b/docker/irods_client/environments/plain-irods/config.toml @@ -1,5 +1,5 @@ password = "rods" -server_version = "4.3.2" +server_version = "4.3.3" can_write_pam_pass = false has_cached_pw = true resources = ["demoResc", "resc2"] diff --git a/tutorials/00-FirstSteps.ipynb b/tutorials/00-FirstSteps.ipynb index 95ed1ba3..0610cab8 100644 --- a/tutorials/00-FirstSteps.ipynb +++ b/tutorials/00-FirstSteps.ipynb @@ -313,8 +313,7 @@ "metadata": {}, "outputs": [], "source": [ - "obj_path = irods_path.joinpath(\"demofile.txt\")\n", - "obj = obj_path.dataobject" + "obj_path = irods_path.joinpath(\"demofile.txt\")" ] }, { @@ -322,7 +321,7 @@ "id": "b8f0d6e4", "metadata": {}, "source": [ - "Some system metadata of the object:" + "We can retrieve the system metadata of the object through its path:" ] }, { @@ -332,11 +331,29 @@ "metadata": {}, "outputs": [], "source": [ - "print('data object name\\t', obj.name)\n", - "print('data object path\\t', obj.path)\n", - "print('data object size\\t', obj.size)\n", - "print('data object checksum\\t', obj.checksum)\n", - "print('data replicas\\t', obj_replicas(obj))" + "print('data object name\\t', obj_path.name)\n", + "print('data object path\\t', str(obj_path))\n", + "print('data object size\\t', obj_path.size)\n", + "print('data object checksum\\t', obj_path.checksum)" + ] + }, + { + "cell_type": "markdown", + "id": "0ba8f2b2", + "metadata": {}, + "source": [ + "To retrieve the content of a data object or see on which storage resources the data is stored, we need to access the dataobject:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "554065f5", + "metadata": {}, + "outputs": [], + "source": [ + "obj = obj_path.dataobject\n", + "print('data replicas\\t', obj_replicas(obj)" ] }, { @@ -448,8 +465,8 @@ "metadata": {}, "outputs": [], "source": [ - "obj = irods_path.joinpath(\"demofile.txt\")\n", - "print(obj.meta)" + "obj_path = irods_path.joinpath(\"demofile.txt\")\n", + "print(obj_path.meta)" ] }, { @@ -467,9 +484,9 @@ "metadata": {}, "outputs": [], "source": [ - "obj.meta.add('NewKey', 'NewValue')\n", - "obj.meta.add('NewKey', 'AnotherValue')\n", - "print(obj.meta)" + "obj_path.meta.add('NewKey', 'NewValue')\n", + "obj_path.meta.add('NewKey', 'AnotherValue')\n", + "print(obj_path.meta)" ] }, { @@ -479,8 +496,8 @@ "metadata": {}, "outputs": [], "source": [ - "obj.meta.delete('NewKey', 'NewValue')\n", - "print(obj.meta)" + "obj_path.meta.delete('NewKey', 'NewValue')\n", + "print(obj_path.meta)" ] }, { @@ -498,8 +515,8 @@ "metadata": {}, "outputs": [], "source": [ - "obj.meta.set(\"NewKey\", \"YetAnotherValue\")\n", - "print(obj.meta)" + "obj_path.meta.set(\"NewKey\", \"YetAnotherValue\")\n", + "print(obj_path.meta)" ] }, { @@ -518,7 +535,7 @@ "metadata": {}, "outputs": [], "source": [ - "for md in obj.meta:\n", + "for md in obj_path.meta:\n", " print(md.name, \"has value\", md.value)" ] }, diff --git a/tutorials/01-Setup-and-connect.ipynb b/tutorials/01-Setup-and-connect.ipynb index 27a407cf..57b5f321 100644 --- a/tutorials/01-Setup-and-connect.ipynb +++ b/tutorials/01-Setup-and-connect.ipynb @@ -118,16 +118,6 @@ "The `.` shows that it is a hidden folder, which can be quite difficult to create in Windows. Below we provide a python code snippet which creates the folder:" ] }, - { - "cell_type": "code", - "execution_count": null, - "id": "5196436f", - "metadata": {}, - "outputs": [], - "source": [ - "Path.mkdir" - ] - }, { "cell_type": "code", "execution_count": null, @@ -431,7 +421,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.10.13" + "version": "3.9.18" } }, "nbformat": 4, diff --git a/tutorials/02-iRODS-paths.ipynb b/tutorials/02-iRODS-paths.ipynb index cefae399..1e946eac 100644 --- a/tutorials/02-iRODS-paths.ipynb +++ b/tutorials/02-iRODS-paths.ipynb @@ -556,14 +556,6 @@ "print(irods_path.size)" ] }, - { - "cell_type": "markdown", - "id": "0d0bf7fd", - "metadata": {}, - "source": [ - "We can also retrieve the checksum if the item behind the iRODS path is a data object `irods_path.checksum`." - ] - }, { "cell_type": "code", "execution_count": null, @@ -589,7 +581,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.10.13" + "version": "3.9.18" } }, "nbformat": 4, diff --git a/tutorials/03-Working-with-data.ipynb b/tutorials/03-Working-with-data.ipynb index 5fcc620c..1eada004 100644 --- a/tutorials/03-Working-with-data.ipynb +++ b/tutorials/03-Working-with-data.ipynb @@ -36,9 +36,7 @@ }, { "cell_type": "code", - "execution_count": null, - "id": "e5ef4e10", "metadata": {}, "outputs": [], @@ -65,7 +63,6 @@ }, { "cell_type": "code", - "execution_count": null, "id": "716769b9", "metadata": {}, @@ -75,10 +72,10 @@ "from ibridges.data_operations import create_collection\n", "irods_path = IrodsPath(session, '~')\n", "print(\"Current working location:\", irods_path)\n", - "irods_coll_path = irods_path.joinpath('demo')\n", - "print(\"New collection name:\", irods_coll_path)\n", - "coll = create_collection(session, irods_coll_path)\n", - "print(\"New collection is created:\", irods_coll_path.collection_exists())" + "coll_path = irods_path.joinpath('demo')\n", + "print(\"New collection name:\", coll_path)\n", + "coll = create_collection(session, coll_path)\n", + "print(\"New collection is created:\", coll_path.collection_exists())" ] }, { @@ -96,14 +93,13 @@ }, { "cell_type": "code", - "execution_count": null, "id": "cbe34a24", "metadata": {}, "outputs": [], "source": [ "from pathlib import Path\n", - "local_file = Path.expanduser(Path('~')).joinpath('demofile.txt')\n", + "local_file = Path.home().joinpath('demofile.txt')\n", "if local_file.is_file():\n", " print('You are good to follow the next steps!')\n", "else:\n", @@ -120,14 +116,13 @@ }, { "cell_type": "code", - "execution_count": null, "id": "f6be04e0", "metadata": {}, "outputs": [], "source": [ "from ibridges import upload\n", - "upload(session, local_file, irods_coll_path, overwrite=True)" + "ops = upload(session, local_file, coll_path, overwrite=True)" ] }, { @@ -141,19 +136,18 @@ "\n", "\n", "\n", - "How can we now be sure that the file is uploaded? Remember, when we created the new collection `demo`, we created a python object called `coll`. Let's inspect that:" + "How can we now be sure that the file is uploaded? Let's inspect the collection:" ] }, { "cell_type": "code", - "execution_count": null, "id": "91b73ddd", "metadata": {}, "outputs": [], "source": [ - "print(coll.name)\n", - "print(coll.path)" + "print(coll_path.name)\n", + "print(coll_path.collection_exists())" ] }, { @@ -161,19 +155,26 @@ "id": "e41763a3", "metadata": {}, "source": [ - "Apart from information about its name and its path, a collection also carries a list of `subcollections` and `data_objects`." + "We can get the list of `subcollections` and `data_objects` behind an `IrodsPath` like below." ] }, { "cell_type": "code", - "execution_count": null, "id": "48777591", "metadata": {}, "outputs": [], "source": [ - "print(f'Current subcollections in {coll.path}:', coll.subcollections)\n", - "print(f'Current data objects in {coll.path}:', coll.data_objects)" + "print(f'Current subcollections in {str(coll_path)}:', coll_path.collection.subcollections)\n", + "print(f'Current data objects in {str(coll_path)}:', coll_path.collection.data_objects)" + ] + }, + { + "cell_type": "markdown", + "id": "7897fc6d", + "metadata": {}, + "source": [ + "**Note,** that if the `IrodsPath` points to a data object you need to use `path.dataobject` tob get the object the path points to. We will see that later on in the tutorial." ] }, { @@ -194,13 +195,12 @@ }, { "cell_type": "code", - "execution_count": null, "id": "e7e770d3", "metadata": {}, "outputs": [], "source": [ - "local_path = Path.expanduser(Path('~')).joinpath('Downloads')\n", + "local_path = Path.home().joinpath('Downloads')\n", "assert local_path.is_dir()" ] }, @@ -212,7 +212,7 @@ "outputs": [], "source": [ "from ibridges import download\n", - "download(session, irods_coll_path.joinpath('demofile.txt'), local_path, dry_run=True, overwrite=True)" + "ops = download(session, coll_path.joinpath('demofile.txt'), local_path, dry_run=True, overwrite=True)" ] }, { @@ -230,7 +230,7 @@ "metadata": {}, "outputs": [], "source": [ - "download(session, irods_coll_path.joinpath('demofile.txt'), local_path)" + "ops = download(session, coll_path.joinpath('demofile.txt'), local_path)" ] }, { @@ -248,7 +248,7 @@ "metadata": {}, "outputs": [], "source": [ - "download(session, irods_coll_path.joinpath('demofile.txt'), local_path)" + "download(session, coll_path.joinpath('demofile.txt'), local_path)" ] }, { @@ -270,7 +270,15 @@ "metadata": {}, "outputs": [], "source": [ - "download(session, irods_coll_path.joinpath('demofile.txt'), local_path, overwrite=True)" + "ops = download(session, coll_path.joinpath('demofile.txt'), local_path, overwrite=True)" + ] + }, + { + "cell_type": "markdown", + "id": "b021f026", + "metadata": {}, + "source": [ + "You also see that no data was transferred. *ibridges* comapres the source and the destination and if the data is exactly the same (checked by so-called [checksums](https://en.wikipedia.org/wiki/Checksum)) the respective data will be ommitted. In the next section we will show you, how to see beforehand, which data will be updated in a transfer." ] }, { @@ -296,7 +304,8 @@ "metadata": {}, "outputs": [], "source": [ - "download(session, irods_coll_path.joinpath('demofile.txt'), local_path, dry_run=True)" + "ops = download(session, coll_path.joinpath('demofile.txt'), local_path, dry_run=True, overwrite=True)\n", + "ops.print_summary()" ] }, { @@ -306,7 +315,7 @@ "source": [ "The dictionary will fill the lists behind the keys depending on whether you want to upload or download data. In the example above we want to download data from iRODS to our local file system. In this case only the keys `'create_dir'` and `'download'` will be populated.\n", "\n", - "For now you ignore the keys `'resc_name'` and `'options'`, they are not essential for a safe and successful data transfer." + "The `ops` are always returned, not only in a `dry-run`. they can also serve as a summary, what was changed." ] }, { @@ -332,9 +341,9 @@ "metadata": {}, "outputs": [], "source": [ - "print(f'Collection {coll.name} was created on {coll.create_time}')\n", - "print(f'The collection was last modified on {coll.modify_time}')\n", - "print(f'The collection was uploaded by and is owned by {coll.owner_name}')" + "print(f'Collection {coll_path.name} was created on {coll_path.collection.create_time}')\n", + "print(f'The collection was last modified on {coll_path.collection.modify_time}')\n", + "print(f'The collection was uploaded by and is owned by {coll_path.collection.owner_name}')" ] }, { @@ -352,8 +361,7 @@ "metadata": {}, "outputs": [], "source": [ - "obj = IrodsPath(session, irods_coll_path.joinpath('demofile.txt')).dataobject # use .collection for collections\n", - "print(obj)" + "obj_path = IrodsPath(session, coll_path.joinpath('demofile.txt'))" ] }, { @@ -371,11 +379,11 @@ "metadata": {}, "outputs": [], "source": [ - "print(f'Data object {obj.name} was created on {obj.create_time}')\n", - "print(f'Data object {obj.name} full path in iRODS is {obj.path}')\n", - "print(f'The data object was created on {obj.create_time}')\n", - "print(f'The data object was last modified on {obj.modify_time}')\n", - "print(f'The data object was uploaded by and is owned by {obj.owner_name}')" + "print(f'Data object {obj_path.name} was created on {obj_path.dataobject.create_time}')\n", + "print(f'Data object {obj_path.name} full path in iRODS is {obj_path}')\n", + "print(f'The data object was created on {obj_path.dataobject.create_time}')\n", + "print(f'The data object was last modified on {obj_path.dataobject.modify_time}')\n", + "print(f'The data object was uploaded by and is owned by {obj_path.dataobject.owner_name}')" ] }, { diff --git a/tutorials/05-Data-Sharing.ipynb b/tutorials/05-Data-Sharing.ipynb index aab7d004..e1a83c44 100644 --- a/tutorials/05-Data-Sharing.ipynb +++ b/tutorials/05-Data-Sharing.ipynb @@ -351,7 +351,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.10.13" + "version": "3.9.18" } }, "nbformat": 4, diff --git a/tutorials/06-Data-sync.ipynb b/tutorials/06-Data-sync.ipynb index 3e2ac73b..33adaefd 100644 --- a/tutorials/06-Data-sync.ipynb +++ b/tutorials/06-Data-sync.ipynb @@ -13,7 +13,7 @@ "id": "dfb329bc", "metadata": {}, "source": [ - "`sync` synchronizes the data between a local copy (local file system) and the copy stored in iRODS. It compares path, size and optionally checksum of local and remote files to determine whether they have changed and should be synchronized. It creates files or overwrites older copies, but does not delete files from the target location when they have been deleted from the source.\n", + "`sync` synchronizes the data between a local copy (local file system) and the copy stored in iRODS. It compares the checksum of local and remote files to determine whether they have changed and should be synchronized. It creates files or overwrites older copies, but does not delete files from the target location when they have been deleted from the source.\n", "\n", "The command can be in one of the two modes: synchronization of data from the client's local file system to iRODS, or from iRODS to the local file system." ] @@ -72,7 +72,7 @@ "outputs": [], "source": [ "source = IrodsPath(session, \"~\", \"Demo\")\n", - "target = Path(os.path.expanduser(\"~\"), \"Downloads/Sync\")" + "target = Path.home().joinpath(\"Downloads/Sync\")" ] }, { @@ -129,7 +129,7 @@ "metadata": {}, "outputs": [], "source": [ - "changes = sync(\n", + "ops = sync(\n", " session=session,\n", " source=source,\n", " target=target,\n", @@ -137,7 +137,7 @@ " dry_run=dry_run,\n", " copy_empty_folders=copy_empty_folders\n", ")\n", - "pprint(changes)" + "ops.print_summary()" ] }, { @@ -165,7 +165,7 @@ "metadata": {}, "outputs": [], "source": [ - "changes = sync(\n", + "ops = sync(\n", " session=session,\n", " source=source,\n", " target=target,\n", @@ -199,7 +199,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.10.13" + "version": "3.9.18" } }, "nbformat": 4, diff --git a/tutorials/07-Streaming-iRODS-data.ipynb b/tutorials/07-Streaming-iRODS-data.ipynb index 14df013b..79962118 100644 --- a/tutorials/07-Streaming-iRODS-data.ipynb +++ b/tutorials/07-Streaming-iRODS-data.ipynb @@ -135,7 +135,6 @@ "for irods_path in data:\n", " with irods_path.open('r') as handle:\n", " text = text + handle.read().decode()" - ] }, { @@ -240,21 +239,9 @@ "metadata": {}, "outputs": [], "source": [ - "from ibridges import MetaData\n", "from datetime import datetime" ] }, - { - "cell_type": "code", - "execution_count": null, - "id": "01e832d5", - "metadata": {}, - "outputs": [], - "source": [ - "meta = MetaData(irods_path.dataobject)\n", - "print(meta)" - ] - }, { "cell_type": "code", "execution_count": null, @@ -272,11 +259,11 @@ "metadata": {}, "outputs": [], "source": [ - "meta.add('ISEARCH', KEY + '==' + VALUE)\n", - "meta.add('prov:SoftwareAgent', 'wordcount.py')\n", - "meta.add('prov:wasDerivedFrom', str(data))\n", - "meta.add('prov:actedOnBehalfOf', 'Christine')\n", - "meta.add('prov:generatedAtTime', datetime.now().strftime(\"%m/%d/%Y, %H:%M\"))" + "irods_path.meta.add('ISEARCH', KEY + '==' + VALUE)\n", + "irods_path.meta.add('prov:SoftwareAgent', 'wordcount.py')\n", + "irods_path.meta.add('prov:wasDerivedFrom', str(data))\n", + "irods_path.meta.add('prov:actedOnBehalfOf', 'Christine')\n", + "irods_path.meta.add('prov:generatedAtTime', datetime.now().strftime(\"%m/%d/%Y, %H:%M\"))" ] }, { @@ -286,7 +273,7 @@ "metadata": {}, "outputs": [], "source": [ - "print(meta)" + "print(irods_path.meta)" ] }, { From a5b9757c475ce844d90f598d324475c060d9ea37 Mon Sep 17 00:00:00 2001 From: chStaiger Date: Mon, 16 Sep 2024 13:55:13 +0200 Subject: [PATCH 2/9] Update README.md (#261) * Update README.md * Update README.md Co-authored-by: Terrell Russell * Update README.md * trying to fix sphinx My configuration which works locally * Update requirements.txt * Revert Update docs/requirements.txt --------- Co-authored-by: Terrell Russell --- README.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index fafdba05..98864c38 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# iBridges +# iBridges iBridges is a library for scientific programmers who are working with data in iRODS. We provide a wrapper around the [python-irodsclient](https://pypi.org/project/python-irodsclient/) to facilitate easy interaction with the iRODS server. iBridges is currently still in very active development. [![PyPI version](https://badge.fury.io/py/ibridges.svg)](https://badge.fury.io/py/ibridges) @@ -20,6 +20,8 @@ iBridges is a library for scientific programmers who are working with data in iR - Small number of dependencies (`python-irodsclient` and `tqdm`) - Safe default options when working with your data. +**iBridges** also has a graphical user interface, which you can install [here](https://github.com/chStaiger/iBridges-Gui). +

Report Bug From 444f56c2dfa61eb942d2ea7ed630ee5d25ff281b Mon Sep 17 00:00:00 2001 From: qubixes <44498096+qubixes@users.noreply.github.com> Date: Mon, 16 Sep 2024 13:56:04 +0200 Subject: [PATCH 3/9] Use older version of sphinx (#262) * Use older version of sphinx * Adjust requirements.txt --- docs/requirements.txt | 2 +- pyproject.toml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/requirements.txt b/docs/requirements.txt index 7c3f0de2..dc09223c 100644 --- a/docs/requirements.txt +++ b/docs/requirements.txt @@ -1,4 +1,4 @@ -sphinx<9.0.0 +sphinx<8.0.0 sphinx_inline_tabs sphinx-rtd-theme sphinxcontrib-napoleon diff --git a/pyproject.toml b/pyproject.toml index 390acdcd..1e616c77 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -45,7 +45,7 @@ test = [ "ruff", "mypy", "types-tqdm", - "sphinx", "sphinx-rtd-theme", "sphinxcontrib-napoleon", + "sphinx<8", "sphinx-rtd-theme", "sphinxcontrib-napoleon", "sphinx-autodoc-typehints", "sphinx_inline_tabs", "sphinx_copybutton", "ruff" ] From 70b0602e27724d3d4713df35ab84ad93c3ffab3c Mon Sep 17 00:00:00 2001 From: chStaiger Date: Tue, 24 Sep 2024 11:14:51 +0200 Subject: [PATCH 4/9] 263 timeout (#264) * Fixing connection_timeout * Fixing error messagewq * pylint * Skip too high value check and keep int check * try catch conversion to int * fix pylint too many pos args --------- Co-authored-by: Staiger, Christine --- docs/source/faq.rst | 6 +++++- ibridges/session.py | 6 ++++-- pyproject.toml | 5 ++++- 3 files changed, 13 insertions(+), 4 deletions(-) diff --git a/docs/source/faq.rst b/docs/source/faq.rst index 67e983cf..dde21eeb 100644 --- a/docs/source/faq.rst +++ b/docs/source/faq.rst @@ -49,4 +49,8 @@ This error is most likely to happen if you try to transfer a large file. The def which translates to roughly 7 hours. This should not cause issues during the actual transfer. However, if the calculation of the checksum takes more than 7 hours (if the iRODS server is busy for example, or the file is many terabytes), then you will get a network error. The checksum itself should still be created. You can increase the timeout in your `irods_environment.json` -file by adding a new entry with :code:`"connection_timeout": 99999999999,`. +file by adding a new entry with :code:`"connection_timeout":

- Report Bug + Report Bug . - Request Feature + Request Feature . - Share an idea + Share an idea . - Leave some feedback + Leave some feedback . - Ask a question + Ask a question

@@ -47,7 +48,7 @@ pip install ibridges If you want to install the unstable version to test out new features, you can install the development branch: ```bash -pip install git+https://github.com/UtrechtUniversity/iBridges.git@develop +pip install git+https://github.com/iBridges-for-iRods/iBridges.git@develop ``` ## Configuration From 4347bb35dc631cec58b00dea8ba7a020eea3d47d Mon Sep 17 00:00:00 2001 From: chStaiger Date: Tue, 8 Oct 2024 11:29:21 +0200 Subject: [PATCH 9/9] Update link to logo --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 4af9f95c..3cb195ac 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# iBridges +# iBridges iBridges is a library for scientific programmers who are working with data in iRODS. We provide a wrapper around the [python-irodsclient](https://pypi.org/project/python-irodsclient/) to facilitate easy interaction with the iRODS server. iBridges is currently still in very active development. [![PyPI version](https://badge.fury.io/py/ibridges.svg)](https://badge.fury.io/py/ibridges)