1import io
2import os
3import re
4import sys
5from setuptools import setup, find_packages
6
7
8REQUIRES_PYTHON = ">=3.7.0"
9
10# Use repository Markdown README.md for PyPI long description
11try:
12    with io.open("README.md", encoding="utf-8") as f:
13        readme = f.read()
14except IOError as readme_e:
15    sys.stderr.write(
16        "[ERROR] setup.py: Failed to read the README.md file for the long description definition: {}".format(
17            str(readme_e)
18        )
19    )
20    raise readme_e
21
22
23def version_read():
24    settings_file = open(
25        os.path.join(os.path.dirname(__file__), "lib", "fontv", "settings.py")
26    ).read()
27    major_regex = r"""major_version\s*?=\s*?["']{1}(\d+)["']{1}"""
28    minor_regex = r"""minor_version\s*?=\s*?["']{1}(\d+)["']{1}"""
29    patch_regex = r"""patch_version\s*?=\s*?["']{1}(\d+)["']{1}"""
30    major_match = re.search(major_regex, settings_file)
31    minor_match = re.search(minor_regex, settings_file)
32    patch_match = re.search(patch_regex, settings_file)
33    major_version = major_match.group(1)
34    minor_version = minor_match.group(1)
35    patch_version = patch_match.group(1)
36    if len(major_version) == 0:
37        major_version = 0
38    if len(minor_version) == 0:
39        minor_version = 0
40    if len(patch_version) == 0:
41        patch_version = 0
42    return major_version + "." + minor_version + "." + patch_version
43
44
45setup(
46    name="font-v",
47    version=version_read(),
48    description="Font version reporting and modification tool",
49    long_description=readme,
50    long_description_content_type="text/markdown",
51    url="https://github.com/source-foundry/font-v",
52    license="MIT license",
53    author="Christopher Simpkins",
54    author_email="chris@sourcefoundry.org",
55    platforms=["any"],
56    packages=find_packages("lib"),
57    package_dir={"": "lib"},
58    python_requires=REQUIRES_PYTHON,
59    install_requires=["gitpython", "fonttools"],
60    entry_points={
61        "console_scripts": ["font-v = fontv.app:main"],
62    },
63    keywords="",
64    include_package_data=True,
65    classifiers=[
66        "Development Status :: 5 - Production/Stable",
67        "Natural Language :: English",
68        "License :: OSI Approved :: MIT License",
69        "Operating System :: OS Independent",
70        "Programming Language :: Python",
71        "Programming Language :: Python :: 3",
72        "Programming Language :: Python :: 3.7",
73        "Programming Language :: Python :: 3.8",
74        "Programming Language :: Python :: 3.9",
75        "Programming Language :: Python :: 3.10",
76    ],
77)
78