diff options
Diffstat (limited to 'ipalib')
-rwxr-xr-x | ipalib/aci.py | 4 | ||||
-rw-r--r-- | ipalib/base.py | 4 | ||||
-rw-r--r-- | ipalib/cli.py | 7 | ||||
-rw-r--r-- | ipalib/config.py | 6 | ||||
-rw-r--r-- | ipalib/messages.py | 4 | ||||
-rw-r--r-- | ipalib/parameters.py | 19 | ||||
-rw-r--r-- | ipalib/plugins/baseldap.py | 6 | ||||
-rw-r--r-- | ipalib/plugins/baseuser.py | 6 | ||||
-rw-r--r-- | ipalib/plugins/dns.py | 6 | ||||
-rw-r--r-- | ipalib/plugins/group.py | 5 | ||||
-rw-r--r-- | ipalib/plugins/permission.py | 4 | ||||
-rw-r--r-- | ipalib/rpc.py | 5 | ||||
-rw-r--r-- | ipalib/util.py | 10 |
13 files changed, 56 insertions, 30 deletions
diff --git a/ipalib/aci.py b/ipalib/aci.py index f78c5327d..3019375c1 100755 --- a/ipalib/aci.py +++ b/ipalib/aci.py @@ -20,6 +20,8 @@ import shlex import re +import six + # The Python re module doesn't do nested parenthesis # Break the ACI into 3 pieces: target, name, permissions/bind_rules @@ -159,7 +161,7 @@ class ACI: raise SyntaxError, "invalid permission: '%s'" % p if not self.name: raise SyntaxError, "name must be set" - if not isinstance(self.name, basestring): + if not isinstance(self.name, six.string_types): raise SyntaxError, "name must be a string" if not isinstance(self.target, dict) or len(self.target) == 0: raise SyntaxError, "target must be a non-empty dictionary" diff --git a/ipalib/base.py b/ipalib/base.py index 12b2efd00..33b33eeb2 100644 --- a/ipalib/base.py +++ b/ipalib/base.py @@ -23,6 +23,8 @@ Foundational classes and functions. import re +import six + from ipalib.constants import NAME_REGEX, NAME_ERROR from ipalib.constants import TYPE_ERROR, SET_ERROR, DEL_ERROR, OVERRIDE_ERROR @@ -466,7 +468,7 @@ class NameSpace(ReadOnly): :param key: The name or index of a member, or a slice object. """ key = getattr(key, '__name__', key) - if isinstance(key, basestring): + if isinstance(key, six.string_types): return self.__map[key] if type(key) in (int, slice): return self.__members[key] diff --git a/ipalib/cli.py b/ipalib/cli.py index abd691bc1..9c6d570f7 100644 --- a/ipalib/cli.py +++ b/ipalib/cli.py @@ -31,6 +31,9 @@ import termios import struct import base64 import traceback + +import six + try: #pylint: disable=F0401 import default_encoding_utf8 @@ -280,7 +283,7 @@ class textui(backend.Backend): objectClass: top objectClass: someClass """ - assert isinstance(attr, basestring) + assert isinstance(attr, six.string_types) if not isinstance(value, (list, tuple)): # single-value attribute self.print_indented(format % (attr, self.encode_binary(value)), indent) @@ -420,7 +423,7 @@ class textui(backend.Backend): ------------------ Only dashed above. """ - assert isinstance(dash, basestring) + assert isinstance(dash, six.string_types) assert len(dash) == 1 dashes = dash * len(string) if above: diff --git a/ipalib/config.py b/ipalib/config.py index 760fa5bdd..90933b7a2 100644 --- a/ipalib/config.py +++ b/ipalib/config.py @@ -35,8 +35,10 @@ from types import NoneType import os from os import path import sys -from ipapython.dn import DN +import six + +from ipapython.dn import DN from ipalib.base import check_name from ipalib.constants import CONFIG_SECTION from ipalib.constants import OVERRIDE_ERROR, SET_ERROR, DEL_ERROR @@ -239,7 +241,7 @@ class Env(object): (self.__class__.__name__, key, self.__d[key], value) ) assert not hasattr(self, key) - if isinstance(value, basestring): + if isinstance(value, six.string_types): value = value.strip() if isinstance(value, str): value = value.decode('utf-8') diff --git a/ipalib/messages.py b/ipalib/messages.py index 58ae1f3ec..4615cbc2b 100644 --- a/ipalib/messages.py +++ b/ipalib/messages.py @@ -32,6 +32,8 @@ Messages also have the 'type' argument, set to one of 'debug', 'info', from inspect import isclass +import six + from ipalib.constants import TYPE_ERROR from ipalib.text import _ as ugettext from ipalib.text import Gettext, NGettext @@ -60,7 +62,7 @@ def process_message_arguments(obj, format=None, message=None, **kw): obj.format = format obj.forwarded = False obj.msg = obj.format % kw - if isinstance(obj.format, basestring): + if isinstance(obj.format, six.string_types): obj.strerror = ugettext(obj.format) % kw else: obj.strerror = obj.format % kw diff --git a/ipalib/parameters.py b/ipalib/parameters.py index f9da3b0f5..c9baf414a 100644 --- a/ipalib/parameters.py +++ b/ipalib/parameters.py @@ -108,6 +108,7 @@ from types import NoneType import encodings.idna import dns.name +import six from ipalib.text import _ as ugettext from ipalib.plugable import ReadOnly, lock, check_name @@ -394,8 +395,8 @@ class Param(ReadOnly): ('cli_name', str, None), ('cli_short_name', str, None), ('deprecated_cli_aliases', frozenset, frozenset()), - ('label', (basestring, Gettext), None), - ('doc', (basestring, Gettext), None), + ('label', (six.string_types, Gettext), None), + ('doc', (six.string_types, Gettext), None), ('required', bool, True), ('multivalue', bool, False), ('primary_key', bool, False), @@ -964,7 +965,7 @@ class Bool(Param): """ if type(value) in self.allowed_types: return value - if isinstance(value, basestring): + if isinstance(value, six.string_types): value = value.lower() if value in self.truths: return True @@ -1143,7 +1144,7 @@ class Decimal(Number): value = kw.get(kwparam) if value is None: continue - if isinstance(value, (basestring, float)): + if isinstance(value, (six.string_types, float)): try: value = decimal.Decimal(value) except Exception as e: @@ -1233,7 +1234,7 @@ class Decimal(Number): return value def _convert_scalar(self, value, index=None): - if isinstance(value, (basestring, float)): + if isinstance(value, (six.string_types, float)): try: value = decimal.Decimal(value) except decimal.DecimalException as e: @@ -1264,8 +1265,8 @@ class Data(Param): ('minlength', int, None), ('maxlength', int, None), ('length', int, None), - ('pattern', (basestring,), None), - ('pattern_errmsg', (basestring,), None), + ('pattern', (six.string_types,), None), + ('pattern_errmsg', (six.string_types,), None), ) re = None @@ -1474,7 +1475,7 @@ class IA5Str(Str): super(IA5Str, self).__init__(name, *rules, **kw) def _convert_scalar(self, value, index=None): - if isinstance(value, basestring): + if isinstance(value, six.string_types): for i in xrange(len(value)): if ord(value[i]) > 127: raise ConversionError(name=self.get_param_name(), @@ -1646,7 +1647,7 @@ class DateTime(Param): type_error = _('must be datetime value') def _convert_scalar(self, value, index=None): - if isinstance(value, basestring): + if isinstance(value, six.string_types): for date_format in self.accepted_formats: try: time = datetime.datetime.strptime(value, date_format) diff --git a/ipalib/plugins/baseldap.py b/ipalib/plugins/baseldap.py index 8a05c782e..a8525e81e 100644 --- a/ipalib/plugins/baseldap.py +++ b/ipalib/plugins/baseldap.py @@ -25,6 +25,8 @@ import time from copy import deepcopy import base64 +import six + from ipalib import api, crud, errors from ipalib import Method, Object, Command from ipalib import Flag, Int, Str @@ -816,7 +818,7 @@ def _check_single_value_attrs(params, entry_attrs): # required, make sure we enforce that. def _check_empty_attrs(params, entry_attrs): for (a, v) in entry_attrs.iteritems(): - if v is None or (isinstance(v, basestring) and len(v) == 0): + if v is None or (isinstance(v, six.string_types) and len(v) == 0): if a in params and params[a].required: raise errors.RequirementError(name=a) @@ -2038,7 +2040,7 @@ class LDAPSearch(BaseLDAPCommand, crud.Search): config_attrs = config.get( self.obj.search_attributes_config, []) if len(config_attrs) == 1 and ( - isinstance(config_attrs[0], basestring)): + isinstance(config_attrs[0], six.string_types)): search_attrs = config_attrs[0].split(',') search_kw['objectclass'] = self.obj.object_class diff --git a/ipalib/plugins/baseuser.py b/ipalib/plugins/baseuser.py index 5eede7a98..c3e290371 100644 --- a/ipalib/plugins/baseuser.py +++ b/ipalib/plugins/baseuser.py @@ -22,6 +22,8 @@ import string import posixpath import os +import six + from ipalib import api, errors from ipalib import Flag, Int, Password, Str, Bool, StrEnum, DateTime, Bytes from ipalib.plugable import Registry @@ -89,7 +91,7 @@ def validate_nsaccountlock(entry_attrs): if 'nsaccountlock' in entry_attrs: nsaccountlock = entry_attrs['nsaccountlock'] if not isinstance(nsaccountlock, (bool, Bool)): - if not isinstance(nsaccountlock, basestring): + if not isinstance(nsaccountlock, six.string_types): raise errors.OnlyOneValueAllowed(attr='nsaccountlock') if nsaccountlock.lower() not in ('true', 'false'): raise errors.ValidationError(name='nsaccountlock', @@ -400,7 +402,7 @@ class baseuser(LDAPObject): if not isinstance(email, (list, tuple)): email = [email] for m in email: - if isinstance(m, basestring): + if isinstance(m, six.string_types): if '@' not in m and defaultdomain: m = m + u'@' + defaultdomain if not Email(m): diff --git a/ipalib/plugins/dns.py b/ipalib/plugins/dns.py index 23871a58f..10c4987af 100644 --- a/ipalib/plugins/dns.py +++ b/ipalib/plugins/dns.py @@ -24,11 +24,13 @@ import netaddr import time import re import binascii +import encodings.idna + import dns.name import dns.exception import dns.rdatatype import dns.resolver -import encodings.idna +import six from ipalib.request import context from ipalib import api, errors, output @@ -1671,7 +1673,7 @@ def _create_idn_filter(cmd, ldap, *args, **options): config = ldap.get_ipa_config() config_attrs = config.get(cmd.obj.search_attributes_config, []) if len(config_attrs) == 1 and (isinstance(config_attrs[0], - basestring)): + six.string_types)): search_attrs = config_attrs[0].split(',') search_kw['objectclass'] = cmd.obj.object_class diff --git a/ipalib/plugins/group.py b/ipalib/plugins/group.py index 18ae6dc36..8ee20a9a8 100644 --- a/ipalib/plugins/group.py +++ b/ipalib/plugins/group.py @@ -18,6 +18,8 @@ # You should have received a copy of the GNU General Public License # along with this program. If not, see <http://www.gnu.org/licenses/>. +import six + from ipalib import api from ipalib import Int, Str from ipalib.plugable import Registry @@ -25,6 +27,7 @@ from ipalib.plugins.baseldap import * from ipalib.plugins.idviews import remove_ipaobject_overrides from ipalib.plugins import baseldap from ipalib import _, ngettext + if api.env.in_server and api.env.context in ['lite', 'server']: try: import ipaserver.dcerpc @@ -460,7 +463,7 @@ class group_find(LDAPSearch): search_kw = {} config = ldap.get_ipa_config() attrs = config.get(self.obj.search_attributes_config, []) - if len(attrs) == 1 and isinstance(attrs[0], basestring): + if len(attrs) == 1 and isinstance(attrs[0], six.string_types): search_attrs = attrs[0].split(',') for a in search_attrs: search_kw[a] = args[-1] diff --git a/ipalib/plugins/permission.py b/ipalib/plugins/permission.py index 012b78fcc..9544cd292 100644 --- a/ipalib/plugins/permission.py +++ b/ipalib/plugins/permission.py @@ -20,6 +20,8 @@ import re import traceback +import six + from ipalib.plugins import baseldap from ipalib.plugins.privilege import validate_permission_to_privilege from ipalib import errors @@ -134,7 +136,7 @@ class DNOrURL(DNParam): """ def _convert_scalar(self, value, index=None): - if isinstance(value, basestring) and value.startswith('ldap:///'): + if isinstance(value, six.string_types) and value.startswith('ldap:///'): value = strip_ldap_prefix(value) return super(DNOrURL, self)._convert_scalar(value, index=index) diff --git a/ipalib/rpc.py b/ipalib/rpc.py index 9d0fc8f7b..0dc897a08 100644 --- a/ipalib/rpc.py +++ b/ipalib/rpc.py @@ -41,13 +41,14 @@ import urllib import json import socket from urllib2 import urlparse - from xmlrpclib import (Binary, Fault, DateTime, dumps, loads, ServerProxy, Transport, ProtocolError, MININT, MAXINT) + import gssapi from dns import resolver, rdatatype from dns.exception import DNSException from nss.error import NSPRError +import six from ipalib.backend import Connectible from ipalib.constants import LDAP_GENERALIZED_TIME_FORMAT @@ -339,7 +340,7 @@ def json_decode_binary(val): elif isinstance(val, list): return tuple(json_decode_binary(v) for v in val) else: - if isinstance(val, basestring): + if isinstance(val, six.string_types): try: return val.decode('utf-8') except UnicodeDecodeError: diff --git a/ipalib/util.py b/ipalib/util.py index 4a75b820a..e38ddbbdc 100644 --- a/ipalib/util.py +++ b/ipalib/util.py @@ -29,13 +29,15 @@ import re import decimal import dns import encodings -import netaddr from types import NoneType from weakref import WeakKeyDictionary + +import netaddr from dns import resolver, rdatatype from dns.exception import DNSException from dns.resolver import NXDOMAIN from netaddr.core import AddrFormatError +import six from ipalib import errors, messages from ipalib.text import _ @@ -178,7 +180,7 @@ def check_writable_file(filename): raise errors.FileError(reason=str(e)) def normalize_zonemgr(zonemgr): - if not zonemgr or not isinstance(zonemgr, basestring): + if not zonemgr or not isinstance(zonemgr, six.string_types): return zonemgr if '@' in zonemgr: # local-part needs to be normalized @@ -572,8 +574,8 @@ def _resolve_record(owner, rtype, nameserver_ip=None, edns0=False, :param flag_cd: requires dnssec=True, adds flag CD :raise DNSException: if error occurs """ - assert isinstance(nameserver_ip, basestring) - assert isinstance(rtype, basestring) + assert isinstance(nameserver_ip, six.string_types) + assert isinstance(rtype, six.string_types) res = dns.resolver.Resolver() if nameserver_ip: |