forked from staugur/Flask-PluginKit
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathsetup.py
130 lines (108 loc) · 4.04 KB
/
setup.py
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
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
# -*- coding: utf-8 -*-
import unittest
from os import system
from re import compile
from io import open as iopen
from ast import literal_eval
from setuptools import setup, Command
def test_suite():
test_loader = unittest.TestLoader()
test_suite = test_loader.discover("tests", pattern="test_*.py")
return test_suite
def _get_version():
version_re = compile(r"__version__\s+=\s+(.*)")
with open("flask_pluginkit/__init__.py", "rb") as fh:
version = literal_eval(
version_re.search(fh.read().decode("utf-8")).group(1)
)
return str(version)
def _get_author():
author_re = compile(r"__author__\s+=\s+(.*)")
mail_re = compile(r"(.*)\s<(.*)>")
with open("flask_pluginkit/__init__.py", "rb") as fh:
author = literal_eval(
author_re.search(fh.read().decode("utf-8")).group(1)
)
return (mail_re.search(author).group(1), mail_re.search(author).group(2))
def _get_readme():
with iopen("README.rst", "rt", encoding="utf8") as f:
return f.read()
class PublishCommand(Command):
description = "Publish a new version to pypi"
user_options = [
# The format is (long option, short option, description).
("test", None, "Publish to test.pypi.org"),
("release", None, "Publish to pypi.org"),
]
def initialize_options(self):
"""Set default values for options."""
self.test = False
self.release = False
def finalize_options(self):
"""Post-process options."""
if self.test:
print("V%s will publish to the test.pypi.org" % version)
elif self.release:
print("V%s will publish to the pypi.org" % version)
def run(self):
"""Run command."""
system("pip install -U setuptools twine wheel")
system("rm -rf build/ dist/ Flask_PluginKit.egg-info/")
system("python setup.py sdist bdist_wheel")
if self.test:
system("twine upload -r testpypi dist/*")
elif self.release:
system("twine upload dist/*")
system("rm -rf build/ dist/ Flask_PluginKit.egg-info/")
if self.test:
print("V%s publish to the test.pypi.org successfully" % version)
elif self.release:
print("V%s publish to the pypi.org successfully" % version)
exit()
version = _get_version()
(author, email) = _get_author()
gh = "https://github.com/staugur/Flask-PluginKit"
setup(
name="Flask-PluginKit",
version=version,
url=gh,
download_url="{gh}/releases/tag/v{v}".format(gh=gh, v=version),
project_urls={
"Code": gh,
"Issue tracker": "{gh}/issues".format(gh=gh),
"Documentation": "https://flask-pluginkit.rtfd.vip",
},
license="BSD 3-Clause",
author=author,
author_email=email,
keywords="flask plugin",
description="Load and run plugins for your Flask application",
long_description=_get_readme(),
test_suite="setup.test_suite",
tests_require=["Flask>=0.11", "Flask-Classful>=0.14.0"],
packages=["flask_pluginkit"],
include_package_data=True,
zip_safe=False,
python_requires=">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.3.*,!=3.5.*",
install_requires=["Flask>=0.12", "semver>=2.10.0"],
cmdclass={
"publish": PublishCommand,
},
classifiers=[
"Development Status :: 4 - Beta",
"Framework :: Flask",
"Environment :: Web Environment",
"Intended Audience :: Developers",
"License :: OSI Approved :: BSD License",
"Operating System :: OS Independent",
"Programming Language :: Python :: 2.7",
"Programming Language :: Python :: 3.6",
"Programming Language :: Python :: 3.7",
"Programming Language :: Python :: 3.8",
"Programming Language :: Python :: 3.9",
"Programming Language :: Python :: Implementation :: PyPy",
"Programming Language :: Python :: Implementation :: CPython",
"Topic :: Internet :: WWW/HTTP :: Dynamic Content",
"Topic :: Software Development :: Libraries :: Python Modules",
],
)