METADATA 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277
  1. Metadata-Version: 2.4
  2. Name: fsspec
  3. Version: 2025.3.2
  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. Copyright (c) 2018, Martin Durant
  11. All rights reserved.
  12. Redistribution and use in source and binary forms, with or without
  13. modification, are permitted provided that the following conditions are met:
  14. * Redistributions of source code must retain the above copyright notice, this
  15. list of conditions and the following disclaimer.
  16. * Redistributions in binary form must reproduce the above copyright notice,
  17. this list of conditions and the following disclaimer in the documentation
  18. and/or other materials provided with the distribution.
  19. * Neither the name of the copyright holder nor the names of its
  20. contributors may be used to endorse or promote products derived from
  21. this software without specific prior written permission.
  22. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
  23. AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  24. IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
  25. DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
  26. FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
  27. DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
  28. SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
  29. CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
  30. OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
  31. OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  32. License-File: LICENSE
  33. Keywords: file
  34. Classifier: Development Status :: 4 - Beta
  35. Classifier: Intended Audience :: Developers
  36. Classifier: License :: OSI Approved :: BSD License
  37. Classifier: Operating System :: OS Independent
  38. Classifier: Programming Language :: Python :: 3.9
  39. Classifier: Programming Language :: Python :: 3.10
  40. Classifier: Programming Language :: Python :: 3.11
  41. Classifier: Programming Language :: Python :: 3.12
  42. Classifier: Programming Language :: Python :: 3.13
  43. Requires-Python: >=3.9
  44. Provides-Extra: abfs
  45. Requires-Dist: adlfs; extra == 'abfs'
  46. Provides-Extra: adl
  47. Requires-Dist: adlfs; extra == 'adl'
  48. Provides-Extra: arrow
  49. Requires-Dist: pyarrow>=1; extra == 'arrow'
  50. Provides-Extra: dask
  51. Requires-Dist: dask; extra == 'dask'
  52. Requires-Dist: distributed; extra == 'dask'
  53. Provides-Extra: dev
  54. Requires-Dist: pre-commit; extra == 'dev'
  55. Requires-Dist: ruff; extra == 'dev'
  56. Provides-Extra: doc
  57. Requires-Dist: numpydoc; extra == 'doc'
  58. Requires-Dist: sphinx; extra == 'doc'
  59. Requires-Dist: sphinx-design; extra == 'doc'
  60. Requires-Dist: sphinx-rtd-theme; extra == 'doc'
  61. Requires-Dist: yarl; extra == 'doc'
  62. Provides-Extra: dropbox
  63. Requires-Dist: dropbox; extra == 'dropbox'
  64. Requires-Dist: dropboxdrivefs; extra == 'dropbox'
  65. Requires-Dist: requests; extra == 'dropbox'
  66. Provides-Extra: entrypoints
  67. Provides-Extra: full
  68. Requires-Dist: adlfs; extra == 'full'
  69. Requires-Dist: aiohttp!=4.0.0a0,!=4.0.0a1; extra == 'full'
  70. Requires-Dist: dask; extra == 'full'
  71. Requires-Dist: distributed; extra == 'full'
  72. Requires-Dist: dropbox; extra == 'full'
  73. Requires-Dist: dropboxdrivefs; extra == 'full'
  74. Requires-Dist: fusepy; extra == 'full'
  75. Requires-Dist: gcsfs; extra == 'full'
  76. Requires-Dist: libarchive-c; extra == 'full'
  77. Requires-Dist: ocifs; extra == 'full'
  78. Requires-Dist: panel; extra == 'full'
  79. Requires-Dist: paramiko; extra == 'full'
  80. Requires-Dist: pyarrow>=1; extra == 'full'
  81. Requires-Dist: pygit2; extra == 'full'
  82. Requires-Dist: requests; extra == 'full'
  83. Requires-Dist: s3fs; extra == 'full'
  84. Requires-Dist: smbprotocol; extra == 'full'
  85. Requires-Dist: tqdm; extra == 'full'
  86. Provides-Extra: fuse
  87. Requires-Dist: fusepy; extra == 'fuse'
  88. Provides-Extra: gcs
  89. Requires-Dist: gcsfs; extra == 'gcs'
  90. Provides-Extra: git
  91. Requires-Dist: pygit2; extra == 'git'
  92. Provides-Extra: github
  93. Requires-Dist: requests; extra == 'github'
  94. Provides-Extra: gs
  95. Requires-Dist: gcsfs; extra == 'gs'
  96. Provides-Extra: gui
  97. Requires-Dist: panel; extra == 'gui'
  98. Provides-Extra: hdfs
  99. Requires-Dist: pyarrow>=1; extra == 'hdfs'
  100. Provides-Extra: http
  101. Requires-Dist: aiohttp!=4.0.0a0,!=4.0.0a1; extra == 'http'
  102. Provides-Extra: libarchive
  103. Requires-Dist: libarchive-c; extra == 'libarchive'
  104. Provides-Extra: oci
  105. Requires-Dist: ocifs; extra == 'oci'
  106. Provides-Extra: s3
  107. Requires-Dist: s3fs; extra == 's3'
  108. Provides-Extra: sftp
  109. Requires-Dist: paramiko; extra == 'sftp'
  110. Provides-Extra: smb
  111. Requires-Dist: smbprotocol; extra == 'smb'
  112. Provides-Extra: ssh
  113. Requires-Dist: paramiko; extra == 'ssh'
  114. Provides-Extra: test
  115. Requires-Dist: aiohttp!=4.0.0a0,!=4.0.0a1; extra == 'test'
  116. Requires-Dist: numpy; extra == 'test'
  117. Requires-Dist: pytest; extra == 'test'
  118. Requires-Dist: pytest-asyncio!=0.22.0; extra == 'test'
  119. Requires-Dist: pytest-benchmark; extra == 'test'
  120. Requires-Dist: pytest-cov; extra == 'test'
  121. Requires-Dist: pytest-mock; extra == 'test'
  122. Requires-Dist: pytest-recording; extra == 'test'
  123. Requires-Dist: pytest-rerunfailures; extra == 'test'
  124. Requires-Dist: requests; extra == 'test'
  125. Provides-Extra: test-downstream
  126. Requires-Dist: aiobotocore<3.0.0,>=2.5.4; extra == 'test-downstream'
  127. Requires-Dist: dask[dataframe,test]; extra == 'test-downstream'
  128. Requires-Dist: moto[server]<5,>4; extra == 'test-downstream'
  129. Requires-Dist: pytest-timeout; extra == 'test-downstream'
  130. Requires-Dist: xarray; extra == 'test-downstream'
  131. Provides-Extra: test-full
  132. Requires-Dist: adlfs; extra == 'test-full'
  133. Requires-Dist: aiohttp!=4.0.0a0,!=4.0.0a1; extra == 'test-full'
  134. Requires-Dist: cloudpickle; extra == 'test-full'
  135. Requires-Dist: dask; extra == 'test-full'
  136. Requires-Dist: distributed; extra == 'test-full'
  137. Requires-Dist: dropbox; extra == 'test-full'
  138. Requires-Dist: dropboxdrivefs; extra == 'test-full'
  139. Requires-Dist: fastparquet; extra == 'test-full'
  140. Requires-Dist: fusepy; extra == 'test-full'
  141. Requires-Dist: gcsfs; extra == 'test-full'
  142. Requires-Dist: jinja2; extra == 'test-full'
  143. Requires-Dist: kerchunk; extra == 'test-full'
  144. Requires-Dist: libarchive-c; extra == 'test-full'
  145. Requires-Dist: lz4; extra == 'test-full'
  146. Requires-Dist: notebook; extra == 'test-full'
  147. Requires-Dist: numpy; extra == 'test-full'
  148. Requires-Dist: ocifs; extra == 'test-full'
  149. Requires-Dist: pandas; extra == 'test-full'
  150. Requires-Dist: panel; extra == 'test-full'
  151. Requires-Dist: paramiko; extra == 'test-full'
  152. Requires-Dist: pyarrow; extra == 'test-full'
  153. Requires-Dist: pyarrow>=1; extra == 'test-full'
  154. Requires-Dist: pyftpdlib; extra == 'test-full'
  155. Requires-Dist: pygit2; extra == 'test-full'
  156. Requires-Dist: pytest; extra == 'test-full'
  157. Requires-Dist: pytest-asyncio!=0.22.0; extra == 'test-full'
  158. Requires-Dist: pytest-benchmark; extra == 'test-full'
  159. Requires-Dist: pytest-cov; extra == 'test-full'
  160. Requires-Dist: pytest-mock; extra == 'test-full'
  161. Requires-Dist: pytest-recording; extra == 'test-full'
  162. Requires-Dist: pytest-rerunfailures; extra == 'test-full'
  163. Requires-Dist: python-snappy; extra == 'test-full'
  164. Requires-Dist: requests; extra == 'test-full'
  165. Requires-Dist: smbprotocol; extra == 'test-full'
  166. Requires-Dist: tqdm; extra == 'test-full'
  167. Requires-Dist: urllib3; extra == 'test-full'
  168. Requires-Dist: zarr; extra == 'test-full'
  169. Requires-Dist: zstandard; extra == 'test-full'
  170. Provides-Extra: tqdm
  171. Requires-Dist: tqdm; extra == 'tqdm'
  172. Description-Content-Type: text/markdown
  173. # filesystem_spec
  174. [![PyPI version](https://badge.fury.io/py/fsspec.svg)](https://pypi.python.org/pypi/fsspec/)
  175. [![Anaconda-Server Badge](https://anaconda.org/conda-forge/fsspec/badges/version.svg)](https://anaconda.org/conda-forge/fsspec)
  176. ![Build](https://github.com/fsspec/filesystem_spec/workflows/CI/badge.svg)
  177. [![Docs](https://readthedocs.org/projects/filesystem-spec/badge/?version=latest)](https://filesystem-spec.readthedocs.io/en/latest/?badge=latest)
  178. A specification for pythonic filesystems.
  179. ## Install
  180. ```bash
  181. pip install fsspec
  182. ```
  183. would install the base fsspec. Various optionally supported features might require specification of custom
  184. extra require, e.g. `pip install fsspec[ssh]` will install dependencies for `ssh` backends support.
  185. Use `pip install fsspec[full]` for installation of all known extra dependencies.
  186. Up-to-date package also provided through conda-forge distribution:
  187. ```bash
  188. conda install -c conda-forge fsspec
  189. ```
  190. ## Purpose
  191. To produce a template or specification for a file-system interface, that specific implementations should follow,
  192. so that applications making use of them can rely on a common behaviour and not have to worry about the specific
  193. internal implementation decisions with any given backend. Many such implementations are included in this package,
  194. or in sister projects such as `s3fs` and `gcsfs`.
  195. In addition, if this is well-designed, then additional functionality, such as a key-value store or FUSE
  196. mounting of the file-system implementation may be available for all implementations "for free".
  197. ## Documentation
  198. Please refer to [RTD](https://filesystem-spec.readthedocs.io/en/latest/?badge=latest)
  199. ## Develop
  200. fsspec uses GitHub Actions for CI. Environment files can be found
  201. in the "ci/" directory. Note that the main environment is called "py38",
  202. but it is expected that the version of python installed be adjustable at
  203. CI runtime. For local use, pick a version suitable for you.
  204. ```bash
  205. # For a new environment (mamba / conda).
  206. mamba create -n fsspec -c conda-forge python=3.9 -y
  207. conda activate fsspec
  208. # Standard dev install with docs and tests.
  209. pip install -e ".[dev,doc,test]"
  210. # Full tests except for downstream
  211. pip install s3fs
  212. pip uninstall s3fs
  213. pip install -e .[dev,doc,test_full]
  214. pip install s3fs --no-deps
  215. pytest -v
  216. # Downstream tests.
  217. sh install_s3fs.sh
  218. # Windows powershell.
  219. install_s3fs.sh
  220. ```
  221. ### Testing
  222. Tests can be run in the dev environment, if activated, via ``pytest fsspec``.
  223. The full fsspec suite requires a system-level docker, docker-compose, and fuse
  224. installation. If only making changes to one backend implementation, it is
  225. not generally necessary to run all tests locally.
  226. It is expected that contributors ensure that any change to fsspec does not
  227. cause issues or regressions for either other fsspec-related packages such
  228. as gcsfs and s3fs, nor for downstream users of fsspec. The "downstream" CI
  229. run and corresponding environment file run a set of tests from the dask
  230. test suite, and very minimal tests against pandas and zarr from the
  231. test_downstream.py module in this repo.
  232. ### Code Formatting
  233. fsspec uses [Black](https://black.readthedocs.io/en/stable) to ensure
  234. a consistent code format throughout the project.
  235. Run ``black fsspec`` from the root of the filesystem_spec repository to
  236. auto-format your code. Additionally, many editors have plugins that will apply
  237. ``black`` as you edit files. ``black`` is included in the ``tox`` environments.
  238. Optionally, you may wish to setup [pre-commit hooks](https://pre-commit.com) to
  239. automatically run ``black`` when you make a git commit.
  240. Run ``pre-commit install --install-hooks`` from the root of the
  241. filesystem_spec repository to setup pre-commit hooks. ``black`` will now be run
  242. before you commit, reformatting any changed files. You can format without
  243. committing via ``pre-commit run`` or skip these checks with ``git commit
  244. --no-verify``.