summaryrefslogtreecommitdiff
path: root/setup.py
blob: dae53695248b7fb51e513db6d62ed52d13a18d16 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
#!/usr/bin/python
# coding=utf-8
"""
Setuptools setup file, used to install or test 'cmd2'
"""
import codecs

from setuptools import (
    setup,
)

DESCRIPTION = "cmd2 - quickly build feature-rich and user-friendly interactive command line applications in Python"

with codecs.open('README.md', encoding='utf8') as f:
    LONG_DESCRIPTION = f.read()

CLASSIFIERS = list(
    filter(
        None,
        map(
            str.strip,
            """
Development Status :: 5 - Production/Stable
Environment :: Console
Operating System :: OS Independent
Intended Audience :: Developers
Intended Audience :: System Administrators
License :: OSI Approved :: MIT License
Programming Language :: Python
Programming Language :: Python :: 3
Programming Language :: Python :: 3.7
Programming Language :: Python :: 3.8
Programming Language :: Python :: 3.9
Programming Language :: Python :: 3.10
Programming Language :: Python :: 3.11
Programming Language :: Python :: Implementation :: CPython
Topic :: Software Development :: Libraries :: Python Modules
""".splitlines(),
        ),
    )
)  # noqa: E128

SETUP_REQUIRES = ['setuptools >= 34.4', 'setuptools_scm >= 3.0']

INSTALL_REQUIRES = [
    'importlib_metadata>=1.6.0;python_version<"3.8"',
    'pyperclip >= 1.6',
    'typing_extensions; python_version<"3.8"',
    'wcwidth >= 0.1.7',
]

EXTRAS_REQUIRE = {
    # Windows also requires pyreadline3 to ensure tab completion works
    ":sys_platform=='win32'": ['pyreadline3'],
    # Extra dependencies for running unit tests
    'test': [
        "gnureadline; sys_platform=='darwin'",  # include gnureadline on macOS to ensure it is available in nox env
        'codecov',
        'coverage',
        'pytest>=4.6',
        'pytest-cov',
        'pytest-mock',
    ],
    # development only dependencies:  install with 'pip install -e .[dev]'
    'dev': [
        'codecov',
        'doc8',
        'flake8',
        'black',
        'isort',
        'invoke',
        'mypy',
        'nox',
        "pytest>=4.6",
        'pytest-cov',
        'pytest-mock',
        'sphinx',
        'sphinx-rtd-theme',
        'sphinx-autobuild',
        'twine>=1.11',
    ],
    'validate': [
        'flake8',
        'mypy',
        'types-pkg-resources',
    ],
}

PACKAGE_DATA = {
    'cmd2': ['py.typed'],
}

setup(
    name="cmd2",
    use_scm_version={'git_describe_command': 'git describe --dirty --tags --long --exclude plugin-*'},
    description=DESCRIPTION,
    long_description=LONG_DESCRIPTION,
    long_description_content_type='text/markdown',
    classifiers=CLASSIFIERS,
    author='Catherine Devlin',
    author_email='catherine.devlin@gmail.com',
    url='https://github.com/python-cmd2/cmd2',
    license='MIT',
    platforms=['any'],
    package_data=PACKAGE_DATA,
    packages=['cmd2'],
    keywords='command prompt console cmd',
    python_requires='>=3.7',
    setup_requires=SETUP_REQUIRES,
    install_requires=INSTALL_REQUIRES,
    extras_require=EXTRAS_REQUIRE,
)