Coverage for src/cvxcla/operators/__init__.py: 100%

3 statements  

« prev     ^ index     » next       coverage.py v7.15.4, created at 2026-08-11 09:58 +0000

1"""Operator layer for the Critical Line Algorithm. 

2 

3The turning-point loop reaches its Hessian (the covariance ``Sigma``, or the Gram 

4matrix ``X.T @ X`` for a LASSO / LARS path) through the cvx-linalg 

5:class:`~cvx.linalg.SymmetricOperator` protocol: matrix-vector and sub-block 

6products, a free-block solve, and a reciprocal-condition check. This package no 

7longer defines its own operator classes -- the backends (dense, matrix-free Gram, 

8diagonal-plus-low-rank Woodbury, and a maintained-inverse dense variant) live in 

9:mod:`cvx.linalg`. What remains here is thin: 

10 

11- :data:`QuadraticForm` / :data:`CovarianceOperator`: aliases of 

12 :class:`cvx.linalg.SymmetricOperator`, the loop's backend contract. 

13- builders (:mod:`cvxcla.operators.builders`) that assemble the right cvx-linalg 

14 operator from CLA / LASSO inputs, kept under the familiar ``*Covariance`` names. 

15- :func:`bordered_solve` and :func:`cross`, the parametric-path helpers built on 

16 the operator protocol. 

17""" 

18 

19from ._core import CovarianceOperator, QuadraticForm, bordered_solve, cross 

20from .builders import ( 

21 DenseCovariance, 

22 FactorCovariance, 

23 GramCovariance, 

24 IncrementalDenseCovariance, 

25 dense_covariance, 

26 factor_covariance, 

27 gram_covariance, 

28 incremental_dense_covariance, 

29) 

30 

31__all__ = [ 

32 "CovarianceOperator", 

33 "DenseCovariance", 

34 "FactorCovariance", 

35 "GramCovariance", 

36 "IncrementalDenseCovariance", 

37 "QuadraticForm", 

38 "bordered_solve", 

39 "cross", 

40 "dense_covariance", 

41 "factor_covariance", 

42 "gram_covariance", 

43 "incremental_dense_covariance", 

44]