Source code for Corrfunc

#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""
Corrfunc is a set of high-performance routines for
computing clustering statistics on a distribution of
points.
"""

from __future__ import (division, print_function, absolute_import,
                        unicode_literals)
import os
import sys
import warnings

__version__ = "2.5.2"
__author__ = "Manodeep Sinha <manodeep@gmail.com>"


if sys.version_info[0] < 3:
    warnings.warn('Python 2 support is deprecated and will be dropped in Corrfunc v2.6', FutureWarning)

try:
        __CORRFUNC_SETUP__
except NameError:
    __CORRFUNC_SETUP__ = False

if not __CORRFUNC_SETUP__:
    from . import io
    from . import utils
    from . import theory
    from . import mocks

    utils.check_runtime_env()


[docs] def read_text_file(filename, encoding="utf-8"): """ Reads a file under python3 with encoding (default UTF-8). Also works under python2, without encoding. Uses the EAFP (https://docs.python.org/2/glossary.html#term-eafp) principle. """ try: with open(filename, 'r', encoding) as f: r = f.read() except TypeError: with open(filename, 'r') as f: r = f.read() return r
[docs] def write_text_file(filename, contents, encoding="utf-8"): """ Writes a file under python3 with encoding (default UTF-8). Also works under python2, without encoding. Uses the EAFP (https://docs.python.org/2/glossary.html#term-eafp) principle. """ try: with open(filename, 'w', encoding) as f: f.write(contents) except TypeError: with open(filename, 'w') as f: f.write(contents)
[docs] def which(program, mode=os.F_OK | os.X_OK, path=None): """ Mimics the Unix utility which. For python3.3+, shutil.which provides all of the required functionality. An implementation is provided in case shutil.which does not exist. :param program: (required) string Name of program (can be fully-qualified path as well) :param mode: (optional) integer flag bits Permissions to check for in the executable Default: os.F_OK (file exists) | os.X_OK (executable file) :param path: (optional) string A custom path list to check against. Implementation taken from shutil.py. Returns: A fully qualified path to program as resolved by path or user environment. Returns None when program can not be resolved. """ try: from shutil import which as shwhich return shwhich(program, mode, path) except ImportError: def is_exe(fpath): return os.path.isfile(fpath) and os.access(fpath, os.X_OK) fpath, _ = os.path.split(program) if fpath: if is_exe(program): return program else: if path is None: path = os.environ.get("PATH", os.defpath) if not path: return None path = path.split(os.pathsep) for pathdir in path: pathdir = pathdir.strip('"') exe_file = os.path.join(pathdir, program) if is_exe(exe_file): return exe_file return None