-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathpyproject.toml
More file actions
58 lines (49 loc) · 2.82 KB
/
Copy pathpyproject.toml
File metadata and controls
58 lines (49 loc) · 2.82 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
# Packaging manifest for editable installs and source/wheel builds. Declares dependencies,
# optional extras, package discovery, and the installed CLI entry points. Availability from a
# package index depends on the chosen release channel; a GitHub release alone does not publish PyPI.
[build-system]
requires = ["setuptools>=77"]
build-backend = "setuptools.build_meta"
[project]
name = "penrose"
version = "1.0.0"
description = "Falsification-first research pipeline: ingest trading-strategy papers, test their claims under a robustness stack (deflated Sharpe, 3-fold, locked holdout, fee curve), and emit trustworthy verdicts."
readme = "README.md"
requires-python = ">=3.9"
license = "Apache-2.0"
authors = [{ name = "Charles Patterson", email = "charles.s.patterson@gmail.com" }]
# REQUIRED core — the minimal set penrose needs to import and run on synthetic data with no key.
dependencies = [
"numpy>=1.24",
"pandas>=2.0,!=3.0.4", # 3.0.4 was yanked upstream for reported datetime segfaults
"scipy>=1.9", # norm.cdf/ppf for the deflated/probabilistic Sharpe (vendored stats)
"pyarrow>=10", # parquet: sandbox IPC + catalog series reads
"pypdf>=4.0", # P1: extract text from a paper PDF
"pyyaml>=6.0", # module specs / catalog yaml
"markdown>=3.4", # offline dashboard + public-site documentation renderer
"pygments>=2.14", # syntax highlighting for rendered documentation
]
# OPTIONAL extras — e.g. `pip install "penrose[charts]"`. Each feature degrades gracefully if
# absent (no key -> no-LLM stub; no matplotlib -> charts skipped; no databento -> adapter absent).
[project.optional-dependencies]
charts = ["matplotlib>=3.6"] # equity-curve PNGs for the dashboard
databento = ["databento>=0.30"] # BYO point-in-time market-data adapter
embed = ["fastembed>=0.3"] # optional in-process corpus/vector retrieval
mcp = ["mcp>=1.0"] # read-only MCP server (agent-queryable verdicts/proposals)
open-science = ["cryptography>=41"] # optional Ed25519 signing for reproducible research records
test = ["pytest>=7"]
dev = ["pytest>=7", "pytest-xdist>=3.6"] # opt-in parallel developer test runner
[tool.pytest.ini_options]
markers = [
"xdist_group(name): keep process/file-locking tests together in the opt-in loadgroup run",
]
# The `penrose` command (penrose/cli.py) and the optional read-only MCP server.
[project.scripts]
penrose = "penrose.cli:main"
penrose-mcp = "penrose.mcp_server:main"
[tool.setuptools.packages.find]
where = ["src"] # penrose lives under src/penrose
[tool.setuptools.package-dir]
"" = "src"
[tool.setuptools.package-data]
penrose = ["PUBLISHER_PUBKEY", "sandbox_image/Dockerfile", "sandbox_image/requirements.lock", "sandbox_image/runner.py", "sandbox_image/reproduction.py", "vocabulary.json"]