diff --git a/setup.py b/setup.py index 151c142..d5f5cf6 100644 --- a/setup.py +++ b/setup.py @@ -1,134 +1,75 @@ -"""A setuptools based setup module. -See: -https://packaging.python.org/en/latest/distributing.html -https://github.com/pypa/sampleproject -""" +import re +from pathlib import Path, StrPath - -import re +# To use a consistent encoding +from codecs import open # Always prefer setuptools over distutils from setuptools import setup, find_packages -# To use a consistent encoding -from codecs import open -from os import path -here = path.abspath(path.dirname(__file__)) +here = Path(__file__).resolve().parent # Get the long description from the README file -with open(path.join(here, 'README.md'), encoding='utf-8') as f: +with open(Path(here, "README.md"), encoding="utf-8") as f: long_description = f.read() -def read(*parts): - # intentionally *not* adding an encoding option to open - # see here: https://github.com/pypa/virtualenv/issues/201#issuecomment-3145690 - return open(path.join(here, *parts), 'r').read() -def find_version(*file_paths): - version_file = read(*file_paths) - version_match = re.search(r"^version = ['\"]([^'\"]*)['\"]", - version_file, re.M) - if version_match: - return version_match.group(1) - raise RuntimeError("Unable to find version string.") +def find_version(*file_path: StrPath) -> str: + """ + Searches for the semantic version within the given path + :param file_path: Path to the file to search + :return: Semantic version as string + """ + version_file: str = open(Path(here, *file_path), "r").read() + version_match = re.search(r"^version = ['\"]([^'\"]*)['\"]", version_file, re.M) + if not version_match: + raise RuntimeError("Unable to find version string.") + + return version_match.group(1) + setup( - name='semver', - - # Versions should comply with PEP440. For a discussion on single-sourcing - # the version across setup.py and the project code, see - # https://packaging.python.org/en/latest/single_source_version.html - version=find_version('semver','__init__.py'), - #version='0.0.1', - - description='Automatic Semantic Versioner', + name="semver", + version=find_version("semver", "__init__.py"), + description="Automatic Semantic Versioner", long_description=long_description, - - # The project's main homepage. - url='https://github.com/RightBrain-Networks/auto-semver', - + url="https://github.com/RightBrain-Networks/auto-semver", # Author details - author='RightBrain Networks', - author_email='cloud@rightbrainnetworks.com', - + author="RightBrain Networks", + author_email="cloud@rightbrainnetworks.com", # Choose your license - license='Apache2.0', - + license="Apache2.0", + # ======== # + # Metadata # + # ======== # # See https://pypi.python.org/pypi?%3Aaction=list_classifiers classifiers=[ - # How mature is this project? Common values are - # 3 - Alpha - # 4 - Beta - # 5 - Production/Stable - 'Development Status :: 3 - Alpha', - - # Indicate who your project is intended for - 'Intended Audience :: Developers', - 'Intended Audience :: System Administrators', - 'Topic :: Software Development :: Build Tools', - - # Pick your license as you wish (should match "license" above) - 'License :: OSI Approved :: Apache Software License', - - # Specify the Python versions you support here. In particular, ensure - # that you indicate whether you support Python 2, Python 3 or both. - 'Programming Language :: Python :: 2', - 'Programming Language :: Python :: 2.7', - 'Programming Language :: Python :: 3', - 'Programming Language :: Python :: 3.3', - 'Programming Language :: Python :: 3.4', - 'Programming Language :: Python :: 3.5', - 'Programming Language :: Python :: 3.6' + "License :: OSI Approved :: Apache Software License", + # Development Status + "Development Status :: 3 - Alpha", + # Audience + "Intended Audience :: Developers", + "Intended Audience :: System Administrators", + "Topic :: Software Development :: Build Tools", + # Supported Python Versions + "Programming Language :: Python :: 3.6", + "Programming Language :: Python :: 3.7", + "Programming Language :: Python :: 3.8", + "Programming Language :: Python :: 3.9", + "Programming Language :: Python :: 3.10", ], - - # What does your project relate to? - keywords='Semantic Version', - - # You can just specify the packages manually here if your project is - # simple. Or you can use find_packages(). - packages=find_packages(exclude=['contrib', 'docs', 'tests']), - - # Alternatively, if you want to distribute just a my_module.py, uncomment - # this: - # py_modules=["my_module"], - - # List run-time dependencies here. These will be installed by pip when - # your project is installed. For an analysis of "install_requires" vs pip's - # requirements files see: - # https://packaging.python.org/en/latest/requirements.html - install_requires=[ - 'argparse>=1.2.1' - ], - - # List additional groups of dependencies here (e.g. development - # dependencies). You can install these using the following syntax, - # for example: - # $ pip install -e .[dev,test] - #extras_require={ - # 'dev': ['check-manifest'], - # 'test': ['coverage'], - #}, - - # If there are data files included in your packages that need to be - # installed, specify them here. If using Python 2.6 or less, then these - # have to be included in MANIFEST.in as well. - package_data={ - }, - - # Although 'package_data' is the preferred approach, in some case you may - # need to place data files outside of your packages. See: - # http://docs.python.org/3.4/distutils/setupscript.html#installing-additional-files # noqa - # In this case, 'data_file' will be installed into '/my_data' - #data_files=[('my_data', ['data/data_file'])], - - # To provide executable scripts, use entry points in preference to the - # "scripts" keyword. Entry points provide cross-platform support and allow - # pip to create the appropriate form of executable for the target platform. + keywords=["Semantic", "Version", "Git", "Auto-Versioning"], + # ======= # + # Package # + # ======= # + packages=find_packages(exclude=["contrib", "docs", "tests"]), + install_requires=["argparse>=1.4.0"], + package_data={}, entry_points={ - 'console_scripts': [ - 'semver = semver:main', - 'semver_get_version = semver.get_version:main' + "console_scripts": [ + "semver = semver:main", + "semver_get_version = semver.get_version:main", ], }, )