polyester-sdk 0.2.0__tar.gz → 0.3.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.
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/CHANGELOG.md +111 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/PKG-INFO +97 -25
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/README.md +93 -22
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/pyproject.toml +4 -3
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/__init__.py +6 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/_version.py +1 -1
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/_wire.py +25 -5
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/catalogs/__init__.py +28 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/codecs/bps.py +12 -2
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/codecs/decode/orders.py +7 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/codecs/decode/transfers.py +1 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/codecs/decode/triggers.py +1 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/codecs/decode/vip.py +15 -1
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/codecs/orders.py +15 -3
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/codecs/realtime_decode.py +63 -3
- polyester_sdk-0.3.0/src/polyester/codecs/spot_config.py +78 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/codecs/triggers.py +43 -17
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/errors.py +55 -6
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/gen/marketdata/v1/marketdata_pb2.py +14 -14
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/gen/marketdata/v1/marketdata_pb2.pyi +4 -2
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/models/__init__.py +4 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/models/common.py +31 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/models/trading.py +25 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/models/vip.py +21 -1
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/realtime/auth.py +10 -2
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/realtime/client.py +48 -13
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/services/_realtime_subscribe.py +15 -1
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/services/market_data.py +2 -1
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/services/market_overview.py +16 -3
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/services/trades.py +7 -7
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/services/transfers.py +4 -4
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/services/triggers.py +34 -12
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/transport.py +64 -1
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/.env.example +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/.gitignore +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/LICENSE +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/SECURITY.md +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/examples/basic_bot.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/auth.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/auth_interceptor.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/catalogs/zipper.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/catalogs/zipper_supply.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/chain/__init__.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/chain/_deps.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/chain/calldata.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/chain/destination.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/chain/environment.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/chain/fees.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/chain/rpc.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/chain/safe.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/chain/userop.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/client.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/codecs/__init__.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/codecs/address_book.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/codecs/correlation_id.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/codecs/decode/__init__.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/codecs/decode/address_book.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/codecs/decode/api_keys.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/codecs/decode/auth.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/codecs/decode/balances.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/codecs/decode/common.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/codecs/decode/deposit.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/codecs/decode/fees.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/codecs/decode/guard_signer.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/codecs/decode/heatmap.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/codecs/decode/internal_transfers.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/codecs/decode/invariants.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/codecs/decode/lifecycle.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/codecs/decode/market_data.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/codecs/decode/market_overview.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/codecs/decode/orderbook.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/codecs/decode/policies.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/codecs/decode/private_orders.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/codecs/decode/ratelimit.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/codecs/decode/resolve.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/codecs/decode/sub_accounts.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/codecs/decode/trading_rate_limits.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/codecs/decode/withdraw.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/codecs/decode/zipper.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/codecs/enums.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/codecs/guard_signer.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/codecs/heatmap.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/codecs/ledger.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/codecs/ledger_amounts.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/codecs/orderbook.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/codecs/proto_build.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/codecs/proto_helpers.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/codecs/scalars.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/codecs/sub_accounts.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/codecs/wire_decode.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/codecs/withdraw.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/environment.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/gen/__init__.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/gen/auth/__init__.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/gen/auth/v1/__init__.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/gen/auth/v1/address_book_connect.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/gen/auth/v1/address_book_pb2.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/gen/auth/v1/address_book_pb2.pyi +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/gen/auth/v1/api_keys_connect.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/gen/auth/v1/api_keys_pb2.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/gen/auth/v1/api_keys_pb2.pyi +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/gen/auth/v1/auth_connect.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/gen/auth/v1/auth_pb2.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/gen/auth/v1/auth_pb2.pyi +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/gen/auth/v1/mfa_connect.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/gen/auth/v1/mfa_pb2.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/gen/auth/v1/mfa_pb2.pyi +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/gen/auth/v1/policies_connect.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/gen/auth/v1/policies_pb2.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/gen/auth/v1/policies_pb2.pyi +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/gen/auth/v1/profile_connect.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/gen/auth/v1/profile_pb2.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/gen/auth/v1/profile_pb2.pyi +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/gen/auth/v1/resolve_connect.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/gen/auth/v1/resolve_pb2.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/gen/auth/v1/resolve_pb2.pyi +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/gen/auth/v1/social_verification_connect.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/gen/auth/v1/social_verification_pb2.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/gen/auth/v1/social_verification_pb2.pyi +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/gen/auth/v1/subaccounts_connect.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/gen/auth/v1/subaccounts_pb2.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/gen/auth/v1/subaccounts_pb2.pyi +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/gen/buf/__init__.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/gen/buf/validate/__init__.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/gen/buf/validate/validate_pb2.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/gen/buf/validate/validate_pb2.pyi +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/gen/chain/__init__.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/gen/chain/analytics/__init__.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/gen/chain/analytics/v1/__init__.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/gen/chain/analytics/v1/analytics_read_connect.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/gen/chain/analytics/v1/analytics_read_pb2.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/gen/chain/analytics/v1/analytics_read_pb2.pyi +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/gen/chain/deposit/__init__.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/gen/chain/deposit/v1/__init__.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/gen/chain/deposit/v1/deposit_connect.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/gen/chain/deposit/v1/deposit_pb2.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/gen/chain/deposit/v1/deposit_pb2.pyi +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/gen/chain/guard/__init__.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/gen/chain/guard/v1/__init__.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/gen/chain/guard/v1/guard_signer_connect.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/gen/chain/guard/v1/guard_signer_pb2.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/gen/chain/guard/v1/guard_signer_pb2.pyi +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/gen/chain/lifecycle/__init__.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/gen/chain/lifecycle/v1/__init__.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/gen/chain/lifecycle/v1/lifecycle_read_connect.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/gen/chain/lifecycle/v1/lifecycle_read_pb2.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/gen/chain/lifecycle/v1/lifecycle_read_pb2.pyi +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/gen/chain/lifecycle/v1/types_pb2.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/gen/chain/lifecycle/v1/types_pb2.pyi +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/gen/chain/withdraw/__init__.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/gen/chain/withdraw/v1/__init__.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/gen/chain/withdraw/v1/auto_withdraw_connect.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/gen/chain/withdraw/v1/auto_withdraw_pb2.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/gen/chain/withdraw/v1/auto_withdraw_pb2.pyi +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/gen/chain/withdraw/v1/withdraw_connect.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/gen/chain/withdraw/v1/withdraw_pb2.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/gen/chain/withdraw/v1/withdraw_pb2.pyi +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/gen/chain/zipper/__init__.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/gen/chain/zipper/v1/__init__.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/gen/chain/zipper/v1/reason_pb2.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/gen/chain/zipper/v1/reason_pb2.pyi +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/gen/chain/zipper/v1/zipper_connect.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/gen/chain/zipper/v1/zipper_pb2.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/gen/chain/zipper/v1/zipper_pb2.pyi +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/gen/checkpoints/__init__.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/gen/checkpoints/v1/__init__.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/gen/checkpoints/v1/checkpoints_connect.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/gen/checkpoints/v1/checkpoints_pb2.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/gen/checkpoints/v1/checkpoints_pb2.pyi +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/gen/claims/__init__.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/gen/claims/v1/__init__.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/gen/claims/v1/claims_connect.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/gen/claims/v1/claims_pb2.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/gen/claims/v1/claims_pb2.pyi +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/gen/collab/__init__.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/gen/collab/v1/__init__.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/gen/collab/v1/whiteboard_connect.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/gen/collab/v1/whiteboard_pb2.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/gen/collab/v1/whiteboard_pb2.pyi +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/gen/fees/__init__.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/gen/fees/v1/__init__.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/gen/fees/v1/fees_connect.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/gen/fees/v1/fees_pb2.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/gen/fees/v1/fees_pb2.pyi +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/gen/gnostic/__init__.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/gen/gnostic/openapi/__init__.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/gen/gnostic/openapi/v3/__init__.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/gen/gnostic/openapi/v3/annotations_pb2.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/gen/gnostic/openapi/v3/annotations_pb2.pyi +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/gen/gnostic/openapi/v3/openapiv3_pb2.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/gen/gnostic/openapi/v3/openapiv3_pb2.pyi +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/gen/google/__init__.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/gen/google/api/__init__.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/gen/google/api/annotations_pb2.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/gen/google/api/annotations_pb2.pyi +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/gen/google/api/field_behavior_pb2.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/gen/google/api/field_behavior_pb2.pyi +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/gen/google/api/http_pb2.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/gen/google/api/http_pb2.pyi +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/gen/layout/__init__.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/gen/layout/v1/__init__.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/gen/layout/v1/layout_connect.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/gen/layout/v1/layout_pb2.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/gen/layout/v1/layout_pb2.pyi +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/gen/ledger/__init__.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/gen/ledger/read/__init__.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/gen/ledger/read/v1/__init__.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/gen/ledger/read/v1/ledger_read_connect.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/gen/ledger/read/v1/ledger_read_pb2.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/gen/ledger/read/v1/ledger_read_pb2.pyi +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/gen/ledger/v1/__init__.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/gen/ledger/v1/catalog_pb2.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/gen/ledger/v1/catalog_pb2.pyi +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/gen/marketdata/__init__.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/gen/marketdata/v1/__init__.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/gen/marketdata/v1/heatmap_connect.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/gen/marketdata/v1/heatmap_pb2.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/gen/marketdata/v1/heatmap_pb2.pyi +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/gen/marketdata/v1/marketdata_connect.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/gen/marketoverview/__init__.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/gen/marketoverview/v1/__init__.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/gen/marketoverview/v1/marketoverview_connect.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/gen/marketoverview/v1/marketoverview_pb2.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/gen/marketoverview/v1/marketoverview_pb2.pyi +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/gen/orderbook/__init__.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/gen/orderbook/v1/__init__.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/gen/orderbook/v1/orderbook_connect.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/gen/orderbook/v1/orderbook_pb2.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/gen/orderbook/v1/orderbook_pb2.pyi +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/gen/orders/__init__.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/gen/orders/v1/__init__.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/gen/orders/v1/orders_connect.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/gen/orders/v1/orders_pb2.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/gen/orders/v1/orders_pb2.pyi +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/gen/orders/v1/orders_read_connect.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/gen/orders/v1/orders_read_pb2.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/gen/orders/v1/orders_read_pb2.pyi +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/gen/polychart/__init__.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/gen/polychart/events/__init__.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/gen/polychart/events/v1/__init__.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/gen/polychart/events/v1/polychart_events_pb2.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/gen/polychart/events/v1/polychart_events_pb2.pyi +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/gen/polychart/v1/__init__.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/gen/polychart/v1/polychart_connect.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/gen/polychart/v1/polychart_pb2.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/gen/polychart/v1/polychart_pb2.pyi +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/gen/polyester/__init__.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/gen/polyester/api/__init__.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/gen/polyester/api/options_pb2.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/gen/polyester/api/options_pb2.pyi +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/gen/polyester/api/validation/__init__.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/gen/polyester/api/validation/v1/__init__.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/gen/polyester/api/validation/v1/predefined_string_rules_pb2.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/gen/polyester/api/validation/v1/predefined_string_rules_pb2.pyi +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/gen/polyester/ratelimit/__init__.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/gen/polyester/ratelimit/v1/__init__.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/gen/polyester/ratelimit/v1/types_pb2.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/gen/polyester/ratelimit/v1/types_pb2.pyi +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/gen/polyester/type/__init__.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/gen/polyester/type/v1/__init__.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/gen/polyester/type/v1/u128_pb2.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/gen/polyester/type/v1/u128_pb2.pyi +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/gen/privatews/__init__.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/gen/privatews/v1/__init__.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/gen/privatews/v1/private_ws_pb2.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/gen/privatews/v1/private_ws_pb2.pyi +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/gen/ratelimit/__init__.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/gen/ratelimit/v1/__init__.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/gen/ratelimit/v1/ratelimit_connect.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/gen/ratelimit/v1/ratelimit_pb2.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/gen/ratelimit/v1/ratelimit_pb2.pyi +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/gen/rewards/__init__.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/gen/rewards/v1/__init__.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/gen/rewards/v1/rewards_connect.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/gen/rewards/v1/rewards_pb2.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/gen/rewards/v1/rewards_pb2.pyi +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/gen/swap/__init__.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/gen/swap/quickswap/__init__.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/gen/swap/quickswap/v1/__init__.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/gen/swap/quickswap/v1/quickswap_broker_connect.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/gen/swap/quickswap/v1/quickswap_broker_pb2.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/gen/swap/quickswap/v1/quickswap_broker_pb2.pyi +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/gen/swap/quickswap/v1/quickswap_connect.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/gen/swap/quickswap/v1/quickswap_pb2.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/gen/swap/quickswap/v1/quickswap_pb2.pyi +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/gen/swap/v1/__init__.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/gen/swap/v1/swap_connect.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/gen/swap/v1/swap_pb2.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/gen/swap/v1/swap_pb2.pyi +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/gen/tradews/__init__.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/gen/tradews/v1/__init__.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/gen/tradews/v1/trade_ws_pb2.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/gen/tradews/v1/trade_ws_pb2.pyi +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/gen/transfer/__init__.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/gen/transfer/v1/__init__.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/gen/transfer/v1/internal_transfer_connect.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/gen/transfer/v1/internal_transfer_pb2.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/gen/transfer/v1/internal_transfer_pb2.pyi +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/gen/triggers/__init__.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/gen/triggers/v1/__init__.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/gen/triggers/v1/triggers_connect.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/gen/triggers/v1/triggers_pb2.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/gen/triggers/v1/triggers_pb2.pyi +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/gen/vip/__init__.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/gen/vip/v1/__init__.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/gen/vip/v1/vip_connect.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/gen/vip/v1/vip_pb2.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/gen/vip/v1/vip_pb2.pyi +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/market_overview/__init__.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/market_overview/subscription.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/models/address_book.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/models/auth.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/models/fees.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/models/guard_signer.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/models/market.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/models/order_key.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/models/policies.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/models/private_orders.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/models/ratelimit.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/models/realtime.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/models/sub_accounts.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/models/trading_rate_limits.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/models/zipper.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/orderbook/__init__.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/orderbook/local_book.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/orderbook/subscription.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/patch.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/py.typed +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/realtime/__init__.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/realtime/private_orders.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/realtime/protocol.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/realtime/snapshot_then_stream.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/services/__init__.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/services/_base.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/services/_generated.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/services/_scope.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/services/_symbols.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/services/_validation.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/services/address_book.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/services/api_keys.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/services/auth.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/services/balances.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/services/chain_analytics.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/services/deposit.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/services/fees.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/services/guard_signer.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/services/heatmap.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/services/internal_transfers.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/services/layout.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/services/lifecycle.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/services/orderbook.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/services/orders.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/services/policies.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/services/polychart.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/services/profile.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/services/rate_limits.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/services/social_verification.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/services/sub_accounts.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/services/vip.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/services/whiteboard.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/services/withdraw.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/services/zipper.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/sync_subscribe.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/types/__init__.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/types/money.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.3.0}/src/polyester/user_agent.py +0 -0
|
@@ -1,5 +1,116 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 0.3.0
|
|
4
|
+
|
|
5
|
+
Git tag: `v0.3.0`. Released 2026-10-31.
|
|
6
|
+
|
|
7
|
+
**What a trading bot gains.** `trades.subscribe()`, `transfers.subscribe()`,
|
|
8
|
+
`triggers.subscribe_events()` and `market_data.subscribe_trades()` now yield
|
|
9
|
+
every event; before, the rest of each batch was dropped or garbled. Spot
|
|
10
|
+
config and the catalog expose each pair's order limits, including the new cap
|
|
11
|
+
on one market order's notional, so a bot can size orders before it sends
|
|
12
|
+
them. Rejections are easier to act on: a duplicate client order ID names the
|
|
13
|
+
order that already holds it, a clock-skew rejection is the retryable
|
|
14
|
+
`PolyesterTimestampSkewError`, and a bad key or signature is a non-retryable
|
|
15
|
+
`PolyesterAuthError` instead of a retryable server error. Replacement orders
|
|
16
|
+
report the quantity they inherited, and slippage caps and trigger inputs are
|
|
17
|
+
checked before sending the way the API checks them. The SDK now requires
|
|
18
|
+
`connectrpc` 0.10.
|
|
19
|
+
|
|
20
|
+
This release works on devnet today, and on testnet after testnet's next
|
|
21
|
+
upgrade, which brings the new private order stream.
|
|
22
|
+
|
|
23
|
+
**Breaking changes**
|
|
24
|
+
- `triggers.modify()` no longer takes `limit_price`.
|
|
25
|
+
- `max_slippage_bps` is at most 9999 for a market order that sells, a sell
|
|
26
|
+
stop-loss or take-profit market child, every trailing stop and
|
|
27
|
+
`triggers.modify()`.
|
|
28
|
+
- `trigger_price_source="mark"` raises `PolyesterValidationError`.
|
|
29
|
+
- A buy trailing stop's `limit_price` must be at least its `activation_price`.
|
|
30
|
+
- API-key rejections from the API gateway raise the retryable
|
|
31
|
+
`PolyesterTimestampSkewError` or the non-retryable `PolyesterAuthError`
|
|
32
|
+
instead of a retryable `PolyesterServerError`.
|
|
33
|
+
|
|
34
|
+
### Breaking
|
|
35
|
+
- `triggers.modify()` no longer takes `limit_price`: the API rejects any
|
|
36
|
+
change to a child's limit price. Cancel the trigger and create a new one.
|
|
37
|
+
- Slippage caps match the API: `max_slippage_bps` is 1–9999 for a market
|
|
38
|
+
order that sells, a sell stop-loss or take-profit market child, every
|
|
39
|
+
trailing stop (standalone or attached, either side) and `triggers.modify()`.
|
|
40
|
+
Buy market orders, buy stop-loss or take-profit market children and TWAP
|
|
41
|
+
slices still accept 10000.
|
|
42
|
+
- `trigger_price_source="mark"` raises `PolyesterValidationError`: spot
|
|
43
|
+
markets have no mark price. Use `"last"` or `"index"`.
|
|
44
|
+
- A buy trailing stop's `limit_price` must be at least its `activation_price`.
|
|
45
|
+
- API-key rejections from the API gateway are classified by their code.
|
|
46
|
+
`TIMESTAMP_SKEW` raises the new retryable `PolyesterTimestampSkewError`;
|
|
47
|
+
retrying signs the request again with a fresh timestamp, and the request
|
|
48
|
+
never reached a service, so `mutation_outcome_unknown()` is false. Other
|
|
49
|
+
codes such as `SIGNATURE_INVALID`, `KEY_DISABLED` or `IP_NOT_ALLOWED`
|
|
50
|
+
raise a non-retryable `PolyesterAuthError` carrying the code. Earlier
|
|
51
|
+
versions reported all of them as a retryable `PolyesterServerError`
|
|
52
|
+
without details.
|
|
53
|
+
|
|
54
|
+
### Added
|
|
55
|
+
- Spot config order limits: `SpotConfig.pair_order_limits` and
|
|
56
|
+
`client.catalogs.order_limits_for_symbol(...)` / `order_limits_for_symbol_id(...)`
|
|
57
|
+
return `PairOrderLimits` with `max_limit_qty_base`, `max_market_qty_base`
|
|
58
|
+
and `max_order_notional_quote` (decimal strings, `None` when the pair has
|
|
59
|
+
no maximum) and `max_open_orders_per_pair`. `SpotConfig.max_open_orders_total`
|
|
60
|
+
and `client.catalogs.max_open_orders_total` give the cross-pair limit. The
|
|
61
|
+
open-order counts are venue defaults; an account may have a lower limit.
|
|
62
|
+
- `PairOrderLimits.max_market_notional_quote`: the largest notional of one
|
|
63
|
+
market order in quote units, valued at a buy's protection price or a sell's
|
|
64
|
+
reference price. A larger market order is rejected with `MAX_NOTIONAL`.
|
|
65
|
+
`None` means the pair has no cap. Available on `SpotConfig.pair_order_limits`
|
|
66
|
+
and `client.catalogs.order_limits_for_symbol(...)`.
|
|
67
|
+
- `Order.inherited_cum_qty`: the filled quantity a replacement order carries
|
|
68
|
+
over from its predecessors.
|
|
69
|
+
- `action_taken` on batch replace admission and status items: `"replaced"`
|
|
70
|
+
when a successor was admitted, `"amended"` for a cancel-only outcome.
|
|
71
|
+
- `existing_order_id` on a `CONFLICT_DUPLICATE_CLIENT_ORDER_ID` rejection,
|
|
72
|
+
when the server knows the order: `PolyesterApiError.existing_order_id` on a
|
|
73
|
+
single create and `BatchCreateResultItem.existing_order_id` on a batch
|
|
74
|
+
create item.
|
|
75
|
+
- `triggers.modify()` and `triggers.resume()` no longer need `symbol` or
|
|
76
|
+
`symbol_id`; without one they target the trigger's own market. An API key
|
|
77
|
+
limited to specific markets must still pass it.
|
|
78
|
+
- `LedgerTransfer.transfer_id`, the unsigned 128-bit decimal shared by both
|
|
79
|
+
legs of a transfer.
|
|
80
|
+
- `VIPStatus.settled_volume_quality` and `average_aop_quality`
|
|
81
|
+
(`VIPMetricQuality`: `status` of `complete`, `price_unavailable` or
|
|
82
|
+
`incomplete_history`, plus `incomplete_hours`).
|
|
83
|
+
- `TriggerTrailingDetails.trigger_price`, the current trailing threshold.
|
|
84
|
+
- `AsyncRealtimeClient.subscribe_proto_batch(...)` for channels whose
|
|
85
|
+
publications batch several events.
|
|
86
|
+
- A Connect `deadline_exceeded` raises `PolyesterTimeoutError`, a subclass of
|
|
87
|
+
`PolyesterTransportError`, so existing handlers still catch it.
|
|
88
|
+
- HTTP 501 and Connect `unimplemented` raise `PolyesterNotImplementedError`,
|
|
89
|
+
a `PolyesterApiError` subclass that `PolyesterRouteNotFoundError` now
|
|
90
|
+
extends.
|
|
91
|
+
|
|
92
|
+
### Fixed
|
|
93
|
+
- `trades.subscribe()`, `transfers.subscribe()`, `triggers.subscribe_events()`
|
|
94
|
+
and `market_data.subscribe_trades()` decode the batched publications these
|
|
95
|
+
channels now send and yield each event on its own, in order. Earlier
|
|
96
|
+
versions decoded a batch as one event, which dropped or garbled the rest of
|
|
97
|
+
it. An event that fails to decode is reported through `set_on_error(...)`
|
|
98
|
+
without dropping the rest of its batch.
|
|
99
|
+
- `market_overview.create_subscription(symbols=[...])` keeps only the
|
|
100
|
+
requested markets in live and buffered updates; earlier versions filtered
|
|
101
|
+
the initial snapshot only.
|
|
102
|
+
- `trades.list(after_match_id=...)` rejects a value beyond the uint64 range
|
|
103
|
+
before sending.
|
|
104
|
+
|
|
105
|
+
### Changed
|
|
106
|
+
- `connectrpc` minimum raised from 0.9.0 to 0.10.0. 0.9.0 has no
|
|
107
|
+
`connectrpc.codec`, so the SDK failed to import with it.
|
|
108
|
+
- The package description now reads "Python SDK for the Polyester API with
|
|
109
|
+
generated protobuf types and ConnectRPC clients."
|
|
110
|
+
|
|
111
|
+
### Internal
|
|
112
|
+
- `sdk-capabilities.json` no longer carries `publicDescriptorSha256` or `generatedAt`, so a proto publication that only changes `src/polyester/gen/` and `manifest.json` no longer makes it stale; `manifest.json` stays the single source of the descriptor hash.
|
|
113
|
+
|
|
3
114
|
## 0.2.0
|
|
4
115
|
|
|
5
116
|
Git tag: `v0.2.0`.
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: polyester-sdk
|
|
3
|
-
Version: 0.
|
|
4
|
-
Summary:
|
|
3
|
+
Version: 0.3.0
|
|
4
|
+
Summary: Python SDK for the Polyester API with generated protobuf types and ConnectRPC clients.
|
|
5
5
|
Project-URL: Homepage, https://github.com/Fabric-Labs/polyester-sdk-python
|
|
6
6
|
Project-URL: Documentation, https://polyester.com/docs/sdk/python/get-started/overview
|
|
7
7
|
Project-URL: Repository, https://github.com/Fabric-Labs/polyester-sdk-python
|
|
@@ -19,7 +19,7 @@ Classifier: Programming Language :: Python :: 3.12
|
|
|
19
19
|
Classifier: Typing :: Typed
|
|
20
20
|
Requires-Python: >=3.11
|
|
21
21
|
Requires-Dist: base58>=2.1.1
|
|
22
|
-
Requires-Dist: connectrpc<0.11,>=0.
|
|
22
|
+
Requires-Dist: connectrpc<0.11,>=0.10.0
|
|
23
23
|
Requires-Dist: cryptography>=42
|
|
24
24
|
Requires-Dist: eth-abi>=5.1
|
|
25
25
|
Requires-Dist: eth-account>=0.13
|
|
@@ -28,6 +28,7 @@ Requires-Dist: eth-utils>=5.0
|
|
|
28
28
|
Requires-Dist: httpx>=0.27
|
|
29
29
|
Requires-Dist: msgspec>=0.18
|
|
30
30
|
Requires-Dist: protobuf>=7.35.0
|
|
31
|
+
Requires-Dist: pyqwest>=0.5.1
|
|
31
32
|
Requires-Dist: websockets>=15
|
|
32
33
|
Provides-Extra: chain
|
|
33
34
|
Provides-Extra: dev
|
|
@@ -48,7 +49,7 @@ Description-Content-Type: text/markdown
|
|
|
48
49
|
Official Python SDK for Polyester APIs, built for trading bots, backend jobs,
|
|
49
50
|
research notebooks, and automation.
|
|
50
51
|
|
|
51
|
-
**Status:** `0.
|
|
52
|
+
**Status:** `0.3.0`, pre-1.0: a minor release may include breaking changes (see
|
|
52
53
|
[CHANGELOG.md](CHANGELOG.md)). Proprietary license (not open source).
|
|
53
54
|
API-key only; no browser login or JWT flows.
|
|
54
55
|
|
|
@@ -115,7 +116,7 @@ API-key policy before retrying.
|
|
|
115
116
|
PyPI: https://pypi.org/project/polyester-sdk/
|
|
116
117
|
|
|
117
118
|
```bash
|
|
118
|
-
pip install "polyester-sdk==0.
|
|
119
|
+
pip install "polyester-sdk==0.3.0"
|
|
119
120
|
```
|
|
120
121
|
|
|
121
122
|
Realtime (Centrifugo) and on-chain Funding helpers are included by default.
|
|
@@ -294,7 +295,10 @@ first attempt admitted the order. After an unknown outcome, look up that id
|
|
|
294
295
|
(`get` / `list_open`) before creating again. A second create with the same id
|
|
295
296
|
is rejected (`CONFLICT_DUPLICATE_CLIENT_ORDER_ID`) even when the payload
|
|
296
297
|
matches. Only create again with that id if reconciliation shows the first
|
|
297
|
-
attempt did not admit.
|
|
298
|
+
attempt did not admit. When the server knows the order that already holds the
|
|
299
|
+
id, the rejection carries it: `PolyesterApiError.existing_order_id` on a
|
|
300
|
+
single create, `BatchCreateResultItem.existing_order_id` on a batch create
|
|
301
|
+
item (empty otherwise).
|
|
298
302
|
Client order ids accept 1 to 36 ASCII letters, digits, `.`, `_`, `:`, `/`, and
|
|
299
303
|
`-`. Batch create, cancel, and replace accept at most 20 items. `batch_create`
|
|
300
304
|
always sends `request_id` (caller value or a generated `batch-create-*` key);
|
|
@@ -362,9 +366,10 @@ prerequisite for order submission.
|
|
|
362
366
|
|
|
363
367
|
Market orders are IOC and enforce a slippage-derived execution boundary. See
|
|
364
368
|
[Market Order Price Protection](https://polyester.com/docs/developer-docs/shared-concepts/market-order-price-protection)
|
|
365
|
-
before overriding pair defaults. Set at most one of `max_slippage_bps`
|
|
366
|
-
|
|
367
|
-
|
|
369
|
+
before overriding pair defaults. Set at most one of `max_slippage_bps` or
|
|
370
|
+
`max_slippage_ticks`. `max_slippage_bps` is 1–10000 for a buy and 1–9999 for a
|
|
371
|
+
sell. Omit both to keep the pair default. The fields are rejected on limit
|
|
372
|
+
orders and if both are supplied.
|
|
368
373
|
|
|
369
374
|
```python
|
|
370
375
|
result = await client.orders.create(
|
|
@@ -386,6 +391,23 @@ Do **not** pass floats. `ticks` on `Price` means Polyester protocol price units
|
|
|
386
391
|
(fixed 1e9), not market tick-size alignment (server validates tick size).
|
|
387
392
|
Catalog hydration resolves `symbol` → `symbol_id` and quantity scales for
|
|
388
393
|
encoding; pair admission (tick/step/min qty/notional) stays on the API.
|
|
394
|
+
|
|
395
|
+
Order limits are read from the spot config. `client.catalogs.order_limits_for_symbol("BTC-USDT")`
|
|
396
|
+
(or `get_spot_config().pair_order_limits`) returns `PairOrderLimits` with
|
|
397
|
+
decimal strings `max_limit_qty_base`, `max_market_qty_base` and
|
|
398
|
+
`max_order_notional_quote` (`None` when the pair has no maximum), and
|
|
399
|
+
`max_open_orders_per_pair`. `max_market_notional_quote` caps the notional of
|
|
400
|
+
one market order, valued at a buy's protection price or a sell's reference
|
|
401
|
+
price (`None` means no cap). `client.catalogs.max_open_orders_total` (or
|
|
402
|
+
`SpotConfig.max_open_orders_total`) is the cross-pair resting-order limit.
|
|
403
|
+
The open-order counts are the venue defaults for a typical account, `0` when
|
|
404
|
+
unpublished; an account may have a lower limit of its own.
|
|
405
|
+
|
|
406
|
+
```python
|
|
407
|
+
limits = client.catalogs.order_limits_for_symbol("BTC-USDT")
|
|
408
|
+
if limits is not None and limits.max_limit_qty_base is not None:
|
|
409
|
+
print("largest limit order:", limits.max_limit_qty_base, "BTC")
|
|
410
|
+
```
|
|
389
411
|
`orders.preview_order(...)` remains the authority for balances, reservations,
|
|
390
412
|
liquidity, and other stateful rules.
|
|
391
413
|
|
|
@@ -417,7 +439,14 @@ The predecessor ID can be stale after admission; reconcile the successor IDs
|
|
|
417
439
|
and per-item phases by polling `get_batch_replace_status`. Use
|
|
418
440
|
`is_batch_replace_settled(status)` only to determine that all items have moved
|
|
419
441
|
to `working`, `rejected`, or `terminal`, not as a finality signal. Retry an
|
|
420
|
-
ambiguous batch request with the same `request_id`.
|
|
442
|
+
ambiguous batch request with the same `request_id`. Each admission and status
|
|
443
|
+
item carries `action_taken`: `"replaced"` when a successor order was admitted,
|
|
444
|
+
`"amended"` for a cancel-only outcome with no successor (keep tracking
|
|
445
|
+
`old_order_id` until it is terminal).
|
|
446
|
+
|
|
447
|
+
A replacement order's `cum_qty` includes the quantity filled by its
|
|
448
|
+
predecessors; `Order.inherited_cum_qty` is that carried-over part (zero for an
|
|
449
|
+
order never replaced).
|
|
421
450
|
|
|
422
451
|
`cancel_all(...)` requests cancellation of every matching order. The result
|
|
423
452
|
lists up to 200 of them, oldest first, in `cancelled_orders` (each with
|
|
@@ -457,7 +486,10 @@ Public catalog reads need no credentials. Authenticated VIP status, effective sp
|
|
|
457
486
|
account trading limits require an API key. `GetVIPStatus` has no subaccount selector: JWT and
|
|
458
487
|
API-key callers receive the owning root group only. USD amounts and fee percents are decimal
|
|
459
488
|
strings. Optional qualification metrics, timestamps, and next-tier thresholds stay omitted
|
|
460
|
-
when unset. `
|
|
489
|
+
when unset. `VIPStatus.settled_volume_quality` and `average_aop_quality` say how complete
|
|
490
|
+
each 30-day metric is: `status` is `complete`, `price_unavailable` (the metric is a lower
|
|
491
|
+
bound) or `incomplete_history`, with `incomplete_hours` out of 720. Both are `None` when the
|
|
492
|
+
assignment carries no qualification evidence. `policy_class` uses full protobuf enum names
|
|
461
493
|
(`TRADING_RATE_LIMIT_CLASS_PLACE` / `_CANCEL`). Rate-limit rules expose
|
|
462
494
|
`vip_tier` (not `tier`).
|
|
463
495
|
|
|
@@ -526,8 +558,9 @@ fields remain unset. `Order` also exposes `post_only`. Create/modify accept the
|
|
|
526
558
|
same policy shape as a dict or `AttachedRisk`.
|
|
527
559
|
|
|
528
560
|
A stop-loss or take-profit with `order_type="market"` takes an optional
|
|
529
|
-
slippage cap, `max_slippage_ticks` (Q9 ticks) or `max_slippage_bps
|
|
530
|
-
one; without one the pair's default
|
|
561
|
+
slippage cap, `max_slippage_ticks` (Q9 ticks) or `max_slippage_bps` (1–10000
|
|
562
|
+
for a buy, 1–9999 for a sell), at most one; without one the pair's default
|
|
563
|
+
market slippage applies. A limit child
|
|
531
564
|
takes no cap (its limit price bounds it). Either side may use either child.
|
|
532
565
|
Trigger reads show the cap as `max_slippage` (ticks, as a price delta) or
|
|
533
566
|
`max_slippage_bps`; both unset means the pair default.
|
|
@@ -548,7 +581,9 @@ A standalone trailing stop may sell or buy. A buy trailing stop tracks the
|
|
|
548
581
|
lowest price and fires when the price rises the trailing distance from it.
|
|
549
582
|
It requires `limit_price`, its maximum price: the most its child pays per
|
|
550
583
|
unit (a 9-decimal string or `Decimal`, or `Price.from_ticks` for ticks),
|
|
551
|
-
fixed at create
|
|
584
|
+
fixed at create, and at least `activation_price` when that is set. A sell
|
|
585
|
+
trailing stop takes no `limit_price`. Every trailing stop, standalone or
|
|
586
|
+
attached to an order, takes `max_slippage_bps` from 1 to 9999.
|
|
552
587
|
|
|
553
588
|
```python
|
|
554
589
|
await client.triggers.create(
|
|
@@ -564,15 +599,16 @@ await client.triggers.create(
|
|
|
564
599
|
Trigger reads show a buy trailing stop with `side="buy"`,
|
|
565
600
|
`order_type="limit"`, `time_in_force="ioc"` and its maximum price as
|
|
566
601
|
`limit_price`; `details.trailing.trough_price` is the lowest price tracked so
|
|
567
|
-
far (`peak_price` for a sell).
|
|
602
|
+
far (`peak_price` for a sell), and `details.trailing.trigger_price` is the
|
|
603
|
+
current threshold.
|
|
568
604
|
|
|
569
605
|
Stop-loss, take-profit and trailing-stop triggers, standalone or attached to
|
|
570
606
|
an order, watch the last trade price unless `trigger_price_source` names
|
|
571
|
-
another: `"last"
|
|
607
|
+
another: `"last"` or `"index"`. Spot markets have no mark price, so `"mark"`
|
|
608
|
+
raises `PolyesterValidationError`. Reads report the same label
|
|
572
609
|
(`Trigger.trigger_price_source`, `RiskLeg.trigger_price_source`,
|
|
573
610
|
`TrailingStop.trigger_price_source`), so a leg read from an order can be
|
|
574
|
-
passed back to create
|
|
575
|
-
does not support.
|
|
611
|
+
passed back to create unchanged.
|
|
576
612
|
|
|
577
613
|
```python
|
|
578
614
|
await client.triggers.create(
|
|
@@ -588,9 +624,20 @@ await client.triggers.create(
|
|
|
588
624
|
When modifying a trigger, omit `activation_price` / `max_slippage_ticks` /
|
|
589
625
|
`max_slippage_bps` to preserve the current values. Send an explicit zero
|
|
590
626
|
(`Price.from_ticks(0)` or `0`) to clear an existing activation price or
|
|
591
|
-
maximum-slippage cap.
|
|
592
|
-
|
|
593
|
-
1–10000
|
|
627
|
+
maximum-slippage cap. Modify `max_slippage_bps` is 1–9999 (the patch does not
|
|
628
|
+
say what it modifies, so it takes the cap shared by trailing stops and
|
|
629
|
+
sells); `0` clears it. Trailing distance in bps is 1–10000; trigger modify
|
|
630
|
+
accepts `0` to clear. A child's limit price is fixed at create, so `modify`
|
|
631
|
+
takes no `limit_price`: cancel the trigger and create a new one instead.
|
|
632
|
+
|
|
633
|
+
`triggers.modify(...)` and `triggers.resume(...)` do not need a symbol: without
|
|
634
|
+
`symbol` / `symbol_id` they target the trigger's own market. When given, it
|
|
635
|
+
must be that market, and an API key limited to specific markets must give it.
|
|
636
|
+
|
|
637
|
+
```python
|
|
638
|
+
await client.triggers.modify(trigger_id=trigger_id, trigger_price="82500")
|
|
639
|
+
await client.triggers.resume(trigger_id=trigger_id)
|
|
640
|
+
```
|
|
594
641
|
|
|
595
642
|
`orders.list_open(trigger_id=...)` / `orders.list_history(trigger_id=...)`
|
|
596
643
|
return only child orders created by that trigger (TWAP/ladder slices).
|
|
@@ -731,7 +778,8 @@ column response oldest-first. Sort explicitly by `ts_sec` before feeding a
|
|
|
731
778
|
chronological indicator.
|
|
732
779
|
|
|
733
780
|
Merged market overview stream (snapshot + live updates). The create call waits
|
|
734
|
-
for the WebSocket handshake and initial snapshot
|
|
781
|
+
for the WebSocket handshake and initial snapshot. With `symbols=[...]`, the
|
|
782
|
+
snapshot and every live or buffered update keep only those markets:
|
|
735
783
|
|
|
736
784
|
```python
|
|
737
785
|
sub = await client.market_overview.create_subscription(
|
|
@@ -750,6 +798,15 @@ async with sub:
|
|
|
750
798
|
channels; live orders use the private WebSocket (see Live orders below).
|
|
751
799
|
ConnectRPC's optional JSON wire mode does not apply to realtime.
|
|
752
800
|
Inbound WebSocket messages are capped at 4 MiB.
|
|
801
|
+
- Market trade, user fill (`trades.subscribe`), ledger transfer
|
|
802
|
+
(`transfers.subscribe`) and trigger event (`triggers.subscribe_events`)
|
|
803
|
+
channels publish batches. Each event of a batch is yielded on its own, in
|
|
804
|
+
order. An event that fails to decode is reported through `set_on_error(...)`
|
|
805
|
+
without dropping the rest of its batch. Both legs of a ledger transfer share
|
|
806
|
+
`LedgerTransfer.transfer_id`; with `account_code` it identifies a leg, and
|
|
807
|
+
a repeated leg replaces the earlier copy. A trigger event is identified by
|
|
808
|
+
`(trigger_id, event_type, child_seq, ts_ns)`. For your own batched channel,
|
|
809
|
+
use `realtime.subscribe_proto_batch(channel, decode_batch=...)`.
|
|
753
810
|
- Subscription queues are bounded. If the consumer falls behind, the SDK raises
|
|
754
811
|
`PolyesterRealtimeOverflowError` and faults the subscription; it does **not**
|
|
755
812
|
silently drop updates.
|
|
@@ -919,8 +976,9 @@ account; those tests may cancel every open order in their selected symbol.
|
|
|
919
976
|
|
|
920
977
|
CI requires every public Connect RPC in gen to be wrapped or listed in
|
|
921
978
|
`sdk-coverage.toml`. Contributors: `python scripts/check_sdk_coverage.py`.
|
|
922
|
-
CI
|
|
923
|
-
|
|
979
|
+
CI fails when `sdk-capabilities.json` or the README capability table is stale;
|
|
980
|
+
refresh both with `python scripts/check_sdk_coverage.py --write-capabilities`
|
|
981
|
+
and commit the result.
|
|
924
982
|
|
|
925
983
|
**Pre-release checklist (realtime changes):**
|
|
926
984
|
|
|
@@ -971,4 +1029,18 @@ Connect RPC over HTTP via generated clients in `src/polyester/gen/`. Wire format
|
|
|
971
1029
|
defaults to **binary protobuf**; pass `wire_format="json"` for debugging.
|
|
972
1030
|
|
|
973
1031
|
Some RPCs may return HTTP 404 on devnet. The SDK raises `PolyesterRouteNotFoundError`
|
|
974
|
-
with a clearer message than `[unimplemented]: Not Found`.
|
|
1032
|
+
with a clearer message than `[unimplemented]: Not Found`. HTTP 501 and Connect
|
|
1033
|
+
`unimplemented` raise `PolyesterNotImplementedError`, the parent class of
|
|
1034
|
+
`PolyesterRouteNotFoundError`; neither is retryable.
|
|
1035
|
+
|
|
1036
|
+
API-key rejections from the gateway carry a code. A request whose signed
|
|
1037
|
+
timestamp falls outside the server's skew window raises
|
|
1038
|
+
`PolyesterTimestampSkewError` (`code == "TIMESTAMP_SKEW"`). It is
|
|
1039
|
+
retryable, and the gateway rejected it before any service saw it: a retry
|
|
1040
|
+
signs again with a fresh timestamp. If it persists, fix the local clock. For
|
|
1041
|
+
large bursts, bound concurrency so requests do not wait locally past the skew
|
|
1042
|
+
window. Other gateway codes (`SIGNATURE_INVALID`, `KEY_DISABLED`,
|
|
1043
|
+
`IP_NOT_ALLOWED`, ...) raise a non-retryable `PolyesterAuthError` whose
|
|
1044
|
+
message is the code. A request whose deadline expires raises `PolyesterTimeoutError`, a
|
|
1045
|
+
`PolyesterTransportError`: retryable, but a mutation may still have been
|
|
1046
|
+
applied, so reconcile first (`mutation_outcome_unknown(error)` is true).
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
Official Python SDK for Polyester APIs, built for trading bots, backend jobs,
|
|
4
4
|
research notebooks, and automation.
|
|
5
5
|
|
|
6
|
-
**Status:** `0.
|
|
6
|
+
**Status:** `0.3.0`, pre-1.0: a minor release may include breaking changes (see
|
|
7
7
|
[CHANGELOG.md](CHANGELOG.md)). Proprietary license (not open source).
|
|
8
8
|
API-key only; no browser login or JWT flows.
|
|
9
9
|
|
|
@@ -70,7 +70,7 @@ API-key policy before retrying.
|
|
|
70
70
|
PyPI: https://pypi.org/project/polyester-sdk/
|
|
71
71
|
|
|
72
72
|
```bash
|
|
73
|
-
pip install "polyester-sdk==0.
|
|
73
|
+
pip install "polyester-sdk==0.3.0"
|
|
74
74
|
```
|
|
75
75
|
|
|
76
76
|
Realtime (Centrifugo) and on-chain Funding helpers are included by default.
|
|
@@ -249,7 +249,10 @@ first attempt admitted the order. After an unknown outcome, look up that id
|
|
|
249
249
|
(`get` / `list_open`) before creating again. A second create with the same id
|
|
250
250
|
is rejected (`CONFLICT_DUPLICATE_CLIENT_ORDER_ID`) even when the payload
|
|
251
251
|
matches. Only create again with that id if reconciliation shows the first
|
|
252
|
-
attempt did not admit.
|
|
252
|
+
attempt did not admit. When the server knows the order that already holds the
|
|
253
|
+
id, the rejection carries it: `PolyesterApiError.existing_order_id` on a
|
|
254
|
+
single create, `BatchCreateResultItem.existing_order_id` on a batch create
|
|
255
|
+
item (empty otherwise).
|
|
253
256
|
Client order ids accept 1 to 36 ASCII letters, digits, `.`, `_`, `:`, `/`, and
|
|
254
257
|
`-`. Batch create, cancel, and replace accept at most 20 items. `batch_create`
|
|
255
258
|
always sends `request_id` (caller value or a generated `batch-create-*` key);
|
|
@@ -317,9 +320,10 @@ prerequisite for order submission.
|
|
|
317
320
|
|
|
318
321
|
Market orders are IOC and enforce a slippage-derived execution boundary. See
|
|
319
322
|
[Market Order Price Protection](https://polyester.com/docs/developer-docs/shared-concepts/market-order-price-protection)
|
|
320
|
-
before overriding pair defaults. Set at most one of `max_slippage_bps`
|
|
321
|
-
|
|
322
|
-
|
|
323
|
+
before overriding pair defaults. Set at most one of `max_slippage_bps` or
|
|
324
|
+
`max_slippage_ticks`. `max_slippage_bps` is 1–10000 for a buy and 1–9999 for a
|
|
325
|
+
sell. Omit both to keep the pair default. The fields are rejected on limit
|
|
326
|
+
orders and if both are supplied.
|
|
323
327
|
|
|
324
328
|
```python
|
|
325
329
|
result = await client.orders.create(
|
|
@@ -341,6 +345,23 @@ Do **not** pass floats. `ticks` on `Price` means Polyester protocol price units
|
|
|
341
345
|
(fixed 1e9), not market tick-size alignment (server validates tick size).
|
|
342
346
|
Catalog hydration resolves `symbol` → `symbol_id` and quantity scales for
|
|
343
347
|
encoding; pair admission (tick/step/min qty/notional) stays on the API.
|
|
348
|
+
|
|
349
|
+
Order limits are read from the spot config. `client.catalogs.order_limits_for_symbol("BTC-USDT")`
|
|
350
|
+
(or `get_spot_config().pair_order_limits`) returns `PairOrderLimits` with
|
|
351
|
+
decimal strings `max_limit_qty_base`, `max_market_qty_base` and
|
|
352
|
+
`max_order_notional_quote` (`None` when the pair has no maximum), and
|
|
353
|
+
`max_open_orders_per_pair`. `max_market_notional_quote` caps the notional of
|
|
354
|
+
one market order, valued at a buy's protection price or a sell's reference
|
|
355
|
+
price (`None` means no cap). `client.catalogs.max_open_orders_total` (or
|
|
356
|
+
`SpotConfig.max_open_orders_total`) is the cross-pair resting-order limit.
|
|
357
|
+
The open-order counts are the venue defaults for a typical account, `0` when
|
|
358
|
+
unpublished; an account may have a lower limit of its own.
|
|
359
|
+
|
|
360
|
+
```python
|
|
361
|
+
limits = client.catalogs.order_limits_for_symbol("BTC-USDT")
|
|
362
|
+
if limits is not None and limits.max_limit_qty_base is not None:
|
|
363
|
+
print("largest limit order:", limits.max_limit_qty_base, "BTC")
|
|
364
|
+
```
|
|
344
365
|
`orders.preview_order(...)` remains the authority for balances, reservations,
|
|
345
366
|
liquidity, and other stateful rules.
|
|
346
367
|
|
|
@@ -372,7 +393,14 @@ The predecessor ID can be stale after admission; reconcile the successor IDs
|
|
|
372
393
|
and per-item phases by polling `get_batch_replace_status`. Use
|
|
373
394
|
`is_batch_replace_settled(status)` only to determine that all items have moved
|
|
374
395
|
to `working`, `rejected`, or `terminal`, not as a finality signal. Retry an
|
|
375
|
-
ambiguous batch request with the same `request_id`.
|
|
396
|
+
ambiguous batch request with the same `request_id`. Each admission and status
|
|
397
|
+
item carries `action_taken`: `"replaced"` when a successor order was admitted,
|
|
398
|
+
`"amended"` for a cancel-only outcome with no successor (keep tracking
|
|
399
|
+
`old_order_id` until it is terminal).
|
|
400
|
+
|
|
401
|
+
A replacement order's `cum_qty` includes the quantity filled by its
|
|
402
|
+
predecessors; `Order.inherited_cum_qty` is that carried-over part (zero for an
|
|
403
|
+
order never replaced).
|
|
376
404
|
|
|
377
405
|
`cancel_all(...)` requests cancellation of every matching order. The result
|
|
378
406
|
lists up to 200 of them, oldest first, in `cancelled_orders` (each with
|
|
@@ -412,7 +440,10 @@ Public catalog reads need no credentials. Authenticated VIP status, effective sp
|
|
|
412
440
|
account trading limits require an API key. `GetVIPStatus` has no subaccount selector: JWT and
|
|
413
441
|
API-key callers receive the owning root group only. USD amounts and fee percents are decimal
|
|
414
442
|
strings. Optional qualification metrics, timestamps, and next-tier thresholds stay omitted
|
|
415
|
-
when unset. `
|
|
443
|
+
when unset. `VIPStatus.settled_volume_quality` and `average_aop_quality` say how complete
|
|
444
|
+
each 30-day metric is: `status` is `complete`, `price_unavailable` (the metric is a lower
|
|
445
|
+
bound) or `incomplete_history`, with `incomplete_hours` out of 720. Both are `None` when the
|
|
446
|
+
assignment carries no qualification evidence. `policy_class` uses full protobuf enum names
|
|
416
447
|
(`TRADING_RATE_LIMIT_CLASS_PLACE` / `_CANCEL`). Rate-limit rules expose
|
|
417
448
|
`vip_tier` (not `tier`).
|
|
418
449
|
|
|
@@ -481,8 +512,9 @@ fields remain unset. `Order` also exposes `post_only`. Create/modify accept the
|
|
|
481
512
|
same policy shape as a dict or `AttachedRisk`.
|
|
482
513
|
|
|
483
514
|
A stop-loss or take-profit with `order_type="market"` takes an optional
|
|
484
|
-
slippage cap, `max_slippage_ticks` (Q9 ticks) or `max_slippage_bps
|
|
485
|
-
one; without one the pair's default
|
|
515
|
+
slippage cap, `max_slippage_ticks` (Q9 ticks) or `max_slippage_bps` (1–10000
|
|
516
|
+
for a buy, 1–9999 for a sell), at most one; without one the pair's default
|
|
517
|
+
market slippage applies. A limit child
|
|
486
518
|
takes no cap (its limit price bounds it). Either side may use either child.
|
|
487
519
|
Trigger reads show the cap as `max_slippage` (ticks, as a price delta) or
|
|
488
520
|
`max_slippage_bps`; both unset means the pair default.
|
|
@@ -503,7 +535,9 @@ A standalone trailing stop may sell or buy. A buy trailing stop tracks the
|
|
|
503
535
|
lowest price and fires when the price rises the trailing distance from it.
|
|
504
536
|
It requires `limit_price`, its maximum price: the most its child pays per
|
|
505
537
|
unit (a 9-decimal string or `Decimal`, or `Price.from_ticks` for ticks),
|
|
506
|
-
fixed at create
|
|
538
|
+
fixed at create, and at least `activation_price` when that is set. A sell
|
|
539
|
+
trailing stop takes no `limit_price`. Every trailing stop, standalone or
|
|
540
|
+
attached to an order, takes `max_slippage_bps` from 1 to 9999.
|
|
507
541
|
|
|
508
542
|
```python
|
|
509
543
|
await client.triggers.create(
|
|
@@ -519,15 +553,16 @@ await client.triggers.create(
|
|
|
519
553
|
Trigger reads show a buy trailing stop with `side="buy"`,
|
|
520
554
|
`order_type="limit"`, `time_in_force="ioc"` and its maximum price as
|
|
521
555
|
`limit_price`; `details.trailing.trough_price` is the lowest price tracked so
|
|
522
|
-
far (`peak_price` for a sell).
|
|
556
|
+
far (`peak_price` for a sell), and `details.trailing.trigger_price` is the
|
|
557
|
+
current threshold.
|
|
523
558
|
|
|
524
559
|
Stop-loss, take-profit and trailing-stop triggers, standalone or attached to
|
|
525
560
|
an order, watch the last trade price unless `trigger_price_source` names
|
|
526
|
-
another: `"last"
|
|
561
|
+
another: `"last"` or `"index"`. Spot markets have no mark price, so `"mark"`
|
|
562
|
+
raises `PolyesterValidationError`. Reads report the same label
|
|
527
563
|
(`Trigger.trigger_price_source`, `RiskLeg.trigger_price_source`,
|
|
528
564
|
`TrailingStop.trigger_price_source`), so a leg read from an order can be
|
|
529
|
-
passed back to create
|
|
530
|
-
does not support.
|
|
565
|
+
passed back to create unchanged.
|
|
531
566
|
|
|
532
567
|
```python
|
|
533
568
|
await client.triggers.create(
|
|
@@ -543,9 +578,20 @@ await client.triggers.create(
|
|
|
543
578
|
When modifying a trigger, omit `activation_price` / `max_slippage_ticks` /
|
|
544
579
|
`max_slippage_bps` to preserve the current values. Send an explicit zero
|
|
545
580
|
(`Price.from_ticks(0)` or `0`) to clear an existing activation price or
|
|
546
|
-
maximum-slippage cap.
|
|
547
|
-
|
|
548
|
-
1–10000
|
|
581
|
+
maximum-slippage cap. Modify `max_slippage_bps` is 1–9999 (the patch does not
|
|
582
|
+
say what it modifies, so it takes the cap shared by trailing stops and
|
|
583
|
+
sells); `0` clears it. Trailing distance in bps is 1–10000; trigger modify
|
|
584
|
+
accepts `0` to clear. A child's limit price is fixed at create, so `modify`
|
|
585
|
+
takes no `limit_price`: cancel the trigger and create a new one instead.
|
|
586
|
+
|
|
587
|
+
`triggers.modify(...)` and `triggers.resume(...)` do not need a symbol: without
|
|
588
|
+
`symbol` / `symbol_id` they target the trigger's own market. When given, it
|
|
589
|
+
must be that market, and an API key limited to specific markets must give it.
|
|
590
|
+
|
|
591
|
+
```python
|
|
592
|
+
await client.triggers.modify(trigger_id=trigger_id, trigger_price="82500")
|
|
593
|
+
await client.triggers.resume(trigger_id=trigger_id)
|
|
594
|
+
```
|
|
549
595
|
|
|
550
596
|
`orders.list_open(trigger_id=...)` / `orders.list_history(trigger_id=...)`
|
|
551
597
|
return only child orders created by that trigger (TWAP/ladder slices).
|
|
@@ -686,7 +732,8 @@ column response oldest-first. Sort explicitly by `ts_sec` before feeding a
|
|
|
686
732
|
chronological indicator.
|
|
687
733
|
|
|
688
734
|
Merged market overview stream (snapshot + live updates). The create call waits
|
|
689
|
-
for the WebSocket handshake and initial snapshot
|
|
735
|
+
for the WebSocket handshake and initial snapshot. With `symbols=[...]`, the
|
|
736
|
+
snapshot and every live or buffered update keep only those markets:
|
|
690
737
|
|
|
691
738
|
```python
|
|
692
739
|
sub = await client.market_overview.create_subscription(
|
|
@@ -705,6 +752,15 @@ async with sub:
|
|
|
705
752
|
channels; live orders use the private WebSocket (see Live orders below).
|
|
706
753
|
ConnectRPC's optional JSON wire mode does not apply to realtime.
|
|
707
754
|
Inbound WebSocket messages are capped at 4 MiB.
|
|
755
|
+
- Market trade, user fill (`trades.subscribe`), ledger transfer
|
|
756
|
+
(`transfers.subscribe`) and trigger event (`triggers.subscribe_events`)
|
|
757
|
+
channels publish batches. Each event of a batch is yielded on its own, in
|
|
758
|
+
order. An event that fails to decode is reported through `set_on_error(...)`
|
|
759
|
+
without dropping the rest of its batch. Both legs of a ledger transfer share
|
|
760
|
+
`LedgerTransfer.transfer_id`; with `account_code` it identifies a leg, and
|
|
761
|
+
a repeated leg replaces the earlier copy. A trigger event is identified by
|
|
762
|
+
`(trigger_id, event_type, child_seq, ts_ns)`. For your own batched channel,
|
|
763
|
+
use `realtime.subscribe_proto_batch(channel, decode_batch=...)`.
|
|
708
764
|
- Subscription queues are bounded. If the consumer falls behind, the SDK raises
|
|
709
765
|
`PolyesterRealtimeOverflowError` and faults the subscription; it does **not**
|
|
710
766
|
silently drop updates.
|
|
@@ -874,8 +930,9 @@ account; those tests may cancel every open order in their selected symbol.
|
|
|
874
930
|
|
|
875
931
|
CI requires every public Connect RPC in gen to be wrapped or listed in
|
|
876
932
|
`sdk-coverage.toml`. Contributors: `python scripts/check_sdk_coverage.py`.
|
|
877
|
-
CI
|
|
878
|
-
|
|
933
|
+
CI fails when `sdk-capabilities.json` or the README capability table is stale;
|
|
934
|
+
refresh both with `python scripts/check_sdk_coverage.py --write-capabilities`
|
|
935
|
+
and commit the result.
|
|
879
936
|
|
|
880
937
|
**Pre-release checklist (realtime changes):**
|
|
881
938
|
|
|
@@ -926,4 +983,18 @@ Connect RPC over HTTP via generated clients in `src/polyester/gen/`. Wire format
|
|
|
926
983
|
defaults to **binary protobuf**; pass `wire_format="json"` for debugging.
|
|
927
984
|
|
|
928
985
|
Some RPCs may return HTTP 404 on devnet. The SDK raises `PolyesterRouteNotFoundError`
|
|
929
|
-
with a clearer message than `[unimplemented]: Not Found`.
|
|
986
|
+
with a clearer message than `[unimplemented]: Not Found`. HTTP 501 and Connect
|
|
987
|
+
`unimplemented` raise `PolyesterNotImplementedError`, the parent class of
|
|
988
|
+
`PolyesterRouteNotFoundError`; neither is retryable.
|
|
989
|
+
|
|
990
|
+
API-key rejections from the gateway carry a code. A request whose signed
|
|
991
|
+
timestamp falls outside the server's skew window raises
|
|
992
|
+
`PolyesterTimestampSkewError` (`code == "TIMESTAMP_SKEW"`). It is
|
|
993
|
+
retryable, and the gateway rejected it before any service saw it: a retry
|
|
994
|
+
signs again with a fresh timestamp. If it persists, fix the local clock. For
|
|
995
|
+
large bursts, bound concurrency so requests do not wait locally past the skew
|
|
996
|
+
window. Other gateway codes (`SIGNATURE_INVALID`, `KEY_DISABLED`,
|
|
997
|
+
`IP_NOT_ALLOWED`, ...) raise a non-retryable `PolyesterAuthError` whose
|
|
998
|
+
message is the code. A request whose deadline expires raises `PolyesterTimeoutError`, a
|
|
999
|
+
`PolyesterTransportError`: retryable, but a mutation may still have been
|
|
1000
|
+
applied, so reconcile first (`mutation_outcome_unknown(error)` is true).
|
|
@@ -4,8 +4,8 @@ build-backend = "hatchling.build"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "polyester-sdk"
|
|
7
|
-
version = "0.
|
|
8
|
-
description = "
|
|
7
|
+
version = "0.3.0"
|
|
8
|
+
description = "Python SDK for the Polyester API with generated protobuf types and ConnectRPC clients."
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
requires-python = ">=3.11"
|
|
11
11
|
license = { text = "Proprietary" }
|
|
@@ -22,7 +22,7 @@ classifiers = [
|
|
|
22
22
|
]
|
|
23
23
|
dependencies = [
|
|
24
24
|
"base58>=2.1.1",
|
|
25
|
-
"connectrpc>=0.
|
|
25
|
+
"connectrpc>=0.10.0,<0.11",
|
|
26
26
|
"cryptography>=42",
|
|
27
27
|
"eth-abi>=5.1",
|
|
28
28
|
"eth-account>=0.13",
|
|
@@ -31,6 +31,7 @@ dependencies = [
|
|
|
31
31
|
"httpx>=0.27",
|
|
32
32
|
"msgspec>=0.18",
|
|
33
33
|
"protobuf>=7.35.0",
|
|
34
|
+
"pyqwest>=0.5.1",
|
|
34
35
|
"websockets>=15",
|
|
35
36
|
]
|
|
36
37
|
|
|
@@ -27,12 +27,15 @@ from polyester.errors import (
|
|
|
27
27
|
PolyesterApiError,
|
|
28
28
|
PolyesterAuthError,
|
|
29
29
|
PolyesterError,
|
|
30
|
+
PolyesterNotImplementedError,
|
|
30
31
|
PolyesterRateLimitError,
|
|
31
32
|
PolyesterRealtimeError,
|
|
32
33
|
PolyesterRealtimeOverflowError,
|
|
33
34
|
PolyesterResponseContractError,
|
|
34
35
|
PolyesterRouteNotFoundError,
|
|
35
36
|
PolyesterServerError,
|
|
37
|
+
PolyesterTimeoutError,
|
|
38
|
+
PolyesterTimestampSkewError,
|
|
36
39
|
PolyesterTransportError,
|
|
37
40
|
PolyesterValidationError,
|
|
38
41
|
auth_error_code,
|
|
@@ -73,6 +76,7 @@ __all__ = [
|
|
|
73
76
|
"environment_from_name",
|
|
74
77
|
"PolyesterAuthError",
|
|
75
78
|
"PolyesterError",
|
|
79
|
+
"PolyesterNotImplementedError",
|
|
76
80
|
"PreparedTradingWithdraw",
|
|
77
81
|
"PolyesterRateLimitError",
|
|
78
82
|
"PolyesterRealtimeError",
|
|
@@ -80,6 +84,8 @@ __all__ = [
|
|
|
80
84
|
"PolyesterResponseContractError",
|
|
81
85
|
"PolyesterRouteNotFoundError",
|
|
82
86
|
"PolyesterServerError",
|
|
87
|
+
"PolyesterTimeoutError",
|
|
88
|
+
"PolyesterTimestampSkewError",
|
|
83
89
|
"PolyesterTransportError",
|
|
84
90
|
"PolyesterValidationError",
|
|
85
91
|
"is_retryable_error",
|