You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
We modularize sagelib into separate distributions (pip-installable packages), so that these can be built and run with a much smaller set of dependencies. The packages are made available individually on PyPI in source and wheel form. The modularization is done without changing the overall structure of the source tree by means of PEP 420 implicit namespace packages.
Mega-PR #35095 (not for merging; changes are being cherry-picked from here for integration in Sage) adds the new distributions. Instead of defining a distribution package for every possible community or subfield of mathematics that Sage supports, the modularization project introduces three types of distribution packages:
Distributions named after a basic mathematical structure: The packages may also cover a wide range of generalizations/applications of the structure after which they are named. Users who work in a specialized research area will, of course, recognize what structures they need. The down-to-earth naming also creates discoverability by a broader audience. Not many more distribution packages than these 7 are needed:
sagemath-combinat: provides "everything combinatorial", except for graphs.
sagemath-graphs: also provides posets, combinatorial designs, abstract simplicial complexes, quivers, etc.
sagemath-modules: also has matrices, tensors, homology, coding theory, etc.
sagemath-polyhedra: also provides fans, hyperplane arrangements, polyhedral complexes, linear and mixed-integer optimization, lattice point sets, and toric varieties
Distributions named after a third-party non-Python dependency: This makes technical sense because the dependencies will be localized to this distribution package, but it also helps give attribution and visibility to these libraries and projects that Sage depends on.
Distributions named after a technical functionality:
sagemath-objects: Sage extends Python's object system by dynamic mix-in classes that are driven by categories and axioms. It is loosely modeled on concepts of category theory and inspired by Scratchpad/Axiom/FriCAS, Magma, and MuPAD. This distribution package makes Sage objects, the element/parent framework, basic categories and functors, the coercion system and the related metaclasses available.
sagemath-categories: This distribution package contains the full set of categories defined by Sage, as well as basic mathematical objects such as integers and rational numbers, a basic implementation of polynomials, and affine spaces. None of this brings in additional dependencies.
sagemath-plot: Plotting facilities, depending on matplotlib.
sagemath-repl: The top-level interactive environment with the preparser that defines the surface language of Sage. This distribution also includes the doctesting facilities, as the doctests are written in the surface language.
sagemath-standard: Everything as provided by a standard installation of the Sage distribution. This is reduced to an empty meta-package.
In particular, create a package sagemath-objects that makes Sage objects, the element/parent framework, categories, the coercion system and the related metaclasses available. This package would, for example, not provide or know about integers, polynomials, or matrices (thus avoiding all the dependencies on the various libraries implementing these). Ideally it would only have a build dependency on Cython and no runtime dependencies.
(Doctesting sagemath-objects would still need more of Sage, but some it could also be done by mocking instead of with the real classes.)
a) These facilities could see a wider use in the mathematical Python community, and in this way we could hope to benefit from a larger developer base. For example, we would hope that sagemath-objects could be ported for use with PyPy instead of CPython.
b) Building and deploying a user package would be easier if it could depend on a small package such as sagemath-objects only instead of the whole multigigabyteness of Sage.
Remove the mechanism of OptionalExtensions from sagelib.
Currently, a user would install, for example, the optional package tdlib and then rebuild sagelib so that the OptionalExtensionsage.graphs.graph_decompositions.tdlib is built and installed.
With this ticket, the user would instead install a new optional package sagemath-tdlib (which has tdlib as a dependency); this installs the Extensionsage.graphs.graph_decompositions.tdlib (as a namespace package).
It is not a prerequisite to fight against all circular imports. In particular, a parent class and its corresponding element class would certainly not be separated into separate distribution packages.
Initially noted constraints and challenges: (2020)
The category framework can not really be separated from the Parent/Element/CategoryObject (e.g. coercion is involved in comparisons and binary operations).
Solution: Therefore they are in the same distribution sagemath-objects.
The category framework cannot live without the integers (e.g. the output of .cardinality() expects an integer).
Possible future solution: The coercion system already has the notion of a global coercion model - which is determined at runtime, not compile time (sage.structure.element.get_coercion_model). When methods in sagemath-objects need to create an integer, they should obtain the appropriate class of integers in the same way. An existing function provides this interface already (but has a static implementation):
We modularize sagelib into separate distributions (pip-installable packages), so that these can be built and run with a much smaller set of dependencies. The packages are made available individually on PyPI in source and wheel form. The modularization is done without changing the overall structure of the source tree by means of PEP 420 implicit namespace packages.
I. The goals – II. The tools – III. The hooks – IV. The rules – V. The blocs
Mega-PR #35095 (not for merging; changes are being cherry-picked from here for integration in Sage) adds the new distributions. Instead of defining a distribution package for every possible community or subfield of mathematics that Sage supports, the modularization project introduces three types of distribution packages:
Distributions named after a basic mathematical structure: The packages may also cover a wide range of generalizations/applications of the structure after which they are named. Users who work in a specialized research area will, of course, recognize what structures they need. The down-to-earth naming also creates discoverability by a broader audience. Not many more distribution packages than these 7 are needed:
Distributions named after a third-party non-Python dependency: This makes technical sense because the dependencies will be localized to this distribution package, but it also helps give attribution and visibility to these libraries and projects that Sage depends on.
Distributions named after a technical functionality:
Older posts and presentations:
Initial steps: (2020)
In particular, create a package sagemath-objects that makes Sage objects, the element/parent framework, categories, the coercion system and the related metaclasses available. This package would, for example, not provide or know about integers, polynomials, or matrices (thus avoiding all the dependencies on the various libraries implementing these). Ideally it would only have a build dependency on Cython and no runtime dependencies.
(Doctesting sagemath-objects would still need more of Sage, but some it could also be done by mocking instead of with the real classes.)
a) These facilities could see a wider use in the mathematical Python community, and in this way we could hope to benefit from a larger developer base. For example, we would hope that sagemath-objects could be ported for use with PyPy instead of CPython.
b) Building and deploying a user package would be easier if it could depend on a small package such as sagemath-objects only instead of the whole multigigabyteness of Sage.
This has been completed in Sage 9.6 (Modularization of sagelib: Break out separate packages sagemath-objects, sagemath-categories #29865).
Remove the mechanism of
OptionalExtensions fromsagelib.Currently, a user would install, for example, the optional package
tdliband then rebuildsagelibso that theOptionalExtensionsage.graphs.graph_decompositions.tdlibis built and installed.With this ticket, the user would instead install a new optional package sagemath-tdlib (which has
tdlibas a dependency); this installs theExtensionsage.graphs.graph_decompositions.tdlib(as a namespace package).This has been completed in Sage 9.2 (Replace use of module_list and OptionalExtension by extending find_python_sources #29701).
Not within the scope of this ticket:
We will not change the overall structure of the source tree (
SAGE_ROOT/src/sage). We will achieve this by using the mechanism of native namespace packages introduced in Python 3.3 (PEP 420, see Modify find_python_sources to support modularization of sagelib by native namespace packages (PEP 420) #28925).It is not a prerequisite to fight against all circular imports. In particular, a parent class and its corresponding element class would certainly not be separated into separate distribution packages.
Initially noted constraints and challenges: (2020)
Inconsistent handling of symlinks by
pip/setuptools. We cannot simply create a distribution of a subset of the files insrcby creating a flock of symlinks (see Install sage-env-config as part of sage_conf #29850) and expect everything to work; notably, pip fails because of longstanding issues with installs from local directories (see discussion in Install sage_conf using flit instead of setuptools #29854).Solution (implemented in Sage 9.2, Install all Python packages via pip wheel (or setup.py bdist_wheel), store wheels in $SAGE_LOCAL/var/lib/sage/wheels #29500): Do not use pip for installations from local source directories. Use
setup.py bdist_wheel, followed bypip installof the wheel. pip 21.1's--use-feature=in-tree-buildmakes this workaround unnecessary (Use pip --use-feature=in-tree-build, replace use of sdh_setup_bdist_wheel by sdh_pip_install #32046, Sage 9.5).The category framework can not really be separated from the
Parent/Element/CategoryObject(e.g. coercion is involved in comparisons and binary operations).Solution: Therefore they are in the same distribution sagemath-objects.
The category framework cannot live without the integers (e.g. the output of
.cardinality()expects an integer).Near term solution: Modularization of sagelib: Break out a separate package sagemath-polyhedra #32432 makes sagemath-categories larger, to include integers and some other basic rings.
Possible future solution: The coercion system already has the notion of a global coercion model - which is determined at runtime, not compile time (
sage.structure.element.get_coercion_model). When methods insagemath-objectsneed to create an integer, they should obtain the appropriate class of integers in the same way. An existing function provides this interface already (but has a static implementation):sage.structure.coerce.py_scalar_parent, py_scalar_to_element: Make dynamic #29875 will make this implementation dynamic.
Imports in
sage.categories:Such imports can be removed using the techniques described in section Module-level runtime dependencies in the Sage developer's guide.
Tickets for Sage 9.2: (2020)
see also Modularization changes in Sage 9.2 (release tour)
Extensionoptions fromsrc/module_list.pytodistutils:directives in the individual files: Move Extension options from src/module_list.py to "distutils:" directives in the individual files (part 1 - some packages without OptionalExtensions) #29706, Move Extension options from src/module_list.py to "distutils:" directives in the individual files (part 2 - OptionalExtensions) #29720, coxeter3: Add spkg-configure.m4, use coxeter/ prefix for includes, move OptionalExtension options to .pyx file directives #29721, Move Extension options from src/module_list.py to "distutils:" directives in the individual files (part 3: Get rid of uname_specific) #29785, Move Extension options from src/module_list.py to "distutils:" directives in the individual files (part 4: sage.rings) #29786, Move Extension options from src/module_list.py to "distutils:" directives in the individual files (part 5: sage.graphs) #29790, Move Extension options from src/module_list.py to "distutils:" directives in the individual files (part 6: last) #29791setup.py sdist, add spkg-src and tox.ini #29950 (supersedes: Fix sagelib sdist (src/setup.py sdist) #21516 / make sagelib use setuptools instead of distutils #13190)sage.misc.package.PackageNotFoundError(2); lazy_import: Add keyword argument 'feature' #30616Tickets for Sage 9.3: (2021)
see also Modularization changes in Sage 9.3 (release tour)
setup_requires) onpkgconfig,numpy#30580Tickets for Sage 9.4: (2021)
see also Modularization changes in Sage 9.4 (release tour)
Tickets for Sage 9.5: (2022)
see also Modularization changes in Sage 9.5 (release tour)
sage.libs.primecountsrc/sage/__init__.py: Remove some monkey patching in src/sage/__init__.py #31420 / Remove monkey patching of inspect.isfunction in sage.__init__ #32479 / Move load_ipython_extension from sage.__init__ to sage.repl.__init__ #32489__init__.pyin other packages: Remove useless 'file is not empty' comments from __init__.py files #32506 / Remove useless 'from . import all' from some __init__.py files #32507 / Eliminate use of __init__.py files for supplying package docstrings #32508 / Clear out __init__.py in sage.rings.polynomial #32509is_Classfunctions, create abstract base classes to enable modularization #32414:sage.rings.abc: sage.rings.abc #32566 / Deprecate is_RealField, is_ComplexField, is_RealDoubleField, is_ComplexDoubleField #32610 / sage.rings.abc.{Real,Complex}{Interval,Ball}Field; deprecate is_{Real,Complex}IntervalField #32612 / Add sage.rings.abc.{AlgebraicField,...,NumberField_quadratic}, deprecate is_AlgebraicField, ..., is_CyclotomicField, is_QuadraticField #32660 / sage.rings.abc: Add pAdicRing, pAdicField; deprecate is_pAdic... #32750.allimports: sage.geometry: Remove .all imports #32534 / Remove some .all imports #32591 / Replace imports of QQ, ZZ, GF, Integer from sage.rings.all by more specific imports #32620 / Remove .all import of infinity #32734 / Remove more .all imports #32733SRand symbolic functions: Remove unnecessary uses of SR and symbolic functions in sage.algebras, sage.combinat #32411 / Remove unnecessary uses of SR and symbolic functions in sage.categories, sage.coding #32413 / Remove unnecessary uses of symbolic functions in sage.tensor.modules #32415 / Remove unnecessary uses of SR and symbolic functions in sage.geometry (except .hyperbolic_space) #32416cypari2andflintfrom some modules: sage.rings.integer, rational: Remove compile-time dependency on cypari2 and flint #30022 / sage.rings.fast_arith: Remove compile-time dependency on cypari2 #32441 / sage.matrix.args: Remove compile-time dependency on cypari2 #32455 / Mostly fix slow down by #30022 #32775 / sage.rings.{real,complex}_double: Remove compile time dependency on cypari2 #32701sage.geometry.polyhedron: Mark doctests# optional - sage.rings.number_fieldetc.: sage.geometry.polyhedron: Mark doctests # optional - sage.rings.number_field #32652 / sage.geometry.polyhedron: Mark doctests # optional - sage.combinat #32653 / sage.geometry: More # optional for test with examples that need sage.combinat, sage.rings.number_field, sage.plot #32732sage.libs.primecount/sage.interfaces.primecountas a separate Python library: update and promote spkg primecount #25009 / split out a separate Python package primecountpy #32894:Tickets for Sage 9.6: (2022)
see also Modularization changes in Sage 9.6 (release tour)
sage.*.all: Remove imports from sage.misc.all #32989 / Remove imports from sage.libs.all #32999 / Remove some imports from sage.rings.all #33000 / Remove imports from sage.interfaces.all #33007 / Replace imports from sage.*.all by more specific imports in combinat #33146 / Replace imports from sage.graphs.all by more specific imports #33199Executable.absolute_filename: sage.graphs: Use Executable.absolute_filename() #33465, sage.features.lrs: Make it a JoinFeature of Lrs, LrsNash; use Executable.absolute_filename #33466, sage.geometry.polyhedron.backend_cdd: Go through sage.features for _cdd_executable #32645, sage.geometry: Use PalpExecutable(...).absolute_filename() #33467Tickets for Sage 9.7: (2022)
see also Modularization changes in Sage 9.7 (release tour)
SAGE_TMP: sage.misc.temporary_file: Remove use of SAGE_TMP #33797 / Replace SAGE_TMP in doctests of sage.misc.{persist,ostools}, sage.doctest, sage.repl #33799 (supersedes sage.misc.temporary_file: Move SAGE_TMP implementation here #32986)python3spkg-configure.m4.allimports: Remove imports from sage.all and sage.rings.all in sage.rings #34189 / Remove imports from sage.rings.all in sage.schemes #34190 / Remove imports from sage.rings.all in sage.modular #34191 / Remove imports from sage.rings.all in sage.calculus, functions, symbolic #34192 / sage.manifolds, sage.tensor: Remove imports from sage.arith.all, sage.rings.all #34428Tickets for Sage 9.8: (2023)
see also Modularization changes in Sage 9.8 (release tour)
sage.interfacesis_...Elementfunctions: fix coercion from libgap's finite fields, use libgap in sage/rings/finite_rings #34770/deprecate is_GapElement #34823/Deprecate sage.interfaces is_...Element functions #34804Tickets for Sage 10.0 (2023)
.allimports: sage.{algebras,combinat,matroids}: Replace imports from sage.*.all for namespace packages #34946 / sage.{rings,modules,geometry}: Replace imports from sage.*.all for namespace packages #34947 / sage.{coding,groups}: Replace imports from sage.*.all for namespace packages #34948 / sage.{categories,matrix,structure}: Replace imports from sage.*.all for namespace packages #34949 / sage.schemes: Replace imports from sage.*.all for namespace packages #34951 / sage.graphs: Replace imports from sage.*.all for namespace packages #34952 / sage.{topology,homology}: Replace imports from sage.*.all for namespace packages #34953 / sage.{functions,interfaces,symbolic}: Replace imports from sage.*.all for namespace packages #34954 / sage.{arith,crypto,databases,dynamics,lfunctions,quadratic_forms}: Replace imports from sage.*.all for namespace packages #34955 / sage.{misc,monoids,sets}: Replace imports from sage.*.all for namespace packages #34956 / sage.{finance,interacts,libs,numerical,stats,tests}: Replace imports from sage.*.all for namespace packages #34957 / Meta-ticket: Replace imports from sage.*.all for namespace packages #34201 / Replace more.allimports #35372sage.geometry.integral_points: Use generic impl if nomatrix_integer_dense#35135# optionaldoctest tags #34998BooleanPolynomialRing#35240is_Algebra,is_CommutativeAlgebra#35253sage.features: Addsage.libs.singular, features for standard Python packages #35237sage.matrix.operation_table: Modularization and code style fixes #35153 /sage.rings.polynomial.laurent_polynomial_ring_base: Split out from.laurent_polynomial_ring#35229 /sage.rings.function_field: Modularization fixes #35230 /sage.quadratic_forms: Remove module-level imports fromnumber_fields,sage.symbolic,sage.functions#35243 /sage.topology: Move imports fromsage.graphs,sage.homologyinto methods #35263 /sage.categories: Modularization fixes for imports #35279 / Modularization fixes for imports of number fields #35283 /sage.quadratic_forms: Modularization fixes for imports #35305 /sage.groups.matrix_gps: Modularization fixes for imports #35306 /sage.rings.finite_rings.residue_field: Modularization fixes #35389# optional:sage.{geometry,rings}: More# optionaltags in doctests #35136 /sage.graphs: Add# optionaldoctest tags for modularization #35266 /sage.manifolds,sage.tensor: Add# optionaldoctest tags for modularization #35267 /sage.schemes: Reformat doctests, add# optionalannotations #35314Tickets for Sage 10.1 (2023)
sage.rings: Reformat doctests, add# optionalannotations #35457sage.rings.factorint: Modularization fixes #35502sage.{topology,homology}: Modularization fixes #35581sage.geometry: Add some# optional, reformat doctests #35586sage.matrix.misc: Split by library dependency #35758# optional - sage.schemes sage.modular sage.libs.flintetc. #35728# optionalannotations #35620sage.misc.misc,sage.combinat: Modularization fixes #35564sage.graphs: More modularization #35718sage.matroids: Modularization fixes #35719# optional#35729sage.combinat: Split some Cython modules (modularization fixes) #35741# optional/# longannotation dataflow checker #35401sage.calculus: Modularization fixes, doctest cosmetics,# needs#35717sage -fixdoctests: Handle directory names, callsage -tonly once #36024sage.graphs: Update# needs, use block-scoped tags #36026sage.groups.perm_gps.partn_ref*: Modularization fixes #35881sage.matroids: Update# needs, modularization fixes for imports #35919sage.combinat.designs: Modularization fixes, update# needs#35943sage.combinat.cluster_algebra_quiver: Modularization fixes, update# needs#35951sage.rings.function_field: Update# needs#35957# optional - sage....doctest tags, extendsage -tandsage -fixdoctestsfor modularization tasks #35749sage.{modular,schemes}: Modularization fixes for imports; updatesage -fiximports, add relint pattern #35884sage.rings.{padics,valuation}: Modularization fixes,# needs#36052sage.geometry: Update# needs, use block-scoped tags #36033sage.graphs: fix doctest warnings due to modularization #36077sage.typeset: Update# needs#36037sage.rings.polynomial: Modularization fixes,# needs#36045sage.rings.number_field: Modularization fixes, doctest cosmetics,# needs#36044sage.plot: Add/update# needs#36038sage.rings.finite_rings: Modularization fixes,# needs#36056Tickets for Sage 10.2 (2023)
# needsin posets folder #36114sage.crypto: Update# needs, modularization fixes #36106sage.geometry.polyhedron: fix doctest error due to modularization #36089sage.{cpython,data_structures,databases,ext,parallel,structure}: Update# needs#36067sage.arith: Update# needs#36057sage.categories: Update# needs#35945sage.functions: Decouple fromsage.symbolic.expressionandmpmath, update# needs#35716sage.rings: Update# needs#36152sage.schemes: Update# needs#36102sage.groups: Modularization fixes,# needs, doctest cosmetics #36168sage.rings: Remove code deprecated in #23204, #24483, #24371, #24511, #25848, #26105, #28481, #29010, #29412, #30332, #30372, #31345, #32375, #32606, #32610, #32612, #32641, #32660, #32750, #32869, #33602 #36307sage --fixdoctests --update-known-test-failures; silence modularized distributions in CI #36264sage.sets: Update# needs#36272make sagemath_categories-check,make pypi-wheels-check#36452sage.symbolics: Remove code deprecated in #18036, #29738, #32386, #32638, #32665, #34215 #36304pkgs/sagemath-{bliss,sirocco,tdlib}: Fix sdists #36520pkgs/sagemath-standard: Fix sdist #36532sage.{dynamics,schemes}: Modularization fixes, docstring cosmetics, update# needs#36271sage.rings.padics: Update# needs#36259pkgs/sagemath-{objects,categories,environment,repl}: Move metadata fromsetup.cfgtopyproject.toml#36563sage.numerical: Update# needs#36567sage.manifolds,sage.tensor: Update# needs#36568sage.matrix,sage.modules: Update# needs#36569sage.{matrix,matroids,modules,stats}#36594sage.{coding,combinat,graphs}#36595sage.{geometry,groups,numerical,plot}#36596sage.libs.ntl#36605sage.libsexcept.ntl#36612sage.modular: Update# needs, doctest cosmetics #36618sage.combinat: Update# needs#36619Tickets for Sage 10.3 (2023–2024)
sage.rings: Modularization fixes #36917src/sage/{categories,coding,plot,quadratic_forms}/: Fix various doctest warnings #36905src/sage/game_theory/: fix doctest warnings due to modularization #36904sage.plot: Update# needs, doctest cosmetics; fixsig_on_countdoctest dataflow warnings #36950build/pkgs/gnumake_tokenpool: Update to fixAlarmInterruptproblems #36948sage.groups,sage.rings.number_field: Modularization fixes,# needs#36865build/bin/sage-spkg: Add support for installing script packages #36747sage_setup: distribution#36859pkgs/sagemath-{bliss,coxeter3,...}: Move metadata fromsetup.cfgtopyproject.toml#36564sage.libs.pari,sage.rings.real_mpfr: Modularization fixes #36645sage.interfaces: Update# needs#36656sage.{algebras,arith,categories,cpython,data_structures,misc,modular,rings,sat,symbolic}#36666src/doc: Update# needs#36679build/bin/sage-spkg: Add options for checking, cleaning separately from build/install #36738sage -fixdistributions#36135sage.algebras: Update# needs, modularization fixes, doctest cosmetics #36642pkgs/sage-{docbuild,setup,sws2rst}: Migrate fromsetup.cfgtopyproject.toml#36562sage.algebras: Update# needs, modularization fixes, doctest cosmetics #36642sage.combinat.species: Update# needs#36643sage.combinat.words: Update# needs#36644sage.tests: Update# needs#36657sage.sat: Update# needs#36658Tickets for Sage 10.4 (2024)
See also: Modularization changes in Sage 10.4 (release notes)
make SPKG-checkfor normal and script packages #37022 / Usepypa/buildinstead ofpip wheel#35618sage.*.allfor modularization, replace relative by absolute imports #36676 /pkgs/sagemath-standard: Move metadata fromsetup.cfgtopyproject.toml#36951 / Add# sage_setup: distributiondirectives to all files, remove remaining# coding: utf-8#36964 / Revert PR with disputed dependencies #37796 / Add# sage_setup: distributiondirectives for the files of existing distributions sagemath-{categories,...,tdlib} #38088 /all*.pyfiles: Use 'del lazy_import', 'del install_doc' #38086pyproject.toml: Add 'external' section according to draft PEP 725 #37486sage.rings: Modularization fixes for singular #38060sage.{calculus,functions,numerical,symbolic}: Docstring/doctest cosmetics,# needs#37715 /sage.categories: Update# needs, use block tags #38071 /sage.coding: Update# needs#38104 / src/sage/categories/hecke_modules.py: Fix# needs#38146sage.rings: Modularization fixes (imports) #38061 /sage.geometry: Modularization fixes (imports),# needs#38066 /sage.combinat: Modularization fixes (imports), update# needs#38074 /sage.monoids: Modularization fixes,# needs#38143 /sage.rings: Modularization fixes (imports),# needs#38210 /sage.algebras...sage.topology: Doctest cosmetics,# needs, import fixes #38193 /sage.categories: Update# needs, modularization fixes (imports) #38170 /sage.plot,sage.repl: Modularization fixes (imports),# needs#38181sage.interfaces: Morelazy_import#38180 /sage.combinat,sage.games: Use morelazy_importin all.py files #38096 /src/sage/algebras/steenrod/all.py: Use lazy_import, remove deprecated global import #38095sage.modular: Deprecateis_...functions #38035 /sage.combinat.finite_state_machine: Deprecateis_...functions #38032 / Deprecateis_Category,is_Endset,is_Homset,is_Parent,is_RingHomset,is_SimplicialComplexHomset#37922 / Deprecateis_FGP_Module,is_FilteredVectorSpace,is_FreeQuadraticModule,is_FreeModule,is_FreeModuleHomspace,is_MatrixSpace,is_Module,is_VectorSpace,is_VectorSpaceHomspace#37924 /sage.modular.hecke: Deprecateis_Hecke...functions #37895 / Deprecateis_FreeAlgebra,is_QuaternionAlgebra,is_SymmetricFunctionAlgebra#37896 / Deprecateis_AbelianGroup,is_DualAbelianGroup,is_MatrixGroup#37898 / Deprecateis_AlgebraicNumber,is_AlgebraicReal,is_ComplexDoubleElement,is_ComplexIntervalFieldElement,is_ComplexNumber,is_FractionField,is_FractionFieldElement,is_Integer,is_IntegerMod,is_IntegerRing,is_Rational,is_RationalField,is_RealDoubleElement,is_RealIntervalField,is_RealIntervalFieldElement,is_RealNumber#38128 / Deprecateis_FreeAlgebraQuotientElement, ... #38184sage.libs.pynac: Remove, deprecated in #32386 (2021) #37873 / Fix sage.symbolic feature after libs/pynac removal #38081sage.calculus.expr: Split out fromsage.calculus.all#37993sage.plot.animate: Use FFmpeg.absolute_filename;sage.features: Remove deprecated methods #37312Tickets for Sage 10.5 (2024)
See also: Modularization changes in Sage 10.5
sage.schemes: Modularization fixes (imports) #38142,sage.knots: Modularization fixes (imports),# needs#38118is_Ideal,is_LaurentSeries,is_MPolynomialIdeal,is_MPolynomialRing,is_MPowerSeries,is_PolynomialQuotientRing,is_PolynomialRing,is_PolynomialSequence,is_PowerSeries,is_QuotientRing#38266,is_NumberFieldElement: Fix deprecation message #38286, Deprecate global imports:GroupExp_Class,GroupExpElement,GroupSemidirectProductElement#38238, Deprecateis_Infinite#38278, Deprecateis_SymmetricFunction#38279, Deprecateis_StringMonoidElement, ... #38280, Deprecateis_Ring#38288, Deprecateis_LaurentSeriesRing,is_MPowerSeriesRing,is_PowerSeriesRing#38290, Deprecateis_SchemeMorphism,is_SchemeTopologicalPoint#38296# needs:sage.geometry.hyperbolic_space: Add# needs#38236sage.features.topcom#37858,sage.features.sat#38239sage_eval#33802Tickets for Sage 10.x (2024)
sage.libs.giac#38715, src/sage/features/giac.py: add new feature for the giac program #38672, Support for --disable-giac #38668, downgrade giac to optional #38712pkgs/sage-conf/sage_conf.py[.in]intosrc/, mark it (and alsosrc/bin/sage-env-config[.in])# sage_setup: distribution = sage-conf.Wishlist tickets, loose ends
Related:
CC: @videlec @orlitzky @kiwifb @isuruf @tscrim @kliem @jhpalmieri @tobiasdiez @defeo @thierry-FreeBSD @anneschilling
Component: refactoring
Keywords: sd109, sd110, sd111
Issue created by migration from https://trac.sagemath.org/ticket/29705