support the new CLI in py2 *and* py3

This commit is contained in:
Ryan Petrello
2019-08-19 17:59:49 -04:00
parent 2cdd007ed0
commit 80b4102aa9
21 changed files with 154 additions and 52 deletions

View File

@@ -10,6 +10,7 @@ import sys
import re
import os
import six
import yaml
from awxkit.words import words
@@ -132,7 +133,7 @@ class PseudoNamespace(dict):
def is_relative_endpoint(candidate):
return isinstance(candidate, (str,)) and candidate.startswith('/api/')
return isinstance(candidate, (six.text_type,)) and candidate.startswith('/api/')
def is_class_or_instance(obj, cls):
@@ -320,6 +321,22 @@ def update_payload(payload, fields, kwargs):
return payload
def to_str(obj):
if six.PY3:
if isinstance(obj, bytes):
return obj.decode('utf-8')
return obj
if not isinstance(obj, six.text_type):
try:
return str(obj)
except UnicodeDecodeError:
try:
obj = six.text_type(obj, 'utf8')
except UnicodeDecodeError:
obj = obj.decode('latin1')
return obj.encode('utf8')
def to_bool(obj):
if isinstance(obj, (str,)):
return obj.lower() not in ('false', 'off', 'no', 'n', '0', '')