Pārlūkot izejas kodu

fix backward compatibility of event argument classes

Falko Schindler 3 mēneši atpakaļ
vecāks
revīzija
f7d3fb7b3d

+ 2 - 1
nicegui/element.py

@@ -380,7 +380,8 @@ class Element(Visibility):
     def _handle_event(self, sid: str, msg: Dict) -> None:
         listener = self._event_listeners[msg['listener_id']]
         storage.request_contextvar.set(listener.request)
-        args = events.GenericEventArguments(sender=self, client=self.client, socket_id=sid, args=msg['args'])
+        args = events.GenericEventArguments(sender=self, client=self.client, args=msg['args'])
+        args.socket_id = sid
         events.handle_event(listener.handler, args)
 
     def update(self) -> None:

+ 2 - 2
nicegui/elements/mixins/selectable_element.py

@@ -111,7 +111,7 @@ class SelectableElement(Element):
         """
         self._props['selected'] = selected
         self.update()
-        args = ValueChangeEventArguments(sender=self, client=self.client, socket_id=self._current_socket_id,
-                                         value=self._props['selected'])
+        args = ValueChangeEventArguments(sender=self, client=self.client, value=self._props['selected'])
+        args.socket_id = self._current_socket_id
         for handler in self._selection_change_handlers:
             handle_event(handler, args)

+ 2 - 2
nicegui/elements/mixins/value_element.py

@@ -114,8 +114,8 @@ class ValueElement(Element):
         self._props[self.VALUE_PROP] = self._value_to_model_value(value)
         if self._send_update_on_value_change:
             self.update()
-        args = ValueChangeEventArguments(sender=self, client=self.client, socket_id=self._current_socket_id,
-                                         value=self._value_to_event_value(value))
+        args = ValueChangeEventArguments(sender=self, client=self.client, value=self._value_to_event_value(value))
+        args.socket_id = self._current_socket_id
         for handler in self._change_handlers:
             handle_event(handler, args)
 

+ 0 - 2
nicegui/elements/upload.py

@@ -77,7 +77,6 @@ class Upload(DisableableElement, component='upload.js'):
                 handle_event(upload_handler, UploadEventArguments(
                     sender=self,
                     client=self.client,
-                    socket_id='',  # TODO: can we do better here?
                     content=upload.file,
                     name=upload.filename or '',
                     type=upload.content_type or '',
@@ -85,7 +84,6 @@ class Upload(DisableableElement, component='upload.js'):
         multi_upload_args = MultiUploadEventArguments(
             sender=self,
             client=self.client,
-            socket_id='',  # TODO: can we do better here?
             contents=[upload.file for upload in uploads],
             names=[upload.filename or '' for upload in uploads],
             types=[upload.content_type or '' for upload in uploads],

+ 5 - 3
nicegui/events.py

@@ -1,7 +1,7 @@
 from __future__ import annotations
 
 from contextlib import contextmanager, nullcontext
-from dataclasses import dataclass
+from dataclasses import dataclass, field
 from inspect import Parameter, signature
 from typing import (
     TYPE_CHECKING,
@@ -46,12 +46,14 @@ class ObservableChangeEventArguments(EventArguments):
 class UiEventArguments(EventArguments):
     sender: Element
     client: Client
-    socket_id: str
+    socket_id: str = field(init=False, default='')
 
     @classmethod
     def from_generic_event(cls, e: GenericEventArguments, **kwargs: Any) -> Self:
         """Create new event arguments from ``GenericEventArguments``."""
-        return cls(sender=e.sender, client=e.client, socket_id=e.socket_id, **kwargs)
+        ui_event_arguments = cls(sender=e.sender, client=e.client, **kwargs)
+        ui_event_arguments.socket_id = e.socket_id
+        return ui_event_arguments
 
     @property
     @contextmanager

+ 0 - 2
nicegui/testing/user_interaction.py

@@ -50,7 +50,6 @@ class UserInteraction(Generic[T]):
                     events.handle_event(listener.handler, events.GenericEventArguments(
                         sender=element,
                         client=self.user.client,
-                        socket_id='',  # TODO: can we do better here?
                         args={},
                     ))
         return self
@@ -93,7 +92,6 @@ class UserInteraction(Generic[T]):
                     events.handle_event(listener.handler, events.GenericEventArguments(
                         sender=element,
                         client=self.user.client,
-                        socket_id='',  # TODO: can we do better here?
                         args=args,
                     ))
         return self