+++ /dev/null
-Description: <short summary of the patch>
- TODO: Put a short summary on the line above and replace this paragraph
- with a longer explanation of this change. Complete the meta-information
- with other relevant fields (see below for details). To make it easier, the
- information below has been extracted from the changelog. Adjust it or drop
- it.
- .
- python-pysaml2 (2.0.0-2) experimental; urgency=medium
- .
- * Added Python 3 support.
-Author: Thomas Goirand <zigo@debian.org>
-
----
-The information above should follow the Patch Tagging Guidelines, please
-checkout http://dep.debian.net/deps/dep3/ to learn about the format. Here
-are templates for supplementary fields that you might want to add:
-
-Origin: <vendor|upstream|other>, <url of original patch>
-Bug: <url in upstream bugtracker>
-Bug-Debian: https://bugs.debian.org/<bugnumber>
-Bug-Ubuntu: https://launchpad.net/bugs/<bugnumber>
-Forwarded: <no|not-needed|url proving that it has been forwarded>
-Reviewed-By: <name and email of someone who approved the patch>
-Last-Update: <YYYY-MM-DD>
-
---- python-pysaml2-2.0.0.orig/example/idp2/idp.py
-+++ python-pysaml2-2.0.0/example/idp2/idp.py
-@@ -979,7 +979,7 @@ if __name__ == '__main__':
- PORT = 8088
-
- SRV = make_server('', PORT, application)
-- print "IdP listening on port: %s" % PORT
-+ print("IdP listening on port: %s" % PORT)
- SRV.serve_forever()
- else:
- _rot = args.mako_root
---- python-pysaml2-2.0.0.orig/example/idp2_repoze/idp.py
-+++ python-pysaml2-2.0.0/example/idp2_repoze/idp.py
-@@ -980,7 +980,7 @@ if __name__ == '__main__':
- PORT = 8088
-
- SRV = make_server('', PORT, application)
-- print "IdP listening on port: %s" % PORT
-+ print("IdP listening on port: %s" % PORT)
- SRV.serve_forever()
- else:
- _rot = args.mako_root
---- python-pysaml2-2.0.0.orig/example/sp-repoze/sp.py
-+++ python-pysaml2-2.0.0/example/sp-repoze/sp.py
-@@ -292,5 +292,5 @@ if __name__ == '__main__':
-
- from wsgiref.simple_server import make_server
- srv = make_server('', PORT, app_with_auth)
-- print "SP listening on port: %s" % PORT
-+ print("SP listening on port: %s" % PORT)
- srv.serve_forever()
-\ No newline at end of file
---- python-pysaml2-2.0.0.orig/example/sp-wsgi/sp.py
-+++ python-pysaml2-2.0.0/example/sp-wsgi/sp.py
-@@ -677,7 +677,7 @@ def application(environ, start_response)
- except Exception, err:
- #_err = exception_trace("RUN", err)
- #logging.error(exception_trace("RUN", _err))
-- print >> sys.stderr, err
-+ print(err)
- resp = ServiceError("%s" % err)
- return resp(environ, start_response)
-
-@@ -733,7 +733,7 @@ if __name__ == '__main__':
- SRV.ssl_adapter = ssl_pyopenssl.pyOpenSSLAdapter(SERVER_CERT,
- SERVER_KEY, CERT_CHAIN)
- logger.info("Server starting")
-- print "SP listening on port: %s" % PORT
-+ print("SP listening on port: %s" % PORT)
- try:
- SRV.start()
- except KeyboardInterrupt:
---- python-pysaml2-2.0.0.orig/src/saml2/__init__.py
-+++ python-pysaml2-2.0.0/src/saml2/__init__.py
-@@ -399,7 +399,7 @@ def make_vals(val, klass, klass_inst=Non
- """
- cinst = None
-
-- #print "make_vals(%s, %s)" % (val, klass)
-+ #print("make_vals(%s, %s)" % (val, klass))
-
- if isinstance(val, dict):
- cinst = klass().loadd(val, base64encode=base64encode)
-@@ -610,7 +610,7 @@ class SamlBase(ExtensionContainer):
- :return: The instance
- """
-
-- #print "set_text: %s" % (val,)
-+ #print("set_text: %s" % (val,))
- if isinstance(val, bool):
- if val:
- setattr(self, "text", "true")
-@@ -642,7 +642,7 @@ class SamlBase(ExtensionContainer):
- """
-
- for prop, _typ, _req in self.c_attributes.values():
-- #print "# %s" % (prop)
-+ #print("# %s" % (prop))
- if prop in ava:
- if isinstance(ava[prop], bool):
- setattr(self, prop, "%s" % ava[prop])
-@@ -655,9 +655,9 @@ class SamlBase(ExtensionContainer):
- self.set_text(ava["text"], base64encode)
-
- for prop, klassdef in self.c_children.values():
-- #print "## %s, %s" % (prop, klassdef)
-+ #print("## %s, %s" % (prop, klassdef))
- if prop in ava:
-- #print "### %s" % ava[prop]
-+ #print("### %s" % ava[prop])
- # means there can be a list of values
- if isinstance(klassdef, list):
- make_vals(ava[prop], klassdef[0], self, prop,
---- python-pysaml2-2.0.0.orig/src/saml2/attribute_converter.py
-+++ python-pysaml2-2.0.0/src/saml2/attribute_converter.py
-@@ -218,9 +218,9 @@ def list_to_local(acs, attrlist, allow_u
-
- def from_local(acs, ava, name_format):
- for aconv in acs:
-- #print ac.format, name_format
-+ #print(ac.format, name_format)
- if aconv.name_format == name_format:
-- #print "Found a name_form converter"
-+ #print("Found a name_form converter")
- return aconv.to_(ava)
-
- return None
-@@ -234,9 +234,9 @@ def from_local_name(acs, attr, name_form
- :return: An Attribute instance
- """
- for aconv in acs:
-- #print ac.format, name_format
-+ #print(ac.format, name_format)
- if aconv.name_format == name_format:
-- #print "Found a name_form converter"
-+ #print("Found a name_form converter")
- return aconv.to_format(attr)
- return attr
-
---- python-pysaml2-2.0.0.orig/src/saml2/ecp_client.py
-+++ python-pysaml2-2.0.0/src/saml2/ecp_client.py
-@@ -226,7 +226,7 @@ class Client(Entity):
- # url I started off with.
- pass
- else:
-- print response.error
-+ print(response.error)
- raise SAMLError(
- "Error POSTing package to SP: %s" % response.error)
-
-@@ -303,7 +303,7 @@ class Client(Entity):
- except (soap.XmlParseError, AssertionError, KeyError):
- pass
-
-- #print "RESP",response, self.http.response
-+ #print("RESP",response, self.http.response)
-
- if response.status_code != 404:
- raise SAMLError("Error performing operation: %s" % (
---- python-pysaml2-2.0.0.orig/src/saml2/httpbase.py
-+++ python-pysaml2-2.0.0/src/saml2/httpbase.py
-@@ -121,7 +121,7 @@ class HTTPBase(object):
- for _, a in list(self.cookiejar._cookies.items()):
- for _, b in a.items():
- for cookie in list(b.values()):
-- # print cookie
-+ # print(cookie)
- if cookie.expires and cookie.expires <= now:
- continue
- if not re.search("%s$" % cookie.domain, _domain):
---- python-pysaml2-2.0.0.orig/src/saml2/mdstore.py
-+++ python-pysaml2-2.0.0/src/saml2/mdstore.py
-@@ -144,9 +144,7 @@ class MetaData(object):
-
- # have I seen this entity_id before ? If so if log: ignore it
- if entity_descr.entity_id in self.entity:
-- print >> sys.stderr, \
-- "Duplicated Entity descriptor (entity id: '%s')" % \
-- entity_descr.entity_id
-+ print("Duplicated Entity descriptor (entity id: '%s')" % entity_descr.entity_id)
- return
-
- _ent = to_dict(entity_descr, self.onts)
---- python-pysaml2-2.0.0.orig/src/saml2/pack.py
-+++ python-pysaml2-2.0.0/src/saml2/pack.py
-@@ -221,11 +221,11 @@ def parse_soap_enveloped_saml(text, body
- envelope = ElementTree.fromstring(text)
- assert envelope.tag == '{%s}Envelope' % NAMESPACE
-
-- #print len(envelope)
-+ #print(len(envelope))
- body = None
- header = {}
- for part in envelope:
-- #print ">",part.tag
-+ #print(">",part.tag)
- if part.tag == '{%s}Body' % NAMESPACE:
- for sub in part:
- try:
-@@ -236,11 +236,11 @@ def parse_soap_enveloped_saml(text, body
- elif part.tag == '{%s}Header' % NAMESPACE:
- if not header_class:
- raise Exception("Header where I didn't expect one")
-- #print "--- HEADER ---"
-+ #print("--- HEADER ---")
- for sub in part:
-- #print ">>",sub.tag
-+ #print(">>",sub.tag)
- for klass in header_class:
-- #print "?{%s}%s" % (klass.c_namespace,klass.c_tag)
-+ #print("?{%s}%s" % (klass.c_namespace,klass.c_tag))
- if sub.tag == "{%s}%s" % (klass.c_namespace, klass.c_tag):
- header[sub.tag] = \
- saml2.create_class_from_element_tree(klass, sub)
---- python-pysaml2-2.0.0.orig/src/saml2/request.py
-+++ python-pysaml2-2.0.0/src/saml2/request.py
-@@ -68,8 +68,8 @@ class Request(object):
- self.timeslack).timetuple()
- lower = time_util.shift_time(time_util.time_a_while_ago(days=1),
- - self.timeslack).timetuple()
-- # print "issue_instant: %s" % self.message.issue_instant
-- # print "%s < x < %s" % (lower, upper)
-+ # print("issue_instant: %s" % self.message.issue_instant)
-+ # print("%s < x < %s" % (lower, upper))
- issued_at = time_util.str_to_time(self.message.issue_instant)
- return issued_at > lower and issued_at < upper
-
---- python-pysaml2-2.0.0.orig/src/saml2/response.py
-+++ python-pysaml2-2.0.0/src/saml2/response.py
-@@ -214,7 +214,7 @@ def for_me(conditions, myself):
- if audience.text.strip() == myself:
- return True
- else:
-- #print "Not for me: %s != %s" % (audience.text.strip(), myself)
-+ #print("Not for me: %s != %s" % (audience.text.strip(), myself))
- pass
-
- return False
-@@ -330,7 +330,7 @@ class StatusResponse(object):
- #logger.exception("EXCEPTION: %s", excp)
- raise
-
-- #print "<", self.response
-+ #print("<", self.response)
-
- return self._postamble()
-
-@@ -362,8 +362,8 @@ class StatusResponse(object):
- self.timeslack).timetuple()
- lower = time_util.shift_time(time_util.time_a_while_ago(days=1),
- -self.timeslack).timetuple()
-- # print "issue_instant: %s" % self.response.issue_instant
-- # print "%s < x < %s" % (lower, upper)
-+ # print("issue_instant: %s" % self.response.issue_instant)
-+ # print("%s < x < %s" % (lower, upper))
- issued_at = str_to_time(self.response.issue_instant)
- return lower < issued_at < upper
-
-@@ -1025,7 +1025,7 @@ class AssertionIDResponse(object):
- logger.exception("EXCEPTION: %s", excp)
- raise
-
-- #print "<", self.response
-+ #print("<", self.response)
-
- return self._postamble()
-
---- python-pysaml2-2.0.0.orig/src/saml2/s_utils.py
-+++ python-pysaml2-2.0.0/src/saml2/s_utils.py
-@@ -423,7 +423,7 @@ def dynamic_importer(name, class_name=No
- try:
- fp, pathname, description = imp.find_module(name)
- except ImportError:
-- print "unable to locate module: " + name
-+ print("unable to locate module: " + name)
- return None, None
-
- try:
---- python-pysaml2-2.0.0.orig/src/saml2/saml.py
-+++ python-pysaml2-2.0.0/src/saml2/saml.py
-@@ -89,7 +89,7 @@ def _decode_attribute_value(typ, text):
-
-
- def _verify_value_type(typ, val):
-- #print "verify value type: %s, %s" % (typ, val)
-+ #print("verify value type: %s, %s" % (typ, val))
- if typ == XSD + "string":
- try:
- return str(val)
-@@ -242,7 +242,7 @@ class AttributeValueBase(SamlBase):
- for attribute, value in tree.attrib.iteritems():
- self._convert_element_attribute_to_member(attribute, value)
- if tree.text:
-- #print "set_text:", tree.text
-+ #print("set_text:", tree.text)
- # clear type
- #self.clear_type()
- self.set_text(tree.text)
---- python-pysaml2-2.0.0.orig/src/saml2/server.py
-+++ python-pysaml2-2.0.0/src/saml2/server.py
-@@ -129,7 +129,7 @@ class Server(Entity):
- elif isinstance(dbspec, basestring):
- idb = shelve.open(dbspec, writeback=True)
- else: # database spec is a a 2-tuple (type, address)
-- #print >> sys.stderr, "DBSPEC: %s" % (dbspec,)
-+ #print("DBSPEC: %s" % (dbspec,))
- (typ, addr) = dbspec
- if typ == "shelve":
- idb = shelve.open(addr, writeback=True)
---- python-pysaml2-2.0.0.orig/src/saml2/sigver.py
-+++ python-pysaml2-2.0.0/src/saml2/sigver.py
-@@ -226,7 +226,7 @@ def _make_vals(val, klass, seccont, klas
- """
- cinst = None
-
-- #print "make_vals(%s, %s)" % (val, klass)
-+ #print("make_vals(%s, %s)" % (val, klass))
-
- if isinstance(val, dict):
- cinst = _instance(klass, val, seccont, base64encode=base64encode,
-@@ -255,7 +255,7 @@ def _instance(klass, ava, seccont, base6
- instance = klass()
-
- for prop in instance.c_attributes.values():
-- #print "# %s" % (prop)
-+ #print("# %s" % (prop))
- if prop in ava:
- if isinstance(ava[prop], bool):
- setattr(instance, prop, "%s" % ava[prop])
-@@ -268,9 +268,9 @@ def _instance(klass, ava, seccont, base6
- instance.set_text(ava["text"], base64encode)
-
- for prop, klassdef in instance.c_children.values():
-- #print "## %s, %s" % (prop, klassdef)
-+ #print("## %s, %s" % (prop, klassdef))
- if prop in ava:
-- #print "### %s" % ava[prop]
-+ #print("### %s" % ava[prop])
- if isinstance(klassdef, list):
- # means there can be a list of values
- _make_vals(ava[prop], klassdef[0], seccont, instance, prop,
-@@ -310,9 +310,9 @@ def signed_instance_factory(instance, se
- signed_xml = seccont.sign_statement(
- signed_xml, class_name=node_name, node_id=nodeid)
-
-- #print "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
-- #print "%s" % signed_xml
-- #print "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
-+ #print("xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx")
-+ #print("%s" % signed_xml)
-+ #print("xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx")
- return signed_xml
- else:
- return instance
-@@ -405,7 +405,7 @@ def cert_from_key_info(key_info, ignore_
- """
- res = []
- for x509_data in key_info.x509_data:
-- #print "X509Data",x509_data
-+ #print("X509Data",x509_data)
- x509_certificate = x509_data.x509_certificate
- cert = x509_certificate.text.strip()
- cert = "\n".join(split_len("".join([s.strip() for s in
-@@ -850,15 +850,15 @@ class CryptoBackendXmlSec1(CryptoBackend
-
- if self.__DEBUG:
- try:
-- print " ".join(com_list)
-+ print(" ".join(com_list))
- except TypeError:
-- print "cert_type", cert_type
-- print "cert_file", cert_file
-- print "node_name", node_name
-- print "fil", fil
-+ print("cert_type", cert_type)
-+ print("cert_file", cert_file)
-+ print("node_name", node_name)
-+ print("fil", fil)
- raise
-- print "%s: %s" % (cert_file, os.access(cert_file, os.F_OK))
-- print "%s: %s" % (fil, os.access(fil, os.F_OK))
-+ print("%s: %s" % (cert_file, os.access(cert_file, os.F_OK)))
-+ print("%s: %s" % (fil, os.access(fil, os.F_OK)))
-
- (_stdout, stderr, _output) = self._run_xmlsec(com_list, [fil],
- exception=SignatureError)
-@@ -1266,7 +1266,7 @@ class SecurityContext(object):
- def _check_signature(self, decoded_xml, item, node_name=NODE_NAME,
- origdoc=None, id_attr="", must=False,
- only_valid_cert=False):
-- #print item
-+ #print(item)
- try:
- issuer = item.issuer.text.strip()
- except AttributeError:
-@@ -1298,7 +1298,7 @@ class SecurityContext(object):
- if not certs:
- raise MissingKey("%s" % issuer)
-
-- #print certs
-+ #print(certs)
-
- verified = False
- last_pem_file = None
---- python-pysaml2-2.0.0.orig/src/saml2/time_util.py
-+++ python-pysaml2-2.0.0/src/saml2/time_util.py
-@@ -84,7 +84,7 @@ def parse_duration(duration):
- dic = dict([(typ, 0) for (code, typ) in D_FORMAT])
-
- for code, typ in D_FORMAT:
-- #print duration[index:], code
-+ #print(duration[index:], code)
- if duration[index] == '-':
- raise Exception("Negation not allowed on individual items")
- if code == "T":
-@@ -243,7 +243,7 @@ def str_to_time(timestr, format=TIME_FOR
- try:
- elem = TIME_FORMAT_WITH_FRAGMENT.match(timestr)
- except Exception, exc:
-- print >> sys.stderr, "Exception: %s on %s" % (exc, timestr)
-+ print("Exception: %s on %s" % (exc, timestr))
- raise
- then = time.strptime(elem.groups()[0] + "Z", TIME_FORMAT)
-
---- python-pysaml2-2.0.0.orig/src/saml2/validate.py
-+++ python-pysaml2-2.0.0/src/saml2/validate.py
-@@ -337,10 +337,10 @@ def valid(typ, value):
- def _valid_instance(instance, val):
- try:
- val.verify()
-- except NotValid, exc:
-+ except NotValid as exc:
- raise NotValid("Class '%s' instance: %s" % (
- instance.__class__.__name__, exc.args[0]))
-- except OutsideCardinality, exc:
-+ except OutsideCardinality as exc:
- raise NotValid(
- "Class '%s' instance cardinality error: %s" % (
- instance.__class__.__name__, exc.args[0]))
-@@ -361,7 +361,7 @@ def valid_instance(instance):
- try:
- validate_value_type(instance.text.strip(),
- instclass.c_value_type)
-- except NotValid, exc:
-+ except NotValid as exc:
- raise NotValid("Class '%s' instance: %s" % (class_name,
- exc.args[0]))
-
-@@ -382,7 +382,7 @@ def valid_instance(instance):
- validate_value_type(value, spec)
- else:
- valid(typ, value)
-- except (NotValid, ValueError), exc:
-+ except (NotValid, ValueError) as exc:
- txt = ERROR_TEXT % (value, name, exc.args[0])
- raise NotValid("Class '%s' instance: %s" % (class_name, txt))
-
---- python-pysaml2-2.0.0.orig/tests/_test_80_p11_backend.py
-+++ python-pysaml2-2.0.0/tests/_test_80_p11_backend.py
-@@ -151,9 +151,9 @@ class TestPKCS11():
- )
- self.configured = True
- except Exception, ex:
-- print "-" * 64
-+ print("-" * 64)
- traceback.print_exc()
-- print "-" * 64
-+ print("-" * 64)
- logging.warning("PKCS11 tests disabled: unable to initialize test token: %s" % ex)
- raise
-
-@@ -176,7 +176,7 @@ class TestPKCS11():
- env = {}
- if self.softhsm_conf is not None:
- env['SOFTHSM_CONF'] = self.softhsm_conf
-- #print "env SOFTHSM_CONF=%s " % softhsm_conf +" ".join(args)
-+ #print("env SOFTHSM_CONF=%s " % softhsm_conf +" ".join(args))
- logging.debug("Environment {!r}".format(env))
- logging.debug("Executing {!r}".format(args))
- args = ['ls']
-@@ -197,24 +197,24 @@ class TestPKCS11():
- os.environ['SOFTHSM_CONF'] = self.softhsm_conf
-
- ass = self._assertion
-- print ass
-+ print(ass)
- sign_ass = self.sec.sign_assertion("%s" % ass, node_id=ass.id)
-- #print sign_ass
-+ #print(sign_ass)
- sass = saml.assertion_from_string(sign_ass)
-- #print sass
-+ #print(sass)
- assert _eq(sass.keyswv(), ['attribute_statement', 'issue_instant',
- 'version', 'signature', 'id'])
- assert sass.version == "2.0"
- assert sass.id == "11111"
- assert time_util.str_to_time(sass.issue_instant)
-
-- print "Crypto version : %s" % (self.sec.crypto.version())
-+ print("Crypto version : %s" % (self.sec.crypto.version()))
-
- item = self.sec.check_signature(sass, class_name(sass), sign_ass)
-
- assert isinstance(item, saml.Assertion)
-
-- print "Test PASSED"
-+ print("Test PASSED")
-
-
- def test_xmlsec_cryptobackend():
---- python-pysaml2-2.0.0.orig/tests/otest_61_makemeta.py
-+++ python-pysaml2-2.0.0/tests/otest_61_makemeta.py
-@@ -84,9 +84,9 @@ def test_org_1():
- "url": [("http://example.com","en")],
- }
- org = metadata.do_organization_info(desc)
-- print org
-+ print(org)
- assert isinstance(org, md.Organization)
-- print org.keyswv()
-+ print(org.keyswv())
- assert _eq(org.keyswv(), ['organization_name',
- 'organization_display_name','organization_url'])
- assert len(org.organization_name) == 3
-@@ -100,7 +100,7 @@ def test_org_2():
- "url": ("http://example.com","en"),
- }
- org = metadata.do_organization_info(desc)
-- print org
-+ print(org)
- assert _eq(org.keyswv(), ['organization_name',
- 'organization_display_name','organization_url'])
- assert len(org.organization_name) == 3
-@@ -129,7 +129,7 @@ def test_contact_0():
- assert _eq(contact_person[0].keyswv(), ['given_name', 'sur_name',
- 'contact_type', 'telephone_number',
- "email_address"])
-- print contact_person[0]
-+ print(contact_person[0])
- person = contact_person[0]
- assert person.contact_type == "technical"
- assert isinstance(person.given_name, md.GivenName)
-@@ -145,7 +145,7 @@ def test_contact_0():
- def test_do_endpoints():
- eps = metadata.do_endpoints(SP["service"]["sp"]["endpoints"],
- metadata.ENDPOINTS["sp"])
-- print eps
-+ print(eps)
- assert _eq(eps.keys(), ["assertion_consumer_service",
- "single_logout_service"])
-
-@@ -168,7 +168,7 @@ def test_required_attributes():
- SP["service"]["sp"]["required_attributes"],
- attrconverters, is_required="true")
- assert len(ras) == len(SP["service"]["sp"]["required_attributes"])
-- print ras[0]
-+ print(ras[0])
- assert ras[0].name == 'urn:oid:2.5.4.4'
- assert ras[0].name_format == NAME_FORMAT_URI
- assert ras[0].is_required == "true"
-@@ -179,7 +179,7 @@ def test_optional_attributes():
- SP["service"]["sp"]["optional_attributes"],
- attrconverters)
- assert len(ras) == len(SP["service"]["sp"]["optional_attributes"])
-- print ras[0]
-+ print(ras[0])
- assert ras[0].name == 'urn:oid:2.5.4.12'
- assert ras[0].name_format == NAME_FORMAT_URI
- assert ras[0].is_required == "false"
-@@ -200,7 +200,7 @@ def test_do_sp_sso_descriptor():
- assert spsso.want_assertions_signed == "true"
- assert len (spsso.attribute_consuming_service) == 1
- acs = spsso.attribute_consuming_service[0]
-- print acs.keyswv()
-+ print(acs.keyswv())
- assert _eq(acs.keyswv(), ['requested_attribute', 'service_name',
- 'service_description', 'index'])
- assert acs.service_name[0].text == SP["name"]
-@@ -218,7 +218,7 @@ def test_do_sp_sso_descriptor_2():
- spsso = metadata.do_spsso_descriptor(conf)
-
- assert isinstance(spsso, md.SPSSODescriptor)
-- print spsso.keyswv()
-+ print(spsso.keyswv())
- assert _eq(spsso.keyswv(), ['authn_requests_signed',
- 'attribute_consuming_service',
- 'single_logout_service',
-@@ -229,11 +229,11 @@ def test_do_sp_sso_descriptor_2():
-
- exts = spsso.extensions.extension_elements
- assert len(exts) == 1
-- print exts
-+ print(exts)
- idpd = saml2.extension_element_to_element(exts[0],
- idpdisc.ELEMENT_FROM_STRING,
- namespace=idpdisc.NAMESPACE)
-- print idpd
-+ print(idpd)
- assert idpd.location == "http://example.com/sp/ds"
- assert idpd.index == "0"
- assert idpd.binding == "urn:oasis:names:tc:SAML:profiles:SSO:idp-discovery-protocol"
-@@ -241,13 +241,13 @@ def test_do_sp_sso_descriptor_2():
- def test_entity_description():
- #confd = eval(open("../tests/server.config").read())
- confd = SPConfig().load_file("server_conf")
-- print confd.attribute_converters
-+ print(confd.attribute_converters)
- entd = metadata.entity_descriptor(confd)
- assert entd is not None
-- print entd.keyswv()
-+ print(entd.keyswv())
- assert _eq(entd.keyswv(), ['valid_until', 'entity_id', 'contact_person',
- 'spsso_descriptor', 'organization'])
-- print entd
-+ print(entd)
- assert entd.entity_id == "urn:mace:example.com:saml:roland:sp"
-
- def test_do_idp_sso_descriptor():
-@@ -261,7 +261,7 @@ def test_do_idp_sso_descriptor():
- "extensions"])
- exts = idpsso.extensions.extension_elements
- assert len(exts) == 2
-- print exts
-+ print(exts)
- inst = saml2.extension_element_to_element(exts[0],
- shibmd.ELEMENT_FROM_STRING,
- namespace=shibmd.NAMESPACE)
---- python-pysaml2-2.0.0.orig/tests/test_00_xmldsig.py
-+++ python-pysaml2-2.0.0/tests/test_00_xmldsig.py
-@@ -99,7 +99,7 @@ class TestSPKIData:
- def testUsingTestData(self):
- """Test for spki_data_from_string() using test data"""
- new_spki_data = ds.spki_data_from_string(ds_data.TEST_SPKI_DATA)
-- print new_spki_data
-+ print(new_spki_data)
- assert new_spki_data.spki_sexp[0].text.strip() == "spki sexp"
- assert new_spki_data.spki_sexp[1].text.strip() == "spki sexp2"
-
-@@ -161,7 +161,7 @@ class TestX509Data:
- def testAccessors(self):
- """Test for X509Data accessors"""
- st = ds.x509_issuer_serial_from_string(ds_data.TEST_X509_ISSUER_SERIAL)
-- print st
-+ print(st)
- self.x509_data.x509_issuer_serial= st
- self.x509_data.x509_ski = ds.X509SKI(text="x509 ski")
- self.x509_data.x509_subject_name = ds.X509SubjectName(
-@@ -171,8 +171,8 @@ class TestX509Data:
- self.x509_data.x509_crl = ds.X509CRL(text="x509 crl")
-
- new_x509_data = ds.x509_data_from_string(self.x509_data.to_string())
-- print new_x509_data.keyswv()
-- print new_x509_data.__dict__.keys()
-+ print(new_x509_data.keyswv())
-+ print(new_x509_data.__dict__.keys())
- assert new_x509_data.x509_issuer_serial
- assert isinstance(new_x509_data.x509_issuer_serial, ds.X509IssuerSerial)
- assert new_x509_data.x509_ski.text.strip() == "x509 ski"
---- python-pysaml2-2.0.0.orig/tests/test_01_xmlenc.py
-+++ python-pysaml2-2.0.0/tests/test_01_xmlenc.py
-@@ -45,7 +45,7 @@ data2 = """<?xml version='1.0' encoding=
- def test_2():
- ed = xenc.encrypted_data_from_string(data2)
- assert ed
-- print ed
-+ print(ed)
- assert ed.type == "http://www.w3.org/2001/04/xmlenc#Element"
- assert ed.encryption_method is not None
- em = ed.encryption_method
-@@ -76,7 +76,7 @@ data3 = """<?xml version='1.0' encoding=
- def test_3():
- ed = xenc.encrypted_data_from_string(data3)
- assert ed
-- print ed
-+ print(ed)
- assert ed.encryption_method != None
- em = ed.encryption_method
- assert em.algorithm == 'http://www.w3.org/2001/04/xmlenc#aes128-cbc'
-@@ -126,7 +126,7 @@ data4 = """<?xml version='1.0' encoding=
- def test_4():
- ek = xenc.encrypted_key_from_string(data4)
- assert ek
-- print ek
-+ print(ek)
- assert ek.encryption_method != None
- em = ek.encryption_method
- assert em.algorithm == 'http://www.w3.org/2001/04/xmlenc#rsa-1_5'
-@@ -159,8 +159,8 @@ data5 = """<CipherReference URI="http://
- def test_5():
- cr = xenc.cipher_reference_from_string(data5)
- assert cr
-- print cr
-- print cr.keyswv()
-+ print(cr)
-+ print(cr.keyswv())
- trs = cr.transforms
- assert len(trs.transform) == 2
- tr = trs.transform[0]
-@@ -189,7 +189,7 @@ data6 = """<ReferenceList xmlns="http://
- def test_6():
- rl = xenc.reference_list_from_string(data6)
- assert rl
-- print rl
-+ print(rl)
- assert len(rl.data_reference) == 1
- dr = rl.data_reference[0]
- assert dr.uri == "#invoice34"
---- python-pysaml2-2.0.0.orig/tests/test_02_saml.py
-+++ python-pysaml2-2.0.0/tests/test_02_saml.py
-@@ -52,7 +52,7 @@ class TestExtensionElement:
- ee.loadd(ava)
-
- del ava["tag"]
-- print ava
-+ print(ava)
- ee = saml2.ExtensionElement("")
-
- raises(KeyError, "ee.loadd(ava)")
-@@ -156,7 +156,7 @@ class TestExtensionContainer:
- }]
-
- ees = [saml2.ExtensionElement("").loadd(a) for a in avas]
-- print ees
-+ print(ees)
- ec = saml2.ExtensionContainer(extension_elements=ees)
- esl = ec.find_extensions(tag="tag2")
- assert len(esl) == 1
-@@ -207,7 +207,7 @@ class TestSAMLBase:
- }
-
- foo = saml2.make_vals(ava, Issuer, part=True)
-- print foo
-+ print(foo)
- assert foo.format == NAMEID_FORMAT_EMAILADDRESS
- assert foo.sp_name_qualifier == "loa"
- assert foo.text == "free text"
-@@ -216,7 +216,7 @@ class TestSAMLBase:
- ava = "free text"
-
- foo = saml2.make_vals(ava, Issuer, part=True)
-- print foo
-+ print(foo)
- assert foo.keyswv() == ["text"]
- assert foo.text == "free text"
-
-@@ -236,8 +236,8 @@ class TestSAMLBase:
- txt = foo.to_string()
- nsstr = foo.to_string({"saml": saml.NAMESPACE})
- assert nsstr != txt
-- print txt
-- print nsstr
-+ print(txt)
-+ print(nsstr)
- assert "saml:AttributeValue" in nsstr
- assert "saml:AttributeValue" not in txt
-
-@@ -689,28 +689,28 @@ class TestAttribute:
-
- def test_basic_str(self):
- attribute = saml.attribute_from_string(BASIC_STR_AV)
-- print attribute
-+ print(attribute)
- assert attribute.attribute_value[0].text.strip() == "By-Tor"
-
- def test_basic_int(self):
- attribute = saml.attribute_from_string(BASIC_INT_AV)
-- print attribute
-+ print(attribute)
- assert attribute.attribute_value[0].text == "23"
-
- def test_basic_base64(self):
- attribute = saml.attribute_from_string(BASIC_BASE64_AV)
-- print attribute
-+ print(attribute)
- assert attribute.attribute_value[0].text == "VU5JTkVUVA=="
- assert attribute.attribute_value[0].get_type() == "xs:base64Binary"
-
- def test_basic_boolean_true(self):
- attribute = saml.attribute_from_string(BASIC_BOOLEAN_TRUE_AV)
-- print attribute
-+ print(attribute)
- assert attribute.attribute_value[0].text.lower() == "true"
-
- def test_basic_boolean_false(self):
- attribute = saml.attribute_from_string(BASIC_BOOLEAN_FALSE_AV)
-- print attribute
-+ print(attribute)
- assert attribute.attribute_value[0].text.lower() == "false"
-
-
-@@ -1102,7 +1102,7 @@ class TestEvidence:
- self.evidence.assertion.append(saml.Assertion())
- self.evidence.encrypted_assertion.append(saml.EncryptedAssertion())
- new_evidence = saml.evidence_from_string(self.evidence.to_string())
-- print new_evidence
-+ print(new_evidence)
- assert self.evidence.to_string() == new_evidence.to_string()
- assert isinstance(new_evidence.assertion_id_ref[0],
- saml.AssertionIDRef)
---- python-pysaml2-2.0.0.orig/tests/test_03_saml2.py
-+++ python-pysaml2-2.0.0/tests/test_03_saml2.py
-@@ -170,7 +170,7 @@ def test_ee_1():
- ee = saml2.extension_element_from_string(
- """<?xml version='1.0' encoding='UTF-8'?><foo>bar</foo>""")
- assert ee != None
-- print ee.__dict__
-+ print(ee.__dict__)
- assert ee.attributes == {}
- assert ee.tag == "foo"
- assert ee.namespace == None
-@@ -182,7 +182,7 @@ def test_ee_2():
- ee = saml2.extension_element_from_string(
- """<?xml version='1.0' encoding='UTF-8'?><foo id="xyz">bar</foo>""")
- assert ee != None
-- print ee.__dict__
-+ print(ee.__dict__)
- assert ee.attributes == {"id": "xyz"}
- assert ee.tag == "foo"
- assert ee.namespace == None
-@@ -196,7 +196,7 @@ def test_ee_3():
- <foo xmlns="urn:mace:example.com:saml:ns"
- id="xyz">bar</foo>""")
- assert ee != None
-- print ee.__dict__
-+ print(ee.__dict__)
- assert ee.attributes == {"id": "xyz"}
- assert ee.tag == "foo"
- assert ee.namespace == "urn:mace:example.com:saml:ns"
-@@ -210,7 +210,7 @@ def test_ee_4():
- <foo xmlns="urn:mace:example.com:saml:ns">
- <id>xyz</id><bar>tre</bar></foo>""")
- assert ee != None
-- print ee.__dict__
-+ print(ee.__dict__)
- assert ee.attributes == {}
- assert ee.tag == "foo"
- assert ee.namespace == "urn:mace:example.com:saml:ns"
-@@ -221,7 +221,7 @@ def test_ee_4():
- ids = ee.find_children("id", "urn:mace:example.com:saml:ns")
- assert ids != []
- cid = ids[0]
-- print cid.__dict__
-+ print(cid.__dict__)
- assert cid.attributes == {}
- assert cid.tag == "id"
- assert cid.namespace == "urn:mace:example.com:saml:ns"
-@@ -241,7 +241,7 @@ def test_ee_5():
- ee.children.append(ce)
-
- assert ee != None
-- print ee.__dict__
-+ print(ee.__dict__)
- assert ee.attributes == {}
- assert ee.tag == "foo"
- assert ee.namespace == "urn:mace:example.com:saml:ns"
-@@ -249,7 +249,7 @@ def test_ee_5():
- assert ee.text.strip() == "bar"
-
- c = ee.children[0]
-- print c.__dict__
-+ print(c.__dict__)
-
- child = ee.find_children(namespace="urn:mace:example.com:saml:cu")
- assert len(child) == 1
-@@ -259,7 +259,7 @@ def test_ee_5():
- assert len(child) == 1
- child = ee.find_children("edugain", "urn:mace:example.com:saml:cu")
- assert len(child) == 0
-- print ee.to_string()
-+ print(ee.to_string())
-
-
- def test_ee_6():
-@@ -277,7 +277,7 @@ def test_ee_6():
- pee = saml2._extension_element_from_element_tree(et)
-
- assert pee != None
-- print pee.__dict__
-+ print(pee.__dict__)
- assert pee.attributes == {}
- assert pee.tag == "foo"
- assert pee.namespace == "urn:mace:example.com:saml:ns"
-@@ -285,7 +285,7 @@ def test_ee_6():
- assert pee.text.strip() == "bar"
-
- c = pee.children[0]
-- print c.__dict__
-+ print(c.__dict__)
-
- child = pee.find_children(namespace="urn:mace:example.com:saml:cu")
- assert len(child) == 1
-@@ -295,7 +295,7 @@ def test_ee_6():
- assert len(child) == 1
- child = pee.find_children("edugain", "urn:mace:example.com:saml:cu")
- assert len(child) == 0
-- print pee.to_string()
-+ print(pee.to_string())
-
-
- NAMEID_WITH_ATTRIBUTE_EXTENSION = """<?xml version="1.0" encoding="utf-8"?>
-@@ -312,7 +312,7 @@ NAMEID_WITH_ATTRIBUTE_EXTENSION = """<?x
- def test_nameid_with_extension():
- kl = create_class_from_xml_string(NameID, NAMEID_WITH_ATTRIBUTE_EXTENSION)
- assert kl != None
-- print kl.__dict__
-+ print(kl.__dict__)
- assert kl.format == "urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress"
- assert kl.sp_provided_id == "sp provided id"
- assert kl.text.strip() == "roland@example.com"
-@@ -346,7 +346,7 @@ def test_subject_confirmation_with_exten
- kl = create_class_from_xml_string(SubjectConfirmation,
- SUBJECT_CONFIRMATION_WITH_MEMBER_EXTENSION)
- assert kl != None
-- print kl.__dict__
-+ print(kl.__dict__)
- assert kl.extension_attributes == {}
- assert kl.method == "urn:oasis:names:tc:SAML:2.0:cm:bearer"
- name_id = kl.name_id
-@@ -376,8 +376,8 @@ def test_to_fro_string_1():
- txt = kl.to_string()
- cpy = create_class_from_xml_string(SubjectConfirmation, txt)
-
-- print kl.__dict__
-- print cpy.__dict__
-+ print(kl.__dict__)
-+ print(cpy.__dict__)
-
- assert kl.text.strip() == cpy.text.strip()
- assert _eq(kl.keyswv(), cpy.keyswv())
-@@ -405,7 +405,7 @@ def test_make_vals_list_of_strs():
- def test_attribute_element_to_extension_element():
- attr = create_class_from_xml_string(Attribute, saml2_data.TEST_ATTRIBUTE)
- ee = saml2.element_to_extension_element(attr)
-- print ee.__dict__
-+ print(ee.__dict__)
- assert ee.tag == "Attribute"
- assert ee.namespace == 'urn:oasis:names:tc:SAML:2.0:assertion'
- assert _eq(ee.attributes.keys(), ['FriendlyName', 'Name', 'NameFormat'])
-@@ -436,7 +436,7 @@ def test_ee_7():
- </ExternalEntityAttributeAuthority>
- """)
-
-- print ee.__dict__
-+ print(ee.__dict__)
- assert len(ee.children) == 2
- for child in ee.children:
- assert child.namespace == "urn:oasis:names:tc:SAML:metadata:dynamicsaml"
-@@ -479,7 +479,7 @@ def test_extension_element_loadd():
- }
-
- ee = saml2.ExtensionElement(ava["tag"]).loadd(ava)
-- print ee.__dict__
-+ print(ee.__dict__)
- assert len(ee.children) == 2
- for child in ee.children:
- assert child.namespace == "urn:oasis:names:tc:SAML:metadata:dynamicsaml"
-@@ -529,7 +529,7 @@ def test_extensions_loadd():
- extension = saml2.SamlBase()
- extension.loadd(ava)
-
-- print extension.__dict__
-+ print(extension.__dict__)
- assert len(extension.extension_elements) == 1
- ee = extension.extension_elements[0]
- assert len(ee.children) == 2
---- python-pysaml2-2.0.0.orig/tests/test_04_samlp.py
-+++ python-pysaml2-2.0.0/tests/test_04_samlp.py
-@@ -96,7 +96,7 @@ class TestStatusCode:
- self.status_code.value = samlp.STATUS_RESPONDER
- self.status_code.status_code = samlp.StatusCode(
- value=samlp.STATUS_REQUEST_DENIED)
-- print self.status_code.__dict__
-+ print(self.status_code.__dict__)
- new_status_code = samlp.status_code_from_string(self.status_code.to_string())
- assert new_status_code.value == samlp.STATUS_RESPONDER
- assert new_status_code.status_code.value == \
---- python-pysaml2-2.0.0.orig/tests/test_05_md.py
-+++ python-pysaml2-2.0.0/tests/test_05_md.py
-@@ -47,7 +47,7 @@ class TestEndpointType:
- self.endpoint.binding = saml2.BINDING_HTTP_POST
- self.endpoint.location = "http://www.example.com/endpoint"
- self.endpoint.response_location = "http://www.example.com/response"
-- print self.endpoint.__class__.c_attributes.items()
-+ print(self.endpoint.__class__.c_attributes.items())
- new_endpoint = md.endpoint_type__from_string(self.endpoint.to_string())
- assert new_endpoint.binding == saml2.BINDING_HTTP_POST
- assert new_endpoint.location == "http://www.example.com/endpoint"
-@@ -125,7 +125,7 @@ class TestOrganizationName:
- """Test for organization_name_from_string() using test data."""
- new_organization_name = md.organization_name_from_string(
- md_data.TEST_ORGANIZATION_NAME)
-- print new_organization_name.keyswv()
-+ print(new_organization_name.keyswv())
- assert new_organization_name.lang == "se"
- assert new_organization_name.text.strip() == "Catalogix"
-
-@@ -161,7 +161,7 @@ class TestOrganizationURL:
- """Test for OrganizationURL accessors"""
- self.organization_url.lang = "ja"
- self.organization_url.text = "http://www.example.com/"
-- print self.organization_url.to_string()
-+ print(self.organization_url.to_string())
- new_organization_url = md.organization_url_from_string(
- self.organization_url.to_string())
- assert new_organization_url.lang == "ja"
-@@ -967,10 +967,10 @@ class TestSPSSODescriptor:
- self.sp_sso_descriptor.attribute_consuming_service.append(
- md.AttributeConsumingService())
-
-- print self.sp_sso_descriptor
-+ print(self.sp_sso_descriptor)
- new_sp_sso_descriptor = md.spsso_descriptor_from_string(
- self.sp_sso_descriptor.to_string())
-- print new_sp_sso_descriptor
-+ print(new_sp_sso_descriptor)
- assert new_sp_sso_descriptor.id == "ID"
- assert new_sp_sso_descriptor.valid_until == "2008-09-14T01:05:02Z"
- assert new_sp_sso_descriptor.cache_duration == "10:00:00:00"
-@@ -1013,13 +1013,13 @@ class TestSPSSODescriptor:
- assert new_sp_sso_descriptor.error_url == "http://www.example.com/errorURL"
- assert isinstance(new_sp_sso_descriptor.signature, ds.Signature)
- assert isinstance(new_sp_sso_descriptor.extensions, md.Extensions)
-- print new_sp_sso_descriptor.extensions.__dict__
-+ print(new_sp_sso_descriptor.extensions.__dict__)
- assert len(new_sp_sso_descriptor.extensions.extension_elements) == 2
- for eelem in new_sp_sso_descriptor.extensions.extension_elements:
-- print "EE",eelem.__dict__
-+ print("EE",eelem.__dict__)
- dp = extension_element_to_element(eelem, idpdisc.ELEMENT_FROM_STRING,
- idpdisc.NAMESPACE)
-- print "DP",dp.c_tag, dp.c_namespace,dp.__dict__
-+ print("DP",dp.c_tag, dp.c_namespace,dp.__dict__)
- assert isinstance(dp, idpdisc.DiscoveryResponse)
- assert isinstance(new_sp_sso_descriptor.key_descriptor[0],
- md.KeyDescriptor)
---- python-pysaml2-2.0.0.orig/tests/test_12_s_utils.py
-+++ python-pysaml2-2.0.0/tests/test_12_s_utils.py
-@@ -33,13 +33,13 @@ def _eq(l1,l2):
-
- def _oeq(l1,l2):
- if len(l1) != len(l2):
-- print "Different number of items"
-+ print("Different number of items")
- return False
- for item in l1:
- if item not in l2:
-- print "%s not in l2" % (item,)
-+ print("%s not in l2" % (item,))
- for ite in l2:
-- print "\t%s" % (ite,)
-+ print("\t%s" % (ite,))
- return False
- return True
-
-@@ -64,20 +64,20 @@ def test_error_status():
- samlp.STATUS_RESPONDER)
-
- status_text = "%s" % status
-- print status_text
-+ print(status_text)
- assert status_text == ERROR_STATUS
-
- def test_status_from_exception():
- e = utils.UnknownPrincipal("Error resolving principal")
- stat = utils.error_status_factory(e)
- status_text = "%s" % stat
-- print status_text
-+ print(status_text)
- assert status_text == ERROR_STATUS
-
- def test_attribute_sn():
- attr = utils.do_attributes({"surName":("Jeter", "")})
- assert len(attr) == 1
-- print attr
-+ print(attr)
- inst = attr[0]
- assert inst.name == "surName"
- assert len(inst.attribute_value) == 1
-@@ -89,7 +89,7 @@ def test_attribute_age():
-
- assert len(attr) == 1
- inst = attr[0]
-- print inst
-+ print(inst)
- assert inst.name == "age"
- assert len(inst.attribute_value) == 1
- av = inst.attribute_value[0]
-@@ -101,7 +101,7 @@ def test_attribute_onoff():
-
- assert len(attr) == 1
- inst = attr[0]
-- print inst
-+ print(inst)
- assert inst.name == "onoff"
- assert len(inst.attribute_value) == 1
- av = inst.attribute_value[0]
-@@ -114,7 +114,7 @@ def test_attribute_base64():
-
- assert len(attr) == 1
- inst = attr[0]
-- print inst
-+ print(inst)
- assert inst.name == "name"
- assert len(inst.attribute_value) == 1
- av = inst.attribute_value[0]
-@@ -124,7 +124,7 @@ def test_attribute_base64():
- def test_attribute_statement():
- statement = do_attribute_statement({"surName":("Jeter", ""),
- "givenName":("Derek", "")})
-- print statement
-+ print(statement)
- assert statement.keyswv() == ["attribute"]
- assert len(statement.attribute) == 2
- attr0 = statement.attribute[0]
-@@ -279,7 +279,7 @@ def test_parse_attribute_map():
-
- assert _eq(forward.keys(), backward.values())
- assert _eq(forward.values(), backward.keys())
-- print forward.keys()
-+ print(forward.keys())
- assert _oeq(forward.keys(), [
- ('urn:oid:1.3.6.1.4.1.5923.1.1.1.7', NAME_FORMAT_URI),
- ('urn:oid:0.9.2342.19200300.100.1.1', NAME_FORMAT_URI),
---- python-pysaml2-2.0.0.orig/tests/test_19_attribute_converter.py
-+++ python-pysaml2-2.0.0/tests/test_19_attribute_converter.py
-@@ -28,13 +28,13 @@ class TestAC():
- self.acs = attribute_converter.ac_factory(full_path("attributemaps"))
-
- def test_setup(self):
-- print self.acs
-+ print(self.acs)
- assert len(self.acs) == 3
- assert _eq([a.name_format for a in self.acs],[BASIC_NF, URI_NF, SAML1] )
-
- def test_ava_fro_1(self):
- ats = saml.attribute_statement_from_string(STATEMENT1)
-- #print ats
-+ #print(ats)
- ava = None
-
- for ac in self.acs:
-@@ -45,7 +45,7 @@ class TestAC():
- # break if we have something
- if ava:
- break
-- print ava.keys()
-+ print(ava.keys())
- assert _eq(ava.keys(), ['givenName', 'displayName', 'uid',
- 'eduPersonNickname', 'street',
- 'eduPersonScopedAffiliation',
-@@ -56,12 +56,12 @@ class TestAC():
-
- def test_ava_fro_2(self):
- ats = saml.attribute_statement_from_string(STATEMENT2)
-- #print ats
-+ #print(ats)
- ava = {}
- for ac in self.acs:
- ava.update(ac.fro(ats))
-
-- print ava.keys()
-+ print(ava.keys())
- assert _eq(ava.keys(), ['eduPersonEntitlement', 'eduPersonAffiliation',
- 'uid', 'mail', 'givenName', 'sn'])
-
-@@ -146,7 +146,7 @@ class TestAC():
- #
- # result = attribute_converter.ava_fro(self.acs, attr)
- #
-- # print result
-+ # print(result)
- # assert result == {'givenName': [], 'sn': [], 'title': []}
-
- def test_to_local_name_from_basic(self):
-@@ -194,7 +194,7 @@ def test_noop_attribute_conversion():
- aconv = AttributeConverterNOOP(URI_NF)
- res = aconv.to_(ava)
-
-- print res
-+ print(res)
- assert len(res) == 2
- for attr in res:
- assert len(attr.attribute_value) == 1
---- python-pysaml2-2.0.0.orig/tests/test_20_assertion.py
-+++ python-pysaml2-2.0.0/tests/test_20_assertion.py
-@@ -195,7 +195,7 @@ def test_filter_attribute_value_assertio
- ava = filter_attribute_value_assertions(AVA[3].copy(),
- p.get_attribute_restrictions(""))
-
-- print ava
-+ print(ava)
- assert ava.keys() == ["surName"]
- assert ava["surName"] == ["Hedberg"]
-
-@@ -213,7 +213,7 @@ def test_filter_attribute_value_assertio
- ava = filter_attribute_value_assertions(AVA[0].copy(),
- p.get_attribute_restrictions(""))
-
-- print ava
-+ print(ava)
- assert _eq(ava.keys(), ["givenName", "surName"])
- assert ava["surName"] == ["Jeter"]
- assert ava["givenName"] == ["Derek"]
-@@ -221,7 +221,7 @@ def test_filter_attribute_value_assertio
- ava = filter_attribute_value_assertions(AVA[1].copy(),
- p.get_attribute_restrictions(""))
-
-- print ava
-+ print(ava)
- assert _eq(ava.keys(), ["surName"])
- assert ava["surName"] == ["Howard"]
-
-@@ -238,20 +238,20 @@ def test_filter_attribute_value_assertio
- ava = filter_attribute_value_assertions(AVA[0].copy(),
- p.get_attribute_restrictions(""))
-
-- print ava
-+ print(ava)
- assert _eq(ava.keys(), [])
-
- ava = filter_attribute_value_assertions(AVA[1].copy(),
- p.get_attribute_restrictions(""))
-
-- print ava
-+ print(ava)
- assert _eq(ava.keys(), ["givenName"])
- assert ava["givenName"] == ["Ryan"]
-
- ava = filter_attribute_value_assertions(AVA[3].copy(),
- p.get_attribute_restrictions(""))
-
-- print ava
-+ print(ava)
- assert _eq(ava.keys(), ["givenName"])
- assert ava["givenName"] == ["Roland"]
-
-@@ -261,8 +261,8 @@ def test_filter_attribute_value_assertio
- def test_assertion_1(AVA):
- ava = Assertion(AVA[0])
-
-- print ava
-- print ava.__dict__
-+ print(ava)
-+ print(ava.__dict__)
-
- policy = Policy({
- "default": {
-@@ -274,7 +274,7 @@ def test_assertion_1(AVA):
-
- ava = ava.apply_policy("", policy)
-
-- print ava
-+ print(ava)
- assert _eq(ava.keys(), [])
-
- ava = Assertion(AVA[1].copy())
-@@ -481,7 +481,7 @@ def test_filter_values_req_opt_4():
- "eduPersonAffiliation": ["staff"], "uid": ["rohe0002"]}
-
- ava = assertion.filter_on_demands(ava, rava, oava)
-- print ava
-+ print(ava)
- assert _eq(ava.keys(), ['givenName', 'sn'])
- assert ava == {'givenName': ['Roland'], 'sn': ['Hedberg']}
-
-@@ -722,7 +722,7 @@ def test_assertion_with_noop_attribute_c
- policy, issuer=issuer, authn_decl=ACD ,
- authn_auth="authn_authn")
-
-- print msg
-+ print(msg)
- for attr in msg.attribute_statement[0].attribute:
- assert attr.name_format == NAME_FORMAT_URI
- assert len(attr.attribute_value) == 1
-@@ -770,7 +770,7 @@ def test_assertion_with_zero_attributes(
- policy, issuer=issuer, authn_decl=ACD ,
- authn_auth="authn_authn")
-
-- print msg
-+ print(msg)
- assert msg.attribute_statement == []
-
-
-@@ -792,7 +792,7 @@ def test_assertion_with_authn_instant():
- authn_auth="authn_authn",
- authn_instant=1234567890)
-
-- print msg
-+ print(msg)
- assert msg.authn_statement[0].authn_instant == "2009-02-13T23:31:30Z"
-
-
---- python-pysaml2-2.0.0.orig/tests/test_22_mdie.py
-+++ python-pysaml2-2.0.0/tests/test_22_mdie.py
-@@ -43,7 +43,7 @@ def test_construct_contact():
- "__class__": _class(md.EmailAddress)}],
- }, ONTS)
-
-- print c
-+ print(c)
- assert c.given_name.text == "Roland"
- assert c.sur_name.text == "Hedberg"
- assert c.email_address[0].text == "roland@catalogix.se"
---- python-pysaml2-2.0.0.orig/tests/test_30_mdstore.py
-+++ python-pysaml2-2.0.0/tests/test_30_mdstore.py
-@@ -125,10 +125,10 @@ def test_incommon_1():
-
- mds.imp(METADATACONF["2"])
-
-- print mds.entities()
-+ print(mds.entities())
- assert mds.entities() > 1700
- idps = mds.with_descriptor("idpsso")
-- print idps.keys()
-+ print(idps.keys())
- assert len(idps) > 300 # ~ 18%
- try:
- _ = mds.single_sign_on_service('urn:mace:incommon:uiuc.edu')
-@@ -137,7 +137,7 @@ def test_incommon_1():
-
- idpsso = mds.single_sign_on_service('urn:mace:incommon:alaska.edu')
- assert len(idpsso) == 1
-- print idpsso
-+ print(idpsso)
- assert destinations(idpsso) == [
- 'https://idp.alaska.edu/idp/profile/SAML2/Redirect/SSO']
-
-@@ -153,7 +153,7 @@ def test_incommon_1():
- # Look for attribute authorities
- aas = mds.with_descriptor("attribute_authority")
-
-- print aas.keys()
-+ print(aas.keys())
- assert len(aas) == 180
-
-
-@@ -193,24 +193,24 @@ def test_switch_1():
- mds.imp(METADATACONF["5"])
- assert len(mds.keys()) > 160
- idps = mds.with_descriptor("idpsso")
-- print idps.keys()
-+ print(idps.keys())
- idpsso = mds.single_sign_on_service(
- 'https://aai-demo-idp.switch.ch/idp/shibboleth')
- assert len(idpsso) == 1
-- print idpsso
-+ print(idpsso)
- assert destinations(idpsso) == [
- 'https://aai-demo-idp.switch.ch/idp/profile/SAML2/Redirect/SSO']
- assert len(idps) > 30
- aas = mds.with_descriptor("attribute_authority")
-- print aas.keys()
-+ print(aas.keys())
- aad = aas['https://aai-demo-idp.switch.ch/idp/shibboleth']
-- print aad.keys()
-+ print(aad.keys())
- assert len(aad["attribute_authority_descriptor"]) == 1
- assert len(aad["idpsso_descriptor"]) == 1
-
- sps = mds.with_descriptor("spsso")
- dual = [eid for eid, ent in idps.items() if eid in sps]
-- print len(dual)
-+ print(len(dual))
- assert len(dual) == 0
-
-
-@@ -220,7 +220,7 @@ def test_metadata_file():
- disable_ssl_certificate_validation=True)
-
- mds.imp(METADATACONF["8"])
-- print len(mds.keys())
-+ print(len(mds.keys()))
- assert len(mds.keys()) == 560
-
- if __name__ == "__main__":
---- python-pysaml2-2.0.0.orig/tests/test_31_config.py
-+++ python-pysaml2-2.0.0/tests/test_31_config.py
-@@ -171,7 +171,7 @@ def _eq(l1, l2):
- def test_1():
- c = SPConfig().load(sp1)
- c.context = "sp"
-- print c
-+ print(c)
- assert c._sp_endpoints
- assert c._sp_name
- assert c._sp_idp
-@@ -192,7 +192,7 @@ def test_2():
- c = SPConfig().load(sp2)
- c.context = "sp"
-
-- print c
-+ print(c)
- assert c._sp_endpoints
- assert c.getattr("endpoints", "sp")
- assert c._sp_idp
-@@ -234,7 +234,7 @@ def test_idp_1():
- c = IdPConfig().load(IDP1)
- c.context = "idp"
-
-- print c
-+ print(c)
- assert c.endpoint("single_sign_on_service")[0] == 'http://localhost:8088/'
-
- attribute_restrictions = c.getattr("policy",
-@@ -246,7 +246,7 @@ def test_idp_2():
- c = IdPConfig().load(IDP2)
- c.context = "idp"
-
-- print c
-+ print(c)
- assert c.endpoint("single_logout_service",
- BINDING_SOAP) == []
- assert c.endpoint("single_logout_service",
-@@ -292,7 +292,7 @@ def test_conf_syslog():
- root_logger.level = logging.NOTSET
- root_logger.handlers = []
-
-- print c.logger
-+ print(c.logger)
- c.setup_logger()
-
- assert root_logger.level != logging.NOTSET
-@@ -301,7 +301,7 @@ def test_conf_syslog():
- assert isinstance(root_logger.handlers[0],
- logging.handlers.SysLogHandler)
- handler = root_logger.handlers[0]
-- print handler.__dict__
-+ print(handler.__dict__)
- assert handler.facility == "local3"
- assert handler.address == ('localhost', 514)
- if sys.version >= (2, 7):
---- python-pysaml2-2.0.0.orig/tests/test_33_identifier.py
-+++ python-pysaml2-2.0.0/tests/test_33_identifier.py
-@@ -110,12 +110,12 @@ class TestIdentifier():
- })
-
- name_id_policy = samlp.name_id_policy_from_string(NAME_ID_POLICY_1)
-- print name_id_policy
-+ print(name_id_policy)
- nameid = self.id.construct_nameid("foobar", policy,
- 'http://vo.example.org/biomed',
- name_id_policy)
-
-- print nameid
-+ print(nameid)
- assert _eq(nameid.keyswv(), ['text', 'sp_name_qualifier', 'format',
- 'name_qualifier'])
- assert nameid.sp_name_qualifier == 'http://vo.example.org/biomed'
-@@ -151,7 +151,7 @@ class TestIdentifier():
- sp_id = "urn:mace:umu.se:sp"
- nameid = self.id.persistent_nameid("abcd0001", sp_id)
- remote_id = nameid.text.strip()
-- print remote_id
-+ print(remote_id)
- local = self.id.find_local_id(nameid)
- assert local == "abcd0001"
-
-@@ -163,7 +163,7 @@ class TestIdentifier():
- sp_id = "urn:mace:umu.se:sp"
- nameid = self.id.transient_nameid("abcd0001", sp_id)
- remote_id = nameid.text.strip()
-- print remote_id
-+ print(remote_id)
- local = self.id.find_local_id(nameid)
- assert local == "abcd0001"
-
---- python-pysaml2-2.0.0.orig/tests/test_36_mdbcache.py
-+++ python-pysaml2-2.0.0/tests/test_36_mdbcache.py
-@@ -30,7 +30,7 @@ class TestMongoDBCache():
- info = self.cache.get("1234", "abcd")
- #{u'issuer': u'', u'came from': u'', u'ava': {u'givenName': [u'Derek']}, u'session_id': -1, u'not_on_or_after': 0}
- ava = info["ava"]
-- print ava
-+ print(ava)
- assert ava.keys() == ["givenName"]
- assert ava["givenName"] == ["Derek"]
-
-@@ -53,7 +53,7 @@ class TestMongoDBCache():
- self.cache.delete("1234")
-
- info = self.cache.get("1234", "abcd")
-- print info
-+ print(info)
- assert info == {}
-
- def test_subjects(self):
-@@ -75,7 +75,7 @@ class TestMongoDBCache():
- self.cache.set("1234", "xyzv", session_info, not_on_or_after)
-
- (ident, _) = self.cache.get_identity("1234")
-- print ident
-+ print(ident)
- assert len(ident.keys()) == 2
- assert "givenName" in ident.keys()
- assert "mail" in ident.keys()
-@@ -87,5 +87,5 @@ class TestMongoDBCache():
- self.cache.delete("1234")
-
- info = self.cache.get("1234", "xyzv")
-- print info
-+ print(info)
- assert info == {}
---- python-pysaml2-2.0.0.orig/tests/test_37_entity_categories.py
-+++ python-pysaml2-2.0.0/tests/test_37_entity_categories.py
-@@ -160,7 +160,7 @@ def test_idp_policy_filter():
- policy = idp.config.getattr("policy", "idp")
- policy.filter(ava, "urn:mace:example.com:saml:roland:sp", idp.metadata)
-
-- print ava
-+ print(ava)
- assert ava.keys() == ["eduPersonTargetedID"] # because no entity category
-
- if __name__ == "__main__":
---- python-pysaml2-2.0.0.orig/tests/test_40_sigver.py
-+++ python-pysaml2-2.0.0/tests/test_40_sigver.py
-@@ -68,7 +68,7 @@ def test_cert_from_instance_1():
- assertion = response.assertion[0]
- certs = sigver.cert_from_instance(assertion)
- assert len(certs) == 1
-- print certs[0]
-+ print(certs[0])
- assert certs[0] == CERT1
-
-
-@@ -80,7 +80,7 @@ def test_cert_from_instance_ssp():
- assert len(certs) == 1
- assert certs[0] == CERT_SSP
- der = base64.b64decode(certs[0])
-- print str(decoder.decode(der)).replace('.', "\n.")
-+ print(str(decoder.decode(der)).replace('.', "\n."))
- assert decoder.decode(der)
-
-
-@@ -149,18 +149,18 @@ class TestSecurity():
-
- def test_sign_assertion(self):
- ass = self._assertion
-- print ass
-+ print(ass)
- sign_ass = self.sec.sign_assertion("%s" % ass, node_id=ass.id)
-- #print sign_ass
-+ #print(sign_ass)
- sass = saml.assertion_from_string(sign_ass)
-- #print sass
-+ #print(sass)
- assert _eq(sass.keyswv(), ['attribute_statement', 'issue_instant',
- 'version', 'signature', 'id'])
- assert sass.version == "2.0"
- assert sass.id == "11111"
- assert time_util.str_to_time(sass.issue_instant)
-
-- print "Crypto version : %s" % (self.sec.crypto.version())
-+ print("Crypto version : %s" % (self.sec.crypto.version()))
-
- item = self.sec.check_signature(sass, class_name(sass), sign_ass)
-
-@@ -180,7 +180,7 @@ class TestSecurity():
- assert sass.id == "11111"
- assert time_util.str_to_time(sass.issue_instant)
-
-- print "Crypto version : %s" % (self.sec.crypto.version())
-+ print("Crypto version : %s" % (self.sec.crypto.version()))
-
- item = self.sec.check_signature(sass, class_name(sass),
- sign_ass, must=True)
-@@ -236,11 +236,11 @@ class TestSecurity():
- s_response = sigver.signed_instance_factory(response, self.sec, to_sign)
-
- assert s_response is not None
-- print s_response
-+ print(s_response)
- response = response_from_string(s_response)
- sass = response.assertion[0]
-
-- print sass
-+ print(sass)
- assert _eq(sass.keyswv(), ['attribute_statement', 'issue_instant',
- 'version', 'signature', 'id'])
- assert sass.version == "2.0"
-@@ -297,11 +297,11 @@ class TestSecurity():
-
- s_response = sigver.signed_instance_factory(response, self.sec, to_sign)
-
-- print s_response
-+ print(s_response)
- res = self.sec.verify_signature("%s" % s_response,
- node_name=class_name(samlp.Response()))
-
-- print res
-+ print(res )
- assert res
-
- def test_sign_verify_with_cert_from_instance(self):
-@@ -345,7 +345,7 @@ class TestSecurity():
-
- to_sign = [(class_name(assertion), assertion.id)]
- s_assertion = sigver.signed_instance_factory(assertion, self.sec, to_sign)
-- print s_assertion
-+ print(s_assertion)
- ass = assertion_from_string(s_assertion)
- ci = "".join(sigver.cert_from_instance(ass)[0].split())
- assert ci == self.sec.my_cert
-@@ -410,18 +410,18 @@ class TestSecurityMetadata():
-
- def test_sign_assertion(self):
- ass = self._assertion
-- print ass
-+ print(ass)
- sign_ass = self.sec.sign_assertion("%s" % ass, node_id=ass.id)
-- #print sign_ass
-+ #print(sign_ass)
- sass = saml.assertion_from_string(sign_ass)
-- #print sass
-+ #print(sass)
- assert _eq(sass.keyswv(), ['attribute_statement', 'issue_instant',
- 'version', 'signature', 'id'])
- assert sass.version == "2.0"
- assert sass.id == "11111"
- assert time_util.str_to_time(sass.issue_instant)
-
-- print "Crypto version : %s" % (self.sec.crypto.version())
-+ print("Crypto version : %s" % (self.sec.crypto.version()))
-
- item = self.sec.check_signature(sass, class_name(sass), sign_ass)
-
---- python-pysaml2-2.0.0.orig/tests/test_42_enc.py
-+++ python-pysaml2-2.0.0/tests/test_42_enc.py
-@@ -24,7 +24,7 @@ AUTHN = {
-
- def test_pre_enc():
- tmpl = pre_encryption_part()
-- print tmpl
-+ print(mpl)
- assert "%s" % tmpl == TMPL
-
-
-@@ -39,7 +39,7 @@ def test_reshuffle_response():
-
- resp2 = pre_encrypt_assertion(resp_)
-
-- print resp2
-+ print(resp2)
- assert resp2.encrypted_assertion.extension_elements
-
-
-@@ -73,7 +73,7 @@ def test_enc1():
- (_stdout, _stderr, output) = crypto._run_xmlsec(
- com_list, [tmpl], exception=EncryptError, validate_output=False)
-
-- print output
-+ print(output)
- assert _stderr == ""
- assert _stdout == ""
-
-@@ -92,7 +92,7 @@ def test_enc2():
- enc_resp = crypto.encrypt_assertion(resp_, "pubkey.pem",
- pre_encryption_part())
-
-- print enc_resp
-+ print(enc_resp)
- assert enc_resp
-
- if __name__ == "__main__":
---- python-pysaml2-2.0.0.orig/tests/test_44_authnresp.py
-+++ python-pysaml2-2.0.0/tests/test_44_authnresp.py
-@@ -62,13 +62,13 @@ class TestAuthnResponse:
-
- def test_verify_1(self):
- xml_response = "%s" % (self._resp_,)
-- print xml_response
-+ print(xml_response)
- self.ar.outstanding_queries = {"id12": "http://localhost:8088/sso"}
- self.ar.timeslack = 10000
- self.ar.loads(xml_response, decode=False)
- self.ar.verify()
-
-- print self.ar.__dict__
-+ print(self.ar.__dict__)
- assert self.ar.came_from == 'http://localhost:8088/sso'
- assert self.ar.session_id() == "id12"
- assert self.ar.ava["eduPersonAffiliation"] == IDENTITY["eduPersonAffiliation"]
-@@ -77,14 +77,14 @@ class TestAuthnResponse:
-
- def test_verify_signed_1(self):
- xml_response = self._sign_resp_
-- print xml_response
-+ print(xml_response)
-
- self.ar.outstanding_queries = {"id12": "http://localhost:8088/sso"}
- self.ar.timeslack = 10000
- self.ar.loads(xml_response, decode=False)
- self.ar.verify()
-
-- print self.ar.__dict__
-+ print(self.ar.__dict__)
- assert self.ar.came_from == 'http://localhost:8088/sso'
- assert self.ar.session_id() == "id12"
- assert self.ar.ava["sn"] == IDENTITY["surName"]
-@@ -102,7 +102,7 @@ class TestAuthnResponse:
- self.ar.loads(xml_response, decode=False)
- self.ar.verify()
-
-- print self.ar.__dict__
-+ print(self.ar.__dict__)
- assert self.ar.came_from == 'http://localhost:8088/foo'
- assert self.ar.session_id() == ID
- assert self.ar.name_id
-@@ -116,7 +116,7 @@ class TestAuthnResponse:
- self.ar.loads(xml_response, decode=False)
- self.ar.verify()
-
-- print self.ar.assertion
-+ print(self.ar.assertion)
- assert len(self.ar.assertion.authn_statement) == 1
- authn_info = self.ar.authn_info()
- assert len(authn_info) == 1
---- python-pysaml2-2.0.0.orig/tests/test_50_server.py
-+++ python-pysaml2-2.0.0/tests/test_50_server.py
-@@ -110,7 +110,7 @@ class TestServer1():
- issuer=self.server._issuer(),
- )
-
-- print response.keyswv()
-+ print(response.keyswv())
- assert _eq(response.keyswv(), ['destination', 'assertion', 'status',
- 'in_response_to', 'issue_instant',
- 'version', 'issuer', 'id'])
-@@ -120,7 +120,7 @@ class TestServer1():
- assert response.in_response_to == "_012345"
- #
- status = response.status
-- print status
-+ print(status)
- assert status.status_code.value == samlp.STATUS_SUCCESS
-
- def test_parse_faulty_request(self):
-@@ -132,7 +132,7 @@ class TestServer1():
- htargs = self.client.apply_binding(
- binding, "%s" % authn_request, "http://www.example.com", "abcd")
- _dict = parse_qs(htargs["headers"][0][1].split('?')[1])
-- print _dict
-+ print(_dict)
- raises(OtherError, self.server.parse_authn_request,
- _dict["SAMLRequest"][0], binding)
-
-@@ -144,17 +144,17 @@ class TestServer1():
- htargs = self.client.apply_binding(binding, "%s" % authn_request,
- "http://www.example.com", "abcd")
- _dict = parse_qs(htargs["headers"][0][1].split('?')[1])
-- print _dict
-+ print(_dict)
-
- try:
- self.server.parse_authn_request(_dict["SAMLRequest"][0], binding)
- status = None
-- except OtherError, oe:
-- print oe.args
-+ except OtherError as oe:
-+ print(oe.args)
- status = s_utils.error_status_factory(oe)
-
- assert status
-- print status
-+ print(status)
- assert _eq(status.keyswv(), ["status_code", "status_message"])
- assert status.status_message.text == 'Not destined for me!'
- status_code = status.status_code
-@@ -166,16 +166,16 @@ class TestServer1():
- req_id, authn_request = self.client.create_authn_request(
- message_id="id1", destination="http://localhost:8088/sso")
-
-- print authn_request
-+ print(authn_request)
- binding = BINDING_HTTP_REDIRECT
- htargs = self.client.apply_binding(binding, "%s" % authn_request,
- "http://www.example.com", "abcd")
- _dict = parse_qs(htargs["headers"][0][1].split('?')[1])
-- print _dict
-+ print(_dict)
-
- req = self.server.parse_authn_request(_dict["SAMLRequest"][0], binding)
- # returns a dictionary
-- print req
-+ print(req)
- resp_args = self.server.response_args(req.message, [BINDING_HTTP_POST])
- assert resp_args["destination"] == "http://lingon.catalogix.se:8087/"
- assert resp_args["in_response_to"] == "id1"
-@@ -202,7 +202,7 @@ class TestServer1():
- authn=AUTHN
- )
-
-- print resp.keyswv()
-+ print(resp.keyswv())
- assert _eq(resp.keyswv(), ['status', 'destination', 'assertion',
- 'in_response_to', 'issue_instant',
- 'version', 'id', 'issuer'])
-@@ -213,12 +213,12 @@ class TestServer1():
- assert resp.assertion
- assert resp.assertion
- assertion = resp.assertion
-- print assertion
-+ print(assertion)
- assert assertion.authn_statement
- assert assertion.conditions
- assert assertion.attribute_statement
- attribute_statement = assertion.attribute_statement
-- print attribute_statement
-+ print(attribute_statement)
- assert len(attribute_statement[0].attribute) == 5
- # Pick out one attribute
- attr = None
-@@ -235,8 +235,8 @@ class TestServer1():
- assert assertion.subject.name_id
- assert assertion.subject.subject_confirmation
- confirmation = assertion.subject.subject_confirmation[0]
-- print confirmation.keyswv()
-- print confirmation.subject_confirmation_data
-+ print(confirmation.keyswv())
-+ print(confirmation.subject_confirmation_data)
- assert confirmation.subject_confirmation_data.in_response_to == "id12"
-
- def test_sso_response_without_identity(self):
-@@ -251,7 +251,7 @@ class TestServer1():
- best_effort=True
- )
-
-- print resp.keyswv()
-+ print(resp.keyswv())
- assert _eq(resp.keyswv(), ['status', 'destination', 'in_response_to',
- 'issue_instant', 'version', 'id', 'issuer',
- 'assertion'])
-@@ -276,7 +276,7 @@ class TestServer1():
- best_effort=True
- )
-
-- print resp.keyswv()
-+ print(resp.keyswv())
- assert _eq(resp.keyswv(), ['status', 'destination', 'in_response_to',
- 'issue_instant', 'version', 'id', 'issuer',
- 'assertion'])
-@@ -288,13 +288,13 @@ class TestServer1():
- resp = self.server.create_error_response(
- "id12", "http://localhost:8087/", exc)
-
-- print resp.keyswv()
-+ print(resp.keyswv())
- assert _eq(resp.keyswv(), ['status', 'destination', 'in_response_to',
- 'issue_instant', 'version', 'id', 'issuer'])
- assert resp.destination == "http://localhost:8087/"
- assert resp.in_response_to == "id12"
- assert resp.status
-- print resp.status
-+ print(resp.status)
- assert resp.status.status_code.value == samlp.STATUS_RESPONDER
- assert resp.status.status_code.status_code.value == \
- samlp.STATUS_REQUEST_UNSUPPORTED
-@@ -321,11 +321,11 @@ class TestServer1():
- "foba0001@example.com", authn=AUTHN)
-
- response = samlp.response_from_string(resp_str)
-- print response.keyswv()
-+ print(response.keyswv())
- assert _eq(response.keyswv(), ['status', 'destination', 'assertion',
- 'in_response_to', 'issue_instant',
- 'version', 'issuer', 'id'])
-- print response.assertion[0].keyswv()
-+ print(response.assertion[0].keyswv())
- assert len(response.assertion) == 1
- assert _eq(response.assertion[0].keyswv(), ['attribute_statement',
- 'issue_instant', 'version',
-@@ -335,7 +335,7 @@ class TestServer1():
- assertion = response.assertion[0]
- assert len(assertion.attribute_statement) == 1
- astate = assertion.attribute_statement[0]
-- print astate
-+ print(astate)
- assert len(astate.attribute) == 4
-
- def test_signed_response(self):
-@@ -353,7 +353,7 @@ class TestServer1():
- sign_assertion=True
- )
-
-- print signed_resp
-+ print(signed_resp)
- assert signed_resp
-
- sresponse = response_from_string(signed_resp)
-@@ -434,7 +434,7 @@ class TestServer2():
-
- def test_do_attribute_reponse(self):
- aa_policy = self.server.config.getattr("policy", "idp")
-- print aa_policy.__dict__
-+ print(aa_policy.__dict__)
- response = self.server.create_attribute_response(
- IDENTITY.copy(), "aaa", "http://example.com/sp/",
- "urn:mace:example.com:sp:1")
-@@ -484,7 +484,7 @@ class TestServerLogout():
- def test_1(self):
- server = Server("idp_slo_redirect_conf")
- req_id, request = _logout_request("sp_slo_redirect_conf")
-- print request
-+ print(request)
- bindings = [BINDING_HTTP_REDIRECT]
- response = server.create_logout_response(request, bindings)
- binding, destination = server.pick_binding("single_logout_service",
---- python-pysaml2-2.0.0.orig/tests/test_51_client.py
-+++ python-pysaml2-2.0.0/tests/test_51_client.py
-@@ -54,10 +54,10 @@ def _leq(l1, l2):
- # client = Saml2Client({})
- # (ava, name_id, real_uri) = \
- # client.do_response(response, "xenosmilus.umdc.umu.se")
--# print 40*"="
--# print ava
--# print 40*","
--# print name_id
-+# print(40*"=")
-+# print(ava)
-+# print(40*",")
-+# print(name_id)
- # assert False
-
- REQ1 = {"1.2.14": """<?xml version='1.0' encoding='UTF-8'?>
-@@ -112,7 +112,7 @@ class TestClient:
-
- attrq = samlp.attribute_query_from_string(reqstr)
-
-- print attrq.keyswv()
-+ print(attrq.keyswv())
- assert _leq(attrq.keyswv(), ['destination', 'subject', 'issue_instant',
- 'version', 'id', 'issuer'])
-
-@@ -141,7 +141,7 @@ class TestClient:
- format=saml.NAMEID_FORMAT_PERSISTENT,
- message_id="id1")
-
-- print req.to_string()
-+ print(req.to_string())
- assert req.destination == "https://idp.example.com/idp/"
- assert req.id == "id1"
- assert req.version == "2.0"
-@@ -191,7 +191,7 @@ class TestClient:
- "http://www.example.com/sso", message_id="id1")[1]
-
- ar = samlp.authn_request_from_string(ar_str)
-- print ar
-+ print(ar)
- assert ar.assertion_consumer_service_url == ("http://lingon.catalogix"
- ".se:8087/")
- assert ar.destination == "http://www.example.com/sso"
-@@ -214,7 +214,7 @@ class TestClient:
- message_id="666")[1]
-
- ar = samlp.authn_request_from_string(ar_str)
-- print ar
-+ print(ar)
- assert ar.id == "666"
- assert ar.assertion_consumer_service_url == "http://lingon.catalogix" \
- ".se:8087/"
-@@ -229,7 +229,7 @@ class TestClient:
- assert nid_policy.sp_name_qualifier == "urn:mace:example.com:it:tek"
-
- def test_sign_auth_request_0(self):
-- #print self.client.config
-+ #print(self.client.config)
-
- req_id, areq = self.client.create_authn_request(
- "http://www.example.com/sso", sign=True, message_id="id1")
-@@ -241,11 +241,11 @@ class TestClient:
- assert ar.signature
- assert ar.signature.signature_value
- signed_info = ar.signature.signed_info
-- #print signed_info
-+ #print(signed_info)
- assert len(signed_info.reference) == 1
- assert signed_info.reference[0].uri == "#id1"
- assert signed_info.reference[0].digest_value
-- print "------------------------------------------------"
-+ print("------------------------------------------------")
- try:
- assert self.client.sec.correctly_signed_authn_request(
- ar_str, self.client.config.xmlsec_binary,
-@@ -284,7 +284,7 @@ class TestClient:
- assert authn_response.response.assertion[0].issuer.text == IDP
- session_info = authn_response.session_info()
-
-- print session_info
-+ print(session_info)
- assert session_info["ava"] == {'mail': ['derek@nyy.mlb.com'],
- 'givenName': ['Derek'],
- 'sn': ['Jeter'],
-@@ -297,7 +297,7 @@ class TestClient:
- # One person in the cache
- assert len(self.client.users.subjects()) == 1
- subject_id = self.client.users.subjects()[0]
-- print "||||", self.client.users.get_info_from(subject_id, IDP)
-+ print("||||", self.client.users.get_info_from(subject_id, IDP))
- # The information I have about the subject comes from one source
- assert self.client.users.issuers_of_info(subject_id) == [IDP]
-
-@@ -326,19 +326,19 @@ class TestClient:
- issuers = [self.client.users.issuers_of_info(s) for s in
- self.client.users.subjects()]
- # The information I have about the subjects comes from the same source
-- print issuers
-+ print(issuers)
- assert issuers == [[IDP], [IDP]]
-
- def test_init_values(self):
- entityid = self.client.config.entityid
-- print entityid
-+ print(entityid)
- assert entityid == "urn:mace:example.com:saml:roland:sp"
-- print self.client.metadata.with_descriptor("idpsso")
-+ print(self.client.metadata.with_descriptor("idpsso"))
- location = self.client._sso_location()
-- print location
-+ print(location)
- assert location == 'http://localhost:8088/sso'
- my_name = self.client._my_name()
-- print my_name
-+ print(my_name)
- assert my_name == "urn:mace:example.com:saml:roland:sp"
-
- # Below can only be done with dummy Server
-@@ -399,7 +399,7 @@ class TestClientWithDummy():
- entity_ids = self.client.users.issuers_of_info(nid)
- assert entity_ids == ["urn:mace:example.com:saml:roland:idp"]
- resp = self.client.global_logout(nid, "Tired", in_a_while(minutes=5))
-- print resp
-+ print(resp)
- assert resp
- assert len(resp) == 1
- assert resp.keys() == entity_ids
-@@ -429,7 +429,7 @@ class TestClientWithDummy():
- 'application/x-www-form-urlencoded')]
-
- response = self.client.send(**http_args)
-- print response.text
-+ print(response.text)
- _dic = unpack_form(response.text[3], "SAMLResponse")
- resp = self.client.parse_authn_request_response(_dic["SAMLResponse"],
- BINDING_HTTP_POST,
---- python-pysaml2-2.0.0.orig/tests/test_62_vo.py
-+++ python-pysaml2-2.0.0/tests/test_62_vo.py
-@@ -39,18 +39,18 @@ class TestVirtualOrg():
-
- def test_mta(self):
- aas = self.vo.members_to_ask(nid)
-- print aas
-+ print(aas)
- assert len(aas) == 1
- assert 'urn:mace:example.com:saml:aa' in aas
-
- def test_unknown_subject(self):
- aas = self.vo.members_to_ask(nid0)
-- print aas
-+ print(aas)
- assert len(aas) == 2
-
- def test_id(self):
- cid = self.vo.get_common_identifier(nid)
-- print cid
-+ print(cid)
- assert cid == "deje0001"
-
- def test_id_unknown(self):
-@@ -68,18 +68,18 @@ class TestVirtualOrg_2():
-
- def test_mta(self):
- aas = self.sp.vorg.members_to_ask(nid)
-- print aas
-+ print(aas)
- assert len(aas) == 1
- assert 'urn:mace:example.com:saml:aa' in aas
-
- def test_unknown_subject(self):
- aas = self.sp.vorg.members_to_ask(nid0)
-- print aas
-+ print(aas)
- assert len(aas) == 2
-
- def test_id(self):
- cid = self.sp.vorg.get_common_identifier(nid)
-- print cid
-+ print(cid)
- assert cid == "deje0001"
-
- def test_id_unknown(self):
---- python-pysaml2-2.0.0.orig/tests/test_63_ecp.py
-+++ python-pysaml2-2.0.0/tests/test_63_ecp.py
-@@ -121,7 +121,7 @@ def test_complete_flow():
- ht_args = client.use_soap(idp_response, cargs["rc_url"],
- [cargs["relay_state"]])
-
-- print ht_args
-+ print(ht_args)
-
- # ------------ @SP -----------------------------
-
-@@ -138,7 +138,7 @@ def test_complete_flow():
-
- resp = sp.parse_authn_request_response(respdict["body"], None, {sid: "/"})
-
-- print resp.response
-+ print(resp.response)
-
- assert resp.response.destination == "http://lingon.catalogix.se:8087/paos"
- assert resp.response.status.status_code.value == STATUS_SUCCESS
---- python-pysaml2-2.0.0.orig/tests/test_64_artifact.py
-+++ python-pysaml2-2.0.0/tests/test_64_artifact.py
-@@ -85,7 +85,7 @@ def test_create_artifact_resolve():
-
- msg_id, msg = idp.create_artifact_resolve(b64art, destination, sid())
-
-- print msg
-+ print(msg)
-
- args = idp.use_soap(msg, destination, None, False)
-
-@@ -93,7 +93,7 @@ def test_create_artifact_resolve():
-
- ar = sp.parse_artifact_resolve(args["data"])
-
-- print ar
-+ print(ar)
-
- assert ar.artifact.text == b64art
-
-@@ -177,7 +177,7 @@ def test_artifact_flow():
- authn=AUTHN,
- **resp_args)
-
-- print response
-+ print(response)
-
- # with the response in hand create an artifact
-
-@@ -201,7 +201,7 @@ def test_artifact_flow():
- # Got an artifact want to replace it with the real message
- msg_id, msg = sp.create_artifact_resolve(artifact3, destination, sid())
-
-- print msg
-+ print(msg)
-
- hinfo = sp.use_soap(msg, destination, None, False)
-
-@@ -211,7 +211,7 @@ def test_artifact_flow():
-
- ar = idp.parse_artifact_resolve(msg)
-
-- print ar
-+ print(ar)
-
- assert ar.artifact.text == artifact3
-
---- python-pysaml2-2.0.0.orig/tests/test_65_authn_query.py
-+++ python-pysaml2-2.0.0/tests/test_65_authn_query.py
-@@ -55,7 +55,7 @@ def test_basic():
-
- _id, aq = sp.create_authn_query(subject, destination, authn_context)
-
-- print aq
-+ print(aq)
-
- assert isinstance(aq, AuthnQuery)
-
-@@ -104,7 +104,7 @@ def test_flow():
-
- aq_id, aq = sp.create_authn_query(subject, destination, authn_context)
-
-- print aq
-+ print(aq)
-
- assert isinstance(aq, AuthnQuery)
- binding = BINDING_SOAP
-@@ -123,7 +123,7 @@ def test_flow():
- p_res = idp.create_authn_query_response(msg.subject, msg.session_index,
- msg.requested_authn_context)
-
-- print p_res
-+ print(p_res)
-
- hinfo = idp.apply_binding(binding, "%s" % p_res, "", "state2",
- response=True)
-@@ -134,7 +134,7 @@ def test_flow():
-
- final = sp.parse_authn_query_response(xmlstr, binding)
-
-- print final
-+ print(final)
-
- assert final.response.id == p_res.id
-
---- python-pysaml2-2.0.0.orig/tests/test_66_name_id_mapping.py
-+++ python-pysaml2-2.0.0/tests/test_66_name_id_mapping.py
-@@ -23,7 +23,7 @@ def test_base_request():
-
- mid, nmr = sp.create_name_id_mapping_request(policy, nameid, destination)
-
-- print nmr
-+ print(nmr)
-
- assert isinstance(nmr, NameIDMappingRequest)
-
-@@ -43,7 +43,7 @@ def test_request_response():
-
- mid, nmr = sp.create_name_id_mapping_request(policy, nameid, destination)
-
-- print nmr
-+ print(nmr)
-
- args = sp.use_soap(nmr, destination)
-
-@@ -57,7 +57,7 @@ def test_request_response():
- idp_response = idp.create_name_id_mapping_response(
- name_id, in_response_to=in_response_to)
-
-- print idp_response
-+ print(idp_response)
-
- ht_args = sp.use_soap(idp_response)
-
-@@ -65,7 +65,7 @@ def test_request_response():
-
- _resp = sp.parse_name_id_mapping_request_response(ht_args["data"], binding)
-
-- print _resp.response
-+ print(_resp.response)
-
- r_name_id = _resp.response.name_id
-
---- python-pysaml2-2.0.0.orig/tests/test_67_manage_name_id.py
-+++ python-pysaml2-2.0.0/tests/test_67_manage_name_id.py
-@@ -20,14 +20,14 @@ def test_basic():
- mid, mreq = sp.create_manage_name_id_request(destination, name_id=nameid,
- new_id=newid)
-
-- print mreq
-+ print(mreq)
- rargs = sp.apply_binding(binding, "%s" % mreq, destination, "")
-
- # --------- @IDP --------------
-
- _req = idp.parse_manage_name_id_request(rargs["data"], binding)
-
-- print _req.message
-+ print(_req.message)
-
- assert mid == _req.message.id
-
-@@ -44,14 +44,14 @@ def test_flow():
- mid, midq = sp.create_manage_name_id_request(destination, name_id=nameid,
- new_id=newid)
-
-- print midq
-+ print(midq)
- rargs = sp.apply_binding(binding, "%s" % midq, destination, "")
-
- # --------- @IDP --------------
-
- _req = idp.parse_manage_name_id_request(rargs["data"], binding)
-
-- print _req.message
-+ print(_req.message)
-
- mnir = idp.create_manage_name_id_response(_req.message, None)
-
-@@ -63,12 +63,12 @@ def test_flow():
-
- respargs = idp.apply_binding(binding, "%s" % mnir, destination, "")
-
-- print respargs
-+ print(respargs)
-
- # ---------- @SP ---------------
-
- _response = sp.parse_manage_name_id_request_response(respargs["data"], binding)
-
-- print _response.response
-+ print(_response.response)
-
- assert _response.response.id == mnir.id
-\ No newline at end of file
---- python-pysaml2-2.0.0.orig/tests/test_68_assertion_id.py
-+++ python-pysaml2-2.0.0/tests/test_68_assertion_id.py
-@@ -107,5 +107,5 @@ def test_basic_flow():
-
- final = sp.parse_assertion_id_request_response(xmlstr, binding)
-
-- print final.response
-+ print(final.response)
- assert isinstance(final.response, Assertion)
-\ No newline at end of file
---- python-pysaml2-2.0.0.orig/tests/test_69_discovery.py
-+++ python-pysaml2-2.0.0/tests/test_69_discovery.py
-@@ -42,7 +42,7 @@ def test_construct_deconstruct_request()
- returnIDParam="foo",
- return_url="https://example.com/saml/sp/disc")
-
-- print url
-+ print(url)
-
- ds = DiscoveryServer(config_file=dotname("disco_conf"))
- dsr = ds.parse_discovery_service_request(url)
---- python-pysaml2-2.0.0.orig/tests/test_72_eptid.py
-+++ python-pysaml2-2.0.0/tests/test_72_eptid.py
-@@ -6,13 +6,13 @@ __author__ = 'rolandh'
- def test_eptid():
- edb = Eptid("secret")
- e1 = edb.get("idp_entity_id", "sp_entity_id", "user_id", "some other data")
-- print e1
-+ print(e1)
- assert e1.startswith("idp_entity_id!sp_entity_id!")
- e2 = edb.get("idp_entity_id", "sp_entity_id", "user_id", "some other data")
- assert e1 == e2
-
- e3 = edb.get("idp_entity_id", "sp_entity_id", "user_2", "some other data")
-- print e3
-+ print(e3)
- assert e1 != e3
-
- e4 = edb.get("idp_entity_id", "sp_entity_id2", "user_id", "some other data")
-@@ -23,13 +23,13 @@ def test_eptid():
- def test_eptid_shelve():
- edb = EptidShelve("secret", "eptid.db")
- e1 = edb.get("idp_entity_id", "sp_entity_id", "user_id", "some other data")
-- print e1
-+ print(e1)
- assert e1.startswith("idp_entity_id!sp_entity_id!")
- e2 = edb.get("idp_entity_id", "sp_entity_id", "user_id", "some other data")
- assert e1 == e2
-
- e3 = edb.get("idp_entity_id", "sp_entity_id", "user_2", "some other data")
-- print e3
-+ print(e3)
- assert e1 != e3
-
- e4 = edb.get("idp_entity_id", "sp_entity_id2", "user_id", "some other data")
---- python-pysaml2-2.0.0.orig/tests/test_75_mongodb.py
-+++ python-pysaml2-2.0.0/tests/test_75_mongodb.py
-@@ -61,7 +61,7 @@ def test_eptid_mongo_db():
- edb = EptidMDB("secret", "idp")
- e1 = edb.get("idp_entity_id", "sp_entity_id", "user_id",
- "some other data")
-- print e1
-+ print(e1)
- assert e1.startswith("idp_entity_id!sp_entity_id!")
- e2 = edb.get("idp_entity_id", "sp_entity_id", "user_id",
- "some other data")
-@@ -69,7 +69,7 @@ def test_eptid_mongo_db():
-
- e3 = edb.get("idp_entity_id", "sp_entity_id", "user_2",
- "some other data")
-- print e3
-+ print(e3)
- assert e1 != e3
-
- e4 = edb.get("idp_entity_id", "sp_entity_id2", "user_id",
---- python-pysaml2-2.0.0.orig/tests/test_82_pefim.py
-+++ python-pysaml2-2.0.0/tests/test_82_pefim.py
-@@ -34,7 +34,7 @@ req_id, req = client.create_authn_reques
- extensions=extensions)
-
-
--print req
-+print(req)
-
- # Get a certificate from an authn request
-
---- python-pysaml2-2.0.0.orig/tests/test_83_md_extensions.py
-+++ python-pysaml2-2.0.0/tests/test_83_md_extensions.py
-@@ -8,7 +8,7 @@ fil = "sp_mdext_conf.py"
- cnf = Config().load_file(fil, metadata_construction=True)
- ed = entity_descriptor(cnf)
-
--print ed
-+print(ed)
-
- assert ed.spsso_descriptor.extensions
- assert len(ed.spsso_descriptor.extensions.extension_elements) == 3
---- python-pysaml2-2.0.0.orig/tools/make_metadata.py
-+++ python-pysaml2-2.0.0/tools/make_metadata.py
-@@ -67,7 +67,7 @@ if args.id:
- desc = entities_descriptor(eds, valid_for, args.name, args.id,
- args.sign, secc)
- valid_instance(desc)
-- print desc.to_string(nspair)
-+ print(desc.to_string(nspair))
- else:
- for eid in eds:
- if args.sign:
-@@ -75,5 +75,5 @@ else:
- else:
- desc = eid
- valid_instance(desc)
-- print desc.to_string(nspair)
-+ print(desc.to_string(nspair))
-
---- python-pysaml2-2.0.0.orig/tools/mdexport.py
-+++ python-pysaml2-2.0.0/tools/mdexport.py
-@@ -73,4 +73,4 @@ if metad:
- f.write(txt)
- f.close()
- else:
-- print txt
-+ print(txt)
---- python-pysaml2-2.0.0.orig/tools/mdexport_test.py
-+++ python-pysaml2-2.0.0/tools/mdexport_test.py
-@@ -65,7 +65,7 @@ def main():
-
- if metad:
- metad.load()
-- print metad.dumps()
-+ print(metad.dumps())
-
-
- if __name__ == '__main__':
---- python-pysaml2-2.0.0.orig/tools/mdimport.py
-+++ python-pysaml2-2.0.0/tools/mdimport.py
-@@ -35,7 +35,7 @@ for i in range(1, 10):
-
- _ = mdmd.keys()
-
--print time.time() - start
-+print(time.time() - start)
-
- start = time.time()
- for i in range(1, 10):
-@@ -44,4 +44,4 @@ for i in range(1, 10):
- mdf.load()
- _ = mdf.keys()
-
--print time.time() - start
-+print(time.time() - start)
---- python-pysaml2-2.0.0.orig/tools/parse_xsd2.py
-+++ python-pysaml2-2.0.0/tools/parse_xsd2.py
-@@ -835,9 +835,9 @@ def _spec(elem):
-
- def _do_from_string(name):
- print
-- print "def %s_from_string(xml_string):" % pyify(name)
-- print "%sreturn saml2.create_class_from_xml_string(%s, xml_string)" % (
-- INDENT, name)
-+ print("def %s_from_string(xml_string):" % pyify(name))
-+ print("%sreturn saml2.create_class_from_xml_string(%s, xml_string)" % (
-+ INDENT, name))
-
- def _namespace_and_tag(obj, param, top):
- try:
-@@ -898,7 +898,7 @@ class Attribute(Simple):
- # default, fixed, use, type
-
- if DEBUG:
-- print "#ATTR", self.__dict__
-+ print("#ATTR", self.__dict__)
-
- external = False
- name = ""
-@@ -971,7 +971,7 @@ class Attribute(Simple):
- pass
-
- if DEBUG:
-- print "#--ATTR py_attr:%s" % (objekt,)
-+ print("#--ATTR py_attr:%s" % (objekt,))
-
- return objekt
-
-@@ -1077,8 +1077,8 @@ class Complex(object):
- return self._own, self._inherited
-
- if DEBUG:
-- print self.__dict__
-- print "#-- %d parts" % len(self.parts)
-+ print(self.__dict__)
-+ print("#-- %d parts" % len(self.parts))
-
- self._extend(top, sup, argv, parent)
-
-@@ -1094,7 +1094,7 @@ class Complex(object):
- # string = "== %s (%s)" % (self.name,self.__class__)
- # except AttributeError:
- # string = "== (%s)" % (self.__class__,)
-- # print string
-+ # print(string)
- for part in self.parts:
- if isinstance(part, Element):
- res.append(name_or_ref(part, top))
-@@ -1169,7 +1169,7 @@ class Element(Complex):
- argv_copy = sd_copy(argv)
- return [self.repr(top, sup, argv_copy, parent=parent)], []
- except AttributeError, exc:
-- print "#!!!!", exc
-+ print("#!!!!", exc)
- return [], []
-
- def elements(self, top):
-@@ -1197,9 +1197,9 @@ class Element(Complex):
- myname = ""
-
- if DEBUG:
-- print "#Element.repr '%s' (child=%s) [%s]" % (myname,
-+ print("#Element.repr '%s' (child=%s) [%s]" % (myname,
- child,
-- self._generated)
-+ self._generated))
-
- self.py_class = objekt = PyElement(myname, root=top)
- min_max(self, objekt, argv)
-@@ -1216,7 +1216,7 @@ class Element(Complex):
- objekt.ref = (namespace, superkl)
- except AttributeError, exc:
- if DEBUG:
-- print "#===>", exc
-+ print("#===>", exc)
-
- typ = self.type
-
-@@ -1257,7 +1257,7 @@ class Element(Complex):
- objekt.scoped = True
- else:
- if DEBUG:
-- print "$", self
-+ print("$", self)
- raise
-
- if parent:
-@@ -1310,7 +1310,7 @@ class Sequence(Complex):
- argv_copy[key] = val
-
- if DEBUG:
-- print "#Sequence: %s" % argv
-+ print("#Sequence: %s" % argv)
- return Complex.collect(self, top, sup, argv_copy, parent)
-
-
-@@ -1336,7 +1336,7 @@ class Extension(Complex):
- return self._own, self._inherited
-
- if DEBUG:
-- print "#!!!", self.__dict__
-+ print("#!!!", self.__dict__)
-
- try:
- base = self.base
-@@ -1346,14 +1346,14 @@ class Extension(Complex):
- cti = get_type_def(tag, top.parts)
- if not cti.py_class:
- cti.repr(top, sup)
-- #print "#EXT..",ct._collection
-+ #print("#EXT..",ct._collection)
- self._inherited = cti.py_class.properties[0][:]
- self._inherited.extend(cti.py_class.properties[1])
- elif self.xmlns_map[namespace] == XMLSCHEMA:
- base = tag
- else:
- iattr = _import_attrs(top.modul[namespace], tag, top)
-- #print "#EXT..-", ia
-+ #print("#EXT..-", ia)
- self._inherited = iattr
- except (AttributeError, ValueError):
- base = None
-@@ -1373,7 +1373,7 @@ class Choice(Complex):
- argv_copy["minOccurs"] = 0
-
- if DEBUG:
-- print "#Choice: %s" % argv
-+ print("#Choice: %s" % argv)
- return Complex.collect(self, top, sup, argv_copy, parent=parent)
-
- class Restriction(Complex):
-@@ -1411,11 +1411,11 @@ class ComplexType(Complex):
- else:
- new_sup = "%s.%s" % (namespace, name)
-
-- #print "#Superior: %s" % new_sup
-+ #print("#Superior: %s" % new_sup)
- if new_sup:
- sup = new_sup
- else:
-- #print "#>>", self.parts[0].__class__
-+ #print("#>>", self.parts[0].__class__)
- pass
-
- try:
-@@ -1474,7 +1474,7 @@ class Group(Complex):
- except KeyError:
- raise Exception("Missing namespace definition")
- except AttributeError, exc:
-- print "#!!!!", exc
-+ print("#!!!!", exc)
- return [], []
-
- def repr(self, top=None, sup=None, argv=None, _child=True, parent=""):
-@@ -1615,7 +1615,7 @@ def sort_elements(els):
- if pres != val:
- diff = True
-
-- #print els
-+ #print(els)
- partres = []
- for key, val in els.items():
- if not val:
-@@ -1645,24 +1645,24 @@ def output(elem, target_namespace, eldic
- if prep:
- done = 1
- if isinstance(prep, basestring):
-- print prep
-+ print(prep)
- else:
- for item in prep:
-- print item
-- print
-- print
-+ print(item)
-+ print()
-+ print()
-
- if text:
- done = 1
- elem.done = True
-- print text
-- print
-+ print(text)
-+ print("")
-
- return done
-
-
- def intro():
-- print """#!/usr/bin/env python
-+ print("""#!/usr/bin/env python
-
- #
- # Generated %s by parse_xsd.py version %s.
-@@ -1670,7 +1670,7 @@ def intro():
-
- import saml2
- from saml2 import SamlBase
--""" % (time.ctime(), __version__)
-+""" % (time.ctime(), __version__))
-
- #NAMESPACE = 'http://www.w3.org/2000/09/xmldsig#'
-
-@@ -1759,7 +1759,7 @@ class Schema(Complex):
- udict[elem] = elem.undefined(eldict)
-
- keys = [k.name for k in udict.keys()]
-- print "#", keys
-+ print("#", keys)
- res = (None, [])
- if not udict:
- return res
-@@ -1834,19 +1834,19 @@ class Schema(Complex):
- return undone
-
- def _element_from_string(self):
-- print "ELEMENT_FROM_STRING = {"
-+ print("ELEMENT_FROM_STRING = {")
- for elem in self.elems:
- if isinstance(elem, PyAttribute) or isinstance(elem, PyGroup):
- continue
- if elem.abstract:
- continue
-- print "%s%s.c_tag: %s_from_string," % (INDENT, elem.class_name,
-- pyify(elem.class_name))
-- print "}"
-- print
-+ print("%s%s.c_tag: %s_from_string," % (INDENT, elem.class_name,
-+ pyify(elem.class_name)))
-+ print("}")
-+ print()
-
- def _element_by_tag(self):
-- print "ELEMENT_BY_TAG = {"
-+ print("ELEMENT_BY_TAG = {")
- listed = []
- for elem in self.elems:
- if isinstance(elem, PyAttribute) or isinstance(elem, PyGroup):
-@@ -1854,17 +1854,17 @@ class Schema(Complex):
- if elem.abstract:
- continue
- lcen = elem.name
-- print "%s'%s': %s," % (INDENT, lcen, elem.class_name)
-+ print("%s'%s': %s," % (INDENT, lcen, elem.class_name))
- listed.append(lcen)
- for elem in self.elems:
- if isinstance(elem, PyAttribute) or isinstance(elem, PyGroup):
- continue
- lcen = elem.name
- if elem.abstract and lcen not in listed:
-- print "%s'%s': %s," % (INDENT, lcen, elem.class_name)
-+ print("%s'%s': %s," % (INDENT, lcen, elem.class_name))
- listed.append(lcen)
-- print "}"
-- print
-+ print("}")
-+ print()
-
- def out(self):
- for part in self.parts:
-@@ -1884,26 +1884,26 @@ class Schema(Complex):
- for elem in self.elems:
- eldict[elem.name] = elem
-
-- #print eldict.keys()
-+ #print(eldict.keys())
-
- intro()
- for modul in self.add:
-- print "from %s import *" % modul
-+ print("from %s import *" % modul)
- for _namespace, (mod, namn) in self.impo.items():
- if namn:
-- print "import %s as %s" % (mod, namn)
-- print
-- print "NAMESPACE = '%s'" % self.target_namespace
-- print
-+ print("import %s as %s" % (mod, namn))
-+ print()
-+ print("NAMESPACE = '%s'" % self.target_namespace)
-+ print()
-
- for defs in self.defs:
-- print defs
-- print
-+ print(defs)
-+ print()
-
- exceptions = []
- block = []
- while self._do(eldict):
-- print "#.................."
-+ print("#..................")
- (objekt, tups) = self.adjust(eldict, block)
- if not objekt:
- break
-@@ -1917,30 +1917,30 @@ class Schema(Complex):
- block = block_items(objekt, block, eldict)
-
- if exceptions:
-- print "#", 70*'+'
-+ print("#", 70*'+')
- for line in exceptions:
-- print line
-- print "#", 70*'+'
-- print
-+ print(line)
-+ print("#", 70*'+')
-+ print()
-
- for attrgrp in self.attrgrp:
-- print "AG_%s = [" % attrgrp.name
-+ print("AG_%s = [" % attrgrp.name)
- for prop in attrgrp.properties[0]:
- if isinstance(prop.type, PyObj):
-- print "%s('%s', %s_, %s)," % (INDENT, prop.name,
-- prop.type.name, prop.required)
-+ print("%s('%s', %s_, %s)," % (INDENT, prop.name,
-+ prop.type.name, prop.required))
- else:
-- print "%s('%s', '%s', %s)," % (INDENT, prop.name,
-- prop.type, prop.required)
-- print "]"
-- print
-+ print("%s('%s', '%s', %s)," % (INDENT, prop.name,
-+ prop.type, prop.required))
-+ print("]")
-+ print()
-
- self._element_from_string()
- self._element_by_tag()
-- print
-- print "def factory(tag, **kwargs):"
-- print " return ELEMENT_BY_TAG[tag](**kwargs)"
-- print
-+ print()
-+ print("def factory(tag, **kwargs):")
-+ print(" return ELEMENT_BY_TAG[tag](**kwargs)")
-+ print()
-
-
- # -----------------------------------------------------------------------------
-@@ -1991,7 +1991,7 @@ def evaluate(typ, elem):
- try:
- return ELEMENTFUNCTION[typ](elem)
- except KeyError:
-- print "Unknown type", typ
-+ print("Unknown type", typ)
-
-
- NS_MAP = "xmlns_map"
-@@ -2015,14 +2015,14 @@ def parse_nsmap(fil):
- return ElementTree.ElementTree(root)
-
- def usage():
-- print "Usage: parse_xsd [-i <module:as>] xsd.file > module.py"
-+ print("Usage: parse_xsd [-i <module:as>] xsd.file > module.py")
-
- def recursive_find_module(name, path=None):
- parts = name.split(".")
-
- mod_a = None
- for part in parts:
-- #print "$$", part, path
-+ #print("$$", part, path)
- try:
- (fil, pathname, desc) = imp.find_module(part, path)
- except ImportError:
-@@ -2145,8 +2145,8 @@ def main(argv):
- opts, args = getopt.getopt(argv, "a:d:hi:I:s:",
- ["add=", "help", "import=", "defs="])
- except getopt.GetoptError, err:
-- # print help information and exit:
-- print str(err) # will print something like "option -a not recognized"
-+ # print() help information and exit:
-+ print(str(err)) # will print() something like "option -a not recognized"
- usage()
- sys.exit(2)
-
-@@ -2177,12 +2177,12 @@ def main(argv):
- assert False, "unhandled option"
-
- if not args:
-- print "No XSD-file specified"
-+ print("No XSD-file specified")
- usage()
- sys.exit(2)
-
- schema = read_schema(args[0], add, defs, impo, modul, ignore, sdir)
-- #print schema.__dict__
-+ #print(schema.__dict__)
- schema.out()
-
- if __name__ == "__main__":
+++ /dev/null
-Description: Using correct urllib.parse
- Make it work with Python 3.
-Author: Thomas Goirand <zigo@debian.org>
-Forwarded: no
-Last-Update: 2015-04-24
-
---- python-pysaml2-2.0.0.orig/example/idp2/idp.py
-+++ python-pysaml2-2.0.0/example/idp2/idp.py
-@@ -1,5 +1,4 @@
- #!/usr/bin/env python
--import argparse
- import base64
- import xmldsig as ds
- import re
-@@ -7,7 +6,8 @@ import logging
- import time
- from hashlib import sha1
-
--from urlparse import parse_qs
-+import urllib
-+import urllib.parse
- from Cookie import SimpleCookie
- import os
-
-@@ -90,12 +90,12 @@ class Service(object):
- def unpack_redirect(self):
- if "QUERY_STRING" in self.environ:
- _qs = self.environ["QUERY_STRING"]
-- return dict([(k, v[0]) for k, v in parse_qs(_qs).items()])
-+ return dict([(k, v[0]) for k, v in urllib.parse.parse_qs(_qs).items()])
- else:
- return None
-
- def unpack_post(self):
-- _dict = parse_qs(get_post(self.environ))
-+ _dict = urllib.parse.parse_qs(get_post(self.environ))
- logger.debug("unpack_post:: %s" % _dict)
- try:
- return dict([(k, v[0]) for k, v in _dict.items()])
-@@ -193,7 +193,7 @@ class Service(object):
- # :return:
- # """
- # loc = "http://%s/login" % (self.environ["HTTP_HOST"])
-- # loc += "?%s" % urllib.urlencode({"came_from": self.environ[
-+ # loc += "?%s" % urllib.parse.urlencode({"came_from": self.environ[
- # "PATH_INFO"], "key": key})
- # headers = [('Content-Type', 'text/plain')]
- #
-@@ -490,7 +490,7 @@ def verify_username_and_password(dic):
-
-
- def do_verify(environ, start_response, _):
-- query = parse_qs(get_post(environ))
-+ query = urllib.parse.parse_qs(get_post(environ))
-
- logger.debug("do_verify: %s" % query)
-
-@@ -893,7 +893,7 @@ def application(environ, start_response)
- environ["idp.authn_ref"] = authn_ref
- else:
- try:
-- query = parse_qs(environ["QUERY_STRING"])
-+ query = urllib.parse.parse_qs(environ["QUERY_STRING"])
- logger.debug("QUERY: %s" % query)
- user = IDP.cache.uid2user[query["id"][0]]
- except KeyError:
---- python-pysaml2-2.0.0.orig/example/idp2_repoze/idp.py
-+++ python-pysaml2-2.0.0/example/idp2_repoze/idp.py
-@@ -1,5 +1,4 @@
- #!/usr/bin/env python
--import argparse
- import base64
-
- import re
-@@ -7,7 +6,7 @@ import logging
- import time
- from hashlib import sha1
-
--from urlparse import parse_qs
-+from urllib.parse import parse_qs
- from Cookie import SimpleCookie
- import os
-
-@@ -191,7 +190,7 @@ class Service(object):
- # :return:
- # """
- # loc = "http://%s/login" % (self.environ["HTTP_HOST"])
-- # loc += "?%s" % urllib.urlencode({"came_from": self.environ[
-+ # loc += "?%s" % urllib.parse.urlencode({"came_from": self.environ[
- # "PATH_INFO"], "key": key})
- # headers = [('Content-Type', 'text/plain')]
- #
---- python-pysaml2-2.0.0.orig/example/sp-repoze/sp.py
-+++ python-pysaml2-2.0.0/example/sp-repoze/sp.py
-@@ -6,8 +6,8 @@ import os
- from sp_conf import CONFIG
- import re
- import subprocess
--from urlparse import parse_qs
--import argparse
-+import urllib
-+import urllib.parse
- from saml2 import BINDING_HTTP_REDIRECT, time_util
- from saml2.httputil import Response
- from saml2.httputil import Unauthorized
-@@ -127,7 +127,7 @@ def slo(environ, start_response, user):
- sc = client.saml_client
-
- if "QUERY_STRING" in environ:
-- query = parse_qs(environ["QUERY_STRING"])
-+ query = urllib.parse.parse_qs(environ["QUERY_STRING"])
- logger.info("query: %s" % query)
- try:
- response = sc.parse_logout_request_response(
---- python-pysaml2-2.0.0.orig/example/sp-wsgi/sp.py
-+++ python-pysaml2-2.0.0/example/sp-wsgi/sp.py
-@@ -1,11 +1,10 @@
- #!/usr/bin/env python
- import logging
- import re
--import argparse
- import service_conf
-
- from Cookie import SimpleCookie
--from urlparse import parse_qs
-+from urllib.parse import parse_qs
- import sys
-
- from saml2 import BINDING_HTTP_REDIRECT
---- python-pysaml2-2.0.0.orig/src/s2repoze/plugins/formswithhidden.py
-+++ python-pysaml2-2.0.0/src/s2repoze/plugins/formswithhidden.py
-@@ -69,7 +69,7 @@ class FormHiddenPlugin(FormPlugin):
- return None
- del query[self.login_form_qs]
- query.update(qinfo)
-- environ['QUERY_STRING'] = urllib.urlencode(query)
-+ environ['QUERY_STRING'] = urllib.parse.urlencode(query)
- environ['repoze.who.application'] = HTTPFound(
- construct_url(environ))
- credentials = {'login':login, 'password':password}
---- python-pysaml2-2.0.0.orig/src/s2repoze/plugins/sp.py
-+++ python-pysaml2-2.0.0/src/s2repoze/plugins/sp.py
-@@ -25,7 +25,8 @@ import platform
- import shelve
- import traceback
- import saml2
--from urlparse import parse_qs, urlparse
-+import urllib
-+import urllib.parse
- from saml2.md import Extensions
- import xmldsig as ds
-
-@@ -137,7 +138,7 @@ class SAML2Plugin(object):
- self.cache = cache
- self.discosrv = discovery
- self.idp_query_param = idp_query_param
-- self.logout_endpoints = [urlparse(ep)[2] for ep in config.endpoint(
-+ self.logout_endpoints = [urllib.parse.urlparse(ep)[2] for ep in config.endpoint(
- "single_logout_service")]
- try:
- self.metadata = self.conf.metadata
-@@ -252,7 +253,7 @@ class SAML2Plugin(object):
- query = environ.get(key)
- if query:
- try:
-- _idp_entity_id = dict(parse_qs(query))[
-+ _idp_entity_id = dict(urllib.parse.parse_qs(query))[
- self.idp_query_param][0]
- if _idp_entity_id in idps:
- idp_entity_id = _idp_entity_id
-@@ -274,7 +275,7 @@ class SAML2Plugin(object):
- if self.wayf:
- if query:
- try:
-- wayf_selected = dict(parse_qs(query))[
-+ wayf_selected = dict(urllib.parse.parse_qs(query))[
- "wayf_selected"][0]
- except KeyError:
- return self._wayf_redirect(came_from)
-@@ -410,7 +411,7 @@ class SAML2Plugin(object):
- "endpoints","sp")["discovery_response"][0][0]
- if (environ["PATH_INFO"]) in ret and ret.split(
- environ["PATH_INFO"])[1] == "":
-- query = parse_qs(environ["QUERY_STRING"])
-+ query = urllib.parse.parse_qs(environ["QUERY_STRING"])
- sid = query["sid"][0]
- came_from = self.outstanding_queries[sid]
- except:
---- python-pysaml2-2.0.0.orig/src/saml2/authn.py
-+++ python-pysaml2-2.0.0/src/saml2/authn.py
-@@ -1,7 +1,6 @@
- import logging
--from urllib import urlencode
--from urlparse import parse_qs
--from urlparse import urlsplit
-+import urllib
-+import urllib.parse
- import time
- import ldap
- from saml2 import SAMLError
-@@ -48,7 +47,7 @@ def url_encode_params(params=None):
- params_list.extend([(k, x) for x in v])
- else:
- params_list.append((k, v))
-- return urlencode(params_list)
-+ return urllib.parse.urlencode(params_list)
-
-
- def create_return_url(base, query, **kwargs):
-@@ -61,11 +60,11 @@ def create_return_url(base, query, **kwa
- :param kwargs: extra query parameters
- :return:
- """
-- part = urlsplit(base)
-+ part = urllib.parse.urlsplit(base)
- if part.fragment:
- raise ValueError("Base URL contained parts it shouldn't")
-
-- for key, values in parse_qs(query).items():
-+ for key, values in urllib.parse.parse_qs(query).items():
- if key in kwargs:
- if isinstance(kwargs[key], basestring):
- kwargs[key] = [kwargs[key]]
-@@ -74,7 +73,7 @@ def create_return_url(base, query, **kwa
- kwargs[key] = values
-
- if part.query:
-- for key, values in parse_qs(part.query).items():
-+ for key, values in urllib.parse.parse_qs(part.query).items():
- if key in kwargs:
- if isinstance(kwargs[key], basestring):
- kwargs[key] = [kwargs[key]]
-@@ -151,7 +150,7 @@ class UsernamePasswordMako(UserAuthnMeth
-
- logger.debug("verify(%s)" % request)
- if isinstance(request, basestring):
-- _dict = parse_qs(request)
-+ _dict = urllib.parse.parse_qs(request)
- elif isinstance(request, dict):
- _dict = request
- else:
---- python-pysaml2-2.0.0.orig/src/saml2/client.py
-+++ python-pysaml2-2.0.0/src/saml2/client.py
-@@ -42,7 +42,7 @@ from saml2.client_base import NoServiceD
- from saml2.mdstore import destinations
-
- try:
-- from urlparse import parse_qs
-+ from urllib.parse import parse_qs
- except ImportError:
- # Compatibility with Python <= 2.5
- from cgi import parse_qs
---- python-pysaml2-2.0.0.orig/src/saml2/client_base.py
-+++ python-pysaml2-2.0.0/src/saml2/client_base.py
-@@ -19,8 +19,6 @@
- to conclude its tasks.
- """
- import threading
--from urllib import urlencode
--from urlparse import urlparse
-
- from saml2.entity import Entity
-
-@@ -37,7 +35,8 @@ import saml2
- import time
- from saml2.soap import make_soap_enveloped_saml_thingy
-
--from urlparse import parse_qs
-+import urllib
-+import urllib.parse
-
- from saml2.s_utils import signature, UnravelError
- from saml2.s_utils import do_attributes
-@@ -756,7 +755,7 @@ class Base(Entity):
- else:
- args["isPassive"] = "false"
-
-- params = urlencode(args)
-+ params = urllib.parse.urlencode(args)
- return "%s?%s" % (url, params)
-
- @staticmethod
-@@ -773,10 +772,10 @@ class Base(Entity):
- """
-
- if url:
-- part = urlparse(url)
-- qsd = parse_qs(part[4])
-+ part = urllib.parse.urlparse(url)
-+ qsd = urllib.parse.parse_qs(part[4])
- elif query:
-- qsd = parse_qs(query)
-+ qsd = urllib.parse.parse_qs(query)
- else:
- qsd = {}
-
---- python-pysaml2-2.0.0.orig/src/saml2/discovery.py
-+++ python-pysaml2-2.0.0/src/saml2/discovery.py
-@@ -1,5 +1,5 @@
--from urllib import urlencode
--from urlparse import urlparse, parse_qs
-+import urllib
-+import urllib.parse
- from saml2.entity import Entity
- from saml2.response import VerificationError
-
-@@ -14,10 +14,10 @@ class DiscoveryServer(Entity):
-
- def parse_discovery_service_request(self, url="", query=""):
- if url:
-- part = urlparse(url)
-- dsr = parse_qs(part[4])
-+ part = urllib.parse.urlparse(url)
-+ dsr = urllib.parse.parse_qs(part[4])
- elif query:
-- dsr = parse_qs(query)
-+ dsr = urllib.parse.parse_qs(query)
- else:
- dsr = {}
-
-@@ -31,9 +31,9 @@ class DiscoveryServer(Entity):
- pass
-
- if "return" in dsr:
-- part = urlparse(dsr["return"])
-+ part = urllib.parse.urlparse(dsr["return"])
- if part.query:
-- qp = parse_qs(part.query)
-+ qp = urllib.parse.parse_qs(part.query)
- if "returnIDParam" in dsr:
- assert dsr["returnIDParam"] not in qp.keys()
- else:
-@@ -69,9 +69,9 @@ class DiscoveryServer(Entity):
- return_url = kwargs["return"]
-
- if entity_id:
-- qp = urlencode({returnIDParam: entity_id})
-+ qp = urllib.parse.urlencode({returnIDParam: entity_id})
-
-- part = urlparse(return_url)
-+ part = urllib.parse.urlparse(return_url)
- if part.query:
- # Iff there is a query part add the new info at the end
- return_url = "%s&%s" % (return_url, qp)
---- python-pysaml2-2.0.0.orig/src/saml2/httpbase.py
-+++ python-pysaml2-2.0.0/src/saml2/httpbase.py
-@@ -3,7 +3,7 @@ import cookielib
- import copy
- import re
- import urllib
--import urlparse
-+import urllib.parse as urlparse
- import requests
- import time
- from Cookie import SimpleCookie
-@@ -109,7 +109,7 @@ class HTTPBase(object):
- :param url:
- :return:
- """
-- part = urlparse.urlparse(url)
-+ part = urllib.parse.urlparse(url)
-
- #if part.port:
- # _domain = "%s:%s" % (part.hostname, part.port)
-@@ -139,7 +139,7 @@ class HTTPBase(object):
- if not kaka:
- return
-
-- part = urlparse.urlparse(request.url)
-+ part = urllib.parse.urlparse(request.url)
- _domain = part.hostname
- logger.debug("%s: '%s'" % (_domain, kaka))
-
-@@ -274,10 +274,10 @@ class HTTPBase(object):
-
- def use_http_artifact(self, message, destination="", relay_state=""):
- if relay_state:
-- query = urllib.urlencode({"SAMLart": message,
-+ query = urllib.parse.urlencode({"SAMLart": message,
- "RelayState": relay_state})
- else:
-- query = urllib.urlencode({"SAMLart": message})
-+ query = urllib.parse.urlencode({"SAMLart": message})
- info = {
- "data": "",
- "url": "%s?%s" % (destination, query)
-@@ -297,10 +297,10 @@ class HTTPBase(object):
- elif typ == "SAMLRequest":
- # msg should be an identifier
- if relay_state:
-- query = urllib.urlencode({"ID": message,
-+ query = urllib.parse.urlencode({"ID": message,
- "RelayState": relay_state})
- else:
-- query = urllib.urlencode({"ID": message})
-+ query = urllib.parse.urlencode({"ID": message})
- info = {
- "data": "",
- "url": "%s?%s" % (destination, query)
---- python-pysaml2-2.0.0.orig/src/saml2/httputil.py
-+++ python-pysaml2-2.0.0/src/saml2/httputil.py
-@@ -4,8 +4,8 @@ import logging
- import time
- import cgi
-
--from urllib import quote
--from urlparse import parse_qs
-+import urllib
-+import urllib.parse
- from Cookie import SimpleCookie
-
- from saml2 import BINDING_HTTP_ARTIFACT, SAMLError
-@@ -188,8 +188,8 @@ def geturl(environ, query=True, path=Tru
-
- def getpath(environ):
- """Builds a path."""
-- return ''.join([quote(environ.get('SCRIPT_NAME', '')),
-- quote(environ.get('PATH_INFO', ''))])
-+ return ''.join([urllib.parse.quote(environ.get('SCRIPT_NAME', '')),
-+ urllib.parse.quote(environ.get('PATH_INFO', ''))])
-
-
- def get_post(environ):
-@@ -220,14 +220,14 @@ def get_response(environ, start_response
- def unpack_redirect(environ):
- if "QUERY_STRING" in environ:
- _qs = environ["QUERY_STRING"]
-- return dict([(k, v[0]) for k, v in parse_qs(_qs).items()])
-+ return dict([(k, v[0]) for k, v in urllib.parse.parse_qs(_qs).items()])
- else:
- return None
-
-
- def unpack_post(environ):
- try:
-- return dict([(k, v[0]) for k, v in parse_qs(get_post(environ))])
-+ return dict([(k, v[0]) for k, v in urllib.parse.parse_qs(get_post(environ))])
- except Exception:
- return None
-
---- python-pysaml2-2.0.0.orig/src/saml2/ident.py
-+++ python-pysaml2-2.0.0/src/saml2/ident.py
-@@ -3,8 +3,8 @@ import shelve
- import logging
-
- from hashlib import sha256
--from urllib import quote
--from urllib import unquote
-+import urllib
-+import urllib.parse
- from saml2 import SAMLError
- from saml2.s_utils import rndstr
- from saml2.s_utils import PolicyError
-@@ -31,7 +31,7 @@ def code(item):
- for attr in ATTR:
- val = getattr(item, attr)
- if val:
-- _res.append("%d=%s" % (i, quote(val)))
-+ _res.append("%d=%s" % (i, urllib.parse.quote(val)))
- i += 1
- return ",".join(_res)
-
-@@ -40,7 +40,7 @@ def decode(txt):
- _nid = NameID()
- for part in txt.split(","):
- i, val = part.split("=")
-- setattr(_nid, ATTR[int(i)], unquote(val))
-+ setattr(_nid, ATTR[int(i)], urllib.parse.unquote(val))
- return _nid
-
-
---- python-pysaml2-2.0.0.orig/src/saml2/pack.py
-+++ python-pysaml2-2.0.0/src/saml2/pack.py
-@@ -23,7 +23,8 @@ Bindings normally consists of three part
- - how to package the information
- - which protocol to use
- """
--import urlparse
-+import urllib
-+import urllib.parse
- import saml2
- import base64
- import urllib
-@@ -136,13 +137,13 @@ def http_redirect_message(message, locat
- except:
- raise Unsupported("Signing algorithm")
- else:
-- string = "&".join([urllib.urlencode({k: args[k]}) for k in _order if k in args])
-+ string = "&".join([urllib.parse.urlencode({k: args[k]}) for k in _order if k in args])
- args["Signature"] = base64.b64encode(signer.sign(string, key))
-- string = urllib.urlencode(args)
-+ string = urllib.parse.urlencode(args)
- else:
-- string = urllib.urlencode(args)
-+ string = urllib.parse.urlencode(args)
-
-- glue_char = "&" if urlparse.urlparse(location).query else "?"
-+ glue_char = "&" if urllib.parse.urlparse(location).query else "?"
- login_url = glue_char.join([location, string])
- headers = [('Location', str(login_url))]
- body = []
---- python-pysaml2-2.0.0.orig/src/saml2/sigver.py
-+++ python-pysaml2-2.0.0/src/saml2/sigver.py
-@@ -630,7 +630,7 @@ def verify_redirect_signature(info, cert
- args = info.copy()
- del args["Signature"] # everything but the signature
- string = "&".join(
-- [urllib.urlencode({k: args[k][0]}) for k in _order])
-+ [urllib.parse.urlencode({k: args[k][0]}) for k in _order])
- _key = extract_rsa_key_from_x509_cert(pem_format(cert))
- _sign = base64.b64decode(info["Signature"][0])
- try:
---- python-pysaml2-2.0.0.orig/src/saml2/validate.py
-+++ python-pysaml2-2.0.0/src/saml2/validate.py
-@@ -1,5 +1,5 @@
- import calendar
--import urlparse
-+import urllib.parse
- import re
- import time_util
- import struct
-@@ -46,7 +46,7 @@ def valid_id(oid):
- def valid_any_uri(item):
- """very simplistic, ..."""
- try:
-- part = urlparse.urlparse(item)
-+ part = urllib.parse.urlparse(item)
- except Exception:
- raise NotValid("AnyURI")
-
-@@ -68,7 +68,7 @@ def valid_date_time(item):
-
- def valid_url(url):
- try:
-- _ = urlparse.urlparse(url)
-+ _ = urllib.parse.urlparse(url)
- except Exception:
- raise NotValid("URL")
-
---- python-pysaml2-2.0.0.orig/tests/fakeIDP.py
-+++ python-pysaml2-2.0.0/tests/fakeIDP.py
-@@ -1,4 +1,5 @@
--from urlparse import parse_qs
-+import urllib
-+import urllib.parse
- from saml2.authn_context import INTERNETPROTOCOLPASSWORD
- from saml2.samlp import attribute_query_from_string, logout_request_from_string
- from saml2 import BINDING_HTTP_REDIRECT, pack
-@@ -66,14 +67,14 @@ class FakeIDP(Server):
-
- if method == "GET":
- path, query = url.split("?")
-- qs_dict = parse_qs(kwargs["data"])
-+ qs_dict = urllib.parse.parse_qs(kwargs["data"])
- req = qs_dict["SAMLRequest"][0]
- rstate = qs_dict["RelayState"][0]
- else:
- # Could be either POST or SOAP
- path = url
- try:
-- qs_dict = parse_qs(kwargs["data"])
-+ qs_dict = urllib.parse.parse_qs(kwargs["data"])
- req = qs_dict["SAMLRequest"][0]
- rstate = qs_dict["RelayState"][0]
- except KeyError:
---- python-pysaml2-2.0.0.orig/tests/test_50_server.py
-+++ python-pysaml2-2.0.0/tests/test_50_server.py
-@@ -1,7 +1,8 @@
- #!/usr/bin/env python
- # -*- coding: utf-8 -*-
- import base64
--from urlparse import parse_qs
-+import urllib
-+import urllib.parse
- from saml2.assertion import Policy
- from saml2.authn_context import INTERNETPROTOCOLPASSWORD
- from saml2.saml import NameID, NAMEID_FORMAT_TRANSIENT
-@@ -131,7 +132,7 @@ class TestServer1():
- binding = BINDING_HTTP_REDIRECT
- htargs = self.client.apply_binding(
- binding, "%s" % authn_request, "http://www.example.com", "abcd")
-- _dict = parse_qs(htargs["headers"][0][1].split('?')[1])
-+ _dict = urllib.parse.parse_qs(htargs["headers"][0][1].split('?')[1])
- print(_dict)
- raises(OtherError, self.server.parse_authn_request,
- _dict["SAMLRequest"][0], binding)
-@@ -143,7 +144,7 @@ class TestServer1():
- binding = BINDING_HTTP_REDIRECT
- htargs = self.client.apply_binding(binding, "%s" % authn_request,
- "http://www.example.com", "abcd")
-- _dict = parse_qs(htargs["headers"][0][1].split('?')[1])
-+ _dict = urllib.parse.parse_qs(htargs["headers"][0][1].split('?')[1])
- print(_dict)
-
- try:
-@@ -170,7 +171,7 @@ class TestServer1():
- binding = BINDING_HTTP_REDIRECT
- htargs = self.client.apply_binding(binding, "%s" % authn_request,
- "http://www.example.com", "abcd")
-- _dict = parse_qs(htargs["headers"][0][1].split('?')[1])
-+ _dict = urllib.parse.parse_qs(htargs["headers"][0][1].split('?')[1])
- print(_dict)
-
- req = self.server.parse_authn_request(_dict["SAMLRequest"][0], binding)
---- python-pysaml2-2.0.0.orig/tests/test_51_client.py
-+++ python-pysaml2-2.0.0/tests/test_51_client.py
-@@ -3,7 +3,7 @@
-
- import base64
- import urllib
--import urlparse
-+import urllib.parse
- from saml2.authn_context import INTERNETPROTOCOLPASSWORD
- from saml2.response import LogoutResponse
-
-@@ -368,8 +368,8 @@ class TestClientWithDummy():
- assert http_args["headers"][0][0] == "Location"
- assert http_args["data"] == []
- redirect_url = http_args["headers"][0][1]
-- _, _, _, _, qs, _ = urlparse.urlparse(redirect_url)
-- qs_dict = urlparse.parse_qs(qs)
-+ _, _, _, _, qs, _ = urllib.parse.urlparse(redirect_url)
-+ qs_dict = urllib.parse.parse_qs(qs)
- req = self.server.parse_authn_request(qs_dict["SAMLRequest"][0],
- binding)
- resp_args = self.server.response_args(req.message, [response_binding])
-@@ -422,7 +422,7 @@ class TestClientWithDummy():
- # Here I fake what the client will do
- # create the form post
-
-- http_args["data"] = urllib.urlencode(_dic)
-+ http_args["data"] = urllib.parse.urlencode(_dic)
- http_args["method"] = "POST"
- http_args["dummy"] = _dic["SAMLRequest"]
- http_args["headers"] = [('Content-type',
---- python-pysaml2-2.0.0.orig/tests/test_64_artifact.py
-+++ python-pysaml2-2.0.0/tests/test_64_artifact.py
-@@ -1,7 +1,7 @@
- import base64
- from hashlib import sha1
--from urlparse import urlparse
--from urlparse import parse_qs
-+import urllib
-+import urllib.parse
- from saml2 import BINDING_HTTP_ARTIFACT
- from saml2 import BINDING_SOAP
- from saml2 import BINDING_HTTP_POST
-@@ -42,11 +42,11 @@ def get_msg(hinfo, binding, response=Fal
- j = _inp.find('"', i)
- msg = _inp[i:j]
- else:
-- parts = urlparse(hinfo["url"])
-- msg = parse_qs(parts.query)["SAMLart"][0]
-+ parts = urllib.parse.urlparse(hinfo["url"])
-+ msg = urllib.parse.parse_qs(parts.query)["SAMLart"][0]
- else: # BINDING_HTTP_REDIRECT
-- parts = urlparse(hinfo["headers"][0][1])
-- msg = parse_qs(parts.query)["SAMLRequest"][0]
-+ parts = urllib.parse.urlparse(hinfo["headers"][0][1])
-+ msg = urllib.parse.parse_qs(parts.query)["SAMLRequest"][0]
-
- return msg
-
---- python-pysaml2-2.0.0.orig/tests/test_65_authn_query.py
-+++ python-pysaml2-2.0.0/tests/test_65_authn_query.py
-@@ -1,4 +1,5 @@
--from urlparse import urlparse, parse_qs
-+import urllib
-+import urllib.parse
- from saml2 import BINDING_SOAP, BINDING_HTTP_POST
-
- __author__ = 'rolandh'
-@@ -33,8 +34,8 @@ def get_msg(hinfo, binding):
- j = _inp.find('"', i)
- xmlstr = _inp[i:j]
- else: # BINDING_HTTP_REDIRECT
-- parts = urlparse(hinfo["headers"][0][1])
-- xmlstr = parse_qs(parts.query)["SAMLRequest"][0]
-+ parts = urllib.parse.urlparse(hinfo["headers"][0][1])
-+ xmlstr = urllib.parse.parse_qs(parts.query)["SAMLRequest"][0]
-
- return xmlstr
-
---- python-pysaml2-2.0.0.orig/tests/test_68_assertion_id.py
-+++ python-pysaml2-2.0.0/tests/test_68_assertion_id.py
-@@ -1,5 +1,5 @@
--from urlparse import parse_qs
--from urlparse import urlparse
-+from urllib.parse import parse_qs
-+from urllib.parse import urlparse
- from saml2.authn_context import INTERNETPROTOCOLPASSWORD
- from saml2.samlp import AuthnRequest
- from saml2.samlp import NameIDPolicy
-@@ -36,10 +36,10 @@ def get_msg(hinfo, binding, response=Fal
- msg = hinfo["data"]
- else:
- msg = ""
-- return parse_qs(hinfo["url"].split("?")[1])["ID"][0]
-+ return urllib.parse.parse_qs(hinfo["url"].split("?")[1])["ID"][0]
- else: # BINDING_HTTP_REDIRECT
-- parts = urlparse(hinfo["headers"][0][1])
-- msg = parse_qs(parts.query)["SAMLRequest"][0]
-+ parts = urllib.parse.urlparse(hinfo["headers"][0][1])
-+ msg = urllib.parse.parse_qs(parts.query)["SAMLRequest"][0]
-
- return msg
-
---- python-pysaml2-2.0.0.orig/tests/test_70_redirect_signing.py
-+++ python-pysaml2-2.0.0/tests/test_70_redirect_signing.py
-@@ -6,7 +6,8 @@ from saml2.server import Server
- from saml2 import BINDING_HTTP_REDIRECT
- from saml2.client import Saml2Client
- from saml2.config import SPConfig
--from urlparse import parse_qs
-+import urllib
-+import urllib.parse
-
- from pathutils import dotname
-
-@@ -38,7 +39,7 @@ def test():
-
- for param, val in info["headers"]:
- if param == "Location":
-- _dict = parse_qs(val.split("?")[1])
-+ _dict = urllib.parse.parse_qs(val.split("?")[1])
- _certs = idp.metadata.certs(sp.config.entityid, "any", "signing")
- for cert in _certs:
- if verify_redirect_signature(_dict, cert):