Skip to content

Commit 7b97cfd

Browse files
author
Release Manager
committed
gh-35716: `sage.functions`: Decouple from `sage.symbolic.expression` and `mpmath`, update `# needs` <!-- Please provide a concise, informative and self-explanatory title. --> <!-- Don't put issue numbers in the title. Put it in the Description below. --> <!-- For example, instead of "Fixes #12345", use "Add a new method to multiply two integers" --> ### 📚 Description `sage.functions` advertises itself as providing symbolic functions, but it also provides the mechanism that dispatches `sin(1.0)` to field methods such as `RealNumber.sin`, `RealBall.sin` etc. Here we make the modules from `sage.functions` at least *importable* when the symbolic subsystem (pynac) is not available. (Evaluating the functions still goes through the symbolic subsystem as of this PR.) This is achieved by using `lazy_import` and by moving the symbol table from `sage.symbolic.expression` (containing pynac) to a new pure Python module `sage.symbolic.symbols`. We also use `lazy_import` for imports from `mpmath` and mutual imports from other modules in `sage.functions`. A `lazy_import` of `RR` added here reveals a weakness of `sage.misc.dev_tools.find_objects_from_name` regarding `lazy_import`s (because `RR` happens to be used in an example for this function.) We fix it here. <!-- Describe your changes here in detail. --> <!-- Why is this change required? What problem does it solve? --> <!-- If this PR resolves an open issue, please link to it here. For example "Fixes #12345". --> - Part of: #29705 - Cherry-picked from: #35095 <!-- If your change requires a documentation PR, please link it appropriately. --> ### 📝 Checklist <!-- Put an `x` in all the boxes that apply. It should be `[x]` not `[x ]`. --> - [x] The title is concise, informative, and self-explanatory. - [x] The description explains in detail what this PR is about. - [x] I have linked a relevant issue or discussion. - [ ] I have created tests covering the changes. - [ ] I have updated the documentation accordingly. ### ⌛ Dependencies <!-- List all open PRs that this PR logically depends on - #12345: short description why this is a dependency - #34567: ... --> <!-- If you're unsure about any of these, don't hesitate to ask. We're here to help! --> URL: #35716 Reported by: Matthias Köppe Reviewer(s): Kwankyu Lee, Matthias Köppe
2 parents 055a3ea + da930eb commit 7b97cfd

38 files changed

+3939
-3383
lines changed

src/sage/calculus/calculus.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -429,7 +429,7 @@
429429
from sage.misc.parser import Parser, LookupNameMaker
430430
from sage.structure.element import Expression
431431
from sage.symbolic.ring import var, SR
432-
from sage.symbolic.expression import symbol_table
432+
from sage.symbolic.symbols import symbol_table
433433
from sage.symbolic.function import Function
434434
from sage.symbolic.function_factory import function_factory
435435
from sage.symbolic.integration.integral import (indefinite_integral,

src/sage/functions/airy.py

Lines changed: 112 additions & 104 deletions
Large diffs are not rendered by default.

0 commit comments

Comments
 (0)