Skip to content

Commit 9c73738

Browse files
committed
Make @control decorator work in IDE with python 3.10
1 parent f05d5f4 commit 9c73738

2 files changed

Lines changed: 10 additions & 12 deletions

File tree

sdk/python/packages/flet/pyproject.toml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,8 @@ dependencies = [
1313
"oauthlib >=3.2.2; platform_system != 'Pyodide'",
1414
"httpx >=0.28.1; platform_system != 'Pyodide'",
1515
"repath >=0.9.0",
16-
"msgpack >=1.1.0"
16+
"msgpack >=1.1.0",
17+
"typing-extensions; python_version < '3.11'"
1718
]
1819

1920
[project.urls]

sdk/python/packages/flet/src/flet/controls/base_control.py

Lines changed: 8 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -16,13 +16,10 @@
1616
logger = logging.getLogger("flet")
1717
controls_log = logging.getLogger("flet_controls")
1818

19-
# Try importing `dataclass_transform()` for Python 3.11+, else use a no-op function
20-
if sys.version_info >= (3, 11): # Only use it for Python 3.11+
19+
if sys.version_info >= (3, 11):
2120
from typing import dataclass_transform
2221
else:
23-
24-
def dataclass_transform(): # No-op decorator for older Python versions
25-
return lambda x: x
22+
from typing_extensions import dataclass_transform
2623

2724

2825
if TYPE_CHECKING:
@@ -236,9 +233,9 @@ def will_unmount(self):
236233
def update(self) -> None:
237234
if hasattr(self, "_frozen"):
238235
raise Exception("Frozen control cannot be updated.")
239-
assert self.page, (
240-
f"{self.__class__.__qualname__} Control must be added to the page first"
241-
)
236+
assert (
237+
self.page
238+
), f"{self.__class__.__qualname__} Control must be added to the page first"
242239
self.page.update(self)
243240

244241
async def _invoke_method(
@@ -247,9 +244,9 @@ async def _invoke_method(
247244
arguments: Optional[dict[str, Any]] = None,
248245
timeout: Optional[float] = None,
249246
) -> Any:
250-
assert self.page, (
251-
f"{self.__class__.__qualname__} Control must be added to the page first"
252-
)
247+
assert (
248+
self.page
249+
), f"{self.__class__.__qualname__} Control must be added to the page first"
253250

254251
return await self.page.session.invoke_method(
255252
self._i, method_name, arguments, timeout

0 commit comments

Comments
 (0)