diff --git a/.wordlist.txt b/.wordlist.txt
index 4f42089b8..e87e60ee5 100644
--- a/.wordlist.txt
+++ b/.wordlist.txt
@@ -348,6 +348,7 @@ schemaless
schemas
sdk
secret
+sep
signup
signups
sinked
diff --git a/docs/api.yml b/docs/api.yml
index 1816d68c5..fc0dd3951 100644
--- a/docs/api.yml
+++ b/docs/api.yml
@@ -154,9 +154,11 @@ sidebar:
- "api-reference/expressions/str/concat"
- "api-reference/expressions/str/contains"
- "api-reference/expressions/str/endswith"
+ - "api-reference/expressions/str/json_extract"
- "api-reference/expressions/str/len"
- "api-reference/expressions/str/lower"
- "api-reference/expressions/str/parse"
+ - "api-reference/expressions/str/split"
- "api-reference/expressions/str/startswith"
- "api-reference/expressions/str/strptime"
- "api-reference/expressions/str/upper"
diff --git a/docs/examples/api-reference/expressions/str.py b/docs/examples/api-reference/expressions/str.py
index 68681f1b5..cad3353df 100644
--- a/docs/examples/api-reference/expressions/str.py
+++ b/docs/examples/api-reference/expressions/str.py
@@ -324,8 +324,6 @@ def test_strptime():
assert expr.typeof(schema={"x": str}) == datetime
assert expr.typeof(schema={"x": Optional[str]}) == Optional[datetime]
- # TODO: replace NaT with pd.NA
- # TODO: replace pd.Timestamp with datetime
df = pd.DataFrame({"x": ["2021-01-01", "2021-02-01", None]})
schema = {"x": Optional[str]}
assert expr.eval(df, schema).tolist() == [
@@ -353,3 +351,47 @@ def test_strptime():
with pytest.raises(Exception):
expr.eval(df, schema)
# /docsnip
+
+
+def test_json_extract():
+ # docsnip json_extract
+ from fennel.expr import col
+
+ # docsnip-highlight next-line
+ expr = col("s").str.json_extract("$.x.y")
+
+ # return type is always Optional[str]
+ assert expr.typeof(schema={"s": str}) == Optional[str]
+ assert expr.typeof(schema={"s": Optional[str]}) == Optional[str]
+
+ # can be evaluated with a dataframe
+ df = pd.DataFrame(
+ {"s": ['{"x": {"y": "hello"}}', '{"x": {"y": 1}}', "{}", None]}
+ )
+ schema = {"s": Optional[str]}
+ # NOTE that the integer value 1 is returned as a string and not an int
+ # also invalid paths (e.g. "$.x.y" in case 3 of "{}") return null
+ assert expr.eval(df, schema).tolist() == ["hello", "1", pd.NA, pd.NA]
+ # /docsnip
+
+
+def test_split():
+ # docsnip split
+ from fennel.expr import col
+
+ # docsnip-highlight next-line
+ expr = col("s").str.split(",")
+
+ assert expr.typeof(schema={"s": str}) == List[str]
+ assert expr.typeof(schema={"s": Optional[str]}) == Optional[List[str]]
+
+ # can be evaluated with a dataframe
+ df = pd.DataFrame({"s": ["a,b,c", "d,e", "f", None]})
+ schema = {"s": Optional[str]}
+ assert expr.eval(df, schema).tolist() == [
+ ["a", "b", "c"],
+ ["d", "e"],
+ ["f"],
+ pd.NA,
+ ]
+ # /docsnip
diff --git a/docs/pages/api-reference/expressions/str/json_extract.md b/docs/pages/api-reference/expressions/str/json_extract.md
new file mode 100644
index 000000000..3be758706
--- /dev/null
+++ b/docs/pages/api-reference/expressions/str/json_extract.md
@@ -0,0 +1,36 @@
+---
+title: Json Extract
+order: 0
+status: published
+---
+
+### Json Extract
+
+Function to extract a value from a json encoded string using a json path.
+
+#### Parameters
+
+The json path to use when extracting the value from the json encoded string.
+See [this page](https://goessner.net/articles/JsonPath/) for more details on
+json path syntax. The extracted value is always returned as a string or None
+if the path is not valid/found.
+
+
+
+
+
+
+#### Returns
+
+Returns an expression object denoting the result of the `json_extract` expression.
+The resulting expression is of type `Optional[str]` and more specifically is None
+when the base string is None or the path is not found in the json encoded string.
+
+
+
+#### Errors
+
+The `str` namespace must be invoked on an expression that evaluates to string
+or optional of string.
+
\ No newline at end of file
diff --git a/docs/pages/api-reference/expressions/str/split.md b/docs/pages/api-reference/expressions/str/split.md
new file mode 100644
index 000000000..7a3ec9645
--- /dev/null
+++ b/docs/pages/api-reference/expressions/str/split.md
@@ -0,0 +1,32 @@
+---
+title: Split
+order: 0
+status: published
+---
+
+### Split
+
+Function to split a string into a list of strings using a separator.
+
+#### Parameters
+
+The separator string to use when splitting the string.
+
+
+
+
+
+#### Returns
+
+Returns an expression object denoting the result of the `split` function.
+The resulting expression is of type `List[str]` or `Optional[List[str]]` depending on
+input being nullable.
+
+
+
+#### Errors
+
+The `str` namespace must be invoked on an expression that evaluates to string
+or optional of string.
+
diff --git a/fennel/CHANGELOG.md b/fennel/CHANGELOG.md
index 9bfdbdcec..579d5db87 100644
--- a/fennel/CHANGELOG.md
+++ b/fennel/CHANGELOG.md
@@ -1,5 +1,8 @@
# Changelog
+## [1.5.49] - 2024-11-09
+- Add json_extract and split string expressions
+
## [1.5.48] - 2024-11-06
- Use v2 by default in query_offline
@@ -22,7 +25,7 @@
- Increase client timeouts
## [1.5.41] - 2024-10-21
-- Add window support dedup
+- Add support for window based dedup operator
## [1.5.40] - 2024-10-05
- Add changelog operator
diff --git a/fennel/expr/expr.py b/fennel/expr/expr.py
index 1c99e18db..abe799ab6 100644
--- a/fennel/expr/expr.py
+++ b/fennel/expr/expr.py
@@ -561,6 +561,16 @@ class Concat(StringOp):
other: Expr
+@dataclass
+class StringJsonExtract(StringOp):
+ path: str
+
+
+@dataclass
+class StringSplit(StringOp):
+ sep: str
+
+
class _String(Expr):
def __init__(self, expr: Expr, op: StringOp):
self.op = op
@@ -577,6 +587,12 @@ def contains(self, item) -> _Bool:
item_expr = make_expr(item)
return _Bool(_String(self, StrContains(item_expr)))
+ def json_extract(self, path: str) -> _String:
+ return _String(self, StringJsonExtract(path))
+
+ def split(self, sep: str) -> _List:
+ return _List(_String(self, StringSplit(sep)), ListNoop())
+
def concat(self, other: Expr) -> _String:
other = make_expr(other)
return _String(self, Concat(other))
diff --git a/fennel/expr/serializer.py b/fennel/expr/serializer.py
index 263fd3382..88cc2d6e9 100644
--- a/fennel/expr/serializer.py
+++ b/fennel/expr/serializer.py
@@ -54,6 +54,8 @@
StringStrpTime,
StringParse,
StrStartsWith,
+ StringSplit,
+ StringJsonExtract,
StrEndsWith,
Lower,
Upper,
@@ -294,6 +296,14 @@ def visitString(self, obj):
endswith=proto.EndsWith(key=self.visit(obj.op.item))
)
)
+ elif isinstance(obj.op, StringJsonExtract):
+ expr.string_fn.fn.CopyFrom(
+ proto.StringOp(json_extract=proto.JsonExtract(path=obj.op.path))
+ )
+ elif isinstance(obj.op, StringSplit):
+ expr.string_fn.fn.CopyFrom(
+ proto.StringOp(split=proto.Split(sep=obj.op.sep))
+ )
else:
raise InvalidExprException("invalid string operation: %s" % obj.op)
expr.string_fn.string.CopyFrom(self.visit(obj.operand))
diff --git a/poetry.lock b/poetry.lock
index 742043a2c..dd5c21008 100644
--- a/poetry.lock
+++ b/poetry.lock
@@ -779,48 +779,48 @@ devel = ["colorama", "json-spec", "jsonschema", "pylint", "pytest", "pytest-benc
[[package]]
name = "fennel-data-lib"
-version = "0.1.22"
+version = "0.1.23"
description = ""
optional = false
python-versions = ">=3.8"
files = [
- {file = "fennel_data_lib-0.1.22-cp310-cp310-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:b7775ef71c464230741a025e3493b11be3da88930368f399dcab6ea190b7de51"},
- {file = "fennel_data_lib-0.1.22-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3cdc29ecf35bbbd3119af11c3fc7a8b8f8ee76fe5acd233a210a97fc291580ee"},
- {file = "fennel_data_lib-0.1.22-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:9d11e4d7a3cb2e70b05b6a3e65c149448547158f80558f336f40f062a00bf2d5"},
- {file = "fennel_data_lib-0.1.22-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1ed37642f62f7e3bfe2b1adc0a8b6d875123e813a110e58a1892de7f8525b841"},
- {file = "fennel_data_lib-0.1.22-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8224b227c6f60b1e7aaa7dada4603b7257424b62c9fbc5a844efb086988fda29"},
- {file = "fennel_data_lib-0.1.22-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f25a088323472094b778bba23e4caac112a2218f6adde724642d15e4bcd5cef6"},
- {file = "fennel_data_lib-0.1.22-cp310-cp310-manylinux_2_34_x86_64.whl", hash = "sha256:89350b85476130eedcefbaa362664dd8264735becdcd7f53ff9daec358d63119"},
- {file = "fennel_data_lib-0.1.22-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:04298328368436585df47f5323f7b234b1ba1657e4203062e604cc95675ec017"},
- {file = "fennel_data_lib-0.1.22-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:0f317a820c4c67690cf113478eb1bfe86e7000b7edb5fb88b7233926b513de50"},
- {file = "fennel_data_lib-0.1.22-cp311-cp311-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:d0c5f818e26c2ef3925f1da8bc5e9f5e56f9e179d13cf78338068991395fb4e5"},
- {file = "fennel_data_lib-0.1.22-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:22426bb9e92ecdf9cdc69b2c1c476fdc2f92e7092590c4d24227f5f2d458892f"},
- {file = "fennel_data_lib-0.1.22-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:b8a52eb2561b709eaee3de80cb9ee2ee6ff1de5c51e6a8a15eebf92a1957b241"},
- {file = "fennel_data_lib-0.1.22-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:617107f064042c4487f29550d683fc5375e3b14a803d9a2c0e8482e0cc2f4238"},
- {file = "fennel_data_lib-0.1.22-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:49bba1d2b9ec285ec682f3f251545498ad049a91c1d4407d8d48c5d922f9fe6e"},
- {file = "fennel_data_lib-0.1.22-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:aa37f7a77499720eb30fcb3179aaeda6b3e79ecce7009bc19abdb154499999d1"},
- {file = "fennel_data_lib-0.1.22-cp311-cp311-manylinux_2_34_x86_64.whl", hash = "sha256:94bcf382186d5e3e5aa9f67a4280c5fc6c575bf9b5e08e0c576e7534272d48e7"},
- {file = "fennel_data_lib-0.1.22-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:29f7b374576db9bd104d15b1335f5f7db08434aa7f10bcae7be6d28894849c0c"},
- {file = "fennel_data_lib-0.1.22-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:a5c9a622d83200c46d19ee9a5db7511a9fc47bfbfade447b55933b30b6b98a74"},
- {file = "fennel_data_lib-0.1.22-cp312-cp312-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:dd76f9803357368c8ae1ca8d3af0f313f74d31cdf2e94240d67b8704a1a92cb0"},
- {file = "fennel_data_lib-0.1.22-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2639314b899eadfa2beb21c070bde1d995a02a62b6723544d5c751b5b60b99a8"},
- {file = "fennel_data_lib-0.1.22-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:611b3b118befd4b6b8a6628d7d381e369641fd88fa0728c366e45a90c28c7d9b"},
- {file = "fennel_data_lib-0.1.22-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:68d6584f937989d0b3c1587ce08576190176ad9e8b18b56562398f945c8d6bb9"},
- {file = "fennel_data_lib-0.1.22-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:feb3d8cf8ae6acfa27663e80ce8f71c32155bbbf8f6624621d8ff2d424794525"},
- {file = "fennel_data_lib-0.1.22-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:548a952665203ff9c85285d5eefa8cfb10a878f0d3ef7d2e631d6597649f5824"},
- {file = "fennel_data_lib-0.1.22-cp312-cp312-manylinux_2_34_x86_64.whl", hash = "sha256:afe170c2e4c4ea8ec0e1f9a7a74a406fefbaa8eb331ab2274f06e7a3141c4bcc"},
- {file = "fennel_data_lib-0.1.22-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:84dc38d1fd73ef26e1fe433d85a4f0a6411b3dde28b66d4553e84b99b5775f09"},
- {file = "fennel_data_lib-0.1.22-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:064f92604c56624a55f7d2edc930206ed56725570584ad618a3df4a33dd7a0a9"},
- {file = "fennel_data_lib-0.1.22-cp39-cp39-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:911a55b9739865f10d29a496023fff3e4ef1d4293656ccef394946d6eb2d65e1"},
- {file = "fennel_data_lib-0.1.22-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bbf266cfe95fb3fa534d303b0ad4a315f407f4e0f241d1e608cc1abd3e647b06"},
- {file = "fennel_data_lib-0.1.22-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:a63e5d8bd9b2ca9521dc40152b2190e1bb83b346a531f9d731e32e8ee5700081"},
- {file = "fennel_data_lib-0.1.22-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:de58d19ae2a5079c0c698350a5f83d468bde7a379a5265c108138a385a00eb94"},
- {file = "fennel_data_lib-0.1.22-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b9a43626e495425ce764385cc5d58a5ac9ee4866eca965924a6d9f11508469b1"},
- {file = "fennel_data_lib-0.1.22-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a623c087c174bda0857aef638c18d130873c897c6935fc245d37e34f70f1b0c3"},
- {file = "fennel_data_lib-0.1.22-cp39-cp39-manylinux_2_34_x86_64.whl", hash = "sha256:703a389c4b748862b9bb71b22a3bd48aa37d0aecdd0c3c439881c818c9690b30"},
- {file = "fennel_data_lib-0.1.22-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:9118c48de75a26be45c5fd3ad52fb61048d4cbafd7b83599d528fe8b526e0e1a"},
- {file = "fennel_data_lib-0.1.22-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:2aedaec70a3abbf448a1a250e2b96ee98032da2040126c2116cb1ef3ed5882fa"},
- {file = "fennel_data_lib-0.1.22.tar.gz", hash = "sha256:7e27d220063fef16a284e28a890bbcbd7f3d2aea738ad6e495f0e9d6b3fba961"},
+ {file = "fennel_data_lib-0.1.23-cp310-cp310-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:6e3415c1e9565169062a83f4af3dafa16f9b0d08e9d6a7f46f9bb3023ec3c853"},
+ {file = "fennel_data_lib-0.1.23-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2afd70464a54a0d9e74e961e2b475d20cc0b19139035b773a4de6a62f62dd079"},
+ {file = "fennel_data_lib-0.1.23-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:2ca09807cc03c761cc488cd015a2944f8091ef22817ff6866568ff309c216ce5"},
+ {file = "fennel_data_lib-0.1.23-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1a14e2e99bd8e1af6d3e252ed2d746c3d99c8ce8d380b5cad9ca99107feba905"},
+ {file = "fennel_data_lib-0.1.23-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:4a6965115e0fe04dfd75a97d8e6a97936c8f9d91389ef8b7f52996af3a0cd87d"},
+ {file = "fennel_data_lib-0.1.23-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0b70561b8490ef597b6ad8fd808bad1ad9900a32abc9aaee2f9a714bea660daa"},
+ {file = "fennel_data_lib-0.1.23-cp310-cp310-manylinux_2_34_x86_64.whl", hash = "sha256:af50b8cb922105f10d6f2aecc80de4b22b054288c64a840a27f30dd08a2afb50"},
+ {file = "fennel_data_lib-0.1.23-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:d5adf377531a7659780895d4bda9a2e2fa01343de3a46f8f10beea726f1cb02e"},
+ {file = "fennel_data_lib-0.1.23-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:7f7f211068b3daf406283c20151666635e05aad62c77abd4bbfb077ce24f740e"},
+ {file = "fennel_data_lib-0.1.23-cp311-cp311-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:2f1fd0eaecc05944776733512865fda4f6684effefd1b9d753d97f9d7009e54c"},
+ {file = "fennel_data_lib-0.1.23-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ca31548d17d0b4fe06734f569d428cb2f1359874a19d93eea186c99440291f80"},
+ {file = "fennel_data_lib-0.1.23-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:326f27c746065188290665fa73f977643be8c8a523046117cd4e944f2b270cd8"},
+ {file = "fennel_data_lib-0.1.23-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:df4233ee7b48fe2105a2f18b5b89f841267f0949e3f52a3b5bb79a08176dec54"},
+ {file = "fennel_data_lib-0.1.23-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:20737c4dabff614e2e0beff7028d4aa4b236dec8184ca4bda54bc9c6d2205740"},
+ {file = "fennel_data_lib-0.1.23-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0f23cec10fc3a556c94beb9eb8dcb4854e69d6175abbdeaac28af5cd7a12c0a3"},
+ {file = "fennel_data_lib-0.1.23-cp311-cp311-manylinux_2_34_x86_64.whl", hash = "sha256:b9a8a994ebcea9eaa4f91b3ad9a229cbcec4944a68bfed6eee2fdd567c966b6e"},
+ {file = "fennel_data_lib-0.1.23-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:622f704a76370e4c94ae91063c997dc76f6fcf962e59b2fc163e53aec539bfc9"},
+ {file = "fennel_data_lib-0.1.23-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:548b6f670a08a51cabca33e191d06b902d650833b249c945de70981ace00fb58"},
+ {file = "fennel_data_lib-0.1.23-cp312-cp312-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:08c2a7aaf7ae35b383bb93ca190e71bb2f94d02bb12ea846680126be5b4e9ec4"},
+ {file = "fennel_data_lib-0.1.23-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:afd2a704cac259393b44deb3d44a861efd377717c880d031a679ce3b4a8d17d7"},
+ {file = "fennel_data_lib-0.1.23-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:117c55ba156942ad99be7334ca4fb479cadaa8df658e5aee49051b0cfa45f41f"},
+ {file = "fennel_data_lib-0.1.23-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c64f17b499088c0ddfeb2d1c3cf690736932dcc9e8e33a45e87e2b932acc43b0"},
+ {file = "fennel_data_lib-0.1.23-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:eecfc2e368dfb01266d888d61e545a35a7b076c540d6f1828db1ee2a31a69820"},
+ {file = "fennel_data_lib-0.1.23-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:37c67650df5afb4f903a814c47df3d75bc1f70bc5cec84ff03ac6038bddc7b37"},
+ {file = "fennel_data_lib-0.1.23-cp312-cp312-manylinux_2_34_x86_64.whl", hash = "sha256:39024f848a07859916893173a6ee0dfdab4349729972da494d555437a6db1490"},
+ {file = "fennel_data_lib-0.1.23-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:2f1801c08d1e3d53c6182fb700a984a89d79599697fb6cd6b2aed15c28b5a548"},
+ {file = "fennel_data_lib-0.1.23-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:0521b9afae47ac650eb00ff6b6d225f42f2ff7caccd5abf51147693d1137bb82"},
+ {file = "fennel_data_lib-0.1.23-cp39-cp39-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:be4600163b8352610b163684b062cafbd3fc93be65a31c821ab704002b724cd4"},
+ {file = "fennel_data_lib-0.1.23-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9a22a564e016b2cabcee0d264f638454b1d32dec42cd78fb42d4281a83089b83"},
+ {file = "fennel_data_lib-0.1.23-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:5d9cc06ebd7aad916031712d7cc3c7c366d142bc6706c75205ea54b9e748351d"},
+ {file = "fennel_data_lib-0.1.23-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:36d896fd8d552146241c86615bb5c67742f61a539a783f8d69e9818cd630bf31"},
+ {file = "fennel_data_lib-0.1.23-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d80748c0a3047b1ff9b091fe65c1d6730d1fb4cbf729eda01f6117e9dad0deaf"},
+ {file = "fennel_data_lib-0.1.23-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ac3fb58ef41b5bf1283c34965d48cdb0308083990ca961446dc828d690272bee"},
+ {file = "fennel_data_lib-0.1.23-cp39-cp39-manylinux_2_34_x86_64.whl", hash = "sha256:c50de126261886bb857f73405415ed55c9a62cc4bd53e5328c93cad98d7927cf"},
+ {file = "fennel_data_lib-0.1.23-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:2c200ad6ba679229e073c41ad712fc4244e8a2e9f802b0a2d5ea32868559aafe"},
+ {file = "fennel_data_lib-0.1.23-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:414a799d9e169edca4a636029ef54b35e1328c1859961e599f3d362ddb5bfbf3"},
+ {file = "fennel_data_lib-0.1.23.tar.gz", hash = "sha256:81736ee3054ddacea7723927463ad23697bccecf825670c4d203fa2aa7640c7a"},
]
[[package]]
@@ -3771,4 +3771,4 @@ type = ["pytest-mypy"]
[metadata]
lock-version = "2.0"
python-versions = "^3.9"
-content-hash = "9f3156d7967bc35926ea8e6efc96ec0a8c720947804b7a4b5a76c82f67e36ee0"
+content-hash = "fff37b1920b894614cfe70d9ceee94efe130b8b5d4df200bd56522e5353fae3c"
diff --git a/pyproject.toml b/pyproject.toml
index 62a58865f..67a1ebb65 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -1,6 +1,6 @@
[tool.poetry]
name = "fennel-ai"
-version = "1.5.49"
+version = "1.5.50"
description = "The modern realtime feature engineering platform"
authors = ["Fennel AI "]
packages = [{ include = "fennel" }]
@@ -20,7 +20,7 @@ pytest = "7.1.3"
pytest-rerunfailures = "^13.0"
sortedcontainers = "^2.4.0"
typing-extensions = "^4.12.0"
-fennel-data-lib = "0.1.22"
+fennel-data-lib = "0.1.23"
pyarrow = "^14.0.2"
[tool.poetry.dev-dependencies]
@@ -49,14 +49,14 @@ build-backend = "poetry.core.masonry.api"
# For local development, we use maturin to build the rust library
-#[build-system]
-#requires = ["maturin", "setuptools>=42", "wheel"]
-#build-backend = "maturin"
-#
-#[tool.maturin]
-#name = "fennel_data_lib"
-#sdist-directory = "python_package"
-#manifest-path = "../server/fennel_data_lib/Cargo.toml"
+# [build-system]
+# requires = ["maturin", "setuptools>=42", "wheel"]
+# build-backend = "maturin"
+
+# [tool.maturin]
+# name = "fennel_data_lib"
+# sdist-directory = "python_package"
+# manifest-path = "../server/fennel_data_lib/Cargo.toml"
# inspired from - https://github.com/pypa/pip/blob/main/pyproject.toml