Skip to content

Commit c7f53a1

Browse files
committed
Lazy import of GraphicMatroid for modularization
1 parent bc11824 commit c7f53a1

File tree

5 files changed

+37
-28
lines changed

5 files changed

+37
-28
lines changed

src/sage/matroids/advanced.py

Lines changed: 24 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -10,26 +10,28 @@
1010
This adds the following to the main namespace:
1111
1212
- Matroid classes:
13-
- :class:`MinorMatroid <sage.matroids.minor_matroid.MinorMatroid>`
14-
- :class:`DualMatroid <sage.matroids.dual_matroid.DualMatroid>`
15-
- :class:`RankMatroid <sage.matroids.rank_matroid.RankMatroid>`
13+
14+
- :class:`BasisMatroid <sage.matroids.basis_matroid.BasisMatroid>`
1615
- :class:`CircuitsMatroid <sage.matroids.circuits_matroid.CircuitsMatroid>`
1716
- :class:`CircuitClosuresMatroid <sage.matroids.circuit_closures_matroid.CircuitClosuresMatroid>`
18-
- :class:`BasisMatroid <sage.matroids.basis_matroid.BasisMatroid>`
17+
- :class:`DualMatroid <sage.matroids.dual_matroid.DualMatroid>`
1918
- :class:`FlatsMatroid <sage.matroids.flats_matroid.FlatsMatroid>`
19+
- :class:`GraphicMatroid <sage.matroids.graphic_matroid.GraphicMatroid>`
2020
- :class:`LinearMatroid <sage.matroids.linear_matroid.LinearMatroid>`
2121
- :class:`RegularMatroid <sage.matroids.linear_matroid.RegularMatroid>`
2222
- :class:`BinaryMatroid <sage.matroids.linear_matroid.BinaryMatroid>`
2323
- :class:`TernaryMatroid <sage.matroids.linear_matroid.TernaryMatroid>`
2424
- :class:`QuaternaryMatroid <sage.matroids.linear_matroid.QuaternaryMatroid>`
25-
- :class:`GraphicMatroid <sage.matroids.linear_matroid.GraphicMatroid>`
25+
- :class:`MinorMatroid <sage.matroids.minor_matroid.MinorMatroid>`
26+
- :class:`RankMatroid <sage.matroids.rank_matroid.RankMatroid>`
2627
2728
Note that you can construct all of these through the
2829
:func:`Matroid() <sage.matroids.constructor.Matroid>` function, which is
2930
available on startup. Using the classes directly can sometimes be useful
3031
for faster code (e.g. if your code calls ``Matroid()`` frequently).
3132
3233
- Other classes:
34+
3335
- :class:`LinearSubclasses <sage.matroids.extension.LinearSubclasses>`
3436
- :class:`MatroidExtensions <sage.matroids.extension.MatroidExtensions>`
3537
@@ -39,29 +41,34 @@
3941
:meth:`Matroid.extensions() <sage.matroids.matroid.Matroid.extensions>`.
4042
4143
- Useful functions:
44+
4245
- :func:`setprint() <sage.matroids.utilities.setprint>`
4346
- :func:`newlabel() <sage.matroids.utilities.newlabel>`
4447
- :func:`get_nonisomorphic_matroids() <sage.matroids.utilities.get_nonisomorphic_matroids>`
45-
- :func:`lift_cross_ratios() <sage.matroids.linear_matroid.lift_cross_ratios>`
46-
- :func:`lift_map() <sage.matroids.linear_matroid.lift_map>`
48+
- :func:`lift_cross_ratios() <sage.matroids.utilities.lift_cross_ratios>`
49+
- :func:`lift_map() <sage.matroids.utilities.lift_map>`
50+
- :func:`cmp_elements_key() <sage.matroids.utilities.cmp_elements_key>`
4751
4852
AUTHORS:
4953
5054
- Stefan van Zwam (2013-04-01): initial version
5155
"""
5256

53-
import sage.matroids.matroid
54-
import sage.matroids.basis_exchange_matroid
55-
from sage.matroids.minor_matroid import MinorMatroid
56-
from sage.matroids.dual_matroid import DualMatroid
57-
from sage.matroids.rank_matroid import RankMatroid
57+
from sage.matroids import matroid, basis_exchange_matroid, lean_matrix
58+
59+
from sage.matroids.basis_matroid import BasisMatroid
5860
from sage.matroids.circuits_matroid import CircuitsMatroid
5961
from sage.matroids.circuit_closures_matroid import CircuitClosuresMatroid
60-
from sage.matroids.basis_matroid import BasisMatroid
62+
from sage.matroids.dual_matroid import DualMatroid
6163
from sage.matroids.flats_matroid import FlatsMatroid
6264
from sage.matroids.linear_matroid import LinearMatroid, RegularMatroid, BinaryMatroid, TernaryMatroid, QuaternaryMatroid
63-
from sage.matroids.utilities import setprint, newlabel, get_nonisomorphic_matroids, lift_cross_ratios, lift_map
64-
from sage.matroids import lean_matrix
65-
from sage.matroids.extension import LinearSubclasses, MatroidExtensions
65+
from sage.matroids.minor_matroid import MinorMatroid
66+
from sage.matroids.rank_matroid import RankMatroid
6667
from sage.matroids.union_matroid import MatroidUnion, MatroidSum, PartitionMatroid
67-
from sage.matroids.graphic_matroid import GraphicMatroid
68+
69+
# lazy import of GraphicMatroid for modularization purposes
70+
from sage.misc.lazy_import import lazy_import
71+
lazy_import('sage.matroids.graphic_matroid', 'GraphicMatroid')
72+
73+
from sage.matroids.extension import LinearSubclasses, MatroidExtensions
74+
from sage.matroids.utilities import setprint, newlabel, get_nonisomorphic_matroids, lift_cross_ratios, lift_map, cmp_elements_key

src/sage/matroids/constructor.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -634,7 +634,7 @@ def Matroid(groundset=None, data=None, **kwds):
634634
635635
sage: M = Matroid(circuit_closures=[(2, 'abd'), (3, 'abcdef'),
636636
....: (2, 'bce')])
637-
sage: M.equals(matroids.catalog.Q6()) # needs sage.rings.finite_rings
637+
sage: M.equals(matroids.catalog.Q6()) # needs sage.rings.finite_rings
638638
True
639639
640640
#. RevLex-Index:

src/sage/matroids/database_matroids.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1236,6 +1236,7 @@ def K33dual(groundset='abcdefghi'):
12361236
12371237
EXAMPLES::
12381238
1239+
sage: # needs sage.graphs
12391240
sage: M = matroids.catalog.K33dual(); M
12401241
M*(K3, 3): Regular matroid of rank 4 on 9 elements with 81 bases
12411242
sage: any(N.is_3connected() for N in M.linear_extensions(simple=True))
@@ -1266,6 +1267,7 @@ def K33(groundset='abcdefghi'):
12661267
12671268
EXAMPLES::
12681269
1270+
sage: # needs sage.graphs
12691271
sage: M = matroids.catalog.K33(); M
12701272
M(K3, 3): Regular matroid of rank 5 on 9 elements with 81 bases
12711273
sage: M.is_valid()

src/sage/matroids/linear_matroid.pyx

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -5216,7 +5216,7 @@ cdef class QuaternaryMatroid(LinearMatroid):
52165216
52175217
EXAMPLES::
52185218
5219-
sage: M = matroids.catalog.Q10() # needs sage.rings.finite_rings
5219+
sage: M = matroids.catalog.Q10() # needs sage.rings.finite_rings
52205220
sage: M._basic_representation() # needs sage.rings.finite_rings
52215221
5 x 10 QuaternaryMatrix
52225222
[100001x00y]
@@ -5259,7 +5259,7 @@ cdef class QuaternaryMatroid(LinearMatroid):
52595259
52605260
EXAMPLES::
52615261
5262-
sage: M = matroids.catalog.Q10() # needs sage.rings.finite_rings
5262+
sage: M = matroids.catalog.Q10() # needs sage.rings.finite_rings
52635263
sage: M._reduced_representation() # needs sage.rings.finite_rings
52645264
5 x 5 QuaternaryMatrix
52655265
[1x00y]
@@ -5287,7 +5287,7 @@ cdef class QuaternaryMatroid(LinearMatroid):
52875287
52885288
EXAMPLES::
52895289
5290-
sage: M = matroids.catalog.Q10() # needs sage.rings.finite_rings
5290+
sage: M = matroids.catalog.Q10() # needs sage.rings.finite_rings
52915291
sage: M._invariant() # indirect doctest # needs sage.rings.finite_rings
52925292
(0, 0, 5, 5, 20, 10, 25)
52935293
"""
@@ -5366,7 +5366,7 @@ cdef class QuaternaryMatroid(LinearMatroid):
53665366
53675367
EXAMPLES::
53685368
5369-
sage: M = matroids.catalog.Q10() # needs sage.rings.finite_rings
5369+
sage: M = matroids.catalog.Q10() # needs sage.rings.finite_rings
53705370
sage: M._invariant() # needs sage.rings.finite_rings
53715371
(0, 0, 5, 5, 20, 10, 25)
53725372
"""
@@ -5391,7 +5391,7 @@ cdef class QuaternaryMatroid(LinearMatroid):
53915391
53925392
EXAMPLES::
53935393
5394-
sage: M = matroids.catalog.Q10() # needs sage.rings.finite_rings
5394+
sage: M = matroids.catalog.Q10() # needs sage.rings.finite_rings
53955395
sage: M.bicycle_dimension() # needs sage.rings.finite_rings
53965396
0
53975397
"""
@@ -5457,8 +5457,8 @@ cdef class QuaternaryMatroid(LinearMatroid):
54575457
54585458
EXAMPLES::
54595459
5460-
sage: M = matroids.catalog.Q10().delete('a') # needs sage.rings.finite_rings
5461-
sage: N = matroids.catalog.Q10().delete('b') # needs sage.rings.finite_rings
5460+
sage: M = matroids.catalog.Q10().delete('a') # needs sage.rings.finite_rings
5461+
sage: N = matroids.catalog.Q10().delete('b') # needs sage.rings.finite_rings
54625462
sage: M._fast_isom_test(N) is None # needs sage.rings.finite_rings
54635463
True
54645464
"""
@@ -5493,7 +5493,7 @@ cdef class QuaternaryMatroid(LinearMatroid):
54935493
54945494
EXAMPLES::
54955495
5496-
sage: M = matroids.catalog.Q10() # needs sage.rings.finite_rings
5496+
sage: M = matroids.catalog.Q10() # needs sage.rings.finite_rings
54975497
sage: N = M._minor(contractions=set(['a']), deletions=set([])) # needs sage.rings.finite_rings
54985498
sage: N._minor(contractions=set([]), deletions=set(['b', 'c'])) # needs sage.rings.finite_rings
54995499
Quaternary matroid of rank 4 on 7 elements

src/sage/matroids/matroid.pyx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3052,7 +3052,7 @@ cdef class Matroid(SageObject):
30523052
30533053
EXAMPLES::
30543054
3055-
sage: M = matroids.catalog.Q6() # needs sage.rings.finite_rings
3055+
sage: M = matroids.catalog.Q6() # needs sage.rings.finite_rings
30563056
sage: sorted([sorted(F) for F in M.coflats(2)]) # needs sage.rings.finite_rings
30573057
[['a', 'b'], ['a', 'c'], ['a', 'd', 'f'], ['a', 'e'], ['b', 'c'],
30583058
['b', 'd'], ['b', 'e'], ['b', 'f'], ['c', 'd'], ['c', 'e', 'f'],
@@ -5383,7 +5383,7 @@ cdef class Matroid(SageObject):
53835383
....: groundset='abcdef')
53845384
sage: N.is_kconnected(3)
53855385
False
5386-
sage: matroids.catalog.BetsyRoss().is_kconnected(3) # needs sage.graphs
5386+
sage: matroids.catalog.BetsyRoss().is_kconnected(3) # needs sage.graphs
53875387
True
53885388
sage: matroids.AG(5,2).is_kconnected(4)
53895389
True

0 commit comments

Comments
 (0)