code: def _call_with_selection(func):
      
      wrapped_kwonly_params = [
          param for param in inspect.signature(func).parameters.values()
          if param.kind == param.KEYWORD_ONLY]
      sel_sig = inspect.signature(Selection)
      default_sel_sig = sel_sig.replace(
          parameters=[param.replace(default=None) if param.default is param.empty
                      else param
                      for param in sel_sig.parameters.values()])
  
      @functools.wraps(func)
      def wrapper(*args, **kwargs):
          extra_kw = {param.name: kwargs.pop(param.name)
                      for param in wrapped_kwonly_params if param.name in kwargs}
          ba = default_sel_sig.bind(*args, **kwargs)
          # apply_defaults
          ba.arguments = ChainMap(
              ba.arguments,
              {name: param.default
               for name, param in default_sel_sig.parameters.items()
               if param.default is not param.empty})
          sel = Selection(*ba.args, **ba.kwargs)
          return func(sel, **extra_kw)
  
      wrapper.__signature__ = Signature(
          list(sel_sig.parameters.values()) + wrapped_kwonly_params)
      return wrapper
docs: Decorator that passes a `Selection` built from the non-kwonly args.