Comparing stevenvdb:main...irods:main · stevenvdb/python-irodsclient
Commits on Nov 24, 2025
-
[irods#697] Github workflows for running PRC tests
Co-authored-by: d-w-moore <dmoore@renci.org> Includes a docker compose configuration in which the PRC test suite can be run in a way representative of typical operational use, and the version of iRODS server and python interpreter that we install are also easily reconfigurable. Additionally, this affords us the opportunity to run the test suite on a client node all its own, the iRODS server being reachable only via the network.
-
[irods#502] test harness and container-based tests
A new test harness is introduced in which we construct a new container (using either Docker or podman) for each test program we run. This allows full customization of the container environment for the particular needs of each test. Accordingly, also included with the Github workflows is a full run of the PRC test suite with the iRODS server and catalog DB server running in the same container as the client. In the process of putting old tests through new rigors, faults were found and corrected in some of those tests.
-
[irods#781] modify access_time test with guaranteed passing assertions
The test now fetches the modify and access timestamps during the interval in which the replica is open, then asserts those timestamps as equal to each other, as well as that they are greater than a system-generated datetime of about two seconds prior. (This is due to some timestamps including a microseconds count whereas others do not.)
Commits on Jan 30, 2026
Commits on Feb 4, 2026
-
[irods#722] fix segfault and hung threads when signals abort a parall…
…el transfer. We now provide the abort_parallel_transfers() function, which can be used to shut down parallel PUTs and GETs in an orderly way. For its usage, see the README.md. The segmentation faults were not successfully duplicated. I believe they are likely to have happened when quitting a main process that spawned daemon threads. Note that in 3.9 (the minimum Python interpreter we now support), concurrent.futures no longer uses daemon threads, and this futures mechanism is what underlies parallel transfers in the Python client. Note that the use of os._exit, heretofore the simple application's best resort for exiting while aborting all unfinished threads (daemonic or not), is now best supplanted by the builtin exit function or sys.exit, preceded of course by the appropriate call(s) to abort_parallel_transfers.
Commits on Feb 6, 2026
-
[irods#709] preserve options when chaining object calls on obj.metadata.
(These calls are used to alter option values such as admin, timestamps, etc.) The problem in a nutshell: if d_input is the iRODSMetaCollection object referenced by obj.metadata, then d_output = d_input(opt1 = val1)(opt2 = val2) should not yield an object with opt1 returned to its default value. With the present fix, we can now expect the d_output object to be the same as if we'd computed it using the expression: d_input(opt1=val1, opt2=val2).