atraxis-sdk 0.1.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.
- atraxis_sdk-0.1.0/.gitignore +10 -0
- atraxis_sdk-0.1.0/CHANGELOG.md +10 -0
- atraxis_sdk-0.1.0/LICENSE +22 -0
- atraxis_sdk-0.1.0/PKG-INFO +173 -0
- atraxis_sdk-0.1.0/README.md +137 -0
- atraxis_sdk-0.1.0/pyproject.toml +82 -0
- atraxis_sdk-0.1.0/scripts/sync_openapi.py +319 -0
- atraxis_sdk-0.1.0/src/atraxis/__init__.py +37 -0
- atraxis_sdk-0.1.0/src/atraxis/_contract/__init__.py +1 -0
- atraxis_sdk-0.1.0/src/atraxis/_contract/guild-commerce-v1.json +1559 -0
- atraxis_sdk-0.1.0/src/atraxis/_contract/guild-commerce-v1.sha256 +1 -0
- atraxis_sdk-0.1.0/src/atraxis/_transport.py +187 -0
- atraxis_sdk-0.1.0/src/atraxis/client.py +344 -0
- atraxis_sdk-0.1.0/src/atraxis/errors.py +84 -0
- atraxis_sdk-0.1.0/src/atraxis/mcp_server.py +305 -0
- atraxis_sdk-0.1.0/src/atraxis/models.py +464 -0
- atraxis_sdk-0.1.0/src/atraxis/py.typed +1 -0
- atraxis_sdk-0.1.0/tests/test_client.py +252 -0
- atraxis_sdk-0.1.0/tests/test_contract.py +123 -0
- atraxis_sdk-0.1.0/tests/test_mcp.py +54 -0
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
# История изменений
|
|
2
|
+
|
|
3
|
+
## 0.1.0 — 2026-09-13
|
|
4
|
+
|
|
5
|
+
- Добавлены синхронный и асинхронный клиенты всех шести методов Atraxis API.
|
|
6
|
+
- Добавлены неизменяемые модели, безопасные ошибки, пагинация и ограниченные повторы.
|
|
7
|
+
- Добавлен локальный MCP-сервер с отдельным явным разрешением на изменения.
|
|
8
|
+
- Добавлена проверяемая публичная копия OpenAPI-контракта.
|
|
9
|
+
- Документация поясняет способы пополнения склада и ограничения выдачи через API.
|
|
10
|
+
- Направление операции определяется по `from` и `to`.
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Atraxis
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
|
22
|
+
|
|
@@ -0,0 +1,173 @@
|
|
|
1
|
+
Metadata-Version: 2.5
|
|
2
|
+
Name: atraxis-sdk
|
|
3
|
+
Version: 0.1.0
|
|
4
|
+
Summary: Official Python SDK and local MCP server for the Atraxis public API
|
|
5
|
+
Project-URL: Documentation, https://atraxisonline.com/developers/api
|
|
6
|
+
Project-URL: Repository, https://github.com/Atraxis/Python-SDK
|
|
7
|
+
Project-URL: Issues, https://github.com/Atraxis/Python-SDK/issues
|
|
8
|
+
Author: Atraxis
|
|
9
|
+
License-Expression: MIT
|
|
10
|
+
License-File: LICENSE
|
|
11
|
+
Keywords: api,atraxis,mcp,sdk
|
|
12
|
+
Classifier: Development Status :: 3 - Alpha
|
|
13
|
+
Classifier: Intended Audience :: Developers
|
|
14
|
+
Classifier: License :: OSI Approved :: MIT License
|
|
15
|
+
Classifier: Programming Language :: Python :: 3
|
|
16
|
+
Classifier: Programming Language :: Python :: 3 :: Only
|
|
17
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
18
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
19
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
20
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
21
|
+
Classifier: Typing :: Typed
|
|
22
|
+
Requires-Python: >=3.10
|
|
23
|
+
Requires-Dist: httpx<1,>=0.28
|
|
24
|
+
Provides-Extra: dev
|
|
25
|
+
Requires-Dist: build<2,>=1.3; extra == 'dev'
|
|
26
|
+
Requires-Dist: hatchling<2,>=1.27; extra == 'dev'
|
|
27
|
+
Requires-Dist: mcp<3,>=2.2; extra == 'dev'
|
|
28
|
+
Requires-Dist: mypy<2,>=1.15; extra == 'dev'
|
|
29
|
+
Requires-Dist: pytest-asyncio<2,>=0.25; extra == 'dev'
|
|
30
|
+
Requires-Dist: pytest<10,>=8.3; extra == 'dev'
|
|
31
|
+
Requires-Dist: pyyaml<7,>=6; extra == 'dev'
|
|
32
|
+
Requires-Dist: ruff<1,>=0.11; extra == 'dev'
|
|
33
|
+
Provides-Extra: mcp
|
|
34
|
+
Requires-Dist: mcp<3,>=2.2; extra == 'mcp'
|
|
35
|
+
Description-Content-Type: text/markdown
|
|
36
|
+
|
|
37
|
+
# Atraxis Python SDK
|
|
38
|
+
|
|
39
|
+
Официальный SDK для владельцев гильдий и лавок Atraxis. Он помогает подключить к гильдии
|
|
40
|
+
своего бота, сайт или учётную систему: посмотреть склад, работать с внутренними валютами,
|
|
41
|
+
выдавать ценности игрокам и получать историю операций.
|
|
42
|
+
|
|
43
|
+
```bash
|
|
44
|
+
pip install atraxis-sdk
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
Требуется Python 3.10 или новее. Перед началом лидер гильдии выпускает приватный токен
|
|
48
|
+
в разделе «Интеграции гильдии». Храните его как пароль: токен даёт доступ к операциям
|
|
49
|
+
вашей гильдии.
|
|
50
|
+
|
|
51
|
+
## Быстрый старт
|
|
52
|
+
|
|
53
|
+
```python
|
|
54
|
+
from atraxis import AtraxisClient, CurrencyTransfer
|
|
55
|
+
|
|
56
|
+
with AtraxisClient("agk_example.redacted") as client:
|
|
57
|
+
for item in client.iter_warehouse():
|
|
58
|
+
print(item.warehouse_item_id, item.name, item.quantity)
|
|
59
|
+
|
|
60
|
+
result = client.transfer(
|
|
61
|
+
[CurrencyTransfer.to_player("TOKEN", player_id=100001, amount=25)],
|
|
62
|
+
idempotency_key="order-2026-09-12-0001",
|
|
63
|
+
)
|
|
64
|
+
print(result.operation_id)
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
Асинхронный клиент имеет те же методы:
|
|
68
|
+
|
|
69
|
+
```python
|
|
70
|
+
import asyncio
|
|
71
|
+
from atraxis import AsyncAtraxisClient
|
|
72
|
+
|
|
73
|
+
|
|
74
|
+
async def main() -> None:
|
|
75
|
+
async with AsyncAtraxisClient("agk_example.redacted") as client:
|
|
76
|
+
async for event in client.iter_activity():
|
|
77
|
+
print(event.occurred_at, event.kind, event.net)
|
|
78
|
+
|
|
79
|
+
|
|
80
|
+
asyncio.run(main())
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
Токен и адрес можно передать через `ATRAXIS_API_TOKEN` и `ATRAXIS_API_BASE_URL`.
|
|
84
|
+
По умолчанию SDK обращается к основному серверу Atraxis. Токен не включается в `repr`,
|
|
85
|
+
исключения или логи самого SDK.
|
|
86
|
+
|
|
87
|
+
## Что умеет SDK
|
|
88
|
+
|
|
89
|
+
- `get_warehouse`, `iter_warehouse` — склад гильдии;
|
|
90
|
+
- `list_currencies`, `upsert_currency` — внутренние валюты;
|
|
91
|
+
- `get_balances` — балансы игрока;
|
|
92
|
+
- `transfer` — единая операция из 1–10 переводов;
|
|
93
|
+
- `get_activity`, `iter_activity` — история операций гильдии.
|
|
94
|
+
|
|
95
|
+
Все суммы представлены в Python как `int`, а по сети передаются десятичными строками. Модели
|
|
96
|
+
неизменяемы. Новые необязательные поля ответа не ломают клиент, но обязательные поля всегда
|
|
97
|
+
проверяются.
|
|
98
|
+
|
|
99
|
+
### Переводы
|
|
100
|
+
|
|
101
|
+
```python
|
|
102
|
+
from atraxis import CurrencyTransfer, ItemTransfer
|
|
103
|
+
|
|
104
|
+
parts = [
|
|
105
|
+
ItemTransfer(warehouse_item_id=700001, player_id=100001, amount=1),
|
|
106
|
+
CurrencyTransfer.issue("TOKEN", amount=100),
|
|
107
|
+
CurrencyTransfer.retire("TOKEN", amount=10),
|
|
108
|
+
CurrencyTransfer.to_player("TOKEN", player_id=100001, amount=25),
|
|
109
|
+
CurrencyTransfer.from_player("TOKEN", player_id=100001, amount=5),
|
|
110
|
+
CurrencyTransfer.between_players(
|
|
111
|
+
"TOKEN",
|
|
112
|
+
from_player_id=100001,
|
|
113
|
+
to_player_id=100002,
|
|
114
|
+
amount=3,
|
|
115
|
+
),
|
|
116
|
+
]
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
Передавайте в `idempotency_key` постоянный идентификатор перевода или заказа. Если ключ не
|
|
120
|
+
задан, SDK создаст UUID и вернёт его в `TransferResult.idempotency_key`. Повторный `POST` внутри
|
|
121
|
+
SDK использует тот же ключ.
|
|
122
|
+
|
|
123
|
+
Транспортные ошибки, `429`, `502`, `503` и `504` повторяются не более двух раз. При `429`
|
|
124
|
+
учитывается `Retry-After`. Ошибки API представлены `AtraxisAPIError`; в них доступны безопасный
|
|
125
|
+
problem response и `request_id`.
|
|
126
|
+
|
|
127
|
+
Полная интерактивная документация: <https://atraxisonline.com/developers/api>.
|
|
128
|
+
|
|
129
|
+
## Как пополняется склад
|
|
130
|
+
|
|
131
|
+
Предметы, кредиты и Эхоны кладут на склад на странице гильдии, через основной бот
|
|
132
|
+
или командой `Внести …` в привязанном чате с Авророй.
|
|
133
|
+
|
|
134
|
+
Через API их можно только выдавать со склада игрокам. Списать их у игрока через API нельзя.
|
|
135
|
+
|
|
136
|
+
## Подключение к Codex и Claude Code
|
|
137
|
+
|
|
138
|
+
```bash
|
|
139
|
+
pip install "atraxis-sdk[mcp]"
|
|
140
|
+
```
|
|
141
|
+
|
|
142
|
+
MCP позволяет Codex и Claude Code подсказывать по API и работать с вашей гильдией через SDK.
|
|
143
|
+
Без токена помощник отвечает только по документации. С `ATRAXIS_API_TOKEN` он сможет читать
|
|
144
|
+
данные гильдии. Команды, которые меняют валюты или передают ценности, доступны только после
|
|
145
|
+
запуска с `--allow-writes`; для каждого перевода потребуется `idempotency_key`.
|
|
146
|
+
|
|
147
|
+
Codex в режиме только для чтения, с уже установленной переменной окружения:
|
|
148
|
+
|
|
149
|
+
```toml
|
|
150
|
+
[mcp_servers.atraxis]
|
|
151
|
+
command = "atraxis-mcp"
|
|
152
|
+
env_vars = ["ATRAXIS_API_TOKEN"]
|
|
153
|
+
```
|
|
154
|
+
|
|
155
|
+
Или через CLI:
|
|
156
|
+
|
|
157
|
+
```bash
|
|
158
|
+
codex mcp add atraxis --env ATRAXIS_API_TOKEN="$ATRAXIS_API_TOKEN" -- atraxis-mcp
|
|
159
|
+
```
|
|
160
|
+
|
|
161
|
+
Claude Code:
|
|
162
|
+
|
|
163
|
+
```bash
|
|
164
|
+
claude mcp add --transport stdio --env ATRAXIS_API_TOKEN="$ATRAXIS_API_TOKEN" atraxis -- atraxis-mcp
|
|
165
|
+
```
|
|
166
|
+
|
|
167
|
+
Готовые конфигурации без токенов лежат в [`examples/mcp`](examples/mcp). Чтобы разрешить
|
|
168
|
+
изменения, добавьте `--allow-writes` в `args` только на своём устройстве и только для помощника,
|
|
169
|
+
которому доверяете.
|
|
170
|
+
|
|
171
|
+
## Лицензия
|
|
172
|
+
|
|
173
|
+
MIT.
|
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
# Atraxis Python SDK
|
|
2
|
+
|
|
3
|
+
Официальный SDK для владельцев гильдий и лавок Atraxis. Он помогает подключить к гильдии
|
|
4
|
+
своего бота, сайт или учётную систему: посмотреть склад, работать с внутренними валютами,
|
|
5
|
+
выдавать ценности игрокам и получать историю операций.
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
pip install atraxis-sdk
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
Требуется Python 3.10 или новее. Перед началом лидер гильдии выпускает приватный токен
|
|
12
|
+
в разделе «Интеграции гильдии». Храните его как пароль: токен даёт доступ к операциям
|
|
13
|
+
вашей гильдии.
|
|
14
|
+
|
|
15
|
+
## Быстрый старт
|
|
16
|
+
|
|
17
|
+
```python
|
|
18
|
+
from atraxis import AtraxisClient, CurrencyTransfer
|
|
19
|
+
|
|
20
|
+
with AtraxisClient("agk_example.redacted") as client:
|
|
21
|
+
for item in client.iter_warehouse():
|
|
22
|
+
print(item.warehouse_item_id, item.name, item.quantity)
|
|
23
|
+
|
|
24
|
+
result = client.transfer(
|
|
25
|
+
[CurrencyTransfer.to_player("TOKEN", player_id=100001, amount=25)],
|
|
26
|
+
idempotency_key="order-2026-09-12-0001",
|
|
27
|
+
)
|
|
28
|
+
print(result.operation_id)
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
Асинхронный клиент имеет те же методы:
|
|
32
|
+
|
|
33
|
+
```python
|
|
34
|
+
import asyncio
|
|
35
|
+
from atraxis import AsyncAtraxisClient
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
async def main() -> None:
|
|
39
|
+
async with AsyncAtraxisClient("agk_example.redacted") as client:
|
|
40
|
+
async for event in client.iter_activity():
|
|
41
|
+
print(event.occurred_at, event.kind, event.net)
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
asyncio.run(main())
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
Токен и адрес можно передать через `ATRAXIS_API_TOKEN` и `ATRAXIS_API_BASE_URL`.
|
|
48
|
+
По умолчанию SDK обращается к основному серверу Atraxis. Токен не включается в `repr`,
|
|
49
|
+
исключения или логи самого SDK.
|
|
50
|
+
|
|
51
|
+
## Что умеет SDK
|
|
52
|
+
|
|
53
|
+
- `get_warehouse`, `iter_warehouse` — склад гильдии;
|
|
54
|
+
- `list_currencies`, `upsert_currency` — внутренние валюты;
|
|
55
|
+
- `get_balances` — балансы игрока;
|
|
56
|
+
- `transfer` — единая операция из 1–10 переводов;
|
|
57
|
+
- `get_activity`, `iter_activity` — история операций гильдии.
|
|
58
|
+
|
|
59
|
+
Все суммы представлены в Python как `int`, а по сети передаются десятичными строками. Модели
|
|
60
|
+
неизменяемы. Новые необязательные поля ответа не ломают клиент, но обязательные поля всегда
|
|
61
|
+
проверяются.
|
|
62
|
+
|
|
63
|
+
### Переводы
|
|
64
|
+
|
|
65
|
+
```python
|
|
66
|
+
from atraxis import CurrencyTransfer, ItemTransfer
|
|
67
|
+
|
|
68
|
+
parts = [
|
|
69
|
+
ItemTransfer(warehouse_item_id=700001, player_id=100001, amount=1),
|
|
70
|
+
CurrencyTransfer.issue("TOKEN", amount=100),
|
|
71
|
+
CurrencyTransfer.retire("TOKEN", amount=10),
|
|
72
|
+
CurrencyTransfer.to_player("TOKEN", player_id=100001, amount=25),
|
|
73
|
+
CurrencyTransfer.from_player("TOKEN", player_id=100001, amount=5),
|
|
74
|
+
CurrencyTransfer.between_players(
|
|
75
|
+
"TOKEN",
|
|
76
|
+
from_player_id=100001,
|
|
77
|
+
to_player_id=100002,
|
|
78
|
+
amount=3,
|
|
79
|
+
),
|
|
80
|
+
]
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
Передавайте в `idempotency_key` постоянный идентификатор перевода или заказа. Если ключ не
|
|
84
|
+
задан, SDK создаст UUID и вернёт его в `TransferResult.idempotency_key`. Повторный `POST` внутри
|
|
85
|
+
SDK использует тот же ключ.
|
|
86
|
+
|
|
87
|
+
Транспортные ошибки, `429`, `502`, `503` и `504` повторяются не более двух раз. При `429`
|
|
88
|
+
учитывается `Retry-After`. Ошибки API представлены `AtraxisAPIError`; в них доступны безопасный
|
|
89
|
+
problem response и `request_id`.
|
|
90
|
+
|
|
91
|
+
Полная интерактивная документация: <https://atraxisonline.com/developers/api>.
|
|
92
|
+
|
|
93
|
+
## Как пополняется склад
|
|
94
|
+
|
|
95
|
+
Предметы, кредиты и Эхоны кладут на склад на странице гильдии, через основной бот
|
|
96
|
+
или командой `Внести …` в привязанном чате с Авророй.
|
|
97
|
+
|
|
98
|
+
Через API их можно только выдавать со склада игрокам. Списать их у игрока через API нельзя.
|
|
99
|
+
|
|
100
|
+
## Подключение к Codex и Claude Code
|
|
101
|
+
|
|
102
|
+
```bash
|
|
103
|
+
pip install "atraxis-sdk[mcp]"
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
MCP позволяет Codex и Claude Code подсказывать по API и работать с вашей гильдией через SDK.
|
|
107
|
+
Без токена помощник отвечает только по документации. С `ATRAXIS_API_TOKEN` он сможет читать
|
|
108
|
+
данные гильдии. Команды, которые меняют валюты или передают ценности, доступны только после
|
|
109
|
+
запуска с `--allow-writes`; для каждого перевода потребуется `idempotency_key`.
|
|
110
|
+
|
|
111
|
+
Codex в режиме только для чтения, с уже установленной переменной окружения:
|
|
112
|
+
|
|
113
|
+
```toml
|
|
114
|
+
[mcp_servers.atraxis]
|
|
115
|
+
command = "atraxis-mcp"
|
|
116
|
+
env_vars = ["ATRAXIS_API_TOKEN"]
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
Или через CLI:
|
|
120
|
+
|
|
121
|
+
```bash
|
|
122
|
+
codex mcp add atraxis --env ATRAXIS_API_TOKEN="$ATRAXIS_API_TOKEN" -- atraxis-mcp
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
Claude Code:
|
|
126
|
+
|
|
127
|
+
```bash
|
|
128
|
+
claude mcp add --transport stdio --env ATRAXIS_API_TOKEN="$ATRAXIS_API_TOKEN" atraxis -- atraxis-mcp
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
Готовые конфигурации без токенов лежат в [`examples/mcp`](examples/mcp). Чтобы разрешить
|
|
132
|
+
изменения, добавьте `--allow-writes` в `args` только на своём устройстве и только для помощника,
|
|
133
|
+
которому доверяете.
|
|
134
|
+
|
|
135
|
+
## Лицензия
|
|
136
|
+
|
|
137
|
+
MIT.
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
[build-system]
|
|
2
|
+
requires = ["hatchling>=1.27,<2"]
|
|
3
|
+
build-backend = "hatchling.build"
|
|
4
|
+
|
|
5
|
+
[project]
|
|
6
|
+
name = "atraxis-sdk"
|
|
7
|
+
version = "0.1.0"
|
|
8
|
+
description = "Official Python SDK and local MCP server for the Atraxis public API"
|
|
9
|
+
readme = "README.md"
|
|
10
|
+
requires-python = ">=3.10"
|
|
11
|
+
license = "MIT"
|
|
12
|
+
authors = [{ name = "Atraxis" }]
|
|
13
|
+
keywords = ["atraxis", "api", "sdk", "mcp"]
|
|
14
|
+
classifiers = [
|
|
15
|
+
"Development Status :: 3 - Alpha",
|
|
16
|
+
"Intended Audience :: Developers",
|
|
17
|
+
"License :: OSI Approved :: MIT License",
|
|
18
|
+
"Programming Language :: Python :: 3",
|
|
19
|
+
"Programming Language :: Python :: 3 :: Only",
|
|
20
|
+
"Programming Language :: Python :: 3.10",
|
|
21
|
+
"Programming Language :: Python :: 3.11",
|
|
22
|
+
"Programming Language :: Python :: 3.12",
|
|
23
|
+
"Programming Language :: Python :: 3.13",
|
|
24
|
+
"Typing :: Typed",
|
|
25
|
+
]
|
|
26
|
+
dependencies = ["httpx>=0.28,<1"]
|
|
27
|
+
|
|
28
|
+
[project.optional-dependencies]
|
|
29
|
+
mcp = ["mcp>=2.2,<3"]
|
|
30
|
+
dev = [
|
|
31
|
+
"build>=1.3,<2",
|
|
32
|
+
"hatchling>=1.27,<2",
|
|
33
|
+
"mcp>=2.2,<3",
|
|
34
|
+
"mypy>=1.15,<2",
|
|
35
|
+
"pytest>=8.3,<10",
|
|
36
|
+
"pytest-asyncio>=0.25,<2",
|
|
37
|
+
"PyYAML>=6,<7",
|
|
38
|
+
"ruff>=0.11,<1",
|
|
39
|
+
]
|
|
40
|
+
|
|
41
|
+
[project.urls]
|
|
42
|
+
Documentation = "https://atraxisonline.com/developers/api"
|
|
43
|
+
Repository = "https://github.com/Atraxis/Python-SDK"
|
|
44
|
+
Issues = "https://github.com/Atraxis/Python-SDK/issues"
|
|
45
|
+
|
|
46
|
+
[project.scripts]
|
|
47
|
+
atraxis-mcp = "atraxis.mcp_server:main"
|
|
48
|
+
|
|
49
|
+
[tool.hatch.build.targets.wheel]
|
|
50
|
+
packages = ["src/atraxis"]
|
|
51
|
+
|
|
52
|
+
[tool.hatch.build.targets.sdist]
|
|
53
|
+
include = [
|
|
54
|
+
"/src",
|
|
55
|
+
"/tests",
|
|
56
|
+
"/scripts",
|
|
57
|
+
"/README.md",
|
|
58
|
+
"/CHANGELOG.md",
|
|
59
|
+
"/LICENSE",
|
|
60
|
+
"/pyproject.toml",
|
|
61
|
+
]
|
|
62
|
+
|
|
63
|
+
[tool.hatch.build]
|
|
64
|
+
artifacts = ["src/atraxis/_contract/*.json", "src/atraxis/_contract/*.sha256"]
|
|
65
|
+
|
|
66
|
+
[tool.pytest.ini_options]
|
|
67
|
+
addopts = "-q"
|
|
68
|
+
asyncio_mode = "auto"
|
|
69
|
+
testpaths = ["tests"]
|
|
70
|
+
|
|
71
|
+
[tool.ruff]
|
|
72
|
+
target-version = "py310"
|
|
73
|
+
line-length = 100
|
|
74
|
+
|
|
75
|
+
[tool.ruff.lint]
|
|
76
|
+
select = ["E", "F", "I", "UP", "B", "SIM", "RUF"]
|
|
77
|
+
|
|
78
|
+
[tool.mypy]
|
|
79
|
+
python_version = "3.10"
|
|
80
|
+
strict = true
|
|
81
|
+
packages = ["atraxis"]
|
|
82
|
+
|