| [build-system] |
| requires = [ |
| "setuptools==80.9.0", |
| ] |
| build-backend = "setuptools.build_meta" |
| |
| [project] |
| dynamic = ["version"] |
| name = "ds_store" |
| description = "Manipulate Finder .DS_Store files from Python" |
| readme = "README.rst" |
| requires-python = ">= 3.10" |
| license = "MIT" |
| license-files = [ |
| "LICENSE", |
| ] |
| authors = [ |
| {name="Alastair Houghton", email="alastair@alastairs-place.net"} |
| ] |
| maintainers = [ |
| {name="Russell Keith-Magee", email="russell@keith-magee.com"} |
| ] |
| keywords = [ |
| "DS_Store" |
| ] |
| classifiers = [ |
| "Development Status :: 5 - Production/Stable", |
| "Programming Language :: Python :: 3", |
| "Programming Language :: Python :: 3.10", |
| "Programming Language :: Python :: 3.11", |
| "Programming Language :: Python :: 3.12", |
| "Programming Language :: Python :: 3.13", |
| "Programming Language :: Python :: 3.14", |
| "Programming Language :: Python :: 3.15", |
| "Programming Language :: Python :: 3 :: Only", |
| "Topic :: Desktop Environment", |
| "Topic :: Software Development :: Libraries :: Python Modules", |
| ] |
| dependencies = [ |
| "mac_alias >= 2.2.2", |
| ] |
| |
| [project.urls] |
| Documentation = "https://ds-store.readthedocs.io/en/latest/" |
| Homepage = "https://github.com/dmgbuild/ds_store" |
| Tracker = "https://github.com/dmgbuild/ds_store/issues" |
| Source = "https://github.com/dmgbuild/ds_store" |
| |
| [project.scripts] |
| ds_store = "ds_store.__main__:main" |
| |
| [dependency-groups] |
| package = [ |
| "build == 1.3.0", |
| "twine == 6.2.0", |
| ] |
| |
| pre-commit = [ |
| "prek == 0.2.23", |
| ] |
| |
| test = [ |
| "coverage == 7.13.0", |
| "pytest == 9.0.2", |
| ] |
| |
| tox = [ |
| "tox-uv == 1.29.0" |
| ] |
| |
| dev = [ |
| {include-group = "pre-commit"}, |
| {include-group = "test"}, |
| {include-group = "tox"}, |
| ] |
| |
| # Docs are always built on Py3.12; see RTD and tox config files. |
| docs = [ |
| "furo == 2025.12.19", |
| "sphinx == 8.2.3", |
| ] |
| |
| [tool.setuptools.dynamic] |
| version = {attr = "ds_store.__version__"} |
| |
| [tool.coverage.run] |
| branch = true |
| relative_files = true |
| source_pkgs = ["ds_store"] |
| |
| [tool.coverage.paths] |
| source = [ |
| "src", |
| "**/site-packages", |
| ] |
| |
| [tool.coverage.report] |
| show_missing = true |
| skip_covered = true |
| skip_empty = true |
| precision = 1 |
| exclude_lines = [ |
| "pragma: no cover", |
| "@(abc\\.)?abstractmethod", |
| "NotImplementedError\\(\\)", |
| "if TYPE_CHECKING:", |
| ] |
| |
| |
| [tool.ruff.lint] |
| # In addition to the default rules, these additional rules will be used: |
| extend-select = [ |
| "E", # pycodestyle |
| "W", # pycodestyle |
| "F", # pyflakes |
| "UP", # pyupgrade |
| # "B", # flake8-bugbear |
| "YTT", # flake8-2020 |
| "ASYNC", # flake8-async |
| "C4", # flake8-comprehensions |
| "I", # isort |
| # "RUF", # ruff-specific rules |
| "PT", # flake8-pytest-style |
| "FURB", # refurb |
| "ISC", # flake8-implicit-str-concat |
| "PGH", # pygrep-hooks |
| "T20", # flake8-print |
| "PIE", # flake8-pie |
| # "SIM", # flake8-simplify |
| ] |
| |
| [tool.ruff.lint.per-file-ignores] |
| # E501: line too long |
| "tests/examples/settings.py" = ["E501"] |