From b87630fd1fd5d9aa31d2451ee0ab67e086a3bb4c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pawe=C5=82=20W=C3=B3jcik?= Date: Tue, 28 Jul 2026 10:51:02 -0400 Subject: [PATCH 1/2] env variable for disabling fs cache --- dcor/_dcor_internals_numba.py | 4 +++- dcor/_fast_dcov_avl.py | 14 ++++++++------ dcor/_fast_dcov_mergesort.py | 13 ++++++++----- 3 files changed, 19 insertions(+), 12 deletions(-) diff --git a/dcor/_dcor_internals_numba.py b/dcor/_dcor_internals_numba.py index 0dbddfd..d345d46 100644 --- a/dcor/_dcor_internals_numba.py +++ b/dcor/_dcor_internals_numba.py @@ -1,6 +1,7 @@ from __future__ import annotations from typing import TYPE_CHECKING, Any, Callable +import os import numba import numpy as np @@ -12,6 +13,7 @@ if TYPE_CHECKING: import numpy.typing +FS_CACHE = False if os.environ.get("DCOR_DISABLE_FS_CACHE") else True NumbaVector = Array(dtype=float64, ndim=1, layout="C") NumbaVectorReadOnly = Array(dtype=float64, ndim=1, layout="C", readonly=True) @@ -36,7 +38,7 @@ int64, boolean, ), - cache=True, + cache=FS_CACHE, )(_dcov_from_terms) diff --git a/dcor/_fast_dcov_avl.py b/dcor/_fast_dcov_avl.py index eb58932..4acd7eb 100644 --- a/dcor/_fast_dcov_avl.py +++ b/dcor/_fast_dcov_avl.py @@ -14,6 +14,7 @@ TypeVar, overload, ) +import os import numba import numpy as np @@ -36,6 +37,7 @@ else: NumpyArrayType = np.ndarray +FS_CACHE = False if os.environ.get("DCOR_DISABLE_FS_CACHE") else True Array = TypeVar("Array", bound=NumpyArrayType) @@ -141,7 +143,7 @@ def _dyad_update_compiled_version( NumbaVector, NumbaIntVectorReadOnly, ), - cache=True, + cache=FS_CACHE, )( _dyad_update_compiled_version, ) @@ -193,7 +195,7 @@ def _partial_sum_2d( NumbaIntVectorReadOnly, NumbaVector, ), - cache=True, + cache=FS_CACHE, )( _generate_partial_sum_2d(compiled=True), ) @@ -303,7 +305,7 @@ def _get_impl_args( NumbaIntVectorReadOnly, NumbaMatrix, ))(NumbaVectorReadOnlyNonContiguous, NumbaVectorReadOnlyNonContiguous), - cache=True, + cache=FS_CACHE, )(_get_impl_args) @@ -429,7 +431,7 @@ def _distance_covariance_sqr_terms_avl_impl( numba.optional(float64), numba.optional(float64), ))(NumbaVectorReadOnlyNonContiguous, NumbaVectorReadOnlyNonContiguous, boolean), - cache=True, + cache=FS_CACHE, )( _generate_distance_covariance_sqr_terms_avl_impl(compiled=True), ) @@ -446,7 +448,7 @@ def _distance_covariance_sqr_terms_avl_impl( NumbaVectorReadOnlyNonContiguous, boolean, ), - cache=True, + cache=FS_CACHE, )( _generate_distance_covariance_sqr_from_terms_impl( compiled=True, @@ -582,7 +584,7 @@ def _rowwise_distance_covariance_sqr_avl_generic_internal( )], '(n),(n),()->()', nopython=True, - cache=True, + cache=FS_CACHE, target=target, )(_rowwise_distance_covariance_sqr_avl_generic_internal) diff --git a/dcor/_fast_dcov_mergesort.py b/dcor/_fast_dcov_mergesort.py index 74aa299..47210da 100644 --- a/dcor/_fast_dcov_mergesort.py +++ b/dcor/_fast_dcov_mergesort.py @@ -13,6 +13,7 @@ TypeVar, overload, ) +import os import numba import numpy as np @@ -34,6 +35,8 @@ else: NumpyArrayType = np.ndarray +FS_CACHE = False if os.environ.get("DCOR_DISABLE_FS_CACHE") else True + Array = TypeVar("Array", bound=NumpyArrayType) @@ -132,7 +135,7 @@ def _compute_weight_sums( _compute_weight_sums_compiled = numba.njit( NumbaMatrix(NumbaVectorReadOnly, NumbaMatrixReadOnly), - cache=True, + cache=FS_CACHE, )(_compute_weight_sums) @@ -179,7 +182,7 @@ def _compute_aijbij_term( _compute_aijbij_term = _generate_compute_aijbij_term(compiled=False) _compute_aijbij_term_compiled = numba.njit( float64(NumbaVectorReadOnly, NumbaVectorReadOnly), - cache=True, + cache=FS_CACHE, )( _generate_compute_aijbij_term( compiled=True, @@ -205,7 +208,7 @@ def _compute_row_sums( _compute_row_sums_compiled = numba.njit( NumbaVector(NumbaVectorReadOnly), - cache=True)(_compute_row_sums) + cache=FS_CACHE)(_compute_row_sums) def _generate_distance_covariance_sqr_terms_mergesort_impl( @@ -285,7 +288,7 @@ def _distance_covariance_sqr_terms_mergesort_impl( NumbaVectorReadOnlyNonContiguous, boolean, ), - cache=True, + cache=FS_CACHE, )( _generate_distance_covariance_sqr_terms_mergesort_impl( compiled=True, @@ -306,7 +309,7 @@ def _distance_covariance_sqr_terms_mergesort_impl( NumbaVectorReadOnlyNonContiguous, boolean, ), - cache=True, + cache=FS_CACHE, )( _generate_distance_covariance_sqr_from_terms_impl( compiled=True, From f9455f248e78c3c1fef9f0b6fb4277252be6c510 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pawe=C5=82=20W=C3=B3jcik?= Date: Wed, 5 Aug 2026 21:31:50 -0400 Subject: [PATCH 2/2] numba cache: move FS_CACHE definition to _utils --- dcor/_dcor_internals_numba.py | 3 +-- dcor/_fast_dcov_avl.py | 4 +--- dcor/_fast_dcov_mergesort.py | 5 +---- dcor/_utils.py | 3 +++ 4 files changed, 6 insertions(+), 9 deletions(-) diff --git a/dcor/_dcor_internals_numba.py b/dcor/_dcor_internals_numba.py index d345d46..d59133f 100644 --- a/dcor/_dcor_internals_numba.py +++ b/dcor/_dcor_internals_numba.py @@ -1,7 +1,6 @@ from __future__ import annotations from typing import TYPE_CHECKING, Any, Callable -import os import numba import numpy as np @@ -9,11 +8,11 @@ from numba.types import Array, Tuple from ._dcor_internals import _dcov_from_terms +from ._utils import FS_CACHE if TYPE_CHECKING: import numpy.typing -FS_CACHE = False if os.environ.get("DCOR_DISABLE_FS_CACHE") else True NumbaVector = Array(dtype=float64, ndim=1, layout="C") NumbaVectorReadOnly = Array(dtype=float64, ndim=1, layout="C", readonly=True) diff --git a/dcor/_fast_dcov_avl.py b/dcor/_fast_dcov_avl.py index 4acd7eb..49f38bd 100644 --- a/dcor/_fast_dcov_avl.py +++ b/dcor/_fast_dcov_avl.py @@ -14,7 +14,6 @@ TypeVar, overload, ) -import os import numba import numpy as np @@ -30,14 +29,13 @@ NumbaVectorReadOnlyNonContiguous, _generate_distance_covariance_sqr_from_terms_impl, ) -from ._utils import CompileMode, _transform_to_1d +from ._utils import CompileMode, _transform_to_1d, FS_CACHE if TYPE_CHECKING: NumpyArrayType = np.typing.NDArray[np.number[Any]] else: NumpyArrayType = np.ndarray -FS_CACHE = False if os.environ.get("DCOR_DISABLE_FS_CACHE") else True Array = TypeVar("Array", bound=NumpyArrayType) diff --git a/dcor/_fast_dcov_mergesort.py b/dcor/_fast_dcov_mergesort.py index 47210da..99fe4e2 100644 --- a/dcor/_fast_dcov_mergesort.py +++ b/dcor/_fast_dcov_mergesort.py @@ -13,7 +13,6 @@ TypeVar, overload, ) -import os import numba import numpy as np @@ -28,15 +27,13 @@ NumbaVectorReadOnlyNonContiguous, _generate_distance_covariance_sqr_from_terms_impl, ) -from ._utils import CompileMode, _transform_to_1d +from ._utils import CompileMode, _transform_to_1d, FS_CACHE if TYPE_CHECKING: NumpyArrayType = np.typing.NDArray[np.number[Any]] else: NumpyArrayType = np.ndarray -FS_CACHE = False if os.environ.get("DCOR_DISABLE_FS_CACHE") else True - Array = TypeVar("Array", bound=NumpyArrayType) diff --git a/dcor/_utils.py b/dcor/_utils.py index 4d41b8c..e630c0a 100644 --- a/dcor/_utils.py +++ b/dcor/_utils.py @@ -5,6 +5,7 @@ import enum import warnings from typing import TYPE_CHECKING, Any, Iterable, TypeVar, Union +import os import numpy as np from array_api_compat import ( @@ -26,6 +27,8 @@ None, ] +FS_CACHE = False if os.environ.get("DCOR_DISABLE_FS_CACHE") else True + class CompileMode(enum.Enum): """Compilation mode of the algorithm."""