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