multiedge-relay 0.5.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 (187) hide show
  1. multiedge_relay-0.5.0/.github/copilot-instructions.md +26 -0
  2. multiedge_relay-0.5.0/.github/workflows/ci.yml +50 -0
  3. multiedge_relay-0.5.0/.github/workflows/release.yml +37 -0
  4. multiedge_relay-0.5.0/.gitignore +22 -0
  5. multiedge_relay-0.5.0/.hypothesis/.gitignore +9 -0
  6. multiedge_relay-0.5.0/.hypothesis/constants/06249be8e61f3f7a +4 -0
  7. multiedge_relay-0.5.0/.hypothesis/constants/076de148ac672c93 +4 -0
  8. multiedge_relay-0.5.0/.hypothesis/constants/1278a345f455b7df +4 -0
  9. multiedge_relay-0.5.0/.hypothesis/constants/19e4cfe654576a55 +4 -0
  10. multiedge_relay-0.5.0/.hypothesis/constants/1b22fd7aadfe44b6 +4 -0
  11. multiedge_relay-0.5.0/.hypothesis/constants/1c58368a400f7be0 +4 -0
  12. multiedge_relay-0.5.0/.hypothesis/constants/1d0f3f36815dcac2 +4 -0
  13. multiedge_relay-0.5.0/.hypothesis/constants/2122ee0c87e1bda6 +4 -0
  14. multiedge_relay-0.5.0/.hypothesis/constants/2562f4d115706706 +4 -0
  15. multiedge_relay-0.5.0/.hypothesis/constants/2a7c1e4199f411be +4 -0
  16. multiedge_relay-0.5.0/.hypothesis/constants/2ba6a3e5f1eb5f5a +4 -0
  17. multiedge_relay-0.5.0/.hypothesis/constants/316cc7d4f8c51e48 +4 -0
  18. multiedge_relay-0.5.0/.hypothesis/constants/358961f02304d16f +4 -0
  19. multiedge_relay-0.5.0/.hypothesis/constants/3ecb2bde6b07b5f2 +4 -0
  20. multiedge_relay-0.5.0/.hypothesis/constants/40432abd8e6d1195 +4 -0
  21. multiedge_relay-0.5.0/.hypothesis/constants/456e165186f6f56c +4 -0
  22. multiedge_relay-0.5.0/.hypothesis/constants/47113bc876385751 +4 -0
  23. multiedge_relay-0.5.0/.hypothesis/constants/478f7747c1ed7409 +4 -0
  24. multiedge_relay-0.5.0/.hypothesis/constants/47b4c486823c765f +4 -0
  25. multiedge_relay-0.5.0/.hypothesis/constants/4a2f727f9c213a05 +4 -0
  26. multiedge_relay-0.5.0/.hypothesis/constants/4de687b3835dfeb5 +4 -0
  27. multiedge_relay-0.5.0/.hypothesis/constants/503be4182c70fad2 +4 -0
  28. multiedge_relay-0.5.0/.hypothesis/constants/5738f39367760881 +4 -0
  29. multiedge_relay-0.5.0/.hypothesis/constants/5a7f1b85c6e08bfb +4 -0
  30. multiedge_relay-0.5.0/.hypothesis/constants/5b014fc25ace03ff +4 -0
  31. multiedge_relay-0.5.0/.hypothesis/constants/6147080478539147 +4 -0
  32. multiedge_relay-0.5.0/.hypothesis/constants/61b1c5fc272c0bc2 +4 -0
  33. multiedge_relay-0.5.0/.hypothesis/constants/664955f98d3bf410 +4 -0
  34. multiedge_relay-0.5.0/.hypothesis/constants/6791cb70be7c37a2 +4 -0
  35. multiedge_relay-0.5.0/.hypothesis/constants/6ded921d9a092dc6 +4 -0
  36. multiedge_relay-0.5.0/.hypothesis/constants/6e76992f228568d3 +4 -0
  37. multiedge_relay-0.5.0/.hypothesis/constants/78a00c3887be6174 +4 -0
  38. multiedge_relay-0.5.0/.hypothesis/constants/80c159607300c963 +4 -0
  39. multiedge_relay-0.5.0/.hypothesis/constants/83598369d673adcd +4 -0
  40. multiedge_relay-0.5.0/.hypothesis/constants/87206c07ba7daeef +4 -0
  41. multiedge_relay-0.5.0/.hypothesis/constants/88eab668cd23076e +4 -0
  42. multiedge_relay-0.5.0/.hypothesis/constants/8b0913e4785ba9e0 +4 -0
  43. multiedge_relay-0.5.0/.hypothesis/constants/90ba6257b6a4be60 +4 -0
  44. multiedge_relay-0.5.0/.hypothesis/constants/910df09b59291d17 +4 -0
  45. multiedge_relay-0.5.0/.hypothesis/constants/957a4364cb62cf30 +4 -0
  46. multiedge_relay-0.5.0/.hypothesis/constants/9626473cf694dc08 +4 -0
  47. multiedge_relay-0.5.0/.hypothesis/constants/97c187b4db5ba937 +4 -0
  48. multiedge_relay-0.5.0/.hypothesis/constants/99f4253d2066617d +4 -0
  49. multiedge_relay-0.5.0/.hypothesis/constants/9c664a9630c4dd57 +4 -0
  50. multiedge_relay-0.5.0/.hypothesis/constants/a84661cd3a01c0df +4 -0
  51. multiedge_relay-0.5.0/.hypothesis/constants/aaa553b934505fd4 +4 -0
  52. multiedge_relay-0.5.0/.hypothesis/constants/ac92a72993c94ec3 +4 -0
  53. multiedge_relay-0.5.0/.hypothesis/constants/ad41fdbb685888c8 +4 -0
  54. multiedge_relay-0.5.0/.hypothesis/constants/ae5e9995f3eab4a3 +4 -0
  55. multiedge_relay-0.5.0/.hypothesis/constants/b0ac2ffbedab2186 +4 -0
  56. multiedge_relay-0.5.0/.hypothesis/constants/b396b0e47b4158d4 +4 -0
  57. multiedge_relay-0.5.0/.hypothesis/constants/b4a884f724cf92cd +4 -0
  58. multiedge_relay-0.5.0/.hypothesis/constants/b588b45def3e6d67 +4 -0
  59. multiedge_relay-0.5.0/.hypothesis/constants/b784cae93287e843 +4 -0
  60. multiedge_relay-0.5.0/.hypothesis/constants/bb62fc04664ff5ee +4 -0
  61. multiedge_relay-0.5.0/.hypothesis/constants/bb770130fce17e7d +4 -0
  62. multiedge_relay-0.5.0/.hypothesis/constants/bb93db6422c8fbe9 +4 -0
  63. multiedge_relay-0.5.0/.hypothesis/constants/bf326643c9da2ade +4 -0
  64. multiedge_relay-0.5.0/.hypothesis/constants/c3cf86bd9ae86bff +4 -0
  65. multiedge_relay-0.5.0/.hypothesis/constants/cf6f75dce9f5f8c8 +4 -0
  66. multiedge_relay-0.5.0/.hypothesis/constants/da474050c1a76c42 +4 -0
  67. multiedge_relay-0.5.0/.hypothesis/constants/dde594ae7be821cb +4 -0
  68. multiedge_relay-0.5.0/.hypothesis/constants/e46c5c6ef840adb8 +4 -0
  69. multiedge_relay-0.5.0/.hypothesis/constants/e9e6a0e35e5a3eaa +4 -0
  70. multiedge_relay-0.5.0/.hypothesis/constants/ecc0d9a30d822122 +4 -0
  71. multiedge_relay-0.5.0/.hypothesis/constants/ecc4726657beccaa +4 -0
  72. multiedge_relay-0.5.0/.hypothesis/constants/ecf4a12e6bbc3c25 +4 -0
  73. multiedge_relay-0.5.0/.hypothesis/constants/ef964c44f4e014cc +4 -0
  74. multiedge_relay-0.5.0/.hypothesis/constants/f1aaa150ebdc52b0 +4 -0
  75. multiedge_relay-0.5.0/.hypothesis/constants/fbad0ad0b63b3336 +4 -0
  76. multiedge_relay-0.5.0/.hypothesis/constants/fd7751dc086ba0e3 +4 -0
  77. multiedge_relay-0.5.0/.hypothesis/constants/fd960d75271f84c5 +4 -0
  78. multiedge_relay-0.5.0/.hypothesis/constants/ffc5d3bdbbfc4a3a +4 -0
  79. multiedge_relay-0.5.0/.hypothesis/tmp/tmp0okuvyf2 +0 -0
  80. multiedge_relay-0.5.0/.hypothesis/tmp/tmp0pnyfyls +0 -0
  81. multiedge_relay-0.5.0/.hypothesis/tmp/tmp1odyu__n +0 -0
  82. multiedge_relay-0.5.0/.hypothesis/tmp/tmp1yl9q0nr +0 -0
  83. multiedge_relay-0.5.0/.hypothesis/tmp/tmp2ch54p6r +0 -0
  84. multiedge_relay-0.5.0/.hypothesis/tmp/tmp40iqz8t4 +0 -0
  85. multiedge_relay-0.5.0/.hypothesis/tmp/tmp4vebkjik +0 -0
  86. multiedge_relay-0.5.0/.hypothesis/tmp/tmp6hyu0vd2 +0 -0
  87. multiedge_relay-0.5.0/.hypothesis/tmp/tmp6nrhbwxq +0 -0
  88. multiedge_relay-0.5.0/.hypothesis/tmp/tmp6zs_aung +0 -0
  89. multiedge_relay-0.5.0/.hypothesis/tmp/tmp7_4hg22r +0 -0
  90. multiedge_relay-0.5.0/.hypothesis/tmp/tmp82mkc8y5 +0 -0
  91. multiedge_relay-0.5.0/.hypothesis/tmp/tmp8j7v6dgg +0 -0
  92. multiedge_relay-0.5.0/.hypothesis/tmp/tmp_7fsdxev +0 -0
  93. multiedge_relay-0.5.0/.hypothesis/tmp/tmpa_ceilzq +0 -0
  94. multiedge_relay-0.5.0/.hypothesis/tmp/tmpbefutqwo +0 -0
  95. multiedge_relay-0.5.0/.hypothesis/tmp/tmpd_e5wlx_ +0 -0
  96. multiedge_relay-0.5.0/.hypothesis/tmp/tmpgzy60fn4 +0 -0
  97. multiedge_relay-0.5.0/.hypothesis/tmp/tmpih8s3g3c +0 -0
  98. multiedge_relay-0.5.0/.hypothesis/tmp/tmpknxu3u9k +0 -0
  99. multiedge_relay-0.5.0/.hypothesis/tmp/tmpl2bb8roc +0 -0
  100. multiedge_relay-0.5.0/.hypothesis/tmp/tmpm6tk9mxu +0 -0
  101. multiedge_relay-0.5.0/.hypothesis/tmp/tmpofcppitv +0 -0
  102. multiedge_relay-0.5.0/.hypothesis/tmp/tmpp9ad2pa5 +0 -0
  103. multiedge_relay-0.5.0/.hypothesis/tmp/tmpplb3bwbb +0 -0
  104. multiedge_relay-0.5.0/.hypothesis/tmp/tmppslni351 +0 -0
  105. multiedge_relay-0.5.0/.hypothesis/tmp/tmppt49epyj +0 -0
  106. multiedge_relay-0.5.0/.hypothesis/tmp/tmpq_mj2qo0 +0 -0
  107. multiedge_relay-0.5.0/.hypothesis/tmp/tmpqbd4gjnf +0 -0
  108. multiedge_relay-0.5.0/.hypothesis/tmp/tmpqmf5qnsm +0 -0
  109. multiedge_relay-0.5.0/.hypothesis/tmp/tmpsrpuamt2 +0 -0
  110. multiedge_relay-0.5.0/.hypothesis/tmp/tmptk3ub46g +0 -0
  111. multiedge_relay-0.5.0/.hypothesis/tmp/tmpwgamxsxh +0 -0
  112. multiedge_relay-0.5.0/.hypothesis/tmp/tmpz7_s_pb6 +0 -0
  113. multiedge_relay-0.5.0/.hypothesis/tmp/tmpzpcokwzu +0 -0
  114. multiedge_relay-0.5.0/.hypothesis/unicode_data/14.0.0/charmap.json.gz +0 -0
  115. multiedge_relay-0.5.0/.hypothesis/unicode_data/14.0.0/codec-v2-utf-8.json.gz +0 -0
  116. multiedge_relay-0.5.0/.hypothesis/unicode_data/15.0.0/charmap.json.gz +0 -0
  117. multiedge_relay-0.5.0/.hypothesis/unicode_data/15.0.0/codec-v2-utf-8.json.gz +0 -0
  118. multiedge_relay-0.5.0/.hypothesis/unicode_data/16.0.0/charmap.json.gz +0 -0
  119. multiedge_relay-0.5.0/.hypothesis/unicode_data/16.0.0/codec-v2-utf-8.json.gz +0 -0
  120. multiedge_relay-0.5.0/.python-version +1 -0
  121. multiedge_relay-0.5.0/CHANGELOG.md +196 -0
  122. multiedge_relay-0.5.0/CLAUDE.md +134 -0
  123. multiedge_relay-0.5.0/CONTRIBUTING.md +33 -0
  124. multiedge_relay-0.5.0/LICENSE +202 -0
  125. multiedge_relay-0.5.0/PKG-INFO +487 -0
  126. multiedge_relay-0.5.0/README.md +455 -0
  127. multiedge_relay-0.5.0/examples/prod_demo/consumer_rebalance.py +177 -0
  128. multiedge_relay-0.5.0/examples/prod_demo/generate_demo_csv.py +243 -0
  129. multiedge_relay-0.5.0/examples/prod_demo/producer_rebalance.py +171 -0
  130. multiedge_relay-0.5.0/examples/prod_demo/setup_demo.py +215 -0
  131. multiedge_relay-0.5.0/examples/publish_batch_with_dlq.py +42 -0
  132. multiedge_relay-0.5.0/examples/publish_minimal.py +30 -0
  133. multiedge_relay-0.5.0/examples/publish_rebalance_from_csv.py +85 -0
  134. multiedge_relay-0.5.0/examples/seal_publish.py +47 -0
  135. multiedge_relay-0.5.0/examples/subscribe_catchup.py +43 -0
  136. multiedge_relay-0.5.0/examples/subscribe_exactly_once.py +57 -0
  137. multiedge_relay-0.5.0/examples/subscribe_rebalance_to_csv.py +90 -0
  138. multiedge_relay-0.5.0/examples/unseal_subscribe.py +54 -0
  139. multiedge_relay-0.5.0/examples/webhook_fastapi.py +40 -0
  140. multiedge_relay-0.5.0/examples/webhook_flask.py +38 -0
  141. multiedge_relay-0.5.0/pyproject.toml +101 -0
  142. multiedge_relay-0.5.0/src/multiedge_relay/__init__.py +57 -0
  143. multiedge_relay-0.5.0/src/multiedge_relay/_http.py +67 -0
  144. multiedge_relay-0.5.0/src/multiedge_relay/_retry.py +193 -0
  145. multiedge_relay-0.5.0/src/multiedge_relay/cli.py +295 -0
  146. multiedge_relay-0.5.0/src/multiedge_relay/cursor.py +139 -0
  147. multiedge_relay-0.5.0/src/multiedge_relay/dlq.py +230 -0
  148. multiedge_relay-0.5.0/src/multiedge_relay/exceptions.py +158 -0
  149. multiedge_relay-0.5.0/src/multiedge_relay/models.py +115 -0
  150. multiedge_relay-0.5.0/src/multiedge_relay/publisher.py +263 -0
  151. multiedge_relay-0.5.0/src/multiedge_relay/publisher_async.py +166 -0
  152. multiedge_relay-0.5.0/src/multiedge_relay/py.typed +0 -0
  153. multiedge_relay-0.5.0/src/multiedge_relay/sealed/__init__.py +46 -0
  154. multiedge_relay-0.5.0/src/multiedge_relay/sealed/core.py +282 -0
  155. multiedge_relay-0.5.0/src/multiedge_relay/sealed/keys.py +364 -0
  156. multiedge_relay-0.5.0/src/multiedge_relay/sealed/registry.py +350 -0
  157. multiedge_relay-0.5.0/src/multiedge_relay/state_sqlite.py +411 -0
  158. multiedge_relay-0.5.0/src/multiedge_relay/subscriber.py +513 -0
  159. multiedge_relay-0.5.0/src/multiedge_relay/ulid.py +61 -0
  160. multiedge_relay-0.5.0/src/multiedge_relay/webhook.py +136 -0
  161. multiedge_relay-0.5.0/tasks/todo.md +55 -0
  162. multiedge_relay-0.5.0/tests/conftest.py +40 -0
  163. multiedge_relay-0.5.0/tests/fake_relay.py +219 -0
  164. multiedge_relay-0.5.0/tests/fixtures/sealed_v1_recipient.key.json +13 -0
  165. multiedge_relay-0.5.0/tests/fixtures/sealed_v1_vector.json +44 -0
  166. multiedge_relay-0.5.0/tests/fixtures/synthetic_rebalance.csv +10 -0
  167. multiedge_relay-0.5.0/tests/test_cli.py +115 -0
  168. multiedge_relay-0.5.0/tests/test_cli_sealed.py +135 -0
  169. multiedge_relay-0.5.0/tests/test_cursor.py +139 -0
  170. multiedge_relay-0.5.0/tests/test_dlq.py +117 -0
  171. multiedge_relay-0.5.0/tests/test_examples_rebalance.py +100 -0
  172. multiedge_relay-0.5.0/tests/test_http_defaults.py +13 -0
  173. multiedge_relay-0.5.0/tests/test_models.py +84 -0
  174. multiedge_relay-0.5.0/tests/test_prod_demo.py +382 -0
  175. multiedge_relay-0.5.0/tests/test_publisher.py +326 -0
  176. multiedge_relay-0.5.0/tests/test_publisher_async.py +166 -0
  177. multiedge_relay-0.5.0/tests/test_retry.py +150 -0
  178. multiedge_relay-0.5.0/tests/test_sealed_core.py +326 -0
  179. multiedge_relay-0.5.0/tests/test_sealed_import.py +88 -0
  180. multiedge_relay-0.5.0/tests/test_sealed_integration.py +369 -0
  181. multiedge_relay-0.5.0/tests/test_sealed_keys.py +139 -0
  182. multiedge_relay-0.5.0/tests/test_sealed_wrappers.py +125 -0
  183. multiedge_relay-0.5.0/tests/test_state_sqlite.py +403 -0
  184. multiedge_relay-0.5.0/tests/test_subscriber.py +370 -0
  185. multiedge_relay-0.5.0/tests/test_ulid.py +29 -0
  186. multiedge_relay-0.5.0/tests/test_webhook.py +193 -0
  187. multiedge_relay-0.5.0/uv.lock +1449 -0
@@ -0,0 +1,26 @@
1
+ # GitHub Copilot instructions — multiedge-relay (Python SDK)
2
+
3
+ See [../CLAUDE.md](../CLAUDE.md) for the full engineering contract — single source of
4
+ truth for both agents, kept in sync in the same commit.
5
+
6
+ Non-negotiables: never-silent-loss error taxonomy; at-least-once subscriber with atomic
7
+ file cursor committed after the callback; catch-up/gap-fill ordered by relay `sequence`;
8
+ one shared `RetryPolicy` (`_retry.py`) for all three call sites, bounded by WALL CLOCK
9
+ (publishers: `retry_budget_seconds=90`, long enough to ride out a relay deployment;
10
+ subscriber catch-up: unbounded, bounded by `stop()`, every attempt reported via
11
+ `on_error`), 8 s per-sleep cap, `Retry-After` honoured, terminal statuses never retried;
12
+ exactly-once *processing* via `SqliteStateStore` (marker committed atomically with
13
+ handler success; watermark + `signal_id` ledger invariant; loud `StateStoreCorruptError`,
14
+ never silent reset; never claim exactly-once *delivery*);
15
+ HMAC verify over `"{ts}." + raw_body` with constant-time compare and 5-min freshness;
16
+ TDD; `uv` tooling; ruff + black + mypy --strict green before "done"; runtime deps only
17
+ httpx + pydantic (extras: `[webpubsub]`, `[sealed]`); public-repo hygiene (no internal
18
+ business content or credentials).
19
+
20
+ Sealed mode (relay ADR 0004): all crypto lives in `multiedge_relay/sealed/` behind the
21
+ `[sealed]` extra (`cryptography>=47`); core NEVER imports it (CI core-only job proves
22
+ it). The sealed envelope v1 wire format is FROZEN by the committed vector
23
+ `tests/fixtures/sealed_v1_vector.json` — changes require `sealed: "v2"` + a new vector.
24
+ Sealing happens in `prepare_signal` after ULID assignment and before DLQ spill; fetched
25
+ key bundles are always re-fingerprinted locally (the relay is untrusted for key
26
+ authenticity); never log or serialize private key material.
@@ -0,0 +1,50 @@
1
+ name: CI
2
+
3
+ on:
4
+ push:
5
+ branches: [main]
6
+ pull_request:
7
+
8
+ jobs:
9
+ test:
10
+ name: py${{ matrix.python-version }} / ${{ matrix.os }}
11
+ runs-on: ${{ matrix.os }}
12
+ strategy:
13
+ fail-fast: false
14
+ matrix:
15
+ os: [ubuntu-latest]
16
+ python-version: ["3.11", "3.12", "3.13", "3.14"]
17
+ include:
18
+ - os: windows-latest
19
+ python-version: "3.14"
20
+ # Core must stay importable and green WITHOUT the crypto extra —
21
+ # proves sealed mode never became a hard dependency.
22
+ - os: ubuntu-latest
23
+ python-version: "3.14"
24
+ core-only: true
25
+ steps:
26
+ - uses: actions/checkout@v4
27
+
28
+ - name: Install uv
29
+ uses: astral-sh/setup-uv@v4
30
+ with:
31
+ python-version: ${{ matrix.python-version }}
32
+
33
+ - name: Sync dependencies
34
+ run: uv sync
35
+
36
+ - name: Remove crypto dependency (core-only job)
37
+ if: matrix.core-only
38
+ run: uv pip uninstall cryptography
39
+
40
+ - name: Lint (ruff)
41
+ run: uv run ruff check .
42
+
43
+ - name: Format check (black)
44
+ run: uv run black --check .
45
+
46
+ - name: Type check (mypy --strict)
47
+ run: uv run mypy --strict src
48
+
49
+ - name: Tests
50
+ run: uv run pytest -m "not integration" --cov=multiedge_relay --cov-report=term-missing
@@ -0,0 +1,37 @@
1
+ name: Release
2
+
3
+ on:
4
+ push:
5
+ tags: ["v*"]
6
+
7
+ jobs:
8
+ build:
9
+ runs-on: ubuntu-latest
10
+ steps:
11
+ - uses: actions/checkout@v4
12
+
13
+ - name: Install uv
14
+ uses: astral-sh/setup-uv@v4
15
+
16
+ - name: Build sdist and wheel
17
+ run: uv build
18
+
19
+ - uses: actions/upload-artifact@v4
20
+ with:
21
+ name: dist
22
+ path: dist/
23
+
24
+ publish:
25
+ needs: build
26
+ runs-on: ubuntu-latest
27
+ environment: pypi
28
+ permissions:
29
+ id-token: write # PyPI trusted publishing (OIDC) — no API token stored
30
+ steps:
31
+ - uses: actions/download-artifact@v4
32
+ with:
33
+ name: dist
34
+ path: dist/
35
+
36
+ - name: Publish to PyPI
37
+ uses: pypa/gh-action-pypi-publish@release/v1
@@ -0,0 +1,22 @@
1
+ # Python
2
+ __pycache__/
3
+ *.py[cod]
4
+ .venv/
5
+ dist/
6
+ build/
7
+ *.egg-info/
8
+ .pytest_cache/
9
+ .mypy_cache/
10
+ .ruff_cache/
11
+ .coverage
12
+ htmlcov/
13
+
14
+ # Environments & secrets
15
+ .env
16
+ .env.*
17
+ !.env.example
18
+
19
+ # OS / editor
20
+ .DS_Store
21
+ Thumbs.db
22
+ .vs/
@@ -0,0 +1,9 @@
1
+ # This .gitignore file was automatically created by Hypothesis. Hypothesis gitignores
2
+ # .hypothesis by default, because we generally recommend that .hypothesis not be checked
3
+ # into version control.
4
+ #
5
+ # If you *would* like to check .hypothesis into version control, you should delete this
6
+ # file. Hypothesis will not re-create this .gitignore unless .hypothesis is deleted (and
7
+ # if it does, that's a bug - please report it!)
8
+
9
+ *
@@ -0,0 +1,4 @@
1
+ # file: C:\src\RocketEdge.com\multiedge-relay-python\src\multiedge_relay\subscriber.py
2
+ # hypothesis_version: 6.165.9
3
+
4
+ [1.0, 5.0, 200, 401, 403, 500, 10000, '/v1/signals', '/v1/ws/negotiate', 'Retry-After', 'catchup', 'cursor', 'earliest', 'gapfill', 'group-message', 'latest', 'limit', 'live', 'poll', 'signals', 'since_sequence', 'strategy_id', 'unknown error', 'url', 'webpubsub']
@@ -0,0 +1,4 @@
1
+ # file: C:\src\RocketEdge.com\multiedge-relay-python\src\multiedge_relay\_retry.py
2
+ # hypothesis_version: 6.165.9
3
+
4
+ [0.5, 2.0, 7.5, 8.0, 300.0, 408, 429, 500, 599]
@@ -0,0 +1,4 @@
1
+ # file: C:\src\RocketEdge.com\multiedge-relay-python\src\multiedge_relay\__init__.py
2
+ # hypothesis_version: 6.165.9
3
+
4
+ ['0.5.0', 'AsyncSignalPublisher', 'AuthError', 'BufferFullError', 'CursorCorruptError', 'CursorStore', 'DLQEntry', 'DLQResendReport', 'DiskDLQ', 'FileCursorStore', 'MultiEdgeError', 'PublishFailed', 'ReceivedSignal', 'Signal', 'SignalAck', 'SignalMeta', 'SignalPublisher', 'SignalSubscriber', 'SqliteStateStore', 'ValidationRejected', '__version__', 'new_ulid', 'verify_signature']
@@ -0,0 +1,4 @@
1
+ # file: C:\src\RocketEdge.com\multiedge-relay-python\src\multiedge_relay\_retry.py
2
+ # hypothesis_version: 6.165.9
3
+
4
+ [0.5, 2.0, 408, 429, 500, 599]
@@ -0,0 +1,4 @@
1
+ # file: C:\src\RocketEdge.com\multiedge-relay-python\src\multiedge_relay\publisher_async.py
2
+ # hypothesis_version: 6.165.9
3
+
4
+ [200, 201, '/v1/signals', 'Retry-After', 'json', 'unknown error']
@@ -0,0 +1,4 @@
1
+ # file: C:\src\RocketEdge.com\multiedge-relay-python\examples\subscribe_rebalance_to_csv.py
2
+ # hypothesis_version: 6.165.9
3
+
4
+ ['Action', 'MULTIEDGE_API_KEY', 'NONE', 'PORTFOLIO', 'PlannedExecutionDate', 'SignalDate', 'Ticker', '__main__', 'action', 'earliest', 'mek_your_api_key', 'positions', 'rebalance-demo', 'signal_date', 'ticker', 'utf-8', 'w']
@@ -0,0 +1,4 @@
1
+ # file: C:\src\RocketEdge.com\multiedge-relay-python\src\multiedge_relay\sealed\keys.py
2
+ # hypothesis_version: 6.165.9
3
+
4
+ [384, '+00:00', ',', ':', 'Z', 'ascii', 'bundle', 'created_at', 'ed25519_priv', 'ed25519_pub', 'kid', 'kind', 'mek-v1', 'mldsa65_pub', 'mldsa65_seed', 'mlkem768_ek', 'mlkem768_seed', 'purpose', 'recipient', 'seconds', 'sender', 'utf-8', 'w', 'x25519_priv', 'x25519_pub']
@@ -0,0 +1,4 @@
1
+ # file: C:\src\RocketEdge.com\multiedge-relay-python\src\multiedge_relay\publisher.py
2
+ # hypothesis_version: 6.165.9
3
+
4
+ [200, 201, 401, 403, 413, 422, '/v1/signals', 'Retry-After', 'client_signal_id', 'deduplicated', 'json', 'unknown error']
@@ -0,0 +1,4 @@
1
+ # file: C:\src\RocketEdge.com\multiedge-relay-python\src\multiedge_relay\publisher_async.py
2
+ # hypothesis_version: 6.165.9
3
+
4
+ [200, 201, '/v1/signals', 'Retry-After', 'json', 'unknown error']
@@ -0,0 +1,4 @@
1
+ # file: C:\src\RocketEdge.com\multiedge-relay-python\examples\prod_demo\setup_demo.py
2
+ # hypothesis_version: 6.165.9
3
+
4
+ [30.0, 400, 409, '(already granted)', '--admin-key', '--base-url', '--client-name', '--display-name', '--slug', '/v1/api-keys', '/v1/clients', '/v1/entitlements', '/v1/strategies', '=', 'Authorization', 'Demo Rebalance', 'Demo Subscriber Fund', 'MULTIEDGE_ADMIN_KEY', '__main__', 'api_key', 'client_id', 'clients', 'compliance_profile', 'demo-rebalance', 'display_name', 'endpoint_id', 'entitlement_id', 'ops@example.invalid', 'policy_json', 'rest_pull', 'scope', 'signal_schema_json', 'slug', 'strategies', 'strategy_id', 'transport', 'url', '{}']
@@ -0,0 +1,4 @@
1
+ # file: C:\src\RocketEdge.com\multiedge-relay-python\src\multiedge_relay\models.py
2
+ # hypothesis_version: 6.165.9
3
+
4
+ ['catchup', 'gapfill', 'live']
@@ -0,0 +1,4 @@
1
+ # file: C:\src\RocketEdge.com\multiedge-relay-python\src\multiedge_relay\subscriber.py
2
+ # hypothesis_version: 6.165.9
3
+
4
+ [1.0, 5.0, 200, 401, 403, 500, 10000, '/v1/signals', '/v1/ws/negotiate', 'Retry-After', 'catchup', 'cursor', 'earliest', 'gapfill', 'group-message', 'latest', 'limit', 'live', 'poll', 'signals', 'since_sequence', 'strategy_id', 'unknown error', 'url', 'webpubsub']
@@ -0,0 +1,4 @@
1
+ # file: C:\src\RocketEdge.com\multiedge-relay-python\src\multiedge_relay\dlq.py
2
+ # hypothesis_version: 6.165.9
3
+
4
+ ['%Y-%m-%d', '*.jsonl', ',', '.jsonl.tmp', '.multiedge', ':', '[^A-Za-z0-9._-]', '_', 'a', 'attempts', 'dlq', 'entry_id', 'error', 'failed_at', 'json', 'signal', 'utf-8']
@@ -0,0 +1,4 @@
1
+ # file: C:\src\RocketEdge.com\multiedge-relay-python\examples\prod_demo\consumer_rebalance.py
2
+ # hypothesis_version: 6.165.9
3
+
4
+ [2.0, '--base-url', '--catchup-only', '--out', '--poll-interval', '--strategy-id', '.demo', 'Action', 'BUY', 'INITIALIZE', 'MULTIEDGE_API_KEY', 'NONE', 'PORTFOLIO', 'PlannedExecutionDate', 'SELL', 'SignalDate', 'Ticker', '__main__', 'action', 'cursor', 'poll', 'positions', 'signal_date', 'store_true', 'ticker', 'utf-8', 'w']
@@ -0,0 +1,4 @@
1
+ # file: C:\src\RocketEdge.com\multiedge-relay-python\src\multiedge_relay\publisher_async.py
2
+ # hypothesis_version: 6.165.9
3
+
4
+ [200, 201, '/v1/signals', 'json', 'unknown error']
@@ -0,0 +1,4 @@
1
+ # file: C:\src\RocketEdge.com\multiedge-relay-python\src\multiedge_relay\state_sqlite.py
2
+ # hypothesis_version: 6.165.9
3
+
4
+ [5000, '.multiedge', 'BEGIN IMMEDIATE', 'COMMIT', 'PRAGMA user_version', 'ROLLBACK', 'state.db']
@@ -0,0 +1,4 @@
1
+ # file: C:\src\RocketEdge.com\multiedge-relay-python\src\multiedge_relay\_retry.py
2
+ # hypothesis_version: 6.165.9
3
+
4
+ [0.5, 2.0, 8.0, 90.0, 300.0, 408, 429, 500, 599]
@@ -0,0 +1,4 @@
1
+ # file: C:\src\RocketEdge.com\multiedge-relay-python\src\multiedge_relay\exceptions.py
2
+ # hypothesis_version: 6.165.9
3
+
4
+ ['no DLQ configured']
@@ -0,0 +1,4 @@
1
+ # file: C:\src\RocketEdge.com\multiedge-relay-python\src\multiedge_relay\sealed\registry.py
2
+ # hypothesis_version: 6.165.9
3
+
4
+ ['Sealer', 'Unsealer', 'payload']
@@ -0,0 +1,4 @@
1
+ # file: C:\src\RocketEdge.com\multiedge-relay-python\src\multiedge_relay\sealed\registry.py
2
+ # hypothesis_version: 6.165.9
3
+
4
+ [200, 201, 'Sealer', 'Unsealer', 'bundle', 'key_id', 'keys', 'payload', 'recipient', 'register_sender_key', 'sender']
@@ -0,0 +1,4 @@
1
+ # file: C:\src\RocketEdge.com\multiedge-relay-python\examples\prod_demo\producer_rebalance.py
2
+ # hypothesis_version: 6.165.9
3
+
4
+ [3.0, ' (deduplicated)', '--base-url', '--limit', '--pace', '--strategy-id', '.demo', 'Action', 'MULTIEDGE_API_KEY', 'PORTFOLIO', 'PlannedExecutionDate', 'SignalDate', 'Ticker', '__main__', 'action', 'csv_path', 'dlq', 'kind', 'portfolio_rebalance', 'positions', 'signal_date', 'ticker', 'utf-8']
@@ -0,0 +1,4 @@
1
+ # file: C:\src\RocketEdge.com\multiedge-relay-python\src\multiedge_relay\models.py
2
+ # hypothesis_version: 6.165.9
3
+
4
+ ['catchup', 'gapfill', 'live']
@@ -0,0 +1,4 @@
1
+ # file: C:\src\RocketEdge.com\multiedge-relay-python\src\multiedge_relay\subscriber.py
2
+ # hypothesis_version: 6.165.9
3
+
4
+ [1.0, 5.0, 200, 401, 403, 500, 10000, '/v1/signals', '/v1/ws/negotiate', 'Retry-After', 'catchup', 'cursor', 'earliest', 'gapfill', 'group-message', 'latest', 'limit', 'live', 'poll', 'signals', 'since_sequence', 'strategy_id', 'unknown error', 'url', 'webpubsub']
@@ -0,0 +1,4 @@
1
+ # file: C:\src\RocketEdge.com\multiedge-relay-python\src\multiedge_relay\publisher.py
2
+ # hypothesis_version: 6.165.9
3
+
4
+ [200, 201, 401, 403, 413, 422, '/v1/signals', 'client_signal_id', 'deduplicated', 'json', 'unknown error']
@@ -0,0 +1,4 @@
1
+ # file: C:\src\RocketEdge.com\multiedge-relay-python\examples\prod_demo\setup_demo.py
2
+ # hypothesis_version: 6.165.9
3
+
4
+ [30.0, 400, 409, '(already granted)', '--admin-key', '--base-url', '--client-name', '--display-name', '--slug', '/v1/api-keys', '/v1/clients', '/v1/entitlements', '/v1/strategies', '=', 'Authorization', 'Demo Rebalance', 'Demo Subscriber Fund', 'MULTIEDGE_ADMIN_KEY', '__main__', 'api_key', 'client_id', 'clients', 'compliance_profile', 'demo-rebalance', 'display_name', 'endpoint_id', 'entitlement_id', 'ops@example.invalid', 'policy_json', 'rest_pull', 'scope', 'signal_schema_json', 'slug', 'strategies', 'strategy_id', 'transport', 'url', '{}']
@@ -0,0 +1,4 @@
1
+ # file: C:\src\RocketEdge.com\multiedge-relay-python\src\multiedge_relay\__init__.py
2
+ # hypothesis_version: 6.165.9
3
+
4
+ ['0.1.1', 'AsyncSignalPublisher', 'AuthError', 'BufferFullError', 'CursorCorruptError', 'CursorStore', 'DLQEntry', 'DLQResendReport', 'DiskDLQ', 'FileCursorStore', 'MultiEdgeError', 'PublishFailed', 'ReceivedSignal', 'Signal', 'SignalAck', 'SignalMeta', 'SignalPublisher', 'SignalSubscriber', 'SqliteStateStore', 'ValidationRejected', '__version__', 'new_ulid', 'verify_signature']
@@ -0,0 +1,4 @@
1
+ # file: C:\src\RocketEdge.com\multiedge-relay-python\src\multiedge_relay\__init__.py
2
+ # hypothesis_version: 6.165.9
3
+
4
+ ['0.5.0', 'AsyncSignalPublisher', 'AuthError', 'BufferFullError', 'CursorCorruptError', 'CursorStore', 'DLQEntry', 'DLQResendReport', 'DiskDLQ', 'FileCursorStore', 'MultiEdgeError', 'PublishFailed', 'ReceivedSignal', 'Signal', 'SignalAck', 'SignalMeta', 'SignalPublisher', 'SignalSubscriber', 'SqliteStateStore', 'ValidationRejected', '__version__', 'new_ulid', 'verify_signature']
@@ -0,0 +1,4 @@
1
+ # file: C:\src\RocketEdge.com\multiedge-relay-python\src\multiedge_relay\sealed\core.py
2
+ # hypothesis_version: 6.165.9
3
+
4
+ [b'\x00', b'multiedge-sealed-v1', b'multiedge-sealed-v1-kek', 'aead', 'alg', 'ascii', 'chacha20poly1305', 'ct', 'ed25519', 'ed25519+mldsa65', 'ed25519_pub', 'epk', 'hkdf-sha256', 'kdf', 'kem', 'kem_ct', 'kid', 'mldsa65_pub', 'mlkem768_ek', 'nonce', 'recipients', 'sealed', 'sender_kid', 'sig', 'sig_pq', 'v1', 'wrap', 'x25519-mlkem768', 'x25519_pub']
@@ -0,0 +1,4 @@
1
+ # file: C:\src\RocketEdge.com\multiedge-relay-python\src\multiedge_relay\_retry.py
2
+ # hypothesis_version: 6.165.9
3
+
4
+ [0.5, 2.0, 8.0, 90.0, 300.0, 408, 429, 500, 599]
@@ -0,0 +1,4 @@
1
+ # file: C:\src\RocketEdge.com\multiedge-relay-python\src\multiedge_relay\sealed\__init__.py
2
+ # hypothesis_version: 6.165.9
3
+
4
+ ['RecipientKeypair', 'Sealer', 'SenderKeypair', 'Unsealer', 'bundle_fingerprint', 'canonical_json', 'seal', 'unseal']
@@ -0,0 +1,4 @@
1
+ # file: C:\src\RocketEdge.com\multiedge-relay-python\src\multiedge_relay\__init__.py
2
+ # hypothesis_version: 6.165.9
3
+
4
+ ['0.1.0', 'AsyncSignalPublisher', 'AuthError', 'BufferFullError', 'CursorCorruptError', 'CursorStore', 'DLQEntry', 'DLQResendReport', 'DiskDLQ', 'FileCursorStore', 'MultiEdgeError', 'PublishFailed', 'ReceivedSignal', 'Signal', 'SignalAck', 'SignalMeta', 'SignalPublisher', 'SignalSubscriber', 'ValidationRejected', '__version__', 'new_ulid', 'verify_signature']
@@ -0,0 +1,4 @@
1
+ # file: C:\src\RocketEdge.com\multiedge-relay-python\src\multiedge_relay\publisher.py
2
+ # hypothesis_version: 6.165.9
3
+
4
+ [200, 201, 401, 403, 413, 422, '/v1/signals', 'Retry-After', 'client_signal_id', 'deduplicated', 'json', 'unknown error']
@@ -0,0 +1,4 @@
1
+ # file: C:\src\RocketEdge.com\multiedge-relay-python\src\multiedge_relay\exceptions.py
2
+ # hypothesis_version: 6.165.9
3
+
4
+ ['no DLQ configured']
@@ -0,0 +1,4 @@
1
+ # file: C:\src\RocketEdge.com\multiedge-relay-python\src\multiedge_relay\cli.py
2
+ # hypothesis_version: 6.165.9
3
+
4
+ ['*.json', '--api-key', '--base-url', '--dry-run', '--root', '--strategy', '--to', 'CORRUPT', 'MULTIEDGE_API_KEY', 'MULTIEDGE_BASE_URL', 'No cursors found.', '__main__', 'command', 'cursor', 'cursor_command', 'dlq', 'dlq_command', 'dry-run-unused', 'list', 'multiedge', 'purge', 'resend', 'reset', 'show', 'store_true', 'strategy id to reset']
@@ -0,0 +1,4 @@
1
+ # file: C:\src\RocketEdge.com\multiedge-relay-python\src\multiedge_relay\webhook.py
2
+ # hypothesis_version: 6.165.9
3
+
4
+ ['sha256=', 'signature mismatch']
@@ -0,0 +1,4 @@
1
+ # file: C:\src\RocketEdge.com\multiedge-relay-python\src\multiedge_relay\subscriber.py
2
+ # hypothesis_version: 6.165.9
3
+
4
+ [1.0, 5.0, 200, 401, 403, 500, 10000, '/v1/signals', '/v1/ws/negotiate', 'catchup', 'cursor', 'earliest', 'gapfill', 'group-message', 'latest', 'limit', 'live', 'poll', 'signals', 'since_sequence', 'strategy_id', 'unknown error', 'url', 'webpubsub']
@@ -0,0 +1,4 @@
1
+ # file: C:\src\RocketEdge.com\multiedge-relay-python\src\multiedge_relay\__init__.py
2
+ # hypothesis_version: 6.165.9
3
+
4
+ ['0.1.1', 'AsyncSignalPublisher', 'AuthError', 'BufferFullError', 'CursorCorruptError', 'CursorStore', 'DLQEntry', 'DLQResendReport', 'DiskDLQ', 'FileCursorStore', 'MultiEdgeError', 'PublishFailed', 'ReceivedSignal', 'Signal', 'SignalAck', 'SignalMeta', 'SignalPublisher', 'SignalSubscriber', 'ValidationRejected', '__version__', 'new_ulid', 'verify_signature']
@@ -0,0 +1,4 @@
1
+ # file: C:\src\RocketEdge.com\multiedge-relay-python\src\multiedge_relay\cursor.py
2
+ # hypothesis_version: 6.165.9
3
+
4
+ [0.02, '.multiedge', '[^A-Za-z0-9._-]', '_', 'cursor', 'sequence', 'strategy_id', 'updated_at', 'utf-8']
@@ -0,0 +1,4 @@
1
+ # file: C:\src\RocketEdge.com\multiedge-relay-python\src\multiedge_relay\subscriber.py
2
+ # hypothesis_version: 6.165.9
3
+
4
+ [1.0, 5.0, 200, 401, 403, 500, 10000, '/v1/signals', '/v1/ws/negotiate', 'catchup', 'cursor', 'earliest', 'gapfill', 'group-message', 'latest', 'limit', 'live', 'poll', 'signals', 'since_sequence', 'strategy_id', 'unknown error', 'url', 'webpubsub']
@@ -0,0 +1,4 @@
1
+ # file: C:\src\RocketEdge.com\multiedge-relay-python\src\multiedge_relay\subscriber.py
2
+ # hypothesis_version: 6.165.9
3
+
4
+ [1.0, 5.0, 200, 401, 403, 500, 10000, '/v1/signals', '/v1/ws/negotiate', 'Retry-After', 'catchup', 'cursor', 'earliest', 'gapfill', 'group-message', 'latest', 'limit', 'live', 'poll', 'signals', 'since_sequence', 'strategy_id', 'unknown error', 'url', 'webpubsub']
@@ -0,0 +1,4 @@
1
+ # file: C:\src\RocketEdge.com\multiedge-relay-python\src\multiedge_relay\cursor.py
2
+ # hypothesis_version: 6.165.9
3
+
4
+ ['.multiedge', '[^A-Za-z0-9._-]', '_', 'cursor', 'sequence', 'strategy_id', 'updated_at', 'utf-8']
@@ -0,0 +1,4 @@
1
+ # file: C:\src\RocketEdge.com\multiedge-relay-python\src\multiedge_relay\subscriber.py
2
+ # hypothesis_version: 6.165.9
3
+
4
+ [1.0, 5.0, 200, 401, 403, 500, 10000, '/v1/signals', '/v1/ws/negotiate', 'catchup', 'cursor', 'earliest', 'gapfill', 'group-message', 'latest', 'limit', 'live', 'poll', 'signals', 'since_sequence', 'strategy_id', 'unknown error', 'url', 'webpubsub']
@@ -0,0 +1,4 @@
1
+ # file: C:\src\RocketEdge.com\multiedge-relay-python\src\multiedge_relay\publisher.py
2
+ # hypothesis_version: 6.165.9
3
+
4
+ [200, 201, 401, 403, 413, 422, '/v1/signals', 'DiskDLQ | None', 'client_signal_id', 'deduplicated', 'json', 'unknown error']
@@ -0,0 +1,4 @@
1
+ # file: C:\src\RocketEdge.com\multiedge-relay-python\src\multiedge_relay\publisher_async.py
2
+ # hypothesis_version: 6.165.9
3
+
4
+ [200, 201, '/v1/signals', 'Retry-After', 'json', 'unknown error']
@@ -0,0 +1,4 @@
1
+ # file: C:\src\RocketEdge.com\multiedge-relay-python\examples\subscribe_rebalance_to_csv.py
2
+ # hypothesis_version: 6.165.9
3
+
4
+ ['Action', 'MULTIEDGE_API_KEY', 'NONE', 'PORTFOLIO', 'PlannedExecutionDate', 'SignalDate', 'Ticker', '__main__', 'action', 'earliest', 'mek_your_api_key', 'positions', 'rebalance-demo', 'signal_date', 'ticker', 'utf-8', 'w']
@@ -0,0 +1,4 @@
1
+ # file: C:\src\RocketEdge.com\multiedge-relay-python\src\multiedge_relay\_http.py
2
+ # hypothesis_version: 6.165.9
3
+
4
+ [10.0, 'Authorization', 'User-Agent']
@@ -0,0 +1,4 @@
1
+ # file: C:\src\RocketEdge.com\multiedge-relay-python\examples\publish_rebalance_from_csv.py
2
+ # hypothesis_version: 6.165.9
3
+
4
+ [' (deduplicated)', 'Action', 'MULTIEDGE_API_KEY', 'PORTFOLIO', 'PlannedExecutionDate', 'SignalDate', 'Ticker', '__main__', 'action', 'kind', 'mek_your_api_key', 'portfolio_rebalance', 'positions', 'rebalance-demo', 'signal_date', 'ticker', 'utf-8']
@@ -0,0 +1,4 @@
1
+ # file: C:\src\RocketEdge.com\multiedge-relay-python\src\multiedge_relay\exceptions.py
2
+ # hypothesis_version: 6.165.9
3
+
4
+ ['no DLQ configured']
@@ -0,0 +1,4 @@
1
+ # file: C:\src\RocketEdge.com\multiedge-relay-python\src\multiedge_relay\__init__.py
2
+ # hypothesis_version: 6.165.9
3
+
4
+ ['0.4.0', 'AsyncSignalPublisher', 'AuthError', 'BufferFullError', 'CursorCorruptError', 'CursorStore', 'DLQEntry', 'DLQResendReport', 'DiskDLQ', 'FileCursorStore', 'MultiEdgeError', 'PublishFailed', 'ReceivedSignal', 'Signal', 'SignalAck', 'SignalMeta', 'SignalPublisher', 'SignalSubscriber', 'SqliteStateStore', 'ValidationRejected', '__version__', 'new_ulid', 'verify_signature']
@@ -0,0 +1,4 @@
1
+ # file: C:\src\RocketEdge.com\multiedge-relay-python\src\multiedge_relay\publisher_async.py
2
+ # hypothesis_version: 6.165.9
3
+
4
+ [200, 201, '/v1/signals', 'DiskDLQ | None', 'json', 'unknown error']
@@ -0,0 +1,4 @@
1
+ # file: C:\src\RocketEdge.com\multiedge-relay-python\src\multiedge_relay\webhook.py
2
+ # hypothesis_version: 6.165.9
3
+
4
+ ['sha256=', 'signature mismatch']
@@ -0,0 +1,4 @@
1
+ # file: C:\src\RocketEdge.com\multiedge-relay-python\src\multiedge_relay\webhook.py
2
+ # hypothesis_version: 6.165.9
3
+
4
+ ['sha256=', 'signature mismatch']
@@ -0,0 +1,4 @@
1
+ # file: C:\src\RocketEdge.com\multiedge-relay-python\src\multiedge_relay\_retry.py
2
+ # hypothesis_version: 6.165.9
3
+
4
+ [0.5, 408, 429, 500, 599]
@@ -0,0 +1,4 @@
1
+ # file: C:\src\RocketEdge.com\multiedge-relay-python\src\multiedge_relay\cli.py
2
+ # hypothesis_version: 6.165.9
3
+
4
+ ['*.json', '--api-key', '--base-url', '--client', '--dry-run', '--key', '--kind', '--no-dual', '--out', '--root', '--strategy', '--to', 'CORRUPT', 'MULTIEDGE_API_KEY', 'MULTIEDGE_BASE_URL', 'No cursors found.', '__main__', 'command', 'cursor', 'cursor_command', 'dlq', 'dlq_command', 'dry-run-unused', 'fingerprint', 'key file path', 'keygen', 'list', 'multiedge', 'purge', 'recipient', 'register', 'resend', 'reset', 'sealed', 'sealed_command', 'sender', 'show', 'store_true', 'strategy id to reset']
@@ -0,0 +1,4 @@
1
+ # file: C:\src\RocketEdge.com\multiedge-relay-python\src\multiedge_relay\_retry.py
2
+ # hypothesis_version: 6.165.9
3
+
4
+ [0.5, 2.0, 8.0, 90.0, 300.0, 408, 429, 500, 599]
@@ -0,0 +1,4 @@
1
+ # file: C:\src\RocketEdge.com\multiedge-relay-python\src\multiedge_relay\ulid.py
2
+ # hypothesis_version: 6.165.9
3
+
4
+ [65535, 1000000]
@@ -0,0 +1,4 @@
1
+ # file: C:\src\RocketEdge.com\multiedge-relay-python\src\multiedge_relay\publisher.py
2
+ # hypothesis_version: 6.165.9
3
+
4
+ [200, 201, 401, 403, 413, 422, '/v1/signals', 'client_signal_id', 'deduplicated', 'json', 'unknown error']
@@ -0,0 +1,4 @@
1
+ # file: C:\src\RocketEdge.com\multiedge-relay-python\examples\prod_demo\producer_rebalance.py
2
+ # hypothesis_version: 6.165.9
3
+
4
+ [3.0, ' (deduplicated)', '--base-url', '--limit', '--pace', '--strategy-id', '.demo', 'Action', 'MULTIEDGE_API_KEY', 'PORTFOLIO', 'PlannedExecutionDate', 'SignalDate', 'Ticker', '__main__', 'action', 'csv_path', 'dlq', 'kind', 'portfolio_rebalance', 'positions', 'signal_date', 'ticker', 'utf-8']
@@ -0,0 +1,4 @@
1
+ # file: C:\src\RocketEdge.com\multiedge-relay-python\src\multiedge_relay\_http.py
2
+ # hypothesis_version: 6.165.9
3
+
4
+ [10.0, 'Authorization', 'User-Agent']
@@ -0,0 +1,4 @@
1
+ # file: C:\src\RocketEdge.com\multiedge-relay-python\src\multiedge_relay\sealed\__init__.py
2
+ # hypothesis_version: 6.165.9
3
+
4
+ []
@@ -0,0 +1,4 @@
1
+ # file: C:\src\RocketEdge.com\multiedge-relay-python\examples\prod_demo\setup_demo.py
2
+ # hypothesis_version: 6.165.9
3
+
4
+ [30.0, 400, 409, '(already granted)', '--admin-key', '--base-url', '--client-name', '--display-name', '--slug', '/v1/api-keys', '/v1/clients', '/v1/entitlements', '/v1/strategies', '=', 'Authorization', 'Demo Rebalance', 'Demo Subscriber Fund', 'MULTIEDGE_ADMIN_KEY', '__main__', 'api_key', 'client_id', 'clients', 'compliance_profile', 'demo-rebalance', 'display_name', 'endpoint_id', 'entitlement_id', 'ops@example.invalid', 'policy_json', 'rest_pull', 'scope', 'signal_schema_json', 'slug', 'strategies', 'strategy_id', 'transport', 'url', '{}']
@@ -0,0 +1,4 @@
1
+ # file: C:\src\RocketEdge.com\multiedge-relay-python\examples\prod_demo\producer_rebalance.py
2
+ # hypothesis_version: 6.165.9
3
+
4
+ [3.0, ' (deduplicated)', '--base-url', '--limit', '--pace', '--strategy-id', '.demo', 'Action', 'MULTIEDGE_API_KEY', 'PORTFOLIO', 'PlannedExecutionDate', 'SignalDate', 'Ticker', '__main__', 'action', 'csv_path', 'dlq', 'kind', 'portfolio_rebalance', 'positions', 'signal_date', 'ticker', 'utf-8']
@@ -0,0 +1,4 @@
1
+ # file: C:\src\RocketEdge.com\multiedge-relay-python\src\multiedge_relay\publisher.py
2
+ # hypothesis_version: 6.165.9
3
+
4
+ [200, 201, 401, 403, 413, 422, '/v1/signals', 'Retry-After', 'client_signal_id', 'deduplicated', 'json', 'unknown error']
@@ -0,0 +1,4 @@
1
+ # file: C:\src\RocketEdge.com\multiedge-relay-python\src\multiedge_relay\cli.py
2
+ # hypothesis_version: 6.165.9
3
+
4
+ ['*.json', '--api-key', '--base-url', '--dry-run', '--root', '--strategy', '--to', 'CORRUPT', 'MULTIEDGE_API_KEY', 'MULTIEDGE_BASE_URL', 'No cursors found.', '__main__', 'command', 'cursor', 'cursor_command', 'dlq', 'dlq_command', 'dry-run-unused', 'list', 'multiedge', 'purge', 'resend', 'reset', 'show', 'store_true', 'strategy id to reset']
@@ -0,0 +1,4 @@
1
+ # file: C:\src\RocketEdge.com\multiedge-relay-python\src\multiedge_relay\__init__.py
2
+ # hypothesis_version: 6.165.9
3
+
4
+ ['0.3.0', 'AsyncSignalPublisher', 'AuthError', 'BufferFullError', 'CursorCorruptError', 'CursorStore', 'DLQEntry', 'DLQResendReport', 'DiskDLQ', 'FileCursorStore', 'MultiEdgeError', 'PublishFailed', 'ReceivedSignal', 'Signal', 'SignalAck', 'SignalMeta', 'SignalPublisher', 'SignalSubscriber', 'SqliteStateStore', 'ValidationRejected', '__version__', 'new_ulid', 'verify_signature']
@@ -0,0 +1,4 @@
1
+ # file: C:\src\RocketEdge.com\multiedge-relay-python\examples\prod_demo\generate_demo_csv.py
2
+ # hypothesis_version: 6.165.9
3
+
4
+ [0.02, 0.03, 0.05, 0.06, 0.1, 0.15, 0.25, 1.0, 2024, '--months', '--out', '--seed', '--start', 'Action', 'BOND', 'BUY', 'CASH', 'CMDTY', 'CRYP', 'EQTY', 'GOLD', 'INITIALIZE', 'LOWV', 'NONE', 'PORTFOLIO', 'PlannedExecutionDate', 'SELL', 'SignalDate', 'TIPS', 'TREND', 'Ticker', 'TradeWeightDelta', '__main__', 'utf-8', 'w']
@@ -0,0 +1,4 @@
1
+ # file: C:\src\RocketEdge.com\multiedge-relay-python\src\multiedge_relay\publisher_async.py
2
+ # hypothesis_version: 6.165.9
3
+
4
+ [200, 201, '/v1/signals', 'json', 'unknown error']
@@ -0,0 +1,4 @@
1
+ # file: C:\src\RocketEdge.com\multiedge-relay-python\src\multiedge_relay\_http.py
2
+ # hypothesis_version: 6.165.9
3
+
4
+ [10.0, 'Authorization', 'User-Agent']
@@ -0,0 +1,4 @@
1
+ # file: C:\src\RocketEdge.com\multiedge-relay-python\examples\prod_demo\consumer_rebalance.py
2
+ # hypothesis_version: 6.165.9
3
+
4
+ [2.0, '--base-url', '--catchup-only', '--out', '--poll-interval', '--strategy-id', '.demo', 'Action', 'BUY', 'INITIALIZE', 'MULTIEDGE_API_KEY', 'NONE', 'PORTFOLIO', 'PlannedExecutionDate', 'SELL', 'SignalDate', 'Ticker', '__main__', 'action', 'cursor', 'poll', 'positions', 'signal_date', 'store_true', 'ticker', 'utf-8', 'w']