diff --git a/src/probnum/_pnmethod/_stopping_criterion.py b/src/probnum/_pnmethod/_stopping_criterion.py index 30fc44bfa..2540b34e7 100644 --- a/src/probnum/_pnmethod/_stopping_criterion.py +++ b/src/probnum/_pnmethod/_stopping_criterion.py @@ -47,7 +47,8 @@ class StoppingCriterion(abc.ABC): ... def __call__(self, solver_state) -> bool: ... return solver_state.rtol < self.rtol - Now let's combine them by stopping when the solver has reached an absolute and relative tolerance, or a maximum number of iterations. + Now let's combine them by stopping when the solver has reached + an absolute and relative tolerance, or a maximum number of iterations. >>> stopcrit = MaxIterations(maxiters=100) | ( ... AbsoluteResidualTolerance(atol=1e-6) @@ -57,7 +58,8 @@ class StoppingCriterion(abc.ABC): >>> stopcrit(state) False - Now let's modify the state such that the solver has reached a maximum number of iterations. + Now let's modify the state such that the solver has reached + a maximum number of iterations. >>> state.iters = 1000 >>> stopcrit(state) @@ -66,8 +68,10 @@ class StoppingCriterion(abc.ABC): See Also -------- LambdaStoppingCriterion : Stopping criterion defined via an anonymous function. - ~probnum.linalg.solvers.stopping_criteria.LinearSolverStoppingCriterion : Stopping criterion of a probabilistic linear solver. - ~probnum.filtsmooth.optim.FiltSmoothStoppingCriterion : Stopping criterion of filters and smoothers. + ~probnum.linalg.solvers.stopping_criteria.LinearSolverStoppingCriterion : Stopping + criterion of a probabilistic linear solver. + ~probnum.filtsmooth.optim.FiltSmoothStoppingCriterion : Stopping criterion of + filters and smoothers. """ @abc.abstractmethod diff --git a/src/probnum/problems/_problems.py b/src/probnum/problems/_problems.py index d33ad27ea..54a2f2398 100644 --- a/src/probnum/problems/_problems.py +++ b/src/probnum/problems/_problems.py @@ -16,7 +16,8 @@ class TimeSeriesRegressionProblem: r"""Time series regression problem. - Fit a stochastic process to data, given a likelihood (realised by a :obj:`NonlinearGaussian` transition). + Fit a stochastic process to data, given a likelihood + (realised by a :obj:`NonlinearGaussian` transition). Solved by filters and smoothers in :mod:`probnum.filtsmooth`. Parameters @@ -28,7 +29,8 @@ class TimeSeriesRegressionProblem: measurement_models Measurement models. solution - Array containing solution to the problem at ``locations``. Used for testing and benchmarking. + Array containing solution to the problem at ``locations``. + Used for testing and benchmarking. Examples -------- @@ -70,7 +72,8 @@ class TimeSeriesRegressionProblem: measurement_models: Union[Sequence, np.ndarray] # For testing and benchmarking - # The solution here is a Sequence or array of the values of the truth at the location. + # The solution here is a Sequence or + # array of the values of the truth at the location. solution: Optional[Union[Sequence, np.ndarray]] = None def __post_init__(self): @@ -81,8 +84,9 @@ def __post_init__(self): 2. Check that all inputs have the same length. """ - # If a single measurement model has been provided, transform it into a list of models - # to ensure that there is a measurement model for every (t, y) combination. + # If a single measurement model has been provided, + # transform it into a list of models to ensure that + # there is a measurement model for every (t, y) combination. if not isinstance(self.measurement_models, abc.Iterable): self.measurement_models = [self.measurement_models] * len(self.locations) @@ -135,11 +139,14 @@ class InitialValueProblem: y0 Initial value of the solution. df - Jacobian of the ODE vector-field :math:`f=f(t,y)` with respect to the :math:`y` variable. + Jacobian of the ODE vector-field :math:`f=f(t,y)` + with respect to the :math:`y` variable. ddf - Hessian of the ODE vector-field :math:`f=f(t,y)` with respect to the :math:`y` variable. + Hessian of the ODE vector-field :math:`f=f(t,y)` + with respect to the :math:`y` variable. solution - Closed form, analytic solution to the problem. Used for testing and benchmarking. + Closed form, analytic solution to the problem. + Used for testing and benchmarking. dy0_all All initial derivatives up to some order. @@ -236,7 +243,8 @@ class QuadratureProblem: output_dim Output dimension of the integrand. solution - Closed form, analytic solution to the problem. Used for testing and benchmarking. + Closed form, analytic solution to the problem. + Used for testing and benchmarking. Examples -------- diff --git a/src/probnum/problems/zoo/diffeq/_ivp_examples.py b/src/probnum/problems/zoo/diffeq/_ivp_examples.py index 5abfe1a88..922ee7bf3 100644 --- a/src/probnum/problems/zoo/diffeq/_ivp_examples.py +++ b/src/probnum/problems/zoo/diffeq/_ivp_examples.py @@ -18,7 +18,8 @@ def threebody(t0=0.0, tmax=17.0652165601579625588917206249, y0=None): r"""Initial value problem (IVP) based on a three-body problem. - For the initial conditions :math:`y = (y_1, y_2, \dot{y}_1, \dot{y}_2)^T`, this function implements the second-order three-body problem as a system of + For the initial conditions :math:`y = (y_1, y_2, \dot{y}_1, \dot{y}_2)^T`, + this function implements the second-order three-body problem as a system of first-order ODEs, which is defined as follows: [1]_ .. math:: @@ -39,21 +40,25 @@ def threebody(t0=0.0, tmax=17.0652165601579625588917206249, y0=None): d_1 &= ((y_1 + \mu)^2 + y_2^2)^{\frac{3}{2}} \\ d_2 &= ((y_1 - (1 - \mu))^2 + y_2^2)^{\frac{3}{2}} - and a constant parameter :math:`\mu = 0.012277471` denoting the standardized moon mass. + and a constant parameter :math:`\mu = 0.012277471` + denoting the standardized moon mass. Parameters ---------- t0 Initial time. tmax - Final time. Default is ``17.0652165601579625588917206249`` which is the period of the solution. + Final time. Default is ``17.0652165601579625588917206249`` + which is the period of the solution. y0 - *(shape=(4, ))* -- Initial value. Default is ``[0.994, 0, 0, -2.00158510637908252240537862224]``. + *(shape=(4, ))* -- Initial value. + Default is ``[0.994, 0, 0,-2.00158510637908252240537862224]``. Returns ------- InitialValueProblem - InitialValueProblem object describing a three-body problem IVP with the prescribed configuration. + InitialValueProblem object describing a three-body problem IVP + with the prescribed configuration. References ---------- @@ -111,8 +116,8 @@ def vanderpol(t0=0.0, tmax=30, y0=None, params=1e1): Returns ------- InitialValueProblem - InitialValueProblem object describing the Van der Pol Oscillator IVP with the prescribed - configuration. + InitialValueProblem object describing the Van der Pol Oscillator + IVP with the prescribed configuration. """ if y0 is None: @@ -170,8 +175,8 @@ def rigidbody(t0=0.0, tmax=20.0, y0=None, params=(-2.0, 1.25, -0.5)): Returns ------- InitialValueProblem - InitialValueProblem object describing the rigid body dynamics IVP with the prescribed - configuration. + InitialValueProblem object describing the rigid body dynamics IVP + with the prescribed configuration. """ if y0 is None: y0 = np.array([1.0, 0.0, 0.9]) @@ -286,7 +291,8 @@ def fitzhughnagumo(t0=0.0, tmax=20.0, y0=None, params=(0.2, 0.2, 3.0, 1.0)): Returns ------- InitialValueProblem - InitialValueProblem object describing the FitzHugh-Nagumo model with the prescribed configuration. + InitialValueProblem object describing the FitzHugh-Nagumo model + with the prescribed configuration. """ if y0 is None: y0 = np.array([1.0, -1.0]) @@ -335,7 +341,8 @@ def lotkavolterra(t0=0.0, tmax=20.0, y0=None, params=(0.5, 0.05, 0.5, 0.05)): Returns ------- InitialValueProblem - InitialValueProblem object describing the Lotka-Volterra system with the prescribed configuration. + InitialValueProblem object describing the Lotka-Volterra system + with the prescribed configuration. """ if y0 is None: y0 = np.array([20.0, 20.0]) @@ -499,10 +506,12 @@ def lorenz96(t0=0.0, tmax=30.0, y0=None, num_variables=5, params=(8.0,)): tmax Final time. y0 - *(shape=(N, ))* -- Initial value. Default is ``[1/F, ..., 1/F]``. `N` is the number of variables in the model. + *(shape=(N, ))* -- Initial value. Default is ``[1/F, ..., 1/F]``. + `N` is the number of variables in the model. num_variables - Number of variables in the model. If `y0` is specified, this argument is ignored - (and the number of variables is inferred from the dimension of the initial value). + Number of variables in the model. If `y0` is specified, + this argument is ignored (and the number of variables + is inferred from the dimension of the initial value). params Parameter(s) of the Lorenz96 model. Default is ``(8,)``. @@ -521,7 +530,8 @@ def lorenz96(t0=0.0, tmax=30.0, y0=None, num_variables=5, params=(8.0,)): y0 = np.ones(num_variables) * constant_forcing elif len(y0) < 4: raise ValueError( - "The number of variables (i.e. the length of the initial vector) must be at least 4." + "The number of variables (i.e. the length of the initial vector)", + "must be at least 4.", ) def lorenz96_f_vec(t, y, c=constant_forcing): diff --git a/src/probnum/problems/zoo/diffeq/_ivp_examples_jax.py b/src/probnum/problems/zoo/diffeq/_ivp_examples_jax.py index 09034fb3c..5e3eb136a 100644 --- a/src/probnum/problems/zoo/diffeq/_ivp_examples_jax.py +++ b/src/probnum/problems/zoo/diffeq/_ivp_examples_jax.py @@ -33,7 +33,8 @@ def threebody_jax(tmax=17.0652165601579625588917206249): d_1 &= ((y_1 + \mu)^2 + y_2^2)^{\frac{3}{2}} \\ d_2 &= ((y_1 - (1 - \mu))^2 + y_2^2)^{\frac{3}{2}} - and a constant parameter :math:`\mu = 0.012277471` denoting the standardized moon mass. + and a constant parameter :math:`\mu = 0.012277471` + denoting the standardized moon mass. Parameters ---------- @@ -106,7 +107,8 @@ def _import_jax(): def vanderpol_jax(t0=0.0, tmax=30, y0=None, params=1e1): - r"""Initial value problem (IVP) based on the Van der Pol Oscillator, implemented in `jax`. + r"""Initial value problem (IVP) based on the Van der Pol Oscillator, + implemented in `jax`. This function implements the second-order Van-der-Pol Oscillator as a system of first-order ODEs. diff --git a/src/probnum/problems/zoo/filtsmooth/_filtsmooth_problems.py b/src/probnum/problems/zoo/filtsmooth/_filtsmooth_problems.py index ff0caaeaf..3d0dbdf20 100644 --- a/src/probnum/problems/zoo/filtsmooth/_filtsmooth_problems.py +++ b/src/probnum/problems/zoo/filtsmooth/_filtsmooth_problems.py @@ -441,10 +441,11 @@ def benes_daum( Notes ----- - In order to generate observations for the returned ``TimeSeriesRegressionProblem`` object, - the non-linear Beneš SDE has to be linearized. - Here, a ``ContinuousEKFComponent`` is used, which corresponds to a first-order - linearization as used in the extended Kalman filter. + In order to generate observations for the returned + ``TimeSeriesRegressionProblem`` object, the non-linear Beneš SDE + has to be linearized. Here, a ``ContinuousEKFComponent`` is used, + which corresponds to a first-order linearization as used + in the extended Kalman filter. """ def f(t, x): @@ -538,7 +539,8 @@ def logistic_ode( ek0_or_ek1 See :py:class:`probnum.diffeq.ODEFilter` exclude_initial_condition - Whether the resulting regression problem should exclude (i.e. not contain) the initial condition of the ODE. + Whether the resulting regression problem should exclude + (i.e. not contain) the initial condition of the ODE. Optional. Default is True, which means that the initial condition is omitted. order Order of integration for the Integrated Brownian Motion prior of the solver. diff --git a/src/probnum/problems/zoo/linalg/_random_linear_system.py b/src/probnum/problems/zoo/linalg/_random_linear_system.py index 66068c6f9..b0f9baafe 100644 --- a/src/probnum/problems/zoo/linalg/_random_linear_system.py +++ b/src/probnum/problems/zoo/linalg/_random_linear_system.py @@ -24,17 +24,20 @@ def random_linear_system( ) -> problems.LinearSystem: """Random linear system. - Generate a random linear system from a (random) matrix. If ``matrix`` is a callable instead of a matrix or - linear operator, the system matrix is sampled by passing the random generator instance ``rng``. The solution - of the linear system is set to a realization from ``solution_rv``. If ``None`` the solution is drawn from a - standard normal distribution with iid components. + Generate a random linear system from a (random) matrix. + If ``matrix`` is a callable instead of a matrix or linear operator, + the system matrix is sampled by passing the random generator + instance ``rng``. The solution of the linear system is set + to a realization from ``solution_rv``. If ``None`` the solution + is drawn from a standard normal distribution with iid components. Parameters ---------- rng Random number generator. matrix - Matrix, linear operator or callable returning either for a given random number generator instance. + Matrix, linear operator or callable returning either + for a given random number generator instance. solution_rv Random variable from which the solution of the linear system is sampled. kwargs @@ -43,7 +46,8 @@ def random_linear_system( See Also -------- random_spd_matrix : Generate a random symmetric positive-definite matrix. - random_sparse_spd_matrix : Generate a random sparse symmetric positive-definite matrix. + random_sparse_spd_matrix : Generate a random sparse symmetric + positive-definite matrix. Examples -------- @@ -65,13 +69,15 @@ def random_linear_system( >>> linsys_spd = random_linear_system(rng, random_spd_matrix, dim=2) >>> linsys_spd LinearSystem(A=array([[ 9.62543582, 3.14955953], - [ 3.14955953, 13.28720426]]), b=array([-2.7108139 , 1.10779288]), solution=array([-0.33488503, 0.16275307])) + [ 3.14955953, 13.28720426]]), b=array([-2.7108139 , 1.10779288]), + solution=array([-0.33488503, 0.16275307])) Linear system with random sparse matrix. >>> import scipy.sparse - >>> random_sparse_matrix = lambda rng,m,n: scipy.sparse.random(m=m, n=n, random_state=rng) + >>> random_sparse_matrix = lambda rng,m,n: scipy.sparse.random(m=m, n=n,\ + random_state=rng) >>> linsys_sparse = random_linear_system(rng, random_sparse_matrix, m=4, n=2) >>> isinstance(linsys_sparse.A, scipy.sparse.spmatrix) True @@ -89,7 +95,8 @@ def random_linear_system( else: if A.shape[1] != solution_rv.shape[0]: raise ValueError( - f"Shape of the system matrix: {A.shape} must match shape of the solution: {solution_rv.shape}." + f"Shape of the system matrix: {A.shape} must match shape \ + of the solution: {solution_rv.shape}." ) x = solution_rv.sample(size=(), rng=rng) diff --git a/src/probnum/problems/zoo/linalg/_random_spd_matrix.py b/src/probnum/problems/zoo/linalg/_random_spd_matrix.py index 1478dc7b5..f93e5a7c1 100644 --- a/src/probnum/problems/zoo/linalg/_random_spd_matrix.py +++ b/src/probnum/problems/zoo/linalg/_random_spd_matrix.py @@ -34,7 +34,8 @@ def random_spd_matrix( See Also -------- - random_sparse_spd_matrix : Generate a random sparse symmetric positive definite matrix. + random_sparse_spd_matrix : Generate a random + sparse symmetric positive definite matrix. Examples -------- diff --git a/src/probnum/problems/zoo/linalg/_suitesparse_matrix.py b/src/probnum/problems/zoo/linalg/_suitesparse_matrix.py index 70ec75ecf..e79fbca55 100644 --- a/src/probnum/problems/zoo/linalg/_suitesparse_matrix.py +++ b/src/probnum/problems/zoo/linalg/_suitesparse_matrix.py @@ -56,9 +56,11 @@ def suitesparse_matrix( import requests # pylint: disable=import-outside-toplevel except ImportError as err: raise ImportError( - "Cannot query SuiteSparse Matrix collection without optional dependency ", - "`requests`. Install ProbNum with optional dependencies for the problem zoo via", - " `pip install probnum[zoo]` or install requests directly: `pip install requests`.", + "Cannot query SuiteSparse Matrix collection without", + "optional dependency `requests`. Install ProbNum with", + "optional dependencies for the problem zoo via", + "`pip install probnum[zoo]` or install requests", + "directly: `pip install requests`.", ) from err response = requests.get(SUITESPARSE_INDEX_URL, "r") line_gen = response.iter_lines() @@ -198,7 +200,11 @@ def _download( import requests # pylint: disable=import-outside-toplevel except ImportError as err: raise ImportError( - "Cannot query SuiteSparse Matrix collection without optional dependency `requests`. Install ProbNum with optional dependencies for the problem zoo via `pip install probnum[zoo]` or install requests directly: `pip install requests`." + "Cannot query SuiteSparse Matrix collection without", + "optional dependency `requests`. Install ProbNum with", + "optional dependencies for the problem zoo via", + "`pip install probnum[zoo]` or install requests", + "directly: `pip install requests`.", ) from err url = SUITESPARSE_ROOT_URL + f"/MM/{self.group}/{self.name}.tar.gz" @@ -286,7 +292,8 @@ def _to_html_row(self) -> str: f"{self.psym:.2}", f"{self.nsym:.2}", self.kind, - f'', + f'', ] ) + "" diff --git a/src/probnum/typing.py b/src/probnum/typing.py index b58cdf2f1..1d110b363 100644 --- a/src/probnum/typing.py +++ b/src/probnum/typing.py @@ -3,18 +3,20 @@ This module defines commonly used types in the library. These are separated into two different kinds, API types and argument types. -**API types** (``*Type``) are aliases which define custom types used throughout the library. Objects of -this type may be supplied as arguments or returned by a method. +**API types** (``*Type``) are aliases which define custom types +used throughout the library. Objects ofthis type may be supplied as arguments +or returned by a method. **Argument types** (``*Like``) are aliases which define commonly used method -arguments that are internally converted to a standardized representation. These should only -ever be used in the signature of a method and then be converted internally, e.g. in a class -instantiation or an interface. They enable the user to conveniently -supply a variety of objects of different types for the same argument, while ensuring a unified -internal representation of those same objects. As an example, take the different ways a user might -specify a shape: ``2``, ``(2,)``, ``[2, 2]``. These may all be acceptable arguments to a function -taking a shape, but internally should always be converted to a :attr:`ShapeType`, i.e. a tuple of -``int``\\ s. +arguments that are internally converted to a standardized representation. +These should only ever be used in the signature of a method and then +be converted internally, e.g. in a class instantiation or an interface. +They enable the user to conveniently supply a variety of objects of different +types for the same argument, while ensuring a unified internal representation of +those same objects. As an example, take the different ways a user might specify +a shape: ``2``, ``(2,)``, ``[2, 2]``. These may all be acceptable arguments +to a function taking a shape, but internally should always be converted +to a :attr:`ShapeType`, i.e. a tuple of ``int``\\ s. """ from __future__ import annotations @@ -56,7 +58,8 @@ """Type defining a scalar.""" MatrixType = Union[np.ndarray, "probnum.linops.LinearOperator"] -"""Type defining a matrix, i.e. a linear map between finite-dimensional vector spaces.""" +"""Type defining a matrix, i.e. a linear map between \ +finite-dimensional vector spaces.""" ######################################################################################## # Argument Types @@ -66,27 +69,28 @@ IntLike = Union[int, numbers.Integral, np.integer] """Object that can be converted to an integer. -Arguments of type :attr:`IntLike` should always be converted into :class:`int`\\ s before -further internal processing.""" +Arguments of type :attr:`IntLike` should always be converted +into :class:`int`\\ s before further internal processing.""" FloatLike = Union[float, numbers.Real, np.floating] """Object that can be converted to a float. -Arguments of type :attr:`FloatLike` should always be converteg into :class:`float`\\ s before further -internal processing.""" +Arguments of type :attr:`FloatLike` should always be converted +into :class:`float`\\ s before further internal processing.""" # Array Utilities ShapeLike = Union[IntLike, Iterable[IntLike]] """Object that can be converted to a shape. -Arguments of type :attr:`ShapeLike` should always be converted into :class:`ShapeType` using the -function :func:`probnum.utils.as_shape` before further internal processing.""" +Arguments of type :attr:`ShapeLike` should always be converted +into :class:`ShapeType` using the function :func:`probnum.utils.as_shape` +before further internal processing.""" DTypeLike = _NumPyDTypeLike """Object that can be converted to an array dtype. -Arguments of type :attr:`DTypeLike` should always be converted into :class:`numpy.dtype`\\ s before further -internal processing.""" +Arguments of type :attr:`DTypeLike` should always be converted +into :class:`numpy.dtype`\\ s before further internal processing.""" _ArrayIndexLike = Union[ int, @@ -107,14 +111,16 @@ ScalarLike = Union[int, float, complex, numbers.Number, np.number] """Object that can be converted to a scalar value. -Arguments of type :attr:`ScalarLike` should always be converted into :class:`numpy.number`\\ s using the -function :func:`probnum.utils.as_scalar` before further internal processing.""" +Arguments of type :attr:`ScalarLike` should always be converted +into :class:`numpy.number`\\ s using the function :func:`probnum.utils.as_scalar` +before further internal processing.""" ArrayLike = _NumPyArrayLike """Object that can be converted to an array. -Arguments of type :attr:`ArrayLike` should always be converted into :class:`numpy.ndarray`\\ s using -the function :func:`np.asarray` before further internal processing.""" +Arguments of type :attr:`ArrayLike` should always be converted +into :class:`numpy.ndarray`\\ s using the function :func:`np.asarray` +before further internal processing.""" LinearOperatorLike = Union[ ArrayLike, @@ -123,7 +129,8 @@ ] """Object that can be converted to a :class:`~probnum.linops.LinearOperator`. -Arguments of type :attr:`LinearOperatorLike` should always be converted into :class:`~probnum.linops.\\ +Arguments of type :attr:`LinearOperatorLike` should always be converted +into :class:`~probnum.linops.\\ LinearOperator`\\ s using the function :func:`probnum.linops.aslinop` before further internal processing.""" diff --git a/tox.ini b/tox.ini index 5d6dadc03..4705caac6 100644 --- a/tox.ini +++ b/tox.ini @@ -64,13 +64,13 @@ deps = ignore_errors = true commands = # Global Linting Pass - pylint src/probnum --disable="no-member,abstract-method,arguments-differ,arguments-renamed,redefined-builtin,redefined-outer-name,too-many-instance-attributes,too-many-arguments,too-many-locals,too-many-lines,too-many-statements,too-many-branches,too-complex,too-few-public-methods,protected-access,unnecessary-pass,unused-variable,unused-argument,attribute-defined-outside-init,no-else-return,no-else-raise,no-self-use,else-if-used,consider-using-from-import,duplicate-code,line-too-long,missing-module-docstring,missing-class-docstring,missing-function-docstring,missing-param-doc,missing-type-doc,missing-raises-doc,useless-param-doc,useless-type-doc,missing-return-type-doc" --jobs=0 + pylint src/probnum --disable="no-member,abstract-method,arguments-differ,arguments-renamed,redefined-builtin,redefined-outer-name,too-many-instance-attributes,too-many-arguments,too-many-locals,too-many-lines,too-many-statements,too-many-branches,too-complex,too-few-public-methods,protected-access,unnecessary-pass,unused-variable,unused-argument,attribute-defined-outside-init,no-else-return,no-else-raise,no-self-use,else-if-used,consider-using-from-import,duplicate-code,missing-module-docstring,missing-class-docstring,missing-function-docstring,missing-param-doc,missing-type-doc,missing-raises-doc,useless-param-doc,useless-type-doc,missing-return-type-doc" --jobs=0 # Per-package Linting Passes pylint src/probnum/diffeq --disable="redefined-outer-name,too-many-instance-attributes,too-many-arguments,too-many-locals,too-few-public-methods,protected-access,unnecessary-pass,unused-variable,unused-argument,no-self-use,duplicate-code,missing-function-docstring,missing-param-doc,missing-type-doc,missing-raises-doc,missing-return-type-doc" --jobs=0 pylint src/probnum/filtsmooth --disable="no-member,arguments-differ,too-many-arguments,too-many-locals,too-few-public-methods,protected-access,unused-variable,unused-argument,no-self-use,duplicate-code,useless-param-doc" --jobs=0 pylint src/probnum/linalg --disable="no-member,abstract-method,arguments-differ,else-if-used,redefined-builtin,too-many-instance-attributes,too-many-arguments,too-many-locals,too-many-lines,too-many-statements,too-many-branches,too-complex,too-few-public-methods,protected-access,unused-argument,attribute-defined-outside-init,no-else-return,no-else-raise,no-self-use,duplicate-code,missing-module-docstring,missing-param-doc,missing-type-doc,missing-raises-doc,missing-return-type-doc" --jobs=0 pylint src/probnum/linops --disable="too-many-instance-attributes,too-many-arguments,too-many-locals,protected-access,no-else-return,no-else-raise,else-if-used,missing-class-docstring,missing-function-docstring,missing-raises-doc,duplicate-code" --jobs=0 - pylint src/probnum/problems --disable="too-many-arguments,too-many-locals,unused-variable,unused-argument,consider-using-from-import,duplicate-code,line-too-long,missing-module-docstring,missing-function-docstring,missing-param-doc,missing-type-doc,missing-raises-doc" --jobs=0 + pylint src/probnum/problems --disable="too-many-arguments,too-many-locals,unused-variable,unused-argument,consider-using-from-import,duplicate-code,missing-module-docstring,missing-function-docstring,missing-param-doc,missing-type-doc,missing-raises-doc" --jobs=0 pylint src/probnum/quad --disable="too-many-arguments,missing-module-docstring" --jobs=0 pylint src/probnum/randprocs --disable="arguments-differ,arguments-renamed,too-many-instance-attributes,too-many-arguments,too-many-locals,protected-access,unused-argument,no-else-return,duplicate-code,missing-module-docstring,missing-class-docstring,missing-function-docstring,missing-type-doc,missing-raises-doc,useless-param-doc,useless-type-doc,missing-return-type-doc" --jobs=0 pylint src/probnum/randprocs/kernels --disable="duplicate-code" --jobs=0