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.
- {ozonapi_async-0.1.0 → ozonapi_async-0.1.2}/PKG-INFO +27 -31
- {ozonapi_async-0.1.0 → ozonapi_async-0.1.2}/README.md +10 -10
- {ozonapi_async-0.1.0 → ozonapi_async-0.1.2}/pyproject.toml +29 -31
- ozonapi_async-0.1.2/setup.py +29 -0
- ozonapi_async-0.1.2/src/ozonapi/__init__.py +13 -0
- {ozonapi_async-0.1.0 → ozonapi_async-0.1.2}/src/ozonapi/seller/__init__.py +2 -2
- {ozonapi_async-0.1.0 → ozonapi_async-0.1.2}/src/ozonapi_async.egg-info/PKG-INFO +27 -31
- ozonapi_async-0.1.2/src/ozonapi_async.egg-info/requires.txt +16 -0
- ozonapi_async-0.1.0/setup.py +0 -59
- ozonapi_async-0.1.0/src/ozonapi/__init__.py +0 -9
- ozonapi_async-0.1.0/src/ozonapi_async.egg-info/requires.txt +0 -23
- {ozonapi_async-0.1.0 → ozonapi_async-0.1.2}/LICENSE +0 -0
- {ozonapi_async-0.1.0 → ozonapi_async-0.1.2}/setup.cfg +0 -0
- {ozonapi_async-0.1.0 → ozonapi_async-0.1.2}/src/ozonapi/seller/common/__init__.py +0 -0
- {ozonapi_async-0.1.0 → ozonapi_async-0.1.2}/src/ozonapi/seller/common/enumerations/__init__.py +0 -0
- {ozonapi_async-0.1.0 → ozonapi_async-0.1.2}/src/ozonapi/seller/common/enumerations/delivery.py +0 -0
- {ozonapi_async-0.1.0 → ozonapi_async-0.1.2}/src/ozonapi/seller/common/enumerations/localization.py +0 -0
- {ozonapi_async-0.1.0 → ozonapi_async-0.1.2}/src/ozonapi/seller/common/enumerations/postings.py +0 -0
- {ozonapi_async-0.1.0 → ozonapi_async-0.1.2}/src/ozonapi/seller/common/enumerations/products.py +0 -0
- {ozonapi_async-0.1.0 → ozonapi_async-0.1.2}/src/ozonapi/seller/common/enumerations/requests.py +0 -0
- {ozonapi_async-0.1.0 → ozonapi_async-0.1.2}/src/ozonapi/seller/common/enumerations/warehouses.py +0 -0
- {ozonapi_async-0.1.0 → ozonapi_async-0.1.2}/src/ozonapi/seller/core/__init__.py +0 -0
- {ozonapi_async-0.1.0 → ozonapi_async-0.1.2}/src/ozonapi/seller/core/config.py +0 -0
- {ozonapi_async-0.1.0 → ozonapi_async-0.1.2}/src/ozonapi/seller/core/core.py +0 -0
- {ozonapi_async-0.1.0 → ozonapi_async-0.1.2}/src/ozonapi/seller/core/exceptions.py +0 -0
- {ozonapi_async-0.1.0 → ozonapi_async-0.1.2}/src/ozonapi/seller/core/method_rate_limiter.py +0 -0
- {ozonapi_async-0.1.0 → ozonapi_async-0.1.2}/src/ozonapi/seller/core/rate_limiter.py +0 -0
- {ozonapi_async-0.1.0 → ozonapi_async-0.1.2}/src/ozonapi/seller/core/sessions.py +0 -0
- {ozonapi_async-0.1.0 → ozonapi_async-0.1.2}/src/ozonapi/seller/methods/__init__.py +0 -0
- {ozonapi_async-0.1.0 → ozonapi_async-0.1.2}/src/ozonapi/seller/methods/attributes_and_characteristics.py +0 -0
- {ozonapi_async-0.1.0 → ozonapi_async-0.1.2}/src/ozonapi/seller/methods/barcodes.py +0 -0
- {ozonapi_async-0.1.0 → ozonapi_async-0.1.2}/src/ozonapi/seller/methods/fbs.py +0 -0
- {ozonapi_async-0.1.0 → ozonapi_async-0.1.2}/src/ozonapi/seller/methods/prices_and_stocks.py +0 -0
- {ozonapi_async-0.1.0 → ozonapi_async-0.1.2}/src/ozonapi/seller/methods/products.py +0 -0
- {ozonapi_async-0.1.0 → ozonapi_async-0.1.2}/src/ozonapi/seller/methods/warehouses.py +0 -0
- {ozonapi_async-0.1.0 → ozonapi_async-0.1.2}/src/ozonapi/seller/schemas/__init__.py +0 -0
- {ozonapi_async-0.1.0 → ozonapi_async-0.1.2}/src/ozonapi/seller/schemas/attributes_and_characteristics/__init__.py +0 -0
- {ozonapi_async-0.1.0 → ozonapi_async-0.1.2}/src/ozonapi/seller/schemas/attributes_and_characteristics/base.py +0 -0
- {ozonapi_async-0.1.0 → ozonapi_async-0.1.2}/src/ozonapi/seller/schemas/attributes_and_characteristics/v1__description_category_attribute.py +0 -0
- {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
- {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
- {ozonapi_async-0.1.0 → ozonapi_async-0.1.2}/src/ozonapi/seller/schemas/attributes_and_characteristics/v1__description_category_tree.py +0 -0
- {ozonapi_async-0.1.0 → ozonapi_async-0.1.2}/src/ozonapi/seller/schemas/barcodes/__init__.py +0 -0
- {ozonapi_async-0.1.0 → ozonapi_async-0.1.2}/src/ozonapi/seller/schemas/barcodes/v1__barcode_add.py +0 -0
- {ozonapi_async-0.1.0 → ozonapi_async-0.1.2}/src/ozonapi/seller/schemas/barcodes/v1__barcode_generate.py +0 -0
- {ozonapi_async-0.1.0 → ozonapi_async-0.1.2}/src/ozonapi/seller/schemas/base.py +0 -0
- {ozonapi_async-0.1.0 → ozonapi_async-0.1.2}/src/ozonapi/seller/schemas/fbs/__init__.py +0 -0
- {ozonapi_async-0.1.0 → ozonapi_async-0.1.2}/src/ozonapi/seller/schemas/fbs/v3__posting_fbs_unfulfilled_list.py +0 -0
- {ozonapi_async-0.1.0 → ozonapi_async-0.1.2}/src/ozonapi/seller/schemas/prices_and_stocks/__init__.py +0 -0
- {ozonapi_async-0.1.0 → ozonapi_async-0.1.2}/src/ozonapi/seller/schemas/prices_and_stocks/base.py +0 -0
- {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
- {ozonapi_async-0.1.0 → ozonapi_async-0.1.2}/src/ozonapi/seller/schemas/prices_and_stocks/v4__product_info_stocks.py +0 -0
- {ozonapi_async-0.1.0 → ozonapi_async-0.1.2}/src/ozonapi/seller/schemas/prices_and_stocks/v5__product_info_prices.py +0 -0
- {ozonapi_async-0.1.0 → ozonapi_async-0.1.2}/src/ozonapi/seller/schemas/products/__init__.py +0 -0
- {ozonapi_async-0.1.0 → ozonapi_async-0.1.2}/src/ozonapi/seller/schemas/products/base.py +0 -0
- {ozonapi_async-0.1.0 → ozonapi_async-0.1.2}/src/ozonapi/seller/schemas/products/v1__product_archive.py +0 -0
- {ozonapi_async-0.1.0 → ozonapi_async-0.1.2}/src/ozonapi/seller/schemas/products/v1__product_attributes_update.py +0 -0
- {ozonapi_async-0.1.0 → ozonapi_async-0.1.2}/src/ozonapi/seller/schemas/products/v1__product_import_by_sku.py +0 -0
- {ozonapi_async-0.1.0 → ozonapi_async-0.1.2}/src/ozonapi/seller/schemas/products/v1__product_import_info.py +0 -0
- {ozonapi_async-0.1.0 → ozonapi_async-0.1.2}/src/ozonapi/seller/schemas/products/v1__product_info_subscription.py +0 -0
- {ozonapi_async-0.1.0 → ozonapi_async-0.1.2}/src/ozonapi/seller/schemas/products/v1__product_rating_by_sku.py +0 -0
- {ozonapi_async-0.1.0 → ozonapi_async-0.1.2}/src/ozonapi/seller/schemas/products/v1__product_related_sku_get.py +0 -0
- {ozonapi_async-0.1.0 → ozonapi_async-0.1.2}/src/ozonapi/seller/schemas/products/v1__product_unarchive.py +0 -0
- {ozonapi_async-0.1.0 → ozonapi_async-0.1.2}/src/ozonapi/seller/schemas/products/v1__product_update_offer_id.py +0 -0
- {ozonapi_async-0.1.0 → ozonapi_async-0.1.2}/src/ozonapi/seller/schemas/products/v2__product_pictures_info.py +0 -0
- {ozonapi_async-0.1.0 → ozonapi_async-0.1.2}/src/ozonapi/seller/schemas/products/v2__products_delete.py +0 -0
- {ozonapi_async-0.1.0 → ozonapi_async-0.1.2}/src/ozonapi/seller/schemas/products/v3__product_import.py +0 -0
- {ozonapi_async-0.1.0 → ozonapi_async-0.1.2}/src/ozonapi/seller/schemas/products/v3__product_info_list.py +0 -0
- {ozonapi_async-0.1.0 → ozonapi_async-0.1.2}/src/ozonapi/seller/schemas/products/v3__product_list.py +0 -0
- {ozonapi_async-0.1.0 → ozonapi_async-0.1.2}/src/ozonapi/seller/schemas/products/v4__product_info_attributes.py +0 -0
- {ozonapi_async-0.1.0 → ozonapi_async-0.1.2}/src/ozonapi/seller/schemas/warehouses/__init__.py +0 -0
- {ozonapi_async-0.1.0 → ozonapi_async-0.1.2}/src/ozonapi/seller/schemas/warehouses/v1__delivery_method_list.py +0 -0
- {ozonapi_async-0.1.0 → ozonapi_async-0.1.2}/src/ozonapi/seller/schemas/warehouses/v1__warehouse_list.py +0 -0
- {ozonapi_async-0.1.0 → ozonapi_async-0.1.2}/src/ozonapi_async.egg-info/SOURCES.txt +0 -0
- {ozonapi_async-0.1.0 → ozonapi_async-0.1.2}/src/ozonapi_async.egg-info/dependency_links.txt +0 -0
- {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.
|
|
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.
|
|
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.
|
|
26
|
-
Requires-Dist:
|
|
27
|
-
Requires-Dist:
|
|
28
|
-
Requires-Dist:
|
|
29
|
-
Requires-Dist:
|
|
30
|
-
Requires-Dist:
|
|
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,>=
|
|
37
|
-
Requires-Dist: pytest-
|
|
38
|
-
Requires-Dist: pytest-
|
|
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,>=
|
|
42
|
-
Requires-Dist: pytest-
|
|
43
|
-
Requires-Dist: pytest-
|
|
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
|
|
102
|
+
from ozonapi import SellerAPI
|
|
107
103
|
|
|
108
104
|
async def main():
|
|
109
|
-
async with
|
|
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
|
|
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
|
|
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
|
|
159
|
+
from ozonapi import SellerAPI
|
|
164
160
|
|
|
165
161
|
async def main():
|
|
166
162
|
# Конфигурация автоматически загружается из .env
|
|
167
|
-
async with
|
|
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
|
|
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
|
|
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 =
|
|
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 =
|
|
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
|
|
57
|
+
from ozonapi import SellerAPI
|
|
58
58
|
|
|
59
59
|
async def main():
|
|
60
|
-
async with
|
|
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
|
|
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
|
|
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
|
|
114
|
+
from ozonapi import SellerAPI
|
|
115
115
|
|
|
116
116
|
async def main():
|
|
117
117
|
# Конфигурация автоматически загружается из .env
|
|
118
|
-
async with
|
|
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
|
|
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
|
|
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 =
|
|
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 =
|
|
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.
|
|
24
|
+
requires-python = ">=3.9,<4.0"
|
|
26
25
|
dependencies = [
|
|
27
|
-
"aiohttp>=3.
|
|
28
|
-
"
|
|
29
|
-
"
|
|
30
|
-
"
|
|
31
|
-
"
|
|
32
|
-
"
|
|
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>=
|
|
42
|
-
"pytest-
|
|
43
|
-
"pytest-
|
|
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>=
|
|
48
|
-
"pytest-
|
|
49
|
-
"pytest-
|
|
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
|
-
|
|
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
|
|
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", "
|
|
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.
|
|
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.
|
|
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.
|
|
26
|
-
Requires-Dist:
|
|
27
|
-
Requires-Dist:
|
|
28
|
-
Requires-Dist:
|
|
29
|
-
Requires-Dist:
|
|
30
|
-
Requires-Dist:
|
|
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,>=
|
|
37
|
-
Requires-Dist: pytest-
|
|
38
|
-
Requires-Dist: pytest-
|
|
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,>=
|
|
42
|
-
Requires-Dist: pytest-
|
|
43
|
-
Requires-Dist: pytest-
|
|
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
|
|
102
|
+
from ozonapi import SellerAPI
|
|
107
103
|
|
|
108
104
|
async def main():
|
|
109
|
-
async with
|
|
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
|
|
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
|
|
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
|
|
159
|
+
from ozonapi import SellerAPI
|
|
164
160
|
|
|
165
161
|
async def main():
|
|
166
162
|
# Конфигурация автоматически загружается из .env
|
|
167
|
-
async with
|
|
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
|
|
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
|
|
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 =
|
|
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 =
|
|
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
|
ozonapi_async-0.1.0/setup.py
DELETED
|
@@ -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,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
|
|
File without changes
|
{ozonapi_async-0.1.0 → ozonapi_async-0.1.2}/src/ozonapi/seller/common/enumerations/__init__.py
RENAMED
|
File without changes
|
{ozonapi_async-0.1.0 → ozonapi_async-0.1.2}/src/ozonapi/seller/common/enumerations/delivery.py
RENAMED
|
File without changes
|
{ozonapi_async-0.1.0 → ozonapi_async-0.1.2}/src/ozonapi/seller/common/enumerations/localization.py
RENAMED
|
File without changes
|
{ozonapi_async-0.1.0 → ozonapi_async-0.1.2}/src/ozonapi/seller/common/enumerations/postings.py
RENAMED
|
File without changes
|
{ozonapi_async-0.1.0 → ozonapi_async-0.1.2}/src/ozonapi/seller/common/enumerations/products.py
RENAMED
|
File without changes
|
{ozonapi_async-0.1.0 → ozonapi_async-0.1.2}/src/ozonapi/seller/common/enumerations/requests.py
RENAMED
|
File without changes
|
{ozonapi_async-0.1.0 → ozonapi_async-0.1.2}/src/ozonapi/seller/common/enumerations/warehouses.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ozonapi_async-0.1.0 → ozonapi_async-0.1.2}/src/ozonapi/seller/schemas/barcodes/v1__barcode_add.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ozonapi_async-0.1.0 → ozonapi_async-0.1.2}/src/ozonapi/seller/schemas/prices_and_stocks/__init__.py
RENAMED
|
File without changes
|
{ozonapi_async-0.1.0 → ozonapi_async-0.1.2}/src/ozonapi/seller/schemas/prices_and_stocks/base.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ozonapi_async-0.1.0 → ozonapi_async-0.1.2}/src/ozonapi/seller/schemas/products/v3__product_list.py
RENAMED
|
File without changes
|
|
File without changes
|
{ozonapi_async-0.1.0 → ozonapi_async-0.1.2}/src/ozonapi/seller/schemas/warehouses/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|