From 9e913fe156cd33f3db8602a8a505d49bf5910def Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rapha=C3=ABl=20Barrois?= Date: Mon, 19 Oct 2015 23:04:24 +0200 Subject: [PATCH] ldif: Cleanup Py3 compatibility code. - Avoid using outdated type names (unicode) - Reuse compatibility code --- Lib/ldap/compat.py | 3 ++- Lib/ldif.py | 16 +++++----------- 2 files changed, 7 insertions(+), 12 deletions(-) diff --git a/Lib/ldap/compat.py b/Lib/ldap/compat.py index 1ee0b86..22e0fd7 100644 --- a/Lib/ldap/compat.py +++ b/Lib/ldap/compat.py @@ -6,6 +6,7 @@ if sys.version_info[0] < 3: from UserDict import UserDict from urllib import quote from urllib import unquote as urllib_unquote + from urlparse import urlparse def unquote(uri): """Specialized unquote that uses UTF-8 for parsing.""" @@ -14,4 +15,4 @@ if sys.version_info[0] < 3: return unquoted.decode('utf-8') else: from collections import UserDict - from urllib.parse import quote, unquote + from urllib.parse import quote, unquote, urlparse diff --git a/Lib/ldif.py b/Lib/ldif.py index 2622adc..005cc87 100644 --- a/Lib/ldif.py +++ b/Lib/ldif.py @@ -37,13 +37,7 @@ except ImportError: except ImportError: from io import StringIO -try: - from urllib.parse import urlparse -except ImportError: - from urlparse import urlparse - -if sys.version_info > (3, 0): - unicode = str +from ldap.compat import urlparse attrtype_pattern = r'[\w;.-]+(;[\w_-]+)*' attrvalue_pattern = r'(([^,]|\\,)+|".*?")' @@ -155,7 +149,7 @@ class LDIFWriter: """ if self._needs_base64_encoding(attr_type,attr_value): # Encode with base64 - if isinstance(attr_value, unicode): + if not isinstance(attr_value, bytes): attr_value = attr_value.encode('utf-8') encoded = base64.encodestring(attr_value).decode('ascii') encoded = encoded.replace('\n','') @@ -213,7 +207,7 @@ class LDIFWriter: or a list with a modify list like for LDAPObject.modify(). """ # Start with line containing the distinguished name - if isinstance(dn, unicode): + if not isinstance(dn, bytes): dn = dn.encode('utf-8') self._unparseAttrTypeandValue('dn', dn) # Dispatch to record type specific writers @@ -348,12 +342,12 @@ class LDIFParser: value_spec = unfolded_line[colon_pos:colon_pos+2] if value_spec==': ': attr_value = unfolded_line[colon_pos+2:].lstrip() - if isinstance(unfolded_line, unicode): + if not isinstance(unfolded_line, bytes): attr_value = attr_value.encode('utf-8') elif value_spec=='::': # attribute value needs base64-decoding attr_value = unfolded_line[colon_pos+2:] - if isinstance(attr_value, unicode): + if not isinstance(attr_value, bytes): attr_value = attr_value.encode('ascii') attr_value = base64.decodestring(attr_value) elif value_spec==':<':