Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

filechooser: set _handle_selection as attribute #570

Open
wants to merge 1 commit into
base: master
Choose a base branch
from
Open

filechooser: set _handle_selection as attribute #570

wants to merge 1 commit into from

Conversation

ghost
Copy link

@ghost ghost commented Jul 5, 2020

_handle_selection was defined as a placeholder for returning the
selection from the activity result. It was used as a fallback when
on_selection was not provided.

There's a side effect by doing this: when on_selection is not defined,
the self._handle_selection attribute overwrites the
_handle_selection method. Given that this is a file chooser
implementation, I think it's necessary to have a callback when a file is
chosen by the user. With the current implementation, if the user does
not pass an on_selection callback, no error is raised.

The solution is to let _handle_selection as an attribute and remove
the static method. This way it is not overwritten and a KeyError
exception is raised if on_selection is not provided.

_handle_selection was defined as a placeholder for returning the
selection from the activity result. It was used as a fallback when
"on_selection" was not provided.

There is a side effect by doing this: when "on_selection" is not
defined, the self._handle_selection attribute overwrites the
_handle_selection method. As an example, the following code will print
"True", which is practically the same thing that kwargs.pop() does if
the second argument provided to it is None:

```
def _handle_selection(selection):
    return selection

kwargs = {}
_handle_selection = kwargs.pop("on_selection", _handle_selection)

print(_handle_selection is None)
```

The reason I'm not using the second argument of kwargs.pop() as None in
this commit is because I think it's correct to raise a KeyError when
"on_selection" is not defined. Given that this is a file chooser
implementation, it's necessary to have a callback when a file is chosen
by the user, otherwise an error should be raised.

The solution is to let _handle_selection as an attribute and remove the
static method. This way _handle_selection is not overwritten and a
KeyError exception is be raised if "on_selection" is not provided.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

0 participants