Skip to content

Commit 4d6f31b

Browse files
committed
throw ValueError instead of TypeError when logarithm doesn't exist
...because attempting to run this with unhashable elements throws the same exception, which can cause confusion in higher-level algorithms.
1 parent 3dd953c commit 4d6f31b

File tree

2 files changed

+6
-6
lines changed

2 files changed

+6
-6
lines changed

src/sage/groups/additive_abelian/additive_abelian_wrapper.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -365,7 +365,7 @@ def discrete_log(self, x, gens=None):
365365
sage: G.discrete_log(V([6, 4]))
366366
Traceback (most recent call last):
367367
...
368-
TypeError: Not in group
368+
ValueError: not in group
369369
370370
::
371371
@@ -617,7 +617,7 @@ def _base(j, k, c):
617617
if key in tab:
618618
return tab[key] + vector(y)
619619

620-
raise TypeError('Not in group')
620+
raise ValueError('not in group')
621621

622622
def _rec(j, k, c):
623623

@@ -744,7 +744,7 @@ def _expand_basis_pgroup(p, alphas, vals, beta, h, rel):
744744
beta_q *= p
745745
try:
746746
e = _discrete_log_pgroup(p, vals, alphas, -beta_q)
747-
except TypeError:
747+
except ValueError:
748748
continue
749749
# step 6
750750
_expand_basis_pgroup(p, alphas, vals, beta, h, list(e) + [p**v])
@@ -815,7 +815,7 @@ def basis_from_generators(gens, ords=None):
815815
beta, ord_beta = pgens.pop()
816816
try:
817817
dlog = _discrete_log_pgroup(p, vals, alphas, beta)
818-
except TypeError:
818+
except ValueError:
819819
pass
820820
else:
821821
continue
@@ -828,7 +828,7 @@ def basis_from_generators(gens, ords=None):
828828
# assert beta_q == beta * p**v
829829
try:
830830
e = _discrete_log_pgroup(p, vals, alphas, -beta_q)
831-
except TypeError:
831+
except ValueError:
832832
continue
833833
_expand_basis_pgroup(p, alphas, vals, beta, val_beta, list(e) + [p**v])
834834
# assert all(a.order() == p**v for a,v in zip(alphas, vals))

src/sage/modules/fg_pid/fgp_module.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -702,7 +702,7 @@ def __contains__(self, x):
702702
try:
703703
self(x)
704704
return True
705-
except TypeError:
705+
except (TypeError, ValueError):
706706
return False
707707

708708
def submodule(self, x):

0 commit comments

Comments
 (0)