From 54183147ed03220c01c0d6b177cd112ff26edaf1 Mon Sep 17 00:00:00 2001 From: Nicholas Armstrong Date: Thu, 24 Oct 2024 16:40:44 -0400 Subject: [PATCH] recommended changes --- commands2/cmd.py | 17 +++++++++++++++++ commands2/command.py | 8 ++++---- 2 files changed, 21 insertions(+), 4 deletions(-) diff --git a/commands2/cmd.py b/commands2/cmd.py index 42b9043..5390697 100644 --- a/commands2/cmd.py +++ b/commands2/cmd.py @@ -165,6 +165,23 @@ def select( """ return SelectCommand(commands, selector) +def fork( + *commands: Command +) -> Command: + """ + Create a command to run "forked" by wrapping the provided commands in a ScheduleCommand. Use this for + "forking off" from command compositions when the user does not wish to extend the command's + requirements to the entire command composition. Note that if run from a composition, the + composition will not know about the status of the scheduled commands, and will treat this + command as finishing instantly. Multiple commmands can be added to this and will be schedule in order., + see the `WPILib docs `_ for a full explanation. + + :param commands: commands to schedule in order + :returns: the command + """ + from .schedulecommand import ScheduleCommand + return ScheduleCommand(commands) + def sequence(*commands: Command) -> Command: """ diff --git a/commands2/command.py b/commands2/command.py index fd26040..6d60c9f 100644 --- a/commands2/command.py +++ b/commands2/command.py @@ -18,6 +18,7 @@ from .parallelcommandgroup import ParallelCommandGroup from .repeatcommand import RepeatCommand from .proxycommand import ProxyCommand + from .schedulecommand import ScheduleCommand from .conditionalcommand import ConditionalCommand from .wrappercommand import WrapperCommand @@ -384,21 +385,20 @@ def asProxy(self) -> ProxyCommand: return ProxyCommand(self) - def fork(self, *commands: Command) -> ProxyCommand: + def fork(self, *commands: Command) -> ScheduleCommand: """ Decorates this command to run "forked" by wrapping it in a ScheduleCommand. Use this for "forking off" from command compositions when the user does not wish to extend the command's requirements to the entire command composition. Note that if run from a composition, the composition will not know about the status of the scheduled commands, and will treat this - command as finishing instantly. Commands can be added to this and will be scheduled in order - with this command scheduled first., see the `WPILib docs `_ for a full explanation. + command as finishing instantly., see the `WPILib docs `_ for a full explanation. :param other: other commands to schedule along with this one. This command is scheduled first. :returns: the decorated command """ from .schedulecommand import ScheduleCommand - return ScheduleCommand(self, [self] + commands) + return ScheduleCommand(self) def unless(self, condition: Callable[[], bool]) -> ConditionalCommand: """