diff --git a/lib/ansible/module_utils/common/collections.py b/lib/ansible/module_utils/common/collections.py new file mode 100644 index 00000000000..95d12ffb6bc --- /dev/null +++ b/lib/ansible/module_utils/common/collections.py @@ -0,0 +1,29 @@ +# Copyright (c), Sviatoslav Sydorenko 2018 +# Simplified BSD License (see licenses/simplified_bsd.txt or https://opensource.org/licenses/BSD-2-Clause) +"""Collection of low-level utility functions.""" + +from __future__ import absolute_import, division, print_function +__metaclass__ = type + + +from ..six import binary_type, text_type +from ._collections_compat import Sequence + + +def is_string(seq): + """Identify whether the input has a string-like type (inclding bytes).""" + return isinstance(seq, (text_type, binary_type)) + + +def is_sequence(seq, include_strings=False): + """Identify whether the input is a sequence. + + Strings and bytes are not sequences here, + unless ``include_string`` is ``True``. + + Non-indexable things are never of a sequence type. + """ + if not include_strings and is_string(seq): + return False + + return isinstance(seq, Sequence)