# Path: taipan/_compat.py
# IS_PY26 = sys.version_info[:2] == (2, 6)
# IS_PY3 = sys.version_info[0] == 3
# class MetaclassDecorator(object):
#     def __init__(self, meta):
#     def __call__(self, cls):
# 
# Path: taipan/strings.py
# def ensure_string(s):
#     """Checks whether ``s`` is a string of characters.
#     :return: ``s`` if it is a string of characters
#     :raise TypeError: When ``s` is not a string of characters
#     """
#     if not is_string(s):
#         raise TypeError("expected a string, got %s" % type(s).__name__)
#     return s


import keyword
import re
from numbers import Number
from taipan._compat import IS_PY3, metaclass
from taipan.strings import ensure_string
from __future__ import unicode_literals




__all__ = [
    'ABSENT',
    'cast',

    'is_contextmanager', 'is_number',
    'ensure_boolean', 'ensure_contextmanager', 'ensure_number',

    'has_identifier_form', 'is_identifier',
    'is_keyword',
    'is_magic', 'is_dunder',
]


# Absent value

class AbsentMetaclass(type):
    """Metaclass for the absent value class."""

    def __instancecheck__(self, instance):
        return False

    def __subclasscheck__(self, subclass):
        return False



# Path: taipan/_compat.py
# IS_PY26 = sys.version_info[:2] == (2, 6)
# IS_PY3 = sys.version_info[0] == 3
# class MetaclassDecorator(object):
#     def __init__(self, meta):
#     def __call__(self, cls):
# 
# Path: taipan/strings.py
# def ensure_string(s):
#     """Checks whether ``s`` is a string of characters.
#     :return: ``s`` if it is a string of characters
#     :raise TypeError: When ``s` is not a string of characters
#     """
#     if not is_string(s):
#         raise TypeError("expected a string, got %s" % type(s).__name__)
#     return s


# Path: taipan/lang.py
import keyword
import re
from numbers import Number
from taipan._compat import IS_PY3, metaclass
from taipan.strings import ensure_string

from __future__ import unicode_literals




__all__ = [
    'ABSENT',
    'cast',

    'is_contextmanager', 'is_number',
    'ensure_boolean', 'ensure_contextmanager', 'ensure_number',

    'has_identifier_form', 'is_identifier',
    'is_keyword',
    'is_magic', 'is_dunder',
]


# Absent value

class AbsentMetaclass(type):
    """Metaclass for the absent value class."""

    def __instancecheck__(self, instance):
        return False

    def __subclasscheck__(self, subclass):
        return False



@metaclass(AbsentMetaclass)