Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

sage.functions: Decouple from sage.symbolic.expression and mpmath, update # needs #35716

Merged
merged 53 commits into from
Aug 27, 2023

Conversation

mkoeppe
Copy link
Contributor

@mkoeppe mkoeppe commented Jun 4, 2023

📚 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_imports (because RR happens to be used in an example for this function.) We fix it here.

📝 Checklist

  • The title is concise, informative, and self-explanatory.
  • The description explains in detail what this PR is about.
  • I have linked a relevant issue or discussion.
  • I have created tests covering the changes.
  • I have updated the documentation accordingly.

⌛ Dependencies

Matthias Koeppe added 20 commits July 14, 2023 16:11
…be all src/sage/symbolic; ./sage -fixdoctests --only-tags src/sage/symbolic
…be all src/sage/symbolic; ./sage -fixdoctests --only-tags src/sage/symbolic
SageMath version 10.1.beta7, Release Date: 2023-07-20
@mkoeppe mkoeppe force-pushed the sage_symbolic_modularization_fixes branch from fd2a257 to 370fce7 Compare July 21, 2023 00:26
@mkoeppe mkoeppe changed the title sage.functions: Decouple from sage.symbolic.expression and mpmath sage.functions: Decouple from sage.symbolic.expression and mpmath, update # needs Aug 4, 2023
@mkoeppe mkoeppe force-pushed the sage_symbolic_modularization_fixes branch from 794a1eb to 00e1156 Compare August 20, 2023 23:43
Copy link
Collaborator

@kwankyu kwankyu left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks. LGTM.

I will set positive review once checks are passed.

@mkoeppe
Copy link
Contributor Author

mkoeppe commented Aug 21, 2023

Thank you!

@github-actions
Copy link

Documentation preview for this PR (built with commit da930eb; changes) is ready! 🎉

vbraun pushed a commit to vbraun/sage that referenced this pull request Aug 23, 2023
…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
@vbraun vbraun merged commit 7b97cfd into sagemath:develop Aug 27, 2023
11 of 12 checks passed
@mkoeppe mkoeppe added this to the sage-10.2 milestone Aug 27, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants