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

Commits on Jul 5, 2020

  1. filechooser: set _handle_selection as attribute

    _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.
    Francisco Bustos authored and Francisco Bustos committed Jul 5, 2020
    Configuration menu
    Copy the full SHA
    2c2d0b0 View commit details
    Browse the repository at this point in the history