diff --git a/tools/mpremote/.gitignore b/tools/mpremote/.gitignore new file mode 100644 index 0000000000..849ddff3b7 --- /dev/null +++ b/tools/mpremote/.gitignore @@ -0,0 +1 @@ +dist/ diff --git a/tools/mpremote/mpremote/__init__.py b/tools/mpremote/mpremote/__init__.py index 6a9beea82f..d1416230b6 100644 --- a/tools/mpremote/mpremote/__init__.py +++ b/tools/mpremote/mpremote/__init__.py @@ -1 +1,12 @@ -__version__ = "0.4.0" +try: + from importlib.metadata import version, PackageNotFoundError + + try: + __version__ = version("mpremote") + except PackageNotFoundError: + # Error loading package version (e.g. running from source). + __version__ = "0.0.0-local" +except ImportError: + # importlib.metadata not available (e.g. CPython <3.8 without + # importlib_metadata compatibility package installed). + __version__ = "0.0.0-unknown" diff --git a/tools/mpremote/pyproject.toml b/tools/mpremote/pyproject.toml index 374b58cbf4..1b6c2173d2 100644 --- a/tools/mpremote/pyproject.toml +++ b/tools/mpremote/pyproject.toml @@ -1,6 +1,54 @@ [build-system] requires = [ - "setuptools>=42", - "wheel" + "hatchling", + "hatch-requirements-txt", + "hatch-vcs", ] -build-backend = "setuptools.build_meta" +build-backend = "hatchling.build" + +[project] +name = "mpremote" +description = "Tool for interacting remotely with MicroPython devices" +readme = "README.md" +authors = [ + {name = "Damien George", email = "damien@micropython.org"}, +] +urls = {Homepage = "https://github.com/micropython/micropython"} +keywords = [ + "hardware", + "micropython", +] +license = {text = "MIT"} +classifiers = [ + "Intended Audience :: Developers", + "License :: OSI Approved :: MIT License", + "Operating System :: OS Independent", + "Programming Language :: Python :: 3", + "Topic :: Software Development :: Embedded Systems", + "Topic :: System :: Hardware", +] +requires-python = ">=3.4" +dynamic = ["dependencies", "version"] + +[project.scripts] +mpremote = "mpremote.main:main" + +[tool.hatch.metadata.hooks.requirements_txt] +files = ["requirements.txt"] + +[tool.hatch.version] +source = "vcs" +tag-pattern = "(?Pv(\\d+).(\\d+).(\\d+))" +raw-options = { root = "../..", version_scheme = "post-release" } + +[tool.hatch.build] +packages = ["mpremote"] + +# Also grab pyboard.py from /tools and add it to the package for both wheel and sdist. +[tool.hatch.build.force-include] +"../pyboard.py" = "mpremote/pyboard.py" + +# Workaround to allow `python -m build` to work. +[tool.hatch.build.targets.sdist.force-include] +"../pyboard.py" = "mpremote/pyboard.py" +"requirements.txt" = "requirements.txt" diff --git a/tools/mpremote/requirements.txt b/tools/mpremote/requirements.txt new file mode 100644 index 0000000000..e4ca98fcaa --- /dev/null +++ b/tools/mpremote/requirements.txt @@ -0,0 +1,2 @@ +pyserial >= 3.3 +importlib_metadata >= 1.4 diff --git a/tools/mpremote/setup.cfg b/tools/mpremote/setup.cfg deleted file mode 100644 index 7fae3cbcb3..0000000000 --- a/tools/mpremote/setup.cfg +++ /dev/null @@ -1,25 +0,0 @@ -[metadata] -name = mpremote -version = 0.4.0 -author = Damien George -author_email = damien@micropython.org -description = Tool for interacting remotely with MicroPython -long_description = file: README.md -long_description_content_type = text/markdown -url = https://github.com/micropython/micropython -project_urls = - Bug Tracker = https://github.com/micropython/micropython/issues -classifiers = - Programming Language :: Python :: 3 - License :: OSI Approved :: MIT License - Operating System :: OS Independent - -[options] -packages = mpremote -python_requires = >= 3.4 -install_requires = - pyserial >= 3.3 - -[options.entry_points] -console_scripts = - mpremote = mpremote.main:main