Skip to content

Commit 646e232

Browse files
authored
Merge pull request #71 from mwarzybok-sumoheavy/feature/SP-770
SP-770 Review Python dependency updates
2 parents cfa4624 + 296aa89 commit 646e232

18 files changed

+592
-445
lines changed

Pipfile

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,14 +6,14 @@ name = "pypi"
66
[packages]
77
ecdsa = "==0.18.0"
88
requests = "==2.31.0"
9-
pydantic = "==2.3.0"
9+
pydantic = "==2.5.2"
1010

1111
[dev-packages]
12-
black = "==23.7.0"
13-
pytest = "==7.4.0"
12+
black = "==23.11.0"
13+
pytest = "==7.4.3"
1414
pytest-mock = "==3.11.1"
15-
mypy = "==1.5.1"
16-
pytest-mypy-plugins = "==1.11.1"
15+
mypy = "==1.7.1"
16+
pytest-mypy-plugins = "==3.0.0"
1717
pytest-cov = "==4.1.0"
1818

1919
[requires]

Pipfile.lock

Lines changed: 521 additions & 431 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
44

55
[project]
66
name = "bitpay"
7-
version = "5.0.1"
7+
version = "6.0.0"
88
authors = [
99
{ name="Antonio Buedo", email="[email protected]" },
1010
]

src/bitpay/models/bill/bill.py

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,11 @@
11
"""
22
Bill
33
"""
4-
from datetime import datetime
4+
from datetime import datetime, timezone
55
from typing import List, Union
6+
7+
from pydantic import field_serializer
8+
69
from .item import Item
710
from ..bitpay_model import BitPayModel
811

@@ -35,3 +38,7 @@ class Bill(BitPayModel):
3538
created_date: Union[datetime, None] = None
3639
id: Union[str, None] = None
3740
merchant: Union[str, None] = None
41+
42+
@field_serializer("due_date", "created_date")
43+
def serialize_datetime(self, dt: datetime) -> str:
44+
return super().serialize_datetime_to_iso8601(dt)

src/bitpay/models/bitpay_model.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
from datetime import datetime
12
from typing import Union
23

34
from pydantic import BaseModel, field_validator, ConfigDict
@@ -19,6 +20,9 @@ def to_json(self) -> dict:
1920
"""
2021
return self.model_dump(exclude_unset=True, by_alias=True)
2122

23+
def serialize_datetime_to_iso8601(self, dt: datetime) -> str:
24+
return dt.isoformat(timespec="microseconds")[:-4] + "Z"
25+
2226
@field_validator("currency", check_fields=False)
2327
def validate_currency(cls, currency_code: Union[str, None]) -> Union[str, None]:
2428
"""

src/bitpay/models/invoice/refund.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
from datetime import datetime
55
from typing import Union
66

7-
from pydantic import Field
7+
from pydantic import Field, field_serializer
88

99
from bitpay.models.bitpay_model import BitPayModel
1010

@@ -36,3 +36,7 @@ class Refund(BitPayModel):
3636
transaction_refund_fee: Union[float, None] = None
3737
txid: Union[str, None] = None
3838
type: Union[str, None] = None
39+
40+
@field_serializer("request_date", "last_refund_notification")
41+
def serialize_datetime(self, dt: datetime) -> str:
42+
return super().serialize_datetime_to_iso8601(dt)

src/bitpay/models/invoice/refund_webhook.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
from datetime import datetime
22
from typing import Union
33

4+
from pydantic import field_serializer
5+
46
from bitpay.models.bitpay_model import BitPayModel
57

68

@@ -16,3 +18,7 @@ class RefundWebhook(BitPayModel):
1618
request_date: Union[datetime, None] = None
1719
status: Union[str, None] = None
1820
support_request: Union[str, None] = None
21+
22+
@field_serializer("request_date", "last_refund_notification")
23+
def serialize_datetime(self, dt: datetime) -> str:
24+
return super().serialize_datetime_to_iso8601(dt)

src/bitpay/models/invoice/transaction.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22
from typing import Union, Dict
33
from bitpay.models.bitpay_model import BitPayModel
44

5+
from pydantic import field_serializer
6+
57

68
class Transaction(BitPayModel):
79
amount: Union[float, None] = None
@@ -11,3 +13,7 @@ class Transaction(BitPayModel):
1113
txid: Union[str, None] = None
1214
ex_rates: Union[Dict[str, float], None] = None
1315
output_index: Union[int, None] = None
16+
17+
@field_serializer("time", "received_time")
18+
def serialize_datetime_to_iso8601(self, dt: datetime) -> str:
19+
return super().serialize_datetime_to_iso8601(dt)

src/bitpay/models/ledger/ledger_entry.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
"""
44
from datetime import datetime
55
from typing import Union
6-
from pydantic import field_validator
6+
from pydantic import field_validator, field_serializer
77
from bitpay.models.bitpay_model import BitPayModel
88
from bitpay.models.ledger.buyer import Buyer
99

@@ -37,3 +37,7 @@ def convert_to_str(cls, value: Union[int, float, None]) -> Union[float, None]:
3737
if value is None:
3838
return None
3939
return float(value)
40+
41+
@field_serializer("timestamp")
42+
def serialize_datetime_to_iso8601(self, dt: datetime) -> str:
43+
return super().serialize_datetime_to_iso8601(dt)

src/bitpay/models/payout/payout.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
"""
44
from datetime import datetime
55
from typing import List, Union, Dict
6-
from pydantic import Field
6+
from pydantic import Field, field_serializer
77
from .payout_transaction import PayoutTransaction
88
from ..bitpay_model import BitPayModel
99

@@ -37,6 +37,10 @@ class Payout(BitPayModel):
3737
account_id: Union[str, None] = None
3838
group_id: Union[str, None] = None
3939

40+
@field_serializer("effective_date", "request_date", "date_executed")
41+
def serialize_datetime_to_iso8601(self, dt: datetime) -> str:
42+
return super().serialize_datetime_to_iso8601(dt)
43+
4044
def to_json(self) -> dict:
4145
"""
4246
:return: data in json

0 commit comments

Comments
 (0)