-
Notifications
You must be signed in to change notification settings - Fork 239
/
pyproject.toml
138 lines (123 loc) · 4.07 KB
/
pyproject.toml
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
[build-system]
requires = ["scikit-build-core"]
build-backend = "scikit_build_core.build"
[project]
name = "ogs"
dynamic = ["version", "scripts"]
description = "OpenGeoSys Python wheel"
readme = "README.md"
license = { file = "LICENSE.txt" }
authors = [{ email = "info@opengeosys.org" }, { name = "OpenGeoSys Community" }]
requires-python = ">=3.9"
dependencies = ["pandas"]
[project.urls]
homepage = "https://opengeosys.org"
documentation = "https://opengeosys.org/docs"
repository = "https://gitlab.opengeosys.org/ogs/ogs"
changelog = "https://gitlab.opengeosys.org/ogs/ogs/-/blob/master/CHANGELOG.md"
[project.optional-dependencies]
test = ["pytest", "numpy<2"]
[tool.scikit-build]
build-dir = "_skbuild/{wheel_tag}"
cmake.args = ["--preset", "wheel"]
cmake.minimum-version = "3.22.0"
experimental = true
metadata.version.provider = "scikit_build_core.metadata.setuptools_scm"
minimum-version = "0.5.0"
ninja.make-fallback = false
wheel.packages = ["Applications/Python/ogs"]
sdist.exclude = ["Tests/Data", "web"]
sdist.include = ["web/data/versions.json"]
[tool.scikit-build.metadata.scripts]
provider = "scripts"
provider-path = "scripts/python/scikit-build-plugins"
[tool.setuptools_scm]
write_to = "Applications/Python/_version.py"
write_to_template = '__version__ = "{version}"'
version_scheme = "guess-next-dev"
git_describe_command = 'git describe --dirty --tags --long --match "*[0-9]*" --abbrev=8'
# local_scheme should be node-and-date by default and no-local-version in CI.
# Unfortunately setting via env var does not work.
# See https://github.com/pypa/setuptools_scm/issues/455.
local_scheme = "no-local-version"
[tool.pytest.ini_options]
testpaths = ["Tests"]
python_files = ["test_*.py"]
[tool.cibuildwheel]
archs = "auto64"
build = ["cp3{9,10,11,12}-*"]
skip = ["*musllinux*"]
test-extras = "test"
test-command = "pytest {project}/Tests/Python"
build-verbosity = 1
[tool.cibuildwheel.linux]
manylinux-x86_64-image = "quay.io/pypa/manylinux_2_28_x86_64"
before-all = "dnf install -y epel-release && dnf install -y ccache"
# See https://github.com/NixOS/patchelf/issues/446, wait for patchelf 0.19
before-build = "pipx install --force 'patchelf<0.17'"
environment-pass = [
"SETUPTOOLS_SCM_LOCAL_SCHEME",
"CPM_SOURCE_CACHE",
"CCACHE_DIR",
"CCACHE_MAXSIZE",
"CMAKE_ARGS",
]
[tool.cibuildwheel.linux.config-settings]
"cmake.define.OGS_CPU_ARCHITECTURE" = "sandybridge"
# maybe this should be moved to CMake logic, i.e. disabling both features on win
[tool.cibuildwheel.windows.config-settings]
"cmake.define.OGS_USE_MFRONT" = "OFF"
# Generator needs to be set here, CMAKE_GENERATOR env var does not work.
# Ninja generator does not select the host64 compiler.
"cmake.args" = "-G;Visual Studio 17 2022;--preset;wheel"
[tool.ruff]
include = ["*.py", "*.pyi", "**/pyproject.toml", "*.ipynb"]
exclude = ["scripts/doc", "*ci-skip*"]
line-length = 80
[tool.ruff.lint]
select = [
"E",
"F",
"W", # flake8
"B",
"B904", # flake8-bugbear
"I", # isort
"ARG", # flake8-unused-arguments
"C4", # flake8-comprehensions
"EM", # flake8-errmsg
"ICN", # flake8-import-conventions
"ISC", # flake8-implicit-str-concat
"G", # flake8-logging-format
"PGH", # pygrep-hooks
"PIE", # flake8-pie
"PL", # pylint
"PT", # flake8-pytest-style
"PTH", # flake8-use-pathlib
"RET", # flake8-return
"RUF", # Ruff-specific
"SIM", # flake8-simplify
"UP", # pyupgrade
"YTT", # flake8-2020
"EXE", # flake8-executable
"NPY", # NumPy specific rules
"PD", # pandas-vet
]
extend-ignore = [
"PLR", # Design related pylint codes
"E501", # Line too long
"PT004", # Use underscore for non-returning fixture (use usefixture instead)
# RUF005 should be disabled when using numpy, see
# https://github.com/charliermarsh/ruff/issues/2142:
"RUF005",
]
typing-modules = ["mypackage._compat.typing"]
unfixable = [
"T20", # Removes print statements
"F841", # Removes unused variables
]
flake8-unused-arguments.ignore-variadic-names = true
# allow en-dash
allowed-confusables = ["–"]
[tool.ruff.lint.per-file-ignores]
"tests/**" = ["T20"]
"*.ipynb" = ["E402"] # Top-level imports