1from distutils.command.build_py import build_py 2from setuptools import setup 3import versioneer 4 5package = "spaghetti" 6 7description = "Analysis of Network-constrained Spatial Data" 8 9# Fetch README.md for the `long_description` 10with open("README.md", "r", encoding="utf-8") as file: 11 long_description = file.read() 12 13 14def _get_requirements_from_files(groups_files): 15 """returns a dictionary of all requirements 16 keyed by type of requirement. 17 18 Parameters 19 ---------- 20 groups_files : dict 21 k - descriptive name, v - file name (including extension) 22 23 Returns 24 ------- 25 groups_reqlist : dict 26 k - descriptive name, v - list of required packages 27 28 """ 29 30 groups_reqlist = {} 31 for k, v in groups_files.items(): 32 with open(v, "r") as f: 33 pkg_list = f.read().splitlines() 34 groups_reqlist[k] = pkg_list 35 return groups_reqlist 36 37 38def setup_package(): 39 """sets up the python package""" 40 41 # Requirements for: base, dev, docs, plus, and test builds 42 _groups_files = { 43 "base": "requirements.txt", 44 "dev": "requirements_dev.txt", 45 "docs": "requirements_docs.txt", 46 "plus": "requirements_plus.txt", 47 "tests": "requirements_tests.txt", 48 "nb_pypi": "requirements_notebooks_pypi.txt", 49 "nb_conda": "requirements_notebooks_conda.txt", 50 } 51 reqs = _get_requirements_from_files(_groups_files) 52 install_reqs = reqs.pop("base") 53 extras_reqs = reqs 54 55 setup( 56 name=package, 57 version=versioneer.get_version(), 58 cmdclass=versioneer.get_cmdclass({"build_py": build_py}), 59 description=description, 60 long_description=long_description, 61 long_description_content_type="text/markdown", 62 url="https://github.com/pysal/" + package, 63 download_url="https://pypi.org/project/" + package, 64 maintainer="James D. Gaboardi", 65 maintainer_email="jgaboardi@gmail.com", 66 keywords="spatial statistics, networks, graphs", 67 classifiers=[ 68 "Development Status :: 5 - Production/Stable", 69 "Intended Audience :: Science/Research", 70 "Intended Audience :: Developers", 71 "Intended Audience :: Education", 72 "Topic :: Scientific/Engineering", 73 "Topic :: Scientific/Engineering :: GIS", 74 "License :: OSI Approved :: BSD License", 75 "Programming Language :: Python", 76 "Programming Language :: Python :: 3.7", 77 "Programming Language :: Python :: 3.8", 78 "Programming Language :: Python :: 3.9", 79 ], 80 license="3-Clause BSD", 81 packages=[package], 82 py_modules=[package], 83 install_requires=install_reqs, 84 extras_require=extras_reqs, 85 zip_safe=False, 86 python_requires=">=3.7", 87 ) 88 89 90if __name__ == "__main__": 91 92 setup_package() 93