https://github.com/RadioAstronomySoftwareGroup/pyuvdata
Revision 2c6e560eb3ac1b1c4da9060654642e10a34d8ea6 authored by Garrett "Karto" Keating on 24 May 2021, 01:04:13 UTC, committed by Paul La Plante on 25 June 2021, 14:49:40 UTC
1 parent 33cdfc4
Tip revision: 2c6e560eb3ac1b1c4da9060654642e10a34d8ea6 authored by Garrett "Karto" Keating on 24 May 2021, 01:04:13 UTC
Adding known (documented) variables to MIRIAD reader, removing slow code that wasn't actually doing anything
Adding known (documented) variables to MIRIAD reader, removing slow code that wasn't actually doing anything
Tip revision: 2c6e560
setup.py
# -*- mode: python; coding: utf-8 -*-
# Copyright (c) 2018 Radio Astronomy Software Group
# Licensed under the 2-clause BSD License
import os
import io
import sys
import glob
import platform
from setuptools import setup, Extension, find_namespace_packages
import numpy
from distutils.sysconfig import get_config_var
from distutils.version import LooseVersion
from Cython.Build import cythonize
# add pyuvdata to our path in order to use the branch_scheme function
sys.path.append("pyuvdata")
from branch_scheme import branch_scheme # noqa
with io.open("README.md", "r", encoding="utf-8") as readme_file:
readme = readme_file.read()
def is_platform_mac():
return sys.platform == "darwin"
def is_platform_windows():
return sys.platform == "win32"
# For mac, ensure extensions are built for macos 10.9 when compiling on a
# 10.9 system or above, overriding distuitls behaviour which is to target
# the version that python was built for. This may be overridden by setting
# MACOSX_DEPLOYMENT_TARGET before calling setup.py
# implementation based on pandas, see https://github.com/pandas-dev/pandas/issues/23424
if is_platform_mac():
if "MACOSX_DEPLOYMENT_TARGET" not in os.environ:
current_system = LooseVersion(platform.mac_ver()[0])
python_target = LooseVersion(get_config_var("MACOSX_DEPLOYMENT_TARGET"))
if python_target < "10.9" and current_system >= "10.9":
os.environ["MACOSX_DEPLOYMENT_TARGET"] = "10.9"
# define the cython compile args, depending on platform
if is_platform_windows():
extra_compile_args = ["/Ox", "/openmp"]
extra_link_args = ["/openmp"]
elif is_platform_mac():
extra_compile_args = ["-O3"]
extra_link_args = []
else:
extra_compile_args = ["-O3", "-fopenmp"]
extra_link_args = ["-fopenmp"]
global_c_macros = [
("NPY_NO_DEPRECATED_API", "NPY_1_7_API_VERSION"),
]
miriad_extension = Extension(
"pyuvdata._miriad",
sources=[
"pyuvdata/uvdata/src/miriad_wrap.pyx",
"pyuvdata/uvdata/src/uvio.c",
"pyuvdata/uvdata/src/hio.c",
"pyuvdata/uvdata/src/pack.c",
"pyuvdata/uvdata/src/bug.c",
"pyuvdata/uvdata/src/dio.c",
"pyuvdata/uvdata/src/headio.c",
"pyuvdata/uvdata/src/maskio.c",
],
define_macros=global_c_macros,
include_dirs=["pyuvdata/uvdata/src/", numpy.get_include()],
)
corr_fits_extension = Extension(
"pyuvdata._corr_fits",
sources=["pyuvdata/uvdata/corr_fits.pyx"],
define_macros=global_c_macros,
include_dirs=[numpy.get_include()],
extra_compile_args=extra_compile_args,
extra_link_args=extra_link_args,
)
utils_extension = Extension(
"pyuvdata._utils",
sources=["pyuvdata/utils.pyx"],
define_macros=global_c_macros,
include_dirs=[numpy.get_include()],
extra_compile_args=extra_compile_args,
)
extensions = [corr_fits_extension, utils_extension]
# don't build miriad on windows
if not is_platform_windows():
extensions.append(miriad_extension)
astroquery_reqs = ["astroquery"]
novas_reqs = ["novas", "novas_de405"]
casa_reqs = ["python-casacore"]
healpix_reqs = ["astropy_healpix"]
cst_reqs = ["pyyaml"]
test_reqs = (
casa_reqs
+ astroquery_reqs
+ healpix_reqs
+ novas_reqs
+ cst_reqs
+ [
"pytest>=6.2",
"pytest-xdist",
"pytest-cases>=3",
"pytest-cov",
"cython",
"coverage",
"pre-commit",
]
)
doc_reqs = ["sphinx", "pypandoc"]
setup_args = {
"name": "pyuvdata",
"author": "Radio Astronomy Software Group",
"url": "https://github.com/RadioAstronomySoftwareGroup/pyuvdata",
"license": "BSD",
"description": "an interface for astronomical interferometeric datasets in python",
"long_description": readme,
"long_description_content_type": "text/markdown",
"package_dir": {"pyuvdata": "pyuvdata"},
"packages": find_namespace_packages(),
"ext_modules": cythonize(extensions, language_level=3),
"scripts": [fl for fl in glob.glob("scripts/*") if not os.path.isdir(fl)],
"use_scm_version": {"local_scheme": branch_scheme},
"include_package_data": True,
"install_requires": [
"numpy>=1.18",
"scipy",
"astropy>=4.2.1",
"h5py",
"setuptools_scm",
],
"extras_require": {
"astroquery": astroquery_reqs,
"casa": casa_reqs,
"novas": novas_reqs,
"healpix": healpix_reqs,
"cst": cst_reqs,
"all": casa_reqs + healpix_reqs + cst_reqs + novas_reqs + astroquery_reqs,
"test": test_reqs,
"doc": doc_reqs,
"dev": test_reqs + doc_reqs,
},
"classifiers": [
"Development Status :: 5 - Production/Stable",
"Intended Audience :: Science/Research",
"License :: OSI Approved :: BSD License",
"Programming Language :: Python :: 3.6",
"Programming Language :: Python :: 3.7",
"Programming Language :: Python :: 3.8",
"Programming Language :: Python :: 3.9",
"Topic :: Scientific/Engineering :: Astronomy",
],
"keywords": "radio astronomy interferometry",
}
if __name__ == "__main__":
setup(**setup_args)
Computing file changes ...