Skip to content

Commit a518184

Browse files
Murray Whytejames-d-mitchell
Murray Whyte
authored andcommitted
Fix enum conversion problem
1 parent b0846cf commit a518184

File tree

3 files changed

+214
-46
lines changed

3 files changed

+214
-46
lines changed

libsemigroups_pybind11/fpsemigroup.py

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -14,10 +14,9 @@
1414
"""
1515

1616
from _libsemigroups_pybind11 import (
17+
make,
1718
author,
18-
_symmetric_group, # I'll want to change this so the user can't access it.
19-
# The same strange error happens with brauer_monoid(author.Sutov)... But this
20-
# function doesn't even take an author value at all.
19+
symmetric_group,
2120
alternating_group,
2221
full_transformation_monoid,
2322
partial_transformation_monoid,
@@ -40,8 +39,3 @@
4039
)
4140

4241
from _libsemigroups_pybind11 import make_presentation as make
43-
44-
def symmetric_group(n, val = author.Carmichael):
45-
if not isinstance(n, int):
46-
raise TypeError("the 1st argument must be an int, found ", type(n))
47-
return _symmetric_group(n, val)

src/fpsemi-examples.cpp

Lines changed: 65 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -59,38 +59,81 @@ namespace libsemigroups {
5959
.value("Moore", fpsemigroup::author::Moore)
6060
.value("Moser", fpsemigroup::author::Moser)
6161
.value("Sutov", fpsemigroup::author::Sutov)
62-
.export_values()
6362
.def("__add__", &fpsemigroup::operator+);
6463

6564
m.def("make_presentation", &fpsemigroup::make<Presentation<word_type>>)
66-
.def("_symmetric_group",
65+
.def("symmetric_group",
6766
&fpsemigroup::symmetric_group,
68-
py::arg("n"),
67+
py::arg("n").noconvert(),
6968
py::arg("val") = fpsemigroup::author::Carmichael)
70-
.def("alternating_group", &fpsemigroup::alternating_group)
69+
.def("alternating_group",
70+
&fpsemigroup::alternating_group,
71+
py::arg("n").noconvert(),
72+
py::arg("val") = fpsemigroup::author::Moore)
7173
.def("full_transformation_monoid",
72-
&fpsemigroup::full_transformation_monoid)
74+
&fpsemigroup::full_transformation_monoid,
75+
py::arg("n").noconvert(),
76+
py::arg("val") = fpsemigroup::author::Iwahori)
7377
.def("partial_transformation_monoid",
74-
&fpsemigroup::partial_transformation_monoid)
75-
.def("symmetric_inverse_monoid", &fpsemigroup::symmetric_inverse_monoid)
78+
&fpsemigroup::partial_transformation_monoid,
79+
py::arg("n").noconvert(),
80+
py::arg("val") = fpsemigroup::author::Sutov)
81+
.def("symmetric_inverse_monoid",
82+
&fpsemigroup::symmetric_inverse_monoid,
83+
py::arg("n").noconvert(),
84+
py::arg("val") = fpsemigroup::author::Sutov)
7685
.def("dual_symmetric_inverse_monoid",
77-
&fpsemigroup::dual_symmetric_inverse_monoid)
86+
&fpsemigroup::dual_symmetric_inverse_monoid,
87+
py::arg("n").noconvert(),
88+
py::arg("val") = fpsemigroup::author::Easdown
89+
+ fpsemigroup::author::East
90+
+ fpsemigroup::author::FitzGerald)
7891
.def("uniform_block_bijection_monoid",
79-
&fpsemigroup::uniform_block_bijection_monoid)
80-
.def("partition_monoid", &fpsemigroup::partition_monoid)
81-
.def("brauer_monoid", &fpsemigroup::brauer_monoid)
82-
.def("rectangular_band", &fpsemigroup::rectangular_band)
83-
.def("stellar_monoid", &fpsemigroup::stellar_monoid)
84-
.def("chinese_monoid", &fpsemigroup::chinese_monoid)
85-
.def("monogenic_semigroup", &fpsemigroup::monogenic_semigroup)
86-
.def("plactic_monoid", &fpsemigroup::plactic_monoid)
87-
.def("stylic_monoid", &fpsemigroup::stylic_monoid)
88-
.def("fibonacci_semigroup", &fpsemigroup::fibonacci_semigroup)
89-
.def("temperley_lieb_monoid", &fpsemigroup::temperley_lieb_monoid)
90-
.def("singular_brauer_monoid", &fpsemigroup::singular_brauer_monoid)
92+
&fpsemigroup::uniform_block_bijection_monoid,
93+
py::arg("n").noconvert(),
94+
py::arg("val") = fpsemigroup::author::FitzGerald)
95+
.def("partition_monoid",
96+
&fpsemigroup::partition_monoid,
97+
py::arg("n").noconvert(),
98+
py::arg("val") = fpsemigroup::author::East)
99+
.def("brauer_monoid",
100+
&fpsemigroup::brauer_monoid,
101+
py::arg("n").noconvert())
102+
.def("rectangular_band",
103+
&fpsemigroup::rectangular_band,
104+
py::arg("m").noconvert(),
105+
py::arg("n").noconvert())
106+
.def("stellar_monoid",
107+
&fpsemigroup::stellar_monoid,
108+
py::arg("n").noconvert())
109+
.def("chinese_monoid",
110+
&fpsemigroup::chinese_monoid,
111+
py::arg("n").noconvert())
112+
.def("monogenic_semigroup",
113+
&fpsemigroup::monogenic_semigroup,
114+
py::arg("m").noconvert(),
115+
py::arg("r").noconvert())
116+
.def("plactic_monoid",
117+
&fpsemigroup::plactic_monoid,
118+
py::arg("n").noconvert())
119+
.def("stylic_monoid",
120+
&fpsemigroup::stylic_monoid,
121+
py::arg("l").noconvert())
122+
.def("fibonacci_semigroup",
123+
&fpsemigroup::fibonacci_semigroup,
124+
py::arg("r").noconvert(),
125+
py::arg("n").noconvert())
126+
.def("temperley_lieb_monoid",
127+
&fpsemigroup::temperley_lieb_monoid,
128+
py::arg("n").noconvert())
129+
.def("singular_brauer_monoid",
130+
&fpsemigroup::singular_brauer_monoid,
131+
py::arg("n").noconvert())
91132
.def("orientation_preserving_monoid",
92-
&fpsemigroup::orientation_preserving_monoid)
133+
&fpsemigroup::orientation_preserving_monoid,
134+
py::arg("n").noconvert())
93135
.def("orientation_reversing_monoid",
94-
&fpsemigroup::orientation_reversing_monoid);
136+
&fpsemigroup::orientation_reversing_monoid,
137+
py::arg("n").noconvert());
95138
}
96139
} // namespace libsemigroups

0 commit comments

Comments
 (0)