diff --git a/src/sage/rings/padics/generic_nodes.py b/src/sage/rings/padics/generic_nodes.py index 3c5d9c2aaf5..6d666302d27 100644 --- a/src/sage/rings/padics/generic_nodes.py +++ b/src/sage/rings/padics/generic_nodes.py @@ -1423,13 +1423,19 @@ def construction(self, forbid_frac_field=False): sage: S = F(Z) sage: S._precision_cap() (31, 41) + + The `secure` attribute for relaxed type is included in the functor:: + + sage: R = ZpER(5, secure=True) + sage: R.construction() + (Completion[5, prec=(20, 40, True)], Integer Ring) """ from sage.categories.pushout import CompletionFunctor extras = {'print_mode':self._printer.dict(), 'type':self._prec_type(), 'names':self._names} if hasattr(self, '_label'): extras['label'] = self._label if self._prec_type() == "relaxed": - prec = (self._default_prec, self._halting_prec) + prec = (self._default_prec, self._halting_prec, self._secure) else: prec = self._precision_cap() return (CompletionFunctor(self.prime(), prec, extras), ZZ) @@ -1595,6 +1601,12 @@ def construction(self, forbid_frac_field=False): sage: S = F(Z) sage: S._precision_cap() (31, 41) + + The `secure` attribute for relaxed type is included in the functor:: + + sage: K = QpER(5, secure=True) + sage: K.construction(forbid_frac_field=True) + (Completion[5, prec=(20, 40, True)], Rational Field) """ from sage.categories.pushout import FractionField, CompletionFunctor if forbid_frac_field: @@ -1602,7 +1614,7 @@ def construction(self, forbid_frac_field=False): if hasattr(self, '_label'): extras['label'] = self._label if self._prec_type() == "relaxed": - prec = (self._default_prec, self._halting_prec) + prec = (self._default_prec, self._halting_prec, self._secure) else: prec = self._precision_cap() return (CompletionFunctor(self.prime(), prec, extras), QQ) diff --git a/src/sage/rings/padics/local_generic.py b/src/sage/rings/padics/local_generic.py index 2168d2e348b..df8487c609d 100644 --- a/src/sage/rings/padics/local_generic.py +++ b/src/sage/rings/padics/local_generic.py @@ -375,6 +375,25 @@ def change(self, **kwds): 37-adic Ring with lattice-cap precision (label: change) sage: S.change(label = "new") 37-adic Ring with lattice-cap precision (label: new) + + + TESTS: + + The `secure` attribute for relaxed type is copied:: + + sage: R = ZpER(5, secure=True); R + 5-adic Ring handled with relaxed arithmetics + sage: K = R.change(field=True); K + 5-adic Field handled with relaxed arithmetics + sage: K.is_secure() + True + + The `check=False` option works for relaxed type:: + + sage: R = ZpER(5) ; R + 5-adic Ring handled with relaxed arithmetics + sage: K = R.change(field=True, check=False) ; K + 5-adic Field handled with relaxed arithmetics """ # We support both print_* and * for *=mode, pos, sep, alphabet for atr in ('print_mode', 'print_pos', 'print_sep', 'print_alphabet'): diff --git a/src/sage/rings/padics/padic_base_leaves.py b/src/sage/rings/padics/padic_base_leaves.py index 7963a442f97..3c382fd292b 100644 --- a/src/sage/rings/padics/padic_base_leaves.py +++ b/src/sage/rings/padics/padic_base_leaves.py @@ -1128,6 +1128,8 @@ def __init__(self, p, prec, print_mode, names): sage: R = ZpER(7) sage: TestSuite(R).run(skip=['_test_log', '_test_matrix_smith']) + sage: R = ZpER(7, secure=True) + sage: TestSuite(R).run(skip=['_test_log', '_test_matrix_smith']) """ from sage.rings.padics import padic_relaxed_element self._default_prec, self._halting_prec, self._secure = prec @@ -1163,6 +1165,8 @@ def __init__(self, p, prec, print_mode, names): sage: K = QpER(7) sage: TestSuite(K).run(skip=['_test_log', '_test_matrix_smith']) + sage: K = QpER(7, secure=True) + sage: TestSuite(K).run(skip=['_test_log', '_test_matrix_smith']) """ from sage.rings.padics import padic_relaxed_element self._default_prec, self._halting_prec, self._secure = prec diff --git a/src/sage/rings/padics/padic_generic.py b/src/sage/rings/padics/padic_generic.py index 2f9c2195720..93756aeb772 100644 --- a/src/sage/rings/padics/padic_generic.py +++ b/src/sage/rings/padics/padic_generic.py @@ -478,6 +478,12 @@ def integer_ring(self, print_mode=None): 2-adic Ring with lattice-cap precision (label: test) sage: R.integer_ring({'mode':'series'}) is R True + + The `secure` attribute for relaxed type is preserved:: + + sage: K = QpER(5, secure=True) + sage: K.integer_ring().is_secure() + True """ # Currently does not support fields with non integral defining # polynomials. This should change when the padic_general_extension @@ -485,7 +491,7 @@ def integer_ring(self, print_mode=None): if not self.is_field() and print_mode is None: return self if print_mode is None: - return self.change(field=False) + return self.change(field=False, check=False) else: from sage.misc.superseded import deprecation deprecation(23227, "Use the change method if you want to change print options in integer_ring()")