Skip to content

Commit 3e88f28

Browse files
committed
Add pydantic for better mypy tests + Fixes
1 parent 4132ea0 commit 3e88f28

File tree

6 files changed

+12
-11
lines changed

6 files changed

+12
-11
lines changed

pyproject.toml

+1
Original file line numberDiff line numberDiff line change
@@ -155,6 +155,7 @@ dependencies = [
155155
"ruff==0.4.8",
156156
"isort==5.13.2",
157157
"pyproject-fmt==2.2.1",
158+
"pydantic-settings>=2",
158159
]
159160
[tool.hatch.envs.linting.scripts]
160161
typing = "mypy --config-file=pyproject.toml {args:} ./src/ ./tests/ ./examples/"

src/aleph/sdk/conf.py

+4-4
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,8 @@
77

88
from aleph_message.models import Chain
99
from aleph_message.models.execution.environment import HypervisorType
10-
from pydantic import BaseModel, ConfigDict, Field
11-
from pydantic_settings import BaseSettings
10+
from pydantic import BaseModel, Field
11+
from pydantic_settings import BaseSettings, SettingsConfigDict
1212

1313
from aleph.sdk.types import ChainInfo
1414

@@ -224,7 +224,7 @@ class Settings(BaseSettings):
224224
DNS_STATIC_DOMAIN: ClassVar[str] = "static.public.aleph.sh"
225225
DNS_RESOLVERS: ClassVar[List[str]] = ["9.9.9.9", "1.1.1.1"]
226226

227-
model_config = ConfigDict(
227+
model_config = SettingsConfigDict(
228228
env_prefix="ALEPH_", case_sensitive=False, env_file=".env"
229229
)
230230

@@ -237,7 +237,7 @@ class MainConfiguration(BaseModel):
237237
path: Path
238238
chain: Chain
239239

240-
model_config = ConfigDict(use_enum_values=True)
240+
model_config = SettingsConfigDict(use_enum_values=True)
241241

242242

243243
# Settings singleton

src/aleph/sdk/domain.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -52,11 +52,11 @@ def raise_error(self, status: Dict[str, bool]):
5252
def hostname_from_url(url: Union[HttpUrl, str]) -> Hostname:
5353
"""Extract FQDN from url"""
5454

55-
parsed = urlparse(url)
55+
parsed = urlparse(str(url))
5656
if all([parsed.scheme, parsed.netloc]) is True:
5757
url = parsed.netloc
5858

59-
return Hostname(url)
59+
return Hostname(str(url))
6060

6161

6262
async def get_target_type(fqdn: Hostname) -> Optional[TargetType]:

src/aleph/sdk/vm/cache.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@ def __init__(
7070
)
7171

7272
self.cache = {}
73-
self.api_host = connector_url if connector_url else settings.API_HOST
73+
self.api_host = str(connector_url) if connector_url else settings.API_HOST
7474

7575
async def get(self, key: str) -> Optional[bytes]:
7676
sanitized_key = sanitize_cache_key(key)

tests/unit/aleph_vm_authentication.py

+3-3
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,7 @@ def payload_must_be_hex(cls, value: bytes) -> bytes:
7575
"""Convert the payload from hexadecimal to bytes"""
7676
return bytes_from_hex(value.decode())
7777

78-
@model_validator(mode="after")
78+
@model_validator(mode="after") # type: ignore
7979
def check_expiry(cls, values: SignedPubKeyHeader) -> SignedPubKeyHeader:
8080
"""Check that the token has not expired"""
8181
payload: bytes = values.payload
@@ -87,7 +87,7 @@ def check_expiry(cls, values: SignedPubKeyHeader) -> SignedPubKeyHeader:
8787

8888
return values
8989

90-
@model_validator(mode="after")
90+
@model_validator(mode="after") # type: ignore
9191
def check_signature(cls, values: SignedPubKeyHeader) -> SignedPubKeyHeader:
9292
signature: bytes = values.signature
9393
payload: bytes = values.payload
@@ -262,7 +262,7 @@ async def authenticate_websocket_message(
262262
signed_operation = SignedOperation.model_validate(message["X-SignedOperation"])
263263
if signed_operation.content.domain != domain_name:
264264
logger.debug(
265-
f"Invalid domain '{signed_pubkey.content.domain}' != '{domain_name}'"
265+
f"Invalid domain '{signed_operation.content.domain}' != '{domain_name}'"
266266
)
267267
raise web.HTTPUnauthorized(reason="Invalid domain")
268268
return verify_signed_operation(signed_operation, signed_pubkey)

tests/unit/test_price.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ async def test_get_program_price_valid():
1818
mock_session = make_mock_get_session(expected_response)
1919
async with mock_session:
2020
response = await mock_session.get_program_price("cacacacacacaca")
21-
assert response == PriceResponse(**expected_response)
21+
assert response == PriceResponse(**expected_response) # type: ignore
2222

2323

2424
@pytest.mark.asyncio

0 commit comments

Comments
 (0)