# -*- test-case-name: twisted -*-

# Copyright (c) Twisted Matrix Laboratories.
# See LICENSE for details.


"""
Twisted: The Framework Of Your Internet.
"""

def _checkRequirements():
    # Don't allow the user to run a version of Python we don't support.
    import sys

    version = getattr(sys, "version_info", (0,))
    if version < (2, 6):
        raise ImportError("Twisted requires Python 2.6 or later.")
    if version < (3, 0):
        required = "3.6.0"
    else:
        required = "4.0.0"

    if ("setuptools" in sys.modules and
        getattr(sys.modules["setuptools"],
                "_TWISTED_NO_CHECK_REQUIREMENTS", None) is not None):
        # Skip requirement checks, setuptools ought to take care of installing
        # the dependencies.
        return

    # Don't allow the user to run with a version of zope.interface we don't
    # support.
    required = "Twisted requires zope.interface %s or later" % (required,)
    try:
        from zope import interface
    except ImportError:
        # It isn't installed.
        raise ImportError(required + ": no module named zope.interface.")
    except:
        # It is installed but not compatible with this version of Python.
        raise ImportError(required + ".")
    try:
        # Try using the API that we need, which only works right with
        # zope.interface 3.6 (or 4.0 on Python 3)
        class IDummy(interface.Interface):
            pass
        @interface.implementer(IDummy)
        class Dummy(object):
            pass
    except TypeError:
        # It is installed but not compatible with this version of Python.
        raise ImportError(required + ".")

_checkRequirements()

# Ensure compat gets imported
from twisted.python import compat

# setup version
from twisted._version import version
__version__ = version.short()

del compat
