-
Notifications
You must be signed in to change notification settings - Fork 21
Simplify SNMP driver #803
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Simplify SNMP driver #803
Conversation
✅ Deploy Preview for jumpstarter-docs ready!
To edit notification comments on pull requests, go to your Netlify project configuration. |
|
Important Review skippedReview was skipped due to path filters ⛔ Files ignored due to path filters (1)
CodeRabbit blocks several paths by default. You can override this behavior by explicitly including those paths in the path filters. For example, including You can disable this status message by setting the 📝 WalkthroughWalkthroughExpanded CI Python matrix to include 3.14, bumped several package dependencies, refactored SNMP driver to asynchronous PowerInterface-based implementation (async on/off, anyio Event, fail_after), removed SNMPServerClient CLI, and updated SNMP tests to async anyio. Changes
Sequence Diagram(s)sequenceDiagram
participant Caller as Caller
participant SNMPServer as SNMPServer
participant SNMPEngine as SNMP Engine
participant Event as anyio.Event
Caller->>SNMPServer: await on()/off() (calls _snmp_set)
SNMPServer->>SNMPEngine: send SNMP SET request
SNMPEngine->>Event: signal response (callback)
SNMPServer->>Event: await with fail_after timeout
Event-->>SNMPServer: response received
SNMPServer-->>Caller: return result
Estimated code review effort🎯 3 (Moderate) | ⏱️ ~25 minutes Possibly related PRs
Suggested reviewers
Poem
🚥 Pre-merge checks | ✅ 2 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (2 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 3
Caution
Some comments are outside the diff and can’t be posted inline due to platform limitations.
⚠️ Outside diff range comments (1)
packages/jumpstarter-driver-snmp/jumpstarter_driver_snmp/driver.py (1)
143-168: Ensure dispatcher is closed even when the await times out or is cancelled.The
await response_received.wait()can be cancelled by thefail_aftertimeout in the caller. Withouttry/finally,close_dispatcher()will be skipped, leaving the dispatcher open and leaking resources. Wrap the wait to guarantee cleanup.✅ Safe dispatcher lifecycle
async def _run_snmp_dispatcher(self, snmp_engine: engine.SnmpEngine, response_received: Event): snmp_engine.open_dispatcher() - await response_received.wait() - snmp_engine.close_dispatcher() + try: + await response_received.wait() + finally: + snmp_engine.close_dispatcher()
🤖 Fix all issues with AI agents
In `@packages/jumpstarter-driver-snmp/jumpstarter_driver_snmp/driver.py`:
- Around line 40-42: The class currently declared as SNMPServer (which
implements PowerInterface and Driver) should be renamed to end with "Power"
(e.g., SNMPPower or SNMPServerPower) and all references updated; change the
class name declaration from SNMPServer to the chosen new name and update any
imports, type annotations, factory registrations, tests, and usages that
reference SNMPServer (look for occurrences in jumpstarter_driver_snmp.driver,
any places constructing the driver, isinstance/type checks, and documentation
strings) so the symbol implementing PowerInterface now follows the "*Power"
naming convention.
- Around line 2-8: The SNMP driver imports anyio (Event, fail_after) but the
package manifest doesn't declare it; add anyio to the package's dependencies in
the pyproject.toml for the jumpstarter-driver-snmp package (e.g., under
[project] or tool.poetry.dependencies add "anyio" with an appropriate version
constraint), then update lock/install so runtime imports of Event and fail_after
from anyio succeed.
In `@packages/jumpstarter-driver-ustreamer/pyproject.toml`:
- Line 13: pyproject.toml is missing the required entry-point registration for
the driver; add a [project.entry-points."jumpstarter.drivers"] section and
register this package under that group using the module:class target for the
driver (follow the pattern used by jumpstarter-driver-can and
jumpstarter-driver-composite), e.g., add an entry like my_driver_name =
"jumpstarter_driver_ustreamer:UstreamerDriver" replacing
my_driver_name/module/class with the actual package module and driver class name
so jumpstarter can auto-discover the driver.
📜 Review details
Configuration used: defaults
Review profile: CHILL
Plan: Pro
⛔ Files ignored due to path filters (1)
uv.lockis excluded by!**/*.lock
📒 Files selected for processing (10)
.github/workflows/pytest.yamlpackages/jumpstarter-cli-common/pyproject.tomlpackages/jumpstarter-driver-snmp/jumpstarter_driver_snmp/client.pypackages/jumpstarter-driver-snmp/jumpstarter_driver_snmp/driver.pypackages/jumpstarter-driver-snmp/jumpstarter_driver_snmp/driver_test.pypackages/jumpstarter-driver-uboot/pyproject.tomlpackages/jumpstarter-driver-ustreamer/pyproject.tomlpackages/jumpstarter-kubernetes/pyproject.tomlpackages/jumpstarter-protocol/pyproject.tomlpackages/jumpstarter/pyproject.toml
💤 Files with no reviewable changes (1)
- packages/jumpstarter-driver-snmp/jumpstarter_driver_snmp/client.py
🧰 Additional context used
📓 Path-based instructions (6)
packages/jumpstarter-driver-*/pyproject.toml
📄 CodeRabbit inference engine (.cursor/rules/creating-new-drivers.mdc)
Driver package names should be lowercase with hyphens for multi-word names (e.g.,
my-driver,custom-power,device-controller)
packages/jumpstarter-driver-*/pyproject.toml: Driver packages must follow the naming patternjumpstarter-driver-<name>
Driver packages must register via thejumpstarter.driversentry point inpyproject.toml
Driver packages must depend onjumpstarterand specific hardware libraries in theirpyproject.toml
Files:
packages/jumpstarter-driver-uboot/pyproject.tomlpackages/jumpstarter-driver-ustreamer/pyproject.toml
packages/*/pyproject.toml
📄 CodeRabbit inference engine (.cursor/rules/project-structure.mdc)
Each package's
pyproject.tomlmust include project metadata with Apache-2.0 license only
Files:
packages/jumpstarter-driver-uboot/pyproject.tomlpackages/jumpstarter-protocol/pyproject.tomlpackages/jumpstarter-kubernetes/pyproject.tomlpackages/jumpstarter-driver-ustreamer/pyproject.tomlpackages/jumpstarter-cli-common/pyproject.tomlpackages/jumpstarter/pyproject.toml
packages/jumpstarter-driver-**/jumpstarter_driver_**/*.py
📄 CodeRabbit inference engine (.cursor/rules/creating-new-drivers.mdc)
Driver implementations should follow existing code style validated with
make lint(fix withmake lint-fix), perform static type checking withmake ty-pkg-${package_name}, add comprehensive tests, and verify all tests pass withmake test-pkg-${package_name}ormake test
Files:
packages/jumpstarter-driver-snmp/jumpstarter_driver_snmp/driver_test.pypackages/jumpstarter-driver-snmp/jumpstarter_driver_snmp/driver.py
**/*.py
📄 CodeRabbit inference engine (.cursor/rules/project-structure.mdc)
Ruff should be used for code formatting and linting, excluding
jumpstarter-protocolpackage
Files:
packages/jumpstarter-driver-snmp/jumpstarter_driver_snmp/driver_test.pypackages/jumpstarter-driver-snmp/jumpstarter_driver_snmp/driver.py
packages/jumpstarter-cli-*/pyproject.toml
📄 CodeRabbit inference engine (.cursor/rules/project-structure.mdc)
CLI packages must depend on
jumpstarterandjumpstarter-cli-commonin theirpyproject.toml
Files:
packages/jumpstarter-cli-common/pyproject.toml
packages/jumpstarter-driver-*/jumpstarter_driver_*/driver.py
📄 CodeRabbit inference engine (.cursor/rules/creating-new-drivers.mdc)
Driver class names should be in CamelCase and be descriptive with appropriate suffixes based on functionality: Power drivers should end with
*Power, Network drivers with*Network, Flasher drivers with*Flasher, Console drivers with*Console, Server drivers with*Server
Files:
packages/jumpstarter-driver-snmp/jumpstarter_driver_snmp/driver.py
🧠 Learnings (10)
📚 Learning: 2025-11-27T09:58:55.346Z
Learnt from: CR
Repo: jumpstarter-dev/jumpstarter PR: 0
File: .cursor/rules/project-structure.mdc:0-0
Timestamp: 2025-11-27T09:58:55.346Z
Learning: Applies to packages/jumpstarter-driver-*/pyproject.toml : Driver packages must depend on `jumpstarter` and specific hardware libraries in their `pyproject.toml`
Applied to files:
packages/jumpstarter-driver-uboot/pyproject.tomlpackages/jumpstarter-protocol/pyproject.tomlpackages/jumpstarter-kubernetes/pyproject.tomlpackages/jumpstarter-driver-ustreamer/pyproject.tomlpackages/jumpstarter-cli-common/pyproject.tomlpackages/jumpstarter/pyproject.toml
📚 Learning: 2025-11-27T09:58:55.346Z
Learnt from: CR
Repo: jumpstarter-dev/jumpstarter PR: 0
File: .cursor/rules/project-structure.mdc:0-0
Timestamp: 2025-11-27T09:58:55.346Z
Learning: Applies to packages/jumpstarter-cli-*/pyproject.toml : CLI packages must depend on `jumpstarter` and `jumpstarter-cli-common` in their `pyproject.toml`
Applied to files:
packages/jumpstarter-driver-uboot/pyproject.tomlpackages/jumpstarter-protocol/pyproject.tomlpackages/jumpstarter-kubernetes/pyproject.tomlpackages/jumpstarter-driver-ustreamer/pyproject.tomlpackages/jumpstarter-cli-common/pyproject.tomlpackages/jumpstarter/pyproject.toml
📚 Learning: 2025-11-27T09:58:55.346Z
Learnt from: CR
Repo: jumpstarter-dev/jumpstarter PR: 0
File: .cursor/rules/project-structure.mdc:0-0
Timestamp: 2025-11-27T09:58:55.346Z
Learning: Applies to packages/jumpstarter-driver-*/pyproject.toml : Driver packages must follow the naming pattern `jumpstarter-driver-<name>`
Applied to files:
packages/jumpstarter-driver-uboot/pyproject.tomlpackages/jumpstarter-driver-ustreamer/pyproject.tomlpackages/jumpstarter-cli-common/pyproject.tomlpackages/jumpstarter/pyproject.toml
📚 Learning: 2025-11-27T09:58:55.346Z
Learnt from: CR
Repo: jumpstarter-dev/jumpstarter PR: 0
File: .cursor/rules/project-structure.mdc:0-0
Timestamp: 2025-11-27T09:58:55.346Z
Learning: Applies to packages/jumpstarter-driver-*/pyproject.toml : Driver packages must register via the `jumpstarter.drivers` entry point in `pyproject.toml`
Applied to files:
packages/jumpstarter-driver-uboot/pyproject.tomlpackages/jumpstarter-protocol/pyproject.tomlpackages/jumpstarter-driver-ustreamer/pyproject.tomlpackages/jumpstarter-cli-common/pyproject.tomlpackages/jumpstarter/pyproject.toml
📚 Learning: 2025-09-02T07:32:04.548Z
Learnt from: mangelajo
Repo: jumpstarter-dev/jumpstarter PR: 589
File: packages/jumpstarter-protocol/jumpstarter_protocol/jumpstarter/client/v1/client_pb2.py:0-0
Timestamp: 2025-09-02T07:32:04.548Z
Learning: *_pb2.py files in the jumpstarter codebase are auto-generated from gRPC/protobuf definitions and should not be manually modified. Issues with these files should be addressed at the protobuf generation tooling level or runtime environment setup.
Applied to files:
packages/jumpstarter-protocol/pyproject.toml
📚 Learning: 2025-11-27T09:58:55.346Z
Learnt from: CR
Repo: jumpstarter-dev/jumpstarter PR: 0
File: .cursor/rules/project-structure.mdc:0-0
Timestamp: 2025-11-27T09:58:55.346Z
Learning: Core packages must depend on `jumpstarter-protocol`
Applied to files:
packages/jumpstarter-protocol/pyproject.tomlpackages/jumpstarter-kubernetes/pyproject.tomlpackages/jumpstarter-cli-common/pyproject.toml
📚 Learning: 2025-11-05T13:45:58.271Z
Learnt from: mangelajo
Repo: jumpstarter-dev/jumpstarter PR: 735
File: packages/jumpstarter-driver-flashers/jumpstarter_driver_flashers/client.py:15-15
Timestamp: 2025-11-05T13:45:58.271Z
Learning: In packages/jumpstarter-driver-flashers/jumpstarter_driver_flashers/client.py, pexpect is intentionally used as a transitive dependency through the jumpstarter-driver-pyserial package. The flashers package does not declare pexpect as a direct dependency because the pyserial driver package is intended to control the pexpect version.
Applied to files:
packages/jumpstarter-kubernetes/pyproject.tomlpackages/jumpstarter-cli-common/pyproject.toml
📚 Learning: 2025-11-27T09:58:41.875Z
Learnt from: CR
Repo: jumpstarter-dev/jumpstarter PR: 0
File: .cursor/rules/creating-new-drivers.mdc:0-0
Timestamp: 2025-11-27T09:58:41.875Z
Learning: Applies to packages/jumpstarter-driver-**/jumpstarter_driver_**/*.py : Driver implementations should follow existing code style validated with `make lint` (fix with `make lint-fix`), perform static type checking with `make ty-pkg-${package_name}`, add comprehensive tests, and verify all tests pass with `make test-pkg-${package_name}` or `make test`
Applied to files:
packages/jumpstarter-driver-snmp/jumpstarter_driver_snmp/driver_test.pypackages/jumpstarter-driver-snmp/jumpstarter_driver_snmp/driver.py
📚 Learning: 2025-11-27T09:58:41.875Z
Learnt from: CR
Repo: jumpstarter-dev/jumpstarter PR: 0
File: .cursor/rules/creating-new-drivers.mdc:0-0
Timestamp: 2025-11-27T09:58:41.875Z
Learning: Applies to packages/jumpstarter-driver-*/jumpstarter_driver_*/driver.py : Driver class names should be in CamelCase and be descriptive with appropriate suffixes based on functionality: Power drivers should end with `*Power`, Network drivers with `*Network`, Flasher drivers with `*Flasher`, Console drivers with `*Console`, Server drivers with `*Server`
Applied to files:
packages/jumpstarter-driver-snmp/jumpstarter_driver_snmp/driver.py
📚 Learning: 2025-11-27T09:58:55.346Z
Learnt from: CR
Repo: jumpstarter-dev/jumpstarter PR: 0
File: .cursor/rules/project-structure.mdc:0-0
Timestamp: 2025-11-27T09:58:55.346Z
Learning: Applies to packages/jumpstarter-driver-*/jumpstarter_driver_*/ : Driver packages must implement a `driver.py` file containing the driver implementation
Applied to files:
packages/jumpstarter-driver-snmp/jumpstarter_driver_snmp/driver.py
🧬 Code graph analysis (1)
packages/jumpstarter-driver-snmp/jumpstarter_driver_snmp/driver_test.py (1)
packages/jumpstarter-driver-snmp/jumpstarter_driver_snmp/driver.py (2)
on(183-185)off(188-190)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (6)
- GitHub Check: build
- GitHub Check: pytest-matrix (ubuntu-24.04, 3.13)
- GitHub Check: pytest-matrix (ubuntu-24.04, 3.14)
- GitHub Check: pytest-matrix (ubuntu-24.04, 3.11)
- GitHub Check: pytest-matrix (ubuntu-24.04, 3.12)
- GitHub Check: e2e
🔇 Additional comments (11)
packages/jumpstarter/pyproject.toml (1)
18-18: LGTM - consistent pydantic version bump.The update aligns with the pydantic version in
jumpstarter-cli-common. The package correctly depends onjumpstarter-protocolas required for core packages. The conditionalbackports-zstddependency (line 23) confirms this PR's Python 3.14 support focus.packages/jumpstarter-driver-uboot/pyproject.toml (1)
22-22: LGTM - zstandard dev dependency bump is valid.zstandard 0.25.0 is a stable, non-yanked release compatible with the package's Python requirement. The change is confined to dev dependencies, limiting impact to development/testing. Package follows the required naming pattern
jumpstarter-driver-<name>and correctly depends onjumpstarterandjumpstarter-driver-composite. Note: entry points registration is not present in the current file state but is pre-existing and not introduced by this change.packages/jumpstarter-cli-common/pyproject.toml (1)
11-11: LGTM - pydantic dependency update.File complies with coding guidelines: Apache-2.0 license, depends on
jumpstarter. pydantic 2.12.5 is a valid release (requires Python >=3.9, compatible with the package's >=3.11 requirement).packages/jumpstarter-protocol/pyproject.toml (1)
11-11: LGTM - grpcio version bump to >=1.76.0.The dependency update extends Python 3.14 support (grpcio 1.76.0 supports Python 3.9–3.14). Package metadata is compliant with Apache-2.0 license.
packages/jumpstarter-driver-snmp/jumpstarter_driver_snmp/driver.py (2)
122-141: LGTM: callback still records errors and signals completion.
118-120: Verify SNMPServerClient existence and client.py implementationConfirm whether
SNMPServerClientexists inpackages/jumpstarter-driver-snmp/jumpstarter_driver_snmp/client.py. If the class was removed or renamed, update theclient()method on line 120 to reference the correct class name, or remove this method if client support is no longer needed.packages/jumpstarter-driver-snmp/jumpstarter_driver_snmp/driver_test.py (3)
58-103: LGTM: auth configuration assertions remain intact.
105-128: LGTM: power-on test still validates command dispatch.
131-154: LGTM: power-off test still validates command dispatch.packages/jumpstarter-kubernetes/pyproject.toml (1)
9-12: Verify the pydantic floor against the repo's Python matrix.Pydantic 2.12.5 supports Python 3.11–3.14 (the 2.12 series added initial Python 3.14 support; Pydantic 2.x requires Python ≥ 3.9). Confirm this aligns with the repository's declared Python matrix and other package constraints.
.github/workflows/pytest.yaml (1)
18-21: Python 3.14 is available in both setup-uv and GitHub Actions runners. The astral-sh/setup-uv action supports Python 3.14 via thepython-versioninput, and both ubuntu-24.04 and macos-15 include Python 3.14 in their hosted toolcache. No action needed.Likely an incorrect or invalid review comment.
✏️ Tip: You can disable this entire section by setting review_details to false in your review settings.
| from collections.abc import AsyncGenerator | ||
| from dataclasses import dataclass, field | ||
| from enum import Enum, IntEnum | ||
| from typing import Any, Dict, Tuple | ||
| from typing import Any, Dict | ||
|
|
||
| from anyio import Event, fail_after | ||
| from jumpstarter_driver_power.driver import PowerInterface, PowerReading |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🧩 Analysis chain
🏁 Script executed:
#!/bin/bash
# Check whether anyio is declared in SNMP driver's pyproject.toml
cat packages/jumpstarter-driver-snmp/pyproject.toml | grep -A 20 -B 5 dependenciesRepository: jumpstarter-dev/jumpstarter
Length of output: 198
🏁 Script executed:
# Verify anyio dependency in SNMP driver without full repo clone
find . -name "pyproject.toml" -path "*/jumpstarter-driver-snmp/*" 2>/dev/null | head -5Repository: jumpstarter-dev/jumpstarter
Length of output: 198
🌐 Web query:
jumpstarter SNMP driver anyio dependency pyproject.toml
💡 Result:
Short answer: jumpstarter-driver-snmp does not list anyio as a dependency — its published package depends on click, jumpstarter-driver-power, pysnmp and jumpstarter. If you need anyio for your project, add it to your pyproject.toml dependencies (example below).
Sources: PyPI jumpstarter-driver-snmp (dependencies list). [1] AnyIO project page for package name. [2]
Example pyproject.toml snippet to add anyio (adjust version constraint as you need):
[project]
dependencies = [
"jumpstarter-driver-snmp",
"anyio>=3.0", # or anyio>=4.0 / >=4.11 depending on your target
]
References:
- jumpstarter-driver-snmp — PyPI / package details. [1]
- anyio — PyPI / project page. [2]
Add anyio as a runtime dependency in packages/jumpstarter-driver-snmp/pyproject.toml.
Lines 7–8 import anyio (Event, fail_after), but the published SNMP driver package does not declare anyio in its dependencies. This will cause an ImportError at runtime. Add anyio to the dependencies section of the package manifest.
🤖 Prompt for AI Agents
In `@packages/jumpstarter-driver-snmp/jumpstarter_driver_snmp/driver.py` around
lines 2 - 8, The SNMP driver imports anyio (Event, fail_after) but the package
manifest doesn't declare it; add anyio to the package's dependencies in the
pyproject.toml for the jumpstarter-driver-snmp package (e.g., under [project] or
tool.poetry.dependencies add "anyio" with an appropriate version constraint),
then update lock/install so runtime imports of Event and fail_after from anyio
succeed.
| @dataclass(kw_only=True) | ||
| class SNMPServer(Driver): | ||
| class SNMPServer(PowerInterface, Driver): | ||
| """SNMP Power Control Driver""" |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Rename SNMPServer to end with Power now that it implements PowerInterface.
Line 41 makes this a power driver; the naming rule requires a *Power suffix. Please rename and update references.
♻️ Suggested rename (update references accordingly)
-class SNMPServer(PowerInterface, Driver):
+class SNMPPower(PowerInterface, Driver):As per coding guidelines, power driver class names should end with *Power.
📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| @dataclass(kw_only=True) | |
| class SNMPServer(Driver): | |
| class SNMPServer(PowerInterface, Driver): | |
| """SNMP Power Control Driver""" | |
| `@dataclass`(kw_only=True) | |
| class SNMPPower(PowerInterface, Driver): | |
| """SNMP Power Control Driver""" |
🤖 Prompt for AI Agents
In `@packages/jumpstarter-driver-snmp/jumpstarter_driver_snmp/driver.py` around
lines 40 - 42, The class currently declared as SNMPServer (which implements
PowerInterface and Driver) should be renamed to end with "Power" (e.g.,
SNMPPower or SNMPServerPower) and all references updated; change the class name
declaration from SNMPServer to the chosen new name and update any imports, type
annotations, factory registrations, tests, and usages that reference SNMPServer
(look for occurrences in jumpstarter_driver_snmp.driver, any places constructing
the driver, isinstance/type checks, and documentation strings) so the symbol
implementing PowerInterface now follows the "*Power" naming convention.
| license = "Apache-2.0" | ||
| requires-python = ">=3.11" | ||
| dependencies = ["jumpstarter", "pillow>=10.4.0"] | ||
| dependencies = ["jumpstarter", "pillow>=12.1.0"] |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🧩 Analysis chain
🏁 Script executed:
cat packages/jumpstarter-driver-ustreamer/pyproject.tomlRepository: jumpstarter-dev/jumpstarter
Length of output: 958
🌐 Web query:
pillow 12.1.0 python version requirements pypi
💡 Result:
Pillow 12.1.0 requires Python >= 3.10 and is marked as supporting Python 3.10–3.14. [1][2]
Sources:
- PyPI project page for Pillow (Requires: Python >=3.10; classifiers). [1]
- Pillow platform support / docs (tested Python versions list). [2]
🏁 Script executed:
# Check if other jumpstarter-driver packages have entry points
fd -t f "pyproject.toml" packages/jumpstarter-driver-* | head -3 | xargs -I {} sh -c 'echo "=== {} ===" && grep -A 5 "entry-points\|jumpstarter.drivers" {}'Repository: jumpstarter-dev/jumpstarter
Length of output: 718
🏁 Script executed:
# Check full content of ustreamer pyproject.toml for entry-points
grep -n "entry-points" packages/jumpstarter-driver-ustreamer/pyproject.toml || echo "No entry-points found"Repository: jumpstarter-dev/jumpstarter
Length of output: 92
Missing required jumpstarter.drivers entry point registration.
Driver packages must register via the [project.entry-points."jumpstarter.drivers"] section in pyproject.toml per coding guidelines. This section is absent from the package. Reference other driver packages (e.g., jumpstarter-driver-can, jumpstarter-driver-composite) for the required pattern.
The package otherwise complies with driver naming conventions and includes the required jumpstarter dependency.
🤖 Prompt for AI Agents
In `@packages/jumpstarter-driver-ustreamer/pyproject.toml` at line 13,
pyproject.toml is missing the required entry-point registration for the driver;
add a [project.entry-points."jumpstarter.drivers"] section and register this
package under that group using the module:class target for the driver (follow
the pattern used by jumpstarter-driver-can and jumpstarter-driver-composite),
e.g., add an entry like my_driver_name =
"jumpstarter_driver_ustreamer:UstreamerDriver" replacing
my_driver_name/module/class with the actual package module and driver class name
so jumpstarter can auto-discover the driver.
Summary by CodeRabbit
New Features
Chores
Tests
Documentation
✏️ Tip: You can customize this high-level summary in your review settings.