From: Melissa LeBlanc-Williams Date: Wed, 18 Jun 2025 21:13:51 +0000 (-0700) Subject: Merge pull request #972 from makermelissa/main X-Git-Tag: 8.60.0 X-Git-Url: https://git.ayoreis.com/Adafruit_Blinka-hackapet.git/commitdiff_plain/5788587b9954641b31020f13faaed6ef6e3f3aec?hp=5ca7fdd9bbfa35b2b8331664f2b1a3235e818759 Merge pull request #972 from makermelissa/main Convert Blinka to use pyproject.toml --- diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 80940d0..52d16c1 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -16,10 +16,10 @@ jobs: - name: Translate Repo Name For Build Tools filename_prefix id: repo-name run: echo "repo-name=Adafruit-Blinka" >> $GITHUB_OUTPUT - - name: Set up Python 3.8 + - name: Set up Python 3.11 uses: actions/setup-python@v4 with: - python-version: 3.8 + python-version: 3.11 - name: Versions run: | python3 --version @@ -47,7 +47,12 @@ jobs: - name: Build docs working-directory: docs run: sphinx-build -E -W -b html . _build/html + - name: Check For pyproject.toml + id: need-pypi + run: | + echo "pyproject-toml=$( find . -wholename './pyproject.toml' )" >> $GITHUB_OUTPUT - name: Build Python package + if: contains(steps.need-pypi.outputs.pyproject-toml, 'pyproject.toml') run: | pip install --upgrade build twine for file in $(find -not -path "./.*" -not -path "./docs*" \( -name "*.py" -o -name "*.toml" \) ); do diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index a0eb8f5..71f7c07 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -12,22 +12,22 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - - name: Check For setup.py + - name: Check For pyproject.toml id: need-pypi run: | - echo "setup-py=$( find . -wholename './setup.py' )" >> $GITHUB_OUTPUT + echo "pyproject-toml=$( find . -wholename './pyproject.toml' )" >> $GITHUB_OUTPUT - name: Set up Python - if: contains(steps.need-pypi.outputs.setup-py, 'setup.py') + if: contains(steps.need-pypi.outputs.pyproject-toml, 'pyproject.toml') uses: actions/setup-python@v4 with: - python-version: '3.x' + python-version: '3.11' - name: Install dependencies - if: contains(steps.need-pypi.outputs.setup-py, 'setup.py') + if: contains(steps.need-pypi.outputs.pyproject-toml, 'pyproject.toml') run: | python -m pip install --upgrade pip pip install --upgrade build twine - name: Build and publish - if: contains(steps.need-pypi.outputs.setup-py, 'setup.py') + if: contains(steps.need-pypi.outputs.pyproject-toml, 'pyproject.toml') env: TWINE_USERNAME: ${{ secrets.pypi_username }} TWINE_PASSWORD: ${{ secrets.pypi_password }} diff --git a/docs/conf.py b/docs/conf.py index 0b0b04f..35c7aea 100755 --- a/docs/conf.py +++ b/docs/conf.py @@ -97,25 +97,21 @@ todo_emit_warnings = True # on_rtd = os.environ.get("READTHEDOCS", None) == "True" -if not on_rtd: # only import and set the theme if we're building docs locally - try: - import sphinx_rtd_theme - - html_theme = "sphinx_rtd_theme" - html_theme_path = [sphinx_rtd_theme.get_html_theme_path(), "."] - except: - html_theme = "default" - html_theme_path = ["."] -else: - html_theme_path = ["."] +html_theme = "sphinx_rtd_theme" # Add any paths that contain custom static files (such as style sheets) here, # relative to this directory. They are copied after the builtin static files, # so a file named "default.css" will overwrite the builtin "default.css". html_static_path = ["_static"] +# The name of an image file (relative to this directory) to use as a favicon of +# the docs. This file should be a Windows icon file (.ico) being 16x16 or 32x32 +# pixels large. +# +html_favicon = "_static/favicon.ico" + # Output file base name for HTML help builder. -htmlhelp_basename = "AdafruitBlinkaLibrarydoc" +htmlhelp_basename = "Adafruit_blinkaDisplayioLibrarydoc" # -- Options for LaTeX output --------------------------------------------- diff --git a/pyproject.toml b/pyproject.toml new file mode 100644 index 0000000..5ec61fc --- /dev/null +++ b/pyproject.toml @@ -0,0 +1,59 @@ +# SPDX-FileCopyrightText: 2022 Alec Delaney for Adafruit Industries +# +# SPDX-License-Identifier: MIT + +[build-system] +requires = [ + "setuptools", + "wheel", + "setuptools-scm", +] + +[project] +name = "Adafruit-Blinka" +description = "CircuitPython APIs for non-CircuitPython versions of Python such as CPython on Linux and MicroPython." +version = "0.0.0+auto.0" +readme = "README.rst" +authors = [ + {name = "Adafruit Industries", email = "circuitpython@adafruit.com"} +] +urls = {Homepage = "https://github.com/adafruit/Adafruit_Blinka"} +license = {text = "MIT"} +classifiers=[ + "Development Status :: 5 - Production/Stable", + "Intended Audience :: Developers", + "Topic :: Software Development :: Libraries", + "Topic :: System :: Hardware", + "License :: OSI Approved :: MIT License", + "Programming Language :: Python :: 3", + "Programming Language :: Python :: 3.7", +] +dynamic = ["dependencies"] + +[tool.setuptools] +py-modules = [ + "analogio", + "bitbangio", + "board", + "busio", + "digitalio", + "keypad", + "micropython", + "neopixel_write", + "onewireio", + "pulseio", + "pwmio", + "rainbowio", + "usb_hid", +] + +[tool.setuptools.packages.find] +where = ["src"] +include = [ + "adafruit_blinka.microcontroller.bcm283x.libgpiod_pulsein*", + "adafruit_blinka.microcontroller.amlogic.meson_g12_common.pulseio.libgpiod_pulsein*", + "*.pyi" +] + +[tool.setuptools.dynamic] +dependencies = {file = ["requirements.txt"]} diff --git a/requirements.txt b/requirements.txt index aec7911..f32d020 100755 --- a/requirements.txt +++ b/requirements.txt @@ -1,9 +1,12 @@ - # requirements.txt - # - # installs dependencies from ./setup.py, and the package itself, - # in editable mode - # -e . - - # (the -e above is optional). you could also just install the package - # normally with just the line below (after uncommenting) - . +Adafruit-PlatformDetect>=3.70.1 +Adafruit-PureIO>=1.1.7 +Jetson.GPIO; platform_machine=='aarch64' +RPi.GPIO; platform_machine=='armv7l' or platform_machine=='armv6l' or platform_machine=='aarch64' +rpi_ws281x>=4.0.0; platform_machine=='armv7l' or platform_machine=='armv6l' or platform_machine=='aarch64' +sysv_ipc>=1.1.0; sys_platform == 'linux' and platform_machine!='mips' +pyftdi>=0.40.0 +binho-host-adapter>=0.1.6 +adafruit-circuitpython-typing +toml>=0.10.2; python_version<'3.11' +lgpio>=0.2.2.0 +Adafruit-Blinka-Raspberry-Pi5-Neopixel; platform_machine=='aarch64' diff --git a/setup.py b/setup.py deleted file mode 100755 index b793194..0000000 --- a/setup.py +++ /dev/null @@ -1,115 +0,0 @@ -#!/usr/bin/env python -# -*- coding: utf-8 -*- - -# SPDX-FileCopyrightText: 2021 Melissa LeBlanc-Williams for Adafruit Industries -# -# SPDX-License-Identifier: MIT - -# Note: To use the 'upload' functionality of this file, you must: -# $ pip install twine - -import io -import os - -from setuptools import setup, find_packages - -here = os.path.abspath(os.path.dirname(__file__)) - -# Import the README and use it as the long-description. -# Note: this will only work if 'README.md' is present in your MANIFEST.in file! -with io.open(os.path.join(here, "README.rst"), encoding="utf-8") as f: - long_description = "\n" + f.read() - -board_reqs = [] -if os.path.exists("/proc/device-tree/compatible"): - with open("/proc/device-tree/compatible", "rb") as f: - compat = f.read() - # Jetson Nano, TX2, Xavier, etc - if b"nvidia,tegra" in compat: - board_reqs = ["Jetson.GPIO"] - # Pi 5 - elif b"brcm,bcm2712" in compat: - board_reqs = [ - "rpi_ws281x>=4.0.0", - "lgpio", - "Adafruit-Blinka-Raspberry-Pi5-Neopixel", - ] - # Pi 4 and Earlier - elif ( - b"brcm,bcm2835" in compat - or b"brcm,bcm2836" in compat - or b"brcm,bcm2837" in compat - or b"brcm,bcm2838" in compat - or b"brcm,bcm2711" in compat - ): - board_reqs = ["RPi.GPIO", "rpi_ws281x>=4.0.0"] - # BeagleBone Black, Green, PocketBeagle, BeagleBone AI, etc. - elif b"ti,am335x" in compat: - board_reqs = ["Adafruit_BBIO"] - -setup( - name="Adafruit-Blinka", - use_scm_version={ - # This is needed for the PyPI version munging in the Github Actions release.yml - "git_describe_command": "git describe --tags --long", - "local_scheme": "no-local-version", - }, - setup_requires=["setuptools_scm"], - description="CircuitPython APIs for non-CircuitPython versions of Python such as CPython on Linux and MicroPython.", - long_description=long_description, - long_description_content_type="text/x-rst", - author="Adafruit Industries", - author_email="circuitpython@adafruit.com", - python_requires=">=3.7.0", - url="https://github.com/adafruit/Adafruit_Blinka", - package_dir={"": "src"}, - packages=find_packages("src") + ["micropython-stubs"], - # py_modules lists top-level single file packages to include. - # find_packages only finds packages in directories with __init__.py files. - py_modules=[ - "analogio", - "bitbangio", - "board", - "busio", - "digitalio", - "keypad", - "micropython", - "neopixel_write", - "onewireio", - "pulseio", - "pwmio", - "rainbowio", - "usb_hid", - ], - package_data={ - "adafruit_blinka.microcontroller.bcm283x.pulseio": [ - "libgpiod_pulsein", - "libgpiod_pulsein64", - ], - "adafruit_blinka.microcontroller.amlogic.meson_g12_common.pulseio": [ - "libgpiod_pulsein", - ], - "micropython-stubs": ["*.pyi"], - }, - include_package_data=True, - install_requires=[ - "Adafruit-PlatformDetect>=3.70.1", - "Adafruit-PureIO>=1.1.7", - "binho-host-adapter>=0.1.6", - "pyftdi>=0.40.0", - "adafruit-circuitpython-typing", - "sysv_ipc>=1.1.0;sys_platform=='linux' and platform_machine!='mips'", - "toml>=0.10.2;python_version<'3.11'", - ] - + board_reqs, - license="MIT", - classifiers=[ - # Trove classifiers - # Full list: https://pypi.python.org/pypi?%3Aaction=list_classifiers - "License :: OSI Approved :: MIT License", - "Programming Language :: Python", - "Programming Language :: Python :: 3", - "Programming Language :: Python :: 3.7", - "Programming Language :: Python :: Implementation :: MicroPython", - ], -)