-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathpyproject.toml
More file actions
95 lines (86 loc) · 3.63 KB
/
Copy pathpyproject.toml
File metadata and controls
95 lines (86 loc) · 3.63 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
[build-system]
requires = ["setuptools>=77"]
build-backend = "setuptools.build_meta"
[project]
name = "orbital-thermal"
version = "1.1.0"
description = "Executable reference implementation of the orbital-thermal-bounds radiator model (Lee-Odinson, 2026)"
authors = [{ name = "Dan Lee-Odinson", email = "dan.lee.odinson@gmail.com" }]
readme = "README.md"
requires-python = ">=3.10"
license = "MIT"
# The analytical modules (radiation, equilibrium, bounds) are dependency-light,
# but the full package requires numpy (environment, sink, transient). Optional
# extras add CoolProp (the [fluids] ammonia checks) and matplotlib (figure
# scripts); both are also pulled in by [dev]. The [visual] extra adds the
# interactive notebook stack (Jupyter/ipywidgets/Plotly) for the Phase A visual
# boundary model in notebooks/; the library and visual_api itself stay numpy-only.
dependencies = ["numpy>=1.24"]
keywords = [
"orbital thermal modeling",
"radiator analysis",
"space data centers",
"view factor",
"reduced-order model",
"reproducible research",
]
classifiers = [
"Development Status :: 5 - Production/Stable",
"Intended Audience :: Science/Research",
"Programming Language :: Python :: 3 :: Only",
"Programming Language :: Python :: 3.10",
"Programming Language :: Python :: 3.11",
"Programming Language :: Python :: 3.12",
"Topic :: Scientific/Engineering :: Physics",
"Topic :: Scientific/Engineering :: Astronomy",
]
# PEP 639: SPDX license expression above; ship only the software license. The
# CC BY 4.0 docs license is a separate component (see LICENSING.md).
license-files = ["LICENSE-MIT"]
[project.optional-dependencies]
dev = ["pytest>=8", "pytest-cov>=5", "ruff>=0.6", "CoolProp==7.2.0", "matplotlib>=3.7"]
fluids = ["CoolProp==7.2.0"]
docs = ["mkdocs-material>=9.5,<10"]
# Interactive Phase A visual boundary model (notebooks/). nbformat + nbclient are
# included so the notebook can be built/executed headlessly for verification.
visual = [
"jupyter>=1",
"ipywidgets>=8",
"plotly>=5",
"nbformat>=5",
"nbclient>=0.10",
]
[project.urls]
Homepage = "https://github.com/dan-lee-odinson/orbital-thermal-bounds"
Repository = "https://github.com/dan-lee-odinson/orbital-thermal-bounds"
Documentation = "https://github.com/dan-lee-odinson/orbital-thermal-bounds/wiki"
Changelog = "https://github.com/dan-lee-odinson/orbital-thermal-bounds/blob/main/CHANGELOG.md"
Issues = "https://github.com/dan-lee-odinson/orbital-thermal-bounds/issues"
"Software archive (Zenodo)" = "https://doi.org/10.5281/zenodo.20709241"
"Theory preprint" = "https://doi.org/10.5281/zenodo.20650893"
"AI1 companion preprint" = "https://doi.org/10.5281/zenodo.20670771"
"Edge-on correction preprint" = "https://doi.org/10.5281/zenodo.20695720"
[tool.setuptools.packages.find]
where = ["src"]
[tool.pytest.ini_options]
testpaths = ["tests"]
[tool.ruff]
line-length = 100
target-version = "py310"
extend-exclude = ["build", "dist", "external_models"]
[tool.ruff.lint]
select = ["E", "F", "W", "I", "B", "UP"]
[tool.ruff.lint.per-file-ignores]
# Standalone verification scripts and figure scripts use a deliberate dense,
# single-file style (aligned asserts, semicolon groupings, late imports after a
# version guard). Tests carry intentionally long assertion lines. These are
# report-only style choices, not defects, so they are silenced to keep the lint
# signal focused on the library code under src/.
"tests/**" = ["E501"]
"verify_suite.py" = ["E501", "E702"]
"verify_paper3.py" = ["E402", "E501", "E702"]
"companion/verify_ai1.py" = ["E501", "E702"]
"scripts/plot_*.py" = ["E501", "E702"]
[tool.coverage.run]
source = ["orbital_thermal"]
branch = true