From 08198be8daeb316854a72dfcf7b52f73430a4560 Mon Sep 17 00:00:00 2001 From: achekery <6503526+achekery@users.noreply.github.com> Date: Tue, 12 May 2026 15:25:51 -0700 Subject: [PATCH 01/12] add skeleton versions --- .github/workflows/docs.yml | 18 + DEVELOPMENT.md | 3 + docs/development.md | 43 +++ docs/dynamic_interval_management.md | 82 +++++ docs/dynamic_point_aggregation.md | 85 +++++ docs/index.md | 5 + docs/suffix_pattern_recognition.md | 30 ++ mkdocs.yml | 35 ++ pyproject.toml | 5 + uv.lock | 553 ++++++++++++++++++++++++++++ 10 files changed, 859 insertions(+) create mode 100644 .github/workflows/docs.yml create mode 100644 docs/development.md create mode 100644 docs/dynamic_interval_management.md create mode 100644 docs/dynamic_point_aggregation.md create mode 100644 docs/index.md create mode 100644 docs/suffix_pattern_recognition.md create mode 100644 mkdocs.yml diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml new file mode 100644 index 0000000..52eeb2d --- /dev/null +++ b/.github/workflows/docs.yml @@ -0,0 +1,18 @@ +name: docs +on: + push: + branches: [main] + +jobs: + deploy: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - name: Install uv + uses: astral-sh/setup-uv@v3 + - name: Setup Python + run: uv python install 3.13 + - name: Build and Deploy + run: | + uv sync --group docs + uv run mkdocs gh-deploy --force diff --git a/DEVELOPMENT.md b/DEVELOPMENT.md index 0142f9a..ddf30cf 100644 --- a/DEVELOPMENT.md +++ b/DEVELOPMENT.md @@ -37,4 +37,7 @@ uv run --group dev --extra benchmark pytest -sv # Watch run until it completes. gh run watch + +# Show project files. +(git ls-files | xargs tail -n +1) 2>&1 >var/files.txt ``` diff --git a/docs/development.md b/docs/development.md new file mode 100644 index 0000000..ddf30cf --- /dev/null +++ b/docs/development.md @@ -0,0 +1,43 @@ + +data_streaming_accelerators/ +├── .github/workflows/ +├── docs/ +│ └── mkdocs.yml +├── src/ +│ └── data_streaming_accelerators/ +│ ├── __init__.py +│ ├── __main__.py +│ ├── core/ +│ | ├── dynamic_interval_management.py +│ | ├── dynamic_point_aggregation.py +│ | └── suffix_pattern_recognition.py +│ ├── api.py +├── tests/ +│ ├── conftest.py +│ ├── test_api.py +│ ├── test_core.py +├── .gitignore +├── pyproject.toml +├── README.md +└── LICENSE + +```sh +# https://docs.astral.sh/uv/getting-started/installation/ +# install uv from official installer +wget -qO- https://astral.sh/uv/install.sh | sh +``` + +``` +# Run specific markers in pytest +uv run --group dev --extra benchmark pytest -sv -m func +uv run --group dev --extra benchmark pytest -sv -m perf + +# Run pytest +uv run --group dev --extra benchmark pytest -sv + +# Watch run until it completes. +gh run watch + +# Show project files. +(git ls-files | xargs tail -n +1) 2>&1 >var/files.txt +``` diff --git a/docs/dynamic_interval_management.md b/docs/dynamic_interval_management.md new file mode 100644 index 0000000..227f6da --- /dev/null +++ b/docs/dynamic_interval_management.md @@ -0,0 +1,82 @@ +# Data Streaming Accelerators + +![Python CI](https://github.com/achekery/data-streaming/actions/workflows/python-app.yml/badge.svg) + +## Dynamic Interval Management + +### 1. Design Summary +The theoretical lower bound for merging $N$ static intervals is $\Omega(N \log N)$ due to the sorting requirement. By focusing on interval edges rather than the source intervals themselves, we can focus on efficient algorithms with compact implementation. However, in **Online Streaming Environments**, the task shifts from batch data loading (static intervals) to streaming data ingestion (dynamic intervals). + +#### 📊 Complexity Analysis + +| Operation | Batch Variants (v1/v2) | Streaming Variant (v3) | Comparison | +| :--- | :--- | :--- | :--- | +| **Initial Setup** | $O(N \log N)$ | $O(N \log N)$ | Equivalent | +| **Batch Updates (N)** | $O(N \log N)$ | $O(N \log N)$ | Equivalent | +| **Streaming Updates (1)** | $O(N \log N)$ | **$O(\log N)$** | **Streaming Variant** is superior | +| **Space Complexity** | $O(N)$ | $O(N)$ | Equivalent | + +#### 🚀 The Pruning Logic (Visual) + +The advantage of an Augmented AVL Interval Tree is its ability to prune search branches that cannot contain an overlap, ensuring $O(\log N)$ search time. + +![Diagram of Pruning Logic](dynamic_interval_management/static/pruning-diagram.png) + +### 2. Design Approaches + +### Optimal Approaches for Batch Data (Static Intervals) +* **Sweep-line (Variant 1):** Uses a sorted list of edge objects and a counter. + * **Complexity (Batch):** $O(N \log N)$ setup, $O(N)$ calculation. + * **Complexity (Streaming):** $O(N \log N)$ per `insert`/`put` operation. + * **Verdict:** Suitable for batch case due to second-best ~16ms benchmark with static intervals impacted by object-overhead during calculation. Not suitable for streaming case due to high complexity. +* **Two-Pointer Search (Variant 2):** Uses two sorted edge arrays and two pointers. + * **Complexity (Batch):** $O(N \log N)$ setup, $O(N)$ calculation. + * **Complexity (Streaming):** $O(N \log N)$ per `insert`/`put` operation. + * **Verdict:** Suitable for batch case due to best-in-class ~7ms benchmark with static intervals. Not suitable for streaming case due to high complexity. + +### Optimal Approaches for Streaming Data (Dynamic Intervals) +* **Augmented AVL Interval Tree (Variant 3):** A stateful, self-balancing BST. + * **Complexity (Batch):** $O(N \log N)$ setup, $O(N)$ calculation. + * **Complexity (Streaming):** $O(\log N)$ per `insert`/`put` operation. + * **Verdict:** Not suitable for batch case due to poor ~4130ms benchmark with static intervals impacted by object-overhead during calculation. Suitable for streaming case due to best-in-class complexity per `insert`/`put` operation. Notice the optimal approaches for batch data merging are easier to maintain, with **90% fewer LOC** (~25 vs ~250)! + +### 3. Design Trade-offs + +#### The Efficiency Paradox +In benchmarks with static intervals, the Two-Pointer Search (Variant 2) was **400x faster** than the Interval Tree (Variant 3). However, in **Online Streaming Environments**, the Two-Pointer Search overall complexity degrades to $O(N^2 \log N)$ over a series of $N$ updates while the Interval Tree overall complexity maintains $O(N \log N)$. + +#### Streaming Benchmark Results +In benchmarks with dynamic intervals up to $N=3000$, the Interval Tree (Variant 3) was as much as **50x faster** than the Two-Pointer Search (Variant 2). While the Two-Pointer Search (Variant 2) is faster for a single batch run, it fails to scale in an **Online Streaming Environment** where the merged state must be updated for every new interval. As $N$ increases, the Two-Pointer Search runtime explodes quadratically while the Interval Tree runtime continues linearly. + +| Input Size (N) | Batch-Style (s) | Tree-Style (s) | Speedup | +| :--- | :--- | :--- | :--- | +| 100 | 0.0015 | 0.0021 | 0.7x | +| 500 | 0.0359 | 0.0140 | 2.6x | +| 1000 | 0.1501 | 0.0230 | 6.5x | +| 2000 | 0.6743 | 0.0383 | 17.6x | +| 3000 | 1.6093 | 0.0318 | **50.6x** | + +![Graph for Performance Report](dynamic_interval_management/static/performance-report-1280x640.png) + +### 4. Design Optimizations + +#### Augmented Metadata +By augmenting the BST with `subtree_max` metadata, I reduced the search-and-merge task from a linear scan to a logarithmic search. This allows the streaming platform to maintain a "Live" merged state with $O(\log N)$ latency per request. + +#### Invariant-Driven Correctness +To ensure system reliability during high-frequency updates, I prioritized **Correctness by Design** by explicitly maintaining the AVL balance and metadata invariants during every mutation (`insert`, `delete`). + +#### Architectural Hardening +By implementing a **Sentinel Node Architecture** with a **Two-Down** AVL balancing subtree rotation strategy and removing the need for sentinel node checks throughout the codebase, I simplified the balancing feature and provided a cleaner and more maintainable implementation. + +#### Python Object-Model Tuning +To reduce object-overhead due to the Python object-model, I implemented **Attribute Flattening**. After replacing packed collections (`self.interval[0]`) with discrete integers (`self.lo`, `self.hi`), I reduced constant factors in the hot execution path and achieved a **15% reduction** in benchmarks with static intervals. + +### 5. Getting Started + +This design requires **Python 3.13+**. + +To run the regression tests for this design: +```bash +uv run --group dev --extra benchmark pytest -sv +``` diff --git a/docs/dynamic_point_aggregation.md b/docs/dynamic_point_aggregation.md new file mode 100644 index 0000000..9e3ebc1 --- /dev/null +++ b/docs/dynamic_point_aggregation.md @@ -0,0 +1,85 @@ +# Dynamic Point Aggregation +![Python CI](https://github.com/achekery/data-streaming/actions/workflows/python-app.yml/badge.svg) + +## 1. Design Summary +The optimal runtime complexity for dynamic point aggregation from $N$ point values to $O(N)$ disjoint intervals is $\Omega(N \log N)$ due to the ordering requirement. The request handler uses `put` requests to add new values and `get` requests to make a new interval sequence. + +Because offline scenarios (batch data) have known usage patterns, the batch variant (V1) can **optimize the hot path** by simplifying high-usage `put` requests to $O(1)$ and expanding low-usage `get` requests to $O(N \log N)$. + +However, because online scenarios (streaming data) do not have known usage patterns, the streaming variant (V2) must instead **balance complexity** between `put` requests ($O(\log N)$) and `get` requests ($O(N)$). + +### 📊 Complexity Analysis + +| Operation | Batch Variant (V1) | Streaming Variant (V2) | Comparison | +| :--- | :--- | :--- | :--- | +| **Initial Setup** | $O(1)$ | $O(1)$ | Equivalent | +| **Batch Updates (N Put, 1 Get)** | $O(N \log N)$ | $O(N \log N)$ | Equivalent | +| **Streaming Updates (N Put, K Get)** | $O(K*N \log N)$ | $O(N \log N + K * N)$ | **V2 is Superior** | +| **Space Complexity** | $O(N)$ | $O(N)$ | Equivalent + +## 2. Design Details +The batch variant (V1) uses an unordered set to add new values as data points in $O(1)$ per `put` request and does one pass over a new sorted list with sweep line method to generate disjoint intervals in $O(N \log N)$ per `get` request. + +The streaming variant (V2) uses two sorted sets with binary search to add new values as interval bounds in $O(\log N)$ per `put` request (or $O(\sqrt N)$ with python `sortedcontainers`) and does one pass over the existing sorted sets with sweep line method to generate disjoint intervals in $O(N)$ per `get` request. + +## 3. Design Trade-offs + +### The Efficiency Paradox +Although the batch variant (V1) was **2.7x faster** in small-scale offline scenarios (N=100, R=0.1), the streaming variant (V2) was **6.4x faster** in large-scale online scenarios (N=50000, R=0.5). This performance gain in online scenarios was due to the runtime complexity of the streaming variant at $O(N \log N + K*N)$ increasing more slowly with data size compared to the batch variant at $O(K*N \log N)$. + +With python `sortedcontainers`, these runtime complexities were instead $O(N \sqrt N + K*N)$ and $O(K*N \log N)$ respectively. Although the streaming variant was still faster, the performance gain was less dramatic since $O(\sqrt N)$ increases faster than $O(\log N)$. + +### Streaming Benchmark Results +When the request traffic was mostly `put` requests (R=0.1) to simulate offline scenarios, the batch variant (V1) was 2.7x faster when data size was smaller (N=100) and the streaming variant was **4.9x faster** when data size was larger (N=50000). + +![Speedup by Data Size (R=0.1)](dynamic_point_aggregation/static/speedup_by_data_size_request_distr0.1.png) + +When the request traffic was balanced beween `put` and `get` requests (R=0.5) to simulate online scenarios, the batch variant (V1) was **1.2x faster** when data size was smaller (N=100) and the streaming variant was **6.4x faster** when data size was larger (N=50000). + +![Speedup by Data Size (R=0.5)](dynamic_point_aggregation/static/speedup_by_data_size_request_distr0.5.png) + +These results highlight that the batch variant (V1) is suitable for smaller data streams and offline scenarios, whereas the streaming variant (V2) is suitable for larger data streams and online scenarios. + +| TestCaseID | DataSize | RequestDistribution | V1TimeElapsed | V2TimeElapsed | SpeedupV1V2 | SpeedupV2V1 | +| :--- | :--- | :--- | :--- | :--- | :--- | :--- | +| 0 | 100 | 0.100 | 0.000 | 0.001 | 2.706 | 0.370 | +| 1 | 100 | 0.200 | 0.000 | 0.001 | 1.998 | 0.500 | +| 2 | 100 | 0.500 | 0.001 | 0.001 | 1.289 | 0.776 | +| 3 | 100 | 0.800 | 0.002 | 0.003 | 1.042 | 0.960 | +| 4 | 200 | 0.100 | 0.001 | 0.001 | 2.115 | 0.473 | +| 5 | 200 | 0.200 | 0.001 | 0.001 | 1.642 | 0.609 | +| 6 | 200 | 0.500 | 0.003 | 0.003 | 1.010 | 0.990 | +| 7 | 200 | 0.800 | 0.013 | 0.010 | 0.821 | 1.218 | +| 8 | 500 | 0.100 | 0.002 | 0.003 | 1.606 | 0.623 | +| 9 | 500 | 0.200 | 0.004 | 0.005 | 1.116 | 0.896 | +| 10 | 500 | 0.500 | 0.020 | 0.016 | 0.816 | 1.226 | +| 11 | 500 | 0.800 | 0.071 | 0.051 | 0.726 | 1.378 | +| 12 | 1000 | 0.100 | 0.008 | 0.009 | 1.059 | 0.944 | +| 13 | 1000 | 0.200 | 0.016 | 0.014 | 0.861 | 1.162 | +| 14 | 1000 | 0.500 | 0.070 | 0.050 | 0.715 | 1.400 | +| 15 | 1000 | 0.800 | 0.273 | 0.186 | 0.680 | 1.471 | +| 16 | 2000 | 0.100 | 0.028 | 0.025 | 0.920 | 1.087 | +| 17 | 2000 | 0.200 | 0.059 | 0.046 | 0.776 | 1.289 | +| 18 | 2000 | 0.500 | 0.236 | 0.159 | 0.671 | 1.489 | +| 19 | 2000 | 0.800 | 1.002 | 0.651 | 0.650 | 1.538 | +| 20 | 5000 | 0.100 | 0.140 | 0.105 | 0.751 | 1.331 | +| 21 | 5000 | 0.200 | 0.326 | 0.216 | 0.663 | 1.509 | +| 22 | 5000 | 0.500 | 1.251 | 0.735 | 0.587 | 1.703 | +| 23 | 5000 | 0.800 | 5.099 | 3.020 | 0.592 | 1.688 | +| 24 | 10000 | 0.100 | 0.466 | 0.266 | 0.572 | 1.748 | +| 25 | 10000 | 0.200 | 1.031 | 0.541 | 0.525 | 1.906 | +| 26 | 10000 | 0.500 | 4.038 | 1.950 | 0.483 | 2.071 | +| 27 | 10000 | 0.800 | 15.824 | 7.414 | 0.469 | 2.134 | +| 28 | 20000 | 0.100 | 1.198 | 0.504 | 0.421 | 2.376 | +| 29 | 20000 | 0.200 | 2.633 | 0.990 | 0.376 | 2.660 | +| 30 | 20000 | 0.500 | 10.557 | 3.617 | 0.343 | 2.919 | +| 31 | 20000 | 0.800 | 42.168 | 14.237 | 0.338 | 2.962 | +| 32 | 50000 | 0.100 | 3.473 | 0.695 | 0.200 | 4.996 | +| 33 | 50000 | 0.200 | 7.765 | 1.349 | 0.174 | 5.757 | +| 34 | 50000 | 0.500 | 30.483 | 4.756 | 0.156 | 6.410 | +| 35 | 50000 | 0.800 | 122.369 | 19.013 | 0.155 | 6.436 | + +## 4. Design Optimizations + +### State Transitions +To ensure new point values are correctly merged with existing disjoint intervals, I applied **Correctness by Design** by separately handling the 3 overlap cases: the enclosed-by case (early exit if lower and upper bounds at insertion point are already aligned), the adjacent-to case (join with 1 or 2 neighbors if lower and upper bounds at insertion point are adjacent), and the distinct-from case (insert as new lower and upper bounds). diff --git a/docs/index.md b/docs/index.md new file mode 100644 index 0000000..5e733fd --- /dev/null +++ b/docs/index.md @@ -0,0 +1,5 @@ +# Data Streaming Accelerators + +![Python CI](https://github.com/achekery/data-streaming/actions/workflows/python-app.yml/badge.svg) + +TODO: Add a high-level summary of the whole suite diff --git a/docs/suffix_pattern_recognition.md b/docs/suffix_pattern_recognition.md new file mode 100644 index 0000000..2ae450c --- /dev/null +++ b/docs/suffix_pattern_recognition.md @@ -0,0 +1,30 @@ +# Suffix Pattern Recognition +![Python CI](https://github.com/achekery/data-streaming/actions/workflows/python-app.yml/badge.svg) + +## 1. Design Summary +For suffix pattern recognition with $K$ suffix patterns (length $W$) and 1 query pattern (length $N$), using **reverse-traversal prefix tree search** is efficient because it can model common ancestor ordering with reverse encoding (by inserting suffix patterns in reverse order during setup and searching in reverse order during queries) and check the multiple patterns over a single root-to-leaf pass (taking runtime $O(K\*W)$ for one-time setup and $O(W)$ for each query). This improves over using direct suffix pattern search which must check the multiple patterns over separate array passes (taking $O(K\*W)$ for each query) or using forward-traversal prefix tree search which cannot model common ancestor ordering and must check the multiple patterns over separate root-to-leaf passes (taking runtime $O(K\*W)$ for one-time setup and $O(K\*W)$ for each query). + +For batch data (offline scenario), reading the query pattern from a static array (size $N$) with a reverse iterator takes $O(1)$ auxiliary space. For streaming data (online scenario), reading the query pattern from a history array (size $W$) reconstructed from the stream takes $O(W)$ auxiliary space. + +### 📊 Complexity Analysis + +| Operation | Direct Search (v1) | Forward-traversal (v2) | Reverse-traversal (v3) | Comparison | +| :--- | :--- | :--- | :--- | :--- | +| **Initial Setup** | $O(1)$ | $O(K\*W)$ | $O(K\*W)$ | v1 is superior | +| **Batch Queries (N)** | $O(K\*W)$ | $O(K\*W)$ | $O(W)$ | v3 is superior | +| **Streaming Queries (1)** | $O(K\*W)$ | $O(K\*W)$ | $O(W)$ | v3 is superior | +| **Space Complexity** | $O(1)$ | $O(K\*W)$ | $O(K\*W)$ | v1 is superior | + +### 🚀 Reverse Encoding (Visual) + +The advantage of reverse-traversal prefix tree search is that it can check multiple suffix patterns at once, ensuring $O(W)$ query time (and is independent of the suffix pattern count $K$ and the query pattern length $N$). This is possible because of reverse encoding. + +![Diagram for reverse encoding](suffix_pattern_recognition/static/diagram-image.png) + +## 2. Design Approaches & Trade-offs + +### When Less is More +Although Direct Search (v1) requires ~90% less lines of code, it performs worse than Reverse-traversal (v3) in every comparison other than initial setup and space complexity. This trade-off shows that Direct Search may be preferable for low-memory systems that cannot afford higher space usage (like embedded systems) or greater maintenance scope (like regulated industries) and that Reverse-traversal may be preferable for systems with more resources (like compute nodes in distributed systems). + +### Python Object-Model Tuning +To reduce object-overhead due to the Python object-model, I implemented a **nested hash map** for the reverse-traversal prefix tree, with each "node" using a character for the hash map key and a reference to the next "node" for the hash map value. This approach reduced object lookup during queries. diff --git a/mkdocs.yml b/mkdocs.yml new file mode 100644 index 0000000..644ded1 --- /dev/null +++ b/mkdocs.yml @@ -0,0 +1,35 @@ +site_name: Data Streaming Accelerators +theme: + name: material + features: + - content.code.copy + - content.code.annotate + - navigation.sections + +markdown_extensions: + - pymdownx.superfences: + custom_fences: + - name: mermaid + class: mermaid + format: !!python/name:pymdownx.superfences.fence_code_format + - pymdownx.arithmatex: + generic: true # For your O(log N) LaTeX notations + +plugins: + - search + - mkdocstrings: + handlers: + python: + paths: [src] + options: + show_source: true + show_root_heading: true + show_category_heading: true + +nav: + - Overview: index.md + - Modules: + - Dynamic Interval Management: dynamic_interval_management.md + - Dynamic Point Aggregation: dynamic_point_aggregation.md + - Suffix Pattern Recognition: suffix_pattern_recognition.md + - Development: development.md diff --git a/pyproject.toml b/pyproject.toml index 5901882..2157f86 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -16,6 +16,11 @@ benchmark = [ dev = [ "pytest>=9.0.3", ] +docs = [ + "mkdocs-material>=9.7.6", + "mkdocs-mermaid2-plugin>=1.2.3", + "mkdocstrings[python]>=1.0.4", +] lint = [ "ruff>=0.15.12", ] diff --git a/uv.lock b/uv.lock index a9141dd..62730d8 100644 --- a/uv.lock +++ b/uv.lock @@ -10,6 +10,119 @@ resolution-markers = [ "python_full_version < '3.14' and sys_platform != 'emscripten' and sys_platform != 'win32'", ] +[[package]] +name = "babel" +version = "2.18.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/7d/b2/51899539b6ceeeb420d40ed3cd4b7a40519404f9baf3d4ac99dc413a834b/babel-2.18.0.tar.gz", hash = "sha256:b80b99a14bd085fcacfa15c9165f651fbb3406e66cc603abf11c5750937c992d", size = 9959554, upload-time = "2026-02-01T12:30:56.078Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/77/f5/21d2de20e8b8b0408f0681956ca2c69f1320a3848ac50e6e7f39c6159675/babel-2.18.0-py3-none-any.whl", hash = "sha256:e2b422b277c2b9a9630c1d7903c2a00d0830c409c59ac8cae9081c92f1aeba35", size = 10196845, upload-time = "2026-02-01T12:30:53.445Z" }, +] + +[[package]] +name = "backrefs" +version = "7.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/5e/a7/a7dd63622beef68cc0d3c3c36d472e143dd95443d5ebf14cd1a5b4dfbf11/backrefs-7.0.tar.gz", hash = "sha256:4989bb9e1e99eb23647c7160ed51fb21d0b41b5d200f2d3017da41e023097e82", size = 7012453, upload-time = "2026-04-28T16:28:04.215Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d4/39/39a31d7eae729ea14ed10c3ccef79371197177b9355a86cb3525709e8502/backrefs-7.0-py310-none-any.whl", hash = "sha256:b57cd227ea556b0aed3dc9b8da4628db4eabc0402c6d7fcfc69283a93955f7e9", size = 380824, upload-time = "2026-04-28T16:27:55.647Z" }, + { url = "https://files.pythonhosted.org/packages/c9/b5/9302644225ba7dfa934a2ff2b9c7bb85701313a90dddb3dfaf693fa5bae2/backrefs-7.0-py311-none-any.whl", hash = "sha256:a0fa7360c63509e9e077e174ef4e6d3c21c8db94189b9d957289ae6d794b9475", size = 392626, upload-time = "2026-04-28T16:27:57.42Z" }, + { url = "https://files.pythonhosted.org/packages/36/da/87912ddec6e06feffbaa3d7aa18fc6352bee2e8f1fee185d7d1690f8f4e8/backrefs-7.0-py312-none-any.whl", hash = "sha256:ca42ce6a49ace3d75684dfa9937f3373902a63284ecb385ce36d15e5dcb41c12", size = 398537, upload-time = "2026-04-28T16:27:58.913Z" }, + { url = "https://files.pythonhosted.org/packages/00/bb/90ba423612b6aa0adccc6b1874bcd4a9b44b660c0c16f346611e00f64ac3/backrefs-7.0-py313-none-any.whl", hash = "sha256:f2c52955d631b9e1ac4cd56209f0a3a946d592b98e7790e77699339ae01c102a", size = 400491, upload-time = "2026-04-28T16:28:00.928Z" }, + { url = "https://files.pythonhosted.org/packages/3e/5c/fb93d3092640a24dfb7bd7727a24016d7c01774ca013e60efd3f683c8002/backrefs-7.0-py314-none-any.whl", hash = "sha256:a6448b28180e3ca01134c9cf09dcebafad8531072e09903c5451748a05f24bc9", size = 412349, upload-time = "2026-04-28T16:28:02.412Z" }, +] + +[[package]] +name = "beautifulsoup4" +version = "4.14.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "soupsieve" }, + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/c3/b0/1c6a16426d389813b48d95e26898aff79abbde42ad353958ad95cc8c9b21/beautifulsoup4-4.14.3.tar.gz", hash = "sha256:6292b1c5186d356bba669ef9f7f051757099565ad9ada5dd630bd9de5fa7fb86", size = 627737, upload-time = "2025-11-30T15:08:26.084Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/1a/39/47f9197bdd44df24d67ac8893641e16f386c984a0619ef2ee4c51fbbc019/beautifulsoup4-4.14.3-py3-none-any.whl", hash = "sha256:0918bfe44902e6ad8d57732ba310582e98da931428d231a5ecb9e7c703a735bb", size = 107721, upload-time = "2025-11-30T15:08:24.087Z" }, +] + +[[package]] +name = "certifi" +version = "2026.4.22" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/25/ee/6caf7a40c36a1220410afe15a1cc64993a1f864871f698c0f93acb72842a/certifi-2026.4.22.tar.gz", hash = "sha256:8d455352a37b71bf76a79caa83a3d6c25afee4a385d632127b6afb3963f1c580", size = 137077, upload-time = "2026-04-22T11:26:11.191Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/22/30/7cd8fdcdfbc5b869528b079bfb76dcdf6056b1a2097a662e5e8c04f42965/certifi-2026.4.22-py3-none-any.whl", hash = "sha256:3cb2210c8f88ba2318d29b0388d1023c8492ff72ecdde4ebdaddbb13a31b1c4a", size = 135707, upload-time = "2026-04-22T11:26:09.372Z" }, +] + +[[package]] +name = "charset-normalizer" +version = "3.4.7" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/e7/a1/67fe25fac3c7642725500a3f6cfe5821ad557c3abb11c9d20d12c7008d3e/charset_normalizer-3.4.7.tar.gz", hash = "sha256:ae89db9e5f98a11a4bf50407d4363e7b09b31e55bc117b4f7d80aab97ba009e5", size = 144271, upload-time = "2026-04-02T09:28:39.342Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c1/3b/66777e39d3ae1ddc77ee606be4ec6d8cbd4c801f65e5a1b6f2b11b8346dd/charset_normalizer-3.4.7-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:f496c9c3cc02230093d8330875c4c3cdfc3b73612a5fd921c65d39cbcef08063", size = 309627, upload-time = "2026-04-02T09:26:45.198Z" }, + { url = "https://files.pythonhosted.org/packages/2e/4e/b7f84e617b4854ade48a1b7915c8ccfadeba444d2a18c291f696e37f0d3b/charset_normalizer-3.4.7-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:0ea948db76d31190bf08bd371623927ee1339d5f2a0b4b1b4a4439a65298703c", size = 207008, upload-time = "2026-04-02T09:26:46.824Z" }, + { url = "https://files.pythonhosted.org/packages/c4/bb/ec73c0257c9e11b268f018f068f5d00aa0ef8c8b09f7753ebd5f2880e248/charset_normalizer-3.4.7-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:a277ab8928b9f299723bc1a2dabb1265911b1a76341f90a510368ca44ad9ab66", size = 228303, upload-time = "2026-04-02T09:26:48.397Z" }, + { url = "https://files.pythonhosted.org/packages/85/fb/32d1f5033484494619f701e719429c69b766bfc4dbc61aa9e9c8c166528b/charset_normalizer-3.4.7-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:3bec022aec2c514d9cf199522a802bd007cd588ab17ab2525f20f9c34d067c18", size = 224282, upload-time = "2026-04-02T09:26:49.684Z" }, + { url = "https://files.pythonhosted.org/packages/fa/07/330e3a0dda4c404d6da83b327270906e9654a24f6c546dc886a0eb0ffb23/charset_normalizer-3.4.7-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:e044c39e41b92c845bc815e5ae4230804e8e7bc29e399b0437d64222d92809dd", size = 215595, upload-time = "2026-04-02T09:26:50.915Z" }, + { url = "https://files.pythonhosted.org/packages/e3/7c/fc890655786e423f02556e0216d4b8c6bcb6bdfa890160dc66bf52dee468/charset_normalizer-3.4.7-cp313-cp313-manylinux_2_31_armv7l.whl", hash = "sha256:f495a1652cf3fbab2eb0639776dad966c2fb874d79d87ca07f9d5f059b8bd215", size = 201986, upload-time = "2026-04-02T09:26:52.197Z" }, + { url = "https://files.pythonhosted.org/packages/d8/97/bfb18b3db2aed3b90cf54dc292ad79fdd5ad65c4eae454099475cbeadd0d/charset_normalizer-3.4.7-cp313-cp313-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:e712b419df8ba5e42b226c510472b37bd57b38e897d3eca5e8cfd410a29fa859", size = 211711, upload-time = "2026-04-02T09:26:53.49Z" }, + { url = "https://files.pythonhosted.org/packages/6f/a5/a581c13798546a7fd557c82614a5c65a13df2157e9ad6373166d2a3e645d/charset_normalizer-3.4.7-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:7804338df6fcc08105c7745f1502ba68d900f45fd770d5bdd5288ddccb8a42d8", size = 210036, upload-time = "2026-04-02T09:26:54.975Z" }, + { url = "https://files.pythonhosted.org/packages/8c/bf/b3ab5bcb478e4193d517644b0fb2bf5497fbceeaa7a1bc0f4d5b50953861/charset_normalizer-3.4.7-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:481551899c856c704d58119b5025793fa6730adda3571971af568f66d2424bb5", size = 202998, upload-time = "2026-04-02T09:26:56.303Z" }, + { url = "https://files.pythonhosted.org/packages/e7/4e/23efd79b65d314fa320ec6017b4b5834d5c12a58ba4610aa353af2e2f577/charset_normalizer-3.4.7-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:f59099f9b66f0d7145115e6f80dd8b1d847176df89b234a5a6b3f00437aa0832", size = 230056, upload-time = "2026-04-02T09:26:57.554Z" }, + { url = "https://files.pythonhosted.org/packages/b9/9f/1e1941bc3f0e01df116e68dc37a55c4d249df5e6fa77f008841aef68264f/charset_normalizer-3.4.7-cp313-cp313-musllinux_1_2_riscv64.whl", hash = "sha256:f59ad4c0e8f6bba240a9bb85504faa1ab438237199d4cce5f622761507b8f6a6", size = 211537, upload-time = "2026-04-02T09:26:58.843Z" }, + { url = "https://files.pythonhosted.org/packages/80/0f/088cbb3020d44428964a6c97fe1edfb1b9550396bf6d278330281e8b709c/charset_normalizer-3.4.7-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:3dedcc22d73ec993f42055eff4fcfed9318d1eeb9a6606c55892a26964964e48", size = 226176, upload-time = "2026-04-02T09:27:00.437Z" }, + { url = "https://files.pythonhosted.org/packages/6a/9f/130394f9bbe06f4f63e22641d32fc9b202b7e251c9aef4db044324dac493/charset_normalizer-3.4.7-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:64f02c6841d7d83f832cd97ccf8eb8a906d06eb95d5276069175c696b024b60a", size = 217723, upload-time = "2026-04-02T09:27:02.021Z" }, + { url = "https://files.pythonhosted.org/packages/73/55/c469897448a06e49f8fa03f6caae97074fde823f432a98f979cc42b90e69/charset_normalizer-3.4.7-cp313-cp313-win32.whl", hash = "sha256:4042d5c8f957e15221d423ba781e85d553722fc4113f523f2feb7b188cc34c5e", size = 148085, upload-time = "2026-04-02T09:27:03.192Z" }, + { url = "https://files.pythonhosted.org/packages/5d/78/1b74c5bbb3f99b77a1715c91b3e0b5bdb6fe302d95ace4f5b1bec37b0167/charset_normalizer-3.4.7-cp313-cp313-win_amd64.whl", hash = "sha256:3946fa46a0cf3e4c8cb1cc52f56bb536310d34f25f01ca9b6c16afa767dab110", size = 158819, upload-time = "2026-04-02T09:27:04.454Z" }, + { url = "https://files.pythonhosted.org/packages/68/86/46bd42279d323deb8687c4a5a811fd548cb7d1de10cf6535d099877a9a9f/charset_normalizer-3.4.7-cp313-cp313-win_arm64.whl", hash = "sha256:80d04837f55fc81da168b98de4f4b797ef007fc8a79ab71c6ec9bc4dd662b15b", size = 147915, upload-time = "2026-04-02T09:27:05.971Z" }, + { url = "https://files.pythonhosted.org/packages/97/c8/c67cb8c70e19ef1960b97b22ed2a1567711de46c4ddf19799923adc836c2/charset_normalizer-3.4.7-cp314-cp314-macosx_10_15_universal2.whl", hash = "sha256:c36c333c39be2dbca264d7803333c896ab8fa7d4d6f0ab7edb7dfd7aea6e98c0", size = 309234, upload-time = "2026-04-02T09:27:07.194Z" }, + { url = "https://files.pythonhosted.org/packages/99/85/c091fdee33f20de70d6c8b522743b6f831a2f1cd3ff86de4c6a827c48a76/charset_normalizer-3.4.7-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:1c2aed2e5e41f24ea8ef1590b8e848a79b56f3a5564a65ceec43c9d692dc7d8a", size = 208042, upload-time = "2026-04-02T09:27:08.749Z" }, + { url = "https://files.pythonhosted.org/packages/87/1c/ab2ce611b984d2fd5d86a5a8a19c1ae26acac6bad967da4967562c75114d/charset_normalizer-3.4.7-cp314-cp314-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:54523e136b8948060c0fa0bc7b1b50c32c186f2fceee897a495406bb6e311d2b", size = 228706, upload-time = "2026-04-02T09:27:09.951Z" }, + { url = "https://files.pythonhosted.org/packages/a8/29/2b1d2cb00bf085f59d29eb773ce58ec2d325430f8c216804a0a5cd83cbca/charset_normalizer-3.4.7-cp314-cp314-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:715479b9a2802ecac752a3b0efa2b0b60285cf962ee38414211abdfccc233b41", size = 224727, upload-time = "2026-04-02T09:27:11.175Z" }, + { url = "https://files.pythonhosted.org/packages/47/5c/032c2d5a07fe4d4855fea851209cca2b6f03ebeb6d4e3afdb3358386a684/charset_normalizer-3.4.7-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:bd6c2a1c7573c64738d716488d2cdd3c00e340e4835707d8fdb8dc1a66ef164e", size = 215882, upload-time = "2026-04-02T09:27:12.446Z" }, + { url = "https://files.pythonhosted.org/packages/2c/c2/356065d5a8b78ed04499cae5f339f091946a6a74f91e03476c33f0ab7100/charset_normalizer-3.4.7-cp314-cp314-manylinux_2_31_armv7l.whl", hash = "sha256:c45e9440fb78f8ddabcf714b68f936737a121355bf59f3907f4e17721b9d1aae", size = 200860, upload-time = "2026-04-02T09:27:13.721Z" }, + { url = "https://files.pythonhosted.org/packages/0c/cd/a32a84217ced5039f53b29f460962abb2d4420def55afabe45b1c3c7483d/charset_normalizer-3.4.7-cp314-cp314-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:3534e7dcbdcf757da6b85a0bbf5b6868786d5982dd959b065e65481644817a18", size = 211564, upload-time = "2026-04-02T09:27:15.272Z" }, + { url = "https://files.pythonhosted.org/packages/44/86/58e6f13ce26cc3b8f4a36b94a0f22ae2f00a72534520f4ae6857c4b81f89/charset_normalizer-3.4.7-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:e8ac484bf18ce6975760921bb6148041faa8fef0547200386ea0b52b5d27bf7b", size = 211276, upload-time = "2026-04-02T09:27:16.834Z" }, + { url = "https://files.pythonhosted.org/packages/8f/fe/d17c32dc72e17e155e06883efa84514ca375f8a528ba2546bee73fc4df81/charset_normalizer-3.4.7-cp314-cp314-musllinux_1_2_armv7l.whl", hash = "sha256:a5fe03b42827c13cdccd08e6c0247b6a6d4b5e3cdc53fd1749f5896adcdc2356", size = 201238, upload-time = "2026-04-02T09:27:18.229Z" }, + { url = "https://files.pythonhosted.org/packages/6a/29/f33daa50b06525a237451cdb6c69da366c381a3dadcd833fa5676bc468b3/charset_normalizer-3.4.7-cp314-cp314-musllinux_1_2_ppc64le.whl", hash = "sha256:2d6eb928e13016cea4f1f21d1e10c1cebd5a421bc57ddf5b1142ae3f86824fab", size = 230189, upload-time = "2026-04-02T09:27:19.445Z" }, + { url = "https://files.pythonhosted.org/packages/b6/6e/52c84015394a6a0bdcd435210a7e944c5f94ea1055f5cc5d56c5fe368e7b/charset_normalizer-3.4.7-cp314-cp314-musllinux_1_2_riscv64.whl", hash = "sha256:e74327fb75de8986940def6e8dee4f127cc9752bee7355bb323cc5b2659b6d46", size = 211352, upload-time = "2026-04-02T09:27:20.79Z" }, + { url = "https://files.pythonhosted.org/packages/8c/d7/4353be581b373033fb9198bf1da3cf8f09c1082561e8e922aa7b39bf9fe8/charset_normalizer-3.4.7-cp314-cp314-musllinux_1_2_s390x.whl", hash = "sha256:d6038d37043bced98a66e68d3aa2b6a35505dc01328cd65217cefe82f25def44", size = 227024, upload-time = "2026-04-02T09:27:22.063Z" }, + { url = "https://files.pythonhosted.org/packages/30/45/99d18aa925bd1740098ccd3060e238e21115fffbfdcb8f3ece837d0ace6c/charset_normalizer-3.4.7-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:7579e913a5339fb8fa133f6bbcfd8e6749696206cf05acdbdca71a1b436d8e72", size = 217869, upload-time = "2026-04-02T09:27:23.486Z" }, + { url = "https://files.pythonhosted.org/packages/5c/05/5ee478aa53f4bb7996482153d4bfe1b89e0f087f0ab6b294fcf92d595873/charset_normalizer-3.4.7-cp314-cp314-win32.whl", hash = "sha256:5b77459df20e08151cd6f8b9ef8ef1f961ef73d85c21a555c7eed5b79410ec10", size = 148541, upload-time = "2026-04-02T09:27:25.146Z" }, + { url = "https://files.pythonhosted.org/packages/48/77/72dcb0921b2ce86420b2d79d454c7022bf5be40202a2a07906b9f2a35c97/charset_normalizer-3.4.7-cp314-cp314-win_amd64.whl", hash = "sha256:92a0a01ead5e668468e952e4238cccd7c537364eb7d851ab144ab6627dbbe12f", size = 159634, upload-time = "2026-04-02T09:27:26.642Z" }, + { url = "https://files.pythonhosted.org/packages/c6/a3/c2369911cd72f02386e4e340770f6e158c7980267da16af8f668217abaa0/charset_normalizer-3.4.7-cp314-cp314-win_arm64.whl", hash = "sha256:67f6279d125ca0046a7fd386d01b311c6363844deac3e5b069b514ba3e63c246", size = 148384, upload-time = "2026-04-02T09:27:28.271Z" }, + { url = "https://files.pythonhosted.org/packages/94/09/7e8a7f73d24dba1f0035fbbf014d2c36828fc1bf9c88f84093e57d315935/charset_normalizer-3.4.7-cp314-cp314t-macosx_10_15_universal2.whl", hash = "sha256:effc3f449787117233702311a1b7d8f59cba9ced946ba727bdc329ec69028e24", size = 330133, upload-time = "2026-04-02T09:27:29.474Z" }, + { url = "https://files.pythonhosted.org/packages/8d/da/96975ddb11f8e977f706f45cddd8540fd8242f71ecdb5d18a80723dcf62c/charset_normalizer-3.4.7-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:fbccdc05410c9ee21bbf16a35f4c1d16123dcdeb8a1d38f33654fa21d0234f79", size = 216257, upload-time = "2026-04-02T09:27:30.793Z" }, + { url = "https://files.pythonhosted.org/packages/e5/e8/1d63bf8ef2d388e95c64b2098f45f84758f6d102a087552da1485912637b/charset_normalizer-3.4.7-cp314-cp314t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:733784b6d6def852c814bce5f318d25da2ee65dd4839a0718641c696e09a2960", size = 234851, upload-time = "2026-04-02T09:27:32.44Z" }, + { url = "https://files.pythonhosted.org/packages/9b/40/e5ff04233e70da2681fa43969ad6f66ca5611d7e669be0246c4c7aaf6dc8/charset_normalizer-3.4.7-cp314-cp314t-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:a89c23ef8d2c6b27fd200a42aa4ac72786e7c60d40efdc76e6011260b6e949c4", size = 233393, upload-time = "2026-04-02T09:27:34.03Z" }, + { url = "https://files.pythonhosted.org/packages/be/c1/06c6c49d5a5450f76899992f1ee40b41d076aee9279b49cf9974d2f313d5/charset_normalizer-3.4.7-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:6c114670c45346afedc0d947faf3c7f701051d2518b943679c8ff88befe14f8e", size = 223251, upload-time = "2026-04-02T09:27:35.369Z" }, + { url = "https://files.pythonhosted.org/packages/2b/9f/f2ff16fb050946169e3e1f82134d107e5d4ae72647ec8a1b1446c148480f/charset_normalizer-3.4.7-cp314-cp314t-manylinux_2_31_armv7l.whl", hash = "sha256:a180c5e59792af262bf263b21a3c49353f25945d8d9f70628e73de370d55e1e1", size = 206609, upload-time = "2026-04-02T09:27:36.661Z" }, + { url = "https://files.pythonhosted.org/packages/69/d5/a527c0cd8d64d2eab7459784fb4169a0ac76e5a6fc5237337982fd61347e/charset_normalizer-3.4.7-cp314-cp314t-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:3c9a494bc5ec77d43cea229c4f6db1e4d8fe7e1bbffa8b6f0f0032430ff8ab44", size = 220014, upload-time = "2026-04-02T09:27:38.019Z" }, + { url = "https://files.pythonhosted.org/packages/7e/80/8a7b8104a3e203074dc9aa2c613d4b726c0e136bad1cc734594b02867972/charset_normalizer-3.4.7-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:8d828b6667a32a728a1ad1d93957cdf37489c57b97ae6c4de2860fa749b8fc1e", size = 218979, upload-time = "2026-04-02T09:27:39.37Z" }, + { url = "https://files.pythonhosted.org/packages/02/9a/b759b503d507f375b2b5c153e4d2ee0a75aa215b7f2489cf314f4541f2c0/charset_normalizer-3.4.7-cp314-cp314t-musllinux_1_2_armv7l.whl", hash = "sha256:cf1493cd8607bec4d8a7b9b004e699fcf8f9103a9284cc94962cb73d20f9d4a3", size = 209238, upload-time = "2026-04-02T09:27:40.722Z" }, + { url = "https://files.pythonhosted.org/packages/c2/4e/0f3f5d47b86bdb79256e7290b26ac847a2832d9a4033f7eb2cd4bcf4bb5b/charset_normalizer-3.4.7-cp314-cp314t-musllinux_1_2_ppc64le.whl", hash = "sha256:0c96c3b819b5c3e9e165495db84d41914d6894d55181d2d108cc1a69bfc9cce0", size = 236110, upload-time = "2026-04-02T09:27:42.33Z" }, + { url = "https://files.pythonhosted.org/packages/96/23/bce28734eb3ed2c91dcf93abeb8a5cf393a7b2749725030bb630e554fdd8/charset_normalizer-3.4.7-cp314-cp314t-musllinux_1_2_riscv64.whl", hash = "sha256:752a45dc4a6934060b3b0dab47e04edc3326575f82be64bc4fc293914566503e", size = 219824, upload-time = "2026-04-02T09:27:43.924Z" }, + { url = "https://files.pythonhosted.org/packages/2c/6f/6e897c6984cc4d41af319b077f2f600fc8214eb2fe2d6bcb79141b882400/charset_normalizer-3.4.7-cp314-cp314t-musllinux_1_2_s390x.whl", hash = "sha256:8778f0c7a52e56f75d12dae53ae320fae900a8b9b4164b981b9c5ce059cd1fcb", size = 233103, upload-time = "2026-04-02T09:27:45.348Z" }, + { url = "https://files.pythonhosted.org/packages/76/22/ef7bd0fe480a0ae9b656189ec00744b60933f68b4f42a7bb06589f6f576a/charset_normalizer-3.4.7-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:ce3412fbe1e31eb81ea42f4169ed94861c56e643189e1e75f0041f3fe7020abe", size = 225194, upload-time = "2026-04-02T09:27:46.706Z" }, + { url = "https://files.pythonhosted.org/packages/c5/a7/0e0ab3e0b5bc1219bd80a6a0d4d72ca74d9250cb2382b7c699c147e06017/charset_normalizer-3.4.7-cp314-cp314t-win32.whl", hash = "sha256:c03a41a8784091e67a39648f70c5f97b5b6a37f216896d44d2cdcb82615339a0", size = 159827, upload-time = "2026-04-02T09:27:48.053Z" }, + { url = "https://files.pythonhosted.org/packages/7a/1d/29d32e0fb40864b1f878c7f5a0b343ae676c6e2b271a2d55cc3a152391da/charset_normalizer-3.4.7-cp314-cp314t-win_amd64.whl", hash = "sha256:03853ed82eeebbce3c2abfdbc98c96dc205f32a79627688ac9a27370ea61a49c", size = 174168, upload-time = "2026-04-02T09:27:49.795Z" }, + { url = "https://files.pythonhosted.org/packages/de/32/d92444ad05c7a6e41fb2036749777c163baf7a0301a040cb672d6b2b1ae9/charset_normalizer-3.4.7-cp314-cp314t-win_arm64.whl", hash = "sha256:c35abb8bfff0185efac5878da64c45dafd2b37fb0383add1be155a763c1f083d", size = 153018, upload-time = "2026-04-02T09:27:51.116Z" }, + { url = "https://files.pythonhosted.org/packages/db/8f/61959034484a4a7c527811f4721e75d02d653a35afb0b6054474d8185d4c/charset_normalizer-3.4.7-py3-none-any.whl", hash = "sha256:3dce51d0f5e7951f8bb4900c257dad282f49190fdbebecd4ba99bcc41fef404d", size = 61958, upload-time = "2026-04-02T09:28:37.794Z" }, +] + +[[package]] +name = "click" +version = "8.3.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "colorama", marker = "sys_platform == 'win32'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/bb/63/f9e1ea081ce35720d8b92acde70daaedace594dc93b693c869e0d5910718/click-8.3.3.tar.gz", hash = "sha256:398329ad4837b2ff7cbe1dd166a4c0f8900c3ca3a218de04466f38f6497f18a2", size = 328061, upload-time = "2026-04-22T15:11:27.506Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ae/44/c1221527f6a71a01ec6fbad7fa78f1d50dfa02217385cf0fa3eec7087d59/click-8.3.3-py3-none-any.whl", hash = "sha256:a2bf429bb3033c89fa4936ffb35d5cb471e3719e1f3c8a7c3fff0b8314305613", size = 110502, upload-time = "2026-04-22T15:11:25.044Z" }, +] + [[package]] name = "colorama" version = "0.4.6" @@ -101,6 +214,11 @@ benchmark = [ dev = [ { name = "pytest" }, ] +docs = [ + { name = "mkdocs-material" }, + { name = "mkdocs-mermaid2-plugin" }, + { name = "mkdocstrings", extra = ["python"] }, +] lint = [ { name = "ruff" }, ] @@ -115,8 +233,22 @@ provides-extras = ["benchmark"] [package.metadata.requires-dev] dev = [{ name = "pytest", specifier = ">=9.0.3" }] +docs = [ + { name = "mkdocs-material", specifier = ">=9.7.6" }, + { name = "mkdocs-mermaid2-plugin", specifier = ">=1.2.3" }, + { name = "mkdocstrings", extras = ["python"], specifier = ">=1.0.4" }, +] lint = [{ name = "ruff", specifier = ">=0.15.12" }] +[[package]] +name = "editorconfig" +version = "0.17.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/88/3a/a61d9a1f319a186b05d14df17daea42fcddea63c213bcd61a929fb3a6796/editorconfig-0.17.1.tar.gz", hash = "sha256:23c08b00e8e08cc3adcddb825251c497478df1dada6aefeb01e626ad37303745", size = 14695, upload-time = "2025-06-09T08:21:37.097Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/96/fd/a40c621ff207f3ce8e484aa0fc8ba4eb6e3ecf52e15b42ba764b457a9550/editorconfig-0.17.1-py3-none-any.whl", hash = "sha256:1eda9c2c0db8c16dbd50111b710572a5e6de934e39772de1959d41f64fc17c82", size = 16360, upload-time = "2025-06-09T08:21:35.654Z" }, +] + [[package]] name = "fonttools" version = "4.62.1" @@ -150,6 +282,36 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/fd/ba/56147c165442cc5ba7e82ecf301c9a68353cede498185869e6e02b4c264f/fonttools-4.62.1-py3-none-any.whl", hash = "sha256:7487782e2113861f4ddcc07c3436450659e3caa5e470b27dc2177cade2d8e7fd", size = 1152647, upload-time = "2026-03-13T13:54:22.735Z" }, ] +[[package]] +name = "ghp-import" +version = "2.1.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "python-dateutil" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/d9/29/d40217cbe2f6b1359e00c6c307bb3fc876ba74068cbab3dde77f03ca0dc4/ghp-import-2.1.0.tar.gz", hash = "sha256:9c535c4c61193c2df8871222567d7fd7e5014d835f97dc7b7439069e2413d343", size = 10943, upload-time = "2022-05-02T15:47:16.11Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f7/ec/67fbef5d497f86283db54c22eec6f6140243aae73265799baaaa19cd17fb/ghp_import-2.1.0-py3-none-any.whl", hash = "sha256:8337dd7b50877f163d4c0289bc1f1c7f127550241988d568c1db512c4324a619", size = 11034, upload-time = "2022-05-02T15:47:14.552Z" }, +] + +[[package]] +name = "griffelib" +version = "2.0.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/9d/82/74f4a3310cdabfbb10da554c3a672847f1ed33c6f61dd472681ce7f1fe67/griffelib-2.0.2.tar.gz", hash = "sha256:3cf20b3bc470e83763ffbf236e0076b1211bac1bc67de13daf494640f2de707e", size = 166461, upload-time = "2026-03-27T11:34:51.091Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/11/8c/c9138d881c79aa0ea9ed83cbd58d5ca75624378b38cee225dcf5c42cc91f/griffelib-2.0.2-py3-none-any.whl", hash = "sha256:925c857658fb1ba40c0772c37acbc2ab650bd794d9c1b9726922e36ea4117ea1", size = 142357, upload-time = "2026-03-27T11:34:46.275Z" }, +] + +[[package]] +name = "idna" +version = "3.14" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/05/b1/efac073e0c297ecf2fb33c346989a529d4e19164f1759102dee5953ee17e/idna-3.14.tar.gz", hash = "sha256:466d810d7a2cc1022bea9b037c39728d51ae7dad40d480fc9b7d7ecf98ba8ee3", size = 198272, upload-time = "2026-05-10T20:32:15.935Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/6c/3c/3f62dee257eb3d6b2c1ef2a09d36d9793c7111156a73b5654d2c2305e5ce/idna-3.14-py3-none-any.whl", hash = "sha256:e677eaf072e290f7b725f9acf0b3a2bd55f9fd6f7c70abe5f0e34823d0accf69", size = 72184, upload-time = "2026-05-10T20:32:14.295Z" }, +] + [[package]] name = "iniconfig" version = "2.3.0" @@ -159,6 +321,31 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/cb/b1/3846dd7f199d53cb17f49cba7e651e9ce294d8497c8c150530ed11865bb8/iniconfig-2.3.0-py3-none-any.whl", hash = "sha256:f631c04d2c48c52b84d0d0549c99ff3859c98df65b3101406327ecc7d53fbf12", size = 7484, upload-time = "2025-10-18T21:55:41.639Z" }, ] +[[package]] +name = "jinja2" +version = "3.1.6" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "markupsafe" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/df/bf/f7da0350254c0ed7c72f3e33cef02e048281fec7ecec5f032d4aac52226b/jinja2-3.1.6.tar.gz", hash = "sha256:0137fb05990d35f1275a587e9aee6d56da821fc83491a0fb838183be43f66d6d", size = 245115, upload-time = "2025-03-05T20:05:02.478Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/62/a1/3d680cbfd5f4b8f15abc1d571870c5fc3e594bb582bc3b64ea099db13e56/jinja2-3.1.6-py3-none-any.whl", hash = "sha256:85ece4451f492d0c13c5dd7c13a64681a86afae63a5f347908daf103ce6d2f67", size = 134899, upload-time = "2025-03-05T20:05:00.369Z" }, +] + +[[package]] +name = "jsbeautifier" +version = "1.15.4" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "editorconfig" }, + { name = "six" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/ea/98/d6cadf4d5a1c03b2136837a435682418c29fdeb66be137128544cecc5b7a/jsbeautifier-1.15.4.tar.gz", hash = "sha256:5bb18d9efb9331d825735fbc5360ee8f1aac5e52780042803943aa7f854f7592", size = 75257, upload-time = "2025-02-27T17:53:53.252Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/2d/14/1c65fccf8413d5f5c6e8425f84675169654395098000d8bddc4e9d3390e1/jsbeautifier-1.15.4-py3-none-any.whl", hash = "sha256:72f65de312a3f10900d7685557f84cb61a9733c50dcc27271a39f5b0051bf528", size = 94707, upload-time = "2025-02-27T17:53:46.152Z" }, +] + [[package]] name = "kiwisolver" version = "1.5.0" @@ -226,6 +413,67 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/99/a2/ca7dc962848040befed12732dff6acae7fb3c4f6fc4272b3f6c9a30b8713/kiwisolver-1.5.0-cp314-cp314t-win_arm64.whl", hash = "sha256:58f812017cd2985c21fbffb4864d59174d4903dd66fa23815e74bbc7a0e2dd57", size = 70032, upload-time = "2026-03-09T13:15:34.411Z" }, ] +[[package]] +name = "markdown" +version = "3.10.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/2b/f4/69fa6ed85ae003c2378ffa8f6d2e3234662abd02c10d216c0ba96081a238/markdown-3.10.2.tar.gz", hash = "sha256:994d51325d25ad8aa7ce4ebaec003febcce822c3f8c911e3b17c52f7f589f950", size = 368805, upload-time = "2026-02-09T14:57:26.942Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/de/1f/77fa3081e4f66ca3576c896ae5d31c3002ac6607f9747d2e3aa49227e464/markdown-3.10.2-py3-none-any.whl", hash = "sha256:e91464b71ae3ee7afd3017d9f358ef0baf158fd9a298db92f1d4761133824c36", size = 108180, upload-time = "2026-02-09T14:57:25.787Z" }, +] + +[[package]] +name = "markupsafe" +version = "3.0.3" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/7e/99/7690b6d4034fffd95959cbe0c02de8deb3098cc577c67bb6a24fe5d7caa7/markupsafe-3.0.3.tar.gz", hash = "sha256:722695808f4b6457b320fdc131280796bdceb04ab50fe1795cd540799ebe1698", size = 80313, upload-time = "2025-09-27T18:37:40.426Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/38/2f/907b9c7bbba283e68f20259574b13d005c121a0fa4c175f9bed27c4597ff/markupsafe-3.0.3-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:e1cf1972137e83c5d4c136c43ced9ac51d0e124706ee1c8aa8532c1287fa8795", size = 11622, upload-time = "2025-09-27T18:36:41.777Z" }, + { url = "https://files.pythonhosted.org/packages/9c/d9/5f7756922cdd676869eca1c4e3c0cd0df60ed30199ffd775e319089cb3ed/markupsafe-3.0.3-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:116bb52f642a37c115f517494ea5feb03889e04df47eeff5b130b1808ce7c219", size = 12029, upload-time = "2025-09-27T18:36:43.257Z" }, + { url = "https://files.pythonhosted.org/packages/00/07/575a68c754943058c78f30db02ee03a64b3c638586fba6a6dd56830b30a3/markupsafe-3.0.3-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:133a43e73a802c5562be9bbcd03d090aa5a1fe899db609c29e8c8d815c5f6de6", size = 24374, upload-time = "2025-09-27T18:36:44.508Z" }, + { url = "https://files.pythonhosted.org/packages/a9/21/9b05698b46f218fc0e118e1f8168395c65c8a2c750ae2bab54fc4bd4e0e8/markupsafe-3.0.3-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:ccfcd093f13f0f0b7fdd0f198b90053bf7b2f02a3927a30e63f3ccc9df56b676", size = 22980, upload-time = "2025-09-27T18:36:45.385Z" }, + { url = "https://files.pythonhosted.org/packages/7f/71/544260864f893f18b6827315b988c146b559391e6e7e8f7252839b1b846a/markupsafe-3.0.3-cp313-cp313-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:509fa21c6deb7a7a273d629cf5ec029bc209d1a51178615ddf718f5918992ab9", size = 21990, upload-time = "2025-09-27T18:36:46.916Z" }, + { url = "https://files.pythonhosted.org/packages/c2/28/b50fc2f74d1ad761af2f5dcce7492648b983d00a65b8c0e0cb457c82ebbe/markupsafe-3.0.3-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:a4afe79fb3de0b7097d81da19090f4df4f8d3a2b3adaa8764138aac2e44f3af1", size = 23784, upload-time = "2025-09-27T18:36:47.884Z" }, + { url = "https://files.pythonhosted.org/packages/ed/76/104b2aa106a208da8b17a2fb72e033a5a9d7073c68f7e508b94916ed47a9/markupsafe-3.0.3-cp313-cp313-musllinux_1_2_riscv64.whl", hash = "sha256:795e7751525cae078558e679d646ae45574b47ed6e7771863fcc079a6171a0fc", size = 21588, upload-time = "2025-09-27T18:36:48.82Z" }, + { url = "https://files.pythonhosted.org/packages/b5/99/16a5eb2d140087ebd97180d95249b00a03aa87e29cc224056274f2e45fd6/markupsafe-3.0.3-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:8485f406a96febb5140bfeca44a73e3ce5116b2501ac54fe953e488fb1d03b12", size = 23041, upload-time = "2025-09-27T18:36:49.797Z" }, + { url = "https://files.pythonhosted.org/packages/19/bc/e7140ed90c5d61d77cea142eed9f9c303f4c4806f60a1044c13e3f1471d0/markupsafe-3.0.3-cp313-cp313-win32.whl", hash = "sha256:bdd37121970bfd8be76c5fb069c7751683bdf373db1ed6c010162b2a130248ed", size = 14543, upload-time = "2025-09-27T18:36:51.584Z" }, + { url = "https://files.pythonhosted.org/packages/05/73/c4abe620b841b6b791f2edc248f556900667a5a1cf023a6646967ae98335/markupsafe-3.0.3-cp313-cp313-win_amd64.whl", hash = "sha256:9a1abfdc021a164803f4d485104931fb8f8c1efd55bc6b748d2f5774e78b62c5", size = 15113, upload-time = "2025-09-27T18:36:52.537Z" }, + { url = "https://files.pythonhosted.org/packages/f0/3a/fa34a0f7cfef23cf9500d68cb7c32dd64ffd58a12b09225fb03dd37d5b80/markupsafe-3.0.3-cp313-cp313-win_arm64.whl", hash = "sha256:7e68f88e5b8799aa49c85cd116c932a1ac15caaa3f5db09087854d218359e485", size = 13911, upload-time = "2025-09-27T18:36:53.513Z" }, + { url = "https://files.pythonhosted.org/packages/e4/d7/e05cd7efe43a88a17a37b3ae96e79a19e846f3f456fe79c57ca61356ef01/markupsafe-3.0.3-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:218551f6df4868a8d527e3062d0fb968682fe92054e89978594c28e642c43a73", size = 11658, upload-time = "2025-09-27T18:36:54.819Z" }, + { url = "https://files.pythonhosted.org/packages/99/9e/e412117548182ce2148bdeacdda3bb494260c0b0184360fe0d56389b523b/markupsafe-3.0.3-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:3524b778fe5cfb3452a09d31e7b5adefeea8c5be1d43c4f810ba09f2ceb29d37", size = 12066, upload-time = "2025-09-27T18:36:55.714Z" }, + { url = "https://files.pythonhosted.org/packages/bc/e6/fa0ffcda717ef64a5108eaa7b4f5ed28d56122c9a6d70ab8b72f9f715c80/markupsafe-3.0.3-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:4e885a3d1efa2eadc93c894a21770e4bc67899e3543680313b09f139e149ab19", size = 25639, upload-time = "2025-09-27T18:36:56.908Z" }, + { url = "https://files.pythonhosted.org/packages/96/ec/2102e881fe9d25fc16cb4b25d5f5cde50970967ffa5dddafdb771237062d/markupsafe-3.0.3-cp313-cp313t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:8709b08f4a89aa7586de0aadc8da56180242ee0ada3999749b183aa23df95025", size = 23569, upload-time = "2025-09-27T18:36:57.913Z" }, + { url = "https://files.pythonhosted.org/packages/4b/30/6f2fce1f1f205fc9323255b216ca8a235b15860c34b6798f810f05828e32/markupsafe-3.0.3-cp313-cp313t-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:b8512a91625c9b3da6f127803b166b629725e68af71f8184ae7e7d54686a56d6", size = 23284, upload-time = "2025-09-27T18:36:58.833Z" }, + { url = "https://files.pythonhosted.org/packages/58/47/4a0ccea4ab9f5dcb6f79c0236d954acb382202721e704223a8aafa38b5c8/markupsafe-3.0.3-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:9b79b7a16f7fedff2495d684f2b59b0457c3b493778c9eed31111be64d58279f", size = 24801, upload-time = "2025-09-27T18:36:59.739Z" }, + { url = "https://files.pythonhosted.org/packages/6a/70/3780e9b72180b6fecb83a4814d84c3bf4b4ae4bf0b19c27196104149734c/markupsafe-3.0.3-cp313-cp313t-musllinux_1_2_riscv64.whl", hash = "sha256:12c63dfb4a98206f045aa9563db46507995f7ef6d83b2f68eda65c307c6829eb", size = 22769, upload-time = "2025-09-27T18:37:00.719Z" }, + { url = "https://files.pythonhosted.org/packages/98/c5/c03c7f4125180fc215220c035beac6b9cb684bc7a067c84fc69414d315f5/markupsafe-3.0.3-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:8f71bc33915be5186016f675cd83a1e08523649b0e33efdb898db577ef5bb009", size = 23642, upload-time = "2025-09-27T18:37:01.673Z" }, + { url = "https://files.pythonhosted.org/packages/80/d6/2d1b89f6ca4bff1036499b1e29a1d02d282259f3681540e16563f27ebc23/markupsafe-3.0.3-cp313-cp313t-win32.whl", hash = "sha256:69c0b73548bc525c8cb9a251cddf1931d1db4d2258e9599c28c07ef3580ef354", size = 14612, upload-time = "2025-09-27T18:37:02.639Z" }, + { url = "https://files.pythonhosted.org/packages/2b/98/e48a4bfba0a0ffcf9925fe2d69240bfaa19c6f7507b8cd09c70684a53c1e/markupsafe-3.0.3-cp313-cp313t-win_amd64.whl", hash = "sha256:1b4b79e8ebf6b55351f0d91fe80f893b4743f104bff22e90697db1590e47a218", size = 15200, upload-time = "2025-09-27T18:37:03.582Z" }, + { url = "https://files.pythonhosted.org/packages/0e/72/e3cc540f351f316e9ed0f092757459afbc595824ca724cbc5a5d4263713f/markupsafe-3.0.3-cp313-cp313t-win_arm64.whl", hash = "sha256:ad2cf8aa28b8c020ab2fc8287b0f823d0a7d8630784c31e9ee5edea20f406287", size = 13973, upload-time = "2025-09-27T18:37:04.929Z" }, + { url = "https://files.pythonhosted.org/packages/33/8a/8e42d4838cd89b7dde187011e97fe6c3af66d8c044997d2183fbd6d31352/markupsafe-3.0.3-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:eaa9599de571d72e2daf60164784109f19978b327a3910d3e9de8c97b5b70cfe", size = 11619, upload-time = "2025-09-27T18:37:06.342Z" }, + { url = "https://files.pythonhosted.org/packages/b5/64/7660f8a4a8e53c924d0fa05dc3a55c9cee10bbd82b11c5afb27d44b096ce/markupsafe-3.0.3-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:c47a551199eb8eb2121d4f0f15ae0f923d31350ab9280078d1e5f12b249e0026", size = 12029, upload-time = "2025-09-27T18:37:07.213Z" }, + { url = "https://files.pythonhosted.org/packages/da/ef/e648bfd021127bef5fa12e1720ffed0c6cbb8310c8d9bea7266337ff06de/markupsafe-3.0.3-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:f34c41761022dd093b4b6896d4810782ffbabe30f2d443ff5f083e0cbbb8c737", size = 24408, upload-time = "2025-09-27T18:37:09.572Z" }, + { url = "https://files.pythonhosted.org/packages/41/3c/a36c2450754618e62008bf7435ccb0f88053e07592e6028a34776213d877/markupsafe-3.0.3-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:457a69a9577064c05a97c41f4e65148652db078a3a509039e64d3467b9e7ef97", size = 23005, upload-time = "2025-09-27T18:37:10.58Z" }, + { url = "https://files.pythonhosted.org/packages/bc/20/b7fdf89a8456b099837cd1dc21974632a02a999ec9bf7ca3e490aacd98e7/markupsafe-3.0.3-cp314-cp314-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:e8afc3f2ccfa24215f8cb28dcf43f0113ac3c37c2f0f0806d8c70e4228c5cf4d", size = 22048, upload-time = "2025-09-27T18:37:11.547Z" }, + { url = "https://files.pythonhosted.org/packages/9a/a7/591f592afdc734f47db08a75793a55d7fbcc6902a723ae4cfbab61010cc5/markupsafe-3.0.3-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:ec15a59cf5af7be74194f7ab02d0f59a62bdcf1a537677ce67a2537c9b87fcda", size = 23821, upload-time = "2025-09-27T18:37:12.48Z" }, + { url = "https://files.pythonhosted.org/packages/7d/33/45b24e4f44195b26521bc6f1a82197118f74df348556594bd2262bda1038/markupsafe-3.0.3-cp314-cp314-musllinux_1_2_riscv64.whl", hash = "sha256:0eb9ff8191e8498cca014656ae6b8d61f39da5f95b488805da4bb029cccbfbaf", size = 21606, upload-time = "2025-09-27T18:37:13.485Z" }, + { url = "https://files.pythonhosted.org/packages/ff/0e/53dfaca23a69fbfbbf17a4b64072090e70717344c52eaaaa9c5ddff1e5f0/markupsafe-3.0.3-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:2713baf880df847f2bece4230d4d094280f4e67b1e813eec43b4c0e144a34ffe", size = 23043, upload-time = "2025-09-27T18:37:14.408Z" }, + { url = "https://files.pythonhosted.org/packages/46/11/f333a06fc16236d5238bfe74daccbca41459dcd8d1fa952e8fbd5dccfb70/markupsafe-3.0.3-cp314-cp314-win32.whl", hash = "sha256:729586769a26dbceff69f7a7dbbf59ab6572b99d94576a5592625d5b411576b9", size = 14747, upload-time = "2025-09-27T18:37:15.36Z" }, + { url = "https://files.pythonhosted.org/packages/28/52/182836104b33b444e400b14f797212f720cbc9ed6ba34c800639d154e821/markupsafe-3.0.3-cp314-cp314-win_amd64.whl", hash = "sha256:bdc919ead48f234740ad807933cdf545180bfbe9342c2bb451556db2ed958581", size = 15341, upload-time = "2025-09-27T18:37:16.496Z" }, + { url = "https://files.pythonhosted.org/packages/6f/18/acf23e91bd94fd7b3031558b1f013adfa21a8e407a3fdb32745538730382/markupsafe-3.0.3-cp314-cp314-win_arm64.whl", hash = "sha256:5a7d5dc5140555cf21a6fefbdbf8723f06fcd2f63ef108f2854de715e4422cb4", size = 14073, upload-time = "2025-09-27T18:37:17.476Z" }, + { url = "https://files.pythonhosted.org/packages/3c/f0/57689aa4076e1b43b15fdfa646b04653969d50cf30c32a102762be2485da/markupsafe-3.0.3-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:1353ef0c1b138e1907ae78e2f6c63ff67501122006b0f9abad68fda5f4ffc6ab", size = 11661, upload-time = "2025-09-27T18:37:18.453Z" }, + { url = "https://files.pythonhosted.org/packages/89/c3/2e67a7ca217c6912985ec766c6393b636fb0c2344443ff9d91404dc4c79f/markupsafe-3.0.3-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:1085e7fbddd3be5f89cc898938f42c0b3c711fdcb37d75221de2666af647c175", size = 12069, upload-time = "2025-09-27T18:37:19.332Z" }, + { url = "https://files.pythonhosted.org/packages/f0/00/be561dce4e6ca66b15276e184ce4b8aec61fe83662cce2f7d72bd3249d28/markupsafe-3.0.3-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:1b52b4fb9df4eb9ae465f8d0c228a00624de2334f216f178a995ccdcf82c4634", size = 25670, upload-time = "2025-09-27T18:37:20.245Z" }, + { url = "https://files.pythonhosted.org/packages/50/09/c419f6f5a92e5fadde27efd190eca90f05e1261b10dbd8cbcb39cd8ea1dc/markupsafe-3.0.3-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:fed51ac40f757d41b7c48425901843666a6677e3e8eb0abcff09e4ba6e664f50", size = 23598, upload-time = "2025-09-27T18:37:21.177Z" }, + { url = "https://files.pythonhosted.org/packages/22/44/a0681611106e0b2921b3033fc19bc53323e0b50bc70cffdd19f7d679bb66/markupsafe-3.0.3-cp314-cp314t-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:f190daf01f13c72eac4efd5c430a8de82489d9cff23c364c3ea822545032993e", size = 23261, upload-time = "2025-09-27T18:37:22.167Z" }, + { url = "https://files.pythonhosted.org/packages/5f/57/1b0b3f100259dc9fffe780cfb60d4be71375510e435efec3d116b6436d43/markupsafe-3.0.3-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:e56b7d45a839a697b5eb268c82a71bd8c7f6c94d6fd50c3d577fa39a9f1409f5", size = 24835, upload-time = "2025-09-27T18:37:23.296Z" }, + { url = "https://files.pythonhosted.org/packages/26/6a/4bf6d0c97c4920f1597cc14dd720705eca0bf7c787aebc6bb4d1bead5388/markupsafe-3.0.3-cp314-cp314t-musllinux_1_2_riscv64.whl", hash = "sha256:f3e98bb3798ead92273dc0e5fd0f31ade220f59a266ffd8a4f6065e0a3ce0523", size = 22733, upload-time = "2025-09-27T18:37:24.237Z" }, + { url = "https://files.pythonhosted.org/packages/14/c7/ca723101509b518797fedc2fdf79ba57f886b4aca8a7d31857ba3ee8281f/markupsafe-3.0.3-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:5678211cb9333a6468fb8d8be0305520aa073f50d17f089b5b4b477ea6e67fdc", size = 23672, upload-time = "2025-09-27T18:37:25.271Z" }, + { url = "https://files.pythonhosted.org/packages/fb/df/5bd7a48c256faecd1d36edc13133e51397e41b73bb77e1a69deab746ebac/markupsafe-3.0.3-cp314-cp314t-win32.whl", hash = "sha256:915c04ba3851909ce68ccc2b8e2cd691618c4dc4c4232fb7982bca3f41fd8c3d", size = 14819, upload-time = "2025-09-27T18:37:26.285Z" }, + { url = "https://files.pythonhosted.org/packages/1a/8a/0402ba61a2f16038b48b39bccca271134be00c5c9f0f623208399333c448/markupsafe-3.0.3-cp314-cp314t-win_amd64.whl", hash = "sha256:4faffd047e07c38848ce017e8725090413cd80cbc23d86e55c587bf979e579c9", size = 15426, upload-time = "2025-09-27T18:37:27.316Z" }, + { url = "https://files.pythonhosted.org/packages/70/bc/6f1c2f612465f5fa89b95bead1f44dcb607670fd42891d8fdcd5d039f4f4/markupsafe-3.0.3-cp314-cp314t-win_arm64.whl", hash = "sha256:32001d6a8fc98c8cb5c947787c5d08b0a50663d139f1305bac5885d98d9b40fa", size = 14146, upload-time = "2025-09-27T18:37:28.327Z" }, +] + [[package]] name = "matplotlib" version = "3.10.9" @@ -273,6 +521,151 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/78/23/92493c3e6e1b635ccfff146f7b99e674808787915420373ac399283764c2/matplotlib-3.10.9-cp314-cp314t-win_arm64.whl", hash = "sha256:a49f1eadc84ca85fd72fa4e89e70e61bf86452df6f971af04b12c60761a0772c", size = 8324785, upload-time = "2026-04-24T00:13:53.633Z" }, ] +[[package]] +name = "mergedeep" +version = "1.3.4" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/3a/41/580bb4006e3ed0361b8151a01d324fb03f420815446c7def45d02f74c270/mergedeep-1.3.4.tar.gz", hash = "sha256:0096d52e9dad9939c3d975a774666af186eda617e6ca84df4c94dec30004f2a8", size = 4661, upload-time = "2021-02-05T18:55:30.623Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/2c/19/04f9b178c2d8a15b076c8b5140708fa6ffc5601fb6f1e975537072df5b2a/mergedeep-1.3.4-py3-none-any.whl", hash = "sha256:70775750742b25c0d8f36c55aed03d24c3384d17c951b3175d898bd778ef0307", size = 6354, upload-time = "2021-02-05T18:55:29.583Z" }, +] + +[[package]] +name = "mkdocs" +version = "1.6.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "click" }, + { name = "colorama", marker = "sys_platform == 'win32'" }, + { name = "ghp-import" }, + { name = "jinja2" }, + { name = "markdown" }, + { name = "markupsafe" }, + { name = "mergedeep" }, + { name = "mkdocs-get-deps" }, + { name = "packaging" }, + { name = "pathspec" }, + { name = "pyyaml" }, + { name = "pyyaml-env-tag" }, + { name = "watchdog" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/bc/c6/bbd4f061bd16b378247f12953ffcb04786a618ce5e904b8c5a01a0309061/mkdocs-1.6.1.tar.gz", hash = "sha256:7b432f01d928c084353ab39c57282f29f92136665bdd6abf7c1ec8d822ef86f2", size = 3889159, upload-time = "2024-08-30T12:24:06.899Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/22/5b/dbc6a8cddc9cfa9c4971d59fb12bb8d42e161b7e7f8cc89e49137c5b279c/mkdocs-1.6.1-py3-none-any.whl", hash = "sha256:db91759624d1647f3f34aa0c3f327dd2601beae39a366d6e064c03468d35c20e", size = 3864451, upload-time = "2024-08-30T12:24:05.054Z" }, +] + +[[package]] +name = "mkdocs-autorefs" +version = "1.4.4" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "markdown" }, + { name = "markupsafe" }, + { name = "mkdocs" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/52/c0/f641843de3f612a6b48253f39244165acff36657a91cc903633d456ae1ac/mkdocs_autorefs-1.4.4.tar.gz", hash = "sha256:d54a284f27a7346b9c38f1f852177940c222da508e66edc816a0fa55fc6da197", size = 56588, upload-time = "2026-02-10T15:23:55.105Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/28/de/a3e710469772c6a89595fc52816da05c1e164b4c866a89e3cb82fb1b67c5/mkdocs_autorefs-1.4.4-py3-none-any.whl", hash = "sha256:834ef5408d827071ad1bc69e0f39704fa34c7fc05bc8e1c72b227dfdc5c76089", size = 25530, upload-time = "2026-02-10T15:23:53.817Z" }, +] + +[[package]] +name = "mkdocs-get-deps" +version = "0.2.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "mergedeep" }, + { name = "platformdirs" }, + { name = "pyyaml" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/ce/25/b3cccb187655b9393572bde9b09261d267c3bf2f2cdabe347673be5976a6/mkdocs_get_deps-0.2.2.tar.gz", hash = "sha256:8ee8d5f316cdbbb2834bc1df6e69c08fe769a83e040060de26d3c19fad3599a1", size = 11047, upload-time = "2026-03-10T02:46:33.632Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/88/29/744136411e785c4b0b744d5413e56555265939ab3a104c6a4b719dad33fd/mkdocs_get_deps-0.2.2-py3-none-any.whl", hash = "sha256:e7878cbeac04860b8b5e0ca31d3abad3df9411a75a32cde82f8e44b6c16ff650", size = 9555, upload-time = "2026-03-10T02:46:32.256Z" }, +] + +[[package]] +name = "mkdocs-material" +version = "9.7.6" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "babel" }, + { name = "backrefs" }, + { name = "colorama" }, + { name = "jinja2" }, + { name = "markdown" }, + { name = "mkdocs" }, + { name = "mkdocs-material-extensions" }, + { name = "paginate" }, + { name = "pygments" }, + { name = "pymdown-extensions" }, + { name = "requests" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/45/29/6d2bcf41ae40802c4beda2432396fff97b8456fb496371d1bc7aad6512ec/mkdocs_material-9.7.6.tar.gz", hash = "sha256:00bdde50574f776d328b1862fe65daeaf581ec309bd150f7bff345a098c64a69", size = 4097959, upload-time = "2026-03-19T15:41:58.161Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/2c/01/bc663630c510822c95c47a66af9fa7a443c295b47d5f041e5e6ae62ef659/mkdocs_material-9.7.6-py3-none-any.whl", hash = "sha256:71b84353921b8ea1ba84fe11c50912cc512da8fe0881038fcc9a0761c0e635ba", size = 9305470, upload-time = "2026-03-19T15:41:55.217Z" }, +] + +[[package]] +name = "mkdocs-material-extensions" +version = "1.3.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/79/9b/9b4c96d6593b2a541e1cb8b34899a6d021d208bb357042823d4d2cabdbe7/mkdocs_material_extensions-1.3.1.tar.gz", hash = "sha256:10c9511cea88f568257f960358a467d12b970e1f7b2c0e5fb2bb48cab1928443", size = 11847, upload-time = "2023-11-22T19:09:45.208Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/5b/54/662a4743aa81d9582ee9339d4ffa3c8fd40a4965e033d77b9da9774d3960/mkdocs_material_extensions-1.3.1-py3-none-any.whl", hash = "sha256:adff8b62700b25cb77b53358dad940f3ef973dd6db797907c49e3c2ef3ab4e31", size = 8728, upload-time = "2023-11-22T19:09:43.465Z" }, +] + +[[package]] +name = "mkdocs-mermaid2-plugin" +version = "1.2.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "beautifulsoup4" }, + { name = "jsbeautifier" }, + { name = "mkdocs" }, + { name = "pymdown-extensions" }, + { name = "requests" }, + { name = "setuptools" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/2a/6d/308f443a558b6a97ce55782658174c0d07c414405cfc0a44d36ad37e36f9/mkdocs_mermaid2_plugin-1.2.3.tar.gz", hash = "sha256:fb6f901d53e5191e93db78f93f219cad926ccc4d51e176271ca5161b6cc5368c", size = 16220, upload-time = "2025-10-17T19:38:53.047Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/1a/4b/6fd6dd632019b7f522f1b1f794ab6115cd79890330986614be56fd18f0eb/mkdocs_mermaid2_plugin-1.2.3-py3-none-any.whl", hash = "sha256:33f60c582be623ed53829a96e19284fc7f1b74a1dbae78d4d2e47fe00c3e190d", size = 17299, upload-time = "2025-10-17T19:38:51.874Z" }, +] + +[[package]] +name = "mkdocstrings" +version = "1.0.4" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "jinja2" }, + { name = "markdown" }, + { name = "markupsafe" }, + { name = "mkdocs" }, + { name = "mkdocs-autorefs" }, + { name = "pymdown-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/1d/5d/f888d4d3eb31359b327bc9b17a212d6ef03fe0b0682fbb3fc2cb849fb12b/mkdocstrings-1.0.4.tar.gz", hash = "sha256:3969a6515b77db65fd097b53c1b7aa4ae840bd71a2ee62a6a3e89503446d7172", size = 100088, upload-time = "2026-04-15T09:16:53.376Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/6e/94/be70f8ee9c45f2f62b39a1f0e9303bc20e138a8f3b8e50ffd89498e177e1/mkdocstrings-1.0.4-py3-none-any.whl", hash = "sha256:63464b4b29053514f32a1dbbf604e52876d5e638111b0c295ab7ed3cac73ca9b", size = 35560, upload-time = "2026-04-15T09:16:51.436Z" }, +] + +[package.optional-dependencies] +python = [ + { name = "mkdocstrings-python" }, +] + +[[package]] +name = "mkdocstrings-python" +version = "2.0.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "griffelib" }, + { name = "mkdocs-autorefs" }, + { name = "mkdocstrings" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/29/33/c225eaf898634bdda489a6766fc35d1683c640bffe0e0acd10646b13536d/mkdocstrings_python-2.0.3.tar.gz", hash = "sha256:c518632751cc869439b31c9d3177678ad2bfa5c21b79b863956ad68fc92c13b8", size = 199083, upload-time = "2026-02-20T10:38:36.368Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/32/28/79f0f8de97cce916d5ae88a7bee1ad724855e83e6019c0b4d5b3fabc80f3/mkdocstrings_python-2.0.3-py3-none-any.whl", hash = "sha256:0b83513478bdfd803ff05aa43e9b1fca9dd22bcd9471f09ca6257f009bc5ee12", size = 104779, upload-time = "2026-02-20T10:38:34.517Z" }, +] + [[package]] name = "numpy" version = "2.4.4" @@ -332,6 +725,15 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/df/b2/87e62e8c3e2f4b32e5fe99e0b86d576da1312593b39f47d8ceef365e95ed/packaging-26.2-py3-none-any.whl", hash = "sha256:5fc45236b9446107ff2415ce77c807cee2862cb6fac22b8a73826d0693b0980e", size = 100195, upload-time = "2026-04-24T20:15:22.081Z" }, ] +[[package]] +name = "paginate" +version = "0.5.7" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/ec/46/68dde5b6bc00c1296ec6466ab27dddede6aec9af1b99090e1107091b3b84/paginate-0.5.7.tar.gz", hash = "sha256:22bd083ab41e1a8b4f3690544afb2c60c25e5c9a63a30fa2f483f6c60c8e5945", size = 19252, upload-time = "2024-08-25T14:17:24.139Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/90/96/04b8e52da071d28f5e21a805b19cb9390aa17a47462ac87f5e2696b9566d/paginate-0.5.7-py2.py3-none-any.whl", hash = "sha256:b885e2af73abcf01d9559fd5216b57ef722f8c42affbb63942377668e35c7591", size = 13746, upload-time = "2024-08-25T14:17:22.55Z" }, +] + [[package]] name = "pandas" version = "3.0.2" @@ -376,6 +778,15 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/cb/2b/f8434233fab2bd66a02ec014febe4e5adced20e2693e0e90a07d118ed30e/pandas-3.0.2-cp314-cp314t-win_arm64.whl", hash = "sha256:5371b72c2d4d415d08765f32d689217a43227484e81b2305b52076e328f6f482", size = 9455341, upload-time = "2026-03-31T06:48:28.418Z" }, ] +[[package]] +name = "pathspec" +version = "1.1.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/5a/82/42f767fc1c1143d6fd36efb827202a2d997a375e160a71eb2888a925aac1/pathspec-1.1.1.tar.gz", hash = "sha256:17db5ecd524104a120e173814c90367a96a98d07c45b2e10c2f3919fff91bf5a", size = 135180, upload-time = "2026-04-27T01:46:08.907Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f1/d9/7fb5aa316bc299258e68c73ba3bddbc499654a07f151cba08f6153988714/pathspec-1.1.1-py3-none-any.whl", hash = "sha256:a00ce642f577bf7f473932318056212bc4f8bfdf53128c78bbd5af0b9b20b189", size = 57328, upload-time = "2026-04-27T01:46:07.06Z" }, +] + [[package]] name = "pillow" version = "12.2.0" @@ -434,6 +845,15 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/ff/6e/cf826fae916b8658848d7b9f38d88da6396895c676e8086fc0988073aaf8/pillow-12.2.0-cp314-cp314t-win_arm64.whl", hash = "sha256:aa88ccfe4e32d362816319ed727a004423aab09c5cea43c01a4b435643fa34eb", size = 2556579, upload-time = "2026-04-01T14:45:52.529Z" }, ] +[[package]] +name = "platformdirs" +version = "4.9.6" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/9f/4a/0883b8e3802965322523f0b200ecf33d31f10991d0401162f4b23c698b42/platformdirs-4.9.6.tar.gz", hash = "sha256:3bfa75b0ad0db84096ae777218481852c0ebc6c727b3168c1b9e0118e458cf0a", size = 29400, upload-time = "2026-04-09T00:04:10.812Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/75/a6/a0a304dc33b49145b21f4808d763822111e67d1c3a32b524a1baf947b6e1/platformdirs-4.9.6-py3-none-any.whl", hash = "sha256:e61adb1d5e5cb3441b4b7710bea7e4c12250ca49439228cc1021c00dcfac0917", size = 21348, upload-time = "2026-04-09T00:04:09.463Z" }, +] + [[package]] name = "pluggy" version = "1.6.0" @@ -452,6 +872,19 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/f4/7e/a72dd26f3b0f4f2bf1dd8923c85f7ceb43172af56d63c7383eb62b332364/pygments-2.20.0-py3-none-any.whl", hash = "sha256:81a9e26dd42fd28a23a2d169d86d7ac03b46e2f8b59ed4698fb4785f946d0176", size = 1231151, upload-time = "2026-03-29T13:29:30.038Z" }, ] +[[package]] +name = "pymdown-extensions" +version = "10.21.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "markdown" }, + { name = "pyyaml" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/df/08/f1c908c581fd11913da4711ea7ba32c0eee40b0190000996bb863b0c9349/pymdown_extensions-10.21.2.tar.gz", hash = "sha256:c3f55a5b8a1d0edf6699e35dcbea71d978d34ff3fa79f3d807b8a5b3fa90fbdc", size = 853922, upload-time = "2026-03-29T15:01:55.233Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f7/27/a2fc51a4a122dfd1015e921ae9d22fee3d20b0b8080d9a704578bf9deece/pymdown_extensions-10.21.2-py3-none-any.whl", hash = "sha256:5c0fd2a2bea14eb39af8ff284f1066d898ab2187d81b889b75d46d4348c01638", size = 268901, upload-time = "2026-03-29T15:01:53.244Z" }, +] + [[package]] name = "pyparsing" version = "3.3.2" @@ -489,6 +922,69 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/ec/57/56b9bcc3c9c6a792fcbaf139543cee77261f3651ca9da0c93f5c1221264b/python_dateutil-2.9.0.post0-py2.py3-none-any.whl", hash = "sha256:a8b2bc7bffae282281c8140a97d3aa9c14da0b136dfe83f850eea9a5f7470427", size = 229892, upload-time = "2024-03-01T18:36:18.57Z" }, ] +[[package]] +name = "pyyaml" +version = "6.0.3" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/05/8e/961c0007c59b8dd7729d542c61a4d537767a59645b82a0b521206e1e25c2/pyyaml-6.0.3.tar.gz", hash = "sha256:d76623373421df22fb4cf8817020cbb7ef15c725b9d5e45f17e189bfc384190f", size = 130960, upload-time = "2025-09-25T21:33:16.546Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d1/11/0fd08f8192109f7169db964b5707a2f1e8b745d4e239b784a5a1dd80d1db/pyyaml-6.0.3-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:8da9669d359f02c0b91ccc01cac4a67f16afec0dac22c2ad09f46bee0697eba8", size = 181669, upload-time = "2025-09-25T21:32:23.673Z" }, + { url = "https://files.pythonhosted.org/packages/b1/16/95309993f1d3748cd644e02e38b75d50cbc0d9561d21f390a76242ce073f/pyyaml-6.0.3-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:2283a07e2c21a2aa78d9c4442724ec1eb15f5e42a723b99cb3d822d48f5f7ad1", size = 173252, upload-time = "2025-09-25T21:32:25.149Z" }, + { url = "https://files.pythonhosted.org/packages/50/31/b20f376d3f810b9b2371e72ef5adb33879b25edb7a6d072cb7ca0c486398/pyyaml-6.0.3-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:ee2922902c45ae8ccada2c5b501ab86c36525b883eff4255313a253a3160861c", size = 767081, upload-time = "2025-09-25T21:32:26.575Z" }, + { url = "https://files.pythonhosted.org/packages/49/1e/a55ca81e949270d5d4432fbbd19dfea5321eda7c41a849d443dc92fd1ff7/pyyaml-6.0.3-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:a33284e20b78bd4a18c8c2282d549d10bc8408a2a7ff57653c0cf0b9be0afce5", size = 841159, upload-time = "2025-09-25T21:32:27.727Z" }, + { url = "https://files.pythonhosted.org/packages/74/27/e5b8f34d02d9995b80abcef563ea1f8b56d20134d8f4e5e81733b1feceb2/pyyaml-6.0.3-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:0f29edc409a6392443abf94b9cf89ce99889a1dd5376d94316ae5145dfedd5d6", size = 801626, upload-time = "2025-09-25T21:32:28.878Z" }, + { url = "https://files.pythonhosted.org/packages/f9/11/ba845c23988798f40e52ba45f34849aa8a1f2d4af4b798588010792ebad6/pyyaml-6.0.3-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:f7057c9a337546edc7973c0d3ba84ddcdf0daa14533c2065749c9075001090e6", size = 753613, upload-time = "2025-09-25T21:32:30.178Z" }, + { url = "https://files.pythonhosted.org/packages/3d/e0/7966e1a7bfc0a45bf0a7fb6b98ea03fc9b8d84fa7f2229e9659680b69ee3/pyyaml-6.0.3-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:eda16858a3cab07b80edaf74336ece1f986ba330fdb8ee0d6c0d68fe82bc96be", size = 794115, upload-time = "2025-09-25T21:32:31.353Z" }, + { url = "https://files.pythonhosted.org/packages/de/94/980b50a6531b3019e45ddeada0626d45fa85cbe22300844a7983285bed3b/pyyaml-6.0.3-cp313-cp313-win32.whl", hash = "sha256:d0eae10f8159e8fdad514efdc92d74fd8d682c933a6dd088030f3834bc8e6b26", size = 137427, upload-time = "2025-09-25T21:32:32.58Z" }, + { url = "https://files.pythonhosted.org/packages/97/c9/39d5b874e8b28845e4ec2202b5da735d0199dbe5b8fb85f91398814a9a46/pyyaml-6.0.3-cp313-cp313-win_amd64.whl", hash = "sha256:79005a0d97d5ddabfeeea4cf676af11e647e41d81c9a7722a193022accdb6b7c", size = 154090, upload-time = "2025-09-25T21:32:33.659Z" }, + { url = "https://files.pythonhosted.org/packages/73/e8/2bdf3ca2090f68bb3d75b44da7bbc71843b19c9f2b9cb9b0f4ab7a5a4329/pyyaml-6.0.3-cp313-cp313-win_arm64.whl", hash = "sha256:5498cd1645aa724a7c71c8f378eb29ebe23da2fc0d7a08071d89469bf1d2defb", size = 140246, upload-time = "2025-09-25T21:32:34.663Z" }, + { url = "https://files.pythonhosted.org/packages/9d/8c/f4bd7f6465179953d3ac9bc44ac1a8a3e6122cf8ada906b4f96c60172d43/pyyaml-6.0.3-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:8d1fab6bb153a416f9aeb4b8763bc0f22a5586065f86f7664fc23339fc1c1fac", size = 181814, upload-time = "2025-09-25T21:32:35.712Z" }, + { url = "https://files.pythonhosted.org/packages/bd/9c/4d95bb87eb2063d20db7b60faa3840c1b18025517ae857371c4dd55a6b3a/pyyaml-6.0.3-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:34d5fcd24b8445fadc33f9cf348c1047101756fd760b4dacb5c3e99755703310", size = 173809, upload-time = "2025-09-25T21:32:36.789Z" }, + { url = "https://files.pythonhosted.org/packages/92/b5/47e807c2623074914e29dabd16cbbdd4bf5e9b2db9f8090fa64411fc5382/pyyaml-6.0.3-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:501a031947e3a9025ed4405a168e6ef5ae3126c59f90ce0cd6f2bfc477be31b7", size = 766454, upload-time = "2025-09-25T21:32:37.966Z" }, + { url = "https://files.pythonhosted.org/packages/02/9e/e5e9b168be58564121efb3de6859c452fccde0ab093d8438905899a3a483/pyyaml-6.0.3-cp314-cp314-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:b3bc83488de33889877a0f2543ade9f70c67d66d9ebb4ac959502e12de895788", size = 836355, upload-time = "2025-09-25T21:32:39.178Z" }, + { url = "https://files.pythonhosted.org/packages/88/f9/16491d7ed2a919954993e48aa941b200f38040928474c9e85ea9e64222c3/pyyaml-6.0.3-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:c458b6d084f9b935061bc36216e8a69a7e293a2f1e68bf956dcd9e6cbcd143f5", size = 794175, upload-time = "2025-09-25T21:32:40.865Z" }, + { url = "https://files.pythonhosted.org/packages/dd/3f/5989debef34dc6397317802b527dbbafb2b4760878a53d4166579111411e/pyyaml-6.0.3-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:7c6610def4f163542a622a73fb39f534f8c101d690126992300bf3207eab9764", size = 755228, upload-time = "2025-09-25T21:32:42.084Z" }, + { url = "https://files.pythonhosted.org/packages/d7/ce/af88a49043cd2e265be63d083fc75b27b6ed062f5f9fd6cdc223ad62f03e/pyyaml-6.0.3-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:5190d403f121660ce8d1d2c1bb2ef1bd05b5f68533fc5c2ea899bd15f4399b35", size = 789194, upload-time = "2025-09-25T21:32:43.362Z" }, + { url = "https://files.pythonhosted.org/packages/23/20/bb6982b26a40bb43951265ba29d4c246ef0ff59c9fdcdf0ed04e0687de4d/pyyaml-6.0.3-cp314-cp314-win_amd64.whl", hash = "sha256:4a2e8cebe2ff6ab7d1050ecd59c25d4c8bd7e6f400f5f82b96557ac0abafd0ac", size = 156429, upload-time = "2025-09-25T21:32:57.844Z" }, + { url = "https://files.pythonhosted.org/packages/f4/f4/a4541072bb9422c8a883ab55255f918fa378ecf083f5b85e87fc2b4eda1b/pyyaml-6.0.3-cp314-cp314-win_arm64.whl", hash = "sha256:93dda82c9c22deb0a405ea4dc5f2d0cda384168e466364dec6255b293923b2f3", size = 143912, upload-time = "2025-09-25T21:32:59.247Z" }, + { url = "https://files.pythonhosted.org/packages/7c/f9/07dd09ae774e4616edf6cda684ee78f97777bdd15847253637a6f052a62f/pyyaml-6.0.3-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:02893d100e99e03eda1c8fd5c441d8c60103fd175728e23e431db1b589cf5ab3", size = 189108, upload-time = "2025-09-25T21:32:44.377Z" }, + { url = "https://files.pythonhosted.org/packages/4e/78/8d08c9fb7ce09ad8c38ad533c1191cf27f7ae1effe5bb9400a46d9437fcf/pyyaml-6.0.3-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:c1ff362665ae507275af2853520967820d9124984e0f7466736aea23d8611fba", size = 183641, upload-time = "2025-09-25T21:32:45.407Z" }, + { url = "https://files.pythonhosted.org/packages/7b/5b/3babb19104a46945cf816d047db2788bcaf8c94527a805610b0289a01c6b/pyyaml-6.0.3-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6adc77889b628398debc7b65c073bcb99c4a0237b248cacaf3fe8a557563ef6c", size = 831901, upload-time = "2025-09-25T21:32:48.83Z" }, + { url = "https://files.pythonhosted.org/packages/8b/cc/dff0684d8dc44da4d22a13f35f073d558c268780ce3c6ba1b87055bb0b87/pyyaml-6.0.3-cp314-cp314t-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:a80cb027f6b349846a3bf6d73b5e95e782175e52f22108cfa17876aaeff93702", size = 861132, upload-time = "2025-09-25T21:32:50.149Z" }, + { url = "https://files.pythonhosted.org/packages/b1/5e/f77dc6b9036943e285ba76b49e118d9ea929885becb0a29ba8a7c75e29fe/pyyaml-6.0.3-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:00c4bdeba853cc34e7dd471f16b4114f4162dc03e6b7afcc2128711f0eca823c", size = 839261, upload-time = "2025-09-25T21:32:51.808Z" }, + { url = "https://files.pythonhosted.org/packages/ce/88/a9db1376aa2a228197c58b37302f284b5617f56a5d959fd1763fb1675ce6/pyyaml-6.0.3-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:66e1674c3ef6f541c35191caae2d429b967b99e02040f5ba928632d9a7f0f065", size = 805272, upload-time = "2025-09-25T21:32:52.941Z" }, + { url = "https://files.pythonhosted.org/packages/da/92/1446574745d74df0c92e6aa4a7b0b3130706a4142b2d1a5869f2eaa423c6/pyyaml-6.0.3-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:16249ee61e95f858e83976573de0f5b2893b3677ba71c9dd36b9cf8be9ac6d65", size = 829923, upload-time = "2025-09-25T21:32:54.537Z" }, + { url = "https://files.pythonhosted.org/packages/f0/7a/1c7270340330e575b92f397352af856a8c06f230aa3e76f86b39d01b416a/pyyaml-6.0.3-cp314-cp314t-win_amd64.whl", hash = "sha256:4ad1906908f2f5ae4e5a8ddfce73c320c2a1429ec52eafd27138b7f1cbe341c9", size = 174062, upload-time = "2025-09-25T21:32:55.767Z" }, + { url = "https://files.pythonhosted.org/packages/f1/12/de94a39c2ef588c7e6455cfbe7343d3b2dc9d6b6b2f40c4c6565744c873d/pyyaml-6.0.3-cp314-cp314t-win_arm64.whl", hash = "sha256:ebc55a14a21cb14062aa4162f906cd962b28e2e9ea38f9b4391244cd8de4ae0b", size = 149341, upload-time = "2025-09-25T21:32:56.828Z" }, +] + +[[package]] +name = "pyyaml-env-tag" +version = "1.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "pyyaml" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/eb/2e/79c822141bfd05a853236b504869ebc6b70159afc570e1d5a20641782eaa/pyyaml_env_tag-1.1.tar.gz", hash = "sha256:2eb38b75a2d21ee0475d6d97ec19c63287a7e140231e4214969d0eac923cd7ff", size = 5737, upload-time = "2025-05-13T15:24:01.64Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/04/11/432f32f8097b03e3cd5fe57e88efb685d964e2e5178a48ed61e841f7fdce/pyyaml_env_tag-1.1-py3-none-any.whl", hash = "sha256:17109e1a528561e32f026364712fee1264bc2ea6715120891174ed1b980d2e04", size = 4722, upload-time = "2025-05-13T15:23:59.629Z" }, +] + +[[package]] +name = "requests" +version = "2.34.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "certifi" }, + { name = "charset-normalizer" }, + { name = "idna" }, + { name = "urllib3" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/43/b8/7a707d60fea4c49094e40262cc0e2ca6c768cca21587e34d3f705afec47e/requests-2.34.0.tar.gz", hash = "sha256:7d62fe92f50eb82c529b0916bb445afa1531a566fc8f35ffdc64446e771b856a", size = 142436, upload-time = "2026-05-11T19:29:51.717Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ef/e6/e300fce5fe83c30520607a015dabd985df3251e188d234bfe9492e17a389/requests-2.34.0-py3-none-any.whl", hash = "sha256:917520a21b767485ce7c588f4ebb917c436b24a31231b44228715eaeb5a52c60", size = 73021, upload-time = "2026-05-11T19:29:49.923Z" }, +] + [[package]] name = "ruff" version = "0.15.12" @@ -514,6 +1010,15 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/c0/98/6beb4b351e472e5f4c4613f7c35a5290b8be2497e183825310c4c3a3984b/ruff-0.15.12-py3-none-win_arm64.whl", hash = "sha256:a538f7a82d061cee7be55542aca1d86d1393d55d81d4fcc314370f4340930d4f", size = 11120821, upload-time = "2026-04-24T18:16:57.979Z" }, ] +[[package]] +name = "setuptools" +version = "82.0.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/4f/db/cfac1baf10650ab4d1c111714410d2fbb77ac5a616db26775db562c8fab2/setuptools-82.0.1.tar.gz", hash = "sha256:7d872682c5d01cfde07da7bccc7b65469d3dca203318515ada1de5eda35efbf9", size = 1152316, upload-time = "2026-03-09T12:47:17.221Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/9d/76/f789f7a86709c6b087c5a2f52f911838cad707cc613162401badc665acfe/setuptools-82.0.1-py3-none-any.whl", hash = "sha256:a59e362652f08dcd477c78bb6e7bd9d80a7995bc73ce773050228a348ce2e5bb", size = 1006223, upload-time = "2026-03-09T12:47:15.026Z" }, +] + [[package]] name = "six" version = "1.17.0" @@ -532,6 +1037,24 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/32/46/9cb0e58b2deb7f82b84065f37f3bffeb12413f947f9388e4cac22c4621ce/sortedcontainers-2.4.0-py2.py3-none-any.whl", hash = "sha256:a163dcaede0f1c021485e957a39245190e74249897e2ae4b2aa38595db237ee0", size = 29575, upload-time = "2021-05-16T22:03:41.177Z" }, ] +[[package]] +name = "soupsieve" +version = "2.8.3" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/7b/ae/2d9c981590ed9999a0d91755b47fc74f74de286b0f5cee14c9269041e6c4/soupsieve-2.8.3.tar.gz", hash = "sha256:3267f1eeea4251fb42728b6dfb746edc9acaffc4a45b27e19450b676586e8349", size = 118627, upload-time = "2026-01-20T04:27:02.457Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/46/2c/1462b1d0a634697ae9e55b3cecdcb64788e8b7d63f54d923fcd0bb140aed/soupsieve-2.8.3-py3-none-any.whl", hash = "sha256:ed64f2ba4eebeab06cc4962affce381647455978ffc1e36bb79a545b91f45a95", size = 37016, upload-time = "2026-01-20T04:27:01.012Z" }, +] + +[[package]] +name = "typing-extensions" +version = "4.15.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/72/94/1a15dd82efb362ac84269196e94cf00f187f7ed21c242792a923cdb1c61f/typing_extensions-4.15.0.tar.gz", hash = "sha256:0cea48d173cc12fa28ecabc3b837ea3cf6f38c6d1136f85cbaaf598984861466", size = 109391, upload-time = "2025-08-25T13:49:26.313Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/18/67/36e9267722cc04a6b9f15c7f3441c2363321a3ea07da7ae0c0707beb2a9c/typing_extensions-4.15.0-py3-none-any.whl", hash = "sha256:f0fa19c6845758ab08074a0cfa8b7aecb71c999ca73d62883bc25cc018c4e548", size = 44614, upload-time = "2025-08-25T13:49:24.86Z" }, +] + [[package]] name = "tzdata" version = "2026.2" @@ -540,3 +1063,33 @@ sdist = { url = "https://files.pythonhosted.org/packages/ba/19/1b9b0e29f30c6d35c wheels = [ { url = "https://files.pythonhosted.org/packages/ce/e4/dccd7f47c4b64213ac01ef921a1337ee6e30e8c6466046018326977efd95/tzdata-2026.2-py2.py3-none-any.whl", hash = "sha256:bbe9af844f658da81a5f95019480da3a89415801f6cc966806612cc7169bffe7", size = 349321, upload-time = "2026-04-24T15:22:05.876Z" }, ] + +[[package]] +name = "urllib3" +version = "2.7.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/53/0c/06f8b233b8fd13b9e5ee11424ef85419ba0d8ba0b3138bf360be2ff56953/urllib3-2.7.0.tar.gz", hash = "sha256:231e0ec3b63ceb14667c67be60f2f2c40a518cb38b03af60abc813da26505f4c", size = 433602, upload-time = "2026-05-07T16:13:18.596Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/7f/3e/5db95bcf282c52709639744ca2a8b149baccf648e39c8cc87553df9eae0c/urllib3-2.7.0-py3-none-any.whl", hash = "sha256:9fb4c81ebbb1ce9531cce37674bbc6f1360472bc18ca9a553ede278ef7276897", size = 131087, upload-time = "2026-05-07T16:13:17.151Z" }, +] + +[[package]] +name = "watchdog" +version = "6.0.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/db/7d/7f3d619e951c88ed75c6037b246ddcf2d322812ee8ea189be89511721d54/watchdog-6.0.0.tar.gz", hash = "sha256:9ddf7c82fda3ae8e24decda1338ede66e1c99883db93711d8fb941eaa2d8c282", size = 131220, upload-time = "2024-11-01T14:07:13.037Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/68/98/b0345cabdce2041a01293ba483333582891a3bd5769b08eceb0d406056ef/watchdog-6.0.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:490ab2ef84f11129844c23fb14ecf30ef3d8a6abafd3754a6f75ca1e6654136c", size = 96480, upload-time = "2024-11-01T14:06:42.952Z" }, + { url = "https://files.pythonhosted.org/packages/85/83/cdf13902c626b28eedef7ec4f10745c52aad8a8fe7eb04ed7b1f111ca20e/watchdog-6.0.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:76aae96b00ae814b181bb25b1b98076d5fc84e8a53cd8885a318b42b6d3a5134", size = 88451, upload-time = "2024-11-01T14:06:45.084Z" }, + { url = "https://files.pythonhosted.org/packages/fe/c4/225c87bae08c8b9ec99030cd48ae9c4eca050a59bf5c2255853e18c87b50/watchdog-6.0.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:a175f755fc2279e0b7312c0035d52e27211a5bc39719dd529625b1930917345b", size = 89057, upload-time = "2024-11-01T14:06:47.324Z" }, + { url = "https://files.pythonhosted.org/packages/a9/c7/ca4bf3e518cb57a686b2feb4f55a1892fd9a3dd13f470fca14e00f80ea36/watchdog-6.0.0-py3-none-manylinux2014_aarch64.whl", hash = "sha256:7607498efa04a3542ae3e05e64da8202e58159aa1fa4acddf7678d34a35d4f13", size = 79079, upload-time = "2024-11-01T14:06:59.472Z" }, + { url = "https://files.pythonhosted.org/packages/5c/51/d46dc9332f9a647593c947b4b88e2381c8dfc0942d15b8edc0310fa4abb1/watchdog-6.0.0-py3-none-manylinux2014_armv7l.whl", hash = "sha256:9041567ee8953024c83343288ccc458fd0a2d811d6a0fd68c4c22609e3490379", size = 79078, upload-time = "2024-11-01T14:07:01.431Z" }, + { url = "https://files.pythonhosted.org/packages/d4/57/04edbf5e169cd318d5f07b4766fee38e825d64b6913ca157ca32d1a42267/watchdog-6.0.0-py3-none-manylinux2014_i686.whl", hash = "sha256:82dc3e3143c7e38ec49d61af98d6558288c415eac98486a5c581726e0737c00e", size = 79076, upload-time = "2024-11-01T14:07:02.568Z" }, + { url = "https://files.pythonhosted.org/packages/ab/cc/da8422b300e13cb187d2203f20b9253e91058aaf7db65b74142013478e66/watchdog-6.0.0-py3-none-manylinux2014_ppc64.whl", hash = "sha256:212ac9b8bf1161dc91bd09c048048a95ca3a4c4f5e5d4a7d1b1a7d5752a7f96f", size = 79077, upload-time = "2024-11-01T14:07:03.893Z" }, + { url = "https://files.pythonhosted.org/packages/2c/3b/b8964e04ae1a025c44ba8e4291f86e97fac443bca31de8bd98d3263d2fcf/watchdog-6.0.0-py3-none-manylinux2014_ppc64le.whl", hash = "sha256:e3df4cbb9a450c6d49318f6d14f4bbc80d763fa587ba46ec86f99f9e6876bb26", size = 79078, upload-time = "2024-11-01T14:07:05.189Z" }, + { url = "https://files.pythonhosted.org/packages/62/ae/a696eb424bedff7407801c257d4b1afda455fe40821a2be430e173660e81/watchdog-6.0.0-py3-none-manylinux2014_s390x.whl", hash = "sha256:2cce7cfc2008eb51feb6aab51251fd79b85d9894e98ba847408f662b3395ca3c", size = 79077, upload-time = "2024-11-01T14:07:06.376Z" }, + { url = "https://files.pythonhosted.org/packages/b5/e8/dbf020b4d98251a9860752a094d09a65e1b436ad181faf929983f697048f/watchdog-6.0.0-py3-none-manylinux2014_x86_64.whl", hash = "sha256:20ffe5b202af80ab4266dcd3e91aae72bf2da48c0d33bdb15c66658e685e94e2", size = 79078, upload-time = "2024-11-01T14:07:07.547Z" }, + { url = "https://files.pythonhosted.org/packages/07/f6/d0e5b343768e8bcb4cda79f0f2f55051bf26177ecd5651f84c07567461cf/watchdog-6.0.0-py3-none-win32.whl", hash = "sha256:07df1fdd701c5d4c8e55ef6cf55b8f0120fe1aef7ef39a1c6fc6bc2e606d517a", size = 79065, upload-time = "2024-11-01T14:07:09.525Z" }, + { url = "https://files.pythonhosted.org/packages/db/d9/c495884c6e548fce18a8f40568ff120bc3a4b7b99813081c8ac0c936fa64/watchdog-6.0.0-py3-none-win_amd64.whl", hash = "sha256:cbafb470cf848d93b5d013e2ecb245d4aa1c8fd0504e863ccefa32445359d680", size = 79070, upload-time = "2024-11-01T14:07:10.686Z" }, + { url = "https://files.pythonhosted.org/packages/33/e8/e40370e6d74ddba47f002a32919d91310d6074130fe4e17dabcafc15cbf1/watchdog-6.0.0-py3-none-win_ia64.whl", hash = "sha256:a1914259fa9e1454315171103c6a30961236f508b9b623eae470268bbcc6a22f", size = 79067, upload-time = "2024-11-01T14:07:11.845Z" }, +] From da95a3b0ef99cb4900c8314f4f4f5f34f3c273c1 Mon Sep 17 00:00:00 2001 From: achekery <6503526+achekery@users.noreply.github.com> Date: Tue, 12 May 2026 15:30:01 -0700 Subject: [PATCH 02/12] add api reference --- docs/dynamic_interval_management.md | 39 +++++++++++++++-------------- docs/dynamic_point_aggregation.md | 4 +++ docs/suffix_pattern_recognition.md | 4 +++ 3 files changed, 28 insertions(+), 19 deletions(-) diff --git a/docs/dynamic_interval_management.md b/docs/dynamic_interval_management.md index 227f6da..325d0a3 100644 --- a/docs/dynamic_interval_management.md +++ b/docs/dynamic_interval_management.md @@ -1,13 +1,10 @@ -# Data Streaming Accelerators - +# Dynamic Interval Management ![Python CI](https://github.com/achekery/data-streaming/actions/workflows/python-app.yml/badge.svg) -## Dynamic Interval Management - -### 1. Design Summary +## 1. Design Summary The theoretical lower bound for merging $N$ static intervals is $\Omega(N \log N)$ due to the sorting requirement. By focusing on interval edges rather than the source intervals themselves, we can focus on efficient algorithms with compact implementation. However, in **Online Streaming Environments**, the task shifts from batch data loading (static intervals) to streaming data ingestion (dynamic intervals). -#### 📊 Complexity Analysis +### 📊 Complexity Analysis | Operation | Batch Variants (v1/v2) | Streaming Variant (v3) | Comparison | | :--- | :--- | :--- | :--- | @@ -16,15 +13,15 @@ The theoretical lower bound for merging $N$ static intervals is $\Omega(N \log N | **Streaming Updates (1)** | $O(N \log N)$ | **$O(\log N)$** | **Streaming Variant** is superior | | **Space Complexity** | $O(N)$ | $O(N)$ | Equivalent | -#### 🚀 The Pruning Logic (Visual) +### 🚀 The Pruning Logic (Visual) The advantage of an Augmented AVL Interval Tree is its ability to prune search branches that cannot contain an overlap, ensuring $O(\log N)$ search time. ![Diagram of Pruning Logic](dynamic_interval_management/static/pruning-diagram.png) -### 2. Design Approaches +## 2. Design Approaches -### Optimal Approaches for Batch Data (Static Intervals) +## Optimal Approaches for Batch Data (Static Intervals) * **Sweep-line (Variant 1):** Uses a sorted list of edge objects and a counter. * **Complexity (Batch):** $O(N \log N)$ setup, $O(N)$ calculation. * **Complexity (Streaming):** $O(N \log N)$ per `insert`/`put` operation. @@ -34,18 +31,18 @@ The advantage of an Augmented AVL Interval Tree is its ability to prune search b * **Complexity (Streaming):** $O(N \log N)$ per `insert`/`put` operation. * **Verdict:** Suitable for batch case due to best-in-class ~7ms benchmark with static intervals. Not suitable for streaming case due to high complexity. -### Optimal Approaches for Streaming Data (Dynamic Intervals) +## Optimal Approaches for Streaming Data (Dynamic Intervals) * **Augmented AVL Interval Tree (Variant 3):** A stateful, self-balancing BST. * **Complexity (Batch):** $O(N \log N)$ setup, $O(N)$ calculation. * **Complexity (Streaming):** $O(\log N)$ per `insert`/`put` operation. * **Verdict:** Not suitable for batch case due to poor ~4130ms benchmark with static intervals impacted by object-overhead during calculation. Suitable for streaming case due to best-in-class complexity per `insert`/`put` operation. Notice the optimal approaches for batch data merging are easier to maintain, with **90% fewer LOC** (~25 vs ~250)! -### 3. Design Trade-offs +## 3. Design Trade-offs -#### The Efficiency Paradox +### The Efficiency Paradox In benchmarks with static intervals, the Two-Pointer Search (Variant 2) was **400x faster** than the Interval Tree (Variant 3). However, in **Online Streaming Environments**, the Two-Pointer Search overall complexity degrades to $O(N^2 \log N)$ over a series of $N$ updates while the Interval Tree overall complexity maintains $O(N \log N)$. -#### Streaming Benchmark Results +### Streaming Benchmark Results In benchmarks with dynamic intervals up to $N=3000$, the Interval Tree (Variant 3) was as much as **50x faster** than the Two-Pointer Search (Variant 2). While the Two-Pointer Search (Variant 2) is faster for a single batch run, it fails to scale in an **Online Streaming Environment** where the merged state must be updated for every new interval. As $N$ increases, the Two-Pointer Search runtime explodes quadratically while the Interval Tree runtime continues linearly. | Input Size (N) | Batch-Style (s) | Tree-Style (s) | Speedup | @@ -58,21 +55,21 @@ In benchmarks with dynamic intervals up to $N=3000$, the Interval Tree (Variant ![Graph for Performance Report](dynamic_interval_management/static/performance-report-1280x640.png) -### 4. Design Optimizations +## 4. Design Optimizations -#### Augmented Metadata +### Augmented Metadata By augmenting the BST with `subtree_max` metadata, I reduced the search-and-merge task from a linear scan to a logarithmic search. This allows the streaming platform to maintain a "Live" merged state with $O(\log N)$ latency per request. -#### Invariant-Driven Correctness +### Invariant-Driven Correctness To ensure system reliability during high-frequency updates, I prioritized **Correctness by Design** by explicitly maintaining the AVL balance and metadata invariants during every mutation (`insert`, `delete`). -#### Architectural Hardening +### Architectural Hardening By implementing a **Sentinel Node Architecture** with a **Two-Down** AVL balancing subtree rotation strategy and removing the need for sentinel node checks throughout the codebase, I simplified the balancing feature and provided a cleaner and more maintainable implementation. -#### Python Object-Model Tuning +### Python Object-Model Tuning To reduce object-overhead due to the Python object-model, I implemented **Attribute Flattening**. After replacing packed collections (`self.interval[0]`) with discrete integers (`self.lo`, `self.hi`), I reduced constant factors in the hot execution path and achieved a **15% reduction** in benchmarks with static intervals. -### 5. Getting Started +## 5. Getting Started This design requires **Python 3.13+**. @@ -80,3 +77,7 @@ To run the regression tests for this design: ```bash uv run --group dev --extra benchmark pytest -sv ``` + +## 6. API Reference + +::: data_streaming_accelerators.core.dynamic_interval_management.DynamicIntervalManagementV3 diff --git a/docs/dynamic_point_aggregation.md b/docs/dynamic_point_aggregation.md index 9e3ebc1..c26e267 100644 --- a/docs/dynamic_point_aggregation.md +++ b/docs/dynamic_point_aggregation.md @@ -83,3 +83,7 @@ These results highlight that the batch variant (V1) is suitable for smaller data ### State Transitions To ensure new point values are correctly merged with existing disjoint intervals, I applied **Correctness by Design** by separately handling the 3 overlap cases: the enclosed-by case (early exit if lower and upper bounds at insertion point are already aligned), the adjacent-to case (join with 1 or 2 neighbors if lower and upper bounds at insertion point are adjacent), and the distinct-from case (insert as new lower and upper bounds). + +## 5. API Reference + +::: data_streaming_accelerators.core.dynamic_point_aggregation.DynamicPointAggregationV2 diff --git a/docs/suffix_pattern_recognition.md b/docs/suffix_pattern_recognition.md index 2ae450c..72c5289 100644 --- a/docs/suffix_pattern_recognition.md +++ b/docs/suffix_pattern_recognition.md @@ -28,3 +28,7 @@ Although Direct Search (v1) requires ~90% less lines of code, it performs worse ### Python Object-Model Tuning To reduce object-overhead due to the Python object-model, I implemented a **nested hash map** for the reverse-traversal prefix tree, with each "node" using a character for the hash map key and a reference to the next "node" for the hash map value. This approach reduced object lookup during queries. + +## 3. API Reference + +::: data_streaming_accelerators.core.suffix_pattern_recognition.SuffixPatternRecognitionV1 From 4a8958e6a127649fcedd40490385a7a82e54a386 Mon Sep 17 00:00:00 2001 From: achekery <6503526+achekery@users.noreply.github.com> Date: Tue, 12 May 2026 18:17:44 -0700 Subject: [PATCH 03/12] add markdown files in docs/modules --- docs/development.md | 43 ------------------- docs/dynamic_interval_management/README.md | 21 +++++++-- docs/dynamic_point_aggregation/README.md | 4 ++ .../dynamic_interval_management.md | 10 +++-- .../dynamic_point_aggregation.md | 6 +-- .../suffix_pattern_recognition.md | 4 +- docs/suffix_pattern_recognition/README.md | 4 ++ mkdocs.yml | 7 ++- pyproject.toml | 1 + uv.lock | 2 + 10 files changed, 43 insertions(+), 59 deletions(-) delete mode 100644 docs/development.md rename docs/{ => modules}/dynamic_interval_management.md (96%) rename docs/{ => modules}/dynamic_point_aggregation.md (95%) rename docs/{ => modules}/suffix_pattern_recognition.md (94%) diff --git a/docs/development.md b/docs/development.md deleted file mode 100644 index ddf30cf..0000000 --- a/docs/development.md +++ /dev/null @@ -1,43 +0,0 @@ - -data_streaming_accelerators/ -├── .github/workflows/ -├── docs/ -│ └── mkdocs.yml -├── src/ -│ └── data_streaming_accelerators/ -│ ├── __init__.py -│ ├── __main__.py -│ ├── core/ -│ | ├── dynamic_interval_management.py -│ | ├── dynamic_point_aggregation.py -│ | └── suffix_pattern_recognition.py -│ ├── api.py -├── tests/ -│ ├── conftest.py -│ ├── test_api.py -│ ├── test_core.py -├── .gitignore -├── pyproject.toml -├── README.md -└── LICENSE - -```sh -# https://docs.astral.sh/uv/getting-started/installation/ -# install uv from official installer -wget -qO- https://astral.sh/uv/install.sh | sh -``` - -``` -# Run specific markers in pytest -uv run --group dev --extra benchmark pytest -sv -m func -uv run --group dev --extra benchmark pytest -sv -m perf - -# Run pytest -uv run --group dev --extra benchmark pytest -sv - -# Watch run until it completes. -gh run watch - -# Show project files. -(git ls-files | xargs tail -n +1) 2>&1 >var/files.txt -``` diff --git a/docs/dynamic_interval_management/README.md b/docs/dynamic_interval_management/README.md index 39f467c..2fb0287 100644 --- a/docs/dynamic_interval_management/README.md +++ b/docs/dynamic_interval_management/README.md @@ -21,7 +21,7 @@ The advantage of an Augmented AVL Interval Tree is its ability to prune search b ## 2. Design Approaches -### Optimal Approaches for Batch Data (Static Intervals) +## Optimal Approaches for Batch Data (Static Intervals) * **Sweep-line (Variant 1):** Uses a sorted list of edge objects and a counter. * **Complexity (Batch):** $O(N \log N)$ setup, $O(N)$ calculation. * **Complexity (Streaming):** $O(N \log N)$ per `insert`/`put` operation. @@ -31,7 +31,7 @@ The advantage of an Augmented AVL Interval Tree is its ability to prune search b * **Complexity (Streaming):** $O(N \log N)$ per `insert`/`put` operation. * **Verdict:** Suitable for batch case due to best-in-class ~7ms benchmark with static intervals. Not suitable for streaming case due to high complexity. -### Optimal Approaches for Streaming Data (Dynamic Intervals) +## Optimal Approaches for Streaming Data (Dynamic Intervals) * **Augmented AVL Interval Tree (Variant 3):** A stateful, self-balancing BST. * **Complexity (Batch):** $O(N \log N)$ setup, $O(N)$ calculation. * **Complexity (Streaming):** $O(\log N)$ per `insert`/`put` operation. @@ -67,4 +67,19 @@ To ensure system reliability during high-frequency updates, I prioritized **Corr By implementing a **Sentinel Node Architecture** with a **Two-Down** AVL balancing subtree rotation strategy and removing the need for sentinel node checks throughout the codebase, I simplified the balancing feature and provided a cleaner and more maintainable implementation. ### Python Object-Model Tuning -To reduce object-overhead due to the Python object-model, I implemented **Attribute Flattening**. After replacing packed collections (`self.interval[0]`) with discrete integers (`self.lo`, `self.hi`), I reduced constant factors in the hot execution path and achieved a **15% reduction** in benchmarks with static intervals. +To reduce object-overhead due to the Python object-model, I implemented **Attribute Flattening**. After replacing packed collections (`self.interval[0]`) with discrete integers (`self.lo`, `self.hi`), I reduced constant factors in the hot execution path and achieved a **15% reduction** in benchmarks with static intervals. 123 + +test + +## 5. Getting Started + +This design requires **Python 3.13+**. + +To run the regression tests for this design: +```bash +uv run --group dev --extra benchmark pytest -sv +``` + +## 6. API Reference + +::: data_streaming_accelerators.core.dynamic_interval_management diff --git a/docs/dynamic_point_aggregation/README.md b/docs/dynamic_point_aggregation/README.md index 32a0bc8..89563e8 100644 --- a/docs/dynamic_point_aggregation/README.md +++ b/docs/dynamic_point_aggregation/README.md @@ -83,3 +83,7 @@ These results highlight that the batch variant (V1) is suitable for smaller data ### State Transitions To ensure new point values are correctly merged with existing disjoint intervals, I applied **Correctness by Design** by separately handling the 3 overlap cases: the enclosed-by case (early exit if lower and upper bounds at insertion point are already aligned), the adjacent-to case (join with 1 or 2 neighbors if lower and upper bounds at insertion point are adjacent), and the distinct-from case (insert as new lower and upper bounds). + +## 5. API Reference + +::: data_streaming_accelerators.core.dynamic_point_aggregation diff --git a/docs/dynamic_interval_management.md b/docs/modules/dynamic_interval_management.md similarity index 96% rename from docs/dynamic_interval_management.md rename to docs/modules/dynamic_interval_management.md index 325d0a3..2fb0287 100644 --- a/docs/dynamic_interval_management.md +++ b/docs/modules/dynamic_interval_management.md @@ -17,7 +17,7 @@ The theoretical lower bound for merging $N$ static intervals is $\Omega(N \log N The advantage of an Augmented AVL Interval Tree is its ability to prune search branches that cannot contain an overlap, ensuring $O(\log N)$ search time. -![Diagram of Pruning Logic](dynamic_interval_management/static/pruning-diagram.png) +![Diagram of Pruning Logic](static/pruning-diagram.png) ## 2. Design Approaches @@ -53,7 +53,7 @@ In benchmarks with dynamic intervals up to $N=3000$, the Interval Tree (Variant | 2000 | 0.6743 | 0.0383 | 17.6x | | 3000 | 1.6093 | 0.0318 | **50.6x** | -![Graph for Performance Report](dynamic_interval_management/static/performance-report-1280x640.png) +![Graph for Performance Report](static/performance-report-1280x640.png) ## 4. Design Optimizations @@ -67,7 +67,9 @@ To ensure system reliability during high-frequency updates, I prioritized **Corr By implementing a **Sentinel Node Architecture** with a **Two-Down** AVL balancing subtree rotation strategy and removing the need for sentinel node checks throughout the codebase, I simplified the balancing feature and provided a cleaner and more maintainable implementation. ### Python Object-Model Tuning -To reduce object-overhead due to the Python object-model, I implemented **Attribute Flattening**. After replacing packed collections (`self.interval[0]`) with discrete integers (`self.lo`, `self.hi`), I reduced constant factors in the hot execution path and achieved a **15% reduction** in benchmarks with static intervals. +To reduce object-overhead due to the Python object-model, I implemented **Attribute Flattening**. After replacing packed collections (`self.interval[0]`) with discrete integers (`self.lo`, `self.hi`), I reduced constant factors in the hot execution path and achieved a **15% reduction** in benchmarks with static intervals. 123 + +test ## 5. Getting Started @@ -80,4 +82,4 @@ uv run --group dev --extra benchmark pytest -sv ## 6. API Reference -::: data_streaming_accelerators.core.dynamic_interval_management.DynamicIntervalManagementV3 +::: data_streaming_accelerators.core.dynamic_interval_management diff --git a/docs/dynamic_point_aggregation.md b/docs/modules/dynamic_point_aggregation.md similarity index 95% rename from docs/dynamic_point_aggregation.md rename to docs/modules/dynamic_point_aggregation.md index c26e267..89563e8 100644 --- a/docs/dynamic_point_aggregation.md +++ b/docs/modules/dynamic_point_aggregation.md @@ -32,11 +32,11 @@ With python `sortedcontainers`, these runtime complexities were instead $O(N \sq ### Streaming Benchmark Results When the request traffic was mostly `put` requests (R=0.1) to simulate offline scenarios, the batch variant (V1) was 2.7x faster when data size was smaller (N=100) and the streaming variant was **4.9x faster** when data size was larger (N=50000). -![Speedup by Data Size (R=0.1)](dynamic_point_aggregation/static/speedup_by_data_size_request_distr0.1.png) +![Speedup by Data Size (R=0.1)](static/speedup_by_data_size_request_distr0.1.png) When the request traffic was balanced beween `put` and `get` requests (R=0.5) to simulate online scenarios, the batch variant (V1) was **1.2x faster** when data size was smaller (N=100) and the streaming variant was **6.4x faster** when data size was larger (N=50000). -![Speedup by Data Size (R=0.5)](dynamic_point_aggregation/static/speedup_by_data_size_request_distr0.5.png) +![Speedup by Data Size (R=0.5)](static/speedup_by_data_size_request_distr0.5.png) These results highlight that the batch variant (V1) is suitable for smaller data streams and offline scenarios, whereas the streaming variant (V2) is suitable for larger data streams and online scenarios. @@ -86,4 +86,4 @@ To ensure new point values are correctly merged with existing disjoint intervals ## 5. API Reference -::: data_streaming_accelerators.core.dynamic_point_aggregation.DynamicPointAggregationV2 +::: data_streaming_accelerators.core.dynamic_point_aggregation diff --git a/docs/suffix_pattern_recognition.md b/docs/modules/suffix_pattern_recognition.md similarity index 94% rename from docs/suffix_pattern_recognition.md rename to docs/modules/suffix_pattern_recognition.md index 72c5289..3e87ae9 100644 --- a/docs/suffix_pattern_recognition.md +++ b/docs/modules/suffix_pattern_recognition.md @@ -19,7 +19,7 @@ For batch data (offline scenario), reading the query pattern from a static array The advantage of reverse-traversal prefix tree search is that it can check multiple suffix patterns at once, ensuring $O(W)$ query time (and is independent of the suffix pattern count $K$ and the query pattern length $N$). This is possible because of reverse encoding. -![Diagram for reverse encoding](suffix_pattern_recognition/static/diagram-image.png) +![Diagram for reverse encoding](static/diagram-image.png) ## 2. Design Approaches & Trade-offs @@ -31,4 +31,4 @@ To reduce object-overhead due to the Python object-model, I implemented a **nest ## 3. API Reference -::: data_streaming_accelerators.core.suffix_pattern_recognition.SuffixPatternRecognitionV1 +::: data_streaming_accelerators.core.suffix_pattern_recognition diff --git a/docs/suffix_pattern_recognition/README.md b/docs/suffix_pattern_recognition/README.md index 58f08ed..3e87ae9 100644 --- a/docs/suffix_pattern_recognition/README.md +++ b/docs/suffix_pattern_recognition/README.md @@ -28,3 +28,7 @@ Although Direct Search (v1) requires ~90% less lines of code, it performs worse ### Python Object-Model Tuning To reduce object-overhead due to the Python object-model, I implemented a **nested hash map** for the reverse-traversal prefix tree, with each "node" using a character for the hash map key and a reference to the next "node" for the hash map value. This approach reduced object lookup during queries. + +## 3. API Reference + +::: data_streaming_accelerators.core.suffix_pattern_recognition diff --git a/mkdocs.yml b/mkdocs.yml index 644ded1..01040e8 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -29,7 +29,6 @@ plugins: nav: - Overview: index.md - Modules: - - Dynamic Interval Management: dynamic_interval_management.md - - Dynamic Point Aggregation: dynamic_point_aggregation.md - - Suffix Pattern Recognition: suffix_pattern_recognition.md - - Development: development.md + - Dynamic Interval Management: modules/dynamic_interval_management.md + - Dynamic Point Aggregation: modules/dynamic_point_aggregation.md + - Suffix Pattern Recognition: modules/suffix_pattern_recognition.md diff --git a/pyproject.toml b/pyproject.toml index 2157f86..e1bcda6 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -19,6 +19,7 @@ dev = [ docs = [ "mkdocs-material>=9.7.6", "mkdocs-mermaid2-plugin>=1.2.3", + "mkdocstrings-python>=2.0.3", "mkdocstrings[python]>=1.0.4", ] lint = [ diff --git a/uv.lock b/uv.lock index 62730d8..df95116 100644 --- a/uv.lock +++ b/uv.lock @@ -218,6 +218,7 @@ docs = [ { name = "mkdocs-material" }, { name = "mkdocs-mermaid2-plugin" }, { name = "mkdocstrings", extra = ["python"] }, + { name = "mkdocstrings-python" }, ] lint = [ { name = "ruff" }, @@ -237,6 +238,7 @@ docs = [ { name = "mkdocs-material", specifier = ">=9.7.6" }, { name = "mkdocs-mermaid2-plugin", specifier = ">=1.2.3" }, { name = "mkdocstrings", extras = ["python"], specifier = ">=1.0.4" }, + { name = "mkdocstrings-python", specifier = ">=2.0.3" }, ] lint = [{ name = "ruff", specifier = ">=0.15.12" }] From a35138c8a585df6d1119b7ff9a6a0b9c23eedab7 Mon Sep 17 00:00:00 2001 From: achekery <6503526+achekery@users.noreply.github.com> Date: Tue, 12 May 2026 18:23:08 -0700 Subject: [PATCH 04/12] dev notes --- DEVELOPMENT.md | 46 ++++++++++------------------------------------ 1 file changed, 10 insertions(+), 36 deletions(-) diff --git a/DEVELOPMENT.md b/DEVELOPMENT.md index ddf30cf..9631ca3 100644 --- a/DEVELOPMENT.md +++ b/DEVELOPMENT.md @@ -1,43 +1,17 @@ +# DEVELOPMENT -data_streaming_accelerators/ -├── .github/workflows/ -├── docs/ -│ └── mkdocs.yml -├── src/ -│ └── data_streaming_accelerators/ -│ ├── __init__.py -│ ├── __main__.py -│ ├── core/ -│ | ├── dynamic_interval_management.py -│ | ├── dynamic_point_aggregation.py -│ | └── suffix_pattern_recognition.py -│ ├── api.py -├── tests/ -│ ├── conftest.py -│ ├── test_api.py -│ ├── test_core.py -├── .gitignore -├── pyproject.toml -├── README.md -└── LICENSE +TODO: Verify gh-deploy workflow is successful -```sh -# https://docs.astral.sh/uv/getting-started/installation/ -# install uv from official installer -wget -qO- https://astral.sh/uv/install.sh | sh -``` +TODO: Verify mkdocs generation is successful ``` -# Run specific markers in pytest -uv run --group dev --extra benchmark pytest -sv -m func -uv run --group dev --extra benchmark pytest -sv -m perf - -# Run pytest -uv run --group dev --extra benchmark pytest -sv +uv run mkdocs serve -v +``` -# Watch run until it completes. -gh run watch +TODO: Remove unnecessary files -# Show project files. -(git ls-files | xargs tail -n +1) 2>&1 >var/files.txt +``` +rm -rf docs/dynamic_interval_management/ +rm -rf docs/dynamic_point_aggregation/ +rm -rf docs/suffix_pattern_recognition/ ``` From dc674947528c0b9b14953ecb74f45ccad7ce880a Mon Sep 17 00:00:00 2001 From: achekery <6503526+achekery@users.noreply.github.com> Date: Tue, 12 May 2026 21:31:18 -0700 Subject: [PATCH 05/12] add mkdocs commands --- .github/workflows/docs.yml | 21 +++++++++++++-------- .github/workflows/python-app.yml | 4 ++-- DEVELOPMENT.md | 26 ++++++++++++++++++++++++++ 3 files changed, 41 insertions(+), 10 deletions(-) diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml index 52eeb2d..13adc64 100644 --- a/.github/workflows/docs.yml +++ b/.github/workflows/docs.yml @@ -6,13 +6,18 @@ on: jobs: deploy: runs-on: ubuntu-latest + steps: - - uses: actions/checkout@v4 - - name: Install uv - uses: astral-sh/setup-uv@v3 - - name: Setup Python - run: uv python install 3.13 - - name: Build and Deploy + - uses: actions/checkout@v6 + + - name: Setup python + uses: actions/setup-python@v6 + with: + python-version-file: "pyproject.toml" + + - name: Setup uv + uses: astral-sh/setup-uv@08807647e7069bb48b6ef5acd8ec9567f424441b # v8.1.0 + + - name: Build docs with mkdocs run: | - uv sync --group docs - uv run mkdocs gh-deploy --force + uv run --group docs mkdocs gh-deploy -v --clean --strict --force diff --git a/.github/workflows/python-app.yml b/.github/workflows/python-app.yml index 108f319..f90c226 100644 --- a/.github/workflows/python-app.yml +++ b/.github/workflows/python-app.yml @@ -24,11 +24,11 @@ jobs: - name: Setup uv uses: astral-sh/setup-uv@08807647e7069bb48b6ef5acd8ec9567f424441b # v8.1.0 - - name: Run pytest + - name: Run tests with pytest run: | uv run --group dev --extra benchmark pytest -sv - - name: Upload artifacts + - name: Upload artifacts from package tests uses: actions/upload-artifact@v4 with: name: artifacts diff --git a/DEVELOPMENT.md b/DEVELOPMENT.md index 9631ca3..161444a 100644 --- a/DEVELOPMENT.md +++ b/DEVELOPMENT.md @@ -15,3 +15,29 @@ rm -rf docs/dynamic_interval_management/ rm -rf docs/dynamic_point_aggregation/ rm -rf docs/suffix_pattern_recognition/ ``` + +## Run tests with pytest + +```sh +# Option 1: All tests [Default] +uv run --group dev --extra benchmark pytest -sv + +# Option 2: Functional tests only +uv run --group dev --extra benchmark pytest -sv -m func + +# Option 3: Performance tests only +uv run --group dev --extra benchmark pytest -sv -m perf +``` + +## Build docs with mkdocs + +```sh +# Option 1: Build and deploy [Default] +uv run --group docs mkdocs gh-deploy -v --clean --strict --force + +# Option 2: Build only +uv run --group docs mkdocs build -v --clean --strict + +# Option 3: Deploy only using local server +uv run --group docs mkdocs serve -v --clean --strict +``` From 902b90c4e81b925dbb028159c96b93abdaad4ef9 Mon Sep 17 00:00:00 2001 From: achekery <6503526+achekery@users.noreply.github.com> Date: Tue, 12 May 2026 22:16:44 -0700 Subject: [PATCH 06/12] add macros expansion in mkdocs --- docs/modules/dynamic_interval_management.md | 85 ----------------- .../dynamic_interval_management/README.md | 4 +- .../static/performance-report-1280x640.png | Bin .../static/pruning-diagram.png | Bin .../static/pruning-mermaid.txt | 0 docs/modules/dynamic_point_aggregation.md | 89 ------------------ .../dynamic_point_aggregation/README.md | 0 .../speedup_by_data_size_request_distr0.1.png | Bin .../speedup_by_data_size_request_distr0.5.png | Bin docs/modules/suffix_pattern_recognition.md | 34 ------- .../suffix_pattern_recognition/README.md | 4 +- .../static/diagram-image.png | Bin .../static/diagram-mermaid.txt | 0 mkdocs.yml | 8 +- pyproject.toml | 1 + uv.lock | 53 +++++++++++ 16 files changed, 65 insertions(+), 213 deletions(-) delete mode 100644 docs/modules/dynamic_interval_management.md rename docs/{ => modules}/dynamic_interval_management/README.md (98%) rename docs/{ => modules}/dynamic_interval_management/static/performance-report-1280x640.png (100%) rename docs/{ => modules}/dynamic_interval_management/static/pruning-diagram.png (100%) rename docs/{ => modules}/dynamic_interval_management/static/pruning-mermaid.txt (100%) delete mode 100644 docs/modules/dynamic_point_aggregation.md rename docs/{ => modules}/dynamic_point_aggregation/README.md (100%) rename docs/{ => modules}/dynamic_point_aggregation/static/speedup_by_data_size_request_distr0.1.png (100%) rename docs/{ => modules}/dynamic_point_aggregation/static/speedup_by_data_size_request_distr0.5.png (100%) delete mode 100644 docs/modules/suffix_pattern_recognition.md rename docs/{ => modules}/suffix_pattern_recognition/README.md (97%) rename docs/{ => modules}/suffix_pattern_recognition/static/diagram-image.png (100%) rename docs/{ => modules}/suffix_pattern_recognition/static/diagram-mermaid.txt (100%) diff --git a/docs/modules/dynamic_interval_management.md b/docs/modules/dynamic_interval_management.md deleted file mode 100644 index 2fb0287..0000000 --- a/docs/modules/dynamic_interval_management.md +++ /dev/null @@ -1,85 +0,0 @@ -# Dynamic Interval Management -![Python CI](https://github.com/achekery/data-streaming/actions/workflows/python-app.yml/badge.svg) - -## 1. Design Summary -The theoretical lower bound for merging $N$ static intervals is $\Omega(N \log N)$ due to the sorting requirement. By focusing on interval edges rather than the source intervals themselves, we can focus on efficient algorithms with compact implementation. However, in **Online Streaming Environments**, the task shifts from batch data loading (static intervals) to streaming data ingestion (dynamic intervals). - -### 📊 Complexity Analysis - -| Operation | Batch Variants (v1/v2) | Streaming Variant (v3) | Comparison | -| :--- | :--- | :--- | :--- | -| **Initial Setup** | $O(N \log N)$ | $O(N \log N)$ | Equivalent | -| **Batch Updates (N)** | $O(N \log N)$ | $O(N \log N)$ | Equivalent | -| **Streaming Updates (1)** | $O(N \log N)$ | **$O(\log N)$** | **Streaming Variant** is superior | -| **Space Complexity** | $O(N)$ | $O(N)$ | Equivalent | - -### 🚀 The Pruning Logic (Visual) - -The advantage of an Augmented AVL Interval Tree is its ability to prune search branches that cannot contain an overlap, ensuring $O(\log N)$ search time. - -![Diagram of Pruning Logic](static/pruning-diagram.png) - -## 2. Design Approaches - -## Optimal Approaches for Batch Data (Static Intervals) -* **Sweep-line (Variant 1):** Uses a sorted list of edge objects and a counter. - * **Complexity (Batch):** $O(N \log N)$ setup, $O(N)$ calculation. - * **Complexity (Streaming):** $O(N \log N)$ per `insert`/`put` operation. - * **Verdict:** Suitable for batch case due to second-best ~16ms benchmark with static intervals impacted by object-overhead during calculation. Not suitable for streaming case due to high complexity. -* **Two-Pointer Search (Variant 2):** Uses two sorted edge arrays and two pointers. - * **Complexity (Batch):** $O(N \log N)$ setup, $O(N)$ calculation. - * **Complexity (Streaming):** $O(N \log N)$ per `insert`/`put` operation. - * **Verdict:** Suitable for batch case due to best-in-class ~7ms benchmark with static intervals. Not suitable for streaming case due to high complexity. - -## Optimal Approaches for Streaming Data (Dynamic Intervals) -* **Augmented AVL Interval Tree (Variant 3):** A stateful, self-balancing BST. - * **Complexity (Batch):** $O(N \log N)$ setup, $O(N)$ calculation. - * **Complexity (Streaming):** $O(\log N)$ per `insert`/`put` operation. - * **Verdict:** Not suitable for batch case due to poor ~4130ms benchmark with static intervals impacted by object-overhead during calculation. Suitable for streaming case due to best-in-class complexity per `insert`/`put` operation. Notice the optimal approaches for batch data merging are easier to maintain, with **90% fewer LOC** (~25 vs ~250)! - -## 3. Design Trade-offs - -### The Efficiency Paradox -In benchmarks with static intervals, the Two-Pointer Search (Variant 2) was **400x faster** than the Interval Tree (Variant 3). However, in **Online Streaming Environments**, the Two-Pointer Search overall complexity degrades to $O(N^2 \log N)$ over a series of $N$ updates while the Interval Tree overall complexity maintains $O(N \log N)$. - -### Streaming Benchmark Results -In benchmarks with dynamic intervals up to $N=3000$, the Interval Tree (Variant 3) was as much as **50x faster** than the Two-Pointer Search (Variant 2). While the Two-Pointer Search (Variant 2) is faster for a single batch run, it fails to scale in an **Online Streaming Environment** where the merged state must be updated for every new interval. As $N$ increases, the Two-Pointer Search runtime explodes quadratically while the Interval Tree runtime continues linearly. - -| Input Size (N) | Batch-Style (s) | Tree-Style (s) | Speedup | -| :--- | :--- | :--- | :--- | -| 100 | 0.0015 | 0.0021 | 0.7x | -| 500 | 0.0359 | 0.0140 | 2.6x | -| 1000 | 0.1501 | 0.0230 | 6.5x | -| 2000 | 0.6743 | 0.0383 | 17.6x | -| 3000 | 1.6093 | 0.0318 | **50.6x** | - -![Graph for Performance Report](static/performance-report-1280x640.png) - -## 4. Design Optimizations - -### Augmented Metadata -By augmenting the BST with `subtree_max` metadata, I reduced the search-and-merge task from a linear scan to a logarithmic search. This allows the streaming platform to maintain a "Live" merged state with $O(\log N)$ latency per request. - -### Invariant-Driven Correctness -To ensure system reliability during high-frequency updates, I prioritized **Correctness by Design** by explicitly maintaining the AVL balance and metadata invariants during every mutation (`insert`, `delete`). - -### Architectural Hardening -By implementing a **Sentinel Node Architecture** with a **Two-Down** AVL balancing subtree rotation strategy and removing the need for sentinel node checks throughout the codebase, I simplified the balancing feature and provided a cleaner and more maintainable implementation. - -### Python Object-Model Tuning -To reduce object-overhead due to the Python object-model, I implemented **Attribute Flattening**. After replacing packed collections (`self.interval[0]`) with discrete integers (`self.lo`, `self.hi`), I reduced constant factors in the hot execution path and achieved a **15% reduction** in benchmarks with static intervals. 123 - -test - -## 5. Getting Started - -This design requires **Python 3.13+**. - -To run the regression tests for this design: -```bash -uv run --group dev --extra benchmark pytest -sv -``` - -## 6. API Reference - -::: data_streaming_accelerators.core.dynamic_interval_management diff --git a/docs/dynamic_interval_management/README.md b/docs/modules/dynamic_interval_management/README.md similarity index 98% rename from docs/dynamic_interval_management/README.md rename to docs/modules/dynamic_interval_management/README.md index 2fb0287..680b648 100644 --- a/docs/dynamic_interval_management/README.md +++ b/docs/modules/dynamic_interval_management/README.md @@ -17,7 +17,9 @@ The theoretical lower bound for merging $N$ static intervals is $\Omega(N \log N The advantage of an Augmented AVL Interval Tree is its ability to prune search branches that cannot contain an overlap, ensuring $O(\log N)$ search time. -![Diagram of Pruning Logic](static/pruning-diagram.png) +```mermaid +{% include "modules/dynamic_interval_management/static/pruning-mermaid.txt" %} +``` ## 2. Design Approaches diff --git a/docs/dynamic_interval_management/static/performance-report-1280x640.png b/docs/modules/dynamic_interval_management/static/performance-report-1280x640.png similarity index 100% rename from docs/dynamic_interval_management/static/performance-report-1280x640.png rename to docs/modules/dynamic_interval_management/static/performance-report-1280x640.png diff --git a/docs/dynamic_interval_management/static/pruning-diagram.png b/docs/modules/dynamic_interval_management/static/pruning-diagram.png similarity index 100% rename from docs/dynamic_interval_management/static/pruning-diagram.png rename to docs/modules/dynamic_interval_management/static/pruning-diagram.png diff --git a/docs/dynamic_interval_management/static/pruning-mermaid.txt b/docs/modules/dynamic_interval_management/static/pruning-mermaid.txt similarity index 100% rename from docs/dynamic_interval_management/static/pruning-mermaid.txt rename to docs/modules/dynamic_interval_management/static/pruning-mermaid.txt diff --git a/docs/modules/dynamic_point_aggregation.md b/docs/modules/dynamic_point_aggregation.md deleted file mode 100644 index 89563e8..0000000 --- a/docs/modules/dynamic_point_aggregation.md +++ /dev/null @@ -1,89 +0,0 @@ -# Dynamic Point Aggregation -![Python CI](https://github.com/achekery/data-streaming/actions/workflows/python-app.yml/badge.svg) - -## 1. Design Summary -The optimal runtime complexity for dynamic point aggregation from $N$ point values to $O(N)$ disjoint intervals is $\Omega(N \log N)$ due to the ordering requirement. The request handler uses `put` requests to add new values and `get` requests to make a new interval sequence. - -Because offline scenarios (batch data) have known usage patterns, the batch variant (V1) can **optimize the hot path** by simplifying high-usage `put` requests to $O(1)$ and expanding low-usage `get` requests to $O(N \log N)$. - -However, because online scenarios (streaming data) do not have known usage patterns, the streaming variant (V2) must instead **balance complexity** between `put` requests ($O(\log N)$) and `get` requests ($O(N)$). - -### 📊 Complexity Analysis - -| Operation | Batch Variant (V1) | Streaming Variant (V2) | Comparison | -| :--- | :--- | :--- | :--- | -| **Initial Setup** | $O(1)$ | $O(1)$ | Equivalent | -| **Batch Updates (N Put, 1 Get)** | $O(N \log N)$ | $O(N \log N)$ | Equivalent | -| **Streaming Updates (N Put, K Get)** | $O(K*N \log N)$ | $O(N \log N + K * N)$ | **V2 is Superior** | -| **Space Complexity** | $O(N)$ | $O(N)$ | Equivalent - -## 2. Design Details -The batch variant (V1) uses an unordered set to add new values as data points in $O(1)$ per `put` request and does one pass over a new sorted list with sweep line method to generate disjoint intervals in $O(N \log N)$ per `get` request. - -The streaming variant (V2) uses two sorted sets with binary search to add new values as interval bounds in $O(\log N)$ per `put` request (or $O(\sqrt N)$ with python `sortedcontainers`) and does one pass over the existing sorted sets with sweep line method to generate disjoint intervals in $O(N)$ per `get` request. - -## 3. Design Trade-offs - -### The Efficiency Paradox -Although the batch variant (V1) was **2.7x faster** in small-scale offline scenarios (N=100, R=0.1), the streaming variant (V2) was **6.4x faster** in large-scale online scenarios (N=50000, R=0.5). This performance gain in online scenarios was due to the runtime complexity of the streaming variant at $O(N \log N + K*N)$ increasing more slowly with data size compared to the batch variant at $O(K*N \log N)$. - -With python `sortedcontainers`, these runtime complexities were instead $O(N \sqrt N + K*N)$ and $O(K*N \log N)$ respectively. Although the streaming variant was still faster, the performance gain was less dramatic since $O(\sqrt N)$ increases faster than $O(\log N)$. - -### Streaming Benchmark Results -When the request traffic was mostly `put` requests (R=0.1) to simulate offline scenarios, the batch variant (V1) was 2.7x faster when data size was smaller (N=100) and the streaming variant was **4.9x faster** when data size was larger (N=50000). - -![Speedup by Data Size (R=0.1)](static/speedup_by_data_size_request_distr0.1.png) - -When the request traffic was balanced beween `put` and `get` requests (R=0.5) to simulate online scenarios, the batch variant (V1) was **1.2x faster** when data size was smaller (N=100) and the streaming variant was **6.4x faster** when data size was larger (N=50000). - -![Speedup by Data Size (R=0.5)](static/speedup_by_data_size_request_distr0.5.png) - -These results highlight that the batch variant (V1) is suitable for smaller data streams and offline scenarios, whereas the streaming variant (V2) is suitable for larger data streams and online scenarios. - -| TestCaseID | DataSize | RequestDistribution | V1TimeElapsed | V2TimeElapsed | SpeedupV1V2 | SpeedupV2V1 | -| :--- | :--- | :--- | :--- | :--- | :--- | :--- | -| 0 | 100 | 0.100 | 0.000 | 0.001 | 2.706 | 0.370 | -| 1 | 100 | 0.200 | 0.000 | 0.001 | 1.998 | 0.500 | -| 2 | 100 | 0.500 | 0.001 | 0.001 | 1.289 | 0.776 | -| 3 | 100 | 0.800 | 0.002 | 0.003 | 1.042 | 0.960 | -| 4 | 200 | 0.100 | 0.001 | 0.001 | 2.115 | 0.473 | -| 5 | 200 | 0.200 | 0.001 | 0.001 | 1.642 | 0.609 | -| 6 | 200 | 0.500 | 0.003 | 0.003 | 1.010 | 0.990 | -| 7 | 200 | 0.800 | 0.013 | 0.010 | 0.821 | 1.218 | -| 8 | 500 | 0.100 | 0.002 | 0.003 | 1.606 | 0.623 | -| 9 | 500 | 0.200 | 0.004 | 0.005 | 1.116 | 0.896 | -| 10 | 500 | 0.500 | 0.020 | 0.016 | 0.816 | 1.226 | -| 11 | 500 | 0.800 | 0.071 | 0.051 | 0.726 | 1.378 | -| 12 | 1000 | 0.100 | 0.008 | 0.009 | 1.059 | 0.944 | -| 13 | 1000 | 0.200 | 0.016 | 0.014 | 0.861 | 1.162 | -| 14 | 1000 | 0.500 | 0.070 | 0.050 | 0.715 | 1.400 | -| 15 | 1000 | 0.800 | 0.273 | 0.186 | 0.680 | 1.471 | -| 16 | 2000 | 0.100 | 0.028 | 0.025 | 0.920 | 1.087 | -| 17 | 2000 | 0.200 | 0.059 | 0.046 | 0.776 | 1.289 | -| 18 | 2000 | 0.500 | 0.236 | 0.159 | 0.671 | 1.489 | -| 19 | 2000 | 0.800 | 1.002 | 0.651 | 0.650 | 1.538 | -| 20 | 5000 | 0.100 | 0.140 | 0.105 | 0.751 | 1.331 | -| 21 | 5000 | 0.200 | 0.326 | 0.216 | 0.663 | 1.509 | -| 22 | 5000 | 0.500 | 1.251 | 0.735 | 0.587 | 1.703 | -| 23 | 5000 | 0.800 | 5.099 | 3.020 | 0.592 | 1.688 | -| 24 | 10000 | 0.100 | 0.466 | 0.266 | 0.572 | 1.748 | -| 25 | 10000 | 0.200 | 1.031 | 0.541 | 0.525 | 1.906 | -| 26 | 10000 | 0.500 | 4.038 | 1.950 | 0.483 | 2.071 | -| 27 | 10000 | 0.800 | 15.824 | 7.414 | 0.469 | 2.134 | -| 28 | 20000 | 0.100 | 1.198 | 0.504 | 0.421 | 2.376 | -| 29 | 20000 | 0.200 | 2.633 | 0.990 | 0.376 | 2.660 | -| 30 | 20000 | 0.500 | 10.557 | 3.617 | 0.343 | 2.919 | -| 31 | 20000 | 0.800 | 42.168 | 14.237 | 0.338 | 2.962 | -| 32 | 50000 | 0.100 | 3.473 | 0.695 | 0.200 | 4.996 | -| 33 | 50000 | 0.200 | 7.765 | 1.349 | 0.174 | 5.757 | -| 34 | 50000 | 0.500 | 30.483 | 4.756 | 0.156 | 6.410 | -| 35 | 50000 | 0.800 | 122.369 | 19.013 | 0.155 | 6.436 | - -## 4. Design Optimizations - -### State Transitions -To ensure new point values are correctly merged with existing disjoint intervals, I applied **Correctness by Design** by separately handling the 3 overlap cases: the enclosed-by case (early exit if lower and upper bounds at insertion point are already aligned), the adjacent-to case (join with 1 or 2 neighbors if lower and upper bounds at insertion point are adjacent), and the distinct-from case (insert as new lower and upper bounds). - -## 5. API Reference - -::: data_streaming_accelerators.core.dynamic_point_aggregation diff --git a/docs/dynamic_point_aggregation/README.md b/docs/modules/dynamic_point_aggregation/README.md similarity index 100% rename from docs/dynamic_point_aggregation/README.md rename to docs/modules/dynamic_point_aggregation/README.md diff --git a/docs/dynamic_point_aggregation/static/speedup_by_data_size_request_distr0.1.png b/docs/modules/dynamic_point_aggregation/static/speedup_by_data_size_request_distr0.1.png similarity index 100% rename from docs/dynamic_point_aggregation/static/speedup_by_data_size_request_distr0.1.png rename to docs/modules/dynamic_point_aggregation/static/speedup_by_data_size_request_distr0.1.png diff --git a/docs/dynamic_point_aggregation/static/speedup_by_data_size_request_distr0.5.png b/docs/modules/dynamic_point_aggregation/static/speedup_by_data_size_request_distr0.5.png similarity index 100% rename from docs/dynamic_point_aggregation/static/speedup_by_data_size_request_distr0.5.png rename to docs/modules/dynamic_point_aggregation/static/speedup_by_data_size_request_distr0.5.png diff --git a/docs/modules/suffix_pattern_recognition.md b/docs/modules/suffix_pattern_recognition.md deleted file mode 100644 index 3e87ae9..0000000 --- a/docs/modules/suffix_pattern_recognition.md +++ /dev/null @@ -1,34 +0,0 @@ -# Suffix Pattern Recognition -![Python CI](https://github.com/achekery/data-streaming/actions/workflows/python-app.yml/badge.svg) - -## 1. Design Summary -For suffix pattern recognition with $K$ suffix patterns (length $W$) and 1 query pattern (length $N$), using **reverse-traversal prefix tree search** is efficient because it can model common ancestor ordering with reverse encoding (by inserting suffix patterns in reverse order during setup and searching in reverse order during queries) and check the multiple patterns over a single root-to-leaf pass (taking runtime $O(K\*W)$ for one-time setup and $O(W)$ for each query). This improves over using direct suffix pattern search which must check the multiple patterns over separate array passes (taking $O(K\*W)$ for each query) or using forward-traversal prefix tree search which cannot model common ancestor ordering and must check the multiple patterns over separate root-to-leaf passes (taking runtime $O(K\*W)$ for one-time setup and $O(K\*W)$ for each query). - -For batch data (offline scenario), reading the query pattern from a static array (size $N$) with a reverse iterator takes $O(1)$ auxiliary space. For streaming data (online scenario), reading the query pattern from a history array (size $W$) reconstructed from the stream takes $O(W)$ auxiliary space. - -### 📊 Complexity Analysis - -| Operation | Direct Search (v1) | Forward-traversal (v2) | Reverse-traversal (v3) | Comparison | -| :--- | :--- | :--- | :--- | :--- | -| **Initial Setup** | $O(1)$ | $O(K\*W)$ | $O(K\*W)$ | v1 is superior | -| **Batch Queries (N)** | $O(K\*W)$ | $O(K\*W)$ | $O(W)$ | v3 is superior | -| **Streaming Queries (1)** | $O(K\*W)$ | $O(K\*W)$ | $O(W)$ | v3 is superior | -| **Space Complexity** | $O(1)$ | $O(K\*W)$ | $O(K\*W)$ | v1 is superior | - -### 🚀 Reverse Encoding (Visual) - -The advantage of reverse-traversal prefix tree search is that it can check multiple suffix patterns at once, ensuring $O(W)$ query time (and is independent of the suffix pattern count $K$ and the query pattern length $N$). This is possible because of reverse encoding. - -![Diagram for reverse encoding](static/diagram-image.png) - -## 2. Design Approaches & Trade-offs - -### When Less is More -Although Direct Search (v1) requires ~90% less lines of code, it performs worse than Reverse-traversal (v3) in every comparison other than initial setup and space complexity. This trade-off shows that Direct Search may be preferable for low-memory systems that cannot afford higher space usage (like embedded systems) or greater maintenance scope (like regulated industries) and that Reverse-traversal may be preferable for systems with more resources (like compute nodes in distributed systems). - -### Python Object-Model Tuning -To reduce object-overhead due to the Python object-model, I implemented a **nested hash map** for the reverse-traversal prefix tree, with each "node" using a character for the hash map key and a reference to the next "node" for the hash map value. This approach reduced object lookup during queries. - -## 3. API Reference - -::: data_streaming_accelerators.core.suffix_pattern_recognition diff --git a/docs/suffix_pattern_recognition/README.md b/docs/modules/suffix_pattern_recognition/README.md similarity index 97% rename from docs/suffix_pattern_recognition/README.md rename to docs/modules/suffix_pattern_recognition/README.md index 3e87ae9..7a3d3a7 100644 --- a/docs/suffix_pattern_recognition/README.md +++ b/docs/modules/suffix_pattern_recognition/README.md @@ -19,7 +19,9 @@ For batch data (offline scenario), reading the query pattern from a static array The advantage of reverse-traversal prefix tree search is that it can check multiple suffix patterns at once, ensuring $O(W)$ query time (and is independent of the suffix pattern count $K$ and the query pattern length $N$). This is possible because of reverse encoding. -![Diagram for reverse encoding](static/diagram-image.png) +```mermaid +{% include "modules/suffix_pattern_recognition/static/diagram-mermaid.txt" %} +``` ## 2. Design Approaches & Trade-offs diff --git a/docs/suffix_pattern_recognition/static/diagram-image.png b/docs/modules/suffix_pattern_recognition/static/diagram-image.png similarity index 100% rename from docs/suffix_pattern_recognition/static/diagram-image.png rename to docs/modules/suffix_pattern_recognition/static/diagram-image.png diff --git a/docs/suffix_pattern_recognition/static/diagram-mermaid.txt b/docs/modules/suffix_pattern_recognition/static/diagram-mermaid.txt similarity index 100% rename from docs/suffix_pattern_recognition/static/diagram-mermaid.txt rename to docs/modules/suffix_pattern_recognition/static/diagram-mermaid.txt diff --git a/mkdocs.yml b/mkdocs.yml index 01040e8..e571c8f 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -17,6 +17,8 @@ markdown_extensions: plugins: - search + - macros: + on_error_fail: true - mkdocstrings: handlers: python: @@ -29,6 +31,6 @@ plugins: nav: - Overview: index.md - Modules: - - Dynamic Interval Management: modules/dynamic_interval_management.md - - Dynamic Point Aggregation: modules/dynamic_point_aggregation.md - - Suffix Pattern Recognition: modules/suffix_pattern_recognition.md + - Dynamic Interval Management: modules/dynamic_interval_management/README.md + - Dynamic Point Aggregation: modules/dynamic_point_aggregation/README.md + - Suffix Pattern Recognition: modules/suffix_pattern_recognition/README.md diff --git a/pyproject.toml b/pyproject.toml index e1bcda6..50b4a16 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -17,6 +17,7 @@ dev = [ "pytest>=9.0.3", ] docs = [ + "mkdocs-macros-plugin>=1.5.0", "mkdocs-material>=9.7.6", "mkdocs-mermaid2-plugin>=1.2.3", "mkdocstrings-python>=2.0.3", diff --git a/uv.lock b/uv.lock index df95116..e372fed 100644 --- a/uv.lock +++ b/uv.lock @@ -215,6 +215,7 @@ dev = [ { name = "pytest" }, ] docs = [ + { name = "mkdocs-macros-plugin" }, { name = "mkdocs-material" }, { name = "mkdocs-mermaid2-plugin" }, { name = "mkdocstrings", extra = ["python"] }, @@ -235,6 +236,7 @@ provides-extras = ["benchmark"] [package.metadata.requires-dev] dev = [{ name = "pytest", specifier = ">=9.0.3" }] docs = [ + { name = "mkdocs-macros-plugin", specifier = ">=1.5.0" }, { name = "mkdocs-material", specifier = ">=9.7.6" }, { name = "mkdocs-mermaid2-plugin", specifier = ">=1.2.3" }, { name = "mkdocstrings", extras = ["python"], specifier = ">=1.0.4" }, @@ -305,6 +307,15 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/11/8c/c9138d881c79aa0ea9ed83cbd58d5ca75624378b38cee225dcf5c42cc91f/griffelib-2.0.2-py3-none-any.whl", hash = "sha256:925c857658fb1ba40c0772c37acbc2ab650bd794d9c1b9726922e36ea4117ea1", size = 142357, upload-time = "2026-03-27T11:34:46.275Z" }, ] +[[package]] +name = "hjson" +version = "3.1.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/82/e5/0b56d723a76ca67abadbf7fb71609fb0ea7e6926e94fcca6c65a85b36a0e/hjson-3.1.0.tar.gz", hash = "sha256:55af475a27cf83a7969c808399d7bccdec8fb836a07ddbd574587593b9cdcf75", size = 40541, upload-time = "2022-08-13T02:53:01.919Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/1f/7f/13cd798d180af4bf4c0ceddeefba2b864a63c71645abc0308b768d67bb81/hjson-3.1.0-py3-none-any.whl", hash = "sha256:65713cdcf13214fb554eb8b4ef803419733f4f5e551047c9b711098ab7186b89", size = 54018, upload-time = "2022-08-13T02:52:59.899Z" }, +] + [[package]] name = "idna" version = "3.14" @@ -584,6 +595,27 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/88/29/744136411e785c4b0b744d5413e56555265939ab3a104c6a4b719dad33fd/mkdocs_get_deps-0.2.2-py3-none-any.whl", hash = "sha256:e7878cbeac04860b8b5e0ca31d3abad3df9411a75a32cde82f8e44b6c16ff650", size = 9555, upload-time = "2026-03-10T02:46:32.256Z" }, ] +[[package]] +name = "mkdocs-macros-plugin" +version = "1.5.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "hjson" }, + { name = "jinja2" }, + { name = "mkdocs" }, + { name = "packaging" }, + { name = "pathspec" }, + { name = "python-dateutil" }, + { name = "pyyaml" }, + { name = "requests" }, + { name = "super-collections" }, + { name = "termcolor" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/92/15/e6a44839841ebc9c5872fa0e6fad1c3757424e4fe026093b68e9f386d136/mkdocs_macros_plugin-1.5.0.tar.gz", hash = "sha256:12aa45ce7ecb7a445c66b9f649f3dd05e9b92e8af6bc65e4acd91d26f878c01f", size = 37730, upload-time = "2025-11-13T08:08:55.545Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/51/62/9fffba5bb9ed3d31a932ad35038ba9483d59850256ee0fea7f1187173983/mkdocs_macros_plugin-1.5.0-py3-none-any.whl", hash = "sha256:c10fabd812bf50f9170609d0ed518e54f1f0e12c334ac29141723a83c881dd6f", size = 44626, upload-time = "2025-11-13T08:08:53.878Z" }, +] + [[package]] name = "mkdocs-material" version = "9.7.6" @@ -1048,6 +1080,27 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/46/2c/1462b1d0a634697ae9e55b3cecdcb64788e8b7d63f54d923fcd0bb140aed/soupsieve-2.8.3-py3-none-any.whl", hash = "sha256:ed64f2ba4eebeab06cc4962affce381647455978ffc1e36bb79a545b91f45a95", size = 37016, upload-time = "2026-01-20T04:27:01.012Z" }, ] +[[package]] +name = "super-collections" +version = "0.6.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "hjson" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/e0/de/a0c3d1244912c260638f0f925e190e493ccea37ecaea9bbad7c14413b803/super_collections-0.6.2.tar.gz", hash = "sha256:0c8d8abacd9fad2c7c1c715f036c29f5db213f8cac65f24d45ecba12b4da187a", size = 31315, upload-time = "2025-09-30T00:37:08.067Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/17/43/47c7cf84b3bd74a8631b02d47db356656bb8dff6f2e61a4c749963814d0d/super_collections-0.6.2-py3-none-any.whl", hash = "sha256:291b74d26299e9051d69ad9d89e61b07b6646f86a57a2f5ab3063d206eee9c56", size = 16173, upload-time = "2025-09-30T00:37:07.104Z" }, +] + +[[package]] +name = "termcolor" +version = "3.3.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/46/79/cf31d7a93a8fdc6aa0fbb665be84426a8c5a557d9240b6239e9e11e35fc5/termcolor-3.3.0.tar.gz", hash = "sha256:348871ca648ec6a9a983a13ab626c0acce02f515b9e1983332b17af7979521c5", size = 14434, upload-time = "2025-12-29T12:55:21.882Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/33/d1/8bb87d21e9aeb323cc03034f5eaf2c8f69841e40e4853c2627edf8111ed3/termcolor-3.3.0-py3-none-any.whl", hash = "sha256:cf642efadaf0a8ebbbf4bc7a31cec2f9b5f21a9f726f4ccbb08192c9c26f43a5", size = 7734, upload-time = "2025-12-29T12:55:20.718Z" }, +] + [[package]] name = "typing-extensions" version = "4.15.0" From f5082b277724b418f5ad4779f80825a793aae13e Mon Sep 17 00:00:00 2001 From: achekery <6503526+achekery@users.noreply.github.com> Date: Tue, 12 May 2026 22:21:50 -0700 Subject: [PATCH 07/12] fix indent for docs.yml --- .github/workflows/docs.yml | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml index 13adc64..9f80c8f 100644 --- a/.github/workflows/docs.yml +++ b/.github/workflows/docs.yml @@ -8,16 +8,16 @@ jobs: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v6 + - uses: actions/checkout@v6 - - name: Setup python - uses: actions/setup-python@v6 - with: - python-version-file: "pyproject.toml" + - name: Setup python + uses: actions/setup-python@v6 + with: + python-version-file: "pyproject.toml" - - name: Setup uv - uses: astral-sh/setup-uv@08807647e7069bb48b6ef5acd8ec9567f424441b # v8.1.0 + - name: Setup uv + uses: astral-sh/setup-uv@08807647e7069bb48b6ef5acd8ec9567f424441b # v8.1.0 - - name: Build docs with mkdocs - run: | - uv run --group docs mkdocs gh-deploy -v --clean --strict --force + - name: Build docs with mkdocs + run: | + uv run --group docs mkdocs gh-deploy -v --clean --strict --force From 491801ee424c89a938668ea27c4e6a6416556d83 Mon Sep 17 00:00:00 2001 From: achekery <6503526+achekery@users.noreply.github.com> Date: Wed, 13 May 2026 11:11:29 -0700 Subject: [PATCH 08/12] fix latex rendering with mathjax --- .github/workflows/python-app.yml | 2 +- DEVELOPMENT.md | 12 ------------ docs/javascripts/mathjax.js | 16 ++++++++++++++++ .../static/pruning-diagram.png | Bin 223372 -> 0 bytes .../suffix_pattern_recognition/README.md | 10 +++++----- .../static/diagram-image.png | Bin 244294 -> 0 bytes mkdocs.yml | 4 ++++ 7 files changed, 26 insertions(+), 18 deletions(-) create mode 100644 docs/javascripts/mathjax.js delete mode 100644 docs/modules/dynamic_interval_management/static/pruning-diagram.png delete mode 100644 docs/modules/suffix_pattern_recognition/static/diagram-image.png diff --git a/.github/workflows/python-app.yml b/.github/workflows/python-app.yml index f90c226..3a2547e 100644 --- a/.github/workflows/python-app.yml +++ b/.github/workflows/python-app.yml @@ -28,7 +28,7 @@ jobs: run: | uv run --group dev --extra benchmark pytest -sv - - name: Upload artifacts from package tests + - name: Upload artifacts from tests uses: actions/upload-artifact@v4 with: name: artifacts diff --git a/DEVELOPMENT.md b/DEVELOPMENT.md index 161444a..92902cc 100644 --- a/DEVELOPMENT.md +++ b/DEVELOPMENT.md @@ -4,18 +4,6 @@ TODO: Verify gh-deploy workflow is successful TODO: Verify mkdocs generation is successful -``` -uv run mkdocs serve -v -``` - -TODO: Remove unnecessary files - -``` -rm -rf docs/dynamic_interval_management/ -rm -rf docs/dynamic_point_aggregation/ -rm -rf docs/suffix_pattern_recognition/ -``` - ## Run tests with pytest ```sh diff --git a/docs/javascripts/mathjax.js b/docs/javascripts/mathjax.js new file mode 100644 index 0000000..ec9a9a3 --- /dev/null +++ b/docs/javascripts/mathjax.js @@ -0,0 +1,16 @@ +window.MathJax = { + tex: { + inlineMath: [["\\(", "\\)"]], + displayMath: [["\\[", "\\]"]], + processEscapes: true, + processEnvironments: true + }, + options: { + ignoreHtmlClass: ".*|", + processHtmlClass: "arithmatex" + } +}; + +document.subscribe(() => { + MathJax.typesetPromise() +}) \ No newline at end of file diff --git a/docs/modules/dynamic_interval_management/static/pruning-diagram.png b/docs/modules/dynamic_interval_management/static/pruning-diagram.png deleted file mode 100644 index 9958e4901dd58be9a53a396c1c603476688a5603..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 223372 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
0_BG)kd>}XE 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

v$yiv#=- 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 diff --git a/mkdocs.yml b/mkdocs.yml index e571c8f..fee12f0 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -34,3 +34,7 @@ nav: - Dynamic Interval Management: modules/dynamic_interval_management/README.md - Dynamic Point Aggregation: modules/dynamic_point_aggregation/README.md - Suffix Pattern Recognition: modules/suffix_pattern_recognition/README.md + +extra_javascript: + - javascripts/mathjax.js + - https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js From cb7dece626a6c8e0d6b6c942b645730a863a5e53 Mon Sep 17 00:00:00 2001 From: achekery <6503526+achekery@users.noreply.github.com> Date: Wed, 13 May 2026 11:14:27 -0700 Subject: [PATCH 09/12] fix latex rendering with mathjax --- docs/javascripts/mathjax.js | 2 +- docs/modules/dynamic_interval_management/README.md | 4 +--- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/docs/javascripts/mathjax.js b/docs/javascripts/mathjax.js index ec9a9a3..b186af6 100644 --- a/docs/javascripts/mathjax.js +++ b/docs/javascripts/mathjax.js @@ -13,4 +13,4 @@ window.MathJax = { document.subscribe(() => { MathJax.typesetPromise() -}) \ No newline at end of file +}) diff --git a/docs/modules/dynamic_interval_management/README.md b/docs/modules/dynamic_interval_management/README.md index 680b648..404965f 100644 --- a/docs/modules/dynamic_interval_management/README.md +++ b/docs/modules/dynamic_interval_management/README.md @@ -69,9 +69,7 @@ To ensure system reliability during high-frequency updates, I prioritized **Corr By implementing a **Sentinel Node Architecture** with a **Two-Down** AVL balancing subtree rotation strategy and removing the need for sentinel node checks throughout the codebase, I simplified the balancing feature and provided a cleaner and more maintainable implementation. ### Python Object-Model Tuning -To reduce object-overhead due to the Python object-model, I implemented **Attribute Flattening**. After replacing packed collections (`self.interval[0]`) with discrete integers (`self.lo`, `self.hi`), I reduced constant factors in the hot execution path and achieved a **15% reduction** in benchmarks with static intervals. 123 - -test +To reduce object-overhead due to the Python object-model, I implemented **Attribute Flattening**. After replacing packed collections (`self.interval[0]`) with discrete integers (`self.lo`, `self.hi`), I reduced constant factors in the hot execution path and achieved a **15% reduction** in benchmarks with static intervals. ## 5. Getting Started From 9062f28cf297cd6da5c0dcb524f6950b71f091d6 Mon Sep 17 00:00:00 2001 From: achekery <6503526+achekery@users.noreply.github.com> Date: Wed, 13 May 2026 11:32:14 -0700 Subject: [PATCH 10/12] add repo information --- DEVELOPMENT.md | 2 -- mkdocs.yml | 6 ++++++ 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/DEVELOPMENT.md b/DEVELOPMENT.md index 92902cc..dff7c0e 100644 --- a/DEVELOPMENT.md +++ b/DEVELOPMENT.md @@ -2,8 +2,6 @@ TODO: Verify gh-deploy workflow is successful -TODO: Verify mkdocs generation is successful - ## Run tests with pytest ```sh diff --git a/mkdocs.yml b/mkdocs.yml index fee12f0..133d62e 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -1,5 +1,11 @@ site_name: Data Streaming Accelerators +site_url: https://achekery.github.io/data-streaming-accelerators/ + +repo_name: Data Streaming Accelerators +repo_url: https://github.com/achekery/data-streaming-accelerators/ + theme: + language: en name: material features: - content.code.copy From d964ce7a82885cfbbb24570f320e0c0ed5f0605b Mon Sep 17 00:00:00 2001 From: achekery <6503526+achekery@users.noreply.github.com> Date: Wed, 13 May 2026 12:06:58 -0700 Subject: [PATCH 11/12] finalize mkdocs build --- DEVELOPMENT.md | 2 -- docs/index.md | 14 +++++++++++++- docs/modules/dynamic_interval_management/README.md | 6 ++++-- docs/modules/dynamic_point_aggregation/README.md | 2 ++ docs/modules/suffix_pattern_recognition/README.md | 2 ++ mkdocs.yml | 2 ++ 6 files changed, 23 insertions(+), 5 deletions(-) diff --git a/DEVELOPMENT.md b/DEVELOPMENT.md index dff7c0e..22cf20a 100644 --- a/DEVELOPMENT.md +++ b/DEVELOPMENT.md @@ -1,7 +1,5 @@ # DEVELOPMENT -TODO: Verify gh-deploy workflow is successful - ## Run tests with pytest ```sh diff --git a/docs/index.md b/docs/index.md index 5e733fd..78d4b94 100644 --- a/docs/index.md +++ b/docs/index.md @@ -2,4 +2,16 @@ ![Python CI](https://github.com/achekery/data-streaming/actions/workflows/python-app.yml/badge.svg) -TODO: Add a high-level summary of the whole suite +## [Dynamic Interval Management](modules/dynamic_interval_management) + +--8<-- "modules/dynamic_interval_management/README.md:summary" + +![Graph for Performance Report](modules/dynamic_interval_management/static/performance-report-1280x640.png) + +## Dynamic Point Aggregation + +--8<-- "modules/dynamic_point_aggregation/README.md:summary" + +## Suffix Pattern Recognition + +--8<-- "modules/suffix_pattern_recognition/README.md:summary" diff --git a/docs/modules/dynamic_interval_management/README.md b/docs/modules/dynamic_interval_management/README.md index 404965f..f983df6 100644 --- a/docs/modules/dynamic_interval_management/README.md +++ b/docs/modules/dynamic_interval_management/README.md @@ -2,7 +2,11 @@ ![Python CI](https://github.com/achekery/data-streaming/actions/workflows/python-app.yml/badge.svg) ## 1. Design Summary + The theoretical lower bound for merging $N$ static intervals is $\Omega(N \log N)$ due to the sorting requirement. By focusing on interval edges rather than the source intervals themselves, we can focus on efficient algorithms with compact implementation. However, in **Online Streaming Environments**, the task shifts from batch data loading (static intervals) to streaming data ingestion (dynamic intervals). + + +![Graph for Performance Report](static/performance-report-1280x640.png) ### 📊 Complexity Analysis @@ -55,8 +59,6 @@ In benchmarks with dynamic intervals up to $N=3000$, the Interval Tree (Variant | 2000 | 0.6743 | 0.0383 | 17.6x | | 3000 | 1.6093 | 0.0318 | **50.6x** | -![Graph for Performance Report](static/performance-report-1280x640.png) - ## 4. Design Optimizations ### Augmented Metadata diff --git a/docs/modules/dynamic_point_aggregation/README.md b/docs/modules/dynamic_point_aggregation/README.md index 89563e8..0c04b8d 100644 --- a/docs/modules/dynamic_point_aggregation/README.md +++ b/docs/modules/dynamic_point_aggregation/README.md @@ -2,11 +2,13 @@ ![Python CI](https://github.com/achekery/data-streaming/actions/workflows/python-app.yml/badge.svg) ## 1. Design Summary + The optimal runtime complexity for dynamic point aggregation from $N$ point values to $O(N)$ disjoint intervals is $\Omega(N \log N)$ due to the ordering requirement. The request handler uses `put` requests to add new values and `get` requests to make a new interval sequence. Because offline scenarios (batch data) have known usage patterns, the batch variant (V1) can **optimize the hot path** by simplifying high-usage `put` requests to $O(1)$ and expanding low-usage `get` requests to $O(N \log N)$. However, because online scenarios (streaming data) do not have known usage patterns, the streaming variant (V2) must instead **balance complexity** between `put` requests ($O(\log N)$) and `get` requests ($O(N)$). + ### 📊 Complexity Analysis diff --git a/docs/modules/suffix_pattern_recognition/README.md b/docs/modules/suffix_pattern_recognition/README.md index b4086fe..3625c7e 100644 --- a/docs/modules/suffix_pattern_recognition/README.md +++ b/docs/modules/suffix_pattern_recognition/README.md @@ -2,9 +2,11 @@ ![Python CI](https://github.com/achekery/data-streaming/actions/workflows/python-app.yml/badge.svg) ## 1. Design Summary + For suffix pattern recognition with $K$ suffix patterns (length $W$) and 1 query pattern (length $N$), using **reverse-traversal prefix tree search** is efficient because it can model common ancestor ordering with reverse encoding (by inserting suffix patterns in reverse order during setup and searching in reverse order during queries) and check the multiple patterns over a single root-to-leaf pass (taking runtime $O(K \cdot W)$ for one-time setup and $O(W)$ for each query). This improves over using direct suffix pattern search which must check the multiple patterns over separate array passes (taking $O(K \cdot W)$ for each query) or using forward-traversal prefix tree search which cannot model common ancestor ordering and must check the multiple patterns over separate root-to-leaf passes (taking runtime $O(K \cdot W)$ for one-time setup and $O(K \cdot W)$ for each query). For batch data (offline scenario), reading the query pattern from a static array (size $N$) with a reverse iterator takes $O(1)$ auxiliary space. For streaming data (online scenario), reading the query pattern from a history array (size $W$) reconstructed from the stream takes $O(W)$ auxiliary space. + ### 📊 Complexity Analysis diff --git a/mkdocs.yml b/mkdocs.yml index 133d62e..2d4243d 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -20,6 +20,8 @@ markdown_extensions: format: !!python/name:pymdownx.superfences.fence_code_format - pymdownx.arithmatex: generic: true # For your O(log N) LaTeX notations + - pymdownx.snippets: + base_path: docs plugins: - search From efae4d6f9cb13ba2a13dfa655c7af68c2c3a244a Mon Sep 17 00:00:00 2001 From: achekery <6503526+achekery@users.noreply.github.com> Date: Wed, 13 May 2026 12:16:54 -0700 Subject: [PATCH 12/12] finalize mkdocs build --- docs/index.md | 19 ++++++++++++++++--- .../dynamic_interval_management/README.md | 11 +---------- 2 files changed, 17 insertions(+), 13 deletions(-) diff --git a/docs/index.md b/docs/index.md index 78d4b94..7b64255 100644 --- a/docs/index.md +++ b/docs/index.md @@ -2,16 +2,29 @@ ![Python CI](https://github.com/achekery/data-streaming/actions/workflows/python-app.yml/badge.svg) -## [Dynamic Interval Management](modules/dynamic_interval_management) +## 1. Summary + +### [Dynamic Interval Management](modules/dynamic_interval_management) --8<-- "modules/dynamic_interval_management/README.md:summary" ![Graph for Performance Report](modules/dynamic_interval_management/static/performance-report-1280x640.png) -## Dynamic Point Aggregation +### Dynamic Point Aggregation --8<-- "modules/dynamic_point_aggregation/README.md:summary" -## Suffix Pattern Recognition +### Suffix Pattern Recognition --8<-- "modules/suffix_pattern_recognition/README.md:summary" + + +## 2. Getting Started + +This design requires **Python 3.13+**. + +To run the regression tests for this design: + +```bash +uv run --group dev --extra benchmark pytest -sv +``` diff --git a/docs/modules/dynamic_interval_management/README.md b/docs/modules/dynamic_interval_management/README.md index f983df6..21111fc 100644 --- a/docs/modules/dynamic_interval_management/README.md +++ b/docs/modules/dynamic_interval_management/README.md @@ -73,15 +73,6 @@ By implementing a **Sentinel Node Architecture** with a **Two-Down** AVL balanci ### Python Object-Model Tuning To reduce object-overhead due to the Python object-model, I implemented **Attribute Flattening**. After replacing packed collections (`self.interval[0]`) with discrete integers (`self.lo`, `self.hi`), I reduced constant factors in the hot execution path and achieved a **15% reduction** in benchmarks with static intervals. -## 5. Getting Started - -This design requires **Python 3.13+**. - -To run the regression tests for this design: -```bash -uv run --group dev --extra benchmark pytest -sv -``` - -## 6. API Reference +## 5. API Reference ::: data_streaming_accelerators.core.dynamic_interval_management