channel3-sdk 1.0.0__py3-none-any.whl → 2.1.0__py3-none-any.whl

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.

Potentially problematic release.


This version of channel3-sdk might be problematic. Click here for more details.

Files changed (85) hide show
  1. channel3_sdk/__init__.py +94 -44
  2. channel3_sdk/_base_client.py +1995 -0
  3. channel3_sdk/_client.py +549 -0
  4. channel3_sdk/_compat.py +219 -0
  5. channel3_sdk/_constants.py +14 -0
  6. channel3_sdk/_exceptions.py +108 -0
  7. channel3_sdk/_files.py +123 -0
  8. channel3_sdk/_models.py +829 -0
  9. channel3_sdk/_qs.py +150 -0
  10. channel3_sdk/_resource.py +43 -0
  11. channel3_sdk/_response.py +832 -0
  12. channel3_sdk/_streaming.py +333 -0
  13. channel3_sdk/_types.py +253 -0
  14. channel3_sdk/_utils/__init__.py +64 -0
  15. channel3_sdk/_utils/_compat.py +45 -0
  16. channel3_sdk/_utils/_datetime_parse.py +136 -0
  17. channel3_sdk/_utils/_logs.py +25 -0
  18. channel3_sdk/_utils/_proxy.py +65 -0
  19. channel3_sdk/_utils/_reflection.py +42 -0
  20. channel3_sdk/_utils/_resources_proxy.py +24 -0
  21. channel3_sdk/_utils/_streams.py +12 -0
  22. channel3_sdk/_utils/_sync.py +86 -0
  23. channel3_sdk/_utils/_transform.py +457 -0
  24. channel3_sdk/_utils/_typing.py +156 -0
  25. channel3_sdk/_utils/_utils.py +421 -0
  26. channel3_sdk/_version.py +4 -0
  27. channel3_sdk/lib/.keep +4 -0
  28. channel3_sdk/py.typed +0 -0
  29. channel3_sdk/resources/__init__.py +61 -0
  30. channel3_sdk/resources/brands.py +268 -0
  31. channel3_sdk/resources/enrich.py +167 -0
  32. channel3_sdk/resources/products.py +163 -0
  33. channel3_sdk/resources/search.py +227 -0
  34. channel3_sdk/types/__init__.py +15 -0
  35. channel3_sdk/types/availability_status.py +9 -0
  36. channel3_sdk/types/brand.py +17 -0
  37. channel3_sdk/types/brand_list_params.py +16 -0
  38. channel3_sdk/types/brand_list_response.py +25 -0
  39. channel3_sdk/types/enrich_enrich_url_params.py +12 -0
  40. channel3_sdk/types/enrich_enrich_url_response.py +20 -0
  41. channel3_sdk/types/price.py +18 -0
  42. channel3_sdk/types/product_retrieve_response.py +39 -0
  43. channel3_sdk/types/search_perform_params.py +64 -0
  44. channel3_sdk/types/search_perform_response.py +36 -0
  45. channel3_sdk/types/variant.py +13 -0
  46. channel3_sdk-2.1.0.dist-info/METADATA +414 -0
  47. channel3_sdk-2.1.0.dist-info/RECORD +49 -0
  48. {channel3_sdk-1.0.0.dist-info → channel3_sdk-2.1.0.dist-info}/WHEEL +1 -1
  49. channel3_sdk-2.1.0.dist-info/licenses/LICENSE +201 -0
  50. channel3_sdk/_gen/.gitignore +0 -23
  51. channel3_sdk/_gen/README.md +0 -124
  52. channel3_sdk/_gen/fast_api_client/__init__.py +0 -8
  53. channel3_sdk/_gen/fast_api_client/api/__init__.py +0 -1
  54. channel3_sdk/_gen/fast_api_client/api/channel3_api/__init__.py +0 -1
  55. channel3_sdk/_gen/fast_api_client/api/channel3_api/get_brand_detail_v0_brands_brand_id_get.py +0 -179
  56. channel3_sdk/_gen/fast_api_client/api/channel3_api/get_brands_v0_brands_get.py +0 -218
  57. channel3_sdk/_gen/fast_api_client/api/channel3_api/get_product_detail_v0_products_product_id_get.py +0 -179
  58. channel3_sdk/_gen/fast_api_client/api/channel3_api/search_v0_search_post.py +0 -193
  59. channel3_sdk/_gen/fast_api_client/api/default/__init__.py +0 -1
  60. channel3_sdk/_gen/fast_api_client/api/default/root_get.py +0 -79
  61. channel3_sdk/_gen/fast_api_client/client.py +0 -268
  62. channel3_sdk/_gen/fast_api_client/errors.py +0 -16
  63. channel3_sdk/_gen/fast_api_client/models/__init__.py +0 -35
  64. channel3_sdk/_gen/fast_api_client/models/availability_status.py +0 -15
  65. channel3_sdk/_gen/fast_api_client/models/brand.py +0 -109
  66. channel3_sdk/_gen/fast_api_client/models/error_response.py +0 -59
  67. channel3_sdk/_gen/fast_api_client/models/paginated_response_brand.py +0 -83
  68. channel3_sdk/_gen/fast_api_client/models/pagination_meta.py +0 -84
  69. channel3_sdk/_gen/fast_api_client/models/price.py +0 -89
  70. channel3_sdk/_gen/fast_api_client/models/product.py +0 -166
  71. channel3_sdk/_gen/fast_api_client/models/product_detail.py +0 -306
  72. channel3_sdk/_gen/fast_api_client/models/product_detail_gender_type_0.py +0 -10
  73. channel3_sdk/_gen/fast_api_client/models/search_config.py +0 -69
  74. channel3_sdk/_gen/fast_api_client/models/search_filter_price.py +0 -92
  75. channel3_sdk/_gen/fast_api_client/models/search_filters.py +0 -191
  76. channel3_sdk/_gen/fast_api_client/models/search_filters_gender_type_0.py +0 -10
  77. channel3_sdk/_gen/fast_api_client/models/search_request.py +0 -191
  78. channel3_sdk/_gen/fast_api_client/models/variant.py +0 -75
  79. channel3_sdk/_gen/fast_api_client/py.typed +0 -1
  80. channel3_sdk/_gen/fast_api_client/types.py +0 -54
  81. channel3_sdk/_gen/pyproject.toml +0 -26
  82. channel3_sdk/client.py +0 -361
  83. channel3_sdk/exceptions.py +0 -48
  84. channel3_sdk-1.0.0.dist-info/METADATA +0 -341
  85. channel3_sdk-1.0.0.dist-info/RECORD +0 -38
@@ -1,341 +0,0 @@
1
- Metadata-Version: 2.1
2
- Name: channel3-sdk
3
- Version: 1.0.0
4
- Summary: The official Python SDK for Channel3
5
- Home-page: https://github.com/channel3-ai/sdk-python
6
- License: MIT
7
- Keywords: ai,shopping,ecommerce,search,api
8
- Author: Channel3
9
- Author-email: alex@trychannel3.com
10
- Requires-Python: >=3.9,<4.0
11
- Classifier: Development Status :: 4 - Beta
12
- Classifier: Intended Audience :: Developers
13
- Classifier: License :: OSI Approved :: MIT License
14
- Classifier: Programming Language :: Python
15
- Classifier: Programming Language :: Python :: 3
16
- Classifier: Programming Language :: Python :: 3.9
17
- Classifier: Programming Language :: Python :: 3.10
18
- Classifier: Programming Language :: Python :: 3.11
19
- Classifier: Programming Language :: Python :: 3.12
20
- Classifier: Topic :: Software Development :: Libraries
21
- Classifier: Typing :: Typed
22
- Requires-Dist: attrs (>=22.2.0)
23
- Requires-Dist: httpx (>=0.23.0,<0.29.0)
24
- Requires-Dist: python-dateutil (>=2.8.0,<3.0.0)
25
- Requires-Dist: requests (>=2.31.0,<3.0.0)
26
- Project-URL: Repository, https://github.com/channel3-ai/sdk-python
27
- Description-Content-Type: text/markdown
28
-
29
- # Channel3 Python SDK
30
-
31
- The official Python SDK for the [Channel3](https://trychannel3.com) AI Shopping API.
32
-
33
- ## Installation
34
-
35
- ```bash
36
- pip install channel3-sdk
37
- ```
38
-
39
- ## Quick Start
40
-
41
- ### Synchronous Client
42
-
43
- ```python
44
- import os
45
- from channel3_sdk import Channel3Client
46
-
47
- # Initialize the client
48
- client = Channel3Client(api_key="your_api_key_here")
49
- # Or use environment variable: CHANNEL3_API_KEY
50
-
51
- # Search for products
52
- products = client.search(query="blue denim jacket")
53
-
54
- for product in products:
55
- print(f"Product: {product.title}")
56
- print(f"Brand: {product.brand_name}")
57
- print(f"Price: {product.price.currency} {product.price.price}")
58
- print(f"Availability: {product.availability}")
59
- print("---")
60
-
61
- # Get detailed product information
62
- product_detail = client.get_product("prod_123456")
63
- print(f"Detailed info for: {product_detail.title}")
64
- print(f"Brand: {product_detail.brand_name}")
65
- if product_detail.key_features:
66
- print(f"Key features: {product_detail.key_features}")
67
-
68
- # Get all brands
69
- brands = client.get_brands()
70
- print(f"Found {len(brands.items)} brands")
71
-
72
- # Get specific brand details
73
- brand = client.get_brand("brand_123")
74
- print(f"Brand: {brand.name}")
75
- ```
76
-
77
- ### Asynchronous Client
78
-
79
- ```python
80
- import asyncio
81
- from channel3_sdk import AsyncChannel3Client
82
-
83
- async def main():
84
- # Initialize the async client
85
- client = AsyncChannel3Client(api_key="your_api_key_here")
86
-
87
- # Search for products
88
- products = await client.search(query="running shoes")
89
-
90
- for product in products:
91
- print(f"Product: {product.title}")
92
- print(f"Score: {product.score}")
93
- print(f"Price: {product.price.currency} {product.price.price}")
94
-
95
- # Get detailed product information
96
- if products:
97
- product_detail = await client.get_product(products[0].id)
98
- print(f"Availability: {product_detail.availability}")
99
-
100
- # Get brands
101
- brands = await client.get_brands()
102
- print(f"Found {len(brands.items)} brands")
103
-
104
- # Run the async function
105
- asyncio.run(main())
106
- ```
107
-
108
- ## Advanced Usage
109
-
110
- ### Visual Search
111
-
112
- ```python
113
- # Search by image URL
114
- products = client.search(image_url="https://example.com/image.jpg")
115
-
116
- # Search by base64 image
117
- with open("image.jpg", "rb") as f:
118
- import base64
119
- base64_image = base64.b64encode(f.read()).decode()
120
- products = client.search(base64_image=base64_image)
121
- ```
122
-
123
- ### Multimodal Search
124
-
125
- ```python
126
- # Combine text and image search
127
- products = client.search(
128
- query="blue denim jacket",
129
- image_url="https://example.com/jacket.jpg"
130
- )
131
- ```
132
-
133
- ### Search with Filters
134
-
135
- ```python
136
- from channel3_sdk import SearchFilters, AvailabilityStatus
137
-
138
- # Create search filters
139
- filters = SearchFilters(
140
- brand_ids=["brand_123", "brand_456"],
141
- gender="male",
142
- availability=[AvailabilityStatus.IN_STOCK],
143
- price={"min_price": 50.0, "max_price": 200.0}
144
- )
145
-
146
- # Search with filters
147
- products = client.search(
148
- query="jacket",
149
- filters=filters,
150
- limit=10
151
- )
152
- ```
153
-
154
- ### Search configuration and context
155
-
156
- You can control how search behaves using `SearchConfig`, and add optional `context` to guide results.
157
-
158
- ```python
159
- from channel3_sdk import SearchConfig
160
-
161
- config = SearchConfig(enrich_query=True, semantic_search=False)
162
-
163
- products = client.search(
164
- query="running shoes",
165
- limit=5,
166
- config=config, # or a dict: {"enrich_query": True, "semantic_search": False}
167
- context="Marathon training on road surfaces"
168
- )
169
- ```
170
-
171
- Async usage is identical:
172
-
173
- ```python
174
- products = await async_client.search(
175
- query="hiking boots",
176
- config={"enrich_query": False, "semantic_search": True},
177
- context="Waterproof boots for alpine conditions"
178
- )
179
- ```
180
-
181
- ### Brand Management
182
-
183
- ```python
184
- # Get all brands with pagination
185
- brands = client.get_brands(page=1, size=50)
186
- print(brands.pagination.total_count)
187
-
188
- # Search for specific brands
189
- nike_brands = client.get_brands(query="nike")
190
-
191
- # Get detailed brand information
192
- brand_detail = client.get_brand("brand_123")
193
- print(f"Brand: {brand_detail.name}")
194
- print(f"Logo: {brand_detail.logo_url}")
195
- ```
196
-
197
- ## API Reference
198
-
199
- ### Client Classes
200
-
201
- #### `Channel3Client`
202
-
203
- Synchronous client for the Channel3 API.
204
-
205
- **Methods:**
206
-
207
- - `search(query=None, image_url=None, base64_image=None, filters=None, limit=20, config=None, context=None)` → `List[Product]`
208
- - `get_product(product_id)` → `ProductDetail`
209
- - `get_brands(query=None, page=1, size=100)` → `PaginatedResponseBrand`
210
- - `get_brand(brand_id)` → `Brand`
211
-
212
- #### `AsyncChannel3Client`
213
-
214
- Asynchronous client for the Channel3 API.
215
-
216
- **Methods:**
217
-
218
- - `async search(query=None, image_url=None, base64_image=None, filters=None, limit=20, config=None, context=None)` → `List[Product]`
219
- - `async get_product(product_id)` → `ProductDetail`
220
- - `async get_brands(query=None, page=1, size=100)` → `PaginatedResponseBrand`
221
- - `async get_brand(brand_id)` → `Brand`
222
-
223
- ### Models
224
-
225
- #### `Product`
226
-
227
- - `id: str` - Unique product identifier
228
- - `score: float` - Search relevance score
229
- - `title: str` - Product title
230
- - `description: Optional[str]` - Product description
231
- - `brand_name: str` - Brand name
232
- - `image_url: str` - Main product image URL
233
- - `price: Price` - Price information
234
- - `availability: AvailabilityStatus` - Availability status
235
- - `variants: List[Variant]` - Product variants
236
-
237
- #### `ProductDetail`
238
-
239
- - `title: str` - Product title
240
- - `description: Optional[str]` - Product description
241
- - `brand_id: Optional[str]` - Brand identifier
242
- - `brand_name: Optional[str]` - Brand name
243
- - `image_urls: Optional[List[str]]` - Product image URLs
244
- - `price: Price` - Price information
245
- - `availability: AvailabilityStatus` - Availability status
246
- - `key_features: Optional[List[str]]` - Key product features
247
- - `variants: List[Variant]` - Product variants
248
-
249
- #### `Brand`
250
-
251
- - `id: str` - Unique brand identifier
252
- - `name: str` - Brand name
253
- - `logo_url: Optional[str]` - Brand logo URL
254
- - `description: Optional[str]` - Brand description
255
-
256
- #### `Variant`
257
-
258
- - `product_id: str` - Associated product identifier
259
- - `title: str` - Variant title
260
- - `image_url: str` - Variant image URL
261
-
262
- #### `SearchFilters`
263
-
264
- - `brand_ids: Optional[List[str]]` - Brand ID filters
265
- - `gender: Optional[Literal["male", "female", "unisex"]]` - Gender filter
266
- - `price: Optional[SearchFilterPrice]` - Price range filter
267
- - `availability: Optional[List[AvailabilityStatus]]` - Availability filters
268
-
269
- #### `SearchFilterPrice`
270
-
271
- - `min_price: Optional[float]` - Minimum price
272
- - `max_price: Optional[float]` - Maximum price
273
-
274
- #### `SearchConfig`
275
-
276
- - `enrich_query: bool = True` — enable query rewriting/enrichment
277
- - `semantic_search: bool = True` — enable semantic ranking
278
-
279
- #### `Price`
280
-
281
- - `price: float` - Current price
282
- - `compare_at_price: Optional[float]` - Original price (if discounted)
283
- - `currency: str` - Currency code
284
-
285
- #### `AvailabilityStatus`
286
-
287
- Enum with values: `IN_STOCK`, `OUT_OF_STOCK`, `PRE_ORDER`, `LIMITED_AVAILABILITY`, `BACK_ORDER`, `DISCONTINUED`, `SOLD_OUT`, `UNKNOWN`
288
-
289
- #### `PaginatedResponseBrand`
290
-
291
- - `items: List[Brand]` — page of brands
292
- - `pagination: PaginationMeta` — pagination info
293
-
294
- #### `PaginationMeta`
295
-
296
- - `current_page: int`
297
- - `page_size: int`
298
- - `total_count: int`
299
- - `total_pages: int`
300
-
301
- ## Error Handling
302
-
303
- The SDK provides specific exception types for different error conditions:
304
-
305
- ```python
306
- from channel3_sdk import (
307
- Channel3AuthenticationError,
308
- Channel3ValidationError,
309
- Channel3NotFoundError,
310
- Channel3ServerError,
311
- Channel3ConnectionError
312
- )
313
-
314
- try:
315
- products = client.search(query="shoes")
316
- except Channel3AuthenticationError:
317
- print("Invalid API key")
318
- except Channel3ValidationError as e:
319
- print(f"Invalid request: {e.message}")
320
- except Channel3NotFoundError:
321
- print("Resource not found")
322
- except Channel3ServerError:
323
- print("Server error - please try again later")
324
- except Channel3ConnectionError:
325
- print("Connection error - check your internet connection")
326
- ```
327
-
328
- ## Environment Variables
329
-
330
- - `CHANNEL3_API_KEY` - Your Channel3 API key
331
-
332
- ## Requirements
333
-
334
- - Python 3.9+
335
- - requests
336
- - httpx
337
-
338
- ## License
339
-
340
- MIT License
341
-
@@ -1,38 +0,0 @@
1
- channel3_sdk/__init__.py,sha256=mYmvZ2ahuAxzy_1gtroB8qpK_u_tuKoDCm5C_LHRwRg,1696
2
- channel3_sdk/_gen/.gitignore,sha256=SwZvl9qyKaHN9YjwaQrBsmpAclN11usf9Gohz1SFVg8,195
3
- channel3_sdk/_gen/README.md,sha256=d6VMPYuhTiK-WEKNRd-zbIG_uzYOVWkVvPBgDEPVwnc,4997
4
- channel3_sdk/_gen/fast_api_client/__init__.py,sha256=qUheje2C4lZ8b26EUHXHRJ3dWuzKiExv_JVOdVCFAek,150
5
- channel3_sdk/_gen/fast_api_client/api/__init__.py,sha256=zTSiG_ujSjAqWPyc435YXaX9XTlpMjiJWBbV-f-YtdA,45
6
- channel3_sdk/_gen/fast_api_client/api/channel3_api/__init__.py,sha256=5vd9uJWAjRqa9xzxzYkLD1yoZ12Ld_bAaNB5WX4fbE8,56
7
- channel3_sdk/_gen/fast_api_client/api/channel3_api/get_brand_detail_v0_brands_brand_id_get.py,sha256=yNOOiKimIDQONHCH3i5KBnYa1LvEjD6THXjCyLgE-tU,4611
8
- channel3_sdk/_gen/fast_api_client/api/channel3_api/get_brands_v0_brands_get.py,sha256=KfCOw1595dAcV1IT9Vuddz1EKiaHOb2BBrVcmNsczL0,6075
9
- channel3_sdk/_gen/fast_api_client/api/channel3_api/get_product_detail_v0_products_product_id_get.py,sha256=8d3Z4CXdph42GcYSjqaVFqz54Ct2D8tqwZ8PXn66Xyo,4778
10
- channel3_sdk/_gen/fast_api_client/api/channel3_api/search_v0_search_post.py,sha256=TV2_222dJtv8nmVXxGGznB-maWlHZB96nxJAhxQz6T0,4944
11
- channel3_sdk/_gen/fast_api_client/api/default/__init__.py,sha256=5vd9uJWAjRqa9xzxzYkLD1yoZ12Ld_bAaNB5WX4fbE8,56
12
- channel3_sdk/_gen/fast_api_client/api/default/root_get.py,sha256=83wq3kzLX9On8L2L8wldOgIf90e5fUsTT6dbC2bvfYM,2063
13
- channel3_sdk/_gen/fast_api_client/client.py,sha256=o_mdLqyBCQstu5tS1WZFwqIEbGwkvWQ7eQjuCJw_5VY,12419
14
- channel3_sdk/_gen/fast_api_client/errors.py,sha256=gO8GBmKqmSNgAg-E5oT-oOyxztvp7V_6XG7OUTT15q0,546
15
- channel3_sdk/_gen/fast_api_client/models/__init__.py,sha256=Yc0J6woL8dLhHW0VZbZuSV17-9DHR-qpk63sC6SiNVc,1059
16
- channel3_sdk/_gen/fast_api_client/models/availability_status.py,sha256=yC7hCgFwU_CcIfnS2UggdFdNWsoq0lvrdrR5n43tIto,361
17
- channel3_sdk/_gen/fast_api_client/models/brand.py,sha256=hEObzXznweXyzLjiSQl0pUBYquCrn09XKcFSKtjoQfk,2986
18
- channel3_sdk/_gen/fast_api_client/models/error_response.py,sha256=hGdOt8lakOZFh9YlOE53zEq9Ektv6cOQTIbqtRLg4TQ,1467
19
- channel3_sdk/_gen/fast_api_client/models/paginated_response_brand.py,sha256=TPd0tEzvE7TxE7DhpSsh5p4FpP1muHSYQezwZ9Yxcas,2330
20
- channel3_sdk/_gen/fast_api_client/models/pagination_meta.py,sha256=iF8W1dOyuDb4Y5Wa5HviYfXjPJkayK5R68JgNA7rwY4,2185
21
- channel3_sdk/_gen/fast_api_client/models/price.py,sha256=aol4R82ffjKvsrzch-P1iw5HwT0FcCqUmGvjb65lPmM,2617
22
- channel3_sdk/_gen/fast_api_client/models/product.py,sha256=XkKaBA89YOaMh9XSTEdBkvO8miQVED8nNquAO75bw1s,4485
23
- channel3_sdk/_gen/fast_api_client/models/product_detail.py,sha256=PybK6gS_yxmjIax7ryH6pha69T-iCNR8IjtWHn8cFVU,9850
24
- channel3_sdk/_gen/fast_api_client/models/product_detail_gender_type_0.py,sha256=iz4Yx9AiuvITYK5r1C_8hUY09GyVtJ7Saru7FdeDGLQ,191
25
- channel3_sdk/_gen/fast_api_client/models/search_config.py,sha256=nVjpdhESU7IJiCW4HCdq1hUGDVtrhXhFJqrjDgGHzlc,2031
26
- channel3_sdk/_gen/fast_api_client/models/search_filter_price.py,sha256=GFaLgoXXRkLpX39b3w0JpZRek026DQEp-UfRMaXmMXs,2864
27
- channel3_sdk/_gen/fast_api_client/models/search_filters.py,sha256=KjioDMmVINN2vR1iCEj7GH9ME6BfmI17a1jgiMyd8xU,6657
28
- channel3_sdk/_gen/fast_api_client/models/search_filters_gender_type_0.py,sha256=52XYojpfDdj_LV_9gQbsGWP_aANJ1-KiZOogxn4noms,191
29
- channel3_sdk/_gen/fast_api_client/models/search_request.py,sha256=oqQcXcH1Psp-Qwx8_MFhyPIB60gBMo-IpPnBp24DUmg,6156
30
- channel3_sdk/_gen/fast_api_client/models/variant.py,sha256=G3T1E5sBZmJb2hYeb9V3ACaUqVBhqX9gRvI_ooHFgVI,1820
31
- channel3_sdk/_gen/fast_api_client/py.typed,sha256=8ZJUsxZiuOy1oJeVhsTWQhTG_6pTVHVXk5hJL79ebTk,25
32
- channel3_sdk/_gen/fast_api_client/types.py,sha256=AX4orxQZQJat3vZrgjJ-TYb2sNBL8kNo9yqYDT-n8y8,1391
33
- channel3_sdk/_gen/pyproject.toml,sha256=m8NKk1ztXdKounkQTmYgzcML-jmumnMdLLielJAam0k,544
34
- channel3_sdk/client.py,sha256=5yJJiucJiTl-BV_zKaGch57OQSpIEJjWD5TPHaaapl4,13658
35
- channel3_sdk/exceptions.py,sha256=5HJgrhir4-_b4XKyWAB9qp-CjVZeigXSkyM9fbcB1IA,1044
36
- channel3_sdk-1.0.0.dist-info/METADATA,sha256=WGfNoiIoxP86MfoglDbOJofwBlLkzhcidBj91Bg1vL8,9028
37
- channel3_sdk-1.0.0.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
38
- channel3_sdk-1.0.0.dist-info/RECORD,,