Skip to content

Commit

Permalink
fix backward compatibility of event argument classes
Browse files Browse the repository at this point in the history
  • Loading branch information
falkoschindler committed Feb 10, 2025
1 parent 08f9021 commit f7d3fb7
Show file tree
Hide file tree
Showing 6 changed files with 11 additions and 12 deletions.
3 changes: 2 additions & 1 deletion nicegui/element.py
Original file line number Diff line number Diff line change
Expand Up @@ -380,7 +380,8 @@ def on(self,
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:
Expand Down
4 changes: 2 additions & 2 deletions nicegui/elements/mixins/selectable_element.py
Original file line number Diff line number Diff line change
Expand Up @@ -111,7 +111,7 @@ def _handle_selection_change(self, selected: bool) -> None:
"""
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)
4 changes: 2 additions & 2 deletions nicegui/elements/mixins/value_element.py
Original file line number Diff line number Diff line change
Expand Up @@ -114,8 +114,8 @@ def _handle_value_change(self, value: Any) -> None:
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)

Expand Down
2 changes: 0 additions & 2 deletions nicegui/elements/upload.py
Original file line number Diff line number Diff line change
Expand Up @@ -77,15 +77,13 @@ def handle_uploads(self, uploads: List[UploadFile]) -> None:
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 '',
))
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],
Expand Down
8 changes: 5 additions & 3 deletions nicegui/events.py
Original file line number Diff line number Diff line change
@@ -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,
Expand Down Expand Up @@ -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
Expand Down
2 changes: 0 additions & 2 deletions nicegui/testing/user_interaction.py
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,6 @@ def trigger(self, event: str) -> Self:
events.handle_event(listener.handler, events.GenericEventArguments(
sender=element,
client=self.user.client,
socket_id='', # TODO: can we do better here?
args={},
))
return self
Expand Down Expand Up @@ -93,7 +92,6 @@ def click(self) -> Self:
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
Expand Down

0 comments on commit f7d3fb7

Please sign in to comment.