5cbd3f29e3
Fuzz / Run fuzz harnesses (${{ github.event_name == 'schedule' && 'nightly' || 'smoke' }}) (push) Has been cancelled
Create Releases / call-mac (push) Has been cancelled
Create Releases / call-linux (push) Has been cancelled
Create Releases / call-sdist (push) Has been cancelled
Create Releases / call-win (push) Has been cancelled
Create Releases / call-pyodide (push) Has been cancelled
Windows_No_Exception_CI / build (x64, 3.10) (push) Has been cancelled
Check URLs / build (push) Has been cancelled
Create Releases / Attest CI build artifacts (push) Has been cancelled
Create Releases / Check for Publish release build to pypi (push) Has been cancelled
Create Releases / Check for Publish preview build to test.pypi-weekly (push) Has been cancelled
Create Releases / Publish preview build to test.pypi-weekly (push) Has been cancelled
Create Releases / Check for Publish release build to test.pypi (rc-candidates) (push) Has been cancelled
Create Releases / Publish release build to test.pypi (push) Has been cancelled
Create Releases / Check for Publish preview build to pypi-weekly (push) Has been cancelled
Create Releases / Publish preview build to pypi-weekly (push) Has been cancelled
Create Releases / Publish release build to pypi (push) Has been cancelled
Create Releases / test source distribution (push) Has been cancelled
clang-tidy / clang-tidy (push) Has been cancelled
Lint / Validate SBOM (push) Has been cancelled
Lint / Enforce style (push) Has been cancelled
CI / Test windows-2022, 3.14, External, debug=0, unity_build=0, onnx_ml=1, autogen=0 (push) Has been cancelled
CI / Test windows-latest, 3.10, Internal, debug=0, unity_build=0, onnx_ml=1, autogen=0 (push) Has been cancelled
CI / Test windows-latest, 3.14, Internal, debug=0, unity_build=0, onnx_ml=1, autogen=0 (push) Has been cancelled
CI / Test windows-latest, 3.14t, Internal, debug=0, unity_build=0, onnx_ml=1, autogen=0 (push) Has been cancelled
CI / Test ubuntu-24.04, 3.14, Internal, debug=1, unity_build=0, onnx_ml=1, autogen=0 (push) Has been cancelled
CI / Test ubuntu-24.04, 3.14, External, debug=0, unity_build=1, onnx_ml=1, autogen=1 (push) Has been cancelled
CI / Test ubuntu-24.04, 3.14, External, debug=0, unity_build=0, onnx_ml=0, autogen=0 (push) Has been cancelled
CI / Test macos-latest, 3.10, Internal, debug=0, unity_build=0, onnx_ml=1, autogen=0 (push) Has been cancelled
CI / Test macos-latest, 3.14, Internal, debug=0, unity_build=0, onnx_ml=1, autogen=0 (push) Has been cancelled
CI / Test macos-latest, 3.14t, Internal, debug=0, unity_build=0, onnx_ml=1, autogen=0 (push) Has been cancelled
CI / Test ubuntu-24.04, 3.14, External, debug=0, unity_build=0, onnx_ml=1, autogen=0 (push) Has been cancelled
CI / Test ubuntu-24.04, 3.10, Internal, debug=0, unity_build=0, onnx_ml=1, autogen=0 (push) Has been cancelled
CI / Test ubuntu-24.04, 3.14, Internal, debug=0, unity_build=0, onnx_ml=1, autogen=0 (push) Has been cancelled
CI / Test ubuntu-24.04, 3.14t, Internal, debug=0, unity_build=0, onnx_ml=1, autogen=0 (push) Has been cancelled
Pixi CI / Install and lint (ubuntu-24.04-arm) (push) Has been cancelled
Pixi CI / Install and lint (windows-2022) (push) Has been cancelled
Pixi CI / Xcode generator build (push) Has been cancelled
Pixi CI / Install and test (macos-latest, default) (push) Has been cancelled
Pixi CI / Install and test (ubuntu-24.04-arm, default) (push) Has been cancelled
Pixi CI / Install and test (ubuntu-latest, default) (push) Has been cancelled
Pixi CI / Install and test (windows-2022, default) (push) Has been cancelled
Pixi CI / Install and test (macos-latest, oldies) (push) Has been cancelled
Pixi CI / Install and test (ubuntu-24.04-arm, oldies) (push) Has been cancelled
Pixi CI / Install and test (ubuntu-latest, oldies) (push) Has been cancelled
Pixi CI / Install and test (windows-2022, oldies) (push) Has been cancelled
CodeQL / Analyze (actions) (push) Has been cancelled
CodeQL / Analyze (cpp) (push) Has been cancelled
CodeQL / Analyze (python) (push) Has been cancelled
Copilot Setup Steps / copilot-setup-steps (push) Has been cancelled
Generate and publish ONNX docs / build (push) Has been cancelled
Generate and publish ONNX docs / deploy (push) Has been cancelled
Scorecard supply-chain security / Scorecard analysis (push) Has been cancelled
76 lines
2.3 KiB
Python
76 lines
2.3 KiB
Python
# Copyright (c) ONNX Project Contributors
|
|
|
|
# SPDX-License-Identifier: Apache-2.0
|
|
from __future__ import annotations
|
|
|
|
import numpy as np
|
|
|
|
from onnx.reference.ops._op import OpRun
|
|
|
|
|
|
def _slice(
|
|
data: np.ndarray,
|
|
starts: np.ndarray,
|
|
ends: np.ndarray,
|
|
axes: np.ndarray | None = None,
|
|
steps: np.ndarray | None = None,
|
|
) -> np.ndarray:
|
|
if isinstance(starts, list):
|
|
starts = np.array(starts)
|
|
if isinstance(ends, list):
|
|
ends = np.array(ends)
|
|
if isinstance(axes, list):
|
|
axes = np.array(axes)
|
|
if isinstance(steps, list):
|
|
steps = np.array(steps)
|
|
if len(starts.shape) == 0:
|
|
starts = np.array([starts])
|
|
if len(ends.shape) == 0:
|
|
ends = np.array([ends])
|
|
if axes is None:
|
|
if steps is None:
|
|
slices = [slice(s, e) for s, e in zip(starts, ends, strict=False)]
|
|
else:
|
|
slices = [
|
|
slice(s, e, d) for s, e, d in zip(starts, ends, steps, strict=False)
|
|
]
|
|
else: # noqa: PLR5501
|
|
if steps is None:
|
|
slices = [slice(0, a) for a in data.shape]
|
|
for s, e, a in zip(starts, ends, axes, strict=False):
|
|
slices[a] = slice(s, e)
|
|
else:
|
|
slices = [slice(0, a) for a in data.shape]
|
|
for s, e, a, d in zip(starts, ends, axes, steps, strict=False):
|
|
slices[a] = slice(s, e, d)
|
|
try:
|
|
return data[tuple(slices)]
|
|
except TypeError as e: # pragma: no cover
|
|
raise TypeError(
|
|
f"Unable to extract slice {slices!r} for shape {data.shape!r}."
|
|
) from e
|
|
|
|
|
|
class SliceCommon(OpRun):
|
|
def _run(self, data, starts, ends, axes=None, steps=None):
|
|
res = _slice(data, starts, ends, axes, steps)
|
|
return (res,)
|
|
|
|
|
|
class Slice_10(SliceCommon):
|
|
def __init__(self, onnx_node, run_params):
|
|
SliceCommon.__init__(self, onnx_node, run_params)
|
|
|
|
|
|
class Slice_1(SliceCommon):
|
|
def __init__(self, onnx_node, run_params):
|
|
SliceCommon.__init__(self, onnx_node, run_params)
|
|
for f in ["starts", "ends", "steps", "axes"]:
|
|
if not hasattr(self, f):
|
|
continue
|
|
if getattr(self, f) is not None and len(getattr(self, f)) == 0:
|
|
setattr(self, f, None)
|
|
|
|
def _run(self, data, axes=None, ends=None, starts=None):
|
|
return SliceCommon._run(self, data, starts, ends, axes)
|