-
Notifications
You must be signed in to change notification settings - Fork 38
/
pyproject.toml
160 lines (142 loc) · 4.56 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
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
[build-system]
requires = ["poetry-core>=1.0.0", "poetry-dynamic-versioning>=1.0.0,<2.0.0"]
build-backend = "poetry_dynamic_versioning.backend"
[tool.poetry-dynamic-versioning]
enable = true
strict = true
bump = true
vcs = "git"
# The 'pep440' style appends the git commit hash to the version number when
# there are commits since the last tag.
style = "pep440"
# Append a flag to the version number if there are uncommitted changes.
dirty = true
# Untracked files don't count as dirty
ignore-untracked = true
[tool.poetry]
# The package name is "Pooltool". The PyPI project name is "pooltool-billiards"
name = "pooltool-billiards"
# This version is a placeholder. It will be updated at build time by
# poetry-dynamic-versioning from the latest git tag. See PYPI.md.
version = "0.0.0"
description = "A sandbox billiards game that emphasizes realistic physics."
repository = "https://github.com/ekiefl/pooltool"
homepage = "https://pooltool.readthedocs.io/en/latest/"
documentation = "https://pooltool.readthedocs.io/en/latest/"
authors = ["Evan Kiefl <[email protected]>"]
maintainers = ["Evan Kiefl <[email protected]>"]
license = "Apache-2.0"
readme = "README.md"
keywords = ["simulation", "physics", "pool", "billiards", "panda3d", "snooker", "eight-ball"]
classifiers = [
"Topic :: Scientific/Engineering :: Visualization",
"Topic :: Scientific/Engineering :: Physics",
"Topic :: Games/Entertainment :: Simulation",
]
packages = [{include = "pooltool"}]
# Include globs override exclude globs below.
include = [
# Logo variants
"pooltool/logo/logo_pt.png",
"pooltool/logo/logo_pt_smaller.png",
"pooltool/logo/logo.png",
# Image assets for HUD and menu
"pooltool/models/hud/**/*.png",
"pooltool/models/menu/**/*.png",
"pooltool/models/menu/**/*.jpeg",
]
exclude = [
# All test files
"pooltool/**/test_*",
# All intermediate modeling formats (Blender, SVG, etc.)
"pooltool/**/*.blend*",
"pooltool/**/*.svg",
"pooltool/**/*.exr",
"pooltool/**/*.pptx",
"pooltool/**/*.png", # Some PNGs in `include` override this exclusion
"pooltool/**/*.jpg",
"pooltool/**/*.jpeg",
# To save package size, models with physical based rendering (PBR) are excluded
"pooltool/models/**/*_pbr.glb",
]
[tool.poetry.scripts]
run-pooltool = "pooltool.main:run"
[[tool.poetry.source]]
name = "pypi"
priority = "primary"
[[tool.poetry.source]]
name = "pypi-test"
url = "https://test.pypi.org/legacy/"
[[tool.poetry.source]]
name = "panda3d-archive"
url = "https://archive.panda3d.org/simple/"
priority = "explicit"
[tool.poetry.dependencies]
python = ">=3.9,<3.13"
panda3d = [
{platform = "darwin", version=">=1.10.13,<1.11"},
{platform = "linux", version = "1.11.0.dev3444", allow-prereleases = true, source = "panda3d-archive"},
{platform = "win32", version = "1.11.0.dev3444", allow-prereleases = true, source = "panda3d-archive"},
]
panda3d-gltf = ">=1.2.0"
panda3d-simplepbr = ">=0.12.0"
numpy = ">=1.26.0" # Lower bound for 3.12 (https://github.com/numpy/numpy/releases/tag/v1.26.0)
numba = ">=0.59.0" # # Lower bound for 3.12 (https://numba.readthedocs.io/en/latest/user/installing.html#version-support-information)
scipy = ">=1.12.0" # Required for numba. Lower bound for 3.12 is officially 1.11, but in practice seems to be 1.12 on MacOS
attrs = ">=21.3.0"
cattrs = ">=22.1.0"
msgpack = ">=1.0.0" # cattrs structuring fails with msgpack<1
msgpack-numpy = ">=0.4.8"
pyyaml = ">=5.2"
click = ">=8.0.0"
Pillow = ">=6.2.0"
h5py = ">=3.10"
[tool.poetry.group.dev.dependencies]
# Testing and formatting
pytest = ">=8.3.2"
pytest-cov = "^5.0.0"
pre-commit = ">=3.7.1"
pyright = ">=1.1.373"
ruff = ">=0.5.5"
# Diagnostics
psutil = ">=6.0.0"
colored = ">=2.2.4" # TODO switch to something ubiquitous (like rich)
ipython = ">=8.18.1"
ipdb = "^0.13.13"
# Vignettes
jupytext = ">=1.15.0" # First release compatible with JupyterLab 4.X
jupyterlab = ">=4.0.0"
pandas = ">=2"
plotly = ">=5"
matplotlib = ">=3.8"
# Publishing
poetry-dynamic-versioning = {extras = ["plugin"], version = ">=1.4.0"}
[tool.poetry.group.docs]
optional = true
[tool.poetry.group.docs.dependencies]
sphinx = ">=6.1.0"
sphinx-copybutton = ">=0.5.2"
furo = ">=2024.5.6"
myst-parser = ">=3.0.1"
sphinx-autoapi = ">=3.1.2"
sphinx-tabs = ">=3.4.5"
nbsphinx = "^0.9.5"
[tool.jupytext]
formats = "ipynb,py:percent"
notebook_metadata_filter="all"
[tool.ruff]
line-length = 88
exclude = [
"docs",
]
[tool.ruff.lint]
extend-select = ["I"]
[tool.pytest.ini_options]
addopts = [
"--import-mode=importlib",
]
testpaths = [
"tests",
]
# [tool.pyright]
# pyright config is stored in pyrightconfig.json (local) and pyrightconfig.ci.json (CI)