Bladeren bron

remove pydantic dependency

Falko Schindler 2 jaren geleden
bovenliggende
commit
058fd578d6

+ 2 - 2
nicegui/elements/button.py

@@ -24,8 +24,8 @@ class Button(Element):
         self.bind_text_to(self.view, 'label')
 
         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)
 

+ 2 - 1
nicegui/elements/color_picker.py

@@ -21,7 +21,8 @@ class ColorPicker(Element):
             ''')
 
         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['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)
 
         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:
                 assert isinstance(self.parent_view, jp.QMenu)
                 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:
                 if form_data.type == 'file':
                     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:
                         page_update = None
             return page_update

+ 1 - 1
nicegui/elements/value_element.py

@@ -10,7 +10,7 @@ from .element import Element
 class ValueElement(Element):
     value = BindableProperty(
         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))
 
     def __init__(self, view: jp.HTMLBaseComponent, *, value: Any, on_change: Optional[Callable]):

+ 15 - 9
nicegui/events.py

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

+ 1 - 53
poetry.lock

@@ -491,21 +491,6 @@ category = "main"
 optional = false
 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]]
 name = "pygments"
 version = "2.12.0"
@@ -790,7 +775,7 @@ testing = ["pytest (>=6)", "pytest-checkdocs (>=2.4)", "pytest-flake8", "pytest-
 [metadata]
 lock-version = "1.1"
 python-versions = "^3.7"
-content-hash = "6fcb3bd428c55532ff653366132a33a98207db9dff947fdcefce444138720080"
+content-hash = "24a06d3451f0eb1de85b434d014f84ddee5b86ed21b1f0d5478132309e8af0ac"
 
 [metadata.files]
 addict = [
@@ -1214,43 +1199,6 @@ pycparser = [
     {file = "pycparser-2.21-py2.py3-none-any.whl", hash = "sha256:8ee45429555515e1f6b185e78100aea234072576aa43ab53aefcae078162fca9"},
     {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 = [
     {file = "Pygments-2.12.0-py3-none-any.whl", hash = "sha256:dc9c10fb40944260f6ed4c688ece0cd2048414940f1cea51b8b226318411c519"},
     {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"
 uvicorn = "0.17.6"
 watchgod = "^0.7"
-pydantic = "^1.8.2"
 websockets = "10.3"
 httpx = "^0.23.0"