فهرست منبع

remove pydantic dependency

Falko Schindler 2 سال پیش
والد
کامیت
058fd578d6
8فایلهای تغییر یافته به همراه24 افزوده شده و 70 حذف شده
  1. 2 2
      nicegui/elements/button.py
  2. 2 1
      nicegui/elements/color_picker.py
  3. 2 2
      nicegui/elements/menu_item.py
  4. 1 1
      nicegui/elements/upload.py
  5. 1 1
      nicegui/elements/value_element.py
  6. 15 9
      nicegui/events.py
  7. 1 53
      poetry.lock
  8. 0 1
      pyproject.toml

+ 2 - 2
nicegui/elements/button.py

@@ -24,8 +24,8 @@ class Button(Element):
         self.bind_text_to(self.view, 'label')
         self.bind_text_to(self.view, 'label')
 
 
         def process_event(view, event) -> Optional[bool]:
         def process_event(view, event) -> Optional[bool]:
-            socket = event.get('websocket')
-            return handle_event(on_click, ClickEventArguments(sender=self, socket=socket), update=self.parent_view)
+            arguments = ClickEventArguments(sender=self, socket=event.get('websocket'))
+            return handle_event(on_click, arguments, update=self.parent_view)
 
 
         view.on('click', process_event)
         view.on('click', process_event)
 
 

+ 2 - 1
nicegui/elements/color_picker.py

@@ -21,7 +21,8 @@ class ColorPicker(Element):
             ''')
             ''')
 
 
         def handle_pick(sender, msg: Dict):
         def handle_pick(sender, msg: Dict):
-            return handle_event(on_pick, ColorPickEventArguments(sender=self, color=msg.value), update=self.parent_view)
+            arguments = ColorPickEventArguments(sender=self, socket=msg.websocket, color=msg.value)
+            return handle_event(on_pick, arguments, update=self.parent_view)
         view.name_dict['color_input'].on('change', handle_pick)
         view.name_dict['color_input'].on('change', handle_pick)
         view.name_dict['popup'].value = value
         view.name_dict['popup'].value = value
 
 

+ 2 - 2
nicegui/elements/menu_item.py

@@ -20,8 +20,8 @@ class MenuItem(Element):
         view = jp.QItem(text=text, clickable=True, temp=False)
         view = jp.QItem(text=text, clickable=True, temp=False)
 
 
         def handle_click(view, event) -> Optional[bool]:
         def handle_click(view, event) -> Optional[bool]:
-            socket = event.get('websocket')
-            result = handle_event(on_click, ClickEventArguments(sender=self, socket=socket), update=self.parent_view)
+            arguments = ClickEventArguments(sender=self, socket=event.get('websocket'))
+            result = handle_event(on_click, arguments, update=self.parent_view)
             if auto_close:
             if auto_close:
                 assert isinstance(self.parent_view, jp.QMenu)
                 assert isinstance(self.parent_view, jp.QMenu)
                 self.parent_view.value = False
                 self.parent_view.value = False

+ 1 - 1
nicegui/elements/upload.py

@@ -34,7 +34,7 @@ class Upload(Element):
             for form_data in msg.form_data:
             for form_data in msg.form_data:
                 if form_data.type == 'file':
                 if form_data.type == 'file':
                     files = [base64.b64decode(f.file_content) for f in form_data.files]
                     files = [base64.b64decode(f.file_content) for f in form_data.files]
-                    arguments = UploadEventArguments(sender=self, files=files)
+                    arguments = UploadEventArguments(sender=self, socket=msg.websocket, files=files)
                     if handle_event(self.upload_handler, arguments, update=self.parent_view) is None:
                     if handle_event(self.upload_handler, arguments, update=self.parent_view) is None:
                         page_update = None
                         page_update = None
             return page_update
             return page_update

+ 1 - 1
nicegui/elements/value_element.py

@@ -10,7 +10,7 @@ from .element import Element
 class ValueElement(Element):
 class ValueElement(Element):
     value = BindableProperty(
     value = BindableProperty(
         on_change=lambda sender, value: handle_event(sender.change_handler,
         on_change=lambda sender, value: handle_event(sender.change_handler,
-                                                     ValueChangeEventArguments(sender=sender, value=value),
+                                                     ValueChangeEventArguments(sender=sender, socket=None, value=value),
                                                      update=sender.parent_view))
                                                      update=sender.parent_view))
 
 
     def __init__(self, view: jp.HTMLBaseComponent, *, value: Any, on_change: Optional[Callable]):
     def __init__(self, view: jp.HTMLBaseComponent, *, value: Any, on_change: Optional[Callable]):

+ 15 - 9
nicegui/events.py

@@ -1,9 +1,9 @@
 import traceback
 import traceback
+from dataclasses import dataclass
 from inspect import signature
 from inspect import signature
 from typing import Any, Callable, List, Optional
 from typing import Any, Callable, List, Optional
 
 
 from justpy.htmlcomponents import HTMLBaseComponent
 from justpy.htmlcomponents import HTMLBaseComponent
-from pydantic import BaseModel
 from starlette.websockets import WebSocket
 from starlette.websockets import WebSocket
 
 
 from .elements.element import Element
 from .elements.element import Element
@@ -11,50 +11,57 @@ from .helpers import is_coroutine
 from .task_logger import create_task
 from .task_logger import create_task
 
 
 
 
-class EventArguments(BaseModel):
-    class Config:
-        arbitrary_types_allowed = True
+@dataclass
+class EventArguments:
     sender: Element
     sender: Element
     socket: Optional[WebSocket]
     socket: Optional[WebSocket]
 
 
 
 
+@dataclass
 class ClickEventArguments(EventArguments):
 class ClickEventArguments(EventArguments):
     pass
     pass
 
 
 
 
+@dataclass
 class ColorPickEventArguments(EventArguments):
 class ColorPickEventArguments(EventArguments):
     color: str
     color: str
 
 
 
 
+@dataclass
 class MouseEventArguments(EventArguments):
 class MouseEventArguments(EventArguments):
     type: str
     type: str
     image_x: float
     image_x: float
     image_y: float
     image_y: float
 
 
 
 
+@dataclass
 class UploadEventArguments(EventArguments):
 class UploadEventArguments(EventArguments):
     files: List[bytes]
     files: List[bytes]
 
 
 
 
+@dataclass
 class ValueChangeEventArguments(EventArguments):
 class ValueChangeEventArguments(EventArguments):
     value: Any
     value: Any
 
 
 
 
-class KeyboardAction(BaseModel):
+@dataclass
+class KeyboardAction:
     keypress: bool
     keypress: bool
     keydown: bool
     keydown: bool
     keyup: bool
     keyup: bool
     repeat: bool
     repeat: bool
 
 
 
 
-class KeyboardModifiers(BaseModel):
+@dataclass
+class KeyboardModifiers:
     alt: bool
     alt: bool
     ctrl: bool
     ctrl: bool
     meta: bool
     meta: bool
     shift: bool
     shift: bool
 
 
 
 
-class KeyboardKey(BaseModel):
+@dataclass
+class KeyboardKey:
     name: str
     name: str
     code: str
     code: str
     location: int
     location: int
@@ -211,9 +218,8 @@ class KeyboardKey(BaseModel):
         return self.name == 'F12'
         return self.name == 'F12'
 
 
 
 
+@dataclass
 class KeyEventArguments(EventArguments):
 class KeyEventArguments(EventArguments):
-    class Config:
-        arbitrary_types_allowed = True
     action: KeyboardAction
     action: KeyboardAction
     key: KeyboardKey
     key: KeyboardKey
     modifiers: KeyboardModifiers
     modifiers: KeyboardModifiers

+ 1 - 53
poetry.lock

@@ -491,21 +491,6 @@ category = "main"
 optional = false
 optional = false
 python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
 python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
 
 
-[[package]]
-name = "pydantic"
-version = "1.9.1"
-description = "Data validation and settings management using python type hints"
-category = "main"
-optional = false
-python-versions = ">=3.6.1"
-
-[package.dependencies]
-typing-extensions = ">=3.7.4.3"
-
-[package.extras]
-dotenv = ["python-dotenv (>=0.10.4)"]
-email = ["email-validator (>=1.0.3)"]
-
 [[package]]
 [[package]]
 name = "pygments"
 name = "pygments"
 version = "2.12.0"
 version = "2.12.0"
@@ -790,7 +775,7 @@ testing = ["pytest (>=6)", "pytest-checkdocs (>=2.4)", "pytest-flake8", "pytest-
 [metadata]
 [metadata]
 lock-version = "1.1"
 lock-version = "1.1"
 python-versions = "^3.7"
 python-versions = "^3.7"
-content-hash = "6fcb3bd428c55532ff653366132a33a98207db9dff947fdcefce444138720080"
+content-hash = "24a06d3451f0eb1de85b434d014f84ddee5b86ed21b1f0d5478132309e8af0ac"
 
 
 [metadata.files]
 [metadata.files]
 addict = [
 addict = [
@@ -1214,43 +1199,6 @@ pycparser = [
     {file = "pycparser-2.21-py2.py3-none-any.whl", hash = "sha256:8ee45429555515e1f6b185e78100aea234072576aa43ab53aefcae078162fca9"},
     {file = "pycparser-2.21-py2.py3-none-any.whl", hash = "sha256:8ee45429555515e1f6b185e78100aea234072576aa43ab53aefcae078162fca9"},
     {file = "pycparser-2.21.tar.gz", hash = "sha256:e644fdec12f7872f86c58ff790da456218b10f863970249516d60a5eaca77206"},
     {file = "pycparser-2.21.tar.gz", hash = "sha256:e644fdec12f7872f86c58ff790da456218b10f863970249516d60a5eaca77206"},
 ]
 ]
-pydantic = [
-    {file = "pydantic-1.9.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:c8098a724c2784bf03e8070993f6d46aa2eeca031f8d8a048dff277703e6e193"},
-    {file = "pydantic-1.9.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:c320c64dd876e45254bdd350f0179da737463eea41c43bacbee9d8c9d1021f11"},
-    {file = "pydantic-1.9.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:18f3e912f9ad1bdec27fb06b8198a2ccc32f201e24174cec1b3424dda605a310"},
-    {file = "pydantic-1.9.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c11951b404e08b01b151222a1cb1a9f0a860a8153ce8334149ab9199cd198131"},
-    {file = "pydantic-1.9.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:8bc541a405423ce0e51c19f637050acdbdf8feca34150e0d17f675e72d119580"},
-    {file = "pydantic-1.9.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:e565a785233c2d03724c4dc55464559639b1ba9ecf091288dd47ad9c629433bd"},
-    {file = "pydantic-1.9.1-cp310-cp310-win_amd64.whl", hash = "sha256:a4a88dcd6ff8fd47c18b3a3709a89adb39a6373f4482e04c1b765045c7e282fd"},
-    {file = "pydantic-1.9.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:447d5521575f18e18240906beadc58551e97ec98142266e521c34968c76c8761"},
-    {file = "pydantic-1.9.1-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:985ceb5d0a86fcaa61e45781e567a59baa0da292d5ed2e490d612d0de5796918"},
-    {file = "pydantic-1.9.1-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:059b6c1795170809103a1538255883e1983e5b831faea6558ef873d4955b4a74"},
-    {file = "pydantic-1.9.1-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:d12f96b5b64bec3f43c8e82b4aab7599d0157f11c798c9f9c528a72b9e0b339a"},
-    {file = "pydantic-1.9.1-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:ae72f8098acb368d877b210ebe02ba12585e77bd0db78ac04a1ee9b9f5dd2166"},
-    {file = "pydantic-1.9.1-cp36-cp36m-win_amd64.whl", hash = "sha256:79b485767c13788ee314669008d01f9ef3bc05db9ea3298f6a50d3ef596a154b"},
-    {file = "pydantic-1.9.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:494f7c8537f0c02b740c229af4cb47c0d39840b829ecdcfc93d91dcbb0779892"},
-    {file = "pydantic-1.9.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f0f047e11febe5c3198ed346b507e1d010330d56ad615a7e0a89fae604065a0e"},
-    {file = "pydantic-1.9.1-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:969dd06110cb780da01336b281f53e2e7eb3a482831df441fb65dd30403f4608"},
-    {file = "pydantic-1.9.1-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:177071dfc0df6248fd22b43036f936cfe2508077a72af0933d0c1fa269b18537"},
-    {file = "pydantic-1.9.1-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:9bcf8b6e011be08fb729d110f3e22e654a50f8a826b0575c7196616780683380"},
-    {file = "pydantic-1.9.1-cp37-cp37m-win_amd64.whl", hash = "sha256:a955260d47f03df08acf45689bd163ed9df82c0e0124beb4251b1290fa7ae728"},
-    {file = "pydantic-1.9.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:9ce157d979f742a915b75f792dbd6aa63b8eccaf46a1005ba03aa8a986bde34a"},
-    {file = "pydantic-1.9.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:0bf07cab5b279859c253d26a9194a8906e6f4a210063b84b433cf90a569de0c1"},
-    {file = "pydantic-1.9.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5d93d4e95eacd313d2c765ebe40d49ca9dd2ed90e5b37d0d421c597af830c195"},
-    {file = "pydantic-1.9.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1542636a39c4892c4f4fa6270696902acb186a9aaeac6f6cf92ce6ae2e88564b"},
-    {file = "pydantic-1.9.1-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:a9af62e9b5b9bc67b2a195ebc2c2662fdf498a822d62f902bf27cccb52dbbf49"},
-    {file = "pydantic-1.9.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:fe4670cb32ea98ffbf5a1262f14c3e102cccd92b1869df3bb09538158ba90fe6"},
-    {file = "pydantic-1.9.1-cp38-cp38-win_amd64.whl", hash = "sha256:9f659a5ee95c8baa2436d392267988fd0f43eb774e5eb8739252e5a7e9cf07e0"},
-    {file = "pydantic-1.9.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:b83ba3825bc91dfa989d4eed76865e71aea3a6ca1388b59fc801ee04c4d8d0d6"},
-    {file = "pydantic-1.9.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:1dd8fecbad028cd89d04a46688d2fcc14423e8a196d5b0a5c65105664901f810"},
-    {file = "pydantic-1.9.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:02eefd7087268b711a3ff4db528e9916ac9aa18616da7bca69c1871d0b7a091f"},
-    {file = "pydantic-1.9.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7eb57ba90929bac0b6cc2af2373893d80ac559adda6933e562dcfb375029acee"},
-    {file = "pydantic-1.9.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:4ce9ae9e91f46c344bec3b03d6ee9612802682c1551aaf627ad24045ce090761"},
-    {file = "pydantic-1.9.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:72ccb318bf0c9ab97fc04c10c37683d9eea952ed526707fabf9ac5ae59b701fd"},
-    {file = "pydantic-1.9.1-cp39-cp39-win_amd64.whl", hash = "sha256:61b6760b08b7c395975d893e0b814a11cf011ebb24f7d869e7118f5a339a82e1"},
-    {file = "pydantic-1.9.1-py3-none-any.whl", hash = "sha256:4988c0f13c42bfa9ddd2fe2f569c9d54646ce84adc5de84228cfe83396f3bd58"},
-    {file = "pydantic-1.9.1.tar.gz", hash = "sha256:1ed987c3ff29fff7fd8c3ea3a3ea877ad310aae2ef9889a119e22d3f2db0691a"},
-]
 pygments = [
 pygments = [
     {file = "Pygments-2.12.0-py3-none-any.whl", hash = "sha256:dc9c10fb40944260f6ed4c688ece0cd2048414940f1cea51b8b226318411c519"},
     {file = "Pygments-2.12.0-py3-none-any.whl", hash = "sha256:dc9c10fb40944260f6ed4c688ece0cd2048414940f1cea51b8b226318411c519"},
     {file = "Pygments-2.12.0.tar.gz", hash = "sha256:5eb116118f9612ff1ee89ac96437bb6b49e8f04d8a13b514ba26f620208e26eb"},
     {file = "Pygments-2.12.0.tar.gz", hash = "sha256:5eb116118f9612ff1ee89ac96437bb6b49e8f04d8a13b514ba26f620208e26eb"},

+ 0 - 1
pyproject.toml

@@ -19,7 +19,6 @@ docutils = "^0.17.1"
 asttokens = "^2.0.5"
 asttokens = "^2.0.5"
 uvicorn = "0.17.6"
 uvicorn = "0.17.6"
 watchgod = "^0.7"
 watchgod = "^0.7"
-pydantic = "^1.8.2"
 websockets = "10.3"
 websockets = "10.3"
 httpx = "^0.23.0"
 httpx = "^0.23.0"