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.
Files changed (65) hide show
  1. id_echo-0.1.0/.github/workflows/ci.yml +56 -0
  2. id_echo-0.1.0/.github/workflows/docs.yml +39 -0
  3. id_echo-0.1.0/.github/workflows/release.yml +113 -0
  4. id_echo-0.1.0/.gitignore +28 -0
  5. id_echo-0.1.0/CHANGELOG.md +16 -0
  6. id_echo-0.1.0/Cargo.lock +998 -0
  7. id_echo-0.1.0/Cargo.toml +42 -0
  8. id_echo-0.1.0/LICENSE +201 -0
  9. id_echo-0.1.0/PKG-INFO +151 -0
  10. id_echo-0.1.0/README.md +107 -0
  11. id_echo-0.1.0/benches/__init__.py +0 -0
  12. id_echo-0.1.0/benches/bench_distributed.py +358 -0
  13. id_echo-0.1.0/docs/src/api/clients.md +11 -0
  14. id_echo-0.1.0/docs/src/api/sample-info.md +62 -0
  15. id_echo-0.1.0/docs/src/api/server.md +15 -0
  16. id_echo-0.1.0/docs/src/api/trajectory-accumulator.md +8 -0
  17. id_echo-0.1.0/docs/src/api/transports.md +22 -0
  18. id_echo-0.1.0/docs/src/design/ingress.md +159 -0
  19. id_echo-0.1.0/docs/src/design/overview.md +88 -0
  20. id_echo-0.1.0/docs/src/design/ring-buffer.md +52 -0
  21. id_echo-0.1.0/docs/src/design/selector.md +79 -0
  22. id_echo-0.1.0/docs/src/design/store.md +98 -0
  23. id_echo-0.1.0/docs/src/design/transport.md +60 -0
  24. id_echo-0.1.0/docs/src/development.md +56 -0
  25. id_echo-0.1.0/docs/src/getting-started.md +92 -0
  26. id_echo-0.1.0/docs/src/guides/in-process.md +52 -0
  27. id_echo-0.1.0/docs/src/guides/metrics.md +96 -0
  28. id_echo-0.1.0/docs/src/guides/trajectory-accumulator.md +85 -0
  29. id_echo-0.1.0/docs/src/guides/transports.md +61 -0
  30. id_echo-0.1.0/docs/src/guides/zero-copy.md +74 -0
  31. id_echo-0.1.0/docs/src/index.md +40 -0
  32. id_echo-0.1.0/justfile +41 -0
  33. id_echo-0.1.0/mkdocs.yml +95 -0
  34. id_echo-0.1.0/pyproject.toml +78 -0
  35. id_echo-0.1.0/python/echo/__init__.py +24 -0
  36. id_echo-0.1.0/python/echo/echo.pyi +54 -0
  37. id_echo-0.1.0/python/echo/py.typed +0 -0
  38. id_echo-0.1.0/python/echo/server.py +125 -0
  39. id_echo-0.1.0/python/echo/tcp_client.py +177 -0
  40. id_echo-0.1.0/python/echo/trajectory_accumulator.py +67 -0
  41. id_echo-0.1.0/python/tests/conftest.py +82 -0
  42. id_echo-0.1.0/python/tests/test_client_wait.py +38 -0
  43. id_echo-0.1.0/python/tests/test_distributed_integration.py +69 -0
  44. id_echo-0.1.0/python/tests/test_distributed_metrics.py +68 -0
  45. id_echo-0.1.0/python/tests/test_sample_info.py +202 -0
  46. id_echo-0.1.0/python/tests/test_server.py +344 -0
  47. id_echo-0.1.0/python/tests/test_tcp.py +150 -0
  48. id_echo-0.1.0/python/tests/test_trajectory_accumulator.py +226 -0
  49. id_echo-0.1.0/src/array_spec.rs +18 -0
  50. id_echo-0.1.0/src/ingress.rs +341 -0
  51. id_echo-0.1.0/src/lib.rs +21 -0
  52. id_echo-0.1.0/src/metrics.rs +402 -0
  53. id_echo-0.1.0/src/py_bindings.rs +280 -0
  54. id_echo-0.1.0/src/ring_buf.rs +119 -0
  55. id_echo-0.1.0/src/selector.rs +226 -0
  56. id_echo-0.1.0/src/store.rs +315 -0
  57. id_echo-0.1.0/src/transport/mod.rs +14 -0
  58. id_echo-0.1.0/src/transport/tcp.rs +178 -0
  59. id_echo-0.1.0/tests/ingress.rs +282 -0
  60. id_echo-0.1.0/tests/metrics.rs +387 -0
  61. id_echo-0.1.0/tests/ring_buf.rs +116 -0
  62. id_echo-0.1.0/tests/selector.rs +131 -0
  63. id_echo-0.1.0/tests/store.rs +313 -0
  64. id_echo-0.1.0/tests/tcp.rs +256 -0
  65. 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
@@ -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