pymc-devs / pymc-devs/pytensor
Move the _is_provably_positive helpers out of tensor/subtensor.py
Nobody has claimed this yet.
- Dominant language
- Python
- Stars
- 644
- Forks
- 208
- Avg merge
- 2d 14h
- Merged PRs (30d)
- 16
Description
_is_provably_positive and _is_provably_non_negative are general graph predicates that just happen to live in pytensor/tensor/subtensor.py. The module does use them itself for slice canonicalization, but five others import them from there — rewriting/subtensor.py, rewriting/math.py, rewriting/linalg/summary.py, assumptions/elemwise.py, and assumptions/positive_definite.py — so math rewrites and the assumptions system both pull in the indexing module just to ask whether a variable is non-negative.
No obvious destination. assumptions/ already holds two of the callers, but importing it from pytensor/tensor inverts the current direction.
Follow-up from #2380.
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Read the two predicate helpers in pytensor/tensor/subtensor.py, then trace their imports from rewriting/subtensor.py, rewriting/math.py, rewriting/linalg/summary.py, assumptions/elemwise.py, and assumptions/positive_definite.py. Identify a neutral home that avoids inverting the current dependency direction, update all callers and slice canonicalization, and verify that no caller needs to import the indexing module just for these predicates.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- python
- Domain
- backend, tooling
- Issue type
- Refactor
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Active
- Clarity
- Mostly clear
- Newbie friendliness
- 50/100