Skip to content

Commit 8c97e9b

Browse files
authored
Merge pull request #86 from PurplShip/purplship-2020.11-patch
[patch] purplship SDK 2020.11
2 parents 3eb85f8 + 5e5ffb0 commit 8c97e9b

File tree

13 files changed

+69
-34
lines changed

13 files changed

+69
-34
lines changed

.github/workflows/pythonpackage.yml

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -22,13 +22,8 @@ jobs:
2222
- name: Install and Run tests
2323
run: |
2424
source ./script.sh
25-
create_env &&
26-
mkdir "${ROOT:?}/wheels" &&
27-
wheels="${ROOT:?}/wheels" PIP_FIND_LINKS=file://"${ROOT:?}/wheels" build
28-
pip install -r "${ROOT:?}/requirements.txt" &&
29-
install_submodules &&
30-
typecheck &&
31-
test &&
25+
init &&
26+
check &&
3227
coverage report -m &&
3328
pip install codecov &&
3429
codecov

extensions/canadapost/purplship/providers/canadapost/rate.py

Lines changed: 14 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
from functools import reduce
1616
from datetime import datetime
1717
from typing import List, Tuple, cast
18-
from purplship.core.utils import Serializable, export, Element, decimal
18+
from purplship.core.utils import Serializable, export, Element, decimal, no_space
1919
from purplship.providers.canadapost.utils import Settings
2020
from purplship.core.units import Country, Currency, Packages, Services, Options
2121
from purplship.core.errors import OriginNotServicedError
@@ -101,8 +101,8 @@ def rate_request(
101101
options=(
102102
optionsType(
103103
option=[
104-
optionType(option_code=code, option_amount=value)
105-
for code, value in requested_options
104+
optionType(option_code=OptionCode[code].value, option_amount=_amount(value))
105+
for code, value in requested_options if code in OptionCode
106106
]
107107
)
108108
if any(requested_options) else None
@@ -124,20 +124,20 @@ def rate_request(
124124
)
125125
if any(requested_services) else None
126126
),
127-
origin_postal_code=payload.shipper.postal_code,
127+
origin_postal_code=no_space(payload.shipper.postal_code),
128128
destination=destinationType(
129129
domestic=(
130-
domesticType(postal_code=(payload.recipient.postal_code or '').strip())
130+
domesticType(postal_code=no_space(payload.recipient.postal_code))
131131
if (payload.recipient.country_code == Country.CA.name)
132132
else None
133133
),
134134
united_states=(
135-
united_statesType(zip_code=(payload.recipient.postal_code or '').strip())
135+
united_statesType(zip_code=no_space(payload.recipient.postal_code))
136136
if (payload.recipient.country_code == Country.US.name)
137137
else None
138138
),
139139
international=(
140-
internationalType(country_code=payload.recipient.country_code)
140+
internationalType(country_code=no_space(payload.recipient.postal_code))
141141
if (
142142
payload.recipient.country_code
143143
not in [Country.US.name, Country.CA.name]
@@ -154,3 +154,10 @@ def _request_serializer(request: mailing_scenario) -> str:
154154
return export(
155155
request, namespacedef_='xmlns="http://www.canadapost.ca/ws/ship/rate-v4"'
156156
)
157+
158+
159+
def _amount(value):
160+
if isinstance(value, (bool)):
161+
return None
162+
163+
return float(value)

extensions/canadapost/purplship/providers/canadapost/shipment/contract.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@
2222
groupIdOrTransmitShipment,
2323
)
2424
from purplship.core.units import Currency, WeightUnit, Options, Packages
25-
from purplship.core.utils import export, concat_str, Serializable, Element
25+
from purplship.core.utils import export, concat_str, Serializable, Element, no_space
2626
from purplship.core.models import (
2727
Message,
2828
ShipmentDetails,
@@ -90,7 +90,7 @@ def compute_amount(code: str, _: Any):
9090

9191
special_services = {
9292
OptionCode[name].value: compute_amount(OptionCode[name].value, value)
93-
for name, value in options
93+
for name, value in options if name in OptionCode
9494
}
9595
payment_type = (
9696
PaymentType[payload.payment.paid_by].value
@@ -106,7 +106,7 @@ def compute_amount(code: str, _: Any):
106106
groupIdOrTransmitShipment=groupIdOrTransmitShipment(),
107107
quickship_label_requested=None,
108108
cpc_pickup_indicator=None,
109-
requested_shipping_point=(payload.shipper.postal_code or '').strip(),
109+
requested_shipping_point=no_space(payload.shipper.postal_code),
110110
shipping_point_id=None,
111111
expected_mailing_date=None,
112112
provide_pricing_info=True,
@@ -121,7 +121,7 @@ def compute_amount(code: str, _: Any):
121121
city=payload.shipper.city,
122122
prov_state=payload.shipper.state_code,
123123
country_code=payload.shipper.country_code,
124-
postal_zip_code=(payload.shipper.postal_code or '').strip(),
124+
postal_zip_code=no_space(payload.shipper.postal_code),
125125
address_line_1=concat_str(payload.shipper.address_line1, join=True),
126126
address_line_2=concat_str(payload.shipper.address_line2, join=True),
127127
),
@@ -135,7 +135,7 @@ def compute_amount(code: str, _: Any):
135135
city=payload.recipient.city,
136136
prov_state=payload.recipient.state_code,
137137
country_code=payload.recipient.country_code,
138-
postal_zip_code=(payload.recipient.postal_code or '').strip(),
138+
postal_zip_code=no_space(payload.recipient.postal_code),
139139
address_line_1=concat_str(
140140
payload.recipient.address_line1, join=True
141141
),

extensions/canadapost/purplship/providers/canadapost/shipment/non_contract.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919
PreferencesType,
2020
)
2121
from purplship.core.units import Currency, WeightUnit, Options, Packages
22-
from purplship.core.utils import export, concat_str, Serializable, Element
22+
from purplship.core.utils import export, concat_str, Serializable, Element, no_space
2323
from purplship.core.models import (
2424
Message,
2525
ShipmentDetails,
@@ -82,7 +82,7 @@ def compute_amount(code: str, _: Any):
8282

8383
special_services = {
8484
OptionCode[name].value: compute_amount(OptionCode[name].value, value)
85-
for name, value in options
85+
for name, value in options if name in OptionCode
8686
}
8787

8888
if is_intl and not any(key in special_services for key in INTERNATIONAL_NON_DELIVERY_OPTION):
@@ -101,7 +101,7 @@ def compute_amount(code: str, _: Any):
101101
address_line_2=concat_str(payload.shipper.address_line2, join=True),
102102
city=payload.shipper.city,
103103
prov_state=payload.shipper.state_code,
104-
postal_zip_code=(payload.shipper.postal_code or '').strip(),
104+
postal_zip_code=no_space(payload.shipper.postal_code),
105105
),
106106
),
107107
destination=DestinationType(
@@ -119,7 +119,7 @@ def compute_amount(code: str, _: Any):
119119
city=payload.recipient.city,
120120
prov_state=payload.recipient.state_code,
121121
country_code=payload.recipient.country_code,
122-
postal_zip_code=(payload.recipient.postal_code or '').strip(),
122+
postal_zip_code=no_space(payload.recipient.postal_code),
123123
),
124124
),
125125
options=(

extensions/canadapost/purplship/providers/canadapost/units.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -116,3 +116,4 @@ class OptionCode(Flag):
116116
""" Unified Option type mapping """
117117
insurance = canadapost_coverage
118118
cash_on_delivery = canadapost_collect_on_delivery
119+
signature_confirmation = canadapost_signature

extensions/canadapost/setup.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
setup(
44
name="purplship.canadapost",
5-
version="2020.11",
5+
version="2020.11.1",
66
description="Multi-carrier shipping API integration with python",
77
url="https://github.com/PurplShip/purplship",
88
author="Purplship Team",

extensions/ups/purplship/providers/ups/package/shipment/create.py

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@
3232
LabelSpecificationType,
3333
LabelImageFormatType,
3434
)
35-
from purplship.core.utils.helpers import export, concat_str, gif_to_pdf
35+
from purplship.core.utils.helpers import export, concat_str, gif_to_pdf, no_space
3636
from purplship.core.utils.serializable import Serializable
3737
from purplship.core.utils.soap import apply_namespaceprefix, create_envelope
3838
from purplship.core.utils.xml import Element
@@ -124,7 +124,7 @@ def shipment_request(
124124
),
125125
City=payload.shipper.city,
126126
StateProvinceCode=payload.shipper.state_code,
127-
PostalCode=payload.shipper.postal_code,
127+
PostalCode=no_space(payload.shipper.postal_code),
128128
CountryCode=payload.shipper.country_code,
129129
),
130130
),
@@ -148,7 +148,7 @@ def shipment_request(
148148
),
149149
City=payload.recipient.city,
150150
StateProvinceCode=payload.recipient.state_code,
151-
PostalCode=payload.recipient.postal_code,
151+
PostalCode=no_space(payload.recipient.postal_code),
152152
CountryCode=payload.recipient.country_code,
153153
),
154154
),
@@ -172,8 +172,8 @@ def shipment_request(
172172
),
173173
City=payload.shipper.city,
174174
StateProvinceCode=payload.shipper.state_code,
175-
PostalCode=payload.payment.credit_card.postal_code
176-
or payload.shipper.postal_code,
175+
PostalCode=no_space(payload.payment.credit_card.postal_code)
176+
or no_space(payload.shipper.postal_code),
177177
CountryCode=payload.shipper.country_code,
178178
),
179179
)
@@ -186,7 +186,7 @@ def shipment_request(
186186
BillReceiver=BillReceiverType(
187187
AccountNumber=payment.account_number,
188188
Address=BillReceiverAddressType(
189-
PostalCode=payload.recipient.postal_code
189+
PostalCode=no_space(payload.recipient.postal_code)
190190
),
191191
)
192192
if payment.paid_by == PaymentType.recipient.name

extensions/ups/setup.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33

44
setup(
55
name="purplship.ups",
6-
version="2020.11",
6+
version="2020.11.1",
77
description="Multi-carrier shipping API integration with python",
88
url="https://github.com/PurplShip/purplship",
99
author="Purplship Team",

purplship/core/utils/helpers.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,13 @@ def concat_str(*args, join: bool = False):
2424
return strings if not join else " ".join(strings)
2525

2626

27+
def no_space(text: str = None):
28+
if text is None:
29+
return None
30+
31+
return ''.join(text.split())
32+
33+
2734
def export(xml_element: Element, **kwds) -> str:
2835
"""Return a XML string.
2936

requirements.dev.txt

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
-f https://git.io/purplship
2+
3+
-e .[dev]
4+
-e ./extensions/boxknight
5+
-e ./extensions/canadapost
6+
-e ./extensions/canpar
7+
-e ./extensions/dhl_express
8+
-e ./extensions/dicom
9+
-e ./extensions/fedex
10+
-e ./extensions/fedex_express
11+
-e ./extensions/purolator
12+
-e ./extensions/purolator_courier
13+
-e ./extensions/ups
14+
-e ./extensions/ups_package
15+
-e ./extensions/usps

0 commit comments

Comments
 (0)