-
-
Notifications
You must be signed in to change notification settings - Fork 13
Expand file tree
/
Copy pathpyproject.toml
More file actions
113 lines (96 loc) · 4.15 KB
/
Copy pathpyproject.toml
File metadata and controls
113 lines (96 loc) · 4.15 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
[build-system]
requires = ["setuptools>=68", "wheel"]
build-backend = "setuptools.build_meta"
[project]
name = "OPENWAVE"
# Calendar versioning (CalVer), YY.M.D: the date the release was cut. Adopted 2026-09-07,
# replacing SemVer at 1.6.10. SemVer encodes a backward-compatibility promise to a dependency
# resolver, and this project has no resolver to make one to: it is not on PyPI, nothing pins a
# range against it, and with no CI there is nothing that could verify such a promise. A date is
# a fact the project can actually keep. It also lets a reader of a dated finding or method note
# tell at a glance whether the engine predates it.
#
# Rules: no zero padding (PEP 440 strips it, so "26.09.07" installs as "26.9.7" and stops
# matching its own tag). No "v" here; that prefix belongs on the git tag alone. A second release
# on a day already used takes a fourth component, "26.9.7.1", NOT a letter suffix, because
# PEP 440 reads "26.9.7b" as a beta that sorts BEFORE 26.9.7 and that pip skips by default.
version = "26.9.22"
requires-python = ">=3.12"
description = "Open-source subatomic physics simulator."
readme = "README.md"
keywords = [
"Energy Wave Theory", "Subatomic Simulation", "Quantum Mechanics",
"Matter Formation", "Energy Formation", "Physics Simulation"
]
license = { text = "Apache-2.0" }
authors = [
{ name = "Rodrigo Griesi", email = "hello@openwavelabs.com" },
{ name = "Jeff Yee", email = "hello@openwavelabs.com" }
]
dependencies = [
"taichi>=1.6,<2.0",
"numpy>=2.3,<3.0",
"scipy>=1.13,<2.0",
"sympy>=1.14,<2.0",
"matplotlib>=3.8,<4.0",
"pyautogui>=0.9,<1.0",
"rich>=13.0,<15.0",
"simple-term-menu>=1.6.0,<2.0; sys_platform != 'win32'",
"pytest>=8.0,<10.0",
]
# Formatting tools, which CONTRIBUTING.md makes a condition of a pull request rather than a
# suggestion. This repo has no CI, so a contributor's own machine is the entire enforcement
# surface: a tool the project gates merges on has to be installable from the project's own
# metadata, or every contributor has to work out separately that they need it. Install with
# `pip install -e ".[dev]"`.
#
# pytest deliberately stays in the runtime list above rather than moving here, so that a
# plain `pip install -e .` leaves the `pytest` invocation in CONTRIBUTING.md runnable. With
# no CI there is nothing else that would catch a contributor whose install silently lacks
# the runner, and demoting it to an extra would make that failure look like a broken repo.
[project.optional-dependencies]
dev = [
"black>=24.0",
]
[project.scripts]
openwave = "openwave.i_o.cli:cli_main"
[project.urls]
Homepage = "https://github.com/openwave-labs/openwave"
Issues = "https://github.com/openwave-labs/openwave/issues"
[tool.setuptools.packages.find]
include = ["openwave", "openwave.*"]
[tool.setuptools.package-data]
openwave = [
"README.md",
"LICENSE",
]
[tool.pytest.ini_options]
minversion = "8.0"
# A bare `pytest` runs the maintained suite only. Without this, collection walked the whole
# tree and picked up research sandboxes and dev_docs demo scripts: 27 tests from a single
# scratch file, 70 seconds of collection spent importing taichi and GGUI demos, and one
# module that imports pyautogui at module level (which fails on any headless runner and can
# move the pointer on a desktop one).
testpaths = ["tests"]
# norecursedirs REPLACES pytest's defaults rather than extending them, so the standard
# entries are repeated here. Patterns match a directory's basename, not its full path, so
# "research" covers every xperiments/*/research/ at once.
norecursedirs = [
".*",
"*.egg",
"build",
"dist",
"node_modules",
"venv",
"dev_docs",
"research",
"_archives",
]
[tool.black]
line-length = 99
# Pinned to the interpreter floor in `requires-python`. Without it Black 26 infers a target
# from the source and warns on every run that a 3.12 interpreter cannot verify code it
# formatted for a newer Python, because its safety check re-parses the output with the
# running CPython. Naming the floor makes the formatter agree with the version contract the
# project already publishes, and silences the warning without --fast skipping the check.
target-version = ["py312"]