fsspec 2024.3.1__tar.gz → 2024.5.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 (156) hide show
  1. fsspec-2024.5.0/.codespellrc +8 -0
  2. fsspec-2024.5.0/.coveragerc +19 -0
  3. fsspec-2024.5.0/.gitattributes +1 -0
  4. fsspec-2024.5.0/.github/workflows/codespell.yml +19 -0
  5. fsspec-2024.5.0/.github/workflows/main.yaml +164 -0
  6. fsspec-2024.5.0/.github/workflows/pypipublish.yaml +26 -0
  7. fsspec-2024.5.0/.gitignore +124 -0
  8. fsspec-2024.5.0/.pre-commit-config.yaml +23 -0
  9. fsspec-2024.5.0/PKG-INFO +273 -0
  10. {fsspec-2024.3.1 → fsspec-2024.5.0}/README.md +21 -0
  11. fsspec-2024.5.0/ci/environment-downstream.yml +7 -0
  12. fsspec-2024.5.0/ci/environment-friends.yml +29 -0
  13. fsspec-2024.5.0/ci/environment-py38.yml +10 -0
  14. fsspec-2024.5.0/ci/environment-typecheck.yml +15 -0
  15. fsspec-2024.5.0/ci/environment-win.yml +5 -0
  16. fsspec-2024.5.0/docs/Makefile +20 -0
  17. fsspec-2024.5.0/docs/README.md +12 -0
  18. fsspec-2024.5.0/docs/environment.yml +11 -0
  19. fsspec-2024.5.0/docs/make.bat +36 -0
  20. fsspec-2024.5.0/docs/source/_static/custom.css +5 -0
  21. fsspec-2024.5.0/docs/source/api.rst +291 -0
  22. fsspec-2024.5.0/docs/source/async.rst +154 -0
  23. fsspec-2024.5.0/docs/source/changelog.rst +992 -0
  24. fsspec-2024.5.0/docs/source/conf.py +193 -0
  25. fsspec-2024.5.0/docs/source/copying.rst +348 -0
  26. fsspec-2024.5.0/docs/source/developer.rst +126 -0
  27. fsspec-2024.5.0/docs/source/features.rst +410 -0
  28. fsspec-2024.5.0/docs/source/img/gui.png +0 -0
  29. fsspec-2024.5.0/docs/source/index.rst +126 -0
  30. fsspec-2024.5.0/docs/source/intro.rst +99 -0
  31. fsspec-2024.5.0/docs/source/usage.rst +124 -0
  32. {fsspec-2024.3.1 → fsspec-2024.5.0}/fsspec/__init__.py +2 -3
  33. fsspec-2024.5.0/fsspec/_version.py +16 -0
  34. {fsspec-2024.3.1 → fsspec-2024.5.0}/fsspec/caching.py +83 -14
  35. {fsspec-2024.3.1 → fsspec-2024.5.0}/fsspec/compression.py +1 -0
  36. {fsspec-2024.3.1 → fsspec-2024.5.0}/fsspec/core.py +32 -8
  37. {fsspec-2024.3.1 → fsspec-2024.5.0}/fsspec/exceptions.py +1 -0
  38. {fsspec-2024.3.1 → fsspec-2024.5.0}/fsspec/generic.py +1 -1
  39. {fsspec-2024.3.1 → fsspec-2024.5.0}/fsspec/gui.py +1 -1
  40. {fsspec-2024.3.1 → fsspec-2024.5.0}/fsspec/implementations/arrow.py +0 -2
  41. {fsspec-2024.3.1 → fsspec-2024.5.0}/fsspec/implementations/cache_mapper.py +1 -2
  42. {fsspec-2024.3.1 → fsspec-2024.5.0}/fsspec/implementations/cache_metadata.py +7 -7
  43. {fsspec-2024.3.1 → fsspec-2024.5.0}/fsspec/implementations/dirfs.py +2 -2
  44. {fsspec-2024.3.1 → fsspec-2024.5.0}/fsspec/implementations/http.py +9 -9
  45. {fsspec-2024.3.1 → fsspec-2024.5.0}/fsspec/implementations/local.py +78 -45
  46. {fsspec-2024.3.1 → fsspec-2024.5.0}/fsspec/implementations/memory.py +9 -0
  47. {fsspec-2024.3.1 → fsspec-2024.5.0}/fsspec/implementations/smb.py +3 -1
  48. fsspec-2024.5.0/fsspec/implementations/tests/__init__.py +0 -0
  49. fsspec-2024.5.0/fsspec/implementations/tests/cassettes/test_dbfs/test_dbfs_file_listing.yaml +112 -0
  50. fsspec-2024.5.0/fsspec/implementations/tests/cassettes/test_dbfs/test_dbfs_mkdir.yaml +582 -0
  51. fsspec-2024.5.0/fsspec/implementations/tests/cassettes/test_dbfs/test_dbfs_read_pyarrow_non_partitioned.yaml +873 -0
  52. fsspec-2024.5.0/fsspec/implementations/tests/cassettes/test_dbfs/test_dbfs_read_range.yaml +458 -0
  53. fsspec-2024.5.0/fsspec/implementations/tests/cassettes/test_dbfs/test_dbfs_read_range_chunked.yaml +1355 -0
  54. fsspec-2024.5.0/fsspec/implementations/tests/cassettes/test_dbfs/test_dbfs_write_and_read.yaml +795 -0
  55. fsspec-2024.5.0/fsspec/implementations/tests/cassettes/test_dbfs/test_dbfs_write_pyarrow_non_partitioned.yaml +613 -0
  56. fsspec-2024.5.0/fsspec/implementations/tests/conftest.py +39 -0
  57. fsspec-2024.5.0/fsspec/implementations/tests/local/__init__.py +0 -0
  58. fsspec-2024.5.0/fsspec/implementations/tests/local/local_fixtures.py +18 -0
  59. fsspec-2024.5.0/fsspec/implementations/tests/local/local_test.py +14 -0
  60. fsspec-2024.5.0/fsspec/implementations/tests/memory/__init__.py +0 -0
  61. fsspec-2024.5.0/fsspec/implementations/tests/memory/memory_fixtures.py +27 -0
  62. fsspec-2024.5.0/fsspec/implementations/tests/memory/memory_test.py +14 -0
  63. fsspec-2024.5.0/fsspec/implementations/tests/out.zip +0 -0
  64. fsspec-2024.5.0/fsspec/implementations/tests/test_archive.py +382 -0
  65. fsspec-2024.5.0/fsspec/implementations/tests/test_arrow.py +259 -0
  66. fsspec-2024.5.0/fsspec/implementations/tests/test_cached.py +1306 -0
  67. fsspec-2024.5.0/fsspec/implementations/tests/test_common.py +35 -0
  68. fsspec-2024.5.0/fsspec/implementations/tests/test_dask.py +29 -0
  69. fsspec-2024.5.0/fsspec/implementations/tests/test_data.py +20 -0
  70. fsspec-2024.5.0/fsspec/implementations/tests/test_dbfs.py +268 -0
  71. fsspec-2024.5.0/fsspec/implementations/tests/test_dirfs.py +588 -0
  72. fsspec-2024.5.0/fsspec/implementations/tests/test_ftp.py +178 -0
  73. fsspec-2024.5.0/fsspec/implementations/tests/test_git.py +76 -0
  74. fsspec-2024.5.0/fsspec/implementations/tests/test_http.py +577 -0
  75. fsspec-2024.5.0/fsspec/implementations/tests/test_jupyter.py +57 -0
  76. fsspec-2024.5.0/fsspec/implementations/tests/test_libarchive.py +33 -0
  77. fsspec-2024.5.0/fsspec/implementations/tests/test_local.py +1285 -0
  78. fsspec-2024.5.0/fsspec/implementations/tests/test_memory.py +382 -0
  79. fsspec-2024.5.0/fsspec/implementations/tests/test_reference.py +720 -0
  80. fsspec-2024.5.0/fsspec/implementations/tests/test_sftp.py +233 -0
  81. fsspec-2024.5.0/fsspec/implementations/tests/test_smb.py +139 -0
  82. fsspec-2024.5.0/fsspec/implementations/tests/test_tar.py +243 -0
  83. fsspec-2024.5.0/fsspec/implementations/tests/test_webhdfs.py +197 -0
  84. fsspec-2024.5.0/fsspec/implementations/tests/test_zip.py +134 -0
  85. {fsspec-2024.3.1 → fsspec-2024.5.0}/fsspec/implementations/webhdfs.py +1 -3
  86. {fsspec-2024.3.1 → fsspec-2024.5.0}/fsspec/parquet.py +0 -8
  87. {fsspec-2024.3.1 → fsspec-2024.5.0}/fsspec/registry.py +4 -0
  88. {fsspec-2024.3.1 → fsspec-2024.5.0}/fsspec/spec.py +21 -4
  89. fsspec-2024.5.0/fsspec/tests/__init__.py +0 -0
  90. fsspec-2024.5.0/fsspec/tests/abstract/mv.py +57 -0
  91. fsspec-2024.5.0/fsspec/tests/conftest.py +188 -0
  92. fsspec-2024.5.0/fsspec/tests/data/listing.html +1 -0
  93. fsspec-2024.5.0/fsspec/tests/test_api.py +498 -0
  94. fsspec-2024.5.0/fsspec/tests/test_async.py +230 -0
  95. fsspec-2024.5.0/fsspec/tests/test_caches.py +255 -0
  96. fsspec-2024.5.0/fsspec/tests/test_callbacks.py +89 -0
  97. fsspec-2024.5.0/fsspec/tests/test_compression.py +164 -0
  98. fsspec-2024.5.0/fsspec/tests/test_config.py +129 -0
  99. fsspec-2024.5.0/fsspec/tests/test_core.py +466 -0
  100. fsspec-2024.5.0/fsspec/tests/test_downstream.py +40 -0
  101. fsspec-2024.5.0/fsspec/tests/test_file.py +200 -0
  102. fsspec-2024.5.0/fsspec/tests/test_fuse.py +147 -0
  103. fsspec-2024.5.0/fsspec/tests/test_generic.py +90 -0
  104. fsspec-2024.5.0/fsspec/tests/test_gui.py +23 -0
  105. fsspec-2024.5.0/fsspec/tests/test_mapping.py +228 -0
  106. fsspec-2024.5.0/fsspec/tests/test_parquet.py +140 -0
  107. fsspec-2024.5.0/fsspec/tests/test_registry.py +134 -0
  108. fsspec-2024.5.0/fsspec/tests/test_spec.py +1167 -0
  109. fsspec-2024.5.0/fsspec/tests/test_utils.py +478 -0
  110. {fsspec-2024.3.1 → fsspec-2024.5.0}/fsspec/utils.py +0 -2
  111. fsspec-2024.5.0/install_s3fs.sh +13 -0
  112. fsspec-2024.5.0/pyproject.toml +196 -0
  113. fsspec-2024.5.0/readthedocs.yml +18 -0
  114. fsspec-2024.5.0/setup.cfg +54 -0
  115. fsspec-2024.3.1/MANIFEST.in +0 -5
  116. fsspec-2024.3.1/PKG-INFO +0 -167
  117. fsspec-2024.3.1/fsspec/_version.py +0 -21
  118. fsspec-2024.3.1/fsspec.egg-info/PKG-INFO +0 -167
  119. fsspec-2024.3.1/fsspec.egg-info/SOURCES.txt +0 -62
  120. fsspec-2024.3.1/fsspec.egg-info/dependency_links.txt +0 -1
  121. fsspec-2024.3.1/fsspec.egg-info/not-zip-safe +0 -1
  122. fsspec-2024.3.1/fsspec.egg-info/requires.txt +0 -89
  123. fsspec-2024.3.1/fsspec.egg-info/top_level.txt +0 -1
  124. fsspec-2024.3.1/pyproject.toml +0 -85
  125. fsspec-2024.3.1/setup.cfg +0 -56
  126. fsspec-2024.3.1/setup.py +0 -77
  127. fsspec-2024.3.1/versioneer.py +0 -2333
  128. {fsspec-2024.3.1 → fsspec-2024.5.0}/LICENSE +0 -0
  129. {fsspec-2024.3.1 → fsspec-2024.5.0}/fsspec/archive.py +0 -0
  130. {fsspec-2024.3.1 → fsspec-2024.5.0}/fsspec/asyn.py +0 -0
  131. {fsspec-2024.3.1 → fsspec-2024.5.0}/fsspec/callbacks.py +0 -0
  132. {fsspec-2024.3.1 → fsspec-2024.5.0}/fsspec/config.py +0 -0
  133. {fsspec-2024.3.1 → fsspec-2024.5.0}/fsspec/conftest.py +0 -0
  134. {fsspec-2024.3.1 → fsspec-2024.5.0}/fsspec/dircache.py +0 -0
  135. {fsspec-2024.3.1 → fsspec-2024.5.0}/fsspec/fuse.py +0 -0
  136. {fsspec-2024.3.1 → fsspec-2024.5.0}/fsspec/implementations/__init__.py +0 -0
  137. {fsspec-2024.3.1 → fsspec-2024.5.0}/fsspec/implementations/cached.py +0 -0
  138. {fsspec-2024.3.1 → fsspec-2024.5.0}/fsspec/implementations/dask.py +0 -0
  139. {fsspec-2024.3.1 → fsspec-2024.5.0}/fsspec/implementations/data.py +0 -0
  140. {fsspec-2024.3.1 → fsspec-2024.5.0}/fsspec/implementations/dbfs.py +0 -0
  141. {fsspec-2024.3.1 → fsspec-2024.5.0}/fsspec/implementations/ftp.py +0 -0
  142. {fsspec-2024.3.1 → fsspec-2024.5.0}/fsspec/implementations/git.py +0 -0
  143. {fsspec-2024.3.1 → fsspec-2024.5.0}/fsspec/implementations/github.py +0 -0
  144. {fsspec-2024.3.1 → fsspec-2024.5.0}/fsspec/implementations/jupyter.py +0 -0
  145. {fsspec-2024.3.1 → fsspec-2024.5.0}/fsspec/implementations/libarchive.py +0 -0
  146. {fsspec-2024.3.1 → fsspec-2024.5.0}/fsspec/implementations/reference.py +0 -0
  147. {fsspec-2024.3.1 → fsspec-2024.5.0}/fsspec/implementations/sftp.py +0 -0
  148. {fsspec-2024.3.1 → fsspec-2024.5.0}/fsspec/implementations/tar.py +0 -0
  149. {fsspec-2024.3.1 → fsspec-2024.5.0}/fsspec/implementations/zip.py +0 -0
  150. {fsspec-2024.3.1 → fsspec-2024.5.0}/fsspec/mapping.py +0 -0
  151. {fsspec-2024.3.1 → fsspec-2024.5.0}/fsspec/tests/abstract/__init__.py +0 -0
  152. {fsspec-2024.3.1 → fsspec-2024.5.0}/fsspec/tests/abstract/common.py +0 -0
  153. {fsspec-2024.3.1 → fsspec-2024.5.0}/fsspec/tests/abstract/copy.py +0 -0
  154. {fsspec-2024.3.1 → fsspec-2024.5.0}/fsspec/tests/abstract/get.py +0 -0
  155. {fsspec-2024.3.1 → fsspec-2024.5.0}/fsspec/tests/abstract/put.py +0 -0
  156. {fsspec-2024.3.1 → fsspec-2024.5.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.3.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,273 @@
1
+ Metadata-Version: 2.3
2
+ Name: fsspec
3
+ Version: 2024.5.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: 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-expr; extra == 'test-downstream'
128
+ Requires-Dist: dask[dataframe,test]; extra == 'test-downstream'
129
+ Requires-Dist: moto[server]<5,>4; extra == 'test-downstream'
130
+ Requires-Dist: pytest-timeout; extra == 'test-downstream'
131
+ Requires-Dist: xarray; extra == 'test-downstream'
132
+ Provides-Extra: test-full
133
+ Requires-Dist: adlfs; extra == 'test-full'
134
+ Requires-Dist: aiohttp!=4.0.0a0,!=4.0.0a1; extra == 'test-full'
135
+ Requires-Dist: cloudpickle; extra == 'test-full'
136
+ Requires-Dist: dask; extra == 'test-full'
137
+ Requires-Dist: distributed; extra == 'test-full'
138
+ Requires-Dist: dropbox; extra == 'test-full'
139
+ Requires-Dist: dropboxdrivefs; extra == 'test-full'
140
+ Requires-Dist: fastparquet; extra == 'test-full'
141
+ Requires-Dist: fusepy; extra == 'test-full'
142
+ Requires-Dist: gcsfs; extra == 'test-full'
143
+ Requires-Dist: jinja2; extra == 'test-full'
144
+ Requires-Dist: kerchunk; extra == 'test-full'
145
+ Requires-Dist: libarchive-c; extra == 'test-full'
146
+ Requires-Dist: lz4; extra == 'test-full'
147
+ Requires-Dist: notebook; extra == 'test-full'
148
+ Requires-Dist: numpy; extra == 'test-full'
149
+ Requires-Dist: ocifs; extra == 'test-full'
150
+ Requires-Dist: pandas; extra == 'test-full'
151
+ Requires-Dist: panel; extra == 'test-full'
152
+ Requires-Dist: paramiko; extra == 'test-full'
153
+ Requires-Dist: pyarrow; extra == 'test-full'
154
+ Requires-Dist: pyarrow>=1; extra == 'test-full'
155
+ Requires-Dist: pyftpdlib; extra == 'test-full'
156
+ Requires-Dist: pygit2; extra == 'test-full'
157
+ Requires-Dist: pytest; extra == 'test-full'
158
+ Requires-Dist: pytest-asyncio!=0.22.0; extra == 'test-full'
159
+ Requires-Dist: pytest-benchmark; extra == 'test-full'
160
+ Requires-Dist: pytest-cov; extra == 'test-full'
161
+ Requires-Dist: pytest-mock; extra == 'test-full'
162
+ Requires-Dist: pytest-recording; extra == 'test-full'
163
+ Requires-Dist: pytest-rerunfailures; extra == 'test-full'
164
+ Requires-Dist: python-snappy; extra == 'test-full'
165
+ Requires-Dist: requests; extra == 'test-full'
166
+ Requires-Dist: smbprotocol; extra == 'test-full'
167
+ Requires-Dist: tqdm; extra == 'test-full'
168
+ Requires-Dist: urllib3; extra == 'test-full'
169
+ Requires-Dist: zarr; extra == 'test-full'
170
+ Requires-Dist: zstandard; extra == 'test-full'
171
+ Provides-Extra: tqdm
172
+ Requires-Dist: tqdm; extra == 'tqdm'
173
+ Description-Content-Type: text/markdown
174
+
175
+ # filesystem_spec
176
+
177
+ [![PyPI version](https://badge.fury.io/py/fsspec.svg)](https://pypi.python.org/pypi/fsspec/)
178
+ [![Anaconda-Server Badge](https://anaconda.org/conda-forge/fsspec/badges/version.svg)](https://anaconda.org/conda-forge/fsspec)
179
+ ![Build](https://github.com/fsspec/filesystem_spec/workflows/CI/badge.svg)
180
+ [![Docs](https://readthedocs.org/projects/filesystem-spec/badge/?version=latest)](https://filesystem-spec.readthedocs.io/en/latest/?badge=latest)
181
+ [![PyPi downloads](https://img.shields.io/pypi/dm/fsspec?label=pypi%20downloads&style=flat)](https://pepy.tech/project/fsspec)
182
+
183
+ A specification for pythonic filesystems.
184
+
185
+ ## Install
186
+
187
+ ```bash
188
+ pip install fsspec
189
+ ```
190
+
191
+ would install the base fsspec. Various optionally supported features might require specification of custom
192
+ extra require, e.g. `pip install fsspec[ssh]` will install dependencies for `ssh` backends support.
193
+ Use `pip install fsspec[full]` for installation of all known extra dependencies.
194
+
195
+ Up-to-date package also provided through conda-forge distribution:
196
+
197
+ ```bash
198
+ conda install -c conda-forge fsspec
199
+ ```
200
+
201
+
202
+ ## Purpose
203
+
204
+ To produce a template or specification for a file-system interface, that specific implementations should follow,
205
+ so that applications making use of them can rely on a common behaviour and not have to worry about the specific
206
+ internal implementation decisions with any given backend. Many such implementations are included in this package,
207
+ or in sister projects such as `s3fs` and `gcsfs`.
208
+
209
+ In addition, if this is well-designed, then additional functionality, such as a key-value store or FUSE
210
+ mounting of the file-system implementation may be available for all implementations "for free".
211
+
212
+ ## Documentation
213
+
214
+ Please refer to [RTD](https://filesystem-spec.readthedocs.io/en/latest/?badge=latest)
215
+
216
+ ## Develop
217
+
218
+ fsspec uses GitHub Actions for CI. Environment files can be found
219
+ in the "ci/" directory. Note that the main environment is called "py38",
220
+ but it is expected that the version of python installed be adjustable at
221
+ CI runtime. For local use, pick a version suitable for you.
222
+
223
+ ```bash
224
+ # For a new environment (mamba / conda).
225
+ mamba create -n fsspec -c conda-forge python=3.9 -y
226
+ conda activate fsspec
227
+
228
+ # Standard dev test install.
229
+ pip install -e ".[dev,test]"
230
+
231
+ # Full tests except for downstream
232
+ pip install s3fs
233
+ pip uninstall s3fs
234
+ pip install -e .[dev,test_full]
235
+ pip install s3fs --no-deps
236
+ pytest -v
237
+
238
+ # Downstream tests.
239
+ sh install_s3fs.sh
240
+ # Windows powershell.
241
+ install_s3fs.sh
242
+ ```
243
+
244
+ ### Testing
245
+
246
+ Tests can be run in the dev environment, if activated, via ``pytest fsspec``.
247
+
248
+ The full fsspec suite requires a system-level docker, docker-compose, and fuse
249
+ installation. If only making changes to one backend implementation, it is
250
+ not generally necessary to run all tests locally.
251
+
252
+ It is expected that contributors ensure that any change to fsspec does not
253
+ cause issues or regressions for either other fsspec-related packages such
254
+ as gcsfs and s3fs, nor for downstream users of fsspec. The "downstream" CI
255
+ run and corresponding environment file run a set of tests from the dask
256
+ test suite, and very minimal tests against pandas and zarr from the
257
+ test_downstream.py module in this repo.
258
+
259
+ ### Code Formatting
260
+
261
+ fsspec uses [Black](https://black.readthedocs.io/en/stable) to ensure
262
+ a consistent code format throughout the project.
263
+ Run ``black fsspec`` from the root of the filesystem_spec repository to
264
+ auto-format your code. Additionally, many editors have plugins that will apply
265
+ ``black`` as you edit files. ``black`` is included in the ``tox`` environments.
266
+
267
+ Optionally, you may wish to setup [pre-commit hooks](https://pre-commit.com) to
268
+ automatically run ``black`` when you make a git commit.
269
+ Run ``pre-commit install --install-hooks`` from the root of the
270
+ filesystem_spec repository to setup pre-commit hooks. ``black`` will now be run
271
+ before you commit, reformatting any changed files. You can format without
272
+ committing via ``pre-commit run`` or skip these checks with ``git commit
273
+ --no-verify``.
@@ -46,6 +46,27 @@ in the "ci/" directory. Note that the main environment is called "py38",
46
46
  but it is expected that the version of python installed be adjustable at
47
47
  CI runtime. For local use, pick a version suitable for you.
48
48
 
49
+ ```bash
50
+ # For a new environment (mamba / conda).
51
+ mamba create -n fsspec -c conda-forge python=3.9 -y
52
+ conda activate fsspec
53
+
54
+ # Standard dev test install.
55
+ pip install -e ".[dev,test]"
56
+
57
+ # Full tests except for downstream
58
+ pip install s3fs
59
+ pip uninstall s3fs
60
+ pip install -e .[dev,test_full]
61
+ pip install s3fs --no-deps
62
+ pytest -v
63
+
64
+ # Downstream tests.
65
+ sh install_s3fs.sh
66
+ # Windows powershell.
67
+ install_s3fs.sh
68
+ ```
69
+
49
70
  ### Testing
50
71
 
51
72
  Tests can be run in the dev environment, if activated, via ``pytest fsspec``.
@@ -0,0 +1,7 @@
1
+ name: test_env
2
+ channels:
3
+ - conda-forge
4
+ dependencies:
5
+ - python=3.9
6
+ - pip:
7
+ - git+https://github.com/dask/dask