XRootDPyFS
XRootDPyFS is a PyFilesystem-like interface to XRootD.
XRootD protocol aims at giving high performance, scalable fault tolerant access to data repositories of many kinds. The XRootDPyFS adds a high-level interface on top of the existing Python interface (pyxrootd) and makes it easy to e.g. copy a directory in parallel or recursively remove a directory.
Further documentation is available on https://xrootdpyfs.readthedocs.io/.
Getting started
If you just want to try out the library, the easiest is to use Docker.
Build the image:
$ docker build --platform linux/amd64 -t xrootd .
Run the container and launch xrootd:
$ docker run --platform linux/amd64 -h xrootdpyfs -it xrootd bash
You will see the logs in the stdout. Next, in another shell, connect the container and fire up an ipython shell:
$ docker ps # find the container id
$ docker exec -it <container-id> bash
[xrootdpyfs@xrootdpyfs code]$ ipython
Quick examples
Here is a quick example of a file listing with the xrootd PyFilesystem integration:
>>> from xrootdpyfs import XRootDPyFS
>>> fs = XRootDPyFS("root://localhost//tmp/")
>>> fs.listdir("xrootdpyfs")
['test.txt']
Reading files:
>>> f = fs.open("xrootdpyfs/test.txt")
>>> f.read()
b'Hello XRootD!\n'
>>> f.close()
Reading files using the readtext() method:
>>> fs.readtext("xrootdpyfs/test.txt")
b'Hello XRootD!\n'
Writing files:
>>> f = fs.open("xrootdpyfs/hello.txt", "w+")
>>> f.write("World")
>>> f.close()
Writing files using the writetext() method:
>>> fs.writetext("xrootdpyfs/test.txt", "World")
Development
The easiest way to develop is to build the Docker image and mount the source code as a volume to test any code modification with a running XRootD server:
$ docker build --platform linux/amd64 -t xrootd --progress=plain .
$ docker run --platform linux/amd64 -h xrootdpyfs -it -v <absolute path to this project>:/code xrootd bash
[xrootdpyfs@xrootdpyfs code]$ xrootd
In another shell:
$ docker ps # find the container id
$ docker exec -it <container-id> bash
[xrootdpyfs@xrootdpyfs code]$ python -m pytest -vvv tests
If you want to test a specific version of xrootd, run:
$ docker build --platform linux/amd64 --build-arg xrootd_version=4.12.7 -t xrootd --progress=plain .
Documentation
Documentation is available at <http://xrootdpyfs.readthedocs.io/> or can be build using Sphinx:
pip install Sphinx python setup.py build_sphinx
Testing
Running the tests are most easily done using docker:
$ docker build --platform linux/amd64 -t xrootd . && docker run --platform linux/amd64 -h xrootdpyfs -it xrootd
Metadata
Release files for xrootdpyfs 3.0.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| xrootdpyfs-3.0.1.tar.gz | 26.8 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| xrootdpyfs-3.0.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 57.0 kB
Release files / xrootdpyfs-3.0.1.tar.gz
| Download URL | xrootdpyfs-3.0.1.tar.gz |
|---|---|
| Size | 26.8 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
5979eff01192c747a6a05bbf74def08679e173c3cf9223c68187294aefe4f4b3
|
|
BLAKE2b-256 checksum How to use checksums |
d7c54c95c94904be4d40285581681ea466d29aaa6810a75b0b7fa527967e8f42
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Release files / xrootdpyfs-3.0.1-py3-none-any.whl
| Download URL | xrootdpyfs-3.0.1-py3-none-any.whl |
|---|---|
| Size | 30.2 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
839c7db4fa202a18e89e23eda1148143522fd703e01c4833889a5646b231e2b9
|
|
BLAKE2b-256 checksum How to use checksums |
3a51bd0c6481357c3e9724021cb81c5d2e9b9b9bddae057c0efbac16ae476705
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|