-
Notifications
You must be signed in to change notification settings - Fork 16
Expand file tree
/
Copy pathpyproject.toml
More file actions
106 lines (102 loc) · 3.82 KB
/
pyproject.toml
File metadata and controls
106 lines (102 loc) · 3.82 KB
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
[build-system]
build-backend = "hatchling.build"
requires = [ "hatchling" ]
[project]
name = "scverse-tutorials"
version = "0.0.1"
description = "Tutorials for single-cell analysis with scverse packages"
readme = "README.md"
license = "BSD-3-Clause"
maintainers = [ { name = "scverse team", email = "core-team@scverse.org" } ]
authors = [ { name = "scverse team" } ]
requires-python = ">=3.13"
classifiers = [
"Private :: Do Not Upload", # Prevent uploading to PyPI
"Programming Language :: Python :: 3 :: Only",
"Programming Language :: Python :: 3.13",
"Programming Language :: Python :: 3.14",
]
optional-dependencies.dev = [ "pre-commit" ]
optional-dependencies.docs = [
# For notebooks
"ipykernel",
"ipython",
"myst-nb>=1.1",
"sphinx>=9",
"sphinx-autodoc-typehints",
"sphinx-book-theme>=1.1",
"sphinx-copybutton",
"sphinx-issues>=5.0.1",
"sphinxcontrib-bibtex>=1",
"sphinxext-opengraph",
]
optional-dependencies.registry = [ "httpx", "jsonschema", "pillow", "pyyaml" ]
urls.Documentation = "https://scverse.org/scverse-tutorials"
urls.Home-page = "https://github.com/scverse/scverse-tutorials"
urls.Source = "https://github.com/scverse/scverse-tutorials"
[tool.hatch]
build.targets.wheel.bypass-selection = true # This is not a package
envs.default.installer = "uv"
envs.default.features = [ "dev" ]
envs.docs.features = [ "docs" ]
envs.docs.extra-dependencies = [
# fix from here: https://github.com/executablebooks/MyST-NB/pull/597
"myst-nb @ git+https://github.com/flying-sheep/MyST-NB.git@eval-metadata",
]
envs.docs.scripts.build = "sphinx-build -M html docs docs/_build {args}"
envs.docs.scripts.open = "python3 -m webbrowser -t docs/_build/html/index.html"
envs.docs.scripts.clean = "git clean -fdX -- {args:docs}"
envs.registry.features = [ "registry" ]
envs.registry.scripts.validate = "python tutorial-registry/validate.py {args}"
[tool.ruff]
line-length = 120
src = [ "src" ]
extend-include = [ "*.ipynb" ]
format.docstring-code-format = true
lint.select = [
"B", # flake8-bugbear
"BLE", # flake8-blind-except
"C4", # flake8-comprehensions
"D", # pydocstyle
"E", # Error detected by Pycodestyle
"F", # Errors detected by Pyflakes
"I", # isort
"RUF100", # Report unused noqa directives
"TID", # flake8-tidy-imports
"UP", # pyupgrade
"W", # Warning detected by Pycodestyle
]
lint.ignore = [
"B008", # Errors from function calls in argument defaults. These are fine when the result is immutable.
"C408", # dict() is nice for some use cases
"D100", # Missing docstring in public module
"D104", # Missing docstring in public package
"D105", # __magic__ methods are often self-explanatory, allow missing docstrings
"D107", # Missing docstring in __init__
# Disable one in each pair of mutually incompatible rules
"D203", # We don’t want a blank line before a class docstring
"D213", # <> We want docstrings to start immediately after the opening triple quote
"D400", # first line should end with a period [Bug: doesn’t work with single-line docstrings]
"D401", # First line should be in imperative mood; try rephrasing
"E501", # line too long -> we accept long comment lines; formatter gets rid of long code lines
"E731", # Do not assign a lambda expression, use a def -> lambda expression assignments are convenient
"E741", # allow I, O, l as variable names -> I is the identity matrix
]
lint.per-file-ignores."docs/**" = [
"B018", # Trailing expressions in notebooks are not “useless”
"D103", # No need for docstrings in functions, we use literate programming
"E402", # Imports in non-top cells are fine
]
lint.pydocstyle.convention = "numpy"
[tool.cruft]
skip = [
".github/ISSUE_TEMPLATE",
"environment.yml",
"*.md",
"src",
"docs/*.md",
"docs/notebooks",
"docs/references.bib",
"tests",
"tutorial-registry",
]