Skip to content
This repository was archived by the owner on Jan 30, 2023. It is now read-only.

Commit 944bb74

Browse files
author
Matthias Koeppe
committed
src/sage/features/interfaces.py: Add doctests
1 parent 945132b commit 944bb74

File tree

1 file changed

+90
-1
lines changed

1 file changed

+90
-1
lines changed

src/sage/features/interfaces.py

Lines changed: 90 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,8 @@
88

99
class InterfaceFeature(Feature):
1010
r"""
11+
A :class:`Feature` describing whether an :class:`~sage.interfaces.interface.Interface` is present and functional.
12+
1113
TESTS::
1214
1315
sage: from sage.features.interfaces import InterfaceFeature
@@ -25,15 +27,41 @@ class InterfaceFeature(Feature):
2527
"""
2628
@staticmethod
2729
def __classcall__(cls, name, module, description=None):
30+
"""
31+
TESTS::
32+
33+
sage: from sage.features import PythonModule
34+
sage: from sage.features.interfaces import InterfaceFeature
35+
sage: f = InterfaceFeature("test_interface", "sage.interfaces.interface")
36+
sage: f is InterfaceFeature("test_interface", PythonModule("sage.interfaces.interface"))
37+
True
38+
"""
2839
if isinstance(module, str):
2940
module = PythonModule(module)
3041
return Feature.__classcall__(cls, name, module, description)
3142

3243
def __init__(self, name, module, description):
44+
"""
45+
TESTS::
46+
47+
sage: from sage.features.interfaces import InterfaceFeature
48+
sage: f = InterfaceFeature("test_interface", "sage.interfaces.interface")
49+
sage: isinstance(f, InterfaceFeature)
50+
True
51+
"""
3352
super().__init__(name, description=description)
3453
self.module = module
3554

3655
def _is_present(self):
56+
"""
57+
TESTS::
58+
59+
sage: from sage.features.interfaces import InterfaceFeature
60+
sage: from sage.interfaces.sage0 import Sage
61+
sage: f = InterfaceFeature("sage0", "sage.interfaces.sage0")
62+
sage: f.is_present()
63+
FeatureTestResult('sage0', True)
64+
"""
3765
result = self.module.is_present()
3866
if not result:
3967
return result
@@ -50,6 +78,7 @@ def _is_present(self):
5078
return FeatureTestResult(self, False,
5179
reason=f"Interface {interface} is not functional: {exception}")
5280

81+
5382
# The following are provided by external software only (no SPKG)
5483

5584
class Magma(InterfaceFeature):
@@ -61,7 +90,7 @@ class Magma(InterfaceFeature):
6190
6291
sage: from sage.features.interfaces import Magma
6392
sage: Magma().is_present() # random
64-
FeatureTestResult('jupymake', False)
93+
FeatureTestResult('magma', False)
6594
"""
6695

6796
@staticmethod
@@ -70,41 +99,101 @@ def __classcall__(cls):
7099

71100

72101
class Matlab(InterfaceFeature):
102+
r"""
103+
A :class:`sage.features.Feature` describing whether :class:`sage.interfaces.matlab.Matlab`
104+
is present and functional.
105+
106+
EXAMPLES::
107+
108+
sage: from sage.features.interfaces import Matlab
109+
sage: Matlab().is_present() # random
110+
FeatureTestResult('matlab', False)
111+
"""
73112

74113
@staticmethod
75114
def __classcall__(cls):
76115
return InterfaceFeature.__classcall__(cls, 'matlab', 'sage.interfaces.matlab')
77116

78117

79118
class Mathematica(InterfaceFeature):
119+
r"""
120+
A :class:`sage.features.Feature` describing whether :class:`sage.interfaces.mathematica.Mathematica`
121+
is present and functional.
122+
123+
EXAMPLES::
124+
125+
sage: from sage.features.interfaces import Mathematica
126+
sage: Mathematica().is_present() # random
127+
FeatureTestResult('mathematica', False)
128+
"""
80129

81130
@staticmethod
82131
def __classcall__(cls):
83132
return InterfaceFeature.__classcall__(cls, 'mathematica', 'sage.interfaces.mathematica')
84133

85134

86135
class Maple(InterfaceFeature):
136+
r"""
137+
A :class:`sage.features.Feature` describing whether :class:`sage.interfaces.maple.Maple`
138+
is present and functional.
139+
140+
EXAMPLES::
141+
142+
sage: from sage.features.interfaces import Maple
143+
sage: Maple().is_present() # random
144+
FeatureTestResult('maple', False)
145+
"""
87146

88147
@staticmethod
89148
def __classcall__(cls):
90149
return InterfaceFeature.__classcall__(cls, 'maple', 'sage.interfaces.maple')
91150

92151

93152
class Macaulay2(InterfaceFeature):
153+
r"""
154+
A :class:`sage.features.Feature` describing whether :class:`sage.interfaces.macaulay2.Macaulay2`
155+
is present and functional.
156+
157+
EXAMPLES::
158+
159+
sage: from sage.features.interfaces import Macaulay2
160+
sage: Macaulay2().is_present() # random
161+
FeatureTestResult('macaulay2', False)
162+
"""
94163

95164
@staticmethod
96165
def __classcall__(cls):
97166
return InterfaceFeature.__classcall__(cls, 'macaulay2', 'sage.interfaces.macaulay2')
98167

99168

100169
class Octave(InterfaceFeature):
170+
r"""
171+
A :class:`sage.features.Feature` describing whether :class:`sage.interfaces.octave.Octave`
172+
is present and functional.
173+
174+
EXAMPLES::
175+
176+
sage: from sage.features.interfaces import Octave
177+
sage: Octave().is_present() # random
178+
FeatureTestResult('octave', False)
179+
"""
101180

102181
@staticmethod
103182
def __classcall__(cls):
104183
return InterfaceFeature.__classcall__(cls, 'octave', 'sage.interfaces.octave')
105184

106185

107186
class Scilab(InterfaceFeature):
187+
r"""
188+
A :class:`sage.features.Feature` describing whether :class:`sage.interfaces.scilab.Scilab`
189+
is present and functional.
190+
191+
EXAMPLES::
192+
193+
sage: from sage.features.interfaces import Scilab
194+
sage: Scilab().is_present() # random
195+
FeatureTestResult('scilab', False)
196+
"""
108197

109198
@staticmethod
110199
def __classcall__(cls):

0 commit comments

Comments
 (0)