diff --git a/bindings/php5/php_code.py b/bindings/php5/php_code.py index 35bdf028..eab23d73 100644 --- a/bindings/php5/php_code.py +++ b/bindings/php5/php_code.py @@ -304,7 +304,7 @@ function lassoRegisterIdWsf2DstService($prefix, $href) { m.name.endswith('_new_full'): continue if not m.name.startswith(method_prefix): - print >> sys.stderr, 'W:', m.name, 'vs', method_prefix + six.print_('W:', m.name, 'vs', method_prefix, file=sys.stderr) continue if m.rename: @@ -330,7 +330,7 @@ function lassoRegisterIdWsf2DstService($prefix, $href) { elif defval.startswith('b:'): # boolean php_args.append('%s = %s' % (arg_name, defval[2:])) else: - print >> sys.stderr, "E: don't know what to do with %s" % defval + six.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) @@ -396,7 +396,8 @@ function lassoRegisterIdWsf2DstService($prefix, $href) { elif type == '%': # %TRUE, %FALSE if var in ('TRUE', 'FALSE'): return var - print >> sys.stderr, 'W: unknown docstring thingie \'%s\' in \'%s\'' % (s.group(1), func.docstring.orig_docstring) + six.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: return '$this' diff --git a/bindings/php5/wrapper_source.py b/bindings/php5/wrapper_source.py index 168589ae..d84b6fdb 100644 --- a/bindings/php5/wrapper_source.py +++ b/bindings/php5/wrapper_source.py @@ -230,7 +230,8 @@ PHP_MSHUTDOWN_FUNCTION(lasso) ''', file=self.fd) else: if not is_cstring(arg): - print >>sys.stderr, 'W: %s has no explicit string annotation' % (arg,) + six.print_('W: %s has no explicit string annotation' % (arg,), + file=sys.stderr) six.print_('''\ set_array_from_hashtable_of_strings(return_c_value, &return_value); ''', file=self.fd) @@ -279,7 +280,7 @@ PHP_MSHUTDOWN_FUNCTION(lasso) elif is_time_t_pointer(arg): parse_tuple_format.append('l') parse_tuple_args.append('&%s' % (arg_name(arg),)) - print >>self.fd, ' time_t %s = 0;' % (arg_name(arg),) + six.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))) diff --git a/bindings/python/tests/XmlTestRunner.py b/bindings/python/tests/XmlTestRunner.py index ce92c4e8..7a4150b4 100644 --- a/bindings/python/tests/XmlTestRunner.py +++ b/bindings/python/tests/XmlTestRunner.py @@ -25,6 +25,7 @@ import unittest import time import sys +from six import print_ def xml(text): if not text: @@ -33,25 +34,25 @@ def xml(text): class XmlTestResult(unittest.TestResult): def addSuccess(self, test): - print """ + print_(""" %s %s - """ % (test.id(), xml(test.shortDescription())) + """ % (test.id(), xml(test.shortDescription()))) def addError(self, test, err): unittest.TestResult.addError(self, test, err) - print """ + print_(""" %s %s - """ % (test.id(), xml(test.shortDescription())) + """ % (test.id(), xml(test.shortDescription()))) # TODO: add err def addFailure(self, test, err): unittest.TestResult.addFailure(self, test, err) - print """ + print_(""" %s %s - """ % (test.id(), xml(test.shortDescription())) + """ % (test.id(), xml(test.shortDescription()))) # TODO: add err @@ -60,14 +61,14 @@ class XmlTestRunner: return XmlTestResult() def run(self, test): - print "" + print_("") result = self._makeResult() startTime = time.time() test(result) stopTime = time.time() timeTaken = float(stopTime - startTime) - print " %s" % timeTaken - print "" + print_(" %s" % timeTaken) + print_("") return result diff --git a/bindings/python/tests/tests.py b/bindings/python/tests/tests.py index a0fa6d34..f62b3303 100755 --- a/bindings/python/tests/tests.py +++ b/bindings/python/tests/tests.py @@ -31,6 +31,7 @@ import os import sys import time import unittest +from six import print_ from XmlTestRunner import XmlTestRunner @@ -63,10 +64,10 @@ parser.add_option( __builtin__.__dict__['dataDir'] = os.path.join(options.srcDir, '../../../tests/data') if options.xmlMode: - print """""" - print """""" - print """ Python Bindings""" - print """ %s""" % time.strftime('%Y-%m-%d %H:%M:%S', time.localtime()) + print_('') + print_('') + print_(' Python Bindings') + print_(' %s' % time.strftime('%Y-%m-%d %H:%M:%S', time.localtime())) success = True for testSuite in testSuites: @@ -77,7 +78,7 @@ for testSuite in testSuites: if fp: fp.close() if not module: - print >> sys.stderr, 'Unable to load test suite:', testSuite + print_('Unable to load test suite:', testSuite, file=sys.stderr) continue if module.__doc__: @@ -90,13 +91,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 """""" + print_('') sys.exit(not success) diff --git a/docs/lasso-book/check-functions.py b/docs/lasso-book/check-functions.py index 67eef4b5..b7d9e289 100755 --- a/docs/lasso-book/check-functions.py +++ b/docs/lasso-book/check-functions.py @@ -5,28 +5,28 @@ import os import re import sys +from six import print_ functions = {} for filename in os.listdir('.'): if filename[-4:] not in ('.txt', '.rst'): continue - for line in file(filename): - if not 'lasso_' in line: - continue - if not '(' in line: - continue - for f in re.findall(r'(lasso_[a-zA-Z_]+?)\(', line): - functions[f] = 1 + with open(filename) as f: + for line in f: + if not 'lasso_' in line: + continue + if not '(' in line: + continue + for f in re.findall(r'(lasso_[a-zA-Z_]+?)\(', line): + functions[f] = 1 -#for f in functions: -# print f - -known_symbols = [x.strip() for x in file('../reference/build/lasso-decl-list.txt')] +with open('../reference/build/lasso-decl-list.txt') as f: + known_symbols = [x.strip() for x in f] failure = 0 for f in functions: if not f in known_symbols: - print f + print_(f) failure = 1 sys.exit(failure) diff --git a/lasso/extract_sections.py b/lasso/extract_sections.py index 1eccad6a..8a1f675f 100644 --- a/lasso/extract_sections.py +++ b/lasso/extract_sections.py @@ -5,6 +5,7 @@ import re import sys import os import os.path +from six import print_ enable_wsf = False @@ -45,17 +46,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 '
' - print '%s' % file_name - print '%s' % type - print type + print_('') + print_('
') + print_('%s' % file_name) + print_('%s' % type) + print_(type) for x in types + normal_functions: - print x - print '' + print_(x) + print_('') for x in standard_decl: - print x - print '
' + print_(x) + print_('
') except: continue diff --git a/tests/integration/saml2/__init__.py b/tests/integration/saml2/__init__.py index 800db3ee..f5c073ac 100644 --- a/tests/integration/saml2/__init__.py +++ b/tests/integration/saml2/__init__.py @@ -7,6 +7,7 @@ import twill import urllib2 import os.path import re +from six import print_ CONFIG_FILE = os.path.expanduser('~/.config/lasso_integration.conf') CONFIG = dict() @@ -19,7 +20,7 @@ if os.path.exists(CONFIG_FILE): m = re.match('(\w*) = (.*)', line) CONFIG[m.groups()[0]] = m.groups()[1] except: - print "Line", i, " of configuration file", CONFIG_FILE, "is invalid:", line + print_("Line", i, " of configuration file", CONFIG_FILE, "is invalid:", line) i +=1 # Combine default and configuration file @@ -60,13 +61,15 @@ def waitforport(port, start): def setup(): if not os.path.exists(AUTHENTIC_SRCDIR): - print >> sys.stderr, 'Authentic source dir (%s) does not exist' % AUTHENTIC_SRCDIR - print >> sys.stderr, 'Create it or edit tests/config.py to match your local installation' + print_('Authentic source dir (%s) does not exist' % AUTHENTIC_SRCDIR, + file=sys.stderr) + print_('Create it or edit tests/config.py to match your local installation', + file=sys.stderr) sys.exit(1) silent = os.environ.get('NO_SILENT') is None twill.commands.reset_browser() - twill.set_output(file('/dev/null', 'w')) + twill.set_output(open('/dev/null', 'w')) base = [] if os.environ.get('VALGRIND') is '1' and os.path.exists('/usr/bin/valgrind'): base = ['./valgrind-wrapper.sh', 'python'] @@ -102,6 +105,7 @@ def teardown(): # valgrind seems to prefer SIGINT to SIGTERM os.kill(pid, signal.SIGINT) except OSError: - print >> sys.stderr, 'failed to kill pid %s' % pid + print_('failed to kill pid %s' % pid, + file=sys.stderr) os.system('rm -rf /tmp/.tests/') diff --git a/tools/api.py b/tools/api.py index d1593b32..04cca2f0 100644 --- a/tools/api.py +++ b/tools/api.py @@ -2,7 +2,7 @@ import sys import os.path sys.path.append(os.path.join(os.path.dirname(__file__),'../bindings')) import bindings - +from six import print_ def main(args): @@ -27,19 +27,19 @@ def main(args): d[x.name] = x for x in binding.structs: d[x.name] = x - l = d.keys() - l.sort() + l = sorted(d.keys()) for x in l: if isinstance(d[x], bindings.Function): - print d[x].return_type, " ", - print x, - print '(', ', '.join(map(lambda x: x[0] + ' ' + x[1], d[x].args)), ')' + print_(d[x].return_type, " ",) + print_(x, end='') + print_('(', ', '.join(map(lambda x: x[0] + ' ' + x[1], d[x].args)), ')') elif isinstance(d[x], bindings.Struct): - print 'struct', x, '{ ', - print ', '.join(map(lambda x: x[0] + ' ' + x[1], d[x].members)), - print ' }' + print_('struct', x, '{ ',) + print_(', '.join(map(lambda x: x[0] + ' ' + x[1], d[x].members)), + end='') + print_(' }') else: - print x + print_(x) if __name__ == "__main__": main(sys.argv) diff --git a/tools/check-lasso-sections.py b/tools/check-lasso-sections.py index 3a6c9880..34b0f715 100755 --- a/tools/check-lasso-sections.py +++ b/tools/check-lasso-sections.py @@ -3,9 +3,12 @@ import sys import os.path import re +from six import print_ if len(sys.argv) < 3: - print "Usage: check-lasso-sections.py lasso docs/referenrece/lasso/lasso-sections.txt" + print_("Usage: check-lasso-sections.py " + "lasso docs/referenrece/lasso/lasso-sections.txt", + file=sys.stderr) sys.exit(1) source=sys.argv[1] lasso_sections_txt=sys.argv[2] @@ -15,7 +18,8 @@ methods=[] for dirpath, dirnames, filenames in os.walk(source): for filename in filenames: _, ext = os.path.splitext(filename) - lines = list(file(os.path.join(dirpath, filename))) + with open(os.path.join(dirpath, filename)) as f: + lines = f.readlines() while lines: line, lines = lines[0], lines[1:] line=line.strip() @@ -30,13 +34,13 @@ for dirpath, dirnames, filenames in os.walk(source): lasso_sections_txt=file(lasso_sections_txt).read() -print ' = Methods missing from lasso-sections.txt =\n' +print_(' = Methods missing from lasso-sections.txt =\n') for method in methods: if not method in lasso_sections_txt: - print method + print_(method) -print ' = Methods in lasso-sections.txt which does not exist anymore = \n' +print_(' = Methods in lasso-sections.txt which does not exist anymore = \n') for line in lasso_sections_txt.splitlines(): if line.startswith('lasso_'): if line not in methods: - print line + print_(line) diff --git a/tools/format-suppressions.py b/tools/format-suppressions.py index cc9d2fbd..f621fbee 100644 --- a/tools/format-suppressions.py +++ b/tools/format-suppressions.py @@ -1,4 +1,5 @@ import re +from six import print_ valgrind_log = open('log','r').read() @@ -33,11 +34,11 @@ for line in valgrind_log.splitlines(): i = 43 for x in keep: block = keep[x] - print "{" - print " suppression", i + print_("{") + print_(" suppression", i) for x in block[1:]: - print x + print_(x) if re.search(limit_re, x): break - print '}' + print_('}') i += 1 diff --git a/tools/generate_idwsf2_classes.py b/tools/generate_idwsf2_classes.py index 049c0ea8..36200279 100644 --- a/tools/generate_idwsf2_classes.py +++ b/tools/generate_idwsf2_classes.py @@ -5,6 +5,7 @@ import re import xml.dom.minidom import string import sys +from six import print_ full_constructors = { 'disco_svc_metadata': ( @@ -232,7 +233,7 @@ extern "C" { elif b_pref == 'tns': includes['wsa:' + self.base_class_name[6:]] = True else: - print b_pref, self.base_prefix, self.base_class_name + print_(b_pref, self.base_prefix, self.base_class_name) raise 'XXX' s.append('#include ') @@ -255,9 +256,9 @@ extern "C" { else: s.append('#include "%s.h"' % classes[ns][name].file_name) except KeyError: - print >> sys.stderr, 'W: missing', ns, name + print_('W: missing', ns, name, file=sys.stderr) if self.name == 'DataResponseBase': - print classes[ns].keys() + print_(classes[ns].keys()) raise 'toot' pass else: @@ -1418,7 +1419,7 @@ for filename in xsd_filenames: if ns == 'lu': ns = 'util' elif ns not in doms.keys(): - print 'ref:', ref + print_('ref:', ref) raise 'NS: %s' % ns typ = [x for x in doms[ns].getElementsByTagName('xs:attribute') \ if x.attributes.get('name') and x.attributes['name'].value == name][0] @@ -1465,7 +1466,7 @@ for filename in xsd_filenames: if ns == 'lu': ns = 'util' elif ns not in doms.keys(): - print 'ref:', ref + print_('ref:', ref) raise 'NS: %s' % ns typ = [x for x in doms[ns].getElementsByTagName('xs:attribute') \ if x.attributes.get('name') and x.attributes['name'].value == name][0] @@ -1571,7 +1572,7 @@ for filename in xsd_filenames: refered = get_by_name_and_attribute(dom, 'xs:element', 'name', ref) if refered: if len(refered) >= 1: - print >> sys.stderr, 'W: more than one refered' + print_('W: more than one refered', file=sys.stderr) refered = refered[0] if refered.attributes.has_key('type'): elem_type = refered.attributes['type'].value @@ -1596,9 +1597,9 @@ for filename in xsd_filenames: klass.has_ds_signature = True elem_type = 'ds:Signature' else: - print >> sys.stderr, 'W: missing xmldsig support for %s' % ref + print_('W: missing xmldsig support for %s' % ref, file=sys.stderr) elif not doms.has_key(ns): - print >> sys.stderr, 'W: missing dom for', ns + print_('W: missing dom for', ns, file=sys.stderr) elem_type = 'XXX' if ns == 'samlp': elem_type = ref @@ -1664,13 +1665,13 @@ for filename in xsd_filenames: ): klass.elements.append( ('any', 'GList', 'LassoNode')) else: - print >> sys.stderr, 'W: any occurence for %s (prefix: %s)' % (klass.name, prefix) + print_('W: any occurence for %s (prefix: %s)' % (klass.name, prefix), file=sys.stderr) # XXX... other occurences of - print klass.name + print_(klass.name) for elem in klass.elements: - print ' ', elem - print '-'*40 + print_(' ', elem) + print_('-'*40) def get_ordered_classes(): all_classes = [] @@ -1733,9 +1734,9 @@ def generate_swig_main(prefix): for klass_p in classes.keys(): for klass in classes[klass_p].values(): - #print klass_p, klass.name + #print_(klass_p, klass.name) if klass.base_class_name != 'Node': - #print ' <-', klass.base_prefix, ':', klass.base_class_name + #print_(' <-', klass.base_prefix, ':', klass.base_class_name) if klass.base_prefix: prefix = klass.base_prefix else: diff --git a/website/convert-to-static.py b/website/convert-to-static.py index 8a5a1c8c..c055fe0e 100755 --- a/website/convert-to-static.py +++ b/website/convert-to-static.py @@ -4,19 +4,23 @@ import xml.dom.minidom import os import stat import re -from cStringIO import StringIO +from six import StringIO import sys import ezt base_template = ezt.Template() -base_template.parse(file('templates/base.ezt').read()) +with open('templates/base.ezt') as f: + base_template.parse(f.read()) buildlog_template = ezt.Template() -buildlog_template.parse(file('templates/buildlog.ezt').read()) +with open('templates/buildlog.ezt') as f: + buildlog_template.parse(f.read()) changelog_template = ezt.Template() -changelog_template.parse(file('templates/changelog.ezt').read()) +with open('templates/changelog.ezt') as f: + changelog_template.parse(f.read()) tests_template = ezt.Template() -tests_template.parse(file('templates/tests.ezt').read()) +with open('templates/tests.ezt') as f: + tests_template.parse(f.read()) def getText(nodelist): if not nodelist: @@ -114,7 +118,8 @@ class Build: if self.changelog: self.changelog = self.changelog.replace('.xml', '') try: - dom_cl = xml.dom.minidom.parse(file('web' + self.changelog + '.xml')) + with open('web' + self.changelog + '.xml') as f: + dom_cl = xml.dom.minidom.parse(f) except: self.nb_commits = '?' self.last_commit_author = '?' @@ -161,16 +166,19 @@ for BUILDLOGS_DIR in ('build-logs', 'build-logs-wsf'): continue if src_file.endswith('.html'): try: - body = re_body.findall(file(src_file).read())[0][1].strip() + with open(src_file) as f: + body = re_body.findall(f.read())[0][1].strip() except IndexError: raise "no body found" fd = StringIO() base_template.generate(fd, {'body': body, 'title': 'Build Log', 'section': 'buildbox'}) - open(dst_file, 'w').write(fd.getvalue()) + with open(dst_file, 'w') as f: + f.write(fd.getvalue()) continue try: - dom = xml.dom.minidom.parse(file(src_file)) + with open(src_file) as f: + dom = xml.dom.minidom.parse(f) except: continue type = dom.childNodes[0].nodeName @@ -181,7 +189,8 @@ for BUILDLOGS_DIR in ('build-logs', 'build-logs-wsf'): body = fd.getvalue() fd = StringIO() base_template.generate(fd, {'body': body, 'title': 'ChangeLog', 'section': 'buildbox'}) - open(dst_file, 'w').write(fd.getvalue()) + with open(dst_file, 'w') as f: + f.write(fd.getvalue()) if type == 'log': entries = [ChangelogSvnEntry(x) for x in dom.getElementsByTagName('logentry')] @@ -190,7 +199,8 @@ for BUILDLOGS_DIR in ('build-logs', 'build-logs-wsf'): body = fd.getvalue() fd = StringIO() base_template.generate(fd, {'body': body, 'title': 'ChangeLog', 'section': 'buildbox'}) - open(dst_file, 'w').write(fd.getvalue()) + with open(dst_file, 'w') as f: + f.write(fd.getvalue()) if type == 'testsuites': datetime = getText(dom.getElementsByTagName('datetime')[0].childNodes) @@ -203,7 +213,8 @@ for BUILDLOGS_DIR in ('build-logs', 'build-logs-wsf'): fd = StringIO() base_template.generate(fd, {'body': body, 'title': 'Test Suite - %s' % title, 'section': 'buildbox'}) - open(dst_file, 'w').write(fd.getvalue()) + with open(dst_file, 'w') as f: + f.write(fd.getvalue()) day_dirs = os.listdir('web/%s/' % BUILDLOGS_DIR) @@ -237,9 +248,11 @@ for BUILDLOGS_DIR in ('build-logs', 'build-logs-wsf'): fd = StringIO() base_template.generate(fd, {'body': body, 'title': 'Build Box', 'section': 'buildbox'}) if BUILDLOGS_DIR == 'build-logs': - open('web-static/buildbox.html', 'w').write(fd.getvalue()) + with open('web-static/buildbox.html', 'w') as f: + f.write(fd.getvalue()) elif BUILDLOGS_DIR == 'build-logs-wsf': - open('web-static/buildbox-wsf.html', 'w').write(fd.getvalue()) + with open('web-static/buildbox-wsf.html', 'w') as f: + f.write(fd.getvalue()) for base, dirs, files in os.walk('web'): if '/build-logs' in base or '/news/' in base: @@ -276,7 +289,8 @@ for base, dirs, files in os.walk('web'): type = None if ext == '.xml': - dom = xml.dom.minidom.parse(file(src_file)) + with open(src_file) as f: + dom = xml.dom.minidom.parse(f) type = dom.childNodes[0].nodeName dst_file = dst_file.replace('.xml', '.html') @@ -288,12 +302,14 @@ for base, dirs, files in os.walk('web'): news_files = news_files[:2] news = [] for f in news_files: - news.append('
%s
' % re_div.findall(file(os.path.join('web/news/', f)).read())[0][1].strip()) + with open(os.path.join('web/news/', f)) as f: + news.append('
%s
' % re_div.findall(f.read())[0][1].strip()) news = '\n'.join(news) section = src_file.split('/')[1].replace('.xml', '') if ext == '.html' or type == 'html': - content = file(src_file).read() + with open(src_file) as f: + content = f.read() try: body = re_body.findall(content)[0][1].strip() except IndexError: @@ -302,6 +318,7 @@ for base, dirs, files in os.walk('web'): fd = StringIO() base_template.generate(fd, {'body': body, 'title': title, 'section': section, 'news': news}) - open(dst_file, 'w').write(fd.getvalue()) + with open(dst_file, 'w')as f: + f.write(fd.getvalue()) continue diff --git a/website/ezt.py b/website/ezt.py index 3cc79c5a..5ea229c9 100644 --- a/website/ezt.py +++ b/website/ezt.py @@ -229,11 +229,7 @@ import re from types import StringType, IntType, FloatType, LongType import os import cgi -try: - import cStringIO -except ImportError: - import StringIO - cStringIO = StringIO +from six import StringIO # # Formatting types @@ -464,7 +460,8 @@ class Template: ### use the same quoting as HTML for now self._cmd_print_html(valref, fp, ctx) - def _cmd_include(self, (valref, reader), fp, ctx): + def _cmd_include(self, valref_reader_tuple, fp, ctx): + valref, reader = valref_reader_tuple fname = _get_value(valref, ctx) ### note: we don't have the set of for_names to pass into this parse. ### I don't think there is anything to do but document it. we also @@ -527,7 +524,7 @@ class Template: def _cmd_define(self, args, fp, ctx): ((name,), unused, section) = args - valfp = cStringIO.StringIO() + valfp = StringIO() if section is not None: self._execute(section, valfp, ctx) ctx.defines[name] = valfp.getvalue() @@ -587,7 +584,7 @@ def _prepare_ref(refname, for_names, file_args): return refname, start, rest -def _get_value((refname, start, rest), ctx): +def _get_value(refname_start_rest_tuple, ctx): """(refname, start, rest) -> a prepared `value reference' (see above). ctx -> an execution context instance. @@ -595,6 +592,7 @@ def _get_value((refname, start, rest), ctx): for blocks take precedence over data dictionary members with the same name. """ + refname, start, rest = refname_start_rest_tuple if rest is None: # it was a string constant return start