-
Notifications
You must be signed in to change notification settings - Fork 79
Expand file tree
/
Copy pathpyproject.toml
More file actions
159 lines (147 loc) · 4.78 KB
/
pyproject.toml
File metadata and controls
159 lines (147 loc) · 4.78 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
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
[build-system]
requires = ["uv_build>=0.10.9,<0.11"]
build-backend = "uv_build"
# The package name is "pooltool". The PyPI project name is "pooltool-billiards"
[project]
name = "pooltool-billiards"
version = "0.6.0"
description = "A sandbox billiards game that emphasizes realistic physics."
authors = [{name = "Evan Kiefl", email = "kiefl.evan@gmail.com"}]
maintainers = [{name = "Evan Kiefl", email = "kiefl.evan@gmail.com"}]
license = "Apache-2.0"
license-files = ["LICENSE.txt"]
readme = "README.md"
requires-python = ">=3.10,<3.14"
keywords = ["simulation", "physics", "pool", "billiards", "panda3d", "snooker", "eight-ball"]
classifiers = [
"Topic :: Scientific/Engineering :: Visualization",
"Topic :: Scientific/Engineering :: Physics",
"Topic :: Games/Entertainment :: Simulation",
]
dependencies = [
"panda3d>=1.10.13,<1.11 ; sys_platform == 'darwin'",
"panda3d==1.11.0.dev3702 ; sys_platform != 'darwin'",
"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)
"llvmlite>=0.44.0,<0.46", # Lower bound for 3.13, requires >=3.10. Upper bound: 0.46.0 lacks wheels for some platforms
"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",
"h11>=0.16.0", # Avoids security vulnerability
"rich>=14.0.0,<15.0.0", # 13.8.1 added support for Python 3.13
"numpy-quaternion>=2024.0.12",
]
[project.scripts]
run-pooltool = "pooltool.main:run"
[project.urls]
Homepage = "https://pooltool.readthedocs.io/en/latest/"
Documentation = "https://pooltool.readthedocs.io/en/latest/"
Repository = "https://github.com/ekiefl/pooltool"
[[tool.uv.index]]
name = "panda3d-archive"
url = "https://archive.panda3d.org/simple/"
explicit = true
[tool.uv.sources]
panda3d = [
{ index = "panda3d-archive", marker = "sys_platform != 'darwin'" },
]
[tool.uv.build-backend]
module-name = "pooltool"
module-root = "."
# uv_build includes all files in the package by default. These excludes trim
# intermediate modeling formats, unwanted images, and PBR model variants to
# reduce package size. Unlike Poetry, uv_build cannot "re-include" after a
# global exclude, so PNGs are excluded per-directory rather than globally.
source-exclude = [
# OS junk
"**/.DS_Store",
# All test files
"pooltool/**/test_*",
# All intermediate modeling formats (Blender, SVG, etc.)
"**/*.blend*",
"**/*.svg",
"**/*.exr",
"**/*.pptx",
"**/*.jpg",
# Exclude JPEGs outside of models/menu/ (where they're needed as package data)
"pooltool/models/room/**/*.jpeg",
# To save package size, models with physical based rendering (PBR) are excluded
"pooltool/models/**/*_pbr.glb",
# Exclude PNGs from directories where they're not needed as package data.
# PNGs in logo/ (3 specific files), models/hud/, and models/menu/ are kept.
"pooltool/models/balls/**/*.png",
"pooltool/models/room/**/*.png",
"pooltool/models/cue/**/*.png",
"pooltool/models/table/**/*.png",
"pooltool/models/checkerboard.png",
"pooltool/logo/0.png",
"pooltool/logo/v.png",
"pooltool/logo/logo_small.png",
"pooltool/logo/logo_pt_square.png",
"pooltool/logo/logo_v0p*.png",
]
[dependency-groups]
dev = [
# 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",
"ipython>=8.18.1",
"ipdb>=0.13.13",
"pprofile>=2.2.0",
# Vignettes
"jupyterlab>=4.0.0",
"pandas>=2",
"plotly>=5",
"matplotlib>=3.8",
]
docs = [
"sphinx==8.1.3",
"sphinx-copybutton==0.5.2",
"furo==2024.8.6",
"myst-parser==4.0.1",
"sphinx-autoapi==3.6.0",
"astroid==3.3.11",
"sphinx-tabs==3.4.7",
"nbsphinx==0.9.7",
"sphinx-autobuild==2024.10.3",
"sphinx-togglebutton==0.3.2",
]
[tool.jupytext]
formats = "ipynb,py:percent"
notebook_metadata_filter="all"
[tool.ruff]
target-version = "py310" # Minimum supported version
line-length = 88
exclude = [
"docs",
]
[tool.ruff.lint]
extend-select = [
"I", # Import sorting
"UP", # Modernize Python syntax for newer versions
]
ignore = [
"E741", # Ambiguous variable name
]
[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)