Skip to content
setup.py 3.13 KiB
Newer Older
Andreas Klöckner's avatar
Andreas Klöckner committed
#!/usr/bin/env python
# -*- coding: utf-8 -*-
Andreas Klöckner's avatar
Andreas Klöckner committed

import os
from setuptools import setup, find_packages

# {{{ capture git revision at install time

# authoritative version in pytools/__init__.py
def find_git_revision(tree_root):
    # Keep this routine self-contained so that it can be copy-pasted into
    # setup.py.

    from os.path import join, exists, abspath
    tree_root = abspath(tree_root)

    if not exists(join(tree_root, ".git")):
        return None

    from subprocess import Popen, PIPE, STDOUT
    p = Popen(["git", "rev-parse", "HEAD"], shell=False,
              stdin=PIPE, stdout=PIPE, stderr=STDOUT, close_fds=True,
              cwd=tree_root)
    (git_rev, _) = p.communicate()

    import sys
    if sys.version_info >= (3,):
        git_rev = git_rev.decode()

    git_rev = git_rev.rstrip()

    retcode = p.returncode
    assert retcode is not None
    if retcode != 0:
        from warnings import warn
        warn("unable to find git revision")
        return None

    return git_rev


def write_git_revision(package_name):
    from os.path import dirname, join
    dn = dirname(__file__)
    git_rev = find_git_revision(dn)

    with open(join(dn, package_name, "_git_rev.py"), "w") as outf:
        outf.write("GIT_REVISION = %s\n" % repr(git_rev))


write_git_revision("pytential")

# }}}


version_dict = {}
init_filename = "pytential/version.py"
os.environ["AKPYTHON_EXEC_FROM_WITHIN_WITHIN_SETUP_PY"] = "1"
exec(compile(open(init_filename, "r").read(), init_filename, "exec"),
        version_dict)

setup(name="pytential",
      version=version_dict["VERSION_TEXT"],
      description="Evaluate layer and volume potentials accurately. "
      "Solve integral equations.",
      long_description=open("README.rst", "rt").read(),
      author="Andreas Kloeckner",
      author_email="inform@tiker.net",
      license="MIT",
      url="http://wiki.tiker.net/Pytential",
      classifiers=[
          'Development Status :: 3 - Alpha',
          'Intended Audience :: Developers',
          'Intended Audience :: Other Audience',
          'Intended Audience :: Science/Research',
          'License :: OSI Approved :: MIT License',
          'Natural Language :: English',
          'Programming Language :: Python',

          'Programming Language :: Python :: 2.6',
          'Programming Language :: Python :: 2.7',
          # 3.x has not yet been tested.
          'Topic :: Scientific/Engineering',
          'Topic :: Scientific/Engineering :: Information Analysis',
          'Topic :: Scientific/Engineering :: Mathematics',
          'Topic :: Scientific/Engineering :: Visualization',
          'Topic :: Software Development :: Libraries',
          'Topic :: Utilities',
          ],

      packages=find_packages(),

      install_requires=[
          "pytest>=2.3",
          # FIXME leave out for now
          # https://code.google.com/p/sympy/issues/detail?id=3874
          #"sympy>=0.7.2",

          "pytools>=2018.2",
          "modepy>=2013.3",
          "pyopencl>=2013.1",
          "pymbolic>=2013.2",
          "loo.py>=2017.2",
          "sumpy>=2013.1",
          "cgen>=2013.1.2",

          "six",
          ])