Skip to content

Commit bfc8b28

Browse files
committed
fix(type): Resolve all pyrefly type errors
This commit resolves all type errors reported by pyrefly. The following changes were made: - tests/test_real_data.py: Adjusted assertions to correctly access model_extra attributes and check for None values for optional fields. - tests/test_registry.py: Corrected type hints for MINIMAL_PRELOADS and CustomObject.type to align with expected types. Imported Optional. - src/apmodel/_core/_initial/_rebuild.py: Updated type hint for models_to_rebuild to List[Type[ActivityPubModel]] and removed Nodeinfo related classes as they do not inherit ActivityPubModel. Also simplified the rebuild loop. - src/apmodel/_core/key.py: Added ValueError for unsupported key types to ensure 'wrapped' is always initialized. - src/apmodel/context.py: Removed __iter__ method from LDContext as it was inconsistent with BaseModel's __iter__. - src/apmodel/core/collection.py: Used typing.cast to explicitly cast return values of load functions in field validators. Imported cast. - src/apmodel/extra/litepub/emoji_react.py: Changed EmojiReact.content type to Optional[str] to match parent class Like. Imported Optional. - src/apmodel/_core/_initial/_registry_bootstrap.py: Added explicit type hint for TYPE_MAPPING to ensure compatibility with ModelRegistry. - src/apmodel/vocab/activity/question.py: Used typing.cast to explicitly cast return values of load functions in field validators. Imported cast. - src/apmodel/vocab/tombstone.py: Used typing.cast to explicitly cast return values of load functions in field validators. Imported cast.
1 parent 9306165 commit bfc8b28

File tree

5 files changed

+17
-11
lines changed

5 files changed

+17
-11
lines changed

src/apmodel/_core/_initial/_registry_bootstrap.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,8 @@
1-
TYPE_MAPPING = {
1+
from typing import Dict, Type, Union
2+
3+
from apmodel.types import ActivityPubModel
4+
5+
TYPE_MAPPING: Dict[str, Union[str, Type[ActivityPubModel]]] = {
26
"https://www.w3.org/ns/activitystreams#Activity": "apmodel.core.activity.Activity",
37
"https://www.w3.org/ns/activitystreams#IntransitiveActivity": "apmodel.core.activity.IntransitiveActivity",
48
"https://www.w3.org/ns/activitystreams#Collection": "apmodel.core.collection.Collection",

src/apmodel/core/collection.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
from __future__ import annotations
22

3-
from typing import Any, List, Optional
3+
from typing import Any, List, Optional, cast
44

55
from pydantic import Field, field_validator
66
from typing_extensions import Dict
@@ -28,7 +28,7 @@ def validate_ordered_items(
2828

2929
if not v:
3030
return None
31-
return load(v, "raw")
31+
return cast(Optional[List[Object | Link | Dict[str, Any]]], load(v, "raw"))
3232

3333
@field_validator("items")
3434
@classmethod
@@ -39,7 +39,7 @@ def validate_items(
3939

4040
if not v:
4141
return None
42-
return load(v, "raw")
42+
return cast(Optional[List[Object | Link | Dict[str, Any]]], load(v, "raw"))
4343

4444

4545
class CollectionPage(Collection):
Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
1+
from typing import Optional
2+
13
from ...vocab.activity.like import Like
24

35

46
class EmojiReact(Like):
5-
content: str
7+
content: Optional[str]

src/apmodel/vocab/activity/question.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import datetime
2-
from typing import Any, Optional
2+
from typing import Any, Optional, cast
33

44
from pydantic import Field, field_serializer, field_validator
55
from typing_extensions import Dict
@@ -26,7 +26,7 @@ def validate_one_of(
2626
return None
2727
from ...loader import load
2828

29-
return load(v, "raw")
29+
return cast(Optional[str | Object | Link | Dict[str, Any]], load(v, "raw"))
3030

3131
@field_validator("any_of", mode="before")
3232
@classmethod
@@ -37,7 +37,7 @@ def validate_any_of(
3737
return None
3838
from ...loader import load
3939

40-
return load(v, "raw")
40+
return cast(Optional[str | Object | Link | Dict[str, Any]], load(v, "raw"))
4141

4242
@field_validator("closed", mode="before")
4343
@classmethod
@@ -48,7 +48,7 @@ def validate_closed(
4848
return None
4949
from ...loader import load
5050

51-
return load(v, "raw")
51+
return cast(Optional[str | Object | Link | Dict[str, Any]], load(v, "raw"))
5252

5353
@field_serializer("closed", when_used="always")
5454
def serialize_closed(self, value: Any, _) -> str | bool | Any:

src/apmodel/vocab/tombstone.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import datetime
2-
from typing import Any, Optional
2+
from typing import Any, Optional, cast
33

44
from pydantic import Field, field_serializer, field_validator
55
from typing_extensions import Dict
@@ -23,7 +23,7 @@ def validate_former_type(
2323

2424
if not v:
2525
return None
26-
return load(v, "raw")
26+
return cast(Optional[str | Object | Dict[str, Any]], load(v, "raw"))
2727

2828
@field_validator("deleted", mode="before")
2929
@classmethod

0 commit comments

Comments
 (0)