from setuptools import setup

long_description = """
The nutils project is a collaborative programming effort aimed at the creation
of a general purpose python programming library for setting up finite element
computations. Identifying features are a heavily object oriented design, strict
separation of topology and geometry, and CAS-like function arithmetic such as
found in maple and mathematica. Primary design goals are:

  * Readability. Finite element scripts built on top of nutils should focus
    on work flow and maths, unobscured by finite element infrastructure.
  * Flexibility. The nutils are tools; they do not enforce a strict work
    flow. Missing components can be added locally without loosing
    interoperability.
  * Compatibility. Exposed objects are of native python type or allow for
    easy conversion to leverage third party tools.
  * Speed. Nutils are self-optimizing and support parallel computation.
    Typical scripting inefficiencies are discouraged by design.

The nutils are under active development, and are presently in use for academic
research by Phd and MSc students.
"""

import os, re
with open(os.path.join('nutils', '__init__.py')) as f:
  version = next(filter(None, map(re.compile("^version = '([a-zA-Z0-9.]+)'$").match, f))).group(1)

tests_require = ['Sphinx>=1.6','pillow>2.6']

setup(
  name = 'nutils',
  version = version,
  description = 'Numerical Utilities',
  author = 'Evalf',
  author_email = 'info@nutils.org',
  url = 'http://nutils.org',
  packages = [ 'nutils' ],
  package_data = { 'nutils': ['_log/*'] },
  long_description = long_description,
  license = 'MIT',
  python_requires = '>=3.5',
  install_requires = ['numpy>=1.12', 'matplotlib>=1.3', 'scipy>=0.13'],
  tests_require = tests_require,
  extras_require = dict(
    test=tests_require,
    docs=['Sphinx>=1.6'],
    mkl=['mkl'],
    readthedocs=['pillow>2.6'],
  ),
  command_options = dict(
    test=dict(test_loader=('setup.py', 'unittest:TestLoader')),
  ),
)

from setuptools import setup

long_description = """
Nutils is a Free and Open Source Python programming library for Finite Element
Method computations, developed by Evalf Computing and distributed under the
permissive MIT license. Key features are a readable, math centric syntax, an
object oriented design, strict separation of topology and geometry, and high
level function manipulations with support for automatic differentiation.

Nutils provides the tools required to construct a typical simulation workflow
in just a few lines of Python code, while at the same time leaving full
flexibility to build novel workflows or interact with third party tools. With
native support for Isogeometric Analysis (IGA), the Finite Cell method (FCM),
multi-physics, mixed methods, and hierarchical refinement, Nutils is at the
forefront of numerical discretization science. Efficient under-the-hood
vectorization and built-in parallellisation provide for an effortless
transition from academic research projects to full scale, real world
applications.
"""

import os, re
with open(os.path.join('nutils', '__init__.py')) as f:
  version = next(filter(None, map(re.compile("^version = '([a-zA-Z0-9.]+)'$").match, f))).group(1)

tests_require = ['Sphinx>=1.6','pillow>2.6']

setup(
  name = 'nutils',
  version = version,
  description = 'Numerical Utilities',
  author = 'Evalf',
  author_email = 'info@nutils.org',
  url = 'http://nutils.org',
  packages = [ 'nutils' ],
  package_data = { 'nutils': ['_log/*'] },
  long_description = long_description,
  license = 'MIT',
  python_requires = '>=3.5',
  install_requires = ['numpy>=1.12', 'matplotlib>=1.3', 'scipy>=0.13'],
  tests_require = tests_require,
  extras_require = dict(
    test=tests_require,
    docs=['Sphinx>=1.6'],
    mkl=['mkl'],
    readthedocs=['pillow>2.6'],
  ),
  command_options = dict(
    test=dict(test_loader=('setup.py', 'unittest:TestLoader')),
  ),
)

update long_description