Skip to content

Commit 45f88c1

Browse files
committed
Use six.string_types instead of basestring
In python3 strings are different, so basestring isn't available anymore. While examining these uses, all of them still work fine with six.string_types and should not need any new special handling to deal with bytes.
1 parent 2b86176 commit 45f88c1

17 files changed

+59
-42
lines changed

setup.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,8 @@ def run_tests(self):
3131
'pytz',
3232
'pyOpenSSL',
3333
'python-dateutil',
34-
'argparse'
34+
'argparse',
35+
'six'
3536
]
3637

3738
tests_require = [

src/saml2/__init__.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919

2020

2121
import logging
22+
import six
2223
from saml2.validate import valid_instance
2324

2425
try:
@@ -727,7 +728,7 @@ def set_text(self, val, base64encode=False):
727728
setattr(self, "text", "false")
728729
elif isinstance(val, int):
729730
setattr(self, "text", "%d" % val)
730-
elif isinstance(val, basestring):
731+
elif isinstance(val, six.string_types):
731732
setattr(self, "text", val)
732733
elif val is None:
733734
pass
@@ -809,7 +810,7 @@ def __eq__(self, other):
809810
continue
810811
svals = self.__dict__[key]
811812
ovals = other.__dict__[key]
812-
if isinstance(svals, basestring):
813+
if isinstance(svals, six.string_types):
813814
if svals != ovals:
814815
return False
815816
elif isinstance(svals, list):

src/saml2/assertion.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55

66
import re
77
from saml2.saml import NAME_FORMAT_URI
8+
import six
89
import xmlenc
910

1011
from saml2 import saml
@@ -31,7 +32,7 @@ def _filter_values(vals, vlist=None, must=False):
3132
if not vlist: # No value specified equals any value
3233
return vals
3334

34-
if isinstance(vlist, basestring):
35+
if isinstance(vlist, six.string_types):
3536
vlist = [vlist]
3637

3738
res = []
@@ -237,7 +238,7 @@ def filter_attribute_value_assertions(ava, attribute_restrictions=None):
237238
else:
238239
if _rests is None:
239240
continue
240-
if isinstance(vals, basestring):
241+
if isinstance(vals, six.string_types):
241242
vals = [vals]
242243
rvals = []
243244
for restr in _rests:

src/saml2/authn.py

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
from urllib import urlencode
33
from urlparse import parse_qs
44
from urlparse import urlsplit
5+
import six
56
import time
67
import ldap
78
from saml2 import SAMLError
@@ -77,7 +78,7 @@ def create_return_url(base, query, **kwargs):
7778

7879
for key, values in parse_qs(query).items():
7980
if key in kwargs:
80-
if isinstance(kwargs[key], basestring):
81+
if isinstance(kwargs[key], six.string_types):
8182
kwargs[key] = [kwargs[key]]
8283
kwargs[key].extend(values)
8384
else:
@@ -86,7 +87,7 @@ def create_return_url(base, query, **kwargs):
8687
if part.query:
8788
for key, values in parse_qs(part.query).items():
8889
if key in kwargs:
89-
if isinstance(kwargs[key], basestring):
90+
if isinstance(kwargs[key], six.string_types):
9091
kwargs[key] = [kwargs[key]]
9192
kwargs[key].extend(values)
9293
else:
@@ -160,7 +161,7 @@ def verify(self, request, **kwargs):
160161
"""
161162

162163
#logger.debug("verify(%s)" % request)
163-
if isinstance(request, basestring):
164+
if isinstance(request, six.string_types):
164165
_dict = parse_qs(request)
165166
elif isinstance(request, dict):
166167
_dict = request

src/saml2/client.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
# !/usr/bin/env python
22
# -*- coding: utf-8 -*-
33
#
4+
import six
45

56
"""Contains classes and functions that a SAML2.0 Service Provider (SP) may use
67
to conclude its tasks.
@@ -149,7 +150,7 @@ def global_logout(self, name_id, reason="", expire=None, sign=None):
149150
conversation.
150151
"""
151152

152-
if isinstance(name_id, basestring):
153+
if isinstance(name_id, six.string_types):
153154
name_id = decode(name_id)
154155

155156
logger.info("logout request for: %s" % name_id)
@@ -363,7 +364,7 @@ def do_assertion_id_request(self, assertion_ids, entity_id,
363364
raise NoServiceDefined("%s: %s" % (entity_id,
364365
"assertion_id_request_service"))
365366

366-
if isinstance(assertion_ids, basestring):
367+
if isinstance(assertion_ids, six.string_types):
367368
assertion_ids = [assertion_ids]
368369

369370
_id_refs = [AssertionIDRef(_id) for _id in assertion_ids]

src/saml2/client_base.py

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
import threading
99
from urllib import urlencode
1010
from urlparse import urlparse
11+
import six
1112

1213
from saml2.entity import Entity
1314

@@ -382,7 +383,7 @@ def create_attribute_query(self, destination, name_id=None,
382383
pass
383384
else:
384385
raise AttributeError("Missing required parameter")
385-
elif isinstance(name_id, basestring):
386+
elif isinstance(name_id, six.string_types):
386387
name_id = saml.NameID(text=name_id)
387388
for key in ["sp_name_qualifier", "name_qualifier", "format"]:
388389
try:
@@ -453,7 +454,7 @@ def create_authz_decision_query_using_assertion(self, destination,
453454
"""
454455

455456
if action:
456-
if isinstance(action, basestring):
457+
if isinstance(action, six.string_types):
457458
_action = [saml.Action(text=action)]
458459
else:
459460
_action = [saml.Action(text=a) for a in action]
@@ -473,7 +474,7 @@ def create_assertion_id_request(assertion_id_refs, **kwargs):
473474
:return: One ID ref
474475
"""
475476

476-
if isinstance(assertion_id_refs, basestring):
477+
if isinstance(assertion_id_refs, six.string_types):
477478
return 0, assertion_id_refs
478479
else:
479480
return 0, assertion_id_refs[0]

src/saml2/httputil.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import logging
44
import time
55
import cgi
6+
import six
67

78
from urllib import quote
89
from urlparse import parse_qs
@@ -61,7 +62,7 @@ def _response(self, message="", **argv):
6162
mte = self.mako_lookup.get_template(self.mako_template)
6263
return [mte.render(**argv)]
6364
else:
64-
if isinstance(message, basestring):
65+
if isinstance(message, six.string_types):
6566
return [message]
6667
else:
6768
return message

src/saml2/mdie.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
11
#!/usr/bin/env python
2+
import six
3+
24
from saml2 import element_to_extension_element
35
from saml2 import extension_elements_to_elements
46
from saml2 import SamlBase
@@ -22,7 +24,7 @@ def _eval(val, onts, mdb_safe):
2224
:param onts: Schemas to be used in the conversion
2325
:return: The basic dictionary
2426
"""
25-
if isinstance(val, basestring):
27+
if isinstance(val, six.string_types):
2628
val = val.strip()
2729
if not val:
2830
return None
@@ -140,7 +142,7 @@ def from_dict(val, onts, mdb_safe=False):
140142
key = key.replace("__", ".")
141143
res[key] = from_dict(v, onts)
142144
return res
143-
elif isinstance(val, basestring):
145+
elif isinstance(val, six.string_types):
144146
return val
145147
elif isinstance(val, list):
146148
return [from_dict(v, onts) for v in val]

src/saml2/metadata.py

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
from saml2 import class_name
2121

2222
from saml2 import xmldsig as ds
23+
import six
2324

2425
from saml2.sigver import pre_signature_part
2526

@@ -137,7 +138,7 @@ def do_organization_info(ava):
137138
for dkey, (ckey, klass) in ORG_ATTR_TRANSL.items():
138139
if ckey not in ava:
139140
continue
140-
if isinstance(ava[ckey], basestring):
141+
if isinstance(ava[ckey], six.string_types):
141142
setattr(org, dkey, [_localized_name(ava[ckey], klass)])
142143
elif isinstance(ava[ckey], list):
143144
setattr(org, dkey,
@@ -163,7 +164,7 @@ def do_contact_person_info(lava):
163164
data = []
164165
if isinstance(classpec, list):
165166
# What if value is not a list ?
166-
if isinstance(value, basestring):
167+
if isinstance(value, six.string_types):
167168
data = [classpec[0](text=value)]
168169
else:
169170
for val in value:
@@ -253,7 +254,7 @@ def do_uiinfo(_uiinfo):
253254

254255
aclass = uii.child_class(attr)
255256
inst = getattr(uii, attr)
256-
if isinstance(val, basestring):
257+
if isinstance(val, six.string_types):
257258
ainst = aclass(text=val)
258259
inst.append(ainst)
259260
elif isinstance(val, dict):
@@ -263,7 +264,7 @@ def do_uiinfo(_uiinfo):
263264
inst.append(ainst)
264265
else:
265266
for value in val:
266-
if isinstance(value, basestring):
267+
if isinstance(value, six.string_types):
267268
ainst = aclass(text=value)
268269
inst.append(ainst)
269270
elif isinstance(value, dict):
@@ -299,11 +300,11 @@ def do_uiinfo(_uiinfo):
299300
_attr = "keywords"
300301
val = _uiinfo[_attr]
301302
inst = getattr(uii, _attr)
302-
# list of basestrings, dictionary or list of dictionaries
303+
# list of six.string_types, dictionary or list of dictionaries
303304
if isinstance(val, list):
304305
for value in val:
305306
keyw = mdui.Keywords()
306-
if isinstance(value, basestring):
307+
if isinstance(value, six.string_types):
307308
keyw.text = value
308309
elif isinstance(value, dict):
309310
keyw.text = " ".join(value["text"])
@@ -398,7 +399,7 @@ def do_extensions(mname, item):
398399
def _do_nameid_format(cls, conf, typ):
399400
namef = conf.getattr("name_id_format", typ)
400401
if namef:
401-
if isinstance(namef, basestring):
402+
if isinstance(namef, six.string_types):
402403
ids = [md.NameIDFormat(namef)]
403404
else:
404405
ids = [md.NameIDFormat(text=form) for form in namef]
@@ -413,7 +414,7 @@ def do_endpoints(conf, endpoints):
413414
servs = []
414415
i = 1
415416
for args in conf[endpoint]:
416-
if isinstance(args, basestring): # Assume it's the location
417+
if isinstance(args, six.string_types): # Assume it's the location
417418
args = {"location": args,
418419
"binding": DEFAULT_BINDING[endpoint]}
419420
elif isinstance(args, tuple) or isinstance(args, list):

src/saml2/mongo_store.py

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
from saml2.extension import ui
2222
from saml2 import xmldsig
2323
from saml2 import xmlenc
24+
import six
2425

2526

2627
ONTS = {
@@ -324,14 +325,14 @@ def protect(dic):
324325
res = {}
325326
for key, val in dic.items():
326327
key = key.replace(".", "__")
327-
if isinstance(val, basestring):
328+
if isinstance(val, six.string_types):
328329
pass
329330
elif isinstance(val, dict):
330331
val = protect(val)
331332
elif isinstance(val, list):
332333
li = []
333334
for va in val:
334-
if isinstance(va, basestring):
335+
if isinstance(va, six.string_types):
335336
pass
336337
elif isinstance(va, dict):
337338
va = protect(va)
@@ -349,14 +350,14 @@ def unprotect(dic):
349350
pass
350351
else:
351352
key = key.replace("__", ".")
352-
if isinstance(val, basestring):
353+
if isinstance(val, six.string_types):
353354
pass
354355
elif isinstance(val, dict):
355356
val = unprotect(val)
356357
elif isinstance(val, list):
357358
li = []
358359
for va in val:
359-
if isinstance(va, basestring):
360+
if isinstance(va, six.string_types):
360361
pass
361362
elif isinstance(val, dict):
362363
va = unprotect(va)

0 commit comments

Comments
 (0)