From 919fc345f59c6fbe462e78aa3bd7e66e5a75bf0d Mon Sep 17 00:00:00 2001 From: Giorgos Mousa Date: Tue, 28 Jan 2025 23:24:12 +0200 Subject: [PATCH 1/2] Resolve error in `transversal_matroid.pyx` An error appears on Python 3.12 due to the default value of an argument of a cpdef function being ``[]``. We now use ``None`` instead. --- src/sage/matroids/transversal_matroid.pyx | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/sage/matroids/transversal_matroid.pyx b/src/sage/matroids/transversal_matroid.pyx index 7532fac62b0..a492816d775 100644 --- a/src/sage/matroids/transversal_matroid.pyx +++ b/src/sage/matroids/transversal_matroid.pyx @@ -668,7 +668,7 @@ cdef class TransversalMatroid(BasisExchangeMatroid): labels.append(l) return TransversalMatroid(sets, groundset=self.groundset(), set_labels=labels) - cpdef transversal_extension(self, element=None, newset=False, sets=[]): + cpdef transversal_extension(self, element=None, newset=False, sets=None): r""" Return a :class:`TransversalMatroid` extended by an element. @@ -751,6 +751,8 @@ cdef class TransversalMatroid(BasisExchangeMatroid): Transversal matroid of rank 3 on 5 elements, with 3 sets sage: Ne = N.transversal_extension(element='f', sets=['s2']) """ + if sets is None: + sets = [] cdef set parsed_sets = set(sets) if element is None: element = newlabel(self._groundset) From ef07593ae5ee166b9f5fb98dd0833accf76d7c8b Mon Sep 17 00:00:00 2001 From: Giorgos Mousa Date: Wed, 29 Jan 2025 01:21:22 +0200 Subject: [PATCH 2/2] Ensure `newset`'s label is not `element` --- src/sage/matroids/transversal_matroid.pyx | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/sage/matroids/transversal_matroid.pyx b/src/sage/matroids/transversal_matroid.pyx index a492816d775..a11c59f570f 100644 --- a/src/sage/matroids/transversal_matroid.pyx +++ b/src/sage/matroids/transversal_matroid.pyx @@ -783,17 +783,17 @@ cdef class TransversalMatroid(BasisExchangeMatroid): else: new_sets.append(s) + groundset = self._groundset.union([element]) if newset: if newset is True: - newset = newlabel(self._groundset.union(labels)) + newset = newlabel(groundset.union(labels)) new_sets.append([element]) labels = list(labels) # Make a shallow copy since we mutate it labels.append(newset) - groundset = self._groundset.union([element]) return TransversalMatroid(new_sets, groundset, labels) - def transversal_extensions(self, element=None, sets=[]): + def transversal_extensions(self, element=None, sets=None): r""" Return an iterator of extensions based on the transversal presentation. @@ -831,7 +831,7 @@ cdef class TransversalMatroid(BasisExchangeMatroid): raise ValueError("cannot extend by element already in groundset") labels = self._set_labels_input - if not sets: + if sets is None: sets = labels elif not set(sets).issubset(labels): raise ValueError("sets do not match presentation")