polysimulator 0.4.2__tar.gz → 0.4.3__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.
- {polysimulator-0.4.2 → polysimulator-0.4.3}/PKG-INFO +7 -7
- {polysimulator-0.4.2 → polysimulator-0.4.3}/README.md +4 -4
- {polysimulator-0.4.2 → polysimulator-0.4.3}/polysim_polymarket/__init__.py +3 -1
- {polysimulator-0.4.2 → polysimulator-0.4.3}/polysim_polymarket/clients/_trade.py +7 -6
- {polysimulator-0.4.2 → polysimulator-0.4.3}/polysim_polymarket/models.py +1 -1
- {polysimulator-0.4.2 → polysimulator-0.4.3}/polysim_polymarket/rfq.py +42 -2
- {polysimulator-0.4.2 → polysimulator-0.4.3}/polysim_sdk/_version.py +1 -1
- {polysimulator-0.4.2 → polysimulator-0.4.3}/pyproject.toml +3 -3
- {polysimulator-0.4.2 → polysimulator-0.4.3}/.gitignore +0 -0
- {polysimulator-0.4.2 → polysimulator-0.4.3}/LICENSE +0 -0
- {polysimulator-0.4.2 → polysimulator-0.4.3}/NOTICE +0 -0
- {polysimulator-0.4.2 → polysimulator-0.4.3}/polysim_clob_client/__init__.py +0 -0
- {polysimulator-0.4.2 → polysimulator-0.4.3}/polysim_clob_client/client.py +0 -0
- {polysimulator-0.4.2 → polysimulator-0.4.3}/polysim_clob_client/clob_types.py +0 -0
- {polysimulator-0.4.2 → polysimulator-0.4.3}/polysim_clob_client/constants.py +0 -0
- {polysimulator-0.4.2 → polysimulator-0.4.3}/polysim_clob_client/exceptions.py +0 -0
- {polysimulator-0.4.2 → polysimulator-0.4.3}/polysim_clob_client/order_builder/__init__.py +0 -0
- {polysimulator-0.4.2 → polysimulator-0.4.3}/polysim_clob_client/order_builder/constants.py +0 -0
- {polysimulator-0.4.2 → polysimulator-0.4.3}/polysim_polymarket/clients/__init__.py +0 -0
- {polysimulator-0.4.2 → polysimulator-0.4.3}/polysim_polymarket/clients/_account.py +0 -0
- {polysimulator-0.4.2 → polysimulator-0.4.3}/polysim_polymarket/clients/_common.py +0 -0
- {polysimulator-0.4.2 → polysimulator-0.4.3}/polysim_polymarket/clients/_onchain.py +0 -0
- {polysimulator-0.4.2 → polysimulator-0.4.3}/polysim_polymarket/clients/async_public.py +0 -0
- {polysimulator-0.4.2 → polysimulator-0.4.3}/polysim_polymarket/clients/async_secure.py +0 -0
- {polysimulator-0.4.2 → polysimulator-0.4.3}/polysim_polymarket/clients/public.py +0 -0
- {polysimulator-0.4.2 → polysimulator-0.4.3}/polysim_polymarket/clients/secure.py +0 -0
- {polysimulator-0.4.2 → polysimulator-0.4.3}/polysim_polymarket/environments.py +0 -0
- {polysimulator-0.4.2 → polysimulator-0.4.3}/polysim_polymarket/errors.py +0 -0
- {polysimulator-0.4.2 → polysimulator-0.4.3}/polysim_polymarket/pagination.py +0 -0
- {polysimulator-0.4.2 → polysimulator-0.4.3}/polysim_polymarket/streams/__init__.py +0 -0
- {polysimulator-0.4.2 → polysimulator-0.4.3}/polysim_polymarket/streams/_adapt.py +0 -0
- {polysimulator-0.4.2 → polysimulator-0.4.3}/polysim_polymarket/streams/_crypto_events.py +0 -0
- {polysimulator-0.4.2 → polysimulator-0.4.3}/polysim_polymarket/streams/_handle.py +0 -0
- {polysimulator-0.4.2 → polysimulator-0.4.3}/polysim_polymarket/streams/_market_events.py +0 -0
- {polysimulator-0.4.2 → polysimulator-0.4.3}/polysim_polymarket/streams/_runner.py +0 -0
- {polysimulator-0.4.2 → polysimulator-0.4.3}/polysim_polymarket/streams/_specs.py +0 -0
- {polysimulator-0.4.2 → polysimulator-0.4.3}/polysim_polymarket/streams/_stream_open.py +0 -0
- {polysimulator-0.4.2 → polysimulator-0.4.3}/polysim_polymarket/streams/_user_events.py +0 -0
- {polysimulator-0.4.2 → polysimulator-0.4.3}/polysim_polymarket/streams/_validators.py +0 -0
- {polysimulator-0.4.2 → polysimulator-0.4.3}/polysim_sdk/__init__.py +0 -0
- {polysimulator-0.4.2 → polysimulator-0.4.3}/polysim_sdk/_http.py +0 -0
- {polysimulator-0.4.2 → polysimulator-0.4.3}/polysim_sdk/_shared.py +0 -0
- {polysimulator-0.4.2 → polysimulator-0.4.3}/polysim_sdk/aio.py +0 -0
- {polysimulator-0.4.2 → polysimulator-0.4.3}/polysim_sdk/client.py +0 -0
- {polysimulator-0.4.2 → polysimulator-0.4.3}/polysim_sdk/constants.py +0 -0
- {polysimulator-0.4.2 → polysimulator-0.4.3}/polysim_sdk/exceptions.py +0 -0
- {polysimulator-0.4.2 → polysimulator-0.4.3}/polysim_sdk/pagination.py +0 -0
- {polysimulator-0.4.2 → polysimulator-0.4.3}/polysim_sdk/retry.py +0 -0
- {polysimulator-0.4.2 → polysimulator-0.4.3}/polysim_sdk/sse.py +0 -0
- {polysimulator-0.4.2 → polysimulator-0.4.3}/polysim_sdk/updown.py +0 -0
- {polysimulator-0.4.2 → polysimulator-0.4.3}/polysim_sdk/ws.py +0 -0
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: polysimulator
|
|
3
|
-
Version: 0.4.
|
|
4
|
-
Summary: Python SDK for the PolySimulator paper-trading API, with py-clob-client v1 drop-in parity (not py-clob-client-v2) and a polysim_polymarket paper-mode mirror of Polymarket's unified py-sdk (polymarket-client 0.1.
|
|
3
|
+
Version: 0.4.3
|
|
4
|
+
Summary: Python SDK for the PolySimulator paper-trading API, with py-clob-client v1 drop-in parity (not py-clob-client-v2) and a polysim_polymarket paper-mode mirror of Polymarket's unified py-sdk (polymarket-client 0.1.0b13).
|
|
5
5
|
Project-URL: Homepage, https://polysimulator.com
|
|
6
6
|
Project-URL: Documentation, https://docs.polysimulator.com
|
|
7
7
|
Project-URL: API Reference, https://api.polysimulator.com/docs
|
|
@@ -26,7 +26,7 @@ Requires-Dist: websockets<17,>=12
|
|
|
26
26
|
Provides-Extra: dev
|
|
27
27
|
Requires-Dist: build>=1.0; extra == 'dev'
|
|
28
28
|
Requires-Dist: mypy>=1.10; extra == 'dev'
|
|
29
|
-
Requires-Dist: polymarket-client==0.1.
|
|
29
|
+
Requires-Dist: polymarket-client==0.1.0b13; extra == 'dev'
|
|
30
30
|
Requires-Dist: pytest-asyncio>=0.23; extra == 'dev'
|
|
31
31
|
Requires-Dist: pytest>=8; extra == 'dev'
|
|
32
32
|
Requires-Dist: respx>=0.21; extra == 'dev'
|
|
@@ -40,9 +40,9 @@ Description-Content-Type: text/markdown
|
|
|
40
40
|
[](https://pypi.org/project/polysimulator/)
|
|
41
41
|
[](https://www.apache.org/licenses/LICENSE-2.0)
|
|
42
42
|
[](https://github.com/Polymarket/py-clob-client)
|
|
43
|
-
[](https://pypi.org/project/polymarket-client/)
|
|
44
44
|
|
|
45
|
-
> **Mirrors Polymarket's unified py-sdk** — `polysim_polymarket` is a paper-mode mirror of [`polymarket-client`](https://pypi.org/project/polymarket-client/) **`0.1.
|
|
45
|
+
> **Mirrors Polymarket's unified py-sdk** — `polysim_polymarket` is a paper-mode mirror of [`polymarket-client`](https://pypi.org/project/polymarket-client/) **`0.1.0b13`**: sync + async PublicClient/SecureClient, trading, and core streams. Swap the import prefix + host + auth and your py-sdk bot runs on paper. [Compat matrix ↓](#compat-matrix)
|
|
46
46
|
|
|
47
47
|
The official Python client for the [PolySimulator](https://polysimulator.com)
|
|
48
48
|
paper-trading API. **One package, three import surfaces:**
|
|
@@ -296,7 +296,7 @@ paper-mode-native and not tied to any `py-clob-client` generation.
|
|
|
296
296
|
|---|---|
|
|
297
297
|
| `py-clob-client` v1 (`< 2.0`; latest `0.34.6`) | ✅ Drop-in via `polysim_clob_client` |
|
|
298
298
|
| `py-clob-client-v2` (`1.0.x`) | ❌ Not supported — use `polysim_sdk`, or pin `py-clob-client<2` |
|
|
299
|
-
| unified **py-sdk** (`polymarket-client`, import `polymarket`; `0.1.
|
|
299
|
+
| unified **py-sdk** (`polymarket-client`, import `polymarket`; `0.1.0b13`) | 🔶 **Paper-mode mirror** via `polysim_polymarket` — sync + async `PublicClient` / `SecureClient` (reads, account/auth, trading) + core streams; on-chain are paper no-ops and Gamma/Data reads are deferred. See [below](#polymarket-py-sdk-v2-mirror) and the [compat matrix](#compat-matrix) |
|
|
300
300
|
|
|
301
301
|
The v2-only concepts — EIP-712 v2 signing, pUSD collateral, protocol-side fees,
|
|
302
302
|
builder codes — have no analog in paper trading, so there is nothing to port:
|
|
@@ -481,7 +481,7 @@ mirrored surface and respected the seams above.
|
|
|
481
481
|
|
|
482
482
|
### Compat matrix
|
|
483
483
|
|
|
484
|
-
> Pinned to **`polymarket-client==0.1.
|
|
484
|
+
> Pinned to **`polymarket-client==0.1.0b13`** — parity is re-locked against this exact pin by the full-surface parity gate; when the pin bumps, this matrix + the badge bump with it.
|
|
485
485
|
|
|
486
486
|
Support level for every py-sdk surface area, cross-checked against what's
|
|
487
487
|
actually implemented in `polysim_polymarket`:
|
|
@@ -4,9 +4,9 @@
|
|
|
4
4
|
[](https://pypi.org/project/polysimulator/)
|
|
5
5
|
[](https://www.apache.org/licenses/LICENSE-2.0)
|
|
6
6
|
[](https://github.com/Polymarket/py-clob-client)
|
|
7
|
-
[](https://pypi.org/project/polymarket-client/)
|
|
8
8
|
|
|
9
|
-
> **Mirrors Polymarket's unified py-sdk** — `polysim_polymarket` is a paper-mode mirror of [`polymarket-client`](https://pypi.org/project/polymarket-client/) **`0.1.
|
|
9
|
+
> **Mirrors Polymarket's unified py-sdk** — `polysim_polymarket` is a paper-mode mirror of [`polymarket-client`](https://pypi.org/project/polymarket-client/) **`0.1.0b13`**: sync + async PublicClient/SecureClient, trading, and core streams. Swap the import prefix + host + auth and your py-sdk bot runs on paper. [Compat matrix ↓](#compat-matrix)
|
|
10
10
|
|
|
11
11
|
The official Python client for the [PolySimulator](https://polysimulator.com)
|
|
12
12
|
paper-trading API. **One package, three import surfaces:**
|
|
@@ -260,7 +260,7 @@ paper-mode-native and not tied to any `py-clob-client` generation.
|
|
|
260
260
|
|---|---|
|
|
261
261
|
| `py-clob-client` v1 (`< 2.0`; latest `0.34.6`) | ✅ Drop-in via `polysim_clob_client` |
|
|
262
262
|
| `py-clob-client-v2` (`1.0.x`) | ❌ Not supported — use `polysim_sdk`, or pin `py-clob-client<2` |
|
|
263
|
-
| unified **py-sdk** (`polymarket-client`, import `polymarket`; `0.1.
|
|
263
|
+
| unified **py-sdk** (`polymarket-client`, import `polymarket`; `0.1.0b13`) | 🔶 **Paper-mode mirror** via `polysim_polymarket` — sync + async `PublicClient` / `SecureClient` (reads, account/auth, trading) + core streams; on-chain are paper no-ops and Gamma/Data reads are deferred. See [below](#polymarket-py-sdk-v2-mirror) and the [compat matrix](#compat-matrix) |
|
|
264
264
|
|
|
265
265
|
The v2-only concepts — EIP-712 v2 signing, pUSD collateral, protocol-side fees,
|
|
266
266
|
builder codes — have no analog in paper trading, so there is nothing to port:
|
|
@@ -445,7 +445,7 @@ mirrored surface and respected the seams above.
|
|
|
445
445
|
|
|
446
446
|
### Compat matrix
|
|
447
447
|
|
|
448
|
-
> Pinned to **`polymarket-client==0.1.
|
|
448
|
+
> Pinned to **`polymarket-client==0.1.0b13`** — parity is re-locked against this exact pin by the full-surface parity gate; when the pin bumps, this matrix + the badge bump with it.
|
|
449
449
|
|
|
450
450
|
Support level for every py-sdk surface area, cross-checked against what's
|
|
451
451
|
actually implemented in `polysim_polymarket`:
|
|
@@ -23,7 +23,7 @@ This ships the full mirrored surface: sync + async ``PublicClient`` /
|
|
|
23
23
|
``SecureClient`` covering CLOB market-data reads, account/auth, and the trading
|
|
24
24
|
write surface, plus on-chain paper no-ops, rewards/builder/RFQ stubs, and the
|
|
25
25
|
core realtime streams (``market`` / ``user`` / ``crypto_prices``) — a paper-mode
|
|
26
|
-
mirror of ``polymarket-client`` ``0.1.
|
|
26
|
+
mirror of ``polymarket-client`` ``0.1.0b13``, returning typed pydantic models.
|
|
27
27
|
"""
|
|
28
28
|
|
|
29
29
|
from __future__ import annotations
|
|
@@ -111,6 +111,7 @@ from polysim_polymarket.rfq import (
|
|
|
111
111
|
RfqRequestorPublicId,
|
|
112
112
|
RfqSession,
|
|
113
113
|
RfqSide,
|
|
114
|
+
RfqTradeEvent,
|
|
114
115
|
)
|
|
115
116
|
from polysim_sdk import __version__
|
|
116
117
|
|
|
@@ -221,6 +222,7 @@ __all__ = [
|
|
|
221
222
|
"RfqRequestorPublicId",
|
|
222
223
|
"RfqSession",
|
|
223
224
|
"RfqSide",
|
|
225
|
+
"RfqTradeEvent",
|
|
224
226
|
"SecureClient",
|
|
225
227
|
"SignedOrder",
|
|
226
228
|
"SyncTransactionHandle",
|
|
@@ -58,10 +58,11 @@ DEFAULT_SELL_WORST_PRICE = Decimal("0.01")
|
|
|
58
58
|
_VALID_MARKET_ORDER_TYPES = frozenset({"FAK", "FOK"})
|
|
59
59
|
|
|
60
60
|
# py-sdk requires a GTD ``expiration`` to be an ABSOLUTE Unix timestamp at least
|
|
61
|
-
# this many seconds in the future (``limit._MIN_EXPIRATION_BUFFER_S``); a sub-
|
|
62
|
-
# or past timestamp is rejected before any request.
|
|
63
|
-
#
|
|
64
|
-
|
|
61
|
+
# this many seconds in the future (``limit._MIN_EXPIRATION_BUFFER_S``); a sub-180s
|
|
62
|
+
# or past timestamp is rejected before any request. py-sdk b13 raised this floor
|
|
63
|
+
# from 60s to 180s (3-minute minimum GTD). We mirror the constant + rule + message
|
|
64
|
+
# so a ported bot's bad-expiration call raises identically.
|
|
65
|
+
_MIN_EXPIRATION_BUFFER_S = 180
|
|
65
66
|
|
|
66
67
|
# A long all-digit token id is a real Polymarket CLOB outcome-token id (not a
|
|
67
68
|
# PolySim condition id); it needs reverse-resolution via the network. Matches the
|
|
@@ -249,8 +250,8 @@ def build_limit_order(
|
|
|
249
250
|
raise UserInputError("expiration must be a non-negative integer.")
|
|
250
251
|
if expiration < 0:
|
|
251
252
|
raise UserInputError("expiration must be a non-negative integer.")
|
|
252
|
-
# py-sdk: an ABSOLUTE Unix ts must be ≥ now +
|
|
253
|
-
# non-negative check, exactly as py-sdk orders the two guards.
|
|
253
|
+
# py-sdk: an ABSOLUTE Unix ts must be ≥ now + 180s (b13's 3-min floor).
|
|
254
|
+
# Layered AFTER the non-negative check, exactly as py-sdk orders the two guards.
|
|
254
255
|
minimum = int(time.time()) + _MIN_EXPIRATION_BUFFER_S
|
|
255
256
|
if expiration < minimum:
|
|
256
257
|
raise UserInputError(
|
|
@@ -332,7 +332,7 @@ OrderPostStatus: TypeAlias = Literal["live", "matched", "delayed"]
|
|
|
332
332
|
# price increments a CLOB market can use. py-sdk defines it exactly as below; a
|
|
333
333
|
# ported bot that type-hints a tick size against this alias keeps the same type
|
|
334
334
|
# across the prefix swap.
|
|
335
|
-
TickSize: TypeAlias = Literal["0.1", "0.01", "0.001", "0.0001"]
|
|
335
|
+
TickSize: TypeAlias = Literal["0.1", "0.01", "0.005", "0.0025", "0.001", "0.0001"]
|
|
336
336
|
|
|
337
337
|
# Mirrors ``polymarket.models.clob.order_response.OrderResponseErrorCode`` — the
|
|
338
338
|
# closed set of reasons a posted order is rejected.
|
|
@@ -100,6 +100,8 @@ class RfqErrorCode(StrEnum):
|
|
|
100
100
|
INVALID_RFQ = "INVALID_RFQ"
|
|
101
101
|
INVALID_RFQ_STATE = "INVALID_RFQ_STATE"
|
|
102
102
|
INVALID_ROLE = "INVALID_ROLE"
|
|
103
|
+
INVALID_SIGNATURE = "INVALID_SIGNATURE"
|
|
104
|
+
INTERNAL_ERROR = "INTERNAL_ERROR"
|
|
103
105
|
LEG_METADATA_UNAVAILABLE = "LEG_METADATA_UNAVAILABLE"
|
|
104
106
|
MAKER_ALREADY_RESPONDED = "MAKER_ALREADY_RESPONDED"
|
|
105
107
|
MAKER_NOT_REQUIRED = "MAKER_NOT_REQUIRED"
|
|
@@ -148,6 +150,29 @@ class RfqExecutionUpdateEvent:
|
|
|
148
150
|
tx_hash: str | None = None
|
|
149
151
|
|
|
150
152
|
|
|
153
|
+
@dataclass(frozen=True, slots=True, kw_only=True)
|
|
154
|
+
class RfqTradeEvent:
|
|
155
|
+
"""A confirmed-trade broadcast. Mirrors ``polymarket.rfq.RfqTradeEvent`` (py-sdk b9+).
|
|
156
|
+
|
|
157
|
+
A pure data event (no live-session methods) — pushed when an RFQ leg trade is
|
|
158
|
+
confirmed. The TYPE is importable so a bot's ``RfqEvent`` handler type-checks
|
|
159
|
+
and ``isinstance`` resolves across the prefix swap. (py-sdk's ``condition_id`` /
|
|
160
|
+
``leg_position_ids`` carry the ``ComboConditionId`` / ``PositionId`` aliases,
|
|
161
|
+
which are plain ``str`` — the mirror uses bare ``str`` like its sibling events.)
|
|
162
|
+
"""
|
|
163
|
+
|
|
164
|
+
type: Literal["trade"]
|
|
165
|
+
rfq_id: RfqId
|
|
166
|
+
requester_id: RfqRequestorPublicId
|
|
167
|
+
condition_id: str
|
|
168
|
+
leg_position_ids: tuple[str, ...]
|
|
169
|
+
direction: RfqDirection
|
|
170
|
+
side: RfqSide
|
|
171
|
+
price: Decimal
|
|
172
|
+
size: Decimal
|
|
173
|
+
executed_at: int
|
|
174
|
+
|
|
175
|
+
|
|
151
176
|
@dataclass(frozen=True, slots=True, kw_only=True)
|
|
152
177
|
class RfqQuoteRequestEvent:
|
|
153
178
|
"""A maker's quote-request event. Mirrors ``polymarket.rfq.RfqQuoteRequestEvent``.
|
|
@@ -215,7 +240,9 @@ class RfqConfirmationRequestEvent:
|
|
|
215
240
|
raise NotImplementedError(RFQ_NOT_SIMULATED)
|
|
216
241
|
|
|
217
242
|
|
|
218
|
-
RfqEvent =
|
|
243
|
+
RfqEvent = (
|
|
244
|
+
RfqQuoteRequestEvent | RfqConfirmationRequestEvent | RfqExecutionUpdateEvent | RfqTradeEvent
|
|
245
|
+
)
|
|
219
246
|
|
|
220
247
|
|
|
221
248
|
class RfqQuoteRejectedError(PolyException):
|
|
@@ -225,10 +252,18 @@ class RfqQuoteRejectedError(PolyException):
|
|
|
225
252
|
error-tree divergence from py-sdk's ``PolymarketError``).
|
|
226
253
|
"""
|
|
227
254
|
|
|
228
|
-
def __init__(
|
|
255
|
+
def __init__(
|
|
256
|
+
self,
|
|
257
|
+
message: str,
|
|
258
|
+
*,
|
|
259
|
+
rfq_id: RfqId,
|
|
260
|
+
code: RfqErrorCode | None = None,
|
|
261
|
+
error_id: str | None = None,
|
|
262
|
+
) -> None:
|
|
229
263
|
super().__init__(message)
|
|
230
264
|
self.rfq_id = rfq_id
|
|
231
265
|
self.code = code
|
|
266
|
+
self.error_id = error_id
|
|
232
267
|
|
|
233
268
|
|
|
234
269
|
class RfqCancelQuoteRejectedError(PolyException):
|
|
@@ -241,11 +276,13 @@ class RfqCancelQuoteRejectedError(PolyException):
|
|
|
241
276
|
rfq_id: RfqId,
|
|
242
277
|
quote_id: RfqQuoteId,
|
|
243
278
|
code: RfqErrorCode | None = None,
|
|
279
|
+
error_id: str | None = None,
|
|
244
280
|
) -> None:
|
|
245
281
|
super().__init__(message)
|
|
246
282
|
self.rfq_id = rfq_id
|
|
247
283
|
self.quote_id = quote_id
|
|
248
284
|
self.code = code
|
|
285
|
+
self.error_id = error_id
|
|
249
286
|
|
|
250
287
|
|
|
251
288
|
class RfqConfirmationRejectedError(PolyException):
|
|
@@ -258,11 +295,13 @@ class RfqConfirmationRejectedError(PolyException):
|
|
|
258
295
|
rfq_id: RfqId,
|
|
259
296
|
quote_id: RfqQuoteId,
|
|
260
297
|
code: RfqErrorCode | None = None,
|
|
298
|
+
error_id: str | None = None,
|
|
261
299
|
) -> None:
|
|
262
300
|
super().__init__(message)
|
|
263
301
|
self.rfq_id = rfq_id
|
|
264
302
|
self.quote_id = quote_id
|
|
265
303
|
self.code = code
|
|
304
|
+
self.error_id = error_id
|
|
266
305
|
|
|
267
306
|
|
|
268
307
|
@runtime_checkable
|
|
@@ -325,4 +364,5 @@ __all__ = [
|
|
|
325
364
|
"RfqRequestorPublicId",
|
|
326
365
|
"RfqSession",
|
|
327
366
|
"RfqSide",
|
|
367
|
+
"RfqTradeEvent",
|
|
328
368
|
]
|
|
@@ -14,7 +14,7 @@ from importlib.metadata import PackageNotFoundError, version
|
|
|
14
14
|
# Fallback for a checkout with no installed distribution metadata (e.g. running
|
|
15
15
|
# straight from source without ``pip install -e``). Kept in sync with
|
|
16
16
|
# ``[project].version`` as a last resort only — the metadata read is canonical.
|
|
17
|
-
_FALLBACK_VERSION = "0.4.
|
|
17
|
+
_FALLBACK_VERSION = "0.4.3"
|
|
18
18
|
|
|
19
19
|
try:
|
|
20
20
|
__version__ = version("polysimulator")
|
|
@@ -4,8 +4,8 @@ build-backend = "hatchling.build"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "polysimulator"
|
|
7
|
-
version = "0.4.
|
|
8
|
-
description = "Python SDK for the PolySimulator paper-trading API, with py-clob-client v1 drop-in parity (not py-clob-client-v2) and a polysim_polymarket paper-mode mirror of Polymarket's unified py-sdk (polymarket-client 0.1.
|
|
7
|
+
version = "0.4.3"
|
|
8
|
+
description = "Python SDK for the PolySimulator paper-trading API, with py-clob-client v1 drop-in parity (not py-clob-client-v2) and a polysim_polymarket paper-mode mirror of Polymarket's unified py-sdk (polymarket-client 0.1.0b13)."
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
requires-python = ">=3.10"
|
|
11
11
|
license = "Apache-2.0"
|
|
@@ -46,7 +46,7 @@ dev = [
|
|
|
46
46
|
# ``polysim_polymarket`` mirror is built against. Used by the surface-parity
|
|
47
47
|
# tests to assert signature/field fidelity. The explicit ``b8`` build pins a
|
|
48
48
|
# prerelease that installs without ``--pre``.
|
|
49
|
-
"polymarket-client==0.1.
|
|
49
|
+
"polymarket-client==0.1.0b13",
|
|
50
50
|
]
|
|
51
51
|
|
|
52
52
|
[project.urls]
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|