fsspec 2024.3.0__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.
- fsspec-2024.5.0/.codespellrc +8 -0
- fsspec-2024.5.0/.coveragerc +19 -0
- fsspec-2024.5.0/.gitattributes +1 -0
- fsspec-2024.5.0/.github/workflows/codespell.yml +19 -0
- fsspec-2024.5.0/.github/workflows/main.yaml +164 -0
- fsspec-2024.5.0/.github/workflows/pypipublish.yaml +26 -0
- fsspec-2024.5.0/.gitignore +124 -0
- fsspec-2024.5.0/.pre-commit-config.yaml +23 -0
- fsspec-2024.5.0/PKG-INFO +273 -0
- {fsspec-2024.3.0 → fsspec-2024.5.0}/README.md +21 -0
- fsspec-2024.5.0/ci/environment-downstream.yml +7 -0
- fsspec-2024.5.0/ci/environment-friends.yml +29 -0
- fsspec-2024.5.0/ci/environment-py38.yml +10 -0
- fsspec-2024.5.0/ci/environment-typecheck.yml +15 -0
- fsspec-2024.5.0/ci/environment-win.yml +5 -0
- fsspec-2024.5.0/docs/Makefile +20 -0
- fsspec-2024.5.0/docs/README.md +12 -0
- fsspec-2024.5.0/docs/environment.yml +11 -0
- fsspec-2024.5.0/docs/make.bat +36 -0
- fsspec-2024.5.0/docs/source/_static/custom.css +5 -0
- fsspec-2024.5.0/docs/source/api.rst +291 -0
- fsspec-2024.5.0/docs/source/async.rst +154 -0
- fsspec-2024.5.0/docs/source/changelog.rst +992 -0
- fsspec-2024.5.0/docs/source/conf.py +193 -0
- fsspec-2024.5.0/docs/source/copying.rst +348 -0
- fsspec-2024.5.0/docs/source/developer.rst +126 -0
- fsspec-2024.5.0/docs/source/features.rst +410 -0
- fsspec-2024.5.0/docs/source/img/gui.png +0 -0
- fsspec-2024.5.0/docs/source/index.rst +126 -0
- fsspec-2024.5.0/docs/source/intro.rst +99 -0
- fsspec-2024.5.0/docs/source/usage.rst +124 -0
- {fsspec-2024.3.0 → fsspec-2024.5.0}/fsspec/__init__.py +2 -3
- fsspec-2024.5.0/fsspec/_version.py +16 -0
- {fsspec-2024.3.0 → fsspec-2024.5.0}/fsspec/caching.py +83 -14
- {fsspec-2024.3.0 → fsspec-2024.5.0}/fsspec/compression.py +1 -0
- {fsspec-2024.3.0 → fsspec-2024.5.0}/fsspec/core.py +31 -6
- {fsspec-2024.3.0 → fsspec-2024.5.0}/fsspec/exceptions.py +1 -0
- {fsspec-2024.3.0 → fsspec-2024.5.0}/fsspec/generic.py +1 -1
- {fsspec-2024.3.0 → fsspec-2024.5.0}/fsspec/gui.py +1 -1
- {fsspec-2024.3.0 → fsspec-2024.5.0}/fsspec/implementations/arrow.py +0 -2
- {fsspec-2024.3.0 → fsspec-2024.5.0}/fsspec/implementations/cache_mapper.py +1 -2
- {fsspec-2024.3.0 → fsspec-2024.5.0}/fsspec/implementations/cache_metadata.py +7 -7
- {fsspec-2024.3.0 → fsspec-2024.5.0}/fsspec/implementations/dirfs.py +2 -2
- {fsspec-2024.3.0 → fsspec-2024.5.0}/fsspec/implementations/http.py +9 -9
- {fsspec-2024.3.0 → fsspec-2024.5.0}/fsspec/implementations/local.py +97 -48
- {fsspec-2024.3.0 → fsspec-2024.5.0}/fsspec/implementations/memory.py +9 -0
- {fsspec-2024.3.0 → fsspec-2024.5.0}/fsspec/implementations/smb.py +3 -1
- fsspec-2024.5.0/fsspec/implementations/tests/__init__.py +0 -0
- fsspec-2024.5.0/fsspec/implementations/tests/cassettes/test_dbfs/test_dbfs_file_listing.yaml +112 -0
- fsspec-2024.5.0/fsspec/implementations/tests/cassettes/test_dbfs/test_dbfs_mkdir.yaml +582 -0
- fsspec-2024.5.0/fsspec/implementations/tests/cassettes/test_dbfs/test_dbfs_read_pyarrow_non_partitioned.yaml +873 -0
- fsspec-2024.5.0/fsspec/implementations/tests/cassettes/test_dbfs/test_dbfs_read_range.yaml +458 -0
- fsspec-2024.5.0/fsspec/implementations/tests/cassettes/test_dbfs/test_dbfs_read_range_chunked.yaml +1355 -0
- fsspec-2024.5.0/fsspec/implementations/tests/cassettes/test_dbfs/test_dbfs_write_and_read.yaml +795 -0
- fsspec-2024.5.0/fsspec/implementations/tests/cassettes/test_dbfs/test_dbfs_write_pyarrow_non_partitioned.yaml +613 -0
- fsspec-2024.5.0/fsspec/implementations/tests/conftest.py +39 -0
- fsspec-2024.5.0/fsspec/implementations/tests/local/__init__.py +0 -0
- fsspec-2024.5.0/fsspec/implementations/tests/local/local_fixtures.py +18 -0
- fsspec-2024.5.0/fsspec/implementations/tests/local/local_test.py +14 -0
- fsspec-2024.5.0/fsspec/implementations/tests/memory/__init__.py +0 -0
- fsspec-2024.5.0/fsspec/implementations/tests/memory/memory_fixtures.py +27 -0
- fsspec-2024.5.0/fsspec/implementations/tests/memory/memory_test.py +14 -0
- fsspec-2024.5.0/fsspec/implementations/tests/out.zip +0 -0
- fsspec-2024.5.0/fsspec/implementations/tests/test_archive.py +382 -0
- fsspec-2024.5.0/fsspec/implementations/tests/test_arrow.py +259 -0
- fsspec-2024.5.0/fsspec/implementations/tests/test_cached.py +1306 -0
- fsspec-2024.5.0/fsspec/implementations/tests/test_common.py +35 -0
- fsspec-2024.5.0/fsspec/implementations/tests/test_dask.py +29 -0
- fsspec-2024.5.0/fsspec/implementations/tests/test_data.py +20 -0
- fsspec-2024.5.0/fsspec/implementations/tests/test_dbfs.py +268 -0
- fsspec-2024.5.0/fsspec/implementations/tests/test_dirfs.py +588 -0
- fsspec-2024.5.0/fsspec/implementations/tests/test_ftp.py +178 -0
- fsspec-2024.5.0/fsspec/implementations/tests/test_git.py +76 -0
- fsspec-2024.5.0/fsspec/implementations/tests/test_http.py +577 -0
- fsspec-2024.5.0/fsspec/implementations/tests/test_jupyter.py +57 -0
- fsspec-2024.5.0/fsspec/implementations/tests/test_libarchive.py +33 -0
- fsspec-2024.5.0/fsspec/implementations/tests/test_local.py +1285 -0
- fsspec-2024.5.0/fsspec/implementations/tests/test_memory.py +382 -0
- fsspec-2024.5.0/fsspec/implementations/tests/test_reference.py +720 -0
- fsspec-2024.5.0/fsspec/implementations/tests/test_sftp.py +233 -0
- fsspec-2024.5.0/fsspec/implementations/tests/test_smb.py +139 -0
- fsspec-2024.5.0/fsspec/implementations/tests/test_tar.py +243 -0
- fsspec-2024.5.0/fsspec/implementations/tests/test_webhdfs.py +197 -0
- fsspec-2024.5.0/fsspec/implementations/tests/test_zip.py +134 -0
- {fsspec-2024.3.0 → fsspec-2024.5.0}/fsspec/implementations/webhdfs.py +1 -3
- {fsspec-2024.3.0 → fsspec-2024.5.0}/fsspec/mapping.py +2 -2
- {fsspec-2024.3.0 → fsspec-2024.5.0}/fsspec/parquet.py +0 -8
- {fsspec-2024.3.0 → fsspec-2024.5.0}/fsspec/registry.py +4 -0
- {fsspec-2024.3.0 → fsspec-2024.5.0}/fsspec/spec.py +21 -4
- fsspec-2024.5.0/fsspec/tests/__init__.py +0 -0
- fsspec-2024.5.0/fsspec/tests/abstract/mv.py +57 -0
- fsspec-2024.5.0/fsspec/tests/conftest.py +188 -0
- fsspec-2024.5.0/fsspec/tests/data/listing.html +1 -0
- fsspec-2024.5.0/fsspec/tests/test_api.py +498 -0
- fsspec-2024.5.0/fsspec/tests/test_async.py +230 -0
- fsspec-2024.5.0/fsspec/tests/test_caches.py +255 -0
- fsspec-2024.5.0/fsspec/tests/test_callbacks.py +89 -0
- fsspec-2024.5.0/fsspec/tests/test_compression.py +164 -0
- fsspec-2024.5.0/fsspec/tests/test_config.py +129 -0
- fsspec-2024.5.0/fsspec/tests/test_core.py +466 -0
- fsspec-2024.5.0/fsspec/tests/test_downstream.py +40 -0
- fsspec-2024.5.0/fsspec/tests/test_file.py +200 -0
- fsspec-2024.5.0/fsspec/tests/test_fuse.py +147 -0
- fsspec-2024.5.0/fsspec/tests/test_generic.py +90 -0
- fsspec-2024.5.0/fsspec/tests/test_gui.py +23 -0
- fsspec-2024.5.0/fsspec/tests/test_mapping.py +228 -0
- fsspec-2024.5.0/fsspec/tests/test_parquet.py +140 -0
- fsspec-2024.5.0/fsspec/tests/test_registry.py +134 -0
- fsspec-2024.5.0/fsspec/tests/test_spec.py +1167 -0
- fsspec-2024.5.0/fsspec/tests/test_utils.py +478 -0
- {fsspec-2024.3.0 → fsspec-2024.5.0}/fsspec/utils.py +0 -2
- fsspec-2024.5.0/install_s3fs.sh +13 -0
- fsspec-2024.5.0/pyproject.toml +196 -0
- fsspec-2024.5.0/readthedocs.yml +18 -0
- fsspec-2024.5.0/setup.cfg +54 -0
- fsspec-2024.3.0/MANIFEST.in +0 -5
- fsspec-2024.3.0/PKG-INFO +0 -167
- fsspec-2024.3.0/fsspec/_version.py +0 -21
- fsspec-2024.3.0/fsspec.egg-info/PKG-INFO +0 -167
- fsspec-2024.3.0/fsspec.egg-info/SOURCES.txt +0 -62
- fsspec-2024.3.0/fsspec.egg-info/dependency_links.txt +0 -1
- fsspec-2024.3.0/fsspec.egg-info/not-zip-safe +0 -1
- fsspec-2024.3.0/fsspec.egg-info/requires.txt +0 -89
- fsspec-2024.3.0/fsspec.egg-info/top_level.txt +0 -1
- fsspec-2024.3.0/pyproject.toml +0 -85
- fsspec-2024.3.0/setup.cfg +0 -56
- fsspec-2024.3.0/setup.py +0 -77
- fsspec-2024.3.0/versioneer.py +0 -2333
- {fsspec-2024.3.0 → fsspec-2024.5.0}/LICENSE +0 -0
- {fsspec-2024.3.0 → fsspec-2024.5.0}/fsspec/archive.py +0 -0
- {fsspec-2024.3.0 → fsspec-2024.5.0}/fsspec/asyn.py +0 -0
- {fsspec-2024.3.0 → fsspec-2024.5.0}/fsspec/callbacks.py +0 -0
- {fsspec-2024.3.0 → fsspec-2024.5.0}/fsspec/config.py +0 -0
- {fsspec-2024.3.0 → fsspec-2024.5.0}/fsspec/conftest.py +0 -0
- {fsspec-2024.3.0 → fsspec-2024.5.0}/fsspec/dircache.py +0 -0
- {fsspec-2024.3.0 → fsspec-2024.5.0}/fsspec/fuse.py +0 -0
- {fsspec-2024.3.0 → fsspec-2024.5.0}/fsspec/implementations/__init__.py +0 -0
- {fsspec-2024.3.0 → fsspec-2024.5.0}/fsspec/implementations/cached.py +0 -0
- {fsspec-2024.3.0 → fsspec-2024.5.0}/fsspec/implementations/dask.py +0 -0
- {fsspec-2024.3.0 → fsspec-2024.5.0}/fsspec/implementations/data.py +0 -0
- {fsspec-2024.3.0 → fsspec-2024.5.0}/fsspec/implementations/dbfs.py +0 -0
- {fsspec-2024.3.0 → fsspec-2024.5.0}/fsspec/implementations/ftp.py +0 -0
- {fsspec-2024.3.0 → fsspec-2024.5.0}/fsspec/implementations/git.py +0 -0
- {fsspec-2024.3.0 → fsspec-2024.5.0}/fsspec/implementations/github.py +0 -0
- {fsspec-2024.3.0 → fsspec-2024.5.0}/fsspec/implementations/jupyter.py +0 -0
- {fsspec-2024.3.0 → fsspec-2024.5.0}/fsspec/implementations/libarchive.py +0 -0
- {fsspec-2024.3.0 → fsspec-2024.5.0}/fsspec/implementations/reference.py +0 -0
- {fsspec-2024.3.0 → fsspec-2024.5.0}/fsspec/implementations/sftp.py +0 -0
- {fsspec-2024.3.0 → fsspec-2024.5.0}/fsspec/implementations/tar.py +0 -0
- {fsspec-2024.3.0 → fsspec-2024.5.0}/fsspec/implementations/zip.py +0 -0
- {fsspec-2024.3.0 → fsspec-2024.5.0}/fsspec/tests/abstract/__init__.py +0 -0
- {fsspec-2024.3.0 → fsspec-2024.5.0}/fsspec/tests/abstract/common.py +0 -0
- {fsspec-2024.3.0 → fsspec-2024.5.0}/fsspec/tests/abstract/copy.py +0 -0
- {fsspec-2024.3.0 → fsspec-2024.5.0}/fsspec/tests/abstract/get.py +0 -0
- {fsspec-2024.3.0 → fsspec-2024.5.0}/fsspec/tests/abstract/put.py +0 -0
- {fsspec-2024.3.0 → 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]
|
fsspec-2024.5.0/PKG-INFO
ADDED
|
@@ -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
|
+
[](https://pypi.python.org/pypi/fsspec/)
|
|
178
|
+
[](https://anaconda.org/conda-forge/fsspec)
|
|
179
|
+

|
|
180
|
+
[](https://filesystem-spec.readthedocs.io/en/latest/?badge=latest)
|
|
181
|
+
[](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``.
|