From 68a8ebfc8187b68722650de41824c985253d2ecd Mon Sep 17 00:00:00 2001 From: PJ Reiniger Date: Fri, 24 Apr 2026 17:59:31 -0400 Subject: [PATCH] [robotpy] Fixup problems during stubgen (#8781) Part of the `semiwrap` process that hasn't been ported over yet is generating pyi stubs. It is possible to not have your semiwrap setup correctly and "leak" native types into the generated python docstrings, which causes the process to [fail](https://github.com/pjreiniger/mostrobotpy/actions/runs/24618640845/job/71985311682#step:12:3652). semiwrap also has a tool you can run, 'create-imports' that will read the symbols from a build pybind library and automatically create and sort the imports in the `__init__.py` file. This step is not enforced by CI, which is why it hasn't been failing in `mostrobotpy` land. This PR fixes the stubgen problems and runs reorganizes the imports. I will have a follow up PR that can bring these automatically into the build system after this lands. I'd do a fancy new `gh stack` but I can't figure out if it works on forks. --- .../python/semiwrap/PeriodicPriorityQueue.yml | 4 +++ .../src/main/python/semiwrap/TimedRobot.yml | 4 +++ wpilibc/src/main/python/wpilib/__init__.py | 30 +++++++++++++------ .../main/python/wpilib/simulation/__init__.py | 13 ++++---- wpimath/src/main/python/wpimath/__init__.py | 2 ++ wpiutil/src/main/python/wpiutil/__init__.py | 2 ++ .../src/main/python/wpiutil/sync/__init__.py | 8 ++--- 7 files changed, 44 insertions(+), 19 deletions(-) diff --git a/wpilibc/src/main/python/semiwrap/PeriodicPriorityQueue.yml b/wpilibc/src/main/python/semiwrap/PeriodicPriorityQueue.yml index 5b0aff0889..369920f5a4 100644 --- a/wpilibc/src/main/python/semiwrap/PeriodicPriorityQueue.yml +++ b/wpilibc/src/main/python/semiwrap/PeriodicPriorityQueue.yml @@ -1,3 +1,6 @@ +extra_includes: +- pybind11/chrono.h + classes: wpi::internal::PeriodicPriorityQueue: methods: @@ -12,6 +15,7 @@ classes: Clear: RunCallbacks: GetQueue: + ignore: true GetLoopStartTime: wpi::internal::PeriodicPriorityQueue::Callback: attributes: diff --git a/wpilibc/src/main/python/semiwrap/TimedRobot.yml b/wpilibc/src/main/python/semiwrap/TimedRobot.yml index 3fe79f9c43..d7fba7fdb9 100644 --- a/wpilibc/src/main/python/semiwrap/TimedRobot.yml +++ b/wpilibc/src/main/python/semiwrap/TimedRobot.yml @@ -1,8 +1,12 @@ +extra_includes: +- pybind11/chrono.h + classes: wpi::TimedRobot: attributes: DEFAULT_PERIOD: m_notifier: + ignore: true m_startTime: methods: StartCompetition: diff --git a/wpilibc/src/main/python/wpilib/__init__.py b/wpilibc/src/main/python/wpilib/__init__.py index 0badc582da..da8a19cef8 100644 --- a/wpilibc/src/main/python/wpilib/__init__.py +++ b/wpilibc/src/main/python/wpilib/__init__.py @@ -5,6 +5,7 @@ from ._wpilib import ( ADXL345_I2C, AddressableLED, Alert, + Alliance, AnalogAccelerometer, AnalogEncoder, AnalogInput, @@ -42,6 +43,7 @@ from ._wpilib import ( Koors40, LEDPattern, MatchState, + MatchType, MecanumDrive, Mechanism2d, MechanismLigament2d, @@ -51,12 +53,15 @@ from ._wpilib import ( MotorControllerGroup, MotorSafety, NetworkBooleanEvent, + NiDsPS4Controller, + NiDsPS5Controller, + NiDsStadiaController, + NiDsXboxController, Notifier, OnboardIMU, OpMode, OpModeRobotBase, - NiDsPS4Controller, - NiDsPS5Controller, + POVDirection, PWM, PWMMotorController, PWMSparkFlex, @@ -66,6 +71,7 @@ from ._wpilib import ( PWMVenom, PWMVictorSPX, PeriodicOpMode, + PeriodicPriorityQueue, PneumaticHub, PneumaticsBase, PneumaticsControlModule, @@ -87,22 +93,22 @@ from ._wpilib import ( Solenoid, Spark, SparkMini, - NiDsStadiaController, SystemServer, Tachometer, Talon, TimedRobot, Timer, TimesliceRobot, + TouchpadFinger, Tracer, UpDownCounter, VictorSP, Watchdog, - NiDsXboxController, getCurrentThreadPriority, getDeployDirectory, getErrorMessage, getOperatingDirectory, + getPOVAngle, getSystemTime, setCurrentThreadPriority, wait, @@ -112,6 +118,7 @@ __all__ = [ "ADXL345_I2C", "AddressableLED", "Alert", + "Alliance", "AnalogAccelerometer", "AnalogEncoder", "AnalogInput", @@ -149,6 +156,7 @@ __all__ = [ "Koors40", "LEDPattern", "MatchState", + "MatchType", "MecanumDrive", "Mechanism2d", "MechanismLigament2d", @@ -158,12 +166,15 @@ __all__ = [ "MotorControllerGroup", "MotorSafety", "NetworkBooleanEvent", + "NiDsPS4Controller", + "NiDsPS5Controller", + "NiDsStadiaController", + "NiDsXboxController", "Notifier", "OnboardIMU", "OpMode", "OpModeRobotBase", - "NiDsPS4Controller", - "NiDsPS5Controller", + "POVDirection", "PWM", "PWMMotorController", "PWMSparkFlex", @@ -173,6 +184,7 @@ __all__ = [ "PWMVenom", "PWMVictorSPX", "PeriodicOpMode", + "PeriodicPriorityQueue", "PneumaticHub", "PneumaticsBase", "PneumaticsControlModule", @@ -180,9 +192,9 @@ __all__ = [ "PowerDistribution", "Preferences", "RobotBase", - "RobotState", "RobotController", "RobotDriveBase", + "RobotState", "RuntimeType", "SendableBuilderImpl", "SendableChooser", @@ -194,22 +206,22 @@ __all__ = [ "Solenoid", "Spark", "SparkMini", - "NiDsStadiaController", "SystemServer", "Tachometer", "Talon", "TimedRobot", "Timer", "TimesliceRobot", + "TouchpadFinger", "Tracer", "UpDownCounter", "VictorSP", "Watchdog", - "NiDsXboxController", "getCurrentThreadPriority", "getDeployDirectory", "getErrorMessage", "getOperatingDirectory", + "getPOVAngle", "getSystemTime", "setCurrentThreadPriority", "wait", diff --git a/wpilibc/src/main/python/wpilib/simulation/__init__.py b/wpilibc/src/main/python/wpilib/simulation/__init__.py index c322d62b4c..22d290d21d 100644 --- a/wpilibc/src/main/python/wpilib/simulation/__init__.py +++ b/wpilibc/src/main/python/wpilib/simulation/__init__.py @@ -30,9 +30,11 @@ from ._simulation import ( LinearSystemSim_2_1_2, LinearSystemSim_2_2_1, LinearSystemSim_2_2_2, - OpModeOptions, NiDsPS4ControllerSim, NiDsPS5ControllerSim, + NiDsStadiaControllerSim, + NiDsXboxControllerSim, + OpModeOptions, PWMMotorControllerSim, PWMSim, PneumaticsBaseSim, @@ -44,8 +46,6 @@ from ._simulation import ( SimDeviceSim, SingleJointedArmSim, SolenoidSim, - NiDsStadiaControllerSim, - NiDsXboxControllerSim, getProgramStarted, getProgramState, isTimingPaused, @@ -62,6 +62,7 @@ from ._simulation import ( __all__ = [ "ADXL345Sim", "AddressableLEDSim", + "AlertSim", "AnalogEncoderSim", "AnalogInputSim", "BatterySim", @@ -87,9 +88,11 @@ __all__ = [ "LinearSystemSim_2_1_2", "LinearSystemSim_2_2_1", "LinearSystemSim_2_2_2", - "OpModeOptions", "NiDsPS4ControllerSim", "NiDsPS5ControllerSim", + "NiDsStadiaControllerSim", + "NiDsXboxControllerSim", + "OpModeOptions", "PWMMotorControllerSim", "PWMSim", "PneumaticsBaseSim", @@ -101,8 +104,6 @@ __all__ = [ "SimDeviceSim", "SingleJointedArmSim", "SolenoidSim", - "NiDsStadiaControllerSim", - "NiDsXboxControllerSim", "getProgramStarted", "getProgramState", "isTimingPaused", diff --git a/wpimath/src/main/python/wpimath/__init__.py b/wpimath/src/main/python/wpimath/__init__.py index 0dbcd1cc8b..ea2a23443b 100644 --- a/wpimath/src/main/python/wpimath/__init__.py +++ b/wpimath/src/main/python/wpimath/__init__.py @@ -33,6 +33,7 @@ from ._wpimath import ( DifferentialDriveWheelPositions, DifferentialDriveWheelVelocities, DifferentialDriveWheelVoltages, + EdgeCounterFilter, ElevatorFeedforward, Ellipse2d, EllipticalRegionConstraint, @@ -225,6 +226,7 @@ __all__ = [ "DifferentialDriveWheelPositions", "DifferentialDriveWheelVelocities", "DifferentialDriveWheelVoltages", + "EdgeCounterFilter", "ElevatorFeedforward", "Ellipse2d", "EllipticalRegionConstraint", diff --git a/wpiutil/src/main/python/wpiutil/__init__.py b/wpiutil/src/main/python/wpiutil/__init__.py index 15f1359a85..9896d1db26 100644 --- a/wpiutil/src/main/python/wpiutil/__init__.py +++ b/wpiutil/src/main/python/wpiutil/__init__.py @@ -4,6 +4,7 @@ from . import _init__wpiutil from ._wpiutil import ( Color, Color8Bit, + PixelFormat, Sendable, SendableBuilder, SendableRegistry, @@ -15,6 +16,7 @@ from ._wpiutil import ( __all__ = [ "Color", "Color8Bit", + "PixelFormat", "Sendable", "SendableBuilder", "SendableRegistry", diff --git a/wpiutil/src/main/python/wpiutil/sync/__init__.py b/wpiutil/src/main/python/wpiutil/sync/__init__.py index f4733d78f1..ccb747bfa0 100644 --- a/wpiutil/src/main/python/wpiutil/sync/__init__.py +++ b/wpiutil/src/main/python/wpiutil/sync/__init__.py @@ -1,11 +1,11 @@ # autogenerated by 'semiwrap create-imports wpiutil.sync wpiutil._wpiutil.sync' from .._wpiutil.sync import ( - makeEvent, - makeSemaphore, createSignalObject, destroyEvent, destroySemaphore, destroySignalObject, + makeEvent, + makeSemaphore, releaseSemaphore, resetEvent, resetSignalObject, @@ -16,12 +16,12 @@ from .._wpiutil.sync import ( ) __all__ = [ - "makeEvent", - "makeSemaphore", "createSignalObject", "destroyEvent", "destroySemaphore", "destroySignalObject", + "makeEvent", + "makeSemaphore", "releaseSemaphore", "resetEvent", "resetSignalObject",