From b22e2b565dc532538a830dc1bbb2c9e7a3ab7ad7 Mon Sep 17 00:00:00 2001 From: Adam Dangoor Date: Wed, 11 Dec 2019 23:45:34 +0000 Subject: [PATCH] Use setup.py setup which allows comments --- dev-requirements.txt | 2 ++ setup.cfg | 1 + setup.py | 32 +++++++++++++++++++++++--------- 3 files changed, 26 insertions(+), 9 deletions(-) diff --git a/dev-requirements.txt b/dev-requirements.txt index 62f8a0d4a..391cf8e3e 100644 --- a/dev-requirements.txt +++ b/dev-requirements.txt @@ -1,3 +1,5 @@ +# We use dev-requirements.txt instead of just declaring the requirements here +# because Read The Docs needs a requirements file. PyYAML==5.2 Pygments==2.5.2 Sphinx-Substitution-Extensions==2019.6.15.0 diff --git a/setup.cfg b/setup.cfg index f161f4c51..b8e166b98 100644 --- a/setup.cfg +++ b/setup.cfg @@ -123,6 +123,7 @@ BLANK_LINE_BEFORE_NESTED_CLASS_OR_DEF = true [metadata] name = VWS Python +version = attr: vws.__version__ description = Interact with the Vuforia Web Services (VWS) API. long_description = file: README.rst keywords = vuforia client diff --git a/setup.py b/setup.py index 5a94d50e1..950abf12b 100644 --- a/setup.py +++ b/setup.py @@ -1,21 +1,35 @@ """Setup script for VWS Python, a wrapper for Vuforia's Web Services APIs.""" +from pathlib import Path from setuptools import setup +from typing import List import versioneer -# We use requirements.txt instead of just declaring the requirements here -# because this helps with Docker package caching. -with open('requirements.txt') as requirements: - INSTALL_REQUIRES = requirements.readlines() -# We use dev-requirements.txt instead of just declaring the requirements here -# because Read The Docs needs a requirements file. -with open('dev-requirements.txt') as dev_requirements: - DEV_REQUIRES = dev_requirements.readlines() +def _get_dependencies(requirements_file: Path) -> List[str]: + """ + Return requirements from a requirements file. + + This expects a requirements file with no ``--find-links`` lines. + """ + lines = requirements_file.read_text().strip().split('\n') + return [line for line in lines if not line.startswith('#')] + + +_DIRECT_REQUIRES = _get_dependencies( + requirements_file=Path('requirements.txt'), +) + +INSTALL_REQUIRES = _DIRECT_REQUIRES +DEV_REQUIRES = _get_dependencies( + requirements_file=Path('dev-requirements.txt'), +) +PACKAGING_REQUIRES = _get_dependencies( + requirements_file=Path('packaging-requirements.txt'), +) setup( - version=versioneer.get_version(), # type: ignore cmdclass=versioneer.get_cmdclass(), # type: ignore install_requires=INSTALL_REQUIRES, extras_require={'dev': DEV_REQUIRES},