# 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):


from muninn._compat import itervalues, imap, izip
    from collections.abc import MutableSet
    from collections import MutableSet
#
# Copyright (C) 2014-2022 S[&]T, The Netherlands.
#

from __future__ import absolute_import, division, print_function

try:
except ImportError:


class Prototype(object):
    def __init__(self, name, argument_types=(), return_type=None):
        self.name = name
        self.argument_types = argument_types
        self.return_type = return_type

        self._id = "%s(%s)" % (self.name, ",".join(imap(lambda type: type.name(), self.argument_types)))

# 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/function.py
from muninn._compat import itervalues, imap, izip
    from collections.abc import MutableSet
    from collections import MutableSet

#
# Copyright (C) 2014-2022 S[&]T, The Netherlands.
#

from __future__ import absolute_import, division, print_function

try:
except ImportError:


class Prototype(object):
    def __init__(self, name, argument_types=(), return_type=None):
        self.name = name
        self.argument_types = argument_types
        self.return_type = return_type

        self._id = "%s(%s)" % (self.name, ",".join(imap(lambda type: type.name(), self.argument_types)))

        if self.return_type is not None: