diff options
author | Kostis Anagnostopoulos <ankostis@gmail.com> | 2016-12-08 14:19:37 +0100 |
---|---|---|
committer | Kostis Anagnostopoulos <ankostis@gmail.com> | 2016-12-08 14:42:53 +0100 |
commit | f858c449a993124939e9082dcea796c5a13d0a74 (patch) | |
tree | ad9ae90ad4d9462e6c753ffa3f3fddc7c4472628 /git/cmd.py | |
parent | 66306f1582754ca4527b76f09924820dc9c85875 (diff) | |
download | gitpython-f858c449a993124939e9082dcea796c5a13d0a74.tar.gz |
style(cmd): pythonize cmd-args filtering for PY26, improve docstring
Apply codereview comments of #541.
Diffstat (limited to 'git/cmd.py')
-rw-r--r-- | git/cmd.py | 35 |
1 files changed, 19 insertions, 16 deletions
@@ -822,27 +822,30 @@ class Git(LazyMixin): is realized as non-existent :param kwargs: - is a dict of keyword arguments. - This function accepts the same optional keyword arguments - as execute(). - - ``Examples``:: + It contains key-values for the following: + - the :meth:`execute()` kwds, as listed in :var:`execute_kwargs`; + - "command options" to be converted by :meth:`transform_kwargs()`; + - the `'insert_kwargs_after'` key which its value must match one of ``*args``, + and any cmd-options will be appended after the matched arg. + + Examples:: + git.rev_list('master', max_count=10, header=True) + + turns into:: + + git rev-list max-count 10 --header master :return: Same as ``execute``""" # Handle optional arguments prior to calling transform_kwargs # otherwise these'll end up in args, which is bad. - _kwargs = dict() - for kwarg in execute_kwargs: - try: - _kwargs[kwarg] = kwargs.pop(kwarg) - except KeyError: - pass + exec_kwargs = dict((k, v) for k, v in kwargs.items() if k in execute_kwargs) + opts_kwargs = dict((k, v) for k, v in kwargs.items() if k not in execute_kwargs) - insert_after_this_arg = kwargs.pop('insert_kwargs_after', None) + insert_after_this_arg = opts_kwargs.pop('insert_kwargs_after', None) # Prepare the argument list - opt_args = self.transform_kwargs(**kwargs) + opt_args = self.transform_kwargs(**opts_kwargs) ext_args = self.__unpack_args([a for a in args if a is not None]) if insert_after_this_arg is None: @@ -851,11 +854,11 @@ class Git(LazyMixin): try: index = ext_args.index(insert_after_this_arg) except ValueError: - raise ValueError("Couldn't find argument '%s' in args %s to insert kwargs after" + raise ValueError("Couldn't find argument '%s' in args %s to insert cmd options after" % (insert_after_this_arg, str(ext_args))) # end handle error args = ext_args[:index + 1] + opt_args + ext_args[index + 1:] - # end handle kwargs + # end handle opts_kwargs call = [self.GIT_PYTHON_GIT_EXECUTABLE] @@ -870,7 +873,7 @@ class Git(LazyMixin): call.append(dashify(method)) call.extend(args) - return self.execute(call, **_kwargs) + return self.execute(call, **exec_kwargs) def _parse_object_header(self, header_line): """ |