# Path: muninn/_compat.py
# PY3 = sys.version_info[0] == 3
#     def is_python2_unicode(x):
#     def dictkeys(d):
#     def dictvalues(d):
#     def path_utf8(path):
#     def encode(s):
#     def decode(s):
#     def is_python2_unicode(x):
#     def path_utf8(path):
#     def decode(s):
#     def encode(s):
# 
# Path: muninn/_compat.py
# PY3 = sys.version_info[0] == 3
#     def is_python2_unicode(x):
#     def dictkeys(d):
#     def dictvalues(d):
#     def path_utf8(path):
#     def encode(s):
#     def decode(s):
#     def is_python2_unicode(x):
#     def path_utf8(path):
#     def decode(s):
#     def encode(s):


import datetime
import uuid
import muninn.geometry as geometry
from muninn._compat import long
from muninn._compat import string_types as basestring
    @classmethod
    def validate(cls, value):
        if type(value) is not int and type(value) is not long or value < -2147483648 or value > 2147483647:
            raise ValueError("invalid value %r for type %r" % (value, cls.name()))


class Real(Type):
    @classmethod
    def validate(cls, value):
        if type(value) is not float:
            raise ValueError("invalid value %r for type %r" % (value, cls.name()))


class Boolean(Type):
    @classmethod
    def validate(cls, value):
        if type(value) is not bool:
            raise ValueError("invalid value %r for type %r" % (value, cls.name()))


class Text(Type):
    @classmethod
    def validate(cls, value):
        if not isinstance(value, basestring):
            raise ValueError("invalid value %r for type %r" % (value, cls.name()))


class Namespace(Type):
    @classmethod
    def validate(cls, value):

# Path: muninn/_compat.py
# PY3 = sys.version_info[0] == 3
#     def is_python2_unicode(x):
#     def dictkeys(d):
#     def dictvalues(d):
#     def path_utf8(path):
#     def encode(s):
#     def decode(s):
#     def is_python2_unicode(x):
#     def path_utf8(path):
#     def decode(s):
#     def encode(s):
# 
# Path: muninn/_compat.py
# PY3 = sys.version_info[0] == 3
#     def is_python2_unicode(x):
#     def dictkeys(d):
#     def dictvalues(d):
#     def path_utf8(path):
#     def encode(s):
#     def decode(s):
#     def is_python2_unicode(x):
#     def path_utf8(path):
#     def decode(s):
#     def encode(s):


# Path: muninn/schema.py
import datetime
import uuid
import muninn.geometry as geometry
from muninn._compat import long
from muninn._compat import string_types as basestring

    @classmethod
    def validate(cls, value):
        if type(value) is not int and type(value) is not long or value < -2147483648 or value > 2147483647:
            raise ValueError("invalid value %r for type %r" % (value, cls.name()))


class Real(Type):
    @classmethod
    def validate(cls, value):
        if type(value) is not float:
            raise ValueError("invalid value %r for type %r" % (value, cls.name()))


class Boolean(Type):
    @classmethod
    def validate(cls, value):
        if type(value) is not bool:
            raise ValueError("invalid value %r for type %r" % (value, cls.name()))


class Text(Type):
    @classmethod
    def validate(cls, value):
        if not isinstance(value, basestring):
            raise ValueError("invalid value %r for type %r" % (value, cls.name()))


class Namespace(Type):
    @classmethod
    def validate(cls, value):

        if not isinstance(value, basestring):