diff --git a/.devfile/Containerfile.client b/.devfile/Containerfile.client index 6dbba09e2..88ea87382 100644 --- a/.devfile/Containerfile.client +++ b/.devfile/Containerfile.client @@ -6,7 +6,12 @@ RUN dnf install -y make git && \ rm -rf /var/cache/dnf COPY --from=uv /uv /uvx /bin/ ADD . /src -RUN make -C /src build +WORKDIR /src +RUN make sync +# remove the package dependency pinning for jumpstarter related packages +RUN uv run ./scripts/pin_release_versions.py --unpin +RUN make build + FROM quay.io/devfile/base-developer-image:ubi9-latest diff --git a/Dockerfile b/Dockerfile index edc7b3949..b3d577555 100644 --- a/Dockerfile +++ b/Dockerfile @@ -14,7 +14,11 @@ COPY --from=ghcr.io/astral-sh/uv:latest /uv /uvx /bin/ FROM builder AS wheels ADD . /src -RUN make -C /src build +WORKDIR /src +RUN make sync +# remove the package dependency pinning for jumpstarter related packages +RUN uv run ./scripts/pin_release_versions.py --unpin +RUN make build FROM product RUN --mount=from=wheels,source=/src/dist,target=/dist \ diff --git a/examples/automotive/pyproject.toml b/examples/automotive/pyproject.toml index 37e2deb90..4f517f6da 100644 --- a/examples/automotive/pyproject.toml +++ b/examples/automotive/pyproject.toml @@ -3,11 +3,13 @@ name = "jumpstarter-example-automotive" version = "0.1.0" description = "" authors = [ - { name = "Kirk Brauer", email = "kbrauer@hatci.com" }, - { name = "Nick Cao", email = "ncao@redhat.com" }, - { name = "Miguel Angel Ajo Pelayo", email = "majopela@redhat.com" }, + { name = "Kirk Brauer", email = "kbrauer@hatci.com" }, + { name = "Nick Cao", email = "ncao@redhat.com" }, + { name = "Miguel Angel Ajo Pelayo", email = "majopela@redhat.com" }, ] readme = "README.md" license = "Apache-2.0" requires-python = ">=3.11" -dependencies = ["jumpstarter"] +dependencies = [ + "jumpstarter ~= 0.6", +] diff --git a/examples/soc-pytest/pyproject.toml b/examples/soc-pytest/pyproject.toml index d77a8a680..34ed5d853 100644 --- a/examples/soc-pytest/pyproject.toml +++ b/examples/soc-pytest/pyproject.toml @@ -3,20 +3,20 @@ name = "jumpstarter-example-soc-pytest" version = "0.1.0" description = "" authors = [ - { name = "Miguel Angel Ajo Pelayo", email = "majopela@redhat.com" }, - { name = "Kirk Brauer", email = "kbrauer@hatci.com" }, - { name = "Nick Cao", email = "ncao@redhat.com" }, + { name = "Miguel Angel Ajo Pelayo", email = "majopela@redhat.com" }, + { name = "Kirk Brauer", email = "kbrauer@hatci.com" }, + { name = "Nick Cao", email = "ncao@redhat.com" }, ] readme = "README.md" license = "Apache-2.0" requires-python = ">=3.11" dependencies = [ - "pytest>=8.3.2", - "jumpstarter", - "jumpstarter-testing", - "jumpstarter-imagehash", - "jumpstarter-driver-network", - "jumpstarter-driver-dutlink", + "pytest>=8.3.2", + "jumpstarter ~= 0.6", + "jumpstarter-testing ~= 0.6", + "jumpstarter-imagehash ~= 0.6", + "jumpstarter-driver-network ~= 0.6", + "jumpstarter-driver-dutlink ~= 0.6", ] [tool.pytest.ini_options] diff --git a/packages/jumpstarter-all/pyproject.toml b/packages/jumpstarter-all/pyproject.toml index 55191d974..34abaeb23 100644 --- a/packages/jumpstarter-all/pyproject.toml +++ b/packages/jumpstarter-all/pyproject.toml @@ -1,45 +1,52 @@ [project] name = "jumpstarter-all" -dynamic = ["version", "urls"] +dynamic = [ + "version", + "urls", +] description = "Jumpstarter meta-package which will install all packages" -authors = [{ name = "Miguel Angel Ajo", email = "majopela@redhat.com" }] +authors = [ + { name = "Miguel Angel Ajo", email = "majopela@redhat.com" }, +] readme = "README.md" license = "Apache-2.0" requires-python = ">=3.11" dependencies = [ - "jumpstarter", - "jumpstarter-cli", - "jumpstarter-cli-admin", - "jumpstarter-cli-common", - "jumpstarter-cli-driver", - "jumpstarter-driver-can", - "jumpstarter-driver-composite", - "jumpstarter-driver-corellium", - "jumpstarter-driver-dutlink", - "jumpstarter-driver-flashers", - "jumpstarter-driver-http", - "jumpstarter-driver-network", - "jumpstarter-driver-opendal", - "jumpstarter-driver-power", - "jumpstarter-driver-probe-rs", - "jumpstarter-driver-pyserial", - "jumpstarter-driver-qemu", - "jumpstarter-driver-raspberrypi", - "jumpstarter-driver-sdwire", - "jumpstarter-driver-shell", - "jumpstarter-driver-snmp", - "jumpstarter-driver-tftp", - "jumpstarter-driver-uboot", - "jumpstarter-driver-ustreamer", - "jumpstarter-driver-yepkit", - "jumpstarter-imagehash", - "jumpstarter-kubernetes", - "jumpstarter-protocol", - "jumpstarter-testing", + "jumpstarter ~= 0.6", + "jumpstarter-cli ~= 0.6", + "jumpstarter-cli-admin ~= 0.6", + "jumpstarter-cli-common ~= 0.6", + "jumpstarter-cli-driver ~= 0.6", + "jumpstarter-driver-can ~= 0.6", + "jumpstarter-driver-composite ~= 0.6", + "jumpstarter-driver-corellium ~= 0.6", + "jumpstarter-driver-dutlink ~= 0.6", + "jumpstarter-driver-flashers ~= 0.6", + "jumpstarter-driver-http ~= 0.6", + "jumpstarter-driver-network ~= 0.6", + "jumpstarter-driver-opendal ~= 0.6", + "jumpstarter-driver-power ~= 0.6", + "jumpstarter-driver-probe-rs ~= 0.6", + "jumpstarter-driver-pyserial ~= 0.6", + "jumpstarter-driver-qemu ~= 0.6", + "jumpstarter-driver-raspberrypi ~= 0.6", + "jumpstarter-driver-sdwire ~= 0.6", + "jumpstarter-driver-shell ~= 0.6", + "jumpstarter-driver-snmp ~= 0.6", + "jumpstarter-driver-tftp ~= 0.6", + "jumpstarter-driver-uboot ~= 0.6", + "jumpstarter-driver-ustreamer ~= 0.6", + "jumpstarter-driver-yepkit ~= 0.6", + "jumpstarter-imagehash ~= 0.6", + "jumpstarter-kubernetes ~= 0.6", + "jumpstarter-protocol ~= 0.6", + "jumpstarter-testing ~= 0.6", ] [tool.hatch.build.targets.wheel] -packages = ["jumpstarter_all"] +packages = [ + "jumpstarter_all", +] [tool.hatch.metadata.hooks.vcs.urls] Homepage = "https://jumpstarter.dev" @@ -47,8 +54,13 @@ source_archive = "https://github.com/jumpstarter-dev/repo/archive/{commit_hash}. [tool.hatch.version] source = "vcs" -raw-options = { 'root' = '../../' } + +[tool.hatch.version.raw-options] +root = "../../" [build-system] -requires = ["hatchling", "hatch-vcs"] +requires = [ + "hatchling", + "hatch-vcs", +] build-backend = "hatchling.build" diff --git a/packages/jumpstarter-cli-admin/pyproject.toml b/packages/jumpstarter-cli-admin/pyproject.toml index 37b176751..b8dbc4600 100644 --- a/packages/jumpstarter-cli-admin/pyproject.toml +++ b/packages/jumpstarter-cli-admin/pyproject.toml @@ -1,26 +1,36 @@ [project] name = "jumpstarter-cli-admin" -dynamic = ["version", "urls"] +dynamic = [ + "version", + "urls", +] description = "" -authors = [{ name = "Kirk Brauer", email = "kbrauer@hatci.com" }] +authors = [ + { name = "Kirk Brauer", email = "kbrauer@hatci.com" }, +] readme = "README.md" license = "Apache-2.0" requires-python = ">=3.11" -dependencies = ["jumpstarter-cli-common", "jumpstarter-kubernetes"] - -[dependency-groups] -dev = [ - "pytest>=8.3.2", - "pytest-anyio>=0.0.0", - "pytest-asyncio>=0.0.0", - "pytest-cov>=5.0.0", +dependencies = [ + "jumpstarter-cli-common ~= 0.6", + "jumpstarter-kubernetes ~= 0.6", ] [project.scripts] jmp-admin = "jumpstarter_cli_admin:admin" +[dependency-groups] +dev = [ + "pytest>=8.3.2", + "pytest-anyio>=0.0.0", + "pytest-asyncio>=0.0.0", + "pytest-cov>=5.0.0", +] + [tool.hatch.build.targets.wheel] -packages = ["jumpstarter_cli_admin"] +packages = [ + "jumpstarter_cli_admin", +] [tool.hatch.metadata.hooks.vcs.urls] Homepage = "https://jumpstarter.dev" @@ -28,8 +38,13 @@ source_archive = "https://github.com/jumpstarter-dev/repo/archive/{commit_hash}. [tool.hatch.version] source = "vcs" -raw-options = { 'root' = '../../' } + +[tool.hatch.version.raw-options] +root = "../../" [build-system] -requires = ["hatchling", "hatch-vcs"] +requires = [ + "hatchling", + "hatch-vcs", +] build-backend = "hatchling.build" diff --git a/packages/jumpstarter-cli-common/pyproject.toml b/packages/jumpstarter-cli-common/pyproject.toml index 853e7ccfe..50f2d701c 100644 --- a/packages/jumpstarter-cli-common/pyproject.toml +++ b/packages/jumpstarter-cli-common/pyproject.toml @@ -1,31 +1,38 @@ [project] name = "jumpstarter-cli-common" -dynamic = ["version", "urls"] +dynamic = [ + "version", + "urls", +] description = "" -authors = [{ name = "Kirk Brauer", email = "kbrauer@hatci.com" }] +authors = [ + { name = "Kirk Brauer", email = "kbrauer@hatci.com" }, +] readme = "README.md" license = "Apache-2.0" requires-python = ">=3.11" dependencies = [ - "jumpstarter", - "pydantic>=2.8.2", - "asyncclick>=8.1.7.2", - "authlib>=1.4.1", - "truststore>=0.10.1", - "joserfc>=1.0.3", - "yarl>=1.18.3", + "jumpstarter ~= 0.6", + "pydantic>=2.8.2", + "asyncclick>=8.1.7.2", + "authlib>=1.4.1", + "truststore>=0.10.1", + "joserfc>=1.0.3", + "yarl>=1.18.3", ] [dependency-groups] dev = [ - "pytest>=8.3.2", - "pytest-anyio>=0.0.0", - "pytest-asyncio>=0.0.0", - "pytest-cov>=5.0.0", + "pytest>=8.3.2", + "pytest-anyio>=0.0.0", + "pytest-asyncio>=0.0.0", + "pytest-cov>=5.0.0", ] [tool.hatch.build.targets.wheel] -packages = ["jumpstarter_cli_common"] +packages = [ + "jumpstarter_cli_common", +] [tool.hatch.metadata.hooks.vcs.urls] Homepage = "https://jumpstarter.dev" @@ -33,8 +40,13 @@ source_archive = "https://github.com/jumpstarter-dev/repo/archive/{commit_hash}. [tool.hatch.version] source = "vcs" -raw-options = { 'root' = '../../' } + +[tool.hatch.version.raw-options] +root = "../../" [build-system] -requires = ["hatchling", "hatch-vcs"] +requires = [ + "hatchling", + "hatch-vcs", +] build-backend = "hatchling.build" diff --git a/packages/jumpstarter-cli-driver/pyproject.toml b/packages/jumpstarter-cli-driver/pyproject.toml index 5b773f95f..9b9d8a6a4 100644 --- a/packages/jumpstarter-cli-driver/pyproject.toml +++ b/packages/jumpstarter-cli-driver/pyproject.toml @@ -1,30 +1,38 @@ [project] name = "jumpstarter-cli-driver" -dynamic = ["version", "urls"] +dynamic = [ + "version", + "urls", +] description = "" authors = [ - { name = "Nick Cao", email = "ncao@redhat.com" }, - { name = "Miguel Angel Ajo Pelayo", email = "majopela@redhat.com" }, - { name = "Kirk Brauer", email = "kbrauer@hatci.com" }, + { name = "Nick Cao", email = "ncao@redhat.com" }, + { name = "Miguel Angel Ajo Pelayo", email = "majopela@redhat.com" }, + { name = "Kirk Brauer", email = "kbrauer@hatci.com" }, ] readme = "README.md" license = "Apache-2.0" requires-python = ">=3.11" -dependencies = ["jumpstarter-cli-common", "asyncclick>=8.1.7.2"] - -[dependency-groups] -dev = [ - "pytest>=8.3.2", - "pytest-anyio>=0.0.0", - "pytest-asyncio>=0.0.0", - "pytest-cov>=5.0.0", +dependencies = [ + "jumpstarter-cli-common ~= 0.6", + "asyncclick>=8.1.7.2", ] [project.scripts] jmp-driver = "jumpstarter_cli_driver:driver" +[dependency-groups] +dev = [ + "pytest>=8.3.2", + "pytest-anyio>=0.0.0", + "pytest-asyncio>=0.0.0", + "pytest-cov>=5.0.0", +] + [tool.hatch.build.targets.wheel] -packages = ["jumpstarter_cli_driver"] +packages = [ + "jumpstarter_cli_driver", +] [tool.hatch.metadata.hooks.vcs.urls] Homepage = "https://jumpstarter.dev" @@ -32,8 +40,13 @@ source_archive = "https://github.com/jumpstarter-dev/repo/archive/{commit_hash}. [tool.hatch.version] source = "vcs" -raw-options = { 'root' = '../../' } + +[tool.hatch.version.raw-options] +root = "../../" [build-system] -requires = ["hatchling", "hatch-vcs"] +requires = [ + "hatchling", + "hatch-vcs", +] build-backend = "hatchling.build" diff --git a/packages/jumpstarter-cli/pyproject.toml b/packages/jumpstarter-cli/pyproject.toml index c1f60090b..587bd4965 100644 --- a/packages/jumpstarter-cli/pyproject.toml +++ b/packages/jumpstarter-cli/pyproject.toml @@ -1,35 +1,40 @@ [project] name = "jumpstarter-cli" -dynamic = ["version", "urls"] +dynamic = [ + "version", + "urls", +] description = "" authors = [ - { name = "Nick Cao", email = "ncao@redhat.com" }, - { name = "Miguel Angel Ajo Pelayo", email = "majopela@redhat.com" }, - { name = "Kirk Brauer", email = "kbrauer@hatci.com" }, + { name = "Nick Cao", email = "ncao@redhat.com" }, + { name = "Miguel Angel Ajo Pelayo", email = "majopela@redhat.com" }, + { name = "Kirk Brauer", email = "kbrauer@hatci.com" }, ] readme = "README.md" license = "Apache-2.0" requires-python = ">=3.11" dependencies = [ - "jumpstarter-cli-admin", - "jumpstarter-cli-driver", - "rich>=14.0.0", -] - -[dependency-groups] -dev = [ - "pytest>=8.3.2", - "pytest-anyio>=0.0.0", - "pytest-asyncio>=0.0.0", - "pytest-cov>=5.0.0", + "jumpstarter-cli-admin ~= 0.6", + "jumpstarter-cli-driver ~= 0.6", + "rich>=14.0.0", ] [project.scripts] jmp = "jumpstarter_cli.jmp:jmp" j = "jumpstarter_cli.j:j" +[dependency-groups] +dev = [ + "pytest>=8.3.2", + "pytest-anyio>=0.0.0", + "pytest-asyncio>=0.0.0", + "pytest-cov>=5.0.0", +] + [tool.hatch.build.targets.wheel] -packages = ["jumpstarter_cli"] +packages = [ + "jumpstarter_cli", +] [tool.hatch.metadata.hooks.vcs.urls] Homepage = "https://jumpstarter.dev" @@ -37,8 +42,13 @@ source_archive = "https://github.com/jumpstarter-dev/repo/archive/{commit_hash}. [tool.hatch.version] source = "vcs" -raw-options = { 'root' = '../../' } + +[tool.hatch.version.raw-options] +root = "../../" [build-system] -requires = ["hatchling", "hatch-vcs"] +requires = [ + "hatchling", + "hatch-vcs", +] build-backend = "hatchling.build" diff --git a/packages/jumpstarter-driver-can/pyproject.toml b/packages/jumpstarter-driver-can/pyproject.toml index 363aec333..c8f02d97a 100644 --- a/packages/jumpstarter-driver-can/pyproject.toml +++ b/packages/jumpstarter-driver-can/pyproject.toml @@ -1,16 +1,23 @@ [project] name = "jumpstarter-driver-can" -dynamic = ["version", "urls"] +dynamic = [ + "version", + "urls", +] description = "" authors = [ - { name = "Miguel Angel Ajo Pelayo", email = "majopela@redhat.com" }, - { name = "Nick Cao", email = "ncao@redhat.com" }, - { name = "Kirk Brauer", email = "kbrauer@hatci.com" }, + { name = "Miguel Angel Ajo Pelayo", email = "majopela@redhat.com" }, + { name = "Nick Cao", email = "ncao@redhat.com" }, + { name = "Kirk Brauer", email = "kbrauer@hatci.com" }, ] readme = "README.md" license = "Apache-2.0" requires-python = ">=3.11" -dependencies = ["jumpstarter", "python-can>=4.5.0", "can-isotp>=2.0.6"] +dependencies = [ + "jumpstarter ~= 0.6", + "python-can>=4.5.0", + "can-isotp>=2.0.6", +] [project.entry-points."jumpstarter.drivers"] Can = "jumpstarter_driver_can.driver:Can" @@ -18,7 +25,10 @@ IsoTpPython = "jumpstarter_driver_can.driver:IsoTpPython" IsoTpSocket = "jumpstarter_driver_can.driver:IsoTpSocket" [dependency-groups] -dev = ["pytest>=8.3.2", "pytest-cov>=5.0.0"] +dev = [ + "pytest>=8.3.2", + "pytest-cov>=5.0.0", +] [tool.hatch.metadata.hooks.vcs.urls] Homepage = "https://jumpstarter.dev" @@ -26,8 +36,13 @@ source_archive = "https://github.com/jumpstarter-dev/repo/archive/{commit_hash}. [tool.hatch.version] source = "vcs" -raw-options = { 'root' = '../../' } + +[tool.hatch.version.raw-options] +root = "../../" [build-system] -requires = ["hatchling", "hatch-vcs"] +requires = [ + "hatchling", + "hatch-vcs", +] build-backend = "hatchling.build" diff --git a/packages/jumpstarter-driver-composite/pyproject.toml b/packages/jumpstarter-driver-composite/pyproject.toml index 2d0906bd2..f8a30d0c4 100644 --- a/packages/jumpstarter-driver-composite/pyproject.toml +++ b/packages/jumpstarter-driver-composite/pyproject.toml @@ -1,22 +1,32 @@ [project] name = "jumpstarter-driver-composite" -dynamic = ["version", "urls"] +dynamic = [ + "version", + "urls", +] description = "" authors = [ - { name = "Miguel Angel Ajo Pelayo", email = "majopela@redhat.com" }, - { name = "Nick Cao", email = "ncao@redhat.com" }, + { name = "Miguel Angel Ajo Pelayo", email = "majopela@redhat.com" }, + { name = "Nick Cao", email = "ncao@redhat.com" }, ] readme = "README.md" license = "Apache-2.0" requires-python = ">=3.11" -dependencies = ["jumpstarter", "asyncclick>=8.1.7.2"] +dependencies = [ + "jumpstarter ~= 0.6", + "asyncclick>=8.1.7.2", +] [project.entry-points."jumpstarter.drivers"] Composite = "jumpstarter_driver_composite.driver:Composite" Proxy = "jumpstarter_driver_composite.driver:Proxy" [dependency-groups] -dev = ["pytest>=8.3.2", "pytest-cov>=5.0.0", "jumpstarter-driver-power"] +dev = [ + "pytest>=8.3.2", + "pytest-cov>=5.0.0", + "jumpstarter-driver-power", +] [tool.hatch.metadata.hooks.vcs.urls] Homepage = "https://jumpstarter.dev" @@ -24,8 +34,13 @@ source_archive = "https://github.com/jumpstarter-dev/repo/archive/{commit_hash}. [tool.hatch.version] source = "vcs" -raw-options = { 'root' = '../../' } + +[tool.hatch.version.raw-options] +root = "../../" [build-system] -requires = ["hatchling", "hatch-vcs"] +requires = [ + "hatchling", + "hatch-vcs", +] build-backend = "hatchling.build" diff --git a/packages/jumpstarter-driver-corellium/pyproject.toml b/packages/jumpstarter-driver-corellium/pyproject.toml index c702a84e1..908a65288 100644 --- a/packages/jumpstarter-driver-corellium/pyproject.toml +++ b/packages/jumpstarter-driver-corellium/pyproject.toml @@ -1,25 +1,36 @@ [project] name = "jumpstarter_driver_corellium" -dynamic = ["version", "urls"] +dynamic = [ + "version", + "urls", +] description = "" -authors = [{ name = "Leonardo Rossetti", email = "lrossett@redhat.com" }] +authors = [ + { name = "Leonardo Rossetti", email = "lrossett@redhat.com" }, +] readme = "README.md" license = "Apache-2.0" requires-python = ">=3.11" dependencies = [ - "jumpstarter", - "jumpstarter-driver-composite", - "jumpstarter-driver-power", - "jumpstarter-driver-network", - "jumpstarter-driver-pyserial", - "asyncclick>=8.1.7.2", + "jumpstarter ~= 0.6", + "jumpstarter-driver-composite ~= 0.6", + "jumpstarter-driver-power ~= 0.6", + "jumpstarter-driver-network ~= 0.6", + "jumpstarter-driver-pyserial ~= 0.6", + "asyncclick>=8.1.7.2", ] [project.entry-points."jumpstarter.drivers"] Corellium = "jumpstarter_driver_corellium.driver:Corellium" [dependency-groups] -dev = ["pytest>=8.3.2", "pytest-cov>=5.0.0", "trio>=0.28.0", "requests_mock", "pytest-asyncio>=0.25.3"] +dev = [ + "pytest>=8.3.2", + "pytest-cov>=5.0.0", + "trio>=0.28.0", + "requests_mock", + "pytest-asyncio>=0.25.3", +] [tool.hatch.metadata.hooks.vcs.urls] Homepage = "https://jumpstarter.dev" @@ -27,8 +38,13 @@ source_archive = "https://github.com/jumpstarter-dev/repo/archive/{commit_hash}. [tool.hatch.version] source = "vcs" -raw-options = { 'root' = '../../' } + +[tool.hatch.version.raw-options] +root = "../../" [build-system] -requires = ["hatchling", "hatch-vcs"] +requires = [ + "hatchling", + "hatch-vcs", +] build-backend = "hatchling.build" diff --git a/packages/jumpstarter-driver-dutlink/pyproject.toml b/packages/jumpstarter-driver-dutlink/pyproject.toml index 22f213337..0e4ccfedc 100644 --- a/packages/jumpstarter-driver-dutlink/pyproject.toml +++ b/packages/jumpstarter-driver-dutlink/pyproject.toml @@ -1,25 +1,28 @@ [project] name = "jumpstarter-driver-dutlink" -dynamic = ["version", "urls"] +dynamic = [ + "version", + "urls", +] description = "" authors = [ - { name = "Miguel Angel Ajo Pelayo", email = "majopela@redhat.com" }, - { name = "Nick Cao", email = "ncao@redhat.com" }, - { name = "Kirk Brauer", email = "kbrauer@hatci.com" }, + { name = "Miguel Angel Ajo Pelayo", email = "majopela@redhat.com" }, + { name = "Nick Cao", email = "ncao@redhat.com" }, + { name = "Kirk Brauer", email = "kbrauer@hatci.com" }, ] readme = "README.md" license = "Apache-2.0" requires-python = ">=3.11" dependencies = [ - "jumpstarter", - "jumpstarter-driver-composite", - "jumpstarter-driver-pyserial", - "jumpstarter-driver-opendal", - "jumpstarter-driver-network", - "jumpstarter-driver-power", - "pyudev>=0.24.3", - "pyusb>=1.2.1", - "asyncclick>=8.1.7.2", + "jumpstarter ~= 0.6", + "jumpstarter-driver-composite ~= 0.6", + "jumpstarter-driver-pyserial ~= 0.6", + "jumpstarter-driver-opendal ~= 0.6", + "jumpstarter-driver-network ~= 0.6", + "jumpstarter-driver-power ~= 0.6", + "pyudev>=0.24.3", + "pyusb>=1.2.1", + "asyncclick>=8.1.7.2", ] [project.entry-points."jumpstarter.drivers"] @@ -29,7 +32,10 @@ DutlinkStorageMux = "jumpstarter_driver_dutlink.driver:DutlinkStorageMux" DutlinkPower = "jumpstarter_driver_dutlink.driver:DutlinkPower" [dependency-groups] -dev = ["pytest>=8.3.2", "pytest-cov>=5.0.0"] +dev = [ + "pytest>=8.3.2", + "pytest-cov>=5.0.0", +] [tool.hatch.metadata.hooks.vcs.urls] Homepage = "https://jumpstarter.dev" @@ -37,8 +43,13 @@ source_archive = "https://github.com/jumpstarter-dev/repo/archive/{commit_hash}. [tool.hatch.version] source = "vcs" -raw-options = { 'root' = '../../' } + +[tool.hatch.version.raw-options] +root = "../../" [build-system] -requires = ["hatchling", "hatch-vcs"] +requires = [ + "hatchling", + "hatch-vcs", +] build-backend = "hatchling.build" diff --git a/packages/jumpstarter-driver-flashers/pyproject.toml b/packages/jumpstarter-driver-flashers/pyproject.toml index f82d5d599..1f424d5f5 100644 --- a/packages/jumpstarter-driver-flashers/pyproject.toml +++ b/packages/jumpstarter-driver-flashers/pyproject.toml @@ -1,6 +1,9 @@ [project] name = "jumpstarter-driver-flashers" -dynamic = ["version", "urls"] +dynamic = [ + "version", + "urls", +] description = "Jumpstarter software defined flasher driver" readme = "README.md" license = "Apache-2.0" @@ -12,18 +15,20 @@ requires-python = ">=3.11" dependencies = [ "oras>=0.2.25", "anyio>=4.6.2.post1", - "jumpstarter", - "jumpstarter-driver-opendal", - "jumpstarter-driver-pyserial", - "jumpstarter-driver-http", - "jumpstarter-driver-tftp", - "jumpstarter-driver-power", - "jumpstarter-driver-uboot", + "jumpstarter ~= 0.6", + "jumpstarter-driver-opendal ~= 0.6", + "jumpstarter-driver-pyserial ~= 0.6", + "jumpstarter-driver-http ~= 0.6", + "jumpstarter-driver-tftp ~= 0.6", + "jumpstarter-driver-power ~= 0.6", + "jumpstarter-driver-uboot ~= 0.6", ] [tool.hatch.version] source = "vcs" -raw-options = { 'root' = '../../' } + +[tool.hatch.version.raw-options] +root = "../../" [tool.hatch.metadata.hooks.vcs.urls] Homepage = "https://jumpstarter.dev" @@ -33,15 +38,22 @@ source_archive = "https://github.com/jumpstarter-dev/repo/archive/{commit_hash}. addopts = "--cov --cov-report=html --cov-report=xml" log_cli = true log_cli_level = "INFO" -testpaths = ["jumpstarter_driver_flashers"] +testpaths = [ + "jumpstarter_driver_flashers", +] -[tool.uv.sources] -jumpstarter-driver-uboot = { workspace = true } -#asyncio_mode = "auto" +[tool.uv.sources.jumpstarter-driver-uboot] +workspace = true [build-system] -requires = ["hatchling", "hatch-vcs"] +requires = [ + "hatchling", + "hatch-vcs", +] build-backend = "hatchling.build" [dependency-groups] -dev = ["pytest-cov>=6.0.0", "pytest>=8.3.3"] +dev = [ + "pytest-cov>=6.0.0", + "pytest>=8.3.3", +] diff --git a/packages/jumpstarter-driver-http/pyproject.toml b/packages/jumpstarter-driver-http/pyproject.toml index 286d367e9..5ef7f6702 100644 --- a/packages/jumpstarter-driver-http/pyproject.toml +++ b/packages/jumpstarter-driver-http/pyproject.toml @@ -1,22 +1,29 @@ [project] name = "jumpstarter-driver-http" -dynamic = ["version", "urls"] +dynamic = [ + "version", + "urls", +] description = "Exporter HTTP service driver" readme = "README.md" license = "Apache-2.0" -authors = [{ name = "Benny Zlotnik", email = "bzlotnik@redhat.com" }] +authors = [ + { name = "Benny Zlotnik", email = "bzlotnik@redhat.com" }, +] requires-python = ">=3.11" dependencies = [ "anyio>=4.6.2.post1", - "jumpstarter", - "jumpstarter-driver-composite", - "jumpstarter-driver-opendal", + "jumpstarter ~= 0.6", + "jumpstarter-driver-composite ~= 0.6", + "jumpstarter-driver-opendal ~= 0.6", "yarl>=1.18.3", ] [tool.hatch.version] source = "vcs" -raw-options = { 'root' = '../../' } + +[tool.hatch.version.raw-options] +root = "../../" [tool.hatch.metadata.hooks.vcs.urls] Homepage = "https://jumpstarter.dev" @@ -25,10 +32,15 @@ source_archive = "https://github.com/jumpstarter-dev/repo/archive/{commit_hash}. [tool.pytest.ini_options] asyncio_mode = "strict" asyncio_default_fixture_loop_scope = "function" -testpaths = ["src"] +testpaths = [ + "src", +] [build-system] -requires = ["hatchling", "hatch-vcs"] +requires = [ + "hatchling", + "hatch-vcs", +] build-backend = "hatchling.build" [dependency-groups] diff --git a/packages/jumpstarter-driver-network/pyproject.toml b/packages/jumpstarter-driver-network/pyproject.toml index 5853a8372..c752d6eba 100644 --- a/packages/jumpstarter-driver-network/pyproject.toml +++ b/packages/jumpstarter-driver-network/pyproject.toml @@ -1,21 +1,24 @@ [project] name = "jumpstarter-driver-network" -dynamic = ["version", "urls"] +dynamic = [ + "version", + "urls", +] description = "" authors = [ - { name = "Miguel Angel Ajo Pelayo", email = "majopela@redhat.com" }, - { name = "Nick Cao", email = "ncao@redhat.com" }, + { name = "Miguel Angel Ajo Pelayo", email = "majopela@redhat.com" }, + { name = "Nick Cao", email = "ncao@redhat.com" }, ] readme = "README.md" license = "Apache-2.0" requires-python = ">=3.11" dependencies = [ - "jumpstarter", - "pexpect>=4.9.0", - "fabric>=3.2.2", - "wsproto>=1.2.0", - "asyncclick>=8.1.8", - "websockets>=15.0.1" + "jumpstarter ~= 0.6", + "pexpect>=4.9.0", + "fabric>=3.2.2", + "wsproto>=1.2.0", + "asyncclick>=8.1.8", + "websockets>=15.0.1", ] [project.entry-points."jumpstarter.drivers"] @@ -32,12 +35,12 @@ Novnc = "jumpstarter_driver_network.adapters:NovncAdapter" [dependency-groups] dev = [ - "pytest>=8.3.2", - "pytest-asyncio>=0.26.0", - "pytest-cov>=5.0.0", - "types-paramiko>=3.5.0.20240928", - "types-pexpect>=4.9.0.20241208", - "websocket-client>=1.8.0", + "pytest>=8.3.2", + "pytest-asyncio>=0.26.0", + "pytest-cov>=5.0.0", + "types-paramiko>=3.5.0.20240928", + "types-pexpect>=4.9.0.20241208", + "websocket-client>=1.8.0", ] [tool.hatch.metadata.hooks.vcs.urls] @@ -46,8 +49,13 @@ source_archive = "https://github.com/jumpstarter-dev/repo/archive/{commit_hash}. [tool.hatch.version] source = "vcs" -raw-options = { 'root' = '../../' } + +[tool.hatch.version.raw-options] +root = "../../" [build-system] -requires = ["hatchling", "hatch-vcs"] +requires = [ + "hatchling", + "hatch-vcs", +] build-backend = "hatchling.build" diff --git a/packages/jumpstarter-driver-opendal/pyproject.toml b/packages/jumpstarter-driver-opendal/pyproject.toml index 7f30a0c44..e6d4ed869 100644 --- a/packages/jumpstarter-driver-opendal/pyproject.toml +++ b/packages/jumpstarter-driver-opendal/pyproject.toml @@ -1,21 +1,31 @@ [project] name = "jumpstarter-driver-opendal" -dynamic = ["version", "urls"] +dynamic = [ + "version", + "urls", +] description = "" authors = [ - { name = "Miguel Angel Ajo Pelayo", email = "majopela@redhat.com" }, - { name = "Nick Cao", email = "ncao@redhat.com" }, + { name = "Miguel Angel Ajo Pelayo", email = "majopela@redhat.com" }, + { name = "Nick Cao", email = "ncao@redhat.com" }, ] readme = "README.md" license = "Apache-2.0" requires-python = ">=3.11" -dependencies = ["jumpstarter", "opendal>=0.45.8", "asyncclick>=8.1.7.2"] +dependencies = [ + "jumpstarter ~= 0.6", + "opendal>=0.45.8", + "asyncclick>=8.1.7.2", +] [project.entry-points."jumpstarter.adapters"] Opendal = "jumpstarter_driver_opendal.adapters:OpendalAdapter" [dependency-groups] -dev = ["pytest>=8.3.2", "pytest-cov>=5.0.0"] +dev = [ + "pytest>=8.3.2", + "pytest-cov>=5.0.0", +] [tool.hatch.metadata.hooks.vcs.urls] Homepage = "https://jumpstarter.dev" @@ -23,8 +33,13 @@ source_archive = "https://github.com/jumpstarter-dev/repo/archive/{commit_hash}. [tool.hatch.version] source = "vcs" -raw-options = { 'root' = '../../' } + +[tool.hatch.version.raw-options] +root = "../../" [build-system] -requires = ["hatchling", "hatch-vcs"] +requires = [ + "hatchling", + "hatch-vcs", +] build-backend = "hatchling.build" diff --git a/packages/jumpstarter-driver-power/pyproject.toml b/packages/jumpstarter-driver-power/pyproject.toml index 4f355cbcf..a2a737fbb 100644 --- a/packages/jumpstarter-driver-power/pyproject.toml +++ b/packages/jumpstarter-driver-power/pyproject.toml @@ -1,21 +1,32 @@ [project] name = "jumpstarter-driver-power" -dynamic = ["version", "urls"] +dynamic = [ + "version", + "urls", +] description = "" authors = [ - { name = "Miguel Angel Ajo Pelayo", email = "majopela@redhat.com" }, - { name = "Nick Cao", email = "ncao@redhat.com" }, + { name = "Miguel Angel Ajo Pelayo", email = "majopela@redhat.com" }, + { name = "Nick Cao", email = "ncao@redhat.com" }, ] readme = "README.md" license = "Apache-2.0" requires-python = ">=3.11" -dependencies = ["jumpstarter", "pyserial>=3.5", "asyncclick>=8.1.7.2"] +dependencies = [ + "jumpstarter ~= 0.6", + "pyserial>=3.5", + "asyncclick>=8.1.7.2", +] [project.entry-points."jumpstarter.drivers"] MockPower = "jumpstarter_driver_power.driver:MockPower" [dependency-groups] -dev = ["pytest>=8.3.2", "pytest-cov>=5.0.0", "trio>=0.28.0"] +dev = [ + "pytest>=8.3.2", + "pytest-cov>=5.0.0", + "trio>=0.28.0", +] [tool.hatch.metadata.hooks.vcs.urls] Homepage = "https://jumpstarter.dev" @@ -23,8 +34,13 @@ source_archive = "https://github.com/jumpstarter-dev/repo/archive/{commit_hash}. [tool.hatch.version] source = "vcs" -raw-options = { 'root' = '../../' } + +[tool.hatch.version.raw-options] +root = "../../" [build-system] -requires = ["hatchling", "hatch-vcs"] +requires = [ + "hatchling", + "hatch-vcs", +] build-backend = "hatchling.build" diff --git a/packages/jumpstarter-driver-probe-rs/pyproject.toml b/packages/jumpstarter-driver-probe-rs/pyproject.toml index 535d3b0a0..cc8f37b8a 100644 --- a/packages/jumpstarter-driver-probe-rs/pyproject.toml +++ b/packages/jumpstarter-driver-probe-rs/pyproject.toml @@ -1,21 +1,28 @@ [project] name = "jumpstarter-driver-probe-rs" -dynamic = ["version", "urls"] +dynamic = [ + "version", + "urls", +] description = "rust probe-rs driver for jumpstarter" readme = "README.md" license = "Apache-2.0" -authors = [{ name = "Miguel Angel Ajo", email = "miguelangel@ajo.es" }] +authors = [ + { name = "Miguel Angel Ajo", email = "miguelangel@ajo.es" }, +] requires-python = ">=3.11" dependencies = [ "anyio>=4.6.2.post1", "asyncclick>=8.1.7.2", - "jumpstarter", - "jumpstarter-driver-opendal", + "jumpstarter ~= 0.6", + "jumpstarter-driver-opendal ~= 0.6", ] [tool.hatch.version] source = "vcs" -raw-options = { 'root' = '../../' } + +[tool.hatch.version.raw-options] +root = "../../" [tool.hatch.metadata.hooks.vcs.urls] Homepage = "https://jumpstarter.dev" @@ -25,11 +32,19 @@ source_archive = "https://github.com/jumpstarter-dev/repo/archive/{commit_hash}. addopts = "--cov --cov-report=html --cov-report=xml" log_cli = true log_cli_level = "INFO" -testpaths = ["jumpstarter_driver_probe_rs"] +testpaths = [ + "jumpstarter_driver_probe_rs", +] [build-system] -requires = ["hatchling", "hatch-vcs"] +requires = [ + "hatchling", + "hatch-vcs", +] build-backend = "hatchling.build" [dependency-groups] -dev = ["pytest-cov>=6.0.0", "pytest>=8.3.3"] +dev = [ + "pytest-cov>=6.0.0", + "pytest>=8.3.3", +] diff --git a/packages/jumpstarter-driver-pyserial/pyproject.toml b/packages/jumpstarter-driver-pyserial/pyproject.toml index 526272f80..3f725c775 100644 --- a/packages/jumpstarter-driver-pyserial/pyproject.toml +++ b/packages/jumpstarter-driver-pyserial/pyproject.toml @@ -1,28 +1,31 @@ [project] name = "jumpstarter-driver-pyserial" -dynamic = ["version", "urls"] +dynamic = [ + "version", + "urls", +] description = "" authors = [ - { name = "Miguel Angel Ajo Pelayo", email = "majopela@redhat.com" }, - { name = "Nick Cao", email = "ncao@redhat.com" }, + { name = "Miguel Angel Ajo Pelayo", email = "majopela@redhat.com" }, + { name = "Nick Cao", email = "ncao@redhat.com" }, ] readme = "README.md" license = "Apache-2.0" requires-python = ">=3.11" dependencies = [ - "jumpstarter", - "jumpstarter-driver-network", - "pyserial>=3.5", - "asyncclick>=8.1.7.2", - "pyserial-asyncio>=0.6", + "jumpstarter ~= 0.6", + "jumpstarter-driver-network ~= 0.6", + "pyserial>=3.5", + "asyncclick>=8.1.7.2", + "pyserial-asyncio>=0.6", ] [dependency-groups] dev = [ - "pytest>=8.3.2", - "pytest-cov>=5.0.0", - "types-pexpect>=4.9.0.20241208", - "types-pyserial>=3.5.0.20250130", + "pytest>=8.3.2", + "pytest-cov>=5.0.0", + "types-pexpect>=4.9.0.20241208", + "types-pyserial>=3.5.0.20250130", ] [tool.hatch.metadata.hooks.vcs.urls] @@ -31,8 +34,13 @@ source_archive = "https://github.com/jumpstarter-dev/repo/archive/{commit_hash}. [tool.hatch.version] source = "vcs" -raw-options = { 'root' = '../../' } + +[tool.hatch.version.raw-options] +root = "../../" [build-system] -requires = ["hatchling", "hatch-vcs"] +requires = [ + "hatchling", + "hatch-vcs", +] build-backend = "hatchling.build" diff --git a/packages/jumpstarter-driver-qemu/pyproject.toml b/packages/jumpstarter-driver-qemu/pyproject.toml index 2ca838c1f..06af4ffb8 100644 --- a/packages/jumpstarter-driver-qemu/pyproject.toml +++ b/packages/jumpstarter-driver-qemu/pyproject.toml @@ -1,28 +1,35 @@ [project] name = "jumpstarter-driver-qemu" -dynamic = ["version", "urls"] +dynamic = [ + "version", + "urls", +] description = "" authors = [ - { name = "Nick Cao", email = "ncao@redhat.com" }, - { name = "Miguel Angel Ajo Pelayo", email = "majopela@redhat.com" }, - { name = "Kirk Brauer", email = "kbrauer@hatci.com" }, + { name = "Nick Cao", email = "ncao@redhat.com" }, + { name = "Miguel Angel Ajo Pelayo", email = "majopela@redhat.com" }, + { name = "Kirk Brauer", email = "kbrauer@hatci.com" }, ] readme = "README.md" license = "Apache-2.0" requires-python = ">=3.11" dependencies = [ - "jumpstarter", - "jumpstarter-driver-composite", - "jumpstarter-driver-network", - "jumpstarter-driver-opendal", - "jumpstarter-driver-power", - "jumpstarter-driver-pyserial", - "pyyaml>=6.0.2", - "qemu-qmp>=0.0.3", + "jumpstarter ~= 0.6", + "jumpstarter-driver-composite ~= 0.6", + "jumpstarter-driver-network ~= 0.6", + "jumpstarter-driver-opendal ~= 0.6", + "jumpstarter-driver-power ~= 0.6", + "jumpstarter-driver-pyserial ~= 0.6", + "pyyaml>=6.0.2", + "qemu-qmp>=0.0.3", ] [dependency-groups] -dev = ["pytest>=8.3.2", "pytest-cov>=5.0.0", "requests>=2.32.3"] +dev = [ + "pytest>=8.3.2", + "pytest-cov>=5.0.0", + "requests>=2.32.3", +] [tool.hatch.metadata.hooks.vcs.urls] Homepage = "https://jumpstarter.dev" @@ -30,15 +37,28 @@ source_archive = "https://github.com/jumpstarter-dev/repo/archive/{commit_hash}. [tool.hatch.version] source = "vcs" -raw-options = { 'root' = '../../' } -[tool.uv.sources] -jumpstarter-driver-opendal = { workspace = true } -jumpstarter-driver-composite = { workspace = true } -jumpstarter-driver-network = { workspace = true } -jumpstarter-driver-pyserial = { workspace = true } -jumpstarter-driver-power = { workspace = true } +[tool.hatch.version.raw-options] +root = "../../" + +[tool.uv.sources.jumpstarter-driver-opendal] +workspace = true + +[tool.uv.sources.jumpstarter-driver-composite] +workspace = true + +[tool.uv.sources.jumpstarter-driver-network] +workspace = true + +[tool.uv.sources.jumpstarter-driver-pyserial] +workspace = true + +[tool.uv.sources.jumpstarter-driver-power] +workspace = true [build-system] -requires = ["hatchling", "hatch-vcs"] +requires = [ + "hatchling", + "hatch-vcs", +] build-backend = "hatchling.build" diff --git a/packages/jumpstarter-driver-raspberrypi/pyproject.toml b/packages/jumpstarter-driver-raspberrypi/pyproject.toml index 8115ed4e8..79155cf76 100644 --- a/packages/jumpstarter-driver-raspberrypi/pyproject.toml +++ b/packages/jumpstarter-driver-raspberrypi/pyproject.toml @@ -1,23 +1,32 @@ [project] name = "jumpstarter-driver-raspberrypi" -dynamic = ["version", "urls"] +dynamic = [ + "version", + "urls", +] description = "" authors = [ - { name = "Miguel Angel Ajo Pelayo", email = "majopela@redhat.com" }, - { name = "Nick Cao", email = "ncao@redhat.com" }, - { name = "Kirk Brauer", email = "kbrauer@hatci.com" }, + { name = "Miguel Angel Ajo Pelayo", email = "majopela@redhat.com" }, + { name = "Nick Cao", email = "ncao@redhat.com" }, + { name = "Kirk Brauer", email = "kbrauer@hatci.com" }, ] readme = "README.md" license = "Apache-2.0" requires-python = ">=3.11" -dependencies = ["jumpstarter", "gpiozero>=2.0.1"] +dependencies = [ + "jumpstarter ~= 0.6", + "gpiozero>=2.0.1", +] [project.entry-points."jumpstarter.drivers"] DigitalInput = "jumpstarter_driver_raspberrypi.driver:DigitalInput" DigitalOutput = "jumpstarter_driver_raspberrypi.driver:DigitalOutput" [dependency-groups] -dev = ["pytest>=8.3.2", "pytest-cov>=5.0.0"] +dev = [ + "pytest>=8.3.2", + "pytest-cov>=5.0.0", +] [tool.hatch.metadata.hooks.vcs.urls] Homepage = "https://jumpstarter.dev" @@ -25,8 +34,13 @@ source_archive = "https://github.com/jumpstarter-dev/repo/archive/{commit_hash}. [tool.hatch.version] source = "vcs" -raw-options = { 'root' = '../../' } + +[tool.hatch.version.raw-options] +root = "../../" [build-system] -requires = ["hatchling", "hatch-vcs"] +requires = [ + "hatchling", + "hatch-vcs", +] build-backend = "hatchling.build" diff --git a/packages/jumpstarter-driver-sdwire/pyproject.toml b/packages/jumpstarter-driver-sdwire/pyproject.toml index a0f621b89..a6d63f81d 100644 --- a/packages/jumpstarter-driver-sdwire/pyproject.toml +++ b/packages/jumpstarter-driver-sdwire/pyproject.toml @@ -1,23 +1,31 @@ [project] name = "jumpstarter-driver-sdwire" -dynamic = ["version", "urls"] +dynamic = [ + "version", + "urls", +] description = "" -authors = [{ name = "Nick Cao", email = "ncao@redhat.com" }] +authors = [ + { name = "Nick Cao", email = "ncao@redhat.com" }, +] readme = "README.md" license = "Apache-2.0" requires-python = ">=3.11" dependencies = [ - "jumpstarter", - "jumpstarter-driver-opendal", - "pyusb>=1.2.1", - "pyudev>=0.24.3", + "jumpstarter ~= 0.6", + "jumpstarter-driver-opendal ~= 0.6", + "pyusb>=1.2.1", + "pyudev>=0.24.3", ] [project.entry-points."jumpstarter.drivers"] SDWire = "jumpstarter_driver_sdwire.driver:SDWire" [dependency-groups] -dev = ["pytest>=8.3.2", "pytest-cov>=5.0.0"] +dev = [ + "pytest>=8.3.2", + "pytest-cov>=5.0.0", +] [tool.hatch.metadata.hooks.vcs.urls] Homepage = "https://jumpstarter.dev" @@ -25,8 +33,13 @@ source_archive = "https://github.com/jumpstarter-dev/repo/archive/{commit_hash}. [tool.hatch.version] source = "vcs" -raw-options = { 'root' = '../../' } + +[tool.hatch.version.raw-options] +root = "../../" [build-system] -requires = ["hatchling", "hatch-vcs"] +requires = [ + "hatchling", + "hatch-vcs", +] build-backend = "hatchling.build" diff --git a/packages/jumpstarter-driver-shell/pyproject.toml b/packages/jumpstarter-driver-shell/pyproject.toml index 356556c28..7456ca082 100644 --- a/packages/jumpstarter-driver-shell/pyproject.toml +++ b/packages/jumpstarter-driver-shell/pyproject.toml @@ -1,25 +1,31 @@ [project] name = "jumpstarter-driver-shell" -dynamic = ["version", "urls"] +dynamic = [ + "version", + "urls", +] description = "Jumpstarter shell driver, for running controlled shell commands on the exporter." readme = "README.md" -authors = [{ name = "Miguel Angel Ajo", email = "miguelangel@ajo.es" }] +authors = [ + { name = "Miguel Angel Ajo", email = "miguelangel@ajo.es" }, +] requires-python = ">=3.11" license = "Apache-2.0" -dependencies = ["anyio>=4.6.2.post1", "jumpstarter"] +dependencies = [ + "anyio>=4.6.2.post1", + "jumpstarter ~= 0.6", +] [project.entry-points."jumpstarter.drivers"] Shell = "jumpstarter_driver_shell.driver:Shell" + [tool.pytest.ini_options] addopts = "--cov --cov-report=html --cov-report=xml" log_cli = true log_cli_level = "INFO" -testpaths = ["jumpstarter_driver_shell"] - - -[dependency-groups] -dev = ["pytest-cov>=6.0.0", "pytest>=8.3.3"] - +testpaths = [ + "jumpstarter_driver_shell", +] [tool.hatch.metadata.hooks.vcs.urls] Homepage = "https://jumpstarter.dev" @@ -27,8 +33,19 @@ source_archive = "https://github.com/jumpstarter-dev/repo/archive/{commit_hash}. [tool.hatch.version] source = "vcs" -raw-options = { 'root' = '../../' } + +[tool.hatch.version.raw-options] +root = "../../" + +[dependency-groups] +dev = [ + "pytest-cov>=6.0.0", + "pytest>=8.3.3", +] [build-system] -requires = ["hatchling", "hatch-vcs"] +requires = [ + "hatchling", + "hatch-vcs", +] build-backend = "hatchling.build" diff --git a/packages/jumpstarter-driver-snmp/pyproject.toml b/packages/jumpstarter-driver-snmp/pyproject.toml index 3b9177c00..0218d2540 100644 --- a/packages/jumpstarter-driver-snmp/pyproject.toml +++ b/packages/jumpstarter-driver-snmp/pyproject.toml @@ -1,14 +1,20 @@ [project] name = "jumpstarter-driver-snmp" -dynamic = ["version", "urls"] +dynamic = [ + "version", + "urls", +] description = "SNMP driver" readme = "README.md" requires-python = ">=3.11" license = "Apache-2.0" -authors = [{ name = "Benny Zlotnik", email = "bzlotnik@redhat.com" }] - -dependencies = ["jumpstarter", "pysnmp==7.1.16"] - +authors = [ + { name = "Benny Zlotnik", email = "bzlotnik@redhat.com" }, +] +dependencies = [ + "jumpstarter ~= 0.6", + "pysnmp==7.1.16", +] [dependency-groups] dev = [ @@ -19,11 +25,12 @@ dev = [ "jumpstarter-testing", ] - [tool.pytest.ini_options] log_cli = true log_cli_level = "INFO" -testpaths = ["jumpstarter_driver_snmp"] +testpaths = [ + "jumpstarter_driver_snmp", +] asyncio_mode = "auto" [tool.hatch.metadata.hooks.vcs.urls] @@ -32,8 +39,13 @@ source_archive = "https://github.com/jumpstarter-dev/repo/archive/{commit_hash}. [tool.hatch.version] source = "vcs" -raw-options = { 'root' = '../../' } + +[tool.hatch.version.raw-options] +root = "../../" [build-system] -requires = ["hatchling", "hatch-vcs"] +requires = [ + "hatchling", + "hatch-vcs", +] build-backend = "hatchling.build" diff --git a/packages/jumpstarter-driver-tftp/pyproject.toml b/packages/jumpstarter-driver-tftp/pyproject.toml index 144d73039..99e5904fa 100644 --- a/packages/jumpstarter-driver-tftp/pyproject.toml +++ b/packages/jumpstarter-driver-tftp/pyproject.toml @@ -1,16 +1,21 @@ [project] name = "jumpstarter-driver-tftp" -dynamic = ["version", "urls"] +dynamic = [ + "version", + "urls", +] description = "Add your description here" readme = "README.md" license = "Apache-2.0" -authors = [{ name = "Benny Zlotnik", email = "bzlotnik@redhat.com" }] +authors = [ + { name = "Benny Zlotnik", email = "bzlotnik@redhat.com" }, +] requires-python = ">=3.11" dependencies = [ "anyio>=4.6.2.post1", - "jumpstarter", - "jumpstarter-driver-composite", - "jumpstarter-driver-opendal", + "jumpstarter ~= 0.6", + "jumpstarter-driver-composite ~= 0.6", + "jumpstarter-driver-opendal ~= 0.6", ] [dependency-groups] @@ -22,10 +27,11 @@ dev = [ "jumpstarter-testing", ] - [tool.hatch.version] source = "vcs" -raw-options = { 'root' = '../../' } + +[tool.hatch.version.raw-options] +root = "../../" [tool.hatch.metadata.hooks.vcs.urls] Homepage = "https://jumpstarter.dev" @@ -34,9 +40,14 @@ source_archive = "https://github.com/jumpstarter-dev/repo/archive/{commit_hash}. [tool.pytest.ini_options] log_cli = true log_cli_level = "INFO" -testpaths = ["jumpstarter_driver_tftp"] +testpaths = [ + "jumpstarter_driver_tftp", +] asyncio_mode = "auto" [build-system] -requires = ["hatchling", "hatch-vcs"] +requires = [ + "hatchling", + "hatch-vcs", +] build-backend = "hatchling.build" diff --git a/packages/jumpstarter-driver-uboot/pyproject.toml b/packages/jumpstarter-driver-uboot/pyproject.toml index 92c8f91ec..88e611b4a 100644 --- a/packages/jumpstarter-driver-uboot/pyproject.toml +++ b/packages/jumpstarter-driver-uboot/pyproject.toml @@ -1,25 +1,32 @@ [project] name = "jumpstarter-driver-uboot" -dynamic = ["version", "urls"] +dynamic = [ + "version", + "urls", +] description = "" authors = [ - { name = "Nick Cao", email = "ncao@redhat.com" }, - { name = "Miguel Angel Ajo Pelayo", email = "majopela@redhat.com" }, - { name = "Kirk Brauer", email = "kbrauer@hatci.com" }, + { name = "Nick Cao", email = "ncao@redhat.com" }, + { name = "Miguel Angel Ajo Pelayo", email = "majopela@redhat.com" }, + { name = "Kirk Brauer", email = "kbrauer@hatci.com" }, ] readme = "README.md" license = "Apache-2.0" requires-python = ">=3.11" -dependencies = ["jumpstarter", "jumpstarter-driver-composite", "pexpect>=4.9.0"] +dependencies = [ + "jumpstarter ~= 0.6", + "jumpstarter-driver-composite ~= 0.6", + "pexpect>=4.9.0", +] [dependency-groups] dev = [ - "jumpstarter-driver-qemu", - "pytest>=8.3.2", - "pytest-cov>=5.0.0", - "requests>=2.32.3", - "rpmfile>=2.1.0", - "zstandard>=0.23.0", + "jumpstarter-driver-qemu", + "pytest>=8.3.2", + "pytest-cov>=5.0.0", + "requests>=2.32.3", + "rpmfile>=2.1.0", + "zstandard>=0.23.0", ] [tool.hatch.metadata.hooks.vcs.urls] @@ -28,12 +35,19 @@ source_archive = "https://github.com/jumpstarter-dev/repo/archive/{commit_hash}. [tool.hatch.version] source = "vcs" -raw-options = { 'root' = '../../' } -[tool.uv.sources] -jumpstarter-driver-composite = { workspace = true } -jumpstarter-driver-qemu = { workspace = true } +[tool.hatch.version.raw-options] +root = "../../" + +[tool.uv.sources.jumpstarter-driver-composite] +workspace = true + +[tool.uv.sources.jumpstarter-driver-qemu] +workspace = true [build-system] -requires = ["hatchling", "hatch-vcs"] +requires = [ + "hatchling", + "hatch-vcs", +] build-backend = "hatchling.build" diff --git a/packages/jumpstarter-driver-ustreamer/pyproject.toml b/packages/jumpstarter-driver-ustreamer/pyproject.toml index df451d6ff..3abcb0590 100644 --- a/packages/jumpstarter-driver-ustreamer/pyproject.toml +++ b/packages/jumpstarter-driver-ustreamer/pyproject.toml @@ -1,19 +1,28 @@ [project] name = "jumpstarter-driver-ustreamer" -dynamic = ["version", "urls"] +dynamic = [ + "version", + "urls", +] description = "" authors = [ - { name = "Nick Cao", email = "ncao@redhat.com" }, - { name = "Miguel Angel Ajo Pelayo", email = "majopela@redhat.com" }, - { name = "Kirk Brauer", email = "kbrauer@hatci.com" }, + { name = "Nick Cao", email = "ncao@redhat.com" }, + { name = "Miguel Angel Ajo Pelayo", email = "majopela@redhat.com" }, + { name = "Kirk Brauer", email = "kbrauer@hatci.com" }, ] readme = "README.md" license = "Apache-2.0" requires-python = ">=3.11" -dependencies = ["jumpstarter", "pillow>=10.4.0"] +dependencies = [ + "jumpstarter ~= 0.6", + "pillow>=10.4.0", +] [dependency-groups] -dev = ["pytest>=8.3.2", "pytest-cov>=5.0.0"] +dev = [ + "pytest>=8.3.2", + "pytest-cov>=5.0.0", +] [tool.hatch.metadata.hooks.vcs.urls] Homepage = "https://jumpstarter.dev" @@ -21,8 +30,13 @@ source_archive = "https://github.com/jumpstarter-dev/repo/archive/{commit_hash}. [tool.hatch.version] source = "vcs" -raw-options = { 'root' = '../../' } + +[tool.hatch.version.raw-options] +root = "../../" [build-system] -requires = ["hatchling", "hatch-vcs"] +requires = [ + "hatchling", + "hatch-vcs", +] build-backend = "hatchling.build" diff --git a/packages/jumpstarter-driver-yepkit/pyproject.toml b/packages/jumpstarter-driver-yepkit/pyproject.toml index a45cf8869..9eb867994 100644 --- a/packages/jumpstarter-driver-yepkit/pyproject.toml +++ b/packages/jumpstarter-driver-yepkit/pyproject.toml @@ -1,25 +1,31 @@ [project] name = "jumpstarter-driver-yepkit" -dynamic = ["version", "urls"] +dynamic = [ + "version", + "urls", +] description = "Add your description here" readme = "README.md" license = "Apache-2.0" -authors = [{ name = "Miguel Angel Ajo", email = "miguelangel@ajo.es" }] +authors = [ + { name = "Miguel Angel Ajo", email = "miguelangel@ajo.es" }, +] requires-python = ">=3.11" dependencies = [ "anyio>=4.6.2.post1", "pyusb>=1.2.1", - "jumpstarter_driver_power", - "jumpstarter", + "jumpstarter_driver_power ~= 0.6", + "jumpstarter ~= 0.6", ] [project.entry-points."jumpstarter.drivers"] Ykush = "jumpstarter_driver_yepkit.driver:Ykush" - [tool.hatch.version] source = "vcs" -raw-options = { 'root' = '../../' } + +[tool.hatch.version.raw-options] +root = "../../" [tool.hatch.metadata.hooks.vcs.urls] Homepage = "https://jumpstarter.dev" @@ -29,12 +35,20 @@ source_archive = "https://github.com/jumpstarter-dev/repo/archive/{commit_hash}. addopts = "--cov --cov-report=html --cov-report=xml" log_cli = true log_cli_level = "INFO" -testpaths = ["jumpstarter_driver_yepkit"] +testpaths = [ + "jumpstarter_driver_yepkit", +] asyncio_mode = "auto" [build-system] -requires = ["hatchling", "hatch-vcs"] +requires = [ + "hatchling", + "hatch-vcs", +] build-backend = "hatchling.build" [dependency-groups] -dev = ["pytest-cov>=6.0.0", "pytest>=8.3.3"] +dev = [ + "pytest-cov>=6.0.0", + "pytest>=8.3.3", +] diff --git a/packages/jumpstarter-imagehash/pyproject.toml b/packages/jumpstarter-imagehash/pyproject.toml index f12876040..cf1cfbdf7 100644 --- a/packages/jumpstarter-imagehash/pyproject.toml +++ b/packages/jumpstarter-imagehash/pyproject.toml @@ -1,19 +1,28 @@ [project] name = "jumpstarter-imagehash" -dynamic = ["version", "urls"] +dynamic = [ + "version", + "urls", +] description = "" authors = [ - { name = "Miguel Angel Ajo Pelayo", email = "majopela@redhat.com" }, - { name = "Nick Cao", email = "ncao@redhat.com" }, - { name = "Kirk Brauer", email = "kbrauer@hatci.com" }, + { name = "Miguel Angel Ajo Pelayo", email = "majopela@redhat.com" }, + { name = "Nick Cao", email = "ncao@redhat.com" }, + { name = "Kirk Brauer", email = "kbrauer@hatci.com" }, ] readme = "README.md" license = "Apache-2.0" requires-python = ">=3.11" -dependencies = ["imagehash>=4.3.1", "jumpstarter"] +dependencies = [ + "imagehash>=4.3.1", + "jumpstarter ~= 0.6", +] [dependency-groups] -dev = ["pytest>=8.3.2", "pytest-cov>=5.0.0"] +dev = [ + "pytest>=8.3.2", + "pytest-cov>=5.0.0", +] [tool.hatch.metadata.hooks.vcs.urls] Homepage = "https://jumpstarter.dev" @@ -21,8 +30,13 @@ source_archive = "https://github.com/jumpstarter-dev/repo/archive/{commit_hash}. [tool.hatch.version] source = "vcs" -raw-options = { 'root' = '../../' } + +[tool.hatch.version.raw-options] +root = "../../" [build-system] -requires = ["hatchling", "hatch-vcs"] +requires = [ + "hatchling", + "hatch-vcs", +] build-backend = "hatchling.build" diff --git a/packages/jumpstarter-kubernetes/pyproject.toml b/packages/jumpstarter-kubernetes/pyproject.toml index d843f6b31..212283f0c 100644 --- a/packages/jumpstarter-kubernetes/pyproject.toml +++ b/packages/jumpstarter-kubernetes/pyproject.toml @@ -1,24 +1,29 @@ [project] name = "jumpstarter-kubernetes" -dynamic = ["version", "urls"] +dynamic = [ + "version", + "urls", +] description = "" -authors = [{ name = "Kirk Brauer", email = "kbrauer@hatci.com" }] +authors = [ + { name = "Kirk Brauer", email = "kbrauer@hatci.com" }, +] readme = "README.md" license = "Apache-2.0" requires-python = ">=3.11" dependencies = [ - "jumpstarter", - "pydantic>=2.8.2", - "kubernetes>=31.0.0", - "kubernetes-asyncio>=31.1.0", + "jumpstarter ~= 0.6", + "pydantic>=2.8.2", + "kubernetes>=31.0.0", + "kubernetes-asyncio>=31.1.0", ] [dependency-groups] dev = [ - "pytest>=8.3.2", - "pytest-anyio>=0.0.0", - "pytest-asyncio>=0.0.0", - "pytest-cov>=5.0.0", + "pytest>=8.3.2", + "pytest-anyio>=0.0.0", + "pytest-asyncio>=0.0.0", + "pytest-cov>=5.0.0", ] [tool.hatch.metadata.hooks.vcs.urls] @@ -27,8 +32,13 @@ source_archive = "https://github.com/jumpstarter-dev/repo/archive/{commit_hash}. [tool.hatch.version] source = "vcs" -raw-options = { 'root' = '../../' } + +[tool.hatch.version.raw-options] +root = "../../" [build-system] -requires = ["hatchling", "hatch-vcs"] +requires = [ + "hatchling", + "hatch-vcs", +] build-backend = "hatchling.build" diff --git a/packages/jumpstarter-testing/pyproject.toml b/packages/jumpstarter-testing/pyproject.toml index 0b31071fb..b3f60ea3f 100644 --- a/packages/jumpstarter-testing/pyproject.toml +++ b/packages/jumpstarter-testing/pyproject.toml @@ -1,21 +1,28 @@ [project] name = "jumpstarter-testing" -dynamic = ["version", "urls"] +dynamic = [ + "version", + "urls", +] description = "" -authors = [{ name = "Kirk Brauer", email = "kbrauer@hatci.com" }] +authors = [ + { name = "Kirk Brauer", email = "kbrauer@hatci.com" }, +] readme = "README.md" license = "Apache-2.0" requires-python = ">=3.11" dependencies = [ - "jumpstarter", - "pytest>=8.3.2", - "pytest-anyio>=0.0.0", - "pytest-asyncio>=0.0.0", - "pytest-cov>=5.0.0", + "jumpstarter ~= 0.6", + "pytest>=8.3.2", + "pytest-anyio>=0.0.0", + "pytest-asyncio>=0.0.0", + "pytest-cov>=5.0.0", ] [dependency-groups] -dev = ["jumpstarter-driver-power"] +dev = [ + "jumpstarter-driver-power", +] [tool.hatch.metadata.hooks.vcs.urls] Homepage = "https://jumpstarter.dev" @@ -23,8 +30,13 @@ source_archive = "https://github.com/jumpstarter-dev/repo/archive/{commit_hash}. [tool.hatch.version] source = "vcs" -raw-options = { 'root' = '../../' } + +[tool.hatch.version.raw-options] +root = "../../" [build-system] -requires = ["hatchling", "hatch-vcs"] +requires = [ + "hatchling", + "hatch-vcs", +] build-backend = "hatchling.build" diff --git a/packages/jumpstarter/pyproject.toml b/packages/jumpstarter/pyproject.toml index dd4eb7d6d..cc2308d83 100644 --- a/packages/jumpstarter/pyproject.toml +++ b/packages/jumpstarter/pyproject.toml @@ -1,6 +1,9 @@ [project] name = "jumpstarter" -dynamic = ["version", "urls"] +dynamic = [ + "version", + "urls", +] description = "" authors = [ { name = "Miguel Angel Ajo Pelayo", email = "majopela@redhat.com" }, @@ -11,7 +14,7 @@ readme = "README.md" license = "Apache-2.0" requires-python = ">=3.11" dependencies = [ - "jumpstarter-protocol", + "jumpstarter-protocol ~= 0.6", "pyyaml>=6.0.2", "anyio>=4.4.0,!=4.6.2", "aiohttp>=3.10.5", @@ -33,7 +36,9 @@ dev = [ ] [tool.hatch.build.targets.wheel] -packages = ["jumpstarter"] +packages = [ + "jumpstarter", +] [tool.hatch.metadata.hooks.vcs.urls] Homepage = "https://jumpstarter.dev" @@ -41,8 +46,13 @@ source_archive = "https://github.com/jumpstarter-dev/repo/archive/{commit_hash}. [tool.hatch.version] source = "vcs" -raw-options = { 'root' = '../../' } + +[tool.hatch.version.raw-options] +root = "../../" [build-system] -requires = ["hatchling", "hatch-vcs"] +requires = [ + "hatchling", + "hatch-vcs", +] build-backend = "hatchling.build" diff --git a/pyproject.toml b/pyproject.toml index 41a51cd61..7d5bfa25b 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -53,6 +53,8 @@ dev = [ "pre-commit>=3.8.0", "esbonio>=0.16.5", "mypy>=1.15.0", + "tomli>=2.2.1", + "tomli-w>=1.2.0", ] [tool.ruff] diff --git a/scripts/pin_release_versions.py b/scripts/pin_release_versions.py new file mode 100755 index 000000000..9f4710cce --- /dev/null +++ b/scripts/pin_release_versions.py @@ -0,0 +1,104 @@ +#!/usr/bin/env python3 + +import argparse +import os +from pathlib import Path +from typing import List + +import tomli +import tomli_w + + +def find_pyproject_files(root_dir: str) -> List[str]: + """Find all pyproject.toml files recursively in the given directory.""" + pyproject_files = [] + for root, _, files in os.walk(root_dir): + for file in files: + if file == "pyproject.toml": + pyproject_files.append(os.path.join(root, file)) + return pyproject_files + + +def process_dependencies(deps: List[str], version: str, unpin: bool) -> List[str]: + """Process dependencies to pin or unpin jumpstarter packages.""" + if deps is None: + return [] + + result = [] + for pkg in deps: + pkg = pkg.strip() + if not pkg.startswith("jumpstarter"): + result.append(pkg) + else: + # split package name and version name + pkg_name, _, pkg_version = pkg.partition("~=") + pkg_name = pkg_name.strip() + pkg_version = pkg_version.strip() + if unpin: + result.append(pkg_name) + else: + result.append(f"{pkg_name} ~= {version}") + + return result + + +def modify_pyproject(file_path: str, version: str, unpin: bool) -> bool: + """Modify a pyproject.toml file to pin or unpin jumpstarter dependencies.""" + try: + with open(file_path, "rb") as f: + pyproject = tomli.load(f) + + modified = False + + # Process dependencies in [project.dependencies] + if "project" in pyproject and "dependencies" in pyproject["project"]: + deps = pyproject["project"]["dependencies"] + new_deps = process_dependencies(deps, version, unpin) + if new_deps != deps: + pyproject["project"]["dependencies"] = new_deps + modified = True + + # Write back if modified + if modified: + with open(file_path, "wb") as f: + tomli_w.dump(pyproject, f) + return True + + return False + + except Exception as e: + print(f"Error processing {file_path}: {e}") + raise e + return False + + +def main(): + parser = argparse.ArgumentParser(description="Pin or unpin jumpstarter package versions in pyproject.toml files") + parser.add_argument("--pin", metavar="VERSION", help="Pin jumpstarter dependencies to specified version") + parser.add_argument("--unpin", action="store_true", help="Remove version constraints from jumpstarter dependencies") + parser.add_argument("--root", default=".", help="Root directory to search for pyproject.toml files") + + args = parser.parse_args() + + if not args.pin and not args.unpin: + parser.error("Either --pin VERSION or --unpin must be specified") + + if args.pin and args.unpin: + parser.error("Cannot specify both --pin and --unpin") + + root_dir = os.path.abspath(args.root) + pyproject_files = find_pyproject_files(root_dir) + + modified_count = 0 + for file_path in pyproject_files: + if modify_pyproject(file_path, args.pin or "", args.unpin): + print(f"Modified: {Path(file_path).relative_to(root_dir)}") + modified_count += 1 + + action = "unpinned" if args.unpin else f"pinned to ~={args.pin}" + print(f"\nProcessed {len(pyproject_files)} pyproject.toml files, {modified_count} " + + f"files had jumpstarter dependencies {action}") + + +if __name__ == "__main__": + main() diff --git a/uv.lock b/uv.lock index 120052fee..d13ab39f6 100644 --- a/uv.lock +++ b/uv.lock @@ -44,6 +44,8 @@ dev = [ { name = "mypy", specifier = ">=1.15.0" }, { name = "pre-commit", specifier = ">=3.8.0" }, { name = "ruff", specifier = "==0.9.2" }, + { name = "tomli", specifier = ">=2.2.1" }, + { name = "tomli-w", specifier = ">=1.2.0" }, { name = "typos", specifier = ">=1.23.6" }, ] docs = [ @@ -3499,6 +3501,15 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/6e/c2/61d3e0f47e2b74ef40a68b9e6ad5984f6241a942f7cd3bbfbdbd03861ea9/tomli-2.2.1-py3-none-any.whl", hash = "sha256:cb55c73c5f4408779d0cf3eef9f762b9c9f147a77de7b258bef0a5628adc85cc", size = 14257 }, ] +[[package]] +name = "tomli-w" +version = "1.2.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/19/75/241269d1da26b624c0d5e110e8149093c759b7a286138f4efd61a60e75fe/tomli_w-1.2.0.tar.gz", hash = "sha256:2dd14fac5a47c27be9cd4c976af5a12d87fb1f0b4512f81d69cce3b35ae25021", size = 7184 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c7/18/c86eb8e0202e32dd3df50d43d7ff9854f8e0603945ff398974c1d91ac1ef/tomli_w-1.2.0-py3-none-any.whl", hash = "sha256:188306098d013b691fcadc011abd66727d3c414c571bb01b1a174ba8c983cf90", size = 6675 }, +] + [[package]] name = "tqdm" version = "4.67.1"