Checkout Tools
  • last updated 6 hours ago
Constraints
Constraints: committers
 
Constraints: files
Constraints: dates
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_path_rev_hash_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

(svn_swig_py_unwrap_string):

- Allow str as well as bytes for source argument

(svn_swig_py_make_file):

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

(svn_swig_py_auth_gnome_keyring_unlock_prompt_func):

- 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

svn_swig_py_unwrap_string()

* python/tests/core.py

(SubversionCoreTestCase.test_stream_write_exception):

- 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

(SubversionCoreTestCase.test_stream_write_bytes):

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

typemaps

(SubversionTypemapTestCase.test_char_ptr_in): New test case

(SubversionTypemapTestCase.test_char_ptr_in_unicode_exception):

New test case

(SubversionTypemapTestCase.test_char_ptr_may_be_null): New test case

(SubversionTypemapTestCase.test_char_ptr_may_be_null_unicode_exception):

New test case

(SubversionTypemapTestCase.test_make_string_from_ob): New test case

(SubversionTypemapTestCase.test_prophash_from_dict_null_value):

New test case

(SubversionTypemapTestCase.test_make-string_ob_unicode_exception):

New test case

(SubversionTypemapTestCase.test_make_svn_string_ob_unicode_exception):

New test case

(suite): New function to drive SubversionTypemapTestCase

  1. … 9 more files in changeset.
On branch swig-py3: Complete Python SWIG bindings for svn_client.h.

* subversion/bindings/swig/include/svn_containers.swg

(apr_array_header_t **OUTPUT_OF_CONST_CHAR_P): Add additional "char *" array

maps.

(%typemap(argout) apr_array_header_t **options): New output mapping for array

of svn_client_conflict_option_t objects.

(%typemap(argout) apr_array_header_t **versions_p): New output mapping for

array of svn_client__shelf_version_t objects.

* subversion/bindings/swig/include/svn_string.swg

(const char **OUTPUT): Add additional char * output parameter for log_message.

* subversion/bindings/swig/include/svn_types.swg

(SWIGTYPE **OUTPARAM): Add several missing output parameter swig types.

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

subversion/bindings/swig/python/libsvn_swig_py/swigutil_py.h

Add make_ob_* swig constructor for svn_client_status_dup.

(svn_swig_py_client_status_func): New Function.

* subversion/bindings/swig/svn_client.i

Add callback typemaps for usages of svn_client_status_func_t.

* subversion/bindings/swig/python/tests/client.py

(SubversionClientTestCase.assert_all_instances_of): New helper method.

(SubversionClientTestCase.test_platform_providers): Add usage of

assert_all_instances_of() helper method.

(SubversionClientTestCase.test_conflict): New test method.

(SubversionClientTestCase.test_shelf): New test method.

  1. … 6 more files in changeset.
On branch swig-py3: Use py3c library in Python swig bindings.

Add the py3c Python compatibility library and update the python swig bindings

to use the compatibility functions that it provides. This is the first step to

getting the swig bindings to support Python 3.

* build/ac-macros/py3c.m4:

Create a new ac-macro for the py3c library.

* aclocal.m4:

Include the new py3c.m4 file.

* build/ac-macros/swig.m4:

(SVN_FIND_SWIG): Call the new SVN_PY3C macro to add py3c to the build.

[in subversion/bindings/swig]

* include/svn_string.swg

(python typemaps: RET_STRING): Replace PyString_FromStringAndSize with

PyStr_FromStringAndSize.

(python typemaps: (in) svn_stringbuf_t *,

(in) const svn_string_t * (svn_string_t value)):

Replace PyString_Check with PyStr_Check and

PyString_AS_STRING/PyString_GET_SIZE with PyStr_AsUTF8AndSize.

(python typemaps: (out) svn_stringbuf_t *,

(out) svn_string_t *):

Replace PyString_FromStringAndSize with PyStr_FromStringAndSize.

(python typemaps: (argout) const char **OUTPUT):

Replace PyString_FromString with PyStr_FromString.

* include/svn_types.swg

(python typemaps: (in) (const char *PTR, apr_size_t LEN)):

Replace PyString_Check with PyStr_Check and

PyStr_AS_STRING/PyString_GET_SIZE with PyStr_AsUTF8AndSize.

(python typemaps: (argout) unsigned char digest[ANY]):

Replace PyString_FromStringAndSize with PyStr_FromStringAndSize.

(python typemaps: (in) const unsigned char *digest):

Replace PyString_AsString with PyStr_AsString.

* include/libsvn_swig_py/swigutil_py.h,

include/libsvn_swig_py/swigutil_py.c

Include py3c.h to pick up Python 2/3 compatibility defines.

(svn_swig_py_as_file): Add new compatibility function.

(svn_swig_py_unwrap_string): Add clarifying note to function.

(svn_swig_py_svn_exception,

svn_swig_py_propinheriteditemarray_to_dict,

svn_swig_py_proparray_to_dict,

svn_swig_py_locationhash_to_dict,

svn_swig_py_c_strings_to_list,

svn_swig_py_array_to_list,

cstring_to_pystring,

convert_string):

Replace PyString_FromString with PyStr_FromString.

(make_string_from_ob,

make_svn_string_from_ob,

svn_swig_py_unwrap_string,

ra_callbacks_get_client_string,

exeception_to_error):

Replace PyString_AsString with PyStr_AsString.

(make_string_from_ob, make_svn_string_from_ob):

Replace PyString_Check with PyStr_Check.

(convert_svn_string_t,

svn_swig_py_proparray_to_dict,

ra_callbacks_push_or_set_wc_prop):

Replace PyString_FromStringAndSize with PyStr_FromStringAndSize.

(svn_swig_py_make_file):

Replace PyFile_Check/PyFile_AsFile with svn_swig_py_as_file.

(read_handler_pyio, ra_callbacks_get_wc_prop):

Replace PyString_GET_SIZE/PyString_AS_STRING with PyStr_AsUTF8AndSize.

(svn_swig_py_get_commit_log_func):

Replace PyString_AS_STRING with PyStr_AsString and PyString_Check with

PyStr_Check.

* core.i

(python typemap:

(char *buffer, apr_size_t *len)):

Replace PyString_FromStringAndSize with PyStr_FromStringAndSize.

(python typemap:

(const char *data, apr_size_t *len)):

Replace PyString_Check with PyStr_Check, and PyString_AS_STRING/

PyString_GET_SIZE with PyStr_AsUTF8AndSize.

(python typemap:

const void *value (apr_pool_t *_global_pool, PyObject *_global_py_pool)):

Replace PyString_Check with PyStr_Check and PyString_AS_STRING with

PyStr_AsString.

(python typemap: FILE *): Replace PyFile_AsFile with svn_swig_py_as_file.

* svn_client.i

Include py3c.h to pick up Python 2/3 compatibility defines.

(python typemap: (argout) apr_array_header_t **props):

Replace PyString_FromStringAndSize with PyStr_FromStringAndSize.

* svn_delta.i,

svn_diff.i,

svn_fs.i,

svn_ra.i,

svn_repos.i,

svn_wc.i

Include py3c.h to pick up Python 2/3 compatibility defines.

  1. … 14 more files in changeset.