Skip to content

Commit 863b52b

Browse files
committed
Handle string and text types like six
1 parent 9a3eeb3 commit 863b52b

File tree

2 files changed

+25
-20
lines changed

2 files changed

+25
-20
lines changed

jwt/__init__.py

Lines changed: 13 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
http://self-issued.info/docs/draft-jones-json-web-token-01.html
66
"""
77
from __future__ import unicode_literals
8+
89
import base64
910
import binascii
1011
import hashlib
@@ -13,7 +14,7 @@
1314
from calendar import timegm
1415
from collections import Mapping
1516

16-
from .compat import (json, unicode, basestring, constant_time_compare,
17+
from .compat import (json, string_types, text_type, constant_time_compare,
1718
timedelta_total_seconds)
1819

1920

@@ -77,10 +78,10 @@ class InvalidIssuerError(InvalidTokenError):
7778

7879

7980
def prepare_HS_key(key):
80-
if not isinstance(key, basestring) and not isinstance(key, bytes):
81+
if not isinstance(key, string_types) and not isinstance(key, bytes):
8182
raise TypeError('Expecting a string- or bytes-formatted key.')
8283

83-
if isinstance(key, unicode):
84+
if isinstance(key, text_type):
8485
key = key.encode('utf-8')
8586

8687
return key
@@ -142,8 +143,8 @@ def prepare_RS_key(key):
142143
isinstance(key, interfaces.RSAPublicKey):
143144
return key
144145

145-
if isinstance(key, basestring):
146-
if isinstance(key, unicode):
146+
if isinstance(key, string_types):
147+
if isinstance(key, text_type):
147148
key = key.encode('utf-8')
148149

149150
try:
@@ -198,8 +199,8 @@ def prepare_ES_key(key):
198199
isinstance(key, interfaces.EllipticCurvePublicKey):
199200
return key
200201

201-
if isinstance(key, basestring):
202-
if isinstance(key, unicode):
202+
if isinstance(key, string_types):
203+
if isinstance(key, text_type):
203204
key = key.encode('utf-8')
204205

205206
# Attempt to load key. We don't know if it's
@@ -239,7 +240,7 @@ def base64url_encode(input):
239240

240241

241242
def header(jwt):
242-
if isinstance(jwt, unicode):
243+
if isinstance(jwt, text_type):
243244
jwt = jwt.encode('utf-8')
244245
header_segment = jwt.split(b'.', 1)[0]
245246
try:
@@ -311,7 +312,7 @@ def decode(jwt, key='', verify=True, **kwargs):
311312

312313

313314
def load(jwt):
314-
if isinstance(jwt, unicode):
315+
if isinstance(jwt, text_type):
315316
jwt = jwt.encode('utf-8')
316317
try:
317318
signing_input, crypto_segment = jwt.rsplit(b'.', 1)
@@ -356,7 +357,7 @@ def verify_signature(payload, signing_input, header, signature, key='',
356357
if isinstance(leeway, timedelta):
357358
leeway = timedelta_total_seconds(leeway)
358359

359-
if not isinstance(audience, (basestring, type(None))):
360+
if not isinstance(audience, (string_types, type(None))):
360361
raise TypeError('audience must be a string or None')
361362

362363
try:
@@ -388,11 +389,11 @@ def verify_signature(payload, signing_input, header, signature, key='',
388389

389390
if 'aud' in payload:
390391
audience_claims = payload['aud']
391-
if isinstance(audience_claims, basestring):
392+
if isinstance(audience_claims, string_types):
392393
audience_claims = [audience_claims]
393394
if not isinstance(audience_claims, list):
394395
raise InvalidAudienceError('Invalid claim format in token')
395-
if any(not isinstance(c, basestring) for c in audience_claims):
396+
if any(not isinstance(c, string_types) for c in audience_claims):
396397
raise InvalidAudienceError('Invalid claim format in token')
397398
if audience not in audience_claims:
398399
raise InvalidAudienceError('Invalid audience')

jwt/compat.py

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -6,20 +6,24 @@
66
import sys
77
import hmac
88

9+
10+
PY3 = sys.version_info[0] == 3
11+
12+
13+
if PY3:
14+
string_types = str,
15+
text_type = str
16+
else:
17+
string_types = basestring,
18+
text_type = unicode
19+
20+
921
try:
1022
import json
1123
except ImportError:
1224
import simplejson as json
1325

1426

15-
if sys.version_info >= (3, 0, 0):
16-
unicode = str
17-
basestring = str
18-
else:
19-
unicode = unicode
20-
basestring = basestring
21-
22-
2327
def timedelta_total_seconds(delta):
2428
try:
2529
delta.total_seconds

0 commit comments

Comments
 (0)