futatuki in subversion

On branch swig-py3: Fix test after merging shelving-v3

* subversion/bindings/swig/python/tests/

(SubversionClientTestCase.test_shelf): Relax assert condition to be suitable

for changed behavior of shelved_func callback in


On branch swig-py3: avoid crash when status is NULL

* subversion/bindings/swig/python/libsvn_swig_py/swigutil_py.c

(svn_swig_py_client_status_func) Allow NULL for status.

On branch swig-py3: Catchup to trunk @r1862753.
  1. … 166 more files in changeset.
On branch swig-py3: Unify error message between py2 and py3

* subversion/bindings/swig/python/libsvn_swig_py/swigutil_py.c

(read_handler_pyio): Remove IS_PY3 conditional by unifying error message

On branch swig-py3: Allow str return to svn_client_get_commit_log3_t callback

* subversion/bindings/swig/python/libsvn_swig_py/swigutil_py.c:

(svn_swig_py_get_commit_log_func): Allow result as unicode object

* subversion/bindings/swig/python/tests/

(SubversionClientTestCase.make_log_message_func): New helper function


New test case


New test case

On branch swig-py3: Follow-up to r1853592: Don't pass '-DPY3' argument to swig

PY3 macro introduced on r1849784 for swig context no longer used.

* build/ac-macros/swig.m4: Revert r1849784

On branch swig-py3: accept both of bytes/str for input char * arguments

* Replace typemap(in) for char * using 'parse' modifier with one using

function allows both of bytes/str in py2/py3 in libsvn_swig_py library

* Fix functions to convert Python objects into char pointer to accept

both of bytes/str object in py2/py3

* Fix to accept None as representation of NULL value on conversion

prop dict into apr_hash_t * and apr_array_header_t * of svn_props_t *

[In subversion/bindings/swig]

* core.i (%typemap(in) (const char *data, apr_size_t *len): Allow str

as well as bytes for data argment of svn_stream_write()

* include/svn_global.swg

(remove)(%typemap(in) char *, char const *, char * const,

char const * const): Move this typemap into include/svn_strings as

typemap (in) IN_STRING

* include/svn_string.swg (new)(%typemap(in) IN_STRING): replacement of

%typemap(in) char *, char const *, char * const, char const * const.

actual processing code is moved new svn_swig_py_string_to_cstring()

function in python/libsvn_swig_py/swigutil_py.c

* include/svn_types.swg (%typemap(in) const char *MAY_BE_NULL):

Move processing code into new svn_swig_py_string_to_cstring() function

in python/libsvn_swig_py/swigutil_py.c

* python/libsvn_swig_py/swigutil_py.c

(svn_swig_py_string_to_cstring): New function to convert Python

bytes or str into const char *, with better TypeError exception message

(svn_swig_py_string_type_exception): New function to construct

TypeError exception for new make_string_from_ob_maybe_null() function

(make_string_from_ob, make_svn_string_from_ob):

- Allow str as well as bytes for ob

- Don't raise TypeError exception because all callers don't expect it

(make_string_from_ob_maybe_null, make_svn_string_from_ob_maybe_null):

New function same as make_string_from_ob() and make_svn_string_fromob()

but allows None input represents NULL value and raise TypeError

if input value don't have appropriate type

(svn_swig_py_stringhash_from_dict, svn_swig_py_mergeinfo_from_dict,

svn_swig_py_proparray_from_dict, svn_swig_py_prophash_from_dict,


svn_swig_py_struct_ptr_hash_from_dict): separate check of key conversion

result and value conversion result

(svn_swig_py_proparray_from_dict, svn_swig_py_prophash_from_dict):

allow NULL for prop values


- Allow str as well as bytes for source argument


- Allow str as well as bytes for py_file argument as file path


- Use new function make_string_from_ob_maybe_null() instead of

make_string_from_ob() to check TypeError

- Report Python exception caused by Python callback function as

callback exception error

* python/libsvn_swig_py/swigutil_py.h

Expose new public function make_string_from_ob_maybe_null(), which is

used by typemap(in) char IN_STRING, typemap(in) const char *MAY_BY_NULL

* python/tests/

(SubversionClientTestCase.log_entry_receiver_whole): New helper

callback function for new SubversionClientTestCase.test_log5_revprops

(SubversionClientTestCase.test_log5_revprops): new test for

typemap(in) apr_array_t *STRINGLIST and its helper function


* python/tests/


- As unicode input is now valid, use int value as invalid input

- Add case to be expected to cause UnicodeEncodeError

(SubversionCoreTestCase.test_stream_write_str):(Only for Python 3)

New test case for svn_stream_write() to pass str object as data argument


Renamed from SubversionCoreTestCase.test_stream_write

* python/tests/ Register new test module typemap

* python/tests/ New unittest module for typemaps

(SubversionTypemapTestCase): New unittest subclass for unit test about


(SubversionTypemapTestCase.test_char_ptr_in): New test case


New test case

(SubversionTypemapTestCase.test_char_ptr_may_be_null): New test case


New test case

(SubversionTypemapTestCase.test_make_string_from_ob): New test case


New test case


New test case


New test case

(suite): New function to drive SubversionTypemapTestCase

On branch swig-py3: A follow up r1851888: Save/restore Python error indicator

For all callback APIs which don't return svn_error_t * cannot notify

Python exception their caller, and as exceptions chain in Python 3,

exception conext should be detached from caller.

* subversion/bindings/swig/python/libsvn_swig_py/swigutil_py.c

(svn_swig_py_notify_func, svn_swig_py_notify_func2,

svn_swig_py_status_func, svn_swig_py_client_status_func,

svn_swig_py_status_func2, ra_callbacks_progress_func,

svn_swig_py_config_enumerator2, svn_swig_py_config_section_enumerator2):

Save error indicator before Python function call and then restore it

after call

On branch swig-py3: Fix Python exception handling in callback function

* subversion/bindings/swig/python/libsvn_swig_py/swigutil_py.c

(svn_swig_py_status_func2): Clear python exception if it caused in Python

call back function. (To avoid crash in py3)

* subversion/bindings/swig/python/tests/

(SubversionWorkingCopyTestCase.test_status_editor): Remove an assertion

from call back because it takes no effect, and check result after

svn_wc_get_status_editor2() API call instead.


New test case for Python exception within svn_wc_status_func2 call back.

Patch by: Jun Omae <jun66j5 at>

(Tweaked by me.)

* COMMITERS: Add myself as a partial commiter (swig-py3 branch)