synpath 0.2.0__tar.gz → 0.3.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.
- synpath-0.3.1/Cargo.toml +19 -0
- {synpath-0.2.0 → synpath-0.3.1}/PKG-INFO +42 -35
- {synpath-0.2.0 → synpath-0.3.1}/README.md +12 -2
- synpath-0.3.1/bindings/python/Cargo.lock +551 -0
- synpath-0.3.1/bindings/python/Cargo.toml +20 -0
- synpath-0.3.1/bindings/python/src/kalshi.rs +175 -0
- synpath-0.3.1/bindings/python/src/lib.rs +403 -0
- synpath-0.3.1/bindings/python/src/objects.rs +158 -0
- synpath-0.3.1/bindings/python/src/polymarket.rs +394 -0
- synpath-0.3.1/bindings/python/src/pyjson.rs +41 -0
- synpath-0.3.1/bindings/python/src/router.rs +184 -0
- synpath-0.3.1/bindings/python/src/signing.rs +195 -0
- synpath-0.3.1/bindings/python/src/venues.rs +110 -0
- synpath-0.3.1/build_backend/synpath_build.py +80 -0
- synpath-0.3.1/crates/synpath-core/Cargo.lock +474 -0
- synpath-0.3.1/crates/synpath-core/Cargo.toml +16 -0
- synpath-0.3.1/crates/synpath-core/examples/decode_timing.rs +48 -0
- synpath-0.3.1/crates/synpath-core/src/book.rs +235 -0
- synpath-0.3.1/crates/synpath-core/src/kalshi.rs +169 -0
- synpath-0.3.1/crates/synpath-core/src/lib.rs +18 -0
- synpath-0.3.1/crates/synpath-core/src/opinion.rs +63 -0
- synpath-0.3.1/crates/synpath-core/src/polymarket.rs +241 -0
- synpath-0.3.1/crates/synpath-core/src/polymarket_us.rs +78 -0
- synpath-0.3.1/crates/synpath-core/src/router.rs +238 -0
- synpath-0.3.1/crates/synpath-core/src/signing.rs +371 -0
- synpath-0.3.1/crates/synpath-core/src/wire.rs +241 -0
- {synpath-0.2.0 → synpath-0.3.1}/pyproject.toml +18 -5
- {synpath-0.2.0 → synpath-0.3.1}/synpath/__init__.py +1 -1
- synpath-0.3.1/synpath/_native.py +32 -0
- {synpath-0.2.0 → synpath-0.3.1}/synpath/engine/router.py +82 -14
- {synpath-0.2.0 → synpath-0.3.1}/synpath/trading/opinion_signing.py +11 -0
- {synpath-0.2.0 → synpath-0.3.1}/synpath/trading/polymarket_signing.py +46 -1
- {synpath-0.2.0 → synpath-0.3.1}/synpath/ws/base.py +27 -7
- {synpath-0.2.0 → synpath-0.3.1}/synpath/ws/kalshi.py +34 -1
- {synpath-0.2.0 → synpath-0.3.1}/synpath/ws/opinion.py +28 -1
- {synpath-0.2.0 → synpath-0.3.1}/synpath/ws/polymarket.py +28 -1
- {synpath-0.2.0 → synpath-0.3.1}/synpath/ws/polymarket_us.py +22 -4
- synpath-0.2.0/.env.example +0 -47
- synpath-0.2.0/.github/workflows/publish.yml +0 -48
- synpath-0.2.0/.github/workflows/tests.yml +0 -21
- synpath-0.2.0/.gitignore +0 -12
- synpath-0.2.0/assets/kalshi.png +0 -0
- synpath-0.2.0/assets/polymarket.png +0 -0
- synpath-0.2.0/assets/synpath-banner.png +0 -0
- synpath-0.2.0/clients/typescript/.gitignore +0 -5
- synpath-0.2.0/clients/typescript/example.ts +0 -77
- synpath-0.2.0/clients/typescript/package.json +0 -20
- synpath-0.2.0/clients/typescript/tsconfig.json +0 -11
- synpath-0.2.0/docs/api.md +0 -279
- synpath-0.2.0/docs/capabilities.md +0 -111
- synpath-0.2.0/docs/engine.md +0 -358
- synpath-0.2.0/docs/server.md +0 -146
- synpath-0.2.0/docs/streaming.md +0 -247
- synpath-0.2.0/docs/trading.md +0 -348
- synpath-0.2.0/examples/track_historical_book.py +0 -222
- synpath-0.2.0/tests/conftest.py +0 -143
- synpath-0.2.0/tests/samples/kalshi_candles.json +0 -1
- synpath-0.2.0/tests/samples/kalshi_events.json +0 -1
- synpath-0.2.0/tests/samples/kalshi_orderbook.json +0 -1
- synpath-0.2.0/tests/samples/kalshi_series.json +0 -1
- synpath-0.2.0/tests/samples/kalshi_trades.json +0 -1
- synpath-0.2.0/tests/samples/kalshi_trading_delete_events_orders.json +0 -1
- synpath-0.2.0/tests/samples/kalshi_trading_delete_events_orders_batched.json +0 -14
- synpath-0.2.0/tests/samples/kalshi_trading_delete_events_orders_id.json +0 -5
- synpath-0.2.0/tests/samples/kalshi_trading_delete_order_groups_id.json +0 -1
- synpath-0.2.0/tests/samples/kalshi_trading_get_account_endpoint_costs.json +0 -90
- synpath-0.2.0/tests/samples/kalshi_trading_get_account_limits.json +0 -12
- synpath-0.2.0/tests/samples/kalshi_trading_get_balance.json +0 -24
- synpath-0.2.0/tests/samples/kalshi_trading_get_fills.json +0 -25
- synpath-0.2.0/tests/samples/kalshi_trading_get_markets.json +0 -11805
- synpath-0.2.0/tests/samples/kalshi_trading_get_order_groups_id.json +0 -6
- synpath-0.2.0/tests/samples/kalshi_trading_get_orders.json +0 -136
- synpath-0.2.0/tests/samples/kalshi_trading_get_orders_id.json +0 -28
- synpath-0.2.0/tests/samples/kalshi_trading_get_orders_id_queue_position.json +0 -3
- synpath-0.2.0/tests/samples/kalshi_trading_get_positions.json +0 -25
- synpath-0.2.0/tests/samples/kalshi_trading_get_series_id.json +0 -39
- synpath-0.2.0/tests/samples/kalshi_trading_get_settlements.json +0 -4
- synpath-0.2.0/tests/samples/kalshi_trading_post_events_orders.json +0 -7
- synpath-0.2.0/tests/samples/kalshi_trading_post_events_orders_batched.json +0 -18
- synpath-0.2.0/tests/samples/kalshi_trading_post_events_orders_id_amend.json +0 -5
- synpath-0.2.0/tests/samples/kalshi_trading_post_events_orders_id_decrease.json +0 -5
- synpath-0.2.0/tests/samples/kalshi_trading_post_order_groups_create.json +0 -5
- synpath-0.2.0/tests/samples/kalshi_trading_put_order_groups_id_reset.json +0 -1
- synpath-0.2.0/tests/samples/kalshi_trading_put_order_groups_id_trigger.json +0 -1
- synpath-0.2.0/tests/samples/opinion_book.json +0 -1
- synpath-0.2.0/tests/samples/opinion_book_no.json +0 -1
- synpath-0.2.0/tests/samples/opinion_categorical.json +0 -1
- synpath-0.2.0/tests/samples/opinion_child.json +0 -1
- synpath-0.2.0/tests/samples/opinion_fee_rate_call.json +0 -1
- synpath-0.2.0/tests/samples/opinion_latest_price.json +0 -1
- synpath-0.2.0/tests/samples/opinion_market.json +0 -1
- synpath-0.2.0/tests/samples/opinion_markets.json +0 -1
- synpath-0.2.0/tests/samples/opinion_not_found.json +0 -1
- synpath-0.2.0/tests/samples/opinion_prices_1d.json +0 -1
- synpath-0.2.0/tests/samples/opinion_prices_1h.json +0 -1
- synpath-0.2.0/tests/samples/opinion_resolved.json +0 -1
- synpath-0.2.0/tests/samples/opinion_signing_vectors.json +0 -96
- synpath-0.2.0/tests/samples/poly_book.json +0 -1
- synpath-0.2.0/tests/samples/poly_events.json +0 -1
- synpath-0.2.0/tests/samples/poly_market.json +0 -1
- synpath-0.2.0/tests/samples/poly_prices.json +0 -1
- synpath-0.2.0/tests/samples/poly_search.json +0 -1
- synpath-0.2.0/tests/samples/poly_trades.json +0 -1
- synpath-0.2.0/tests/samples/polymarket_signing_vectors.json +0 -9430
- synpath-0.2.0/tests/samples/polyus_bbo.json +0 -51
- synpath-0.2.0/tests/samples/polyus_book.json +0 -250
- synpath-0.2.0/tests/samples/polyus_closed_market.json +0 -133
- synpath-0.2.0/tests/samples/polyus_events.json +0 -2813
- synpath-0.2.0/tests/samples/polyus_market.json +0 -154
- synpath-0.2.0/tests/samples/polyus_prices.json +0 -29
- synpath-0.2.0/tests/samples/polyus_search.json +0 -364
- synpath-0.2.0/tests/samples/polyus_series.json +0 -26
- synpath-0.2.0/tests/samples/polyus_settlement.json +0 -5
- synpath-0.2.0/tests/samples/ws/kalshi_demo_transcript.jsonl +0 -208
- synpath-0.2.0/tests/samples/ws/polymarket_market_transcript.jsonl +0 -133
- synpath-0.2.0/tests/test_client.py +0 -171
- synpath-0.2.0/tests/test_contract.py +0 -867
- synpath-0.2.0/tests/test_engine.py +0 -685
- synpath-0.2.0/tests/test_engine_demo.py +0 -192
- synpath-0.2.0/tests/test_engine_orders.py +0 -593
- synpath-0.2.0/tests/test_engine_orders_demo.py +0 -258
- synpath-0.2.0/tests/test_feeds.py +0 -249
- synpath-0.2.0/tests/test_history_tracker.py +0 -86
- synpath-0.2.0/tests/test_history_types.py +0 -60
- synpath-0.2.0/tests/test_hosted.py +0 -155
- synpath-0.2.0/tests/test_hosted_auth.py +0 -32
- synpath-0.2.0/tests/test_init.py +0 -126
- synpath-0.2.0/tests/test_journal_v3.py +0 -166
- synpath-0.2.0/tests/test_kalshi.py +0 -1249
- synpath-0.2.0/tests/test_kalshi_demo.py +0 -285
- synpath-0.2.0/tests/test_kalshi_trading.py +0 -561
- synpath-0.2.0/tests/test_live.py +0 -536
- synpath-0.2.0/tests/test_opinion.py +0 -430
- synpath-0.2.0/tests/test_opinion_live.py +0 -103
- synpath-0.2.0/tests/test_opinion_trading.py +0 -414
- synpath-0.2.0/tests/test_opinion_ws.py +0 -324
- synpath-0.2.0/tests/test_opinion_ws_live.py +0 -92
- synpath-0.2.0/tests/test_polymarket.py +0 -639
- synpath-0.2.0/tests/test_polymarket_trading.py +0 -810
- synpath-0.2.0/tests/test_polymarket_us.py +0 -562
- synpath-0.2.0/tests/test_polymarket_us_trading.py +0 -624
- synpath-0.2.0/tests/test_remote_client.py +0 -231
- synpath-0.2.0/tests/test_risk_duplicates.py +0 -42
- synpath-0.2.0/tests/test_routed_limit.py +0 -332
- synpath-0.2.0/tests/test_routed_recovery.py +0 -176
- synpath-0.2.0/tests/test_router.py +0 -197
- synpath-0.2.0/tests/test_serve.py +0 -176
- synpath-0.2.0/tests/test_server.py +0 -430
- synpath-0.2.0/tests/test_server_trading.py +0 -616
- synpath-0.2.0/tests/test_trading_foundations.py +0 -395
- synpath-0.2.0/tests/test_venue_errors.py +0 -39
- synpath-0.2.0/tests/test_ws.py +0 -720
- synpath-0.2.0/tests/test_ws_grpc.py +0 -659
- synpath-0.2.0/tests/test_ws_live.py +0 -112
- {synpath-0.2.0 → synpath-0.3.1}/LICENSE +0 -0
- {synpath-0.2.0 → synpath-0.3.1}/synpath/__main__.py +0 -0
- {synpath-0.2.0 → synpath-0.3.1}/synpath/base.py +0 -0
- {synpath-0.2.0 → synpath-0.3.1}/synpath/bucket.py +0 -0
- {synpath-0.2.0 → synpath-0.3.1}/synpath/client.py +0 -0
- {synpath-0.2.0 → synpath-0.3.1}/synpath/engine/__init__.py +0 -0
- {synpath-0.2.0 → synpath-0.3.1}/synpath/engine/__main__.py +0 -0
- {synpath-0.2.0 → synpath-0.3.1}/synpath/engine/alerts.py +0 -0
- {synpath-0.2.0 → synpath-0.3.1}/synpath/engine/engine.py +0 -0
- {synpath-0.2.0 → synpath-0.3.1}/synpath/engine/eod.py +0 -0
- {synpath-0.2.0 → synpath-0.3.1}/synpath/engine/events.py +0 -0
- {synpath-0.2.0 → synpath-0.3.1}/synpath/engine/fair_values.py +0 -0
- {synpath-0.2.0 → synpath-0.3.1}/synpath/engine/feeds.py +0 -0
- {synpath-0.2.0 → synpath-0.3.1}/synpath/engine/journal.py +0 -0
- {synpath-0.2.0 → synpath-0.3.1}/synpath/engine/ledger.py +0 -0
- {synpath-0.2.0 → synpath-0.3.1}/synpath/engine/orders/__init__.py +0 -0
- {synpath-0.2.0 → synpath-0.3.1}/synpath/engine/orders/base.py +0 -0
- {synpath-0.2.0 → synpath-0.3.1}/synpath/engine/orders/day.py +0 -0
- {synpath-0.2.0 → synpath-0.3.1}/synpath/engine/orders/iceberg.py +0 -0
- {synpath-0.2.0 → synpath-0.3.1}/synpath/engine/orders/manager.py +0 -0
- {synpath-0.2.0 → synpath-0.3.1}/synpath/engine/orders/oco.py +0 -0
- {synpath-0.2.0 → synpath-0.3.1}/synpath/engine/orders/peg.py +0 -0
- {synpath-0.2.0 → synpath-0.3.1}/synpath/engine/orders/routed.py +0 -0
- {synpath-0.2.0 → synpath-0.3.1}/synpath/engine/orders/stop.py +0 -0
- {synpath-0.2.0 → synpath-0.3.1}/synpath/engine/orders/taker.py +0 -0
- {synpath-0.2.0 → synpath-0.3.1}/synpath/engine/orders/twap.py +0 -0
- {synpath-0.2.0 → synpath-0.3.1}/synpath/engine/paper.py +0 -0
- {synpath-0.2.0 → synpath-0.3.1}/synpath/engine/reconcile.py +0 -0
- {synpath-0.2.0 → synpath-0.3.1}/synpath/engine/risk.py +0 -0
- {synpath-0.2.0 → synpath-0.3.1}/synpath/errors.py +0 -0
- {synpath-0.2.0 → synpath-0.3.1}/synpath/history.py +0 -0
- {synpath-0.2.0 → synpath-0.3.1}/synpath/hosted.py +0 -0
- {synpath-0.2.0 → synpath-0.3.1}/synpath/hosted_auth.py +0 -0
- {synpath-0.2.0 → synpath-0.3.1}/synpath/ids.py +0 -0
- {synpath-0.2.0 → synpath-0.3.1}/synpath/kalshi.py +0 -0
- {synpath-0.2.0 → synpath-0.3.1}/synpath/matching.py +0 -0
- {synpath-0.2.0 → synpath-0.3.1}/synpath/opinion.py +0 -0
- {synpath-0.2.0 → synpath-0.3.1}/synpath/polymarket.py +0 -0
- {synpath-0.2.0 → synpath-0.3.1}/synpath/polymarket_us.py +0 -0
- {synpath-0.2.0 → synpath-0.3.1}/synpath/remote.py +0 -0
- {synpath-0.2.0 → synpath-0.3.1}/synpath/server/__init__.py +0 -0
- {synpath-0.2.0 → synpath-0.3.1}/synpath/server/__main__.py +0 -0
- {synpath-0.2.0 → synpath-0.3.1}/synpath/server/api.py +0 -0
- {synpath-0.2.0 → synpath-0.3.1}/synpath/server/errors.py +0 -0
- {synpath-0.2.0 → synpath-0.3.1}/synpath/server/local.py +0 -0
- {synpath-0.2.0 → synpath-0.3.1}/synpath/server/models.py +0 -0
- {synpath-0.2.0 → synpath-0.3.1}/synpath/server/serve.py +0 -0
- {synpath-0.2.0 → synpath-0.3.1}/synpath/server/store.py +0 -0
- {synpath-0.2.0 → synpath-0.3.1}/synpath/server/trading.py +0 -0
- {synpath-0.2.0 → synpath-0.3.1}/synpath/trading/__init__.py +0 -0
- {synpath-0.2.0 → synpath-0.3.1}/synpath/trading/__main__.py +0 -0
- {synpath-0.2.0 → synpath-0.3.1}/synpath/trading/base.py +0 -0
- {synpath-0.2.0 → synpath-0.3.1}/synpath/trading/credentials.py +0 -0
- {synpath-0.2.0 → synpath-0.3.1}/synpath/trading/errors.py +0 -0
- {synpath-0.2.0 → synpath-0.3.1}/synpath/trading/init.py +0 -0
- {synpath-0.2.0 → synpath-0.3.1}/synpath/trading/instruments.py +0 -0
- {synpath-0.2.0 → synpath-0.3.1}/synpath/trading/kalshi.py +0 -0
- {synpath-0.2.0 → synpath-0.3.1}/synpath/trading/limiter.py +0 -0
- {synpath-0.2.0 → synpath-0.3.1}/synpath/trading/money.py +0 -0
- {synpath-0.2.0 → synpath-0.3.1}/synpath/trading/opinion.py +0 -0
- {synpath-0.2.0 → synpath-0.3.1}/synpath/trading/polymarket.py +0 -0
- {synpath-0.2.0 → synpath-0.3.1}/synpath/trading/polymarket_us.py +0 -0
- {synpath-0.2.0 → synpath-0.3.1}/synpath/trading/polymarket_us_exchange.py +0 -0
- {synpath-0.2.0 → synpath-0.3.1}/synpath/trading/types.py +0 -0
- {synpath-0.2.0 → synpath-0.3.1}/synpath/types.py +0 -0
- {synpath-0.2.0 → synpath-0.3.1}/synpath/ws/__init__.py +0 -0
- {synpath-0.2.0 → synpath-0.3.1}/synpath/ws/grpc.py +0 -0
- {synpath-0.2.0 → synpath-0.3.1}/synpath/ws/polymarket_us_exchange.py +0 -0
synpath-0.3.1/Cargo.toml
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
# The Rust core under the Python API.
|
|
2
|
+
#
|
|
3
|
+
# crates/synpath-core pure Rust: no I/O, no Python. The hot paths live here.
|
|
4
|
+
# bindings/python PyO3 wrappers, built by maturin into `synpath._core`.
|
|
5
|
+
#
|
|
6
|
+
# Every piece here has a pure-Python twin in `synpath/`, and the test suite runs
|
|
7
|
+
# against both, so the two cannot drift apart.
|
|
8
|
+
[workspace]
|
|
9
|
+
members = ["crates/synpath-core", "bindings/python"]
|
|
10
|
+
resolver = "2"
|
|
11
|
+
|
|
12
|
+
[workspace.package]
|
|
13
|
+
edition = "2021"
|
|
14
|
+
license = "MIT"
|
|
15
|
+
repository = "https://github.com/Synpath-ai/synpath"
|
|
16
|
+
|
|
17
|
+
[profile.release]
|
|
18
|
+
lto = "fat"
|
|
19
|
+
codegen-units = 1
|
|
@@ -1,52 +1,48 @@
|
|
|
1
|
-
Metadata-Version: 2.
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
2
|
Name: synpath
|
|
3
|
-
Version: 0.
|
|
4
|
-
Summary: One API for prediction markets. Kalshi and Polymarket, normalized, with every price labelled by source and time.
|
|
5
|
-
Project-URL: Homepage, https://synpath.dev
|
|
6
|
-
Project-URL: Documentation, https://synpath.dev/docs
|
|
7
|
-
Project-URL: Repository, https://github.com/Synpath-ai/synpath
|
|
8
|
-
Project-URL: Issues, https://github.com/Synpath-ai/synpath/issues
|
|
9
|
-
Project-URL: Discord, https://synpath.dev/discord
|
|
10
|
-
Author: Synpath
|
|
11
|
-
License: MIT
|
|
12
|
-
License-File: LICENSE
|
|
13
|
-
Keywords: kalshi,market-data,polymarket,prediction-markets,trading,unified-api
|
|
3
|
+
Version: 0.3.1
|
|
14
4
|
Classifier: Development Status :: 3 - Alpha
|
|
15
5
|
Classifier: Intended Audience :: Financial and Insurance Industry
|
|
16
6
|
Classifier: License :: OSI Approved :: MIT License
|
|
17
7
|
Classifier: Programming Language :: Python :: 3
|
|
18
8
|
Classifier: Topic :: Office/Business :: Financial
|
|
19
|
-
Requires-Python: >=3.10
|
|
20
|
-
Requires-Dist: aiosqlite>=0.20
|
|
21
|
-
Requires-Dist: cryptography>=42
|
|
22
|
-
Requires-Dist: eth-account>=0.13
|
|
23
|
-
Requires-Dist: fastapi>=0.110
|
|
24
9
|
Requires-Dist: httpx>=0.27
|
|
25
10
|
Requires-Dist: pydantic>=2.6
|
|
11
|
+
Requires-Dist: cryptography>=42
|
|
12
|
+
Requires-Dist: eth-account>=0.13
|
|
26
13
|
Requires-Dist: pyjwt[crypto]>=2.8
|
|
27
|
-
Requires-Dist: tomli>=2.0; python_version < '3.11'
|
|
28
|
-
Requires-Dist: uvicorn[standard]>=0.27
|
|
29
14
|
Requires-Dist: websockets>=13
|
|
15
|
+
Requires-Dist: aiosqlite>=0.20
|
|
16
|
+
Requires-Dist: fastapi>=0.110
|
|
17
|
+
Requires-Dist: uvicorn[standard]>=0.27
|
|
18
|
+
Requires-Dist: tomli>=2.0 ; python_full_version < '3.11'
|
|
19
|
+
Requires-Dist: pytest>=8 ; extra == 'dev'
|
|
20
|
+
Requires-Dist: respx>=0.21 ; extra == 'dev'
|
|
21
|
+
Requires-Dist: anyio>=4 ; extra == 'dev'
|
|
22
|
+
Requires-Dist: synpath[grpc] ; extra == 'dev'
|
|
23
|
+
Requires-Dist: grpcio>=1.60 ; extra == 'grpc'
|
|
24
|
+
Requires-Dist: grpcio-tools>=1.60 ; extra == 'grpc'
|
|
25
|
+
Requires-Dist: protobuf>=5.26 ; extra == 'grpc'
|
|
26
|
+
Requires-Dist: pyjwt[crypto]>=2.8 ; extra == 'grpc'
|
|
27
|
+
Requires-Dist: cryptography>=42 ; extra == 'grpc'
|
|
30
28
|
Provides-Extra: dev
|
|
31
|
-
Requires-Dist: anyio>=4; extra == 'dev'
|
|
32
|
-
Requires-Dist: cryptography>=42; extra == 'dev'
|
|
33
|
-
Requires-Dist: grpcio-tools>=1.60; extra == 'dev'
|
|
34
|
-
Requires-Dist: grpcio>=1.60; extra == 'dev'
|
|
35
|
-
Requires-Dist: protobuf>=5.26; extra == 'dev'
|
|
36
|
-
Requires-Dist: pyjwt[crypto]>=2.8; extra == 'dev'
|
|
37
|
-
Requires-Dist: pytest>=8; extra == 'dev'
|
|
38
|
-
Requires-Dist: respx>=0.21; extra == 'dev'
|
|
39
29
|
Provides-Extra: engine
|
|
40
30
|
Provides-Extra: grpc
|
|
41
|
-
Requires-Dist: cryptography>=42; extra == 'grpc'
|
|
42
|
-
Requires-Dist: grpcio-tools>=1.60; extra == 'grpc'
|
|
43
|
-
Requires-Dist: grpcio>=1.60; extra == 'grpc'
|
|
44
|
-
Requires-Dist: protobuf>=5.26; extra == 'grpc'
|
|
45
|
-
Requires-Dist: pyjwt[crypto]>=2.8; extra == 'grpc'
|
|
46
31
|
Provides-Extra: server
|
|
47
32
|
Provides-Extra: trading
|
|
48
33
|
Provides-Extra: ws
|
|
49
|
-
|
|
34
|
+
License-File: LICENSE
|
|
35
|
+
Summary: One API for prediction markets. Kalshi and Polymarket, normalized, with every price labelled by source and time.
|
|
36
|
+
Keywords: prediction-markets,kalshi,polymarket,unified-api,trading,market-data
|
|
37
|
+
Author: Synpath
|
|
38
|
+
License: MIT
|
|
39
|
+
Requires-Python: >=3.10
|
|
40
|
+
Description-Content-Type: text/markdown; charset=UTF-8; variant=GFM
|
|
41
|
+
Project-URL: Discord, https://synpath.dev/discord
|
|
42
|
+
Project-URL: Documentation, https://synpath.dev/docs
|
|
43
|
+
Project-URL: Homepage, https://synpath.dev
|
|
44
|
+
Project-URL: Issues, https://github.com/Synpath-ai/synpath/issues
|
|
45
|
+
Project-URL: Repository, https://github.com/Synpath-ai/synpath
|
|
50
46
|
|
|
51
47
|
<div align="center">
|
|
52
48
|
|
|
@@ -66,6 +62,8 @@ One open-source API across Kalshi, Polymarket, Polymarket US and Opinion: market
|
|
|
66
62
|
**🆕 New: Smart order routing across Kalshi and Polymarket.**<br/>
|
|
67
63
|
One order, both order books combined, filled from the cheapest price after fees. **[See how it works →](https://www.synpath.dev/docs/concepts/buckets)**
|
|
68
64
|
|
|
65
|
+
⭐ **If Synpath saves you time, [star it on GitHub](https://github.com/Synpath-ai/synpath).** It's how other traders find it.
|
|
66
|
+
|
|
69
67
|
---
|
|
70
68
|
|
|
71
69
|
## Supported Exchanges
|
|
@@ -92,7 +90,7 @@ pip install synpath # market data, order entry, streams, the engine
|
|
|
92
90
|
pip install "synpath[grpc]" # + Polymarket US exchange gRPC streams
|
|
93
91
|
```
|
|
94
92
|
|
|
95
|
-
Python 3.10 or newer.
|
|
93
|
+
Python 3.10 or newer. The hot paths (order books, reading the venues' book streams, order signing and the order router) run on a Rust core that ships prebuilt inside the wheel for Linux, macOS and Windows; nothing else to install.
|
|
96
94
|
|
|
97
95
|
**Hosted API.** Run `synpath login`, then `synpath keys create`. It serves tick-level Kalshi order book and trade history, and cross-venue market matching. Trading stays on your machine: Synpath never holds your keys or funds.
|
|
98
96
|
|
|
@@ -205,13 +203,21 @@ See the [API Reference](https://www.synpath.dev/docs) for detailed documentation
|
|
|
205
203
|
```bash
|
|
206
204
|
git clone https://github.com/Synpath-ai/synpath
|
|
207
205
|
cd synpath
|
|
208
|
-
pip install -e ".[dev]"
|
|
206
|
+
pip install -e ".[dev]" # builds the Rust core too: needs a Rust toolchain (rustup.rs)
|
|
209
207
|
|
|
210
208
|
pytest # offline, against recorded venue payloads
|
|
211
209
|
pytest -m live # market data against the real venues
|
|
212
210
|
pytest -m demo # order entry on a venue's demo environment
|
|
211
|
+
SYNPATH_PURE_PYTHON=1 pytest # the same tests on the pure-Python fallback
|
|
212
|
+
cargo test -p synpath-core # the Rust core on its own
|
|
213
213
|
```
|
|
214
214
|
|
|
215
|
+
The Rust core lives in `crates/synpath-core` (pure Rust) and
|
|
216
|
+
`bindings/python` (its PyO3 wrapper, built as `synpath._core`). Every class
|
|
217
|
+
it provides has a pure-Python twin with the same interface, and the library
|
|
218
|
+
uses the twin when the extension is not built. Venue adapters are plain
|
|
219
|
+
Python: adding a venue needs no Rust.
|
|
220
|
+
|
|
215
221
|
The `demo` tests place and cancel real orders on a demo exchange with the
|
|
216
222
|
credentials in your environment, and leave the account flat. `python -m
|
|
217
223
|
synpath.trading doctor` says which venues are configured without printing a
|
|
@@ -224,3 +230,4 @@ secret.
|
|
|
224
230
|
## License
|
|
225
231
|
|
|
226
232
|
MIT
|
|
233
|
+
|
|
@@ -16,6 +16,8 @@ One open-source API across Kalshi, Polymarket, Polymarket US and Opinion: market
|
|
|
16
16
|
**🆕 New: Smart order routing across Kalshi and Polymarket.**<br/>
|
|
17
17
|
One order, both order books combined, filled from the cheapest price after fees. **[See how it works →](https://www.synpath.dev/docs/concepts/buckets)**
|
|
18
18
|
|
|
19
|
+
⭐ **If Synpath saves you time, [star it on GitHub](https://github.com/Synpath-ai/synpath).** It's how other traders find it.
|
|
20
|
+
|
|
19
21
|
---
|
|
20
22
|
|
|
21
23
|
## Supported Exchanges
|
|
@@ -42,7 +44,7 @@ pip install synpath # market data, order entry, streams, the engine
|
|
|
42
44
|
pip install "synpath[grpc]" # + Polymarket US exchange gRPC streams
|
|
43
45
|
```
|
|
44
46
|
|
|
45
|
-
Python 3.10 or newer.
|
|
47
|
+
Python 3.10 or newer. The hot paths (order books, reading the venues' book streams, order signing and the order router) run on a Rust core that ships prebuilt inside the wheel for Linux, macOS and Windows; nothing else to install.
|
|
46
48
|
|
|
47
49
|
**Hosted API.** Run `synpath login`, then `synpath keys create`. It serves tick-level Kalshi order book and trade history, and cross-venue market matching. Trading stays on your machine: Synpath never holds your keys or funds.
|
|
48
50
|
|
|
@@ -155,13 +157,21 @@ See the [API Reference](https://www.synpath.dev/docs) for detailed documentation
|
|
|
155
157
|
```bash
|
|
156
158
|
git clone https://github.com/Synpath-ai/synpath
|
|
157
159
|
cd synpath
|
|
158
|
-
pip install -e ".[dev]"
|
|
160
|
+
pip install -e ".[dev]" # builds the Rust core too: needs a Rust toolchain (rustup.rs)
|
|
159
161
|
|
|
160
162
|
pytest # offline, against recorded venue payloads
|
|
161
163
|
pytest -m live # market data against the real venues
|
|
162
164
|
pytest -m demo # order entry on a venue's demo environment
|
|
165
|
+
SYNPATH_PURE_PYTHON=1 pytest # the same tests on the pure-Python fallback
|
|
166
|
+
cargo test -p synpath-core # the Rust core on its own
|
|
163
167
|
```
|
|
164
168
|
|
|
169
|
+
The Rust core lives in `crates/synpath-core` (pure Rust) and
|
|
170
|
+
`bindings/python` (its PyO3 wrapper, built as `synpath._core`). Every class
|
|
171
|
+
it provides has a pure-Python twin with the same interface, and the library
|
|
172
|
+
uses the twin when the extension is not built. Venue adapters are plain
|
|
173
|
+
Python: adding a venue needs no Rust.
|
|
174
|
+
|
|
165
175
|
The `demo` tests place and cancel real orders on a demo exchange with the
|
|
166
176
|
credentials in your environment, and leave the account flat. `python -m
|
|
167
177
|
synpath.trading doctor` says which venues are configured without printing a
|