From 726afcfb10f31dbdcee3b6527bca2dd85088ba08 Mon Sep 17 00:00:00 2001 From: Anton Oresten Date: Mon, 24 Nov 2025 21:04:41 +0100 Subject: [PATCH] support `String` patterns --- src/Einops.jl | 2 ++ src/String.jl | 26 ++++++++++++++++++++++++++ 2 files changed, 28 insertions(+) create mode 100644 src/String.jl diff --git a/src/Einops.jl b/src/Einops.jl index 521ca85..e86d520 100644 --- a/src/Einops.jl +++ b/src/Einops.jl @@ -29,4 +29,6 @@ export einsum include("pack_unpack.jl") export pack, unpack +include("String.jl") + end diff --git a/src/String.jl b/src/String.jl new file mode 100644 index 0000000..709e374 --- /dev/null +++ b/src/String.jl @@ -0,0 +1,26 @@ +const warn_str = "Einops supports `Base.String` patterns for Einops-native functions only for convenience, as using them is type unstable." + +function parse_shape(x, pattern::String) + Base.depwarn(warn_str, :parse_shape) + return parse_shape(x, parse_pattern(pattern)) +end + +function rearrange(x, pattern::String; context...) + Base.depwarn(warn_str, :rearrange) + rearrange(x, parse_pattern(pattern); context...) +end + +function _einsum(pattern::String, arrays...; kws...) + Base.depwarn(warn_str, :_einsum) + _einsum(parse_pattern(pattern), arrays...; kws...) +end + +function pack(x, pattern::String) + Base.depwarn(warn_str, :pack) + return pack(x, parse_pattern(pattern)) +end + +function unpack(x, ps, pattern::String) + Base.depwarn(warn_str, :unpack) + return unpack(x, ps, parse_pattern(pattern)) +end