Skip to content

Commit cd28efe

Browse files
Use pydantic v1 shim for messages models to eliminate update_forward_refs warnings (#2108)
* Replace deprecated update_forward_refs() with version-conditional model_rebuild() Use model_rebuild() when running under pydantic v2, fall back to update_forward_refs() for pydantic v1 compatibility. This eliminates PydanticDeprecatedSince20 warnings in downstream projects using pydantic v2. Co-Authored-By: Itamar Hartstein <haritamar@gmail.com> * Use pydantic_shim for BaseModel in messages package Switch all messages modules from 'from pydantic import BaseModel' to 'from elementary.utils.pydantic_shim import BaseModel'. This uses the existing v1 shim so update_forward_refs() is the native v1 API call and no PydanticDeprecatedSince20 warnings are emitted under pydantic v2. Co-Authored-By: Itamar Hartstein <haritamar@gmail.com> * Fix import sorting for isort --profile black Co-Authored-By: Itamar Hartstein <haritamar@gmail.com> * Convert remaining from pydantic import BaseModel to use pydantic_shim Co-Authored-By: Itamar Hartstein <haritamar@gmail.com> * Fix isort ordering for pydantic_shim imports Co-Authored-By: Itamar Hartstein <haritamar@gmail.com> --------- Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com> Co-authored-by: Itamar Hartstein <haritamar@gmail.com>
1 parent be75349 commit cd28efe

10 files changed

Lines changed: 11 additions & 15 deletions

File tree

elementary/clients/slack/slack_message_builder.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
from enum import Enum
22
from typing import List, Optional, Union
33

4-
from pydantic import BaseModel
54
from slack_sdk.models.blocks import HeaderBlock, SectionBlock
65

76
from elementary.clients.slack.schema import SlackBlocksType, SlackMessageSchema
87
from elementary.utils.json_utils import unpack_and_flatten_str_to_list
8+
from elementary.utils.pydantic_shim import BaseModel
99

1010

1111
class OptionSchema(BaseModel):

elementary/messages/blocks.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,10 @@
11
from enum import Enum
22
from typing import Any, Dict, List, Optional, Sequence, Union
33

4-
from pydantic import BaseModel
54
from typing_extensions import Literal
65

6+
from elementary.utils.pydantic_shim import BaseModel
7+
78

89
class Icon(Enum):
910
RED_TRIANGLE = "red_triangle"
@@ -184,5 +185,4 @@ class ExpandableBlock(BaseBlock):
184185
"ExpandableBlock",
185186
]
186187

187-
# Update forward references for recursive types
188188
ExpandableBlock.update_forward_refs()

elementary/messages/formats/block_kit.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
import json
22
from typing import Any, Callable, List, Optional, Tuple
33

4-
from pydantic import BaseModel
54
from slack_sdk.models import blocks as slack_blocks
65
from tabulate import tabulate
76

@@ -31,6 +30,7 @@
3130
)
3231
from elementary.messages.formats.unicode import ICON_TO_UNICODE
3332
from elementary.messages.message_body import Color, MessageBlock, MessageBody
33+
from elementary.utils.pydantic_shim import BaseModel
3434

3535
COLOR_MAP = {
3636
Color.RED: "#ff0000",

elementary/messages/message_body.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,6 @@
11
from enum import Enum
22
from typing import List, Optional, Union
33

4-
from pydantic import BaseModel
5-
64
from elementary.messages.blocks import (
75
ActionsBlock,
86
CodeBlock,
@@ -13,6 +11,7 @@
1311
LinesBlock,
1412
TableBlock,
1513
)
14+
from elementary.utils.pydantic_shim import BaseModel
1615

1716

1817
class Color(Enum):

elementary/messages/messaging_integrations/base_messaging_integration.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,12 @@
22
from datetime import datetime
33
from typing import Any, Generic, Optional, TypeVar
44

5-
from pydantic import BaseModel
6-
75
from elementary.messages.message_body import MessageBody
86
from elementary.messages.messaging_integrations.exceptions import (
97
MessageIntegrationReplyNotSupportedError,
108
)
119
from elementary.utils.log import get_logger
10+
from elementary.utils.pydantic_shim import BaseModel
1211

1312
logger = get_logger(__name__)
1413

elementary/messages/messaging_integrations/empty_message_context.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
from pydantic import BaseModel
1+
from elementary.utils.pydantic_shim import BaseModel
22

33

44
class EmptyMessageContext(BaseModel):

elementary/messages/messaging_integrations/slack_web.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22
import time
33
from typing import Any, Dict, Iterator, Optional
44

5-
from pydantic import BaseModel
65
from ratelimit import limits, sleep_and_retry
76
from slack_sdk import WebClient
87
from slack_sdk.errors import SlackApiError
@@ -23,6 +22,7 @@
2322
)
2423
from elementary.tracking.tracking_interface import Tracking
2524
from elementary.utils.log import get_logger
25+
from elementary.utils.pydantic_shim import BaseModel
2626

2727
logger = get_logger(__name__)
2828

elementary/monitor/alerts/alert_messages/builder.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,6 @@
11
from datetime import timedelta
22
from typing import Any, Dict, List, Literal, Optional, Sequence, Tuple, Union
33

4-
from pydantic import BaseModel
5-
64
from elementary.messages.block_builders import (
75
BoldTextBlock,
86
BoldTextLineBlock,
@@ -51,6 +49,7 @@
5149
from elementary.monitor.data_monitoring.alerts.integrations.utils.report_link import (
5250
ReportLinkData,
5351
)
52+
from elementary.utils.pydantic_shim import BaseModel
5453

5554
AlertType = Union[
5655
TestAlertModel,

elementary/monitor/data_monitoring/alerts/integrations/slack/message_builder.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,8 @@
11
from typing import Optional
22

3-
from pydantic import BaseModel
4-
53
from elementary.clients.slack.schema import SlackBlocksType, SlackMessageSchema
64
from elementary.clients.slack.slack_message_builder import SlackMessageBuilder
5+
from elementary.utils.pydantic_shim import BaseModel
76

87

98
class PreviewIsTooLongError(Exception):

tests/unit/messages/messaging_integrations/test_mapped.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33
from unittest.mock import MagicMock
44

55
import pytest
6-
from pydantic import BaseModel
76

87
from elementary.messages.blocks import HeaderBlock
98
from elementary.messages.message_body import MessageBody
@@ -15,6 +14,7 @@
1514
MessagingIntegrationError,
1615
)
1716
from elementary.messages.messaging_integrations.mapped import MappedMessagingIntegration
17+
from elementary.utils.pydantic_shim import BaseModel
1818

1919

2020
class MockMessageContext(BaseModel):

0 commit comments

Comments
 (0)