id-echo 0.1.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- id_echo-0.1.0/.github/workflows/ci.yml +56 -0
- id_echo-0.1.0/.github/workflows/docs.yml +39 -0
- id_echo-0.1.0/.github/workflows/release.yml +113 -0
- id_echo-0.1.0/.gitignore +28 -0
- id_echo-0.1.0/CHANGELOG.md +16 -0
- id_echo-0.1.0/Cargo.lock +998 -0
- id_echo-0.1.0/Cargo.toml +42 -0
- id_echo-0.1.0/LICENSE +201 -0
- id_echo-0.1.0/PKG-INFO +151 -0
- id_echo-0.1.0/README.md +107 -0
- id_echo-0.1.0/benches/__init__.py +0 -0
- id_echo-0.1.0/benches/bench_distributed.py +358 -0
- id_echo-0.1.0/docs/src/api/clients.md +11 -0
- id_echo-0.1.0/docs/src/api/sample-info.md +62 -0
- id_echo-0.1.0/docs/src/api/server.md +15 -0
- id_echo-0.1.0/docs/src/api/trajectory-accumulator.md +8 -0
- id_echo-0.1.0/docs/src/api/transports.md +22 -0
- id_echo-0.1.0/docs/src/design/ingress.md +159 -0
- id_echo-0.1.0/docs/src/design/overview.md +88 -0
- id_echo-0.1.0/docs/src/design/ring-buffer.md +52 -0
- id_echo-0.1.0/docs/src/design/selector.md +79 -0
- id_echo-0.1.0/docs/src/design/store.md +98 -0
- id_echo-0.1.0/docs/src/design/transport.md +60 -0
- id_echo-0.1.0/docs/src/development.md +56 -0
- id_echo-0.1.0/docs/src/getting-started.md +92 -0
- id_echo-0.1.0/docs/src/guides/in-process.md +52 -0
- id_echo-0.1.0/docs/src/guides/metrics.md +96 -0
- id_echo-0.1.0/docs/src/guides/trajectory-accumulator.md +85 -0
- id_echo-0.1.0/docs/src/guides/transports.md +61 -0
- id_echo-0.1.0/docs/src/guides/zero-copy.md +74 -0
- id_echo-0.1.0/docs/src/index.md +40 -0
- id_echo-0.1.0/justfile +41 -0
- id_echo-0.1.0/mkdocs.yml +95 -0
- id_echo-0.1.0/pyproject.toml +78 -0
- id_echo-0.1.0/python/echo/__init__.py +24 -0
- id_echo-0.1.0/python/echo/echo.pyi +54 -0
- id_echo-0.1.0/python/echo/py.typed +0 -0
- id_echo-0.1.0/python/echo/server.py +125 -0
- id_echo-0.1.0/python/echo/tcp_client.py +177 -0
- id_echo-0.1.0/python/echo/trajectory_accumulator.py +67 -0
- id_echo-0.1.0/python/tests/conftest.py +82 -0
- id_echo-0.1.0/python/tests/test_client_wait.py +38 -0
- id_echo-0.1.0/python/tests/test_distributed_integration.py +69 -0
- id_echo-0.1.0/python/tests/test_distributed_metrics.py +68 -0
- id_echo-0.1.0/python/tests/test_sample_info.py +202 -0
- id_echo-0.1.0/python/tests/test_server.py +344 -0
- id_echo-0.1.0/python/tests/test_tcp.py +150 -0
- id_echo-0.1.0/python/tests/test_trajectory_accumulator.py +226 -0
- id_echo-0.1.0/src/array_spec.rs +18 -0
- id_echo-0.1.0/src/ingress.rs +341 -0
- id_echo-0.1.0/src/lib.rs +21 -0
- id_echo-0.1.0/src/metrics.rs +402 -0
- id_echo-0.1.0/src/py_bindings.rs +280 -0
- id_echo-0.1.0/src/ring_buf.rs +119 -0
- id_echo-0.1.0/src/selector.rs +226 -0
- id_echo-0.1.0/src/store.rs +315 -0
- id_echo-0.1.0/src/transport/mod.rs +14 -0
- id_echo-0.1.0/src/transport/tcp.rs +178 -0
- id_echo-0.1.0/tests/ingress.rs +282 -0
- id_echo-0.1.0/tests/metrics.rs +387 -0
- id_echo-0.1.0/tests/ring_buf.rs +116 -0
- id_echo-0.1.0/tests/selector.rs +131 -0
- id_echo-0.1.0/tests/store.rs +313 -0
- id_echo-0.1.0/tests/tcp.rs +256 -0
- id_echo-0.1.0/uv.lock +1899 -0
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
name: CI
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches: [main]
|
|
6
|
+
pull_request:
|
|
7
|
+
|
|
8
|
+
concurrency:
|
|
9
|
+
group: ci-${{ github.ref }}
|
|
10
|
+
cancel-in-progress: true
|
|
11
|
+
|
|
12
|
+
jobs:
|
|
13
|
+
rust:
|
|
14
|
+
runs-on: ubuntu-latest
|
|
15
|
+
steps:
|
|
16
|
+
- uses: actions/checkout@v4
|
|
17
|
+
- name: Set up Rust toolchain
|
|
18
|
+
run: |
|
|
19
|
+
rustup default stable
|
|
20
|
+
rustup component add rustfmt clippy
|
|
21
|
+
- uses: Swatinem/rust-cache@v2
|
|
22
|
+
|
|
23
|
+
- name: cargo fmt --check
|
|
24
|
+
run: cargo fmt --check
|
|
25
|
+
|
|
26
|
+
- name: cargo clippy
|
|
27
|
+
run: cargo clippy --all-targets -- -D warnings
|
|
28
|
+
|
|
29
|
+
- name: cargo test
|
|
30
|
+
run: cargo test --all-features
|
|
31
|
+
|
|
32
|
+
python:
|
|
33
|
+
runs-on: ubuntu-latest
|
|
34
|
+
strategy:
|
|
35
|
+
matrix:
|
|
36
|
+
python-version: ["3.10", "3.11", "3.12", "3.13", "3.14"]
|
|
37
|
+
steps:
|
|
38
|
+
- uses: actions/checkout@v4
|
|
39
|
+
- name: Set up Rust toolchain
|
|
40
|
+
run: rustup default stable
|
|
41
|
+
- uses: Swatinem/rust-cache@v2
|
|
42
|
+
|
|
43
|
+
- name: Install uv
|
|
44
|
+
uses: astral-sh/setup-uv@v3
|
|
45
|
+
|
|
46
|
+
- name: Set up Python ${{ matrix.python-version }}
|
|
47
|
+
run: uv python install ${{ matrix.python-version }}
|
|
48
|
+
|
|
49
|
+
- name: Install package + dev deps
|
|
50
|
+
run: uv sync --extra dev
|
|
51
|
+
|
|
52
|
+
- name: ruff
|
|
53
|
+
run: uv run ruff check .
|
|
54
|
+
|
|
55
|
+
- name: pytest
|
|
56
|
+
run: uv run pytest -v
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
name: docs
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches: [main]
|
|
6
|
+
workflow_dispatch:
|
|
7
|
+
|
|
8
|
+
permissions:
|
|
9
|
+
contents: read
|
|
10
|
+
pages: write
|
|
11
|
+
id-token: write
|
|
12
|
+
|
|
13
|
+
concurrency:
|
|
14
|
+
group: docs-${{ github.ref }}
|
|
15
|
+
cancel-in-progress: true
|
|
16
|
+
|
|
17
|
+
jobs:
|
|
18
|
+
build:
|
|
19
|
+
runs-on: ubuntu-latest
|
|
20
|
+
steps:
|
|
21
|
+
- uses: actions/checkout@v4
|
|
22
|
+
- run: rustup default stable
|
|
23
|
+
- uses: astral-sh/setup-uv@v3
|
|
24
|
+
- run: uv python install 3.12
|
|
25
|
+
- run: uv sync --extra docs
|
|
26
|
+
- run: uv run mkdocs build
|
|
27
|
+
- uses: actions/upload-pages-artifact@v3
|
|
28
|
+
with:
|
|
29
|
+
path: docs/site
|
|
30
|
+
|
|
31
|
+
deploy:
|
|
32
|
+
needs: build
|
|
33
|
+
runs-on: ubuntu-latest
|
|
34
|
+
environment:
|
|
35
|
+
name: github-pages
|
|
36
|
+
url: ${{ steps.deployment.outputs.page_url }}
|
|
37
|
+
steps:
|
|
38
|
+
- id: deployment
|
|
39
|
+
uses: actions/deploy-pages@v4
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
name: Release
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
release:
|
|
5
|
+
types: [published]
|
|
6
|
+
workflow_dispatch:
|
|
7
|
+
|
|
8
|
+
jobs:
|
|
9
|
+
# Mirror the CI checks before spending wheel-build minutes / publishing.
|
|
10
|
+
# A green main is not a guarantee — release tags can point at any commit.
|
|
11
|
+
test:
|
|
12
|
+
runs-on: ubuntu-latest
|
|
13
|
+
steps:
|
|
14
|
+
- uses: actions/checkout@v4
|
|
15
|
+
- name: Set up Rust toolchain
|
|
16
|
+
run: |
|
|
17
|
+
rustup default stable
|
|
18
|
+
rustup component add rustfmt clippy
|
|
19
|
+
- uses: Swatinem/rust-cache@v2
|
|
20
|
+
|
|
21
|
+
- name: cargo fmt --check
|
|
22
|
+
run: cargo fmt --check
|
|
23
|
+
|
|
24
|
+
- name: cargo clippy
|
|
25
|
+
run: cargo clippy --all-targets -- -D warnings
|
|
26
|
+
|
|
27
|
+
- name: cargo test
|
|
28
|
+
run: cargo test --all-features
|
|
29
|
+
|
|
30
|
+
- name: Install uv
|
|
31
|
+
uses: astral-sh/setup-uv@v3
|
|
32
|
+
|
|
33
|
+
- name: Set up Python
|
|
34
|
+
run: uv python install 3.12
|
|
35
|
+
|
|
36
|
+
- name: Install package + dev deps
|
|
37
|
+
run: uv sync --extra dev
|
|
38
|
+
|
|
39
|
+
- name: ruff
|
|
40
|
+
run: uv run ruff check .
|
|
41
|
+
|
|
42
|
+
- name: pytest
|
|
43
|
+
run: uv run pytest -v
|
|
44
|
+
|
|
45
|
+
linux:
|
|
46
|
+
needs: [test]
|
|
47
|
+
runs-on: ubuntu-latest
|
|
48
|
+
strategy:
|
|
49
|
+
matrix:
|
|
50
|
+
target: [x86_64, aarch64]
|
|
51
|
+
steps:
|
|
52
|
+
- uses: actions/checkout@v4
|
|
53
|
+
- uses: actions/setup-python@v5
|
|
54
|
+
with:
|
|
55
|
+
python-version: '3.10'
|
|
56
|
+
- uses: PyO3/maturin-action@v1
|
|
57
|
+
with:
|
|
58
|
+
target: ${{ matrix.target }}
|
|
59
|
+
manylinux: auto
|
|
60
|
+
args: --release --out dist
|
|
61
|
+
- uses: actions/upload-artifact@v4
|
|
62
|
+
with:
|
|
63
|
+
name: wheels-linux-${{ matrix.target }}
|
|
64
|
+
path: dist
|
|
65
|
+
|
|
66
|
+
macos:
|
|
67
|
+
needs: [test]
|
|
68
|
+
runs-on: macos-latest
|
|
69
|
+
strategy:
|
|
70
|
+
matrix:
|
|
71
|
+
target: [x86_64, aarch64]
|
|
72
|
+
steps:
|
|
73
|
+
- uses: actions/checkout@v4
|
|
74
|
+
- uses: actions/setup-python@v5
|
|
75
|
+
with:
|
|
76
|
+
python-version: '3.10'
|
|
77
|
+
- uses: PyO3/maturin-action@v1
|
|
78
|
+
with:
|
|
79
|
+
target: ${{ matrix.target }}
|
|
80
|
+
args: --release --out dist
|
|
81
|
+
- uses: actions/upload-artifact@v4
|
|
82
|
+
with:
|
|
83
|
+
name: wheels-macos-${{ matrix.target }}
|
|
84
|
+
path: dist
|
|
85
|
+
|
|
86
|
+
sdist:
|
|
87
|
+
needs: [test]
|
|
88
|
+
runs-on: ubuntu-latest
|
|
89
|
+
steps:
|
|
90
|
+
- uses: actions/checkout@v4
|
|
91
|
+
- uses: PyO3/maturin-action@v1
|
|
92
|
+
with:
|
|
93
|
+
command: sdist
|
|
94
|
+
args: --out dist
|
|
95
|
+
- uses: actions/upload-artifact@v4
|
|
96
|
+
with:
|
|
97
|
+
name: sdist
|
|
98
|
+
path: dist
|
|
99
|
+
|
|
100
|
+
publish:
|
|
101
|
+
name: Publish to PyPI
|
|
102
|
+
needs: [linux, macos, sdist]
|
|
103
|
+
runs-on: ubuntu-latest
|
|
104
|
+
if: startsWith(github.ref, 'refs/tags/v')
|
|
105
|
+
environment: pypi
|
|
106
|
+
permissions:
|
|
107
|
+
id-token: write
|
|
108
|
+
steps:
|
|
109
|
+
- uses: actions/download-artifact@v4
|
|
110
|
+
with:
|
|
111
|
+
path: dist
|
|
112
|
+
merge-multiple: true
|
|
113
|
+
- uses: pypa/gh-action-pypi-publish@release/v1
|
id_echo-0.1.0/.gitignore
ADDED
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
# Rust
|
|
2
|
+
/target/
|
|
3
|
+
|
|
4
|
+
# Python
|
|
5
|
+
/dist/
|
|
6
|
+
__pycache__/
|
|
7
|
+
*.pyc
|
|
8
|
+
*.so
|
|
9
|
+
*.pyd
|
|
10
|
+
.venv/
|
|
11
|
+
|
|
12
|
+
# Benchmarks
|
|
13
|
+
.benchmarks/
|
|
14
|
+
.bench-pytest-tmp.json
|
|
15
|
+
bench-*.png
|
|
16
|
+
benches/*.json
|
|
17
|
+
benches/*.png
|
|
18
|
+
|
|
19
|
+
# Docs
|
|
20
|
+
/site/
|
|
21
|
+
/docs/site/
|
|
22
|
+
|
|
23
|
+
# Tooling
|
|
24
|
+
.claude
|
|
25
|
+
.worktrees/
|
|
26
|
+
|
|
27
|
+
# Local-only files (personal scripts, scratch, etc.)
|
|
28
|
+
.local/
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
All notable changes to this project will be documented in this file.
|
|
4
|
+
|
|
5
|
+
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
|
|
6
|
+
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
|
+
|
|
8
|
+
## [Unreleased]
|
|
9
|
+
|
|
10
|
+
## [0.1.0] - 2026-05-18
|
|
11
|
+
|
|
12
|
+
Initial public release.
|
|
13
|
+
|
|
14
|
+
- Lockfree, pre-allocated Rust ring buffer with zero-copy numpy batches.
|
|
15
|
+
- TCP transport with per-connection SPSC queues and a drainer pool.
|
|
16
|
+
- Only FIFO sampling/adding/removing
|