localqueue 0.5.0__tar.gz → 1.0.1__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 (156) hide show
  1. localqueue-1.0.1/.github/workflows/ci.yml +137 -0
  2. localqueue-1.0.1/.github/workflows/stress.yml +57 -0
  3. localqueue-1.0.1/.github/workflows/wheels.yml +118 -0
  4. localqueue-1.0.1/.gitignore +15 -0
  5. localqueue-1.0.1/Cargo.lock +299 -0
  6. localqueue-1.0.1/Cargo.toml +15 -0
  7. localqueue-1.0.1/PKG-INFO +236 -0
  8. localqueue-1.0.1/README.md +220 -0
  9. localqueue-1.0.1/benchmarks/README.md +33 -0
  10. localqueue-1.0.1/benchmarks/queue_bench.py +228 -0
  11. localqueue-1.0.1/docs/guarantees.md +80 -0
  12. localqueue-1.0.1/docs/internal/initial_idea.md +137 -0
  13. localqueue-1.0.1/examples/basic.py +25 -0
  14. localqueue-1.0.1/pyproject.toml +32 -0
  15. localqueue-1.0.1/python/localqueue/__init__.py +16 -0
  16. localqueue-1.0.1/python/localqueue/core.py +272 -0
  17. localqueue-1.0.1/python/localqueue/exceptions.py +5 -0
  18. localqueue-1.0.1/python/localqueue/job.py +25 -0
  19. localqueue-1.0.1/python/localqueue/localqueue.pyi +58 -0
  20. localqueue-1.0.1/python/localqueue/worker.py +156 -0
  21. localqueue-1.0.1/src/error.rs +58 -0
  22. localqueue-1.0.1/src/lib.rs +22 -0
  23. localqueue-1.0.1/src/queue.rs +655 -0
  24. localqueue-1.0.1/src/schema.rs +21 -0
  25. localqueue-1.0.1/src/storage.rs +72 -0
  26. localqueue-1.0.1/stress/run_soak.py +233 -0
  27. localqueue-1.0.1/tests/__init__.py +0 -0
  28. localqueue-1.0.1/tests/test_concurrency.py +108 -0
  29. localqueue-1.0.1/tests/test_contract.py +292 -0
  30. localqueue-1.0.1/tests/test_core.py +191 -0
  31. localqueue-1.0.1/tests/test_gil.py +52 -0
  32. localqueue-1.0.1/tests/test_maintenance.py +131 -0
  33. localqueue-1.0.1/tests/test_worker.py +240 -0
  34. localqueue-0.5.0/.gitignore +0 -23
  35. localqueue-0.5.0/CHANGELOG.md +0 -195
  36. localqueue-0.5.0/LICENSE +0 -21
  37. localqueue-0.5.0/PKG-INFO +0 -130
  38. localqueue-0.5.0/README.md +0 -95
  39. localqueue-0.5.0/docs/api.md +0 -722
  40. localqueue-0.5.0/docs/compare.md +0 -50
  41. localqueue-0.5.0/docs/develop.md +0 -137
  42. localqueue-0.5.0/docs/examples/pull-compose.md +0 -63
  43. localqueue-0.5.0/docs/examples/push-compose.md +0 -49
  44. localqueue-0.5.0/docs/examples/websocket-compose.md +0 -58
  45. localqueue-0.5.0/docs/examples.md +0 -14
  46. localqueue-0.5.0/docs/index.md +0 -86
  47. localqueue-0.5.0/docs/operational-maturity.md +0 -137
  48. localqueue-0.5.0/docs/plans/notification-policy-pr.md +0 -258
  49. localqueue-0.5.0/docs/plans/pubsub-physical-fanout-pr.md +0 -178
  50. localqueue-0.5.0/docs/plans/queue-architecture-roadmap.md +0 -261
  51. localqueue-0.5.0/docs/queues.md +0 -1117
  52. localqueue-0.5.0/docs/release.md +0 -47
  53. localqueue-0.5.0/docs/retries.md +0 -363
  54. localqueue-0.5.0/docs/stability.md +0 -88
  55. localqueue-0.5.0/docs/use-cases/local-outbox.md +0 -75
  56. localqueue-0.5.0/docs/use-cases/operator-recovery.md +0 -78
  57. localqueue-0.5.0/docs/use-cases/persistent-retries.md +0 -72
  58. localqueue-0.5.0/docs/use-cases.md +0 -54
  59. localqueue-0.5.0/examples/docker-compose/README.md +0 -11
  60. localqueue-0.5.0/examples/docker-compose/pull/README.md +0 -28
  61. localqueue-0.5.0/examples/docker-compose/pull/compose.yaml +0 -40
  62. localqueue-0.5.0/examples/docker-compose/pull/producer.py +0 -33
  63. localqueue-0.5.0/examples/docker-compose/pull/worker.py +0 -15
  64. localqueue-0.5.0/examples/docker-compose/push/README.md +0 -19
  65. localqueue-0.5.0/examples/docker-compose/push/compose.yaml +0 -16
  66. localqueue-0.5.0/examples/docker-compose/push/push_app.py +0 -63
  67. localqueue-0.5.0/examples/docker-compose/websocket/Dockerfile +0 -13
  68. localqueue-0.5.0/examples/docker-compose/websocket/README.md +0 -24
  69. localqueue-0.5.0/examples/docker-compose/websocket/compose.yaml +0 -32
  70. localqueue-0.5.0/examples/docker-compose/websocket/websocket_app.py +0 -71
  71. localqueue-0.5.0/examples/docker-compose/websocket/websocket_client.py +0 -27
  72. localqueue-0.5.0/examples/email_worker.py +0 -10
  73. localqueue-0.5.0/examples/enqueue_email.py +0 -26
  74. localqueue-0.5.0/examples/process_webhook.sh +0 -10
  75. localqueue-0.5.0/examples/retry_demo.py +0 -289
  76. localqueue-0.5.0/examples/sqlite_concurrency_benchmark.py +0 -313
  77. localqueue-0.5.0/examples/sqlite_process_harness.py +0 -455
  78. localqueue-0.5.0/localqueue/__init__.py +0 -239
  79. localqueue-0.5.0/localqueue/adapters/__init__.py +0 -15
  80. localqueue-0.5.0/localqueue/adapters/dispatch.py +0 -40
  81. localqueue-0.5.0/localqueue/adapters/notification.py +0 -211
  82. localqueue-0.5.0/localqueue/cli/__init__.py +0 -305
  83. localqueue-0.5.0/localqueue/cli/commands.py +0 -583
  84. localqueue-0.5.0/localqueue/cli/support.py +0 -242
  85. localqueue-0.5.0/localqueue/cli/worker.py +0 -318
  86. localqueue-0.5.0/localqueue/cli_commands.py +0 -1
  87. localqueue-0.5.0/localqueue/cli_support.py +0 -1
  88. localqueue-0.5.0/localqueue/cli_worker_commands.py +0 -1
  89. localqueue-0.5.0/localqueue/failure.py +0 -19
  90. localqueue-0.5.0/localqueue/idempotency/__init__.py +0 -17
  91. localqueue-0.5.0/localqueue/idempotency/stores/__init__.py +0 -13
  92. localqueue-0.5.0/localqueue/idempotency/stores/_shared.py +0 -22
  93. localqueue-0.5.0/localqueue/idempotency/stores/base.py +0 -45
  94. localqueue-0.5.0/localqueue/idempotency/stores/lmdb.py +0 -88
  95. localqueue-0.5.0/localqueue/idempotency/stores/memory.py +0 -55
  96. localqueue-0.5.0/localqueue/idempotency/stores/sqlite.py +0 -154
  97. localqueue-0.5.0/localqueue/paths.py +0 -23
  98. localqueue-0.5.0/localqueue/policies/__init__.py +0 -181
  99. localqueue-0.5.0/localqueue/policies/_types.py +0 -18
  100. localqueue-0.5.0/localqueue/policies/acknowledgement.py +0 -32
  101. localqueue-0.5.0/localqueue/policies/backpressure.py +0 -68
  102. localqueue-0.5.0/localqueue/policies/commit.py +0 -109
  103. localqueue-0.5.0/localqueue/policies/consumption.py +0 -48
  104. localqueue-0.5.0/localqueue/policies/dead_letter.py +0 -32
  105. localqueue-0.5.0/localqueue/policies/deduplication.py +0 -42
  106. localqueue-0.5.0/localqueue/policies/delivery.py +0 -86
  107. localqueue-0.5.0/localqueue/policies/dispatch.py +0 -49
  108. localqueue-0.5.0/localqueue/policies/lease.py +0 -41
  109. localqueue-0.5.0/localqueue/policies/locality.py +0 -48
  110. localqueue-0.5.0/localqueue/policies/notification.py +0 -57
  111. localqueue-0.5.0/localqueue/policies/ordering.py +0 -66
  112. localqueue-0.5.0/localqueue/policies/policy_set.py +0 -212
  113. localqueue-0.5.0/localqueue/policies/results.py +0 -56
  114. localqueue-0.5.0/localqueue/policies/routing.py +0 -48
  115. localqueue-0.5.0/localqueue/policies/semantics.py +0 -37
  116. localqueue-0.5.0/localqueue/policies/subscriptions.py +0 -69
  117. localqueue-0.5.0/localqueue/queue.py +0 -35
  118. localqueue-0.5.0/localqueue/queues/__init__.py +0 -26
  119. localqueue-0.5.0/localqueue/queues/core.py +0 -632
  120. localqueue-0.5.0/localqueue/queues/policies.py +0 -129
  121. localqueue-0.5.0/localqueue/queues/timing.py +0 -23
  122. localqueue-0.5.0/localqueue/queues/validation.py +0 -114
  123. localqueue-0.5.0/localqueue/results/__init__.py +0 -15
  124. localqueue-0.5.0/localqueue/results/stores/__init__.py +0 -12
  125. localqueue-0.5.0/localqueue/results/stores/_shared.py +0 -22
  126. localqueue-0.5.0/localqueue/results/stores/base.py +0 -24
  127. localqueue-0.5.0/localqueue/results/stores/lmdb.py +0 -52
  128. localqueue-0.5.0/localqueue/results/stores/memory.py +0 -29
  129. localqueue-0.5.0/localqueue/results/stores/sqlite.py +0 -93
  130. localqueue-0.5.0/localqueue/retry/__init__.py +0 -41
  131. localqueue-0.5.0/localqueue/retry/stores/__init__.py +0 -13
  132. localqueue-0.5.0/localqueue/retry/stores/_shared.py +0 -22
  133. localqueue-0.5.0/localqueue/retry/stores/base.py +0 -41
  134. localqueue-0.5.0/localqueue/retry/stores/lmdb.py +0 -80
  135. localqueue-0.5.0/localqueue/retry/stores/memory.py +0 -51
  136. localqueue-0.5.0/localqueue/retry/stores/sqlite.py +0 -148
  137. localqueue-0.5.0/localqueue/retry/tenacity.py +0 -794
  138. localqueue-0.5.0/localqueue/services/__init__.py +0 -1
  139. localqueue-0.5.0/localqueue/services/queue_worker.py +0 -34
  140. localqueue-0.5.0/localqueue/spec.py +0 -169
  141. localqueue-0.5.0/localqueue/stores/__init__.py +0 -14
  142. localqueue-0.5.0/localqueue/stores/_shared.py +0 -422
  143. localqueue-0.5.0/localqueue/stores/base.py +0 -139
  144. localqueue-0.5.0/localqueue/stores/lmdb.py +0 -567
  145. localqueue-0.5.0/localqueue/stores/memory.py +0 -330
  146. localqueue-0.5.0/localqueue/stores/sqlite.py +0 -733
  147. localqueue-0.5.0/localqueue/worker.py +0 -26
  148. localqueue-0.5.0/localqueue/workers/__init__.py +0 -51
  149. localqueue-0.5.0/localqueue/workers/queue.py +0 -622
  150. localqueue-0.5.0/localqueue/workers/runtime.py +0 -686
  151. localqueue-0.5.0/pyproject.toml +0 -127
  152. localqueue-0.5.0/tests/test_cli.py +0 -2762
  153. localqueue-0.5.0/tests/test_process_harness.py +0 -77
  154. localqueue-0.5.0/tests/test_queue.py +0 -5826
  155. localqueue-0.5.0/tests/test_retry.py +0 -1312
  156. localqueue-0.5.0/uv.lock +0 -579
@@ -0,0 +1,137 @@
1
+ name: CI
2
+
3
+ on:
4
+ pull_request:
5
+ push:
6
+ branches: [main]
7
+ workflow_dispatch:
8
+
9
+ permissions:
10
+ contents: read
11
+
12
+ concurrency:
13
+ group: ci-${{ github.workflow }}-${{ github.ref }}
14
+ cancel-in-progress: true
15
+
16
+ jobs:
17
+ rust-quality:
18
+ name: Rust format and Clippy
19
+ runs-on: ubuntu-latest
20
+ steps:
21
+ - name: Check out repository
22
+ uses: actions/checkout@v6
23
+
24
+ - name: Install Rust
25
+ uses: dtolnay/rust-toolchain@stable
26
+ with:
27
+ components: rustfmt, clippy
28
+
29
+ - name: Cache Cargo dependencies
30
+ uses: actions/cache@v4
31
+ with:
32
+ path: |
33
+ ~/.cargo/registry
34
+ ~/.cargo/git
35
+ target
36
+ key: ${{ runner.os }}-cargo-${{ hashFiles('Cargo.toml', 'Cargo.lock') }}
37
+ restore-keys: |
38
+ ${{ runner.os }}-cargo-
39
+
40
+ - name: Check formatting
41
+ run: cargo fmt --all --check
42
+
43
+ - name: Run Clippy
44
+ run: cargo clippy --locked --all-targets --all-features -- -D warnings
45
+
46
+ msrv:
47
+ name: Rust MSRV 1.83
48
+ runs-on: ubuntu-latest
49
+ steps:
50
+ - name: Check out repository
51
+ uses: actions/checkout@v6
52
+
53
+ - name: Install Rust 1.83
54
+ uses: dtolnay/rust-toolchain@1.83
55
+
56
+ - name: Check with MSRV
57
+ run: cargo check --locked
58
+
59
+ python-tests:
60
+ name: Python tests (${{ matrix.os }}, Python ${{ matrix.python }})
61
+ strategy:
62
+ fail-fast: false
63
+ matrix:
64
+ include:
65
+ - os: ubuntu-latest
66
+ python: '3.10'
67
+ - os: ubuntu-latest
68
+ python: '3.14'
69
+ - os: macos-15
70
+ python: '3.14'
71
+ - os: windows-latest
72
+ python: '3.14'
73
+ runs-on: ${{ matrix.os }}
74
+ steps:
75
+ - name: Check out repository
76
+ uses: actions/checkout@v6
77
+
78
+ - name: Set up Python
79
+ uses: actions/setup-python@v6
80
+ with:
81
+ python-version: ${{ matrix.python }}
82
+ cache: pip
83
+
84
+ - name: Build extension and run tests in a virtual environment
85
+ shell: bash
86
+ run: |
87
+ python -m venv .venv
88
+ if [ "$RUNNER_OS" = "Windows" ]; then
89
+ source .venv/Scripts/activate
90
+ else
91
+ source .venv/bin/activate
92
+ fi
93
+ python -m pip install --upgrade "maturin>=1.14,<2" "pytest>=8,<10"
94
+ maturin develop --release --locked
95
+ pytest -ra
96
+
97
+ wheel-smoke:
98
+ name: Build and smoke-test wheel
99
+ needs: [rust-quality, python-tests]
100
+ runs-on: ubuntu-latest
101
+ steps:
102
+ - name: Check out repository
103
+ uses: actions/checkout@v6
104
+
105
+ - name: Set up Python
106
+ uses: actions/setup-python@v6
107
+ with:
108
+ python-version: '3.13'
109
+
110
+ - name: Install maturin
111
+ run: python -m pip install --upgrade "maturin>=1.14,<2"
112
+
113
+ - name: Build wheel
114
+ run: maturin build --release --locked -i python
115
+
116
+ - name: Install wheel
117
+ shell: bash
118
+ run: python -m pip install --force-reinstall target/wheels/*.whl
119
+
120
+ - name: Import package outside the checkout
121
+ shell: bash
122
+ run: |
123
+ cd "$RUNNER_TEMP"
124
+ python - <<'PY'
125
+ import tempfile
126
+
127
+ from localqueue import SimpleQueue
128
+
129
+ with tempfile.TemporaryDirectory() as path:
130
+ queue = SimpleQueue(path)
131
+ queue.put({"source": "wheel-smoke"})
132
+ job = queue.get(block=False)
133
+ assert job.data == {"source": "wheel-smoke"}
134
+ queue.ack(job)
135
+ assert queue.stats()["acked"] == 1
136
+ queue.close()
137
+ PY
@@ -0,0 +1,57 @@
1
+ name: Multiprocess stress
2
+
3
+ on:
4
+ workflow_dispatch:
5
+ inputs:
6
+ duration:
7
+ description: "Duração em segundos"
8
+ required: false
9
+ default: '1800'
10
+ messages:
11
+ description: "Quantidade de mensagens"
12
+ required: false
13
+ default: '50000'
14
+ schedule:
15
+ - cron: '17 3 * * 0'
16
+
17
+ permissions:
18
+ contents: read
19
+
20
+ jobs:
21
+ soak:
22
+ name: Multiprocess soak
23
+ runs-on: ubuntu-latest
24
+ timeout-minutes: 40
25
+ steps:
26
+ - name: Check out repository
27
+ uses: actions/checkout@v6
28
+
29
+ - name: Set up Python
30
+ uses: actions/setup-python@v6
31
+ with:
32
+ python-version: '3.13'
33
+
34
+ - name: Install maturin
35
+ run: python -m pip install --upgrade "maturin>=1.14,<2"
36
+
37
+ - name: Build the extension
38
+ run: maturin develop --release --locked
39
+
40
+ - name: Run stress test
41
+ shell: bash
42
+ run: |
43
+ python stress/run_soak.py \
44
+ --duration "${{ inputs.duration || '1800' }}" \
45
+ --messages "${{ inputs.messages || '50000' }}" \
46
+ --producers 4 \
47
+ --consumers 8 \
48
+ --crash-rate 0.01 \
49
+ > stress-report.json
50
+
51
+ - name: Upload stress report
52
+ if: always()
53
+ uses: actions/upload-artifact@v4
54
+ with:
55
+ name: stress-report-${{ github.run_id }}
56
+ path: stress-report.json
57
+ if-no-files-found: warn
@@ -0,0 +1,118 @@
1
+ name: Wheels
2
+
3
+ on:
4
+ workflow_dispatch:
5
+ push:
6
+ tags: ['v*']
7
+
8
+ permissions:
9
+ contents: read
10
+
11
+ jobs:
12
+ build:
13
+ name: ${{ matrix.name }}
14
+ strategy:
15
+ fail-fast: false
16
+ matrix:
17
+ include:
18
+ - name: linux-x86_64
19
+ os: ubuntu-latest
20
+ target: x86_64-unknown-linux-gnu
21
+ manylinux: '2_17'
22
+ - name: linux-aarch64
23
+ os: ubuntu-latest
24
+ target: aarch64-unknown-linux-gnu
25
+ manylinux: '2_17'
26
+ - name: macos-x86_64
27
+ os: macos-15-intel
28
+ target: x86_64-apple-darwin
29
+ manylinux: off
30
+ - name: macos-arm64
31
+ os: macos-15
32
+ target: aarch64-apple-darwin
33
+ manylinux: off
34
+ - name: windows-x86_64
35
+ os: windows-latest
36
+ target: x86_64-pc-windows-msvc
37
+ manylinux: off
38
+ runs-on: ${{ matrix.os }}
39
+ environment: pypi
40
+ permissions:
41
+ contents: read
42
+ id-token: write
43
+ steps:
44
+ - name: Check out repository
45
+ uses: actions/checkout@v6
46
+
47
+ - name: Set up QEMU for Linux ARM64
48
+ if: matrix.name == 'linux-aarch64'
49
+ uses: docker/setup-qemu-action@v3
50
+
51
+ - name: Set up Python interpreters
52
+ uses: actions/setup-python@v6
53
+ with:
54
+ python-version: |
55
+ 3.10
56
+ 3.11
57
+ 3.12
58
+ 3.13
59
+ 3.14
60
+
61
+ - name: Build wheels with maturin
62
+ uses: PyO3/maturin-action@v1
63
+ with:
64
+ command: build
65
+ target: ${{ matrix.target }}
66
+ manylinux: ${{ matrix.manylinux }}
67
+ args: --release --locked --find-interpreter --compatibility pypi
68
+ maturin-version: v1.14.1
69
+
70
+ - name: Set up smoke-test Python
71
+ uses: actions/setup-python@v6
72
+ with:
73
+ python-version: '3.13'
74
+
75
+ - name: Install one wheel for smoke testing
76
+ if: matrix.name != 'linux-aarch64'
77
+ shell: bash
78
+ run: python -m pip install --force-reinstall --no-index target/wheels/*cp313*.whl
79
+
80
+ - name: Smoke-test installed wheel outside the checkout
81
+ if: matrix.name != 'linux-aarch64'
82
+ shell: bash
83
+ run: |
84
+ cd "$RUNNER_TEMP"
85
+ python - <<'PY'
86
+ import tempfile
87
+
88
+ from localqueue import SimpleQueue
89
+
90
+ with tempfile.TemporaryDirectory() as path:
91
+ queue = SimpleQueue(path)
92
+ queue.put({"platform": "wheel"})
93
+ job = queue.get(block=False)
94
+ queue.ack(job)
95
+ assert queue.stats()["acked"] == 1
96
+ queue.close()
97
+ PY
98
+
99
+ - name: Validate Linux ARM64 wheel artifact
100
+ if: matrix.name == 'linux-aarch64'
101
+ shell: bash
102
+ run: test -n "$(find target/wheels -name '*cp313*.whl' -print -quit)"
103
+
104
+ - name: Install release tools
105
+ if: startsWith(github.ref, 'refs/tags/v')
106
+ run: python -m pip install --upgrade "maturin>=1.14,<2" uv
107
+
108
+ - name: Build and publish source distribution
109
+ if: matrix.name == 'linux-x86_64' && startsWith(github.ref, 'refs/tags/v')
110
+ shell: bash
111
+ run: |
112
+ maturin sdist --out target/dist
113
+ uv publish target/dist/*.tar.gz
114
+
115
+ - name: Publish wheel
116
+ if: startsWith(github.ref, 'refs/tags/v')
117
+ shell: bash
118
+ run: uv publish target/wheels/*.whl
@@ -0,0 +1,15 @@
1
+ .venv/
2
+ __pycache__/
3
+ *.py[cod]
4
+ *.egg-info/
5
+ .pytest_cache/
6
+ .mypy_cache/
7
+ .ruff_cache/
8
+ *.db
9
+ *.wal
10
+ *.shm
11
+ data/
12
+ dist/
13
+ build/
14
+ target/
15
+ *.so
@@ -0,0 +1,299 @@
1
+ # This file is automatically @generated by Cargo.
2
+ # It is not intended for manual editing.
3
+ version = 4
4
+
5
+ [[package]]
6
+ name = "ahash"
7
+ version = "0.8.12"
8
+ source = "registry+https://github.com/rust-lang/crates.io-index"
9
+ checksum = "5a15f179cd60c4584b8a8c596927aadc462e27f2ca70c04e0071964a73ba7a75"
10
+ dependencies = [
11
+ "cfg-if",
12
+ "once_cell",
13
+ "version_check",
14
+ "zerocopy",
15
+ ]
16
+
17
+ [[package]]
18
+ name = "bitflags"
19
+ version = "2.13.1"
20
+ source = "registry+https://github.com/rust-lang/crates.io-index"
21
+ checksum = "b588b76d00fde79687d7646a9b5bdf3cc0f655e0bbd080335a95d7e96f3587da"
22
+
23
+ [[package]]
24
+ name = "cc"
25
+ version = "1.3.0"
26
+ source = "registry+https://github.com/rust-lang/crates.io-index"
27
+ checksum = "c89588d05638b5b4594a3348a2d6c20277e43a7f5c5202b05cc56888475a47b8"
28
+ dependencies = [
29
+ "find-msvc-tools",
30
+ "shlex",
31
+ ]
32
+
33
+ [[package]]
34
+ name = "cfg-if"
35
+ version = "1.0.4"
36
+ source = "registry+https://github.com/rust-lang/crates.io-index"
37
+ checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801"
38
+
39
+ [[package]]
40
+ name = "fallible-iterator"
41
+ version = "0.3.0"
42
+ source = "registry+https://github.com/rust-lang/crates.io-index"
43
+ checksum = "2acce4a10f12dc2fb14a218589d4f1f62ef011b2d0cc4b3cb1bba8e94da14649"
44
+
45
+ [[package]]
46
+ name = "fallible-streaming-iterator"
47
+ version = "0.1.9"
48
+ source = "registry+https://github.com/rust-lang/crates.io-index"
49
+ checksum = "7360491ce676a36bf9bb3c56c1aa791658183a54d2744120f27285738d90465a"
50
+
51
+ [[package]]
52
+ name = "find-msvc-tools"
53
+ version = "0.1.9"
54
+ source = "registry+https://github.com/rust-lang/crates.io-index"
55
+ checksum = "5baebc0774151f905a1a2cc41989300b1e6fbb29aff0ceffa1064fdd3088d582"
56
+
57
+ [[package]]
58
+ name = "hashbrown"
59
+ version = "0.14.5"
60
+ source = "registry+https://github.com/rust-lang/crates.io-index"
61
+ checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1"
62
+ dependencies = [
63
+ "ahash",
64
+ ]
65
+
66
+ [[package]]
67
+ name = "hashlink"
68
+ version = "0.9.1"
69
+ source = "registry+https://github.com/rust-lang/crates.io-index"
70
+ checksum = "6ba4ff7128dee98c7dc9794b6a411377e1404dba1c97deb8d1a55297bd25d8af"
71
+ dependencies = [
72
+ "hashbrown",
73
+ ]
74
+
75
+ [[package]]
76
+ name = "heck"
77
+ version = "0.5.0"
78
+ source = "registry+https://github.com/rust-lang/crates.io-index"
79
+ checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea"
80
+
81
+ [[package]]
82
+ name = "libc"
83
+ version = "0.2.186"
84
+ source = "registry+https://github.com/rust-lang/crates.io-index"
85
+ checksum = "68ab91017fe16c622486840e4c83c9a37afeff978bd239b5293d61ece587de66"
86
+
87
+ [[package]]
88
+ name = "libsqlite3-sys"
89
+ version = "0.30.1"
90
+ source = "registry+https://github.com/rust-lang/crates.io-index"
91
+ checksum = "2e99fb7a497b1e3339bc746195567ed8d3e24945ecd636e3619d20b9de9e9149"
92
+ dependencies = [
93
+ "cc",
94
+ "pkg-config",
95
+ "vcpkg",
96
+ ]
97
+
98
+ [[package]]
99
+ name = "localqueue"
100
+ version = "1.0.1"
101
+ dependencies = [
102
+ "pyo3",
103
+ "rusqlite",
104
+ "thiserror",
105
+ ]
106
+
107
+ [[package]]
108
+ name = "once_cell"
109
+ version = "1.21.4"
110
+ source = "registry+https://github.com/rust-lang/crates.io-index"
111
+ checksum = "9f7c3e4beb33f85d45ae3e3a1792185706c8e16d043238c593331cc7cd313b50"
112
+
113
+ [[package]]
114
+ name = "pkg-config"
115
+ version = "0.3.33"
116
+ source = "registry+https://github.com/rust-lang/crates.io-index"
117
+ checksum = "19f132c84eca552bf34cab8ec81f1c1dcc229b811638f9d283dceabe58c5569e"
118
+
119
+ [[package]]
120
+ name = "portable-atomic"
121
+ version = "1.14.0"
122
+ source = "registry+https://github.com/rust-lang/crates.io-index"
123
+ checksum = "3d20d5497ef88037a52ff98267d066e7f11fcc5e99bbfbd58a42336193aacec3"
124
+
125
+ [[package]]
126
+ name = "proc-macro2"
127
+ version = "1.0.107"
128
+ source = "registry+https://github.com/rust-lang/crates.io-index"
129
+ checksum = "985e7ec9bb745e6ce6535b544d84d6cd6f7ad8bd711c398938ae983b91a766d9"
130
+ dependencies = [
131
+ "unicode-ident",
132
+ ]
133
+
134
+ [[package]]
135
+ name = "pyo3"
136
+ version = "0.29.0"
137
+ source = "registry+https://github.com/rust-lang/crates.io-index"
138
+ checksum = "cd274650b21d4bfc26a0a47587962c1edb425f69287324355cd040c3ea66071c"
139
+ dependencies = [
140
+ "libc",
141
+ "once_cell",
142
+ "portable-atomic",
143
+ "pyo3-build-config",
144
+ "pyo3-ffi",
145
+ "pyo3-macros",
146
+ ]
147
+
148
+ [[package]]
149
+ name = "pyo3-build-config"
150
+ version = "0.29.0"
151
+ source = "registry+https://github.com/rust-lang/crates.io-index"
152
+ checksum = "c5e2a7d2f0d013342f295c048ad19237add5154a55b1c5a254c0ec93d4109078"
153
+ dependencies = [
154
+ "target-lexicon",
155
+ ]
156
+
157
+ [[package]]
158
+ name = "pyo3-ffi"
159
+ version = "0.29.0"
160
+ source = "registry+https://github.com/rust-lang/crates.io-index"
161
+ checksum = "ca85c467da1bbc8d866eea5deff9cf29ea5f7785054a17da36e65bda9c05845b"
162
+ dependencies = [
163
+ "libc",
164
+ "pyo3-build-config",
165
+ ]
166
+
167
+ [[package]]
168
+ name = "pyo3-macros"
169
+ version = "0.29.0"
170
+ source = "registry+https://github.com/rust-lang/crates.io-index"
171
+ checksum = "9ac53762fd065daa3194dd09337a38bd793a188100fd1a9304c4ab312d901771"
172
+ dependencies = [
173
+ "proc-macro2",
174
+ "pyo3-macros-backend",
175
+ "quote",
176
+ "syn",
177
+ ]
178
+
179
+ [[package]]
180
+ name = "pyo3-macros-backend"
181
+ version = "0.29.0"
182
+ source = "registry+https://github.com/rust-lang/crates.io-index"
183
+ checksum = "4ca3a1557399783172dc5bf39cfca835157732532cba56b71d2292161e53b362"
184
+ dependencies = [
185
+ "heck",
186
+ "proc-macro2",
187
+ "quote",
188
+ "syn",
189
+ ]
190
+
191
+ [[package]]
192
+ name = "quote"
193
+ version = "1.0.47"
194
+ source = "registry+https://github.com/rust-lang/crates.io-index"
195
+ checksum = "1fbf4db142a473a8d80c26bbf18454ed458bf8d26c8219c331daecfdbd079001"
196
+ dependencies = [
197
+ "proc-macro2",
198
+ ]
199
+
200
+ [[package]]
201
+ name = "rusqlite"
202
+ version = "0.32.1"
203
+ source = "registry+https://github.com/rust-lang/crates.io-index"
204
+ checksum = "7753b721174eb8ff87a9a0e799e2d7bc3749323e773db92e0984debb00019d6e"
205
+ dependencies = [
206
+ "bitflags",
207
+ "fallible-iterator",
208
+ "fallible-streaming-iterator",
209
+ "hashlink",
210
+ "libsqlite3-sys",
211
+ "smallvec",
212
+ ]
213
+
214
+ [[package]]
215
+ name = "shlex"
216
+ version = "2.0.1"
217
+ source = "registry+https://github.com/rust-lang/crates.io-index"
218
+ checksum = "f8fadd59c855ef2080decdef8ff161eb6661b86933c9d82e5ba29dc602a55aba"
219
+
220
+ [[package]]
221
+ name = "smallvec"
222
+ version = "1.15.2"
223
+ source = "registry+https://github.com/rust-lang/crates.io-index"
224
+ checksum = "8ed6a63f02c8539c91a8685a86f4099661ba3da017932f6ebbea6de3f0fa7c90"
225
+
226
+ [[package]]
227
+ name = "syn"
228
+ version = "2.0.119"
229
+ source = "registry+https://github.com/rust-lang/crates.io-index"
230
+ checksum = "872831b642d1a07999a962a351ed35b955ea2cfc8f3862091e2a240a84f17297"
231
+ dependencies = [
232
+ "proc-macro2",
233
+ "quote",
234
+ "unicode-ident",
235
+ ]
236
+
237
+ [[package]]
238
+ name = "target-lexicon"
239
+ version = "0.13.5"
240
+ source = "registry+https://github.com/rust-lang/crates.io-index"
241
+ checksum = "adb6935a6f5c20170eeceb1a3835a49e12e19d792f6dd344ccc76a985ca5a6ca"
242
+
243
+ [[package]]
244
+ name = "thiserror"
245
+ version = "1.0.69"
246
+ source = "registry+https://github.com/rust-lang/crates.io-index"
247
+ checksum = "b6aaf5339b578ea85b50e080feb250a3e8ae8cfcdff9a461c9ec2904bc923f52"
248
+ dependencies = [
249
+ "thiserror-impl",
250
+ ]
251
+
252
+ [[package]]
253
+ name = "thiserror-impl"
254
+ version = "1.0.69"
255
+ source = "registry+https://github.com/rust-lang/crates.io-index"
256
+ checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1"
257
+ dependencies = [
258
+ "proc-macro2",
259
+ "quote",
260
+ "syn",
261
+ ]
262
+
263
+ [[package]]
264
+ name = "unicode-ident"
265
+ version = "1.0.24"
266
+ source = "registry+https://github.com/rust-lang/crates.io-index"
267
+ checksum = "e6e4313cd5fcd3dad5cafa179702e2b244f760991f45397d14d4ebf38247da75"
268
+
269
+ [[package]]
270
+ name = "vcpkg"
271
+ version = "0.2.15"
272
+ source = "registry+https://github.com/rust-lang/crates.io-index"
273
+ checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426"
274
+
275
+ [[package]]
276
+ name = "version_check"
277
+ version = "0.9.5"
278
+ source = "registry+https://github.com/rust-lang/crates.io-index"
279
+ checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a"
280
+
281
+ [[package]]
282
+ name = "zerocopy"
283
+ version = "0.8.54"
284
+ source = "registry+https://github.com/rust-lang/crates.io-index"
285
+ checksum = "b7cbbc0a705a0fd05cc3676525980d2bf5a9bc4adac6d6475209a7887cf59d19"
286
+ dependencies = [
287
+ "zerocopy-derive",
288
+ ]
289
+
290
+ [[package]]
291
+ name = "zerocopy-derive"
292
+ version = "0.8.54"
293
+ source = "registry+https://github.com/rust-lang/crates.io-index"
294
+ checksum = "e2e817b7b52d0c7358d3246da9d69935ebb18116b2b102b4230dac079b4862f5"
295
+ dependencies = [
296
+ "proc-macro2",
297
+ "quote",
298
+ "syn",
299
+ ]
@@ -0,0 +1,15 @@
1
+ [package]
2
+ name = "localqueue"
3
+ version = "1.0.1"
4
+ edition = "2021"
5
+ rust-version = "1.83"
6
+ readme = "README.md"
7
+
8
+ [lib]
9
+ name = "localqueue"
10
+ crate-type = ["cdylib"]
11
+
12
+ [dependencies]
13
+ pyo3 = { version = "0.29", features = ["extension-module"] }
14
+ rusqlite = { version = "0.32", features = ["bundled"] }
15
+ thiserror = "1.0"