xync-client 0.0.155.dev2__tar.gz → 0.0.173__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.
Files changed (148) hide show
  1. {xync_client-0.0.155.dev2/xync_client.egg-info → xync_client-0.0.173}/PKG-INFO +2 -1
  2. {xync_client-0.0.155.dev2 → xync_client-0.0.173}/README.md +20 -0
  3. {xync_client-0.0.155.dev2 → xync_client-0.0.173}/pyproject.toml +1 -0
  4. {xync_client-0.0.155.dev2 → xync_client-0.0.173}/tests/TestAgent.py +10 -10
  5. {xync_client-0.0.155.dev2 → xync_client-0.0.173}/tests/TestEx.py +11 -10
  6. xync_client-0.0.173/tests/TestOrder.py +24 -0
  7. xync_client-0.0.173/xync_client/Abc/AdLoader.py +5 -0
  8. xync_client-0.0.173/xync_client/Abc/Agent.py +623 -0
  9. xync_client-0.0.173/xync_client/Abc/Ex.py +676 -0
  10. {xync_client-0.0.155.dev2 → xync_client-0.0.173}/xync_client/Abc/Order.py +24 -28
  11. xync_client-0.0.173/xync_client/Abc/xtype.py +236 -0
  12. {xync_client-0.0.155.dev2 → xync_client-0.0.173}/xync_client/BingX/agent.py +1 -1
  13. {xync_client-0.0.155.dev2 → xync_client-0.0.173}/xync_client/BitGet/agent.py +1 -3
  14. xync_client-0.0.173/xync_client/Bybit/agent.py +1142 -0
  15. xync_client-0.0.173/xync_client/Bybit/etype/ad.py +191 -0
  16. {xync_client-0.0.155.dev2 → xync_client-0.0.173}/xync_client/Bybit/etype/cred.py +25 -3
  17. xync_client-0.0.173/xync_client/Bybit/etype/order.py +370 -0
  18. {xync_client-0.0.155.dev2 → xync_client-0.0.173}/xync_client/Bybit/ex.py +41 -55
  19. xync_client-0.0.173/xync_client/Bybit/inAgent.py +31 -0
  20. xync_client-0.0.173/xync_client/Bybit/order.py +65 -0
  21. {xync_client-0.0.155.dev2 → xync_client-0.0.173}/xync_client/Htx/agent.py +115 -60
  22. {xync_client-0.0.155.dev2 → xync_client-0.0.173}/xync_client/Htx/etype/ad.py +22 -7
  23. xync_client-0.0.173/xync_client/Htx/etype/order.py +194 -0
  24. {xync_client-0.0.155.dev2 → xync_client-0.0.173}/xync_client/Htx/etype/test.py +4 -4
  25. {xync_client-0.0.155.dev2 → xync_client-0.0.173}/xync_client/Htx/ex.py +50 -18
  26. xync_client-0.0.173/xync_client/Mexc/agent.py +268 -0
  27. xync_client-0.0.173/xync_client/Mexc/api.py +1255 -0
  28. {xync_client-0.0.155.dev2 → xync_client-0.0.173}/xync_client/Mexc/etype/ad.py +52 -1
  29. xync_client-0.0.173/xync_client/Mexc/etype/order.py +354 -0
  30. {xync_client-0.0.155.dev2 → xync_client-0.0.173}/xync_client/Mexc/ex.py +29 -19
  31. xync_client-0.0.173/xync_client/Okx/1.py +14 -0
  32. xync_client-0.0.173/xync_client/Okx/agent.py +39 -0
  33. {xync_client-0.0.155.dev2 → xync_client-0.0.173}/xync_client/Okx/ex.py +8 -8
  34. xync_client-0.0.173/xync_client/Pms/Payeer/agent.py +396 -0
  35. xync_client-0.0.173/xync_client/Pms/Payeer/login.py +2 -0
  36. xync_client-0.0.173/xync_client/Pms/Payeer/trade.py +58 -0
  37. xync_client-0.0.155.dev2/xync_client/Pms/Volet/__init__.py → xync_client-0.0.173/xync_client/Pms/Volet/agent.py +1 -2
  38. {xync_client-0.0.155.dev2 → xync_client-0.0.173}/xync_client/TgWallet/agent.py +21 -21
  39. {xync_client-0.0.155.dev2 → xync_client-0.0.173}/xync_client/TgWallet/ex.py +11 -11
  40. {xync_client-0.0.155.dev2 → xync_client-0.0.173}/xync_client/TgWallet/pyd.py +5 -5
  41. xync_client-0.0.173/xync_client/__init__.py +0 -0
  42. {xync_client-0.0.155.dev2 → xync_client-0.0.173}/xync_client/loader.py +1 -0
  43. {xync_client-0.0.155.dev2 → xync_client-0.0.173}/xync_client/pm_unifier.py +3 -2
  44. {xync_client-0.0.155.dev2 → xync_client-0.0.173/xync_client.egg-info}/PKG-INFO +2 -1
  45. {xync_client-0.0.155.dev2 → xync_client-0.0.173}/xync_client.egg-info/SOURCES.txt +8 -4
  46. {xync_client-0.0.155.dev2 → xync_client-0.0.173}/xync_client.egg-info/requires.txt +1 -0
  47. xync_client-0.0.155.dev2/tests/TestOrder.py +0 -20
  48. xync_client-0.0.155.dev2/xync_client/Abc/AdLoader.py +0 -299
  49. xync_client-0.0.155.dev2/xync_client/Abc/Agent.py +0 -216
  50. xync_client-0.0.155.dev2/xync_client/Abc/Ex.py +0 -287
  51. xync_client-0.0.155.dev2/xync_client/Abc/xtype.py +0 -130
  52. xync_client-0.0.155.dev2/xync_client/Bybit/InAgent.py +0 -465
  53. xync_client-0.0.155.dev2/xync_client/Bybit/agent.py +0 -1292
  54. xync_client-0.0.155.dev2/xync_client/Bybit/etype/ad.py +0 -157
  55. xync_client-0.0.155.dev2/xync_client/Bybit/etype/order.py +0 -333
  56. xync_client-0.0.155.dev2/xync_client/Bybit/order.py +0 -41
  57. xync_client-0.0.155.dev2/xync_client/Mexc/agent.py +0 -85
  58. xync_client-0.0.155.dev2/xync_client/Mexc/api.py +0 -636
  59. xync_client-0.0.155.dev2/xync_client/Mexc/etype/order.py +0 -639
  60. xync_client-0.0.155.dev2/xync_client/Pms/Payeer/__init__.py +0 -262
  61. xync_client-0.0.155.dev2/xync_client/Pms/Payeer/api.py +0 -25
  62. xync_client-0.0.155.dev2/xync_client/Pms/Payeer/login.py +0 -64
  63. {xync_client-0.0.155.dev2 → xync_client-0.0.173}/.env.sample +0 -0
  64. {xync_client-0.0.155.dev2 → xync_client-0.0.173}/.gitignore +0 -0
  65. {xync_client-0.0.155.dev2 → xync_client-0.0.173}/.pre-commit-config.yaml +0 -0
  66. {xync_client-0.0.155.dev2 → xync_client-0.0.173}/__init__.py +0 -0
  67. {xync_client-0.0.155.dev2 → xync_client-0.0.173}/makefile +0 -0
  68. {xync_client-0.0.155.dev2 → xync_client-0.0.173}/setup.cfg +0 -0
  69. {xync_client-0.0.155.dev2 → xync_client-0.0.173}/tests/TestAsset.py +0 -0
  70. {xync_client-0.0.155.dev2 → xync_client-0.0.173}/tests/_todo_refact/Binance/test_binance.py +0 -0
  71. {xync_client-0.0.155.dev2 → xync_client-0.0.173}/tests/_todo_refact/Bybit/test_bybit.py +0 -0
  72. {xync_client-0.0.155.dev2 → xync_client-0.0.173}/tests/_todo_refact/Bybit/test_bybit_p2p.py +0 -0
  73. {xync_client-0.0.155.dev2 → xync_client-0.0.173}/tests/_todo_refact/Gate/test_gate.py +0 -0
  74. {xync_client-0.0.155.dev2 → xync_client-0.0.173}/tests/_todo_refact/Wallet/test_agent.py +0 -0
  75. {xync_client-0.0.155.dev2 → xync_client-0.0.173}/tests/_todo_refact/Wallet/test_ex.py +0 -0
  76. {xync_client-0.0.155.dev2 → xync_client-0.0.173}/tests/_todo_refact/__init__.py +0 -0
  77. {xync_client-0.0.155.dev2 → xync_client-0.0.173}/tests/_todo_refact/_test_ex.py +0 -0
  78. {xync_client-0.0.155.dev2 → xync_client-0.0.173}/xync_client/Abc/Asset.py +0 -0
  79. {xync_client-0.0.155.dev2 → xync_client-0.0.173}/xync_client/Abc/Auth.py +0 -0
  80. {xync_client-0.0.155.dev2 → xync_client-0.0.173}/xync_client/Abc/BaseTest.py +0 -0
  81. {xync_client-0.0.155.dev2 → xync_client-0.0.173}/xync_client/Abc/Exception.py +0 -0
  82. {xync_client-0.0.155.dev2 → xync_client-0.0.173}/xync_client/Abc/HasAbotUid.py +0 -0
  83. {xync_client-0.0.155.dev2 → xync_client-0.0.173}/xync_client/Abc/InAgent.py +0 -0
  84. {xync_client-0.0.155.dev2 → xync_client-0.0.173}/xync_client/Abc/PmAgent.py +0 -0
  85. {xync_client-0.0.155.dev2 → xync_client-0.0.173}/xync_client/Binance/__init__.py +0 -0
  86. {xync_client-0.0.155.dev2 → xync_client-0.0.173}/xync_client/Binance/binance_async.py +0 -0
  87. {xync_client-0.0.155.dev2 → xync_client-0.0.173}/xync_client/Binance/earn_api.py +0 -0
  88. {xync_client-0.0.155.dev2 → xync_client-0.0.173}/xync_client/Binance/etype/ad.py +0 -0
  89. {xync_client-0.0.155.dev2 → xync_client-0.0.173}/xync_client/Binance/etype/pm.py +0 -0
  90. {xync_client-0.0.155.dev2 → xync_client-0.0.173}/xync_client/Binance/ex.py +0 -0
  91. {xync_client-0.0.155.dev2 → xync_client-0.0.173}/xync_client/Binance/exceptions.py +0 -0
  92. {xync_client-0.0.155.dev2 → xync_client-0.0.173}/xync_client/Binance/sapi.py +0 -0
  93. {xync_client-0.0.155.dev2 → xync_client-0.0.173}/xync_client/Binance/web_c2c.py +0 -0
  94. {xync_client-0.0.155.dev2 → xync_client-0.0.173}/xync_client/BingX/__init__.py +0 -0
  95. {xync_client-0.0.155.dev2 → xync_client-0.0.173}/xync_client/BingX/base.py +0 -0
  96. {xync_client-0.0.155.dev2 → xync_client-0.0.173}/xync_client/BingX/etype/ad.py +0 -0
  97. {xync_client-0.0.155.dev2 → xync_client-0.0.173}/xync_client/BingX/etype/pm.py +0 -0
  98. {xync_client-0.0.155.dev2 → xync_client-0.0.173}/xync_client/BingX/ex.py +0 -0
  99. {xync_client-0.0.155.dev2 → xync_client-0.0.173}/xync_client/BingX/req.mjs +0 -0
  100. {xync_client-0.0.155.dev2 → xync_client-0.0.173}/xync_client/BingX/sign.js +0 -0
  101. {xync_client-0.0.155.dev2 → xync_client-0.0.173}/xync_client/BitGet/__init__.py +0 -0
  102. {xync_client-0.0.155.dev2 → xync_client-0.0.173}/xync_client/BitGet/etype/ad.py +0 -0
  103. {xync_client-0.0.155.dev2 → xync_client-0.0.173}/xync_client/BitGet/ex.py +0 -0
  104. {xync_client-0.0.155.dev2 → xync_client-0.0.173}/xync_client/BitPapa/ex.py +0 -0
  105. {xync_client-0.0.155.dev2/xync_client → xync_client-0.0.173/xync_client/Bybit/etype}/__init__.py +0 -0
  106. {xync_client-0.0.155.dev2 → xync_client-0.0.173}/xync_client/Bybit/web_earn.py +0 -0
  107. {xync_client-0.0.155.dev2 → xync_client-0.0.173}/xync_client/Bybit/web_p2p.py +0 -0
  108. {xync_client-0.0.155.dev2 → xync_client-0.0.173}/xync_client/Bybit/ws.py +0 -0
  109. {xync_client-0.0.155.dev2 → xync_client-0.0.173}/xync_client/Gate/etype/ad.py +0 -0
  110. {xync_client-0.0.155.dev2 → xync_client-0.0.173}/xync_client/Gate/ex.py +0 -0
  111. {xync_client-0.0.155.dev2 → xync_client-0.0.173}/xync_client/Gate/premarket.py +0 -0
  112. {xync_client-0.0.155.dev2 → xync_client-0.0.173}/xync_client/Gmail/__init__.py +0 -0
  113. {xync_client-0.0.155.dev2 → xync_client-0.0.173}/xync_client/Htx/earn.py +0 -0
  114. {xync_client-0.0.155.dev2 → xync_client-0.0.173}/xync_client/Htx/etype/__init__.py +0 -0
  115. {xync_client-0.0.155.dev2 → xync_client-0.0.173}/xync_client/Htx/etype/cred.py +0 -0
  116. {xync_client-0.0.155.dev2 → xync_client-0.0.173}/xync_client/Htx/etype/pm.py +0 -0
  117. {xync_client-0.0.155.dev2 → xync_client-0.0.173}/xync_client/KuCoin/etype/ad.py +0 -0
  118. {xync_client-0.0.155.dev2 → xync_client-0.0.173}/xync_client/KuCoin/etype/pm.py +0 -0
  119. {xync_client-0.0.155.dev2 → xync_client-0.0.173}/xync_client/KuCoin/ex.py +0 -0
  120. {xync_client-0.0.155.dev2 → xync_client-0.0.173}/xync_client/KuCoin/web.py +0 -0
  121. {xync_client-0.0.155.dev2 → xync_client-0.0.173}/xync_client/Mexc/etype/pm.py +0 -0
  122. {xync_client-0.0.155.dev2 → xync_client-0.0.173}/xync_client/Okx/etype/ad.py +0 -0
  123. {xync_client-0.0.155.dev2 → xync_client-0.0.173}/xync_client/Okx/etype/pm.py +0 -0
  124. {xync_client-0.0.155.dev2 → xync_client-0.0.173}/xync_client/Pms/.gitignore +0 -0
  125. {xync_client-0.0.155.dev2 → xync_client-0.0.173}/xync_client/Pms/Alfa/__init__.py +0 -0
  126. {xync_client-0.0.155.dev2 → xync_client-0.0.173}/xync_client/Pms/Alfa/state.json +0 -0
  127. {xync_client-0.0.155.dev2 → xync_client-0.0.173}/xync_client/Pms/MTS/__init__.py +0 -0
  128. {xync_client-0.0.155.dev2 → xync_client-0.0.173}/xync_client/Pms/Ozon/__init__.py +0 -0
  129. {xync_client-0.0.155.dev2 → xync_client-0.0.173}/xync_client/Pms/Payeer/.gitignore +0 -0
  130. {xync_client-0.0.155.dev2 → xync_client-0.0.173}/xync_client/Pms/Sber/__init__.py +0 -0
  131. {xync_client-0.0.155.dev2 → xync_client-0.0.173}/xync_client/Pms/Sber/utils.py +0 -0
  132. {xync_client-0.0.155.dev2 → xync_client-0.0.173}/xync_client/Pms/Tinkoff/__init__.py +0 -0
  133. {xync_client-0.0.155.dev2 → xync_client-0.0.173}/xync_client/Pms/Volet/_todo_req/req.mjs +0 -0
  134. {xync_client-0.0.155.dev2 → xync_client-0.0.173}/xync_client/Pms/Volet/_todo_req/req.py +0 -0
  135. {xync_client-0.0.155.dev2 → xync_client-0.0.173}/xync_client/Pms/Volet/api.py +0 -0
  136. {xync_client-0.0.155.dev2 → xync_client-0.0.173}/xync_client/Pms/Volet/pl.py +0 -0
  137. {xync_client-0.0.155.dev2 → xync_client-0.0.173}/xync_client/Pms/Xync/__main__.py +0 -0
  138. {xync_client-0.0.155.dev2 → xync_client-0.0.173}/xync_client/Pms/Xync/ed.py +0 -0
  139. {xync_client-0.0.155.dev2 → xync_client-0.0.173}/xync_client/Pms/Yandex/__init__.py +0 -0
  140. {xync_client-0.0.155.dev2 → xync_client-0.0.173}/xync_client/TgWallet/asset.py +0 -0
  141. {xync_client-0.0.155.dev2 → xync_client-0.0.173}/xync_client/TgWallet/auth.py +0 -0
  142. {xync_client-0.0.155.dev2 → xync_client-0.0.173}/xync_client/TgWallet/inAgent.py +0 -0
  143. {xync_client-0.0.155.dev2 → xync_client-0.0.173}/xync_client/TgWallet/order.py +0 -0
  144. {xync_client-0.0.155.dev2 → xync_client-0.0.173}/xync_client/TgWallet/pyro.py +0 -0
  145. {xync_client-0.0.155.dev2 → xync_client-0.0.173}/xync_client/TgWallet/web.py +0 -0
  146. {xync_client-0.0.155.dev2 → xync_client-0.0.173}/xync_client/details.py +0 -0
  147. {xync_client-0.0.155.dev2 → xync_client-0.0.173}/xync_client.egg-info/dependency_links.txt +0 -0
  148. {xync_client-0.0.155.dev2 → xync_client-0.0.173}/xync_client.egg-info/top_level.txt +0 -0
@@ -1,11 +1,12 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: xync-client
3
- Version: 0.0.155.dev2
3
+ Version: 0.0.173
4
4
  Author-email: Mike Artemiev <mixartemev@gmail.com>
5
5
  Project-URL: Homepage, https://gitlab.com/XyncNet/client
6
6
  Project-URL: Repository, https://gitlab.com/XyncNet/client
7
7
  Requires-Python: >=3.11
8
8
  Requires-Dist: asynchuobi
9
+ Requires-Dist: blackboxprotobuf
9
10
  Requires-Dist: bs4
10
11
  Requires-Dist: bybit-p2p
11
12
  Requires-Dist: google-api-python-client
@@ -1,3 +1,23 @@
1
+ ## Структура http-клиентов
2
+ #### Абстрактные классы клиентов:
3
+ **BaseClient** *[host: str]* - базовый http-клиент, с низкоуровнеными методами get, post, put и delete, сессией, и общими
4
+ для всех клиентов свойствами. *[В конструкторе принимает хост строкой]*
5
+
6
+ **BaseExClient**(BaseClient) *[ex: Ex]* - клиент с публичными/анонимными методами конкретной биржи.
7
+ *[В конструкторе принимает зависимость: экземпляр биржи]*
8
+
9
+ **_BaseAuthClient**(BaseClient) *[agent: Agent]* - клиент реализующий логин (получение необходимых заголовков) конкретного
10
+ юзера биржи. *[В конструкторе принимает зависимость: экземпляр агента]*
11
+
12
+ **BaseInAgentTrait** - класс реализующий прием входящих событий от биржи. Если у биржи есть вебсокет канал, то по нему,
13
+ если нет - то через поллинг каждые х секунд.
14
+
15
+ **BaseAgentClient**(BaseAuthClient, BaseInAgentTrait) *[agent: Agent, ex_client: BaseExClient]* - клиент с приватными
16
+ методами биржи от лица конкретного юзера биржи. *[В конструкторе принимает зависимости: экземпляр агента, и клиента биржи]*
17
+
18
+ **BaseOrderClient** *[order: Order, agent_client: BaseExClient]* - методы для обработки конкретного ордера на бирже.
19
+ *[В конструкторе принимает зависимости: экземпляр ордера, и клиента агента]*
20
+
1
21
  ## Order Flow:
2
22
  - 0: Получшение заявок за заданное время, в статусе, по валюте, монете, направлению: `get_orders(stauts=OrderStatus.active, coin='USDT', cur='RUB', is_sell=False) => [order]`
3
23
 
@@ -8,6 +8,7 @@ dynamic = ["version"]
8
8
 
9
9
  dependencies = [
10
10
  "asynchuobi",
11
+ "blackboxprotobuf",
11
12
  "bs4",
12
13
  "bybit-p2p",
13
14
  "google-api-python-client",
@@ -9,7 +9,7 @@ from xync_schema.xtype import BaseAd
9
9
  from xync_client.Abc.BaseTest import BaseTest
10
10
  from xync_client.Abc.Ex import BaseExClient
11
11
  from xync_client.Abc.Agent import BaseAgentClient
12
- from xync_client.Abc.xtype import CredExOut, BaseOrderReq, ListOfDicts
12
+ from xync_client.Abc.xtype import BaseCredEx, BaseOrderReq, ListOfDicts
13
13
 
14
14
 
15
15
  @pytest.mark.asyncio(loop_scope="session")
@@ -44,8 +44,8 @@ class TestAgent(BaseTest):
44
44
  # 25
45
45
  async def test_my_creds(self, clients: list[tuple[BaseAgentClient, BaseAgentClient]]):
46
46
  for maker, taker in clients:
47
- my_creds: list[CredExOut] = await taker.creds()
48
- ok = self.is_list_of_objects(my_creds, CredExOut)
47
+ my_creds: list[BaseCredEx] = await taker.get_creds()
48
+ ok = self.is_list_of_objects(my_creds, BaseCredEx)
49
49
  t, _ = await ExStat.update_or_create({"ok": ok}, ex=taker.actor.ex, action=ExAction.my_creds)
50
50
  assert t.ok, "No my creds"
51
51
  logging.info(f"{taker.actor.ex.name}:{ExAction.my_creds.name} - ok")
@@ -53,7 +53,7 @@ class TestAgent(BaseTest):
53
53
  # 27
54
54
  async def test_cred_upd(self, clients: list[tuple[BaseAgentClient, BaseAgentClient]]):
55
55
  for maker, taker in clients:
56
- credex = (await taker.creds())[0]
56
+ credex = (await taker.get_creds())[0]
57
57
  credex_db = await CredEx.get(exid=credex.id, ex=taker.actor.ex).prefetch_related("cred")
58
58
  credex_db.cred.name += "+Test!"
59
59
  cred_upd: CredEx = await taker.cred_upd(credex_db.cred, credex.id)
@@ -65,7 +65,7 @@ class TestAgent(BaseTest):
65
65
  # 28
66
66
  async def test_cred_del(self, clients: list[tuple[BaseAgentClient, BaseAgentClient]]):
67
67
  for maker, taker in clients:
68
- credex = (await taker.creds())[0]
68
+ credex = (await taker.get_creds())[0]
69
69
  cred_del: int = await taker.cred_del(credex.id)
70
70
  ok = cred_del == credex.id
71
71
  t, _ = await ExStat.update_or_create({"ok": ok}, ex=taker.actor.ex, action=ExAction.cred_del)
@@ -111,7 +111,7 @@ class TestAgent(BaseTest):
111
111
  req = BaseOrderReq(
112
112
  ad_id=ad.exid,
113
113
  is_sell=ad.direction.sell,
114
- fiat_amount=ad.min_fiat,
114
+ amount=ad.min_fiat,
115
115
  cred_id=mutual_cred.id,
116
116
  )
117
117
  order_request: dict | bool = await taker.order_request(req)
@@ -123,7 +123,7 @@ class TestAgent(BaseTest):
123
123
  # 29
124
124
  async def test_my_ads(self, clients: list[tuple[BaseAgentClient, BaseAgentClient]]):
125
125
  for maker, taker in clients:
126
- my_ads: list[BaseAd] = await maker.my_ads()
126
+ my_ads: list[BaseAd] = await maker.get_my_ads()
127
127
  ok = self.is_list_of_objects(my_ads, BaseAd)
128
128
  t, _ = await ExStat.update_or_create({"ok": ok}, ex=taker.actor.ex, action=ExAction.my_ads)
129
129
  assert t.ok, "Maker should has ads"
@@ -148,7 +148,7 @@ class TestAgent(BaseTest):
148
148
  # 31
149
149
  async def test_ad_upd(self, clients: list[tuple[BaseAgentClient, BaseAgentClient]]):
150
150
  for maker, taker in clients:
151
- my_ads: ListOfDicts = await taker.my_ads()
151
+ my_ads: ListOfDicts = await taker.get_my_ads()
152
152
  ad_upd: Ad.pyd() = await taker.ad_upd(offer_id=my_ads[0]["id"], amount="11")
153
153
  ok = ad_upd["status"] == "SUCCESS"
154
154
  t, _ = await ExStat.update_or_create({"ok": ok}, ex=taker.actor.ex.name, action=ExAction.ad_upd)
@@ -158,7 +158,7 @@ class TestAgent(BaseTest):
158
158
  # 32
159
159
  async def test_ad_del(self, clients: list[tuple[BaseAgentClient, BaseAgentClient]]):
160
160
  for maker, taker in clients:
161
- my_ads: ListOfDicts = await taker.my_ads()
161
+ my_ads: ListOfDicts = await taker.get_my_ads()
162
162
  ad_del: bool = await taker.ad_del(ad_id=my_ads[0]["id"])
163
163
  t, _ = await ExStat.update_or_create({"ok": ad_del}, ex=taker.actor.ex, action=ExAction.ad_del)
164
164
  assert t.ok, "No add new ad"
@@ -167,7 +167,7 @@ class TestAgent(BaseTest):
167
167
  # 33
168
168
  async def test_ad_switch(self, clients: list[tuple[BaseAgentClient, BaseAgentClient]]):
169
169
  for maker, taker in clients:
170
- my_ads: ListOfDicts = await taker.my_ads()
170
+ my_ads: ListOfDicts = await taker.get_my_ads()
171
171
  new_status = not (my_ads[0]["status"] == "ACTIVE")
172
172
  ad_switch: bool = await taker.ad_switch(offer_id=my_ads[0]["id"], active=new_status)
173
173
  t, _ = await ExStat.update_or_create({"ok": ad_switch}, ex=taker.actor.ex, action=ExAction.ad_switch)
@@ -4,12 +4,13 @@ import pytest
4
4
  from pyro_client.client.file import FileClient
5
5
  from x_client.aiohttp import Client as HttpClient
6
6
  from xync_schema.xtype import BaseAd
7
+ from xync_schema.models import PmEx, ExStat
7
8
 
8
9
  from xync_client.Abc.BaseTest import BaseTest
9
10
  from xync_schema.enums import ExStatus, ExType, ExAction
10
11
  from xync_schema import models
11
12
  from xync_client.Abc.Ex import BaseExClient
12
- from xync_client.loader import TOKEN
13
+ from xync_client.loader import NET_TOKEN
13
14
 
14
15
 
15
16
  @pytest.mark.asyncio(loop_scope="session")
@@ -18,7 +19,7 @@ class TestEx(BaseTest):
18
19
  async def clients(self) -> list[HttpClient]:
19
20
  exs = await models.Ex.filter(status__gt=ExStatus.plan).prefetch_related("pm_reps")
20
21
  [await ex for ex in exs if ex.typ == ExType.tg]
21
- async with FileClient(TOKEN) as b:
22
+ async with FileClient(NET_TOKEN) as b:
22
23
  b: FileClient
23
24
  clients: list[BaseExClient] = [ex.client(b) for ex in exs]
24
25
  yield clients
@@ -66,14 +67,14 @@ class TestEx(BaseTest):
66
67
  # logging.info(f"{client.ex.name}: {ExAction.curs.name} - ok")
67
68
  #
68
69
  # # 20
69
- # async def test_pms(self, clients: list[BaseExClient]):
70
- # for client in clients:
71
- # pms: dict[int | str, PmEx] = await client.pms()
72
- # ok = self.is_dict_of_objects(pms, PmEx)
73
- # t, _ = await ExStat.update_or_create({"ok": ok}, ex=client.ex, action=ExAction.pms)
74
- # assert t.ok, "No pms"
75
- # logging.info(f"{client.ex.name}: {ExAction.pms.name} - ok")
76
- #
70
+ async def test_pms(self, clients: list[BaseExClient]):
71
+ for client in clients:
72
+ pms: dict[int | str, PmEx] = await client.pms()
73
+ ok = self.is_dict_of_objects(pms, PmEx)
74
+ t, _ = await ExStat.update_or_create({"ok": ok}, ex=client.ex, action=ExAction.pms)
75
+ assert t.ok, "No pms"
76
+ logging.info(f"{client.ex.name}: {ExAction.pms.name} - ok")
77
+
77
78
  # # 21
78
79
  # async def test_cur_pms_map(self, clients: list[BaseExClient]):
79
80
  # for client in clients:
@@ -0,0 +1,24 @@
1
+ import pytest
2
+ from xync_client.Abc.Order import BaseOrderClient
3
+ from xync_schema.models import Agent, Ex
4
+
5
+ from xync_client.Abc.Agent import BaseAgentClient
6
+
7
+ from xync_client.Abc.BaseTest import BaseTest
8
+
9
+
10
+ class AgentTest(BaseTest):
11
+ @pytest.fixture(scope="class")
12
+ async def cl(self) -> BaseAgentClient:
13
+ agent = await Agent.filter(auth__not_isnull=True, status__gt=0).prefetch_related("actor__ex").first()
14
+ ex: Ex = agent.actor.ex
15
+ acl: BaseAgentClient = agent.client(ex.client())
16
+ yield acl
17
+ await acl.close()
18
+
19
+ @pytest.fixture(scope="class")
20
+ async def cl1(self) -> BaseOrderClient:
21
+ agent = (await self.exq).agents.filter(auth__not_isnull=True).offset(1).first()
22
+ acl = BaseOrderClient(agent)
23
+ yield acl
24
+ await acl.close()
@@ -0,0 +1,5 @@
1
+ from xync_schema import models
2
+
3
+
4
+ class AdLoader:
5
+ ex: models.Ex