diff --git a/_doctest_environment.py b/_doctest_environment.py new file mode 100644 index 0000000..6971085 --- /dev/null +++ b/_doctest_environment.py @@ -0,0 +1,3 @@ +# Toplevel for doctesting with passagemath + +from sage.all__sagemath_modules import * diff --git a/mclf/benchmarks/semistable.py b/mclf/benchmarks/semistable.py index 4a4896f..e72af95 100644 --- a/mclf/benchmarks/semistable.py +++ b/mclf/benchmarks/semistable.py @@ -1,5 +1,7 @@ # -*- coding: utf-8 -*- -from sage.all import QQ, PolynomialRing, FunctionField +from sage.rings.rational_field import Q as QQ +from sage.rings.polynomial.polynomial_ring_constructor import PolynomialRing +from sage.rings.function_field.constructor import FunctionField from mclf import SuperellipticCurve, SemistableModel, SmoothProjectiveCurve diff --git a/mclf/berkovich/affinoid_domain.py b/mclf/berkovich/affinoid_domain.py index fad3c0f..f76af3c 100644 --- a/mclf/berkovich/affinoid_domain.py +++ b/mclf/berkovich/affinoid_domain.py @@ -59,7 +59,9 @@ # ***************************************************************************** -from sage.all import SageObject, Infinity, cached_method +from sage.structure.sage_object import SageObject +from sage.rings.infinity import Infinity +from sage.misc.cachefunc import cached_method from mclf.berkovich.type_V_points import TypeVPointOnBerkovichLine from mclf.berkovich.berkovich_trees import BerkovichTree # from sage.misc.cachefunc import cached_method diff --git a/mclf/berkovich/berkovich_line.py b/mclf/berkovich/berkovich_line.py index 88224e5..2e04a8d 100644 --- a/mclf/berkovich/berkovich_line.py +++ b/mclf/berkovich/berkovich_line.py @@ -213,7 +213,12 @@ # https://www.gnu.org/licenses/ # ***************************************************************************** -from sage.all import SageObject, Infinity, sgn, GaussValuation, ZZ, cached_method +from sage.structure.sage_object import SageObject +from sage.rings.infinity import Infinity +from sage.functions.generalized import sgn +from sage.rings.valuation.gauss_valuation import GaussValuation +from sage.rings.integer_ring import Z as ZZ +from sage.misc.cachefunc import cached_method from sage.rings.valuation.limit_valuation import LimitValuation from sage.geometry.newton_polygon import NewtonPolygon # from sage.misc.cachefunc import cached_method @@ -323,7 +328,7 @@ def point_from_pseudovaluation_on_polynomial_ring(self, v0, parameter=None): EXAMPLES:: sage: from mclf import * - sage: from sage.all import GaussValuation + sage: from sage.rings.valuation.gauss_valuation import GaussValuation sage: F. = FunctionField(QQ) sage: v2 = QQ.valuation(2) sage: X = BerkovichLine(F, v2) @@ -409,7 +414,7 @@ def point_from_valuation(self, v): True """ - from sage.all import Infinity + from sage.rings.infinity import Infinity F = self.function_field() assert v.domain() == F, "the domain of v must be the function field of the Berkovich line" v_K = self.base_valuation() @@ -504,7 +509,7 @@ def point_from_discoid(self, f, s): # y for F such that v(f) >= s iff v(f1(y)) >= s1 # then v0 can be defined as the inductive valuation on K[y] # characterized by v0(f1(y)) = s1 - from sage.all import ceil + from sage.functions.other import ceil from sage.geometry.newton_polygon import NewtonPolygon f = R(f) np = NewtonPolygon([(i, vK(f[i])) for i in range(f.degree()+1)]) @@ -953,7 +958,7 @@ def inverse_parameter(self): EXAMPLES:: sage: from mclf import * - sage: from sage.all import GaussValuation + sage: from sage.rings.valuation.gauss_valuation import GaussValuation sage: F. = FunctionField(QQ) sage: v_2 = QQ.valuation(2) sage: X = BerkovichLine(F, v_2) diff --git a/mclf/berkovich/berkovich_path.py b/mclf/berkovich/berkovich_path.py index 18a2545..6c5468e 100644 --- a/mclf/berkovich/berkovich_path.py +++ b/mclf/berkovich/berkovich_path.py @@ -49,7 +49,8 @@ # https://www.gnu.org/licenses/ # **************************************************************************** -from sage.all import SageObject, Infinity +from sage.structure.sage_object import SageObject +from sage.rings.infinity import Infinity from mclf.berkovich.type_V_points import TypeVPointOnBerkovichLine diff --git a/mclf/berkovich/berkovich_path_old.py b/mclf/berkovich/berkovich_path_old.py index 8c40dfe..7f38dcf 100644 --- a/mclf/berkovich/berkovich_path_old.py +++ b/mclf/berkovich/berkovich_path_old.py @@ -49,7 +49,8 @@ # https://www.gnu.org/licenses/ # *************************************************************************** -from sage.all import SageObject, Infinity +from sage.structure.sage_object import SageObject +from sage.rings.infinity import Infinity from mclf.berkovich.type_V_points import TypeVPointOnBerkovichLine diff --git a/mclf/berkovich/berkovich_trees.py b/mclf/berkovich/berkovich_trees.py index 915c500..a50d0eb 100644 --- a/mclf/berkovich/berkovich_trees.py +++ b/mclf/berkovich/berkovich_trees.py @@ -46,7 +46,8 @@ # https://www.gnu.org/licenses/ # ***************************************************************************** -from sage.all import SageObject, Graph +from sage.structure.sage_object import SageObject +from sage.graphs.graph import Graph class BerkovichTree(SageObject): diff --git a/mclf/berkovich/piecewise_affine_functions.py b/mclf/berkovich/piecewise_affine_functions.py index 0470bec..046d921 100644 --- a/mclf/berkovich/piecewise_affine_functions.py +++ b/mclf/berkovich/piecewise_affine_functions.py @@ -109,7 +109,9 @@ # https://www.gnu.org/licenses/ # ***************************************************************************** -from sage.all import SageObject, Infinity, cached_method +from sage.structure.sage_object import SageObject +from sage.rings.infinity import Infinity +from sage.misc.cachefunc import cached_method class Domain(SageObject): diff --git a/mclf/berkovich/type_V_points.py b/mclf/berkovich/type_V_points.py index ec155ee..71530c4 100644 --- a/mclf/berkovich/type_V_points.py +++ b/mclf/berkovich/type_V_points.py @@ -69,7 +69,9 @@ # https://www.gnu.org/licenses/ # ***************************************************************************** -from sage.all import SageObject, Infinity, cached_method +from sage.structure.sage_object import SageObject +from sage.rings.infinity import Infinity +from sage.misc.cachefunc import cached_method # from sage.misc.cachefunc import cached_method diff --git a/mclf/curves/morphisms_of_smooth_projective_curves.py b/mclf/curves/morphisms_of_smooth_projective_curves.py index 5fb65af..45744a5 100644 --- a/mclf/curves/morphisms_of_smooth_projective_curves.py +++ b/mclf/curves/morphisms_of_smooth_projective_curves.py @@ -78,7 +78,7 @@ # https://www.gnu.org/licenses/ # *************************************************************************** -from sage.all import SageObject +from sage.structure.sage_object import SageObject from mclf.curves.smooth_projective_curves import PointOnSmoothProjectiveCurve diff --git a/mclf/curves/picard_curves.py b/mclf/curves/picard_curves.py index 8e520c2..351ec0f 100644 --- a/mclf/curves/picard_curves.py +++ b/mclf/curves/picard_curves.py @@ -47,7 +47,9 @@ # https://www.gnu.org/licenses/ # *************************************************************************** -from sage.all import ZZ, FunctionField, PolynomialRing +from sage.rings.integer_ring import Z as ZZ +from sage.rings.function_field.constructor import FunctionField +from sage.rings.polynomial.polynomial_ring_constructor import PolynomialRing from mclf.curves.superelliptic_curves import SuperellipticCurve diff --git a/mclf/curves/smooth_projective_curves.py b/mclf/curves/smooth_projective_curves.py index d542235..47db60c 100644 --- a/mclf/curves/smooth_projective_curves.py +++ b/mclf/curves/smooth_projective_curves.py @@ -133,7 +133,13 @@ # https://www.gnu.org/licenses/ # ***************************************************************************** -from sage.all import lcm, SageObject, Infinity, ZZ, PolynomialRing, randint, PowerSeriesRing +from sage.arith.functions import lcm +from sage.misc.prandom import randint +from sage.rings.infinity import Infinity +from sage.rings.integer_ring import ZZ +from sage.rings.polynomial.polynomial_ring_constructor import PolynomialRing +from sage.rings.power_series_ring import PowerSeriesRing +from sage.structure.sage_object import SageObject class SmoothProjectiveCurve(SageObject): @@ -1425,7 +1431,7 @@ def field_of_constant_degree_of_polynomial(G, return_field=False): return d elif K in NumberFields(): from sage.rings.integer_ring import ZZ - from sage.rings.all import GaussValuation + from sage.rings.valuation.gauss_valuation import GaussValuation if return_field: raise NotImplementedError('Computation of field of constants for number fields is not yet implemented.') d = n diff --git a/mclf/curves/superelliptic_curves.py b/mclf/curves/superelliptic_curves.py index 6a48112..17f009d 100644 --- a/mclf/curves/superelliptic_curves.py +++ b/mclf/curves/superelliptic_curves.py @@ -65,7 +65,10 @@ # https://www.gnu.org/licenses/ # *************************************************************************** -from sage.all import ZZ, gcd, FunctionField, PolynomialRing +from sage.rings.integer_ring import Z as ZZ +from sage.arith.misc import GCD as gcd +from sage.rings.function_field.constructor import FunctionField +from sage.rings.polynomial.polynomial_ring_constructor import PolynomialRing from mclf.curves.smooth_projective_curves import SmoothProjectiveCurve diff --git a/mclf/monkey/trac_24533.py b/mclf/monkey/trac_24533.py index 24d4490..3146c7c 100644 --- a/mclf/monkey/trac_24533.py +++ b/mclf/monkey/trac_24533.py @@ -17,7 +17,9 @@ class Monkey(AbstractMonkey): _trac = "https://trac.sagemath.org/ticket/24533" def _test(self): - from sage.all import GF, FunctionField, PolynomialRing + from sage.rings.finite_rings.finite_field_constructor import FiniteField as GF + from sage.rings.function_field.constructor import FunctionField + from sage.rings.polynomial.polynomial_ring_constructor import PolynomialRing k = GF(4) a = k.gen() R = PolynomialRing(k, 'b') diff --git a/mclf/monkey/trac_25294.py b/mclf/monkey/trac_25294.py index 040a7b0..a7c013e 100644 --- a/mclf/monkey/trac_25294.py +++ b/mclf/monkey/trac_25294.py @@ -17,7 +17,9 @@ class Monkey(AbstractMonkey): _trac = "https://trac.sagemath.org/ticket/25294" def _test(self): - from sage.all import FunctionField, QQ, PolynomialRing + from sage.rings.function_field.constructor import FunctionField + from sage.rings.rational_field import Q as QQ + from sage.rings.polynomial.polynomial_ring_constructor import PolynomialRing K = FunctionField(QQ, 'x') x = K.gen() R = PolynomialRing(K, 'y') diff --git a/mclf/monkey/trac_25360.py b/mclf/monkey/trac_25360.py index 7e301ec..e3fbc97 100644 --- a/mclf/monkey/trac_25360.py +++ b/mclf/monkey/trac_25360.py @@ -17,7 +17,9 @@ class Monkey(AbstractMonkey): _trac = "https://trac.sagemath.org/ticket/25360" def _test(self): - from sage.all import GF, PolynomialRing, proof + from sage.rings.finite_rings.finite_field_constructor import FiniteField as GF + from sage.rings.polynomial.polynomial_ring_constructor import PolynomialRing + import sage.structure.proof.all as proof k = GF(4, 'u') u = k.gen() R = PolynomialRing(k, 'v') diff --git a/mclf/monkey/trac_25440.py b/mclf/monkey/trac_25440.py index ce448fb..fe5ede2 100644 --- a/mclf/monkey/trac_25440.py +++ b/mclf/monkey/trac_25440.py @@ -17,7 +17,11 @@ class Monkey(AbstractMonkey): _trac = "https://trac.sagemath.org/ticket/25440" def _test(self): - from sage.all import PolynomialRing, QQ, NumberField, GaussValuation, FunctionField + from sage.rings.polynomial.polynomial_ring_constructor import PolynomialRing + from sage.rings.rational_field import Q as QQ + from sage.rings.number_field.number_field import NumberField + from sage.rings.valuation.gauss_valuation import GaussValuation + from sage.rings.function_field.constructor import FunctionField R = PolynomialRing(QQ, 'x') x = R.gen() K = NumberField(x**6 + 126*x**3 + 126, 'pi') diff --git a/mclf/monkey/trac_25441.py b/mclf/monkey/trac_25441.py index 788b66f..89c51a5 100644 --- a/mclf/monkey/trac_25441.py +++ b/mclf/monkey/trac_25441.py @@ -17,7 +17,10 @@ class Monkey(AbstractMonkey): _trac = "https://trac.sagemath.org/ticket/25441" def _test(self): - from sage.all import QQ, PolynomialRing, GaussValuation, FunctionField + from sage.rings.rational_field import Q as QQ + from sage.rings.polynomial.polynomial_ring_constructor import PolynomialRing + from sage.rings.valuation.gauss_valuation import GaussValuation + from sage.rings.function_field.constructor import FunctionField R = PolynomialRing(QQ, 'x') x = R.gen() v = GaussValuation(R, QQ.valuation(2)) diff --git a/mclf/monkey/trac_26066.py b/mclf/monkey/trac_26066.py index 9141767..0152485 100644 --- a/mclf/monkey/trac_26066.py +++ b/mclf/monkey/trac_26066.py @@ -17,7 +17,9 @@ class Monkey(AbstractMonkey): _trac = "https://trac.sagemath.org/ticket/26066" def _test(self): - from sage.all import QQ, PolynomialRing, GaussValuation + from sage.rings.rational_field import Q as QQ + from sage.rings.polynomial.polynomial_ring_constructor import PolynomialRing + from sage.rings.valuation.gauss_valuation import GaussValuation R = PolynomialRing(QQ, 'x') x = R.gen() v = QQ.valuation(2) diff --git a/mclf/padic_extensions/elements_of_fake_padic_completion.py b/mclf/padic_extensions/elements_of_fake_padic_completion.py index aa53f3d..a417b0b 100644 --- a/mclf/padic_extensions/elements_of_fake_padic_completion.py +++ b/mclf/padic_extensions/elements_of_fake_padic_completion.py @@ -27,7 +27,7 @@ # https://www.gnu.org/licenses/ # *************************************************************************** -from sage.all import SageObject +from sage.structure.sage_object import SageObject class ElementOfFakepAdicCompletion(SageObject): diff --git a/mclf/padic_extensions/fake_padic_completions.py b/mclf/padic_extensions/fake_padic_completions.py index 4be320b..a8d712c 100644 --- a/mclf/padic_extensions/fake_padic_completions.py +++ b/mclf/padic_extensions/fake_padic_completions.py @@ -85,9 +85,24 @@ # **************************************************************************** -from sage.all import SageObject, ZZ, QQ, NumberField, GaussValuation, PolynomialRing, Polynomial, Integer, matrix, IntegerModRing, mod, Infinity, prod, lcm, vector, GF +from sage.structure.sage_object import SageObject +from sage.rings.integer_ring import Z as ZZ +from sage.rings.rational_field import Q as QQ +from sage.rings.number_field.number_field import NumberField +from sage.rings.valuation.gauss_valuation import GaussValuation +from sage.rings.polynomial.polynomial_ring_constructor import PolynomialRing +from sage.rings.polynomial.polynomial_element import Polynomial +from sage.rings.integer import Integer +from sage.matrix.constructor import Matrix as matrix +from sage.rings.finite_rings.integer_mod_ring import IntegerModRing +from sage.rings.infinity import Infinity +from sage.misc.misc_c import prod +from sage.arith.functions import lcm +from sage.modules.free_module_element import free_module_element as vector +from sage.rings.finite_rings.finite_field_constructor import FiniteField as GF from sage.geometry.newton_polygon import NewtonPolygon from sage.rings.valuation.limit_valuation import LimitValuation +from sage.rings.finite_rings.integer_mod import mod class FakepAdicCompletion(SageObject): diff --git a/mclf/padic_extensions/fake_padic_embeddings.py b/mclf/padic_extensions/fake_padic_embeddings.py index 1ac4864..2079921 100644 --- a/mclf/padic_extensions/fake_padic_embeddings.py +++ b/mclf/padic_extensions/fake_padic_embeddings.py @@ -50,7 +50,10 @@ class ``FakepAdicCompletion``. This means that `K` and `L` represented as pairs # https://www.gnu.org/licenses/ # *************************************************************************** -from sage.all import SageObject, PolynomialRing, Infinity, GaussValuation +from sage.structure.sage_object import SageObject +from sage.rings.polynomial.polynomial_ring_constructor import PolynomialRing +from sage.rings.infinity import Infinity +from sage.rings.valuation.gauss_valuation import GaussValuation from sage.rings.valuation.limit_valuation import MacLaneLimitValuation, LimitValuation diff --git a/mclf/padic_extensions/fake_padic_extensions.py b/mclf/padic_extensions/fake_padic_extensions.py index 0a0d97e..1bdeabd 100644 --- a/mclf/padic_extensions/fake_padic_extensions.py +++ b/mclf/padic_extensions/fake_padic_extensions.py @@ -47,7 +47,8 @@ # https://www.gnu.org/licenses/ # **************************************************************************** -from sage.all import SageObject, ZZ +from sage.structure.sage_object import SageObject +from sage.rings.integer_ring import Z as ZZ class FakepAdicExtension(SageObject): diff --git a/mclf/padic_extensions/slope_factors.py b/mclf/padic_extensions/slope_factors.py index 307f826..314b4e1 100644 --- a/mclf/padic_extensions/slope_factors.py +++ b/mclf/padic_extensions/slope_factors.py @@ -50,7 +50,8 @@ # https://www.gnu.org/licenses/ # *************************************************************************** -from sage.all import ZZ, GaussValuation +from sage.rings.integer_ring import Z as ZZ +from sage.rings.valuation.gauss_valuation import GaussValuation from sage.geometry.newton_polygon import NewtonPolygon @@ -86,7 +87,7 @@ def slope_factors(f, vK, precision, reduce_function, slope_bound=0): sage: from mclf.padic_extensions.slope_factors import slope_factors sage: from mclf.padic_extensions.fake_padic_completions import FakepAdicCompletion - sage: from sage.all import GaussValuation + sage: from sage.rings.valuation.gauss_valuation import GaussValuation sage: R. = QQ[] sage: v2 = QQ.valuation(2) sage: Q2 = FakepAdicCompletion(QQ, v2) diff --git a/mclf/padic_extensions/weak_padic_galois_extensions.py b/mclf/padic_extensions/weak_padic_galois_extensions.py index c26b1c3..ab647eb 100644 --- a/mclf/padic_extensions/weak_padic_galois_extensions.py +++ b/mclf/padic_extensions/weak_padic_galois_extensions.py @@ -98,7 +98,11 @@ # **************************************************************************** -from sage.all import PolynomialRing, Polynomial, ZZ, QQ, prod +from sage.rings.polynomial.polynomial_ring_constructor import PolynomialRing +from sage.rings.polynomial.polynomial_element import Polynomial +from sage.rings.integer_ring import Z as ZZ +from sage.rings.rational_field import Q as QQ +from sage.misc.misc_c import prod from sage.geometry.newton_polygon import NewtonPolygon from mclf.padic_extensions.fake_padic_completions import FakepAdicCompletion from mclf.padic_extensions.fake_padic_extensions import FakepAdicExtension diff --git a/mclf/semistable_reduction/reduction_trees.py b/mclf/semistable_reduction/reduction_trees.py index 84dbd08..5f03f5a 100644 --- a/mclf/semistable_reduction/reduction_trees.py +++ b/mclf/semistable_reduction/reduction_trees.py @@ -134,7 +134,11 @@ # https://www.gnu.org/licenses/ # ***************************************************************************** -from sage.all import ZZ, QQ, FunctionField, SageObject, Infinity +from sage.rings.integer_ring import Z as ZZ +from sage.rings.rational_field import Q as QQ +from sage.rings.function_field.constructor import FunctionField +from sage.structure.sage_object import SageObject +from sage.rings.infinity import Infinity from mclf.berkovich.berkovich_line import BerkovichLine from mclf.berkovich.type_V_points import TypeVPointOnBerkovichLine from mclf.berkovich.affinoid_domain import ElementaryAffinoidOnBerkovichLine @@ -543,7 +547,7 @@ def splitting_field(self, check=False): the closed unit disk. """ - from sage.all import PolynomialRing + from sage.rings.polynomial.polynomial_ring_constructor import PolynomialRing if not hasattr(self, "_splitting_field"): vK = self.reduction_tree().base_valuation() diff --git a/mclf/semistable_reduction/semistable_models.py b/mclf/semistable_reduction/semistable_models.py index 3cdf3b3..040fd81 100644 --- a/mclf/semistable_reduction/semistable_models.py +++ b/mclf/semistable_reduction/semistable_models.py @@ -139,7 +139,7 @@ # https://www.gnu.org/licenses/ # *************************************************************************** -from sage.all import SageObject +from sage.structure.sage_object import SageObject from mclf.curves.superelliptic_curves import SuperellipticCurve diff --git a/mclf/semistable_reduction/superp_models.py b/mclf/semistable_reduction/superp_models.py index 210033c..db8428e 100644 --- a/mclf/semistable_reduction/superp_models.py +++ b/mclf/semistable_reduction/superp_models.py @@ -135,7 +135,10 @@ # https://www.gnu.org/licenses/ # ***************************************************************************** -from sage.all import PolynomialRing, FunctionField, floor, GaussValuation +from sage.rings.polynomial.polynomial_ring_constructor import PolynomialRing +from sage.rings.function_field.constructor import FunctionField +from sage.functions.other import floor +from sage.rings.valuation.gauss_valuation import GaussValuation from mclf.berkovich.berkovich_line import BerkovichLine from mclf.berkovich.berkovich_trees import BerkovichTree # from mclf.berkovich.affinoid_domain import ClosedUnitDisk diff --git a/setup.py b/setup.py index 3f0fec9..d7adfab 100644 --- a/setup.py +++ b/setup.py @@ -24,5 +24,16 @@ "Programming Language :: Python :: 2", "Programming Language :: Python :: 3", "Topic :: Scientific/Engineering :: Mathematics", - "Operating System :: OS Independent") + "Operating System :: OS Independent"), + extras_require={ + 'passagemath': [ + 'passagemath-flint', + 'passagemath-graphs', + 'passagemath-modules', + 'passagemath-pari', + 'passagemath-polyhedra', + 'passagemath-repl', + 'passagemath-singular', + ], + }, ) diff --git a/tox.ini b/tox.ini new file mode 100644 index 0000000..eca0543 --- /dev/null +++ b/tox.ini @@ -0,0 +1,22 @@ +[tox] +envlist = passagemath + +[testenv:.pkg] +passenv = + CPATH + LIBRARY_PATH + +[testenv:passagemath] +usedevelop = True +extras = passagemath + +passenv = + CPATH + LIBRARY_PATH + +setenv = + # For access to _doctest_environment.py + PYTHONPATH=. + +commands = + sage -tp --force-lib --environment=_doctest_environment mclf