--- setup.py.orig 2024-09-18 14:35:46.000000000 +0100 +++ setup.py 2024-09-25 14:36:56.623686000 +0100 @@ -1,5 +1,40 @@ +# 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 -from setuptools import setup +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"] @@ -15,7 +50,83 @@ ], } +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 `_. +Documentation +------------- +Visit online `esptool documentation `_ \ +or run ``esptool.py -h``. +Contributing +------------ +Please see the `contributions guide \ +`_. +""" + setup( - scripts=scripts, + 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": [ + "pyelftools", + "coverage~=6.0", + "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.3", + "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, )