diff --git a/src/hippopt/base/dynamics.py b/src/hippopt/base/dynamics.py index 5af62621..161a36cf 100644 --- a/src/hippopt/base/dynamics.py +++ b/src/hippopt/base/dynamics.py @@ -159,14 +159,16 @@ def equal( def __eq__( self, - other: cs.Function - | str - | list[str] - | cs.MX - | tuple[cs.Function, dict[str, str]] - | tuple[str, dict[str, str]] - | tuple[list[str], dict[str, str]] - | tuple[cs.MX, dict[str, str]], + other: ( + cs.Function + | str + | list[str] + | cs.MX + | tuple[cs.Function, dict[str, str]] + | tuple[str, dict[str, str]] + | tuple[list[str], dict[str, str]] + | tuple[cs.MX, dict[str, str]] + ), ) -> TDynamics: if isinstance(other, tuple): return self.equal(f=other[0], names_map=other[1]) diff --git a/src/hippopt/base/multiple_shooting_solver.py b/src/hippopt/base/multiple_shooting_solver.py index a52f19d8..b421a8a9 100644 --- a/src/hippopt/base/multiple_shooting_solver.py +++ b/src/hippopt/base/multiple_shooting_solver.py @@ -39,9 +39,9 @@ class MultipleShootingSolver(OptimalControlSolver): _flattened_variables: FlattenedVariableDict = dataclasses.field(default=None) - _symbolic_structure: TOptimizationObject | list[ - TOptimizationObject - ] = dataclasses.field(default=None) + _symbolic_structure: TOptimizationObject | list[TOptimizationObject] = ( + dataclasses.field(default=None) + ) def __post_init__( self, @@ -363,9 +363,9 @@ def _generate_flattened_and_symbolic_objects( # TODO: remove some indentation object_in=field_value, top_level=False, base_string=base_string + field.name + ".", - base_iterator=(base_iterator[0], generator) - if generator is not None - else None, + base_iterator=( + (base_iterator[0], generator) if generator is not None else None + ), ) output_dict = output_dict | inner_dict @@ -408,9 +408,11 @@ def _generate_flattened_and_symbolic_objects( # TODO: remove some indentation + "[" + str(k) + "].", # we flatten the list. Note the added [k] - base_iterator=(base_iterator[0], generator) - if generator is not None - else None, + base_iterator=( + (base_iterator[0], generator) + if generator is not None + else None + ), ) output_dict = output_dict | inner_dict diff --git a/src/hippopt/base/opti_solver.py b/src/hippopt/base/opti_solver.py index 715c974a..47d820ff 100644 --- a/src/hippopt/base/opti_solver.py +++ b/src/hippopt/base/opti_solver.py @@ -77,9 +77,9 @@ class OptiSolver(OptimizationSolver): _cost_expressions: dict[str, cs.MX] = dataclasses.field(default=None) _constraint_expressions: dict[str, cs.MX] = dataclasses.field(default=None) _solver: cs.Opti = dataclasses.field(default=None) - _output_solution: TOptimizationObject | list[ - TOptimizationObject - ] = dataclasses.field(default=None) + _output_solution: TOptimizationObject | list[TOptimizationObject] = ( + dataclasses.field(default=None) + ) _output_cost: float = dataclasses.field(default=None) _cost_values: dict[str, float] = dataclasses.field(default=None) _constraint_values: dict[str, np.ndarray] = dataclasses.field(default=None) @@ -304,9 +304,11 @@ def _get_opti_solution( def _generate_solution_output( self, - variables: TOptimizationObject - | list[TOptimizationObject] - | list[list[TOptimizationObject]], + variables: ( + TOptimizationObject + | list[TOptimizationObject] + | list[list[TOptimizationObject]] + ), input_solution: cs.OptiSol | dict, ) -> TOptimizationObject | list[TOptimizationObject]: output = copy.deepcopy(variables) @@ -383,12 +385,16 @@ def _set_opti_guess(self, variable: cs.MX, value: np.ndarray) -> None: def _set_initial_guess_internal( self, - initial_guess: TOptimizationObject - | list[TOptimizationObject] - | list[list[TOptimizationObject]], - corresponding_variable: TOptimizationObject - | list[TOptimizationObject] - | list[list[TOptimizationObject]], + initial_guess: ( + TOptimizationObject + | list[TOptimizationObject] + | list[list[TOptimizationObject]] + ), + corresponding_variable: ( + TOptimizationObject + | list[TOptimizationObject] + | list[list[TOptimizationObject]] + ), base_name: str = "", ) -> None: if isinstance(initial_guess, list): @@ -679,12 +685,16 @@ def solve(self) -> None: opti=self._solver, variables=variables, parameters=parameters, - costs=list(self._cost_expressions.values()) - if self._callback_save_costs - else [], - constraints=list(self._constraint_expressions.values()) - if self._callback_save_constraint_multipliers - else [], + costs=( + list(self._cost_expressions.values()) + if self._callback_save_costs + else [] + ), + constraints=( + list(self._constraint_expressions.values()) + if self._callback_save_constraint_multipliers + else [] + ), ) self._solver.callback(self._callback) try: diff --git a/src/hippopt/base/optimal_control_problem.py b/src/hippopt/base/optimal_control_problem.py index 610ad26d..0b249bee 100644 --- a/src/hippopt/base/optimal_control_problem.py +++ b/src/hippopt/base/optimal_control_problem.py @@ -48,9 +48,9 @@ def __iter__(self): @dataclasses.dataclass class OptimalControlProblem(Problem[TOptimalControlSolver, TInputObjects]): - optimal_control_solver: dataclasses.InitVar[ - OptimalControlSolver - ] = dataclasses.field(default=None) + optimal_control_solver: dataclasses.InitVar[OptimalControlSolver] = ( + dataclasses.field(default=None) + ) def __post_init__( self, diff --git a/src/hippopt/base/problem.py b/src/hippopt/base/problem.py index be6a6653..b4d024b3 100644 --- a/src/hippopt/base/problem.py +++ b/src/hippopt/base/problem.py @@ -39,9 +39,9 @@ class Output(Generic[TGenericOptimizationObject]): _cost_values: dataclasses.InitVar[dict[str, np.ndarray]] = dataclasses.field( default=None ) - _constraint_multipliers: dataclasses.InitVar[ - dict[str, np.ndarray] - ] = dataclasses.field(default=None) + _constraint_multipliers: dataclasses.InitVar[dict[str, np.ndarray]] = ( + dataclasses.field(default=None) + ) def __post_init__( self, diff --git a/src/hippopt/robot_planning/utilities/foot_contact_state_plotter.py b/src/hippopt/robot_planning/utilities/foot_contact_state_plotter.py index fe978282..7b31110b 100644 --- a/src/hippopt/robot_planning/utilities/foot_contact_state_plotter.py +++ b/src/hippopt/robot_planning/utilities/foot_contact_state_plotter.py @@ -25,9 +25,9 @@ class ContactPointStatePlotterSettings: force_axes: matplotlib.axes.Axes | None = dataclasses.field(default=None) terrain: TerrainDescriptor = dataclasses.field(default=None) - input_complementarity_axes: dataclasses.InitVar[ - list[matplotlib.axes.Axes] - ] = dataclasses.field(default=None) + input_complementarity_axes: dataclasses.InitVar[list[matplotlib.axes.Axes]] = ( + dataclasses.field(default=None) + ) input_force_axes: dataclasses.InitVar[matplotlib.axes.Axes] = dataclasses.field( default=None ) diff --git a/src/hippopt/robot_planning/variables/humanoid.py b/src/hippopt/robot_planning/variables/humanoid.py index 884adb26..e7552f0e 100644 --- a/src/hippopt/robot_planning/variables/humanoid.py +++ b/src/hippopt/robot_planning/variables/humanoid.py @@ -30,9 +30,9 @@ class HumanoidState(OptimizationObject): com: StorageType = default_storage_field(OverridableVariable) - contact_point_descriptors: dataclasses.InitVar[ - FeetContactPointDescriptors - ] = dataclasses.field(default=None) + contact_point_descriptors: dataclasses.InitVar[FeetContactPointDescriptors] = ( + dataclasses.field(default=None) + ) number_of_joints: dataclasses.InitVar[int] = dataclasses.field(default=None) def __post_init__( diff --git a/test/test_opti_generate_objects.py b/test/test_opti_generate_objects.py index bd9fa3f3..02d4f9e0 100644 --- a/test/test_opti_generate_objects.py +++ b/test/test_opti_generate_objects.py @@ -178,10 +178,10 @@ class CustomCustomOverridableVariableInner(OptimizationObject): @dataclasses.dataclass class CustomCustomOverridableVariableNested(OptimizationObject): - composite: CompositeType[ - CustomCustomOverridableVariableInner - ] = default_composite_field( - cls=OverridableParameter, factory=CustomCustomOverridableVariableInner + composite: CompositeType[CustomCustomOverridableVariableInner] = ( + default_composite_field( + cls=OverridableParameter, factory=CustomCustomOverridableVariableInner + ) )