ozonapi-async 0.1.0__tar.gz → 0.1.2__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 (76) hide show
  1. {ozonapi_async-0.1.0 → ozonapi_async-0.1.2}/PKG-INFO +27 -31
  2. {ozonapi_async-0.1.0 → ozonapi_async-0.1.2}/README.md +10 -10
  3. {ozonapi_async-0.1.0 → ozonapi_async-0.1.2}/pyproject.toml +29 -31
  4. ozonapi_async-0.1.2/setup.py +29 -0
  5. ozonapi_async-0.1.2/src/ozonapi/__init__.py +13 -0
  6. {ozonapi_async-0.1.0 → ozonapi_async-0.1.2}/src/ozonapi/seller/__init__.py +2 -2
  7. {ozonapi_async-0.1.0 → ozonapi_async-0.1.2}/src/ozonapi_async.egg-info/PKG-INFO +27 -31
  8. ozonapi_async-0.1.2/src/ozonapi_async.egg-info/requires.txt +16 -0
  9. ozonapi_async-0.1.0/setup.py +0 -59
  10. ozonapi_async-0.1.0/src/ozonapi/__init__.py +0 -9
  11. ozonapi_async-0.1.0/src/ozonapi_async.egg-info/requires.txt +0 -23
  12. {ozonapi_async-0.1.0 → ozonapi_async-0.1.2}/LICENSE +0 -0
  13. {ozonapi_async-0.1.0 → ozonapi_async-0.1.2}/setup.cfg +0 -0
  14. {ozonapi_async-0.1.0 → ozonapi_async-0.1.2}/src/ozonapi/seller/common/__init__.py +0 -0
  15. {ozonapi_async-0.1.0 → ozonapi_async-0.1.2}/src/ozonapi/seller/common/enumerations/__init__.py +0 -0
  16. {ozonapi_async-0.1.0 → ozonapi_async-0.1.2}/src/ozonapi/seller/common/enumerations/delivery.py +0 -0
  17. {ozonapi_async-0.1.0 → ozonapi_async-0.1.2}/src/ozonapi/seller/common/enumerations/localization.py +0 -0
  18. {ozonapi_async-0.1.0 → ozonapi_async-0.1.2}/src/ozonapi/seller/common/enumerations/postings.py +0 -0
  19. {ozonapi_async-0.1.0 → ozonapi_async-0.1.2}/src/ozonapi/seller/common/enumerations/products.py +0 -0
  20. {ozonapi_async-0.1.0 → ozonapi_async-0.1.2}/src/ozonapi/seller/common/enumerations/requests.py +0 -0
  21. {ozonapi_async-0.1.0 → ozonapi_async-0.1.2}/src/ozonapi/seller/common/enumerations/warehouses.py +0 -0
  22. {ozonapi_async-0.1.0 → ozonapi_async-0.1.2}/src/ozonapi/seller/core/__init__.py +0 -0
  23. {ozonapi_async-0.1.0 → ozonapi_async-0.1.2}/src/ozonapi/seller/core/config.py +0 -0
  24. {ozonapi_async-0.1.0 → ozonapi_async-0.1.2}/src/ozonapi/seller/core/core.py +0 -0
  25. {ozonapi_async-0.1.0 → ozonapi_async-0.1.2}/src/ozonapi/seller/core/exceptions.py +0 -0
  26. {ozonapi_async-0.1.0 → ozonapi_async-0.1.2}/src/ozonapi/seller/core/method_rate_limiter.py +0 -0
  27. {ozonapi_async-0.1.0 → ozonapi_async-0.1.2}/src/ozonapi/seller/core/rate_limiter.py +0 -0
  28. {ozonapi_async-0.1.0 → ozonapi_async-0.1.2}/src/ozonapi/seller/core/sessions.py +0 -0
  29. {ozonapi_async-0.1.0 → ozonapi_async-0.1.2}/src/ozonapi/seller/methods/__init__.py +0 -0
  30. {ozonapi_async-0.1.0 → ozonapi_async-0.1.2}/src/ozonapi/seller/methods/attributes_and_characteristics.py +0 -0
  31. {ozonapi_async-0.1.0 → ozonapi_async-0.1.2}/src/ozonapi/seller/methods/barcodes.py +0 -0
  32. {ozonapi_async-0.1.0 → ozonapi_async-0.1.2}/src/ozonapi/seller/methods/fbs.py +0 -0
  33. {ozonapi_async-0.1.0 → ozonapi_async-0.1.2}/src/ozonapi/seller/methods/prices_and_stocks.py +0 -0
  34. {ozonapi_async-0.1.0 → ozonapi_async-0.1.2}/src/ozonapi/seller/methods/products.py +0 -0
  35. {ozonapi_async-0.1.0 → ozonapi_async-0.1.2}/src/ozonapi/seller/methods/warehouses.py +0 -0
  36. {ozonapi_async-0.1.0 → ozonapi_async-0.1.2}/src/ozonapi/seller/schemas/__init__.py +0 -0
  37. {ozonapi_async-0.1.0 → ozonapi_async-0.1.2}/src/ozonapi/seller/schemas/attributes_and_characteristics/__init__.py +0 -0
  38. {ozonapi_async-0.1.0 → ozonapi_async-0.1.2}/src/ozonapi/seller/schemas/attributes_and_characteristics/base.py +0 -0
  39. {ozonapi_async-0.1.0 → ozonapi_async-0.1.2}/src/ozonapi/seller/schemas/attributes_and_characteristics/v1__description_category_attribute.py +0 -0
  40. {ozonapi_async-0.1.0 → ozonapi_async-0.1.2}/src/ozonapi/seller/schemas/attributes_and_characteristics/v1__description_category_attribute_values.py +0 -0
  41. {ozonapi_async-0.1.0 → ozonapi_async-0.1.2}/src/ozonapi/seller/schemas/attributes_and_characteristics/v1__description_category_attribute_values_search.py +0 -0
  42. {ozonapi_async-0.1.0 → ozonapi_async-0.1.2}/src/ozonapi/seller/schemas/attributes_and_characteristics/v1__description_category_tree.py +0 -0
  43. {ozonapi_async-0.1.0 → ozonapi_async-0.1.2}/src/ozonapi/seller/schemas/barcodes/__init__.py +0 -0
  44. {ozonapi_async-0.1.0 → ozonapi_async-0.1.2}/src/ozonapi/seller/schemas/barcodes/v1__barcode_add.py +0 -0
  45. {ozonapi_async-0.1.0 → ozonapi_async-0.1.2}/src/ozonapi/seller/schemas/barcodes/v1__barcode_generate.py +0 -0
  46. {ozonapi_async-0.1.0 → ozonapi_async-0.1.2}/src/ozonapi/seller/schemas/base.py +0 -0
  47. {ozonapi_async-0.1.0 → ozonapi_async-0.1.2}/src/ozonapi/seller/schemas/fbs/__init__.py +0 -0
  48. {ozonapi_async-0.1.0 → ozonapi_async-0.1.2}/src/ozonapi/seller/schemas/fbs/v3__posting_fbs_unfulfilled_list.py +0 -0
  49. {ozonapi_async-0.1.0 → ozonapi_async-0.1.2}/src/ozonapi/seller/schemas/prices_and_stocks/__init__.py +0 -0
  50. {ozonapi_async-0.1.0 → ozonapi_async-0.1.2}/src/ozonapi/seller/schemas/prices_and_stocks/base.py +0 -0
  51. {ozonapi_async-0.1.0 → ozonapi_async-0.1.2}/src/ozonapi/seller/schemas/prices_and_stocks/v1__product_info_stocks_by_warehouse_fbs.py +0 -0
  52. {ozonapi_async-0.1.0 → ozonapi_async-0.1.2}/src/ozonapi/seller/schemas/prices_and_stocks/v4__product_info_stocks.py +0 -0
  53. {ozonapi_async-0.1.0 → ozonapi_async-0.1.2}/src/ozonapi/seller/schemas/prices_and_stocks/v5__product_info_prices.py +0 -0
  54. {ozonapi_async-0.1.0 → ozonapi_async-0.1.2}/src/ozonapi/seller/schemas/products/__init__.py +0 -0
  55. {ozonapi_async-0.1.0 → ozonapi_async-0.1.2}/src/ozonapi/seller/schemas/products/base.py +0 -0
  56. {ozonapi_async-0.1.0 → ozonapi_async-0.1.2}/src/ozonapi/seller/schemas/products/v1__product_archive.py +0 -0
  57. {ozonapi_async-0.1.0 → ozonapi_async-0.1.2}/src/ozonapi/seller/schemas/products/v1__product_attributes_update.py +0 -0
  58. {ozonapi_async-0.1.0 → ozonapi_async-0.1.2}/src/ozonapi/seller/schemas/products/v1__product_import_by_sku.py +0 -0
  59. {ozonapi_async-0.1.0 → ozonapi_async-0.1.2}/src/ozonapi/seller/schemas/products/v1__product_import_info.py +0 -0
  60. {ozonapi_async-0.1.0 → ozonapi_async-0.1.2}/src/ozonapi/seller/schemas/products/v1__product_info_subscription.py +0 -0
  61. {ozonapi_async-0.1.0 → ozonapi_async-0.1.2}/src/ozonapi/seller/schemas/products/v1__product_rating_by_sku.py +0 -0
  62. {ozonapi_async-0.1.0 → ozonapi_async-0.1.2}/src/ozonapi/seller/schemas/products/v1__product_related_sku_get.py +0 -0
  63. {ozonapi_async-0.1.0 → ozonapi_async-0.1.2}/src/ozonapi/seller/schemas/products/v1__product_unarchive.py +0 -0
  64. {ozonapi_async-0.1.0 → ozonapi_async-0.1.2}/src/ozonapi/seller/schemas/products/v1__product_update_offer_id.py +0 -0
  65. {ozonapi_async-0.1.0 → ozonapi_async-0.1.2}/src/ozonapi/seller/schemas/products/v2__product_pictures_info.py +0 -0
  66. {ozonapi_async-0.1.0 → ozonapi_async-0.1.2}/src/ozonapi/seller/schemas/products/v2__products_delete.py +0 -0
  67. {ozonapi_async-0.1.0 → ozonapi_async-0.1.2}/src/ozonapi/seller/schemas/products/v3__product_import.py +0 -0
  68. {ozonapi_async-0.1.0 → ozonapi_async-0.1.2}/src/ozonapi/seller/schemas/products/v3__product_info_list.py +0 -0
  69. {ozonapi_async-0.1.0 → ozonapi_async-0.1.2}/src/ozonapi/seller/schemas/products/v3__product_list.py +0 -0
  70. {ozonapi_async-0.1.0 → ozonapi_async-0.1.2}/src/ozonapi/seller/schemas/products/v4__product_info_attributes.py +0 -0
  71. {ozonapi_async-0.1.0 → ozonapi_async-0.1.2}/src/ozonapi/seller/schemas/warehouses/__init__.py +0 -0
  72. {ozonapi_async-0.1.0 → ozonapi_async-0.1.2}/src/ozonapi/seller/schemas/warehouses/v1__delivery_method_list.py +0 -0
  73. {ozonapi_async-0.1.0 → ozonapi_async-0.1.2}/src/ozonapi/seller/schemas/warehouses/v1__warehouse_list.py +0 -0
  74. {ozonapi_async-0.1.0 → ozonapi_async-0.1.2}/src/ozonapi_async.egg-info/SOURCES.txt +0 -0
  75. {ozonapi_async-0.1.0 → ozonapi_async-0.1.2}/src/ozonapi_async.egg-info/dependency_links.txt +0 -0
  76. {ozonapi_async-0.1.0 → ozonapi_async-0.1.2}/src/ozonapi_async.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: ozonapi-async
3
- Version: 0.1.0
3
+ Version: 0.1.2
4
4
  Summary: Асинхронный клиент для работы с API маркетплейса Ozon
5
5
  Home-page: https://github.com/a-ulianov/OzonAPI
6
6
  Author: Alexander Ulianov
@@ -15,34 +15,30 @@ Classifier: Development Status :: 4 - Beta
15
15
  Classifier: Intended Audience :: Developers
16
16
  Classifier: License :: OSI Approved :: MIT License
17
17
  Classifier: Operating System :: OS Independent
18
+ Classifier: Programming Language :: Python :: 3
19
+ Classifier: Programming Language :: Python :: 3.9
20
+ Classifier: Programming Language :: Python :: 3.10
18
21
  Classifier: Programming Language :: Python :: 3.11
19
22
  Classifier: Programming Language :: Python :: 3.12
20
23
  Classifier: Programming Language :: Python :: 3.13
21
24
  Classifier: Topic :: Software Development :: Libraries :: Python Modules
22
- Requires-Python: >=3.10
25
+ Requires-Python: >=3.9
23
26
  Description-Content-Type: text/markdown
24
27
  License-File: LICENSE
25
- Requires-Dist: aiohttp<4.0.0,>=3.8.0
26
- Requires-Dist: pydantic<3.0.0,>=2.0.0
27
- Requires-Dist: aiolimiter<2.0.0,>=1.0.0
28
- Requires-Dist: tenacity<10.0.0,>=8.0.0
29
- Requires-Dist: loguru<1.0.0,>=0.7.0
30
- Requires-Dist: yarl<2.0.0,>=1.0.0
31
- Requires-Dist: multidict<7.0.0,>=6.0.0
32
- Requires-Dist: frozenlist<2.0.0,>=1.0.0
33
- Requires-Dist: attrs<26.0.0,>=23.0.0
34
- Requires-Dist: typing-extensions<5.0.0,>=4.0.0
28
+ Requires-Dist: aiohttp<4.0.0,>=3.13.1
29
+ Requires-Dist: loguru<0.8.0,>=0.7.3
30
+ Requires-Dist: tenacity<10.0.0,>=9.1.2
31
+ Requires-Dist: aiolimiter<2.0.0,>=1.2.1
32
+ Requires-Dist: pydantic<3.0.0,>=2.12.3
33
+ Requires-Dist: pydantic-settings<3.0.0,>=2.11.0
35
34
  Provides-Extra: test
36
- Requires-Dist: pytest<9.0.0,>=7.0.0; extra == "test"
37
- Requires-Dist: pytest-asyncio<2.0.0,>=0.21.0; extra == "test"
38
- Requires-Dist: pytest-cov<5.0.0,>=4.0.0; extra == "test"
39
- Requires-Dist: coverage<8.0.0,>=7.0.0; extra == "test"
35
+ Requires-Dist: pytest<9.0.0,>=8.4.2; extra == "test"
36
+ Requires-Dist: pytest-cov<8.0.0,>=7.0.0; extra == "test"
37
+ Requires-Dist: pytest-asyncio<2.0.0,>=1.2.0; extra == "test"
40
38
  Provides-Extra: dev
41
- Requires-Dist: pytest<9.0.0,>=7.0.0; extra == "dev"
42
- Requires-Dist: pytest-asyncio<2.0.0,>=0.21.0; extra == "dev"
43
- Requires-Dist: pytest-cov<5.0.0,>=4.0.0; extra == "dev"
44
- Requires-Dist: coverage<8.0.0,>=7.0.0; extra == "dev"
45
- Requires-Dist: python-dotenv<2.0.0,>=1.0.0; extra == "dev"
39
+ Requires-Dist: pytest<9.0.0,>=8.4.2; extra == "dev"
40
+ Requires-Dist: pytest-cov<8.0.0,>=7.0.0; extra == "dev"
41
+ Requires-Dist: pytest-asyncio<2.0.0,>=1.2.0; extra == "dev"
46
42
  Dynamic: home-page
47
43
  Dynamic: license-file
48
44
  Dynamic: requires-python
@@ -103,10 +99,10 @@ pip install -e
103
99
 
104
100
  ```python
105
101
  import asyncio
106
- from ozonapi import APIManager
102
+ from ozonapi import SellerAPI
107
103
 
108
104
  async def main():
109
- async with APIManager(
105
+ async with SellerAPI(
110
106
  client_id="your_client_id",
111
107
  api_key="your_api_key"
112
108
  ) as api:
@@ -122,7 +118,7 @@ if __name__ == "__main__":
122
118
 
123
119
  ```python
124
120
  import asyncio
125
- from ozonapi import APIManager, APIConfig
121
+ from ozonapi import SellerAPI, SellerAPIConfig
126
122
 
127
123
  async def main():
128
124
  # Создание кастомной конфигурации
@@ -134,7 +130,7 @@ async def main():
134
130
  max_retries=5
135
131
  )
136
132
 
137
- async with APIManager(config=config) as api:
133
+ async with SellerAPI(config=config) as api:
138
134
  # Работа с товарами
139
135
  products = await api.product_list()
140
136
  # Работа с ценами
@@ -160,11 +156,11 @@ OZON_SELLER_BASE_URL=https://api-seller.ozon.ru
160
156
 
161
157
  ```python
162
158
  import asyncio
163
- from ozonapi import APIManager
159
+ from ozonapi import SellerAPI
164
160
 
165
161
  async def main():
166
162
  # Конфигурация автоматически загружается из .env
167
- async with APIManager() as api:
163
+ async with SellerAPI() as api:
168
164
  # Ваши API вызовы
169
165
  warehouses = await api.warehouse_list()
170
166
  print(f"Доступно складов: {len(warehouses.warehouses)}")
@@ -176,7 +172,7 @@ asyncio.run(main())
176
172
 
177
173
  ```python
178
174
  import asyncio
179
- from ozonapi import APIManager
175
+ from ozonapi import SellerAPI
180
176
 
181
177
  async def main():
182
178
  # Создание клиентов для разных аккаунтов
@@ -193,7 +189,7 @@ async def main():
193
189
  results = await asyncio.gather(*tasks)
194
190
 
195
191
  async def fetch_account_data(config):
196
- async with APIManager(**config) as api:
192
+ async with SellerAPI(**config) as api:
197
193
  products = await api.product_list()
198
194
  return {
199
195
  "client_id": config["client_id"],
@@ -211,7 +207,7 @@ asyncio.run(main())
211
207
 
212
208
  ```python
213
209
  # Кастомные лимиты
214
- config = APIConfig(
210
+ config = SellerAPIConfig(
215
211
  max_requests_per_second=25, # Безопасный запас
216
212
  retry_min_wait=2.0,
217
213
  retry_max_wait=10.0
@@ -224,7 +220,7 @@ config = APIConfig(
224
220
 
225
221
  ```python
226
222
  # Настройка стратегии повторов
227
- config = APIConfig(
223
+ config = SellerAPIConfig(
228
224
  max_retries=3, # Максимум 3 попытки
229
225
  retry_min_wait=1.0, # Минимальная задержка
230
226
  retry_max_wait=10.0 # Максимальная задержка
@@ -54,10 +54,10 @@ pip install -e
54
54
 
55
55
  ```python
56
56
  import asyncio
57
- from ozonapi import APIManager
57
+ from ozonapi import SellerAPI
58
58
 
59
59
  async def main():
60
- async with APIManager(
60
+ async with SellerAPI(
61
61
  client_id="your_client_id",
62
62
  api_key="your_api_key"
63
63
  ) as api:
@@ -73,7 +73,7 @@ if __name__ == "__main__":
73
73
 
74
74
  ```python
75
75
  import asyncio
76
- from ozonapi import APIManager, APIConfig
76
+ from ozonapi import SellerAPI, SellerAPIConfig
77
77
 
78
78
  async def main():
79
79
  # Создание кастомной конфигурации
@@ -85,7 +85,7 @@ async def main():
85
85
  max_retries=5
86
86
  )
87
87
 
88
- async with APIManager(config=config) as api:
88
+ async with SellerAPI(config=config) as api:
89
89
  # Работа с товарами
90
90
  products = await api.product_list()
91
91
  # Работа с ценами
@@ -111,11 +111,11 @@ OZON_SELLER_BASE_URL=https://api-seller.ozon.ru
111
111
 
112
112
  ```python
113
113
  import asyncio
114
- from ozonapi import APIManager
114
+ from ozonapi import SellerAPI
115
115
 
116
116
  async def main():
117
117
  # Конфигурация автоматически загружается из .env
118
- async with APIManager() as api:
118
+ async with SellerAPI() as api:
119
119
  # Ваши API вызовы
120
120
  warehouses = await api.warehouse_list()
121
121
  print(f"Доступно складов: {len(warehouses.warehouses)}")
@@ -127,7 +127,7 @@ asyncio.run(main())
127
127
 
128
128
  ```python
129
129
  import asyncio
130
- from ozonapi import APIManager
130
+ from ozonapi import SellerAPI
131
131
 
132
132
  async def main():
133
133
  # Создание клиентов для разных аккаунтов
@@ -144,7 +144,7 @@ async def main():
144
144
  results = await asyncio.gather(*tasks)
145
145
 
146
146
  async def fetch_account_data(config):
147
- async with APIManager(**config) as api:
147
+ async with SellerAPI(**config) as api:
148
148
  products = await api.product_list()
149
149
  return {
150
150
  "client_id": config["client_id"],
@@ -162,7 +162,7 @@ asyncio.run(main())
162
162
 
163
163
  ```python
164
164
  # Кастомные лимиты
165
- config = APIConfig(
165
+ config = SellerAPIConfig(
166
166
  max_requests_per_second=25, # Безопасный запас
167
167
  retry_min_wait=2.0,
168
168
  retry_max_wait=10.0
@@ -175,7 +175,7 @@ config = APIConfig(
175
175
 
176
176
  ```python
177
177
  # Настройка стратегии повторов
178
- config = APIConfig(
178
+ config = SellerAPIConfig(
179
179
  max_retries=3, # Максимум 3 попытки
180
180
  retry_min_wait=1.0, # Минимальная задержка
181
181
  retry_max_wait=10.0 # Максимальная задержка
@@ -4,51 +4,49 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "ozonapi-async"
7
- version = "0.1.0"
7
+ version = "0.1.2" # Увеличиваем версию, так как 0.1.1 уже с ошибкой
8
8
  description = "Асинхронный клиент для работы с API маркетплейса Ozon"
9
9
  readme = "README.md"
10
- license = {text = "MIT"}
11
- authors = [
12
- {name = "Alexander Ulianov"},
13
- ]
14
10
  keywords = ["ozon", "api", "async", "ecommerce", "seller", "client"]
15
11
  classifiers = [
16
12
  "Development Status :: 4 - Beta",
17
13
  "Intended Audience :: Developers",
18
14
  "License :: OSI Approved :: MIT License",
19
15
  "Operating System :: OS Independent",
16
+ "Programming Language :: Python :: 3",
17
+ "Programming Language :: Python :: 3.9",
18
+ "Programming Language :: Python :: 3.10",
20
19
  "Programming Language :: Python :: 3.11",
21
20
  "Programming Language :: Python :: 3.12",
22
21
  "Programming Language :: Python :: 3.13",
23
22
  "Topic :: Software Development :: Libraries :: Python Modules",
24
23
  ]
25
- requires-python = ">=3.11"
24
+ requires-python = ">=3.9,<4.0"
26
25
  dependencies = [
27
- "aiohttp>=3.8.0,<4.0.0",
28
- "pydantic>=2.0.0,<3.0.0",
29
- "aiolimiter>=1.0.0,<2.0.0",
30
- "tenacity>=8.0.0,<10.0.0",
31
- "loguru>=0.7.0,<1.0.0",
32
- "yarl>=1.0.0,<2.0.0",
33
- "multidict>=6.0.0,<7.0.0",
34
- "frozenlist>=1.0.0,<2.0.0",
35
- "attrs>=23.0.0,<26.0.0",
36
- "typing-extensions>=4.0.0,<5.0.0",
26
+ "aiohttp>=3.13.1,<4.0.0",
27
+ "loguru>=0.7.3,<0.8.0",
28
+ "tenacity>=9.1.2,<10.0.0",
29
+ "aiolimiter>=1.2.1,<2.0.0",
30
+ "pydantic>=2.12.3,<3.0.0",
31
+ "pydantic-settings>=2.11.0,<3.0.0"
37
32
  ]
38
33
 
34
+ [[project.authors]]
35
+ name = "Alexander Ulianov"
36
+
37
+ [project.license]
38
+ text = "MIT"
39
+
39
40
  [project.optional-dependencies]
40
41
  test = [
41
- "pytest>=7.0.0,<9.0.0",
42
- "pytest-asyncio>=0.21.0,<2.0.0",
43
- "pytest-cov>=4.0.0,<5.0.0",
44
- "coverage>=7.0.0,<8.0.0",
42
+ "pytest>=8.4.2,<9.0.0",
43
+ "pytest-cov>=7.0.0,<8.0.0",
44
+ "pytest-asyncio>=1.2.0,<2.0.0"
45
45
  ]
46
46
  dev = [
47
- "pytest>=7.0.0,<9.0.0",
48
- "pytest-asyncio>=0.21.0,<2.0.0",
49
- "pytest-cov>=4.0.0,<5.0.0",
50
- "coverage>=7.0.0,<8.0.0",
51
- "python-dotenv>=1.0.0,<2.0.0",
47
+ "pytest>=8.4.2,<9.0.0",
48
+ "pytest-cov>=7.0.0,<8.0.0",
49
+ "pytest-asyncio>=1.2.0,<2.0.0"
52
50
  ]
53
51
 
54
52
  [project.urls]
@@ -56,11 +54,7 @@ Homepage = "https://github.com/a-ulianov/OzonAPI"
56
54
  Documentation = "https://github.com/a-ulianov/OzonAPI#readme"
57
55
  Repository = "https://github.com/a-ulianov/OzonAPI"
58
56
  Issues = "https://github.com/a-ulianov/OzonAPI/issues"
59
- "Changelog" = "https://github.com/a-ulianov/OzonAPI/releases"
60
-
61
- [tool.setuptools.packages.find]
62
- where = ["src"]
63
- include = ["ozonapi*"]
57
+ Changelog = "https://github.com/a-ulianov/OzonAPI/releases"
64
58
 
65
59
  [tool.setuptools.package-data]
66
60
  "*" = ["*.txt", "*.json", "*.yaml", "*.yml", "*.env"]
@@ -71,4 +65,8 @@ testpaths = ["tests"]
71
65
  python_files = ["test_*.py"]
72
66
  python_classes = ["Test*"]
73
67
  python_functions = ["test_*"]
74
- addopts = "--import-mode=importlib --cov=ozonapi --cov-report=html"
68
+ addopts = "--import-mode=importlib --cov=ozonapi --cov-report=html"
69
+
70
+ [tool.setuptools.packages.find]
71
+ where = ["src"]
72
+ include = ["ozonapi*"]
@@ -0,0 +1,29 @@
1
+ from setuptools import setup, find_packages
2
+
3
+ with open("README.md", "r", encoding="utf-8") as fh:
4
+ long_description = fh.read()
5
+
6
+ setup(
7
+ name="ozonapi-async",
8
+ version="0.1.0",
9
+ author="a-ulianov",
10
+ description="Python client for Ozon API",
11
+ long_description=long_description,
12
+ long_description_content_type="text/markdown",
13
+ url="https://github.com/a-ulianov/OzonAPI",
14
+ packages=find_packages(),
15
+ classifiers=[
16
+ "Development Status :: 4 - Beta",
17
+ "Intended Audience :: Developers",
18
+ "License :: OSI Approved :: MIT License",
19
+ "Operating System :: OS Independent",
20
+ "Programming Language :: Python :: 3",
21
+ "Programming Language :: Python :: 3.10",
22
+ "Programming Language :: Python :: 3.11",
23
+ "Programming Language :: Python :: 3.12",
24
+ "Programming Language :: Python :: 3.13",
25
+ "Programming Language :: Python :: 3.14",
26
+ ],
27
+ python_requires=">=3.9",
28
+ install_requires=[],
29
+ )
@@ -0,0 +1,13 @@
1
+ """
2
+ Асинхронный интерфейс для взаимодействия с API маркетплейса Ozon.
3
+ """
4
+
5
+ __version__ = "0.1.2"
6
+ __author__ = "Alexander Ulianov"
7
+ __repository__ = "https://github.com/a-ulianov/OzonAPI"
8
+ __docs__ = "https://github.com/a-ulianov/OzonAPI#readme"
9
+ __issues__ = "https://github.com/a-ulianov/OzonAPI/issues"
10
+
11
+ __all__ = ["SellerAPI", "SellerAPIConfig"]
12
+
13
+ from .seller import SellerAPI, SellerAPIConfig
@@ -1,4 +1,4 @@
1
- from .core import APIManager
1
+ from .core import APIConfig as SellerAPIConfig
2
2
  from .methods import (
3
3
  SellerBarcodeAPI,
4
4
  SellerCategoryAPI,
@@ -24,6 +24,6 @@ class SellerAPI(
24
24
  pass
25
25
 
26
26
 
27
- __all__ = ["SellerAPI", "APIManager"]
27
+ __all__ = ["SellerAPI", "SellerAPIConfig"]
28
28
 
29
29
  # Импортируйте здесь бизнес-методы и собирайте публичный API
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: ozonapi-async
3
- Version: 0.1.0
3
+ Version: 0.1.2
4
4
  Summary: Асинхронный клиент для работы с API маркетплейса Ozon
5
5
  Home-page: https://github.com/a-ulianov/OzonAPI
6
6
  Author: Alexander Ulianov
@@ -15,34 +15,30 @@ Classifier: Development Status :: 4 - Beta
15
15
  Classifier: Intended Audience :: Developers
16
16
  Classifier: License :: OSI Approved :: MIT License
17
17
  Classifier: Operating System :: OS Independent
18
+ Classifier: Programming Language :: Python :: 3
19
+ Classifier: Programming Language :: Python :: 3.9
20
+ Classifier: Programming Language :: Python :: 3.10
18
21
  Classifier: Programming Language :: Python :: 3.11
19
22
  Classifier: Programming Language :: Python :: 3.12
20
23
  Classifier: Programming Language :: Python :: 3.13
21
24
  Classifier: Topic :: Software Development :: Libraries :: Python Modules
22
- Requires-Python: >=3.10
25
+ Requires-Python: >=3.9
23
26
  Description-Content-Type: text/markdown
24
27
  License-File: LICENSE
25
- Requires-Dist: aiohttp<4.0.0,>=3.8.0
26
- Requires-Dist: pydantic<3.0.0,>=2.0.0
27
- Requires-Dist: aiolimiter<2.0.0,>=1.0.0
28
- Requires-Dist: tenacity<10.0.0,>=8.0.0
29
- Requires-Dist: loguru<1.0.0,>=0.7.0
30
- Requires-Dist: yarl<2.0.0,>=1.0.0
31
- Requires-Dist: multidict<7.0.0,>=6.0.0
32
- Requires-Dist: frozenlist<2.0.0,>=1.0.0
33
- Requires-Dist: attrs<26.0.0,>=23.0.0
34
- Requires-Dist: typing-extensions<5.0.0,>=4.0.0
28
+ Requires-Dist: aiohttp<4.0.0,>=3.13.1
29
+ Requires-Dist: loguru<0.8.0,>=0.7.3
30
+ Requires-Dist: tenacity<10.0.0,>=9.1.2
31
+ Requires-Dist: aiolimiter<2.0.0,>=1.2.1
32
+ Requires-Dist: pydantic<3.0.0,>=2.12.3
33
+ Requires-Dist: pydantic-settings<3.0.0,>=2.11.0
35
34
  Provides-Extra: test
36
- Requires-Dist: pytest<9.0.0,>=7.0.0; extra == "test"
37
- Requires-Dist: pytest-asyncio<2.0.0,>=0.21.0; extra == "test"
38
- Requires-Dist: pytest-cov<5.0.0,>=4.0.0; extra == "test"
39
- Requires-Dist: coverage<8.0.0,>=7.0.0; extra == "test"
35
+ Requires-Dist: pytest<9.0.0,>=8.4.2; extra == "test"
36
+ Requires-Dist: pytest-cov<8.0.0,>=7.0.0; extra == "test"
37
+ Requires-Dist: pytest-asyncio<2.0.0,>=1.2.0; extra == "test"
40
38
  Provides-Extra: dev
41
- Requires-Dist: pytest<9.0.0,>=7.0.0; extra == "dev"
42
- Requires-Dist: pytest-asyncio<2.0.0,>=0.21.0; extra == "dev"
43
- Requires-Dist: pytest-cov<5.0.0,>=4.0.0; extra == "dev"
44
- Requires-Dist: coverage<8.0.0,>=7.0.0; extra == "dev"
45
- Requires-Dist: python-dotenv<2.0.0,>=1.0.0; extra == "dev"
39
+ Requires-Dist: pytest<9.0.0,>=8.4.2; extra == "dev"
40
+ Requires-Dist: pytest-cov<8.0.0,>=7.0.0; extra == "dev"
41
+ Requires-Dist: pytest-asyncio<2.0.0,>=1.2.0; extra == "dev"
46
42
  Dynamic: home-page
47
43
  Dynamic: license-file
48
44
  Dynamic: requires-python
@@ -103,10 +99,10 @@ pip install -e
103
99
 
104
100
  ```python
105
101
  import asyncio
106
- from ozonapi import APIManager
102
+ from ozonapi import SellerAPI
107
103
 
108
104
  async def main():
109
- async with APIManager(
105
+ async with SellerAPI(
110
106
  client_id="your_client_id",
111
107
  api_key="your_api_key"
112
108
  ) as api:
@@ -122,7 +118,7 @@ if __name__ == "__main__":
122
118
 
123
119
  ```python
124
120
  import asyncio
125
- from ozonapi import APIManager, APIConfig
121
+ from ozonapi import SellerAPI, SellerAPIConfig
126
122
 
127
123
  async def main():
128
124
  # Создание кастомной конфигурации
@@ -134,7 +130,7 @@ async def main():
134
130
  max_retries=5
135
131
  )
136
132
 
137
- async with APIManager(config=config) as api:
133
+ async with SellerAPI(config=config) as api:
138
134
  # Работа с товарами
139
135
  products = await api.product_list()
140
136
  # Работа с ценами
@@ -160,11 +156,11 @@ OZON_SELLER_BASE_URL=https://api-seller.ozon.ru
160
156
 
161
157
  ```python
162
158
  import asyncio
163
- from ozonapi import APIManager
159
+ from ozonapi import SellerAPI
164
160
 
165
161
  async def main():
166
162
  # Конфигурация автоматически загружается из .env
167
- async with APIManager() as api:
163
+ async with SellerAPI() as api:
168
164
  # Ваши API вызовы
169
165
  warehouses = await api.warehouse_list()
170
166
  print(f"Доступно складов: {len(warehouses.warehouses)}")
@@ -176,7 +172,7 @@ asyncio.run(main())
176
172
 
177
173
  ```python
178
174
  import asyncio
179
- from ozonapi import APIManager
175
+ from ozonapi import SellerAPI
180
176
 
181
177
  async def main():
182
178
  # Создание клиентов для разных аккаунтов
@@ -193,7 +189,7 @@ async def main():
193
189
  results = await asyncio.gather(*tasks)
194
190
 
195
191
  async def fetch_account_data(config):
196
- async with APIManager(**config) as api:
192
+ async with SellerAPI(**config) as api:
197
193
  products = await api.product_list()
198
194
  return {
199
195
  "client_id": config["client_id"],
@@ -211,7 +207,7 @@ asyncio.run(main())
211
207
 
212
208
  ```python
213
209
  # Кастомные лимиты
214
- config = APIConfig(
210
+ config = SellerAPIConfig(
215
211
  max_requests_per_second=25, # Безопасный запас
216
212
  retry_min_wait=2.0,
217
213
  retry_max_wait=10.0
@@ -224,7 +220,7 @@ config = APIConfig(
224
220
 
225
221
  ```python
226
222
  # Настройка стратегии повторов
227
- config = APIConfig(
223
+ config = SellerAPIConfig(
228
224
  max_retries=3, # Максимум 3 попытки
229
225
  retry_min_wait=1.0, # Минимальная задержка
230
226
  retry_max_wait=10.0 # Максимальная задержка
@@ -0,0 +1,16 @@
1
+ aiohttp<4.0.0,>=3.13.1
2
+ loguru<0.8.0,>=0.7.3
3
+ tenacity<10.0.0,>=9.1.2
4
+ aiolimiter<2.0.0,>=1.2.1
5
+ pydantic<3.0.0,>=2.12.3
6
+ pydantic-settings<3.0.0,>=2.11.0
7
+
8
+ [dev]
9
+ pytest<9.0.0,>=8.4.2
10
+ pytest-cov<8.0.0,>=7.0.0
11
+ pytest-asyncio<2.0.0,>=1.2.0
12
+
13
+ [test]
14
+ pytest<9.0.0,>=8.4.2
15
+ pytest-cov<8.0.0,>=7.0.0
16
+ pytest-asyncio<2.0.0,>=1.2.0
@@ -1,59 +0,0 @@
1
- from setuptools import setup, find_packages
2
-
3
- with open("README.md", "r", encoding="utf-8") as fh:
4
- long_description = fh.read()
5
-
6
- setup(
7
- name="ozonapi-async",
8
- version="0.1.0",
9
- author="a-ulianov",
10
- description="Python client for Ozon API",
11
- long_description=long_description,
12
- long_description_content_type="text/markdown",
13
- url="https://github.com/a-ulianov/OzonAPI",
14
- packages=find_packages(),
15
- classifiers=[
16
- "Development Status :: 4 - Beta",
17
- "Intended Audience :: Developers",
18
- "License :: OSI Approved :: MIT License",
19
- "Operating System :: OS Independent",
20
- "Programming Language :: Python :: 3",
21
- "Programming Language :: Python :: 3.10",
22
- "Programming Language :: Python :: 3.11",
23
- "Programming Language :: Python :: 3.12",
24
- "Programming Language :: Python :: 3.13",
25
- "Programming Language :: Python :: 3.14",
26
- ],
27
- python_requires=">=3.10",
28
- install_requires=[
29
- "aiohappyeyeballs==2.6.1",
30
- "aiohttp==3.12.15",
31
- "aiolimiter==1.2.1",
32
- "aiosignal==1.4.0",
33
- "annotated-types==0.7.0",
34
- "attrs==25.3.0",
35
- "colorama==0.4.6",
36
- "coverage==7.11.0",
37
- "frozenlist==1.7.0",
38
- "idna==3.10",
39
- "iniconfig==2.1.0",
40
- "loguru==0.7.3",
41
- "multidict==6.6.4",
42
- "packaging==25.0",
43
- "pluggy==1.6.0",
44
- "propcache==0.3.2",
45
- "pydantic==2.11.9",
46
- "pydantic-settings==2.11.0",
47
- "pydantic_core==2.33.2",
48
- "Pygments==2.19.2",
49
- "pytest==8.4.2",
50
- "pytest-asyncio==1.2.0",
51
- "pytest-cov==7.0.0",
52
- "python-dotenv==1.1.1",
53
- "tenacity==9.1.2",
54
- "typing-inspection==0.4.2",
55
- "typing_extensions==4.15.0",
56
- "win32_setctime==1.2.0",
57
- "yarl==1.20.1",
58
- ],
59
- )
@@ -1,9 +0,0 @@
1
- """
2
- Асинхронный интерфейс для взаимодействия с API маркетплейса Ozon.
3
- """
4
-
5
- __version__ = "0.1.0"
6
- __author__ = "Alexander Ulianov"
7
- __all__ = ["SellerAPI", ]
8
-
9
- from .seller import SellerAPI
@@ -1,23 +0,0 @@
1
- aiohttp<4.0.0,>=3.8.0
2
- pydantic<3.0.0,>=2.0.0
3
- aiolimiter<2.0.0,>=1.0.0
4
- tenacity<10.0.0,>=8.0.0
5
- loguru<1.0.0,>=0.7.0
6
- yarl<2.0.0,>=1.0.0
7
- multidict<7.0.0,>=6.0.0
8
- frozenlist<2.0.0,>=1.0.0
9
- attrs<26.0.0,>=23.0.0
10
- typing-extensions<5.0.0,>=4.0.0
11
-
12
- [dev]
13
- pytest<9.0.0,>=7.0.0
14
- pytest-asyncio<2.0.0,>=0.21.0
15
- pytest-cov<5.0.0,>=4.0.0
16
- coverage<8.0.0,>=7.0.0
17
- python-dotenv<2.0.0,>=1.0.0
18
-
19
- [test]
20
- pytest<9.0.0,>=7.0.0
21
- pytest-asyncio<2.0.0,>=0.21.0
22
- pytest-cov<5.0.0,>=4.0.0
23
- coverage<8.0.0,>=7.0.0
File without changes
File without changes