forked from espressif/esptool
-
Notifications
You must be signed in to change notification settings - Fork 0
/
setup.py
141 lines (127 loc) · 4.34 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
131
132
133
134
135
136
137
138
139
140
141
# SPDX-FileCopyrightText: 2014-2023 Fredrik Ahlberg, Angus Gratton,
# Espressif Systems (Shanghai) CO LTD, other contributors as noted.
#
# SPDX-License-Identifier: GPL-2.0-or-later
import io
import os
import re
import sys
try:
from setuptools import find_packages, setup
except ImportError:
print(
"Package setuptools is missing from your Python installation. "
"Please see the installation section in the esptool documentation"
" for instructions on how to install it."
)
sys.exit(1)
# Example code to pull version from esptool module with regex, taken from
# https://packaging.python.org/en/latest/guides/single-sourcing-package-version/
def read(*names, **kwargs):
with io.open(
os.path.join(os.path.dirname(__file__), *names),
encoding=kwargs.get("encoding", "utf8"),
) as fp:
return fp.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.")
if os.name != "nt":
scripts = ["esptool.py", "espefuse.py", "espsecure.py", "esp_rfc2217_server.py"]
entry_points = {}
else:
scripts = []
entry_points = {
"console_scripts": [
"esptool.py=esptool.__init__:_main",
"espsecure.py=espsecure.__init__:_main",
"espefuse.py=espefuse.__init__:_main",
"esp_rfc2217_server.py=esp_rfc2217_server:main",
],
}
long_description = """
==========
esptool.py
==========
A Python-based, open-source, platform-independent utility to communicate with \
the ROM bootloader in Espressif chips.
The esptool.py project is `hosted on github <https://github.com/espressif/esptool>`_.
Documentation
-------------
Visit online `esptool documentation <https://docs.espressif.com/projects/esptool/>`_ \
or run ``esptool.py -h``.
Contributing
------------
Please see the `contributions guide \
<https://docs.espressif.com/projects/esptool/en/latest/contributing.html>`_.
"""
setup(
name="esptool",
version=find_version("esptool/__init__.py"),
description="A serial utility to communicate & flash code to Espressif chips.",
long_description=long_description,
url="https://github.com/espressif/esptool/",
project_urls={
"Documentation": "https://docs.espressif.com/projects/esptool/",
"Source": "https://github.com/espressif/esptool/",
"Tracker": "https://github.com/espressif/esptool/issues/",
},
author="Fredrik Ahlberg (themadinventor) & Angus Gratton (projectgus) "
"& Espressif Systems",
author_email="",
license="GPLv2+",
classifiers=[
"Development Status :: 5 - Production/Stable",
"Intended Audience :: Developers",
"Natural Language :: English",
"Operating System :: POSIX",
"Operating System :: Microsoft :: Windows",
"Operating System :: MacOS :: MacOS X",
"Topic :: Software Development :: Embedded Systems",
"Environment :: Console",
"License :: OSI Approved :: GNU General Public License v2 or later (GPLv2+)",
"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 :: 3.12",
],
python_requires=">=3.7",
setup_requires=(["wheel"] if "bdist_wheel" in sys.argv else []),
extras_require={
"dev": [
"flake8>=3.2.0",
"flake8-import-order",
"flake8-gl-codeclimate",
"pyelftools",
"coverage~=6.0",
"black",
"pre-commit",
"pytest",
"pytest-rerunfailures",
"requests",
"commitizen",
],
"hsm": [
"python-pkcs11",
],
},
install_requires=[
"bitstring>=3.1.6",
"cryptography>=2.1.4",
"ecdsa>=0.16.0",
"pyserial>=3.0",
"reedsolo>=1.5.3,<1.8",
"PyYAML>=5.1",
"intelhex",
],
packages=find_packages(),
include_package_data=True,
package_data={"": ["esptool/targets/stub_flasher/*.json"]},
entry_points=entry_points,
scripts=scripts,
)