Skip to content

filechooser: set _handle_selection as attribute#570

Open
ghost wants to merge 1 commit intomasterfrom
unknown repository
Open

filechooser: set _handle_selection as attribute#570
ghost wants to merge 1 commit intomasterfrom
unknown repository

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.

1 participant

Comments