riftpoint 1.0.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- riftpoint-1.0.0/PKG-INFO +144 -0
- riftpoint-1.0.0/README.md +114 -0
- riftpoint-1.0.0/pyproject.toml +274 -0
- riftpoint-1.0.0/pyproject.toml.orig +273 -0
- riftpoint-1.0.0/src/riftpoint/__init__.py +85 -0
- riftpoint-1.0.0/src/riftpoint/checkpointer/__init__.py +7 -0
- riftpoint-1.0.0/src/riftpoint/checkpointer/async_saver.py +483 -0
- riftpoint-1.0.0/src/riftpoint/checkpointer/base.py +571 -0
- riftpoint-1.0.0/src/riftpoint/checkpointer/sync_saver.py +313 -0
- riftpoint-1.0.0/src/riftpoint/collapse/__init__.py +22 -0
- riftpoint-1.0.0/src/riftpoint/collapse/evaluators.py +362 -0
- riftpoint-1.0.0/src/riftpoint/collapse/resolver.py +249 -0
- riftpoint-1.0.0/src/riftpoint/decorators.py +370 -0
- riftpoint-1.0.0/src/riftpoint/logger.py +28 -0
- riftpoint-1.0.0/src/riftpoint/py.typed +1 -0
- riftpoint-1.0.0/src/riftpoint/runner/__init__.py +22 -0
- riftpoint-1.0.0/src/riftpoint/runner/beam.py +452 -0
- riftpoint-1.0.0/src/riftpoint/runner/branch.py +187 -0
- riftpoint-1.0.0/src/riftpoint/runner/multiverse.py +213 -0
- riftpoint-1.0.0/src/riftpoint/serde/__init__.py +21 -0
- riftpoint-1.0.0/src/riftpoint/serde/codec.py +261 -0
- riftpoint-1.0.0/src/riftpoint/visualization/__init__.py +9 -0
- riftpoint-1.0.0/src/riftpoint/visualization/mermaid.py +33 -0
- riftpoint-1.0.0/src/riftpoint/visualization/plot.py +47 -0
riftpoint-1.0.0/PKG-INFO
ADDED
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: riftpoint
|
|
3
|
+
Version: 1.0.0
|
|
4
|
+
Summary: High-performance multiversal checkpointer for LangGraph powered by Janus-Tachyon-RS
|
|
5
|
+
Keywords: agentic-ai,checkpointer,janus,langchain,langgraph,multiverse,speculative-execution,state-management
|
|
6
|
+
Author: Eduardo Ruiz
|
|
7
|
+
Author-email: Eduardo Ruiz <eduardo.j.ruiz@gmail.com>
|
|
8
|
+
License-Expression: MIT OR Apache-2.0
|
|
9
|
+
Classifier: Development Status :: 5 - Production/Stable
|
|
10
|
+
Classifier: Intended Audience :: Developers
|
|
11
|
+
Classifier: License :: OSI Approved :: MIT License
|
|
12
|
+
Classifier: License :: OSI Approved :: Apache Software License
|
|
13
|
+
Classifier: Programming Language :: Python :: 3
|
|
14
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
15
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
16
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
17
|
+
Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
|
|
18
|
+
Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
|
19
|
+
Classifier: Typing :: Typed
|
|
20
|
+
Requires-Dist: janus-tachyon-rs>=0.2.1,<0.3.0
|
|
21
|
+
Requires-Dist: langchain-core>=1.6.3,<2.0.0
|
|
22
|
+
Requires-Dist: langgraph>=1.2.11,<2.0.0
|
|
23
|
+
Requires-Dist: loguru>=0.7.3,<1.0.0
|
|
24
|
+
Requires-Python: >=3.11
|
|
25
|
+
Project-URL: Homepage, https://github.com/goldenphoenix713/RiftPoint
|
|
26
|
+
Project-URL: Repository, https://github.com/goldenphoenix713/RiftPoint
|
|
27
|
+
Project-URL: Issues, https://github.com/goldenphoenix713/RiftPoint/issues
|
|
28
|
+
Project-URL: Documentation, https://github.com/goldenphoenix713/RiftPoint#readme
|
|
29
|
+
Description-Content-Type: text/markdown
|
|
30
|
+
|
|
31
|
+
# RiftPoint 🌌
|
|
32
|
+
|
|
33
|
+
[](https://github.com/goldenphoenix713/RiftPoint/actions/workflows/ci.yml)
|
|
34
|
+
[](https://www.python.org/downloads/release/python-3110/)
|
|
35
|
+
[](https://github.com/goldenphoenix713/janus)
|
|
36
|
+
|
|
37
|
+
> **High-performance multiversal checkpointer and speculative state engine for LangGraph, powered by Janus-Tachyon-RS.**
|
|
38
|
+
|
|
39
|
+
---
|
|
40
|
+
|
|
41
|
+
## 🌟 Overview
|
|
42
|
+
|
|
43
|
+
In standard LLM agent workflows, exploring alternative reasoning paths, evaluating multiple tool-use strategies, or testing speculative futures requires expensive state copying or complex DAG orchestration.
|
|
44
|
+
|
|
45
|
+
**RiftPoint** bridges [**LangGraph**](https://github.com/langchain-ai/langgraph) with the Rust-backed [**`janus-tachyon-rs`**](https://github.com/goldenphoenix713/janus) engine to provide:
|
|
46
|
+
|
|
47
|
+
- **Multiversal Branching:** Instant state forks into candidate realities with near-zero memory duplication penalty.
|
|
48
|
+
- **Speculative Tool Calling:** Concurrent execution of divergent tool-use strategies across distinct timeline branches.
|
|
49
|
+
- **Multiverse Collapse:** Automatic scoring of candidate timelines (via LLM-as-a-judge, heuristics, or consensus) to commit winning trajectories to `main` while pruning discarded paths.
|
|
50
|
+
- **Full State Travel & Tracing:** Interactive time travel, undo/redo, and timeline visualization via Mermaid.js and Matplotlib.
|
|
51
|
+
|
|
52
|
+
---
|
|
53
|
+
|
|
54
|
+
## 📚 Planning & Architecture Documentation
|
|
55
|
+
|
|
56
|
+
Detailed architectural blueprints and implementation phases are documented in [docs/planning](docs/planning/README.md):
|
|
57
|
+
|
|
58
|
+
- **[Master Architecture & Overview Plan](docs/planning/overview_plan.md)**
|
|
59
|
+
- **[Performance Benchmarks & Multiverse Capability Report](docs/BENCHMARKS.md)**
|
|
60
|
+
- **[Future Directions & Strategic Roadmap](docs/FUTURE_DIRECTIONS.md)**
|
|
61
|
+
- **[Phase 1: Core Janus Bridge & Sync Checkpointer](docs/planning/phase_1_core_bridge_and_sync_checkpointer.md)**
|
|
62
|
+
- **[Phase 2: Asynchronous Checkpointer](docs/planning/phase_2_async_checkpointer.md)**
|
|
63
|
+
- **[Phase 3: Branching & Speculative Execution Engine](docs/planning/phase_3_branching_and_speculative_runner.md)**
|
|
64
|
+
- **[Phase 4: Multiverse Collapse & Evaluation Engine](docs/planning/phase_4_multiverse_collapse_and_evaluation.md)**
|
|
65
|
+
- **[Phase 5: Visualization, Serialization & Tracing](docs/planning/phase_5_visualization_and_serialization.md)**
|
|
66
|
+
|
|
67
|
+
---
|
|
68
|
+
|
|
69
|
+
## 🚀 Quickstart
|
|
70
|
+
|
|
71
|
+
### Installation
|
|
72
|
+
|
|
73
|
+
```bash
|
|
74
|
+
pip install riftpoint
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
*Or install with `uv`:*
|
|
78
|
+
|
|
79
|
+
```bash
|
|
80
|
+
uv add riftpoint
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
### Basic Example
|
|
84
|
+
|
|
85
|
+
```python
|
|
86
|
+
from langgraph.graph import StateGraph
|
|
87
|
+
from riftpoint import RiftCheckpointSaver
|
|
88
|
+
|
|
89
|
+
# Initialize the Janus-backed checkpointer
|
|
90
|
+
checkpointer = RiftCheckpointSaver()
|
|
91
|
+
|
|
92
|
+
# Build your LangGraph workflow
|
|
93
|
+
builder = StateGraph(...)
|
|
94
|
+
# ... define nodes and edges ...
|
|
95
|
+
graph = builder.compile(checkpointer=checkpointer)
|
|
96
|
+
|
|
97
|
+
# Run workflow with multiversal checkpointing
|
|
98
|
+
config = {"configurable": {"thread_id": "session-1"}}
|
|
99
|
+
result = graph.invoke({"messages": [...]}, config=config)
|
|
100
|
+
|
|
101
|
+
# Render the timeline DAG as a Mermaid diagram
|
|
102
|
+
print(checkpointer.visualize("session-1"))
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
---
|
|
106
|
+
|
|
107
|
+
## 🛠️ Developer Commands
|
|
108
|
+
|
|
109
|
+
Development workflows use `uv`:
|
|
110
|
+
|
|
111
|
+
```bash
|
|
112
|
+
# Sync dependencies
|
|
113
|
+
uv sync --all-groups
|
|
114
|
+
|
|
115
|
+
# Run tests with coverage requirement (>= 70%)
|
|
116
|
+
uv run pytest
|
|
117
|
+
|
|
118
|
+
# Lint and format
|
|
119
|
+
uv run ruff check --fix
|
|
120
|
+
uv run ruff format
|
|
121
|
+
|
|
122
|
+
# Type check
|
|
123
|
+
uv run mypy src tests
|
|
124
|
+
|
|
125
|
+
# Code complexity check (Radon Grade B or better)
|
|
126
|
+
uv run python scripts/check_radon.py src
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
---
|
|
130
|
+
|
|
131
|
+
## 📚 Documentation & Roadmap
|
|
132
|
+
|
|
133
|
+
- **[Documentation Site](https://riftpoint.readthedocs.io/):** Full guides, API reference, and tutorials.
|
|
134
|
+
- **[Roadmap to v1.0](docs/ROADMAP_V1.md):** 5-pillar production readiness checklist toward GA release.
|
|
135
|
+
- **[Future Directions](docs/FUTURE_DIRECTIONS.md):** Long-term vision and feature exploration horizon.
|
|
136
|
+
|
|
137
|
+
---
|
|
138
|
+
|
|
139
|
+
## 📄 License
|
|
140
|
+
|
|
141
|
+
This project is dual-licensed under:
|
|
142
|
+
|
|
143
|
+
- **MIT License** ([LICENSE-MIT](LICENSE-MIT))
|
|
144
|
+
- **Apache License, Version 2.0** ([LICENSE-APACHE](LICENSE-APACHE))
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
# RiftPoint 🌌
|
|
2
|
+
|
|
3
|
+
[](https://github.com/goldenphoenix713/RiftPoint/actions/workflows/ci.yml)
|
|
4
|
+
[](https://www.python.org/downloads/release/python-3110/)
|
|
5
|
+
[](https://github.com/goldenphoenix713/janus)
|
|
6
|
+
|
|
7
|
+
> **High-performance multiversal checkpointer and speculative state engine for LangGraph, powered by Janus-Tachyon-RS.**
|
|
8
|
+
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
## 🌟 Overview
|
|
12
|
+
|
|
13
|
+
In standard LLM agent workflows, exploring alternative reasoning paths, evaluating multiple tool-use strategies, or testing speculative futures requires expensive state copying or complex DAG orchestration.
|
|
14
|
+
|
|
15
|
+
**RiftPoint** bridges [**LangGraph**](https://github.com/langchain-ai/langgraph) with the Rust-backed [**`janus-tachyon-rs`**](https://github.com/goldenphoenix713/janus) engine to provide:
|
|
16
|
+
|
|
17
|
+
- **Multiversal Branching:** Instant state forks into candidate realities with near-zero memory duplication penalty.
|
|
18
|
+
- **Speculative Tool Calling:** Concurrent execution of divergent tool-use strategies across distinct timeline branches.
|
|
19
|
+
- **Multiverse Collapse:** Automatic scoring of candidate timelines (via LLM-as-a-judge, heuristics, or consensus) to commit winning trajectories to `main` while pruning discarded paths.
|
|
20
|
+
- **Full State Travel & Tracing:** Interactive time travel, undo/redo, and timeline visualization via Mermaid.js and Matplotlib.
|
|
21
|
+
|
|
22
|
+
---
|
|
23
|
+
|
|
24
|
+
## 📚 Planning & Architecture Documentation
|
|
25
|
+
|
|
26
|
+
Detailed architectural blueprints and implementation phases are documented in [docs/planning](docs/planning/README.md):
|
|
27
|
+
|
|
28
|
+
- **[Master Architecture & Overview Plan](docs/planning/overview_plan.md)**
|
|
29
|
+
- **[Performance Benchmarks & Multiverse Capability Report](docs/BENCHMARKS.md)**
|
|
30
|
+
- **[Future Directions & Strategic Roadmap](docs/FUTURE_DIRECTIONS.md)**
|
|
31
|
+
- **[Phase 1: Core Janus Bridge & Sync Checkpointer](docs/planning/phase_1_core_bridge_and_sync_checkpointer.md)**
|
|
32
|
+
- **[Phase 2: Asynchronous Checkpointer](docs/planning/phase_2_async_checkpointer.md)**
|
|
33
|
+
- **[Phase 3: Branching & Speculative Execution Engine](docs/planning/phase_3_branching_and_speculative_runner.md)**
|
|
34
|
+
- **[Phase 4: Multiverse Collapse & Evaluation Engine](docs/planning/phase_4_multiverse_collapse_and_evaluation.md)**
|
|
35
|
+
- **[Phase 5: Visualization, Serialization & Tracing](docs/planning/phase_5_visualization_and_serialization.md)**
|
|
36
|
+
|
|
37
|
+
---
|
|
38
|
+
|
|
39
|
+
## 🚀 Quickstart
|
|
40
|
+
|
|
41
|
+
### Installation
|
|
42
|
+
|
|
43
|
+
```bash
|
|
44
|
+
pip install riftpoint
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
*Or install with `uv`:*
|
|
48
|
+
|
|
49
|
+
```bash
|
|
50
|
+
uv add riftpoint
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
### Basic Example
|
|
54
|
+
|
|
55
|
+
```python
|
|
56
|
+
from langgraph.graph import StateGraph
|
|
57
|
+
from riftpoint import RiftCheckpointSaver
|
|
58
|
+
|
|
59
|
+
# Initialize the Janus-backed checkpointer
|
|
60
|
+
checkpointer = RiftCheckpointSaver()
|
|
61
|
+
|
|
62
|
+
# Build your LangGraph workflow
|
|
63
|
+
builder = StateGraph(...)
|
|
64
|
+
# ... define nodes and edges ...
|
|
65
|
+
graph = builder.compile(checkpointer=checkpointer)
|
|
66
|
+
|
|
67
|
+
# Run workflow with multiversal checkpointing
|
|
68
|
+
config = {"configurable": {"thread_id": "session-1"}}
|
|
69
|
+
result = graph.invoke({"messages": [...]}, config=config)
|
|
70
|
+
|
|
71
|
+
# Render the timeline DAG as a Mermaid diagram
|
|
72
|
+
print(checkpointer.visualize("session-1"))
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
---
|
|
76
|
+
|
|
77
|
+
## 🛠️ Developer Commands
|
|
78
|
+
|
|
79
|
+
Development workflows use `uv`:
|
|
80
|
+
|
|
81
|
+
```bash
|
|
82
|
+
# Sync dependencies
|
|
83
|
+
uv sync --all-groups
|
|
84
|
+
|
|
85
|
+
# Run tests with coverage requirement (>= 70%)
|
|
86
|
+
uv run pytest
|
|
87
|
+
|
|
88
|
+
# Lint and format
|
|
89
|
+
uv run ruff check --fix
|
|
90
|
+
uv run ruff format
|
|
91
|
+
|
|
92
|
+
# Type check
|
|
93
|
+
uv run mypy src tests
|
|
94
|
+
|
|
95
|
+
# Code complexity check (Radon Grade B or better)
|
|
96
|
+
uv run python scripts/check_radon.py src
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
---
|
|
100
|
+
|
|
101
|
+
## 📚 Documentation & Roadmap
|
|
102
|
+
|
|
103
|
+
- **[Documentation Site](https://riftpoint.readthedocs.io/):** Full guides, API reference, and tutorials.
|
|
104
|
+
- **[Roadmap to v1.0](docs/ROADMAP_V1.md):** 5-pillar production readiness checklist toward GA release.
|
|
105
|
+
- **[Future Directions](docs/FUTURE_DIRECTIONS.md):** Long-term vision and feature exploration horizon.
|
|
106
|
+
|
|
107
|
+
---
|
|
108
|
+
|
|
109
|
+
## 📄 License
|
|
110
|
+
|
|
111
|
+
This project is dual-licensed under:
|
|
112
|
+
|
|
113
|
+
- **MIT License** ([LICENSE-MIT](LICENSE-MIT))
|
|
114
|
+
- **Apache License, Version 2.0** ([LICENSE-APACHE](LICENSE-APACHE))
|
|
@@ -0,0 +1,274 @@
|
|
|
1
|
+
[project]
|
|
2
|
+
name = "riftpoint"
|
|
3
|
+
version = "1.0.0"
|
|
4
|
+
description = "High-performance multiversal checkpointer for LangGraph powered by Janus-Tachyon-RS"
|
|
5
|
+
readme = "README.md"
|
|
6
|
+
license = "MIT OR Apache-2.0"
|
|
7
|
+
requires-python = ">=3.11"
|
|
8
|
+
keywords = [
|
|
9
|
+
"agentic-ai",
|
|
10
|
+
"checkpointer",
|
|
11
|
+
"janus",
|
|
12
|
+
"langchain",
|
|
13
|
+
"langgraph",
|
|
14
|
+
"multiverse",
|
|
15
|
+
"speculative-execution",
|
|
16
|
+
"state-management",
|
|
17
|
+
]
|
|
18
|
+
classifiers = [
|
|
19
|
+
"Development Status :: 5 - Production/Stable",
|
|
20
|
+
"Intended Audience :: Developers",
|
|
21
|
+
"License :: OSI Approved :: MIT License",
|
|
22
|
+
"License :: OSI Approved :: Apache Software License",
|
|
23
|
+
"Programming Language :: Python :: 3",
|
|
24
|
+
"Programming Language :: Python :: 3.11",
|
|
25
|
+
"Programming Language :: Python :: 3.12",
|
|
26
|
+
"Programming Language :: Python :: 3.13",
|
|
27
|
+
"Topic :: Scientific/Engineering :: Artificial Intelligence",
|
|
28
|
+
"Topic :: Software Development :: Libraries :: Python Modules",
|
|
29
|
+
"Typing :: Typed",
|
|
30
|
+
]
|
|
31
|
+
dependencies = [
|
|
32
|
+
"janus-tachyon-rs>=0.2.1,<0.3.0",
|
|
33
|
+
"langchain-core>=1.6.3,<2.0.0",
|
|
34
|
+
"langgraph>=1.2.11,<2.0.0",
|
|
35
|
+
"loguru>=0.7.3,<1.0.0",
|
|
36
|
+
]
|
|
37
|
+
|
|
38
|
+
[[project.authors]]
|
|
39
|
+
name = "Eduardo Ruiz"
|
|
40
|
+
email = "eduardo.j.ruiz@gmail.com"
|
|
41
|
+
|
|
42
|
+
[project.urls]
|
|
43
|
+
Homepage = "https://github.com/goldenphoenix713/RiftPoint"
|
|
44
|
+
Repository = "https://github.com/goldenphoenix713/RiftPoint"
|
|
45
|
+
Issues = "https://github.com/goldenphoenix713/RiftPoint/issues"
|
|
46
|
+
Documentation = "https://github.com/goldenphoenix713/RiftPoint#readme"
|
|
47
|
+
|
|
48
|
+
[build-system]
|
|
49
|
+
requires = ["uv_build>=0.10.0,<0.13.0"]
|
|
50
|
+
build-backend = "uv_build"
|
|
51
|
+
|
|
52
|
+
[dependency-groups]
|
|
53
|
+
dev = [
|
|
54
|
+
"certifi>=2026.7.22",
|
|
55
|
+
"matplotlib>=3.8.0,<4.0.0",
|
|
56
|
+
"mypy>=2.3.1,<3.0.0",
|
|
57
|
+
"pre-commit>=4.0.0,<5.0.0",
|
|
58
|
+
"pytest>=9.1.1,<10.0.0",
|
|
59
|
+
"pytest-cov>=6.0.0,<7.0.0",
|
|
60
|
+
"radon>=6.0.1,<7.0.0",
|
|
61
|
+
"ruff>=0.16.7,<1.0.0",
|
|
62
|
+
]
|
|
63
|
+
docs = [
|
|
64
|
+
"mkdocs>=1.6.0,<2.0.0",
|
|
65
|
+
"mkdocs-material>=9.5.0,<10.0.0",
|
|
66
|
+
"mkdocstrings[python]>=0.28.0,<1.0.0",
|
|
67
|
+
"pymdown-extensions>=10.14.0,<11.0.0",
|
|
68
|
+
]
|
|
69
|
+
|
|
70
|
+
[tool.uv]
|
|
71
|
+
exclude-newer = "2026-09-12T00:00:00Z"
|
|
72
|
+
|
|
73
|
+
[tool.ruff]
|
|
74
|
+
target-version = "py311"
|
|
75
|
+
line-length = 88
|
|
76
|
+
indent-width = 4
|
|
77
|
+
exclude = [
|
|
78
|
+
".git",
|
|
79
|
+
".mypy_cache",
|
|
80
|
+
".pytest_cache",
|
|
81
|
+
".ruff_cache",
|
|
82
|
+
".venv",
|
|
83
|
+
"build",
|
|
84
|
+
"dist",
|
|
85
|
+
"node_modules",
|
|
86
|
+
]
|
|
87
|
+
|
|
88
|
+
[tool.ruff.lint]
|
|
89
|
+
select = [
|
|
90
|
+
"E",
|
|
91
|
+
"W",
|
|
92
|
+
"F",
|
|
93
|
+
"I",
|
|
94
|
+
"N",
|
|
95
|
+
"UP",
|
|
96
|
+
"YTT",
|
|
97
|
+
"S",
|
|
98
|
+
"BLE",
|
|
99
|
+
"FBT",
|
|
100
|
+
"B",
|
|
101
|
+
"A",
|
|
102
|
+
"COM",
|
|
103
|
+
"C4",
|
|
104
|
+
"DTZ",
|
|
105
|
+
"T10",
|
|
106
|
+
"EM",
|
|
107
|
+
"EXE",
|
|
108
|
+
"ISC",
|
|
109
|
+
"ICN",
|
|
110
|
+
"G",
|
|
111
|
+
"INP",
|
|
112
|
+
"PIE",
|
|
113
|
+
"T20",
|
|
114
|
+
"PYI",
|
|
115
|
+
"PT",
|
|
116
|
+
"Q",
|
|
117
|
+
"RSE",
|
|
118
|
+
"RET",
|
|
119
|
+
"SLF",
|
|
120
|
+
"SLOT",
|
|
121
|
+
"SIM",
|
|
122
|
+
"TID",
|
|
123
|
+
"TCH",
|
|
124
|
+
"INT",
|
|
125
|
+
"ARG",
|
|
126
|
+
"PTH",
|
|
127
|
+
"ERA",
|
|
128
|
+
"PGH",
|
|
129
|
+
"PL",
|
|
130
|
+
"TRY",
|
|
131
|
+
"FLY",
|
|
132
|
+
"PERF",
|
|
133
|
+
"FURB",
|
|
134
|
+
"LOG",
|
|
135
|
+
"RUF",
|
|
136
|
+
]
|
|
137
|
+
ignore = [
|
|
138
|
+
"COM812",
|
|
139
|
+
"ISC001",
|
|
140
|
+
]
|
|
141
|
+
fixable = ["ALL"]
|
|
142
|
+
unfixable = []
|
|
143
|
+
|
|
144
|
+
[tool.ruff.lint.flake8-bandit]
|
|
145
|
+
check-typed-exception = true
|
|
146
|
+
|
|
147
|
+
[tool.ruff.lint.isort]
|
|
148
|
+
known-first-party = ["riftpoint"]
|
|
149
|
+
|
|
150
|
+
[tool.ruff.lint.per-file-ignores]
|
|
151
|
+
"tests/**/*" = [
|
|
152
|
+
"S101",
|
|
153
|
+
"ARG",
|
|
154
|
+
"FBT",
|
|
155
|
+
"PLR2004",
|
|
156
|
+
"S105",
|
|
157
|
+
"S106",
|
|
158
|
+
"INP001",
|
|
159
|
+
"SLF001",
|
|
160
|
+
]
|
|
161
|
+
"test*" = [
|
|
162
|
+
"S101",
|
|
163
|
+
"ARG",
|
|
164
|
+
"FBT",
|
|
165
|
+
"PLR2004",
|
|
166
|
+
"S105",
|
|
167
|
+
"S106",
|
|
168
|
+
"INP001",
|
|
169
|
+
"SLF001",
|
|
170
|
+
]
|
|
171
|
+
"scripts/**/*" = [
|
|
172
|
+
"INP001",
|
|
173
|
+
"T201",
|
|
174
|
+
]
|
|
175
|
+
"examples/**/*" = [
|
|
176
|
+
"INP001",
|
|
177
|
+
"T201",
|
|
178
|
+
"S101",
|
|
179
|
+
]
|
|
180
|
+
|
|
181
|
+
[tool.ruff.format]
|
|
182
|
+
quote-style = "double"
|
|
183
|
+
indent-style = "space"
|
|
184
|
+
skip-magic-trailing-comma = false
|
|
185
|
+
line-ending = "auto"
|
|
186
|
+
|
|
187
|
+
[tool.mypy]
|
|
188
|
+
python_version = "3.11"
|
|
189
|
+
strict = true
|
|
190
|
+
warn_unused_configs = true
|
|
191
|
+
warn_redundant_casts = true
|
|
192
|
+
warn_unused_ignores = true
|
|
193
|
+
warn_no_return = true
|
|
194
|
+
warn_return_any = true
|
|
195
|
+
warn_unreachable = true
|
|
196
|
+
disallow_untyped_defs = true
|
|
197
|
+
disallow_incomplete_defs = true
|
|
198
|
+
check_untyped_defs = true
|
|
199
|
+
disallow_untyped_decorators = true
|
|
200
|
+
disallow_untyped_calls = true
|
|
201
|
+
disallow_subclassing_any = true
|
|
202
|
+
no_implicit_optional = true
|
|
203
|
+
show_error_codes = true
|
|
204
|
+
show_column_numbers = true
|
|
205
|
+
pretty = true
|
|
206
|
+
|
|
207
|
+
[[tool.mypy.overrides]]
|
|
208
|
+
module = "tests.*"
|
|
209
|
+
disallow_untyped_defs = false
|
|
210
|
+
disallow_incomplete_defs = false
|
|
211
|
+
|
|
212
|
+
[[tool.mypy.overrides]]
|
|
213
|
+
module = [
|
|
214
|
+
"radon.*",
|
|
215
|
+
"matplotlib.*",
|
|
216
|
+
]
|
|
217
|
+
ignore_missing_imports = true
|
|
218
|
+
|
|
219
|
+
[tool.radon]
|
|
220
|
+
cc_min = "A"
|
|
221
|
+
cc_max = "B"
|
|
222
|
+
show_complexity = true
|
|
223
|
+
mi_min = "B"
|
|
224
|
+
show_mi = true
|
|
225
|
+
total_average = true
|
|
226
|
+
exclude = "test*,tests/*,.venv/*,build/*,dist/*"
|
|
227
|
+
|
|
228
|
+
[tool.pytest.ini_options]
|
|
229
|
+
minversion = "8.0"
|
|
230
|
+
testpaths = ["tests"]
|
|
231
|
+
python_files = [
|
|
232
|
+
"test_*.py",
|
|
233
|
+
"*_test.py",
|
|
234
|
+
]
|
|
235
|
+
python_functions = ["test_*"]
|
|
236
|
+
python_classes = ["Test*"]
|
|
237
|
+
addopts = [
|
|
238
|
+
"-ra",
|
|
239
|
+
"-q",
|
|
240
|
+
"--cov=src",
|
|
241
|
+
"--cov-report=term-missing",
|
|
242
|
+
"--cov-report=html",
|
|
243
|
+
"--cov-fail-under=90",
|
|
244
|
+
]
|
|
245
|
+
|
|
246
|
+
[tool.coverage.run]
|
|
247
|
+
branch = true
|
|
248
|
+
source = ["src"]
|
|
249
|
+
omit = [
|
|
250
|
+
"tests/*",
|
|
251
|
+
"test*",
|
|
252
|
+
"*/__pycache__/*",
|
|
253
|
+
]
|
|
254
|
+
|
|
255
|
+
[tool.coverage.report]
|
|
256
|
+
fail_under = 90
|
|
257
|
+
show_missing = true
|
|
258
|
+
skip_covered = false
|
|
259
|
+
exclude_lines = [
|
|
260
|
+
"pragma: no cover",
|
|
261
|
+
"def __repr__",
|
|
262
|
+
"if self.debug:",
|
|
263
|
+
"if settings.DEBUG",
|
|
264
|
+
"raise AssertionError",
|
|
265
|
+
"raise NotImplementedError",
|
|
266
|
+
"if 0:",
|
|
267
|
+
"if __name__ == .__main__.:",
|
|
268
|
+
"if TYPE_CHECKING:",
|
|
269
|
+
'class .*\bProtocol\):',
|
|
270
|
+
'@(abc\.)?abstractmethod',
|
|
271
|
+
]
|
|
272
|
+
|
|
273
|
+
[tool.coverage.html]
|
|
274
|
+
directory = "htmlcov"
|