[robotpy][examples] Split examples and snippets (#8944)

This also updates the bazel scripts to behave more like the C++ and Java
examples, and updates the copybara scripts to be able to sync up
`mostrobotpy`
This commit is contained in:
PJ Reiniger
2026-06-03 22:43:16 -04:00
committed by GitHub
parent a734275cc5
commit dca59147e1
134 changed files with 111 additions and 80 deletions

View File

@@ -0,0 +1,35 @@
#
# Copyright (c) FIRST and other WPILib contributors.
# Open Source Software; you can modify and/or share it under the terms of
# the WPILib BSD license file in the root directory of this project.
#
from commands2 import Command, Subsystem
from commands2.button import Trigger
import wpilib
from constants import StorageConstants
class Storage(Subsystem):
def __init__(self) -> None:
"""Create a new Storage subsystem."""
super().__init__()
self.motor = wpilib.PWMSparkMax(StorageConstants.kMotorPort)
self.ballSensor = wpilib.DigitalInput(StorageConstants.kBallSensorPort)
# Expose trigger from subsystem to improve readability and ease
# inter-subsystem communications
# Whether the ball storage is full.
self.hasCargo = Trigger(self.ballSensor.get)
# Set default command to turn off the storage motor and then idle
self.setDefaultCommand(
self.runOnce(self.motor.disable)
.andThen(self.run(lambda: None))
.withName("Idle")
)
def runCommand(self) -> Command:
"""Returns a command that runs the storage motor indefinitely."""
return self.run(lambda: self.motor.set(1)).withName("run")