[yt-svn] commit/yt: xarthisius: Refactor setuptools usage

commits-noreply at bitbucket.org commits-noreply at bitbucket.org
Wed Feb 3 14:00:35 PST 2016


1 new commit in yt:

https://bitbucket.org/yt_analysis/yt/commits/f7c36e4a075f/
Changeset:   f7c36e4a075f
Branch:      yt
User:        xarthisius
Date:        2016-02-03 19:01:15+00:00
Summary:     Refactor setuptools usage
Affected #:  80 files

diff -r 41a14ee1c248f09c88debe90b57c43fc769a407f -r f7c36e4a075f699037baa4fcee0b7450df85a8b4 setup.py
--- a/setup.py
+++ b/setup.py
@@ -1,27 +1,20 @@
 import os
-import os.path
 import glob
 import sys
-import time
-import subprocess
-import shutil
-import glob
+from sys import platform as _platform
+from setuptools import setup, find_packages
+from setuptools.extension import Extension
+from setuptools.command.build_ext import build_ext as _build_ext
+from setuptools.command.build_py import build_py as _build_py
+from setupext import \
+    check_for_openmp, check_for_pyembree, read_embree_location, \
+    get_mercurial_changeset_id
 
 if sys.version_info < (2, 7):
     print("yt currently requires Python version 2.7")
     print("certain features may fail unexpectedly and silently with older versions.")
     sys.exit(1)
 
-import setuptools
-from distutils.command.build_py import build_py
-from numpy.distutils.misc_util import appendpath
-from numpy.distutils.command import install_data as np_install_data
-from numpy.distutils import log
-from distutils import version
-
-from distutils.core import Command
-from distutils.spawn import find_executable
-
 MAPSERVER_FILES = []
 MAPSERVER_DIRS = [
     "",
@@ -36,109 +29,277 @@
         files += glob.glob("%s/*.%s" % (dir_name, ext))
     MAPSERVER_FILES.append((dir_name, files))
 
-# Verify that we have Cython installed
-REQ_CYTHON = '0.22'
-try:
-    import Cython
-    needs_cython = \
-        version.LooseVersion(Cython.__version__) < version.LooseVersion(REQ_CYTHON)
-except ImportError as e:
-    needs_cython = True
-
-if needs_cython:
-    print("Cython is a build-time requirement for the source tree of yt.")
-    print("Please either install yt from a provided, release tarball,")
-    print("or install Cython (version %s or higher)." % REQ_CYTHON)
-    print("You may be able to accomplish this by typing:")
-    print("     pip install -U Cython")
-    sys.exit(1)
-
-######
-# This next bit comes from Matthew Brett, to get Cython working with NumPy
-# distutils.  I added a bit to get C++ Cython working.
-from os.path import join as pjoin, dirname
-from distutils.dep_util import newer_group
-from distutils.errors import DistutilsError
-
-
-def generate_a_pyrex_source(self, base, ext_name, source, extension):
-    ''' Monkey patch for numpy build_src.build_src method
-
-    Uses Cython instead of Pyrex.
-
-    Assumes Cython is present
-    '''
-    if self.inplace:
-        target_dir = dirname(base)
-    else:
-        target_dir = appendpath(self.build_src, dirname(base))
-    if extension.language == "c++":
-        cplus = True
-        file_ext = ".cpp"
-    else:
-        cplus = False
-        file_ext = ".c"
-    target_file = pjoin(target_dir, ext_name + file_ext)
-    depends = [source] + extension.depends
-    if self.force or newer_group(depends, target_file, 'newer'):
-        import Cython.Compiler.Main
-        log.info("cythonc:> %s" % (target_file))
-        self.mkpath(target_dir)
-        options = Cython.Compiler.Main.CompilationOptions(
-            defaults=Cython.Compiler.Main.default_options,
-            include_path=extension.include_dirs,
-            cplus=cplus,
-            output_file=target_file)
-        cython_result = Cython.Compiler.Main.compile(source,
-                                                     options=options)
-        if cython_result.num_errors != 0:
-            raise DistutilsError("%d errors while compiling %r with Cython"
-                                 % (cython_result.num_errors, source))
-    return target_file
-
-
-from numpy.distutils.command import build_src
-build_src.build_src.generate_a_pyrex_source = generate_a_pyrex_source
-# End snippet
-######
-
 VERSION = "3.3.dev0"
 
 if os.path.exists('MANIFEST'):
     os.remove('MANIFEST')
 
 
-def get_mercurial_changeset_id(target_dir):
-    """adapted from a script by Jason F. Harris, published at
+if check_for_openmp() is True:
+    omp_args = ['-fopenmp']
+else:
+    omp_args = None
 
-    http://jasonfharris.com/blog/2010/05/versioning-your-application-with-the-mercurial-changeset-hash/
 
-    """
-    import subprocess
-    import re
-    get_changeset = subprocess.Popen('hg identify -b -i',
-                                     stdout=subprocess.PIPE,
-                                     stderr=subprocess.PIPE,
-                                     shell=True)
+cython_extensions = [
+    Extension("yt.analysis_modules.photon_simulator.utils",
+              ["yt/analysis_modules/photon_simulator/utils.pyx"]),
+    Extension("yt.analysis_modules.ppv_cube.ppv_utils",
+              ["yt/analysis_modules/ppv_cube/ppv_utils.pyx"],
+              libraries=["m"]),
+    Extension("yt.geometry.grid_visitors",
+              ["yt/geometry/grid_visitors.pyx"],
+              include_dirs=["yt/utilities/lib"],
+              libraries=["m"],
+              depends=["yt/utilities/lib/fp_utils.pxd",
+                       "yt/geometry/grid_visitors.pxd"]),
+    Extension("yt.geometry.grid_container",
+              ["yt/geometry/grid_container.pyx"],
+              include_dirs=["yt/utilities/lib/"],
+              libraries=["m"],
+              depends=["yt/utilities/lib/fp_utils.pxd",
+                       "yt/geometry/grid_container.pxd",
+                       "yt/geometry/grid_visitors.pxd"]),
+    Extension("yt.geometry.oct_container",
+              ["yt/geometry/oct_container.pyx"],
+              include_dirs=["yt/utilities/lib"],
+              libraries=["m"],
+              depends=["yt/utilities/lib/fp_utils.pxd",
+                       "yt/geometry/oct_container.pxd",
+                       "yt/geometry/selection_routines.pxd"]),
+    Extension("yt.geometry.oct_visitors",
+              ["yt/geometry/oct_visitors.pyx"],
+              include_dirs=["yt/utilities/lib/"],
+              libraries=["m"],
+              depends=["yt/utilities/lib/fp_utils.pxd",
+                       "yt/geometry/oct_container.pxd",
+                       "yt/geometry/selection_routines.pxd"]),
+    Extension("yt.geometry.particle_oct_container",
+              ["yt/geometry/particle_oct_container.pyx"],
+              include_dirs=["yt/utilities/lib/"],
+              libraries=["m"],
+              depends=["yt/utilities/lib/fp_utils.pxd",
+                       "yt/geometry/oct_container.pxd",
+                       "yt/geometry/selection_routines.pxd"]),
+    Extension("yt.geometry.selection_routines",
+              ["yt/geometry/selection_routines.pyx"],
+              include_dirs=["yt/utilities/lib/"],
+              libraries=["m"],
+              depends=["yt/utilities/lib/fp_utils.pxd",
+                       "yt/utilities/lib/grid_traversal.pxd",
+                       "yt/geometry/oct_container.pxd",
+                       "yt/geometry/oct_visitors.pxd",
+                       "yt/geometry/grid_container.pxd",
+                       "yt/geometry/grid_visitors.pxd",
+                       "yt/geometry/selection_routines.pxd"]),
+    Extension("yt.geometry.particle_deposit",
+              ["yt/geometry/particle_deposit.pyx"],
+              include_dirs=["yt/utilities/lib/"],
+              libraries=["m"],
+              depends=["yt/utilities/lib/fp_utils.pxd",
+                       "yt/geometry/oct_container.pxd",
+                       "yt/geometry/selection_routines.pxd",
+                       "yt/geometry/particle_deposit.pxd"]),
+    Extension("yt.geometry.particle_smooth",
+              ["yt/geometry/particle_smooth.pyx"],
+              include_dirs=["yt/utilities/lib/"],
+              libraries=["m"],
+              depends=["yt/utilities/lib/fp_utils.pxd",
+                       "yt/geometry/oct_container.pxd",
+                       "yt/geometry/selection_routines.pxd",
+                       "yt/geometry/particle_deposit.pxd",
+                       "yt/geometry/particle_smooth.pxd"]),
+    Extension("yt.geometry.fake_octree",
+              ["yt/geometry/fake_octree.pyx"],
+              include_dirs=["yt/utilities/lib/"],
+              libraries=["m"],
+              depends=["yt/utilities/lib/fp_utils.pxd",
+                       "yt/geometry/oct_container.pxd",
+                       "yt/geometry/selection_routines.pxd"]),
+    Extension("yt.utilities.spatial.ckdtree",
+              ["yt/utilities/spatial/ckdtree.pyx"],
+              libraries=["m"]),
+    Extension("yt.utilities.lib.bitarray",
+              ["yt/utilities/lib/bitarray.pyx"],
+              libraries=["m"], depends=["yt/utilities/lib/bitarray.pxd"]),
+    Extension("yt.utilities.lib.contour_finding",
+              ["yt/utilities/lib/contour_finding.pyx"],
+              include_dirs=["yt/utilities/lib/",
+                            "yt/geometry/"],
+              libraries=["m"],
+              depends=["yt/utilities/lib/fp_utils.pxd",
+                       "yt/utilities/lib/amr_kdtools.pxd",
+                       "yt/utilities/lib/grid_traversal.pxd",
+                       "yt/utilities/lib/contour_finding.pxd",
+                       "yt/geometry/oct_container.pxd"]),
+    Extension("yt.utilities.lib.geometry_utils",
+              ["yt/utilities/lib/geometry_utils.pyx"],
+              extra_compile_args=omp_args,
+              extra_link_args=omp_args,
+              libraries=["m"], depends=["yt/utilities/lib/fp_utils.pxd"]),
+    Extension("yt.utilities.lib.marching_cubes",
+              ["yt/utilities/lib/marching_cubes.pyx",
+               "yt/utilities/lib/fixed_interpolator.c"],
+              include_dirs=["yt/utilities/lib/"],
+              libraries=["m"],
+              depends=["yt/utilities/lib/fp_utils.pxd",
+                       "yt/utilities/lib/fixed_interpolator.pxd",
+                       "yt/utilities/lib/fixed_interpolator.h",
+                       ]),
+    Extension("yt.utilities.lib.pixelization_routines",
+              ["yt/utilities/lib/pixelization_routines.pyx",
+               "yt/utilities/lib/pixelization_constants.c"],
+              include_dirs=["yt/utilities/lib/"],
+              language="c++",
+              libraries=["m"], depends=["yt/utilities/lib/fp_utils.pxd",
+                                        "yt/utilities/lib/pixelization_constants.h",
+                                        "yt/utilities/lib/element_mappings.pxd"]),
+    Extension("yt.utilities.lib.origami",
+              ["yt/utilities/lib/origami.pyx",
+               "yt/utilities/lib/origami_tags.c"],
+              include_dirs=["yt/utilities/lib/"],
+              depends=["yt/utilities/lib/origami_tags.h"]),
+    Extension("yt.utilities.lib.grid_traversal",
+              ["yt/utilities/lib/grid_traversal.pyx",
+               "yt/utilities/lib/fixed_interpolator.c",
+               "yt/utilities/lib/kdtree.c"],
+              include_dirs=["yt/utilities/lib/"],
+              libraries=["m"],
+              extra_compile_args=omp_args,
+              extra_link_args=omp_args,
+              depends=["yt/utilities/lib/fp_utils.pxd",
+                       "yt/utilities/lib/kdtree.h",
+                       "yt/utilities/lib/fixed_interpolator.h",
+                       "yt/utilities/lib/fixed_interpolator.pxd",
+                       "yt/utilities/lib/field_interpolation_tables.pxd"]),
+    Extension("yt.utilities.lib.element_mappings",
+              ["yt/utilities/lib/element_mappings.pyx"],
+              libraries=["m"], depends=["yt/utilities/lib/element_mappings.pxd"]),
+    Extension("yt.utilities.lib.alt_ray_tracers",
+              ["yt/utilities/lib/alt_ray_tracers.pyx"],
+              libraries=["m"]),
+]
 
-    if (get_changeset.stderr.read() != ""):
-        print("Error in obtaining current changeset of the Mercurial repository")
-        changeset = None
+lib_exts = [
+    "particle_mesh_operations", "depth_first_octree", "fortran_reader",
+    "interpolators", "misc_utilities", "basic_octree", "image_utilities",
+    "points_in_volume", "quad_tree", "ray_integrators", "mesh_utilities",
+    "amr_kdtools"
+]
+for ext_name in lib_exts:
+    cython_extensions.append(
+        Extension("yt.utilities.lib.{}".format(ext_name),
+                  ["yt/utilities/lib/{}.pyx".format(ext_name)],
+                  libraries=["m"], depends=["yt/utilities/lib/fp_utils.pxd"]))
 
-    changeset = get_changeset.stdout.read().strip().decode("UTF-8")
-    if (not re.search("^[0-9a-f]{12}", changeset)):
-        print("Current changeset of the Mercurial repository is malformed")
-        changeset = None
+lib_exts = ["write_array", "ragged_arrays", "line_integral_convolution"]
+for ext_name in lib_exts:
+    cython_extensions.append(
+        Extension("yt.utilities.lib.{}".format(ext_name),
+                  ["yt/utilities/lib/{}.pyx".format(ext_name)]))
 
-    return changeset
+extensions = [
+    Extension("yt.analysis_modules.halo_finding.fof.EnzoFOF",
+              ["yt/analysis_modules/halo_finding/fof/EnzoFOF.c",
+               "yt/analysis_modules/halo_finding/fof/kd.c"],
+              libraries=["m"]),
+    Extension("yt.analysis_modules.halo_finding.hop.EnzoHop",
+              glob.glob("yt/analysis_modules/halo_finding/hop/*.c")),
+    Extension("yt.frontends.artio._artio_caller",
+              ["yt/frontends/artio/_artio_caller.pyx"] +
+              glob.glob("yt/frontends/artio/artio_headers/*.c"),
+              include_dirs=["yt/frontends/artio/artio_headers/",
+                            "yt/geometry/",
+                            "yt/utilities/lib/"],
+              depends=glob.glob("yt/frontends/artio/artio_headers/*.c") +
+              ["yt/utilities/lib/fp_utils.pxd",
+               "yt/geometry/oct_container.pxd",
+               "yt/geometry/selection_routines.pxd",
+               "yt/geometry/particle_deposit.pxd"]),
+    Extension("yt.utilities.spatial._distance_wrap",
+              glob.glob("yt/utilities/spatial/src/*.c")),
+    Extension("yt.visualization._MPL",
+              ["yt/visualization/_MPL.c"],
+              libraries=["m"]),
+    Extension("yt.utilities.data_point_utilities",
+              ["yt/utilities/data_point_utilities.c"],
+              libraries=["m"]),
+]
 
+# EMBREE
+if check_for_pyembree() is not None:
+    embree_extensions = [
+        Extension("yt.utilities.lib.mesh_construction",
+                  ["yt/utilities/lib/mesh_construction.pyx"],
+                  depends=["yt/utilities/lib/mesh_construction.pxd"]),
+        Extension("yt.utilities.lib.mesh_traversal",
+                  ["yt/utilities/lib/mesh_traversal.pyx"],
+                  depends=["yt/utilities/lib/mesh_traversal.pxd",
+                           "yt/utilities/lib/grid_traversal.pxd"]),
+        Extension("yt.utilities.lib.mesh_samplers",
+                  ["yt/utilities/lib/mesh_samplers.pyx"],
+                  depends=["yt/utilities/lib/mesh_samplers.pxd",
+                           "yt/utilities/lib/element_mappings.pxd",
+                           "yt/utilities/lib/mesh_construction.pxd"]),
+        Extension("yt.utilities.lib.mesh_intersection",
+                  ["yt/utilities/lib/mesh_intersection.pyx"],
+                  depends=["yt/utilities/lib/mesh_intersection.pxd",
+                           "yt/utilities/lib/mesh_construction.pxd"]),
+    ]
 
-class my_build_src(build_src.build_src):
-    def run(self):
-        build_src.build_src.run(self)
+    embree_prefix = os.path.abspath(read_embree_location())
+    if _platform == "darwin":
+        embree_lib_name = "embree.2"
+    else:
+        embree_lib_name = "embree"
 
+    for ext in embree_extensions:
+        ext.include_dirs.append(os.path.join(embree_prefix, 'include'))
+        ext.library_dirs.append(os.path.join(embree_prefix, 'lib'))
+        ext.language = "c++"
+        ext.libraries += ["m", embree_lib_name]
 
-class my_build_py(build_py):
+    cython_extensions += embree_extensions
+
+# ROCKSTAR
+if os.path.exists("rockstar.cfg"):
+    try:
+        rd = open("rockstar.cfg").read().strip()
+    except IOError:
+        print("Reading Rockstar location from rockstar.cfg failed.")
+        print("Please place the base directory of your")
+        print("Rockstar install in rockstar.cfg and restart.")
+        print("(ex: \"echo '/path/to/Rockstar-0.99' > rockstar.cfg\" )")
+        sys.exit(1)
+
+    rockstar_extdir = "yt/analysis_modules/halo_finding/rockstar"
+    rockstar_extensions = [
+        Extension("yt.analysis_modules.halo_finding.rockstar.rockstar_interface",
+                  sources=[os.path.join(rockstar_extdir, "rockstar_interface.pyx")]),
+        Extension("yt.analysis_modules.halo_finding.rockstar.rockstar_groupies",
+                  sources=[os.path.join(rockstar_extdir, "rockstar_groupies.pyx")])
+    ]
+    for ext in rockstar_extensions:
+        ext.library_dirs.append(rd)
+        ext.libraries.append("rockstar")
+        ext.define_macros.append(("THREADSAFE", ""))
+        ext.include_dirs += [rd,
+                             os.path.join(rd, "io"), os.path.join(rd, "util")]
+    extensions += rockstar_extensions
+
+if os.environ.get("GPERFTOOLS", "no").upper() != "NO":
+    gpd = os.environ["GPERFTOOLS"]
+    idir = os.path.join(gpd, "include")
+    ldir = os.path.join(gpd, "lib")
+    print(("INCLUDE AND LIB DIRS", idir, ldir))
+    cython_extensions.append(
+        Extension("yt.utilities.lib.perftools_wrap",
+                  ["yt/utilities/lib/perftools_wrap.pyx"],
+                  libraries=["profiler"],
+                  library_dirs=[ldir],
+                  include_dirs=[idir]))
+
+class build_py(_build_py):
     def run(self):
         # honor the --dry-run flag
         if not self.dry_run:
@@ -148,68 +309,74 @@
             self.mkpath(target_dir)
             with open(os.path.join(target_dir, '__hg_version__.py'), 'w') as fobj:
                 fobj.write("hg_version = '%s'\n" % changeset)
+        _build_py.run(self)
 
-        build_py.run(self)
+class build_ext(_build_ext):
+    # subclass setuptools extension builder to avoid importing numpy
+    # at top level in setup.py. See http://stackoverflow.com/a/21621689/1382869
+    def finalize_options(self):
+        _build_ext.finalize_options(self)
+        # Prevent numpy from thinking it is still in its setup process
+        # see http://stackoverflow.com/a/21621493/1382869
+        __builtins__.__NUMPY_SETUP__ = False
+        import numpy
+        self.include_dirs.append(numpy.get_include())
 
+setup(
+    name="yt",
+    version=VERSION,
+    description="An analysis and visualization toolkit for Astrophysical "
+                + "simulations, focusing on Adaptive Mesh Refinement data "
+                  "from Enzo, Orion, FLASH, and others.",
+    classifiers=["Development Status :: 5 - Production/Stable",
+                 "Environment :: Console",
+                 "Intended Audience :: Science/Research",
+                 "License :: OSI Approved :: BSD License",
+                 "Operating System :: MacOS :: MacOS X",
+                 "Operating System :: POSIX :: AIX",
+                 "Operating System :: POSIX :: Linux",
+                 "Programming Language :: C",
+                 "Programming Language :: Python",
+                 "Topic :: Scientific/Engineering :: Astronomy",
+                 "Topic :: Scientific/Engineering :: Physics",
+                 "Topic :: Scientific/Engineering :: Visualization"],
+    keywords='astronomy astrophysics visualization ' +
+    'amr adaptivemeshrefinement',
+    entry_points={'console_scripts': [
+        'yt = yt.utilities.command_line:run_main',
+    ],
+        'nose.plugins.0.10': [
+            'answer-testing = yt.utilities.answer_testing.framework:AnswerTesting'
+    ]
+    },
+    packages=find_packages(),
+    setup_requires=[
+        'numpy',
+        'cython>=0.22'
+    ],
+    install_requires=[
+        # 'matplotlib',  # messes up nosetests will be fixed in future PRs
+        'sympy',
+        'numpy',
+        'IPython',
+    ],
+    cmdclass={'build_ext': build_ext, 'build_py': build_py},
+    author="The yt project",
+    author_email="yt-dev at lists.spacepope.org",
+    url="http://yt-project.org/",
+    license="BSD",
+    zip_safe=False,
+    scripts=["scripts/iyt"],
+    data_files=MAPSERVER_FILES,
+    ext_modules=cython_extensions + extensions
+)
 
-def configuration(parent_package='', top_path=None):
-    from numpy.distutils.misc_util import Configuration
-
-    config = Configuration(None, parent_package, top_path)
-    config.set_options(ignore_setup_xxx_py=True,
-                       assume_default_configuration=True,
-                       delegate_options_to_subpackages=True,
-                       quiet=True)
-
-    config.make_config_py()
-    # config.make_svn_version_py()
-    config.add_subpackage('yt', 'yt')
-    config.add_scripts("scripts/iyt")
-
-    return config
-
-
-def setup_package():
-
-    from numpy.distutils.core import setup
-
-    setup(
-        name="yt",
-        version=VERSION,
-        description="An analysis and visualization toolkit for Astrophysical "
-                    + "simulations, focusing on Adaptive Mesh Refinement data "
-                      "from Enzo, Orion, FLASH, and others.",
-        classifiers=["Development Status :: 5 - Production/Stable",
-                     "Environment :: Console",
-                     "Intended Audience :: Science/Research",
-                     "License :: OSI Approved :: BSD License",
-                     "Operating System :: MacOS :: MacOS X",
-                     "Operating System :: POSIX :: AIX",
-                     "Operating System :: POSIX :: Linux",
-                     "Programming Language :: C",
-                     "Programming Language :: Python",
-                     "Topic :: Scientific/Engineering :: Astronomy",
-                     "Topic :: Scientific/Engineering :: Physics",
-                     "Topic :: Scientific/Engineering :: Visualization"],
-        keywords='astronomy astrophysics visualization ' +
-        'amr adaptivemeshrefinement',
-        entry_points={'console_scripts': [
-        'yt = yt.utilities.command_line:run_main',
-        ],
-            'nose.plugins.0.10': [
-                'answer-testing = yt.utilities.answer_testing.framework:AnswerTesting'
-            ]
-        },
-        author="The yt project",
-        author_email="yt-dev at lists.spacepope.org",
-        url="http://yt-project.org/",
-        license="BSD",
-        configuration=configuration,
-        zip_safe=False,
-        data_files=MAPSERVER_FILES,
-        cmdclass={'build_py': my_build_py, 'build_src': my_build_src},
-    )
-    return
-
-if __name__ == '__main__':
-    setup_package()
+# This info about 'ckdtree' should be incorporated somehow...
+#    setup(maintainer="SciPy Developers",
+#          author="Anne Archibald",
+#          maintainer_email="scipy-dev at scipy.org",
+#          description="Spatial algorithms and data structures",
+#          url="http://www.scipy.org",
+#          license="SciPy License (BSD Style)",
+#          **configuration(top_path='').todict()
+#   )

diff -r 41a14ee1c248f09c88debe90b57c43fc769a407f -r f7c36e4a075f699037baa4fcee0b7450df85a8b4 setupext.py
--- /dev/null
+++ b/setupext.py
@@ -0,0 +1,100 @@
+import os
+from pkg_resources import resource_filename
+import shutil
+import subprocess
+import sys
+import tempfile
+
+def check_for_openmp():
+    """Returns True if local setup supports OpenMP, False otherwise"""
+
+    # See https://bugs.python.org/issue25150
+    if sys.version_info[:3] == (3, 5, 0) or os.name == 'nt':
+        return False
+
+    # Create a temporary directory
+    tmpdir = tempfile.mkdtemp()
+    curdir = os.getcwd()
+    exit_code = 1
+
+    try:
+        os.chdir(tmpdir)
+
+        # Get compiler invocation
+        compiler = os.getenv('CC', 'cc')
+        compiler = compiler.split(' ')
+
+        # Attempt to compile a test script.
+        # See http://openmp.org/wp/openmp-compilers/
+        filename = r'test.c'
+        file = open(filename, 'wt', 1)
+        file.write(
+            "#include <omp.h>\n"
+            "#include <stdio.h>\n"
+            "int main() {\n"
+            "#pragma omp parallel\n"
+            "printf(\"Hello from thread %d, nthreads %d\\n\", omp_get_thread_num(), omp_get_num_threads());\n"
+            "}"
+        )
+        file.flush()
+        with open(os.devnull, 'w') as fnull:
+            exit_code = subprocess.call(compiler + ['-fopenmp', filename],
+                                        stdout=fnull, stderr=fnull)
+
+        # Clean up
+        file.close()
+    except OSError:
+        return False
+    finally:
+        os.chdir(curdir)
+        shutil.rmtree(tmpdir)
+
+    return exit_code == 0
+
+
+def check_for_pyembree():
+    try:
+        fn = resource_filename("pyembree", "rtcore.pxd")
+    except ImportError:
+        return None
+    return os.path.dirname(fn)
+
+
+def read_embree_location():
+    '''
+
+    Attempts to locate the embree installation. First, we check for an
+    EMBREE_DIR environment variable. If one is not defined, we look for
+    an embree.cfg file in the root yt source directory. Finally, if that
+    is not present, we default to /usr/local. If embree is installed in a
+    non-standard location and none of the above are set, the compile will
+    not succeed. This only gets called if check_for_pyembree() returns
+    something other than None.
+
+    '''
+
+    rd = os.environ.get('EMBREE_DIR')
+    if rd is not None:
+        return rd
+    print("EMBREE_DIR not set. Attempting to read embree.cfg")
+    try:
+        rd = open("embree.cfg").read().strip()
+        return rd
+    except IOError:
+        print("Reading Embree location from embree.cfg failed.")
+        print("If compilation fails, please place the base directory")
+        print("of your Embree install in embree.cfg and restart.")
+        return '/usr/local'
+
+
+def get_mercurial_changeset_id(target_dir):
+    '''
+    Returns changeset and branch using hglib
+    '''
+    try:
+        import hglib
+    except ImportError:
+        return None
+    with hglib.open(target_dir) as repo:
+        changeset = repo.identify(id=True, branch=True).strip().decode('utf8')
+    return changeset

diff -r 41a14ee1c248f09c88debe90b57c43fc769a407f -r f7c36e4a075f699037baa4fcee0b7450df85a8b4 yt/analysis_modules/cosmological_observation/light_cone/setup.py
--- a/yt/analysis_modules/cosmological_observation/light_cone/setup.py
+++ /dev/null
@@ -1,9 +0,0 @@
-#!/usr/bin/env python
-
-
-def configuration(parent_package='', top_path=None):
-    from numpy.distutils.misc_util import Configuration
-    config = Configuration('light_cone', parent_package, top_path)
-    config.make_config_py()  # installs __config__.py
-    #config.make_svn_version_py()
-    return config

diff -r 41a14ee1c248f09c88debe90b57c43fc769a407f -r f7c36e4a075f699037baa4fcee0b7450df85a8b4 yt/analysis_modules/cosmological_observation/light_ray/setup.py
--- a/yt/analysis_modules/cosmological_observation/light_ray/setup.py
+++ /dev/null
@@ -1,9 +0,0 @@
-#!/usr/bin/env python
-
-
-def configuration(parent_package='', top_path=None):
-    from numpy.distutils.misc_util import Configuration
-    config = Configuration('light_ray', parent_package, top_path)
-    config.make_config_py()  # installs __config__.py
-    #config.make_svn_version_py()
-    return config

diff -r 41a14ee1c248f09c88debe90b57c43fc769a407f -r f7c36e4a075f699037baa4fcee0b7450df85a8b4 yt/analysis_modules/cosmological_observation/setup.py
--- a/yt/analysis_modules/cosmological_observation/setup.py
+++ /dev/null
@@ -1,11 +0,0 @@
-#!/usr/bin/env python
-
-
-def configuration(parent_package='', top_path=None):
-    from numpy.distutils.misc_util import Configuration
-    config = Configuration('cosmological_observation', parent_package, top_path)
-    config.make_config_py()  # installs __config__.py
-    #config.make_svn_version_py()
-    config.add_subpackage("light_cone")
-    config.add_subpackage("light_ray")
-    return config

diff -r 41a14ee1c248f09c88debe90b57c43fc769a407f -r f7c36e4a075f699037baa4fcee0b7450df85a8b4 yt/analysis_modules/halo_finding/fof/setup.py
--- a/yt/analysis_modules/halo_finding/fof/setup.py
+++ /dev/null
@@ -1,12 +0,0 @@
-#!/usr/bin/env python
-
-
-def configuration(parent_package='', top_path=None):
-    from numpy.distutils.misc_util import Configuration
-    config = Configuration('fof', parent_package, top_path)
-    config.add_extension("EnzoFOF", sources=["EnzoFOF.c",
-                                     "kd.c"],
-                                    libraries=["m"])
-    config.make_config_py()  # installs __config__.py
-    #config.make_svn_version_py()
-    return config

diff -r 41a14ee1c248f09c88debe90b57c43fc769a407f -r f7c36e4a075f699037baa4fcee0b7450df85a8b4 yt/analysis_modules/halo_finding/hop/setup.py
--- a/yt/analysis_modules/halo_finding/hop/setup.py
+++ /dev/null
@@ -1,15 +0,0 @@
-#!/usr/bin/env python
-
-
-def configuration(parent_package='', top_path=None):
-    from numpy.distutils.misc_util import Configuration
-    config = Configuration('hop', parent_package, top_path)
-    config.add_extension("EnzoHop", sources=["EnzoHop.c",
-                                     "hop_hop.c",
-                                     "hop_kd.c",
-                                     "hop_regroup.c",
-                                     "hop_slice.c",
-                                     "hop_smooth.c"])
-    config.make_config_py()  # installs __config__.py
-    #config.make_svn_version_py()
-    return config

diff -r 41a14ee1c248f09c88debe90b57c43fc769a407f -r f7c36e4a075f699037baa4fcee0b7450df85a8b4 yt/analysis_modules/halo_finding/rockstar/setup.py
--- a/yt/analysis_modules/halo_finding/rockstar/setup.py
+++ /dev/null
@@ -1,38 +0,0 @@
-#!/usr/bin/env python
-from __future__ import print_function
-import os.path
-import sys
-
-def configuration(parent_package='',top_path=None):
-    from numpy.distutils.misc_util import Configuration
-    config = Configuration('rockstar',parent_package,top_path)
-    config.make_config_py() # installs __config__.py
-    #config.make_svn_version_py()
-    try:
-        rd = open("rockstar.cfg").read().strip()
-    except IOError:
-        print("Reading Rockstar location from rockstar.cfg failed.")
-        print("Please place the base directory of your")
-        print("Rockstar install in rockstar.cfg and restart.")
-        print("(ex: \"echo '/path/to/Rockstar-0.99' > rockstar.cfg\" )")
-        sys.exit(1)
-    config.add_extension("rockstar_interface",
-                         "yt/analysis_modules/halo_finding/rockstar/rockstar_interface.pyx",
-                         library_dirs=[rd],
-                         libraries=["rockstar"],
-                         #define_macros = [("THREADSAFE", "__thread")],
-                         define_macros = [("THREADSAFE", "")],
-                         include_dirs=[rd,
-                                       os.path.join(rd, "io"),
-                                       os.path.join(rd, "util")])
-    config.add_extension("rockstar_groupies",
-                         "yt/analysis_modules/halo_finding/rockstar/rockstar_groupies.pyx",
-                         library_dirs=[rd],
-                         libraries=["rockstar"],
-                         #define_macros = [("THREADSAFE", "__thread")],
-                         define_macros = [("THREADSAFE", "")],
-                         include_dirs=[rd,
-                                       os.path.join(rd, "io"),
-                                       os.path.join(rd, "util")])
-    return config
-

diff -r 41a14ee1c248f09c88debe90b57c43fc769a407f -r f7c36e4a075f699037baa4fcee0b7450df85a8b4 yt/analysis_modules/halo_finding/setup.py
--- a/yt/analysis_modules/halo_finding/setup.py
+++ /dev/null
@@ -1,13 +0,0 @@
-#!/usr/bin/env python
-import os.path
-
-
-def configuration(parent_package='', top_path=None):
-    from numpy.distutils.misc_util import Configuration
-    config = Configuration('halo_finding', parent_package, top_path)
-    config.add_subpackage("fof")
-    config.add_subpackage("hop")
-    if os.path.exists("rockstar.cfg"):
-        config.add_subpackage("rockstar")
-    config.make_config_py()  # installs __config__.py
-    return config

diff -r 41a14ee1c248f09c88debe90b57c43fc769a407f -r f7c36e4a075f699037baa4fcee0b7450df85a8b4 yt/analysis_modules/halo_mass_function/setup.py
--- a/yt/analysis_modules/halo_mass_function/setup.py
+++ /dev/null
@@ -1,9 +0,0 @@
-#!/usr/bin/env python
-
-
-def configuration(parent_package='', top_path=None):
-    from numpy.distutils.misc_util import Configuration
-    config = Configuration('halo_mass_function', parent_package, top_path)
-    config.make_config_py()  # installs __config__.py
-    #config.make_svn_version_py()
-    return config

diff -r 41a14ee1c248f09c88debe90b57c43fc769a407f -r f7c36e4a075f699037baa4fcee0b7450df85a8b4 yt/analysis_modules/level_sets/setup.py
--- a/yt/analysis_modules/level_sets/setup.py
+++ /dev/null
@@ -1,9 +0,0 @@
-#!/usr/bin/env python
-
-
-def configuration(parent_package='', top_path=None):
-    from numpy.distutils.misc_util import Configuration
-    config = Configuration('level_sets', parent_package, top_path)
-    config.make_config_py()  # installs __config__.py
-    #config.make_svn_version_py()
-    return config

diff -r 41a14ee1c248f09c88debe90b57c43fc769a407f -r f7c36e4a075f699037baa4fcee0b7450df85a8b4 yt/analysis_modules/particle_trajectories/setup.py
--- a/yt/analysis_modules/particle_trajectories/setup.py
+++ /dev/null
@@ -1,10 +0,0 @@
-#!/usr/bin/env python
-
-
-def configuration(parent_package='', top_path=None):
-    from numpy.distutils.misc_util import Configuration
-    config = Configuration('particle_trajectories', parent_package, top_path)
-    #config.add_subpackage("tests")
-    config.make_config_py()  # installs __config__.py
-    #config.make_svn_version_py()
-    return config

diff -r 41a14ee1c248f09c88debe90b57c43fc769a407f -r f7c36e4a075f699037baa4fcee0b7450df85a8b4 yt/analysis_modules/photon_simulator/setup.py
--- a/yt/analysis_modules/photon_simulator/setup.py
+++ /dev/null
@@ -1,12 +0,0 @@
-#!/usr/bin/env python
-
-
-def configuration(parent_package='', top_path=None):
-    from numpy.distutils.misc_util import Configuration
-    config = Configuration('photon_simulator', parent_package, top_path)
-    config.add_extension("utils",
-                         ["yt/analysis_modules/photon_simulator/utils.pyx"])
-    config.add_subpackage("tests")
-    config.make_config_py()  # installs __config__.py
-    #config.make_svn_version_py()
-    return config

diff -r 41a14ee1c248f09c88debe90b57c43fc769a407f -r f7c36e4a075f699037baa4fcee0b7450df85a8b4 yt/analysis_modules/ppv_cube/setup.py
--- a/yt/analysis_modules/ppv_cube/setup.py
+++ /dev/null
@@ -1,13 +0,0 @@
-#!/usr/bin/env python
-
-
-def configuration(parent_package='', top_path=None):
-    from numpy.distutils.misc_util import Configuration
-    config = Configuration('ppv_cube', parent_package, top_path)
-    config.add_extension("ppv_utils", 
-                         ["yt/analysis_modules/ppv_cube/ppv_utils.pyx"],
-                         libraries=["m"])
-    config.add_subpackage("tests")
-    config.make_config_py()  # installs __config__.py
-    #config.make_svn_version_py()
-    return config

diff -r 41a14ee1c248f09c88debe90b57c43fc769a407f -r f7c36e4a075f699037baa4fcee0b7450df85a8b4 yt/analysis_modules/setup.py
--- a/yt/analysis_modules/setup.py
+++ /dev/null
@@ -1,25 +0,0 @@
-#!/usr/bin/env python
-
-
-def configuration(parent_package='', top_path=None):
-    from numpy.distutils.misc_util import Configuration
-    config = Configuration('analysis_modules', parent_package, top_path)
-    config.make_config_py()  # installs __config__.py
-    config.add_subpackage("absorption_spectrum")
-    config.add_subpackage("cosmological_observation")
-    config.add_subpackage("halo_analysis")
-    config.add_subpackage("halo_finding")
-    config.add_subpackage("halo_mass_function")
-    config.add_subpackage("level_sets")
-    config.add_subpackage("particle_trajectories")
-    config.add_subpackage("photon_simulator")
-    config.add_subpackage("spectral_integrator")
-    config.add_subpackage("star_analysis")
-    config.add_subpackage("two_point_functions")
-    config.add_subpackage("radmc3d_export")
-    config.add_subpackage("sunrise_export")
-    config.add_subpackage("sunyaev_zeldovich")
-    config.add_subpackage("particle_trajectories")
-    config.add_subpackage("photon_simulator")
-    config.add_subpackage("ppv_cube")
-    return config

diff -r 41a14ee1c248f09c88debe90b57c43fc769a407f -r f7c36e4a075f699037baa4fcee0b7450df85a8b4 yt/analysis_modules/spectral_integrator/setup.py
--- a/yt/analysis_modules/spectral_integrator/setup.py
+++ /dev/null
@@ -1,9 +0,0 @@
-#!/usr/bin/env python
-
-
-def configuration(parent_package='', top_path=None):
-    from numpy.distutils.misc_util import Configuration
-    config = Configuration('spectral_integrator', parent_package, top_path)
-    config.make_config_py()  # installs __config__.py
-    #config.make_svn_version_py()
-    return config

diff -r 41a14ee1c248f09c88debe90b57c43fc769a407f -r f7c36e4a075f699037baa4fcee0b7450df85a8b4 yt/analysis_modules/star_analysis/setup.py
--- a/yt/analysis_modules/star_analysis/setup.py
+++ /dev/null
@@ -1,9 +0,0 @@
-#!/usr/bin/env python
-
-
-def configuration(parent_package='', top_path=None):
-    from numpy.distutils.misc_util import Configuration
-    config = Configuration('star_analysis', parent_package, top_path)
-    config.make_config_py()  # installs __config__.py
-    #config.make_svn_version_py()
-    return config

diff -r 41a14ee1c248f09c88debe90b57c43fc769a407f -r f7c36e4a075f699037baa4fcee0b7450df85a8b4 yt/analysis_modules/sunyaev_zeldovich/setup.py
--- a/yt/analysis_modules/sunyaev_zeldovich/setup.py
+++ /dev/null
@@ -1,10 +0,0 @@
-#!/usr/bin/env python
-
-
-def configuration(parent_package='', top_path=None):
-    from numpy.distutils.misc_util import Configuration
-    config = Configuration('sunyaev_zeldovich', parent_package, top_path)
-    config.add_subpackage("tests")
-    config.make_config_py()  # installs __config__.py
-    #config.make_svn_version_py()
-    return config

diff -r 41a14ee1c248f09c88debe90b57c43fc769a407f -r f7c36e4a075f699037baa4fcee0b7450df85a8b4 yt/analysis_modules/two_point_functions/setup.py
--- a/yt/analysis_modules/two_point_functions/setup.py
+++ /dev/null
@@ -1,9 +0,0 @@
-#!/usr/bin/env python
-
-
-def configuration(parent_package='', top_path=None):
-    from numpy.distutils.misc_util import Configuration
-    config = Configuration('two_point_functions', parent_package, top_path)
-    config.make_config_py()  # installs __config__.py
-    #config.make_svn_version_py()
-    return config

diff -r 41a14ee1c248f09c88debe90b57c43fc769a407f -r f7c36e4a075f699037baa4fcee0b7450df85a8b4 yt/data_objects/setup.py
--- a/yt/data_objects/setup.py
+++ /dev/null
@@ -1,10 +0,0 @@
-#!/usr/bin/env python
-
-
-def configuration(parent_package='', top_path=None):
-    from numpy.distutils.misc_util import Configuration
-    config = Configuration('data_objects', parent_package, top_path)
-    config.add_subpackage("tests")
-    config.make_config_py()  # installs __config__.py
-    #config.make_svn_version_py()
-    return config

diff -r 41a14ee1c248f09c88debe90b57c43fc769a407f -r f7c36e4a075f699037baa4fcee0b7450df85a8b4 yt/extern/setup.py
--- a/yt/extern/setup.py
+++ /dev/null
@@ -1,16 +0,0 @@
-#!/usr/bin/env python
-#----------------------------------------------------------------------------
-# Copyright (c) 2013, yt Development Team.
-#
-# Distributed under the terms of the Modified BSD License.
-#
-# The full license is in the file COPYING.txt, distributed with this software.
-#-----------------------------------------------------------------------------
-
-
-def configuration(parent_package='', top_path=None):
-    from numpy.distutils.misc_util import Configuration
-    config = Configuration('extern', parent_package, top_path)
-    config.add_subpackage("tqdm")
-    config.make_config_py()
-    return config

diff -r 41a14ee1c248f09c88debe90b57c43fc769a407f -r f7c36e4a075f699037baa4fcee0b7450df85a8b4 yt/fields/setup.py
--- a/yt/fields/setup.py
+++ /dev/null
@@ -1,10 +0,0 @@
-#!/usr/bin/env python
-
-
-def configuration(parent_package='', top_path=None):
-    from numpy.distutils.misc_util import Configuration
-    config = Configuration('fields', parent_package, top_path)
-    config.add_subpackage("tests")
-    config.make_config_py()  # installs __config__.py
-    #config.make_svn_version_py()
-    return config

diff -r 41a14ee1c248f09c88debe90b57c43fc769a407f -r f7c36e4a075f699037baa4fcee0b7450df85a8b4 yt/frontends/_skeleton/setup.py
--- a/yt/frontends/_skeleton/setup.py
+++ /dev/null
@@ -1,9 +0,0 @@
-#!/usr/bin/env python
-
-
-def configuration(parent_package='', top_path=None):
-    from numpy.distutils.misc_util import Configuration
-    config = Configuration('skeleton', parent_package, top_path)
-    config.make_config_py()  # installs __config__.py
-    #config.make_svn_version_py()
-    return config

diff -r 41a14ee1c248f09c88debe90b57c43fc769a407f -r f7c36e4a075f699037baa4fcee0b7450df85a8b4 yt/frontends/art/setup.py
--- a/yt/frontends/art/setup.py
+++ /dev/null
@@ -1,9 +0,0 @@
-#!/usr/bin/env python
-
-
-def configuration(parent_package='',top_path=None):
-    from numpy.distutils.misc_util import Configuration
-    config = Configuration('art',parent_package,top_path)
-    config.make_config_py() # installs __config__.py
-    #config.make_svn_version_py()
-    return config

diff -r 41a14ee1c248f09c88debe90b57c43fc769a407f -r f7c36e4a075f699037baa4fcee0b7450df85a8b4 yt/frontends/artio/setup.py
--- a/yt/frontends/artio/setup.py
+++ /dev/null
@@ -1,22 +0,0 @@
-#!/usr/bin/env python
-import glob
-
-
-def configuration(parent_package='', top_path=None):
-    from numpy.distutils.misc_util import Configuration
-    artio_sources = glob.glob("yt/frontends/artio/artio_headers/*.c")
-    config = Configuration('artio', parent_package, top_path)
-    config.add_extension("_artio_caller",
-                         ["yt/frontends/artio/_artio_caller.pyx"] +
-                         artio_sources,
-                         include_dirs=["yt/frontends/artio/artio_headers/",
-                                       "yt/geometry/",
-                                       "yt/utilities/lib/"],
-                         depends=artio_sources + 
-                                 ["yt/utilities/lib/fp_utils.pxd",
-                                  "yt/geometry/oct_container.pxd",
-                                  "yt/geometry/selection_routines.pxd",
-                                  "yt/geometry/particle_deposit.pxd"])
-    config.make_config_py()  # installs __config__.py
-    #config.make_svn_version_py()
-    return config

diff -r 41a14ee1c248f09c88debe90b57c43fc769a407f -r f7c36e4a075f699037baa4fcee0b7450df85a8b4 yt/frontends/athena/setup.py
--- a/yt/frontends/athena/setup.py
+++ /dev/null
@@ -1,9 +0,0 @@
-#!/usr/bin/env python
-
-
-def configuration(parent_package='', top_path=None):
-    from numpy.distutils.misc_util import Configuration
-    config = Configuration('athena', parent_package, top_path)
-    config.make_config_py()  # installs __config__.py
-    #config.make_svn_version_py()
-    return config

diff -r 41a14ee1c248f09c88debe90b57c43fc769a407f -r f7c36e4a075f699037baa4fcee0b7450df85a8b4 yt/frontends/boxlib/setup.py
--- a/yt/frontends/boxlib/setup.py
+++ /dev/null
@@ -1,9 +0,0 @@
-#!/usr/bin/env python
-
-
-def configuration(parent_package='', top_path=None):
-    from numpy.distutils.misc_util import Configuration
-    config = Configuration('boxlib', parent_package, top_path)
-    config.make_config_py()  # installs __config__.py
-    #config.make_svn_version_py()
-    return config

diff -r 41a14ee1c248f09c88debe90b57c43fc769a407f -r f7c36e4a075f699037baa4fcee0b7450df85a8b4 yt/frontends/chombo/setup.py
--- a/yt/frontends/chombo/setup.py
+++ /dev/null
@@ -1,9 +0,0 @@
-#!/usr/bin/env python
-
-
-def configuration(parent_package='', top_path=None):
-    from numpy.distutils.misc_util import Configuration
-    config = Configuration('chombo', parent_package, top_path)
-    config.make_config_py()  # installs __config__.py
-    #config.make_svn_version_py()
-    return config

diff -r 41a14ee1c248f09c88debe90b57c43fc769a407f -r f7c36e4a075f699037baa4fcee0b7450df85a8b4 yt/frontends/eagle/setup.py
--- a/yt/frontends/eagle/setup.py
+++ /dev/null
@@ -1,9 +0,0 @@
-#!/usr/bin/env python
-
-
-def configuration(parent_package='', top_path=None):
-    from numpy.distutils.misc_util import Configuration
-    config = Configuration('eagle', parent_package, top_path)
-    config.make_config_py()  # installs __config__.py
-    #config.make_svn_version_py()
-    return config

diff -r 41a14ee1c248f09c88debe90b57c43fc769a407f -r f7c36e4a075f699037baa4fcee0b7450df85a8b4 yt/frontends/enzo/setup.py
--- a/yt/frontends/enzo/setup.py
+++ /dev/null
@@ -1,9 +0,0 @@
-#!/usr/bin/env python
-
-
-def configuration(parent_package='', top_path=None):
-    from numpy.distutils.misc_util import Configuration
-    config = Configuration('enzo', parent_package, top_path)
-    config.make_config_py()  # installs __config__.py
-    #config.make_svn_version_py()
-    return config

diff -r 41a14ee1c248f09c88debe90b57c43fc769a407f -r f7c36e4a075f699037baa4fcee0b7450df85a8b4 yt/frontends/exodus_ii/setup.py
--- a/yt/frontends/exodus_ii/setup.py
+++ /dev/null
@@ -1,9 +0,0 @@
-#!/usr/bin/env python
-
-
-def configuration(parent_package='', top_path=None):
-    from numpy.distutils.misc_util import Configuration
-    config = Configuration('exodus_ii', parent_package, top_path)
-    config.make_config_py()  # installs __config__.py
-    #config.make_svn_version_py()
-    return config

diff -r 41a14ee1c248f09c88debe90b57c43fc769a407f -r f7c36e4a075f699037baa4fcee0b7450df85a8b4 yt/frontends/fits/setup.py
--- a/yt/frontends/fits/setup.py
+++ /dev/null
@@ -1,9 +0,0 @@
-#!/usr/bin/env python
-
-
-def configuration(parent_package='', top_path=None):
-    from numpy.distutils.misc_util import Configuration
-    config = Configuration('fits', parent_package, top_path)
-    config.make_config_py()  # installs __config__.py
-    #config.make_svn_version_py()
-    return config

diff -r 41a14ee1c248f09c88debe90b57c43fc769a407f -r f7c36e4a075f699037baa4fcee0b7450df85a8b4 yt/frontends/flash/setup.py
--- a/yt/frontends/flash/setup.py
+++ /dev/null
@@ -1,9 +0,0 @@
-#!/usr/bin/env python
-
-
-def configuration(parent_package='', top_path=None):
-    from numpy.distutils.misc_util import Configuration
-    config = Configuration('flash', parent_package, top_path)
-    config.make_config_py()  # installs __config__.py
-    #config.make_svn_version_py()
-    return config

diff -r 41a14ee1c248f09c88debe90b57c43fc769a407f -r f7c36e4a075f699037baa4fcee0b7450df85a8b4 yt/frontends/gadget/setup.py
--- a/yt/frontends/gadget/setup.py
+++ /dev/null
@@ -1,9 +0,0 @@
-#!/usr/bin/env python
-
-
-def configuration(parent_package='', top_path=None):
-    from numpy.distutils.misc_util import Configuration
-    config = Configuration('gadget', parent_package, top_path)
-    config.make_config_py()  # installs __config__.py
-    #config.make_svn_version_py()
-    return config

diff -r 41a14ee1c248f09c88debe90b57c43fc769a407f -r f7c36e4a075f699037baa4fcee0b7450df85a8b4 yt/frontends/gadget_fof/setup.py
--- a/yt/frontends/gadget_fof/setup.py
+++ /dev/null
@@ -1,9 +0,0 @@
-#!/usr/bin/env python
-
-
-def configuration(parent_package='', top_path=None):
-    from numpy.distutils.misc_util import Configuration
-    config = Configuration('gadget_fof', parent_package, top_path)
-    config.make_config_py()  # installs __config__.py
-    #config.make_svn_version_py()
-    return config

diff -r 41a14ee1c248f09c88debe90b57c43fc769a407f -r f7c36e4a075f699037baa4fcee0b7450df85a8b4 yt/frontends/gdf/setup.py
--- a/yt/frontends/gdf/setup.py
+++ /dev/null
@@ -1,9 +0,0 @@
-#!/usr/bin/env python
-
-
-def configuration(parent_package='', top_path=None):
-    from numpy.distutils.misc_util import Configuration
-    config = Configuration('gdf', parent_package, top_path)
-    config.make_config_py()  # installs __config__.py
-    #config.make_svn_version_py()
-    return config

diff -r 41a14ee1c248f09c88debe90b57c43fc769a407f -r f7c36e4a075f699037baa4fcee0b7450df85a8b4 yt/frontends/halo_catalog/setup.py
--- a/yt/frontends/halo_catalog/setup.py
+++ /dev/null
@@ -1,9 +0,0 @@
-#!/usr/bin/env python
-
-
-def configuration(parent_package='', top_path=None):
-    from numpy.distutils.misc_util import Configuration
-    config = Configuration('halo_catalog', parent_package, top_path)
-    config.make_config_py()  # installs __config__.py
-    #config.make_svn_version_py()
-    return config

diff -r 41a14ee1c248f09c88debe90b57c43fc769a407f -r f7c36e4a075f699037baa4fcee0b7450df85a8b4 yt/frontends/http_stream/setup.py
--- a/yt/frontends/http_stream/setup.py
+++ /dev/null
@@ -1,9 +0,0 @@
-#!/usr/bin/env python
-
-
-def configuration(parent_package='', top_path=None):
-    from numpy.distutils.misc_util import Configuration
-    config = Configuration('http_stream', parent_package, top_path)
-    config.make_config_py()  # installs __config__.py
-    #config.make_svn_version_py()
-    return config

diff -r 41a14ee1c248f09c88debe90b57c43fc769a407f -r f7c36e4a075f699037baa4fcee0b7450df85a8b4 yt/frontends/moab/setup.py
--- a/yt/frontends/moab/setup.py
+++ /dev/null
@@ -1,9 +0,0 @@
-#!/usr/bin/env python
-
-
-def configuration(parent_package='', top_path=None):
-    from numpy.distutils.misc_util import Configuration
-    config = Configuration('moab', parent_package, top_path)
-    config.make_config_py()  # installs __config__.py
-    #config.make_svn_version_py()
-    return config

diff -r 41a14ee1c248f09c88debe90b57c43fc769a407f -r f7c36e4a075f699037baa4fcee0b7450df85a8b4 yt/frontends/owls/setup.py
--- a/yt/frontends/owls/setup.py
+++ /dev/null
@@ -1,9 +0,0 @@
-#!/usr/bin/env python
-
-
-def configuration(parent_package='', top_path=None):
-    from numpy.distutils.misc_util import Configuration
-    config = Configuration('owls', parent_package, top_path)
-    config.make_config_py()  # installs __config__.py
-    #config.make_svn_version_py()
-    return config

diff -r 41a14ee1c248f09c88debe90b57c43fc769a407f -r f7c36e4a075f699037baa4fcee0b7450df85a8b4 yt/frontends/owls_subfind/setup.py
--- a/yt/frontends/owls_subfind/setup.py
+++ /dev/null
@@ -1,9 +0,0 @@
-#!/usr/bin/env python
-
-
-def configuration(parent_package='', top_path=None):
-    from numpy.distutils.misc_util import Configuration
-    config = Configuration('owls_subfind', parent_package, top_path)
-    config.make_config_py()  # installs __config__.py
-    #config.make_svn_version_py()
-    return config

diff -r 41a14ee1c248f09c88debe90b57c43fc769a407f -r f7c36e4a075f699037baa4fcee0b7450df85a8b4 yt/frontends/ramses/setup.py
--- a/yt/frontends/ramses/setup.py
+++ /dev/null
@@ -1,9 +0,0 @@
-#!/usr/bin/env python
-
-
-def configuration(parent_package='', top_path=None):
-    from numpy.distutils.misc_util import Configuration
-    config = Configuration('ramses', parent_package, top_path)
-    config.make_config_py()  # installs __config__.py
-    #config.make_svn_version_py()
-    return config

diff -r 41a14ee1c248f09c88debe90b57c43fc769a407f -r f7c36e4a075f699037baa4fcee0b7450df85a8b4 yt/frontends/rockstar/setup.py
--- a/yt/frontends/rockstar/setup.py
+++ /dev/null
@@ -1,9 +0,0 @@
-#!/usr/bin/env python
-
-
-def configuration(parent_package='', top_path=None):
-    from numpy.distutils.misc_util import Configuration
-    config = Configuration('rockstar', parent_package, top_path)
-    config.make_config_py()  # installs __config__.py
-    #config.make_svn_version_py()
-    return config

diff -r 41a14ee1c248f09c88debe90b57c43fc769a407f -r f7c36e4a075f699037baa4fcee0b7450df85a8b4 yt/frontends/sdf/setup.py
--- a/yt/frontends/sdf/setup.py
+++ /dev/null
@@ -1,9 +0,0 @@
-#!/usr/bin/env python
-
-
-def configuration(parent_package='', top_path=None):
-    from numpy.distutils.misc_util import Configuration
-    config = Configuration('sdf', parent_package, top_path)
-    config.make_config_py()  # installs __config__.py
-    #config.make_svn_version_py()
-    return config

diff -r 41a14ee1c248f09c88debe90b57c43fc769a407f -r f7c36e4a075f699037baa4fcee0b7450df85a8b4 yt/frontends/setup.py
--- a/yt/frontends/setup.py
+++ /dev/null
@@ -1,55 +0,0 @@
-#!/usr/bin/env python
-
-
-def configuration(parent_package='', top_path=None):
-    from numpy.distutils.misc_util import Configuration
-    config = Configuration('frontends', parent_package, top_path)
-    config.make_config_py()  # installs __config__.py
-    #config.make_svn_version_py()
-    config.add_subpackage("art")
-    config.add_subpackage("artio")
-    config.add_subpackage("athena")
-    config.add_subpackage("boxlib")
-    config.add_subpackage("chombo")
-    config.add_subpackage("exodus_ii")
-    config.add_subpackage("eagle")
-    config.add_subpackage("enzo")
-    config.add_subpackage("fits")
-    config.add_subpackage("flash")
-    config.add_subpackage("gadget")
-    config.add_subpackage("gadget_fof")
-    config.add_subpackage("gdf")
-    config.add_subpackage("halo_catalog")
-    config.add_subpackage("http_stream")
-    config.add_subpackage("moab")
-    config.add_subpackage("owls")
-    config.add_subpackage("owls_subfind")
-    config.add_subpackage("ramses")
-    config.add_subpackage("rockstar")
-    config.add_subpackage("sdf")
-    config.add_subpackage("sph")
-    config.add_subpackage("stream")
-    config.add_subpackage("tipsy")
-    config.add_subpackage("ytdata")
-    config.add_subpackage("art/tests")
-    config.add_subpackage("artio/tests")
-    config.add_subpackage("athena/tests")
-    config.add_subpackage("boxlib/tests")
-    config.add_subpackage("chombo/tests")
-    config.add_subpackage("eagle/tests")
-    config.add_subpackage("enzo/tests")
-    config.add_subpackage("exodus_ii/tests")
-    config.add_subpackage("fits/tests")
-    config.add_subpackage("flash/tests")
-    config.add_subpackage("gadget/tests")
-    config.add_subpackage("gadget_fof/tests")
-    config.add_subpackage("moab/tests")
-    config.add_subpackage("owls/tests")
-    config.add_subpackage("owls_subfind/tests")
-    config.add_subpackage("ramses/tests")
-    config.add_subpackage("rockstar/tests")
-    config.add_subpackage("stream/tests")
-    config.add_subpackage("stream/sample_data")
-    config.add_subpackage("tipsy/tests")
-    config.add_subpackage("ytdata/tests")
-    return config

diff -r 41a14ee1c248f09c88debe90b57c43fc769a407f -r f7c36e4a075f699037baa4fcee0b7450df85a8b4 yt/frontends/sph/setup.py
--- a/yt/frontends/sph/setup.py
+++ /dev/null
@@ -1,9 +0,0 @@
-#!/usr/bin/env python
-
-
-def configuration(parent_package='', top_path=None):
-    from numpy.distutils.misc_util import Configuration
-    config = Configuration('sph', parent_package, top_path)
-    config.make_config_py()  # installs __config__.py
-    #config.make_svn_version_py()
-    return config

diff -r 41a14ee1c248f09c88debe90b57c43fc769a407f -r f7c36e4a075f699037baa4fcee0b7450df85a8b4 yt/frontends/stream/setup.py
--- a/yt/frontends/stream/setup.py
+++ /dev/null
@@ -1,9 +0,0 @@
-#!/usr/bin/env python
-
-
-def configuration(parent_package='', top_path=None):
-    from numpy.distutils.misc_util import Configuration
-    config = Configuration('stream', parent_package, top_path)
-    config.make_config_py()  # installs __config__.py
-    #config.make_svn_version_py()
-    return config

diff -r 41a14ee1c248f09c88debe90b57c43fc769a407f -r f7c36e4a075f699037baa4fcee0b7450df85a8b4 yt/frontends/tipsy/setup.py
--- a/yt/frontends/tipsy/setup.py
+++ /dev/null
@@ -1,9 +0,0 @@
-#!/usr/bin/env python
-
-
-def configuration(parent_package='', top_path=None):
-    from numpy.distutils.misc_util import Configuration
-    config = Configuration('tipsy', parent_package, top_path)
-    config.make_config_py()  # installs __config__.py
-    #config.make_svn_version_py()
-    return config

diff -r 41a14ee1c248f09c88debe90b57c43fc769a407f -r f7c36e4a075f699037baa4fcee0b7450df85a8b4 yt/frontends/ytdata/setup.py
--- a/yt/frontends/ytdata/setup.py
+++ /dev/null
@@ -1,9 +0,0 @@
-#!/usr/bin/env python
-
-
-def configuration(parent_package='', top_path=None):
-    from numpy.distutils.misc_util import Configuration
-    config = Configuration('ytdata', parent_package, top_path)
-    config.make_config_py()  # installs __config__.py
-    #config.make_svn_version_py()
-    return config

diff -r 41a14ee1c248f09c88debe90b57c43fc769a407f -r f7c36e4a075f699037baa4fcee0b7450df85a8b4 yt/geometry/oct_container.pxd
--- a/yt/geometry/oct_container.pxd
+++ b/yt/geometry/oct_container.pxd
@@ -16,7 +16,7 @@
 
 cimport cython
 cimport numpy as np
-from fp_utils cimport *
+from yt.utilities.lib.fp_utils cimport *
 cimport oct_visitors
 cimport selection_routines
 from .oct_visitors cimport OctVisitor, Oct, cind

diff -r 41a14ee1c248f09c88debe90b57c43fc769a407f -r f7c36e4a075f699037baa4fcee0b7450df85a8b4 yt/geometry/oct_visitors.pyx
--- a/yt/geometry/oct_visitors.pyx
+++ b/yt/geometry/oct_visitors.pyx
@@ -17,7 +17,7 @@
 cimport cython
 cimport numpy
 import numpy
-from fp_utils cimport *
+from yt.utilities.lib.fp_utils cimport *
 from libc.stdlib cimport malloc, free
 from yt.geometry.oct_container cimport OctreeContainer
 

diff -r 41a14ee1c248f09c88debe90b57c43fc769a407f -r f7c36e4a075f699037baa4fcee0b7450df85a8b4 yt/geometry/particle_deposit.pxd
--- a/yt/geometry/particle_deposit.pxd
+++ b/yt/geometry/particle_deposit.pxd
@@ -20,7 +20,7 @@
 cimport cython
 from libc.math cimport sqrt
 
-from fp_utils cimport *
+from yt.utilities.lib.fp_utils cimport *
 from .oct_container cimport Oct, OctAllocationContainer, OctreeContainer
 
 cdef extern from "platform_dep.h":

diff -r 41a14ee1c248f09c88debe90b57c43fc769a407f -r f7c36e4a075f699037baa4fcee0b7450df85a8b4 yt/geometry/particle_deposit.pyx
--- a/yt/geometry/particle_deposit.pyx
+++ b/yt/geometry/particle_deposit.pyx
@@ -20,7 +20,6 @@
 cimport cython
 from libc.math cimport sqrt
 
-from fp_utils cimport *
 from oct_container cimport Oct, OctAllocationContainer, \
     OctreeContainer, OctInfo
 

diff -r 41a14ee1c248f09c88debe90b57c43fc769a407f -r f7c36e4a075f699037baa4fcee0b7450df85a8b4 yt/geometry/particle_oct_container.pyx
--- a/yt/geometry/particle_oct_container.pyx
+++ b/yt/geometry/particle_oct_container.pyx
@@ -18,7 +18,7 @@
 from oct_visitors cimport cind
 from libc.stdlib cimport malloc, free, qsort
 from libc.math cimport floor
-from fp_utils cimport *
+from yt.utilities.lib.fp_utils cimport *
 cimport numpy as np
 import numpy as np
 from selection_routines cimport SelectorObject

diff -r 41a14ee1c248f09c88debe90b57c43fc769a407f -r f7c36e4a075f699037baa4fcee0b7450df85a8b4 yt/geometry/particle_smooth.pxd
--- a/yt/geometry/particle_smooth.pxd
+++ b/yt/geometry/particle_smooth.pxd
@@ -20,7 +20,7 @@
 cimport cython
 from libc.math cimport sqrt
 
-from fp_utils cimport *
+from yt.utilities.lib.fp_utils cimport *
 from oct_container cimport Oct, OctAllocationContainer, OctreeContainer
 from .particle_deposit cimport kernel_func, get_kernel_func, gind
 

diff -r 41a14ee1c248f09c88debe90b57c43fc769a407f -r f7c36e4a075f699037baa4fcee0b7450df85a8b4 yt/geometry/particle_smooth.pyx
--- a/yt/geometry/particle_smooth.pyx
+++ b/yt/geometry/particle_smooth.pyx
@@ -21,7 +21,6 @@
 cimport cython
 from libc.math cimport sqrt, fabs, sin, cos
 
-from fp_utils cimport *
 from oct_container cimport Oct, OctAllocationContainer, \
     OctreeContainer, OctInfo
 
@@ -439,7 +438,7 @@
             if layer_ind == initial_layer:
                 neighbors
                 break
-            
+
 
         for j in range(total_neighbors):
             # Particle octree neighbor indices

diff -r 41a14ee1c248f09c88debe90b57c43fc769a407f -r f7c36e4a075f699037baa4fcee0b7450df85a8b4 yt/geometry/selection_routines.pyx
--- a/yt/geometry/selection_routines.pyx
+++ b/yt/geometry/selection_routines.pyx
@@ -18,7 +18,7 @@
 cimport numpy as np
 cimport cython
 from libc.stdlib cimport malloc, free
-from fp_utils cimport fclip, iclip, fmax, fmin
+from yt.utilities.lib.fp_utils cimport fclip, iclip, fmax, fmin
 from .oct_container cimport OctreeContainer, OctAllocationContainer, Oct
 cimport oct_visitors
 from .oct_visitors cimport cind

diff -r 41a14ee1c248f09c88debe90b57c43fc769a407f -r f7c36e4a075f699037baa4fcee0b7450df85a8b4 yt/geometry/setup.py
--- a/yt/geometry/setup.py
+++ /dev/null
@@ -1,79 +0,0 @@
-#!/usr/bin/env python
-
-
-def configuration(parent_package='',top_path=None):
-    from numpy.distutils.misc_util import Configuration
-    config = Configuration('geometry',parent_package,top_path)
-    config.add_subpackage('coordinates')
-    config.add_extension("grid_visitors", 
-                ["yt/geometry/grid_visitors.pyx"],
-                include_dirs=["yt/utilities/lib/"],
-                libraries=["m"],
-                depends=["yt/utilities/lib/fp_utils.pxd",
-                         "yt/geometry/grid_visitors.pxd"])
-    config.add_extension("grid_container", 
-                ["yt/geometry/grid_container.pyx"],
-                include_dirs=["yt/utilities/lib/"],
-                libraries=["m"],
-                depends=["yt/utilities/lib/fp_utils.pxd",
-                         "yt/geometry/grid_container.pxd",
-                         "yt/geometry/grid_visitors.pxd"])
-    config.add_extension("oct_container", 
-                ["yt/geometry/oct_container.pyx"],
-                include_dirs=["yt/utilities/lib/"],
-                libraries=["m"],
-                depends=["yt/utilities/lib/fp_utils.pxd",
-                         "yt/geometry/oct_container.pxd",
-                         "yt/geometry/selection_routines.pxd"])
-    config.add_extension("oct_visitors", 
-                ["yt/geometry/oct_visitors.pyx"],
-                include_dirs=["yt/utilities/lib/"],
-                libraries=["m"],
-                depends=["yt/utilities/lib/fp_utils.pxd",
-                         "yt/geometry/oct_container.pxd",
-                         "yt/geometry/selection_routines.pxd"])
-    config.add_extension("particle_oct_container", 
-                ["yt/geometry/particle_oct_container.pyx"],
-                include_dirs=["yt/utilities/lib/"],
-                libraries=["m"],
-                depends=["yt/utilities/lib/fp_utils.pxd",
-                         "yt/geometry/oct_container.pxd",
-                         "yt/geometry/selection_routines.pxd"])
-    config.add_extension("selection_routines", 
-                ["yt/geometry/selection_routines.pyx"],
-                include_dirs=["yt/utilities/lib/"],
-                libraries=["m"],
-                depends=["yt/utilities/lib/fp_utils.pxd",
-                         "yt/utilities/lib/grid_traversal.pxd",
-                         "yt/geometry/oct_container.pxd",
-                         "yt/geometry/oct_visitors.pxd",
-                         "yt/geometry/grid_container.pxd",
-                         "yt/geometry/grid_visitors.pxd",
-                         "yt/geometry/selection_routines.pxd"])
-    config.add_extension("particle_deposit", 
-                ["yt/geometry/particle_deposit.pyx"],
-                include_dirs=["yt/utilities/lib/"],
-                libraries=["m"],
-                depends=["yt/utilities/lib/fp_utils.pxd",
-                         "yt/geometry/oct_container.pxd",
-                         "yt/geometry/selection_routines.pxd",
-                         "yt/geometry/particle_deposit.pxd"])
-    config.add_extension("particle_smooth", 
-                ["yt/geometry/particle_smooth.pyx"],
-                include_dirs=["yt/utilities/lib/"],
-                libraries=["m"],
-                depends=["yt/utilities/lib/fp_utils.pxd",
-                         "yt/geometry/oct_container.pxd",
-                         "yt/geometry/selection_routines.pxd",
-                         "yt/geometry/particle_deposit.pxd",
-                         "yt/geometry/particle_smooth.pxd"])
-    config.add_extension("fake_octree", 
-                ["yt/geometry/fake_octree.pyx"],
-                include_dirs=["yt/utilities/lib/"],
-                libraries=["m"],
-                depends=["yt/utilities/lib/fp_utils.pxd",
-                         "yt/geometry/oct_container.pxd",
-                         "yt/geometry/selection_routines.pxd"])
-    config.make_config_py() # installs __config__.py
-    #config.make_svn_version_py()
-    return config

diff -r 41a14ee1c248f09c88debe90b57c43fc769a407f -r f7c36e4a075f699037baa4fcee0b7450df85a8b4 yt/setup.py
--- a/yt/setup.py
+++ /dev/null
@@ -1,19 +0,0 @@
-#!/usr/bin/env python
-
-
-def configuration(parent_package='', top_path=None):
-    from numpy.distutils.misc_util import Configuration
-    config = Configuration('yt', parent_package, top_path)
-    config.add_subpackage('analysis_modules')
-    config.add_subpackage('data_objects')
-    config.add_subpackage('fields')
-    config.add_subpackage('extern')
-    config.add_subpackage('frontends')
-    config.add_subpackage('geometry')
-    config.add_subpackage('units')
-    config.add_subpackage('utilities')
-    config.add_subpackage('tests')
-    config.add_subpackage('visualization')
-    config.make_config_py()
-    #config.make_svn_version_py()
-    return config

diff -r 41a14ee1c248f09c88debe90b57c43fc769a407f -r f7c36e4a075f699037baa4fcee0b7450df85a8b4 yt/units/setup.py
--- a/yt/units/setup.py
+++ /dev/null
@@ -1,10 +0,0 @@
-#!/usr/bin/env python
-
-
-def configuration(parent_package='', top_path=None):
-    from numpy.distutils.misc_util import Configuration
-    config = Configuration('units', parent_package, top_path)
-    config.add_subpackage("tests")
-    config.make_config_py()  # installs __config__.py
-    #config.make_svn_version_py()
-    return config

diff -r 41a14ee1c248f09c88debe90b57c43fc769a407f -r f7c36e4a075f699037baa4fcee0b7450df85a8b4 yt/utilities/answer_testing/setup.py
--- a/yt/utilities/answer_testing/setup.py
+++ /dev/null
@@ -1,9 +0,0 @@
-#!/usr/bin/env python
-
-
-def configuration(parent_package='', top_path=None):
-    from numpy.distutils.misc_util import Configuration
-    config = Configuration('answer_testing', parent_package, top_path)
-    config.make_config_py()  # installs __config__.py
-    #config.make_svn_version_py()
-    return config

diff -r 41a14ee1c248f09c88debe90b57c43fc769a407f -r f7c36e4a075f699037baa4fcee0b7450df85a8b4 yt/utilities/grid_data_format/conversion/setup.py
--- a/yt/utilities/grid_data_format/conversion/setup.py
+++ /dev/null
@@ -1,9 +0,0 @@
-#!/usr/bin/env python
-
-
-def configuration(parent_package='', top_path=None):
-    from numpy.distutils.misc_util import Configuration
-    config = Configuration('conversion', parent_package, top_path)
-    config.make_config_py()  # installs __config__.py
-    #config.make_svn_version_py()
-    return config

diff -r 41a14ee1c248f09c88debe90b57c43fc769a407f -r f7c36e4a075f699037baa4fcee0b7450df85a8b4 yt/utilities/grid_data_format/setup.py
--- a/yt/utilities/grid_data_format/setup.py
+++ /dev/null
@@ -1,11 +0,0 @@
-#!/usr/bin/env python
-
-
-def configuration(parent_package='', top_path=None):
-    from numpy.distutils.misc_util import Configuration
-    config = Configuration('grid_data_format', parent_package, top_path)
-    config.add_subpackage("conversion")
-    config.add_subpackage("tests")
-    config.make_config_py()  # installs __config__.py
-    #config.make_svn_version_py()
-    return config

diff -r 41a14ee1c248f09c88debe90b57c43fc769a407f -r f7c36e4a075f699037baa4fcee0b7450df85a8b4 yt/utilities/lib/basic_octree.pyx
--- a/yt/utilities/lib/basic_octree.pyx
+++ b/yt/utilities/lib/basic_octree.pyx
@@ -20,7 +20,7 @@
 cimport numpy as cnp
 cimport cython
 
-from fp_utils cimport imax, fmax, imin, fmin, iclip, fclip
+from yt.utilities.lib.fp_utils cimport imax, fmax, imin, fmin, iclip, fclip
 from libc.stdlib cimport malloc, free, abs
 
 import sys, time

diff -r 41a14ee1c248f09c88debe90b57c43fc769a407f -r f7c36e4a075f699037baa4fcee0b7450df85a8b4 yt/utilities/lib/field_interpolation_tables.pxd
--- a/yt/utilities/lib/field_interpolation_tables.pxd
+++ b/yt/utilities/lib/field_interpolation_tables.pxd
@@ -15,7 +15,7 @@
 
 cimport cython
 cimport numpy as np
-from fp_utils cimport imax, fmax, imin, fmin, iclip, fclip, fabs
+from yt.utilities.lib.fp_utils cimport imax, fmax, imin, fmin, iclip, fclip, fabs
 
 DEF Nch = 4
 

diff -r 41a14ee1c248f09c88debe90b57c43fc769a407f -r f7c36e4a075f699037baa4fcee0b7450df85a8b4 yt/utilities/lib/geometry_utils.pyx
--- a/yt/utilities/lib/geometry_utils.pyx
+++ b/yt/utilities/lib/geometry_utils.pyx
@@ -17,7 +17,7 @@
 cimport numpy as np
 cimport cython
 from libc.stdlib cimport malloc, free
-from fp_utils cimport fclip, i64clip
+from yt.utilities.lib.fp_utils cimport fclip, i64clip
 from libc.math cimport copysign
 from yt.utilities.exceptions import YTDomainOverflow
 

diff -r 41a14ee1c248f09c88debe90b57c43fc769a407f -r f7c36e4a075f699037baa4fcee0b7450df85a8b4 yt/utilities/lib/grid_traversal.pyx
--- a/yt/utilities/lib/grid_traversal.pyx
+++ b/yt/utilities/lib/grid_traversal.pyx
@@ -20,7 +20,7 @@
 from libc.stdlib cimport malloc, calloc, free, abs
 from libc.math cimport exp, floor, log2, \
     lrint, fabs, atan, atan2, asin, cos, sin, sqrt
-from fp_utils cimport imax, fmax, imin, fmin, iclip, fclip, i64clip
+from yt.utilities.lib.fp_utils cimport imax, fmax, imin, fmin, iclip, fclip, i64clip
 from field_interpolation_tables cimport \
     FieldInterpolationTable, FIT_initialize_table, FIT_eval_transfer,\
     FIT_eval_transfer_with_light

diff -r 41a14ee1c248f09c88debe90b57c43fc769a407f -r f7c36e4a075f699037baa4fcee0b7450df85a8b4 yt/utilities/lib/image_utilities.pyx
--- a/yt/utilities/lib/image_utilities.pyx
+++ b/yt/utilities/lib/image_utilities.pyx
@@ -13,7 +13,7 @@
 import numpy as np
 cimport numpy as np
 cimport cython
-from fp_utils cimport iclip
+from yt.utilities.lib.fp_utils cimport iclip
 
 def add_points_to_greyscale_image(
         np.ndarray[np.float64_t, ndim=2] buffer,

diff -r 41a14ee1c248f09c88debe90b57c43fc769a407f -r f7c36e4a075f699037baa4fcee0b7450df85a8b4 yt/utilities/lib/interpolators.pyx
--- a/yt/utilities/lib/interpolators.pyx
+++ b/yt/utilities/lib/interpolators.pyx
@@ -16,7 +16,7 @@
 import numpy as np
 cimport numpy as np
 cimport cython
-from fp_utils cimport imax, fmax, imin, fmin, iclip, fclip
+from yt.utilities.lib.fp_utils cimport imax, fmax, imin, fmin, iclip, fclip
 
 @cython.cdivision(True)
 @cython.wraparound(False)

diff -r 41a14ee1c248f09c88debe90b57c43fc769a407f -r f7c36e4a075f699037baa4fcee0b7450df85a8b4 yt/utilities/lib/marching_cubes.pyx
--- a/yt/utilities/lib/marching_cubes.pyx
+++ b/yt/utilities/lib/marching_cubes.pyx
@@ -16,7 +16,7 @@
 cimport numpy as np
 cimport cython
 import numpy as np
-from fp_utils cimport imax, fmax, imin, fmin, iclip, fclip
+from yt.utilities.lib.fp_utils cimport imax, fmax, imin, fmin, iclip, fclip
 from libc.stdlib cimport malloc, free, abs
 from fixed_interpolator cimport *
 

diff -r 41a14ee1c248f09c88debe90b57c43fc769a407f -r f7c36e4a075f699037baa4fcee0b7450df85a8b4 yt/utilities/lib/mesh_utilities.pyx
--- a/yt/utilities/lib/mesh_utilities.pyx
+++ b/yt/utilities/lib/mesh_utilities.pyx
@@ -17,7 +17,7 @@
 cimport numpy as np
 cimport cython
 from libc.stdlib cimport malloc, free, abs
-from fp_utils cimport imax, fmax, imin, fmin, iclip, fclip, i64clip
+from yt.utilities.lib.fp_utils cimport imax, fmax, imin, fmin, iclip, fclip, i64clip
 
 @cython.boundscheck(False)
 @cython.wraparound(False)

diff -r 41a14ee1c248f09c88debe90b57c43fc769a407f -r f7c36e4a075f699037baa4fcee0b7450df85a8b4 yt/utilities/lib/misc_utilities.pyx
--- a/yt/utilities/lib/misc_utilities.pyx
+++ b/yt/utilities/lib/misc_utilities.pyx
@@ -19,7 +19,7 @@
 cimport cython
 cimport libc.math as math
 from libc.math cimport abs
-from fp_utils cimport fmin, fmax, i64min, i64max
+from yt.utilities.lib.fp_utils cimport fmin, fmax, i64min, i64max
 from yt.geometry.selection_routines cimport _ensure_code
 
 cdef extern from "stdlib.h":

diff -r 41a14ee1c248f09c88debe90b57c43fc769a407f -r f7c36e4a075f699037baa4fcee0b7450df85a8b4 yt/utilities/lib/particle_mesh_operations.pyx
--- a/yt/utilities/lib/particle_mesh_operations.pyx
+++ b/yt/utilities/lib/particle_mesh_operations.pyx
@@ -15,7 +15,7 @@
 
 cimport numpy as np
 cimport cython
-from fp_utils cimport imax, fmax, imin, fmin, iclip, fclip
+from yt.utilities.lib.fp_utils cimport imax, fmax, imin, fmin, iclip, fclip
 
 @cython.boundscheck(False)
 @cython.wraparound(False)

diff -r 41a14ee1c248f09c88debe90b57c43fc769a407f -r f7c36e4a075f699037baa4fcee0b7450df85a8b4 yt/utilities/lib/pixelization_routines.pyx
--- a/yt/utilities/lib/pixelization_routines.pyx
+++ b/yt/utilities/lib/pixelization_routines.pyx
@@ -17,7 +17,7 @@
 cimport numpy as np
 cimport cython
 cimport libc.math as math
-from fp_utils cimport fmin, fmax, i64min, i64max, imin, imax, fabs
+from yt.utilities.lib.fp_utils cimport fmin, fmax, i64min, i64max, imin, imax, fabs
 from yt.utilities.exceptions import YTPixelizeError, \
     YTElementTypeNotRecognized
 from yt.utilities.lib.element_mappings cimport \

diff -r 41a14ee1c248f09c88debe90b57c43fc769a407f -r f7c36e4a075f699037baa4fcee0b7450df85a8b4 yt/utilities/lib/quad_tree.pyx
--- a/yt/utilities/lib/quad_tree.pyx
+++ b/yt/utilities/lib/quad_tree.pyx
@@ -17,11 +17,10 @@
 import numpy as np
 cimport numpy as np
 cimport cython
-from fp_utils cimport fmax
 
 from libc.stdlib cimport malloc, free, abs
 from cython.operator cimport dereference as deref, preincrement as inc
-from fp_utils cimport fmax
+from yt.utilities.lib.fp_utils cimport fmax
 
 from yt.utilities.exceptions import YTIntDomainOverflow
 

This diff is so big that we needed to truncate the remainder.

Repository URL: https://bitbucket.org/yt_analysis/yt/

--

This is a commit notification from bitbucket.org. You are receiving
this because you have the service enabled, addressing the recipient of
this email.



More information about the yt-svn mailing list