Skip to content

Commit

Permalink
sagemathgh-35716: sage.functions: Decouple from `sage.symbolic.expr…
Browse files Browse the repository at this point in the history
…ession` 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 sagemath#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 sagemath#12345". -->
- Part of: sagemath#29705
- Cherry-picked from: sagemath#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
- sagemath#12345: short description why this is a dependency
- sagemath#34567: ...
-->

<!-- If you're unsure about any of these, don't hesitate to ask. We're
here to help! -->
    
URL: sagemath#35716
Reported by: Matthias Köppe
Reviewer(s): Kwankyu Lee, Matthias Köppe
  • Loading branch information
Release Manager committed Aug 23, 2023
2 parents 103e862 + da930eb commit afe8854
Show file tree
Hide file tree
Showing 38 changed files with 3,939 additions and 3,383 deletions.
2 changes: 1 addition & 1 deletion src/sage/calculus/calculus.py
Original file line number Diff line number Diff line change
Expand Up @@ -429,7 +429,7 @@
from sage.misc.parser import Parser, LookupNameMaker
from sage.structure.element import Expression
from sage.symbolic.ring import var, SR
from sage.symbolic.expression import symbol_table
from sage.symbolic.symbols import symbol_table
from sage.symbolic.function import Function
from sage.symbolic.function_factory import function_factory
from sage.symbolic.integration.integral import (indefinite_integral,
Expand Down
216 changes: 112 additions & 104 deletions src/sage/functions/airy.py

Large diffs are not rendered by default.

Loading

0 comments on commit afe8854

Please sign in to comment.