@@ -0,0 +1,1590 @@
+import sys%0Afrom setuptools import setup, find_packages%0Afrom setuptools.command.test import test as TestCommand%0A%0ApackageName = %22merlin%22%0A%0Aimport re%0AversionLine = open(%22%7B%7D/_version.py%22.format(packageName), %22rt%22).read()%0Amatch = re.search(r%22%5E__version__ = %5B'%5C%22%5D(%5B%5E'%5C%22%5D*)%5B'%5C%22%5D%22, versionLine, re.M)%0AversionString = match.group(1)%0A%0Aclass Tox(TestCommand):%0A    def finalize_options(self):%0A        TestCommand.finalize_options(self)%0A        self.test_suite = True%0A%0A    def run_tests(self):%0A        #import here, cause outside the eggs aren't loaded%0A        import tox%0A        sys.exit(tox.cmdline(%5B%5D))%0A%0Asetup(name=packageName,%0A      version=versionString,%0A      description='A server backend for interactive online exercises.',%0A      long_description=open(%22README.rst%22).read(),%0A      url='https://github.com/lvh/' + packageName,%0A%0A      author='Laurens Van Houtven',%0A      author_email='_@lvh.io',%0A%0A      packages=find_packages(),%0A      test_suite=packageName + %22.test%22,%0A      setup_requires=%5B'tox'%5D,%0A      cmdclass=%7B'test': Tox%7D,%0A      zip_safe=True,%0A%0A      license='ISC',%0A      keywords=%22crypto twisted%22,%0A      classifiers=%5B%0A          %22Development Status :: 3 - Alpha%22,%0A          %22Framework :: Twisted%22,%0A          %22Intended Audience :: Education%22,%0A          %22License :: OSI Approved :: ISC License (ISCL)%22,%0A          %22Programming Language :: Python :: 2 :: Only%22,%0A          %22Programming Language :: Python :: 2.6%22,%0A          %22Programming Language :: Python :: 2.7%22,%0A          %22Topic :: Education%22,%0A          %22Topic :: Games/Entertainment%22,%0A          %22Topic :: Security :: Cryptography%22,%0A        %5D%0A)%0A

Add setup.py