Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 10 additions & 0 deletions MIGRATION.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
# Migration Guide

## 1.3.1 -> 1.4.0

- All data models have been moved from submodules under `x10/perpetual/*` and
`x10/utils/model.py` into a single, dedicated `x10.models` package. A small number of
classes were also renamed to follow the consistent `*Model` suffix convention.
- `StarkPerpetualAccount` (previously in `x10.perpetual.accounts`) has moved to `x10.core.stark_account`.
- The package now ships a `py.typed` marker (PEP 561), so mypy will now type-check against
the SDK's inline annotations by default.
3 changes: 3 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -365,6 +365,9 @@ def get_private_key_from_eth_signature(eth_signature: str) -> int:

There is a new function `deposit` available on the [`AccountModule`](x10/perpetual/trading_client/account_module.py) which provides the ability to directly deposit USDC into your StarkEx account. For more details check out `call_stark_perpetual_deposit` in [contract.py](x10/perpetual/contract.py)

## Breaking changes

For a detailed list of breaking changes, please refer to the [MIGRATION.md](MIGRATION.md) file.

## Contributing

Expand Down
4 changes: 2 additions & 2 deletions examples/cases/advanced/load_testing.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,9 @@

from examples.utils import create_trading_client
from x10.config import BTC_USD_MARKET
from x10.perpetual.markets import MarketModel
from x10.models.market import MarketModel
from x10.models.order import OrderSide
from x10.perpetual.order_object import create_order_object
from x10.perpetual.orders import OrderSide
from x10.perpetual.stream_client.stream_client import PerpetualStreamClient
from x10.perpetual.trading_client import PerpetualTradingClient

Expand Down
2 changes: 1 addition & 1 deletion examples/cases/advanced/market_maker.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,8 @@

from examples.utils import create_trading_client
from x10.config import BTC_USD_MARKET
from x10.models.order import OrderSide
from x10.perpetual.orderbook import OrderBook, OrderBookEntry
from x10.perpetual.orders import OrderSide

LOGGER = logging.getLogger()
MARKET_NAME = BTC_USD_MARKET
Expand Down
2 changes: 1 addition & 1 deletion examples/cases/advanced/onboarding_with_eth_account.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
from eth_account.signers.local import LocalAccount

from examples.utils import init_env
from x10.perpetual.accounts import StarkPerpetualAccount
from x10.core.stark_account import StarkPerpetualAccount
from x10.perpetual.configuration import TESTNET_CONFIG
from x10.perpetual.trading_client.trading_client import PerpetualTradingClient
from x10.perpetual.user_client.user_client import UserClient
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,8 @@
init_env,
)
from x10.config import BTC_USD_MARKET
from x10.models.order import OrderSide, TimeInForce
from x10.perpetual.order_object import create_order_object
from x10.perpetual.orders import OrderSide, TimeInForce

LOGGER = logging.getLogger()
MARKET_NAME = BTC_USD_MARKET
Expand Down
4 changes: 2 additions & 2 deletions examples/cases/createorder/create_conditional_order.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,15 +7,15 @@
get_adjust_price_by_pct,
)
from x10.config import BTC_USD_MARKET
from x10.perpetual.order_object import OrderConditionalTriggerParam, create_order_object
from x10.perpetual.orders import (
from x10.models.order import (
OrderPriceType,
OrderSide,
OrderTriggerDirection,
OrderTriggerPriceType,
OrderType,
TimeInForce,
)
from x10.perpetual.order_object import OrderConditionalTriggerParam, create_order_object

LOGGER = logging.getLogger()
MARKET_NAME = BTC_USD_MARKET
Expand Down
2 changes: 1 addition & 1 deletion examples/cases/createorder/create_limit_order.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,8 @@
get_adjust_price_by_pct,
)
from x10.config import BTC_USD_MARKET
from x10.models.order import OrderSide, TimeInForce
from x10.perpetual.order_object import create_order_object
from x10.perpetual.orders import OrderSide, TimeInForce

LOGGER = logging.getLogger()
MARKET_NAME = BTC_USD_MARKET
Expand Down
2 changes: 1 addition & 1 deletion examples/cases/createorder/create_market_order.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,8 @@

from examples.utils import create_trading_client
from x10.config import BTC_USD_MARKET, DEFAULT_MARKET_PRICE_SLIPPAGE
from x10.models.order import OrderSide, OrderType, TimeInForce
from x10.perpetual.order_object import create_order_object
from x10.perpetual.orders import OrderSide, OrderType, TimeInForce
from x10.utils.order import get_price_with_slippage

LOGGER = logging.getLogger()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,9 @@

from examples.utils import create_blocking_client
from x10.config import BTC_USD_MARKET, DEFAULT_MARKET_PRICE_SLIPPAGE
from x10.models.order import OrderSide, OrderType, TimeInForce
from x10.perpetual.configuration import TESTNET_CONFIG
from x10.perpetual.orderbook import OrderBook
from x10.perpetual.orders import OrderSide, OrderType, TimeInForce
from x10.utils.order import get_price_with_slippage

LOGGER = logging.getLogger()
Expand Down
4 changes: 2 additions & 2 deletions examples/cases/tpsl/create_limit_order_with_partial_tpsl.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,14 +8,14 @@
get_adjust_price_by_pct,
)
from x10.config import BTC_USD_MARKET, DEFAULT_MARKET_PRICE_SLIPPAGE
from x10.perpetual.order_object import OrderTpslTriggerParam, create_order_object
from x10.perpetual.orders import (
from x10.models.order import (
OrderPriceType,
OrderSide,
OrderTpslType,
OrderTriggerPriceType,
TimeInForce,
)
from x10.perpetual.order_object import OrderTpslTriggerParam, create_order_object

LOGGER = logging.getLogger()
MARKET_NAME = BTC_USD_MARKET
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,14 +7,14 @@
get_adjust_price_by_pct,
)
from x10.config import BTC_USD_MARKET
from x10.perpetual.order_object import OrderTpslTriggerParam, create_order_object
from x10.perpetual.orders import (
from x10.models.order import (
OrderPriceType,
OrderSide,
OrderTpslType,
OrderTriggerPriceType,
TimeInForce,
)
from x10.perpetual.order_object import OrderTpslTriggerParam, create_order_object

LOGGER = logging.getLogger()
MARKET_NAME = BTC_USD_MARKET
Expand Down
4 changes: 2 additions & 2 deletions examples/cases/tpsl/create_partial_tpsl_order.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,15 +8,15 @@
get_adjust_price_by_pct,
)
from x10.config import BTC_USD_MARKET
from x10.perpetual.order_object import OrderTpslTriggerParam, create_order_object
from x10.perpetual.orders import (
from x10.models.order import (
OrderPriceType,
OrderSide,
OrderTpslType,
OrderTriggerPriceType,
OrderType,
TimeInForce,
)
from x10.perpetual.order_object import OrderTpslTriggerParam, create_order_object

LOGGER = logging.getLogger()
MARKET_NAME = BTC_USD_MARKET
Expand Down
4 changes: 2 additions & 2 deletions examples/cases/tpsl/create_position_tpsl_order.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,15 +8,15 @@
get_adjust_price_by_pct,
)
from x10.config import BTC_USD_MARKET
from x10.perpetual.order_object import OrderTpslTriggerParam, create_order_object
from x10.perpetual.orders import (
from x10.models.order import (
OrderPriceType,
OrderSide,
OrderTpslType,
OrderTriggerPriceType,
OrderType,
TimeInForce,
)
from x10.perpetual.order_object import OrderTpslTriggerParam, create_order_object

LOGGER = logging.getLogger()
MARKET_NAME = BTC_USD_MARKET
Expand Down
4 changes: 2 additions & 2 deletions examples/utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,9 +10,9 @@
import yaml
from dotenv import load_dotenv

from x10.perpetual.accounts import StarkPerpetualAccount
from x10.core.stark_account import StarkPerpetualAccount
from x10.models.market import TradingConfigModel
from x10.perpetual.configuration import TESTNET_CONFIG, EndpointConfig
from x10.perpetual.markets import TradingConfigModel
from x10.perpetual.simple_client.simple_trading_client import BlockingTradingClient
from x10.perpetual.stream_client import PerpetualStreamClient
from x10.perpetual.trading_client import PerpetualTradingClient
Expand Down
2 changes: 1 addition & 1 deletion pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ build-backend = "poetry.core.masonry.api"

[tool.poetry]
name = "x10-python-trading-starknet"
version = "1.3.1"
version = "1.4.0"
description = "Python client for X10 API"
authors = ["X10 <tech@ex10.org>"]
repository = "https://github.com/x10xchange/python_sdk"
Expand Down
22 changes: 9 additions & 13 deletions tests/conftest.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,30 +3,28 @@

@pytest.fixture
def create_accounts():
from tests.fixtures.accounts import create_accounts as _create_accounts
from tests.fixtures.account import create_accounts as _create_accounts

return _create_accounts


@pytest.fixture
def create_trading_account():
from tests.fixtures.accounts import (
create_trading_account as _create_trading_account,
)
from tests.fixtures.account import create_trading_account as _create_trading_account

return _create_trading_account


@pytest.fixture
def btc_usd_market_json_data():
from tests.fixtures.markets import get_btc_usd_market_json_data
from tests.fixtures.market import get_btc_usd_market_json_data

return get_btc_usd_market_json_data()


@pytest.fixture
def create_btc_usd_market(btc_usd_market_json_data):
from tests.fixtures.markets import create_btc_usd_market as _create_btc_usd_market
from tests.fixtures.market import create_btc_usd_market as _create_btc_usd_market

return lambda: _create_btc_usd_market(btc_usd_market_json_data)

Expand All @@ -42,7 +40,7 @@ def create_orderbook_message():

@pytest.fixture
def create_account_update_trade_message():
from tests.fixtures.accounts import (
from tests.fixtures.account import (
create_account_update_trade_message as _create_account_update_trade_message,
)

Expand All @@ -51,7 +49,7 @@ def create_account_update_trade_message():

@pytest.fixture
def create_account_update_unknown_message():
from tests.fixtures.accounts import (
from tests.fixtures.account import (
create_account_update_unknown_message as _create_account_update_unknown_message,
)

Expand All @@ -60,22 +58,20 @@ def create_account_update_unknown_message():

@pytest.fixture
def get_asset_usd():
from tests.fixtures.assets import get_asset_usd as _get_asset_usd
from tests.fixtures.asset import get_asset_usd as _get_asset_usd

return _get_asset_usd


@pytest.fixture
def get_asset_xvs():
from tests.fixtures.assets import get_asset_xvs as _get_asset_xvs
from tests.fixtures.asset import get_asset_xvs as _get_asset_xvs

return _get_asset_xvs


@pytest.fixture
def create_asset_operations():
from tests.fixtures.assets import (
create_asset_operations as _create_asset_operations,
)
from tests.fixtures.asset import create_asset_operations as _create_asset_operations

return _create_asset_operations
10 changes: 5 additions & 5 deletions tests/fixtures/accounts.py → tests/fixtures/account.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
from decimal import Decimal

from x10.perpetual.accounts import AccountModel
from x10.models.account import AccountModel


def create_accounts():
Expand All @@ -27,7 +27,7 @@ def create_accounts():


def create_trading_account():
from x10.perpetual.accounts import StarkPerpetualAccount
from x10.core.stark_account import StarkPerpetualAccount

return StarkPerpetualAccount(
vault=10002,
Expand All @@ -38,8 +38,8 @@ def create_trading_account():


def create_account_update_trade_message():
from x10.perpetual.accounts import AccountStreamDataModel
from x10.perpetual.trades import AccountTradeModel
from x10.models.account import AccountStreamDataModel
from x10.models.trade import AccountTradeModel
from x10.utils.http import WrappedStreamResponse

return WrappedStreamResponse[AccountStreamDataModel](
Expand Down Expand Up @@ -68,7 +68,7 @@ def create_account_update_trade_message():


def create_account_update_unknown_message():
from x10.perpetual.accounts import AccountStreamDataModel
from x10.models.account import AccountStreamDataModel
from x10.utils.http import WrappedStreamResponse

return WrappedStreamResponse[AccountStreamDataModel](
Expand Down
2 changes: 1 addition & 1 deletion tests/fixtures/assets.py → tests/fixtures/asset.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
from decimal import Decimal

from x10.perpetual.assets import AssetModel, AssetOperationModel
from x10.models.asset import AssetModel, AssetOperationModel


def create_asset_operations():
Expand Down
2 changes: 1 addition & 1 deletion tests/fixtures/candles.py → tests/fixtures/candle.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
from typing import List

from x10.perpetual.candles import CandleModel
from x10.models.candle import CandleModel
from x10.utils.http import WrappedStreamResponse


Expand Down
2 changes: 1 addition & 1 deletion tests/fixtures/markets.py → tests/fixtures/market.py
Original file line number Diff line number Diff line change
Expand Up @@ -185,7 +185,7 @@ def get_btc_usd_market_json_data():


def create_btc_usd_market(json_data: str):
from x10.perpetual.markets import MarketModel
from x10.models.market import MarketModel
from x10.utils.http import WrappedApiResponse

result = WrappedApiResponse[List[MarketModel]].model_validate_json(json_data)
Expand Down
2 changes: 1 addition & 1 deletion tests/fixtures/orderbook.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@


def create_orderbook_message():
from x10.perpetual.orderbooks import OrderbookQuantityModel, OrderbookUpdateModel
from x10.models.orderbook import OrderbookQuantityModel, OrderbookUpdateModel
from x10.utils.http import WrappedStreamResponse

return WrappedStreamResponse[OrderbookUpdateModel](
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,14 +5,14 @@
from hamcrest import assert_that, equal_to
from pytest_mock import MockerFixture

from x10.perpetual.configuration import TESTNET_CONFIG
from x10.perpetual.orders import (
from x10.models.order import (
OrderPriceType,
OrderSide,
OrderTriggerDirection,
OrderTriggerPriceType,
OrderType,
)
from x10.perpetual.configuration import TESTNET_CONFIG

FROZEN_NONCE = 1473459052

Expand Down
4 changes: 2 additions & 2 deletions tests/perpetual/order_object/test_limit_order_object.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,14 +6,14 @@
from hamcrest import assert_that, equal_to
from pytest_mock import MockerFixture

from x10.perpetual.configuration import TESTNET_CONFIG
from x10.perpetual.orders import (
from x10.models.order import (
OrderPriceType,
OrderSide,
OrderTpslType,
OrderTriggerPriceType,
SelfTradeProtectionLevel,
)
from x10.perpetual.configuration import TESTNET_CONFIG
from x10.utils.date import utc_now

FROZEN_NONCE = 1473459052
Expand Down
2 changes: 1 addition & 1 deletion tests/perpetual/order_object/test_market_order_object.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,8 @@
from hamcrest import assert_that, equal_to
from pytest_mock import MockerFixture

from x10.models.order import OrderSide, OrderType, TimeInForce
from x10.perpetual.configuration import TESTNET_CONFIG
from x10.perpetual.orders import OrderSide, OrderType, TimeInForce
from x10.utils.date import utc_now
from x10.utils.order import get_price_with_slippage

Expand Down
Loading
Loading