fsspec 2024.3.1__tar.gz → 2024.6.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 (100) hide show
  1. fsspec-2024.6.0/.codespellrc +8 -0
  2. fsspec-2024.6.0/.coveragerc +19 -0
  3. fsspec-2024.6.0/.gitattributes +1 -0
  4. fsspec-2024.6.0/.github/workflows/codespell.yml +19 -0
  5. fsspec-2024.6.0/.github/workflows/main.yaml +164 -0
  6. fsspec-2024.6.0/.github/workflows/pypipublish.yaml +26 -0
  7. fsspec-2024.6.0/.gitignore +124 -0
  8. fsspec-2024.6.0/.pre-commit-config.yaml +23 -0
  9. fsspec-2024.6.0/PKG-INFO +279 -0
  10. {fsspec-2024.3.1 → fsspec-2024.6.0}/README.md +22 -1
  11. fsspec-2024.6.0/ci/environment-downstream.yml +7 -0
  12. fsspec-2024.6.0/ci/environment-friends.yml +29 -0
  13. fsspec-2024.6.0/ci/environment-py38.yml +10 -0
  14. fsspec-2024.6.0/ci/environment-typecheck.yml +15 -0
  15. fsspec-2024.6.0/ci/environment-win.yml +5 -0
  16. fsspec-2024.6.0/docs/Makefile +20 -0
  17. fsspec-2024.6.0/docs/README.md +12 -0
  18. fsspec-2024.6.0/docs/environment.yml +5 -0
  19. fsspec-2024.6.0/docs/make.bat +36 -0
  20. fsspec-2024.6.0/docs/source/_static/custom.css +5 -0
  21. fsspec-2024.6.0/docs/source/api.rst +291 -0
  22. fsspec-2024.6.0/docs/source/async.rst +154 -0
  23. fsspec-2024.6.0/docs/source/changelog.rst +1012 -0
  24. fsspec-2024.6.0/docs/source/conf.py +193 -0
  25. fsspec-2024.6.0/docs/source/copying.rst +348 -0
  26. fsspec-2024.6.0/docs/source/developer.rst +126 -0
  27. fsspec-2024.6.0/docs/source/features.rst +410 -0
  28. fsspec-2024.6.0/docs/source/img/gui.png +0 -0
  29. fsspec-2024.6.0/docs/source/index.rst +126 -0
  30. fsspec-2024.6.0/docs/source/intro.rst +99 -0
  31. fsspec-2024.6.0/docs/source/usage.rst +124 -0
  32. {fsspec-2024.3.1 → fsspec-2024.6.0}/fsspec/__init__.py +2 -3
  33. fsspec-2024.6.0/fsspec/_version.py +16 -0
  34. {fsspec-2024.3.1 → fsspec-2024.6.0}/fsspec/caching.py +86 -16
  35. {fsspec-2024.3.1 → fsspec-2024.6.0}/fsspec/compression.py +2 -1
  36. {fsspec-2024.3.1 → fsspec-2024.6.0}/fsspec/core.py +32 -8
  37. {fsspec-2024.3.1 → fsspec-2024.6.0}/fsspec/exceptions.py +1 -0
  38. {fsspec-2024.3.1 → fsspec-2024.6.0}/fsspec/generic.py +1 -1
  39. {fsspec-2024.3.1 → fsspec-2024.6.0}/fsspec/gui.py +1 -1
  40. {fsspec-2024.3.1 → fsspec-2024.6.0}/fsspec/implementations/arrow.py +0 -2
  41. {fsspec-2024.3.1 → fsspec-2024.6.0}/fsspec/implementations/cache_mapper.py +1 -2
  42. {fsspec-2024.3.1 → fsspec-2024.6.0}/fsspec/implementations/cache_metadata.py +7 -7
  43. {fsspec-2024.3.1 → fsspec-2024.6.0}/fsspec/implementations/cached.py +1 -13
  44. {fsspec-2024.3.1 → fsspec-2024.6.0}/fsspec/implementations/dirfs.py +2 -2
  45. {fsspec-2024.3.1 → fsspec-2024.6.0}/fsspec/implementations/github.py +12 -0
  46. {fsspec-2024.3.1 → fsspec-2024.6.0}/fsspec/implementations/http.py +9 -9
  47. {fsspec-2024.3.1 → fsspec-2024.6.0}/fsspec/implementations/local.py +78 -45
  48. {fsspec-2024.3.1 → fsspec-2024.6.0}/fsspec/implementations/memory.py +9 -0
  49. {fsspec-2024.3.1 → fsspec-2024.6.0}/fsspec/implementations/reference.py +6 -0
  50. {fsspec-2024.3.1 → fsspec-2024.6.0}/fsspec/implementations/smb.py +13 -1
  51. {fsspec-2024.3.1 → fsspec-2024.6.0}/fsspec/implementations/webhdfs.py +1 -3
  52. fsspec-2024.6.0/fsspec/json.py +81 -0
  53. {fsspec-2024.3.1 → fsspec-2024.6.0}/fsspec/parquet.py +0 -8
  54. {fsspec-2024.3.1 → fsspec-2024.6.0}/fsspec/registry.py +28 -18
  55. {fsspec-2024.3.1 → fsspec-2024.6.0}/fsspec/spec.py +97 -38
  56. fsspec-2024.6.0/fsspec/tests/abstract/mv.py +57 -0
  57. {fsspec-2024.3.1 → fsspec-2024.6.0}/fsspec/utils.py +1 -3
  58. fsspec-2024.6.0/install_s3fs.sh +13 -0
  59. fsspec-2024.6.0/pyproject.toml +228 -0
  60. fsspec-2024.6.0/readthedocs.yml +20 -0
  61. fsspec-2024.6.0/setup.cfg +54 -0
  62. fsspec-2024.3.1/MANIFEST.in +0 -5
  63. fsspec-2024.3.1/PKG-INFO +0 -167
  64. fsspec-2024.3.1/fsspec/_version.py +0 -21
  65. fsspec-2024.3.1/fsspec.egg-info/PKG-INFO +0 -167
  66. fsspec-2024.3.1/fsspec.egg-info/SOURCES.txt +0 -62
  67. fsspec-2024.3.1/fsspec.egg-info/dependency_links.txt +0 -1
  68. fsspec-2024.3.1/fsspec.egg-info/not-zip-safe +0 -1
  69. fsspec-2024.3.1/fsspec.egg-info/requires.txt +0 -89
  70. fsspec-2024.3.1/fsspec.egg-info/top_level.txt +0 -1
  71. fsspec-2024.3.1/pyproject.toml +0 -85
  72. fsspec-2024.3.1/setup.cfg +0 -56
  73. fsspec-2024.3.1/setup.py +0 -77
  74. fsspec-2024.3.1/versioneer.py +0 -2333
  75. {fsspec-2024.3.1 → fsspec-2024.6.0}/LICENSE +0 -0
  76. {fsspec-2024.3.1 → fsspec-2024.6.0}/fsspec/archive.py +0 -0
  77. {fsspec-2024.3.1 → fsspec-2024.6.0}/fsspec/asyn.py +0 -0
  78. {fsspec-2024.3.1 → fsspec-2024.6.0}/fsspec/callbacks.py +0 -0
  79. {fsspec-2024.3.1 → fsspec-2024.6.0}/fsspec/config.py +0 -0
  80. {fsspec-2024.3.1 → fsspec-2024.6.0}/fsspec/conftest.py +0 -0
  81. {fsspec-2024.3.1 → fsspec-2024.6.0}/fsspec/dircache.py +0 -0
  82. {fsspec-2024.3.1 → fsspec-2024.6.0}/fsspec/fuse.py +0 -0
  83. {fsspec-2024.3.1 → fsspec-2024.6.0}/fsspec/implementations/__init__.py +0 -0
  84. {fsspec-2024.3.1 → fsspec-2024.6.0}/fsspec/implementations/dask.py +0 -0
  85. {fsspec-2024.3.1 → fsspec-2024.6.0}/fsspec/implementations/data.py +0 -0
  86. {fsspec-2024.3.1 → fsspec-2024.6.0}/fsspec/implementations/dbfs.py +0 -0
  87. {fsspec-2024.3.1 → fsspec-2024.6.0}/fsspec/implementations/ftp.py +0 -0
  88. {fsspec-2024.3.1 → fsspec-2024.6.0}/fsspec/implementations/git.py +0 -0
  89. {fsspec-2024.3.1 → fsspec-2024.6.0}/fsspec/implementations/jupyter.py +0 -0
  90. {fsspec-2024.3.1 → fsspec-2024.6.0}/fsspec/implementations/libarchive.py +0 -0
  91. {fsspec-2024.3.1 → fsspec-2024.6.0}/fsspec/implementations/sftp.py +0 -0
  92. {fsspec-2024.3.1 → fsspec-2024.6.0}/fsspec/implementations/tar.py +0 -0
  93. {fsspec-2024.3.1 → fsspec-2024.6.0}/fsspec/implementations/zip.py +0 -0
  94. {fsspec-2024.3.1 → fsspec-2024.6.0}/fsspec/mapping.py +0 -0
  95. {fsspec-2024.3.1 → fsspec-2024.6.0}/fsspec/tests/abstract/__init__.py +0 -0
  96. {fsspec-2024.3.1 → fsspec-2024.6.0}/fsspec/tests/abstract/common.py +0 -0
  97. {fsspec-2024.3.1 → fsspec-2024.6.0}/fsspec/tests/abstract/copy.py +0 -0
  98. {fsspec-2024.3.1 → fsspec-2024.6.0}/fsspec/tests/abstract/get.py +0 -0
  99. {fsspec-2024.3.1 → fsspec-2024.6.0}/fsspec/tests/abstract/put.py +0 -0
  100. {fsspec-2024.3.1 → fsspec-2024.6.0}/fsspec/transaction.py +0 -0
@@ -0,0 +1,8 @@
1
+ [codespell]
2
+ skip = *.css*,.git,build
3
+ # many short "words-like" non-words are used in the project as variables/args
4
+ # hel - used in a test, cannot exclude in-line yet
5
+ # cachable - historically happened
6
+ # falsy - too cute although used only once and could be made strict bool
7
+ # doas - used as argument to some call in WebHDFS
8
+ ignore-words-list = fo,dne,fro,hel,cachable,falsy,doas,afile
@@ -0,0 +1,19 @@
1
+ [run]
2
+ omit =
3
+ */test_*.py
4
+ fsspec/_version.py
5
+ fsspec/implementations/github.py
6
+ fsspec/implementations/hdfs.py
7
+ source =
8
+ fsspec
9
+
10
+ [report]
11
+ # Regexes for lines to exclude from consideration
12
+ exclude_lines =
13
+ pragma: no cover
14
+
15
+ raise AssertionError
16
+ raise NotImplementedError
17
+ pass
18
+
19
+ ignore_errors = True
@@ -0,0 +1 @@
1
+ fsspec/_version.py export-subst
@@ -0,0 +1,19 @@
1
+ ---
2
+ name: Codespell
3
+
4
+ on:
5
+ push:
6
+ branches: [master]
7
+ pull_request:
8
+ branches: [master]
9
+
10
+ jobs:
11
+ codespell:
12
+ name: Check for spelling errors
13
+ runs-on: ubuntu-latest
14
+
15
+ steps:
16
+ - name: Checkout
17
+ uses: actions/checkout@v4
18
+ - name: Codespell
19
+ uses: codespell-project/actions-codespell@v1
@@ -0,0 +1,164 @@
1
+ name: CI
2
+
3
+ on:
4
+ push:
5
+ branches: ["*"]
6
+ pull_request:
7
+ branches: [master]
8
+
9
+ jobs:
10
+ linux:
11
+ name: ${{ matrix.PY }}-pytest
12
+ runs-on: ubuntu-latest
13
+ strategy:
14
+ fail-fast: false
15
+ matrix:
16
+ PY: ["3.8", "3.9", "3.10", "3.11", "3.12"]
17
+
18
+ env:
19
+ CIRUN: true
20
+
21
+ steps:
22
+ - name: Checkout
23
+ uses: actions/checkout@v4
24
+ with:
25
+ fetch-depth: 0
26
+
27
+ - name: Setup conda
28
+ uses: mamba-org/setup-micromamba@v1
29
+ with:
30
+ environment-file: ci/environment-py38.yml
31
+ create-args: >-
32
+ python=${{ matrix.PY }}
33
+
34
+ - name: Run Tests
35
+ shell: bash -l {0}
36
+ run: |
37
+ pip install s3fs
38
+ pip uninstall s3fs
39
+ pip install -e .[test_full]
40
+ pip install s3fs --no-deps
41
+ pytest -v
42
+
43
+ win:
44
+ name: pytest-win
45
+ runs-on: windows-2019
46
+
47
+ env:
48
+ CIRUN: true
49
+
50
+ steps:
51
+ - name: Checkout
52
+ uses: actions/checkout@v4
53
+ with:
54
+ fetch-depth: 0
55
+
56
+ - name: Setup conda
57
+ uses: mamba-org/setup-micromamba@v1
58
+ with:
59
+ environment-file: ci/environment-win.yml
60
+
61
+ - name: Run Tests
62
+ shell: bash -l {0}
63
+ run: |
64
+ pip install s3fs
65
+ pip uninstall s3fs
66
+ pip install -e .[test]
67
+ pip install s3fs --no-deps
68
+ pytest -v
69
+
70
+ lint:
71
+ name: lint
72
+ runs-on: ubuntu-latest
73
+ steps:
74
+ - uses: actions/checkout@main
75
+ - uses: actions/setup-python@main
76
+ with:
77
+ python-version: "3.11"
78
+ - uses: pre-commit/action@main
79
+
80
+ # typecheck:
81
+ # runs-on: ubuntu-latest
82
+ # steps:
83
+ # - name: Checkout
84
+ # uses: actions/checkout@v4
85
+ #
86
+ # - name: Setup conda
87
+ # uses: mamba-org/setup-micromamba@v1
88
+ # with:
89
+ # environment-file: ci/environment-typecheck.yml
90
+ #
91
+ # - name: mypy
92
+ # shell: bash -l {0}
93
+ # run: |
94
+ # mypy fsspec
95
+ #
96
+ downstream:
97
+ name: downstream
98
+ runs-on: ubuntu-latest
99
+
100
+ steps:
101
+ - name: Checkout
102
+ uses: actions/checkout@v4
103
+ with:
104
+ fetch-depth: 0
105
+
106
+ - name: Setup conda
107
+ uses: mamba-org/setup-micromamba@v1
108
+ with:
109
+ environment-file: ci/environment-downstream.yml
110
+
111
+ - name: Local install
112
+ shell: bash -l {0}
113
+ run: |
114
+ sh install_s3fs.sh
115
+ pip install -e .[test,test_downstream]
116
+ pip list
117
+
118
+ - name: Run fsspec tests
119
+ shell: bash -l {0}
120
+ run: |
121
+ pytest -v fsspec/tests/test_downstream.py
122
+
123
+ - name: Run dask tests
124
+ shell: bash -l {0}
125
+ run: |
126
+ dask_test_path=$(python -c "import dask.bytes;print(dask.bytes.__path__[0])")
127
+ pytest -v $dask_test_path
128
+
129
+ fsspec_friends:
130
+ name: ${{ matrix.FRIEND }}-pytest
131
+ runs-on: ubuntu-latest
132
+ strategy:
133
+ fail-fast: false
134
+ matrix:
135
+ FRIEND: [gcsfs, s3fs]
136
+
137
+ env:
138
+ CIRUN: true
139
+ BOTO_CONFIG: /dev/null
140
+ AWS_ACCESS_KEY_ID: foobar_key
141
+ AWS_SECRET_ACCESS_KEY: foobar_secret
142
+
143
+ steps:
144
+ - name: Checkout
145
+ uses: actions/checkout@v4
146
+
147
+ - name: Setup conda
148
+ uses: mamba-org/setup-micromamba@v1
149
+ with:
150
+ environment-file: ci/environment-friends.yml
151
+
152
+ - name: Clone
153
+ shell: bash -l {0}
154
+ run: git clone https://github.com/fsspec/${{ matrix.FRIEND }}
155
+
156
+ - name: Install
157
+ shell: bash -l {0}
158
+ run: |
159
+ pip install -e . --no-deps
160
+ pip install -e ./${{ matrix.FRIEND }} --no-deps
161
+
162
+ - name: Test
163
+ shell: bash -l {0}
164
+ run: pytest -v ${{ matrix.FRIEND }}
@@ -0,0 +1,26 @@
1
+ name: Upload Python Package
2
+
3
+ on:
4
+ release:
5
+ types: [created]
6
+
7
+ jobs:
8
+ deploy:
9
+ runs-on: ubuntu-latest
10
+ steps:
11
+ - uses: actions/checkout@v4
12
+ - name: Set up Python
13
+ uses: actions/setup-python@v4
14
+ with:
15
+ python-version: "3.x"
16
+ - name: Install dependencies
17
+ run: |
18
+ python -m pip install --upgrade pip
19
+ pip install hatch twine
20
+ - name: Build and publish
21
+ env:
22
+ TWINE_USERNAME: ${{ secrets.PYPI_USERNAME }}
23
+ TWINE_PASSWORD: ${{ secrets.PYPI_PASSWORD }}
24
+ run: |
25
+ hatch build
26
+ twine upload dist/*
@@ -0,0 +1,124 @@
1
+ # Dask
2
+ dask-worker-space
3
+
4
+ # Byte-compiled / optimized / DLL files
5
+ __pycache__/
6
+ *.py[cod]
7
+ *$py.class
8
+
9
+ # C extensions
10
+ *.so
11
+
12
+ # Distribution / packaging
13
+ .Python
14
+ env/
15
+ build/
16
+ develop-eggs/
17
+ dist/
18
+ downloads/
19
+ eggs/
20
+ .eggs/
21
+ lib/
22
+ lib64/
23
+ parts/
24
+ sdist/
25
+ var/
26
+ wheels/
27
+ *.egg-info/
28
+ .installed.cfg
29
+ *.egg
30
+ pip-wheel-metadata/
31
+ _version.py
32
+ # PyInstaller
33
+ # Usually these files are written by a python script from a template
34
+ # before PyInstaller builds the exe, so as to inject date/other infos into it.
35
+ *.manifest
36
+ *.spec
37
+
38
+ # Installer logs
39
+ pip-log.txt
40
+ pip-delete-this-directory.txt
41
+
42
+ # Unit test / coverage reports
43
+ htmlcov/
44
+ .tox/
45
+ .coverage
46
+ .coverage.*
47
+ .cache
48
+ nosetests.xml
49
+ coverage.xml
50
+ *.cover
51
+ .hypothesis/
52
+ .pytest_cache/
53
+
54
+ # Translations
55
+ *.mo
56
+ *.pot
57
+
58
+ # Django stuff:
59
+ *.log
60
+ local_settings.py
61
+
62
+ # Flask stuff:
63
+ instance/
64
+ .webassets-cache
65
+
66
+ # Scrapy stuff:
67
+ .scrapy
68
+
69
+ # Sphinx documentation
70
+ docs/_build/
71
+
72
+ # PyBuilder
73
+ target/
74
+
75
+ # Jupyter Notebook
76
+ .ipynb_checkpoints
77
+
78
+ # pyenv
79
+ .python-version
80
+
81
+ # celery beat schedule file
82
+ celerybeat-schedule
83
+
84
+ # SageMath parsed files
85
+ *.sage.py
86
+
87
+ # dotenv
88
+ .env
89
+
90
+ # virtualenv
91
+ .venv
92
+ venv/
93
+ ENV/
94
+
95
+ # Spyder project settings
96
+ .spyderproject
97
+ .spyproject
98
+
99
+ # Rope project settings
100
+ .ropeproject
101
+
102
+ # mkdocs documentation
103
+ /site
104
+
105
+ # mypy
106
+ .mypy_cache/
107
+
108
+ # jetbrains ide stuff
109
+ *.iml
110
+ .idea/
111
+
112
+ # vscode ide stuff
113
+ *.code-workspace
114
+ .history
115
+ .vscode
116
+
117
+ # docker artifacts
118
+ .docker
119
+
120
+ # vi*
121
+ *.swp
122
+
123
+ build/
124
+ downstream/*
@@ -0,0 +1,23 @@
1
+ exclude: >
2
+ (?x)^(
3
+ \.tox/.*
4
+ )$
5
+ repos:
6
+
7
+ - repo: https://github.com/pre-commit/pre-commit-hooks
8
+ rev: v4.5.0
9
+ hooks:
10
+ - id: trailing-whitespace
11
+ - id: end-of-file-fixer
12
+ - id: check-docstring-first
13
+ - id: check-json
14
+ - id: check-yaml
15
+ - repo: https://github.com/astral-sh/ruff-pre-commit
16
+ # Ruff version.
17
+ rev: v0.4.4
18
+ hooks:
19
+ # Run the linter.
20
+ - id: ruff
21
+ args: [ --fix, "--show-fixes"]
22
+ - id: ruff-format
23
+ types_or: [python]
@@ -0,0 +1,279 @@
1
+ Metadata-Version: 2.3
2
+ Name: fsspec
3
+ Version: 2024.6.0
4
+ Summary: File-system specification
5
+ Project-URL: Changelog, https://filesystem-spec.readthedocs.io/en/latest/changelog.html
6
+ Project-URL: Documentation, https://filesystem-spec.readthedocs.io/en/latest/
7
+ Project-URL: Homepage, https://github.com/fsspec/filesystem_spec
8
+ Maintainer-email: Martin Durant <mdurant@anaconda.com>
9
+ License: BSD 3-Clause License
10
+
11
+ Copyright (c) 2018, Martin Durant
12
+ All rights reserved.
13
+
14
+ Redistribution and use in source and binary forms, with or without
15
+ modification, are permitted provided that the following conditions are met:
16
+
17
+ * Redistributions of source code must retain the above copyright notice, this
18
+ list of conditions and the following disclaimer.
19
+
20
+ * Redistributions in binary form must reproduce the above copyright notice,
21
+ this list of conditions and the following disclaimer in the documentation
22
+ and/or other materials provided with the distribution.
23
+
24
+ * Neither the name of the copyright holder nor the names of its
25
+ contributors may be used to endorse or promote products derived from
26
+ this software without specific prior written permission.
27
+
28
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
29
+ AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
30
+ IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
31
+ DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
32
+ FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
33
+ DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
34
+ SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
35
+ CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
36
+ OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
37
+ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
38
+ License-File: LICENSE
39
+ Keywords: file
40
+ Classifier: Development Status :: 4 - Beta
41
+ Classifier: Intended Audience :: Developers
42
+ Classifier: License :: OSI Approved :: BSD License
43
+ Classifier: Operating System :: OS Independent
44
+ Classifier: Programming Language :: Python :: 3.8
45
+ Classifier: Programming Language :: Python :: 3.9
46
+ Classifier: Programming Language :: Python :: 3.10
47
+ Classifier: Programming Language :: Python :: 3.11
48
+ Classifier: Programming Language :: Python :: 3.12
49
+ Requires-Python: >=3.8
50
+ Provides-Extra: abfs
51
+ Requires-Dist: adlfs; extra == 'abfs'
52
+ Provides-Extra: adl
53
+ Requires-Dist: adlfs; extra == 'adl'
54
+ Provides-Extra: arrow
55
+ Requires-Dist: pyarrow>=1; extra == 'arrow'
56
+ Provides-Extra: dask
57
+ Requires-Dist: dask; extra == 'dask'
58
+ Requires-Dist: distributed; extra == 'dask'
59
+ Provides-Extra: dev
60
+ Requires-Dist: pre-commit; extra == 'dev'
61
+ Requires-Dist: ruff; extra == 'dev'
62
+ Provides-Extra: doc
63
+ Requires-Dist: numpydoc; extra == 'doc'
64
+ Requires-Dist: sphinx; extra == 'doc'
65
+ Requires-Dist: sphinx-design; extra == 'doc'
66
+ Requires-Dist: sphinx-rtd-theme; extra == 'doc'
67
+ Requires-Dist: yarl; extra == 'doc'
68
+ Provides-Extra: dropbox
69
+ Requires-Dist: dropbox; extra == 'dropbox'
70
+ Requires-Dist: dropboxdrivefs; extra == 'dropbox'
71
+ Requires-Dist: requests; extra == 'dropbox'
72
+ Provides-Extra: entrypoints
73
+ Provides-Extra: full
74
+ Requires-Dist: adlfs; extra == 'full'
75
+ Requires-Dist: aiohttp!=4.0.0a0,!=4.0.0a1; extra == 'full'
76
+ Requires-Dist: dask; extra == 'full'
77
+ Requires-Dist: distributed; extra == 'full'
78
+ Requires-Dist: dropbox; extra == 'full'
79
+ Requires-Dist: dropboxdrivefs; extra == 'full'
80
+ Requires-Dist: fusepy; extra == 'full'
81
+ Requires-Dist: gcsfs; extra == 'full'
82
+ Requires-Dist: libarchive-c; extra == 'full'
83
+ Requires-Dist: ocifs; extra == 'full'
84
+ Requires-Dist: panel; extra == 'full'
85
+ Requires-Dist: paramiko; extra == 'full'
86
+ Requires-Dist: pyarrow>=1; extra == 'full'
87
+ Requires-Dist: pygit2; extra == 'full'
88
+ Requires-Dist: requests; extra == 'full'
89
+ Requires-Dist: s3fs; extra == 'full'
90
+ Requires-Dist: smbprotocol; extra == 'full'
91
+ Requires-Dist: tqdm; extra == 'full'
92
+ Provides-Extra: fuse
93
+ Requires-Dist: fusepy; extra == 'fuse'
94
+ Provides-Extra: gcs
95
+ Requires-Dist: gcsfs; extra == 'gcs'
96
+ Provides-Extra: git
97
+ Requires-Dist: pygit2; extra == 'git'
98
+ Provides-Extra: github
99
+ Requires-Dist: requests; extra == 'github'
100
+ Provides-Extra: gs
101
+ Requires-Dist: gcsfs; extra == 'gs'
102
+ Provides-Extra: gui
103
+ Requires-Dist: panel; extra == 'gui'
104
+ Provides-Extra: hdfs
105
+ Requires-Dist: pyarrow>=1; extra == 'hdfs'
106
+ Provides-Extra: http
107
+ Requires-Dist: aiohttp!=4.0.0a0,!=4.0.0a1; extra == 'http'
108
+ Provides-Extra: libarchive
109
+ Requires-Dist: libarchive-c; extra == 'libarchive'
110
+ Provides-Extra: oci
111
+ Requires-Dist: ocifs; extra == 'oci'
112
+ Provides-Extra: s3
113
+ Requires-Dist: s3fs; extra == 's3'
114
+ Provides-Extra: sftp
115
+ Requires-Dist: paramiko; extra == 'sftp'
116
+ Provides-Extra: smb
117
+ Requires-Dist: smbprotocol; extra == 'smb'
118
+ Provides-Extra: ssh
119
+ Requires-Dist: paramiko; extra == 'ssh'
120
+ Provides-Extra: test
121
+ Requires-Dist: aiohttp!=4.0.0a0,!=4.0.0a1; extra == 'test'
122
+ Requires-Dist: numpy; extra == 'test'
123
+ Requires-Dist: pytest; extra == 'test'
124
+ Requires-Dist: pytest-asyncio!=0.22.0; extra == 'test'
125
+ Requires-Dist: pytest-benchmark; extra == 'test'
126
+ Requires-Dist: pytest-cov; extra == 'test'
127
+ Requires-Dist: pytest-mock; extra == 'test'
128
+ Requires-Dist: pytest-recording; extra == 'test'
129
+ Requires-Dist: pytest-rerunfailures; extra == 'test'
130
+ Requires-Dist: requests; extra == 'test'
131
+ Provides-Extra: test-downstream
132
+ Requires-Dist: aiobotocore<3.0.0,>=2.5.4; extra == 'test-downstream'
133
+ Requires-Dist: dask-expr; extra == 'test-downstream'
134
+ Requires-Dist: dask[dataframe,test]; extra == 'test-downstream'
135
+ Requires-Dist: moto[server]<5,>4; extra == 'test-downstream'
136
+ Requires-Dist: pytest-timeout; extra == 'test-downstream'
137
+ Requires-Dist: xarray; extra == 'test-downstream'
138
+ Provides-Extra: test-full
139
+ Requires-Dist: adlfs; extra == 'test-full'
140
+ Requires-Dist: aiohttp!=4.0.0a0,!=4.0.0a1; extra == 'test-full'
141
+ Requires-Dist: cloudpickle; extra == 'test-full'
142
+ Requires-Dist: dask; extra == 'test-full'
143
+ Requires-Dist: distributed; extra == 'test-full'
144
+ Requires-Dist: dropbox; extra == 'test-full'
145
+ Requires-Dist: dropboxdrivefs; extra == 'test-full'
146
+ Requires-Dist: fastparquet; extra == 'test-full'
147
+ Requires-Dist: fusepy; extra == 'test-full'
148
+ Requires-Dist: gcsfs; extra == 'test-full'
149
+ Requires-Dist: jinja2; extra == 'test-full'
150
+ Requires-Dist: kerchunk; extra == 'test-full'
151
+ Requires-Dist: libarchive-c; extra == 'test-full'
152
+ Requires-Dist: lz4; extra == 'test-full'
153
+ Requires-Dist: notebook; extra == 'test-full'
154
+ Requires-Dist: numpy; extra == 'test-full'
155
+ Requires-Dist: ocifs; extra == 'test-full'
156
+ Requires-Dist: pandas; extra == 'test-full'
157
+ Requires-Dist: panel; extra == 'test-full'
158
+ Requires-Dist: paramiko; extra == 'test-full'
159
+ Requires-Dist: pyarrow; extra == 'test-full'
160
+ Requires-Dist: pyarrow>=1; extra == 'test-full'
161
+ Requires-Dist: pyftpdlib; extra == 'test-full'
162
+ Requires-Dist: pygit2; extra == 'test-full'
163
+ Requires-Dist: pytest; extra == 'test-full'
164
+ Requires-Dist: pytest-asyncio!=0.22.0; extra == 'test-full'
165
+ Requires-Dist: pytest-benchmark; extra == 'test-full'
166
+ Requires-Dist: pytest-cov; extra == 'test-full'
167
+ Requires-Dist: pytest-mock; extra == 'test-full'
168
+ Requires-Dist: pytest-recording; extra == 'test-full'
169
+ Requires-Dist: pytest-rerunfailures; extra == 'test-full'
170
+ Requires-Dist: python-snappy; extra == 'test-full'
171
+ Requires-Dist: requests; extra == 'test-full'
172
+ Requires-Dist: smbprotocol; extra == 'test-full'
173
+ Requires-Dist: tqdm; extra == 'test-full'
174
+ Requires-Dist: urllib3; extra == 'test-full'
175
+ Requires-Dist: zarr; extra == 'test-full'
176
+ Requires-Dist: zstandard; extra == 'test-full'
177
+ Provides-Extra: tqdm
178
+ Requires-Dist: tqdm; extra == 'tqdm'
179
+ Description-Content-Type: text/markdown
180
+
181
+ # filesystem_spec
182
+
183
+ [![PyPI version](https://badge.fury.io/py/fsspec.svg)](https://pypi.python.org/pypi/fsspec/)
184
+ [![Anaconda-Server Badge](https://anaconda.org/conda-forge/fsspec/badges/version.svg)](https://anaconda.org/conda-forge/fsspec)
185
+ ![Build](https://github.com/fsspec/filesystem_spec/workflows/CI/badge.svg)
186
+ [![Docs](https://readthedocs.org/projects/filesystem-spec/badge/?version=latest)](https://filesystem-spec.readthedocs.io/en/latest/?badge=latest)
187
+ [![fsspec Downloads Last Month](https://assets.piptrends.com/get-last-month-downloads-badge/fsspec.svg 'fsspec Downloads Last Month by pip Trends')](https://piptrends.com/package/fsspec)
188
+
189
+ A specification for pythonic filesystems.
190
+
191
+ ## Install
192
+
193
+ ```bash
194
+ pip install fsspec
195
+ ```
196
+
197
+ would install the base fsspec. Various optionally supported features might require specification of custom
198
+ extra require, e.g. `pip install fsspec[ssh]` will install dependencies for `ssh` backends support.
199
+ Use `pip install fsspec[full]` for installation of all known extra dependencies.
200
+
201
+ Up-to-date package also provided through conda-forge distribution:
202
+
203
+ ```bash
204
+ conda install -c conda-forge fsspec
205
+ ```
206
+
207
+
208
+ ## Purpose
209
+
210
+ To produce a template or specification for a file-system interface, that specific implementations should follow,
211
+ so that applications making use of them can rely on a common behaviour and not have to worry about the specific
212
+ internal implementation decisions with any given backend. Many such implementations are included in this package,
213
+ or in sister projects such as `s3fs` and `gcsfs`.
214
+
215
+ In addition, if this is well-designed, then additional functionality, such as a key-value store or FUSE
216
+ mounting of the file-system implementation may be available for all implementations "for free".
217
+
218
+ ## Documentation
219
+
220
+ Please refer to [RTD](https://filesystem-spec.readthedocs.io/en/latest/?badge=latest)
221
+
222
+ ## Develop
223
+
224
+ fsspec uses GitHub Actions for CI. Environment files can be found
225
+ in the "ci/" directory. Note that the main environment is called "py38",
226
+ but it is expected that the version of python installed be adjustable at
227
+ CI runtime. For local use, pick a version suitable for you.
228
+
229
+ ```bash
230
+ # For a new environment (mamba / conda).
231
+ mamba create -n fsspec -c conda-forge python=3.9 -y
232
+ conda activate fsspec
233
+
234
+ # Standard dev install with docs and tests.
235
+ pip install -e ".[dev,doc,test]"
236
+
237
+ # Full tests except for downstream
238
+ pip install s3fs
239
+ pip uninstall s3fs
240
+ pip install -e .[dev,doc,test_full]
241
+ pip install s3fs --no-deps
242
+ pytest -v
243
+
244
+ # Downstream tests.
245
+ sh install_s3fs.sh
246
+ # Windows powershell.
247
+ install_s3fs.sh
248
+ ```
249
+
250
+ ### Testing
251
+
252
+ Tests can be run in the dev environment, if activated, via ``pytest fsspec``.
253
+
254
+ The full fsspec suite requires a system-level docker, docker-compose, and fuse
255
+ installation. If only making changes to one backend implementation, it is
256
+ not generally necessary to run all tests locally.
257
+
258
+ It is expected that contributors ensure that any change to fsspec does not
259
+ cause issues or regressions for either other fsspec-related packages such
260
+ as gcsfs and s3fs, nor for downstream users of fsspec. The "downstream" CI
261
+ run and corresponding environment file run a set of tests from the dask
262
+ test suite, and very minimal tests against pandas and zarr from the
263
+ test_downstream.py module in this repo.
264
+
265
+ ### Code Formatting
266
+
267
+ fsspec uses [Black](https://black.readthedocs.io/en/stable) to ensure
268
+ a consistent code format throughout the project.
269
+ Run ``black fsspec`` from the root of the filesystem_spec repository to
270
+ auto-format your code. Additionally, many editors have plugins that will apply
271
+ ``black`` as you edit files. ``black`` is included in the ``tox`` environments.
272
+
273
+ Optionally, you may wish to setup [pre-commit hooks](https://pre-commit.com) to
274
+ automatically run ``black`` when you make a git commit.
275
+ Run ``pre-commit install --install-hooks`` from the root of the
276
+ filesystem_spec repository to setup pre-commit hooks. ``black`` will now be run
277
+ before you commit, reformatting any changed files. You can format without
278
+ committing via ``pre-commit run`` or skip these checks with ``git commit
279
+ --no-verify``.