-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathsetup.py
executable file
·81 lines (75 loc) · 3.31 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
#!/usr/bin/env python
import ast
import os
from setuptools import setup # type: ignore[import]
def read(*relpath, **kwargs):
with open(os.path.join(os.path.dirname(__file__), *relpath),
encoding=kwargs.get("encoding", "utf8")) as fh:
return fh.read()
# Extract __version__ from the package __init__.py
# (since it's not a good idea to actually run __init__.py during the build process).
#
# http://stackoverflow.com/questions/2058802/how-can-i-get-the-version-defined-in-setup-py-setuptools-in-my-package
init_py_path = os.path.join("mcpyrate", "__init__.py")
version = None
try:
with open(init_py_path) as f:
for line in f:
if line.startswith("__version__"):
module = ast.parse(line, filename=init_py_path)
expr = module.body[0]
assert isinstance(expr, ast.Assign)
v = expr.value
if type(v) is ast.Constant:
# mypy understands `isinstance(..., ...)` but not `type(...) is ...`,
# and we want to match on the exact type, not any subclass that might be
# added in some future Python version.
assert isinstance(v, ast.Constant)
version = v.value
elif type(v) is ast.Str: # TODO: Python 3.8: remove ast.Str
assert isinstance(v, ast.Str) # mypy
version = v.s
break
except FileNotFoundError:
pass
if not version:
raise RuntimeError(f"Version information not found in {init_py_path}")
setup(
name="mcpyrate",
version=version,
packages=["mcpyrate", "mcpyrate.repl"],
provides=["mcpyrate"],
keywords=["macros", "syntactic-macros", "macro-expander", "metaprogramming", "import", "importer"],
install_requires=["colorama>=0.4.4"],
python_requires=">=3.8",
author="Juha Jeronen and Salvador de la Puente González",
author_email="[email protected]",
url="https://github.com/Technologicat/mcpyrate",
description="Advanced macro expander and language lab for Python",
long_description=read("README.md"),
long_description_content_type="text/markdown",
license="MIT",
platforms=["Any"],
classifiers=[
"Development Status :: 4 - Beta",
"Environment :: Other Environment",
"Intended Audience :: Developers",
"License :: OSI Approved :: MIT License",
"Operating System :: OS Independent",
"Programming Language :: Python",
"Programming Language :: Python :: 3 :: Only",
"Programming Language :: Python :: 3.8",
"Programming Language :: Python :: 3.9",
"Programming Language :: Python :: 3.10",
"Programming Language :: Python :: 3.11",
"Programming Language :: Python :: 3.12",
"Programming Language :: Python :: Implementation :: CPython",
"Programming Language :: Python :: Implementation :: PyPy",
"Topic :: Software Development :: Libraries",
"Topic :: Software Development :: Libraries :: Python Modules",
"Topic :: Software Development :: Code Generators",
"Topic :: Utilities"
],
entry_points={"console_scripts": ["macropython=mcpyrate.repl.macropython:main"]},
zip_safe=False # macros are not zip safe, because the zip importer fails to find sources.
)