[packages/lasso] - updated to 2.9.0
qboosh
qboosh at pld-linux.org
Sun Apr 12 10:13:32 CEST 2026
commit 056fe3b2dfd1ba9c1af85094eedcb448c7a1fe59
Author: Jakub Bogusz <qboosh at pld-linux.org>
Date: Sun Apr 12 10:14:00 2026 +0200
- updated to 2.9.0
git.patch | 7918 ------------------------------------------------------
lasso-java.patch | 20 +
lasso.spec | 59 +-
3 files changed, 56 insertions(+), 7941 deletions(-)
---
diff --git a/lasso.spec b/lasso.spec
index eda7038..d39cc6b 100644
--- a/lasso.spec
+++ b/lasso.spec
@@ -3,33 +3,32 @@
# - fix tests (some linkage errors)
#
# Conditional build:
-%bcond_with wsf # experimental ID-WSF support
%bcond_with tests # build tests
-%bcond_with java # Java bindings
-%bcond_with php # PHP 5 bindings (not ready for PHP 7)
+%bcond_with java # Java bindings (some files missing in repo)
+%bcond_with php5 # PHP 5 bindings
+%bcond_with php7 # PHP 7.x bindings (PHP 8 not supported at least by configure)
%bcond_without perl # Perl bindings
%bcond_without python # Python 3.x bindings
%bcond_without static_libs # static library
-%if "%{?php_suffix}" == ""
+%if %{with php5} && "%{?php_suffix}" == ""
%define php_suffix 55
%endif
%define php_name php%{?php_suffix}
Summary: Liberty Alliance Single Sign On
Summary(pl.UTF-8): Implementacja Liberty Alliance Single Sign On
Name: lasso
-Version: 2.8.2
-Release: 7
+Version: 2.9.0
+Release: 1
License: GPL v2+
Group: Libraries
Source0: https://dev.entrouvert.org/lasso/%{name}-%{version}.tar.gz
-# Source0-md5: ad2e167973cc1c21cd16329bfbcd3d16
-Patch0: git.patch
+# Source0-md5: beae6a2669dacd8b306cae04ae2795ae
+Patch0: %{name}-java.patch
URL: https://lasso.entrouvert.org/
BuildRequires: autoconf >= 2.53
BuildRequires: automake >= 1:1.11
%{?with_tests:BuildRequires: check-devel}
-%{?with_wsf:BuildRequires: cyrus-sasl-devel >= 2}
BuildRequires: glib2-devel >= 1:2.17.0
BuildRequires: gtk-doc >= 1.9
BuildRequires: libtool
@@ -43,7 +42,12 @@ BuildRequires: xmlsec1-openssl-devel >= 1.2.6
BuildRequires: zlib-devel
%if %{with php}
BuildRequires: expat-devel
+%if %{with php5}
BuildRequires: %{php_name}-devel >= 5
+%endif
+%if %{with php7}
+BuildRequires: %{php_name}-devel >= 7
+%endif
BuildRequires: python3
%endif
%if %{with perl}
@@ -178,22 +182,31 @@ On).
%{__autoconf}
%{__automake}
%configure \
- %{!?with_java:--disable-java} \
+%if %{with java}
+ --enable-java \
+ --with-java-home=%{java_home} \
+%else
+ --disable-java \
+%endif
%{!?with_perl:--disable-perl} \
-%if %{with php}
+%if %{with php5}
--enable-php5 \
--with-php5-config-dir=%{php_sysconfdir}/conf.d \
%else
--disable-php5 \
+%endif
+%if %{with php7}
+ PHP7=%{__php} \
+ PHP7_CONFIG=/usr/bin/php-config \
+ --enable-php7 \
+ --with-php7-config-dir=%{php_sysconfdir}/conf.d \
+%else
+ --disable-php7 \
%endif
%{!?with_python:--disable-python} \
--disable-silent-rules \
%{!?with_static_libs:--disable-static} \
%{!?with_tests:--disable-tests} \
-%if %{with wsf}
- --enable-wsf \
- --with-sasl2 \
-%endif
--with-html-dir=%{_gtkdocdir}
%{__make}
@@ -237,12 +250,12 @@ rm -rf $RPM_BUILD_ROOT
%files
%defattr(644,root,root,755)
%doc AUTHORS ChangeLog NEWS README
-%attr(755,root,root) %{_libdir}/liblasso.so.*.*.*
-%attr(755,root,root) %ghost %{_libdir}/liblasso.so.3
+%{_libdir}/liblasso.so.*.*.*
+%ghost %{_libdir}/liblasso.so.3
%files devel
%defattr(644,root,root,755)
-%attr(755,root,root) %{_libdir}/liblasso.so
+%{_libdir}/liblasso.so
%{_pkgconfigdir}/lasso.pc
%{_includedir}/lasso
@@ -257,21 +270,21 @@ rm -rf $RPM_BUILD_ROOT
%defattr(644,root,root,755)
%{perl_vendorarch}/Lasso.pm
%dir %{perl_vendorarch}/auto/Lasso
-%attr(755,root,root) %{perl_vendorarch}/auto/Lasso/Lasso.so
+%{perl_vendorarch}/auto/Lasso/Lasso.so
%endif
%if %{with java}
%files -n java-%{name}
%defattr(644,root,root,755)
-%attr(755,root,root) %{_jnidir}/libjnilasso.so
+%{_jnidir}/libjnilasso.so
%{_javadir}/lasso.jar
%endif
-%if %{with php}
+%if %{with php5} || %{with php7}
%files -n %{php_name}-%{name}
%defattr(644,root,root,755)
%config(noreplace) %verify(not md5 mtime size) %{php_sysconfdir}/conf.d/lasso.ini
-%attr(755,root,root) %{php_extensiondir}/lasso.so
+%{php_extensiondir}/lasso.so
%{php_data_dir}/lasso.php
%endif
@@ -280,5 +293,5 @@ rm -rf $RPM_BUILD_ROOT
%defattr(644,root,root,755)
%{py3_sitedir}/__pycache__
%{py3_sitedir}/lasso.py
-%attr(755,root,root) %{py3_sitedir}/_lasso.so
+%{py3_sitedir}/_lasso.so
%endif
diff --git a/git.patch b/git.patch
deleted file mode 100644
index b93f3f6..0000000
--- a/git.patch
+++ /dev/null
@@ -1,7918 +0,0 @@
-diff --git a/INSTALL b/INSTALL
-index b4ed0f73..c1544bb4 100644
---- a/INSTALL
-+++ b/INSTALL
-@@ -26,9 +26,6 @@ In all cases you need to install development packages for dependencies. On Debia
- aptitude install libxml2-dev libxslt1-dev libxmlsec1-dev libxmlsec1-openssl \
- libglib2.0-dev python-all-dev fastjar php5-dev php5-cli python-lxml
-
--Python bindings require the "six" library:
--
-- pip install six
-
- Basic Installation
- ==================
-diff --git a/NEWS b/NEWS
-index 1d98536d..cc0c3d92 100644
---- a/NEWS
-+++ b/NEWS
-@@ -1,6 +1,17 @@
- NEWS
- ====
-
-+Future
-+------
-+
-+- Fix symbol deprecation of XMLSEC_CRYPTO macro in libxmlsec 1.3.0 (Patch
-+ provided by Simo Sorce of RedHat) (#78280)
-+- Annotate lasso_*_signature_method functions with LASSO_EXPORT (#86076)
-+- Fix implicit function declaration errors, patch provided by Rob Crittenden
-+ from RedHat (#85340)
-+- Adjust to structured error callback argument change in libxml2 2.12, patch
-+ provided by Florian Wiemer of RedHat (#86080)
-+
- 2.8.2 - March 14th 2023
- -----------------------
-
-diff --git a/autogen.sh b/autogen.sh
-index bf0e0d3a..7067b634 100755
---- a/autogen.sh
-+++ b/autogen.sh
-@@ -27,40 +27,26 @@ cd "$srcdir"
- DIE=1
- }
-
--if automake-1.16 --version < /dev/null > /dev/null 2>&1; then
-- AUTOMAKE=automake-1.16
-- ACLOCAL=aclocal-1.16
--elif automake-1.15 --version < /dev/null > /dev/null 2>&1; then
-- AUTOMAKE=automake-1.15
-- ACLOCAL=aclocal-1.15
--elif automake-1.14 --version < /dev/null > /dev/null 2>&1; then
-- AUTOMAKE=automake-1.14
-- ACLOCAL=aclocal-1.14
--elif automake-1.13 --version < /dev/null > /dev/null 2>&1; then
-- AUTOMAKE=automake-1.13
-- ACLOCAL=aclocal-1.13
--elif automake-1.12 --version < /dev/null > /dev/null 2>&1; then
-- AUTOMAKE=automake-1.12
-- ACLOCAL=aclocal-1.12
--elif automake-1.11 --version < /dev/null > /dev/null 2>&1; then
-- AUTOMAKE=automake-1.11
-- ACLOCAL=aclocal-1.11
--elif automake-1.10 --version < /dev/null > /dev/null 2>&1; then
-- AUTOMAKE=automake-1.10
-- ACLOCAL=aclocal-1.10
--elif automake-1.9 --version < /dev/null > /dev/null 2>&1; then
-- AUTOMAKE=automake-1.9
-- ACLOCAL=aclocal-1.9
--elif automake-1.8 --version < /dev/null > /dev/null 2>&1; then
-- AUTOMAKE=automake-1.8
-- ACLOCAL=aclocal-1.8
--elif automake-1.7 --version < /dev/null > /dev/null 2>&1; then
-- AUTOMAKE=automake-1.7
-- ACLOCAL=aclocal-1.7
--elif automake-1.6 --version < /dev/null > /dev/null 2>&1; then
-- AUTOMAKE=automake-1.6
-- ACLOCAL=aclocal-1.6
--else
-+am_versions() {
-+ major=$1
-+ minor_min=$2
-+ minor_max=$3
-+ seq "$minor_max" -1 "$minor_min" | xargs -I {} echo "$major.{}"
-+}
-+
-+AM_VERSIONS_SUPPORT=$(am_versions 1 6 17)
-+AUTOMAKE=""
-+ACLOCAL=""
-+for VERSION in $AM_VERSIONS_SUPPORT
-+do
-+ if which automake-${VERSION} < /dev/null > /dev/null 2>&1; then
-+ AUTOMAKE=automake-${VERSION}
-+ ACLOCAL=aclocal-${VERSION}
-+ break
-+ fi
-+done
-+if [ -z "$AUTOMAKE" ]
-+then
- echo
- echo "You must have automake installed to compile $PROJECT."
- echo "Download the appropriate package for your distribution,"
-diff --git a/bindings/bindings.py b/bindings/bindings.py
-index b8f9d503..ef3f9fbd 100644
---- a/bindings/bindings.py
-+++ b/bindings/bindings.py
-@@ -23,16 +23,9 @@
-
- import os
- import re
--from six import print_, PY3
- import sys
- from utils import *
-
--if PY3:
-- do_open = lambda *args, **kwargs: open(*args, encoding='utf-8', **kwargs)
--else:
-- do_open = open
--
--
- from optparse import OptionParser
-
- try:
-@@ -166,10 +159,10 @@ class BindingData:
- if not 'Makefile.am' in filenames:
- # not a source dir
- continue
-- makefile_am = do_open(os.path.join(base, 'Makefile.am')).read()
-+ makefile_am = open(os.path.join(base, 'Makefile.am')).read()
- filenames = [x for x in filenames if x.endswith('.c') if x in makefile_am]
- for filename in filenames:
-- s = do_open(os.path.join(base, filename)).read()
-+ s = open(os.path.join(base, filename)).read()
- docstrings = regex.findall(s)
- for d in docstrings:
- docstring = '\n'.join([x[3:] for x in d.splitlines()])
-@@ -247,7 +240,7 @@ class Function:
- try:
- arg = [x for x in self.args if x[1] == param.attrib.get('name')][0]
- except IndexError:
-- print_('W: no such param (%s) in function (%s)' % (
-+ print('W: no such param (%s) in function (%s)' % (
- param.attrib.get('name'), self.name), file=sys.stderr)
- continue
- if param.attrib.get('optional') == 'true':
-@@ -410,7 +403,7 @@ def parse_header(header_file):
- in_struct_private = False
- in_ifdef_zero = False
-
-- lines = do_open(header_file).readlines()
-+ lines = open(header_file).readlines()
- i = 0
- while i < len(lines):
- line = lines[i]
-@@ -435,7 +428,7 @@ def parse_header(header_file):
- enum_name = line[2:].strip().strip(';')
- binding.enums.append(enum_name)
- else:
-- m = re.match('\s*([a-zA-Z0-9_]+)', line)
-+ m = re.match(r'\s*([a-zA-Z0-9_]+)', line)
- if m:
- binding.constants.append(('i', m.group(1)))
- elif line.startswith('#define'):
-@@ -475,7 +468,7 @@ def parse_header(header_file):
- if not in_struct.name in binding.structs_toskip:
- binding.structs.append(in_struct)
- else:
-- print_('W: skipping structure %s due to overrides.xml' % in_struct.name, file=sys.stderr)
-+ print('W: skipping structure %s due to overrides.xml' % in_struct.name, file=sys.stderr)
- in_struct = None
- elif '/*< public >*/' in line:
- in_struct_private = False
-@@ -489,13 +482,13 @@ def parse_header(header_file):
- # TODO: Add parsing of OFTYPE
- # Transform struct to typedef
- # example: "struct _LassoAssertion" -> "LassoAssertion"
-- line = re.sub('\s+struct _', ' ', line)
-- member_match = re.match('\s+(\w+)\s+(\*?\w+)', line)
-+ line = re.sub(r'\s+struct _', ' ', line)
-+ member_match = re.match(r'\s+(\w+)\s+(\*?\w+)', line)
- if member_match:
- member_type, member_name = normalise_var(member_match.group(1), member_match.group(2))
- field = (member_type, member_name, {})
- if member_type == 'void*':
-- print_('W: skipping field %s.%s' % (in_struct.name, member_name), file=sys.stderr)
-+ print('W: skipping field %s.%s' % (in_struct.name, member_name), file=sys.stderr)
- else:
- if is_glist(field) or is_hashtable(field):
- found = re.search(r' of ([^*]*)', line)
-@@ -544,13 +537,13 @@ def parse_header(header_file):
- type = clean_type(type)
- f.args.append(list((type, name, {})))
- else:
-- print_('failed to process:', arg, 'in line:', line, file=sys.stderr)
-+ print('failed to process:', arg, 'in line:', line, file=sys.stderr)
- f.skip = True
- f.apply_overrides()
- if not f.skip:
- binding.functions.append(f)
- else:
-- print_('W: skipping function', f, file=sys.stderr)
-+ print('W: skipping function', f, file=sys.stderr)
-
- i += 1
-
-diff --git a/bindings/overrides.xml b/bindings/overrides.xml
-index 9bb08e01..ce92fb15 100644
---- a/bindings/overrides.xml
-+++ b/bindings/overrides.xml
-@@ -23,6 +23,7 @@
- <func name="lasso_registry_default_get_mapping" skip="true"/>
- <!-- LassoProvider -->
- <func name="lasso_provider_get_metadata_list" return_owner="false"/>
-+ <func name="lasso_provider_verify_saml_signature" skip="true"/>
- <!-- LassoProfile -->
- <func name="lasso_profile_get_server" skip="true"/>
- <func name="lasso_profile_get_nameIdentifier"
-diff --git a/bindings/perl/glist_handling.c b/bindings/perl/glist_handling.c
-index 01deb274..f7e24ed6 100644
---- a/bindings/perl/glist_handling.c
-+++ b/bindings/perl/glist_handling.c
-@@ -70,6 +70,7 @@ xmlnode_to_pv(xmlNode *node, gboolean do_free)
- } else {
- pestring = newSVpv((char*)xmlBufferContent(buf), 0);
- }
-+ xmlBufferFree(buf);
- if (do_free) {
- lasso_release_xml_node(node);
- }
-diff --git a/bindings/perl/lang.py b/bindings/perl/lang.py
-index f412ff95..867e1b0c 100644
---- a/bindings/perl/lang.py
-+++ b/bindings/perl/lang.py
-@@ -22,20 +22,19 @@ import os
- import os.path
- import sys
- import re
--from six import print_
- from utils import *
-
--class Output(object):
-+class Output:
- def __init__(self, filename, indent = 4):
- self.fd = open(filename, 'w')
- self.indent_stack = [0]
- self.indent_size = indent
-
- def pn(self, s = ''):
-- print_((' ' * self.indent_stack[-1]) + s, file=self.fd)
-+ print((' ' * self.indent_stack[-1]) + s, file=self.fd)
-
- def p(self, s = ''):
-- print_(s, file=self.fd, end="")
-+ print(s, file=self.fd, end="")
-
- def close(self):
- self.fd.close()
-@@ -95,8 +94,8 @@ class Binding:
- self.typemap.pn('''
- string_or_null\tT_STRING_OR_NULL
- string_non_null\tT_STRING_NON_NULL
--const gchar *\tT_PV
- gchar *\tT_PV
-+const gchar *\tT_PV
- gboolean\tT_IV
- const LassoProvider *\tT_GOBJECT_WRAPPER
- xmlNode*\tT_XMLNODE
-@@ -277,7 +276,7 @@ INCLUDE: LassoNode.xs
- try:
- self.xs.pn(self.glist_type(func.return_arg))
- except:
-- print_('failed', func.return_arg, func, file=sys.stderr)
-+ print('failed', func.return_arg, func, file=sys.stderr)
- raise
- self.xs.p(name + '(')
- arg_list = []
-@@ -376,12 +375,24 @@ INCLUDE: LassoNode.xs
- self.xs.pn(''' OUTPUT:
- RETVAL''')
- cleanup.append('lasso_unref(RETVAL);')
-- elif func.return_type and is_object(func.return_type) and not is_int(func.return_type, self.binding_data) and func.return_owner:
-- cleanup.append('lasso_unref(RETVAL);')
- elif is_rc(func.return_arg):
- if name == 'lasso_check_version':
- cleanup.append('if (RETVAL != 1)')
- cleanup.append('gperl_lasso_error(RETVAL);')
-+ elif func.return_type:
-+ if is_transfer_full(func.return_arg, default=True):
-+ if is_cstring(func.return_arg):
-+ cleanup.append('lasso_release_string(RETVAL);')
-+ elif is_int(func.return_type, self.binding_data) or is_boolean(func.return_type):
-+ pass
-+ elif is_xml_node(func.return_arg):
-+ pass
-+ elif is_glist(func.return_arg):
-+ pass
-+ elif is_object(func.return_arg):
-+ cleanup.append('lasso_unref(RETVAL);')
-+ else:
-+ raise Exception('Unsupported caller owned return type %s' % ((repr(func.return_arg), func),))
- # Output cleanup code
- if cleanup:
- self.xs.pn(' CLEANUP:')
-@@ -448,7 +459,7 @@ INCLUDE: LassoNode.xs
- kind = "objects"
- else:
- kind = "strings"
-- self.xs.pn('''
-+ self.xs.pn(r'''
- HV*
- %(field)s(%(clss)s* obj, ...)
- PROTOTYPE:
-@@ -587,12 +598,12 @@ HV*
- self.generate_xs_function(func, prefix = prefix)
- for member in struct.members:
- if arg_type(member) == 'void*':
-- print_('Skipping %s' % member)
-+ print('Skipping %s' % member)
- continue
- try:
- self.generate_xs_getter_setter(struct, member)
- except:
-- print_('failed', struct, member)
-+ print('failed', struct, member)
- raise
-
- def generate_wrapper(self):
-diff --git a/bindings/php5/php_code.py b/bindings/php5/php_code.py
-index 7e94d16e..6794465c 100644
---- a/bindings/php5/php_code.py
-+++ b/bindings/php5/php_code.py
-@@ -20,7 +20,6 @@
-
- import re
- import sys
--import six
-
- from utils import *
-
-@@ -40,7 +39,7 @@ class PhpCode:
- self.generate_footer()
-
- def generate_header(self):
-- six.print_('''\
-+ print('''\
- <?php
-
- /* this file has been generated automatically; do not edit */
-@@ -108,27 +107,27 @@ function lassoGetRequestTypeFromSoapMsg($mesg) {
- else:
- inheritence = ' extends LassoObject'
-
-- six.print_('/**', file=self.fd)
-- six.print_(' * @package Lasso', file=self.fd)
-- six.print_(' */', file=self.fd)
-- six.print_('class %(class_name)s%(inheritence)s {' % locals(), file=self.fd)
-+ print('/**', file=self.fd)
-+ print(' * @package Lasso', file=self.fd)
-+ print(' */', file=self.fd)
-+ print('class %(class_name)s%(inheritence)s {' % locals(), file=self.fd)
-
- if klass.members or klass.methods:
- self.generate_constructors(klass)
- self.generate_getters_and_setters(klass)
- self.generate_methods(klass)
-
-- six.print_('}', file=self.fd)
-- six.print_('', file=self.fd)
-+ print('}', file=self.fd)
-+ print('', file=self.fd)
-
- # Add a special class to get an object instance without initialising
-- six.print_('/**', file=self.fd)
-- six.print_(' * @package Lasso', file=self.fd)
-- six.print_(' */', file=self.fd)
-- six.print_('class %(class_name)sNoInit extends %(class_name)s {' % locals(), file=self.fd)
-- six.print_(' public function __construct() {}', file=self.fd)
-- six.print_('}', file=self.fd)
-- six.print_('', file=self.fd)
-+ print('/**', file=self.fd)
-+ print(' * @package Lasso', file=self.fd)
-+ print(' */', file=self.fd)
-+ print('class %(class_name)sNoInit extends %(class_name)s {' % locals(), file=self.fd)
-+ print(' public function __construct() {}', file=self.fd)
-+ print('}', file=self.fd)
-+ print('', file=self.fd)
-
- def generate_constructors(self, klass):
- method_prefix = format_as_underscored(klass.name) + '_'
-@@ -153,13 +152,13 @@ function lassoGetRequestTypeFromSoapMsg($mesg) {
- c_args = ', '.join(c_args)
- # XXX: could check $this->_cptr->typename to see if it got the
- # right class type
-- six.print_(' public $_cptr = null;', file=self.fd)
-- six.print_('', file=self.fd)
-- six.print_(' public function __construct(%s) {' % php_args, file=self.fd)
-- six.print_(' $this->_cptr = %s(%s);' % (m.name, c_args), file=self.fd)
-- six.print_(' if (is_null($this->_cptr)) { throw new Exception("Constructor for ', klass.name, ' failed "); }', file=self.fd)
-- six.print_(' }', file=self.fd)
-- six.print_('', file=self.fd)
-+ print(' public $_cptr = null;', file=self.fd)
-+ print('', file=self.fd)
-+ print(' public function __construct(%s) {' % php_args, file=self.fd)
-+ print(' $this->_cptr = %s(%s);' % (m.name, c_args), file=self.fd)
-+ print(' if (is_null($this->_cptr)) { throw new Exception("Constructor for ', klass.name, ' failed "); }', file=self.fd)
-+ print(' }', file=self.fd)
-+ print('', file=self.fd)
-
- elif name.startswith(method_prefix) and m.args \
- and clean_type(unconstify(m.args[0][0])) != klass.name:
-@@ -186,10 +185,10 @@ function lassoGetRequestTypeFromSoapMsg($mesg) {
- c_args.append('$%s' % arg_name)
- php_args = ', '.join(php_args)
- c_args = ', '.join(c_args)
-- six.print_(' public static function %s(%s) {' % (php_name, php_args), file=self.fd)
-- six.print_(' return cptrToPhp(%s(%s));' % (m.name, c_args), file=self.fd)
-- six.print_(' }', file=self.fd)
-- six.print_('', file=self.fd)
-+ print(' public static function %s(%s) {' % (php_name, php_args), file=self.fd)
-+ print(' return cptrToPhp(%s(%s));' % (m.name, c_args), file=self.fd)
-+ print(' }', file=self.fd)
-+ print('', file=self.fd)
-
-
-
-@@ -201,50 +200,50 @@ function lassoGetRequestTypeFromSoapMsg($mesg) {
- 'class': c.name
- }
-
-- six.print_('''\
-+ print('''\
- /**
- * @return %(docstring)s
- */
- protected function get_%(name)s() {''' % d, file=self.fd)
-- six.print_(' $t = %(class)s_%(name)s_get($this->_cptr);' % d, file=self.fd)
-+ print(' $t = %(class)s_%(name)s_get($this->_cptr);' % d, file=self.fd)
- if self.is_object(m):
-- six.print_(' $t = cptrToPhp($t);', file=self.fd)
-+ print(' $t = cptrToPhp($t);', file=self.fd)
- elif (is_glist(m) or is_hashtable(m)) and self.is_object(element_type(m)):
-- six.print_(' foreach ($t as $key => $item) {', file=self.fd)
-- six.print_(' $t[$key] = cptrToPhp($item);', file=self.fd)
-- six.print_(' }', file=self.fd)
-+ print(' foreach ($t as $key => $item) {', file=self.fd)
-+ print(' $t[$key] = cptrToPhp($item);', file=self.fd)
-+ print(' }', file=self.fd)
- elif is_hashtable(m) or (is_glist(m) and (is_cstring(element_type(m)) \
- or is_xml_node(element_type(m)))) or is_int(m, self.binding_data) \
- or is_boolean(m) or is_cstring(m) or is_xml_node(m):
- pass
- else:
- raise Exception('Cannot generate a Php getter %s.%s' % (c,m))
-- six.print_(' return $t;', file=self.fd)
-- six.print_(' }', file=self.fd)
-+ print(' return $t;', file=self.fd)
-+ print(' }', file=self.fd)
-
- def generate_setter(self, c, m):
- d = { 'type': arg_type(m), 'name': format_as_camelcase(arg_name(m)),
- 'docstring': self.get_docstring_return_type(arg_type(m)), 'class': c.name }
-- six.print_(' protected function set_%(name)s($value) {' % d, file=self.fd)
-+ print(' protected function set_%(name)s($value) {' % d, file=self.fd)
- if self.is_object(m):
-- six.print_(' $value = $value->_cptr;', file=self.fd)
-+ print(' $value = $value->_cptr;', file=self.fd)
- elif (is_glist(m) or is_hashtable(m)) and self.is_object(element_type(m)):
-- six.print_(' $array = array();', file=self.fd)
-- six.print_(' if (!is_null($value)) {', file=self.fd)
-- six.print_(' foreach ($value as $key => $item) {', file=self.fd)
-- six.print_(' $array[$key] = $item->_cptr;', file=self.fd)
-- six.print_(' }', file=self.fd)
-- six.print_(' }', file=self.fd)
-- six.print_(' $value = $array;', file=self.fd)
-+ print(' $array = array();', file=self.fd)
-+ print(' if (!is_null($value)) {', file=self.fd)
-+ print(' foreach ($value as $key => $item) {', file=self.fd)
-+ print(' $array[$key] = $item->_cptr;', file=self.fd)
-+ print(' }', file=self.fd)
-+ print(' }', file=self.fd)
-+ print(' $value = $array;', file=self.fd)
- elif is_hashtable(m) or (is_glist(m) and (is_cstring(element_type(m)) \
- or is_xml_node(element_type(m)))) or is_int(m, self.binding_data) \
- or is_boolean(m) or is_cstring(m) or is_xml_node(m):
- pass
- else:
- raise Exception('Cannot generate a Php setter %s.%s' % (c,m))
-- six.print_(' %(class)s_%(name)s_set($this->_cptr, $value);' % d, file=self.fd)
-- six.print_(' }', file=self.fd)
-- six.print_('', file=self.fd)
-+ print(' %(class)s_%(name)s_set($this->_cptr, $value);' % d, file=self.fd)
-+ print(' }', file=self.fd)
-+ print('', file=self.fd)
-
- def generate_getters_and_setters(self, klass):
- for m in klass.members:
-@@ -272,27 +271,27 @@ function lassoGetRequestTypeFromSoapMsg($mesg) {
- mname = re.match(r'lasso_.*_get_(\w+)', meth_name).group(1)
- mname = format_as_camelcase(mname)
-
-- six.print_(' /**', file=self.fd)
-- six.print_(' * @return %s' % self.get_docstring_return_type(m.return_type), file=self.fd)
-- six.print_(' */', file=self.fd)
-- six.print_(' protected function get_%s() {' % mname, file=self.fd)
-+ print(' /**', file=self.fd)
-+ print(' * @return %s' % self.get_docstring_return_type(m.return_type), file=self.fd)
-+ print(' */', file=self.fd)
-+ print(' protected function get_%s() {' % mname, file=self.fd)
- if self.is_object(m.return_type):
-- six.print_(' $cptr = %s($this->_cptr);' % meth_name, file=self.fd)
-- six.print_(' if (! is_null($cptr)) {', file=self.fd)
-- six.print_(' return cptrToPhp($cptr);', file=self.fd)
-- six.print_(' }', file=self.fd)
-- six.print_(' return null;', file=self.fd)
-+ print(' $cptr = %s($this->_cptr);' % meth_name, file=self.fd)
-+ print(' if (! is_null($cptr)) {', file=self.fd)
-+ print(' return cptrToPhp($cptr);', file=self.fd)
-+ print(' }', file=self.fd)
-+ print(' return null;', file=self.fd)
- else:
-- six.print_(' return %s($this->_cptr);' % meth_name, file=self.fd)
-- six.print_(' }', file=self.fd)
-+ print(' return %s($this->_cptr);' % meth_name, file=self.fd)
-+ print(' }', file=self.fd)
- if setter:
-- six.print_(' protected function set_%s($value) {' % mname, file=self.fd)
-+ print(' protected function set_%s($value) {' % mname, file=self.fd)
- if self.is_object(m.return_type):
-- six.print_(' %s($this->_cptr, $value->_cptr);' % setter.name, file=self.fd)
-+ print(' %s($this->_cptr, $value->_cptr);' % setter.name, file=self.fd)
- else:
-- six.print_(' %s($this->_cptr, $value);' % setter.name, file=self.fd)
-- six.print_(' }', file=self.fd)
-- six.print_('', file=self.fd)
-+ print(' %s($this->_cptr, $value);' % setter.name, file=self.fd)
-+ print(' }', file=self.fd)
-+ print('', file=self.fd)
-
- # second pass on methods, real methods
- method_prefix = format_as_underscored(klass.name) + '_'
-@@ -301,7 +300,7 @@ function lassoGetRequestTypeFromSoapMsg($mesg) {
- m.name.endswith('_new_full'):
- continue
- if not m.name.startswith(method_prefix):
-- six.print_('W:', m.name, 'vs', method_prefix, file=sys.stderr)
-+ print('W:', m.name, 'vs', method_prefix, file=sys.stderr)
- continue
-
- if m.rename:
-@@ -327,7 +326,7 @@ function lassoGetRequestTypeFromSoapMsg($mesg) {
- elif defval.startswith('b:'): # boolean
- php_args.append('%s = %s' % (arg_name, defval[2:]))
- else:
-- six.print_("E: don't know what to do with %s" % defval, file=sys.stderr)
-+ print("E: don't know what to do with %s" % defval, file=sys.stderr)
- sys.exit(1)
- else:
- php_args.append('%s = null' % arg_name)
-@@ -357,26 +356,26 @@ function lassoGetRequestTypeFromSoapMsg($mesg) {
- c_args = ''
-
- if m.docstring:
-- six.print_(self.generate_docstring(m, mname, 4), file=self.fd)
-- six.print_(' public function %s(%s) {' % (
-+ print(self.generate_docstring(m, mname, 4), file=self.fd)
-+ print(' public function %s(%s) {' % (
- format_underscore_as_camelcase(mname), php_args), file=self.fd)
- if m.return_type == 'void':
-- six.print_(' %s($this->_cptr%s);' % (cname, c_args), file=self.fd)
-+ print(' %s($this->_cptr%s);' % (cname, c_args), file=self.fd)
- elif is_rc(m.return_type):
-- six.print_(' $rc = %s($this->_cptr%s);' % (cname, c_args), file=self.fd)
-- six.print_(' if ($rc == 0) {', file=self.fd)
-- six.print_(' return 0;', file=self.fd)
-- six.print_(' } else if ($rc > 0) {', file=self.fd) # recoverable error
-- six.print_(' return $rc;', file=self.fd)
-- six.print_(' } else if ($rc < 0) {', file=self.fd) # unrecoverable error
-- six.print_(' LassoError::throw_on_rc($rc);', file=self.fd)
-- six.print_(' }', file=self.fd)
-+ print(' $rc = %s($this->_cptr%s);' % (cname, c_args), file=self.fd)
-+ print(' if ($rc == 0) {', file=self.fd)
-+ print(' return 0;', file=self.fd)
-+ print(' } else if ($rc > 0) {', file=self.fd) # recoverable error
-+ print(' return $rc;', file=self.fd)
-+ print(' } else if ($rc < 0) {', file=self.fd) # unrecoverable error
-+ print(' LassoError::throw_on_rc($rc);', file=self.fd)
-+ print(' }', file=self.fd)
- else:
-- six.print_(' return %s($this->_cptr%s);' % (cname, c_args), file=self.fd)
-- six.print_(' }', file=self.fd)
-- six.print_('', file=self.fd)
-+ print(' return %s($this->_cptr%s);' % (cname, c_args), file=self.fd)
-+ print(' }', file=self.fd)
-+ print('', file=self.fd)
-
-- six.print_('', file=self.fd)
-+ print('', file=self.fd)
-
- def generate_docstring(self, func, method_name, indent):
- docstring = func.docstring.orig_docstring
-@@ -393,7 +392,7 @@ function lassoGetRequestTypeFromSoapMsg($mesg) {
- elif type == '%': # %TRUE, %FALSE
- if var in ('TRUE', 'FALSE'):
- return var
-- six.print_('W: unknown docstring thingie \'%s\' in \'%s\'' % (s.group(1), func.docstring.orig_docstring),
-+ print('W: unknown docstring thingie \'%s\' in \'%s\'' % (s.group(1), func.docstring.orig_docstring),
- file=sys.stderr)
- elif type == '@':
- if var == first_arg_name:
-@@ -437,7 +436,7 @@ function lassoGetRequestTypeFromSoapMsg($mesg) {
- cat = exc_cat.attrib.get('name')
- done_cats.append(cat)
- parent_cat = exc_cat.attrib.get('parent', '')
-- six.print_('''\
-+ print('''\
- /**
- * @package Lasso
- */
-@@ -462,7 +461,7 @@ class Lasso%sError extends Lasso%sError {}
- else:
- parent_cat = ''
-
-- six.print_('''\
-+ print('''\
- /**
- * @package Lasso
- */
-@@ -470,7 +469,7 @@ class Lasso%sError extends Lasso%sError {}
- ''' % (cat, parent_cat), file=self.fd)
-
- if detail not in exceptions_dict:
-- six.print_('''\
-+ print('''\
- /**
- * @package Lasso
- */
-@@ -480,7 +479,7 @@ class Lasso%sError extends Lasso%sError {
- ''' % (detail, cat, c[1]), file=self.fd)
- exceptions_dict[detail] = c[1]
-
-- six.print_('''\
-+ print('''\
- /**
- * @package Lasso
- */
-@@ -488,9 +487,9 @@ class LassoError extends Exception {
- private static $exceptions_dict = array(''', file=self.fd)
-
- for k, v in exceptions_dict.items():
-- six.print_(' %s => "Lasso%sError",' % (v, k), file=self.fd)
-+ print(' %s => "Lasso%sError",' % (v, k), file=self.fd)
-
-- six.print_('''\
-+ print('''\
- );
-
- public static function throw_on_rc($rc) {
-@@ -504,6 +503,6 @@ class LassoError extends Exception {
- ''', file=self.fd)
-
- def generate_footer(self):
-- six.print_('''\
-+ print('''\
- ?>''', file=self.fd)
-
-diff --git a/bindings/php5/wrapper_header.py b/bindings/php5/wrapper_header.py
-index 5236571a..22908945 100644
---- a/bindings/php5/wrapper_header.py
-+++ b/bindings/php5/wrapper_header.py
-@@ -17,7 +17,6 @@
- #
- # You should have received a copy of the GNU General Public License
- # along with this program; if not, see <http://www.gnu.org/licenses/>.
--import six
-
- class WrapperHeader:
- def __init__(self, binding_data, fd, functions_list):
-@@ -32,7 +31,7 @@ class WrapperHeader:
-
- def generate_header(self):
- # FIXME: Get the current version and name
-- six.print_('''\
-+ print('''\
- /* this file has been generated automatically; do not edit */
-
- #include "../../config.h"
-@@ -51,11 +50,11 @@ PHP_MSHUTDOWN_FUNCTION(lasso);
-
- def generate_functions_list(self):
- for m in self.functions_list:
-- six.print_('PHP_FUNCTION(%s);' % m, file=self.fd)
-- six.print_('', file=self.fd)
-+ print('PHP_FUNCTION(%s);' % m, file=self.fd)
-+ print('', file=self.fd)
-
- def generate_footer(self):
-- six.print_('''\
-+ print('''\
- extern zend_module_entry lasso_module_entry;
- #define phpext_lasso_ptr &lasso_module_entry
-
-diff --git a/bindings/php5/wrapper_source.py b/bindings/php5/wrapper_source.py
-index d84b6fdb..5ddd90e5 100644
---- a/bindings/php5/wrapper_source.py
-+++ b/bindings/php5/wrapper_source.py
-@@ -20,7 +20,6 @@
-
- import sys
- import os
--import six
-
- from utils import *
-
-@@ -53,17 +52,17 @@ class WrapperSource:
- self.functions_list.append('lasso_init')
- self.functions_list.append('lasso_shutdown')
-
-- six.print_('''\
-+ print('''\
- /* this file has been generated automatically; do not edit */
- ''', file=self.fd)
-
-- six.print_(open(os.path.join(self.src_dir,'wrapper_source_top.c')).read(), file=self.fd)
-+ print(open(os.path.join(self.src_dir,'wrapper_source_top.c')).read(), file=self.fd)
-
- for h in self.binding_data.headers:
-- six.print_('#include <%s>' % h, file=self.fd)
-- six.print_('', file=self.fd)
-+ print('#include <%s>' % h, file=self.fd)
-+ print('', file=self.fd)
-
-- six.print_('''\
-+ print('''\
- PHP_MINIT_FUNCTION(lasso)
- {
- le_lasso_server = zend_register_list_destructors_ex(php_gobject_generic_destructor, NULL, PHP_LASSO_SERVER_RES_NAME, module_number);
-@@ -71,25 +70,25 @@ PHP_MINIT_FUNCTION(lasso)
- ''', file=self.fd)
-
- def generate_constants(self):
-- six.print_(' /* Constants (both enums and defines) */', file=self.fd)
-+ print(' /* Constants (both enums and defines) */', file=self.fd)
- for c in self.binding_data.constants:
- if c[0] == 'i':
-- six.print_(' REGISTER_LONG_CONSTANT("%s", %s, CONST_CS|CONST_PERSISTENT);' % (c[1], c[1]), file=self.fd)
-+ print(' REGISTER_LONG_CONSTANT("%s", %s, CONST_CS|CONST_PERSISTENT);' % (c[1], c[1]), file=self.fd)
- elif c[0] == 's':
-- six.print_(' REGISTER_STRING_CONSTANT("%s", (char*) %s, CONST_CS|CONST_PERSISTENT);' % (c[1], c[1]), file=self.fd)
-+ print(' REGISTER_STRING_CONSTANT("%s", (char*) %s, CONST_CS|CONST_PERSISTENT);' % (c[1], c[1]), file=self.fd)
- elif c[0] == 'b':
-- six.print_('''\
-+ print('''\
- #ifdef %s
- REGISTER_LONG_CONSTANT("%s", 1, CONST_CS|CONST_PERSISTENT);
- #else
- REGISTER_LONG_CONSTANT("%s", 0, CONST_CS|CONST_PERSISTENT);
- #endif''' % (c[1], c[1], c[1]), file=self.fd)
- else:
-- six.print_('E: unknown constant type: %r' % c[0], file=sys.stderr)
-- six.print_('', file=self.fd)
-+ print('E: unknown constant type: %r' % c[0], file=sys.stderr)
-+ print('', file=self.fd)
-
- def generate_middle(self):
-- six.print_('''\
-+ print('''\
- return SUCCESS;
- }
-
-@@ -107,21 +106,21 @@ PHP_MSHUTDOWN_FUNCTION(lasso)
- # first we free the previous value
- p = (zval_name, c_variable)
- q = { 'zval_name' : zval_name, 'c_variable' : c_variable }
-- six.print_(' zval_dtor(%s);' % zval_name, file=self.fd)
-+ print(' zval_dtor(%s);' % zval_name, file=self.fd)
- if is_pointer(type):
-- six.print_(' if (! %s) {' % c_variable, file=self.fd)
-- six.print_(' ZVAL_NULL(%s);' % zval_name, file=self.fd)
-- six.print_(' } else {', file=self.fd)
-+ print(' if (! %s) {' % c_variable, file=self.fd)
-+ print(' ZVAL_NULL(%s);' % zval_name, file=self.fd)
-+ print(' } else {', file=self.fd)
- if is_int(type, self.binding_data):
-- six.print_(' ZVAL_LONG(%s, %s);' % p, file=self.fd)
-+ print(' ZVAL_LONG(%s, %s);' % p, file=self.fd)
- elif is_boolean(type):
-- six.print_(' ZVAL_BOOL(%s, %s);' % p, file=self.fd)
-+ print(' ZVAL_BOOL(%s, %s);' % p, file=self.fd)
- elif is_cstring(type):
-- six.print_(' ZVAL_STRING(%s, (char*)%s, 1);' % p, file=self.fd)
-+ print(' ZVAL_STRING(%s, (char*)%s, 1);' % p, file=self.fd)
- if free and not is_const(type):
-- six.print_('g_free(%s)' % c_variable, file=self.fd)
-+ print('g_free(%s)' % c_variable, file=self.fd)
- elif arg_type(type) == 'xmlNode*':
-- six.print_('''\
-+ print('''\
- {
- char* xmlString = get_string_from_xml_node(%(c_variable)s);
- if (xmlString) {
-@@ -146,11 +145,11 @@ PHP_MSHUTDOWN_FUNCTION(lasso)
- free_function = 'g_list_free(%(c_variable)s);'
- else:
- raise Exception('unknown element-type: ' + repr(type))
-- six.print_(' %s((GList*)%s, &%s);' % (function, c_variable, zval_name), file=self.fd)
-+ print(' %s((GList*)%s, &%s);' % (function, c_variable, zval_name), file=self.fd)
- if free:
-- six.print_(' ', free_function % q, file=self.fd)
-+ print(' ', free_function % q, file=self.fd)
- elif is_object(type):
-- six.print_('''\
-+ print('''\
- if (G_IS_OBJECT(%(c_variable)s)) {
- PhpGObjectPtr *obj = PhpGObjectPtr_New(G_OBJECT(%(c_variable)s));
- ZEND_REGISTER_RESOURCE(%(zval_name)s, obj, le_lasso_server);
-@@ -158,7 +157,7 @@ PHP_MSHUTDOWN_FUNCTION(lasso)
- ZVAL_NULL(%(zval_name)s);
- }''' % q, file=self.fd)
- if free:
-- six.print_('''\
-+ print('''\
- if (%(c_variable)s) {
- g_object_unref(%(c_variable)s); // If constructor ref is off by one'
- }''' % q, file=self.fd)
-@@ -166,7 +165,7 @@ PHP_MSHUTDOWN_FUNCTION(lasso)
- else:
- raise Exception('unknown type: ' + repr(type) + unconstify(arg_type(type)))
- if is_pointer(type):
-- six.print_(' }', file=self.fd)
-+ print(' }', file=self.fd)
-
-
-
-@@ -175,20 +174,20 @@ PHP_MSHUTDOWN_FUNCTION(lasso)
- return
-
- if is_boolean(arg):
-- six.print_(' RETVAL_BOOL(return_c_value);', file=self.fd)
-+ print(' RETVAL_BOOL(return_c_value);', file=self.fd)
- elif is_int(arg, self.binding_data):
-- six.print_(' RETVAL_LONG(return_c_value);', file=self.fd)
-+ print(' RETVAL_LONG(return_c_value);', file=self.fd)
- elif is_cstring(arg):
-- six.print_('''\
-+ print('''\
- if (return_c_value) {
- RETVAL_STRING((char*)return_c_value, 1);
- } else {
- RETVAL_NULL();
- }''', file=self.fd)
- if free:
-- six.print_(' free(return_c_value);', file=self.fd)
-+ print(' free(return_c_value);', file=self.fd)
- elif is_xml_node(arg):
-- six.print_('''\
-+ print('''\
- {
- char* xmlString = get_string_from_xml_node(return_c_value);
- if (xmlString) {
-@@ -199,44 +198,44 @@ PHP_MSHUTDOWN_FUNCTION(lasso)
- }
- ''', file=self.fd)
- if free:
-- six.print_(' lasso_release_xml_node(return_c_value);', file=self.fd)
-+ print(' lasso_release_xml_node(return_c_value);', file=self.fd)
- elif is_glist(arg):
- el_type = element_type(arg)
- if is_cstring(el_type):
-- six.print_('''\
-+ print('''\
- set_array_from_list_of_strings((GList*)return_c_value, &return_value);
- ''', file=self.fd)
- if free:
-- six.print_(' lasso_release_list_of_strings(return_c_value);', file=self.fd)
-+ print(' lasso_release_list_of_strings(return_c_value);', file=self.fd)
- elif is_xml_node(el_type):
-- six.print_('''\
-+ print('''\
- set_array_from_list_of_xmlnodes((GList*)return_c_value, &return_value);
- ''', file=self.fd)
- if free or is_transfer_full(arg):
-- six.print_(' lasso_release_list_of_xml_node(return_c_value);', file=self.fd)
-+ print(' lasso_release_list_of_xml_node(return_c_value);', file=self.fd)
- elif is_object(el_type):
-- six.print_('''\
-+ print('''\
- set_array_from_list_of_objects((GList*)return_c_value, &return_value);
- ''', file=self.fd)
- if free:
-- six.print_(' lasso_release_list_of_gobjects(return_c_value);', file=self.fd)
-+ print(' lasso_release_list_of_gobjects(return_c_value);', file=self.fd)
- else:
- raise Exception('cannot return value for %s' % (arg,))
- elif is_hashtable(arg):
- el_type = element_type(arg)
- if is_object(el_type):
-- six.print_('''\
-+ print('''\
- set_array_from_hashtable_of_objects(return_c_value, &return_value);
- ''', file=self.fd)
- else:
- if not is_cstring(arg):
-- six.print_('W: %s has no explicit string annotation' % (arg,),
-+ print('W: %s has no explicit string annotation' % (arg,),
- file=sys.stderr)
-- six.print_('''\
-+ print('''\
- set_array_from_hashtable_of_strings(return_c_value, &return_value);
- ''', file=self.fd)
- elif is_object(arg):
-- six.print_('''\
-+ print('''\
- if (return_c_value) {
- PhpGObjectPtr *self;
- self = PhpGObjectPtr_New(G_OBJECT(return_c_value));
-@@ -245,7 +244,7 @@ PHP_MSHUTDOWN_FUNCTION(lasso)
- RETVAL_NULL();
- }''', file=self.fd)
- if free:
-- six.print_(' lasso_release_gobject(return_c_value);', file=self.fd)
-+ print(' lasso_release_gobject(return_c_value);', file=self.fd)
- else:
- raise Exception('cannot return value for %s' % (arg,))
-
-@@ -257,61 +256,61 @@ PHP_MSHUTDOWN_FUNCTION(lasso)
- else:
- name = m.name
- self.functions_list.append(name)
-- six.print_('''PHP_FUNCTION(%s)
-+ print('''PHP_FUNCTION(%s)
- {''' % name, file=self.fd)
- parse_tuple_format = []
- parse_tuple_args = []
- for arg in m.args:
- if is_out(arg):
-- six.print_(' zval *php_out_%s = NULL;' % arg_name(arg), file=self.fd)
-- six.print_(' %s %s;' % (var_type(arg), arg_name(arg)), file=self.fd)
-+ print(' zval *php_out_%s = NULL;' % arg_name(arg), file=self.fd)
-+ print(' %s %s;' % (var_type(arg), arg_name(arg)), file=self.fd)
- parse_tuple_format.append('z!')
- parse_tuple_args.append('&php_out_%s' % arg_name(arg))
- elif is_cstring(arg):
- parse_tuple_format.append('s!')
- parse_tuple_args.append('&%s_str, &%s_len' % (arg_name(arg), arg_name(arg)))
-- six.print_(' %s %s = NULL;' % ('char*', arg_name(arg)), file=self.fd)
-- six.print_(' %s %s_str = NULL;' % ('char*', arg_name(arg)), file=self.fd)
-- six.print_(' %s %s_len = 0;' % ('int', arg_name(arg)), file=self.fd)
-+ print(' %s %s = NULL;' % ('char*', arg_name(arg)), file=self.fd)
-+ print(' %s %s_str = NULL;' % ('char*', arg_name(arg)), file=self.fd)
-+ print(' %s %s_len = 0;' % ('int', arg_name(arg)), file=self.fd)
- elif is_int(arg, self.binding_data) or is_boolean(arg):
- parse_tuple_format.append('l')
- parse_tuple_args.append('&%s' % arg_name(arg))
-- six.print_(' %s %s;' % ('long', arg_name(arg)), file=self.fd)
-+ print(' %s %s;' % ('long', arg_name(arg)), file=self.fd)
- elif is_time_t_pointer(arg):
- parse_tuple_format.append('l')
- parse_tuple_args.append('&%s' % (arg_name(arg),))
-- six.print_(' time_t %s = 0;' % (arg_name(arg),), file=self.fd)
-+ print(' time_t %s = 0;' % (arg_name(arg),), file=self.fd)
- elif is_xml_node(arg):
- parse_tuple_format.append('s!')
- parse_tuple_args.append('&%s_str, &%s_len' % (arg_name(arg), arg_name(arg)))
-- six.print_(' %s %s = NULL;' % ('xmlNode*', arg_name(arg)), file=self.fd)
-- six.print_(' %s %s_str = NULL;' % ('char*', arg_name(arg)), file=self.fd)
-- six.print_(' %s %s_len = 0;' % ('int', arg_name(arg)), file=self.fd)
-+ print(' %s %s = NULL;' % ('xmlNode*', arg_name(arg)), file=self.fd)
-+ print(' %s %s_str = NULL;' % ('char*', arg_name(arg)), file=self.fd)
-+ print(' %s %s_len = 0;' % ('int', arg_name(arg)), file=self.fd)
- elif is_glist(arg):
- parse_tuple_format.append('a!')
- parse_tuple_args.append('&zval_%s' % arg_name(arg))
-- six.print_(' %s zval_%s = NULL;' % ('zval*', arg_name(arg)), file=self.fd)
-- six.print_(' %s %s = NULL;' % ('GList*', arg_name(arg)), file=self.fd)
-+ print(' %s zval_%s = NULL;' % ('zval*', arg_name(arg)), file=self.fd)
-+ print(' %s %s = NULL;' % ('GList*', arg_name(arg)), file=self.fd)
- elif is_object(arg):
- parse_tuple_format.append('r')
- parse_tuple_args.append('&zval_%s' % arg_name(arg))
-- six.print_(' %s %s = NULL;' % (arg_type(arg), arg_name(arg)), file=self.fd)
-- six.print_(' %s zval_%s = NULL;' % ('zval*', arg_name(arg)), file=self.fd)
-- six.print_(' %s cvt_%s = NULL;' % ('PhpGObjectPtr*', arg_name(arg)), file=self.fd)
-+ print(' %s %s = NULL;' % (arg_type(arg), arg_name(arg)), file=self.fd)
-+ print(' %s zval_%s = NULL;' % ('zval*', arg_name(arg)), file=self.fd)
-+ print(' %s cvt_%s = NULL;' % ('PhpGObjectPtr*', arg_name(arg)), file=self.fd)
- else:
- raise Exception('Unsupported type %s %s' % (arg, m))
-
- if m.return_type:
-- six.print_(' %s return_c_value;' % m.return_type, file=self.fd)
-+ print(' %s return_c_value;' % m.return_type, file=self.fd)
- if m.return_type is not None and self.is_object(m.return_arg):
-- six.print_(' G_GNUC_UNUSED PhpGObjectPtr *self;', file=self.fd)
-- six.print_('', file=self.fd)
-+ print(' G_GNUC_UNUSED PhpGObjectPtr *self;', file=self.fd)
-+ print('', file=self.fd)
-
- parse_tuple_args = ', '.join(parse_tuple_args)
- if parse_tuple_args:
- parse_tuple_args = ', ' + parse_tuple_args
-
-- six.print_('''\
-+ print('''\
- if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "%s"%s) == FAILURE) {
- RETURN_FALSE;
- }
-@@ -321,22 +320,22 @@ PHP_MSHUTDOWN_FUNCTION(lasso)
- if is_out(arg):
- continue
- elif is_xml_node(arg):
-- six.print_('''\
-+ print('''\
- %(name)s = get_xml_node_from_string(%(name)s_str);''' % {'name': arg[1]}, file=self.fd)
- elif f.startswith('s'):
-- six.print_('''\
-+ print('''\
- %(name)s = %(name)s_str;''' % {'name': arg[1]}, file=self.fd)
- elif f.startswith('r'):
-- six.print_(' ZEND_FETCH_RESOURCE(cvt_%s, PhpGObjectPtr *, &zval_%s, -1, PHP_LASSO_SERVER_RES_NAME, le_lasso_server);' % (arg[1], arg[1]), file=self.fd)
-- six.print_(' %s = (%s)cvt_%s->obj;' % (arg[1], arg[0], arg[1]), file=self.fd)
-+ print(' ZEND_FETCH_RESOURCE(cvt_%s, PhpGObjectPtr *, &zval_%s, -1, PHP_LASSO_SERVER_RES_NAME, le_lasso_server);' % (arg[1], arg[1]), file=self.fd)
-+ print(' %s = (%s)cvt_%s->obj;' % (arg[1], arg[0], arg[1]), file=self.fd)
- elif f.startswith('a'):
- el_type = element_type(arg)
- if is_cstring(el_type):
-- six.print_(' %(name)s = get_list_from_array_of_strings(zval_%(name)s);' % {'name': arg[1]}, file=self.fd)
-+ print(' %(name)s = get_list_from_array_of_strings(zval_%(name)s);' % {'name': arg[1]}, file=self.fd)
- elif is_object(el_type):
-- six.print_(' %(name)s = get_list_from_array_of_objects(zval_%(name)s);' % {'name': arg[1]}, file=self.fd)
-+ print(' %(name)s = get_list_from_array_of_objects(zval_%(name)s);' % {'name': arg[1]}, file=self.fd)
- else:
-- six.print_('E: In %(function)s arg %(name)s is of type GList<%(elem)s>' % { 'function': m.name, 'name': arg[1], 'elem': el_type }, file=sys.stderr)
-+ print('E: In %(function)s arg %(name)s is of type GList<%(elem)s>' % { 'function': m.name, 'name': arg[1], 'elem': el_type }, file=sys.stderr)
- elif f == 'l':
- pass
- else:
-@@ -344,17 +343,17 @@ PHP_MSHUTDOWN_FUNCTION(lasso)
-
-
- if m.return_type is not None:
-- six.print_(' return_c_value = ', file=self.fd)
-+ print(' return_c_value = ', file=self.fd)
- if 'new' in m.name:
-- six.print_('(%s)' % m.return_type, file=self.fd)
-+ print('(%s)' % m.return_type, file=self.fd)
- else:
-- six.print_(' ', file=self.fd)
-+ print(' ', file=self.fd)
- def special(x):
- if is_time_t_pointer(x):
- return '%(name)s ? &%(name)s : NULL' % { 'name': arg_name(x) }
- else:
- return ref_name(x)
-- six.print_('%s(%s);' % (m.name, ', '.join([special(x) for x in m.args])), file=self.fd)
-+ print('%s(%s);' % (m.name, ', '.join([special(x) for x in m.args])), file=self.fd)
- # Free the converted arguments
-
- for f, arg in zip(parse_tuple_format, m.args):
-@@ -365,21 +364,21 @@ PHP_MSHUTDOWN_FUNCTION(lasso)
- self.set_zval('php_out_%s' % argname, argname, unref_type(arg), free = free)
- pass
- elif argtype == 'xmlNode*':
-- six.print_(' xmlFree(%s);' % argname, file=self.fd)
-+ print(' xmlFree(%s);' % argname, file=self.fd)
- elif f.startswith('a'):
- el_type = element_type(arg)
- if is_cstring(el_type):
-- six.print_(' if (%(name)s) {' % { 'name': arg[1] }, file=self.fd)
-- six.print_(' free_glist(&%(name)s,(GFunc)free);' % { 'name': arg[1] }, file=self.fd)
-- six.print_(' }', file=self.fd)
-+ print(' if (%(name)s) {' % { 'name': arg[1] }, file=self.fd)
-+ print(' free_glist(&%(name)s,(GFunc)free);' % { 'name': arg[1] }, file=self.fd)
-+ print(' }', file=self.fd)
-
- try:
- self.return_value(m.return_arg, is_transfer_full(m.return_arg, default=True))
- except:
- raise Exception('Cannot return value for function %s' % m)
-
-- six.print_('}', file=self.fd)
-- six.print_('', file=self.fd)
-+ print('}', file=self.fd)
-+ print('', file=self.fd)
-
- def generate_members(self, c):
- for m in c.members:
-@@ -392,16 +391,16 @@ PHP_MSHUTDOWN_FUNCTION(lasso)
- type = arg_type(m)
-
- function_name = '%s_%s_get' % (klassname, format_as_camelcase(name))
-- six.print_('''PHP_FUNCTION(%s)
-+ print('''PHP_FUNCTION(%s)
- {''' % function_name, file=self.fd)
- self.functions_list.append(function_name)
-
-- six.print_(' %s return_c_value;' % type, file=self.fd)
-- six.print_(' %s* this;' % klassname, file=self.fd)
-- six.print_(' zval* zval_this;', file=self.fd)
-- six.print_(' PhpGObjectPtr *cvt_this;', file=self.fd)
-- six.print_('', file=self.fd)
-- six.print_('''\
-+ print(' %s return_c_value;' % type, file=self.fd)
-+ print(' %s* this;' % klassname, file=self.fd)
-+ print(' zval* zval_this;', file=self.fd)
-+ print(' PhpGObjectPtr *cvt_this;', file=self.fd)
-+ print('', file=self.fd)
-+ print('''\
- if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r", &zval_this) == FAILURE) {
- RETURN_FALSE;
- }
-@@ -409,23 +408,23 @@ PHP_MSHUTDOWN_FUNCTION(lasso)
- ZEND_FETCH_RESOURCE(cvt_this, PhpGObjectPtr *, &zval_this, -1, PHP_LASSO_SERVER_RES_NAME, le_lasso_server);
- this = (%s*)cvt_this->obj;
- ''' % (klassname), file=self.fd)
-- six.print_(' return_c_value = (%s)this->%s;' % (type, name), file=self.fd)
-+ print(' return_c_value = (%s)this->%s;' % (type, name), file=self.fd)
- self.return_value(m)
-- six.print_('}', file=self.fd)
-- six.print_('', file=self.fd)
-+ print('}', file=self.fd)
-+ print('', file=self.fd)
-
- def generate_setter(self, c, m):
- klassname = c.name
- name = arg_name(m)
- type = arg_type(m)
- function_name = '%s_%s_set' % (klassname, format_as_camelcase(name))
-- six.print_('''PHP_FUNCTION(%s)
-+ print('''PHP_FUNCTION(%s)
- {''' % function_name, file=self.fd)
- self.functions_list.append(function_name)
-
-- six.print_(' %s* this;' % klassname, file=self.fd)
-- six.print_(' zval* zval_this;', file=self.fd)
-- six.print_(' PhpGObjectPtr *cvt_this;', file=self.fd)
-+ print(' %s* this;' % klassname, file=self.fd)
-+ print(' zval* zval_this;', file=self.fd)
-+ print(' PhpGObjectPtr *cvt_this;', file=self.fd)
-
- # FIXME: This bloc should be factorised
- parse_tuple_format = ''
-@@ -434,41 +433,41 @@ PHP_MSHUTDOWN_FUNCTION(lasso)
- # arg_type = arg_type.replace('const ', '')
- parse_tuple_format += 's'
- parse_tuple_args.append('&%s_str, &%s_len' % (name, name))
-- six.print_(' %s %s_str = NULL;' % ('char*', name), file=self.fd)
-- six.print_(' %s %s_len = 0;' % ('int', name), file=self.fd)
-+ print(' %s %s_str = NULL;' % ('char*', name), file=self.fd)
-+ print(' %s %s_len = 0;' % ('int', name), file=self.fd)
- elif is_int(m, self.binding_data) or is_boolean(m):
- parse_tuple_format += 'l'
- parse_tuple_args.append('&%s' % name)
-- six.print_(' %s %s;' % ('long', name), file=self.fd)
-+ print(' %s %s;' % ('long', name), file=self.fd)
- # Must also handle lists of Objects
- elif is_glist(m) or is_hashtable(m):
- parse_tuple_format += 'a'
- parse_tuple_args.append('&zval_%s' % name)
-- six.print_(' %s zval_%s;' % ('zval*', name), file=self.fd)
-+ print(' %s zval_%s;' % ('zval*', name), file=self.fd)
- elif is_object(m):
- parse_tuple_format += 'r'
- parse_tuple_args.append('&zval_%s' % name)
-- six.print_(' %s zval_%s = NULL;' % ('zval*', name), file=self.fd)
-- six.print_(' %s cvt_%s = NULL;' % ('PhpGObjectPtr*', name), file=self.fd)
-+ print(' %s zval_%s = NULL;' % ('zval*', name), file=self.fd)
-+ print(' %s cvt_%s = NULL;' % ('PhpGObjectPtr*', name), file=self.fd)
- else:
- raise Exception('Cannot make a setter for %s.%s' % (c,m))
-
- if parse_tuple_args:
- parse_tuple_arg = parse_tuple_args[0]
- else:
-- six.print_('}', file=self.fd)
-- six.print_('', file=self.fd)
-+ print('}', file=self.fd)
-+ print('', file=self.fd)
- return
-
-- six.print_('', file=self.fd)
-- six.print_('''\
-+ print('', file=self.fd)
-+ print('''\
- if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r%s", &zval_this, %s) == FAILURE) {
- return;
- }
- ''' % (parse_tuple_format, parse_tuple_arg), file=self.fd)
-
- # Get 'this' object
-- six.print_('''\
-+ print('''\
- ZEND_FETCH_RESOURCE(cvt_this, PhpGObjectPtr *, &zval_this, -1, PHP_LASSO_SERVER_RES_NAME, le_lasso_server);
- this = (%s*)cvt_this->obj;
- ''' % klassname, file=self.fd)
-@@ -476,51 +475,51 @@ PHP_MSHUTDOWN_FUNCTION(lasso)
- # Set new value
- d = { 'name': name, 'type': type }
- if is_int(m, self.binding_data) or is_boolean(m):
-- six.print_(' this->%s = %s;' % (name, name), file=self.fd)
-+ print(' this->%s = %s;' % (name, name), file=self.fd)
- elif is_cstring(m):
-- six.print_(' lasso_assign_string(this->%(name)s, %(name)s_str);' % d, file=self.fd)
-+ print(' lasso_assign_string(this->%(name)s, %(name)s_str);' % d, file=self.fd)
- elif is_xml_node(m):
-- six.print_(' lasso_assign_new_xml_node(this->%(name)s, get_xml_node_from_string(%(name)s_str));' % d, file=self.fd)
-+ print(' lasso_assign_new_xml_node(this->%(name)s, get_xml_node_from_string(%(name)s_str));' % d, file=self.fd)
- elif is_glist(m):
- el_type = element_type(m)
- if is_cstring(el_type):
-- six.print_(' lasso_assign_new_list_of_strings(this->%(name)s, get_list_from_array_of_strings(zval_%(name)s));' % d, file=self.fd)
-+ print(' lasso_assign_new_list_of_strings(this->%(name)s, get_list_from_array_of_strings(zval_%(name)s));' % d, file=self.fd)
- elif is_xml_node(el_type):
-- six.print_(' lasso_assign_new_list_of_xml_node(this->%(name)s, get_list_from_array_of_xmlnodes(zval_%(name)s))' % d, file=self.fd)
-+ print(' lasso_assign_new_list_of_xml_node(this->%(name)s, get_list_from_array_of_xmlnodes(zval_%(name)s))' % d, file=self.fd)
- elif is_object(el_type):
-- six.print_(' lasso_assign_new_list_of_gobjects(this->%(name)s, get_list_from_array_of_objects(zval_%(name)s));' % d, file=self.fd)
-+ print(' lasso_assign_new_list_of_gobjects(this->%(name)s, get_list_from_array_of_objects(zval_%(name)s));' % d, file=self.fd)
- else:
- raise Exception('Cannot create C setter for %s.%s' % (c,m))
- elif is_hashtable(m):
- el_type = element_type(m)
-- six.print_('''\
-+ print('''\
- {
- GHashTable *oldhash = this->%(name)s;''' % d, file=self.fd)
- if is_object(el_type):
-- six.print_(' this->%(name)s = get_hashtable_from_array_of_objects(zval_%(name)s);' % d, file=self.fd)
-+ print(' this->%(name)s = get_hashtable_from_array_of_objects(zval_%(name)s);' % d, file=self.fd)
- else:
-- six.print_(' this->%(name)s = get_hashtable_from_array_of_strings(zval_%(name)s);' % d, file=self.fd)
-- six.print_(' g_hash_table_destroy(oldhash);', file=self.fd)
-- six.print_(' }', file=self.fd)
-+ print(' this->%(name)s = get_hashtable_from_array_of_strings(zval_%(name)s);' % d, file=self.fd)
-+ print(' g_hash_table_destroy(oldhash);', file=self.fd)
-+ print(' }', file=self.fd)
- elif is_object(m):
-- six.print_(' ZEND_FETCH_RESOURCE(cvt_%(name)s, PhpGObjectPtr*, &zval_%(name)s, -1, PHP_LASSO_SERVER_RES_NAME, le_lasso_server);' % d, file=self.fd)
-- six.print_(' lasso_assign_gobject(this->%(name)s, cvt_%(name)s->obj);' % d, file=self.fd)
-+ print(' ZEND_FETCH_RESOURCE(cvt_%(name)s, PhpGObjectPtr*, &zval_%(name)s, -1, PHP_LASSO_SERVER_RES_NAME, le_lasso_server);' % d, file=self.fd)
-+ print(' lasso_assign_gobject(this->%(name)s, cvt_%(name)s->obj);' % d, file=self.fd)
-
-- six.print_('}', file=self.fd)
-- six.print_('', file=self.fd)
-+ print('}', file=self.fd)
-+ print('', file=self.fd)
-
- def generate_functions_list(self):
-- six.print_('''\
-+ print('''\
- static zend_function_entry lasso_functions[] = {''', file=self.fd)
- for m in self.functions_list:
-- six.print_(' PHP_FE(%s, NULL)' % m, file=self.fd)
-- six.print_('''\
-+ print(' PHP_FE(%s, NULL)' % m, file=self.fd)
-+ print('''\
- {NULL, NULL, NULL, 0, 0}
- };
- ''', file=self.fd)
-
- def generate_footer(self):
-- six.print_('''\
-+ print('''\
- zend_module_entry lasso_module_entry = {
- #if ZEND_MODULE_API_NO >= 20010901
- STANDARD_MODULE_HEADER,
-diff --git a/bindings/php7/php_code.py b/bindings/php7/php_code.py
-index a4eaf929..3f7b1a36 100644
---- a/bindings/php7/php_code.py
-+++ b/bindings/php7/php_code.py
-@@ -20,7 +20,6 @@
-
- import re
- import sys
--import six
-
- from utils import *
-
-@@ -40,7 +39,7 @@ class PhpCode:
- self.generate_footer()
-
- def generate_header(self):
-- six.print_('''\
-+ print('''\
- <?php
-
- /* this file has been generated automatically; do not edit */
-@@ -107,27 +106,27 @@ function lassoGetRequestTypeFromSoapMsg($mesg) {
- else:
- inheritence = ' extends LassoObject'
-
-- six.print_('/**', file=self.fd)
-- six.print_(' * @package Lasso', file=self.fd)
-- six.print_(' */', file=self.fd)
-- six.print_('class %(class_name)s%(inheritence)s {' % locals(), file=self.fd)
-+ print('/**', file=self.fd)
-+ print(' * @package Lasso', file=self.fd)
-+ print(' */', file=self.fd)
-+ print('class %(class_name)s%(inheritence)s {' % locals(), file=self.fd)
-
- if klass.members or klass.methods:
- self.generate_constructors(klass)
- self.generate_getters_and_setters(klass)
- self.generate_methods(klass)
-
-- six.print_('}', file=self.fd)
-- six.print_('', file=self.fd)
-+ print('}', file=self.fd)
-+ print('', file=self.fd)
-
- # Add a special class to get an object instance without initialising
-- six.print_('/**', file=self.fd)
-- six.print_(' * @package Lasso', file=self.fd)
-- six.print_(' */', file=self.fd)
-- six.print_('class %(class_name)sNoInit extends %(class_name)s {' % locals(), file=self.fd)
-- six.print_(' public function __construct() {}', file=self.fd)
-- six.print_('}', file=self.fd)
-- six.print_('', file=self.fd)
-+ print('/**', file=self.fd)
-+ print(' * @package Lasso', file=self.fd)
-+ print(' */', file=self.fd)
-+ print('class %(class_name)sNoInit extends %(class_name)s {' % locals(), file=self.fd)
-+ print(' public function __construct() {}', file=self.fd)
-+ print('}', file=self.fd)
-+ print('', file=self.fd)
-
- def generate_constructors(self, klass):
- method_prefix = format_as_underscored(klass.name) + '_'
-@@ -152,13 +151,13 @@ function lassoGetRequestTypeFromSoapMsg($mesg) {
- c_args = ', '.join(c_args)
- # XXX: could check $this->_cptr->typename to see if it got the
- # right class type
-- six.print_(' public $_cptr = null;', file=self.fd)
-- six.print_('', file=self.fd)
-- six.print_(' public function __construct(%s) {' % php_args, file=self.fd)
-- six.print_(' $this->_cptr = %s(%s);' % (m.name, c_args), file=self.fd)
-- six.print_(' if (is_null($this->_cptr)) { throw new Exception("Constructor for ', klass.name, ' failed "); }', file=self.fd)
-- six.print_(' }', file=self.fd)
-- six.print_('', file=self.fd)
-+ print(' public $_cptr = null;', file=self.fd)
-+ print('', file=self.fd)
-+ print(' public function __construct(%s) {' % php_args, file=self.fd)
-+ print(' $this->_cptr = %s(%s);' % (m.name, c_args), file=self.fd)
-+ print(' if (is_null($this->_cptr)) { throw new Exception("Constructor for ', klass.name, ' failed "); }', file=self.fd)
-+ print(' }', file=self.fd)
-+ print('', file=self.fd)
-
- elif name.startswith(method_prefix) and m.args \
- and clean_type(unconstify(m.args[0][0])) != klass.name:
-@@ -185,10 +184,10 @@ function lassoGetRequestTypeFromSoapMsg($mesg) {
- c_args.append('$%s' % arg_name)
- php_args = ', '.join(php_args)
- c_args = ', '.join(c_args)
-- six.print_(' public static function %s(%s) {' % (php_name, php_args), file=self.fd)
-- six.print_(' return cptrToPhp(%s(%s));' % (m.name, c_args), file=self.fd)
-- six.print_(' }', file=self.fd)
-- six.print_('', file=self.fd)
-+ print(' public static function %s(%s) {' % (php_name, php_args), file=self.fd)
-+ print(' return cptrToPhp(%s(%s));' % (m.name, c_args), file=self.fd)
-+ print(' }', file=self.fd)
-+ print('', file=self.fd)
-
-
-
-@@ -200,50 +199,50 @@ function lassoGetRequestTypeFromSoapMsg($mesg) {
- 'class': c.name
- }
-
-- six.print_('''\
-+ print('''\
- /**
- * @return %(docstring)s
- */
- protected function get_%(name)s() {''' % d, file=self.fd)
-- six.print_(' $t = %(class)s_%(name)s_get($this->_cptr);' % d, file=self.fd)
-+ print(' $t = %(class)s_%(name)s_get($this->_cptr);' % d, file=self.fd)
- if self.is_object(m):
-- six.print_(' $t = cptrToPhp($t);', file=self.fd)
-+ print(' $t = cptrToPhp($t);', file=self.fd)
- elif (is_glist(m) or is_hashtable(m)) and self.is_object(element_type(m)):
-- six.print_(' foreach ($t as $key => $item) {', file=self.fd)
-- six.print_(' $t[$key] = cptrToPhp($item);', file=self.fd)
-- six.print_(' }', file=self.fd)
-+ print(' foreach ($t as $key => $item) {', file=self.fd)
-+ print(' $t[$key] = cptrToPhp($item);', file=self.fd)
-+ print(' }', file=self.fd)
- elif is_hashtable(m) or (is_glist(m) and (is_cstring(element_type(m)) \
- or is_xml_node(element_type(m)))) or is_int(m, self.binding_data) \
- or is_boolean(m) or is_cstring(m) or is_xml_node(m):
- pass
- else:
- raise Exception('Cannot generate a Php getter %s.%s' % (c,m))
-- six.print_(' return $t;', file=self.fd)
-- six.print_(' }', file=self.fd)
-+ print(' return $t;', file=self.fd)
-+ print(' }', file=self.fd)
-
- def generate_setter(self, c, m):
- d = { 'type': arg_type(m), 'name': format_as_camelcase(arg_name(m)),
- 'docstring': self.get_docstring_return_type(arg_type(m)), 'class': c.name }
-- six.print_(' protected function set_%(name)s($value) {' % d, file=self.fd)
-+ print(' protected function set_%(name)s($value) {' % d, file=self.fd)
- if self.is_object(m):
-- six.print_(' $value = $value->_cptr;', file=self.fd)
-+ print(' $value = $value->_cptr;', file=self.fd)
- elif (is_glist(m) or is_hashtable(m)) and self.is_object(element_type(m)):
-- six.print_(' $array = array();', file=self.fd)
-- six.print_(' if (!is_null($value)) {', file=self.fd)
-- six.print_(' foreach ($value as $key => $item) {', file=self.fd)
-- six.print_(' $array[$key] = $item->_cptr;', file=self.fd)
-- six.print_(' }', file=self.fd)
-- six.print_(' }', file=self.fd)
-- six.print_(' $value = $array;', file=self.fd)
-+ print(' $array = array();', file=self.fd)
-+ print(' if (!is_null($value)) {', file=self.fd)
-+ print(' foreach ($value as $key => $item) {', file=self.fd)
-+ print(' $array[$key] = $item->_cptr;', file=self.fd)
-+ print(' }', file=self.fd)
-+ print(' }', file=self.fd)
-+ print(' $value = $array;', file=self.fd)
- elif is_hashtable(m) or (is_glist(m) and (is_cstring(element_type(m)) \
- or is_xml_node(element_type(m)))) or is_int(m, self.binding_data) \
- or is_boolean(m) or is_cstring(m) or is_xml_node(m):
- pass
- else:
- raise Exception('Cannot generate a Php setter %s.%s' % (c,m))
-- six.print_(' %(class)s_%(name)s_set($this->_cptr, $value);' % d, file=self.fd)
-- six.print_(' }', file=self.fd)
-- six.print_('', file=self.fd)
-+ print(' %(class)s_%(name)s_set($this->_cptr, $value);' % d, file=self.fd)
-+ print(' }', file=self.fd)
-+ print('', file=self.fd)
-
- def generate_getters_and_setters(self, klass):
- for m in klass.members:
-@@ -271,27 +270,27 @@ function lassoGetRequestTypeFromSoapMsg($mesg) {
- mname = re.match(r'lasso_.*_get_(\w+)', meth_name).group(1)
- mname = format_as_camelcase(mname)
-
-- six.print_(' /**', file=self.fd)
-- six.print_(' * @return %s' % self.get_docstring_return_type(m.return_type), file=self.fd)
-- six.print_(' */', file=self.fd)
-- six.print_(' protected function get_%s() {' % mname, file=self.fd)
-+ print(' /**', file=self.fd)
-+ print(' * @return %s' % self.get_docstring_return_type(m.return_type), file=self.fd)
-+ print(' */', file=self.fd)
-+ print(' protected function get_%s() {' % mname, file=self.fd)
- if self.is_object(m.return_type):
-- six.print_(' $cptr = %s($this->_cptr);' % meth_name, file=self.fd)
-- six.print_(' if (! is_null($cptr)) {', file=self.fd)
-- six.print_(' return cptrToPhp($cptr);', file=self.fd)
-- six.print_(' }', file=self.fd)
-- six.print_(' return null;', file=self.fd)
-+ print(' $cptr = %s($this->_cptr);' % meth_name, file=self.fd)
-+ print(' if (! is_null($cptr)) {', file=self.fd)
-+ print(' return cptrToPhp($cptr);', file=self.fd)
-+ print(' }', file=self.fd)
-+ print(' return null;', file=self.fd)
- else:
-- six.print_(' return %s($this->_cptr);' % meth_name, file=self.fd)
-- six.print_(' }', file=self.fd)
-+ print(' return %s($this->_cptr);' % meth_name, file=self.fd)
-+ print(' }', file=self.fd)
- if setter:
-- six.print_(' protected function set_%s($value) {' % mname, file=self.fd)
-+ print(' protected function set_%s($value) {' % mname, file=self.fd)
- if self.is_object(m.return_type):
-- six.print_(' %s($this->_cptr, $value->_cptr);' % setter.name, file=self.fd)
-+ print(' %s($this->_cptr, $value->_cptr);' % setter.name, file=self.fd)
- else:
-- six.print_(' %s($this->_cptr, $value);' % setter.name, file=self.fd)
-- six.print_(' }', file=self.fd)
-- six.print_('', file=self.fd)
-+ print(' %s($this->_cptr, $value);' % setter.name, file=self.fd)
-+ print(' }', file=self.fd)
-+ print('', file=self.fd)
-
- # second pass on methods, real methods
- method_prefix = format_as_underscored(klass.name) + '_'
-@@ -356,26 +355,26 @@ function lassoGetRequestTypeFromSoapMsg($mesg) {
- c_args = ''
-
- if m.docstring:
-- six.print_(self.generate_docstring(m, mname, 4), file=self.fd)
-- six.print_(' public function %s(%s) {' % (
-+ print(self.generate_docstring(m, mname, 4), file=self.fd)
-+ print(' public function %s(%s) {' % (
- format_underscore_as_camelcase(mname), php_args), file=self.fd)
- if m.return_type == 'void':
-- six.print_(' %s($this->_cptr%s);' % (cname, c_args), file=self.fd)
-+ print(' %s($this->_cptr%s);' % (cname, c_args), file=self.fd)
- elif is_rc(m.return_type):
-- six.print_(' $rc = %s($this->_cptr%s);' % (cname, c_args), file=self.fd)
-- six.print_(' if ($rc == 0) {', file=self.fd)
-- six.print_(' return 0;', file=self.fd)
-- six.print_(' } else if ($rc > 0) {', file=self.fd) # recoverable error
-- six.print_(' return $rc;', file=self.fd)
-- six.print_(' } else if ($rc < 0) {', file=self.fd) # unrecoverable error
-- six.print_(' LassoError::throw_on_rc($rc);', file=self.fd)
-- six.print_(' }', file=self.fd)
-+ print(' $rc = %s($this->_cptr%s);' % (cname, c_args), file=self.fd)
-+ print(' if ($rc == 0) {', file=self.fd)
-+ print(' return 0;', file=self.fd)
-+ print(' } else if ($rc > 0) {', file=self.fd) # recoverable error
-+ print(' return $rc;', file=self.fd)
-+ print(' } else if ($rc < 0) {', file=self.fd) # unrecoverable error
-+ print(' LassoError::throw_on_rc($rc);', file=self.fd)
-+ print(' }', file=self.fd)
- else:
-- six.print_(' return %s($this->_cptr%s);' % (cname, c_args), file=self.fd)
-- six.print_(' }', file=self.fd)
-- six.print_('', file=self.fd)
-+ print(' return %s($this->_cptr%s);' % (cname, c_args), file=self.fd)
-+ print(' }', file=self.fd)
-+ print('', file=self.fd)
-
-- six.print_('', file=self.fd)
-+ print('', file=self.fd)
-
- def generate_docstring(self, func, method_name, indent):
- docstring = func.docstring.orig_docstring
-@@ -435,7 +434,7 @@ function lassoGetRequestTypeFromSoapMsg($mesg) {
- cat = exc_cat.attrib.get('name')
- done_cats.append(cat)
- parent_cat = exc_cat.attrib.get('parent', '')
-- six.print_('''\
-+ print('''\
- /**
- * @package Lasso
- */
-@@ -460,7 +459,7 @@ class Lasso%sError extends Lasso%sError {}
- else:
- parent_cat = ''
-
-- six.print_('''\
-+ print('''\
- /**
- * @package Lasso
- */
-@@ -468,7 +467,7 @@ class Lasso%sError extends Lasso%sError {}
- ''' % (cat, parent_cat), file=self.fd)
-
- if detail not in exceptions_dict:
-- six.print_('''\
-+ print('''\
- /**
- * @package Lasso
- */
-@@ -478,7 +477,7 @@ class Lasso%sError extends Lasso%sError {
- ''' % (detail, cat, c[1]), file=self.fd)
- exceptions_dict[detail] = c[1]
-
-- six.print_('''\
-+ print('''\
- /**
- * @package Lasso
- */
-@@ -486,9 +485,9 @@ class LassoError extends Exception {
- private static $exceptions_dict = array(''', file=self.fd)
-
- for k, v in exceptions_dict.items():
-- six.print_(' %s => "Lasso%sError",' % (v, k), file=self.fd)
-+ print(' %s => "Lasso%sError",' % (v, k), file=self.fd)
-
-- six.print_('''\
-+ print('''\
- );
-
- public static function throw_on_rc($rc) {
-@@ -502,6 +501,6 @@ class LassoError extends Exception {
- ''', file=self.fd)
-
- def generate_footer(self):
-- six.print_('''\
-+ print('''\
- ?>''', file=self.fd)
-
-diff --git a/bindings/php7/wrapper_header.py b/bindings/php7/wrapper_header.py
-index 5236571a..22908945 100644
---- a/bindings/php7/wrapper_header.py
-+++ b/bindings/php7/wrapper_header.py
-@@ -17,7 +17,6 @@
- #
- # You should have received a copy of the GNU General Public License
- # along with this program; if not, see <http://www.gnu.org/licenses/>.
--import six
-
- class WrapperHeader:
- def __init__(self, binding_data, fd, functions_list):
-@@ -32,7 +31,7 @@ class WrapperHeader:
-
- def generate_header(self):
- # FIXME: Get the current version and name
-- six.print_('''\
-+ print('''\
- /* this file has been generated automatically; do not edit */
-
- #include "../../config.h"
-@@ -51,11 +50,11 @@ PHP_MSHUTDOWN_FUNCTION(lasso);
-
- def generate_functions_list(self):
- for m in self.functions_list:
-- six.print_('PHP_FUNCTION(%s);' % m, file=self.fd)
-- six.print_('', file=self.fd)
-+ print('PHP_FUNCTION(%s);' % m, file=self.fd)
-+ print('', file=self.fd)
-
- def generate_footer(self):
-- six.print_('''\
-+ print('''\
- extern zend_module_entry lasso_module_entry;
- #define phpext_lasso_ptr &lasso_module_entry
-
-diff --git a/bindings/php7/wrapper_source.py b/bindings/php7/wrapper_source.py
-index c429e563..3d434402 100644
---- a/bindings/php7/wrapper_source.py
-+++ b/bindings/php7/wrapper_source.py
-@@ -20,7 +20,6 @@
-
- import sys
- import os
--import six
-
- from utils import *
-
-@@ -53,17 +52,17 @@ class WrapperSource:
- self.functions_list.append('lasso_init')
- self.functions_list.append('lasso_shutdown')
-
-- six.print_('''\
-+ print('''\
- /* this file has been generated automatically; do not edit */
- ''', file=self.fd)
-
-- six.print_(open(os.path.join(self.src_dir,'wrapper_source_top.c')).read(), file=self.fd)
-+ print(open(os.path.join(self.src_dir,'wrapper_source_top.c')).read(), file=self.fd)
-
- for h in self.binding_data.headers:
-- six.print_('#include <%s>' % h, file=self.fd)
-- six.print_('', file=self.fd)
-+ print('#include <%s>' % h, file=self.fd)
-+ print('', file=self.fd)
-
-- six.print_('''\
-+ print('''\
- PHP_MINIT_FUNCTION(lasso)
- {
- le_lasso_server = zend_register_list_destructors_ex(php_gobject_generic_destructor, NULL, PHP_LASSO_SERVER_RES_NAME, module_number);
-@@ -71,25 +70,25 @@ PHP_MINIT_FUNCTION(lasso)
- ''', file=self.fd)
-
- def generate_constants(self):
-- six.print_(' /* Constants (both enums and defines) */', file=self.fd)
-+ print(' /* Constants (both enums and defines) */', file=self.fd)
- for c in self.binding_data.constants:
- if c[0] == 'i':
-- six.print_(' REGISTER_LONG_CONSTANT("%s", %s, CONST_CS|CONST_PERSISTENT);' % (c[1], c[1]), file=self.fd)
-+ print(' REGISTER_LONG_CONSTANT("%s", %s, CONST_CS|CONST_PERSISTENT);' % (c[1], c[1]), file=self.fd)
- elif c[0] == 's':
-- six.print_(' REGISTER_STRING_CONSTANT("%s", (char*) %s, CONST_CS|CONST_PERSISTENT);' % (c[1], c[1]), file=self.fd)
-+ print(' REGISTER_STRING_CONSTANT("%s", (char*) %s, CONST_CS|CONST_PERSISTENT);' % (c[1], c[1]), file=self.fd)
- elif c[0] == 'b':
-- six.print_('''\
-+ print('''\
- #ifdef %s
- REGISTER_LONG_CONSTANT("%s", 1, CONST_CS|CONST_PERSISTENT);
- #else
- REGISTER_LONG_CONSTANT("%s", 0, CONST_CS|CONST_PERSISTENT);
- #endif''' % (c[1], c[1], c[1]), file=self.fd)
- else:
-- six.print_('E: unknown constant type: %r' % c[0], file=sys.stderr)
-- six.print_('', file=self.fd)
-+ print('E: unknown constant type: %r' % c[0], file=sys.stderr)
-+ print('', file=self.fd)
-
- def generate_middle(self):
-- six.print_('''\
-+ print('''\
- return SUCCESS;
- }
-
-@@ -107,21 +106,21 @@ PHP_MSHUTDOWN_FUNCTION(lasso)
- # first we free the previous value
- p = (zval_name, c_variable)
- q = { 'zval_name' : zval_name, 'c_variable' : c_variable }
-- six.print_(' zval_dtor(%s);' % zval_name, file=self.fd)
-+ print(' zval_dtor(%s);' % zval_name, file=self.fd)
- if is_pointer(type):
-- six.print_(' if (! %s) {' % c_variable, file=self.fd)
-- six.print_(' ZVAL_NULL(%s);' % zval_name, file=self.fd)
-- six.print_(' } else {', file=self.fd)
-+ print(' if (! %s) {' % c_variable, file=self.fd)
-+ print(' ZVAL_NULL(%s);' % zval_name, file=self.fd)
-+ print(' } else {', file=self.fd)
- if is_int(type, self.binding_data):
-- six.print_(' ZVAL_LONG(%s, %s);' % p, file=self.fd)
-+ print(' ZVAL_LONG(%s, %s);' % p, file=self.fd)
- elif is_boolean(type):
-- six.print_(' ZVAL_BOOL(%s, %s);' % p, file=self.fd)
-+ print(' ZVAL_BOOL(%s, %s);' % p, file=self.fd)
- elif is_cstring(type):
-- six.print_(' ZVAL_STRING(%s, (char*)%s);' % p, file=self.fd)
-+ print(' ZVAL_STRING(%s, (char*)%s);' % p, file=self.fd)
- if free and not is_const(type):
-- six.print_('g_free(%s)' % c_variable, file=self.fd)
-+ print('g_free(%s)' % c_variable, file=self.fd)
- elif arg_type(type) == 'xmlNode*':
-- six.print_('''\
-+ print('''\
- {
- char* xmlString = get_string_from_xml_node(%(c_variable)s);
- if (xmlString) {
-@@ -146,11 +145,11 @@ PHP_MSHUTDOWN_FUNCTION(lasso)
- free_function = 'g_list_free(%(c_variable)s);'
- else:
- raise Exception('unknown element-type: ' + repr(type))
-- six.print_(' %s((GList*)%s, &%s);' % (function, c_variable, zval_name), file=self.fd)
-+ print(' %s((GList*)%s, &%s);' % (function, c_variable, zval_name), file=self.fd)
- if free:
-- six.print_(' ', free_function % q, file=self.fd)
-+ print(' ', free_function % q, file=self.fd)
- elif is_object(type):
-- six.print_('''\
-+ print('''\
- if (G_IS_OBJECT(%(c_variable)s)) {
- PhpGObjectPtr *obj = PhpGObjectPtr_New(G_OBJECT(%(c_variable)s));
- zend_resource *res = zend_register_resource(obj, le_lasso_server);
-@@ -159,7 +158,7 @@ PHP_MSHUTDOWN_FUNCTION(lasso)
- ZVAL_NULL(%(zval_name)s);
- }''' % q, file=self.fd)
- if free:
-- six.print_('''\
-+ print('''\
- if (%(c_variable)s) {
- g_object_unref(%(c_variable)s); // If constructor ref is off by one'
- }''' % q, file=self.fd)
-@@ -167,7 +166,7 @@ PHP_MSHUTDOWN_FUNCTION(lasso)
- else:
- raise Exception('unknown type: ' + repr(type) + unconstify(arg_type(type)))
- if is_pointer(type):
-- six.print_(' }', file=self.fd)
-+ print(' }', file=self.fd)
-
-
-
-@@ -176,20 +175,20 @@ PHP_MSHUTDOWN_FUNCTION(lasso)
- return
-
- if is_boolean(arg):
-- six.print_(' RETVAL_BOOL(return_c_value);', file=self.fd)
-+ print(' RETVAL_BOOL(return_c_value);', file=self.fd)
- elif is_int(arg, self.binding_data):
-- six.print_(' RETVAL_LONG(return_c_value);', file=self.fd)
-+ print(' RETVAL_LONG(return_c_value);', file=self.fd)
- elif is_cstring(arg):
-- six.print_('''\
-+ print('''\
- if (return_c_value) {
- RETVAL_STRING((char*)return_c_value);
- } else {
- RETVAL_NULL();
- }''', file=self.fd)
- if free:
-- six.print_(' free(return_c_value);', file=self.fd)
-+ print(' free(return_c_value);', file=self.fd)
- elif is_xml_node(arg):
-- six.print_('''\
-+ print('''\
- {
- char* xmlString = get_string_from_xml_node(return_c_value);
- if (xmlString) {
-@@ -200,43 +199,43 @@ PHP_MSHUTDOWN_FUNCTION(lasso)
- }
- ''', file=self.fd)
- if free:
-- six.print_(' lasso_release_xml_node(return_c_value);', file=self.fd)
-+ print(' lasso_release_xml_node(return_c_value);', file=self.fd)
- elif is_glist(arg):
- el_type = element_type(arg)
- if is_cstring(el_type):
-- six.print_('''\
-+ print('''\
- set_array_from_list_of_strings((GList*)return_c_value, &return_value);
- ''', file=self.fd)
- if free:
-- six.print_(' lasso_release_list_of_strings(return_c_value);', file=self.fd)
-+ print(' lasso_release_list_of_strings(return_c_value);', file=self.fd)
- elif is_xml_node(el_type):
-- six.print_('''\
-+ print('''\
- set_array_from_list_of_xmlnodes((GList*)return_c_value, &return_value);
- ''', file=self.fd)
- if free or is_transfer_full(arg):
-- six.print_(' lasso_release_list_of_xml_node(return_c_value);', file=self.fd)
-+ print(' lasso_release_list_of_xml_node(return_c_value);', file=self.fd)
- elif is_object(el_type):
-- six.print_('''\
-+ print('''\
- set_array_from_list_of_objects((GList*)return_c_value, &return_value);
- ''', file=self.fd)
- if free:
-- six.print_(' lasso_release_list_of_gobjects(return_c_value);', file=self.fd)
-+ print(' lasso_release_list_of_gobjects(return_c_value);', file=self.fd)
- else:
- raise Exception('cannot return value for %s' % (arg,))
- elif is_hashtable(arg):
- el_type = element_type(arg)
- if is_object(el_type):
-- six.print_('''\
-+ print('''\
- set_array_from_hashtable_of_objects(return_c_value, &return_value);
- ''', file=self.fd)
- else:
- if not is_cstring(arg):
- print >>sys.stderr, 'W: %s has no explicit string annotation' % (arg,)
-- six.print_('''\
-+ print('''\
- set_array_from_hashtable_of_strings(return_c_value, &return_value);
- ''', file=self.fd)
- elif is_object(arg):
-- six.print_('''\
-+ print('''\
- if (return_c_value) {
- PhpGObjectPtr *self;
- self = PhpGObjectPtr_New(G_OBJECT(return_c_value));
-@@ -246,7 +245,7 @@ PHP_MSHUTDOWN_FUNCTION(lasso)
- RETVAL_NULL();
- }''', file=self.fd)
- if free:
-- six.print_(' lasso_release_gobject(return_c_value);', file=self.fd)
-+ print(' lasso_release_gobject(return_c_value);', file=self.fd)
- else:
- raise Exception('cannot return value for %s' % (arg,))
-
-@@ -258,26 +257,26 @@ PHP_MSHUTDOWN_FUNCTION(lasso)
- else:
- name = m.name
- self.functions_list.append(name)
-- six.print_('''PHP_FUNCTION(%s)
-+ print('''PHP_FUNCTION(%s)
- {''' % name, file=self.fd)
- parse_tuple_format = []
- parse_tuple_args = []
- for arg in m.args:
- if is_out(arg):
-- six.print_(' zval *php_out_%s = NULL;' % arg_name(arg), file=self.fd)
-- six.print_(' %s %s;' % (var_type(arg), arg_name(arg)), file=self.fd)
-+ print(' zval *php_out_%s = NULL;' % arg_name(arg), file=self.fd)
-+ print(' %s %s;' % (var_type(arg), arg_name(arg)), file=self.fd)
- parse_tuple_format.append('z!')
- parse_tuple_args.append('&php_out_%s' % arg_name(arg))
- elif is_cstring(arg):
- parse_tuple_format.append('s!')
- parse_tuple_args.append('&%s_str, &%s_len' % (arg_name(arg), arg_name(arg)))
-- six.print_(' %s %s = NULL;' % ('char*', arg_name(arg)), file=self.fd)
-- six.print_(' %s %s_str = NULL;' % ('char*', arg_name(arg)), file=self.fd)
-- six.print_(' %s %s_len = 0;' % ('size_t', arg_name(arg)), file=self.fd)
-+ print(' %s %s = NULL;' % ('char*', arg_name(arg)), file=self.fd)
-+ print(' %s %s_str = NULL;' % ('char*', arg_name(arg)), file=self.fd)
-+ print(' %s %s_len = 0;' % ('size_t', arg_name(arg)), file=self.fd)
- elif is_int(arg, self.binding_data) or is_boolean(arg):
- parse_tuple_format.append('l')
- parse_tuple_args.append('&%s' % arg_name(arg))
-- six.print_(' %s %s;' % ('long', arg_name(arg)), file=self.fd)
-+ print(' %s %s;' % ('long', arg_name(arg)), file=self.fd)
- elif is_time_t_pointer(arg):
- parse_tuple_format.append('l')
- parse_tuple_args.append('&%s' % (arg_name(arg),))
-@@ -285,34 +284,34 @@ PHP_MSHUTDOWN_FUNCTION(lasso)
- elif is_xml_node(arg):
- parse_tuple_format.append('s!')
- parse_tuple_args.append('&%s_str, &%s_len' % (arg_name(arg), arg_name(arg)))
-- six.print_(' %s %s = NULL;' % ('xmlNode*', arg_name(arg)), file=self.fd)
-- six.print_(' %s %s_str = NULL;' % ('char*', arg_name(arg)), file=self.fd)
-- six.print_(' %s %s_len = 0;' % ('size_t', arg_name(arg)), file=self.fd)
-+ print(' %s %s = NULL;' % ('xmlNode*', arg_name(arg)), file=self.fd)
-+ print(' %s %s_str = NULL;' % ('char*', arg_name(arg)), file=self.fd)
-+ print(' %s %s_len = 0;' % ('size_t', arg_name(arg)), file=self.fd)
- elif is_glist(arg):
- parse_tuple_format.append('a!')
- parse_tuple_args.append('&zval_%s' % arg_name(arg))
-- six.print_(' %s zval_%s = NULL;' % ('zval*', arg_name(arg)), file=self.fd)
-- six.print_(' %s %s = NULL;' % ('GList*', arg_name(arg)), file=self.fd)
-+ print(' %s zval_%s = NULL;' % ('zval*', arg_name(arg)), file=self.fd)
-+ print(' %s %s = NULL;' % ('GList*', arg_name(arg)), file=self.fd)
- elif is_object(arg):
- parse_tuple_format.append('r')
- parse_tuple_args.append('&zval_%s' % arg_name(arg))
-- six.print_(' %s %s = NULL;' % (arg_type(arg), arg_name(arg)), file=self.fd)
-- six.print_(' %s zval_%s = NULL;' % ('zval*', arg_name(arg)), file=self.fd)
-- six.print_(' %s cvt_%s = NULL;' % ('PhpGObjectPtr*', arg_name(arg)), file=self.fd)
-+ print(' %s %s = NULL;' % (arg_type(arg), arg_name(arg)), file=self.fd)
-+ print(' %s zval_%s = NULL;' % ('zval*', arg_name(arg)), file=self.fd)
-+ print(' %s cvt_%s = NULL;' % ('PhpGObjectPtr*', arg_name(arg)), file=self.fd)
- else:
- raise Exception('Unsupported type %s %s' % (arg, m))
-
- if m.return_type:
-- six.print_(' %s return_c_value;' % m.return_type, file=self.fd)
-+ print(' %s return_c_value;' % m.return_type, file=self.fd)
- if m.return_type is not None and self.is_object(m.return_arg):
-- six.print_(' G_GNUC_UNUSED PhpGObjectPtr *self;', file=self.fd)
-- six.print_('', file=self.fd)
-+ print(' G_GNUC_UNUSED PhpGObjectPtr *self;', file=self.fd)
-+ print('', file=self.fd)
-
- parse_tuple_args = ', '.join(parse_tuple_args)
- if parse_tuple_args:
- parse_tuple_args = ', ' + parse_tuple_args
-
-- six.print_('''\
-+ print('''\
- if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "%s"%s) == FAILURE) {
- RETURN_FALSE;
- }
-@@ -322,24 +321,24 @@ PHP_MSHUTDOWN_FUNCTION(lasso)
- if is_out(arg):
- continue
- elif is_xml_node(arg):
-- six.print_('''\
-+ print('''\
- %(name)s = get_xml_node_from_string(%(name)s_str);''' % {'name': arg[1]}, file=self.fd)
- elif f.startswith('s'):
-- six.print_('''\
-+ print('''\
- %(name)s = %(name)s_str;''' % {'name': arg[1]}, file=self.fd)
- elif f.startswith('r'):
-- six.print_(' if ((cvt_%s = (PhpGObjectPtr *)zend_fetch_resource(Z_RES_P(zval_%s), PHP_LASSO_SERVER_RES_NAME, le_lasso_server)) == NULL) {' % (arg[1], arg[1]), file=self.fd)
-- six.print_(' RETURN_FALSE;', file=self.fd)
-- six.print_(' }', file=self.fd)
-- six.print_(' %s = (%s)cvt_%s->obj;' % (arg[1], arg[0], arg[1]), file=self.fd)
-+ print(' if ((cvt_%s = (PhpGObjectPtr *)zend_fetch_resource(Z_RES_P(zval_%s), PHP_LASSO_SERVER_RES_NAME, le_lasso_server)) == NULL) {' % (arg[1], arg[1]), file=self.fd)
-+ print(' RETURN_FALSE;', file=self.fd)
-+ print(' }', file=self.fd)
-+ print(' %s = (%s)cvt_%s->obj;' % (arg[1], arg[0], arg[1]), file=self.fd)
- elif f.startswith('a'):
- el_type = element_type(arg)
- if is_cstring(el_type):
-- six.print_(' %(name)s = get_list_from_array_of_strings(zval_%(name)s);' % {'name': arg[1]}, file=self.fd)
-+ print(' %(name)s = get_list_from_array_of_strings(zval_%(name)s);' % {'name': arg[1]}, file=self.fd)
- elif is_object(el_type):
-- six.print_(' %(name)s = get_list_from_array_of_objects(zval_%(name)s);' % {'name': arg[1]}, file=self.fd)
-+ print(' %(name)s = get_list_from_array_of_objects(zval_%(name)s);' % {'name': arg[1]}, file=self.fd)
- else:
-- six.print_('E: In %(function)s arg %(name)s is of type GList<%(elem)s>' % { 'function': m.name, 'name': arg[1], 'elem': el_type }, file=sys.stderr)
-+ print('E: In %(function)s arg %(name)s is of type GList<%(elem)s>' % { 'function': m.name, 'name': arg[1], 'elem': el_type }, file=sys.stderr)
- elif f == 'l':
- pass
- else:
-@@ -347,17 +346,17 @@ PHP_MSHUTDOWN_FUNCTION(lasso)
-
-
- if m.return_type is not None:
-- six.print_(' return_c_value = ', file=self.fd)
-+ print(' return_c_value = ', file=self.fd)
- if 'new' in m.name:
-- six.print_('(%s)' % m.return_type, file=self.fd)
-+ print('(%s)' % m.return_type, file=self.fd)
- else:
-- six.print_(' ', file=self.fd)
-+ print(' ', file=self.fd)
- def special(x):
- if is_time_t_pointer(x):
- return '%(name)s ? &%(name)s : NULL' % { 'name': arg_name(x) }
- else:
- return ref_name(x)
-- six.print_('%s(%s);' % (m.name, ', '.join([special(x) for x in m.args])), file=self.fd)
-+ print('%s(%s);' % (m.name, ', '.join([special(x) for x in m.args])), file=self.fd)
- # Free the converted arguments
-
- for f, arg in zip(parse_tuple_format, m.args):
-@@ -368,21 +367,21 @@ PHP_MSHUTDOWN_FUNCTION(lasso)
- self.set_zval('php_out_%s' % argname, argname, unref_type(arg), free = free)
- pass
- elif argtype == 'xmlNode*':
-- six.print_(' xmlFree(%s);' % argname, file=self.fd)
-+ print(' xmlFree(%s);' % argname, file=self.fd)
- elif f.startswith('a'):
- el_type = element_type(arg)
- if is_cstring(el_type):
-- six.print_(' if (%(name)s) {' % { 'name': arg[1] }, file=self.fd)
-- six.print_(' free_glist(&%(name)s,(GFunc)free);' % { 'name': arg[1] }, file=self.fd)
-- six.print_(' }', file=self.fd)
-+ print(' if (%(name)s) {' % { 'name': arg[1] }, file=self.fd)
-+ print(' free_glist(&%(name)s,(GFunc)free);' % { 'name': arg[1] }, file=self.fd)
-+ print(' }', file=self.fd)
-
- try:
- self.return_value(m.return_arg, is_transfer_full(m.return_arg, default=True))
- except:
- raise Exception('Cannot return value for function %s' % m)
-
-- six.print_('}', file=self.fd)
-- six.print_('', file=self.fd)
-+ print('}', file=self.fd)
-+ print('', file=self.fd)
-
- def generate_members(self, c):
- for m in c.members:
-@@ -395,16 +394,16 @@ PHP_MSHUTDOWN_FUNCTION(lasso)
- type = arg_type(m)
-
- function_name = '%s_%s_get' % (klassname, format_as_camelcase(name))
-- six.print_('''PHP_FUNCTION(%s)
-+ print('''PHP_FUNCTION(%s)
- {''' % function_name, file=self.fd)
- self.functions_list.append(function_name)
-
-- six.print_(' %s return_c_value;' % type, file=self.fd)
-- six.print_(' %s* this;' % klassname, file=self.fd)
-- six.print_(' zval* zval_this;', file=self.fd)
-- six.print_(' PhpGObjectPtr *cvt_this;', file=self.fd)
-- six.print_('', file=self.fd)
-- six.print_('''\
-+ print(' %s return_c_value;' % type, file=self.fd)
-+ print(' %s* this;' % klassname, file=self.fd)
-+ print(' zval* zval_this;', file=self.fd)
-+ print(' PhpGObjectPtr *cvt_this;', file=self.fd)
-+ print('', file=self.fd)
-+ print('''\
- if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r", &zval_this) == FAILURE) {
- RETURN_FALSE;
- }
-@@ -414,23 +413,23 @@ PHP_MSHUTDOWN_FUNCTION(lasso)
- }
- this = (%s*)cvt_this->obj;
- ''' % (klassname), file=self.fd)
-- six.print_(' return_c_value = (%s)this->%s;' % (type, name), file=self.fd)
-+ print(' return_c_value = (%s)this->%s;' % (type, name), file=self.fd)
- self.return_value(m)
-- six.print_('}', file=self.fd)
-- six.print_('', file=self.fd)
-+ print('}', file=self.fd)
-+ print('', file=self.fd)
-
- def generate_setter(self, c, m):
- klassname = c.name
- name = arg_name(m)
- type = arg_type(m)
- function_name = '%s_%s_set' % (klassname, format_as_camelcase(name))
-- six.print_('''PHP_FUNCTION(%s)
-+ print('''PHP_FUNCTION(%s)
- {''' % function_name, file=self.fd)
- self.functions_list.append(function_name)
-
-- six.print_(' %s* this;' % klassname, file=self.fd)
-- six.print_(' zval* zval_this;', file=self.fd)
-- six.print_(' PhpGObjectPtr *cvt_this;', file=self.fd)
-+ print(' %s* this;' % klassname, file=self.fd)
-+ print(' zval* zval_this;', file=self.fd)
-+ print(' PhpGObjectPtr *cvt_this;', file=self.fd)
-
- # FIXME: This bloc should be factorised
- parse_tuple_format = ''
-@@ -439,41 +438,41 @@ PHP_MSHUTDOWN_FUNCTION(lasso)
- # arg_type = arg_type.replace('const ', '')
- parse_tuple_format += 's'
- parse_tuple_args.append('&%s_str, &%s_len' % (name, name))
-- six.print_(' %s %s_str = NULL;' % ('char*', name), file=self.fd)
-- six.print_(' %s %s_len = 0;' % ('size_t', name), file=self.fd)
-+ print(' %s %s_str = NULL;' % ('char*', name), file=self.fd)
-+ print(' %s %s_len = 0;' % ('size_t', name), file=self.fd)
- elif is_int(m, self.binding_data) or is_boolean(m):
- parse_tuple_format += 'l'
- parse_tuple_args.append('&%s' % name)
-- six.print_(' %s %s;' % ('long', name), file=self.fd)
-+ print(' %s %s;' % ('long', name), file=self.fd)
- # Must also handle lists of Objects
- elif is_glist(m) or is_hashtable(m):
- parse_tuple_format += 'a'
- parse_tuple_args.append('&zval_%s' % name)
-- six.print_(' %s zval_%s;' % ('zval*', name), file=self.fd)
-+ print(' %s zval_%s;' % ('zval*', name), file=self.fd)
- elif is_object(m):
- parse_tuple_format += 'r'
- parse_tuple_args.append('&zval_%s' % name)
-- six.print_(' %s zval_%s = NULL;' % ('zval*', name), file=self.fd)
-- six.print_(' %s cvt_%s = NULL;' % ('PhpGObjectPtr*', name), file=self.fd)
-+ print(' %s zval_%s = NULL;' % ('zval*', name), file=self.fd)
-+ print(' %s cvt_%s = NULL;' % ('PhpGObjectPtr*', name), file=self.fd)
- else:
- raise Exception('Cannot make a setter for %s.%s' % (c,m))
-
- if parse_tuple_args:
- parse_tuple_arg = parse_tuple_args[0]
- else:
-- six.print_('}', file=self.fd)
-- six.print_('', file=self.fd)
-+ print('}', file=self.fd)
-+ print('', file=self.fd)
- return
-
-- six.print_('', file=self.fd)
-- six.print_('''\
-+ print('', file=self.fd)
-+ print('''\
- if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r%s", &zval_this, %s) == FAILURE) {
- return;
- }
- ''' % (parse_tuple_format, parse_tuple_arg), file=self.fd)
-
- # Get 'this' object
-- six.print_('''\
-+ print('''\
- if ((cvt_this = (PhpGObjectPtr *)zend_fetch_resource(Z_RES_P(zval_this), PHP_LASSO_SERVER_RES_NAME, le_lasso_server)) == NULL) {
- RETURN_FALSE;
- }
-@@ -483,53 +482,53 @@ PHP_MSHUTDOWN_FUNCTION(lasso)
- # Set new value
- d = { 'name': name, 'type': type }
- if is_int(m, self.binding_data) or is_boolean(m):
-- six.print_(' this->%s = %s;' % (name, name), file=self.fd)
-+ print(' this->%s = %s;' % (name, name), file=self.fd)
- elif is_cstring(m):
-- six.print_(' lasso_assign_string(this->%(name)s, %(name)s_str);' % d, file=self.fd)
-+ print(' lasso_assign_string(this->%(name)s, %(name)s_str);' % d, file=self.fd)
- elif is_xml_node(m):
-- six.print_(' lasso_assign_new_xml_node(this->%(name)s, get_xml_node_from_string(%(name)s_str));' % d, file=self.fd)
-+ print(' lasso_assign_new_xml_node(this->%(name)s, get_xml_node_from_string(%(name)s_str));' % d, file=self.fd)
- elif is_glist(m):
- el_type = element_type(m)
- if is_cstring(el_type):
-- six.print_(' lasso_assign_new_list_of_strings(this->%(name)s, get_list_from_array_of_strings(zval_%(name)s));' % d, file=self.fd)
-+ print(' lasso_assign_new_list_of_strings(this->%(name)s, get_list_from_array_of_strings(zval_%(name)s));' % d, file=self.fd)
- elif is_xml_node(el_type):
-- six.print_(' lasso_assign_new_list_of_xml_node(this->%(name)s, get_list_from_array_of_xmlnodes(zval_%(name)s))' % d, file=self.fd)
-+ print(' lasso_assign_new_list_of_xml_node(this->%(name)s, get_list_from_array_of_xmlnodes(zval_%(name)s))' % d, file=self.fd)
- elif is_object(el_type):
-- six.print_(' lasso_assign_new_list_of_gobjects(this->%(name)s, get_list_from_array_of_objects(zval_%(name)s));' % d, file=self.fd)
-+ print(' lasso_assign_new_list_of_gobjects(this->%(name)s, get_list_from_array_of_objects(zval_%(name)s));' % d, file=self.fd)
- else:
- raise Exception('Cannot create C setter for %s.%s' % (c,m))
- elif is_hashtable(m):
- el_type = element_type(m)
-- six.print_('''\
-+ print('''\
- {
- GHashTable *oldhash = this->%(name)s;''' % d, file=self.fd)
- if is_object(el_type):
-- six.print_(' this->%(name)s = get_hashtable_from_array_of_objects(zval_%(name)s);' % d, file=self.fd)
-+ print(' this->%(name)s = get_hashtable_from_array_of_objects(zval_%(name)s);' % d, file=self.fd)
- else:
-- six.print_(' this->%(name)s = get_hashtable_from_array_of_strings(zval_%(name)s);' % d, file=self.fd)
-- six.print_(' g_hash_table_destroy(oldhash);', file=self.fd)
-- six.print_(' }', file=self.fd)
-+ print(' this->%(name)s = get_hashtable_from_array_of_strings(zval_%(name)s);' % d, file=self.fd)
-+ print(' g_hash_table_destroy(oldhash);', file=self.fd)
-+ print(' }', file=self.fd)
- elif is_object(m):
-- six.print_(' if ((cvt_%(name)s = (PhpGObjectPtr*)zend_fetch_resource(Z_RES_P(zval_%(name)s), PHP_LASSO_SERVER_RES_NAME, le_lasso_server)) == NULL) {' % d, file=self.fd)
-- six.print_(' RETURN_FALSE;', file=self.fd)
-- six.print_(' }', file=self.fd)
-- six.print_(' lasso_assign_gobject(this->%(name)s, cvt_%(name)s->obj);' % d, file=self.fd)
-+ print(' if ((cvt_%(name)s = (PhpGObjectPtr*)zend_fetch_resource(Z_RES_P(zval_%(name)s), PHP_LASSO_SERVER_RES_NAME, le_lasso_server)) == NULL) {' % d, file=self.fd)
-+ print(' RETURN_FALSE;', file=self.fd)
-+ print(' }', file=self.fd)
-+ print(' lasso_assign_gobject(this->%(name)s, cvt_%(name)s->obj);' % d, file=self.fd)
-
-- six.print_('}', file=self.fd)
-- six.print_('', file=self.fd)
-+ print('}', file=self.fd)
-+ print('', file=self.fd)
-
- def generate_functions_list(self):
-- six.print_('''\
-+ print('''\
- static zend_function_entry lasso_functions[] = {''', file=self.fd)
- for m in self.functions_list:
-- six.print_(' PHP_FE(%s, NULL)' % m, file=self.fd)
-- six.print_('''\
-+ print(' PHP_FE(%s, NULL)' % m, file=self.fd)
-+ print('''\
- {NULL, NULL, NULL, 0, 0}
- };
- ''', file=self.fd)
-
- def generate_footer(self):
-- six.print_('''\
-+ print('''\
- zend_module_entry lasso_module_entry = {
- #if ZEND_MODULE_API_NO >= 20010901
- STANDARD_MODULE_HEADER,
-diff --git a/bindings/python/examples/get_attributes_from_assertion.py b/bindings/python/examples/get_attributes_from_assertion.py
-index 8f37a337..87236b91 100644
---- a/bindings/python/examples/get_attributes_from_assertion.py
-+++ b/bindings/python/examples/get_attributes_from_assertion.py
-@@ -1,10 +1,9 @@
- # Example SP Python code to get attributes from an assertion
-
--from six import print_
-
- for attribute in assertion.attributeStatement[0].attribute:
- if attribute.name == lasso.SAML2_ATTRIBUTE_NAME_EPR:
- continue
-- print_('attribute : ' + attribute.name)
-+ print('attribute : ' + attribute.name)
- for value in attribute.attributeValue:
-- print_(' value : ' + value.any[0].content)
-+ print(' value : ' + value.any[0].content)
-diff --git a/bindings/python/lang.py b/bindings/python/lang.py
-index 5ba4265c..1e7b36e1 100644
---- a/bindings/python/lang.py
-+++ b/bindings/python/lang.py
-@@ -19,7 +19,6 @@
- # along with this program; if not, see <http://www.gnu.org/licenses/>.
-
- import os
--from six import print_
- import sys
- import re
- import textwrap
-@@ -34,9 +33,9 @@ def remove_bad_optional(args):
- if not '=' in x:
- non_opt = True
- elif non_opt:
-- print_('W: changed', x, file=sys.stderr, end=' ')
-+ print('W: changed', x, file=sys.stderr, end=' ')
- x = re.sub(' *=.*', '', x)
-- print_('to', x, file=sys.stderr)
-+ print('to', x, file=sys.stderr)
- new_args.append(x)
- new_args.reverse()
- return new_args
-@@ -73,17 +72,17 @@ class Binding:
- if not name:
- raise Exception('Cannot free, missing a name')
- if is_cstring(type):
-- print_(' lasso_release_string(%s);' % name, file=fd)
-+ print(' lasso_release_string(%s);' % name, file=fd)
- elif is_int(type, self.binding_data) or is_boolean(type):
- pass
- elif is_xml_node(type):
-- print_(' lasso_release_xml_node(%s);' % name, file=fd)
-+ print(' lasso_release_xml_node(%s);' % name, file=fd)
- elif is_glist(type):
- etype = element_type(type)
- if is_cstring(etype):
-- print_(' lasso_release_list_of_strings(%s);' % name, file=fd)
-+ print(' lasso_release_list_of_strings(%s);' % name, file=fd)
- elif is_object(etype):
-- print_(' lasso_release_list_of_gobjects(%s);' % name, file=fd)
-+ print(' lasso_release_list_of_gobjects(%s);' % name, file=fd)
- else:
- raise Exception('Unsupported caller owned return type %s' % ((repr(type), name),))
- elif is_hashtable(type):
-@@ -91,11 +90,11 @@ class Binding:
- k_type = key_type(type)
- v_type = value_type(type)
- if is_cstring(el_type) or (is_cstring(k_type) and is_cstring(v_type)):
-- print_(' if (%s) { g_hash_table_destroy(%s); }' % (name, name), file=fd)
-+ print(' if (%s) { g_hash_table_destroy(%s); }' % (name, name), file=fd)
- else:
- raise Exception('Unsupported free value of type GHashTable: %s' % type)
- elif is_object(type):
-- print_(' if (return_value) g_object_unref(%s);' % name, file=fd)
-+ print(' if (return_value) g_object_unref(%s);' % name, file=fd)
- else:
- raise Exception('Unsupported caller owned return type %s' % ((repr(type), name),))
-
-@@ -116,7 +115,7 @@ class Binding:
- fd.close()
-
- def generate_header(self, fd):
-- print_('''\
-+ print('''\
- # this file has been generated automatically; do not edit
-
- import _lasso
-@@ -172,7 +171,7 @@ class frozendict(dict):
-
- def generate_exceptions(self, fd):
- done_cats = []
-- print_('''\
-+ print('''\
- class Error(Exception):
- code = None
-
-@@ -206,7 +205,7 @@ class Error(Exception):
- cat = exc_cat.attrib.get('name')
- done_cats.append(cat)
- parent_cat = exc_cat.attrib.get('parent', '')
-- print_('''\
-+ print('''\
- class %sError(%sError):
- pass
- ''' % (cat, parent_cat), file=fd)
-@@ -229,7 +228,7 @@ class %sError(%sError):
- else:
- parent_cat = ''
-
-- print_('''\
-+ print('''\
- class %sError(%sError):
- pass
- ''' % (cat, parent_cat), file=fd)
-@@ -247,19 +246,19 @@ class %sError(%sError):
- # ordering would change)
- continue
-
-- print_('''\
-+ print('''\
- class %sError(%sError):
- pass
- ''' % (detail, cat), file=fd)
-
-- print_('exceptions_dict = {', file=fd)
-+ print('exceptions_dict = {', file=fd)
- for k, v in exceptions_dict.items():
-- print_(' _lasso.%s: %sError,' % (v, k), file=fd)
-- print_('}', file=fd)
-- print_('', file=fd)
-+ print(' _lasso.%s: %sError,' % (v, k), file=fd)
-+ print('}', file=fd)
-+ print('', file=fd)
-
- def generate_footer(self, fd):
-- print_('''
-+ print('''
-
- def _profileGetIssuer(cls, *args, **kwargs):
- return profileGetIssuer(*args, **kwargs)
-@@ -304,19 +303,19 @@ StringDict = dict
- ''', file=fd)
-
- def generate_constants(self, fd):
-- print_('### Constants (both enums and defines)', file=fd)
-+ print('### Constants (both enums and defines)', file=fd)
- for c in self.binding_data.constants:
-- print_('%s = _lasso.%s' % (c[1][6:], c[1][6:]), file=fd)
-+ print('%s = _lasso.%s' % (c[1][6:], c[1][6:]), file=fd)
- for c in self.binding_data.overrides.findall('constant'):
- name = c.attrib.get('name')
- if c.attrib.get('value'):
- name = name[6:] # dropping LASSO_
- value = c.attrib.get('value')
- if value == 'True':
-- print_('%s = True' % name, file=fd)
-+ print('%s = True' % name, file=fd)
- else:
-- print_('E: unknown value for constant: %r' % value, file=sys.stderr)
-- print_('', file=fd)
-+ print('E: unknown value for constant: %r' % value, file=sys.stderr)
-+ print('', file=fd)
-
- def generate_class(self, clss, fd):
- klassname = clss.name[5:] # remove Lasso from class name
-@@ -325,7 +324,7 @@ StringDict = dict
- else:
- parentname = clss.parent[5:]
-
-- print_('''class %(klassname)s(%(parentname)s):''' % locals(), file=fd)
-+ print('''class %(klassname)s(%(parentname)s):''' % locals(), file=fd)
-
- methods = clss.methods[:]
- # constructor(s)
-@@ -348,14 +347,14 @@ StringDict = dict
-
- c_args = ', '.join(c_args)
- py_args = ', ' + ', '.join(py_args)
-- print_(' def __init__(self%s):' % py_args, file=fd)
-+ print(' def __init__(self%s):' % py_args, file=fd)
- # XXX: could check self._cptr.typename to see if it got the
- # right class type
-- print_(' self._cptr = _lasso.%s(%s)' % (
-+ print(' self._cptr = _lasso.%s(%s)' % (
- m.name[6:], c_args), file=fd)
-- print_(' if self._cptr is None:', file=fd)
-- print_(' raise Error(\'failed to create object\')', file=fd)
-- print_('', file=fd)
-+ print(' if self._cptr is None:', file=fd)
-+ print(' raise Error(\'failed to create object\')', file=fd)
-+ print('', file=fd)
-
- for m in self.binding_data.functions:
- if m.name.startswith(method_prefix + 'new_'):
-@@ -379,13 +378,13 @@ StringDict = dict
- if '=' in x:
- opt = True
- elif opt:
-- print_('W: non-optional follows optional,', m, file=sys.stderr)
-+ print('W: non-optional follows optional,', m, file=sys.stderr)
- c_args = ', '.join(c_args)
- py_args = ', ' + ', '.join(py_args)
-- print_(' @classmethod', file=fd)
-- print_(' def %s(cls%s):' % (constructor_name, py_args), file=fd)
-- print_(' return cptrToPy(_lasso.%s(%s))' % (m.name[6:], c_args), file=fd)
-- print_('', file=fd)
-+ print(' @classmethod', file=fd)
-+ print(' def %s(cls%s):' % (constructor_name, py_args), file=fd)
-+ print(' return cptrToPy(_lasso.%s(%s))' % (m.name[6:], c_args), file=fd)
-+ print('', file=fd)
-
- # create properties for members
- for m in clss.members:
-@@ -393,13 +392,13 @@ StringDict = dict
- mname = format_as_camelcase(m[1])
- options = m[2]
- # getter
-- print_(' def get_%s(self):' % mname, file=fd)
-- print_(' t = _lasso.%s_%s_get(self._cptr)' % (
-+ print(' def get_%s(self):' % mname, file=fd)
-+ print(' t = _lasso.%s_%s_get(self._cptr)' % (
- klassname, mname), file=fd)
- if is_int(m, self.binding_data) or is_xml_node(m) or is_cstring(m) or is_boolean(m):
- pass
- elif is_object(m):
-- print_(' t = cptrToPy(t)', file=fd)
-+ print(' t = cptrToPy(t)', file=fd)
- elif is_glist(m):
- el_type = element_type(m)
- if is_cstring(el_type):
-@@ -407,54 +406,54 @@ StringDict = dict
- elif is_xml_node(el_type):
- pass
- elif is_object(el_type):
-- print_(' if not t: return t', file=fd)
-- print_(' t = tuple([cptrToPy(x) for x in t])', file=fd)
-+ print(' if not t: return t', file=fd)
-+ print(' t = tuple([cptrToPy(x) for x in t])', file=fd)
- else:
- raise Exception('Unsupported python getter %s.%s' % (clss, m))
- elif is_hashtable(m):
- el_type = element_type(m)
-- print_(' if not t: return t', file=fd)
-+ print(' if not t: return t', file=fd)
- if is_object(el_type):
-- print_(' d2 = {}', file=fd)
-- print_(' for k, v in t.items():', file=fd)
-- print_(' d2[k] = cptrToPy(v)', file=fd)
-- print_(' t = frozendict(d2)', file=fd)
-+ print(' d2 = {}', file=fd)
-+ print(' for k, v in t.items():', file=fd)
-+ print(' d2[k] = cptrToPy(v)', file=fd)
-+ print(' t = frozendict(d2)', file=fd)
- else:
-- print_(' t = frozendict(t)', file=fd)
-+ print(' t = frozendict(t)', file=fd)
- elif is_boolean(m) or is_int(m, self.binding_data) or is_xml_node(m) or is_cstring(m):
- pass
- else:
- raise Exception('Unsupported python getter %s.%s' % (clss, m))
-- print_(' return t;', file=fd)
-+ print(' return t;', file=fd)
- # setter
-- print_(' def set_%s(self, value):' % mname, file=fd)
-+ print(' def set_%s(self, value):' % mname, file=fd)
- if is_int(m, self.binding_data) or is_xml_node(m) or is_boolean(m):
- pass
- elif is_cstring(m):
-- print_(' value = str2lasso(value)', file=fd)
-+ print(' value = str2lasso(value)', file=fd)
- elif is_object(m):
-- print_(' if value is not None:', file=fd)
-- print_(' value = value and value._cptr', file=fd)
-+ print(' if value is not None:', file=fd)
-+ print(' value = value and value._cptr', file=fd)
- elif is_glist(m):
- el_type = element_type(m)
- if is_cstring(el_type) or is_xml_node(el_type):
- pass
- elif is_object(el_type):
-- print_(' if value is not None:', file=fd)
-- print_(' value = tuple([x._cptr for x in value])', file=fd)
-+ print(' if value is not None:', file=fd)
-+ print(' value = tuple([x._cptr for x in value])', file=fd)
- else:
- raise Exception('Unsupported python setter %s.%s' % (clss, m))
- elif is_hashtable(m):
-- print_('W: unsupported setter for hashtable %s' % (m,), file=sys.stderr)
-+ print('W: unsupported setter for hashtable %s' % (m,), file=sys.stderr)
- else:
-- print_('W: unsupported setter for %s' % (m,), file=sys.stderr)
-- print_(' _lasso.%s_%s_set(self._cptr, value)' % (
-+ print('W: unsupported setter for %s' % (m,), file=sys.stderr)
-+ print(' _lasso.%s_%s_set(self._cptr, value)' % (
- klassname, mname), file=fd)
-- print_(' %s = property(get_%s, set_%s)' % (mname, mname, mname), file=fd)
-+ print(' %s = property(get_%s, set_%s)' % (mname, mname, mname), file=fd)
- old_mname = old_format_as_camelcase(m[1])
- if mname != old_mname:
-- print_(' %s = %s' % (old_mname, mname), file=fd)
-- print_('', file=fd)
-+ print(' %s = %s' % (old_mname, mname), file=fd)
-+ print('', file=fd)
-
- # first pass on methods, getting accessors
- # second pass on methods, real methods
-@@ -464,7 +463,7 @@ StringDict = dict
- m.name.endswith('_new_full'):
- continue
- if not m.name.startswith(method_prefix):
-- print_('W:', m.name, 'vs', method_prefix, file=sys.stderr)
-+ print('W:', m.name, 'vs', method_prefix, file=sys.stderr)
- continue
-
- if m.rename:
-@@ -501,7 +500,7 @@ StringDict = dict
- if '=' in x:
- opt = True
- elif opt:
-- print_('W: non-optional follow optional,', m, file=sys.stderr)
-+ print('W: non-optional follow optional,', m, file=sys.stderr)
-
- if py_args:
- py_args = ', ' + ', '.join(py_args)
-@@ -512,51 +511,51 @@ StringDict = dict
- else:
- c_args = ''
-
-- print_(' def %s(self%s):' % (
-+ print(' def %s(self%s):' % (
- format_underscore_as_camelcase(mname), py_args), file=fd)
- if m.docstring:
-- print_(" '''", file=fd)
-- print_(self.format_docstring(m, mname, 8), file=fd)
-- print_(" '''", file=fd)
-+ print(" '''", file=fd)
-+ print(self.format_docstring(m, mname, 8), file=fd)
-+ print(" '''", file=fd)
-
- if outarg:
-- print_(" %s = list((None,))" % outvar, file=fd)
-+ print(" %s = list((None,))" % outvar, file=fd)
- return_type = m.return_type
- return_type_qualifier = m.return_type_qualifier
- assert is_int(make_arg(return_type),self.binding_data) or not outarg
- if return_type in (None, 'void'):
-- print_(' _lasso.%s(self._cptr%s)' % (
-+ print(' _lasso.%s(self._cptr%s)' % (
- function_name, c_args), file=fd)
- elif is_rc(m.return_arg):
-- print_(' rc = _lasso.%s(self._cptr%s)' % (
-+ print(' rc = _lasso.%s(self._cptr%s)' % (
- function_name, c_args), file=fd)
-- print_(' Error.raise_on_rc(rc)', file=fd)
-+ print(' Error.raise_on_rc(rc)', file=fd)
- elif (is_int(m.return_arg, self.binding_data) or is_xml_node(m.return_arg) or
- is_cstring(m.return_arg) or is_boolean(m.return_arg) or
- is_hashtable(m.return_arg)):
-- print_(' return _lasso.%s(self._cptr%s)' % (
-+ print(' return _lasso.%s(self._cptr%s)' % (
- function_name, c_args), file=fd)
- elif is_glist(m.return_arg):
- el_type = element_type(m.return_arg)
- if is_object(el_type):
-- print_(' value = _lasso.%s(self._cptr%s)' % (
-+ print(' value = _lasso.%s(self._cptr%s)' % (
- function_name, c_args), file=fd)
-- print_(' if value is not None:', file=fd)
-- print_(' value = tuple([cptrToPy(x) for x in value])', file=fd)
-- print_(' return value', file=fd)
-+ print(' if value is not None:', file=fd)
-+ print(' value = tuple([cptrToPy(x) for x in value])', file=fd)
-+ print(' return value', file=fd)
- elif is_cstring(el_type) or is_xml_node(el_type):
-- print_(' return _lasso.%s(self._cptr%s)' % (
-+ print(' return _lasso.%s(self._cptr%s)' % (
- function_name, c_args), file=fd)
- else:
- raise Exception('Return Type GList<%s> is not supported' % el_type)
- elif is_object(m.return_arg):
-- print_(' return cptrToPy(_lasso.%s(self._cptr%s))' % (
-+ print(' return cptrToPy(_lasso.%s(self._cptr%s))' % (
- function_name, c_args), file=fd)
- else:
- raise Exception('Return type %s is unsupported' % (m.return_arg,))
- if outarg:
-- print_(' return %s[0]' % outvar, file=fd)
-- print_('', file=fd)
-+ print(' return %s[0]' % outvar, file=fd)
-+ print('', file=fd)
- # transform methods to properties
- for m in methods:
- if len(m.args) > 1:
-@@ -564,7 +563,7 @@ StringDict = dict
- name = m.rename or m.name
- suffix = name[len(method_prefix)+len('get_'):]
- if clss.getMember(suffix):
-- print_('W: method %s and member %s clashes' % (m.name, arg_name(clss.getMember(suffix))), file=sys.stderr)
-+ print('W: method %s and member %s clashes' % (m.name, arg_name(clss.getMember(suffix))), file=sys.stderr)
- continue
- if not name.startswith(method_prefix) or not name[len(method_prefix):].startswith('get_'):
- continue
-@@ -576,13 +575,13 @@ StringDict = dict
- pname = format_as_camelcase(name[len(method_prefix)+len('get_'):])
- fname = format_as_camelcase(name[len(method_prefix):])
- if not setter:
-- print_(' %s = property(%s)' % (pname, fname), file=fd)
-+ print(' %s = property(%s)' % (pname, fname), file=fd)
- else:
- f2name = format_as_camelcase(setter.name[len(method_prefix):])
-- print_(' %s = property(%s, %s)' % (pname, fname, f2name), file=fd)
-+ print(' %s = property(%s, %s)' % (pname, fname, f2name), file=fd)
- if empty:
-- print_(' pass', file=fd)
-- print_('', file=fd)
-+ print(' pass', file=fd)
-+ print('', file=fd)
-
- def format_docstring(self, func, method_name, indent):
- if func.args:
-@@ -601,7 +600,7 @@ StringDict = dict
- return 'True'
- if var == 'FALSE':
- return 'False'
-- print_('W: unknown docstring thingie: %s' % s.group(1), file=sys.stderr)
-+ print('W: unknown docstring thingie: %s' % s.group(1), file=sys.stderr)
- elif type == '@':
- if var == first_arg_name:
- var = 'self'
-@@ -686,14 +685,14 @@ StringDict = dict
- else:
- name = m.name[6:]
- pname = format_as_camelcase(name)
-- print_('%s = _lasso.%s' % (pname, name), file=fd)
-+ print('%s = _lasso.%s' % (pname, name), file=fd)
-
-
- def generate_wrapper(self, fd):
-- print_(open(os.path.join(self.src_dir,'wrapper_top.c')).read(), file=fd)
-+ print(open(os.path.join(self.src_dir,'wrapper_top.c')).read(), file=fd)
- for h in self.binding_data.headers:
-- print_('#include <%s>' % h, file=fd)
-- print_('', file=fd)
-+ print('#include <%s>' % h, file=fd)
-+ print('', file=fd)
-
- self.generate_constants_wrapper(fd)
-
-@@ -705,33 +704,33 @@ StringDict = dict
- for m in c.methods:
- self.generate_function_wrapper(m, fd)
- self.generate_wrapper_list(fd)
-- print_(open(os.path.join(self.src_dir,'wrapper_bottom.c')).read(), file=fd)
-+ print(open(os.path.join(self.src_dir,'wrapper_bottom.c')).read(), file=fd)
-
- def generate_constants_wrapper(self, fd):
-- print_('''static void
-+ print('''static void
- register_constants(PyObject *d)
- {
- PyObject *obj;
- ''', file=fd)
- for c in self.binding_data.constants:
- if c[0] == 'i':
-- print_(' obj = PyInt_FromLong(%s);' % c[1], file=fd)
-+ print(' obj = PyInt_FromLong(%s);' % c[1], file=fd)
- elif c[0] == 's':
-- print_(' obj = PyString_FromString((char*)%s);' % c[1], file=fd)
-+ print(' obj = PyString_FromString((char*)%s);' % c[1], file=fd)
- elif c[0] == 'b':
-- print_('''\
-+ print('''\
- #ifdef %s
- obj = Py_True;
- #else
- obj = Py_False;
- #endif''' % c[1], file=fd)
- else:
-- print_('E: unknown constant type: %r' % c[0], file=sys.stderr)
-- print_(' PyDict_SetItemString(d, "%s", obj);' % c[1][6:], file=fd)
-+ print('E: unknown constant type: %r' % c[0], file=sys.stderr)
-+ print(' PyDict_SetItemString(d, "%s", obj);' % c[1][6:], file=fd)
- if c[0] != 'b': # refcount of Py_True/False should not be changed
-- print_(' Py_DECREF(obj);', file=fd)
-- print_('}', file=fd)
-- print_('', file=fd)
-+ print(' Py_DECREF(obj);', file=fd)
-+ print('}', file=fd)
-+ print('', file=fd)
-
-
- def generate_member_wrapper(self, c, fd):
-@@ -740,7 +739,7 @@ register_constants(PyObject *d)
- name = arg_name(m)
- mname = format_as_camelcase(arg_name(m))
- # getter
-- print_('''static PyObject*
-+ print('''static PyObject*
- %s_%s_get(G_GNUC_UNUSED PyObject *self, PyObject *args)
- {''' % (klassname[5:], mname), file=fd)
- self.wrapper_list.append('%s_%s_get' % (klassname[5:], mname))
-@@ -748,140 +747,140 @@ register_constants(PyObject *d)
- ftype = arg_type(m)
- if is_cstring(m):
- ftype = 'char*'
-- print_(' %s return_value;' % ftype, file=fd)
-- print_(' PyObject* return_pyvalue;', file=fd)
-- print_(' PyGObjectPtr* cvt_this;', file=fd)
-- print_(' %s* this;' % klassname, file=fd)
-- print_('', file=fd)
-- print_(' if (! PyArg_ParseTuple(args, "O", &cvt_this)) return NULL;', file=fd)
-- print_(' this = (%s*)cvt_this->obj;' % klassname, file=fd)
-- print_(' return_value = this->%s;' % arg_name(m), file=fd)
-+ print(' %s return_value;' % ftype, file=fd)
-+ print(' PyObject* return_pyvalue;', file=fd)
-+ print(' PyGObjectPtr* cvt_this;', file=fd)
-+ print(' %s* this;' % klassname, file=fd)
-+ print('', file=fd)
-+ print(' if (! PyArg_ParseTuple(args, "O", &cvt_this)) return NULL;', file=fd)
-+ print(' this = (%s*)cvt_this->obj;' % klassname, file=fd)
-+ print(' return_value = this->%s;' % arg_name(m), file=fd)
- try:
- self.return_value(fd, m)
- except:
-- print_('W: cannot make an assignment for', c, m, file=sys.stderr)
-+ print('W: cannot make an assignment for', c, m, file=sys.stderr)
- raise
-- print_(' return return_pyvalue;', file=fd)
-- print_('}', file=fd)
-- print_('', file=fd)
-+ print(' return return_pyvalue;', file=fd)
-+ print('}', file=fd)
-+ print('', file=fd)
-
- # setter
-- print_('''static PyObject*
-+ print('''static PyObject*
- %s_%s_set(G_GNUC_UNUSED PyObject *self, PyObject *args)
- {''' % (klassname[5:], mname), file=fd)
- self.wrapper_list.append('%s_%s_set' % (klassname[5:], mname))
-
-- print_(' PyGObjectPtr* cvt_this;', file=fd)
-- print_(' %s* this;' % klassname, file=fd)
-+ print(' PyGObjectPtr* cvt_this;', file=fd)
-+ print(' %s* this;' % klassname, file=fd)
- type = m[0]
- # Determine type class
- if is_cstring(m):
- type = type.replace('const ', '')
- parse_format = 'z'
- parse_arg = '&value'
-- print_(' %s value;' % type, file=fd)
-+ print(' %s value;' % type, file=fd)
- elif is_int(m, self.binding_data):
- parse_format = 'l'
- parse_arg = '&value'
-- print_(' long value;', file=fd)
-+ print(' long value;', file=fd)
- elif is_glist(m) or is_hashtable(m) or is_xml_node(m) or is_boolean(m):
- parse_format = 'O'
-- print_(' PyObject *cvt_value;', file=fd)
-+ print(' PyObject *cvt_value;', file=fd)
- parse_arg = '&cvt_value'
- elif is_object(m):
- parse_format = 'O'
-- print_(' PyGObjectPtr *cvt_value;', file=fd)
-+ print(' PyGObjectPtr *cvt_value;', file=fd)
- parse_arg = '&cvt_value'
- else:
- raise Exception('Unsupported field: %s' % (m,))
- # Get GObject
-- print_(' if (! PyArg_ParseTuple(args, "O%s", &cvt_this, %s)) return NULL;' % (
-+ print(' if (! PyArg_ParseTuple(args, "O%s", &cvt_this, %s)) return NULL;' % (
- parse_format, parse_arg), file=fd)
-- print_(' this = (%s*)cvt_this->obj;' % klassname, file=fd)
-+ print(' this = (%s*)cvt_this->obj;' % klassname, file=fd)
- # Change value
- if is_int(m, self.binding_data):
-- print_(' this->%s = value;' % name, file=fd)
-+ print(' this->%s = value;' % name, file=fd)
- elif is_boolean(m):
-- print_(' this->%s = PyInt_AS_LONG(cvt_value) ? TRUE : FALSE;' % name, file=fd)
-+ print(' this->%s = PyInt_AS_LONG(cvt_value) ? TRUE : FALSE;' % name, file=fd)
- elif is_cstring(m):
-- print_(' lasso_assign_string(this->%s, value);' % name, file=fd)
-+ print(' lasso_assign_string(this->%s, value);' % name, file=fd)
- elif is_xml_node(m):
-- print_(' if (this->%s) xmlFreeNode(this->%s);' % (name, name), file=fd)
-- print_(' this->%s = get_xml_node_from_pystring(cvt_value);' % name, file=fd)
-+ print(' if (this->%s) xmlFreeNode(this->%s);' % (name, name), file=fd)
-+ print(' this->%s = get_xml_node_from_pystring(cvt_value);' % name, file=fd)
- elif is_glist(m):
- el_type = element_type(m)
- if is_cstring(el_type):
-- print_(' RETURN_IF_FAIL(set_list_of_strings(&this->%s, cvt_value));' % name, file=fd)
-+ print(' RETURN_IF_FAIL(set_list_of_strings(&this->%s, cvt_value));' % name, file=fd)
- elif is_xml_node(el_type):
-- print_(' RETURN_IF_FAIL(set_list_of_xml_nodes(&this->%s, cvt_value));' % name, file=fd)
-+ print(' RETURN_IF_FAIL(set_list_of_xml_nodes(&this->%s, cvt_value));' % name, file=fd)
- elif is_object(el_type):
-- print_(' RETURN_IF_FAIL(set_list_of_pygobject(&this->%s, cvt_value));' % name, file=fd)
-+ print(' RETURN_IF_FAIL(set_list_of_pygobject(&this->%s, cvt_value));' % name, file=fd)
- else:
- raise Exception('Unsupported setter for %s' % (m,))
- elif is_hashtable(m):
- el_type = element_type(m)
- if is_object(el_type):
-- print_(' RETURN_IF_FAIL(set_hashtable_of_pygobject(this->%s, cvt_value));' % name, file=fd)
-+ print(' RETURN_IF_FAIL(set_hashtable_of_pygobject(this->%s, cvt_value));' % name, file=fd)
- else:
-- print_(' RETURN_IF_FAIL(set_hashtable_of_strings(this->%s, cvt_value));' % name, file=fd)
-+ print(' RETURN_IF_FAIL(set_hashtable_of_strings(this->%s, cvt_value));' % name, file=fd)
- elif is_object(m):
-- print_(' set_object_field((GObject**)&this->%s, cvt_value);' % name, file=fd)
-+ print(' set_object_field((GObject**)&this->%s, cvt_value);' % name, file=fd)
- else:
- raise Exception('Unsupported member %s.%s' % (klassname, m))
-- print_(' return noneRef();', file=fd)
-- print_('}', file=fd)
-- print_('', file=fd)
-+ print(' return noneRef();', file=fd)
-+ print('}', file=fd)
-+ print('', file=fd)
-
-
- def return_value(self, fd, arg, return_var_name = 'return_value', return_pyvar_name = 'return_pyvalue'):
- if is_boolean(arg):
-- print_(' if (%s) {' % return_var_name, file=fd)
-- print_(' Py_INCREF(Py_True);', file=fd)
-- print_(' %s = Py_True;' % return_pyvar_name, file=fd)
-- print_(' } else {', file=fd)
-- print_(' Py_INCREF(Py_False);', file=fd)
-- print_(' %s = Py_False;' % return_pyvar_name, file=fd)
-- print_(' }', file=fd)
-+ print(' if (%s) {' % return_var_name, file=fd)
-+ print(' Py_INCREF(Py_True);', file=fd)
-+ print(' %s = Py_True;' % return_pyvar_name, file=fd)
-+ print(' } else {', file=fd)
-+ print(' Py_INCREF(Py_False);', file=fd)
-+ print(' %s = Py_False;' % return_pyvar_name, file=fd)
-+ print(' }', file=fd)
- elif is_int(arg, self.binding_data):
-- print_(' %s = PyInt_FromLong(%s);' % (return_pyvar_name, return_var_name), file=fd)
-+ print(' %s = PyInt_FromLong(%s);' % (return_pyvar_name, return_var_name), file=fd)
- elif is_cstring(arg) and is_transfer_full(arg):
-- print_(' if (%s) {' % return_var_name, file=fd)
-- print_(' %s = PyString_FromString(%s);' % (return_pyvar_name, return_var_name), file=fd)
-- print_(' } else {', file=fd)
-- print_(' %s = noneRef();' % return_pyvar_name, file=fd)
-- print_(' }', file=fd)
-+ print(' if (%s) {' % return_var_name, file=fd)
-+ print(' %s = PyString_FromString(%s);' % (return_pyvar_name, return_var_name), file=fd)
-+ print(' } else {', file=fd)
-+ print(' %s = noneRef();' % return_pyvar_name, file=fd)
-+ print(' }', file=fd)
- elif is_cstring(arg):
-- print_(' if (%s) {' % return_var_name, file=fd)
-- print_(' %s = PyString_FromString(%s);' % (return_pyvar_name, return_var_name), file=fd)
-- print_(' } else {', file=fd)
-- print_(' %s = noneRef();' % return_pyvar_name, file=fd)
-- print_(' }', file=fd)
-+ print(' if (%s) {' % return_var_name, file=fd)
-+ print(' %s = PyString_FromString(%s);' % (return_pyvar_name, return_var_name), file=fd)
-+ print(' } else {', file=fd)
-+ print(' %s = noneRef();' % return_pyvar_name, file=fd)
-+ print(' }', file=fd)
- elif is_glist(arg):
- el_type = element_type(arg)
- if is_object(el_type):
-- print_(' %s = get_list_of_pygobject(%s);' % (return_pyvar_name, return_var_name), file=fd)
-+ print(' %s = get_list_of_pygobject(%s);' % (return_pyvar_name, return_var_name), file=fd)
- elif is_cstring(el_type):
-- print_(' %s = get_list_of_strings(%s);' % (return_pyvar_name, return_var_name), file=fd)
-+ print(' %s = get_list_of_strings(%s);' % (return_pyvar_name, return_var_name), file=fd)
- elif is_xml_node(el_type):
-- print_(' %s = get_list_of_xml_nodes(%s);' % (return_pyvar_name, return_var_name), file=fd)
-+ print(' %s = get_list_of_xml_nodes(%s);' % (return_pyvar_name, return_var_name), file=fd)
- else:
- raise Exception('failed to make an assignment for %s' % (arg,))
- elif is_hashtable(arg):
- el_type = element_type(arg)
- if is_object(el_type):
-- print_(' %s = get_dict_from_hashtable_of_objects(%s);' % (return_pyvar_name, return_var_name), file=fd)
-+ print(' %s = get_dict_from_hashtable_of_objects(%s);' % (return_pyvar_name, return_var_name), file=fd)
- else:
-- print_(' %s = get_dict_from_hashtable_of_strings(%s);' % (return_pyvar_name, return_var_name), file=fd)
-+ print(' %s = get_dict_from_hashtable_of_strings(%s);' % (return_pyvar_name, return_var_name), file=fd)
- elif is_xml_node(arg):
- # convert xmlNode* to strings
-- print_(' if (%s) {' % return_var_name, file=fd)
-- print_(' %s = get_pystring_from_xml_node(%s);' % (return_pyvar_name, return_var_name), file=fd)
-- print_(' } else {', file=fd)
-- print_(' %s = noneRef();' % return_pyvar_name, file=fd)
-- print_(' }', file=fd)
-+ print(' if (%s) {' % return_var_name, file=fd)
-+ print(' %s = get_pystring_from_xml_node(%s);' % (return_pyvar_name, return_var_name), file=fd)
-+ print(' } else {', file=fd)
-+ print(' %s = noneRef();' % return_pyvar_name, file=fd)
-+ print(' }', file=fd)
- elif is_object(arg):
- # return a PyGObjectPtr (wrapper around GObject)
-- print_('''\
-+ print('''\
- if (%s) {
- %s = PyGObjectPtr_New(G_OBJECT(%s));
- } else {
-@@ -899,7 +898,7 @@ register_constants(PyObject *d)
- else:
- name = m.name[6:]
- self.wrapper_list.append(name)
-- print_('''static PyObject*
-+ print('''static PyObject*
- %s(G_GNUC_UNUSED PyObject *self, PyObject *args)
- {
- int ok = 1;''' % name, file=fd)
-@@ -951,21 +950,21 @@ register_constants(PyObject *d)
- parse_tuple_args.pop()
- parse_tuple_args.append('&cvt_%s_out' % aname)
- python_cvt_def = ' PyObject *cvt_%s_out = NULL;' % aname
-- print_(' PyObject *out_pyvalue = NULL;', file=fd)
-- print_(arg_def, file=fd)
-+ print(' PyObject *out_pyvalue = NULL;', file=fd)
-+ print(arg_def, file=fd)
- if python_cvt_def:
-- print_(python_cvt_def, file=fd)
-+ print(python_cvt_def, file=fd)
-
- if m.return_type:
-- print_(' %s return_value;' % m.return_type, file=fd)
-- print_(' PyObject* return_pyvalue = NULL;', file=fd)
-- print_('', file=fd)
-+ print(' %s return_value;' % m.return_type, file=fd)
-+ print(' PyObject* return_pyvalue = NULL;', file=fd)
-+ print('', file=fd)
-
- parse_tuple_args = ', '.join(parse_tuple_args)
- if parse_tuple_args:
- parse_tuple_args = ', ' + parse_tuple_args
-
-- print_(' if (! PyArg_ParseTuple(args, "%s"%s)) return NULL;' % (
-+ print(' if (! PyArg_ParseTuple(args, "%s"%s)) return NULL;' % (
- ''.join(parse_tuple_format), parse_tuple_args), file=fd)
-
- for f, arg in zip([ x for x in parse_tuple_format if x != '|'], m.args):
-@@ -974,48 +973,48 @@ register_constants(PyObject *d)
- if is_list(arg):
- qualifier = element_type(arg)
- if is_cstring(qualifier):
-- print_(' EXIT_IF_FAIL(set_list_of_strings(&%s, cvt_%s));' % (arg[1], arg[1]), file=fd)
-+ print(' EXIT_IF_FAIL(set_list_of_strings(&%s, cvt_%s));' % (arg[1], arg[1]), file=fd)
- elif is_xml_node(qualifier):
-- print_(' EXIT_IF_FAIL(set_list_of_xml_nodes(&%s, cvt_%s));' % (arg[1], arg[1]), file=fd)
-+ print(' EXIT_IF_FAIL(set_list_of_xml_nodes(&%s, cvt_%s));' % (arg[1], arg[1]), file=fd)
- elif isinstance(qualifier, str) and qualifier.startswith('Lasso'):
-- print_(' EXIT_IF_FAIL(set_list_of_pygobject(&%s, cvt_%s));' % (arg[1], arg[1]), file=fd)
-+ print(' EXIT_IF_FAIL(set_list_of_pygobject(&%s, cvt_%s));' % (arg[1], arg[1]), file=fd)
- else:
-- print_('E: unqualified GList argument in', name, qualifier, arg, file=sys.stderr)
-+ print('E: unqualified GList argument in', name, qualifier, arg, file=sys.stderr)
- elif is_xml_node(arg):
-- print_(' %s = get_xml_node_from_pystring(cvt_%s);' % (arg[1], arg[1]), file=fd)
-+ print(' %s = get_xml_node_from_pystring(cvt_%s);' % (arg[1], arg[1]), file=fd)
- elif is_time_t_pointer(arg):
-- print_(' %s = get_time_t(cvt_%s);' % (arg[1], arg[1]), file=fd)
-+ print(' %s = get_time_t(cvt_%s);' % (arg[1], arg[1]), file=fd)
- elif is_hashtable(arg):
- el_type = element_type(arg)
- k_type = key_type(arg)
- v_type = value_type(arg)
- if is_cstring(el_type) or (is_cstring(k_type) and is_cstring(v_type)):
-
-- print_(' %s = g_hash_table_new_full(g_str_hash, g_str_equal, g_free, g_free);' % arg[1], file=fd)
-- print_(' EXIT_IF_FAIL(set_hashtable_of_strings(%s, cvt_%s));' % (arg[1], arg[1]), file=fd)
-+ print(' %s = g_hash_table_new_full(g_str_hash, g_str_equal, g_free, g_free);' % arg[1], file=fd)
-+ print(' EXIT_IF_FAIL(set_hashtable_of_strings(%s, cvt_%s));' % (arg[1], arg[1]), file=fd)
- elif f == 'O':
- if is_optional(arg):
-- print_(' if (PyObject_TypeCheck((PyObject*)cvt_%s, &PyGObjectPtrType)) {' % arg[1], file=fd)
-- print_(' %s = (%s)cvt_%s->obj;' % (arg[1], arg[0], arg[1]), file=fd)
-- print_(' } else {', file=fd)
-- print_(' %s = NULL;' % arg[1], file=fd)
-- print_(' }', file=fd)
-+ print(' if (PyObject_TypeCheck((PyObject*)cvt_%s, &PyGObjectPtrType)) {' % arg[1], file=fd)
-+ print(' %s = (%s)cvt_%s->obj;' % (arg[1], arg[0], arg[1]), file=fd)
-+ print(' } else {', file=fd)
-+ print(' %s = NULL;' % arg[1], file=fd)
-+ print(' }', file=fd)
- else:
-- print_(' if (PyObject_TypeCheck((PyObject*)cvt_%s, &PyGObjectPtrType)) {' % arg[1], file=fd)
-- print_(' %s = (%s)cvt_%s->obj;' % (arg[1], arg[0], arg[1]), file=fd)
-- print_(' } else {', file=fd)
-- print_(' PyErr_SetString(PyExc_TypeError, "value should be a PyGObject");', file=fd)
-- print_(' return NULL;', file=fd)
-- print_(' }', file=fd)
-+ print(' if (PyObject_TypeCheck((PyObject*)cvt_%s, &PyGObjectPtrType)) {' % arg[1], file=fd)
-+ print(' %s = (%s)cvt_%s->obj;' % (arg[1], arg[0], arg[1]), file=fd)
-+ print(' } else {', file=fd)
-+ print(' PyErr_SetString(PyExc_TypeError, "value should be a PyGObject");', file=fd)
-+ print(' return NULL;', file=fd)
-+ print(' }', file=fd)
-
-
- if m.return_type:
-- print_(' return_value = ', file=fd, end='')
-+ print(' return_value = ', file=fd, end='')
- if 'new' in m.name:
-- print_('(%s)' % m.return_type, file=fd)
-+ print('(%s)' % m.return_type, file=fd)
- else:
-- print_(' ', file=fd, end='')
-- print_('%s(%s);' % (m.name, ', '.join([ref_name(x) for x in m.args])), file=fd)
-+ print(' ', file=fd, end='')
-+ print('%s(%s);' % (m.name, ', '.join([ref_name(x) for x in m.args])), file=fd)
-
- if m.return_type:
- # Constructor so decrease refcount (it was incremented by PyGObjectPtr_New called
-@@ -1023,7 +1022,7 @@ register_constants(PyObject *d)
- try:
- self.return_value(fd, m.return_arg)
- except:
-- print_('W: cannot assign return value of', m, file=sys.stderr)
-+ print('W: cannot assign return value of', m, file=sys.stderr)
- raise
-
- if is_transfer_full(m.return_arg, default=True):
-@@ -1033,48 +1032,48 @@ register_constants(PyObject *d)
- if is_out(arg):
- self.return_value(fd, arg, return_var_name = arg[1], return_pyvar_name = 'out_pyvalue')
-
-- print_(' EXIT_IF_FAIL(%s);' % arg[1], file=fd)
-- print_(' if (PyList_SetItem(cvt_%s_out, 0, out_pyvalue) == -1) {' % arg[1], file=fd)
-- print_(' ok = 0;', file=fd)
-- print_(' Py_XDECREF(out_pyvalue);', file=fd)
-- print_(' }', file=fd)
-+ print(' EXIT_IF_FAIL(%s);' % arg[1], file=fd)
-+ print(' if (PyList_SetItem(cvt_%s_out, 0, out_pyvalue) == -1) {' % arg[1], file=fd)
-+ print(' ok = 0;', file=fd)
-+ print(' Py_XDECREF(out_pyvalue);', file=fd)
-+ print(' }', file=fd)
- elif arg[0] == 'GList*':
- qualifier = arg[2].get('element-type')
- if is_cstring(qualifier):
-- print_(' free_list(&%s, (GFunc)g_free);' % arg[1], file=fd)
-+ print(' free_list(&%s, (GFunc)g_free);' % arg[1], file=fd)
- elif is_xml_node(qualifier):
-- print_(' free_list(&%s, (GFunc)xmlFreeNode);' % arg[1], file=fd)
-+ print(' free_list(&%s, (GFunc)xmlFreeNode);' % arg[1], file=fd)
- elif is_object(qualifier):
-- print_(' free_list(&%s, (GFunc)g_object_unref);' % arg[1], file=fd)
-+ print(' free_list(&%s, (GFunc)g_object_unref);' % arg[1], file=fd)
- elif is_time_t_pointer(arg):
-- print_(' if (%s) free(%s);' % (arg[1], arg[1]), file=fd)
-+ print(' if (%s) free(%s);' % (arg[1], arg[1]), file=fd)
- elif not is_transfer_full(arg) and is_hashtable(arg):
- self.free_value(fd, arg)
- elif not is_transfer_full(arg) and is_xml_node(arg):
- self.free_value(fd, arg)
-
-- print_('failure:', file=fd)
-+ print('failure:', file=fd)
-
- if not m.return_type:
-- print_(' if (ok) {', file=fd)
-- print_(' return noneRef();', file=fd)
-+ print(' if (ok) {', file=fd)
-+ print(' return noneRef();', file=fd)
- else:
-- print_(' if (ok && return_pyvalue) {', file=fd)
-- print_(' return return_pyvalue;', file=fd)
-- print_(' } else {', file=fd)
-+ print(' if (ok && return_pyvalue) {', file=fd)
-+ print(' return return_pyvalue;', file=fd)
-+ print(' } else {', file=fd)
- if m.return_type:
-- print_(' Py_XDECREF(return_pyvalue);', file=fd)
-- print_(' return NULL;', file=fd)
-- print_(' }', file=fd)
-- print_('}', file=fd)
-- print_('', file=fd)
-+ print(' Py_XDECREF(return_pyvalue);', file=fd)
-+ print(' return NULL;', file=fd)
-+ print(' }', file=fd)
-+ print('}', file=fd)
-+ print('', file=fd)
-
- def generate_wrapper_list(self, fd):
-- print_('''
-+ print('''
- static PyMethodDef lasso_methods[] = {''', file=fd)
- for m in self.wrapper_list:
-- print_(' {"%s", %s, METH_VARARGS, NULL},' % (m, m), file=fd)
-- print_(' {NULL, NULL, 0, NULL}', file=fd)
-- print_('};', file=fd)
-- print_('', file=fd)
-+ print(' {"%s", %s, METH_VARARGS, NULL},' % (m, m), file=fd)
-+ print(' {NULL, NULL, 0, NULL}', file=fd)
-+ print('};', file=fd)
-+ print('', file=fd)
-
-diff --git a/bindings/python/tests/XmlTestRunner.py b/bindings/python/tests/XmlTestRunner.py
-index 7a4150b4..d27d7da0 100644
---- a/bindings/python/tests/XmlTestRunner.py
-+++ b/bindings/python/tests/XmlTestRunner.py
-@@ -1,4 +1,3 @@
--# -*- coding: utf-8 -*-
- #
- # $Id: XmlTestRunner.py 3254 2007-06-05 21:23:57Z fpeters $
- #
-@@ -25,7 +24,6 @@
- import unittest
- import time
- import sys
--from six import print_
-
- def xml(text):
- if not text:
-@@ -34,14 +32,14 @@ def xml(text):
-
- class XmlTestResult(unittest.TestResult):
- def addSuccess(self, test):
-- print_(""" <test result="success">
-+ print(""" <test result="success">
- <id>%s</id>
- <description>%s</description>
- </test>""" % (test.id(), xml(test.shortDescription())))
-
- def addError(self, test, err):
- unittest.TestResult.addError(self, test, err)
-- print_(""" <test result="error">
-+ print(""" <test result="error">
- <id>%s</id>
- <description>%s</description>
- </test>""" % (test.id(), xml(test.shortDescription())))
-@@ -49,7 +47,7 @@ class XmlTestResult(unittest.TestResult):
-
- def addFailure(self, test, err):
- unittest.TestResult.addFailure(self, test, err)
-- print_(""" <test result="failure">
-+ print(""" <test result="failure">
- <id>%s</id>
- <description>%s</description>
- </test>""" % (test.id(), xml(test.shortDescription())))
-@@ -61,14 +59,14 @@ class XmlTestRunner:
- return XmlTestResult()
-
- def run(self, test):
-- print_("<suite>")
-+ print("<suite>")
- result = self._makeResult()
- startTime = time.time()
- test(result)
- stopTime = time.time()
- timeTaken = float(stopTime - startTime)
-- print_(" <duration>%s</duration>" % timeTaken)
-- print_("</suite>")
-+ print(" <duration>%s</duration>" % timeTaken)
-+ print("</suite>")
-
- return result
-
-diff --git a/bindings/python/tests/binding_tests.py b/bindings/python/tests/binding_tests.py
-index 4fe7fde6..e074b893 100755
---- a/bindings/python/tests/binding_tests.py
-+++ b/bindings/python/tests/binding_tests.py
-@@ -254,10 +254,13 @@ class BindingTestCase(unittest.TestCase):
- def test07(self):
- '''Check reference counting'''
- s = lasso.Samlp2AuthnRequest()
-- cptr = s._cptr
-+ # Starting with Python 3.14 some reference count changes
-+ # are avoided.
-+ # Creating a reference in a dict still increments refcount
-+ data = {'cptr': s._cptr}
- a = sys.getrefcount(s._cptr)
- del(s)
-- b = sys.getrefcount(cptr)
-+ b = sys.getrefcount(data['cptr'])
- self.assertEqual(b, a-1)
-
- def test08(self):
-@@ -339,6 +342,12 @@ class BindingTestCase(unittest.TestCase):
- self.assertEqual(str(cm.exception),
- '<lasso.XmlSchemaInvalidFragmentError(17): An XML tree does not respect at least an XML schema of its namespaces.>')
-
-+ def test_provider_get_key_encryption_method(self):
-+ # check getKeyEncryptionMethod is a Provider method #101250
-+ with self.assertRaises(AttributeError):
-+ getattr(lasso, 'providerGetKeyEncryptionMethod')
-+ getattr(lasso.Provider, 'getKeyEncryptionMethod')
-+
- def test_set_list_of_strings(self):
- node = lasso.Samlp2RequestedAuthnContext()
- with self.assertRaises(TypeError, msg='value should be a tuple of strings'):
-@@ -353,7 +362,91 @@ class BindingTestCase(unittest.TestCase):
- with self.assertRaises(TypeError, msg='value should be a tuple of PyGobject'):
- node.attributeValue = value
-
--bindingSuite = unittest.makeSuite(BindingTestCase, 'test')
-+ def test_saml1_soap_attributes(self):
-+ # Test AttributeStatement AttributeValue text extraction
-+ # Example SAML 1.1 validation response taken from
-+ # https://github.com/apereo/cas/blob/master/docs/cas-server-documentation/protocol/CAS-Protocol-Specification.md
-+ soap_content = """
-+<SOAP-ENV:Envelope xmlns:SOAP-ENV=\"http://schemas.xmlsoap.org/soap/envelope/\">
-+ <SOAP-ENV:Header />
-+ <SOAP-ENV:Body>
-+ <Response xmlns=\"urn:oasis:names:tc:SAML:1.0:protocol\" xmlns:saml=\"urn:oasis:names:tc:SAML:1.0:assertion\"
-+ xmlns:samlp=\"urn:oasis:names:tc:SAML:1.0:protocol\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\"
-+ xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" IssueInstant=\"2008-12-10T14:12:14.817Z\"
-+ MajorVersion=\"1\" MinorVersion=\"1\" Recipient=\"https://eiger.iad.vt.edu/dat/home.do\"
-+ ResponseID=\"_5c94b5431c540365e5a70b2874b75996\">
-+ <Status>
-+ <StatusCode Value=\"samlp:Success\">
-+ </StatusCode>
-+ </Status>
-+ <Assertion xmlns=\"urn:oasis:names:tc:SAML:1.0:assertion\" AssertionID=\"_e5c23ff7a3889e12fa01802a47331653\"
-+ IssueInstant=\"2008-12-10T14:12:14.817Z\" Issuer=\"localhost\" MajorVersion=\"1\"
-+ MinorVersion=\"1\">
-+ <Conditions NotBefore=\"2008-12-10T14:12:14.817Z\" NotOnOrAfter=\"2008-12-10T14:12:44.817Z\">
-+ <AudienceRestrictionCondition>
-+ <Audience>
-+ https://some-service.example.com/app/
-+ </Audience>
-+ </AudienceRestrictionCondition>
-+ </Conditions>
-+ <AttributeStatement>
-+ <Subject>
-+ <NameIdentifier>johnq</NameIdentifier>
-+ <SubjectConfirmation>
-+ <ConfirmationMethod>
-+ urn:oasis:names:tc:SAML:1.0:cm:artifact
-+ </ConfirmationMethod>
-+ </SubjectConfirmation>
-+ </Subject>
-+ <Attribute AttributeName=\"uid\" AttributeNamespace=\"http://www.ja-sig.org/products/cas/\">
-+ <AttributeValue>12345</AttributeValue>
-+ </Attribute>
-+ <Attribute AttributeName=\"groupMembership\" AttributeNamespace=\"http://www.ja-sig.org/products/cas/\">
-+ <AttributeValue>
-+ uugid=middleware.staff,ou=Groups,dc=vt,dc=edu
-+ </AttributeValue>
-+ </Attribute>
-+ <Attribute AttributeName=\"eduPersonAffiliation\" AttributeNamespace=\"http://www.ja-sig.org/products/cas/\">
-+ <AttributeValue>staff</AttributeValue>
-+ </Attribute>
-+ <Attribute AttributeName=\"accountState\" AttributeNamespace=\"http://www.ja-sig.org/products/cas/\">
-+ <AttributeValue>ACTIVE</AttributeValue>
-+ </Attribute>
-+ </AttributeStatement>
-+ <AuthenticationStatement AuthenticationInstant=\"2008-12-10T14:12:14.741Z\"
-+ AuthenticationMethod=\"urn:oasis:names:tc:SAML:1.0:am:password\">
-+ <Subject>
-+ <NameIdentifier>johnq</NameIdentifier>
-+ <SubjectConfirmation>
-+ <ConfirmationMethod>
-+ urn:oasis:names:tc:SAML:1.0:cm:artifact
-+ </ConfirmationMethod>
-+ </SubjectConfirmation>
-+ </Subject>
-+ </AuthenticationStatement>
-+ </Assertion>
-+ </Response>
-+ </SOAP-ENV:Body>
-+</SOAP-ENV:Envelope>
-+"""
-+ expt_attrs = {'uid': '12345',
-+ 'groupMembership': 'uugid=middleware.staff,ou=Groups,dc=vt,dc=edu',
-+ 'eduPersonAffiliation': 'staff',
-+ 'accountState': 'ACTIVE'}
-+ node = lasso.Node.newFromSoap(soap_content)
-+ assert len(node.assertion) == 1
-+ assertion = node.assertion[0]
-+ for attribute in assertion.attributeStatement.attribute:
-+ attr_name = attribute.attributeName
-+ with self.subTest(name=attr_name):
-+ self.assertEqual(len(attribute.attributeValue), 1)
-+ value = attribute.attributeValue[0]
-+ self.assertEqual(len(value.any), 1)
-+ content = value.any[0].content
-+ self.assertIn(attr_name, expt_attrs)
-+ self.assertEqual(expt_attrs[attr_name], content.strip())
-+
-+bindingSuite = unittest.defaultTestLoader.loadTestsFromTestCase(BindingTestCase)
-
- allTests = unittest.TestSuite((bindingSuite, ))
-
-diff --git a/bindings/python/tests/profiles_tests.py b/bindings/python/tests/profiles_tests.py
-index 03f33ea9..8679d663 100755
---- a/bindings/python/tests/profiles_tests.py
-+++ b/bindings/python/tests/profiles_tests.py
-@@ -330,6 +330,12 @@ class LoginTestCase(unittest.TestCase):
- sp_login.setSignatureVerifyHint(lasso.PROFILE_SIGNATURE_VERIFY_HINT_FORCE)
- sp_login.processAuthnResponseMsg(idp_login.msgBody)
- sp_login.acceptSso()
-+
-+ if key_encryption_method:
-+ expected_key_encryption_method = key_encryption_method
-+ else:
-+ expected_key_encryption_method = lasso.getDefaultKeyEncryptionMethod()
-+ assert provider.getKeyEncryptionMethod() == expected_key_encryption_method
- return sp_login.response.debug()
-
- os.environ['LASSO_DEFAULT_KEY_ENCRYPTION_METHOD'] = 'rsa-pkcs1'
-@@ -543,12 +549,12 @@ class AttributeAuthorityTestCase(unittest.TestCase):
- assert aq.response.assertion[0].attributeStatement[0].attribute[0]
- assert aq.response.assertion[0].attributeStatement[0].attribute[0].attributeValue[0]
-
--serverSuite = unittest.makeSuite(ServerTestCase, 'test')
--loginSuite = unittest.makeSuite(LoginTestCase, 'test')
--logoutSuite = unittest.makeSuite(LogoutTestCase, 'test')
--defederationSuite = unittest.makeSuite(DefederationTestCase, 'test')
--identitySuite = unittest.makeSuite(IdentityTestCase, 'test')
--attributeSuite = unittest.makeSuite(AttributeAuthorityTestCase, 'test')
-+serverSuite = unittest.defaultTestLoader.loadTestsFromTestCase(ServerTestCase)
-+loginSuite = unittest.defaultTestLoader.loadTestsFromTestCase(LoginTestCase)
-+logoutSuite = unittest.defaultTestLoader.loadTestsFromTestCase(LogoutTestCase)
-+defederationSuite = unittest.defaultTestLoader.loadTestsFromTestCase(DefederationTestCase)
-+identitySuite = unittest.defaultTestLoader.loadTestsFromTestCase(IdentityTestCase)
-+attributeSuite = unittest.defaultTestLoader.loadTestsFromTestCase(AttributeAuthorityTestCase)
-
- allTests = unittest.TestSuite((serverSuite, loginSuite, logoutSuite, defederationSuite,
- identitySuite, attributeSuite))
-diff --git a/bindings/python/tests/tests.py b/bindings/python/tests/tests.py
-index efed53d1..5f2f0c8d 100755
---- a/bindings/python/tests/tests.py
-+++ b/bindings/python/tests/tests.py
-@@ -1,5 +1,4 @@
- #! /usr/bin/env python
--# -*- coding: utf-8 -*-
- #
- # $Id: tests.py 3425 2007-10-10 09:31:03Z dlaniel $
- #
-@@ -31,7 +30,6 @@ import os
- import sys
- import time
- import unittest
--from six import print_
-
- from XmlTestRunner import XmlTestRunner
-
-@@ -61,10 +59,10 @@ parser.add_option(
- __builtin__.__dict__['dataDir'] = os.path.join(options.srcDir, '../../../tests/data')
-
- if options.xmlMode:
-- print_('<?xml version="1.0"?>')
-- print_('<testsuites xmlns="http://check.sourceforge.net/ns">')
-- print_(' <title>Python Bindings</title>')
-- print_(' <datetime>%s</datetime>' % time.strftime('%Y-%m-%d %H:%M:%S', time.localtime()))
-+ print('<?xml version="1.0"?>')
-+ print('<testsuites xmlns="http://check.sourceforge.net/ns">')
-+ print(' <title>Python Bindings</title>')
-+ print(' <datetime>%s</datetime>' % time.strftime('%Y-%m-%d %H:%M:%S', time.localtime()))
-
- success = True
- for testSuite in testSuites:
-@@ -75,7 +73,7 @@ for testSuite in testSuites:
- if fp:
- fp.close()
- if not module:
-- print_('Unable to load test suite:', testSuite, file=sys.stderr)
-+ print('Unable to load test suite:', testSuite, file=sys.stderr)
- continue
-
- if module.__doc__:
-@@ -88,13 +86,13 @@ for testSuite in testSuites:
- else:
- runner = unittest.TextTestRunner(verbosity=2)
- print
-- print_('-' * len(doc))
-- print_(doc)
-- print_('-' * len(doc))
-+ print('-' * len(doc))
-+ print(doc)
-+ print('-' * len(doc))
- result = runner.run(module.allTests)
- success = success and result.wasSuccessful()
-
- if options.xmlMode:
-- print_('</testsuites>')
-+ print('</testsuites>')
-
- sys.exit(not success)
-diff --git a/configure.ac b/configure.ac
-index 79d06985..cb9be5d5 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -90,6 +90,7 @@ fi
- dnl
- dnl Check for programs
- dnl
-+CFLAGS="$CFLAGS -Werror=undef -Werror=implicit-function-declaration"
- AC_PROG_CC
- AM_CFLAGS=""
- AC_HEADER_STDC
-@@ -133,7 +134,7 @@ AC_CHECK_PROGS(PHP5, php5 php)
- AC_CHECK_PROGS(PHP5_CONFIG, php-config5 php-config)
- AC_CHECK_PROGS(PHP7, php7.4 php7.3 php7.2 php7.1 php7.0 php7 php)
- AC_CHECK_PROGS(PHP7_CONFIG, php-config7.4 php-config7.3 php-config7.2 php-config7.1 php-config7.0 php-config7 php-config)
--AC_CHECK_PROGS(PYTHON, python3 python python2)
-+AC_CHECK_PROGS(PYTHON, python3 python)
- AC_CHECK_PROGS(SWIG, swig)
-
- dnl Make sure we have an ANSI compiler
-@@ -325,25 +326,49 @@ if test "X$with_python" != "X"; then
- PYTHON=$with_python
- fi
-
-+test "x$PYTHON" != "x" || AC_MSG_ERROR(Python must be installed to compile lasso)
-
- dnl need to change quotes to allow square brackets
- changequote(<<, >>)dnl
--PYTHON_VERSION=`$PYTHON -c 'from distutils import sysconfig ; print(sysconfig.get_config_var("VERSION"))'`
-+PYTHON_VERSION=`$PYTHON -c '
-+try:
-+ import sysconfig
-+except ImportError:
-+ from distutils import sysconfig
-+print(sysconfig.get_config_var("VERSION"))'`
- changequote([, ])dnl
-
--test "x$PYTHON" != "x" || AC_MSG_ERROR(Python must be installed to compile lasso)
--
- AC_MSG_CHECKING(for Python development files)
- dnl Check if we were be able to extract a good version number.
- if test "X$PYTHON_VERSION" != "X"; then
- changequote(<<, >>)dnl
-- PYTHON_INC=`$PYTHON -c 'from distutils import sysconfig ; print(sysconfig.get_python_inc())'`
-- PYTHON_LIB=`$PYTHON -c 'from distutils import sysconfig ; print(sysconfig.get_python_lib(1))'`
-+ PYTHON_INC=`$PYTHON -c '
-+try:
-+ import sysconfig
-+ print(sysconfig.get_path("include"))
-+except ImportError:
-+ from distutils import sysconfig
-+ print(sysconfig.get_python_inc())
-+'`
-+ PYTHON_LIB=`$PYTHON -c '
-+try:
-+ import sysconfig
-+ print(sysconfig.get_path("platlib"))
-+except ImportError:
-+ from distutils import sysconfig
-+ print(sysconfig.get_python_lib(True))
-+'`
- changequote([, ])dnl
- PYTHON_H=$PYTHON_INC/Python.h
- if test -f $PYTHON_H; then
- PY_CFLAGS="-I$PYTHON_INC"
-- PY_MAKEFILE=`$PYTHON -c 'from distutils import sysconfig ; print(sysconfig.get_makefile_filename())'`
-+ PY_MAKEFILE=`$PYTHON -c '
-+try:
-+ import sysconfig
-+except ImportError:
-+ from distutils import sysconfig
-+print(sysconfig.get_makefile_filename())
-+'`
- PY_OTHER_LIBS=`$SED -n -e 's/^LIBS=\(.*\)/\1/p' $PY_MAKEFILE`
- PY_EXTRA_LIBS="$PY_LOCALMODLIBS $PY_BASEMODLIBS $PY_OTHER_LIBS"
- dnl this extracts the $libdir out of python lib directory,
-diff --git a/lasso/build_strerror.py b/lasso/build_strerror.py
-index 908638d5..041c23a2 100644
---- a/lasso/build_strerror.py
-+++ b/lasso/build_strerror.py
-@@ -4,14 +4,14 @@ import glob
- import re
- import sys
- import os
--from six import print_, StringIO
-+from io import StringIO
-
- srcdir = sys.argv[1]
-
- messages = dict()
- description = ''
-
--with open('%s/errors.h' % srcdir,'r') as f:
-+with open('%s/errors.h' % srcdir) as f:
- for line in f:
- m = re.match(r'^ \* LASSO.*ERROR', line)
- if m:
-@@ -30,13 +30,13 @@ with open('%s/errors.h' % srcdir,'r') as f:
- if m:
- messages[m.group(1)] = m.group(1)
-
--with open('%s/errors.c.in' % srcdir,'r') as f:
-+with open('%s/errors.c.in' % srcdir) as f:
- for line in f:
- if '@ERROR_CASES@' in line:
- keys = sorted(messages.keys())
- for k in keys:
-- print_(' case %s:\n'
-+ print(' case %s:\n'
- ' return "%s";' %
- (k,messages[k].rstrip('\n')))
- else:
-- print_(line, end="")
-+ print(line, end="")
-diff --git a/lasso/extract_sections.py b/lasso/extract_sections.py
-index a03d8551..0130480d 100644
---- a/lasso/extract_sections.py
-+++ b/lasso/extract_sections.py
-@@ -5,7 +5,6 @@ import re
- import sys
- import os
- import os.path
--from six import print_
-
- if len(sys.argv) == 2:
- srcdir = sys.argv[1]
-@@ -19,21 +18,21 @@ for root, dirs, files in os.walk(srcdir):
- prefixes.append(os.path.splitext(file)[0])
- for prefix in prefixes:
- try:
-- header = io.open(os.path.join(root, prefix + '.h'), encoding='utf-8').read()
-- implementation = io.open(os.path.join(root, prefix + '.c'), encoding='utf-8').read()
-- exported_functions = re.findall('LASSO_EXPORT.*(lasso_\w*)', header)
-+ header = open(os.path.join(root, prefix + '.h'), encoding='utf-8').read()
-+ implementation = open(os.path.join(root, prefix + '.c'), encoding='utf-8').read()
-+ exported_functions = re.findall(r'LASSO_EXPORT.*(lasso_\w*)', header)
- normal_functions = sorted ([ x for x in exported_functions if not x.endswith('get_type') ])
- get_type = [ x for x in exported_functions if x.endswith('get_type') ][0]
- file_name = re.findall('lasso_(.*)_get_type', get_type)[0]
- try:
-- macro_type = re.findall('LASSO_(\w*)_CLASS\(', header)[0]
-+ macro_type = re.findall(r'LASSO_(\w*)_CLASS\(', header)[0]
- except:
- macro_type = None
- try:
- type = re.findall(r'^struct _(Lasso\w*)', header, re.MULTILINE)[0]
- except:
- type = None
-- types = re.findall('^} (Lasso\w*);', header)
-+ types = re.findall(r'^} (Lasso\w*);', header)
- def convert(x):
- if '%s' in x:
- return x % macro_type
-@@ -41,17 +40,17 @@ for root, dirs, files in os.walk(srcdir):
- return x
- if type and macro_type:
- standard_decl = [ convert(x) for x in [ 'LASSO_%s', 'LASSO_IS_%s', 'LASSO_TYPE_%s', get_type, 'LASSO_%s_CLASS', 'LASSO_IS_%s_CLASS', 'LASSO_%s_GET_CLASS' ] ]
-- print_('')
-- print_('<SECTION>')
-- print_('<FILE>%s</FILE>' % file_name)
-- print_('<TITLE>%s</TITLE>' % type)
-- print_(type)
-+ print('')
-+ print('<SECTION>')
-+ print('<FILE>%s</FILE>' % file_name)
-+ print('<TITLE>%s</TITLE>' % type)
-+ print(type)
- for x in types + normal_functions:
-- print_(x)
-- print_('<SUBSECTION Standard>')
-+ print(x)
-+ print('<SUBSECTION Standard>')
- for x in standard_decl:
-- print_(x)
-- print_('</SECTION>')
-+ print(x)
-+ print('</SECTION>')
- except:
- continue
-
-diff --git a/lasso/extract_symbols.py b/lasso/extract_symbols.py
-index fc34e405..3bbe6160 100644
---- a/lasso/extract_symbols.py
-+++ b/lasso/extract_symbols.py
-@@ -4,7 +4,6 @@ import io
- import glob
- import re
- import sys
--import six
-
- if len(sys.argv) == 2:
- srcdir = sys.argv[1]
-@@ -17,8 +16,8 @@ symbols = []
- for header_file in glob.glob('%s/*/*.h' % srcdir) + glob.glob('%s/*.h' % srcdir) + \
- glob.glob('%s/*/*/*.h' % srcdir):
- assert not ('/id-wsf/' in header_file or '/id-wsf-2.0' in header_file)
-- symbols.extend(regex.findall(io.open(header_file, encoding='utf-8').read().replace('\\\n', '')))
-+ symbols.extend(regex.findall(open(header_file, encoding='utf-8').read().replace('\\\n', '')))
-
- for s in symbols:
-- six.print_(s)
-+ print(s)
-
-diff --git a/lasso/extract_types.py b/lasso/extract_types.py
-index f1ac26e2..9c0a12be 100644
---- a/lasso/extract_types.py
-+++ b/lasso/extract_types.py
-@@ -4,7 +4,6 @@ import io
- import glob
- import re
- import sys
--import six
-
- if len(sys.argv) == 2:
- srcdir = sys.argv[1]
-@@ -14,30 +13,30 @@ else:
-
- fd = io.StringIO()
-
--six.print_(u"/* This file has been autogenerated; changes will be lost */", file=fd)
--six.print_(u"", file=fd)
--six.print_(u"typedef GType (*type_function) ();", file=fd)
--six.print_(u"", file=fd)
-+print("/* This file has been autogenerated; changes will be lost */", file=fd)
-+print("", file=fd)
-+print("typedef GType (*type_function) ();", file=fd)
-+print("", file=fd)
-
- header_files = []
- for header_file in sorted(glob.glob('%s/*/*.h' % srcdir) + glob.glob('%s/*/*/*.h' % srcdir)):
- assert not ('/id-wsf/' in header_file or '/id-wsf-2.0' in header_file)
- header_files.append(header_file)
- try:
-- type = re.findall('lasso_.*get_type', io.open(header_file, encoding='utf-8').read())[0]
-+ type = re.findall('lasso_.*get_type', open(header_file, encoding='utf-8').read())[0]
- except IndexError:
- continue
-- six.print_("extern GType %s();" % type, file=fd)
-+ print("extern GType %s();" % type, file=fd)
-
--six.print_(u"", file=fd)
--six.print_(u"type_function functions[] = {", file=fd)
-+print("", file=fd)
-+print("type_function functions[] = {", file=fd)
- for header_file in header_files:
- try:
-- type = re.findall('lasso_.*get_type', io.open(header_file, encoding='utf-8').read())[0]
-+ type = re.findall('lasso_.*get_type', open(header_file, encoding='utf-8').read())[0]
- except IndexError:
- continue
-- six.print_(u"\t%s," % type, file=fd)
--six.print_(u"\tNULL", file=fd)
--six.print_(u"};", file=fd)
-+ print("\t%s," % type, file=fd)
-+print("\tNULL", file=fd)
-+print("};", file=fd)
-
--io.open('types.c', 'w', encoding='utf-8').write(fd.getvalue())
-+open('types.c', 'w', encoding='utf-8').write(fd.getvalue())
-diff --git a/lasso/id-ff/login.c b/lasso/id-ff/login.c
-index bc3b2249..09b0b1bb 100644
---- a/lasso/id-ff/login.c
-+++ b/lasso/id-ff/login.c
-@@ -270,9 +270,8 @@
- #include "../saml-2.0/loginprivate.h"
- #include "../lasso_config.h"
-
--#define LASSO_LOGIN_GET_PRIVATE(o) \
-- (G_TYPE_INSTANCE_GET_PRIVATE ((o), LASSO_TYPE_LOGIN, LassoLoginPrivate))
-
-+G_DEFINE_TYPE_WITH_PRIVATE(LassoLogin, lasso_login, LASSO_TYPE_PROFILE);
-
- static void lasso_login_build_assertion_artifact(LassoLogin *login);
-
-@@ -623,6 +622,7 @@ lasso_login_process_response_status_and_assertion(LassoLogin *login)
- LassoSamlSubjectStatementAbstract *sssa = NULL;
- LassoSamlSubjectStatementAbstract *sas = NULL;
- int rc = 0;
-+ LassoLoginPrivate *private_data = lasso_login_get_instance_private(login);
-
- g_return_val_if_fail(LASSO_IS_LOGIN(login), LASSO_PARAM_ERROR_BAD_TYPE_OR_NULL_OBJ);
-
-@@ -672,7 +672,7 @@ lasso_login_process_response_status_and_assertion(LassoLogin *login)
-
- /* Validate AuthnRequest RequestID and InResponseTo */
- {
-- char *previous_reqid = login->private_data->request_id;
-+ char *previous_reqid = private_data->request_id;
- if (previous_reqid) {
- if (lib_assertion == NULL ||
- lib_assertion->InResponseTo == NULL ||
-@@ -852,7 +852,7 @@ lasso_login_build_assertion_artifact(LassoLogin *login)
- b64_samlArt = xmlSecBase64Encode(samlArt, 42, 0);
-
- lasso_assign_string(login->assertionArtifact, (char*)b64_samlArt);
-- lasso_assign_string(login->parent.private_data->artifact,
-+ lasso_profile_set_artifact(&login->parent,
- (char*)b64_samlArt);
- lasso_release_xml_string(b64_samlArt);
- }
-@@ -1024,13 +1024,12 @@ lasso_login_build_artifact_msg(LassoLogin *login, LassoHttpMethod http_method)
- profile->remote_providerID,
- profile->response));
- /* comply with the new way of storing artifacts */
-- lasso_assign_string(profile->private_data->artifact,
-- login->assertionArtifact);
-+ lasso_profile_set_artifact(profile, login->assertionArtifact);
- /* Artifact profile for ID-FF 1.2 is special, this is not the full message which is relayed
- * but only its assertion content, the Response container is changed from a
- * lib:AuthnResponse to a samlp:Response.
- */
-- lasso_assign_new_string(profile->private_data->artifact_message,
-+ lasso_profile_set_new_artifact_message(profile,
- lasso_node_export_to_xml((LassoNode*)login->assertion));
- cleanup:
- lasso_release_string(url);
-@@ -1380,6 +1379,7 @@ lasso_login_build_response_msg(LassoLogin *login, gchar *remote_providerID)
- LassoProvider *remote_provider = NULL;
- LassoProfile *profile = NULL;
- lasso_error_t rc = 0;
-+ LassoLoginPrivate *private_data = lasso_login_get_instance_private(login);
-
- g_return_val_if_fail(LASSO_IS_LOGIN(login), LASSO_PARAM_ERROR_BAD_TYPE_OR_NULL_OBJ);
- profile = LASSO_PROFILE(login);
-@@ -1402,9 +1402,9 @@ lasso_login_build_response_msg(LassoLogin *login, gchar *remote_providerID)
- lasso_assign_string(profile->remote_providerID, remote_providerID);
- remote_provider = lasso_server_get_provider(profile->server, profile->remote_providerID);
- rc = lasso_provider_verify_signature(remote_provider,
-- login->private_data->soap_request_msg,
-+ private_data->soap_request_msg,
- "RequestID", LASSO_MESSAGE_FORMAT_SOAP);
-- lasso_release_string(login->private_data->soap_request_msg);
-+ lasso_release_string(private_data->soap_request_msg);
-
- /* lasso_profile_set_session_from_dump has not been called */
- if (profile->session == NULL) {
-@@ -1440,9 +1440,9 @@ lasso_login_build_response_msg(LassoLogin *login, gchar *remote_providerID)
- lasso_profile_set_response_status(profile,
- LASSO_SAML_STATUS_CODE_SUCCESS);
- lasso_session_remove_status(profile->session, remote_providerID);
-- } else if (profile->private_data->artifact_message) {
-+ } else if (lasso_profile_get_artifact_message(profile)) {
- xmlDoc *doc;
-- char *artifact_message = profile->private_data->artifact_message;
-+ const char *artifact_message = lasso_profile_get_artifact_message(profile);
- doc = lasso_xml_parse_memory(artifact_message,
- strlen(artifact_message));
- lasso_profile_set_response_status(profile,
-@@ -1519,6 +1519,7 @@ lasso_login_init_authn_request(LassoLogin *login, const gchar *remote_providerID
- LassoServer *server = NULL;
- LassoSamlpRequestAbstract *request;
- lasso_error_t rc = 0;
-+ LassoLoginPrivate *private_data = lasso_login_get_instance_private(login);
-
- g_return_val_if_fail(LASSO_IS_LOGIN(login), LASSO_PARAM_ERROR_BAD_TYPE_OR_NULL_OBJ);
-
-@@ -1569,7 +1570,7 @@ lasso_login_init_authn_request(LassoLogin *login, const gchar *remote_providerID
-
- request = LASSO_SAMLP_REQUEST_ABSTRACT(profile->request);
- request->RequestID = lasso_build_unique_id(32);
-- lasso_assign_string(login->private_data->request_id, request->RequestID);
-+ lasso_assign_string(private_data->request_id, request->RequestID);
- request->MajorVersion = LASSO_LIB_MAJOR_VERSION_N;
- request->MinorVersion = LASSO_LIB_MINOR_VERSION_N;
- if (remote_provider &&
-@@ -2241,6 +2242,7 @@ lasso_login_process_request_msg(LassoLogin *login, gchar *request_msg)
- {
- gint ret = 0;
- LassoProfile *profile = LASSO_PROFILE(login);
-+ LassoLoginPrivate *private_data = lasso_login_get_instance_private(login);
-
- g_return_val_if_fail(LASSO_IS_LOGIN(login), LASSO_PARAM_ERROR_BAD_TYPE_OR_NULL_OBJ);
- g_return_val_if_fail(request_msg != NULL, LASSO_PARAM_ERROR_INVALID_VALUE);
-@@ -2257,13 +2259,12 @@ lasso_login_process_request_msg(LassoLogin *login, gchar *request_msg)
- /* get AssertionArtifact */
- lasso_assign_string(login->assertionArtifact,
- LASSO_SAMLP_REQUEST(profile->request)->AssertionArtifact);
-- lasso_assign_string(login->parent.private_data->artifact,
-- login->assertionArtifact);
-+ lasso_profile_set_artifact(&login->parent, login->assertionArtifact);
-
- /* Keep a copy of request msg so signature can be verified when we get
- * the providerId in lasso_login_build_response_msg()
- */
-- lasso_assign_string(login->private_data->soap_request_msg, request_msg);
-+ lasso_assign_string(private_data->soap_request_msg, request_msg);
-
- return ret;
- }
-@@ -2441,10 +2442,11 @@ static void
- dispose(GObject *object)
- {
- LassoLogin *login = LASSO_LOGIN(object);
-+ LassoLoginPrivate *private_data = lasso_login_get_instance_private(login);
-
-- lasso_release_string(login->private_data->soap_request_msg);
-- lasso_release_gobject(login->private_data->saml2_assertion);
-- lasso_release_string(login->private_data->request_id);
-+ lasso_release_string(private_data->soap_request_msg);
-+ lasso_release_gobject(private_data->saml2_assertion);
-+ lasso_release_string(private_data->request_id);
- G_OBJECT_CLASS(parent_class)->dispose(object);
- }
-
-@@ -2453,9 +2455,12 @@ dispose(GObject *object)
- /*****************************************************************************/
-
- static void
--instance_init(LassoLogin *login, G_GNUC_UNUSED void *unused)
-+lasso_login_init(LassoLogin *login)
- {
-- login->private_data = LASSO_LOGIN_GET_PRIVATE(login);
-+#pragma GCC diagnostic push
-+#pragma GCC diagnostic ignored "-Wdeprecated-declarations"
-+ login->private_data = lasso_login_get_instance_private(login);
-+#pragma GCC diagnostic pop
- login->protocolProfile = 0;
- login->assertionArtifact = NULL;
- login->nameIDPolicy = NULL;
-@@ -2463,7 +2468,7 @@ instance_init(LassoLogin *login, G_GNUC_UNUSED void *unused)
- }
-
- static void
--class_init(LassoLoginClass *klass, void *unused G_GNUC_UNUSED)
-+lasso_login_class_init(LassoLoginClass *klass)
- {
- LassoNodeClass *nclass = LASSO_NODE_CLASS(klass);
-
-@@ -2474,36 +2479,10 @@ class_init(LassoLoginClass *klass, void *unused G_GNUC_UNUSED)
- lasso_node_class_set_nodename(nclass, "Login");
- lasso_node_class_set_ns(nclass, LASSO_LASSO_HREF, LASSO_LASSO_PREFIX);
- lasso_node_class_add_snippets(nclass, schema_snippets);
-- g_type_class_add_private(klass, sizeof(LassoLoginPrivate));
-
- G_OBJECT_CLASS(klass)->dispose = dispose;
- }
-
--GType
--lasso_login_get_type()
--{
-- static GType this_type = 0;
--
-- if (!this_type) {
-- static const GTypeInfo this_info = {
-- sizeof(LassoLoginClass),
-- NULL,
-- NULL,
-- (GClassInitFunc) class_init,
-- NULL,
-- NULL,
-- sizeof(LassoLogin),
-- 0,
-- (GInstanceInitFunc) instance_init,
-- NULL
-- };
--
-- this_type = g_type_register_static(LASSO_TYPE_PROFILE,
-- "LassoLogin", &this_info, 0);
-- }
-- return this_type;
<Skipped 4121 lines>
================================================================
---- gitweb:
http://git.pld-linux.org/gitweb.cgi/packages/lasso.git/commitdiff/056fe3b2dfd1ba9c1af85094eedcb448c7a1fe59
More information about the pld-cvs-commit
mailing list