From 99c4a114e5cbec5e7e6491040aa403cd2d210531 Mon Sep 17 00:00:00 2001 From: Roy Smart Date: Sun, 23 Nov 2025 09:28:38 -0700 Subject: [PATCH 01/19] Added Ruff linting rules. --- .github/workflows/ruff.yml | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) create mode 100644 .github/workflows/ruff.yml diff --git a/.github/workflows/ruff.yml b/.github/workflows/ruff.yml new file mode 100644 index 00000000..ac6b3140 --- /dev/null +++ b/.github/workflows/ruff.yml @@ -0,0 +1,16 @@ +name: Ruff + +on: + push: + branches: + - main + pull_request: + +jobs: + ruff: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v6 + - uses: astral-sh/ruff-action@v3 + with: + src: ./named_arrays From e5e179ce71e77f2ec7dd5c07ceef4af1b9b5b976 Mon Sep 17 00:00:00 2001 From: Roy Smart Date: Sun, 23 Nov 2025 09:30:32 -0700 Subject: [PATCH 02/19] _core --- named_arrays/_core.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/named_arrays/_core.py b/named_arrays/_core.py index 43c62104..8d0640f6 100644 --- a/named_arrays/_core.py +++ b/named_arrays/_core.py @@ -1,5 +1,5 @@ from __future__ import annotations -from typing import TYPE_CHECKING, TypeVar, Generic, Sequence, Iterator, Union, Type, Callable, Collection, Any +from typing import TypeVar, Generic, Sequence, Iterator, Union, Type, Callable, Collection, Any from typing_extensions import Self import abc import dataclasses From feae071ad75baa0ea661b80e5399d9c6e69a2c1a Mon Sep 17 00:00:00 2001 From: Roy Smart Date: Mon, 24 Nov 2025 08:29:48 -0700 Subject: [PATCH 03/19] Lots of fixes to `__init__.py`, but not even close to done. --- named_arrays/__init__.py | 366 +++++++++++++++++- named_arrays/_core.py | 68 ++-- .../_functions/function_array_functions.py | 2 - named_arrays/_named_array_functions.py | 36 +- named_arrays/_scalars/scalars.py | 41 +- .../_scalars/uncertainties/uncertainties.py | 34 +- .../_vectors/cartesian/vectors_cartesian.py | 28 +- .../cartesian/vectors_cartesian_2d.py | 28 +- .../cartesian/vectors_cartesian_3d.py | 26 +- .../cartesian/vectors_cartesian_nd.py | 2 +- named_arrays/_vectors/vectors.py | 36 +- named_arrays/_vectors/vectors_spectral.py | 12 +- named_arrays/_vectors/vectors_temporal.py | 13 +- 13 files changed, 517 insertions(+), 175 deletions(-) diff --git a/named_arrays/__init__.py b/named_arrays/__init__.py index 038ef091..c5a3b024 100644 --- a/named_arrays/__init__.py +++ b/named_arrays/__init__.py @@ -1,6 +1,32 @@ """A named tensor implementation with :mod:`astropy.units` support.""" -from ._named_array_functions import * +from ._named_array_functions import ( + _named_array_function, + asarray, + asanyarray, + arange, + step, + linspace, + logspace, + geomspace, + ndim, + shape, + unit, + unit_normalized, + broadcast_to, + stack, + concatenate, + add_axes, + vmr, + mean_trimmed, + interp, + histogram, + histogram2d, + histogramdd, + convolve, + jacobian, + despike, +) from . import random from . import plt from . import optimize @@ -8,17 +34,162 @@ from . import transformations from . import ndfilters from . import colorsynth -from . import regridding from . import numexpr -from ._core import * -from ._scalars.scalars import * -from ._scalars.uncertainties.uncertainties import * -from ._vectors.vectors import * -from ._vectors.cartesian.vectors_cartesian import * -from ._vectors.cartesian.vectors_cartesian_2d import * -from ._vectors.cartesian.vectors_cartesian_3d import * -from ._vectors.cartesian.vectors_cartesian_nd import * -from ._vectors.vectors_temporal import * +from ._core import ( + QuantityLike, + StartT, + StopT, + named_array_like, + get_dtype, + value, + type_array, + broadcast_shapes, + shape_broadcasted, + ndindex, + indices, + flatten_axes, + axis_normalized, + explicit, + AbstractArray, + ArrayLike, + AbstractExplicitArray, + AbstractImplicitArray, + AbstractRandomMixin, + AbstractRangeMixin, + AbstractSymmetricRangeMixin, + AbstractRandomSample, + AbstractParameterizedArray, + AbstractLinearParameterizedArrayMixin, + AbstractArrayRange, + AbstractSpace, + AbstractLinearSpace, + strata, + AbstractStratifiedRandomSpace, + AbstractLogarithmicSpace, + AbstractGeometricSpace, + AbstractUniformRandomSample, + AbstractNormalRandomSample, + AbstractPoissonRandomSample, +) +from ._scalars.scalars import ( + ScalarStartT, + ScalarStopT, + ScalarTypeError, + as_named_array, + AbstractScalar, + AbstractScalarArray, + ScalarLike, + ScalarArray, + AbstractImplicitScalarArray, + AbstractScalarRandomSample, + ScalarUniformRandomSample, + ScalarNormalRandomSample, + ScalarPoissonRandomSample, + AbstractParameterizedScalarArray, + ScalarArrayRange, + AbstractScalarSpace, + ScalarLinearSpace, + ScalarStratifiedRandomSpace, + ScalarLogarithmicSpace, + ScalarGeometricSpace, +) +from ._scalars.uncertainties.uncertainties import ( + nominal, + UncertainScalarStartT, + UncertainScalarStopT, + UncertainScalarTypeError, + AbstractUncertainScalarArray, + UncertainScalarArray, + AbstractImplicitUncertainScalarArray, + UniformUncertainScalarArray, + NormalUncertainScalarArray, + AbstractUncertainScalarRandomSample, + UncertainScalarUniformRandomSample, + UncertainScalarNormalRandomSample, + UncertainScalarPoissionRandomSample, + AbstractParameterizedUncertainScalarArray, + AbstractUncertainScalarSpace, + UncertainScalarLinearSpace, + UncertainScalarStratifiedRandomSpace, + UncertainScalarLogarithmicSpace, + UncertainScalarGeometricSpace, +) +from ._vectors.vectors import ( + VectorPrototypeT, + VectorTypeError, + AbstractVectorArray, + AbstractScalarOrVectorArray, + AbstractExplicitVectorArray, + AbstractImplicitVectorArray, + AbstractVectorRandomSample, + AbstractVectorUniformRandomSample, + AbstractVectorNormalRandomSample, + AbstractParameterizedVectorArray, + AbstractVectorArrayRange, + AbstractVectorSpace, + AbstractVectorLinearSpace, + AbstractVectorStratifiedRandomSpace, + AbstractVectorLogarithmicSpace, + AbstractVectorGeometricSpace, + AbstractWcsVector, +) +from ._vectors.cartesian.vectors_cartesian import ( + AbstractCartesianVectorArray, + AbstractExplicitCartesianVectorArray, + AbstractImplicitCartesianVectorArray, + AbstractCartesianVectorRandomSample, + AbstractCartesianVectorUniformRandomSample, + AbstractCartesianVectorNormalRandomSample, + AbstractParameterizedCartesianVectorArray, + AbstractCartesianVectorArrayRange, + AbstractCartesianVectorSpace, + AbstractCartesianVectorLinearSpace, + AbstractCartesianVectorStratifiedRandomSpace, + AbstractCartesianVectorLogarithmicSpace, + AbstractCartesianVectorGeometricSpace, +) +from ._vectors.cartesian.vectors_cartesian_2d import ( + AbstractCartesian2dVectorArray, + Cartesian2dVectorArray, + AbstractImplicitCartesian2dVectorArray, + AbstractCartesian2dVectorRandomSample, + Cartesian2dVectorUniformRandomSample, + Cartesian2dVectorNormalRandomSample, + AbstractParameterizedCartesian2dVectorArray, + Cartesian2dVectorArrayRange, + AbstractCartesian2dVectorSpace, + Cartesian2dVectorLinearSpace, + Cartesian2dVectorStratifiedRandomSpace, + Cartesian2dVectorLogarithmicSpace, + Cartesian2dVectorGeometricSpace, +) +from ._vectors.cartesian.vectors_cartesian_3d import ( + AbstractCartesian3dVectorArray, + Cartesian3dVectorArray, + AbstractImplicitCartesian3dVectorArray, + AbstractCartesian3dVectorRandomSample, + Cartesian3dVectorUniformRandomSample, + Cartesian3dVectorNormalRandomSample, + AbstractParameterizedCartesian3dVectorArray, + Cartesian3dVectorArrayRange, + AbstractCartesian3dVectorSpace, + Cartesian3dVectorLinearSpace, + Cartesian3dVectorStratifiedRandomSpace, + Cartesian3dVectorLogarithmicSpace, + Cartesian3dVectorGeometricSpace, +) +from ._vectors.cartesian.vectors_cartesian_nd import ( + AbstractCartesianNdVectorArray, + CartesianNdVectorArray, +) +from ._vectors.vectors_temporal import ( + AbstractTemporalVectorArray, + TemporalVectorArray, + AbstractImplicitTemporalVectorArray, + AbstractParameterizedTemporalVectorArray, + AbstractTemporalVectorSpace, + TemporalVectorLinearSpace, +) from ._vectors.vectors_spectral import * from ._vectors.vectors_positional import * from ._vectors.vectors_directional import * @@ -46,3 +217,176 @@ from ._matrices.matrices_temporal_spectral_directional import * from ._matrices.matrices_input_output import * from ._functions.functions import * + +__all__ = [ + "_named_array_function", + "asarray", + "asanyarray", + "arange", + "step", + "linspace", + "logspace", + "geomspace", + "ndim", + "shape", + "unit", + "unit_normalized", + "broadcast_to", + "stack", + "concatenate", + "add_axes", + "vmr", + "mean_trimmed", + "interp", + "histogram", + "histogram2d", + "histogramdd", + "convolve", + "jacobian", + "despike", + "random", + "plt", + "optimize", + "regridding", + "transformations", + "ndfilters", + "colorsynth", + "numexpr", + "QuantityLike", + "StartT", + "StopT", + "named_array_like", + "get_dtype", + "value", + "type_array", + "broadcast_shapes", + "shape_broadcasted", + "ndindex", + "indices", + "flatten_axes", + "axis_normalized", + "explicit", + "AbstractArray", + "ArrayLike", + "AbstractExplicitArray", + "AbstractImplicitArray", + "AbstractRandomMixin", + "AbstractRangeMixin", + "AbstractSymmetricRangeMixin", + "AbstractRandomSample", + "AbstractParameterizedArray", + "AbstractLinearParameterizedArrayMixin", + "AbstractArrayRange", + "AbstractSpace", + "AbstractLinearSpace", + "strata", + "AbstractStratifiedRandomSpace", + "AbstractLogarithmicSpace", + "AbstractGeometricSpace", + "AbstractUniformRandomSample", + "AbstractNormalRandomSample", + "AbstractPoissonRandomSample", + "ScalarStartT", + "ScalarStopT", + "ScalarTypeError", + "as_named_array", + "AbstractScalar", + "AbstractScalarArray", + "ScalarLike", + "ScalarArray", + "AbstractImplicitScalarArray", + "AbstractScalarRandomSample", + "ScalarUniformRandomSample", + "ScalarNormalRandomSample", + "ScalarPoissonRandomSample", + "AbstractParameterizedScalarArray", + "ScalarArrayRange", + "AbstractScalarSpace", + "ScalarLinearSpace", + "ScalarStratifiedRandomSpace", + "ScalarLogarithmicSpace", + "ScalarGeometricSpace", + "nominal", + "UncertainScalarStartT", + "UncertainScalarStopT", + "UncertainScalarTypeError", + "AbstractUncertainScalarArray", + "UncertainScalarArray", + "AbstractImplicitUncertainScalarArray", + "UniformUncertainScalarArray", + "NormalUncertainScalarArray", + "AbstractUncertainScalarRandomSample", + "UncertainScalarUniformRandomSample", + "UncertainScalarNormalRandomSample", + "UncertainScalarPoissionRandomSample", + "AbstractParameterizedUncertainScalarArray", + "AbstractUncertainScalarSpace", + "UncertainScalarLinearSpace", + "UncertainScalarStratifiedRandomSpace", + "UncertainScalarLogarithmicSpace", + "UncertainScalarGeometricSpace", + "VectorPrototypeT", + "VectorTypeError", + "AbstractVectorArray", + "AbstractScalarOrVectorArray", + "AbstractExplicitVectorArray", + "AbstractImplicitVectorArray", + "AbstractVectorRandomSample", + "AbstractVectorUniformRandomSample", + "AbstractVectorNormalRandomSample", + "AbstractParameterizedVectorArray", + "AbstractVectorArrayRange", + "AbstractVectorSpace", + "AbstractVectorLinearSpace", + "AbstractVectorStratifiedRandomSpace", + "AbstractVectorLogarithmicSpace", + "AbstractVectorGeometricSpace", + "AbstractWcsVector", + "AbstractCartesianVectorArray", + "AbstractExplicitCartesianVectorArray", + "AbstractImplicitCartesianVectorArray", + "AbstractCartesianVectorRandomSample", + "AbstractCartesianVectorUniformRandomSample", + "AbstractCartesianVectorNormalRandomSample", + "AbstractParameterizedCartesianVectorArray", + "AbstractCartesianVectorArrayRange", + "AbstractCartesianVectorSpace", + "AbstractCartesianVectorLinearSpace", + "AbstractCartesianVectorStratifiedRandomSpace", + "AbstractCartesianVectorLogarithmicSpace", + "AbstractCartesianVectorGeometricSpace", + "AbstractCartesian2dVectorArray", + "Cartesian2dVectorArray", + "AbstractImplicitCartesian2dVectorArray", + "AbstractCartesian2dVectorRandomSample", + "Cartesian2dVectorUniformRandomSample", + "Cartesian2dVectorNormalRandomSample", + "AbstractParameterizedCartesian2dVectorArray", + "Cartesian2dVectorArrayRange", + "AbstractCartesian2dVectorSpace", + "Cartesian2dVectorLinearSpace", + "Cartesian2dVectorStratifiedRandomSpace", + "Cartesian2dVectorLogarithmicSpace", + "Cartesian2dVectorGeometricSpace", + "AbstractCartesian3dVectorArray", + "Cartesian3dVectorArray", + "AbstractImplicitCartesian3dVectorArray", + "AbstractCartesian3dVectorRandomSample", + "Cartesian3dVectorUniformRandomSample", + "Cartesian3dVectorNormalRandomSample", + "AbstractParameterizedCartesian3dVectorArray", + "Cartesian3dVectorArrayRange", + "AbstractCartesian3dVectorSpace", + "Cartesian3dVectorLinearSpace", + "Cartesian3dVectorStratifiedRandomSpace", + "Cartesian3dVectorLogarithmicSpace", + "Cartesian3dVectorGeometricSpace", + "AbstractCartesianNdVectorArray", + "CartesianNdVectorArray", + "AbstractTemporalVectorArray", + "TemporalVectorArray", + "AbstractImplicitTemporalVectorArray", + "AbstractParameterizedTemporalVectorArray", + "AbstractTemporalVectorSpace", + "TemporalVectorLinearSpace", +] diff --git a/named_arrays/_core.py b/named_arrays/_core.py index 8d0640f6..17f87d0f 100644 --- a/named_arrays/_core.py +++ b/named_arrays/_core.py @@ -11,40 +11,40 @@ import named_arrays as na __all__ = [ - 'QuantityLike', - 'StartT', - 'StopT', - 'named_array_like', - 'get_dtype', - 'value', - 'type_array', - 'broadcast_shapes', - 'shape_broadcasted', - 'ndindex', - 'indices', - 'flatten_axes', - 'axis_normalized', - 'explicit', - 'AbstractArray', - 'ArrayLike', - 'AbstractExplicitArray', - 'AbstractImplicitArray', - 'AbstractRandomMixin', - 'AbstractRangeMixin', - 'AbstractSymmetricRangeMixin', - 'AbstractRandomSample', - 'AbstractParameterizedArray', - 'AbstractLinearParameterizedArrayMixin', - 'AbstractArrayRange', - 'AbstractSpace', - 'AbstractLinearSpace', - 'strata', - 'AbstractStratifiedRandomSpace', - 'AbstractLogarithmicSpace', - 'AbstractGeometricSpace', - 'AbstractUniformRandomSample', - 'AbstractNormalRandomSample', - 'AbstractPoissonRandomSample', + "QuantityLike", + "StartT", + "StopT", + "named_array_like", + "get_dtype", + "value", + "type_array", + "broadcast_shapes", + "shape_broadcasted", + "ndindex", + "indices", + "flatten_axes", + "axis_normalized", + "explicit", + "AbstractArray", + "ArrayLike", + "AbstractExplicitArray", + "AbstractImplicitArray", + "AbstractRandomMixin", + "AbstractRangeMixin", + "AbstractSymmetricRangeMixin", + "AbstractRandomSample", + "AbstractParameterizedArray", + "AbstractLinearParameterizedArrayMixin", + "AbstractArrayRange", + "AbstractSpace", + "AbstractLinearSpace", + "strata", + "AbstractStratifiedRandomSpace", + "AbstractLogarithmicSpace", + "AbstractGeometricSpace", + "AbstractUniformRandomSample", + "AbstractNormalRandomSample", + "AbstractPoissonRandomSample", ] QuantityLike = Union[int, float, complex, np.ndarray, u.Quantity] diff --git a/named_arrays/_functions/function_array_functions.py b/named_arrays/_functions/function_array_functions.py index c33c0eba..c97e9e94 100644 --- a/named_arrays/_functions/function_array_functions.py +++ b/named_arrays/_functions/function_array_functions.py @@ -1,5 +1,4 @@ from typing import Callable, Sequence -import dataclasses import numpy as np import astropy.units as u import named_arrays as na @@ -15,7 +14,6 @@ "array_function_percentile_like", "array_function_arg_reduce", "array_function_stack_like", - "broadcast_to", "tranpose", "moveaxis", "reshape", diff --git a/named_arrays/_named_array_functions.py b/named_arrays/_named_array_functions.py index c35e090d..604987e9 100644 --- a/named_arrays/_named_array_functions.py +++ b/named_arrays/_named_array_functions.py @@ -6,22 +6,22 @@ import named_arrays as na __all__ = [ - '_named_array_function', - 'asarray', - 'asanyarray', - 'arange', - 'step', - 'linspace', - 'logspace', - 'geomspace', - 'ndim', - 'shape', - 'unit', - 'unit_normalized', - 'broadcast_to', - 'stack', - 'concatenate', - 'add_axes', + "_named_array_function", + "asarray", + "asanyarray", + "arange", + "step", + "linspace", + "logspace", + "geomspace", + "ndim", + "shape", + "unit", + "unit_normalized", + "broadcast_to", + "stack", + "concatenate", + "add_axes", "vmr", "mean_trimmed", "interp", @@ -29,8 +29,8 @@ "histogram2d", "histogramdd", "convolve", - 'jacobian', - 'despike', + "jacobian", + "despike", ] NDArrayT = TypeVar("NDArrayT", bound=np.ndarray) diff --git a/named_arrays/_scalars/scalars.py b/named_arrays/_scalars/scalars.py index b71d1ff6..81d723ad 100644 --- a/named_arrays/_scalars/scalars.py +++ b/named_arrays/_scalars/scalars.py @@ -1,5 +1,5 @@ from __future__ import annotations -from typing import TypeVar, Generic, ClassVar, Type, Sequence, Callable, Collection, Any, Union, cast, Dict +from typing import TypeVar, Generic, ClassVar, Type, Sequence, Callable, Collection, Any, Union from typing_extensions import Self import abc import dataclasses @@ -11,25 +11,26 @@ import xarray as xr __all__ = [ - 'ScalarStartT', - 'ScalarStopT', - 'ScalarTypeError', - 'as_named_array', - 'AbstractScalar', - 'AbstractScalarArray', - 'ScalarLike', - 'ScalarArray', - 'AbstractImplicitScalarArray', - 'ScalarUniformRandomSample', - 'ScalarNormalRandomSample', - 'ScalarPoissonRandomSample', - 'AbstractParameterizedScalarArray', - 'ScalarArrayRange', - 'AbstractScalarSpace', - 'ScalarLinearSpace', - 'ScalarStratifiedRandomSpace', - 'ScalarLogarithmicSpace', - 'ScalarGeometricSpace', + "ScalarStartT", + "ScalarStopT", + "ScalarTypeError", + "as_named_array", + "AbstractScalar", + "AbstractScalarArray", + "ScalarLike", + "ScalarArray", + "AbstractImplicitScalarArray", + "AbstractScalarRandomSample", + "ScalarUniformRandomSample", + "ScalarNormalRandomSample", + "ScalarPoissonRandomSample", + "AbstractParameterizedScalarArray", + "ScalarArrayRange", + "AbstractScalarSpace", + "ScalarLinearSpace", + "ScalarStratifiedRandomSpace", + "ScalarLogarithmicSpace", + "ScalarGeometricSpace", ] NDArrayT = TypeVar('NDArrayT', bound=npt.ArrayLike) diff --git a/named_arrays/_scalars/uncertainties/uncertainties.py b/named_arrays/_scalars/uncertainties/uncertainties.py index 827fb378..ccd64808 100644 --- a/named_arrays/_scalars/uncertainties/uncertainties.py +++ b/named_arrays/_scalars/uncertainties/uncertainties.py @@ -10,22 +10,24 @@ __all__ = [ "nominal", - 'UncertainScalarStartT', - 'UncertainScalarStopT', - 'UncertainScalarTypeError', - 'AbstractUncertainScalarArray', - 'UncertainScalarArray', - 'UniformUncertainScalarArray', - 'NormalUncertainScalarArray', - 'UncertainScalarUniformRandomSample', - 'UncertainScalarNormalRandomSample', - 'UncertainScalarPoissionRandomSample', - 'AbstractParameterizedUncertainScalarArray', - 'AbstractUncertainScalarSpace', - 'UncertainScalarLinearSpace', - 'UncertainScalarStratifiedRandomSpace', - 'UncertainScalarLogarithmicSpace', - 'UncertainScalarGeometricSpace', + "UncertainScalarStartT", + "UncertainScalarStopT", + "UncertainScalarTypeError", + "AbstractUncertainScalarArray", + "UncertainScalarArray", + "AbstractImplicitUncertainScalarArray", + "UniformUncertainScalarArray", + "NormalUncertainScalarArray", + "AbstractUncertainScalarRandomSample", + "UncertainScalarUniformRandomSample", + "UncertainScalarNormalRandomSample", + "UncertainScalarPoissionRandomSample", + "AbstractParameterizedUncertainScalarArray", + "AbstractUncertainScalarSpace", + "UncertainScalarLinearSpace", + "UncertainScalarStratifiedRandomSpace", + "UncertainScalarLogarithmicSpace", + "UncertainScalarGeometricSpace", ] AnyT = TypeVar("AnyT") diff --git a/named_arrays/_vectors/cartesian/vectors_cartesian.py b/named_arrays/_vectors/cartesian/vectors_cartesian.py index 34f52967..80f27bc2 100644 --- a/named_arrays/_vectors/cartesian/vectors_cartesian.py +++ b/named_arrays/_vectors/cartesian/vectors_cartesian.py @@ -1,5 +1,5 @@ from __future__ import annotations -from typing import TypeVar, Generic, Type +from typing import TypeVar, Type from typing_extensions import Self import abc import dataclasses @@ -8,19 +8,19 @@ import named_arrays as na __all__ = [ - 'AbstractCartesianVectorArray', - 'AbstractExplicitCartesianVectorArray', - 'AbstractImplicitCartesianVectorArray', - 'AbstractCartesianVectorRandomSample', - 'AbstractCartesianVectorUniformRandomSample', - 'AbstractCartesianVectorNormalRandomSample', - 'AbstractParameterizedCartesianVectorArray', - 'AbstractCartesianVectorArrayRange', - 'AbstractCartesianVectorSpace', - 'AbstractCartesianVectorLinearSpace', - 'AbstractCartesianVectorStratifiedRandomSpace', - 'AbstractCartesianVectorLogarithmicSpace', - 'AbstractCartesianVectorGeometricSpace', + "AbstractCartesianVectorArray", + "AbstractExplicitCartesianVectorArray", + "AbstractImplicitCartesianVectorArray", + "AbstractCartesianVectorRandomSample", + "AbstractCartesianVectorUniformRandomSample", + "AbstractCartesianVectorNormalRandomSample", + "AbstractParameterizedCartesianVectorArray", + "AbstractCartesianVectorArrayRange", + "AbstractCartesianVectorSpace", + "AbstractCartesianVectorLinearSpace", + "AbstractCartesianVectorStratifiedRandomSpace", + "AbstractCartesianVectorLogarithmicSpace", + "AbstractCartesianVectorGeometricSpace", ] diff --git a/named_arrays/_vectors/cartesian/vectors_cartesian_2d.py b/named_arrays/_vectors/cartesian/vectors_cartesian_2d.py index 0b29e8f2..a3d4b627 100644 --- a/named_arrays/_vectors/cartesian/vectors_cartesian_2d.py +++ b/named_arrays/_vectors/cartesian/vectors_cartesian_2d.py @@ -1,27 +1,25 @@ from __future__ import annotations from typing import TypeVar, Type, Generic, Sequence import math -import numpy as np from typing_extensions import Self import abc import dataclasses -import astropy.units as u import named_arrays as na __all__ = [ - 'AbstractCartesian2dVectorArray', - 'Cartesian2dVectorArray', - 'AbstractImplicitCartesian2dVectorArray', - 'AbstractCartesian2dVectorRandomSample', - 'Cartesian2dVectorUniformRandomSample', - 'Cartesian2dVectorNormalRandomSample', - 'AbstractParameterizedCartesian2dVectorArray', - 'Cartesian2dVectorArrayRange', - 'AbstractCartesian2dVectorSpace', - 'Cartesian2dVectorLinearSpace', - 'Cartesian2dVectorStratifiedRandomSpace', - 'Cartesian2dVectorLogarithmicSpace', - 'Cartesian2dVectorGeometricSpace', + "AbstractCartesian2dVectorArray", + "Cartesian2dVectorArray", + "AbstractImplicitCartesian2dVectorArray", + "AbstractCartesian2dVectorRandomSample", + "Cartesian2dVectorUniformRandomSample", + "Cartesian2dVectorNormalRandomSample", + "AbstractParameterizedCartesian2dVectorArray", + "Cartesian2dVectorArrayRange", + "AbstractCartesian2dVectorSpace", + "Cartesian2dVectorLinearSpace", + "Cartesian2dVectorStratifiedRandomSpace", + "Cartesian2dVectorLogarithmicSpace", + "Cartesian2dVectorGeometricSpace", ] XT = TypeVar('XT', bound=na.ArrayLike) diff --git a/named_arrays/_vectors/cartesian/vectors_cartesian_3d.py b/named_arrays/_vectors/cartesian/vectors_cartesian_3d.py index 208e6e86..41b7c82b 100644 --- a/named_arrays/_vectors/cartesian/vectors_cartesian_3d.py +++ b/named_arrays/_vectors/cartesian/vectors_cartesian_3d.py @@ -8,19 +8,19 @@ import named_arrays as na __all__ = [ - 'AbstractCartesian3dVectorArray', - 'Cartesian3dVectorArray', - 'AbstractImplicitCartesian3dVectorArray', - 'AbstractCartesian3dVectorRandomSample', - 'Cartesian3dVectorUniformRandomSample', - 'Cartesian3dVectorNormalRandomSample', - 'AbstractParameterizedCartesian3dVectorArray', - 'Cartesian3dVectorArrayRange', - 'AbstractCartesian3dVectorSpace', - 'Cartesian3dVectorLinearSpace', - 'Cartesian3dVectorStratifiedRandomSpace', - 'Cartesian3dVectorLogarithmicSpace', - 'Cartesian3dVectorGeometricSpace', + "AbstractCartesian3dVectorArray", + "Cartesian3dVectorArray", + "AbstractImplicitCartesian3dVectorArray", + "AbstractCartesian3dVectorRandomSample", + "Cartesian3dVectorUniformRandomSample", + "Cartesian3dVectorNormalRandomSample", + "AbstractParameterizedCartesian3dVectorArray", + "Cartesian3dVectorArrayRange", + "AbstractCartesian3dVectorSpace", + "Cartesian3dVectorLinearSpace", + "Cartesian3dVectorStratifiedRandomSpace", + "Cartesian3dVectorLogarithmicSpace", + "Cartesian3dVectorGeometricSpace", ] XT = TypeVar('XT', bound=na.ArrayLike) diff --git a/named_arrays/_vectors/cartesian/vectors_cartesian_nd.py b/named_arrays/_vectors/cartesian/vectors_cartesian_nd.py index 267f42ad..1dfbe580 100644 --- a/named_arrays/_vectors/cartesian/vectors_cartesian_nd.py +++ b/named_arrays/_vectors/cartesian/vectors_cartesian_nd.py @@ -5,7 +5,7 @@ __all__ = [ "AbstractCartesianNdVectorArray", - "CartesianNdVectorArray" + "CartesianNdVectorArray", ] diff --git a/named_arrays/_vectors/vectors.py b/named_arrays/_vectors/vectors.py index 89163cf3..f3c3c405 100644 --- a/named_arrays/_vectors/vectors.py +++ b/named_arrays/_vectors/vectors.py @@ -1,5 +1,5 @@ from __future__ import annotations -from typing import ClassVar, Type, Sequence, Callable, Collection, Any, Generic, TypeVar +from typing import ClassVar, Type, Sequence, Callable, Collection, Any, TypeVar from typing_extensions import Self import abc import dataclasses @@ -8,23 +8,23 @@ import named_arrays as na __all__ = [ - 'VectorPrototypeT', - 'VectorTypeError', - 'AbstractVectorArray', - 'AbstractScalarOrVectorArray', - 'AbstractExplicitVectorArray', - 'AbstractImplicitVectorArray', - 'AbstractVectorRandomSample', - 'AbstractVectorUniformRandomSample', - 'AbstractVectorNormalRandomSample', - 'AbstractParameterizedVectorArray', - 'AbstractVectorArrayRange', - 'AbstractVectorSpace', - 'AbstractVectorLinearSpace', - 'AbstractVectorStratifiedRandomSpace', - 'AbstractVectorLogarithmicSpace', - 'AbstractVectorGeometricSpace', - 'AbstractWcsVector', + "VectorPrototypeT", + "VectorTypeError", + "AbstractVectorArray", + "AbstractScalarOrVectorArray", + "AbstractExplicitVectorArray", + "AbstractImplicitVectorArray", + "AbstractVectorRandomSample", + "AbstractVectorUniformRandomSample", + "AbstractVectorNormalRandomSample", + "AbstractParameterizedVectorArray", + "AbstractVectorArrayRange", + "AbstractVectorSpace", + "AbstractVectorLinearSpace", + "AbstractVectorStratifiedRandomSpace", + "AbstractVectorLogarithmicSpace", + "AbstractVectorGeometricSpace", + "AbstractWcsVector", ] VectorPrototypeT = TypeVar("VectorPrototypeT", bound="AbstractVectorArray") diff --git a/named_arrays/_vectors/vectors_spectral.py b/named_arrays/_vectors/vectors_spectral.py index 43b7eed4..80e28679 100644 --- a/named_arrays/_vectors/vectors_spectral.py +++ b/named_arrays/_vectors/vectors_spectral.py @@ -6,12 +6,12 @@ import named_arrays as na __all__ = [ - 'AbstractSpectralVectorArray', - 'SpectralVectorArray', - 'AbstractImplicitSpectralVectorArray', - 'AbstractParameterizedSpectralVectorArray', - 'AbstractSpectralVectorSpace', - 'SpectralVectorLinearSpace', + "AbstractSpectralVectorArray", + "SpectralVectorArray", + "AbstractImplicitSpectralVectorArray", + "AbstractParameterizedSpectralVectorArray", + "AbstractSpectralVectorSpace", + "SpectralVectorLinearSpace", ] diff --git a/named_arrays/_vectors/vectors_temporal.py b/named_arrays/_vectors/vectors_temporal.py index 3d996795..691f3b41 100644 --- a/named_arrays/_vectors/vectors_temporal.py +++ b/named_arrays/_vectors/vectors_temporal.py @@ -6,13 +6,12 @@ import named_arrays as na __all__ = [ - 'AbstractTemporalVectorArray', - 'TemporalVectorArray', - 'AbstractImplicitTemporalVectorArray', - 'AbstractParameterizedTemporalVectorArray', - 'AbstractTemporalVectorSpace', - 'TemporalVectorLinearSpace', - + "AbstractTemporalVectorArray", + "TemporalVectorArray", + "AbstractImplicitTemporalVectorArray", + "AbstractParameterizedTemporalVectorArray", + "AbstractTemporalVectorSpace", + "TemporalVectorLinearSpace", ] TimeT = TypeVar("TimeT", bound=na.ArrayLike) From 157e6110e4a81936e706a2fe058d882fd7046dff Mon Sep 17 00:00:00 2001 From: Roy Smart Date: Mon, 24 Nov 2025 10:41:32 -0700 Subject: [PATCH 04/19] Added all vectors to `__init__.py` --- named_arrays/__init__.py | 162 ++++++++++++++++-- named_arrays/_vectors/vectors_positional.py | 13 +- named_arrays/_vectors/vectors_spectral.py | 1 - .../_vectors/vectors_spectral_directional.py | 14 +- .../_vectors/vectors_spectral_positional.py | 12 +- .../_vectors/vectors_temporal_positional.py | 14 +- .../_vectors/vectors_temporal_spectral.py | 14 +- .../vectors_temporal_spectral_directional.py | 14 +- .../vectors_temporal_spectral_positional.py | 16 +- 9 files changed, 200 insertions(+), 60 deletions(-) diff --git a/named_arrays/__init__.py b/named_arrays/__init__.py index c5a3b024..dbb203a9 100644 --- a/named_arrays/__init__.py +++ b/named_arrays/__init__.py @@ -190,16 +190,92 @@ AbstractTemporalVectorSpace, TemporalVectorLinearSpace, ) -from ._vectors.vectors_spectral import * -from ._vectors.vectors_positional import * -from ._vectors.vectors_directional import * -from ._vectors.vectors_spectral_positional import * -from ._vectors.vectors_spectral_directional import * -from ._vectors.vectors_temporal_spectral import * -from ._vectors.vectors_temporal_positional import * -from ._vectors.vectors_temporal_spectral_positional import * -from ._vectors.vectors_temporal_spectral_directional import * -from ._vectors.vectors_input_output import * +from ._vectors.vectors_spectral import ( + AbstractSpectralVectorArray, + SpectralVectorArray, + AbstractImplicitSpectralVectorArray, + AbstractParameterizedSpectralVectorArray, + AbstractSpectralVectorSpace, + SpectralVectorLinearSpace, +) +from ._vectors.vectors_positional import ( + AbstractPositionalVectorArray, + PositionalVectorArray, + AbstractImplicitPositionalVectorArray, + AbstractParameterizedPositionalVectorArray, + AbstractPositionalVectorSpace, + PositionalVectorLinearSpace, +) +from ._vectors.vectors_directional import ( + AbstractDirectionalVectorArray, + DirectionalVectorArray, + AbstractImplicitDirectionalVectorArray, + AbstractParameterizedDirectionalVectorArray, + AbstractDirectionalVectorSpace, + DirectionalVectorLinearSpace, +) +from ._vectors.vectors_spectral_positional import ( + AbstractSpectralPositionalVectorArray, + SpectralPositionalVectorArray, + AbstractImplicitSpectralPositionalVectorArray, + AbstractParameterizedSpectralPositionalVectorArray, + AbstractSpectralPositionalVectorSpace, + SpectralPositionalVectorLinearSpace, +) +from ._vectors.vectors_spectral_directional import ( + AbstractSpectralDirectionalVectorArray, + SpectralDirectionalVectorArray, + AbstractImplicitSpectralDirectionalVectorArray, + AbstractParameterizedSpectralDirectionalVectorArray, + AbstractSpectralDirectionalVectorSpace, + SpectralDirectionalVectorLinearSpace, + WcsSpectralDirectionalVectorArray, +) +from ._vectors.vectors_temporal_spectral import ( + AbstractTemporalSpectralVectorArray, + TemporalSpectralVectorArray, + AbstractImplicitTemporalSpectralVectorArray, + AbstractParameterizedTemporalSpectralVectorArray, + AbstractTemporalSpectralVectorSpace, + TemporalSpectralVectorLinearSpace, + ExplicitTemporalWcsSpectralVectorArray, +) +from ._vectors.vectors_temporal_positional import ( + AbstractTemporalPositionalVectorArray, + TemporalPositionalVectorArray, + AbstractImplicitTemporalPositionalVectorArray, + AbstractParameterizedTemporalPositionalVectorArray, + AbstractTemporalPositionalVectorSpace, + TemporalPositionalVectorLinearSpace, + ExplicitTemporalWcsPositionalVectorArray, +) +from ._vectors.vectors_temporal_spectral_positional import ( + AbstractTemporalSpectralPositionalVectorArray, + TemporalSpectralPositionalVectorArray, + AbstractImplicitTemporalSpectralPositionalVectorArray, + AbstractParameterizedTemporalSpectralPositionalVectorArray, + AbstractTemporalSpectralPositionalVectorSpace, + TemporalSpectralPositionalVectorLinearSpace, + ExplicitTemporalSpectralWcsPositionalVectorArray, + ExplicitTemporalWcsSpectralPositionalVectorArray, +) +from ._vectors.vectors_temporal_spectral_directional import ( + AbstractTemporalSpectralDirectionalVectorArray, + TemporalSpectralDirectionalVectorArray, + AbstractImplicitTemporalSpectralDirectionalVectorArray, + AbstractParameterizedTemporalSpectralDirectionalVectorArray, + AbstractTemporalSpectralDirectionalVectorSpace, + TemporalSpectralDirectionalVectorLinearSpace, + ExplicitTemporalWcsSpectralDirectionalVectorArray, +) +from ._vectors.vectors_input_output import ( + AbstractInputOutputVectorArray, + InputOutputVectorArray, + AbstractImplicitInputOutputVectorArray, + AbstractParameterizedInputOutputVectorArray, + AbstractInputOutputVectorSpace, + InputOutputVectorLinearSpace, +) from ._matrices.matrices import * from ._matrices.cartesian.matrices_cartesian import * from ._matrices.cartesian.matrices_cartesian_2d import * @@ -389,4 +465,70 @@ "AbstractParameterizedTemporalVectorArray", "AbstractTemporalVectorSpace", "TemporalVectorLinearSpace", + "AbstractSpectralVectorArray", + "SpectralVectorArray", + "AbstractImplicitSpectralVectorArray", + "AbstractParameterizedSpectralVectorArray", + "AbstractSpectralVectorSpace", + "SpectralVectorLinearSpace", + "AbstractPositionalVectorArray", + "PositionalVectorArray", + "AbstractImplicitPositionalVectorArray", + "AbstractParameterizedPositionalVectorArray", + "AbstractPositionalVectorSpace", + "PositionalVectorLinearSpace", + "AbstractDirectionalVectorArray", + "DirectionalVectorArray", + "AbstractImplicitDirectionalVectorArray", + "AbstractParameterizedDirectionalVectorArray", + "AbstractDirectionalVectorSpace", + "DirectionalVectorLinearSpace", + "AbstractSpectralPositionalVectorArray", + "SpectralPositionalVectorArray", + "AbstractImplicitSpectralPositionalVectorArray", + "AbstractParameterizedSpectralPositionalVectorArray", + "AbstractSpectralPositionalVectorSpace", + "SpectralPositionalVectorLinearSpace", + "AbstractSpectralDirectionalVectorArray", + "SpectralDirectionalVectorArray", + "AbstractImplicitSpectralDirectionalVectorArray", + "AbstractParameterizedSpectralDirectionalVectorArray", + "AbstractSpectralDirectionalVectorSpace", + "SpectralDirectionalVectorLinearSpace", + "WcsSpectralDirectionalVectorArray", + "AbstractTemporalSpectralVectorArray", + "TemporalSpectralVectorArray", + "AbstractImplicitTemporalSpectralVectorArray", + "AbstractParameterizedTemporalSpectralVectorArray", + "AbstractTemporalSpectralVectorSpace", + "TemporalSpectralVectorLinearSpace", + "ExplicitTemporalWcsSpectralVectorArray", + "AbstractTemporalPositionalVectorArray", + "TemporalPositionalVectorArray", + "AbstractImplicitTemporalPositionalVectorArray", + "AbstractParameterizedTemporalPositionalVectorArray", + "AbstractTemporalPositionalVectorSpace", + "TemporalPositionalVectorLinearSpace", + "ExplicitTemporalWcsPositionalVectorArray", + "AbstractTemporalSpectralPositionalVectorArray", + "TemporalSpectralPositionalVectorArray", + "AbstractImplicitTemporalSpectralPositionalVectorArray", + "AbstractParameterizedTemporalSpectralPositionalVectorArray", + "AbstractTemporalSpectralPositionalVectorSpace", + "TemporalSpectralPositionalVectorLinearSpace", + "ExplicitTemporalSpectralWcsPositionalVectorArray", + "ExplicitTemporalWcsSpectralPositionalVectorArray", + "AbstractTemporalSpectralDirectionalVectorArray", + "TemporalSpectralDirectionalVectorArray", + "AbstractImplicitTemporalSpectralDirectionalVectorArray", + "AbstractParameterizedTemporalSpectralDirectionalVectorArray", + "AbstractTemporalSpectralDirectionalVectorSpace", + "TemporalSpectralDirectionalVectorLinearSpace", + "ExplicitTemporalWcsSpectralDirectionalVectorArray", + "AbstractInputOutputVectorArray", + "InputOutputVectorArray", + "AbstractImplicitInputOutputVectorArray", + "AbstractParameterizedInputOutputVectorArray", + "AbstractInputOutputVectorSpace", + "InputOutputVectorLinearSpace", ] diff --git a/named_arrays/_vectors/vectors_positional.py b/named_arrays/_vectors/vectors_positional.py index 54694411..383212e9 100644 --- a/named_arrays/_vectors/vectors_positional.py +++ b/named_arrays/_vectors/vectors_positional.py @@ -6,13 +6,12 @@ import named_arrays as na __all__ = [ - 'AbstractPositionalVectorArray', - 'PositionalVectorArray', - 'AbstractImplicitPositionalVectorArray', - 'AbstractParameterizedPositionalVectorArray', - 'AbstractPositionalVectorSpace', - 'PositionalVectorLinearSpace', - + "AbstractPositionalVectorArray", + "PositionalVectorArray", + "AbstractImplicitPositionalVectorArray", + "AbstractParameterizedPositionalVectorArray", + "AbstractPositionalVectorSpace", + "PositionalVectorLinearSpace", ] PositionT = TypeVar("PositionT", bound=na.ArrayLike) diff --git a/named_arrays/_vectors/vectors_spectral.py b/named_arrays/_vectors/vectors_spectral.py index 80e28679..55dd950d 100644 --- a/named_arrays/_vectors/vectors_spectral.py +++ b/named_arrays/_vectors/vectors_spectral.py @@ -12,7 +12,6 @@ "AbstractParameterizedSpectralVectorArray", "AbstractSpectralVectorSpace", "SpectralVectorLinearSpace", - ] WavelengthT = TypeVar("WavelengthT", bound=na.ScalarLike) diff --git a/named_arrays/_vectors/vectors_spectral_directional.py b/named_arrays/_vectors/vectors_spectral_directional.py index f7a9ecc6..3579795e 100644 --- a/named_arrays/_vectors/vectors_spectral_directional.py +++ b/named_arrays/_vectors/vectors_spectral_directional.py @@ -5,13 +5,13 @@ import named_arrays as na __all__ = [ - 'AbstractSpectralDirectionalVectorArray', - 'SpectralDirectionalVectorArray', - 'AbstractImplicitSpectralDirectionalVectorArray', - 'AbstractParameterizedSpectralDirectionalVectorArray', - 'AbstractSpectralDirectionalVectorSpace', - 'SpectralDirectionalVectorLinearSpace', - 'WcsSpectralDirectionalVectorArray', + "AbstractSpectralDirectionalVectorArray", + "SpectralDirectionalVectorArray", + "AbstractImplicitSpectralDirectionalVectorArray", + "AbstractParameterizedSpectralDirectionalVectorArray", + "AbstractSpectralDirectionalVectorSpace", + "SpectralDirectionalVectorLinearSpace", + "WcsSpectralDirectionalVectorArray", ] DirectionT = TypeVar("DirectionT", bound=na.ArrayLike) diff --git a/named_arrays/_vectors/vectors_spectral_positional.py b/named_arrays/_vectors/vectors_spectral_positional.py index b7ab40d4..e83d94e8 100644 --- a/named_arrays/_vectors/vectors_spectral_positional.py +++ b/named_arrays/_vectors/vectors_spectral_positional.py @@ -5,12 +5,12 @@ import named_arrays as na __all__ = [ - 'AbstractSpectralPositionalVectorArray', - 'SpectralPositionalVectorArray', - 'AbstractImplicitSpectralPositionalVectorArray', - 'AbstractParameterizedSpectralPositionalVectorArray', - 'AbstractSpectralPositionalVectorSpace', - 'SpectralPositionalVectorLinearSpace', + "AbstractSpectralPositionalVectorArray", + "SpectralPositionalVectorArray", + "AbstractImplicitSpectralPositionalVectorArray", + "AbstractParameterizedSpectralPositionalVectorArray", + "AbstractSpectralPositionalVectorSpace", + "SpectralPositionalVectorLinearSpace", ] PositionT = TypeVar("PositionT", bound=na.ArrayLike) diff --git a/named_arrays/_vectors/vectors_temporal_positional.py b/named_arrays/_vectors/vectors_temporal_positional.py index cd23eaf5..b427df04 100644 --- a/named_arrays/_vectors/vectors_temporal_positional.py +++ b/named_arrays/_vectors/vectors_temporal_positional.py @@ -5,13 +5,13 @@ import named_arrays as na __all__ = [ - 'AbstractTemporalPositionalVectorArray', - 'TemporalPositionalVectorArray', - 'AbstractImplicitTemporalPositionalVectorArray', - 'AbstractParameterizedTemporalPositionalVectorArray', - 'AbstractTemporalPositionalVectorSpace', - 'TemporalPositionalVectorLinearSpace', - 'ExplicitTemporalWcsPositionalVectorArray', + "AbstractTemporalPositionalVectorArray", + "TemporalPositionalVectorArray", + "AbstractImplicitTemporalPositionalVectorArray", + "AbstractParameterizedTemporalPositionalVectorArray", + "AbstractTemporalPositionalVectorSpace", + "TemporalPositionalVectorLinearSpace", + "ExplicitTemporalWcsPositionalVectorArray", ] TimeT = TypeVar("TimeT", bound=na.ArrayLike) diff --git a/named_arrays/_vectors/vectors_temporal_spectral.py b/named_arrays/_vectors/vectors_temporal_spectral.py index cd47d222..9589ae64 100644 --- a/named_arrays/_vectors/vectors_temporal_spectral.py +++ b/named_arrays/_vectors/vectors_temporal_spectral.py @@ -5,13 +5,13 @@ import named_arrays as na __all__ = [ - 'AbstractTemporalSpectralVectorArray', - 'TemporalSpectralVectorArray', - 'AbstractImplicitTemporalSpectralVectorArray', - 'AbstractParameterizedTemporalSpectralVectorArray', - 'AbstractTemporalSpectralVectorSpace', - 'TemporalSpectralVectorLinearSpace', - 'ExplicitTemporalWcsSpectralVectorArray', + "AbstractTemporalSpectralVectorArray", + "TemporalSpectralVectorArray", + "AbstractImplicitTemporalSpectralVectorArray", + "AbstractParameterizedTemporalSpectralVectorArray", + "AbstractTemporalSpectralVectorSpace", + "TemporalSpectralVectorLinearSpace", + "ExplicitTemporalWcsSpectralVectorArray", ] TimeT = TypeVar("TimeT", bound=na.ArrayLike) diff --git a/named_arrays/_vectors/vectors_temporal_spectral_directional.py b/named_arrays/_vectors/vectors_temporal_spectral_directional.py index b9e7ecc1..c62d8332 100644 --- a/named_arrays/_vectors/vectors_temporal_spectral_directional.py +++ b/named_arrays/_vectors/vectors_temporal_spectral_directional.py @@ -5,13 +5,13 @@ import named_arrays as na __all__ = [ - 'AbstractTemporalSpectralDirectionalVectorArray', - 'TemporalSpectralDirectionalVectorArray', - 'AbstractImplicitTemporalSpectralDirectionalVectorArray', - 'AbstractParameterizedTemporalSpectralDirectionalVectorArray', - 'AbstractTemporalSpectralDirectionalVectorSpace', - 'TemporalSpectralDirectionalVectorLinearSpace', - 'ExplicitTemporalWcsSpectralDirectionalVectorArray', + "AbstractTemporalSpectralDirectionalVectorArray", + "TemporalSpectralDirectionalVectorArray", + "AbstractImplicitTemporalSpectralDirectionalVectorArray", + "AbstractParameterizedTemporalSpectralDirectionalVectorArray", + "AbstractTemporalSpectralDirectionalVectorSpace", + "TemporalSpectralDirectionalVectorLinearSpace", + "ExplicitTemporalWcsSpectralDirectionalVectorArray", ] TimeT = TypeVar("TimeT", bound=na.ArrayLike) diff --git a/named_arrays/_vectors/vectors_temporal_spectral_positional.py b/named_arrays/_vectors/vectors_temporal_spectral_positional.py index a92fda9b..a5f42acd 100644 --- a/named_arrays/_vectors/vectors_temporal_spectral_positional.py +++ b/named_arrays/_vectors/vectors_temporal_spectral_positional.py @@ -5,14 +5,14 @@ import named_arrays as na __all__ = [ - 'AbstractTemporalSpectralPositionalVectorArray', - 'TemporalSpectralPositionalVectorArray', - 'AbstractImplicitTemporalSpectralPositionalVectorArray', - 'AbstractParameterizedTemporalSpectralPositionalVectorArray', - 'AbstractTemporalSpectralPositionalVectorSpace', - 'TemporalSpectralPositionalVectorLinearSpace', - 'ExplicitTemporalSpectralWcsPositionalVectorArray', - 'ExplicitTemporalWcsSpectralPositionalVectorArray', + "AbstractTemporalSpectralPositionalVectorArray", + "TemporalSpectralPositionalVectorArray", + "AbstractImplicitTemporalSpectralPositionalVectorArray", + "AbstractParameterizedTemporalSpectralPositionalVectorArray", + "AbstractTemporalSpectralPositionalVectorSpace", + "TemporalSpectralPositionalVectorLinearSpace", + "ExplicitTemporalSpectralWcsPositionalVectorArray", + "ExplicitTemporalWcsSpectralPositionalVectorArray", ] TimeT = TypeVar("TimeT", bound=na.ArrayLike) From f5154c96d021256f4463b2f442869e9f4c1e8b73 Mon Sep 17 00:00:00 2001 From: Roy Smart Date: Mon, 24 Nov 2025 11:04:05 -0700 Subject: [PATCH 05/19] Added all matrices to `__init__.py` --- named_arrays/__init__.py | 152 ++++++++++++++++-- .../_matrices/cartesian/matrices_cartesian.py | 14 +- .../cartesian/matrices_cartesian_2d.py | 12 +- .../cartesian/matrices_cartesian_3d.py | 16 +- .../cartesian/matrices_cartesian_nd.py | 3 +- named_arrays/_matrices/matrices.py | 14 +- .../_matrices/matrices_directional.py | 4 +- .../_matrices/matrices_input_output.py | 1 - named_arrays/_matrices/matrices_positional.py | 5 +- named_arrays/_matrices/matrices_spectral.py | 4 +- .../matrices_spectral_directional.py | 5 +- .../_matrices/matrices_spectral_positional.py | 9 +- named_arrays/_matrices/matrices_temporal.py | 4 +- .../_matrices/matrices_temporal_positional.py | 5 +- .../_matrices/matrices_temporal_spectral.py | 5 +- .../matrices_temporal_spectral_directional.py | 5 +- .../matrices_temporal_spectral_positional.py | 5 +- 17 files changed, 186 insertions(+), 77 deletions(-) diff --git a/named_arrays/__init__.py b/named_arrays/__init__.py index dbb203a9..fe03ba08 100644 --- a/named_arrays/__init__.py +++ b/named_arrays/__init__.py @@ -276,22 +276,90 @@ AbstractInputOutputVectorSpace, InputOutputVectorLinearSpace, ) -from ._matrices.matrices import * -from ._matrices.cartesian.matrices_cartesian import * -from ._matrices.cartesian.matrices_cartesian_2d import * -from ._matrices.cartesian.matrices_cartesian_3d import * -from ._matrices.cartesian.matrices_cartesian_nd import * -from ._matrices.matrices_temporal import * -from ._matrices.matrices_spectral import * -from ._matrices.matrices_positional import * -from ._matrices.matrices_directional import * -from ._matrices.matrices_spectral_positional import * -from ._matrices.matrices_spectral_directional import * -from ._matrices.matrices_temporal_spectral import * -from ._matrices.matrices_temporal_positional import * -from ._matrices.matrices_temporal_spectral_positional import * -from ._matrices.matrices_temporal_spectral_directional import * -from ._matrices.matrices_input_output import * +from ._matrices.matrices import ( + AbstractMatrixArray, + AbstractExplicitMatrixArray, + AbstractImplicitMatrixArray, + AbstractMatrixRandomSample, + AbstractMatrixUniformRandomSample, + AbstractMatrixNormalRandomSample, + AbstractParameterizedMatrixArray, +) +from ._matrices.cartesian.matrices_cartesian import ( + AbstractCartesianMatrixArray, + AbstractExplicitCartesianMatrixArray, + AbstractImplicitCartesianMatrixArray, + AbstractCartesianMatrixRandomSample, + AbstractCartesianMatrixUniformRandomSample, + AbstractCartesianMatrixNormalRandomSample, + AbstractParameterizedCartesianMatrixArray, +) +from ._matrices.cartesian.matrices_cartesian_2d import ( + AbstractCartesian2dMatrixArray, + Cartesian2dMatrixArray, + AbstractImplicitCartesian2dMatrixArray, + Cartesian2dIdentityMatrixArray, + AbstractCartesian2dRotationMatrixArray, + Cartesian2dRotationMatrixArray, +) +from ._matrices.cartesian.matrices_cartesian_3d import ( + AbstractCartesian3dMatrixArray, + Cartesian3dMatrixArray, + AbstractImplicitCartesian3dMatrixArray, + Cartesian3dIdentityMatrixArray, + AbstractCartesian3dRotationMatrixArray, + Cartesian3dXRotationMatrixArray, + Cartesian3dYRotationMatrixArray, + Cartesian3dZRotationMatrixArray, +) +from ._matrices.cartesian.matrices_cartesian_nd import ( + AbstractCartesianNdMatrixArray, + CartesianNdMatrixArray, +) +from ._matrices.matrices_temporal import ( + AbstractTemporalMatrixArray, + TemporalMatrixArray, +) +from ._matrices.matrices_spectral import ( + AbstractSpectralMatrixArray, + SpectralMatrixArray, +) +from ._matrices.matrices_positional import ( + AbstractPositionalMatrixArray, + PositionalMatrixArray, +) +from ._matrices.matrices_directional import ( + AbstractDirectionalMatrixArray, + DirectionalMatrixArray, +) +from ._matrices.matrices_spectral_positional import ( + AbstractSpectralPositionalMatrixArray, + SpectralPositionalMatrixArray, +) +from ._matrices.matrices_spectral_directional import ( + AbstractSpectralDirectionalMatrixArray, + SpectralDirectionalMatrixArray, +) +from ._matrices.matrices_temporal_spectral import ( + AbstractTemporalSpectralMatrixArray, + TemporalSpectralMatrixArray, +) +from ._matrices.matrices_temporal_positional import ( + AbstractTemporalPositionalMatrixArray, + TemporalPositionalMatrixArray, +) +from ._matrices.matrices_temporal_spectral_positional import ( + AbstractTemporalSpectralPositionalMatrixArray, + TemporalSpectralPositionalMatrixArray, +) +from ._matrices.matrices_temporal_spectral_directional import ( + AbstractTemporalSpectralDirectionalMatrixArray, + TemporalSpectralDirectionalMatrixArray, +) +from ._matrices.matrices_input_output import ( + AbstractInputOutputMatrixArray, + InputOutputMatrixArray, +) from ._functions.functions import * __all__ = [ @@ -531,4 +599,56 @@ "AbstractParameterizedInputOutputVectorArray", "AbstractInputOutputVectorSpace", "InputOutputVectorLinearSpace", + "AbstractMatrixArray", + "AbstractExplicitMatrixArray", + "AbstractImplicitMatrixArray", + "AbstractMatrixRandomSample", + "AbstractMatrixUniformRandomSample", + "AbstractMatrixNormalRandomSample", + "AbstractParameterizedMatrixArray", + "AbstractCartesianMatrixArray", + "AbstractExplicitCartesianMatrixArray", + "AbstractImplicitCartesianMatrixArray", + "AbstractCartesianMatrixRandomSample", + "AbstractCartesianMatrixUniformRandomSample", + "AbstractCartesianMatrixNormalRandomSample", + "AbstractParameterizedCartesianMatrixArray", + "AbstractCartesian2dMatrixArray", + "Cartesian2dMatrixArray", + "AbstractImplicitCartesian2dMatrixArray", + "Cartesian2dIdentityMatrixArray", + "AbstractCartesian2dRotationMatrixArray", + "Cartesian2dRotationMatrixArray", + "AbstractCartesian3dMatrixArray", + "Cartesian3dMatrixArray", + "AbstractImplicitCartesian3dMatrixArray", + "Cartesian3dIdentityMatrixArray", + "AbstractCartesian3dRotationMatrixArray", + "Cartesian3dXRotationMatrixArray", + "Cartesian3dYRotationMatrixArray", + "Cartesian3dZRotationMatrixArray", + "AbstractCartesianNdMatrixArray", + "CartesianNdMatrixArray", + "AbstractTemporalMatrixArray", + "TemporalMatrixArray", + "AbstractSpectralMatrixArray", + "SpectralMatrixArray", + "AbstractPositionalMatrixArray", + "PositionalMatrixArray", + "AbstractDirectionalMatrixArray", + "DirectionalMatrixArray", + "AbstractSpectralPositionalMatrixArray", + "SpectralPositionalMatrixArray", + "AbstractSpectralDirectionalMatrixArray", + "SpectralDirectionalMatrixArray", + "AbstractTemporalSpectralMatrixArray", + "TemporalSpectralMatrixArray", + "AbstractTemporalPositionalMatrixArray", + "TemporalPositionalMatrixArray", + "AbstractTemporalSpectralPositionalMatrixArray", + "TemporalSpectralPositionalMatrixArray", + "AbstractTemporalSpectralDirectionalMatrixArray", + "TemporalSpectralDirectionalMatrixArray", + "AbstractInputOutputMatrixArray", + "InputOutputMatrixArray", ] diff --git a/named_arrays/_matrices/cartesian/matrices_cartesian.py b/named_arrays/_matrices/cartesian/matrices_cartesian.py index 1c6ae445..7dfb4dc1 100644 --- a/named_arrays/_matrices/cartesian/matrices_cartesian.py +++ b/named_arrays/_matrices/cartesian/matrices_cartesian.py @@ -2,13 +2,13 @@ import named_arrays as na __all__ = [ - 'AbstractCartesianMatrixArray', - 'AbstractExplicitCartesianMatrixArray', - 'AbstractImplicitCartesianMatrixArray', - 'AbstractCartesianMatrixRandomSample', - 'AbstractCartesianMatrixUniformRandomSample', - 'AbstractCartesianMatrixNormalRandomSample', - 'AbstractParameterizedCartesianMatrixArray', + "AbstractCartesianMatrixArray", + "AbstractExplicitCartesianMatrixArray", + "AbstractImplicitCartesianMatrixArray", + "AbstractCartesianMatrixRandomSample", + "AbstractCartesianMatrixUniformRandomSample", + "AbstractCartesianMatrixNormalRandomSample", + "AbstractParameterizedCartesianMatrixArray", ] diff --git a/named_arrays/_matrices/cartesian/matrices_cartesian_2d.py b/named_arrays/_matrices/cartesian/matrices_cartesian_2d.py index cd6fa6a5..d780f1e6 100644 --- a/named_arrays/_matrices/cartesian/matrices_cartesian_2d.py +++ b/named_arrays/_matrices/cartesian/matrices_cartesian_2d.py @@ -6,12 +6,12 @@ import named_arrays as na __all__ = [ - 'AbstractCartesian2dMatrixArray', - 'Cartesian2dMatrixArray', - 'AbstractImplicitCartesian2dMatrixArray', - 'Cartesian2dIdentityMatrixArray', - 'AbstractCartesian2dRotationMatrixArray', - 'Cartesian2dRotationMatrixArray' + "AbstractCartesian2dMatrixArray", + "Cartesian2dMatrixArray", + "AbstractImplicitCartesian2dMatrixArray", + "Cartesian2dIdentityMatrixArray", + "AbstractCartesian2dRotationMatrixArray", + "Cartesian2dRotationMatrixArray", ] XT = TypeVar('XT', bound=na.AbstractVectorArray) diff --git a/named_arrays/_matrices/cartesian/matrices_cartesian_3d.py b/named_arrays/_matrices/cartesian/matrices_cartesian_3d.py index 6e1e4d01..e64dcc89 100644 --- a/named_arrays/_matrices/cartesian/matrices_cartesian_3d.py +++ b/named_arrays/_matrices/cartesian/matrices_cartesian_3d.py @@ -6,14 +6,14 @@ import named_arrays as na __all__ = [ - 'AbstractCartesian3dMatrixArray', - 'Cartesian3dMatrixArray', - 'AbstractImplicitCartesian3dMatrixArray', - 'Cartesian3dIdentityMatrixArray', - 'AbstractCartesian3dRotationMatrixArray', - 'Cartesian3dXRotationMatrixArray', - 'Cartesian3dYRotationMatrixArray', - 'Cartesian3dZRotationMatrixArray', + "AbstractCartesian3dMatrixArray", + "Cartesian3dMatrixArray", + "AbstractImplicitCartesian3dMatrixArray", + "Cartesian3dIdentityMatrixArray", + "AbstractCartesian3dRotationMatrixArray", + "Cartesian3dXRotationMatrixArray", + "Cartesian3dYRotationMatrixArray", + "Cartesian3dZRotationMatrixArray", ] XT = TypeVar('XT', bound=na.AbstractVectorArray) diff --git a/named_arrays/_matrices/cartesian/matrices_cartesian_nd.py b/named_arrays/_matrices/cartesian/matrices_cartesian_nd.py index a2f2e6fd..3f49153a 100644 --- a/named_arrays/_matrices/cartesian/matrices_cartesian_nd.py +++ b/named_arrays/_matrices/cartesian/matrices_cartesian_nd.py @@ -1,6 +1,5 @@ from __future__ import annotations -from typing import TypeVar, Generic, Type -import abc +from typing import Type import dataclasses import named_arrays as na diff --git a/named_arrays/_matrices/matrices.py b/named_arrays/_matrices/matrices.py index 21b3920b..067c35dc 100644 --- a/named_arrays/_matrices/matrices.py +++ b/named_arrays/_matrices/matrices.py @@ -5,13 +5,13 @@ import named_arrays as na __all__ = [ - 'AbstractMatrixArray', - 'AbstractExplicitMatrixArray', - 'AbstractImplicitMatrixArray', - 'AbstractMatrixRandomSample', - 'AbstractMatrixUniformRandomSample', - 'AbstractMatrixNormalRandomSample', - 'AbstractParameterizedMatrixArray', + "AbstractMatrixArray", + "AbstractExplicitMatrixArray", + "AbstractImplicitMatrixArray", + "AbstractMatrixRandomSample", + "AbstractMatrixUniformRandomSample", + "AbstractMatrixNormalRandomSample", + "AbstractParameterizedMatrixArray", ] diff --git a/named_arrays/_matrices/matrices_directional.py b/named_arrays/_matrices/matrices_directional.py index 996450fa..77a34e04 100644 --- a/named_arrays/_matrices/matrices_directional.py +++ b/named_arrays/_matrices/matrices_directional.py @@ -5,8 +5,8 @@ import named_arrays as na __all__ = [ - 'AbstractDirectionalMatrixArray', - 'DirectionalMatrixArray', + "AbstractDirectionalMatrixArray", + "DirectionalMatrixArray", ] DirectionT = TypeVar('DirectionT', bound=na.AbstractVectorArray) diff --git a/named_arrays/_matrices/matrices_input_output.py b/named_arrays/_matrices/matrices_input_output.py index a59ebc74..e0063ac0 100644 --- a/named_arrays/_matrices/matrices_input_output.py +++ b/named_arrays/_matrices/matrices_input_output.py @@ -3,7 +3,6 @@ import abc import dataclasses import named_arrays as na -import numpy as np __all__ = [ "AbstractInputOutputMatrixArray", diff --git a/named_arrays/_matrices/matrices_positional.py b/named_arrays/_matrices/matrices_positional.py index 95c1df76..4ac8be64 100644 --- a/named_arrays/_matrices/matrices_positional.py +++ b/named_arrays/_matrices/matrices_positional.py @@ -3,11 +3,10 @@ import abc import dataclasses import named_arrays as na -import numpy as np __all__ = [ - 'AbstractPositionalMatrixArray', - 'PositionalMatrixArray', + "AbstractPositionalMatrixArray", + "PositionalMatrixArray", ] PositionT = TypeVar('PositionT', bound=na.AbstractVectorArray) diff --git a/named_arrays/_matrices/matrices_spectral.py b/named_arrays/_matrices/matrices_spectral.py index c6bba291..1d6a5446 100644 --- a/named_arrays/_matrices/matrices_spectral.py +++ b/named_arrays/_matrices/matrices_spectral.py @@ -6,8 +6,8 @@ import numpy as np __all__ = [ - 'AbstractSpectralMatrixArray', - 'SpectralMatrixArray', + "AbstractSpectralMatrixArray", + "SpectralMatrixArray", ] WavelengthT = TypeVar('WavelengthT', bound=na.AbstractVectorArray) diff --git a/named_arrays/_matrices/matrices_spectral_directional.py b/named_arrays/_matrices/matrices_spectral_directional.py index f0dabace..63c1742e 100644 --- a/named_arrays/_matrices/matrices_spectral_directional.py +++ b/named_arrays/_matrices/matrices_spectral_directional.py @@ -1,12 +1,11 @@ from __future__ import annotations from typing import Type - import dataclasses import named_arrays as na __all__ = [ - 'AbstractSpectralDirectionalMatrixArray', - 'SpectralDirectionalMatrixArray', + "AbstractSpectralDirectionalMatrixArray", + "SpectralDirectionalMatrixArray", ] diff --git a/named_arrays/_matrices/matrices_spectral_positional.py b/named_arrays/_matrices/matrices_spectral_positional.py index 3fd3e77a..2b2a308c 100644 --- a/named_arrays/_matrices/matrices_spectral_positional.py +++ b/named_arrays/_matrices/matrices_spectral_positional.py @@ -1,14 +1,11 @@ from __future__ import annotations -from typing import TypeVar, Generic, Type -import abc +from typing import Type import dataclasses import named_arrays as na -import numpy as np -import astropy.units as u __all__ = [ - 'AbstractSpectralPositionalMatrixArray', - 'SpectralPositionalMatrixArray', + "AbstractSpectralPositionalMatrixArray", + "SpectralPositionalMatrixArray", ] diff --git a/named_arrays/_matrices/matrices_temporal.py b/named_arrays/_matrices/matrices_temporal.py index 97aa329f..96020abb 100644 --- a/named_arrays/_matrices/matrices_temporal.py +++ b/named_arrays/_matrices/matrices_temporal.py @@ -5,8 +5,8 @@ import named_arrays as na __all__ = [ - 'AbstractTemporalMatrixArray', - 'TemporalMatrixArray', + "AbstractTemporalMatrixArray", + "TemporalMatrixArray", ] TimeT = TypeVar('TimeT', bound=na.AbstractVectorArray) diff --git a/named_arrays/_matrices/matrices_temporal_positional.py b/named_arrays/_matrices/matrices_temporal_positional.py index 7d510b37..6d391c09 100644 --- a/named_arrays/_matrices/matrices_temporal_positional.py +++ b/named_arrays/_matrices/matrices_temporal_positional.py @@ -1,12 +1,11 @@ from __future__ import annotations from typing import Type - import dataclasses import named_arrays as na __all__ = [ - 'AbstractTemporalPositionalMatrixArray', - 'TemporalPositionalMatrixArray', + "AbstractTemporalPositionalMatrixArray", + "TemporalPositionalMatrixArray", ] diff --git a/named_arrays/_matrices/matrices_temporal_spectral.py b/named_arrays/_matrices/matrices_temporal_spectral.py index 0cba3754..c2f0bdf8 100644 --- a/named_arrays/_matrices/matrices_temporal_spectral.py +++ b/named_arrays/_matrices/matrices_temporal_spectral.py @@ -1,12 +1,11 @@ from __future__ import annotations from typing import Type - import dataclasses import named_arrays as na __all__ = [ - 'AbstractTemporalSpectralMatrixArray', - 'TemporalSpectralMatrixArray', + "AbstractTemporalSpectralMatrixArray", + "TemporalSpectralMatrixArray", ] diff --git a/named_arrays/_matrices/matrices_temporal_spectral_directional.py b/named_arrays/_matrices/matrices_temporal_spectral_directional.py index 660d26bc..031f6e2d 100644 --- a/named_arrays/_matrices/matrices_temporal_spectral_directional.py +++ b/named_arrays/_matrices/matrices_temporal_spectral_directional.py @@ -1,12 +1,11 @@ from __future__ import annotations from typing import Type - import dataclasses import named_arrays as na __all__ = [ - 'AbstractTemporalSpectralDirectionalMatrixArray', - 'TemporalSpectralDirectionalMatrixArray', + "AbstractTemporalSpectralDirectionalMatrixArray", + "TemporalSpectralDirectionalMatrixArray", ] diff --git a/named_arrays/_matrices/matrices_temporal_spectral_positional.py b/named_arrays/_matrices/matrices_temporal_spectral_positional.py index aeefae97..3dfd4b86 100644 --- a/named_arrays/_matrices/matrices_temporal_spectral_positional.py +++ b/named_arrays/_matrices/matrices_temporal_spectral_positional.py @@ -1,12 +1,11 @@ from __future__ import annotations from typing import Type - import dataclasses import named_arrays as na __all__ = [ - 'AbstractTemporalSpectralPositionalMatrixArray', - 'TemporalSpectralPositionalMatrixArray', + "AbstractTemporalSpectralPositionalMatrixArray", + "TemporalSpectralPositionalMatrixArray", ] From 24690e4472a7beeaf5c9cd1fed9878baa730cc3f Mon Sep 17 00:00:00 2001 From: Roy Smart Date: Mon, 24 Nov 2025 11:05:02 -0700 Subject: [PATCH 06/19] Added all functions to `__init__.py` --- named_arrays/__init__.py | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/named_arrays/__init__.py b/named_arrays/__init__.py index fe03ba08..3be34274 100644 --- a/named_arrays/__init__.py +++ b/named_arrays/__init__.py @@ -360,7 +360,14 @@ AbstractInputOutputMatrixArray, InputOutputMatrixArray, ) -from ._functions.functions import * +from ._functions.functions import ( + InputValueError, + AbstractFunctionArray, + FunctionArray, + AbstractFunctionArray, + AbstractPolynomialFunctionArray, + PolynomialFitFunctionArray, +) __all__ = [ "_named_array_function", @@ -651,4 +658,10 @@ "TemporalSpectralDirectionalMatrixArray", "AbstractInputOutputMatrixArray", "InputOutputMatrixArray", + "InputValueError", + "AbstractFunctionArray", + "FunctionArray", + "AbstractFunctionArray", + "AbstractPolynomialFunctionArray", + "PolynomialFitFunctionArray", ] From ca0a668f895f933736e321166b1e58bfb348763c Mon Sep 17 00:00:00 2001 From: Roy Smart Date: Mon, 24 Nov 2025 11:05:19 -0700 Subject: [PATCH 07/19] woops --- named_arrays/_functions/functions.py | 1 - 1 file changed, 1 deletion(-) diff --git a/named_arrays/_functions/functions.py b/named_arrays/_functions/functions.py index 75181abe..c7ab0a93 100644 --- a/named_arrays/_functions/functions.py +++ b/named_arrays/_functions/functions.py @@ -9,7 +9,6 @@ import astropy.visualization import named_arrays as na import itertools -import collections __all__ = [ "InputValueError", From 01f8beb6c16f008338a871721658515c8120af84 Mon Sep 17 00:00:00 2001 From: Roy Smart Date: Mon, 24 Nov 2025 11:06:29 -0700 Subject: [PATCH 08/19] fixes --- named_arrays/__init__.py | 1 - named_arrays/_functions/functions.py | 1 - 2 files changed, 2 deletions(-) diff --git a/named_arrays/__init__.py b/named_arrays/__init__.py index 3be34274..bfd734f4 100644 --- a/named_arrays/__init__.py +++ b/named_arrays/__init__.py @@ -661,7 +661,6 @@ "InputValueError", "AbstractFunctionArray", "FunctionArray", - "AbstractFunctionArray", "AbstractPolynomialFunctionArray", "PolynomialFitFunctionArray", ] diff --git a/named_arrays/_functions/functions.py b/named_arrays/_functions/functions.py index c7ab0a93..302e945d 100644 --- a/named_arrays/_functions/functions.py +++ b/named_arrays/_functions/functions.py @@ -14,7 +14,6 @@ "InputValueError", "AbstractFunctionArray", "FunctionArray", - "AbstractFunctionArray", "AbstractPolynomialFunctionArray", "PolynomialFitFunctionArray", ] From 8f95d222f6881535f777d5d2f4925921f780b4af Mon Sep 17 00:00:00 2001 From: Roy Smart Date: Mon, 24 Nov 2025 11:09:52 -0700 Subject: [PATCH 09/19] _functions --- named_arrays/_functions/function_array_functions.py | 4 +--- named_arrays/_functions/function_named_array_functions.py | 5 ++--- named_arrays/_functions/functions.py | 2 +- named_arrays/_functions/tests/test_functions.py | 2 +- named_arrays/_functions/tests/test_functions_vertices.py | 4 ++-- 5 files changed, 7 insertions(+), 10 deletions(-) diff --git a/named_arrays/_functions/function_array_functions.py b/named_arrays/_functions/function_array_functions.py index c97e9e94..29fdd70f 100644 --- a/named_arrays/_functions/function_array_functions.py +++ b/named_arrays/_functions/function_array_functions.py @@ -151,8 +151,6 @@ def array_function_percentile_like( f"the `axis` argument, {axis}, must be `None` or a subset of the shape of `a`, {shape}" ) - shape_base = {ax: shape[ax] for ax in axis_normalized} - kwargs = dict( overwrite_input=overwrite_input, method=method, @@ -303,7 +301,7 @@ def copyto( if isinstance(where, na.AbstractArray): if isinstance(where, na.AbstractFunctionArray): if np.any(where.inputs != src.inputs): - raise ValueError(f"`where.inputs` must be equivalent to `src.inputs`") + raise ValueError("`where.inputs` must be equivalent to `src.inputs`") where_inputs = where.inputs where_outputs = where.outputs else: diff --git a/named_arrays/_functions/function_named_array_functions.py b/named_arrays/_functions/function_named_array_functions.py index e44bf7da..fe1f87bb 100644 --- a/named_arrays/_functions/function_named_array_functions.py +++ b/named_arrays/_functions/function_named_array_functions.py @@ -1,4 +1,3 @@ -import dataclasses from typing import Callable, Literal, Sequence import numpy as np import matplotlib @@ -233,8 +232,8 @@ def ndfilter( where = where.explicit if np.all(where.inputs != array.inputs): # pragma: nocover raise ValueError( - f"if `where` is an instance of `na.AbstractFunctionArray`, " - f"its inputs must match `array`." + "if `where` is an instance of `na.AbstractFunctionArray`, " + "its inputs must match `array`." ) else: return NotImplemented # pragma: nocover diff --git a/named_arrays/_functions/functions.py b/named_arrays/_functions/functions.py index 302e945d..924b083d 100644 --- a/named_arrays/_functions/functions.py +++ b/named_arrays/_functions/functions.py @@ -660,7 +660,7 @@ def __array_ufunc__( if isinstance(where, na.AbstractArray): if isinstance(where, AbstractFunctionArray): if np.any(where.inputs != inputs_inputs[0]): - raise InputValueError(f"`where.inputs` must match the rest of the inputs") + raise InputValueError("`where.inputs` must match the rest of the inputs") kwargs["where"] = where.outputs else: return NotImplemented diff --git a/named_arrays/_functions/tests/test_functions.py b/named_arrays/_functions/tests/test_functions.py index 008db614..c63479e8 100644 --- a/named_arrays/_functions/tests/test_functions.py +++ b/named_arrays/_functions/tests/test_functions.py @@ -471,7 +471,7 @@ def test_repeat( if axis in array.axes_vertex: with pytest.raises(ValueError, match=f"Array cannot be repeated along vertex axis {axis}."): - result = np.repeat( + np.repeat( a=array, repeats=repeats, axis=axis, diff --git a/named_arrays/_functions/tests/test_functions_vertices.py b/named_arrays/_functions/tests/test_functions_vertices.py index fef7ede1..f1547630 100644 --- a/named_arrays/_functions/tests/test_functions_vertices.py +++ b/named_arrays/_functions/tests/test_functions_vertices.py @@ -117,7 +117,7 @@ def test_reshape(self, array: na.AbstractArray, newshape: dict[str, int]): for ax in newshape: if ax in array.axes_vertex or (ax not in array.axes and len(array.axes_vertex) != 0): with pytest.raises(ValueError): - result = np.reshape(array, newshape=newshape) + np.reshape(array, newshape=newshape) return super().test_reshape(array, newshape) @@ -179,7 +179,7 @@ def test_reshape(self, array: na.AbstractArray, newshape: dict[str, int]): for ax in newshape: if ax in array.axes_vertex or (ax not in array.axes and len(array.axes_vertex) != 0): with pytest.raises(ValueError): - result = np.reshape(array, newshape=newshape) + np.reshape(array, newshape=newshape) return super().test_reshape(array, newshape) From e05d028792e0c526375226ad011a67ba176298b1 Mon Sep 17 00:00:00 2001 From: Roy Smart Date: Mon, 24 Nov 2025 14:10:51 -0700 Subject: [PATCH 10/19] _matrices --- .../_matrices/cartesian/tests/test_matrices_cartesian_2d.py | 6 ------ 1 file changed, 6 deletions(-) diff --git a/named_arrays/_matrices/cartesian/tests/test_matrices_cartesian_2d.py b/named_arrays/_matrices/cartesian/tests/test_matrices_cartesian_2d.py index cc2d647d..40e632fa 100644 --- a/named_arrays/_matrices/cartesian/tests/test_matrices_cartesian_2d.py +++ b/named_arrays/_matrices/cartesian/tests/test_matrices_cartesian_2d.py @@ -99,12 +99,6 @@ def _cartesian_2d_matrices_2(): for array_yy in arrays_yy for unit in units ] - vectors = [ - na.Cartesian2dVectorArray(x=array_xx, y=array_yy) * unit - for array_xx in arrays_xx - for array_yy in arrays_yy - for unit in units - ] matrices = [ na.Cartesian2dMatrixArray( x=na.Cartesian2dVectorArray(x=array_xx, y=array_xy), From ab6d7d534b92381ddf5a20bec0a0c899c508ced7 Mon Sep 17 00:00:00 2001 From: Roy Smart Date: Mon, 24 Nov 2025 14:11:37 -0700 Subject: [PATCH 11/19] _named_array_functions --- named_arrays/_named_array_functions.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/named_arrays/_named_array_functions.py b/named_arrays/_named_array_functions.py index 604987e9..8d652fff 100644 --- a/named_arrays/_named_array_functions.py +++ b/named_arrays/_named_array_functions.py @@ -47,7 +47,7 @@ def _is_subclass(a: Any, b: Any): - if type(a) == type(b): + if type(a) is type(b): return 0 elif isinstance(a, type(b)): return 1 From a1fe0468295e83888d45ecadc14697bd941e7c72 Mon Sep 17 00:00:00 2001 From: Roy Smart Date: Mon, 24 Nov 2025 14:16:23 -0700 Subject: [PATCH 12/19] _scalars --- named_arrays/_scalars/scalar_named_array_functions.py | 1 - named_arrays/_scalars/tests/test_scalars.py | 4 +--- .../uncertainties/tests/test_uncertainties.py | 11 ++--------- named_arrays/_scalars/uncertainties/uncertainties.py | 1 - .../uncertainties_named_array_functions.py | 1 - 5 files changed, 3 insertions(+), 15 deletions(-) diff --git a/named_arrays/_scalars/scalar_named_array_functions.py b/named_arrays/_scalars/scalar_named_array_functions.py index ec11991e..f98ea8fe 100644 --- a/named_arrays/_scalars/scalar_named_array_functions.py +++ b/named_arrays/_scalars/scalar_named_array_functions.py @@ -1,6 +1,5 @@ from typing import Callable, Sequence, Any, Literal import collections -import dataclasses import numpy as np import numpy.typing as npt import numexpr diff --git a/named_arrays/_scalars/tests/test_scalars.py b/named_arrays/_scalars/tests/test_scalars.py index b65f5ef1..1c81144f 100644 --- a/named_arrays/_scalars/tests/test_scalars.py +++ b/named_arrays/_scalars/tests/test_scalars.py @@ -3,11 +3,9 @@ import pytest import numpy as np import matplotlib -import matplotlib.pyplot as plt import scipy.stats import astropy.units as u import astropy.visualization -import astropy.units.quantity_helper.helpers as quantity_helpers import named_arrays as na from ... import tests @@ -924,7 +922,7 @@ def test_fft_like_functions( assert isinstance(result, na.AbstractArray) assert axis[1] in result.axes - assert not axis[0] in result.axes + assert axis[0] not in result.axes assert np.all(result.ndarray == result_expected) diff --git a/named_arrays/_scalars/uncertainties/tests/test_uncertainties.py b/named_arrays/_scalars/uncertainties/tests/test_uncertainties.py index 56c9bfb4..4eed968a 100644 --- a/named_arrays/_scalars/uncertainties/tests/test_uncertainties.py +++ b/named_arrays/_scalars/uncertainties/tests/test_uncertainties.py @@ -1,4 +1,4 @@ -from typing import Type, Sequence, Callable +from typing import Sequence, Callable import numpy as np import pytest import astropy.units as u @@ -615,7 +615,7 @@ def test_sort(self, array: na.AbstractUncertainScalarArray, axis: None | str | S if axis is not None: if not axis: - with pytest.raises(ValueError, match=f"if `axis` is a sequence, it must not be empty, got .*"): + with pytest.raises(ValueError, match="if `axis` is a sequence, it must not be empty, got .*"): np.sort(array, axis=axis) return @@ -1028,13 +1028,6 @@ class AbstractTestAbstractParameterizedUncertainScalarArray( pass -class TestUncertainScalarLinearSpace( - AbstractTestAbstractUncertainScalarRandomSample, - named_arrays.tests.test_core.AbstractTestAbstractPoissonRandomSample, -): - pass - - class AbstractTestAbstractScalarSpace( AbstractTestAbstractParameterizedUncertainScalarArray, named_arrays.tests.test_core.AbstractTestAbstractSpace, diff --git a/named_arrays/_scalars/uncertainties/uncertainties.py b/named_arrays/_scalars/uncertainties/uncertainties.py index ccd64808..45177c01 100644 --- a/named_arrays/_scalars/uncertainties/uncertainties.py +++ b/named_arrays/_scalars/uncertainties/uncertainties.py @@ -263,7 +263,6 @@ def _getitem( item: dict[str, int | slice | na.AbstractScalar] | na.AbstractScalar, ): array = self.explicit - shape_array = array.shape shape_array_distribution = array.shape_distribution nominal = na.as_named_array(array.nominal) diff --git a/named_arrays/_scalars/uncertainties/uncertainties_named_array_functions.py b/named_arrays/_scalars/uncertainties/uncertainties_named_array_functions.py index 1172fa44..3f7ccae8 100644 --- a/named_arrays/_scalars/uncertainties/uncertainties_named_array_functions.py +++ b/named_arrays/_scalars/uncertainties/uncertainties_named_array_functions.py @@ -1,4 +1,3 @@ -import dataclasses from typing import Callable, Sequence, Literal import collections import numpy as np From 8f6f170f0f1b31878728e3c8a04e3c0fdcf0decb Mon Sep 17 00:00:00 2001 From: Roy Smart Date: Mon, 24 Nov 2025 14:19:10 -0700 Subject: [PATCH 13/19] _vectors --- .../_vectors/cartesian/tests/test_vectors_cartesian_2d.py | 2 +- .../_vectors/cartesian/tests/test_vectors_cartesian_3d.py | 1 - .../_vectors/cartesian/tests/test_vectors_cartesian_nd.py | 2 -- named_arrays/_vectors/tests/test_vectors.py | 4 +--- 4 files changed, 2 insertions(+), 7 deletions(-) diff --git a/named_arrays/_vectors/cartesian/tests/test_vectors_cartesian_2d.py b/named_arrays/_vectors/cartesian/tests/test_vectors_cartesian_2d.py index 5e9cc984..a982d360 100644 --- a/named_arrays/_vectors/cartesian/tests/test_vectors_cartesian_2d.py +++ b/named_arrays/_vectors/cartesian/tests/test_vectors_cartesian_2d.py @@ -1,4 +1,4 @@ -from typing import Type, Callable, Sequence +from typing import Sequence import pytest import numpy as np import astropy.units as u diff --git a/named_arrays/_vectors/cartesian/tests/test_vectors_cartesian_3d.py b/named_arrays/_vectors/cartesian/tests/test_vectors_cartesian_3d.py index c1b5c74e..aa05150f 100644 --- a/named_arrays/_vectors/cartesian/tests/test_vectors_cartesian_3d.py +++ b/named_arrays/_vectors/cartesian/tests/test_vectors_cartesian_3d.py @@ -1,4 +1,3 @@ -from typing import Type import pytest import numpy as np import astropy.units as u diff --git a/named_arrays/_vectors/cartesian/tests/test_vectors_cartesian_nd.py b/named_arrays/_vectors/cartesian/tests/test_vectors_cartesian_nd.py index 5bfe2e9a..6ce22afc 100644 --- a/named_arrays/_vectors/cartesian/tests/test_vectors_cartesian_nd.py +++ b/named_arrays/_vectors/cartesian/tests/test_vectors_cartesian_nd.py @@ -1,9 +1,7 @@ -from typing import Type, Callable, Sequence import pytest import numpy as np import astropy.units as u import named_arrays as na -import named_arrays.tests.test_core from . import test_vectors_cartesian __all__ = [ diff --git a/named_arrays/_vectors/tests/test_vectors.py b/named_arrays/_vectors/tests/test_vectors.py index 0fafb48f..79d90f26 100644 --- a/named_arrays/_vectors/tests/test_vectors.py +++ b/named_arrays/_vectors/tests/test_vectors.py @@ -1,8 +1,6 @@ from typing import Type, Callable, Sequence, Literal import pytest -import abc import numpy as np -import matplotlib.axes import astropy.units as u import named_arrays as na @@ -461,7 +459,7 @@ def test_sort(self, array: na.AbstractVectorArray, axis: None | str | Sequence[s if axis is not None: if not axis: - with pytest.raises(ValueError, match=f"if `axis` is a sequence, it must not be empty, got .*"): + with pytest.raises(ValueError, match="if `axis` is a sequence, it must not be empty, got .*"): np.sort(array, axis=axis) return From 159c4a14ae5e59c5c287a47e202af779bb07d5c4 Mon Sep 17 00:00:00 2001 From: Roy Smart Date: Mon, 24 Nov 2025 14:19:56 -0700 Subject: [PATCH 14/19] numexpr --- named_arrays/numexpr.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/named_arrays/numexpr.py b/named_arrays/numexpr.py index 32dc0b35..29b1f05a 100644 --- a/named_arrays/numexpr.py +++ b/named_arrays/numexpr.py @@ -34,7 +34,7 @@ def _getArguments(names, local_dict=None, global_dict=None, _frame_depth: int=2) # If `call_frame` is the top frame of the interpreter we can't clear its # `local_dict`, because it is actually the `global_dict`. - clear_local_dict = clear_local_dict and not frame_globals is local_dict + clear_local_dict = clear_local_dict and frame_globals is not local_dict arguments = [] for name in names: From 76cd580d185abf821c98cb3cf8514dfe81115550 Mon Sep 17 00:00:00 2001 From: Roy Smart Date: Mon, 24 Nov 2025 14:22:37 -0700 Subject: [PATCH 15/19] optimize --- named_arrays/optimize.py | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/named_arrays/optimize.py b/named_arrays/optimize.py index 0a67827a..1edd5bd9 100644 --- a/named_arrays/optimize.py +++ b/named_arrays/optimize.py @@ -6,7 +6,7 @@ from __future__ import annotations from typing import TypeVar, Callable -import functools +import astropy.units as u import named_arrays as na __all__ = [ @@ -55,7 +55,11 @@ def root_newton( root being computed. """ if jacobian is None: - jacobian = lambda x: na.jacobian(function=function, x=x) + def jacobian(x: float | u.Quantity | na.AbstractArray): + return na.jacobian( + function=function, + x=x, + ) f_guess = function(guess) if max_abs_error is None: From bf3dc9e08d8ad7a2e15d6fd4016db3f2862fc2b7 Mon Sep 17 00:00:00 2001 From: Roy Smart Date: Mon, 24 Nov 2025 14:25:25 -0700 Subject: [PATCH 16/19] tests --- named_arrays/tests/__init__.py | 4 ++++ named_arrays/tests/test_core.py | 6 +++--- named_arrays/tests/test_numexpr.py | 2 +- named_arrays/tests/test_plt.py | 6 +++--- 4 files changed, 11 insertions(+), 7 deletions(-) diff --git a/named_arrays/tests/__init__.py b/named_arrays/tests/__init__.py index 6bb65d12..ea486cea 100644 --- a/named_arrays/tests/__init__.py +++ b/named_arrays/tests/__init__.py @@ -1 +1,5 @@ from . import test_core + +__all__ = [ + "test_core", +] diff --git a/named_arrays/tests/test_core.py b/named_arrays/tests/test_core.py index d848a62e..c324adc9 100644 --- a/named_arrays/tests/test_core.py +++ b/named_arrays/tests/test_core.py @@ -1,5 +1,5 @@ from __future__ import annotations -from typing import Sequence, Type, Callable +from typing import Sequence, Callable import pytest import abc import warnings @@ -593,7 +593,7 @@ def test_array_creation_like_functions( shape_normalized = shape assert result.shape == shape_normalized - assert type(result) == array.type_explicit + assert type(result) is array.type_explicit if func is np.zeros_like: assert np.all(result.value == 0) @@ -1852,7 +1852,7 @@ def test__setitem__( else: result_0 = result.reshape(dict(dummy=-1))[dict(dummy=0)] value_0 + result_0 - except u.UnitConversionError as e: + except u.UnitConversionError: with pytest.raises((TypeError, u.UnitConversionError)): result[item] = value return diff --git a/named_arrays/tests/test_numexpr.py b/named_arrays/tests/test_numexpr.py index c6d602da..1e393b79 100644 --- a/named_arrays/tests/test_numexpr.py +++ b/named_arrays/tests/test_numexpr.py @@ -46,6 +46,6 @@ def test_evaluate( result_expected = a * b - assert type(result) == type(na.as_named_array(result_expected)) + assert type(result) is type(na.as_named_array(result_expected)) assert np.all(result == result_expected) diff --git a/named_arrays/tests/test_plt.py b/named_arrays/tests/test_plt.py index 5b5ea8df..40f99424 100644 --- a/named_arrays/tests/test_plt.py +++ b/named_arrays/tests/test_plt.py @@ -440,11 +440,11 @@ def test_set_xlim( ax: None | matplotlib.axes.Axes | na.AbstractScalar, ): na.plt.set_xlim(left, right, ax=ax, emit=False) - l, r = na.plt.get_xlim(ax) + left_saved, right_saved = na.plt.get_xlim(ax) if left is not None: - assert np.all(l == left) + assert np.all(left_saved == left) if right is not None: - assert np.all(r == right) + assert np.all(right_saved == right) @pytest.mark.parametrize( From 7800318a43be68673230241d77f0ce5ec246a1c4 Mon Sep 17 00:00:00 2001 From: Roy Smart Date: Mon, 24 Nov 2025 14:27:00 -0700 Subject: [PATCH 17/19] fixes --- named_arrays/__init__.py | 1 - named_arrays/_vectors/cartesian/vectors_cartesian_nd.py | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/named_arrays/__init__.py b/named_arrays/__init__.py index bfd734f4..1292830b 100644 --- a/named_arrays/__init__.py +++ b/named_arrays/__init__.py @@ -364,7 +364,6 @@ InputValueError, AbstractFunctionArray, FunctionArray, - AbstractFunctionArray, AbstractPolynomialFunctionArray, PolynomialFitFunctionArray, ) diff --git a/named_arrays/_vectors/cartesian/vectors_cartesian_nd.py b/named_arrays/_vectors/cartesian/vectors_cartesian_nd.py index 1dfbe580..8e1c1714 100644 --- a/named_arrays/_vectors/cartesian/vectors_cartesian_nd.py +++ b/named_arrays/_vectors/cartesian/vectors_cartesian_nd.py @@ -1,5 +1,5 @@ from __future__ import annotations -from typing import Type, Sequence +from typing import Type import dataclasses import named_arrays as na From 66d56210fa8cb66ac2ce9638fe57f265d6b93bca Mon Sep 17 00:00:00 2001 From: Roy Smart Date: Mon, 24 Nov 2025 14:32:21 -0700 Subject: [PATCH 18/19] Add status badge --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index d8c6056d..508fed04 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ [![tests](https://github.com/sun-data/named-arrays/actions/workflows/tests.yml/badge.svg)](https://github.com/sun-data/named-arrays/actions/workflows/tests.yml) [![codecov](https://codecov.io/gh/sun-data/named-arrays/graph/badge.svg?token=1GhdcsgwO0)](https://codecov.io/gh/sun-data/named-arrays) -[![Documentation Status](https://readthedocs.org/projects/named-arrays/badge/?version=latest)](https://named-arrays.readthedocs.io/en/latest/?badge=latest) +[![Ruff](https://github.com/sun-data/named-arrays/actions/workflows/ruff.yml/badge.svg?branch=main)](https://github.com/sun-data/named-arrays/actions/workflows/ruff.yml)[![Documentation Status](https://readthedocs.org/projects/named-arrays/badge/?version=latest)](https://named-arrays.readthedocs.io/en/latest/?badge=latest) [![PyPI version](https://badge.fury.io/py/named-arrays.svg)](https://badge.fury.io/py/named-arrays) `named-arrays` is an implementation of a [named tensor](https://nlp.seas.harvard.edu/NamedTensor), which assigns names to each axis of an n-dimensional array such as a numpy array. From 6db54c97390c520da3f4a5d859cf39167f861810 Mon Sep 17 00:00:00 2001 From: Roy Smart Date: Mon, 24 Nov 2025 15:12:09 -0700 Subject: [PATCH 19/19] coverage --- named_arrays/_functions/function_array_functions.py | 2 +- named_arrays/_functions/functions.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/named_arrays/_functions/function_array_functions.py b/named_arrays/_functions/function_array_functions.py index 29fdd70f..90b3b0b7 100644 --- a/named_arrays/_functions/function_array_functions.py +++ b/named_arrays/_functions/function_array_functions.py @@ -300,7 +300,7 @@ def copyto( if isinstance(where, na.AbstractArray): if isinstance(where, na.AbstractFunctionArray): - if np.any(where.inputs != src.inputs): + if np.any(where.inputs != src.inputs): #pragma: nocover raise ValueError("`where.inputs` must be equivalent to `src.inputs`") where_inputs = where.inputs where_outputs = where.outputs diff --git a/named_arrays/_functions/functions.py b/named_arrays/_functions/functions.py index 924b083d..d57dec5a 100644 --- a/named_arrays/_functions/functions.py +++ b/named_arrays/_functions/functions.py @@ -659,7 +659,7 @@ def __array_ufunc__( where = kwargs.pop("where") if isinstance(where, na.AbstractArray): if isinstance(where, AbstractFunctionArray): - if np.any(where.inputs != inputs_inputs[0]): + if np.any(where.inputs != inputs_inputs[0]): #pragma: nocover raise InputValueError("`where.inputs` must match the rest of the inputs") kwargs["where"] = where.outputs else: