diff --git a/conda-envs/environment-alternative-backends.yml b/conda-envs/environment-alternative-backends.yml index d890791c8e..58321ec37e 100644 --- a/conda-envs/environment-alternative-backends.yml +++ b/conda-envs/environment-alternative-backends.yml @@ -22,7 +22,7 @@ dependencies: - numpyro>=0.8.0 - pandas>=0.24.0 - pip -- pytensor>=2.32.0,<2.33 +- pytensor>=2.33.0,<2.34 - python-graphviz - networkx - rich>=13.7.1 diff --git a/conda-envs/environment-dev.yml b/conda-envs/environment-dev.yml index b6a9c52b91..7140a717f2 100644 --- a/conda-envs/environment-dev.yml +++ b/conda-envs/environment-dev.yml @@ -12,7 +12,7 @@ dependencies: - numpy>=1.25.0 - pandas>=0.24.0 - pip -- pytensor>=2.32.0,<2.33 +- pytensor>=2.33.0,<2.34 - python-graphviz - networkx - scipy>=1.4.1 diff --git a/conda-envs/environment-docs.yml b/conda-envs/environment-docs.yml index 1fbddb548e..5e4d2dcd4b 100644 --- a/conda-envs/environment-docs.yml +++ b/conda-envs/environment-docs.yml @@ -11,7 +11,7 @@ dependencies: - numpy>=1.25.0 - pandas>=0.24.0 - pip -- pytensor>=2.32.0,<2.33 +- pytensor>=2.33.0,<2.34 - python-graphviz - rich>=13.7.1 - scipy>=1.4.1 diff --git a/conda-envs/environment-test.yml b/conda-envs/environment-test.yml index becb58339f..bcc4a5baf1 100644 --- a/conda-envs/environment-test.yml +++ b/conda-envs/environment-test.yml @@ -14,7 +14,7 @@ dependencies: - pandas>=0.24.0 - pip - polyagamma -- pytensor>=2.32.0,<2.33 +- pytensor>=2.33.0,<2.34 - python-graphviz - networkx - rich>=13.7.1 diff --git a/conda-envs/windows-environment-dev.yml b/conda-envs/windows-environment-dev.yml index 3dd404db7c..54685c753a 100644 --- a/conda-envs/windows-environment-dev.yml +++ b/conda-envs/windows-environment-dev.yml @@ -12,7 +12,7 @@ dependencies: - numpy>=1.25.0 - pandas>=0.24.0 - pip -- pytensor>=2.32.0,<2.33 +- pytensor>=2.33.0,<2.34 - python-graphviz - networkx - rich>=13.7.1 diff --git a/conda-envs/windows-environment-test.yml b/conda-envs/windows-environment-test.yml index f921088824..4c96035cdf 100644 --- a/conda-envs/windows-environment-test.yml +++ b/conda-envs/windows-environment-test.yml @@ -15,7 +15,7 @@ dependencies: - pandas>=0.24.0 - pip - polyagamma -- pytensor>=2.32.0,<2.33 +- pytensor>=2.33.0,<2.34 - python-graphviz - networkx - rich>=13.7.1 diff --git a/pymc/distributions/custom.py b/pymc/distributions/custom.py index 476d5bc41f..5bf3c5995d 100644 --- a/pymc/distributions/custom.py +++ b/pymc/distributions/custom.py @@ -18,9 +18,9 @@ from pytensor import Variable, clone_replace from pytensor import tensor as pt -from pytensor.graph.basic import io_toposort from pytensor.graph.features import ReplaceValidate from pytensor.graph.rewriting.basic import GraphRewriter +from pytensor.graph.traversal import io_toposort from pytensor.scan.op import Scan from pytensor.tensor import TensorVariable, as_tensor_variable from pytensor.tensor.random.op import RandomVariable diff --git a/pymc/distributions/timeseries.py b/pymc/distributions/timeseries.py index f18e1f4c25..500cd95b47 100644 --- a/pymc/distributions/timeseries.py +++ b/pymc/distributions/timeseries.py @@ -21,8 +21,9 @@ import pytensor import pytensor.tensor as pt -from pytensor.graph.basic import Apply, ancestors +from pytensor.graph.basic import Apply from pytensor.graph.replace import clone_replace +from pytensor.graph.traversal import ancestors from pytensor.tensor import TensorVariable from pytensor.tensor.random.op import RandomVariable from pytensor.tensor.random.utils import normalize_size_param diff --git a/pymc/initial_point.py b/pymc/initial_point.py index 4edf52f6b9..41532a0569 100644 --- a/pymc/initial_point.py +++ b/pymc/initial_point.py @@ -22,9 +22,10 @@ from pytensor import graph_replace from pytensor.compile.ops import TypeCastingOp -from pytensor.graph.basic import Apply, Variable, ancestors, walk +from pytensor.graph.basic import Apply, Variable from pytensor.graph.fg import FunctionGraph from pytensor.graph.rewriting.db import RewriteDatabaseQuery, SequenceDB +from pytensor.graph.traversal import ancestors, walk from pytensor.tensor.variable import TensorVariable from pymc.logprob.transforms import Transform diff --git a/pymc/logprob/basic.py b/pymc/logprob/basic.py index db2db233a5..999ebc938f 100644 --- a/pymc/logprob/basic.py +++ b/pymc/logprob/basic.py @@ -45,10 +45,9 @@ from pytensor.graph.basic import ( Constant, Variable, - ancestors, - walk, ) from pytensor.graph.rewriting.basic import GraphRewriter, NodeRewriter +from pytensor.graph.traversal import ancestors, walk from pytensor.tensor.variable import TensorVariable from pymc.logprob.abstract import ( diff --git a/pymc/logprob/mixture.py b/pymc/logprob/mixture.py index 62f2a8f403..f45f0ccb00 100644 --- a/pymc/logprob/mixture.py +++ b/pymc/logprob/mixture.py @@ -39,10 +39,11 @@ import pytensor import pytensor.tensor as pt -from pytensor.graph.basic import Apply, Constant, Variable, ancestors +from pytensor.graph.basic import Apply, Constant, Variable from pytensor.graph.fg import FunctionGraph from pytensor.graph.op import Op, compute_test_value from pytensor.graph.rewriting.basic import EquilibriumGraphRewriter, node_rewriter +from pytensor.graph.traversal import ancestors from pytensor.ifelse import IfElse, ifelse from pytensor.scalar import Switch from pytensor.scalar import switch as scalar_switch diff --git a/pymc/logprob/rewriting.py b/pymc/logprob/rewriting.py index af0d8d01e1..b75232a68d 100644 --- a/pymc/logprob/rewriting.py +++ b/pymc/logprob/rewriting.py @@ -37,11 +37,7 @@ from collections.abc import Sequence from pytensor.compile.mode import optdb -from pytensor.graph.basic import ( - Variable, - ancestors, - truncated_graph_inputs, -) +from pytensor.graph.basic import Variable from pytensor.graph.fg import FunctionGraph from pytensor.graph.replace import clone_replace from pytensor.graph.rewriting.basic import ( @@ -56,6 +52,7 @@ SequenceDB, TopoDB, ) +from pytensor.graph.traversal import ancestors, truncated_graph_inputs from pytensor.tensor.basic import Alloc from pytensor.tensor.elemwise import DimShuffle, Elemwise from pytensor.tensor.random.rewriting import local_subtensor_rv_lift diff --git a/pymc/logprob/tensor.py b/pymc/logprob/tensor.py index 3d577aac9a..807bbad1a5 100644 --- a/pymc/logprob/tensor.py +++ b/pymc/logprob/tensor.py @@ -34,7 +34,6 @@ # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE # SOFTWARE. -from pathlib import Path from pytensor import tensor as pt from pytensor.graph.fg import FunctionGraph @@ -186,10 +185,6 @@ def find_measurable_stacks(fgraph, node) -> list[TensorVariable] | None: class MeasurableDimShuffle(MeasurableOp, DimShuffle): """A placeholder used to specify a log-likelihood for a dimshuffle sub-graph.""" - # Need to get the absolute path of `c_func_file`, otherwise it tries to - # find it locally and fails when a new `Op` is initialized - c_func_file = str(DimShuffle.get_path(Path(DimShuffle.c_func_file))) # type: ignore[arg-type] - def __str__(self): return f"Measurable{super().__str__()}" diff --git a/pymc/logprob/utils.py b/pymc/logprob/utils.py index 0f521393d4..bbb30456d1 100644 --- a/pymc/logprob/utils.py +++ b/pymc/logprob/utils.py @@ -43,8 +43,9 @@ from pytensor import tensor as pt from pytensor.graph import Apply, Op, node_rewriter -from pytensor.graph.basic import Constant, clone_get_equiv, graph_inputs, walk +from pytensor.graph.basic import Constant, clone_get_equiv from pytensor.graph.fg import FunctionGraph +from pytensor.graph.traversal import graph_inputs, walk from pytensor.link.c.type import CType from pytensor.raise_op import CheckAndRaise from pytensor.scalar.basic import Mul diff --git a/pymc/model/core.py b/pymc/model/core.py index 26c5f15184..d8b370f0e9 100644 --- a/pymc/model/core.py +++ b/pymc/model/core.py @@ -34,7 +34,8 @@ from pytensor.compile import DeepCopyOp, Function, ProfileStats, get_mode from pytensor.compile.sharedvalue import SharedVariable -from pytensor.graph.basic import Constant, Variable, ancestors, graph_inputs +from pytensor.graph.basic import Constant, Variable +from pytensor.graph.traversal import ancestors, graph_inputs from pytensor.tensor import as_tensor from pytensor.tensor.math import variadic_add from pytensor.tensor.random.op import RandomVariable diff --git a/pymc/model_graph.py b/pymc/model_graph.py index df228d638a..188e40df28 100644 --- a/pymc/model_graph.py +++ b/pymc/model_graph.py @@ -21,7 +21,8 @@ from typing import Any, cast from pytensor import function -from pytensor.graph.basic import Variable, ancestors, walk +from pytensor.graph.basic import Variable +from pytensor.graph.traversal import ancestors, walk from pytensor.tensor.shape import Shape from pymc.model.core import modelcontext diff --git a/pymc/printing.py b/pymc/printing.py index c4376d306e..63514ac4d0 100644 --- a/pymc/printing.py +++ b/pymc/printing.py @@ -18,7 +18,8 @@ from functools import partial from pytensor.compile import SharedVariable -from pytensor.graph.basic import Constant, walk +from pytensor.graph.basic import Constant +from pytensor.graph.traversal import walk from pytensor.tensor.basic import TensorVariable, Variable from pytensor.tensor.elemwise import DimShuffle from pytensor.tensor.random.basic import RandomVariable diff --git a/pymc/pytensorf.py b/pymc/pytensorf.py index 804967a2c6..92d5db159e 100644 --- a/pymc/pytensorf.py +++ b/pymc/pytensorf.py @@ -32,11 +32,10 @@ Variable, clone_get_equiv, equal_computations, - graph_inputs, - walk, ) from pytensor.graph.fg import FunctionGraph, Output from pytensor.graph.op import HasInnerGraph +from pytensor.graph.traversal import graph_inputs, walk from pytensor.scalar.basic import Cast from pytensor.scan.op import Scan from pytensor.tensor.basic import _as_tensor_variable diff --git a/pymc/sampling/forward.py b/pymc/sampling/forward.py index d1703e82a3..bb2ab613e3 100644 --- a/pymc/sampling/forward.py +++ b/pymc/sampling/forward.py @@ -37,11 +37,9 @@ Apply, Constant, Variable, - ancestors, - general_toposort, - walk, ) from pytensor.graph.fg import FunctionGraph +from pytensor.graph.traversal import ancestors, general_toposort, walk from pytensor.tensor.random.var import RandomGeneratorSharedVariable from pytensor.tensor.sharedvar import SharedVariable, TensorSharedVariable from pytensor.tensor.variable import TensorConstant, TensorVariable diff --git a/pymc/sampling/jax.py b/pymc/sampling/jax.py index 6c01192825..3e7085eed6 100644 --- a/pymc/sampling/jax.py +++ b/pymc/sampling/jax.py @@ -31,9 +31,9 @@ from jax.lax import scan from numpy.typing import ArrayLike from pytensor.compile import SharedVariable, mode -from pytensor.graph.basic import graph_inputs from pytensor.graph.fg import FunctionGraph from pytensor.graph.replace import clone_replace +from pytensor.graph.traversal import graph_inputs from pytensor.link.jax.dispatch import jax_funcify from pytensor.raise_op import Assert from pytensor.tensor import TensorVariable diff --git a/pymc/testing.py b/pymc/testing.py index 886177ef02..f72bdccf8c 100644 --- a/pymc/testing.py +++ b/pymc/testing.py @@ -26,8 +26,9 @@ from numpy import testing as npt from pytensor.compile import SharedVariable from pytensor.compile.mode import Mode -from pytensor.graph.basic import Constant, Variable, equal_computations, graph_inputs +from pytensor.graph.basic import Constant, Variable, equal_computations from pytensor.graph.rewriting.basic import in2out +from pytensor.graph.traversal import graph_inputs from pytensor.tensor import TensorVariable from pytensor.tensor.random.op import RandomVariable from pytensor.tensor.random.type import RandomType diff --git a/requirements-dev.txt b/requirements-dev.txt index 8b59683594..eeab8cf428 100644 --- a/requirements-dev.txt +++ b/requirements-dev.txt @@ -16,7 +16,7 @@ pandas>=0.24.0 polyagamma pre-commit>=2.8.0 pymc-sphinx-theme>=0.16.0 -pytensor>=2.32.0,<2.33 +pytensor>=2.33.0,<2.34 pytest-cov>=2.5 pytest>=3.0 rich>=13.7.1 diff --git a/requirements.txt b/requirements.txt index 6907c855e8..18cdfae061 100644 --- a/requirements.txt +++ b/requirements.txt @@ -3,7 +3,7 @@ cachetools>=4.2.1 cloudpickle numpy>=1.25.0 pandas>=0.24.0 -pytensor>=2.32.0,<2.33 +pytensor>=2.33.0,<2.34 rich>=13.7.1 scipy>=1.4.1 threadpoolctl>=3.1.0,<4.0.0 diff --git a/tests/logprob/test_basic.py b/tests/logprob/test_basic.py index 5e17dd8a8e..f0461c6928 100644 --- a/tests/logprob/test_basic.py +++ b/tests/logprob/test_basic.py @@ -42,7 +42,8 @@ import pytest import scipy.stats.distributions as sp -from pytensor.graph.basic import ancestors, equal_computations +from pytensor.graph.basic import equal_computations +from pytensor.graph.traversal import ancestors from pytensor.tensor.random.op import RandomVariable from scipy import stats diff --git a/tests/logprob/test_utils.py b/tests/logprob/test_utils.py index e47bd58142..6493efe74d 100644 --- a/tests/logprob/test_utils.py +++ b/tests/logprob/test_utils.py @@ -41,7 +41,8 @@ from pytensor import function from pytensor import tensor as pt from pytensor.compile import get_default_mode -from pytensor.graph.basic import ancestors, equal_computations +from pytensor.graph.basic import equal_computations +from pytensor.graph.traversal import ancestors from pytensor.tensor.random.basic import NormalRV from pytensor.tensor.random.op import RandomVariable diff --git a/tests/model/test_core.py b/tests/model/test_core.py index 814cb114d4..947219ecd3 100644 --- a/tests/model/test_core.py +++ b/tests/model/test_core.py @@ -33,7 +33,7 @@ import scipy.stats as st from pytensor.graph import graph_inputs -from pytensor.graph.basic import get_var_by_name +from pytensor.graph.traversal import get_var_by_name from pytensor.raise_op import Assert from pytensor.tensor.random.op import RandomVariable from pytensor.tensor.variable import TensorConstant diff --git a/tests/sampling/test_forward.py b/tests/sampling/test_forward.py index 3dd30e14f7..c2aa30120f 100644 --- a/tests/sampling/test_forward.py +++ b/tests/sampling/test_forward.py @@ -28,7 +28,7 @@ from pytensor import Mode, shared from pytensor.compile import SharedVariable from pytensor.graph import graph_inputs -from pytensor.graph.basic import get_var_by_name, variable_depends_on +from pytensor.graph.traversal import get_var_by_name, variable_depends_on from pytensor.tensor.variable import TensorConstant from scipy import stats