xrootdpyfs 2.0.0__tar.gz → 3.0.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- xrootdpyfs-3.0.0/.gitignore +58 -0
- {xrootdpyfs-2.0.0 → xrootdpyfs-3.0.0}/PKG-INFO +24 -24
- {xrootdpyfs-2.0.0 → xrootdpyfs-3.0.0}/README.rst +7 -10
- xrootdpyfs-3.0.0/pyproject.toml +62 -0
- {xrootdpyfs-2.0.0 → xrootdpyfs-3.0.0}/xrootdpyfs/__init__.py +6 -23
- xrootdpyfs-3.0.0/xrootdpyfs/_pyfs_compat.py +1645 -0
- {xrootdpyfs-2.0.0 → xrootdpyfs-3.0.0}/xrootdpyfs/env.py +3 -8
- {xrootdpyfs-2.0.0 → xrootdpyfs-3.0.0}/xrootdpyfs/fs.py +78 -32
- {xrootdpyfs-2.0.0 → xrootdpyfs-3.0.0}/xrootdpyfs/utils.py +3 -8
- {xrootdpyfs-2.0.0 → xrootdpyfs-3.0.0}/xrootdpyfs/xrdfile.py +21 -14
- xrootdpyfs-2.0.0/.dockerignore +0 -11
- xrootdpyfs-2.0.0/.editorconfig +0 -31
- xrootdpyfs-2.0.0/.git-blame-ignore-revs +0 -1
- xrootdpyfs-2.0.0/.github/workflows/pypi-publish.yml +0 -41
- xrootdpyfs-2.0.0/.github/workflows/tests.yml +0 -42
- xrootdpyfs-2.0.0/CHANGES +0 -67
- xrootdpyfs-2.0.0/CONTRIBUTING.rst +0 -39
- xrootdpyfs-2.0.0/MANIFEST.in +0 -28
- xrootdpyfs-2.0.0/docs/Makefile +0 -192
- xrootdpyfs-2.0.0/docs/conf.py +0 -312
- xrootdpyfs-2.0.0/docs/index.rst +0 -48
- xrootdpyfs-2.0.0/docs/requirements.txt +0 -1
- xrootdpyfs-2.0.0/run-docker.sh +0 -1
- xrootdpyfs-2.0.0/run-tests.sh +0 -18
- xrootdpyfs-2.0.0/setup.cfg +0 -64
- xrootdpyfs-2.0.0/setup.py +0 -13
- xrootdpyfs-2.0.0/tests/conftest.py +0 -28
- xrootdpyfs-2.0.0/tests/data/afolder/afile.txt +0 -0
- xrootdpyfs-2.0.0/tests/data/bfolder/bfile.txt +0 -0
- xrootdpyfs-2.0.0/tests/data/binary.dat +0 -0
- xrootdpyfs-2.0.0/tests/data/multiline.txt +0 -8
- xrootdpyfs-2.0.0/tests/data/testa.txt +0 -1
- xrootdpyfs-2.0.0/tests/perf.py +0 -127
- xrootdpyfs-2.0.0/tests/test_env.py +0 -42
- xrootdpyfs-2.0.0/tests/test_fs.py +0 -809
- xrootdpyfs-2.0.0/tests/test_fs_extras.py +0 -29
- xrootdpyfs-2.0.0/tests/test_opener.py +0 -22
- xrootdpyfs-2.0.0/tests/test_utils.py +0 -62
- xrootdpyfs-2.0.0/tests/test_xrdfile.py +0 -1277
- xrootdpyfs-2.0.0/tests/test_xrdflags.py +0 -138
- xrootdpyfs-2.0.0/xrootdpyfs/opener.py +0 -51
- xrootdpyfs-2.0.0/xrootdpyfs.egg-info/PKG-INFO +0 -154
- xrootdpyfs-2.0.0/xrootdpyfs.egg-info/SOURCES.txt +0 -46
- xrootdpyfs-2.0.0/xrootdpyfs.egg-info/dependency_links.txt +0 -1
- xrootdpyfs-2.0.0/xrootdpyfs.egg-info/entry_points.txt +0 -4
- xrootdpyfs-2.0.0/xrootdpyfs.egg-info/not-zip-safe +0 -1
- xrootdpyfs-2.0.0/xrootdpyfs.egg-info/requires.txt +0 -8
- xrootdpyfs-2.0.0/xrootdpyfs.egg-info/top_level.txt +0 -1
- {xrootdpyfs-2.0.0 → xrootdpyfs-3.0.0}/AUTHORS +0 -0
- {xrootdpyfs-2.0.0 → xrootdpyfs-3.0.0}/LICENSE +0 -0
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
# Byte-compiled / optimized / DLL files
|
|
2
|
+
__pycache__/
|
|
3
|
+
*.py[cod]
|
|
4
|
+
|
|
5
|
+
# C extensions
|
|
6
|
+
*.so
|
|
7
|
+
|
|
8
|
+
# Distribution / packaging
|
|
9
|
+
.Python
|
|
10
|
+
env/
|
|
11
|
+
build/
|
|
12
|
+
develop-eggs/
|
|
13
|
+
dist/
|
|
14
|
+
downloads/
|
|
15
|
+
eggs/
|
|
16
|
+
.eggs/
|
|
17
|
+
lib/
|
|
18
|
+
lib64/
|
|
19
|
+
parts/
|
|
20
|
+
sdist/
|
|
21
|
+
var/
|
|
22
|
+
*.egg-info/
|
|
23
|
+
.installed.cfg
|
|
24
|
+
*.egg
|
|
25
|
+
|
|
26
|
+
# PyInstaller
|
|
27
|
+
# Usually these files are written by a python script from a template
|
|
28
|
+
# before PyInstaller builds the exe, so as to inject date/other infos into it.
|
|
29
|
+
*.manifest
|
|
30
|
+
*.spec
|
|
31
|
+
|
|
32
|
+
# Installer logs
|
|
33
|
+
pip-log.txt
|
|
34
|
+
pip-delete-this-directory.txt
|
|
35
|
+
|
|
36
|
+
# Unit test / coverage reports
|
|
37
|
+
htmlcov/
|
|
38
|
+
.tox/
|
|
39
|
+
.coverage
|
|
40
|
+
.coverage.*
|
|
41
|
+
.cache
|
|
42
|
+
nosetests.xml
|
|
43
|
+
coverage.xml
|
|
44
|
+
*,cover
|
|
45
|
+
|
|
46
|
+
# Translations
|
|
47
|
+
*.mo
|
|
48
|
+
*.pot
|
|
49
|
+
|
|
50
|
+
# Django stuff:
|
|
51
|
+
*.log
|
|
52
|
+
|
|
53
|
+
# Sphinx documentation
|
|
54
|
+
docs/_build/
|
|
55
|
+
|
|
56
|
+
# PyBuilder
|
|
57
|
+
target/
|
|
58
|
+
uv.lock
|
|
@@ -1,22 +1,27 @@
|
|
|
1
|
-
Metadata-Version: 2.
|
|
1
|
+
Metadata-Version: 2.5
|
|
2
2
|
Name: xrootdpyfs
|
|
3
|
-
Version:
|
|
4
|
-
Summary: XRootDPyFS is a PyFilesystem interface for XRootD.
|
|
5
|
-
|
|
6
|
-
Author: CERN
|
|
7
|
-
|
|
8
|
-
License:
|
|
3
|
+
Version: 3.0.0
|
|
4
|
+
Summary: XRootDPyFS is a PyFilesystem-like interface for XRootD.
|
|
5
|
+
Project-URL: Repository, https://github.com/inveniosoftware/xrootdpyfs
|
|
6
|
+
Author-email: CERN <info@inveniosoftware.org>
|
|
7
|
+
License-Expression: BSD-3-Clause
|
|
8
|
+
License-File: AUTHORS
|
|
9
|
+
License-File: LICENSE
|
|
9
10
|
Keywords: xrootdpyfs
|
|
10
|
-
Platform: any
|
|
11
|
-
Classifier: Programming Language :: Python :: 3
|
|
12
11
|
Classifier: Development Status :: 5 - Production/Stable
|
|
13
12
|
Classifier: Intended Audience :: Developers
|
|
14
13
|
Classifier: License :: OSI Approved :: BSD License
|
|
14
|
+
Classifier: Programming Language :: Python :: 3
|
|
15
15
|
Classifier: Topic :: Utilities
|
|
16
|
-
Requires-Python: >=3.
|
|
16
|
+
Requires-Python: >=3.7
|
|
17
|
+
Requires-Dist: xrootd<6.0.0,>=5.0.0
|
|
17
18
|
Provides-Extra: tests
|
|
18
|
-
|
|
19
|
-
|
|
19
|
+
Requires-Dist: mock>=4.0.0; extra == 'tests'
|
|
20
|
+
Requires-Dist: pytest-black>=0.6.0; extra == 'tests'
|
|
21
|
+
Requires-Dist: pytest-invenio<5.0.0,>=4.0.0; extra == 'tests'
|
|
22
|
+
Requires-Dist: pytest-mock>=1.6.0; extra == 'tests'
|
|
23
|
+
Requires-Dist: sphinx>=4.5.0; extra == 'tests'
|
|
24
|
+
Description-Content-Type: text/x-rst
|
|
20
25
|
|
|
21
26
|
============
|
|
22
27
|
XRootDPyFS
|
|
@@ -30,13 +35,19 @@ License-File: AUTHORS
|
|
|
30
35
|
:target: https://crate.io/packages/xrootdpyfs/
|
|
31
36
|
|
|
32
37
|
|
|
33
|
-
XRootDPyFS is a PyFilesystem interface to XRootD.
|
|
38
|
+
XRootDPyFS is a PyFilesystem-like interface to XRootD.
|
|
34
39
|
|
|
35
40
|
XRootD protocol aims at giving high performance, scalable fault tolerant access
|
|
36
41
|
to data repositories of many kinds. The XRootDPyFS adds a high-level interface
|
|
37
42
|
on top of the existing Python interface (pyxrootd) and makes it easy to e.g.
|
|
38
43
|
copy a directory in parallel or recursively remove a directory.
|
|
39
44
|
|
|
45
|
+
.. important::
|
|
46
|
+
Since version 3.0.0, the dependency on PyFilesystem2 `pyfs` has been removed. The
|
|
47
|
+
`XRootDPyFS` class is now a standalone implementation of the PyFilesystem2.
|
|
48
|
+
The necessary classes and utilities have been added to this package.
|
|
49
|
+
The only breaking change is the removal for the support of the Opener.
|
|
50
|
+
|
|
40
51
|
Further documentation is available on https://xrootdpyfs.readthedocs.io/.
|
|
41
52
|
|
|
42
53
|
Getting started
|
|
@@ -77,15 +88,6 @@ integration:
|
|
|
77
88
|
>>> fs.listdir("xrootdpyfs")
|
|
78
89
|
['test.txt']
|
|
79
90
|
|
|
80
|
-
Or, alternatively using the PyFilesystem opener (note the first
|
|
81
|
-
``import xrootdpyfs`` is required to ensure the XRootDPyFS opener is registered):
|
|
82
|
-
|
|
83
|
-
>>> import xrootdpyfs
|
|
84
|
-
>>> from fs.opener import open_fs
|
|
85
|
-
>>> fs = open_fs("root://localhost//tmp/")
|
|
86
|
-
>>> fs.listdir("xrootdpyfs")
|
|
87
|
-
['test.txt']
|
|
88
|
-
|
|
89
91
|
Reading files:
|
|
90
92
|
|
|
91
93
|
>>> f = fs.open("xrootdpyfs/test.txt")
|
|
@@ -150,5 +152,3 @@ Running the tests are most easily done using docker:
|
|
|
150
152
|
.. code-block:: console
|
|
151
153
|
|
|
152
154
|
$ docker build --platform linux/amd64 -t xrootd . && docker run --platform linux/amd64 -h xrootdpyfs -it xrootd
|
|
153
|
-
|
|
154
|
-
|
|
@@ -10,13 +10,19 @@
|
|
|
10
10
|
:target: https://crate.io/packages/xrootdpyfs/
|
|
11
11
|
|
|
12
12
|
|
|
13
|
-
XRootDPyFS is a PyFilesystem interface to XRootD.
|
|
13
|
+
XRootDPyFS is a PyFilesystem-like interface to XRootD.
|
|
14
14
|
|
|
15
15
|
XRootD protocol aims at giving high performance, scalable fault tolerant access
|
|
16
16
|
to data repositories of many kinds. The XRootDPyFS adds a high-level interface
|
|
17
17
|
on top of the existing Python interface (pyxrootd) and makes it easy to e.g.
|
|
18
18
|
copy a directory in parallel or recursively remove a directory.
|
|
19
19
|
|
|
20
|
+
.. important::
|
|
21
|
+
Since version 3.0.0, the dependency on PyFilesystem2 `pyfs` has been removed. The
|
|
22
|
+
`XRootDPyFS` class is now a standalone implementation of the PyFilesystem2.
|
|
23
|
+
The necessary classes and utilities have been added to this package.
|
|
24
|
+
The only breaking change is the removal for the support of the Opener.
|
|
25
|
+
|
|
20
26
|
Further documentation is available on https://xrootdpyfs.readthedocs.io/.
|
|
21
27
|
|
|
22
28
|
Getting started
|
|
@@ -57,15 +63,6 @@ integration:
|
|
|
57
63
|
>>> fs.listdir("xrootdpyfs")
|
|
58
64
|
['test.txt']
|
|
59
65
|
|
|
60
|
-
Or, alternatively using the PyFilesystem opener (note the first
|
|
61
|
-
``import xrootdpyfs`` is required to ensure the XRootDPyFS opener is registered):
|
|
62
|
-
|
|
63
|
-
>>> import xrootdpyfs
|
|
64
|
-
>>> from fs.opener import open_fs
|
|
65
|
-
>>> fs = open_fs("root://localhost//tmp/")
|
|
66
|
-
>>> fs.listdir("xrootdpyfs")
|
|
67
|
-
['test.txt']
|
|
68
|
-
|
|
69
66
|
Reading files:
|
|
70
67
|
|
|
71
68
|
>>> f = fs.open("xrootdpyfs/test.txt")
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
# SPDX-FileCopyrightText: 2015-2026 CERN.
|
|
2
|
+
# SPDX-FileCopyrightText: 2026 TU Wien.
|
|
3
|
+
# SPDX-License-Identifier: MIT
|
|
4
|
+
|
|
5
|
+
[project]
|
|
6
|
+
name = "xrootdpyfs"
|
|
7
|
+
description = "XRootDPyFS is a PyFilesystem-like interface for XRootD."
|
|
8
|
+
readme = "README.rst"
|
|
9
|
+
requires-python = ">=3.7"
|
|
10
|
+
license = "BSD-3-Clause"
|
|
11
|
+
authors = [
|
|
12
|
+
{ name = "CERN", email = "info@inveniosoftware.org" },
|
|
13
|
+
]
|
|
14
|
+
keywords = [
|
|
15
|
+
"xrootdpyfs",
|
|
16
|
+
]
|
|
17
|
+
classifiers = [
|
|
18
|
+
"Development Status :: 5 - Production/Stable",
|
|
19
|
+
"Intended Audience :: Developers",
|
|
20
|
+
"License :: OSI Approved :: BSD License",
|
|
21
|
+
"Programming Language :: Python :: 3",
|
|
22
|
+
"Topic :: Utilities",
|
|
23
|
+
]
|
|
24
|
+
dependencies = [
|
|
25
|
+
"xrootd>=5.0.0,<6.0.0",
|
|
26
|
+
]
|
|
27
|
+
dynamic = ["version"]
|
|
28
|
+
|
|
29
|
+
[project.urls]
|
|
30
|
+
Repository = "https://github.com/inveniosoftware/xrootdpyfs"
|
|
31
|
+
|
|
32
|
+
[project.optional-dependencies]
|
|
33
|
+
tests = [
|
|
34
|
+
"mock>=4.0.0",
|
|
35
|
+
"pytest-black>=0.6.0",
|
|
36
|
+
"pytest-invenio>=4.0.0,<5.0.0",
|
|
37
|
+
"pytest-mock>=1.6.0",
|
|
38
|
+
"sphinx>=4.5.0",
|
|
39
|
+
]
|
|
40
|
+
|
|
41
|
+
[build-system]
|
|
42
|
+
requires = ["hatchling"]
|
|
43
|
+
build-backend = "hatchling.build"
|
|
44
|
+
|
|
45
|
+
[tool.hatch.version]
|
|
46
|
+
path = "xrootdpyfs/__init__.py"
|
|
47
|
+
|
|
48
|
+
[tool.hatch.build.targets.sdist]
|
|
49
|
+
include = [
|
|
50
|
+
"/xrootdpyfs",
|
|
51
|
+
]
|
|
52
|
+
|
|
53
|
+
[tool.isort]
|
|
54
|
+
profile = "black"
|
|
55
|
+
|
|
56
|
+
[tool.pydocstyle]
|
|
57
|
+
add_ignore = "D401,D403"
|
|
58
|
+
|
|
59
|
+
[tool.pytest.ini_options]
|
|
60
|
+
addopts = '--black --isort --pydocstyle --doctest-glob="*.rst" --doctest-modules --cov=xrootdpyfs --cov-report=term-missing'
|
|
61
|
+
testpaths = "tests xrootdpyfs"
|
|
62
|
+
live_server_scope = "module"
|
|
@@ -1,12 +1,7 @@
|
|
|
1
|
-
#
|
|
2
|
-
#
|
|
3
|
-
# This file is part of xrootdpyfs
|
|
4
|
-
# Copyright (C) 2015-2020 CERN.
|
|
5
|
-
#
|
|
6
|
-
# xrootdpyfs is free software; you can redistribute it and/or modify it under
|
|
7
|
-
# the terms of the Revised BSD License; see LICENSE file for more details.
|
|
1
|
+
# SPDX-FileCopyrightText: 2015-2020 CERN.
|
|
2
|
+
# SPDX-License-Identifier: BSD-3-Clause
|
|
8
3
|
|
|
9
|
-
r"""XRootDPyFS is a
|
|
4
|
+
r"""XRootDPyFS is a high-level interface for XRootD.
|
|
10
5
|
|
|
11
6
|
XRootD protocol aims at giving high performance, scalable fault tolerant access
|
|
12
7
|
to data repositories of many kinds. The XRootDPyFS adds a high-level interface
|
|
@@ -39,8 +34,7 @@ Installation
|
|
|
39
34
|
If you just want to try out the library, the easiest is to use Docker. See
|
|
40
35
|
:ref:`getting-started` below for details.
|
|
41
36
|
|
|
42
|
-
XRootDPyFS depends on `
|
|
43
|
-
`XRootD Python bindings <http://xrootd.org/doc/python/xrootd-python-0.1.0/>`_.
|
|
37
|
+
XRootDPyFS depends on `XRootD Python bindings <http://xrootd.org/doc/python/xrootd-python-0.1.0/>`_.
|
|
44
38
|
|
|
45
39
|
XRootDPyFS is not Python 3 compatible due to the underlying Python bindings not
|
|
46
40
|
being Python 3 compatible.
|
|
@@ -146,16 +140,6 @@ integration:
|
|
|
146
140
|
>>> fs.listdir("xrootdpyfs")
|
|
147
141
|
['test.txt']
|
|
148
142
|
|
|
149
|
-
Or, alternatively using the PyFilesystem opener (note the first
|
|
150
|
-
``import xrootdpyfs`` is required to ensure the XRootDPyFS
|
|
151
|
-
opener is registered):
|
|
152
|
-
|
|
153
|
-
>>> import xrootdpyfs
|
|
154
|
-
>>> from fs.opener import open_fs
|
|
155
|
-
>>> fs = open_fs("root://localhost//tmp/")
|
|
156
|
-
>>> fs.listdir("xrootdpyfs")
|
|
157
|
-
['test.txt']
|
|
158
|
-
|
|
159
143
|
Reading files:
|
|
160
144
|
|
|
161
145
|
>>> f = fs.open("xrootdpyfs/test.txt")
|
|
@@ -183,9 +167,8 @@ written):
|
|
|
183
167
|
"""
|
|
184
168
|
|
|
185
169
|
from .fs import XRootDPyFS
|
|
186
|
-
from .opener import XRootDPyOpener
|
|
187
170
|
from .xrdfile import XRootDPyFile
|
|
188
171
|
|
|
189
|
-
__version__ = "
|
|
172
|
+
__version__ = "3.0.0"
|
|
190
173
|
|
|
191
|
-
__all__ = ("__version__", "XRootDPyFS", "
|
|
174
|
+
__all__ = ("__version__", "XRootDPyFS", "XRootDPyFile")
|