tree 4a4de2b1539c340e0204b4b4fff3cb912cc48534
parent d4503990041e0d4164a6206d141c459caa0fde74
author C. Michael Pilato <cmpilato@apache.org> 1597760575 +0000
committer C. Michael Pilato <cmpilato@apache.org> 1597760575 +0000

swig-py: Allow SubversionException to add attributes

A C API function can simultaneously return an error plus additional
non-error information.  But in Python, returning an error (that is,
raising an exception) and returning (as a function return value) other
non-error information are somewhat mutually exclusive.  With this
patch, we introduce a new set of typemaps to allow the bindings code
to attach any non-error information returned from an errorful C API
function as attributes to the raised exception so that callers can
access everything the C API returned.

[in subversion/bindings/swig/]

* include/svn_types.swg
  (typemap(out) svn_error_t * SVN_ERR_WITH_ATTRS,
   typemap(ret) svn_error_t * SVN_ERR_WITH_ATTRS):
    New typemaps to all wrapper functions to use the attributes-on-
    exception-objects feature.  With these typemaps, the argout
    typemaps can use the status code of the subversion error 'apr_err'
    and the exception instance object 'exc_ob'.

* python/libsvn_swig_py/swigutil_py.h, python/libsvn_swig_py/swigutil_py.c
  (svn_swig_py_build_svn_exception): New function, abstracted from...
  (svn_swig_py_svn_exception): ...this, which now uses
    svn_swig_py_build_svn_exception() to build the exception.

* svn_fs.i
  (typemap(argout) (const char **conflict_p, svn_revnum_t *new_rev)):
    Removed.  This reverts the behavor that svn.fs.commit_txn()
    always returns a 2-tuple of which the first item is always None.
  (typemap(argout) (const char **conflict_p)):
    New custom typemap to add the conflict path as an attibute to the
    exception instance.  This applies to svn_fs_merge(),
    svn_fs_commit_txn() and svn_repos_fs_commit_txn().
  (typemap(argout) (svn_revnum_t *new_rev)):
    New custom typemap to add the created revision as an attibute to
    the exception instance.  This applies to svn_fs_commit_txn() and
    svn_repos_fs_commit_txn().
  (): Apply the 'SVN_ERR_WITH_ATTRS' typemap to svn_fs_merge()
    and svn_fs_commit_txn().

* svn_repos.i
  (): Apply the 'SVN_ERR_WITH_ATTRS' typemap to svn_repos_fs_merge().

Patch by: Yasuhito FUTATSUKI <futatuki at yf.bsdclub.org>
          (Tweaked by me.)


git-svn-id: https://svn.apache.org/repos/asf/subversion/trunk@1880967 13f79535-47bb-0310-9956-ffa450edef68
