diff --git a/cocofest/dynamics/initial_guess_warm_start.py b/cocofest/dynamics/initial_guess_warm_start.py index d5e59922..b78596bb 100644 --- a/cocofest/dynamics/initial_guess_warm_start.py +++ b/cocofest/dynamics/initial_guess_warm_start.py @@ -2,6 +2,8 @@ This class is meant to determine the initial states and control guesses of an optimization problem. """ +from __future__ import annotations + import numpy as np import biorbd diff --git a/cocofest/integration/ivp_fes.py b/cocofest/integration/ivp_fes.py index 0df1737f..df614aa8 100644 --- a/cocofest/integration/ivp_fes.py +++ b/cocofest/integration/ivp_fes.py @@ -2,6 +2,8 @@ Code used to determine the Initial Value Problem. """ +from __future__ import annotations + import numpy as np from bioptim import ( ControlType, diff --git a/cocofest/misc/fourier_approx.py b/cocofest/misc/fourier_approx.py index 5e668f55..69e9c5ab 100644 --- a/cocofest/misc/fourier_approx.py +++ b/cocofest/misc/fourier_approx.py @@ -2,6 +2,8 @@ This class enables the creation of a Fourier serie, to track a position, a force position with the optimization problem. """ +from __future__ import annotations + from casadi import cos, sin import matplotlib.pyplot as plt import numpy as np diff --git a/cocofest/models/ding2003/ding2003.py b/cocofest/models/ding2003/ding2003.py index 02d2ca79..fb16d83a 100644 --- a/cocofest/models/ding2003/ding2003.py +++ b/cocofest/models/ding2003/ding2003.py @@ -5,6 +5,8 @@ during functional electrical stimulation. Journal of Electromyography and Kinesiology, 13(6), 575-588. """ +from __future__ import annotations + from typing import Callable, List from math import gcd from fractions import Fraction diff --git a/cocofest/models/ding2003/ding2003_with_fatigue.py b/cocofest/models/ding2003/ding2003_with_fatigue.py index 000938ed..e41bf599 100644 --- a/cocofest/models/ding2003/ding2003_with_fatigue.py +++ b/cocofest/models/ding2003/ding2003_with_fatigue.py @@ -5,6 +5,8 @@ during functional electrical stimulation. Journal of Electromyography and Kinesiology, 13(6), 575-588. """ +from __future__ import annotations + from typing import Callable from casadi import MX, vertcat diff --git a/cocofest/models/ding2007/ding2007.py b/cocofest/models/ding2007/ding2007.py index b4e217d0..2f9d90f2 100644 --- a/cocofest/models/ding2007/ding2007.py +++ b/cocofest/models/ding2007/ding2007.py @@ -5,6 +5,8 @@ force-intensity and force-frequency relationships after spinal cord injuries. Muscle & Nerve, 36(2), 214-222. """ +from __future__ import annotations + from typing import Callable, List from casadi import MX, vertcat, exp diff --git a/cocofest/models/ding2007/ding2007_with_fatigue.py b/cocofest/models/ding2007/ding2007_with_fatigue.py index 3d98f41e..edac0d21 100644 --- a/cocofest/models/ding2007/ding2007_with_fatigue.py +++ b/cocofest/models/ding2007/ding2007_with_fatigue.py @@ -5,6 +5,8 @@ force-intensity and force-frequency relationships after spinal cord injuries. Muscle & Nerve, 36(2), 214-222. """ +from __future__ import annotations + from typing import Callable from casadi import MX, vertcat diff --git a/cocofest/models/dynamical_model.py b/cocofest/models/dynamical_model.py index af71b0f0..5c9607d8 100644 --- a/cocofest/models/dynamical_model.py +++ b/cocofest/models/dynamical_model.py @@ -2,6 +2,8 @@ Musculoskeletal model driven by one or more FES muscle models. """ +from __future__ import annotations + from typing import Callable, List import numpy as np diff --git a/cocofest/models/fes_model.py b/cocofest/models/fes_model.py index e6ef4d57..f45b36f9 100644 --- a/cocofest/models/fes_model.py +++ b/cocofest/models/fes_model.py @@ -2,6 +2,8 @@ Abstract interface every FES model must implement to be usable within bioptim. """ +from __future__ import annotations + from abc import ABC, abstractmethod from casadi import MX diff --git a/cocofest/models/hill_coefficients.py b/cocofest/models/hill_coefficients.py index ebe17c32..4e37824f 100644 --- a/cocofest/models/hill_coefficients.py +++ b/cocofest/models/hill_coefficients.py @@ -6,6 +6,8 @@ Annals of biomedical engineering, 44, 2922-2936. """ +from __future__ import annotations + from casadi import exp, log, sqrt diff --git a/cocofest/models/hmed2018/hmed2018.py b/cocofest/models/hmed2018/hmed2018.py index 6778fd69..cad7d914 100644 --- a/cocofest/models/hmed2018/hmed2018.py +++ b/cocofest/models/hmed2018/hmed2018.py @@ -6,6 +6,8 @@ Computers in Biology and Medicine, 101, 218-228. """ +from __future__ import annotations + from typing import Callable, List from casadi import MX, vertcat, tanh diff --git a/cocofest/models/hmed2018/hmed2018_with_fatigue.py b/cocofest/models/hmed2018/hmed2018_with_fatigue.py index b4258e24..fb10a1ff 100644 --- a/cocofest/models/hmed2018/hmed2018_with_fatigue.py +++ b/cocofest/models/hmed2018/hmed2018_with_fatigue.py @@ -6,6 +6,8 @@ Computers in Biology and Medicine, 101, 218-228. """ +from __future__ import annotations + from typing import Callable from casadi import MX, vertcat diff --git a/cocofest/models/marion2009/marion2009.py b/cocofest/models/marion2009/marion2009.py index 9ac64262..123f3bfa 100644 --- a/cocofest/models/marion2009/marion2009.py +++ b/cocofest/models/marion2009/marion2009.py @@ -5,6 +5,8 @@ muscle length on fatigue during electrical stimulation. Muscle & Nerve, 40(4), 573-581. """ +from __future__ import annotations + from typing import Callable from casadi import MX, vertcat diff --git a/cocofest/models/marion2009/marion2009_modified.py b/cocofest/models/marion2009/marion2009_modified.py index dddce782..a03035c5 100644 --- a/cocofest/models/marion2009/marion2009_modified.py +++ b/cocofest/models/marion2009/marion2009_modified.py @@ -5,6 +5,8 @@ muscle length on fatigue during electrical stimulation. Muscle & Nerve, 40(4), 573-581. """ +from __future__ import annotations + from typing import Callable from casadi import MX, vertcat diff --git a/cocofest/models/marion2009/marion2009_modified_with_fatigue.py b/cocofest/models/marion2009/marion2009_modified_with_fatigue.py index 339425fe..2a08425e 100644 --- a/cocofest/models/marion2009/marion2009_modified_with_fatigue.py +++ b/cocofest/models/marion2009/marion2009_modified_with_fatigue.py @@ -5,6 +5,8 @@ muscle length on fatigue during electrical stimulation. Muscle & Nerve, 40(4), 573-581. """ +from __future__ import annotations + from typing import Callable import numpy as np diff --git a/cocofest/models/marion2009/marion2009_with_fatigue.py b/cocofest/models/marion2009/marion2009_with_fatigue.py index a3a0b8e0..d4f7337f 100644 --- a/cocofest/models/marion2009/marion2009_with_fatigue.py +++ b/cocofest/models/marion2009/marion2009_with_fatigue.py @@ -5,6 +5,8 @@ muscle length on fatigue during electrical stimulation. Muscle & Nerve, 40(4), 573-581. """ +from __future__ import annotations + from typing import Callable import numpy as np diff --git a/cocofest/models/marion2013/marion2013.py b/cocofest/models/marion2013/marion2013.py index 61aeb15f..8e37dae2 100644 --- a/cocofest/models/marion2013/marion2013.py +++ b/cocofest/models/marion2013/marion2013.py @@ -6,6 +6,8 @@ and Rehabilitation, 10, 1-16. """ +from __future__ import annotations + from typing import Callable from casadi import MX, vertcat, exp, cos, pi import numpy as np diff --git a/cocofest/models/marion2013/marion2013_modified.py b/cocofest/models/marion2013/marion2013_modified.py index 61037cb2..69a24c66 100644 --- a/cocofest/models/marion2013/marion2013_modified.py +++ b/cocofest/models/marion2013/marion2013_modified.py @@ -6,6 +6,8 @@ and Rehabilitation, 10, 1-16. """ +from __future__ import annotations + from typing import Callable from casadi import MX, vertcat, exp, cos, pi import numpy as np diff --git a/cocofest/models/marion2013/marion2013_modified_with_fatigue.py b/cocofest/models/marion2013/marion2013_modified_with_fatigue.py index 6c96ea79..d0b1766f 100644 --- a/cocofest/models/marion2013/marion2013_modified_with_fatigue.py +++ b/cocofest/models/marion2013/marion2013_modified_with_fatigue.py @@ -6,6 +6,8 @@ and Rehabilitation, 10, 1-16. """ +from __future__ import annotations + from typing import Callable from casadi import MX, vertcat import numpy as np diff --git a/cocofest/models/marion2013/marion2013_with_fatigue.py b/cocofest/models/marion2013/marion2013_with_fatigue.py index 96ab8aa0..79478795 100644 --- a/cocofest/models/marion2013/marion2013_with_fatigue.py +++ b/cocofest/models/marion2013/marion2013_with_fatigue.py @@ -6,6 +6,8 @@ and Rehabilitation, 10, 1-16. """ +from __future__ import annotations + from typing import Callable from casadi import MX, vertcat import numpy as np diff --git a/cocofest/models/state_configure.py b/cocofest/models/state_configure.py index 2571feab..499ef56b 100644 --- a/cocofest/models/state_configure.py +++ b/cocofest/models/state_configure.py @@ -2,6 +2,8 @@ Registers the bioptim states/controls used by Cocofest's FES and musculoskeletal models. """ +from __future__ import annotations + from bioptim import ( ConfigureVariables, NonLinearProgram, diff --git a/cocofest/models/veltink1992/veltink1992.py b/cocofest/models/veltink1992/veltink1992.py index 9c1120e2..12e7650d 100644 --- a/cocofest/models/veltink1992/veltink1992.py +++ b/cocofest/models/veltink1992/veltink1992.py @@ -5,6 +5,8 @@ for artificially stimulated muscle. IEEE Transactions on Biomedical Engineering, 39(4), 368-380. """ +from __future__ import annotations + from typing import Callable, List from casadi import MX, vertcat import numpy as np diff --git a/cocofest/models/veltink1992/veltink1992_and_riener1998.py b/cocofest/models/veltink1992/veltink1992_and_riener1998.py index fff79410..f779a65d 100644 --- a/cocofest/models/veltink1992/veltink1992_and_riener1998.py +++ b/cocofest/models/veltink1992/veltink1992_and_riener1998.py @@ -7,6 +7,8 @@ fatigue during electrical stimulation. IEEE Transactions on Biomedical Engineering, 45(1), 105-113. """ +from __future__ import annotations + from typing import Callable from casadi import MX, vertcat import numpy as np diff --git a/cocofest/optimization/fes_id_ocp.py b/cocofest/optimization/fes_id_ocp.py index 7bfe535f..5267e377 100644 --- a/cocofest/optimization/fes_id_ocp.py +++ b/cocofest/optimization/fes_id_ocp.py @@ -2,6 +2,8 @@ Builds the optimal control problem used to identify FES model parameters by fitting a tracked force curve. """ +from __future__ import annotations + import numpy as np from bioptim import ( diff --git a/cocofest/optimization/fes_mhe.py b/cocofest/optimization/fes_mhe.py index 1f0359fb..d804a5d1 100644 --- a/cocofest/optimization/fes_mhe.py +++ b/cocofest/optimization/fes_mhe.py @@ -2,6 +2,8 @@ Moving horizon estimation (MHE) for a single-muscle FES model. """ +from __future__ import annotations + import numpy as np from casadi import SX diff --git a/cocofest/optimization/fes_mhe_multibody.py b/cocofest/optimization/fes_mhe_multibody.py index 776b327e..b2ed7d33 100644 --- a/cocofest/optimization/fes_mhe_multibody.py +++ b/cocofest/optimization/fes_mhe_multibody.py @@ -2,6 +2,8 @@ Moving horizon estimation (MHE) for a musculoskeletal model (FesMskModel) driven by FES. """ +from __future__ import annotations + import numpy as np from copy import deepcopy from casadi import SX diff --git a/cocofest/optimization/fes_ocp.py b/cocofest/optimization/fes_ocp.py index b13443a6..ae6f1c7d 100644 --- a/cocofest/optimization/fes_ocp.py +++ b/cocofest/optimization/fes_ocp.py @@ -2,6 +2,8 @@ Builds the optimal control problem used to optimize a single-muscle FES model. """ +from __future__ import annotations + import numpy as np from bioptim import ( diff --git a/cocofest/optimization/fes_ocp_multibody.py b/cocofest/optimization/fes_ocp_multibody.py index 53749754..7a3d2d05 100644 --- a/cocofest/optimization/fes_ocp_multibody.py +++ b/cocofest/optimization/fes_ocp_multibody.py @@ -2,6 +2,8 @@ Builds the optimal control problem for a musculoskeletal model driven by one or more FES muscle models. """ +from __future__ import annotations + import numpy as np from bioptim import ( diff --git a/cocofest/optimization/penalties/custom_constraints.py b/cocofest/optimization/penalties/custom_constraints.py index afd12078..7fea657f 100644 --- a/cocofest/optimization/penalties/custom_constraints.py +++ b/cocofest/optimization/penalties/custom_constraints.py @@ -3,6 +3,8 @@ By adding definitions to this class, you can create your own custom constraints. """ +from __future__ import annotations + from casadi import MX, SX, vertcat from bioptim import PenaltyController diff --git a/cocofest/optimization/penalties/custom_objectives.py b/cocofest/optimization/penalties/custom_objectives.py index 73d5ea0f..5ddf2292 100644 --- a/cocofest/optimization/penalties/custom_objectives.py +++ b/cocofest/optimization/penalties/custom_objectives.py @@ -3,6 +3,8 @@ By adding definitions to this class, you can create your own custom objective. """ +from __future__ import annotations + from casadi import MX, vertcat from bioptim import PenaltyController from ...models.fes_model import FesModel diff --git a/cocofest/result/graphics.py b/cocofest/result/graphics.py index c7937749..60e3d86f 100644 --- a/cocofest/result/graphics.py +++ b/cocofest/result/graphics.py @@ -3,6 +3,8 @@ model identification. """ +from __future__ import annotations + from bioptim import Solution, SolutionMerge, InterpolationType import matplotlib.pyplot as plt import numpy as np diff --git a/cocofest/result/pickle.py b/cocofest/result/pickle.py index b96a43fd..026b0d93 100644 --- a/cocofest/result/pickle.py +++ b/cocofest/result/pickle.py @@ -2,6 +2,8 @@ Exports a bioptim Solution's time, states, controls and parameters to a pickle file for later reuse. """ +from __future__ import annotations + import pickle import numpy as np from bioptim import SolutionMerge diff --git a/cocofest/result/plot.py b/cocofest/result/plot.py index 4cf36e6a..16549982 100644 --- a/cocofest/result/plot.py +++ b/cocofest/result/plot.py @@ -2,6 +2,8 @@ Plots the muscle stimulation angle and related quantities of a cycling motion. """ +from __future__ import annotations + import numpy as np import matplotlib diff --git a/docs/sphinx/conf.py b/docs/sphinx/conf.py index 21f1a22e..5367b7d8 100644 --- a/docs/sphinx/conf.py +++ b/docs/sphinx/conf.py @@ -1,9 +1,16 @@ +import importlib.util import pathlib import sys -sys.path.insert(0, str(pathlib.Path(__file__).resolve().parent.parent.parent)) +repo_root = pathlib.Path(__file__).resolve().parent.parent.parent +sys.path.insert(0, str(repo_root)) -from cocofest.misc.__version__ import __version__ as release +_version_spec = importlib.util.spec_from_file_location( + "cocofest_version", repo_root / "cocofest" / "misc" / "__version__.py" +) +_version_module = importlib.util.module_from_spec(_version_spec) +_version_spec.loader.exec_module(_version_module) +release = _version_module.__version__ project = "Cocofest" author = "Kev1Co" @@ -27,9 +34,7 @@ ".md": "markdown", } -# cocofest.result.animate is not needed to build the docs and depends on -# pyorerun, which is not installed in the docs environment. -autodoc_mock_imports = ["pyorerun"] +autodoc_mock_imports = ["bioptim", "biorbd", "casadi", "pyorerun"] autosummary_generate = True autodoc_default_options = {"undoc-members": True} diff --git a/docs/sphinx/environment.yml b/docs/sphinx/environment.yml index 4d9d351b..75ead9d8 100644 --- a/docs/sphinx/environment.yml +++ b/docs/sphinx/environment.yml @@ -3,4 +3,3 @@ channels: - conda-forge dependencies: - python=3.11 -- bioptim=3.4.0