Browse Source

fixed #828

tags/test-git
Mati-ur-rehman-017 10 months ago
parent
commit
dd4de848ac
53 changed files with 254 additions and 55 deletions
  1. +1
    -1
      apis/python/node/dora/__init__.py
  2. +16
    -16
      apis/python/node/dora/__init__.pyi
  3. +5
    -0
      apis/python/node/pyproject.toml
  4. +5
    -0
      binaries/cli/pyproject.toml
  5. +6
    -0
      binaries/cli/src/template/python/__node-name__/pyproject.toml
  6. +4
    -5
      binaries/cli/src/template/python/operator/operator-template.py
  7. +4
    -8
      examples/piper/convert.py
  8. +1
    -2
      examples/python-operator-dataflow/file_saver_op.py
  9. +1
    -2
      examples/python-operator-dataflow/llm_op.py
  10. +1
    -2
      examples/python-operator-dataflow/microphone_op.py
  11. +1
    -2
      examples/python-operator-dataflow/object_detection.py
  12. +1
    -2
      examples/python-operator-dataflow/plot.py
  13. +1
    -2
      examples/python-operator-dataflow/webcam.py
  14. +1
    -2
      examples/python-operator-dataflow/whisper_op.py
  15. +1
    -2
      libraries/extensions/ros2-bridge/python/test_utils.py
  16. +6
    -0
      node-hub/dora-argotranslate/pyproject.toml
  17. +6
    -0
      node-hub/dora-distil-whisper/pyproject.toml
  18. +6
    -0
      node-hub/dora-echo/pyproject.toml
  19. +6
    -0
      node-hub/dora-internvl/pyproject.toml
  20. +1
    -2
      node-hub/dora-ios-lidar/dora_ios_lidar/main.py
  21. +6
    -0
      node-hub/dora-ios-lidar/pyproject.toml
  22. +6
    -0
      node-hub/dora-keyboard/pyproject.toml
  23. +6
    -0
      node-hub/dora-kit-car/pyproject.toml
  24. +6
    -0
      node-hub/dora-kokoro-tts/pyproject.toml
  25. +6
    -0
      node-hub/dora-microphone/pyproject.toml
  26. +6
    -0
      node-hub/dora-object-to-pose/pyproject.toml
  27. +2
    -1
      node-hub/dora-openai-server/pyproject.toml
  28. +6
    -0
      node-hub/dora-opus/pyproject.toml
  29. +6
    -0
      node-hub/dora-outtetts/pyproject.toml
  30. +6
    -0
      node-hub/dora-parler/pyproject.toml
  31. +1
    -2
      node-hub/dora-piper/dora_piper/main.py
  32. +6
    -0
      node-hub/dora-piper/pyproject.toml
  33. +2
    -2
      node-hub/dora-pyaudio/dora_pyaudio/main.py
  34. +6
    -0
      node-hub/dora-pyaudio/pyproject.toml
  35. +6
    -0
      node-hub/dora-pyorbbecksdk/pyproject.toml
  36. +6
    -0
      node-hub/dora-pyrealsense/pyproject.toml
  37. +6
    -0
      node-hub/dora-qwen/pyproject.toml
  38. +6
    -0
      node-hub/dora-qwen2-5-vl/pyproject.toml
  39. +1
    -2
      node-hub/dora-qwenvl/dora_qwenvl/main.py
  40. +6
    -0
      node-hub/dora-qwenvl/pyproject.toml
  41. +6
    -0
      node-hub/dora-rdt-1b/pyproject.toml
  42. +6
    -0
      node-hub/dora-reachy2/pyproject.toml
  43. +6
    -0
      node-hub/dora-rerun/pyproject.toml
  44. +6
    -0
      node-hub/dora-sam2/pyproject.toml
  45. +6
    -0
      node-hub/dora-ugv/pyproject.toml
  46. +6
    -0
      node-hub/dora-vad/pyproject.toml
  47. +6
    -0
      node-hub/dora-yolo/pyproject.toml
  48. +6
    -0
      node-hub/llama-factory-recorder/pyproject.toml
  49. +6
    -0
      node-hub/opencv-plot/pyproject.toml
  50. +6
    -0
      node-hub/opencv-video-capture/pyproject.toml
  51. +6
    -0
      node-hub/pyarrow-assert/pyproject.toml
  52. +6
    -0
      node-hub/pyarrow-sender/pyproject.toml
  53. +6
    -0
      node-hub/terminal-input/pyproject.toml

+ 1
- 1
apis/python/node/dora/__init__.py View File

@@ -4,7 +4,7 @@ This is the dora python client for interacting with dora dataflow.
You can install it via:
```bash
pip install dora-rs
```
```.
"""

from enum import Enum


+ 16
- 16
apis/python/node/dora/__init__.pyi View File

@@ -142,7 +142,7 @@ class Ros2Context:
"""

def new_node(self, name: str, namespace: str, options: dora.Ros2NodeOptions) -> dora.Ros2Node:
"""Create a new ROS2 node
"""Create a new ROS2 node.

```python
ros2_node = ros2_context.new_node(
@@ -159,7 +159,7 @@ class Ros2Context:

@typing.final
class Ros2Durability:
"""DDS 2.2.3.4 DURABILITY"""
"""DDS 2.2.3.4 DURABILITY."""

def __eq__(self, value: object) -> bool:
"""Return self==value."""
@@ -171,7 +171,7 @@ class Ros2Durability:
"""Return self>value."""

def __int__(self) -> None:
"""int(self)"""
"""int(self)."""

def __le__(self, value: typing.Any) -> bool:
"""Return self<=value."""
@@ -189,7 +189,7 @@ class Ros2Durability:

@typing.final
class Ros2Liveliness:
"""DDS 2.2.3.11 LIVELINESS"""
"""DDS 2.2.3.11 LIVELINESS."""

def __eq__(self, value: object) -> bool:
"""Return self==value."""
@@ -201,7 +201,7 @@ class Ros2Liveliness:
"""Return self>value."""

def __int__(self) -> None:
"""int(self)"""
"""int(self)."""

def __le__(self, value: typing.Any) -> bool:
"""Return self<=value."""
@@ -218,7 +218,7 @@ class Ros2Liveliness:

@typing.final
class Ros2Node:
"""ROS2 Node
"""ROS2 Node.

warnings::
- dora Ros2 bridge functionality is considered **unstable**. It may be changed
@@ -228,7 +228,7 @@ class Ros2Node:
"""

def create_publisher(self, topic: dora.Ros2Topic, qos: dora.Ros2QosPolicies=None) -> dora.Ros2Publisher:
"""Create a ROS2 publisher
"""Create a ROS2 publisher.

```python
pose_publisher = ros2_node.create_publisher(turtle_pose_topic)
@@ -239,7 +239,7 @@ class Ros2Node:
"""

def create_subscription(self, topic: dora.Ros2Topic, qos: dora.Ros2QosPolicies=None) -> dora.Ros2Subscription:
"""Create a ROS2 subscription
"""Create a ROS2 subscription.

```python
pose_reader = ros2_node.create_subscription(turtle_pose_topic)
@@ -263,14 +263,14 @@ class Ros2Node:

@typing.final
class Ros2NodeOptions:
"""ROS2 Node Options"""
"""ROS2 Node Options."""

def __init__(self, rosout: bool=None) -> None:
"""ROS2 Node Options"""
"""ROS2 Node Options."""

@typing.final
class Ros2Publisher:
"""ROS2 Publisher
"""ROS2 Publisher.

Warnings:
- dora Ros2 bridge functionality is considered **unstable**. It may be changed
@@ -300,14 +300,14 @@ class Ros2Publisher:

@typing.final
class Ros2QosPolicies:
"""ROS2 QoS Policy"""
"""ROS2 QoS Policy."""

def __init__(self, durability: dora.Ros2Durability=None, liveliness: dora.Ros2Liveliness=None, reliable: bool=None, keep_all: bool=None, lease_duration: float=None, max_blocking_time: float=None, keep_last: int=None) -> dora.Ros2QoSPolicies:
"""ROS2 QoS Policy"""
"""ROS2 QoS Policy."""

@typing.final
class Ros2Subscription:
"""ROS2 Subscription
"""ROS2 Subscription.

Warnings:
- dora Ros2 bridge functionality is considered **unstable**. It may be changed
@@ -319,7 +319,7 @@ class Ros2Subscription:

@typing.final
class Ros2Topic:
"""ROS2 Topic
"""ROS2 Topic.

Warnings:
- dora Ros2 bridge functionality is considered **unstable**. It may be changed
@@ -328,4 +328,4 @@ class Ros2Topic:
"""

def start_runtime() -> None:
"""Start a runtime for Operators"""
"""Start a runtime for Operators."""

+ 5
- 0
apis/python/node/pyproject.toml View File

@@ -16,3 +16,8 @@ dev = ["pytest >=8.1.1", "ruff >=0.9.1"]

[tool.maturin]
features = ["pyo3/extension-module"]

[tool.ruff.lint]
extend-select = [
"D", # pydocstyle
]

+ 5
- 0
binaries/cli/pyproject.toml View File

@@ -12,3 +12,8 @@ dependencies = ['dora-rs >= 0.3.9', 'uv']

[tool.maturin]
features = ["python", "pyo3/extension-module"]

[tool.ruff.lint]
extend-select = [
"D", # pydocstyle
]

+ 6
- 0
binaries/cli/src/template/python/__node-name__/pyproject.toml View File

@@ -14,3 +14,9 @@ dev = ["pytest >=8.1.1", "ruff >=0.9.1"]

[project.scripts]
__node-name__ = "__node_name__.main:main"


[tool.ruff.lint]
extend-select = [
"D", # pydocstyle
]

+ 4
- 5
binaries/cli/src/template/python/operator/operator-template.py View File

@@ -2,11 +2,10 @@ from dora import DoraStatus


class Operator:
"""Template docstring
"""
"""Template docstring."""

def __init__(self):
"""Called on initialisation"""
"""Called on initialisation."""

def on_event(
self,
@@ -20,7 +19,7 @@ class Operator:
- First argument is the `output_id`
- Second argument is the data as either bytes or `pa.Array`
- Third argument is dora metadata dict
e.g.: `send_output("bbox", pa.array([100], type=pa.uint8()), dora_event["metadata"])`
e.g.: `send_output("bbox", pa.array([100], type=pa.uint8()), dora_event["metadata"])`.

Returns:
DoraStatus:
@@ -37,4 +36,4 @@ class Operator:
return DoraStatus.CONTINUE

def __del__(self):
"""Called before being deleted"""
"""Called before being deleted."""

+ 4
- 8
examples/piper/convert.py View File

@@ -3,8 +3,7 @@ from scipy.spatial.transform import Rotation as R


def convert_quaternion_to_euler(quat):
"""Convert Quaternion (xyzw) to Euler angles (rpy)
"""
"""Convert Quaternion (xyzw) to Euler angles (rpy)."""
# Normalize
quat = quat / np.linalg.norm(quat)
euler = R.from_quat(quat).as_euler("xyz")
@@ -13,24 +12,21 @@ def convert_quaternion_to_euler(quat):


def convert_euler_to_quaternion(euler):
"""Convert Euler angles (rpy) to Quaternion (xyzw)
"""
"""Convert Euler angles (rpy) to Quaternion (xyzw)."""
quat = R.from_euler("xyz", euler).as_quat()

return quat


def convert_euler_to_rotation_matrix(euler):
"""Convert Euler angles (rpy) to rotation matrix (3x3).
"""
"""Convert Euler angles (rpy) to rotation matrix (3x3)."""
quat = R.from_euler("xyz", euler).as_matrix()

return quat


def convert_rotation_matrix_to_euler(rotmat):
"""Convert rotation matrix (3x3) to Euler angles (rpy).
"""
"""Convert rotation matrix (3x3) to Euler angles (rpy)."""
r = R.from_matrix(rotmat)
euler = r.as_euler("xyz", degrees=False)



+ 1
- 2
examples/python-operator-dataflow/file_saver_op.py View File

@@ -3,8 +3,7 @@ from dora import DoraStatus


class Operator:
"""Inferring object from images
"""
"""Inferring object from images."""

def __init__(self):
self.last_file = ""


+ 1
- 2
examples/python-operator-dataflow/llm_op.py View File

@@ -170,8 +170,7 @@ def find_best_match_location(source_code, target_block):


def replace_code_in_source(source_code, replacement_block: str):
"""Replace the best matching block in the source_code with the replacement_block, considering variable block lengths.
"""
"""Replace the best matching block in the source_code with the replacement_block, considering variable block lengths."""
replacement_block = extract_python_code_blocks(replacement_block)[0]
start_index, end_index = find_best_match_location(source_code, replacement_block)
if start_index != -1 and end_index != -1:


+ 1
- 2
examples/python-operator-dataflow/microphone_op.py View File

@@ -9,8 +9,7 @@ MAX_DURATION = 5


class Operator:
"""Microphone operator that records the audio
"""
"""Microphone operator that records the audio."""

def on_event(
self,


+ 1
- 2
examples/python-operator-dataflow/object_detection.py View File

@@ -11,8 +11,7 @@ model = YOLO("yolov8n.pt")


class Operator:
"""Inferring object from images
"""
"""Inferring object from images."""

def on_event(
self,


+ 1
- 2
examples/python-operator-dataflow/plot.py View File

@@ -13,8 +13,7 @@ FONT = cv2.FONT_HERSHEY_SIMPLEX


class Operator:
"""Plot image and bounding box
"""
"""Plot image and bounding box."""

def __init__(self):
self.bboxs = []


+ 1
- 2
examples/python-operator-dataflow/webcam.py View File

@@ -15,8 +15,7 @@ font = cv2.FONT_HERSHEY_SIMPLEX


class Operator:
"""Sending image from webcam to the dataflow
"""
"""Sending image from webcam to the dataflow."""

def __init__(self):
self.video_capture = cv2.VideoCapture(CAMERA_INDEX)


+ 1
- 2
examples/python-operator-dataflow/whisper_op.py View File

@@ -6,8 +6,7 @@ model = whisper.load_model("base")


class Operator:
"""Transforming Speech to Text using OpenAI Whisper model
"""
"""Transforming Speech to Text using OpenAI Whisper model."""

def on_event(
self,


+ 1
- 2
libraries/extensions/ros2-bridge/python/test_utils.py View File

@@ -261,8 +261,7 @@ TEST_ARRAYS = [


def is_subset(subset, superset):
"""Check if subset is a subset of superset, to avoid false negatives linked to default values.
"""
"""Check if subset is a subset of superset, to avoid false negatives linked to default values."""
if isinstance(subset, pa.Array):
return is_subset(subset.to_pylist(), superset.to_pylist())



+ 6
- 0
node-hub/dora-argotranslate/pyproject.toml View File

@@ -18,3 +18,9 @@ dev = ["pytest >=8.1.1", "ruff >=0.9.1"]

[project.scripts]
dora-argotranslate = "dora_argotranslate.main:main"


[tool.ruff.lint]
extend-select = [
"D", # pydocstyle
]

+ 6
- 0
node-hub/dora-distil-whisper/pyproject.toml View File

@@ -27,3 +27,9 @@ dev = ["pytest >=8.1.1", "ruff >=0.9.1"]

[project.scripts]
dora-distil-whisper = "dora_distil_whisper.main:main"


[tool.ruff.lint]
extend-select = [
"D", # pydocstyle
]

+ 6
- 0
node-hub/dora-echo/pyproject.toml View File

@@ -17,3 +17,9 @@ dev = ["pytest >=8.1.1", "ruff >=0.9.1"]

[project.scripts]
dora-echo = "dora_echo.main:main"


[tool.ruff.lint]
extend-select = [
"D", # pydocstyle
]

+ 6
- 0
node-hub/dora-internvl/pyproject.toml View File

@@ -30,3 +30,9 @@ dev = ["pytest >=8.1.1", "ruff >=0.9.1"]

[project.scripts]
dora-internvl = "dora_internvl.main:main"


[tool.ruff.lint]
extend-select = [
"D", # pydocstyle
]

+ 1
- 2
node-hub/dora-ios-lidar/dora_ios_lidar/main.py View File

@@ -16,8 +16,7 @@ class DemoApp:
self.stop = False

def on_new_frame(self):
"""This method is called from non-main thread, therefore cannot be used for presenting UI.
"""
"""This method is called from non-main thread, therefore cannot be used for presenting UI."""
self.event.set() # Notify the main thread to stop waiting and process new frame.

def on_stream_stopped(self):


+ 6
- 0
node-hub/dora-ios-lidar/pyproject.toml View File

@@ -14,3 +14,9 @@ dev = ["pytest >=8.1.1", "ruff >=0.9.1"]

[project.scripts]
dora-ios-lidar = "dora_ios_lidar.main:main"


[tool.ruff.lint]
extend-select = [
"D", # pydocstyle
]

+ 6
- 0
node-hub/dora-keyboard/pyproject.toml View File

@@ -23,3 +23,9 @@ dev = ["pytest >=8.1.1", "ruff >=0.9.1"]

[project.scripts]
dora-keyboard = "dora_keyboard.main:main"


[tool.ruff.lint]
extend-select = [
"D", # pydocstyle
]

+ 6
- 0
node-hub/dora-kit-car/pyproject.toml View File

@@ -15,3 +15,9 @@ scripts = { "dora-kit-car" = "dora_kit_car:py_main" }

[tool.maturin]
features = ["python", "pyo3/extension-module"]


[tool.ruff.lint]
extend-select = [
"D", # pydocstyle
]

+ 6
- 0
node-hub/dora-kokoro-tts/pyproject.toml View File

@@ -14,3 +14,9 @@ dev = ["pytest >=8.1.1", "ruff >=0.9.1"]

[project.scripts]
dora-kokoro-tts = "dora_kokoro_tts.main:main"


[tool.ruff.lint]
extend-select = [
"D", # pydocstyle
]

+ 6
- 0
node-hub/dora-microphone/pyproject.toml View File

@@ -23,3 +23,9 @@ dev = ["pytest >=8.1.1", "ruff >=0.9.1"]

[project.scripts]
dora-microphone = "dora_microphone.main:main"


[tool.ruff.lint]
extend-select = [
"D", # pydocstyle
]

+ 6
- 0
node-hub/dora-object-to-pose/pyproject.toml View File

@@ -14,3 +14,9 @@ scripts = { "dora-object-to-pose" = "dora_object_to_pose:py_main" }

[tool.maturin]
features = ["python", "pyo3/extension-module"]


[tool.ruff.lint]
extend-select = [
"D", # pydocstyle
]

+ 2
- 1
node-hub/dora-openai-server/pyproject.toml View File

@@ -29,4 +29,5 @@ dora-openai-server = "dora_openai_server.main:main"


[tool.ruff.lint]
extend-select = ["I"]
extend-select = ["I","D"]


+ 6
- 0
node-hub/dora-opus/pyproject.toml View File

@@ -27,3 +27,9 @@ dev = ["pytest >=8.1.1", "ruff >=0.9.1"]

[project.scripts]
dora-opus = "dora_opus.main:main"


[tool.ruff.lint]
extend-select = [
"D", # pydocstyle
]

+ 6
- 0
node-hub/dora-outtetts/pyproject.toml View File

@@ -27,3 +27,9 @@ llama-cpp-python = [

[project.scripts]
dora-outtetts = "dora_outtetts.main:main"


[tool.ruff.lint]
extend-select = [
"D", # pydocstyle
]

+ 6
- 0
node-hub/dora-parler/pyproject.toml View File

@@ -29,3 +29,9 @@ dev = ["pytest >=8.1.1", "ruff >=0.9.1"]

[project.scripts]
dora-parler = "dora_parler.main:main"


[tool.ruff.lint]
extend-select = [
"D", # pydocstyle
]

+ 1
- 2
node-hub/dora-piper/dora_piper/main.py View File

@@ -10,8 +10,7 @@ TEACH_MODE = os.getenv("TEACH_MODE", "False") in ["True", "true"]


def enable_fun(piper: C_PiperInterface):
"""使能机械臂并检测使能状态,尝试5s,如果使能超时则退出程序
"""
"""使能机械臂并检测使能状态,尝试5s,如果使能超时则退出程序."""
enable_flag = False
# 设置超时时间(秒)
timeout = 5


+ 6
- 0
node-hub/dora-piper/pyproject.toml View File

@@ -14,3 +14,9 @@ dev = ["pytest >=8.1.1", "ruff >=0.9.1"]

[project.scripts]
dora-piper = "dora_piper.main:main"


[tool.ruff.lint]
extend-select = [
"D", # pydocstyle
]

+ 2
- 2
node-hub/dora-pyaudio/dora_pyaudio/main.py View File

@@ -16,7 +16,7 @@ def play_audio(
sample_rate: int,
stream: pyaudio.Stream = None,
) -> pyaudio.Stream:
"""Play audio using pyaudio and replace stream if already exists"""
"""Play audio using pyaudio and replace stream if already exists."""
if np.issubdtype(audio_array.dtype, np.floating):
audio_array = audio_array * 70_000
audio_array = audio_array.astype(np.int16)
@@ -32,7 +32,7 @@ def play_audio(


def main():
"""Main function for the node"""
"""Main function for the node."""
node = Node()
stream = None
audio = np.array([])


+ 6
- 0
node-hub/dora-pyaudio/pyproject.toml View File

@@ -19,3 +19,9 @@ dev = ["pytest >=8.1.1", "ruff >=0.9.1"]

[project.scripts]
dora-pyaudio = "dora_pyaudio.main:main"


[tool.ruff.lint]
extend-select = [
"D", # pydocstyle
]

+ 6
- 0
node-hub/dora-pyorbbecksdk/pyproject.toml View File

@@ -18,3 +18,9 @@ dev = ["pytest >=8.1.1", "ruff >=0.9.1"]

[project.scripts]
dora-pyorbbecksdk = "dora_pyorbbecksdk.main:main"


[tool.ruff.lint]
extend-select = [
"D", # pydocstyle
]

+ 6
- 0
node-hub/dora-pyrealsense/pyproject.toml View File

@@ -20,3 +20,9 @@ dev = ["pytest >=8.1.1", "ruff >=0.9.1"]

[project.scripts]
dora-pyrealsense = "dora_pyrealsense.main:main"


[tool.ruff.lint]
extend-select = [
"D", # pydocstyle
]

+ 6
- 0
node-hub/dora-qwen/pyproject.toml View File

@@ -41,3 +41,9 @@ explicit = true

[project.scripts]
dora-qwen = "dora_qwen.main:main"


[tool.ruff.lint]
extend-select = [
"D", # pydocstyle
]

+ 6
- 0
node-hub/dora-qwen2-5-vl/pyproject.toml View File

@@ -48,3 +48,9 @@ dora-qwen2-5-vl = "dora_qwen2_5_vl.main:main"
[build-system]
requires = ["setuptools", "setuptools-scm"]
build-backend = "setuptools.build_meta"


[tool.ruff.lint]
extend-select = [
"D", # pydocstyle
]

+ 1
- 2
node-hub/dora-qwenvl/dora_qwenvl/main.py View File

@@ -53,8 +53,7 @@ processor = AutoProcessor.from_pretrained(MODEL_NAME_OR_PATH)


def generate(frames: dict, question):
"""Generate the response to the question given the image using Qwen2 model.
"""
"""Generate the response to the question given the image using Qwen2 model."""
messages = [
{
"role": "user",


+ 6
- 0
node-hub/dora-qwenvl/pyproject.toml View File

@@ -35,3 +35,9 @@ transformers = { git = "https://github.com/huggingface/transformers" }

[project.scripts]
dora-qwenvl = "dora_qwenvl.main:main"


[tool.ruff.lint]
extend-select = [
"D", # pydocstyle
]

+ 6
- 0
node-hub/dora-rdt-1b/pyproject.toml View File

@@ -47,3 +47,9 @@ exclude = ["dora_rdt_1b/RoboticsDiffusionTransformer"]
[build-system]
requires = ["poetry-core>=1.8.0"]
build-backend = "poetry.core.masonry.api"


[tool.ruff.lint]
extend-select = [
"D", # pydocstyle
]

+ 6
- 0
node-hub/dora-reachy2/pyproject.toml View File

@@ -23,3 +23,9 @@ dora-reachy2-left-arm = "dora_reachy2.left_arm:main"
dora-reachy2-right-arm = "dora_reachy2.right_arm:main"
dora-reachy2-mobile-base = "dora_reachy2.mobile_base:main"
dora-reachy2-head = "dora_reachy2.head:main"


[tool.ruff.lint]
extend-select = [
"D", # pydocstyle
]

+ 6
- 0
node-hub/dora-rerun/pyproject.toml View File

@@ -18,3 +18,9 @@ scripts = { "dora-rerun" = "dora_rerun:py_main" }

[tool.maturin]
features = ["python", "pyo3/extension-module"]


[tool.ruff.lint]
extend-select = [
"D", # pydocstyle
]

+ 6
- 0
node-hub/dora-sam2/pyproject.toml View File

@@ -19,3 +19,9 @@ dev = ["pytest >=8.1.1", "ruff >=0.9.1"]

[project.scripts]
dora-sam2 = "dora_sam2.main:main"


[tool.ruff.lint]
extend-select = [
"D", # pydocstyle
]

+ 6
- 0
node-hub/dora-ugv/pyproject.toml View File

@@ -15,3 +15,9 @@ dev = ["pytest >=8.1.1", "ruff >=0.9.1"]

[project.scripts]
dora-ugv = "dora_ugv.main:main"


[tool.ruff.lint]
extend-select = [
"D", # pydocstyle
]

+ 6
- 0
node-hub/dora-vad/pyproject.toml View File

@@ -15,3 +15,9 @@ dev = ["pytest >=8.1.1", "ruff >=0.9.1"]

[project.scripts]
dora-vad = "dora_vad.main:main"


[tool.ruff.lint]
extend-select = [
"D", # pydocstyle
]

+ 6
- 0
node-hub/dora-yolo/pyproject.toml View File

@@ -17,3 +17,9 @@ dev = ["pytest >=8.1.1", "ruff >=0.9.1"]

[project.scripts]
dora-yolo = "dora_yolo.main:main"


[tool.ruff.lint]
extend-select = [
"D", # pydocstyle
]

+ 6
- 0
node-hub/llama-factory-recorder/pyproject.toml View File

@@ -21,3 +21,9 @@ dev = ["pytest >=8.1.1", "ruff >=0.9.1"]

[project.scripts]
llama-factory-recorder = "llama_factory_recorder.main:main"


[tool.ruff.lint]
extend-select = [
"D", # pydocstyle
]

+ 6
- 0
node-hub/opencv-plot/pyproject.toml View File

@@ -17,3 +17,9 @@ dev = ["pytest >=8.1.1", "ruff >=0.9.1"]

[project.scripts]
opencv-plot = "opencv_plot.main:main"


[tool.ruff.lint]
extend-select = [
"D", # pydocstyle
]

+ 6
- 0
node-hub/opencv-video-capture/pyproject.toml View File

@@ -17,3 +17,9 @@ dev = ["pytest >=8.1.1", "ruff >=0.9.1"]

[project.scripts]
opencv-video-capture = "opencv_video_capture.main:main"


[tool.ruff.lint]
extend-select = [
"D", # pydocstyle
]

+ 6
- 0
node-hub/pyarrow-assert/pyproject.toml View File

@@ -18,3 +18,9 @@ dev = ["pytest >=8.1.1", "ruff >=0.9.1"]

[project.scripts]
pyarrow-assert = "pyarrow_assert.main:main"


[tool.ruff.lint]
extend-select = [
"D", # pydocstyle
]

+ 6
- 0
node-hub/pyarrow-sender/pyproject.toml View File

@@ -19,3 +19,9 @@ dev = ["pytest >=8.1.1", "ruff >=0.9.1"]

[project.scripts]
pyarrow-sender = "pyarrow_sender.main:main"


[tool.ruff.lint]
extend-select = [
"D", # pydocstyle
]

+ 6
- 0
node-hub/terminal-input/pyproject.toml View File

@@ -19,3 +19,9 @@ dev = ["pytest >=8.1.1", "ruff >=0.9.1"]

[project.scripts]
terminal-input = "terminal_input.main:main"


[tool.ruff.lint]
extend-select = [
"D", # pydocstyle
]

Loading…
Cancel
Save