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.
Files changed (50) hide show
  1. xrootdpyfs-3.0.0/.gitignore +58 -0
  2. {xrootdpyfs-2.0.0 → xrootdpyfs-3.0.0}/PKG-INFO +24 -24
  3. {xrootdpyfs-2.0.0 → xrootdpyfs-3.0.0}/README.rst +7 -10
  4. xrootdpyfs-3.0.0/pyproject.toml +62 -0
  5. {xrootdpyfs-2.0.0 → xrootdpyfs-3.0.0}/xrootdpyfs/__init__.py +6 -23
  6. xrootdpyfs-3.0.0/xrootdpyfs/_pyfs_compat.py +1645 -0
  7. {xrootdpyfs-2.0.0 → xrootdpyfs-3.0.0}/xrootdpyfs/env.py +3 -8
  8. {xrootdpyfs-2.0.0 → xrootdpyfs-3.0.0}/xrootdpyfs/fs.py +78 -32
  9. {xrootdpyfs-2.0.0 → xrootdpyfs-3.0.0}/xrootdpyfs/utils.py +3 -8
  10. {xrootdpyfs-2.0.0 → xrootdpyfs-3.0.0}/xrootdpyfs/xrdfile.py +21 -14
  11. xrootdpyfs-2.0.0/.dockerignore +0 -11
  12. xrootdpyfs-2.0.0/.editorconfig +0 -31
  13. xrootdpyfs-2.0.0/.git-blame-ignore-revs +0 -1
  14. xrootdpyfs-2.0.0/.github/workflows/pypi-publish.yml +0 -41
  15. xrootdpyfs-2.0.0/.github/workflows/tests.yml +0 -42
  16. xrootdpyfs-2.0.0/CHANGES +0 -67
  17. xrootdpyfs-2.0.0/CONTRIBUTING.rst +0 -39
  18. xrootdpyfs-2.0.0/MANIFEST.in +0 -28
  19. xrootdpyfs-2.0.0/docs/Makefile +0 -192
  20. xrootdpyfs-2.0.0/docs/conf.py +0 -312
  21. xrootdpyfs-2.0.0/docs/index.rst +0 -48
  22. xrootdpyfs-2.0.0/docs/requirements.txt +0 -1
  23. xrootdpyfs-2.0.0/run-docker.sh +0 -1
  24. xrootdpyfs-2.0.0/run-tests.sh +0 -18
  25. xrootdpyfs-2.0.0/setup.cfg +0 -64
  26. xrootdpyfs-2.0.0/setup.py +0 -13
  27. xrootdpyfs-2.0.0/tests/conftest.py +0 -28
  28. xrootdpyfs-2.0.0/tests/data/afolder/afile.txt +0 -0
  29. xrootdpyfs-2.0.0/tests/data/bfolder/bfile.txt +0 -0
  30. xrootdpyfs-2.0.0/tests/data/binary.dat +0 -0
  31. xrootdpyfs-2.0.0/tests/data/multiline.txt +0 -8
  32. xrootdpyfs-2.0.0/tests/data/testa.txt +0 -1
  33. xrootdpyfs-2.0.0/tests/perf.py +0 -127
  34. xrootdpyfs-2.0.0/tests/test_env.py +0 -42
  35. xrootdpyfs-2.0.0/tests/test_fs.py +0 -809
  36. xrootdpyfs-2.0.0/tests/test_fs_extras.py +0 -29
  37. xrootdpyfs-2.0.0/tests/test_opener.py +0 -22
  38. xrootdpyfs-2.0.0/tests/test_utils.py +0 -62
  39. xrootdpyfs-2.0.0/tests/test_xrdfile.py +0 -1277
  40. xrootdpyfs-2.0.0/tests/test_xrdflags.py +0 -138
  41. xrootdpyfs-2.0.0/xrootdpyfs/opener.py +0 -51
  42. xrootdpyfs-2.0.0/xrootdpyfs.egg-info/PKG-INFO +0 -154
  43. xrootdpyfs-2.0.0/xrootdpyfs.egg-info/SOURCES.txt +0 -46
  44. xrootdpyfs-2.0.0/xrootdpyfs.egg-info/dependency_links.txt +0 -1
  45. xrootdpyfs-2.0.0/xrootdpyfs.egg-info/entry_points.txt +0 -4
  46. xrootdpyfs-2.0.0/xrootdpyfs.egg-info/not-zip-safe +0 -1
  47. xrootdpyfs-2.0.0/xrootdpyfs.egg-info/requires.txt +0 -8
  48. xrootdpyfs-2.0.0/xrootdpyfs.egg-info/top_level.txt +0 -1
  49. {xrootdpyfs-2.0.0 → xrootdpyfs-3.0.0}/AUTHORS +0 -0
  50. {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
1
+ Metadata-Version: 2.5
2
2
  Name: xrootdpyfs
3
- Version: 2.0.0
4
- Summary: XRootDPyFS is a PyFilesystem interface for XRootD.
5
- Home-page: https://github.com/inveniosoftware/xrootdpyfs
6
- Author: CERN
7
- Author-email: info@inveniosoftware.org
8
- License: BSD
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.6
16
+ Requires-Python: >=3.7
17
+ Requires-Dist: xrootd<6.0.0,>=5.0.0
17
18
  Provides-Extra: tests
18
- License-File: LICENSE
19
- License-File: AUTHORS
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
- # -*- coding: utf-8 -*-
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 PyFilesystem interface for XRootD.
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 `PyFilesystem <http://docs.pyfilesystem.org>`_ and
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__ = "2.0.0"
172
+ __version__ = "3.0.0"
190
173
 
191
- __all__ = ("__version__", "XRootDPyFS", "XRootDPyOpener", "XRootDPyFile")
174
+ __all__ = ("__version__", "XRootDPyFS", "XRootDPyFile")