dub 0.26.6__py3-none-any.whl → 0.26.7__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.
dub/_version.py CHANGED
@@ -3,10 +3,10 @@
3
3
  import importlib.metadata
4
4
 
5
5
  __title__: str = "dub"
6
- __version__: str = "0.26.6"
6
+ __version__: str = "0.26.7"
7
7
  __openapi_doc_version__: str = "0.0.1"
8
- __gen_version__: str = "2.623.0"
9
- __user_agent__: str = "speakeasy-sdk/python 0.26.6 2.623.0 0.0.1 dub"
8
+ __gen_version__: str = "2.628.0"
9
+ __user_agent__: str = "speakeasy-sdk/python 0.26.7 2.628.0 0.0.1 dub"
10
10
 
11
11
  try:
12
12
  if __package__ is not None:
@@ -14,6 +14,7 @@ class Type(str, Enum):
14
14
  CLICK = "click"
15
15
  LEAD = "lead"
16
16
  SALE = "sale"
17
+ CUSTOM = "custom"
17
18
 
18
19
 
19
20
  class QueryParamStatus(str, Enum):
@@ -174,6 +175,7 @@ class ListCommissionsType(str, Enum):
174
175
  CLICK = "click"
175
176
  LEAD = "lead"
176
177
  SALE = "sale"
178
+ CUSTOM = "custom"
177
179
 
178
180
 
179
181
  class ListCommissionsStatus(str, Enum):
@@ -68,6 +68,7 @@ class UpdateCommissionType(str, Enum):
68
68
  CLICK = "click"
69
69
  LEAD = "lead"
70
70
  SALE = "sale"
71
+ CUSTOM = "custom"
71
72
 
72
73
 
73
74
  class UpdateCommissionStatus(str, Enum):
dub/utils/forms.py CHANGED
@@ -86,11 +86,39 @@ def _populate_form(
86
86
  return form
87
87
 
88
88
 
89
+ def _extract_file_properties(file_obj: Any) -> Tuple[str, Any, Any]:
90
+ """Extract file name, content, and content type from a file object."""
91
+ file_fields: Dict[str, FieldInfo] = file_obj.__class__.model_fields
92
+
93
+ file_name = ""
94
+ content = None
95
+ content_type = None
96
+
97
+ for file_field_name in file_fields:
98
+ file_field = file_fields[file_field_name]
99
+
100
+ file_metadata = find_field_metadata(file_field, MultipartFormMetadata)
101
+ if file_metadata is None:
102
+ continue
103
+
104
+ if file_metadata.content:
105
+ content = getattr(file_obj, file_field_name, None)
106
+ elif file_field_name == "content_type":
107
+ content_type = getattr(file_obj, file_field_name, None)
108
+ else:
109
+ file_name = getattr(file_obj, file_field_name)
110
+
111
+ if file_name == "" or content is None:
112
+ raise ValueError("invalid multipart/form-data file")
113
+
114
+ return file_name, content, content_type
115
+
116
+
89
117
  def serialize_multipart_form(
90
118
  media_type: str, request: Any
91
- ) -> Tuple[str, Dict[str, Any], Dict[str, Any]]:
119
+ ) -> Tuple[str, Dict[str, Any], List[Tuple[str, Any]]]:
92
120
  form: Dict[str, Any] = {}
93
- files: Dict[str, Any] = {}
121
+ files: List[Tuple[str, Any]] = []
94
122
 
95
123
  if not isinstance(request, BaseModel):
96
124
  raise TypeError("invalid request body type")
@@ -112,39 +140,32 @@ def serialize_multipart_form(
112
140
  f_name = field.alias if field.alias else name
113
141
 
114
142
  if field_metadata.file:
115
- file_fields: Dict[str, FieldInfo] = val.__class__.model_fields
116
-
117
- file_name = ""
118
- content = None
119
- content_type = None
120
-
121
- for file_field_name in file_fields:
122
- file_field = file_fields[file_field_name]
143
+ if isinstance(val, List):
144
+ # Handle array of files
145
+ for file_obj in val:
146
+ if not _is_set(file_obj):
147
+ continue
148
+
149
+ file_name, content, content_type = _extract_file_properties(file_obj)
123
150
 
124
- file_metadata = find_field_metadata(file_field, MultipartFormMetadata)
125
- if file_metadata is None:
126
- continue
151
+ if content_type is not None:
152
+ files.append((f_name + "[]", (file_name, content, content_type)))
153
+ else:
154
+ files.append((f_name + "[]", (file_name, content)))
155
+ else:
156
+ # Handle single file
157
+ file_name, content, content_type = _extract_file_properties(val)
127
158
 
128
- if file_metadata.content:
129
- content = getattr(val, file_field_name, None)
130
- elif file_field_name == "content_type":
131
- content_type = getattr(val, file_field_name, None)
159
+ if content_type is not None:
160
+ files.append((f_name, (file_name, content, content_type)))
132
161
  else:
133
- file_name = getattr(val, file_field_name)
134
-
135
- if file_name == "" or content is None:
136
- raise ValueError("invalid multipart/form-data file")
137
-
138
- if content_type is not None:
139
- files[f_name] = (file_name, content, content_type)
140
- else:
141
- files[f_name] = (file_name, content)
162
+ files.append((f_name, (file_name, content)))
142
163
  elif field_metadata.json:
143
- files[f_name] = (
164
+ files.append((f_name, (
144
165
  None,
145
166
  marshal_json(val, request_field_types[name]),
146
167
  "application/json",
147
- )
168
+ )))
148
169
  else:
149
170
  if isinstance(val, List):
150
171
  values = []
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: dub
3
- Version: 0.26.6
3
+ Version: 0.26.7
4
4
  Summary: Python Client SDK Generated by Speakeasy
5
5
  Author: Speakeasy
6
6
  Requires-Python: >=3.9.2
@@ -3,7 +3,7 @@ dub/_hooks/__init__.py,sha256=9_7W5jAYw8rcO8Kfc-Ty-lB82BHfksAJJpVFb_UeU1c,146
3
3
  dub/_hooks/registration.py,sha256=tT-1Cjp5ax1DL-84HBNWPy4wAwgP-0aI4-asLfnkIlw,625
4
4
  dub/_hooks/sdkhooks.py,sha256=2rLEjSz1xFGWabNs1voFn0lXSCqkS38bdKVFdnBJufE,2553
5
5
  dub/_hooks/types.py,sha256=5vcNbFBNpCxqI7ZebiBtut7T_Gz2i36L5MjTqGvxV7Y,3035
6
- dub/_version.py,sha256=0JMPZI3Qq3DbHnG_Sm_a98G4NBIRHcyvGvuXPy07pvQ,450
6
+ dub/_version.py,sha256=Sh7GZ-njiX-WhOs8SO6zkqXAd9oNIf0oHXhzsqHBswQ,450
7
7
  dub/analytics.py,sha256=acVdNv1hS7JDmBS1ena0kG-RNNq64lRZwOV6_2FZn60,13032
8
8
  dub/basesdk.py,sha256=nY5yee9uE5SQHkG_9Di9MUoQR0KcPr-WrtTCDHUdRnY,11779
9
9
  dub/commissions.py,sha256=H56AkD5M03FuXaIdsd5jY6rWZ7qa8c0gssXQhLkF634,25796
@@ -89,7 +89,7 @@ dub/models/operations/getlinkscount.py,sha256=KvD0gh-Imn1WmiiRAIYUXHBoNNGEnmfBQX
89
89
  dub/models/operations/getqrcode.py,sha256=ynCPJc8vy_QEt5FP8OU2s-u6UIt1BhmFSNZC-XPmO4I,3848
90
90
  dub/models/operations/gettags.py,sha256=c9p_JrHFnTDJURyR5iiKFKpXFHlzJDt3R5X1U-anyYg,2664
91
91
  dub/models/operations/getworkspace.py,sha256=V4-NfsEg3M1BTeoE13sDyazefb2_kI4yFxnzgvHPv4s,625
92
- dub/models/operations/listcommissions.py,sha256=6bP8Hc5kwoMi--nCSIaMgDipwUnin47qRV11vEkpQks,7995
92
+ dub/models/operations/listcommissions.py,sha256=LNb0OGeSGt4fFIfDBZLmLqtMmMDbT2fq-Bd_hbMqONg,8039
93
93
  dub/models/operations/listdomains.py,sha256=gbQrJyBIvTGKSeqJo0Jb08iE44Xu39NS9zbfetx4p-s,1936
94
94
  dub/models/operations/listevents.py,sha256=AwnXpTWOhhZ_er9FZukptf1U2dD52j-xQtvop9k-J7g,17943
95
95
  dub/models/operations/listfolders.py,sha256=5FGf62ZTjquVXjq5axlzQgYGfEnrEwDn8QLlgGH_7jQ,1209
@@ -99,7 +99,7 @@ dub/models/operations/retrievelinks.py,sha256=1bLrT_Q2y60eU_gdOHTu99VW8c09gX3nki
99
99
  dub/models/operations/retrievepartneranalytics.py,sha256=MmBDRCB5lQ1lKkfHpeMnZcQXkKIjSCVGEUVcvJgZ_Io,5275
100
100
  dub/models/operations/tracklead.py,sha256=FxdbxL9r3PF0eqo4aOcGXCS7EERq11x07NEdPDkqeps,6855
101
101
  dub/models/operations/tracksale.py,sha256=q_IL4dHay_dDTmRYH80zI6JphCyk46yHoLHBFEJEILg,8189
102
- dub/models/operations/updatecommission.py,sha256=wXdqGWEKobCJEJpgeAYhnjPfE7641jJFarIAtwaEKBU,5452
102
+ dub/models/operations/updatecommission.py,sha256=q5Ifb9Zms429lr2MgORkdPG6FEfHz2jmByG_kAGy8Dg,5474
103
103
  dub/models/operations/updatecustomer.py,sha256=xlW-W99WgdlAsKD4fNhIEw3f1Sipnb4ahPnZFOcisSY,13517
104
104
  dub/models/operations/updatedomain.py,sha256=rexCga7uNxgBZLPiCMcaudc2cQGB0E_qX2HI0DgG_3M,4519
105
105
  dub/models/operations/updatefolder.py,sha256=dNvSPY67g58SWynB8ic5rcgT-h7THRmyxuzuFdO42GQ,2581
@@ -122,7 +122,7 @@ dub/utils/annotations.py,sha256=aR7mZG34FzgRdew7WZPYEu9QGBerpuKxCF4sek5Z_5Y,1699
122
122
  dub/utils/datetimes.py,sha256=oppAA5e3V35pQov1-FNLKxAaNF1_XWi-bQtyjjql3H8,855
123
123
  dub/utils/enums.py,sha256=REU6ydF8gsVL3xaeGX4sMNyiL3q5P9h29-f6Sa6luAE,2633
124
124
  dub/utils/eventstreaming.py,sha256=LtcrfJYw4nP2Oe4Wl0-cEURLzRGYReRGWNFY5wYECIE,6186
125
- dub/utils/forms.py,sha256=YSSijXrsM2nfrRHlPQejh1uRRKfoILomHL3d9xpJiy8,6058
125
+ dub/utils/forms.py,sha256=EJdnrfIkuwpDtekyHutla0HjI_FypTYcmYNyPKEu_W0,6874
126
126
  dub/utils/headers.py,sha256=cPxWSmUILrefTGDzTH1Hdj7_Hlsj-EY6K5Tyc4iH4dk,3663
127
127
  dub/utils/logger.py,sha256=9nUtlKHo3RFsIVyMw5jq3wEKZMVwHnZMSc6xLp-otC0,520
128
128
  dub/utils/metadata.py,sha256=Per2KFXXOqOtoUWXrlIfjrSrBg199KrRW0nKQDgHIBU,3136
@@ -134,7 +134,7 @@ dub/utils/serializers.py,sha256=hiHBXM1AY8_N2Z_rvFfNSYwvLBkSQlPGFp8poasdU4s,5986
134
134
  dub/utils/url.py,sha256=BgGPgcTA6MRK4bF8fjP2dUopN3NzEzxWMXPBVg8NQUA,5254
135
135
  dub/utils/values.py,sha256=CcaCXEa3xHhkUDROyXZocN8f0bdITftv9Y0P9lTf0YM,3517
136
136
  dub/workspaces.py,sha256=_4KOZwwL0KADDqSrHZWfO7LpEwLi59uvaKm-X7JzAv0,25823
137
- dub-0.26.6.dist-info/LICENSE,sha256=kc_aZ6YHHcdSsRy-mGsT0Ehji0ZgR_zevXiUt05V2KY,1079
138
- dub-0.26.6.dist-info/METADATA,sha256=15YlQmTzUIKT4Y97z7pr664t44NSZ3VxsSwNUyjgMd0,28075
139
- dub-0.26.6.dist-info/WHEEL,sha256=b4K_helf-jlQoXBBETfwnf4B04YC67LOev0jo4fX5m8,88
140
- dub-0.26.6.dist-info/RECORD,,
137
+ dub-0.26.7.dist-info/LICENSE,sha256=kc_aZ6YHHcdSsRy-mGsT0Ehji0ZgR_zevXiUt05V2KY,1079
138
+ dub-0.26.7.dist-info/METADATA,sha256=HFt_nIBsCWJ1AIPd3gzSKWq7Qtx8-Tu28b-ULvAM5Xo,28075
139
+ dub-0.26.7.dist-info/WHEEL,sha256=b4K_helf-jlQoXBBETfwnf4B04YC67LOev0jo4fX5m8,88
140
+ dub-0.26.7.dist-info/RECORD,,
File without changes
File without changes