|
1 | 1 | """PurplShip Unified datatypes module.""" |
2 | 2 | from typing import List, NamedTuple, Dict |
| 3 | +import attr |
3 | 4 |
|
4 | 5 |
|
5 | 6 | class party(NamedTuple): |
@@ -182,155 +183,98 @@ class pickup_cancellation_request(NamedTuple): |
182 | 183 | """ Generic response data types """ |
183 | 184 |
|
184 | 185 |
|
| 186 | +@attr.s(auto_attribs=True) |
185 | 187 | class Error: |
186 | 188 | """PurplShip Error type.""" |
187 | 189 |
|
188 | | - def __init__(self, message: str = None, code: str = None, carrier: str = None): |
189 | | - """Error type constructor.""" |
190 | | - self.message = message |
191 | | - self.code = code |
192 | | - self.carrier = carrier |
| 190 | + message: str = None |
| 191 | + code: str = None |
| 192 | + carrier: str = None |
193 | 193 |
|
194 | 194 |
|
| 195 | +@attr.s(auto_attribs=True) |
195 | 196 | class ChargeDetails: |
196 | 197 | """PurplShip charge type.""" |
197 | 198 |
|
198 | | - def __init__(self, name: str = None, amount: float = None, currency: str = None): |
199 | | - """Charge details type constructor.""" |
200 | | - self.name = name |
201 | | - self.amount = amount |
202 | | - self.currency = currency |
| 199 | + name: str = None |
| 200 | + amount: float = None |
| 201 | + currency: str = None |
203 | 202 |
|
204 | 203 |
|
| 204 | +@attr.s(auto_attribs=True) |
205 | 205 | class ReferenceDetails: |
206 | 206 | """PurplShip reference details type.""" |
207 | 207 |
|
208 | | - def __init__(self, value: str, type: str = None): |
209 | | - """Purplship Reference details type constructor.""" |
210 | | - self.value = value |
211 | | - self.type = type |
| 208 | + value: str |
| 209 | + type: str = None |
212 | 210 |
|
213 | 211 |
|
| 212 | +@attr.s(auto_attribs=True) |
214 | 213 | class TimeDetails: |
215 | 214 | """PurplShip time details type.""" |
216 | 215 |
|
217 | | - def __init__(self, value: str, name: str = None): |
218 | | - """Time details type constructor.""" |
219 | | - self.value = value |
220 | | - self.name = name |
| 216 | + value: str |
| 217 | + name: str = None |
221 | 218 |
|
222 | 219 |
|
| 220 | +@attr.s(auto_attribs=True) |
223 | 221 | class TrackingEvent: |
224 | 222 | """PurplShip tracking event type.""" |
225 | 223 |
|
226 | | - def __init__( |
227 | | - self, |
228 | | - date: str, |
229 | | - description: str, |
230 | | - location: str, |
231 | | - code: str, |
232 | | - time: str = None, |
233 | | - signatory: str = None, |
234 | | - ): |
235 | | - """Tracking event type constructor.""" |
236 | | - self.date = date |
237 | | - self.time = time |
238 | | - self.description = description |
239 | | - self.location = location |
240 | | - self.code = code |
241 | | - self.signatory = signatory |
| 224 | + date: str |
| 225 | + description: str |
| 226 | + location: str |
| 227 | + code: str |
| 228 | + time: str = None |
| 229 | + signatory: str = None |
242 | 230 |
|
243 | 231 |
|
| 232 | +@attr.s(auto_attribs=True) |
244 | 233 | class QuoteDetails: |
245 | 234 | """PurplShip quote details type.""" |
246 | 235 |
|
247 | | - def __init__( |
248 | | - self, |
249 | | - carrier: str, |
250 | | - service_name: str, |
251 | | - service_type: str, |
252 | | - base_charge: float, |
253 | | - duties_and_taxes: float, |
254 | | - total_charge: float, |
255 | | - currency: str, |
256 | | - pickup_time: str = None, |
257 | | - delivery_date: str = None, |
258 | | - pickup_date: str = None, |
259 | | - discount: float = None, |
260 | | - extra_charges: List[ChargeDetails] = [], |
261 | | - ): |
262 | | - """Quotes details type constructor.""" |
263 | | - self.carrier = carrier |
264 | | - self.service_name = service_name |
265 | | - self.service_type = service_type |
266 | | - self.base_charge = base_charge |
267 | | - self.duties_and_taxes = duties_and_taxes |
268 | | - self.total_charge = total_charge |
269 | | - self.currency = currency |
270 | | - self.discount = discount |
271 | | - self.extra_charges = extra_charges |
272 | | - |
273 | | - self.pickup_time = pickup_time |
274 | | - self.delivery_date = delivery_date |
275 | | - self.pickup_date = pickup_date |
| 236 | + carrier: str |
| 237 | + service_name: str |
| 238 | + service_type: str |
| 239 | + base_charge: float |
| 240 | + duties_and_taxes: float |
| 241 | + total_charge: float |
| 242 | + currency: str |
| 243 | + delivery_date: str = None |
| 244 | + discount: float = None |
| 245 | + extra_charges: List[ChargeDetails] = [] |
276 | 246 |
|
277 | 247 |
|
| 248 | +@attr.s(auto_attribs=True) |
278 | 249 | class TrackingDetails: |
279 | 250 | """PurplShip tracking details type.""" |
280 | 251 |
|
281 | | - def __init__( |
282 | | - self, |
283 | | - carrier: str, |
284 | | - tracking_number: str, |
285 | | - shipment_date: str = None, |
286 | | - events: List[TrackingEvent] = [], |
287 | | - ): |
288 | | - """Tracking details type constructor.""" |
289 | | - self.carrier = carrier |
290 | | - self.events = events |
291 | | - self.shipment_date = shipment_date |
292 | | - self.tracking_number = tracking_number |
| 252 | + carrier: str |
| 253 | + tracking_number: str |
| 254 | + shipment_date: str = None |
| 255 | + events: List[TrackingEvent] = [] |
293 | 256 |
|
294 | 257 |
|
| 258 | +@attr.s(auto_attribs=True) |
295 | 259 | class ShipmentDetails: |
296 | 260 | """PurplShip shipment details type.""" |
297 | 261 |
|
298 | | - def __init__( |
299 | | - self, |
300 | | - carrier: str, |
301 | | - tracking_numbers: List[str], |
302 | | - total_charge: ChargeDetails, |
303 | | - charges: List[ChargeDetails], |
304 | | - shipment_date: str = None, |
305 | | - services: List[str] = None, |
306 | | - documents: List[str] = [], |
307 | | - reference: ReferenceDetails = None, |
308 | | - ): |
309 | | - """Shipment details type constructor.""" |
310 | | - self.carrier = carrier |
311 | | - self.tracking_numbers = tracking_numbers |
312 | | - self.shipment_date = shipment_date |
313 | | - self.documents = documents |
314 | | - self.services = services |
315 | | - self.reference = reference |
316 | | - self.total_charge = total_charge |
317 | | - self.charges = charges |
| 262 | + carrier: str |
| 263 | + tracking_numbers: List[str] |
| 264 | + total_charge: ChargeDetails |
| 265 | + charges: List[ChargeDetails] |
| 266 | + shipment_date: str = None |
| 267 | + services: List[str] = None |
| 268 | + documents: List[str] = [] |
| 269 | + reference: ReferenceDetails = None |
318 | 270 |
|
319 | 271 |
|
| 272 | +@attr.s(auto_attribs=True) |
320 | 273 | class PickupDetails: |
321 | 274 | """PurplShip pickup details type.""" |
322 | 275 |
|
323 | | - def __init__( |
324 | | - self, |
325 | | - carrier: str, |
326 | | - confirmation_number: str, |
327 | | - pickup_date: str = None, |
328 | | - pickup_charge: ChargeDetails = None, |
329 | | - ref_times: List[TimeDetails] = None, |
330 | | - ): |
331 | | - """Pickup details type constructor.""" |
332 | | - self.carrier = carrier |
333 | | - self.confirmation_number = confirmation_number |
334 | | - self.pickup_date = pickup_date |
335 | | - self.pickup_charge = pickup_charge |
336 | | - self.ref_times = ref_times |
| 276 | + carrier: str |
| 277 | + confirmation_number: str |
| 278 | + pickup_date: str = None |
| 279 | + pickup_charge: ChargeDetails = None |
| 280 | + ref_times: List[TimeDetails] = None |
0 commit comments