passagemath-cmr 10.5.35__cp312-cp312-macosx_13_0_x86_64.whl → 10.8.1a1__cp312-cp312-macosx_13_0_x86_64.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Binary file
Binary file
@@ -0,0 +1,3 @@
1
+ # sage_setup: distribution = sagemath-cmr
2
+
3
+ from sage.all__sagemath_cmr import *
@@ -1,14 +1,14 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: passagemath-cmr
3
- Version: 10.5.35
3
+ Version: 10.8.1a1
4
4
  Summary: passagemath: Combinatorial matrix recognition
5
5
  Author-email: The Sage Developers <sage-support@googlegroups.com>
6
6
  Maintainer: Matthias Köppe, passagemath contributors
7
- License: GNU General Public License (GPL) v2 or later
7
+ License-Expression: GPL-2.0-or-later
8
8
  Project-URL: release notes, https://github.com/passagemath/passagemath/releases
9
9
  Project-URL: repo (upstream), https://github.com/sagemath/sage
10
10
  Project-URL: repo, https://github.com/passagemath/passagemath
11
- Project-URL: documentation, https://doc.sagemath.org
11
+ Project-URL: documentation, https://passagemath.org/docs/latest
12
12
  Project-URL: homepage (upstream), https://www.sagemath.org
13
13
  Project-URL: discourse, https://passagemath.discourse.group
14
14
  Project-URL: tracker (upstream), https://github.com/sagemath/sage/issues
@@ -16,25 +16,27 @@ Project-URL: tracker, https://github.com/passagemath/passagemath/issues
16
16
  Classifier: Development Status :: 6 - Mature
17
17
  Classifier: Intended Audience :: Education
18
18
  Classifier: Intended Audience :: Science/Research
19
- Classifier: License :: OSI Approved :: GNU General Public License v2 or later (GPLv2+)
20
19
  Classifier: Operating System :: POSIX
20
+ Classifier: Operating System :: POSIX :: Linux
21
21
  Classifier: Operating System :: MacOS :: MacOS X
22
+ Classifier: Operating System :: Microsoft :: Windows
22
23
  Classifier: Programming Language :: Python :: 3 :: Only
23
- Classifier: Programming Language :: Python :: 3.9
24
24
  Classifier: Programming Language :: Python :: 3.10
25
25
  Classifier: Programming Language :: Python :: 3.11
26
26
  Classifier: Programming Language :: Python :: 3.12
27
27
  Classifier: Programming Language :: Python :: 3.13
28
+ Classifier: Programming Language :: Python :: 3.14
28
29
  Classifier: Programming Language :: Python :: Implementation :: CPython
29
30
  Classifier: Topic :: Scientific/Engineering :: Mathematics
30
- Requires-Python: <3.14,>=3.9
31
+ Requires-Python: <3.15,>=3.11
31
32
  Description-Content-Type: text/x-rst
32
- Requires-Dist: cysignals==1.12.0rc2
33
- Requires-Dist: passagemath-modules~=10.5.35.0
34
- Requires-Dist: passagemath-graphs~=10.5.35.0
33
+ Requires-Dist: cysignals!=1.12.4; sys_platform == "win32"
34
+ Requires-Dist: cysignals!=1.12.0,>=1.11.2
35
+ Requires-Dist: passagemath-modules==10.8.1.alpha1
36
+ Requires-Dist: passagemath-graphs==10.8.1.alpha1
35
37
  Provides-Extra: test
36
- Requires-Dist: passagemath-repl~=10.5.35.0; extra == "test"
37
- Requires-Dist: passagemath-pari~=10.5.35.0; extra == "test"
38
+ Requires-Dist: passagemath-repl==10.8.1.alpha1; extra == "test"
39
+ Requires-Dist: passagemath-pari==10.8.1.alpha1; extra == "test"
38
40
 
39
41
  ==========================================================================
40
42
  passagemath: Combinatorial matrix recognition
@@ -48,38 +50,41 @@ It is a fork of `SageMath <https://www.sagemath.org/>`__, which has been
48
50
  developed 2005-2025 under the motto “Creating a Viable Open Source
49
51
  Alternative to Magma, Maple, Mathematica, and MATLAB”.
50
52
 
51
- The passagemath fork was created in October 2024 with the following
52
- goals:
53
+ The passagemath fork uses the motto "Creating a Free Passage Between the
54
+ Scientific Python Ecosystem and Mathematical Software Communities."
55
+ It was created in October 2024 with the following goals:
53
56
 
54
- - providing modularized installation with pip, thus completing a `major
55
- project started in 2020 in the Sage
56
- codebase <https://github.com/sagemath/sage/issues/29705>`__,
57
+ - providing modularized installation with pip,
57
58
  - establishing first-class membership in the scientific Python
58
59
  ecosystem,
59
60
  - giving `clear attribution of upstream
60
61
  projects <https://groups.google.com/g/sage-devel/c/6HO1HEtL1Fs/m/G002rPGpAAAJ>`__,
61
62
  - providing independently usable Python interfaces to upstream
62
63
  libraries,
63
- - providing `platform portability and integration testing
64
+ - offering `platform portability and integration testing
64
65
  services <https://github.com/passagemath/passagemath/issues/704>`__
65
66
  to upstream projects,
66
67
  - inviting collaborations with upstream projects,
67
68
  - `building a professional, respectful, inclusive
68
69
  community <https://groups.google.com/g/sage-devel/c/xBzaINHWwUQ>`__,
70
+ - `empowering Sage users to participate in the scientific Python ecosystem
71
+ <https://github.com/passagemath/passagemath/issues/248>`__ by publishing packages,
69
72
  - developing a port to `Pyodide <https://pyodide.org/en/stable/>`__ for
70
73
  serverless deployment with Javascript,
71
74
  - developing a native Windows port.
72
75
 
73
- `Full documentation <https://doc.sagemath.org/html/en/index.html>`__ is
76
+ `Full documentation <https://passagemath.org/docs/latest/html/en/index.html>`__ is
74
77
  available online.
75
78
 
76
- passagemath attempts to support all major Linux distributions and recent versions of
77
- macOS. Use on Windows currently requires the use of Windows Subsystem for Linux or
78
- virtualization.
79
+ passagemath attempts to support and provides binary wheels suitable for
80
+ all major Linux distributions and recent versions of macOS.
79
81
 
80
- Complete sets of binary wheels are provided on PyPI for Python versions 3.9.x-3.12.x.
81
- Python 3.13.x is also supported, but some third-party packages are still missing wheels,
82
- so compilation from source is triggered for those.
82
+ Binary wheels for native Windows (x86_64) are are available for a subset of
83
+ the passagemath distributions. Use of the full functionality of passagemath
84
+ on Windows currently requires the use of Windows Subsystem for Linux (WSL)
85
+ or virtualization.
86
+
87
+ The supported Python versions in the passagemath 10.6.x series are 3.10.x-3.14.x.
83
88
 
84
89
 
85
90
  About this pip-installable distribution package
@@ -109,7 +114,7 @@ Examples
109
114
 
110
115
  $ pipx run --pip-args="--prefer-binary" --spec "passagemath-cmr[test]" ipython
111
116
 
112
- In [1]: from sage.all__sagemath_cmr import *
117
+ In [1]: from passagemath_cmr import *
113
118
 
114
119
  In [2]: from sage.matrix.matrix_cmr_sparse import Matrix_cmr_chr_sparse
115
120
 
@@ -131,13 +136,13 @@ Development
131
136
 
132
137
  ::
133
138
 
134
- $ git clone --origin passagemath https://github.com/passagemath/passagemath.git
139
+ $ git clone --origin passagemath https://github.com/passagemath/passagemath.git # or use your fork
135
140
  $ cd passagemath
136
141
  passagemath $ ./bootstrap
137
- passagemath $ ./.homebrew-build-env # on macOS when homebrew is in use
138
- passagemath $ export PATH=/usr/sbin/:/sbin/:/bin/:/usr/lib/wsl/lib/ # on WSL
142
+ passagemath $ source ./.homebrew-build-env # on macOS when homebrew is in use
143
+ passagemath $ export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/lib/wsl/lib # on WSL
139
144
  passagemath $ export PIP_CONSTRAINT="$(pwd)/constraints_cmr.txt"
140
- passagemath $ echo "passagemath-conf @ file://$(pwd)/pkgs/sage-conf_pypi" > constraints_cmr.txt
145
+ passagemath $ export PIP_BUILD_CONSTRAINT="$(pwd)/constraints_cmr.txt"
141
146
  passagemath $ echo "passagemath-categories @ file://$(pwd)/pkgs/sagemath-categories" >> constraints_cmr.txt
142
147
  passagemath $ echo "passagemath-modules @ file://$(pwd)/pkgs/sagemath-modules" >> constraints_cmr.txt
143
148
  passagemath $ python3 -m venv cmr-venv
@@ -151,17 +156,23 @@ Modularized use::
151
156
  (cmr-venv) passagemath $ pip install -v passagemath-repl
152
157
  (cmr-venv) passagemath $ sage
153
158
  ... sage.all is not available ...
154
- sage: from sage.all__sagemath_modules import *
159
+ sage: from passagemath_modules import *
155
160
  sage: matroids.Uniform(3, 4)
161
+ U(3, 4): Matroid of rank 3 on 4 elements with circuit-closures
162
+ {3: {{0, 1, 2, 3}}}
156
163
 
157
164
  In plain Python::
158
165
 
159
166
  (cmr-venv) passagemath $ python3
160
- >>> from sage.all__sagemath_modules import *
167
+ >>> from passagemath_modules import *
161
168
  >>> matroids.Uniform(3, 4)
169
+ U(3, 4): Matroid of rank 3 on 4 elements with circuit-closures
170
+ {3: {{0, 1, 2, 3}}}
162
171
 
163
172
  For full functionality of Sage::
164
173
 
165
174
  (cmr-venv) passagemath $ pip install -v passagemath-standard
166
175
  (cmr-venv) passagemath $ sage
167
176
  sage: matroids.Uniform(3, 4)
177
+ U(3, 4): Matroid of rank 3 on 4 elements with circuit-closures
178
+ {3: {{0, 1, 2, 3}}}
@@ -0,0 +1,20 @@
1
+ passagemath_cmr/__init__.py,sha256=tDxhxUX03EveX4yavWoPphSnQy6Hfch7TjnNMIY-hLU,80
2
+ passagemath_cmr/.dylibs/libcmr.dylib,sha256=hHq_6ytTyr_zJ9VEEM8Hr6Cqx1eKKvEuAdLaBd54Mq8,971496
3
+ passagemath_cmr/.dylibs/libgmp.10.dylib,sha256=TUejTzoQXYaTV0ctGqr0IeGcy6SnfZd86cWsBtQ_CIU,488712
4
+ passagemath_cmr-10.8.1a1.dist-info/RECORD,,
5
+ passagemath_cmr-10.8.1a1.dist-info/WHEEL,sha256=AbrL460eTpF3P_Yx79_4q0erG2pYqVvEIQ8yrjvNRyg,155
6
+ passagemath_cmr-10.8.1a1.dist-info/top_level.txt,sha256=CKOQrDewaLP2icikzyFWWNW_krYi3PwlBbqZm_FYt6g,22
7
+ passagemath_cmr-10.8.1a1.dist-info/METADATA,sha256=EqCUIptG3bTry3cGPQ4iVXvQ8utwTSY6515VFCtskFM,7374
8
+ sage/all__sagemath_cmr.py,sha256=KR76vnXfmqtz5FA-qDWl-bKa_ltk6s_L01y6zi3VleM,144
9
+ sage/libs/all__sagemath_cmr.py,sha256=qPVTT6gyP0yYSmMXuAIGeRCUG42fV2IhXKSX9Ke1pa0,42
10
+ sage/libs/cmr/cmr.pxd,sha256=5LFDFXs20sVJoLprRTkfU0qX3SkHtdkdLiFs5B6CCGU,31667
11
+ sage/libs/cmr/__init__.py,sha256=qPVTT6gyP0yYSmMXuAIGeRCUG42fV2IhXKSX9Ke1pa0,42
12
+ sage/libs/cmr/cmr.pyx,sha256=h-maxhuJKYDr77zggNg9L7qyaTgRu51_MEXitaI_sdY,861
13
+ sage/libs/cmr/cmr.cpython-312-darwin.so,sha256=dTeYv7F0HDXsM52Ao52OUss1Mb-9ifBFNacJJb-SDUA,27672
14
+ sage/matrix/all__sagemath_cmr.py,sha256=qPVTT6gyP0yYSmMXuAIGeRCUG42fV2IhXKSX9Ke1pa0,42
15
+ sage/matrix/matrix_cmr_sparse.pyx,sha256=vC-v5BXvtdjgsRipqtX4uhRWLt1s2ESyzr3-3hbQfLQ,249381
16
+ sage/matrix/seymour_decomposition.pxd,sha256=QYse5YnIa_Dk8NGLU991eFe5u0PzxT_qM0KfXITdt4E,1186
17
+ sage/matrix/seymour_decomposition.pyx,sha256=YS1BpLgFLWTwcqe0EJqlgRl0vRUX-ZhBRKAdgvyZe_U,197498
18
+ sage/matrix/matrix_cmr_sparse.pxd,sha256=EROkdgXmem-ZgdXHKl7Nke_mZC_HKCZPRjocWcyivwY,1095
19
+ sage/matrix/matrix_cmr_sparse.cpython-312-darwin.so,sha256=nCq4XyIGjK9jMz_jay44D-gXDXf30g01pQ0Mxk7pC1Q,939824
20
+ sage/matrix/seymour_decomposition.cpython-312-darwin.so,sha256=aBNEQ6MDRf-hesSdV7LJB_YThrN5I9slgW-rAqS8Lvc,956504
@@ -1,6 +1,6 @@
1
1
  Wheel-Version: 1.0
2
- Generator: setuptools (80.7.1)
2
+ Generator: setuptools (80.10.1)
3
3
  Root-Is-Purelib: false
4
4
  Tag: cp312-cp312-macosx_13_0_x86_64
5
- Generator: delocate 0.13.0
5
+ Generator: delocate 0.13.1.dev42+ga0af70b54
6
6
 
@@ -0,0 +1,3 @@
1
+
2
+ passagemath_cmr
3
+ sage
sage/all__sagemath_cmr.py CHANGED
@@ -1,4 +1,5 @@
1
1
  # sage_setup: distribution = sagemath-cmr
2
+ # delvewheel: patch
2
3
 
3
4
  from sage.all__sagemath_graphs import *
4
5
  from sage.all__sagemath_modules import *
Binary file
sage/libs/cmr/cmr.pxd CHANGED
@@ -74,7 +74,7 @@ cdef extern from "cmr/matrix.h":
74
74
  size_t numNonzeros
75
75
  size_t* rowSlice
76
76
  size_t* entryColumns
77
- char* entryValues
77
+ signed char* entryValues
78
78
 
79
79
  CMR_ERROR CMRchrmatCreate(CMR* cmr, CMR_CHRMAT** presult, int numRows, int numColumns, int numNonzeros)
80
80
  CMR_ERROR CMRchrmatSortNonzeros(CMR* cmr, CMR_CHRMAT* matrix)
@@ -251,20 +251,20 @@ cdef extern from "cmr/separation.h":
251
251
  CMR_ERROR CMRtwosumDecomposeFirst(CMR* cmr, CMR_CHRMAT* matrix, CMR_SEPA* sepa, CMR_CHRMAT** pfirst, size_t* firstRowsOrigin, size_t* firstColumnsOrigin, size_t* rowsToFirst, size_t* columnsToFirst, size_t* firstSpecialRows, size_t* firstSpecialColumns)
252
252
  CMR_ERROR CMRtwosumDecomposeSecond(CMR* cmr, CMR_CHRMAT* matrix, CMR_SEPA* sepa, CMR_CHRMAT** psecond, size_t* secondRowsOrigin, size_t* secondColumnsOrigin, size_t* rowsToSecond, size_t* columnsToSecond, size_t* secondSpecialRows, size_t* secondSpecialColumns)
253
253
  CMR_ERROR CMRdeltasumCompose(CMR* cmr, CMR_CHRMAT* first, CMR_CHRMAT* second, size_t* firstSpecialRows, size_t* firstSpecialColumns, size_t* secondSpecialRows, size_t* secondSpecialColumns, int8_t characteristic, CMR_CHRMAT** presult)
254
- CMR_ERROR CMRdeltasumDecomposeEpsilon(CMR* cmr, CMR_CHRMAT* matrix, CMR_CHRMAT* transpose, CMR_SEPA* sepa, char* pepsilon)
255
- CMR_ERROR CMRdeltasumDecomposeFirst(CMR* cmr, CMR_CHRMAT* matrix, CMR_SEPA* sepa, char epsilon, CMR_CHRMAT** pfirst, size_t* firstRowsOrigin, size_t* firstColumnsOrigin, size_t* rowsToFirst, size_t* columnsToFirst, size_t* firstSpecialRows, size_t* firstSpecialColumns)
256
- CMR_ERROR CMRdeltasumDecomposeSecond(CMR* cmr, CMR_CHRMAT* matrix, CMR_SEPA* sepa, char epsilon, CMR_CHRMAT** psecond, size_t* secondRowsOrigin, size_t* secondColumnsOrigin, size_t* rowsToSecond, size_t* columnsToSecond, size_t* secondSpecialRows, size_t* secondSpecialColumns)
254
+ CMR_ERROR CMRdeltasumDecomposeEpsilon(CMR* cmr, CMR_CHRMAT* matrix, CMR_CHRMAT* transpose, CMR_SEPA* sepa, signed char* pepsilon)
255
+ CMR_ERROR CMRdeltasumDecomposeFirst(CMR* cmr, CMR_CHRMAT* matrix, CMR_SEPA* sepa, signed char epsilon, CMR_CHRMAT** pfirst, size_t* firstRowsOrigin, size_t* firstColumnsOrigin, size_t* rowsToFirst, size_t* columnsToFirst, size_t* firstSpecialRows, size_t* firstSpecialColumns)
256
+ CMR_ERROR CMRdeltasumDecomposeSecond(CMR* cmr, CMR_CHRMAT* matrix, CMR_SEPA* sepa, signed char epsilon, CMR_CHRMAT** psecond, size_t* secondRowsOrigin, size_t* secondColumnsOrigin, size_t* rowsToSecond, size_t* columnsToSecond, size_t* secondSpecialRows, size_t* secondSpecialColumns)
257
257
 
258
258
  CMR_ERROR CMRysumCompose(CMR* cmr, CMR_CHRMAT* first, CMR_CHRMAT* second, size_t* firstSpecialRows, size_t* firstSpecialColumns, size_t* secondSpecialRows, size_t* secondSpecialColumns, int8_t characteristic, CMR_CHRMAT** presult)
259
- CMR_ERROR CMRysumDecomposeEpsilon(CMR* cmr, CMR_CHRMAT* matrix, CMR_CHRMAT* transpose, CMR_SEPA* sepa, char* pepsilon)
260
- CMR_ERROR CMRysumDecomposeFirst(CMR* cmr, CMR_CHRMAT* matrix, CMR_SEPA* sepa, char epsilon, CMR_CHRMAT** pfirst, size_t* firstRowsOrigin, size_t* firstColumnsOrigin, size_t* rowsToFirst, size_t* columnsToFirst, size_t* firstSpecialRows, size_t* firstSpecialColumns)
261
- CMR_ERROR CMRysumDecomposeSecond(CMR* cmr, CMR_CHRMAT* matrix, CMR_SEPA* sepa, char epsilon, CMR_CHRMAT** psecond, size_t* secondRowsOrigin, size_t* secondColumnsOrigin, size_t* rowsToSecond, size_t* columnsToSecond, size_t* secondSpecialRows, size_t* secondSpecialColumns)
259
+ CMR_ERROR CMRysumDecomposeEpsilon(CMR* cmr, CMR_CHRMAT* matrix, CMR_CHRMAT* transpose, CMR_SEPA* sepa, signed char* pepsilon)
260
+ CMR_ERROR CMRysumDecomposeFirst(CMR* cmr, CMR_CHRMAT* matrix, CMR_SEPA* sepa, signed char epsilon, CMR_CHRMAT** pfirst, size_t* firstRowsOrigin, size_t* firstColumnsOrigin, size_t* rowsToFirst, size_t* columnsToFirst, size_t* firstSpecialRows, size_t* firstSpecialColumns)
261
+ CMR_ERROR CMRysumDecomposeSecond(CMR* cmr, CMR_CHRMAT* matrix, CMR_SEPA* sepa, signed char epsilon, CMR_CHRMAT** psecond, size_t* secondRowsOrigin, size_t* secondColumnsOrigin, size_t* rowsToSecond, size_t* columnsToSecond, size_t* secondSpecialRows, size_t* secondSpecialColumns)
262
262
 
263
263
  CMR_ERROR CMRthreesumCompose(CMR* cmr, CMR_CHRMAT* first, CMR_CHRMAT* second, size_t* firstSpecialRows, size_t* firstSpecialColumns, size_t* secondSpecialRows, size_t* secondSpecialColumns, int8_t characteristic, CMR_CHRMAT** presult)
264
- CMR_ERROR CMRthreesumDecomposeSearchConnecting(CMR* cmr, CMR_CHRMAT* matrix, CMR_CHRMAT* transpose, CMR_SEPA* sepa, size_t* specialRows, size_t* specialColumns, char* pgamma, char* pbeta)
265
- CMR_ERROR CMRthreesumDecomposeSignConnecting(CMR* cmr, CMR_CHRMAT* matrix, CMR_CHRMAT* transpose, CMR_SEPA* sepa, size_t* specialRows, size_t* specialColumns, char* pgamma, char* pbeta)
266
- CMR_ERROR CMRthreesumDecomposeFirst(CMR* cmr, CMR_CHRMAT* matrix, CMR_SEPA* sepa, size_t* specialRows, size_t* specialColumns, char beta, CMR_CHRMAT** pfirst, size_t* firstRowsOrigin, size_t* firstColumnsOrigin, size_t* rowsToFirst, size_t* columnsToFirst, size_t* firstSpecialRows, size_t* firstSpecialColumns)
267
- CMR_ERROR CMRthreesumDecomposeSecond(CMR* cmr, CMR_CHRMAT* matrix, CMR_SEPA* sepa, size_t* specialRows, size_t* specialColumns, char gamma, CMR_CHRMAT** psecond, size_t* secondRowsOrigin, size_t* secondColumnsOrigin, size_t* rowsToSecond, size_t* columnsToSecond, size_t* secondSpecialRows, size_t* secondSpecialColumns)
264
+ CMR_ERROR CMRthreesumDecomposeSearchConnecting(CMR* cmr, CMR_CHRMAT* matrix, CMR_CHRMAT* transpose, CMR_SEPA* sepa, size_t* specialRows, size_t* specialColumns, signed char* pgamma, signed char* pbeta)
265
+ CMR_ERROR CMRthreesumDecomposeSignConnecting(CMR* cmr, CMR_CHRMAT* matrix, CMR_CHRMAT* transpose, CMR_SEPA* sepa, size_t* specialRows, size_t* specialColumns, signed char* pgamma, signed char* pbeta)
266
+ CMR_ERROR CMRthreesumDecomposeFirst(CMR* cmr, CMR_CHRMAT* matrix, CMR_SEPA* sepa, size_t* specialRows, size_t* specialColumns, signed char beta, CMR_CHRMAT** pfirst, size_t* firstRowsOrigin, size_t* firstColumnsOrigin, size_t* rowsToFirst, size_t* columnsToFirst, size_t* firstSpecialRows, size_t* firstSpecialColumns)
267
+ CMR_ERROR CMRthreesumDecomposeSecond(CMR* cmr, CMR_CHRMAT* matrix, CMR_SEPA* sepa, size_t* specialRows, size_t* specialColumns, signed char gamma, CMR_CHRMAT** psecond, size_t* secondRowsOrigin, size_t* secondColumnsOrigin, size_t* rowsToSecond, size_t* columnsToSecond, size_t* secondSpecialRows, size_t* secondSpecialColumns)
268
268
 
269
269
  cdef extern from "cmr/graphic.h":
270
270
 
@@ -1,7 +1,7 @@
1
1
  # sage_setup: distribution = sagemath-cmr
2
2
  from sage.libs.cmr.cmr cimport CMR_CHRMAT, CMR_SEYMOUR_PARAMS, CMR_GRAPH, CMR_GRAPH_EDGE, bool
3
3
 
4
- from .matrix_sparse cimport Matrix_sparse
4
+ from sage.matrix.matrix_sparse cimport Matrix_sparse
5
5
 
6
6
  cdef class Matrix_cmr_sparse(Matrix_sparse):
7
7
  pass