Yasuhito Futatsuki <futatuki@yf.bsdclub.org> (futatuki)

r1854007, r1854006, r1853738, r1853592, r1852967, r1851145

r1854007 | futatuki | 2019-02-20 18:36:46 -0600 (Wed, 20 Feb 2019)

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

r1854006 | futatuki | 2019-02-20 18:22:50 -0600 (Wed, 20 Feb 2019)

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/client.py:
 (SubversionClientTestCase.make_log_message_func): New helper function
  New test case
  New test case

r1853738 | futatuki | 2019-02-17 00:03:10 -0600 (Sun, 17 Feb 2019)

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

r1853592 | futatuki | 2019-02-14 10:48:40 -0600 (Thu, 14 Feb 2019)

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/client.py
 (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/core.py
  - 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/run_all.py: Register new test module typemap

* python/tests/typemap.py: 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

r1852967 | futatuki | 2019-02-05 01:05:40 -0600 (Tue, 05 Feb 2019)

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

r1851145 | futatuki | 2019-01-12 01:32:17 -0600 (Sat, 12 Jan 2019)

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