karrio 2023.9.2__py3-none-any.whl → 2025.5rc1__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.
karrio/sdk.py ADDED
@@ -0,0 +1,102 @@
1
+ """Karrio package root module
2
+
3
+ Karrio makes shipping carrier webservices integration easy by providing
4
+ a modern and dev friendly library and by providing a unified extensible API
5
+ to communicate with all supported carriers.
6
+
7
+ -- Speak Karrio, Speak carriers...
8
+
9
+ Example:
10
+ Examples can be given using either the ``Example`` or ``Examples``
11
+ sections. Sections support any reStructuredText formatting, including
12
+ literal blocks::
13
+
14
+ >>> import karrio.sdk as karrio
15
+ >>> from karrio.core.utils import DP
16
+ >>> from karrio.core.models import Address, Parcel, RateRequest
17
+ >>> canadapost = karrio.gateway["canadapost"].create(
18
+ ... {
19
+ ... "username": "username",
20
+ ... "password": "password",
21
+ ... "customer_number": "123456789",
22
+ ... "test": True
23
+ ... }
24
+ ... )
25
+ >>> shipper = Address(
26
+ ... postal_code= "V6M2V9",
27
+ ... city= "Vancouver",
28
+ ... country_code= "CA",
29
+ ... state_code= "BC",
30
+ ... address_line1= "5840 Oak St"
31
+ ... )
32
+ >>> recipient = Address(
33
+ ... postal_code= "E1C4Z8",
34
+ ... city= "Moncton",
35
+ ... country_code= "CA",
36
+ ... state_code= "NB",
37
+ ... residential= False,
38
+ ... address_line1= "125 Church St"
39
+ ... )
40
+ >>> parcel = Parcel(
41
+ ... height= 3.0,
42
+ ... length= 6.0,
43
+ ... width= 3.0,
44
+ ... weight= 0.5
45
+ ... )
46
+ >>> request = karrio.Rating.fetch(
47
+ ... RateRequest(
48
+ ... shipper=shipper,
49
+ ... recipient=recipient,
50
+ ... parcels=[parcel],
51
+ ... services=["canadapost_priority"]
52
+ ... )
53
+ ... )
54
+ >>> rates = request.from_(canadapost).parse()
55
+ >>> print(DP.to_dict(rates))
56
+ [
57
+ [],
58
+ [
59
+ {
60
+ "base_charge": 12.26,
61
+ "carrier_name": "canadapost",
62
+ "carrier_id": "canadapost",
63
+ "currency": "CAD",
64
+ "transit_days": 2,
65
+ "extra_charges": [
66
+ {"amount": -0.37, "currency": "CAD", "name": "Automation discount"},
67
+ {"amount": 1.75, "currency": "CAD", "name": "Fuel surcharge"}
68
+ ],
69
+ "service": "canadapost_xpresspost",
70
+ "total_charge": 13.64
71
+ }
72
+ ]
73
+ ]
74
+
75
+ Attributes:
76
+ gateway (GatewayInitializer): Gateway initializer singleton instance
77
+
78
+ """
79
+
80
+ from karrio.api.gateway import GatewayInitializer
81
+ import karrio.api.interface as interface
82
+
83
+ gateway = GatewayInitializer.get_instance()
84
+ Pickup = interface.Pickup
85
+ Rating = interface.Rating
86
+ Shipment = interface.Shipment
87
+ Tracking = interface.Tracking
88
+ Address = interface.Address
89
+ Document = interface.Document
90
+ Manifest = interface.Manifest
91
+
92
+
93
+ __all__ = [
94
+ "gateway",
95
+ "Pickup",
96
+ "Rating",
97
+ "Shipment",
98
+ "Tracking",
99
+ "Address",
100
+ "Document",
101
+ "Manifest",
102
+ ]
@@ -16,9 +16,16 @@ class RatingMixinProxy:
16
16
  tracer: utils.Tracer = attr.field(factory=utils.Tracer)
17
17
 
18
18
  def trace(self, *args, **kwargs):
19
- return self.tracer.with_metadata(dict(connection=self.settings))(
20
- *args, **kwargs
21
- )
19
+ return self.tracer.with_metadata(
20
+ dict(
21
+ connection=dict(
22
+ id=self.settings.id,
23
+ test_mode=self.settings.test_mode,
24
+ carrier_id=self.settings.carrier_id,
25
+ carrier_name=self.settings.carrier_name,
26
+ )
27
+ )
28
+ )(*args, **kwargs)
22
29
 
23
30
  def get_rates(
24
31
  self, request: utils.Serializable
@@ -130,7 +137,7 @@ def get_available_rates(
130
137
  match_min_weight_requirements = (
131
138
  service.min_weight is not None
132
139
  and package.weight[service.weight_unit]
133
- <= units.Weight(service.min_weight, service.weight_unit).value
140
+ >= units.Weight(service.min_weight, service.weight_unit).value
134
141
  ) or (service.min_weight is None)
135
142
  match_max_weight_requirements = (
136
143
  service.max_weight is not None
@@ -144,11 +151,20 @@ def get_available_rates(
144
151
  for zone in service.zones or []:
145
152
  # Check Location inclusion
146
153
  _cover_supported_cities = (
147
- zone.cities is not None and recipient.city in zone.cities
154
+ zone.cities is not None
155
+ and recipient.city is not None
156
+ and recipient.city.lower() in [_.lower() for _ in zone.cities]
148
157
  ) or not any(zone.cities or [])
149
158
  _cover_supported_countries = (
150
- zone.cities is not None and recipient.country_code in zone.country_codes
159
+ zone.country_codes is not None
160
+ and recipient.country_code in zone.country_codes
151
161
  ) or not any(zone.country_codes or [])
162
+ _cover_supported_postal_codes = (
163
+ zone.postal_codes is not None
164
+ and recipient.postal_code is not None
165
+ and str(recipient.postal_code).lower()
166
+ in [str(_).lower() for _ in zone.postal_codes]
167
+ ) or not any(zone.postal_codes or [])
152
168
 
153
169
  # Check if weight and dimensions fit restrictions
154
170
  _match_zone_min_weight_requirements = (
@@ -165,16 +181,26 @@ def get_available_rates(
165
181
  # Check if best fit zone is selected
166
182
  _best_fit_zone_selected = (
167
183
  selected_zone is not None
168
- and selected_zone.rate < zone.rate
184
+ and selected_zone.max_weight is not None
169
185
  and (
170
- selected_zone.max_weight < zone.max_weight
171
- or selected_zone.min_weight < zone.min_weight
186
+ selected_zone.rate < zone.rate
187
+ or (
188
+ selected_zone.max_weight is not None
189
+ and zone.max_weight is not None
190
+ and selected_zone.max_weight < zone.max_weight
191
+ )
192
+ or (
193
+ selected_zone.min_weight is not None
194
+ and zone.min_weight is not None
195
+ and selected_zone.min_weight < zone.min_weight
196
+ )
172
197
  )
173
198
  )
174
199
 
175
200
  if (
176
201
  _cover_supported_cities
177
202
  and _cover_supported_countries
203
+ and _cover_supported_postal_codes
178
204
  and _match_zone_min_weight_requirements
179
205
  and _match_zone_max_weight_requirements
180
206
  and _best_fit_zone_selected is False
@@ -0,0 +1,6 @@
1
+ """
2
+ Karrio validators package.
3
+
4
+ This package provides address validation functionality through various service providers.
5
+ """
6
+ __path__ = __import__("pkgutil").extend_path(__path__, __name__) # type: ignore
@@ -1,14 +1,14 @@
1
- Metadata-Version: 2.1
1
+ Metadata-Version: 2.4
2
2
  Name: karrio
3
- Version: 2023.9.2
3
+ Version: 2025.5rc1
4
4
  Summary: Multi-carrier shipping API integration with python
5
- Home-page: https://github.com/karrioapi/karrio
6
- Author: karrio
7
- Author-email: hello@karrio.io
8
- License: Apache-2.0
5
+ Author-email: karrio <hello@karrio.io>
6
+ License-Expression: Apache-2.0
7
+ Project-URL: Homepage, https://github.com/karrioapi/karrio
9
8
  Classifier: Intended Audience :: Developers
10
9
  Classifier: Operating System :: OS Independent
11
10
  Classifier: Programming Language :: Python :: 3
11
+ Requires-Python: >=3.11
12
12
  Description-Content-Type: text/markdown
13
13
  Requires-Dist: jstruct
14
14
  Requires-Dist: xmltodict
@@ -19,6 +19,7 @@ Requires-Dist: Pillow
19
19
  Requires-Dist: phonenumbers
20
20
  Requires-Dist: python-barcode
21
21
  Requires-Dist: PyPDF2
22
+ Requires-Dist: toml
22
23
 
23
24
  # <a href="https://karrio.io" target="_blank"><img alt="Karrio" src="https://docs.karrio.io/img/logo.svg" height="50px" /></a>
24
25
 
@@ -37,7 +38,7 @@ The key features are:
37
38
 
38
39
  ## Requirements
39
40
 
40
- Python 3.7+
41
+ Python 3.11+
41
42
 
42
43
  ## Installation
43
44
 
@@ -81,7 +82,7 @@ pip install karrio.canadapost
81
82
  - Fetch shipping rates
82
83
 
83
84
  ```python
84
- import karrio
85
+ import karrio.sdk as karrio
85
86
  from karrio.core.models import Address, Parcel, RateRequest
86
87
  from karrio.mappers.canadapost.settings import Settings
87
88
 
@@ -0,0 +1,57 @@
1
+ karrio/__init__.py,sha256=bpT73UG7mZL_JjEqMwbYx6q69jA8J5Jcoul1LcDokhA,81
2
+ karrio/lib.py,sha256=eEHcJv9ig5UnkMMgJs1KTSEx3mJSYOmVQvSl_UjtWZQ,23962
3
+ karrio/references.py,sha256=fSZK62trivpzHp7u3IRWRgfOH2fxoP2hSjG5AKAFEyA,26200
4
+ karrio/sdk.py,sha256=JW7hFSxq6ki05vwR90-JiBYpos7QUlLDd8JEWf_dndg,3128
5
+ karrio/addons/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
6
+ karrio/addons/label.py,sha256=WwC1o97Ztyj3kRNTlAkHmYh4It7dC7l8bsC3fc-5yMA,10316
7
+ karrio/addons/renderer.py,sha256=wNfN1MXPFNRrIyyij8Hw30S2sWE2-lLT0SpyE3DiYsE,7007
8
+ karrio/addons/fonts/Oswald-Regular.ttf,sha256=JkY5cy9a34D6weSp7z8OtY5Yta6tB4UAh2Yt7euhGxI,91400
9
+ karrio/addons/fonts/Oswald-SemiBold.ttf,sha256=s4enQAb3fl-rF7yrZAHO8P99AVqUjiJ3DS873v-lidA,91700
10
+ karrio/api/__init__.py,sha256=fJbOJLRIdrVlUi2BM-JtagKdm05ADc9naRMtx6rZ0V4,127
11
+ karrio/api/gateway.py,sha256=fYU4nuer97LdiKHNEoj7rHi4vL49YPqLYG_KuJ0PTtU,5578
12
+ karrio/api/interface.py,sha256=kNO3weB890CHIzEQ3m-aewbROUxZ2rEWEdtC0NJ6AQ4,17458
13
+ karrio/api/mapper.py,sha256=KU9kiXo4l6ocY7F8AYmf4U6398gc2hhBDGhAeBTM3ag,14893
14
+ karrio/api/proxy.py,sha256=rZtlptH-H6yrEqjr9VUG89JuQg3tpAmYgOxT8ChrX5I,6828
15
+ karrio/core/__init__.py,sha256=2RAhlihO1ExRNx2msF5N889aY2DjdzAGJqUZaQo0XmM,143
16
+ karrio/core/errors.py,sha256=asxG9d0t13Ac1bQtZzPOThfEZKXFSHskOE58jNUYvFg,2560
17
+ karrio/core/metadata.py,sha256=y8a76z79WR1IIPyRedc9u7-MLdnlvZaIt_cGcEUN1N0,4132
18
+ karrio/core/models.py,sha256=h-Zmhh2RbMkM0257hy2qdAKD6OspPrFxxGWeKqWuISc,12404
19
+ karrio/core/plugins.py,sha256=ss5qHIgUA4qbuHMrsjyOP0Nd0QrQfU9WEwCg2dRUqwc,25129
20
+ karrio/core/settings.py,sha256=4taIdp7oafekXyhZ3JQyeC4iThQpJx7gP4Q5OKTU_II,1839
21
+ karrio/core/units.py,sha256=Ji0jHCXk0pDzHi-4Rb6MWYwL7lS_fcWMdyoFXO60Itc,77293
22
+ karrio/core/validators.py,sha256=5x45MxFthaQrlbs5_cDVmnwsWdKl6icbkp7yoBceDx4,2187
23
+ karrio/core/utils/__init__.py,sha256=dt4643diYv2nmVx3tCF9hRvwAQ-Xzsl2JPd854_qAzA,748
24
+ karrio/core/utils/caching.py,sha256=zx0R1XAWPuA0q2hz5xUw0-OLZhHd7haS41uO_Prg8Ng,1734
25
+ karrio/core/utils/datetime.py,sha256=khfeEmsqlRppQBCWvmcpkSDlx_rBdM2TWZipHGOJU6I,4837
26
+ karrio/core/utils/dict.py,sha256=Fi4SUht4L_Otcol0t0Padga2firSHEUlqTMCaiVALWk,2475
27
+ karrio/core/utils/enum.py,sha256=Acwa3jpBYx2OdBOsTepw96wKON60rkXJPQStQ5p-T8c,7969
28
+ karrio/core/utils/helpers.py,sha256=oiPSloVDN27kl4xc3l0S7Cz3ed03mTIDECA0cd7DlpI,10709
29
+ karrio/core/utils/log.py,sha256=G0JqUqNiS7JwkFMurtHtbxa42miAs28dPfNZZdlZid4,434
30
+ karrio/core/utils/number.py,sha256=6NMpdyiYqMrF-KQvPDg_wxer5zkr8ts2JHfi82xzQ7o,2703
31
+ karrio/core/utils/pipeline.py,sha256=6wXdsUGW7ZVqhpsEzreBnS6dHSCU5XgClOaBgKfJyh8,1253
32
+ karrio/core/utils/serializable.py,sha256=iaeiVeiCqnpIhX0danUPfsixVWcYkhb3NkYlfQaFuJA,916
33
+ karrio/core/utils/soap.py,sha256=g8AzymGypJris0liiK-zwsjeoCPlIJ8r25WSBlSHqqs,5274
34
+ karrio/core/utils/string.py,sha256=EM6kHXZtr53gk856GbOaqID-Hqr50SeQQVWsdB5GoMk,2776
35
+ karrio/core/utils/tracing.py,sha256=84dmmpEPs_iBC3JaFv4f9vbC0VgR6KW4HZEYIrdt084,1462
36
+ karrio/core/utils/transformer.py,sha256=VHhZjXtxyeXEhAM4B5lGdcJUqT9-FZg10dZoOmnHwjs,5115
37
+ karrio/core/utils/xml.py,sha256=eMPbMVHvCMEDgUMuicB2-EQnzsxWTkNJ7RW7o9MKIc0,5493
38
+ karrio/mappers/__init__.py,sha256=i5qDwqYoTmFscV1rwxIOo19JiRzyfTWJd9Jx0qEvUmo,129
39
+ karrio/plugins/__init__.py,sha256=pKV0dTWzyqHqLT3PFmsNZ-sAge0avF7g7Vl8qZJx864,176
40
+ karrio/providers/__init__.py,sha256=02HsiVGylnZLoB_OE-7kJTvF500-CpOe-WWkOkqRUno,131
41
+ karrio/schemas/__init__.py,sha256=02HsiVGylnZLoB_OE-7kJTvF500-CpOe-WWkOkqRUno,131
42
+ karrio/universal/__init__.py,sha256=bpT73UG7mZL_JjEqMwbYx6q69jA8J5Jcoul1LcDokhA,81
43
+ karrio/universal/mappers/__init__.py,sha256=bpT73UG7mZL_JjEqMwbYx6q69jA8J5Jcoul1LcDokhA,81
44
+ karrio/universal/mappers/rating_proxy.py,sha256=nXvNmNziu5Iszuk-2qRrN-UIwnLX0AgluDUqHpPNqO4,11765
45
+ karrio/universal/mappers/shipping_proxy.py,sha256=-hEXZ0R3-Ps6MSRAGpE_IlWsa0gKr6xJjIz4NuoeXQ8,1935
46
+ karrio/universal/providers/__init__.py,sha256=bpT73UG7mZL_JjEqMwbYx6q69jA8J5Jcoul1LcDokhA,81
47
+ karrio/universal/providers/rating/__init__.py,sha256=3f8u1FS7OF9OZUGauBSt4B1ad0dmqIsmFaG3pWu7Sck,139
48
+ karrio/universal/providers/rating/rate.py,sha256=5M79YhIX-XMnm44kezFEoY5vE9d-WWjGAaBnE7MOmJI,861
49
+ karrio/universal/providers/rating/utils.py,sha256=WVyJWdxCdKM1YlhTHVFxEMyac0FKIGHEkYXWEgJUzYA,558
50
+ karrio/universal/providers/shipping/__init__.py,sha256=JRcfJWSeDSjO2g2fRnLgBurBXn01nVpdi21ShxLpG34,188
51
+ karrio/universal/providers/shipping/shipment.py,sha256=t7PO4uSzD1ZL3q3UZWHAPD3UUZUKXReQvED8mVKUe1A,1512
52
+ karrio/universal/providers/shipping/utils.py,sha256=1LuO31RMhpUls6-h5xhWkfky4G7tdWmGKmRhLkj-e98,593
53
+ karrio/validators/__init__.py,sha256=r1Tb6phNVqLsBVgu41tNpTC1F1DoBqz4nwXy-BZ_S0g,206
54
+ karrio-2025.5rc1.dist-info/METADATA,sha256=R8GeK45dYdpq4pnLOkADTVt1P2W2j0TG-bVCR1PSbdU,4762
55
+ karrio-2025.5rc1.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
56
+ karrio-2025.5rc1.dist-info/top_level.txt,sha256=D1D7x8R3cTfjF_15mfiO7wCQ5QMtuM4x8GaPr7z5i78,12
57
+ karrio-2025.5rc1.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: bdist_wheel (0.42.0)
2
+ Generator: setuptools (80.9.0)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5
 
@@ -1,52 +0,0 @@
1
- karrio/__init__.py,sha256=MGaZGiMfGOpYY5gTQaOT-FgpyAmRoBio8dfXl1IcRWA,3149
2
- karrio/lib.py,sha256=WcrIzecBiwE507VSVPNkNT8--nvS6AgrZ-uv1crGBEA,19903
3
- karrio/references.py,sha256=Re-PHb3QyhFkqCGTuKyQjIFxpa30b9vaRqA5TVjwr1E,4969
4
- karrio/addons/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
5
- karrio/addons/label.py,sha256=WwC1o97Ztyj3kRNTlAkHmYh4It7dC7l8bsC3fc-5yMA,10316
6
- karrio/addons/renderer.py,sha256=tLO1ZWrYExBOyLVv29v-1FWtASrevZlG2OCgQFf8lqk,7016
7
- karrio/addons/fonts/Oswald-Regular.ttf,sha256=JkY5cy9a34D6weSp7z8OtY5Yta6tB4UAh2Yt7euhGxI,91400
8
- karrio/addons/fonts/Oswald-SemiBold.ttf,sha256=s4enQAb3fl-rF7yrZAHO8P99AVqUjiJ3DS873v-lidA,91700
9
- karrio/api/__init__.py,sha256=fJbOJLRIdrVlUi2BM-JtagKdm05ADc9naRMtx6rZ0V4,127
10
- karrio/api/gateway.py,sha256=9E30taInhrN7-VGeZz3NKcbKEwhy7h9grB_nZ8dlkQM,4955
11
- karrio/api/interface.py,sha256=ruH6ZV9RitmH_uTP5Czoym-P1DhqRpmCoRCPK0oPGRE,16146
12
- karrio/api/mapper.py,sha256=OjLH2b6_NRcVNnJDb3hZypY6FfHuTHiMlAJgYnWpkzM,13472
13
- karrio/api/proxy.py,sha256=Mx5tpcL0L_02lIZ84AvnEfroVu5Qi22iz7AVueX4YjI,6320
14
- karrio/core/__init__.py,sha256=BboTt3huAYrsqcTcaq1lFX5O4uKiIi2cpWEXp68ItMo,71
15
- karrio/core/errors.py,sha256=asxG9d0t13Ac1bQtZzPOThfEZKXFSHskOE58jNUYvFg,2560
16
- karrio/core/metadata.py,sha256=vs4doqUjxDSRbDulbdBeTAyFUIZ8MdjsRP74YjtdNEY,1081
17
- karrio/core/models.py,sha256=B_n4AS8qrqHI3AJie_waFOayYad2zypaC9tgfFoxSAI,11005
18
- karrio/core/settings.py,sha256=1d-w-U5nODMxsbmR0B4CdgggvYCzsgtSipP7GUWmFkI,753
19
- karrio/core/units.py,sha256=2hYiZNH_xPnD95-wWne7GZCfy6YoLPzXGzcov29ro7Q,61396
20
- karrio/core/utils/__init__.py,sha256=dt4643diYv2nmVx3tCF9hRvwAQ-Xzsl2JPd854_qAzA,748
21
- karrio/core/utils/caching.py,sha256=zx0R1XAWPuA0q2hz5xUw0-OLZhHd7haS41uO_Prg8Ng,1734
22
- karrio/core/utils/datetime.py,sha256=VD6pCFfnFFbhslWr0_QclMlR4DRCj58kn4KWXVl-aK8,2394
23
- karrio/core/utils/dict.py,sha256=fUsyMwRduh3qJ6D6Vf4LUVcljEqDHJVn8Av9x4rUadg,2312
24
- karrio/core/utils/enum.py,sha256=Twle9bvD1LQ5ks0XqPapYnYl-qY1rDRmsICJ5K-VCKg,4748
25
- karrio/core/utils/helpers.py,sha256=ij_nD-P2PlCAKNxtYY3pjKjaMOXX6qKiqcAcZ7BvdXM,8695
26
- karrio/core/utils/log.py,sha256=G0JqUqNiS7JwkFMurtHtbxa42miAs28dPfNZZdlZid4,434
27
- karrio/core/utils/number.py,sha256=z455Zbx5V92Ofo8PEaC_UEfmVEwnb-nq7fIoSeApz4o,1176
28
- karrio/core/utils/pipeline.py,sha256=6wXdsUGW7ZVqhpsEzreBnS6dHSCU5XgClOaBgKfJyh8,1253
29
- karrio/core/utils/serializable.py,sha256=iaeiVeiCqnpIhX0danUPfsixVWcYkhb3NkYlfQaFuJA,916
30
- karrio/core/utils/soap.py,sha256=g8AzymGypJris0liiK-zwsjeoCPlIJ8r25WSBlSHqqs,5274
31
- karrio/core/utils/string.py,sha256=l2CL4rn7Tls26oH_IgAsiQh80grG39Tj4NKY4CtcCsU,762
32
- karrio/core/utils/tracing.py,sha256=84dmmpEPs_iBC3JaFv4f9vbC0VgR6KW4HZEYIrdt084,1462
33
- karrio/core/utils/transformer.py,sha256=QOO2bb23j3EqV3ez7I71veaNqnYhiX17tLcqm8LaWgw,4969
34
- karrio/core/utils/xml.py,sha256=eMPbMVHvCMEDgUMuicB2-EQnzsxWTkNJ7RW7o9MKIc0,5493
35
- karrio/mappers/__init__.py,sha256=i5qDwqYoTmFscV1rwxIOo19JiRzyfTWJd9Jx0qEvUmo,129
36
- karrio/providers/__init__.py,sha256=02HsiVGylnZLoB_OE-7kJTvF500-CpOe-WWkOkqRUno,131
37
- karrio/schemas/__init__.py,sha256=02HsiVGylnZLoB_OE-7kJTvF500-CpOe-WWkOkqRUno,131
38
- karrio/universal/__init__.py,sha256=bpT73UG7mZL_JjEqMwbYx6q69jA8J5Jcoul1LcDokhA,81
39
- karrio/universal/mappers/__init__.py,sha256=bpT73UG7mZL_JjEqMwbYx6q69jA8J5Jcoul1LcDokhA,81
40
- karrio/universal/mappers/rating_proxy.py,sha256=la0cAsbhuXzSFYdzi8tJalC4kT79FvZu_N99VMGTktU,10634
41
- karrio/universal/mappers/shipping_proxy.py,sha256=-hEXZ0R3-Ps6MSRAGpE_IlWsa0gKr6xJjIz4NuoeXQ8,1935
42
- karrio/universal/providers/__init__.py,sha256=bpT73UG7mZL_JjEqMwbYx6q69jA8J5Jcoul1LcDokhA,81
43
- karrio/universal/providers/rating/__init__.py,sha256=3f8u1FS7OF9OZUGauBSt4B1ad0dmqIsmFaG3pWu7Sck,139
44
- karrio/universal/providers/rating/rate.py,sha256=5M79YhIX-XMnm44kezFEoY5vE9d-WWjGAaBnE7MOmJI,861
45
- karrio/universal/providers/rating/utils.py,sha256=WVyJWdxCdKM1YlhTHVFxEMyac0FKIGHEkYXWEgJUzYA,558
46
- karrio/universal/providers/shipping/__init__.py,sha256=JRcfJWSeDSjO2g2fRnLgBurBXn01nVpdi21ShxLpG34,188
47
- karrio/universal/providers/shipping/shipment.py,sha256=t7PO4uSzD1ZL3q3UZWHAPD3UUZUKXReQvED8mVKUe1A,1512
48
- karrio/universal/providers/shipping/utils.py,sha256=1LuO31RMhpUls6-h5xhWkfky4G7tdWmGKmRhLkj-e98,593
49
- karrio-2023.9.2.dist-info/METADATA,sha256=R1u5MuYFmrH6pyzOx-T-yPkQH-sLq3TKYGUfGImxJoM,4685
50
- karrio-2023.9.2.dist-info/WHEEL,sha256=oiQVh_5PnQM0E3gPdiz09WCNmwiHDMaGer_elqB3coM,92
51
- karrio-2023.9.2.dist-info/top_level.txt,sha256=mfkVZXzNuVRmA7NRlck_Ub-C8Zgtqxbx3gX1Rq_W-i0,7
52
- karrio-2023.9.2.dist-info/RECORD,,