1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190
|
# --- Project configuration -------------------------------------------------
[metadata]
version = attr: fs._version.__version__
name = fs
author = Will McGugan
author_email = will@willmcgugan.com
maintainer = Martin Larralde
maintainer_email = martin.larralde@embl.de
url = https://github.com/PyFilesystem/pyfilesystem2
license = MIT
license_file = LICENSE
description = Python's filesystem abstraction layer
long_description = file: README.md
long_description_content_type = text/markdown
platform = any
classifiers =
Development Status :: 5 - Production/Stable
Intended Audience :: Developers
License :: OSI Approved :: MIT License
Operating System :: OS Independent
Programming Language :: Python
Programming Language :: Python :: 2.7
Programming Language :: Python :: 3.5
Programming Language :: Python :: 3.6
Programming Language :: Python :: 3.7
Programming Language :: Python :: 3.8
Programming Language :: Python :: 3.9
Programming Language :: Python :: 3.10
Programming Language :: Python :: Implementation :: CPython
Programming Language :: Python :: Implementation :: PyPy
Topic :: System :: Filesystems
Typing :: Typed
project_urls =
Bug Reports = https://github.com/PyFilesystem/pyfilesystem2/issues
Documentation = https://pyfilesystem2.readthedocs.io/en/latest/
Wiki = https://www.pyfilesystem.org/
[options]
zip_safe = false
packages = find:
setup_requires =
setuptools >=38.3.0
install_requires =
platformdirs >= 4
setuptools ; python_version < '3.8'
enum34 ~=1.1.6 ; python_version < '3.4'
typing ~=3.6 ; python_version < '3.6'
backports.os ~=0.1 ; python_version < '3.0'
[options.extras_require]
scandir =
scandir~=1.5 ; python_version < '3.5'
[options.packages.find]
exclude = tests
[options.package_data]
fs = py.typed
[bdist_wheel]
universal = 1
# --- Individual linter configuration ---------------------------------------
[pydocstyle]
inherit = false
ignore = D102,D105,D200,D203,D213,D406,D407
match-dir = (?!tests)(?!docs)[^\.].*
match = (?!test)(?!setup)[^\._].*\.py
[mypy]
ignore_missing_imports = true
[mypy-fs.*]
disallow_any_decorated = false
disallow_any_generics = false
disallow_any_unimported = true
disallow_subclassing_any = true
disallow_untyped_calls = false
disallow_untyped_defs = false
ignore_missing_imports = false
warn_unused_ignores = false
warn_return_any = false
[mypy-fs.test]
disallow_untyped_defs = false
[flake8]
extend-ignore = E203,E402,W503
max-line-length = 88
per-file-ignores =
fs/__init__.py:F401
fs/*/__init__.py:F401
tests/*:E501
fs/opener/*:F811
fs/_fscompat.py:F401
fs/_pathcompat.py:C401
[isort]
default_section = THIRDPARTY
known_first_party = fs
known_standard_library = sys, typing
line_length = 88
profile = black
skip_gitignore = true
# --- Test and coverage configuration ------------------------------------------
[coverage:run]
branch = true
omit = fs/test.py
source = fs
relative_files = true
parallel = true
[coverage:report]
show_missing = true
skip_covered = true
exclude_lines =
pragma: no cover
if False:
it typing.TYPE_CHECKING:
@typing.overload
@overload
[tool:pytest]
markers =
slow: marks tests as slow (deselect with '-m "not slow"')
# --- Tox automation configuration ---------------------------------------------
[tox:tox]
envlist = py{27,34}{,-scandir}, py{35,36,37,38,39,310}, pypy{27,36,37}, typecheck, codestyle, docstyle, codeformat
sitepackages = false
skip_missing_interpreters = true
requires =
setuptools >=38.3.0
[testenv]
commands = python -m coverage run --rcfile {toxinidir}/setup.cfg -m pytest {posargs} {toxinidir}/tests
deps =
-rtests/requirements.txt
coverage~=5.0
py{35,36,37,38,39,310,py36,py37}: pytest~=6.0
py{27,34,py27}: pytest~=4.6
py{35,36,37,38,39,310,py36,py37}: pytest-randomly~=3.5
py{27,34,py27}: pytest-randomly~=1.2
scandir: .[scandir]
!scandir: .
[testenv:typecheck]
commands = mypy --config-file {toxinidir}/setup.cfg {toxinidir}/fs
deps =
.
mypy==0.800
[testenv:codestyle]
commands = flake8 --config={toxinidir}/setup.cfg {toxinidir}/fs {toxinidir}/tests
deps =
flake8==3.7.9
#flake8-builtins==1.5.3
flake8-bugbear==19.8.0
flake8-comprehensions==3.1.4
flake8-mutable==1.2.0
flake8-tuple==0.4.0
[testenv:codeformat]
commands = black --check {toxinidir}/fs
deps =
black==22.3.0
[testenv:docstyle]
commands = pydocstyle --config={toxinidir}/setup.cfg {toxinidir}/fs
deps =
pydocstyle==5.1.1
[gh-actions]
python =
2.7: py27, py27-scandir
3.4: py34, py34-scandir
3.5: py35
3.6: py36
3.7: py37
3.8: py38
3.9: py39
3.10: py310
pypy-2.7: pypy27
pypy-3.6: pypy36
pypy-3.7: pypy37
|