From df4e3913052cc03e47b64c60237bd07ad62b1977 Mon Sep 17 00:00:00 2001 From: Katherine Bargar Date: Mon, 9 Mar 2026 17:16:45 +0000 Subject: [PATCH 1/5] Expand into datetime and integer columns --- src/ldlite/_csv.py | 3 ++ src/ldlite/database/_expansion/metadata.py | 54 ++++++++++------------ src/ldlite/database/_expansion/nodes.py | 6 +-- tests/test_expansion.py | 38 +++++++++------ 4 files changed, 55 insertions(+), 46 deletions(-) diff --git a/src/ldlite/_csv.py b/src/ldlite/_csv.py index dbe8eca..b8e7ae9 100644 --- a/src/ldlite/_csv.py +++ b/src/ldlite/_csv.py @@ -63,11 +63,14 @@ def to_csv( if i != 0: s += "," if attrs[i][1] in [ + "INTEGER", "NUMBER", "DECIMAL(18,3)", "bigint", + "integer", "numeric", 20, + 23, 1700, ]: s += str(d).rstrip("0").rstrip(".") diff --git a/src/ldlite/database/_expansion/metadata.py b/src/ldlite/database/_expansion/metadata.py index e18b854..84f2233 100644 --- a/src/ldlite/database/_expansion/metadata.py +++ b/src/ldlite/database/_expansion/metadata.py @@ -8,7 +8,7 @@ @dataclass class Metadata: - prop: str + prop: str | None # array is technically a type # but the metadata query returns inner type of the array # the jtype_of function normalizes the names between pg and duckdb @@ -31,6 +31,10 @@ def is_object(self) -> bool: @property def snake(self) -> str: + if self.prop is None: + # this doesn't realy come up in practice + return "$" + return "".join("_" + c.lower() if c.isupper() else c for c in self.prop).lstrip( "_", ) @@ -40,44 +44,36 @@ def select_column( json_col: sql.Identifier, alias: str, ) -> sql.Composed: - # '$' is a special character that means the root of the json - # I couldn't figure out how to make the array expansion work - # without it + str_extract = ( + "ldlite_system.jself_string({json_col})" + if self.prop is None + else "{json_col}->>{prop}" + ) + if self.is_array or self.is_object: - stmt = sql.SQL( - "{json_col}->{prop} AS {alias}" - if self.prop != "$" - else "{json_col} AS {alias}", - ) + extract = "{json_col}" if self.prop is None else "{json_col}->{prop}" + stmt = sql.SQL(extract + "AS {alias}") + elif self.json_type == "number" and self.is_float: + stmt = sql.SQL("(" + str_extract + ")::numeric AS {alias}") elif self.json_type == "number": - stmt = sql.SQL( - "({json_col}->>{prop})::numeric AS {alias}" - if self.prop != "$" - else "ldlite_system.jself_string({json_col})::numeric AS {alias}", - ) + stmt = sql.SQL("(" + str_extract + ")::integer AS {alias}") elif self.json_type == "boolean": stmt = sql.SQL( - "NULLIF(NULLIF({json_col}->>{prop}, ''), 'null')::bool AS {alias}" - if self.prop != "$" - else "NULLIF(NULLIF(" - "ldlite_system.jself_string({json_col})" - ", ''), 'null')::bool AS {alias}", + "NULLIF(NULLIF(" + str_extract + ", ''), 'null')::bool AS {alias}", ) elif self.json_type == "string" and self.is_uuid: stmt = sql.SQL( - "NULLIF(NULLIF({json_col}->>{prop}, ''), 'null')::uuid AS {alias}" - if self.prop != "$" - else "NULLIF(NULLIF(" - "ldlite_system.jself_string({json_col})" - ", ''), 'null')::uuid AS {alias}", + "NULLIF(NULLIF(" + str_extract + ", ''), 'null')::uuid AS {alias}", + ) + elif self.json_type == "string" and self.is_datetime: + stmt = sql.SQL( + "NULLIF(NULLIF(" + + str_extract + + ", ''), 'null')::timestamptz AS {alias}", ) else: stmt = sql.SQL( - "NULLIF(NULLIF({json_col}->>{prop}, ''), 'null') AS {alias}" - if self.prop != "$" - else "NULLIF(NULLIF(" - "ldlite_system.jself_string({json_col})" - ", ''), 'null') AS {alias}", + "NULLIF(NULLIF(" + str_extract + ", ''), 'null') AS {alias}", ) return stmt.format( diff --git a/src/ldlite/database/_expansion/nodes.py b/src/ldlite/database/_expansion/nodes.py index 75ea842..d6cba5a 100644 --- a/src/ldlite/database/_expansion/nodes.py +++ b/src/ldlite/database/_expansion/nodes.py @@ -233,10 +233,10 @@ def unnest( SELECT 1 FROM all_values WHERE json_type = 'string' AND NOT ldlite_system.jis_datetime(ld_value) ) AS is_datetime - ,NOT EXISTS + ,EXISTS ( SELECT 1 FROM all_values - WHERE json_type = 'number' AND NOT ldlite_system.jis_float(ld_value) + WHERE json_type = 'number' AND ldlite_system.jis_float(ld_value) ) AS is_float """, ) @@ -310,7 +310,7 @@ def __init__( ): super().__init__(name, path, parent, values) self.meta = Metadata( - "$", + None, meta.json_type, False, meta.is_uuid, diff --git a/tests/test_expansion.py b/tests/test_expansion.py index 8967736..b24a844 100644 --- a/tests/test_expansion.py +++ b/tests/test_expansion.py @@ -49,7 +49,9 @@ def case_typed_columns() -> ExpansionTC: b""" { "id": "id1", - "numeric": 1, + "timestamptz": "2028-01-23T00:00:00.000+00:00", + "integer": 1, + "numeric": 1.2, "text": "value", "boolean": false, "uuid": "88888888-8888-1888-8888-888888888888" @@ -58,7 +60,9 @@ def case_typed_columns() -> ExpansionTC: b""" { "id": "id2", - "numeric": 2, + "timestamptz": "2025-06-20T17:37:58.675+00:00", + "integer": 2, + "numeric": 2.3, "text": "00000000-0000-1000-A000-000000000000", "boolean": false, "uuid": "11111111-1111-1111-8111-111111111111" @@ -72,14 +76,16 @@ def case_typed_columns() -> ExpansionTC: FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 'prefix__t' AND COLUMN_NAME = '{a[0]}' """, - exp_pg=a[0], - exp_duck=a[1], + exp_pg=a[1], + exp_duck=a[2], ) for a in [ - ("numeric", "DECIMAL(18,3)"), - ("text", "VARCHAR"), - ("uuid", "UUID"), - ("boolean", "BOOLEAN"), + ("integer", "integer", "INTEGER"), + ("numeric", "numeric", "DECIMAL(18,3)"), + ("text", "text", "VARCHAR"), + ("uuid", "uuid", "UUID"), + ("boolean", "boolean", "BOOLEAN"), + ("timestamptz", "timestamp with time zone", "TIMESTAMP WITH TIME ZONE"), ] ], ) @@ -90,11 +96,12 @@ def case_typed_columns() -> ExpansionTC: [ ("all_null", None, None), ("nullable_numeric", "numeric", "DECIMAL(18,3)"), + ("nullable_integer", "integer", "INTEGER"), ("nullable_uuid", "uuid", "UUID"), ("nullable_bool", "boolean", "BOOLEAN"), - ("nullable_object__id", "numeric", "DECIMAL(18,3)"), - ("nullable_array", "numeric", "DECIMAL(18,3)"), - ("sortof_nullable_array__id", "numeric", "DECIMAL(18,3)"), + ("nullable_object__id", "integer", "INTEGER"), + ("nullable_array", "integer", "INTEGER"), + ("sortof_nullable_array__id", "integer", "INTEGER"), ], idgen="prop={assertion[0]}", ) @@ -104,6 +111,7 @@ def case_null(assertion: tuple[str, str | None, str | None]) -> ExpansionTC: b""" { "all_null": null, + "nullable_integer": null, "nullable_numeric": null, "nullable_bool": null, "nullable_uuid": null, @@ -115,7 +123,8 @@ def case_null(assertion: tuple[str, str | None, str | None]) -> ExpansionTC: b""" { "all_null": null, - "nullable_numeric": 5, + "nullable_integer": 7, + "nullable_numeric": 5.5, "nullable_uuid": null, "nullable_bool": false, "nullable_object": { "id": 5 }, @@ -126,7 +135,8 @@ def case_null(assertion: tuple[str, str | None, str | None]) -> ExpansionTC: b""" { "all_null": null, - "nullable_numeric": null, + "nullable_integer": 0, + "nullable_numeric": 1, "nullable_bool": true, "nullable_uuid": "0b03c888-102b-18e9-afb7-85e22229ca4d", "nullable_object": { "id": null}, @@ -284,7 +294,7 @@ def case_basic_array() -> ExpansionTC: ) for a in [ ("list1", "VARCHAR", "text"), - ("list2", "DECIMAL(18,3)", "numeric"), + ("list2", "INTEGER", "integer"), ] ], ], From 8196ec4b53b1ea8adcfb397c5fce24b1a11bd0dd Mon Sep 17 00:00:00 2001 From: Katherine Bargar Date: Tue, 10 Mar 2026 16:49:09 +0000 Subject: [PATCH 2/5] Handle bigint columns --- src/ldlite/database/_duckdb.py | 4 ++++ src/ldlite/database/_expansion/metadata.py | 3 +++ src/ldlite/database/_expansion/nodes.py | 6 ++++++ src/ldlite/database/_postgres.py | 8 +++++++ tests/test_json_operators.py | 25 ++++++++++++++++++++++ 5 files changed, 46 insertions(+) diff --git a/src/ldlite/database/_duckdb.py b/src/ldlite/database/_duckdb.py index 1ca8508..241b85b 100644 --- a/src/ldlite/database/_duckdb.py +++ b/src/ldlite/database/_duckdb.py @@ -57,6 +57,10 @@ def _setup_jfuncs(conn: duckdb.DuckDBPyConnection) -> None: main.json_type(j) == 'DOUBLE' ; +CREATE OR REPLACE FUNCTION ldlite_system.jis_bigint(j) AS + COALESCE(TRY_CAST(j AS NUMERIC), 0) > 2147483647 +; + CREATE OR REPLACE FUNCTION ldlite_system.jis_null(j) AS j IS NULL OR j == 'null'::JSON OR main.json_extract_string(j, '$') IN ('NULL', 'null', '', '{}', '[]') ; diff --git a/src/ldlite/database/_expansion/metadata.py b/src/ldlite/database/_expansion/metadata.py index 84f2233..2914772 100644 --- a/src/ldlite/database/_expansion/metadata.py +++ b/src/ldlite/database/_expansion/metadata.py @@ -17,6 +17,7 @@ class Metadata: is_uuid: bool is_datetime: bool is_float: bool + is_bigint: bool def __post_init__(self) -> None: # Mixed json_type columns (which shouldn't really happen) @@ -55,6 +56,8 @@ def select_column( stmt = sql.SQL(extract + "AS {alias}") elif self.json_type == "number" and self.is_float: stmt = sql.SQL("(" + str_extract + ")::numeric AS {alias}") + elif self.json_type == "number" and self.is_bigint: + stmt = sql.SQL("(" + str_extract + ")::bigint AS {alias}") elif self.json_type == "number": stmt = sql.SQL("(" + str_extract + ")::integer AS {alias}") elif self.json_type == "boolean": diff --git a/src/ldlite/database/_expansion/nodes.py b/src/ldlite/database/_expansion/nodes.py index d6cba5a..8d9e092 100644 --- a/src/ldlite/database/_expansion/nodes.py +++ b/src/ldlite/database/_expansion/nodes.py @@ -238,6 +238,11 @@ def unnest( SELECT 1 FROM all_values WHERE json_type = 'number' AND ldlite_system.jis_float(ld_value) ) AS is_float + ,EXISTS + ( + SELECT 1 FROM all_values + WHERE json_type = 'number' AND ldlite_system.jis_bigint(ld_value) + ) AS is_bigint """, ) .format( @@ -316,6 +321,7 @@ def __init__( meta.is_uuid, meta.is_datetime, meta.is_float, + meta.is_bigint, ) def explode( diff --git a/src/ldlite/database/_postgres.py b/src/ldlite/database/_postgres.py index 2b51f9c..3084784 100644 --- a/src/ldlite/database/_postgres.py +++ b/src/ldlite/database/_postgres.py @@ -72,6 +72,14 @@ def _setup_jfuncs(conn: psycopg.Connection) -> None: PARALLEL SAFE STRICT; +CREATE OR REPLACE FUNCTION ldlite_system.jis_bigint(j JSONB) RETURNS BOOLEAN AS $$ +SELECT (j)::numeric > 2147483647 +$$ +LANGUAGE sql +IMMUTABLE +PARALLEL SAFE +STRICT; + CREATE OR REPLACE FUNCTION ldlite_system.jis_null(j JSONB) RETURNS BOOLEAN AS $$ SELECT j IS NULL OR j = 'null'::jsonb OR j #>> '{}' IN ('NULL', 'null', '', '{}', '[]') $$ diff --git a/tests/test_json_operators.py b/tests/test_json_operators.py index 8b1f8c8..2ae7d24 100644 --- a/tests/test_json_operators.py +++ b/tests/test_json_operators.py @@ -50,6 +50,8 @@ def case_jobject_keys() -> JsonTC: ("str", "string"), ("num", "number"), ("float", "number"), + ("bigfloat", "number"), + ("bigint", "number"), ("bool", "boolean"), ("obj", "object"), ("arr_str", "array"), @@ -160,6 +162,8 @@ def case_jis_datetime(p: tuple[Any, ...]) -> JsonTC: p=[ ("num", False), ("float", True), + ("bigfloat", True), + ("bigint", False), ], ) def case_jis_float(p: tuple[Any, ...]) -> JsonTC: @@ -173,6 +177,25 @@ def case_jis_float(p: tuple[Any, ...]) -> JsonTC: ) +@parametrize( + p=[ + ("num", False), + ("float", False), + ("bigfloat", True), + ("bigint", True), + ], +) +def case_jis_bigint(p: tuple[Any, ...]) -> JsonTC: + return JsonTC( + """ +SELECT {assertion}ldlite_system.jis_bigint(jc->$1) +FROM j;""", + p[:1], + "" if (p[1]) else """ NOT """, + (), + ) + + def _assert(conn: "dbapi.DBAPIConnection", jtype: str, tc: JsonTC) -> None: with closing(conn.cursor()) as cur: query = tc.query.format(assertion="", jtype=jtype) @@ -206,6 +229,8 @@ def _arrange(conn: "dbapi.DBAPIConnection") -> None: "str_empty": "", "num": 12, "float": 16.3, + "bigint": 2147483648, + "bigfloat": 2147483648.1, "bool": true, "uuid": "5b285d03-5490-1111-8888-52b2003b475c", "uuid_nof": "5b285d03-5490-FFFF-0000-52b2003b475c", From 34e98b884a11a2504959fd3d27ed52e5406ffcc4 Mon Sep 17 00:00:00 2001 From: Katherine Bargar Date: Tue, 10 Mar 2026 16:54:52 +0000 Subject: [PATCH 3/5] Install pytz for duckdb compatibility --- pyproject.toml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/pyproject.toml b/pyproject.toml index e5a780e..a18a6f0 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -13,6 +13,9 @@ authors = [ dependencies = [ # 1.3 introduces json each "duckdb>=1.3", + # pytz is required for timestamptz columns in duckdb + # 2021.3 was released with 3.10 + "pytz>=2021.3", # 4.64 is the first release with type stubs "tqdm>=4.64.0", # 0.3 allows checking the path for id based paging From e955140eb6339405ef6e60d922ffa7c94f3a488c Mon Sep 17 00:00:00 2001 From: Katherine Bargar Date: Tue, 10 Mar 2026 17:29:24 +0000 Subject: [PATCH 4/5] Relock dependencies --- pylock.lint.toml | 104 ++++++++++++++++++++++++-------------------- pylock.maximal.toml | 50 +++++++++++++-------- pylock.minimal.toml | 14 +++++- pylock.toml | 104 ++++++++++++++++++++++++-------------------- 4 files changed, 160 insertions(+), 112 deletions(-) diff --git a/pylock.lint.toml b/pylock.lint.toml index fb6f477..b0cd92d 100644 --- a/pylock.lint.toml +++ b/pylock.lint.toml @@ -223,44 +223,44 @@ dependencies = [] [[packages]] name = "duckdb" -version = "1.4.4" -requires-python = ">=3.9.0" -sdist = {name = "duckdb-1.4.4.tar.gz", url = "https://files.pythonhosted.org/packages/36/9d/ab66a06e416d71b7bdcb9904cdf8d4db3379ef632bb8e9495646702d9718/duckdb-1.4.4.tar.gz", hashes = {sha256 = "8bba52fd2acb67668a4615ee17ee51814124223de836d9e2fdcbc4c9021b3d3c"}} -wheels = [ - {name = "duckdb-1.4.4-cp314-cp314-macosx_10_15_universal2.whl",url = "https://files.pythonhosted.org/packages/97/a6/f19e2864e651b0bd8e4db2b0c455e7e0d71e0d4cd2cd9cc052f518e43eb3/duckdb-1.4.4-cp314-cp314-macosx_10_15_universal2.whl",hashes = {sha256 = "25874f8b1355e96178079e37312c3ba6d61a2354f51319dae860cf21335c3a20"}}, - {name = "duckdb-1.4.4-cp314-cp314-macosx_10_15_x86_64.whl",url = "https://files.pythonhosted.org/packages/0e/93/8a24e932c67414fd2c45bed83218e62b73348996bf859eda020c224774b2/duckdb-1.4.4-cp314-cp314-macosx_10_15_x86_64.whl",hashes = {sha256 = "452c5b5d6c349dc5d1154eb2062ee547296fcbd0c20e9df1ed00b5e1809089da"}}, - {name = "duckdb-1.4.4-cp314-cp314-macosx_11_0_arm64.whl",url = "https://files.pythonhosted.org/packages/62/13/e5378ff5bb1d4397655d840b34b642b1b23cdd82ae19599e62dc4b9461c9/duckdb-1.4.4-cp314-cp314-macosx_11_0_arm64.whl",hashes = {sha256 = "8e5c2d8a0452df55e092959c0bfc8ab8897ac3ea0f754cb3b0ab3e165cd79aff"}}, - {name = "duckdb-1.4.4-cp314-cp314-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl",url = "https://files.pythonhosted.org/packages/2d/94/24364da564b27aeebe44481f15bd0197a0b535ec93f188a6b1b98c22f082/duckdb-1.4.4-cp314-cp314-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl",hashes = {sha256 = "1af6e76fe8bd24875dc56dd8e38300d64dc708cd2e772f67b9fbc635cc3066a3"}}, - {name = "duckdb-1.4.4-cp314-cp314-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl",url = "https://files.pythonhosted.org/packages/26/0a/6ae31b2914b4dc34243279b2301554bcbc5f1a09ccc82600486c49ab71d1/duckdb-1.4.4-cp314-cp314-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl",hashes = {sha256 = "d0440f59e0cd9936a9ebfcf7a13312eda480c79214ffed3878d75947fc3b7d6d"}}, - {name = "duckdb-1.4.4-cp314-cp314-win_amd64.whl",url = "https://files.pythonhosted.org/packages/d2/b1/fd5c37c53d45efe979f67e9bd49aaceef640147bb18f0699a19edd1874d6/duckdb-1.4.4-cp314-cp314-win_amd64.whl",hashes = {sha256 = "59c8d76016dde854beab844935b1ec31de358d4053e792988108e995b18c08e7"}}, - {name = "duckdb-1.4.4-cp314-cp314-win_arm64.whl",url = "https://files.pythonhosted.org/packages/dd/2d/13e6024e613679d8a489dd922f199ef4b1d08a456a58eadd96dc2f05171f/duckdb-1.4.4-cp314-cp314-win_arm64.whl",hashes = {sha256 = "53cd6423136ab44383ec9955aefe7599b3fb3dd1fe006161e6396d8167e0e0d4"}}, - {name = "duckdb-1.4.4-cp313-cp313-macosx_10_13_universal2.whl",url = "https://files.pythonhosted.org/packages/7f/fe/64810fee20030f2bf96ce28b527060564864ce5b934b50888eda2cbf99dd/duckdb-1.4.4-cp313-cp313-macosx_10_13_universal2.whl",hashes = {sha256 = "337f8b24e89bc2e12dadcfe87b4eb1c00fd920f68ab07bc9b70960d6523b8bc3"}}, - {name = "duckdb-1.4.4-cp313-cp313-macosx_10_13_x86_64.whl",url = "https://files.pythonhosted.org/packages/9c/9b/3c7c5e48456b69365d952ac201666053de2700f5b0144a699a4dc6854507/duckdb-1.4.4-cp313-cp313-macosx_10_13_x86_64.whl",hashes = {sha256 = "0509b39ea7af8cff0198a99d206dca753c62844adab54e545984c2e2c1381616"}}, - {name = "duckdb-1.4.4-cp313-cp313-macosx_11_0_arm64.whl",url = "https://files.pythonhosted.org/packages/a6/7b/64e68a7b857ed0340045501535a0da99ea5d9d5ea3708fec0afb8663eb27/duckdb-1.4.4-cp313-cp313-macosx_11_0_arm64.whl",hashes = {sha256 = "fb94de6d023de9d79b7edc1ae07ee1d0b4f5fa8a9dcec799650b5befdf7aafec"}}, - {name = "duckdb-1.4.4-cp313-cp313-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl",url = "https://files.pythonhosted.org/packages/09/5b/3e7aa490841784d223de61beb2ae64e82331501bf5a415dc87a0e27b4663/duckdb-1.4.4-cp313-cp313-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl",hashes = {sha256 = "0d636ceda422e7babd5e2f7275f6a0d1a3405e6a01873f00d38b72118d30c10b"}}, - {name = "duckdb-1.4.4-cp313-cp313-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl",url = "https://files.pythonhosted.org/packages/53/32/256df3dbaa198c58539ad94f9a41e98c2c8ff23f126b8f5f52c7dcd0a738/duckdb-1.4.4-cp313-cp313-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl",hashes = {sha256 = "7df7351328ffb812a4a289732f500d621e7de9942a3a2c9b6d4afcf4c0e72526"}}, - {name = "duckdb-1.4.4-cp313-cp313-win_amd64.whl",url = "https://files.pythonhosted.org/packages/a4/f0/620323fd87062ea43e527a2d5ed9e55b525e0847c17d3b307094ddab98a2/duckdb-1.4.4-cp313-cp313-win_amd64.whl",hashes = {sha256 = "6fb1225a9ea5877421481d59a6c556a9532c32c16c7ae6ca8d127e2b878c9389"}}, - {name = "duckdb-1.4.4-cp313-cp313-win_arm64.whl",url = "https://files.pythonhosted.org/packages/e5/07/a397fdb7c95388ba9c055b9a3d38dfee92093f4427bc6946cf9543b1d216/duckdb-1.4.4-cp313-cp313-win_arm64.whl",hashes = {sha256 = "f28a18cc790217e5b347bb91b2cab27aafc557c58d3d8382e04b4fe55d0c3f66"}}, - {name = "duckdb-1.4.4-cp312-cp312-macosx_10_13_universal2.whl",url = "https://files.pythonhosted.org/packages/58/33/beadaa69f8458afe466126f2c5ee48c4759cc9d5d784f8703d44e0b52c3c/duckdb-1.4.4-cp312-cp312-macosx_10_13_universal2.whl",hashes = {sha256 = "ddcfd9c6ff234da603a1edd5fd8ae6107f4d042f74951b65f91bc5e2643856b3"}}, - {name = "duckdb-1.4.4-cp312-cp312-macosx_10_13_x86_64.whl",url = "https://files.pythonhosted.org/packages/76/66/82413f386df10467affc87f65bac095b7c88dbd9c767584164d5f4dc4cb8/duckdb-1.4.4-cp312-cp312-macosx_10_13_x86_64.whl",hashes = {sha256 = "6792ca647216bd5c4ff16396e4591cfa9b4a72e5ad7cdd312cec6d67e8431a7c"}}, - {name = "duckdb-1.4.4-cp312-cp312-macosx_11_0_arm64.whl",url = "https://files.pythonhosted.org/packages/5d/8c/c13d396fd4e9bf970916dc5b4fea410c1b10fe531069aea65f1dcf849a71/duckdb-1.4.4-cp312-cp312-macosx_11_0_arm64.whl",hashes = {sha256 = "1f8d55843cc940e36261689054f7dfb6ce35b1f5b0953b0d355b6adb654b0d52"}}, - {name = "duckdb-1.4.4-cp312-cp312-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl",url = "https://files.pythonhosted.org/packages/db/77/2446a0b44226bb95217748d911c7ca66a66ca10f6481d5178d9370819631/duckdb-1.4.4-cp312-cp312-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl",hashes = {sha256 = "c65d15c440c31e06baaebfd2c06d71ce877e132779d309f1edf0a85d23c07e92"}}, - {name = "duckdb-1.4.4-cp312-cp312-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl",url = "https://files.pythonhosted.org/packages/2e/a3/97715bba30040572fb15d02c26f36be988d48bc00501e7ac02b1d65ef9d0/duckdb-1.4.4-cp312-cp312-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl",hashes = {sha256 = "b297eff642503fd435a9de5a9cb7db4eccb6f61d61a55b30d2636023f149855f"}}, - {name = "duckdb-1.4.4-cp312-cp312-win_amd64.whl",url = "https://files.pythonhosted.org/packages/8b/0a/18b9167adf528cbe3867ef8a84a5f19f37bedccb606a8a9e59cfea1880c8/duckdb-1.4.4-cp312-cp312-win_amd64.whl",hashes = {sha256 = "d525de5f282b03aa8be6db86b1abffdceae5f1055113a03d5b50cd2fb8cf2ef8"}}, - {name = "duckdb-1.4.4-cp312-cp312-win_arm64.whl",url = "https://files.pythonhosted.org/packages/f8/15/37af97f5717818f3d82d57414299c293b321ac83e048c0a90bb8b6a09072/duckdb-1.4.4-cp312-cp312-win_arm64.whl",hashes = {sha256 = "50f2eb173c573811b44aba51176da7a4e5c487113982be6a6a1c37337ec5fa57"}}, - {name = "duckdb-1.4.4-cp311-cp311-macosx_10_9_universal2.whl",url = "https://files.pythonhosted.org/packages/04/68/19233412033a2bc5a144a3f531f64e3548d4487251e3f16b56c31411a06f/duckdb-1.4.4-cp311-cp311-macosx_10_9_universal2.whl",hashes = {sha256 = "5ba684f498d4e924c7e8f30dd157da8da34c8479746c5011b6c0e037e9c60ad2"}}, - {name = "duckdb-1.4.4-cp311-cp311-macosx_10_9_x86_64.whl",url = "https://files.pythonhosted.org/packages/b3/3e/cec70e546c298ab76d80b990109e111068d82cca67942c42328eaa7d6fdb/duckdb-1.4.4-cp311-cp311-macosx_10_9_x86_64.whl",hashes = {sha256 = "5536eb952a8aa6ae56469362e344d4e6403cc945a80bc8c5c2ebdd85d85eb64b"}}, - {name = "duckdb-1.4.4-cp311-cp311-macosx_11_0_arm64.whl",url = "https://files.pythonhosted.org/packages/d3/f0/cf4241a040ec4f571859a738007ec773b642fbc27df4cbcf34b0c32ea559/duckdb-1.4.4-cp311-cp311-macosx_11_0_arm64.whl",hashes = {sha256 = "47dd4162da6a2be59a0aef640eb08d6360df1cf83c317dcc127836daaf3b7f7c"}}, - {name = "duckdb-1.4.4-cp311-cp311-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl",url = "https://files.pythonhosted.org/packages/11/64/de2bb4ec1e35ec9ebf6090a95b930fc56934a0ad6f34a24c5972a14a77ef/duckdb-1.4.4-cp311-cp311-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl",hashes = {sha256 = "6cb357cfa3403910e79e2eb46c8e445bb1ee2fd62e9e9588c6b999df4256abc1"}}, - {name = "duckdb-1.4.4-cp311-cp311-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl",url = "https://files.pythonhosted.org/packages/79/a2/ac0f5ee16df890d141304bcd48733516b7202c0de34cd3555634d6eb4551/duckdb-1.4.4-cp311-cp311-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl",hashes = {sha256 = "4c25d5b0febda02b7944e94fdae95aecf952797afc8cb920f677b46a7c251955"}}, - {name = "duckdb-1.4.4-cp311-cp311-win_amd64.whl",url = "https://files.pythonhosted.org/packages/37/a2/9a3402edeedaecf72de05fe9ff7f0303d701b8dfc136aea4a4be1a5f7eee/duckdb-1.4.4-cp311-cp311-win_amd64.whl",hashes = {sha256 = "6703dd1bb650025b3771552333d305d62ddd7ff182de121483d4e042ea6e2e00"}}, - {name = "duckdb-1.4.4-cp311-cp311-win_arm64.whl",url = "https://files.pythonhosted.org/packages/f6/e6/052ea6dcdf35b259fd182eff3efd8d75a071de4010c9807556098df137b9/duckdb-1.4.4-cp311-cp311-win_arm64.whl",hashes = {sha256 = "bf138201f56e5d6fc276a25138341b3523e2f84733613fc43f02c54465619a95"}}, - {name = "duckdb-1.4.4-cp310-cp310-macosx_10_9_universal2.whl",url = "https://files.pythonhosted.org/packages/a2/9f/67a75f1e88f84946909826fa7aadd0c4b0dc067f24956142751fd9d59fe6/duckdb-1.4.4-cp310-cp310-macosx_10_9_universal2.whl",hashes = {sha256 = "e870a441cb1c41d556205deb665749f26347ed13b3a247b53714f5d589596977"}}, - {name = "duckdb-1.4.4-cp310-cp310-macosx_10_9_x86_64.whl",url = "https://files.pythonhosted.org/packages/6b/7a/e9277d0567884c21f345ad43cc01aeaa2abe566d5fdf22e35c3861dd44fa/duckdb-1.4.4-cp310-cp310-macosx_10_9_x86_64.whl",hashes = {sha256 = "49123b579e4a6323e65139210cd72dddc593a72d840211556b60f9703bda8526"}}, - {name = "duckdb-1.4.4-cp310-cp310-macosx_11_0_arm64.whl",url = "https://files.pythonhosted.org/packages/4a/96/3a7630d2779d2bae6f3cdf540a088ed45166adefd3c429971e5b85ce8f84/duckdb-1.4.4-cp310-cp310-macosx_11_0_arm64.whl",hashes = {sha256 = "5e1933fac5293fea5926b0ee75a55b8cfe7f516d867310a5b251831ab61fe62b"}}, - {name = "duckdb-1.4.4-cp310-cp310-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl",url = "https://files.pythonhosted.org/packages/8e/ad/f62a3a65d200e8afc1f75cf0dd3f0aa84ef0dd07c484414a11f2abed810e/duckdb-1.4.4-cp310-cp310-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl",hashes = {sha256 = "707530f6637e91dc4b8125260595299ec9dd157c09f5d16c4186c5988bfbd09a"}}, - {name = "duckdb-1.4.4-cp310-cp310-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl",url = "https://files.pythonhosted.org/packages/a2/5f/23bd586ecb21273b41b5aa4b16fd88b7fecb53ed48d897273651c0c3d66f/duckdb-1.4.4-cp310-cp310-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl",hashes = {sha256 = "453b115f4777467f35103d8081770ac2f223fb5799178db5b06186e3ab51d1f2"}}, - {name = "duckdb-1.4.4-cp310-cp310-win_amd64.whl",url = "https://files.pythonhosted.org/packages/8b/d0/4ce78bf341c930d4a22a56cb686bfc2c975eaf25f653a7ac25e3929d98bb/duckdb-1.4.4-cp310-cp310-win_amd64.whl",hashes = {sha256 = "a3c8542db7ffb128aceb7f3b35502ebaddcd4f73f1227569306cc34bad06680c"}}, +version = "1.5.0" +requires-python = ">=3.10.0" +sdist = {name = "duckdb-1.5.0.tar.gz", url = "https://files.pythonhosted.org/packages/ee/11/e05a7eb73a373d523e45d83c261025e02bc31ebf868e6282c30c4d02cc59/duckdb-1.5.0.tar.gz", hashes = {sha256 = "f974b61b1c375888ee62bc3125c60ac11c4e45e4457dd1bb31a8f8d3cf277edd"}} +wheels = [ + {name = "duckdb-1.5.0-cp314-cp314-macosx_10_15_universal2.whl",url = "https://files.pythonhosted.org/packages/66/9f/dd806d4e8ecd99006eb240068f34e1054533da1857ad06ac726305cd102d/duckdb-1.5.0-cp314-cp314-macosx_10_15_universal2.whl",hashes = {sha256 = "d4b618de670cd2271dd7b3397508c7b3c62d8ea70c592c755643211a6f9154fa"}}, + {name = "duckdb-1.5.0-cp314-cp314-macosx_10_15_x86_64.whl",url = "https://files.pythonhosted.org/packages/79/c2/7b7b8a5c65d5535c88a513e267b5e6d7a55ab3e9b67e4ddd474454653268/duckdb-1.5.0-cp314-cp314-macosx_10_15_x86_64.whl",hashes = {sha256 = "065ae50cb185bac4b904287df72e6b4801b3bee2ad85679576dd712b8ba07021"}}, + {name = "duckdb-1.5.0-cp314-cp314-macosx_11_0_arm64.whl",url = "https://files.pythonhosted.org/packages/23/c5/9a52a2cdb228b8d8d191a603254364d929274d9cc7d285beada8f7daa712/duckdb-1.5.0-cp314-cp314-macosx_11_0_arm64.whl",hashes = {sha256 = "6be5e48e287a24d98306ce9dd55093c3b105a8fbd8a2e7a45e13df34bf081985"}}, + {name = "duckdb-1.5.0-cp314-cp314-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl",url = "https://files.pythonhosted.org/packages/b8/68/646045cb97982702a8a143dc2e45f3bdcb79fbe2d559a98d74b8c160e5e2/duckdb-1.5.0-cp314-cp314-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl",hashes = {sha256 = "a5ee41a0bf793882f02192ce105b9a113c3e8c505a27c7ef9437d7b756317113"}}, + {name = "duckdb-1.5.0-cp314-cp314-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl",url = "https://files.pythonhosted.org/packages/15/1b/5abf0c7f38febb3b4a231c784223fceccfd3f2bfd957699d786f46e41ce6/duckdb-1.5.0-cp314-cp314-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl",hashes = {sha256 = "f8e42aaf3cd217417c5dc9ff522dc3939d18b25a6fe5f846348277e831e6f59c"}}, + {name = "duckdb-1.5.0-cp314-cp314-win_amd64.whl",url = "https://files.pythonhosted.org/packages/93/a4/a90f2901cc0a1ce7ca4f0564b8492b9dbfe048a6395b27933d46ae9be473/duckdb-1.5.0-cp314-cp314-win_amd64.whl",hashes = {sha256 = "11ae50aaeda2145b50294ee0247e4f11fb9448b3cc3d2aea1cfc456637dfb977"}}, + {name = "duckdb-1.5.0-cp314-cp314-win_arm64.whl",url = "https://files.pythonhosted.org/packages/64/aa/f14dd5e241ec80d9f9d82196ca65e0c53badfc8a7a619d5497c5626657ad/duckdb-1.5.0-cp314-cp314-win_arm64.whl",hashes = {sha256 = "d6d2858c734d1a7e7a1b6e9b8403b3fce26dfefb4e0a2479c420fba6cd36db36"}}, + {name = "duckdb-1.5.0-cp313-cp313-macosx_10_13_universal2.whl",url = "https://files.pythonhosted.org/packages/35/5d/af5501221f42e4e3662c047ecec4dcd0761229fceeba3c67ad4d9d8741df/duckdb-1.5.0-cp313-cp313-macosx_10_13_universal2.whl",hashes = {sha256 = "11dd05b827846c87f0ae2f67b9ae1d60985882a7c08ce855379e4a08d5be0e1d"}}, + {name = "duckdb-1.5.0-cp313-cp313-macosx_10_13_x86_64.whl",url = "https://files.pythonhosted.org/packages/43/bd/a278d73fedbd3783bf9aedb09cad4171fe8e55bd522952a84f6849522eb6/duckdb-1.5.0-cp313-cp313-macosx_10_13_x86_64.whl",hashes = {sha256 = "5ad8d9c91b7c280ab6811f59deff554b845706c20baa28c4e8f80a95690b252b"}}, + {name = "duckdb-1.5.0-cp313-cp313-macosx_11_0_arm64.whl",url = "https://files.pythonhosted.org/packages/76/fc/c916e928606946209c20fb50898dabf120241fb528a244e2bd8cde1bd9e2/duckdb-1.5.0-cp313-cp313-macosx_11_0_arm64.whl",hashes = {sha256 = "0ee4dabe03ed810d64d93927e0fd18cd137060b81ee75dcaeaaff32cbc816656"}}, + {name = "duckdb-1.5.0-cp313-cp313-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl",url = "https://files.pythonhosted.org/packages/53/07/1390e69db922423b2e111e32ed342b3e8fad0a31c144db70681ea1ba4d56/duckdb-1.5.0-cp313-cp313-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl",hashes = {sha256 = "9409ed1184b363ddea239609c5926f5148ee412b8d9e5ffa617718d755d942f6"}}, + {name = "duckdb-1.5.0-cp313-cp313-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl",url = "https://files.pythonhosted.org/packages/54/13/b58d718415cde993823a54952ea511d2612302f1d2bc220549d0cef752a4/duckdb-1.5.0-cp313-cp313-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl",hashes = {sha256 = "1df8c4f9c853a45f3ec1e79ed7fe1957a203e5ec893bbbb853e727eb93e0090f"}}, + {name = "duckdb-1.5.0-cp313-cp313-win_amd64.whl",url = "https://files.pythonhosted.org/packages/e0/96/4460429651e371eb5ff745a4790e7fa0509c7a58c71fc4f0f893404c9646/duckdb-1.5.0-cp313-cp313-win_amd64.whl",hashes = {sha256 = "9a3d3dfa2d8bc74008ce3ad9564761ae23505a9e4282f6a36df29bd87249620b"}}, + {name = "duckdb-1.5.0-cp313-cp313-win_arm64.whl",url = "https://files.pythonhosted.org/packages/ba/54/6d5b805113214b830fa3c267bb3383fb8febaa30760d0162ef59aadb110a/duckdb-1.5.0-cp313-cp313-win_arm64.whl",hashes = {sha256 = "2deebcbafd9d39c04f31ec968f4dd7cee832c021e10d96b32ab0752453e247c8"}}, + {name = "duckdb-1.5.0-cp312-cp312-macosx_10_13_universal2.whl",url = "https://files.pythonhosted.org/packages/43/73/120e673e48ae25aaf689044c25ef51b0ea1d088563c9a2532612aea18e0a/duckdb-1.5.0-cp312-cp312-macosx_10_13_universal2.whl",hashes = {sha256 = "9ea988d1d5c8737720d1b2852fd70e4d9e83b1601b8896a1d6d31df5e6afc7dd"}}, + {name = "duckdb-1.5.0-cp312-cp312-macosx_10_13_x86_64.whl",url = "https://files.pythonhosted.org/packages/21/e9/61143471958d36d3f3e764cb4cd43330be208ddbff1c78d3310b9ee67fe8/duckdb-1.5.0-cp312-cp312-macosx_10_13_x86_64.whl",hashes = {sha256 = "cb786d5472afc16cc3c7355eb2007172538311d6f0cc6f6a0859e84a60220375"}}, + {name = "duckdb-1.5.0-cp312-cp312-macosx_11_0_arm64.whl",url = "https://files.pythonhosted.org/packages/4f/71/76e37c9a599ad89dd944e6cbb3e6a8ad196944a421758e83adea507637b6/duckdb-1.5.0-cp312-cp312-macosx_11_0_arm64.whl",hashes = {sha256 = "dc92b238f4122800a7592e99134124cc9048c50f766c37a0778dd2637f5cbe59"}}, + {name = "duckdb-1.5.0-cp312-cp312-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl",url = "https://files.pythonhosted.org/packages/db/b8/de1831656d5d13173e27c79c7259c8b9a7bdc314fdc8920604838ea4c46d/duckdb-1.5.0-cp312-cp312-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl",hashes = {sha256 = "1b74cb205c21d3696d8f8b88adca401e1063d6e6f57c1c4f56a243610b086e30"}}, + {name = "duckdb-1.5.0-cp312-cp312-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl",url = "https://files.pythonhosted.org/packages/1f/8d/33d349a3bcbd3e9b7b4e904c19d5b97f058c4c20791b89a8d6323bb93dce/duckdb-1.5.0-cp312-cp312-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl",hashes = {sha256 = "6e56c19ffd1ffe3642fa89639e71e2e00ab0cf107b62fe16e88030acaebcbde6"}}, + {name = "duckdb-1.5.0-cp312-cp312-win_amd64.whl",url = "https://files.pythonhosted.org/packages/e2/ec/591a4cad582fae04bc8f8b4a435eceaaaf3838cf0ca771daae16a3c2995b/duckdb-1.5.0-cp312-cp312-win_amd64.whl",hashes = {sha256 = "86525e565ec0c43420106fd34ba2c739a54c01814d476c7fed3007c9ed6efd86"}}, + {name = "duckdb-1.5.0-cp312-cp312-win_arm64.whl",url = "https://files.pythonhosted.org/packages/db/62/42e0a13f9919173bec121c0ff702406e1cdd91d8084c3e0b3412508c3891/duckdb-1.5.0-cp312-cp312-win_arm64.whl",hashes = {sha256 = "5faeebc178c986a7bfa68868a023001137a95a1110bf09b7356442a4eae0f7e7"}}, + {name = "duckdb-1.5.0-cp311-cp311-macosx_10_9_universal2.whl",url = "https://files.pythonhosted.org/packages/01/0c/0282b10a1c96810606b916b8d58a03f2131bd3ede14d2851f58b0b860e7c/duckdb-1.5.0-cp311-cp311-macosx_10_9_universal2.whl",hashes = {sha256 = "3298bd17cf0bb5f342fb51a4edc9aadacae882feb2b04161a03eb93271c70c86"}}, + {name = "duckdb-1.5.0-cp311-cp311-macosx_10_9_x86_64.whl",url = "https://files.pythonhosted.org/packages/71/e8/cbbc920078a794f24f63017fc55c9cbdb17d6fb94d3973f479b2d9f2983d/duckdb-1.5.0-cp311-cp311-macosx_10_9_x86_64.whl",hashes = {sha256 = "13f94c49ca389731c439524248e05007fb1a86cd26f1e38f706abc261069cd41"}}, + {name = "duckdb-1.5.0-cp311-cp311-macosx_11_0_arm64.whl",url = "https://files.pythonhosted.org/packages/31/b6/6cae794d5856259b0060f79d5db71c7fdba043950eaa6a9d72b0bad16095/duckdb-1.5.0-cp311-cp311-macosx_11_0_arm64.whl",hashes = {sha256 = "ab9d597b1e8668466f1c164d0ea07eaf0ebb516950f5a2e794b0f52c81ff3b16"}}, + {name = "duckdb-1.5.0-cp311-cp311-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl",url = "https://files.pythonhosted.org/packages/82/07/aba3887658b93a36ce702dd00ca6a6422de3d14c7ee3a4b4c03ea20a99c0/duckdb-1.5.0-cp311-cp311-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl",hashes = {sha256 = "a43f8289b11c0b50d13f96ab03210489d37652f3fd7911dc8eab04d61b049da2"}}, + {name = "duckdb-1.5.0-cp311-cp311-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl",url = "https://files.pythonhosted.org/packages/fc/a2/723e6df48754e468fa50d7878eb860906c975eafe317c4134a8482ca220e/duckdb-1.5.0-cp311-cp311-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl",hashes = {sha256 = "4f514e796a116c5de070e99974e42d0b8c2e6c303386790e58408c481150d417"}}, + {name = "duckdb-1.5.0-cp311-cp311-win_amd64.whl",url = "https://files.pythonhosted.org/packages/03/af/4dcbdf8f2349ed0b054c254ec59bc362ce6ddf603af35f770124c0984686/duckdb-1.5.0-cp311-cp311-win_amd64.whl",hashes = {sha256 = "cf503ba2c753d97c76beb111e74572fef8803265b974af2dca67bba1de4176d2"}}, + {name = "duckdb-1.5.0-cp311-cp311-win_arm64.whl",url = "https://files.pythonhosted.org/packages/60/5e/1bb7e75a63bf3dc49bc5a2cd27a65ffeef151f52a32db980983516f2d9f6/duckdb-1.5.0-cp311-cp311-win_arm64.whl",hashes = {sha256 = "a1156e91e4e47f0e7d9c9404e559a1d71b372cd61790a407d65eb26948ae8298"}}, + {name = "duckdb-1.5.0-cp310-cp310-macosx_10_9_universal2.whl",url = "https://files.pythonhosted.org/packages/e0/5d/8fa129bbd604d0e91aa9a0a407e7d2acc559b6024c3f887868fd7a13871d/duckdb-1.5.0-cp310-cp310-macosx_10_9_universal2.whl",hashes = {sha256 = "47fbb1c053a627a91fa71ec883951561317f14a82df891c00dcace435e8fea78"}}, + {name = "duckdb-1.5.0-cp310-cp310-macosx_10_9_x86_64.whl",url = "https://files.pythonhosted.org/packages/0c/31/db320641a262a897755e634d16838c98d5ca7dc91f4e096e104e244a3a01/duckdb-1.5.0-cp310-cp310-macosx_10_9_x86_64.whl",hashes = {sha256 = "2b546a30a6ac020165a86ab3abac553255a6e8244d5437d17859a6aa338611aa"}}, + {name = "duckdb-1.5.0-cp310-cp310-macosx_11_0_arm64.whl",url = "https://files.pythonhosted.org/packages/0b/45/5725684794fbabf54d8dbae5247685799a6bf8e1e930ebff3a76a726772c/duckdb-1.5.0-cp310-cp310-macosx_11_0_arm64.whl",hashes = {sha256 = "122396041c0acb78e66d7dc7d36c55f03f67fe6ad012155c132d82739722e381"}}, + {name = "duckdb-1.5.0-cp310-cp310-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl",url = "https://files.pythonhosted.org/packages/27/68/f110c66b43e27191d7e53d3587e118568b73d66f23cb9bd6c7e0a560fd6d/duckdb-1.5.0-cp310-cp310-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl",hashes = {sha256 = "4a2cd73d50ea2c2bf618a4b7d22fe7c4115a1c9083d35654a0d5d421620ed999"}}, + {name = "duckdb-1.5.0-cp310-cp310-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl",url = "https://files.pythonhosted.org/packages/ec/9d/46affc9257377cbc865e494650312a7a08a56e85aa8d702eb297bec430b7/duckdb-1.5.0-cp310-cp310-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl",hashes = {sha256 = "63a8ea3b060a881c90d1c1b9454abed3daf95b6160c39bbb9506fee3a9711730"}}, + {name = "duckdb-1.5.0-cp310-cp310-win_amd64.whl",url = "https://files.pythonhosted.org/packages/3b/34/dac03ab7340989cda258655387959c88342ea3b44949751391267bcbc830/duckdb-1.5.0-cp310-cp310-win_amd64.whl",hashes = {sha256 = "238d576ae1dda441f8c79ed1370c5ccf863e4a5d59ca2563f9c96cd26b2188ac"}}, ] marker = "\"default\" in dependency_groups" @@ -407,10 +407,10 @@ dependencies = [ [[packages]] name = "pytest-cases" -version = "3.9.1" -sdist = {name = "pytest_cases-3.9.1.tar.gz", url = "https://files.pythonhosted.org/packages/c1/69/8b41e074e9e1a9fa85c3765971f213e1b8d4a2f648b457af32dea792bdb8/pytest_cases-3.9.1.tar.gz", hashes = {sha256 = "c4e181f1b525c931a318d4812fa8de656c2c8fb77fccf1571ecf0cc5fe8e7f8f"}} +version = "3.10.1" +sdist = {name = "pytest_cases-3.10.1.tar.gz", url = "https://files.pythonhosted.org/packages/c1/a2/c7abc3b606125cf3732e8e613092b0e2549365e824b5f37972125c22806b/pytest_cases-3.10.1.tar.gz", hashes = {sha256 = "451f9e3ecd5d2d81a4362c10c441126f5b3d1ae3a7efaf59f60b1fb930df2d69"}} wheels = [ - {name = "pytest_cases-3.9.1-py2.py3-none-any.whl",url = "https://files.pythonhosted.org/packages/92/82/db006f1d06e5d31805ac47f9ce979937e3d026292f2759543b744f8040be/pytest_cases-3.9.1-py2.py3-none-any.whl",hashes = {sha256 = "60507716650c5ed1ce4a36a3c137f1c3ec58f4fef1ee8678404be074612fcd21"}}, + {name = "pytest_cases-3.10.1-py2.py3-none-any.whl",url = "https://files.pythonhosted.org/packages/61/f2/7a29fb0571562034b05c38dceabba48dcc622be5d6c5448db80779e55de7/pytest_cases-3.10.1-py2.py3-none-any.whl",hashes = {sha256 = "0deb8a85b6132e44adbc1cfc57897c6a624ec23f48ab445a43c7d56a6b9315a4"}}, ] marker = "\"test\" in dependency_groups" @@ -422,6 +422,18 @@ dependencies = [ "pytest", ] +[[packages]] +name = "pytz" +version = "2026.1.post1" +sdist = {name = "pytz-2026.1.post1.tar.gz", url = "https://files.pythonhosted.org/packages/56/db/b8721d71d945e6a8ac63c0fc900b2067181dbb50805958d4d4661cf7d277/pytz-2026.1.post1.tar.gz", hashes = {sha256 = "3378dde6a0c3d26719182142c56e60c7f9af7e968076f31aae569d72a0358ee1"}} +wheels = [ + {name = "pytz-2026.1.post1-py2.py3-none-any.whl",url = "https://files.pythonhosted.org/packages/10/99/781fe0c827be2742bcc775efefccb3b048a3a9c6ce9aec0cbf4a101677e5/pytz-2026.1.post1-py2.py3-none-any.whl",hashes = {sha256 = "f2fd16142fda348286a75e1a524be810bb05d444e5a081f37f7affc635035f7a"}}, +] +marker = "\"default\" in dependency_groups" + +[packages.tool.pdm] +dependencies = [] + [[packages]] name = "tqdm" version = "4.67.3" @@ -440,11 +452,11 @@ dependencies = [ [[packages]] name = "types-tqdm" -version = "4.67.3.20260205" -requires-python = ">=3.9" -sdist = {name = "types_tqdm-4.67.3.20260205.tar.gz", url = "https://files.pythonhosted.org/packages/53/46/790b9872523a48163bdda87d47849b4466017640e5259d06eed539340afd/types_tqdm-4.67.3.20260205.tar.gz", hashes = {sha256 = "f3023682d4aa3bbbf908c8c6bb35f35692d319460d9bbd3e646e8852f3dd9f85"}} +version = "4.67.3.20260303" +requires-python = ">=3.10" +sdist = {name = "types_tqdm-4.67.3.20260303.tar.gz", url = "https://files.pythonhosted.org/packages/e1/64/3e7cb0f40c4bf9578098b6873df33a96f7e0de90f3a039e614d22bfde40a/types_tqdm-4.67.3.20260303.tar.gz", hashes = {sha256 = "7bfddb506a75aedb4030fabf4f05c5638c9a3bbdf900d54ec6c82be9034bfb96"}} wheels = [ - {name = "types_tqdm-4.67.3.20260205-py3-none-any.whl",url = "https://files.pythonhosted.org/packages/cc/da/7f761868dbaa328392356fab30c18ab90d14cce86b269e7e63328f29d4a3/types_tqdm-4.67.3.20260205-py3-none-any.whl",hashes = {sha256 = "85c31731e81dc3c5cecc34c6c8b2e5166fafa722468f58840c2b5ac6a8c5c173"}}, + {name = "types_tqdm-4.67.3.20260303-py3-none-any.whl",url = "https://files.pythonhosted.org/packages/37/32/e4a1fce59155c74082f1a42d0ffafa59652bfb8cff35b04d56333877748e/types_tqdm-4.67.3.20260303-py3-none-any.whl",hashes = {sha256 = "459decf677e4b05cef36f9012ef8d6e20578edefb6b78c15bd0b546247eda62d"}}, ] marker = "\"types\" in dependency_groups" @@ -820,7 +832,7 @@ marker = "sys_platform == \"win32\" and \"default\" in dependency_groups" dependencies = [] [tool.pdm] -hashes = {sha256 = "fc3d3c9728a89b11648ffab29807d5c42006e80d65c41b735dac8d12d3dd8f1d"} +hashes = {sha256 = "b3cf474c257071e375683a8f88215a2f04a2a1983dea8fae923264a6b0c3b3be"} strategy = ["inherit_metadata", "static_urls"] [[tool.pdm.targets]] diff --git a/pylock.maximal.toml b/pylock.maximal.toml index 70c5380..346435c 100644 --- a/pylock.maximal.toml +++ b/pylock.maximal.toml @@ -125,17 +125,17 @@ dependencies = [] [[packages]] name = "duckdb" -version = "1.4.4" -requires-python = ">=3.9.0" -sdist = {name = "duckdb-1.4.4.tar.gz", url = "https://files.pythonhosted.org/packages/36/9d/ab66a06e416d71b7bdcb9904cdf8d4db3379ef632bb8e9495646702d9718/duckdb-1.4.4.tar.gz", hashes = {sha256 = "8bba52fd2acb67668a4615ee17ee51814124223de836d9e2fdcbc4c9021b3d3c"}} -wheels = [ - {name = "duckdb-1.4.4-cp314-cp314-macosx_10_15_universal2.whl",url = "https://files.pythonhosted.org/packages/97/a6/f19e2864e651b0bd8e4db2b0c455e7e0d71e0d4cd2cd9cc052f518e43eb3/duckdb-1.4.4-cp314-cp314-macosx_10_15_universal2.whl",hashes = {sha256 = "25874f8b1355e96178079e37312c3ba6d61a2354f51319dae860cf21335c3a20"}}, - {name = "duckdb-1.4.4-cp314-cp314-macosx_10_15_x86_64.whl",url = "https://files.pythonhosted.org/packages/0e/93/8a24e932c67414fd2c45bed83218e62b73348996bf859eda020c224774b2/duckdb-1.4.4-cp314-cp314-macosx_10_15_x86_64.whl",hashes = {sha256 = "452c5b5d6c349dc5d1154eb2062ee547296fcbd0c20e9df1ed00b5e1809089da"}}, - {name = "duckdb-1.4.4-cp314-cp314-macosx_11_0_arm64.whl",url = "https://files.pythonhosted.org/packages/62/13/e5378ff5bb1d4397655d840b34b642b1b23cdd82ae19599e62dc4b9461c9/duckdb-1.4.4-cp314-cp314-macosx_11_0_arm64.whl",hashes = {sha256 = "8e5c2d8a0452df55e092959c0bfc8ab8897ac3ea0f754cb3b0ab3e165cd79aff"}}, - {name = "duckdb-1.4.4-cp314-cp314-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl",url = "https://files.pythonhosted.org/packages/2d/94/24364da564b27aeebe44481f15bd0197a0b535ec93f188a6b1b98c22f082/duckdb-1.4.4-cp314-cp314-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl",hashes = {sha256 = "1af6e76fe8bd24875dc56dd8e38300d64dc708cd2e772f67b9fbc635cc3066a3"}}, - {name = "duckdb-1.4.4-cp314-cp314-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl",url = "https://files.pythonhosted.org/packages/26/0a/6ae31b2914b4dc34243279b2301554bcbc5f1a09ccc82600486c49ab71d1/duckdb-1.4.4-cp314-cp314-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl",hashes = {sha256 = "d0440f59e0cd9936a9ebfcf7a13312eda480c79214ffed3878d75947fc3b7d6d"}}, - {name = "duckdb-1.4.4-cp314-cp314-win_amd64.whl",url = "https://files.pythonhosted.org/packages/d2/b1/fd5c37c53d45efe979f67e9bd49aaceef640147bb18f0699a19edd1874d6/duckdb-1.4.4-cp314-cp314-win_amd64.whl",hashes = {sha256 = "59c8d76016dde854beab844935b1ec31de358d4053e792988108e995b18c08e7"}}, - {name = "duckdb-1.4.4-cp314-cp314-win_arm64.whl",url = "https://files.pythonhosted.org/packages/dd/2d/13e6024e613679d8a489dd922f199ef4b1d08a456a58eadd96dc2f05171f/duckdb-1.4.4-cp314-cp314-win_arm64.whl",hashes = {sha256 = "53cd6423136ab44383ec9955aefe7599b3fb3dd1fe006161e6396d8167e0e0d4"}}, +version = "1.5.0" +requires-python = ">=3.10.0" +sdist = {name = "duckdb-1.5.0.tar.gz", url = "https://files.pythonhosted.org/packages/ee/11/e05a7eb73a373d523e45d83c261025e02bc31ebf868e6282c30c4d02cc59/duckdb-1.5.0.tar.gz", hashes = {sha256 = "f974b61b1c375888ee62bc3125c60ac11c4e45e4457dd1bb31a8f8d3cf277edd"}} +wheels = [ + {name = "duckdb-1.5.0-cp314-cp314-macosx_10_15_universal2.whl",url = "https://files.pythonhosted.org/packages/66/9f/dd806d4e8ecd99006eb240068f34e1054533da1857ad06ac726305cd102d/duckdb-1.5.0-cp314-cp314-macosx_10_15_universal2.whl",hashes = {sha256 = "d4b618de670cd2271dd7b3397508c7b3c62d8ea70c592c755643211a6f9154fa"}}, + {name = "duckdb-1.5.0-cp314-cp314-macosx_10_15_x86_64.whl",url = "https://files.pythonhosted.org/packages/79/c2/7b7b8a5c65d5535c88a513e267b5e6d7a55ab3e9b67e4ddd474454653268/duckdb-1.5.0-cp314-cp314-macosx_10_15_x86_64.whl",hashes = {sha256 = "065ae50cb185bac4b904287df72e6b4801b3bee2ad85679576dd712b8ba07021"}}, + {name = "duckdb-1.5.0-cp314-cp314-macosx_11_0_arm64.whl",url = "https://files.pythonhosted.org/packages/23/c5/9a52a2cdb228b8d8d191a603254364d929274d9cc7d285beada8f7daa712/duckdb-1.5.0-cp314-cp314-macosx_11_0_arm64.whl",hashes = {sha256 = "6be5e48e287a24d98306ce9dd55093c3b105a8fbd8a2e7a45e13df34bf081985"}}, + {name = "duckdb-1.5.0-cp314-cp314-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl",url = "https://files.pythonhosted.org/packages/b8/68/646045cb97982702a8a143dc2e45f3bdcb79fbe2d559a98d74b8c160e5e2/duckdb-1.5.0-cp314-cp314-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl",hashes = {sha256 = "a5ee41a0bf793882f02192ce105b9a113c3e8c505a27c7ef9437d7b756317113"}}, + {name = "duckdb-1.5.0-cp314-cp314-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl",url = "https://files.pythonhosted.org/packages/15/1b/5abf0c7f38febb3b4a231c784223fceccfd3f2bfd957699d786f46e41ce6/duckdb-1.5.0-cp314-cp314-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl",hashes = {sha256 = "f8e42aaf3cd217417c5dc9ff522dc3939d18b25a6fe5f846348277e831e6f59c"}}, + {name = "duckdb-1.5.0-cp314-cp314-win_amd64.whl",url = "https://files.pythonhosted.org/packages/93/a4/a90f2901cc0a1ce7ca4f0564b8492b9dbfe048a6395b27933d46ae9be473/duckdb-1.5.0-cp314-cp314-win_amd64.whl",hashes = {sha256 = "11ae50aaeda2145b50294ee0247e4f11fb9448b3cc3d2aea1cfc456637dfb977"}}, + {name = "duckdb-1.5.0-cp314-cp314-win_arm64.whl",url = "https://files.pythonhosted.org/packages/64/aa/f14dd5e241ec80d9f9d82196ca65e0c53badfc8a7a619d5497c5626657ad/duckdb-1.5.0-cp314-cp314-win_arm64.whl",hashes = {sha256 = "d6d2858c734d1a7e7a1b6e9b8403b3fce26dfefb4e0a2479c420fba6cd36db36"}}, ] marker = "python_version >= \"3.14\" and \"default\" in dependency_groups" @@ -224,10 +224,10 @@ dependencies = [ [[packages]] name = "pytest-cases" -version = "3.9.1" -sdist = {name = "pytest_cases-3.9.1.tar.gz", url = "https://files.pythonhosted.org/packages/c1/69/8b41e074e9e1a9fa85c3765971f213e1b8d4a2f648b457af32dea792bdb8/pytest_cases-3.9.1.tar.gz", hashes = {sha256 = "c4e181f1b525c931a318d4812fa8de656c2c8fb77fccf1571ecf0cc5fe8e7f8f"}} +version = "3.10.1" +sdist = {name = "pytest_cases-3.10.1.tar.gz", url = "https://files.pythonhosted.org/packages/c1/a2/c7abc3b606125cf3732e8e613092b0e2549365e824b5f37972125c22806b/pytest_cases-3.10.1.tar.gz", hashes = {sha256 = "451f9e3ecd5d2d81a4362c10c441126f5b3d1ae3a7efaf59f60b1fb930df2d69"}} wheels = [ - {name = "pytest_cases-3.9.1-py2.py3-none-any.whl",url = "https://files.pythonhosted.org/packages/92/82/db006f1d06e5d31805ac47f9ce979937e3d026292f2759543b744f8040be/pytest_cases-3.9.1-py2.py3-none-any.whl",hashes = {sha256 = "60507716650c5ed1ce4a36a3c137f1c3ec58f4fef1ee8678404be074612fcd21"}}, + {name = "pytest_cases-3.10.1-py2.py3-none-any.whl",url = "https://files.pythonhosted.org/packages/61/f2/7a29fb0571562034b05c38dceabba48dcc622be5d6c5448db80779e55de7/pytest_cases-3.10.1-py2.py3-none-any.whl",hashes = {sha256 = "0deb8a85b6132e44adbc1cfc57897c6a624ec23f48ab445a43c7d56a6b9315a4"}}, ] marker = "python_version >= \"3.14\" and \"test\" in dependency_groups" @@ -239,6 +239,18 @@ dependencies = [ "pytest", ] +[[packages]] +name = "pytz" +version = "2026.1.post1" +sdist = {name = "pytz-2026.1.post1.tar.gz", url = "https://files.pythonhosted.org/packages/56/db/b8721d71d945e6a8ac63c0fc900b2067181dbb50805958d4d4661cf7d277/pytz-2026.1.post1.tar.gz", hashes = {sha256 = "3378dde6a0c3d26719182142c56e60c7f9af7e968076f31aae569d72a0358ee1"}} +wheels = [ + {name = "pytz-2026.1.post1-py2.py3-none-any.whl",url = "https://files.pythonhosted.org/packages/10/99/781fe0c827be2742bcc775efefccb3b048a3a9c6ce9aec0cbf4a101677e5/pytz-2026.1.post1-py2.py3-none-any.whl",hashes = {sha256 = "f2fd16142fda348286a75e1a524be810bb05d444e5a081f37f7affc635035f7a"}}, +] +marker = "python_version >= \"3.14\" and \"default\" in dependency_groups" + +[packages.tool.pdm] +dependencies = [] + [[packages]] name = "tqdm" version = "4.67.3" @@ -257,11 +269,11 @@ dependencies = [ [[packages]] name = "types-tqdm" -version = "4.67.3.20260205" -requires-python = ">=3.9" -sdist = {name = "types_tqdm-4.67.3.20260205.tar.gz", url = "https://files.pythonhosted.org/packages/53/46/790b9872523a48163bdda87d47849b4466017640e5259d06eed539340afd/types_tqdm-4.67.3.20260205.tar.gz", hashes = {sha256 = "f3023682d4aa3bbbf908c8c6bb35f35692d319460d9bbd3e646e8852f3dd9f85"}} +version = "4.67.3.20260303" +requires-python = ">=3.10" +sdist = {name = "types_tqdm-4.67.3.20260303.tar.gz", url = "https://files.pythonhosted.org/packages/e1/64/3e7cb0f40c4bf9578098b6873df33a96f7e0de90f3a039e614d22bfde40a/types_tqdm-4.67.3.20260303.tar.gz", hashes = {sha256 = "7bfddb506a75aedb4030fabf4f05c5638c9a3bbdf900d54ec6c82be9034bfb96"}} wheels = [ - {name = "types_tqdm-4.67.3.20260205-py3-none-any.whl",url = "https://files.pythonhosted.org/packages/cc/da/7f761868dbaa328392356fab30c18ab90d14cce86b269e7e63328f29d4a3/types_tqdm-4.67.3.20260205-py3-none-any.whl",hashes = {sha256 = "85c31731e81dc3c5cecc34c6c8b2e5166fafa722468f58840c2b5ac6a8c5c173"}}, + {name = "types_tqdm-4.67.3.20260303-py3-none-any.whl",url = "https://files.pythonhosted.org/packages/37/32/e4a1fce59155c74082f1a42d0ffafa59652bfb8cff35b04d56333877748e/types_tqdm-4.67.3.20260303-py3-none-any.whl",hashes = {sha256 = "459decf677e4b05cef36f9012ef8d6e20578edefb6b78c15bd0b546247eda62d"}}, ] marker = "python_version >= \"3.14\" and \"types\" in dependency_groups" @@ -564,7 +576,7 @@ marker = "sys_platform == \"win32\" and python_version >= \"3.14\" and \"default dependencies = [] [tool.pdm] -hashes = {sha256 = "fc3d3c9728a89b11648ffab29807d5c42006e80d65c41b735dac8d12d3dd8f1d"} +hashes = {sha256 = "b3cf474c257071e375683a8f88215a2f04a2a1983dea8fae923264a6b0c3b3be"} strategy = ["inherit_metadata", "static_urls"] [[tool.pdm.targets]] diff --git a/pylock.minimal.toml b/pylock.minimal.toml index 5c62add..f47e824 100644 --- a/pylock.minimal.toml +++ b/pylock.minimal.toml @@ -348,6 +348,18 @@ dependencies = [ "pytest", ] +[[packages]] +name = "pytz" +version = "2021.3" +sdist = {name = "pytz-2021.3.tar.gz", url = "https://files.pythonhosted.org/packages/e3/8e/1cde9d002f48a940b9d9d38820aaf444b229450c0854bdf15305ce4a3d1a/pytz-2021.3.tar.gz", hashes = {sha256 = "acad2d8b20a1af07d4e4c9d2e9285c5ed9104354062f275f3fcd88dcef4f1326"}} +wheels = [ + {name = "pytz-2021.3-py2.py3-none-any.whl",url = "https://files.pythonhosted.org/packages/d3/e3/d9f046b5d1c94a3aeab15f1f867aa414f8ee9d196fae6865f1d6a0ee1a0b/pytz-2021.3-py2.py3-none-any.whl",hashes = {sha256 = "3672058bc3453457b622aab7a1c3bfd5ab0bdae451512f6cf25f64ed37f5b87c"}}, +] +marker = "\"default\" in dependency_groups" + +[packages.tool.pdm] +dependencies = [] + [[packages]] name = "tqdm" version = "4.64.0" @@ -715,7 +727,7 @@ marker = "sys_platform == \"win32\" and \"default\" in dependency_groups" dependencies = [] [tool.pdm] -hashes = {sha256 = "fc3d3c9728a89b11648ffab29807d5c42006e80d65c41b735dac8d12d3dd8f1d"} +hashes = {sha256 = "b3cf474c257071e375683a8f88215a2f04a2a1983dea8fae923264a6b0c3b3be"} strategy = ["direct_minimal_versions", "inherit_metadata", "static_urls"] [[tool.pdm.targets]] diff --git a/pylock.toml b/pylock.toml index fb6f477..b0cd92d 100644 --- a/pylock.toml +++ b/pylock.toml @@ -223,44 +223,44 @@ dependencies = [] [[packages]] name = "duckdb" -version = "1.4.4" -requires-python = ">=3.9.0" -sdist = {name = "duckdb-1.4.4.tar.gz", url = "https://files.pythonhosted.org/packages/36/9d/ab66a06e416d71b7bdcb9904cdf8d4db3379ef632bb8e9495646702d9718/duckdb-1.4.4.tar.gz", hashes = {sha256 = "8bba52fd2acb67668a4615ee17ee51814124223de836d9e2fdcbc4c9021b3d3c"}} -wheels = [ - {name = "duckdb-1.4.4-cp314-cp314-macosx_10_15_universal2.whl",url = "https://files.pythonhosted.org/packages/97/a6/f19e2864e651b0bd8e4db2b0c455e7e0d71e0d4cd2cd9cc052f518e43eb3/duckdb-1.4.4-cp314-cp314-macosx_10_15_universal2.whl",hashes = {sha256 = "25874f8b1355e96178079e37312c3ba6d61a2354f51319dae860cf21335c3a20"}}, - {name = "duckdb-1.4.4-cp314-cp314-macosx_10_15_x86_64.whl",url = "https://files.pythonhosted.org/packages/0e/93/8a24e932c67414fd2c45bed83218e62b73348996bf859eda020c224774b2/duckdb-1.4.4-cp314-cp314-macosx_10_15_x86_64.whl",hashes = {sha256 = "452c5b5d6c349dc5d1154eb2062ee547296fcbd0c20e9df1ed00b5e1809089da"}}, - {name = "duckdb-1.4.4-cp314-cp314-macosx_11_0_arm64.whl",url = "https://files.pythonhosted.org/packages/62/13/e5378ff5bb1d4397655d840b34b642b1b23cdd82ae19599e62dc4b9461c9/duckdb-1.4.4-cp314-cp314-macosx_11_0_arm64.whl",hashes = {sha256 = "8e5c2d8a0452df55e092959c0bfc8ab8897ac3ea0f754cb3b0ab3e165cd79aff"}}, - {name = "duckdb-1.4.4-cp314-cp314-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl",url = "https://files.pythonhosted.org/packages/2d/94/24364da564b27aeebe44481f15bd0197a0b535ec93f188a6b1b98c22f082/duckdb-1.4.4-cp314-cp314-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl",hashes = {sha256 = "1af6e76fe8bd24875dc56dd8e38300d64dc708cd2e772f67b9fbc635cc3066a3"}}, - {name = "duckdb-1.4.4-cp314-cp314-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl",url = "https://files.pythonhosted.org/packages/26/0a/6ae31b2914b4dc34243279b2301554bcbc5f1a09ccc82600486c49ab71d1/duckdb-1.4.4-cp314-cp314-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl",hashes = {sha256 = "d0440f59e0cd9936a9ebfcf7a13312eda480c79214ffed3878d75947fc3b7d6d"}}, - {name = "duckdb-1.4.4-cp314-cp314-win_amd64.whl",url = "https://files.pythonhosted.org/packages/d2/b1/fd5c37c53d45efe979f67e9bd49aaceef640147bb18f0699a19edd1874d6/duckdb-1.4.4-cp314-cp314-win_amd64.whl",hashes = {sha256 = "59c8d76016dde854beab844935b1ec31de358d4053e792988108e995b18c08e7"}}, - {name = "duckdb-1.4.4-cp314-cp314-win_arm64.whl",url = "https://files.pythonhosted.org/packages/dd/2d/13e6024e613679d8a489dd922f199ef4b1d08a456a58eadd96dc2f05171f/duckdb-1.4.4-cp314-cp314-win_arm64.whl",hashes = {sha256 = "53cd6423136ab44383ec9955aefe7599b3fb3dd1fe006161e6396d8167e0e0d4"}}, - {name = "duckdb-1.4.4-cp313-cp313-macosx_10_13_universal2.whl",url = "https://files.pythonhosted.org/packages/7f/fe/64810fee20030f2bf96ce28b527060564864ce5b934b50888eda2cbf99dd/duckdb-1.4.4-cp313-cp313-macosx_10_13_universal2.whl",hashes = {sha256 = "337f8b24e89bc2e12dadcfe87b4eb1c00fd920f68ab07bc9b70960d6523b8bc3"}}, - {name = "duckdb-1.4.4-cp313-cp313-macosx_10_13_x86_64.whl",url = "https://files.pythonhosted.org/packages/9c/9b/3c7c5e48456b69365d952ac201666053de2700f5b0144a699a4dc6854507/duckdb-1.4.4-cp313-cp313-macosx_10_13_x86_64.whl",hashes = {sha256 = "0509b39ea7af8cff0198a99d206dca753c62844adab54e545984c2e2c1381616"}}, - {name = "duckdb-1.4.4-cp313-cp313-macosx_11_0_arm64.whl",url = "https://files.pythonhosted.org/packages/a6/7b/64e68a7b857ed0340045501535a0da99ea5d9d5ea3708fec0afb8663eb27/duckdb-1.4.4-cp313-cp313-macosx_11_0_arm64.whl",hashes = {sha256 = "fb94de6d023de9d79b7edc1ae07ee1d0b4f5fa8a9dcec799650b5befdf7aafec"}}, - {name = "duckdb-1.4.4-cp313-cp313-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl",url = "https://files.pythonhosted.org/packages/09/5b/3e7aa490841784d223de61beb2ae64e82331501bf5a415dc87a0e27b4663/duckdb-1.4.4-cp313-cp313-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl",hashes = {sha256 = "0d636ceda422e7babd5e2f7275f6a0d1a3405e6a01873f00d38b72118d30c10b"}}, - {name = "duckdb-1.4.4-cp313-cp313-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl",url = "https://files.pythonhosted.org/packages/53/32/256df3dbaa198c58539ad94f9a41e98c2c8ff23f126b8f5f52c7dcd0a738/duckdb-1.4.4-cp313-cp313-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl",hashes = {sha256 = "7df7351328ffb812a4a289732f500d621e7de9942a3a2c9b6d4afcf4c0e72526"}}, - {name = "duckdb-1.4.4-cp313-cp313-win_amd64.whl",url = "https://files.pythonhosted.org/packages/a4/f0/620323fd87062ea43e527a2d5ed9e55b525e0847c17d3b307094ddab98a2/duckdb-1.4.4-cp313-cp313-win_amd64.whl",hashes = {sha256 = "6fb1225a9ea5877421481d59a6c556a9532c32c16c7ae6ca8d127e2b878c9389"}}, - {name = "duckdb-1.4.4-cp313-cp313-win_arm64.whl",url = "https://files.pythonhosted.org/packages/e5/07/a397fdb7c95388ba9c055b9a3d38dfee92093f4427bc6946cf9543b1d216/duckdb-1.4.4-cp313-cp313-win_arm64.whl",hashes = {sha256 = "f28a18cc790217e5b347bb91b2cab27aafc557c58d3d8382e04b4fe55d0c3f66"}}, - {name = "duckdb-1.4.4-cp312-cp312-macosx_10_13_universal2.whl",url = "https://files.pythonhosted.org/packages/58/33/beadaa69f8458afe466126f2c5ee48c4759cc9d5d784f8703d44e0b52c3c/duckdb-1.4.4-cp312-cp312-macosx_10_13_universal2.whl",hashes = {sha256 = "ddcfd9c6ff234da603a1edd5fd8ae6107f4d042f74951b65f91bc5e2643856b3"}}, - {name = "duckdb-1.4.4-cp312-cp312-macosx_10_13_x86_64.whl",url = "https://files.pythonhosted.org/packages/76/66/82413f386df10467affc87f65bac095b7c88dbd9c767584164d5f4dc4cb8/duckdb-1.4.4-cp312-cp312-macosx_10_13_x86_64.whl",hashes = {sha256 = "6792ca647216bd5c4ff16396e4591cfa9b4a72e5ad7cdd312cec6d67e8431a7c"}}, - {name = "duckdb-1.4.4-cp312-cp312-macosx_11_0_arm64.whl",url = "https://files.pythonhosted.org/packages/5d/8c/c13d396fd4e9bf970916dc5b4fea410c1b10fe531069aea65f1dcf849a71/duckdb-1.4.4-cp312-cp312-macosx_11_0_arm64.whl",hashes = {sha256 = "1f8d55843cc940e36261689054f7dfb6ce35b1f5b0953b0d355b6adb654b0d52"}}, - {name = "duckdb-1.4.4-cp312-cp312-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl",url = "https://files.pythonhosted.org/packages/db/77/2446a0b44226bb95217748d911c7ca66a66ca10f6481d5178d9370819631/duckdb-1.4.4-cp312-cp312-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl",hashes = {sha256 = "c65d15c440c31e06baaebfd2c06d71ce877e132779d309f1edf0a85d23c07e92"}}, - {name = "duckdb-1.4.4-cp312-cp312-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl",url = "https://files.pythonhosted.org/packages/2e/a3/97715bba30040572fb15d02c26f36be988d48bc00501e7ac02b1d65ef9d0/duckdb-1.4.4-cp312-cp312-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl",hashes = {sha256 = "b297eff642503fd435a9de5a9cb7db4eccb6f61d61a55b30d2636023f149855f"}}, - {name = "duckdb-1.4.4-cp312-cp312-win_amd64.whl",url = "https://files.pythonhosted.org/packages/8b/0a/18b9167adf528cbe3867ef8a84a5f19f37bedccb606a8a9e59cfea1880c8/duckdb-1.4.4-cp312-cp312-win_amd64.whl",hashes = {sha256 = "d525de5f282b03aa8be6db86b1abffdceae5f1055113a03d5b50cd2fb8cf2ef8"}}, - {name = "duckdb-1.4.4-cp312-cp312-win_arm64.whl",url = "https://files.pythonhosted.org/packages/f8/15/37af97f5717818f3d82d57414299c293b321ac83e048c0a90bb8b6a09072/duckdb-1.4.4-cp312-cp312-win_arm64.whl",hashes = {sha256 = "50f2eb173c573811b44aba51176da7a4e5c487113982be6a6a1c37337ec5fa57"}}, - {name = "duckdb-1.4.4-cp311-cp311-macosx_10_9_universal2.whl",url = "https://files.pythonhosted.org/packages/04/68/19233412033a2bc5a144a3f531f64e3548d4487251e3f16b56c31411a06f/duckdb-1.4.4-cp311-cp311-macosx_10_9_universal2.whl",hashes = {sha256 = "5ba684f498d4e924c7e8f30dd157da8da34c8479746c5011b6c0e037e9c60ad2"}}, - {name = "duckdb-1.4.4-cp311-cp311-macosx_10_9_x86_64.whl",url = "https://files.pythonhosted.org/packages/b3/3e/cec70e546c298ab76d80b990109e111068d82cca67942c42328eaa7d6fdb/duckdb-1.4.4-cp311-cp311-macosx_10_9_x86_64.whl",hashes = {sha256 = "5536eb952a8aa6ae56469362e344d4e6403cc945a80bc8c5c2ebdd85d85eb64b"}}, - {name = "duckdb-1.4.4-cp311-cp311-macosx_11_0_arm64.whl",url = "https://files.pythonhosted.org/packages/d3/f0/cf4241a040ec4f571859a738007ec773b642fbc27df4cbcf34b0c32ea559/duckdb-1.4.4-cp311-cp311-macosx_11_0_arm64.whl",hashes = {sha256 = "47dd4162da6a2be59a0aef640eb08d6360df1cf83c317dcc127836daaf3b7f7c"}}, - {name = "duckdb-1.4.4-cp311-cp311-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl",url = "https://files.pythonhosted.org/packages/11/64/de2bb4ec1e35ec9ebf6090a95b930fc56934a0ad6f34a24c5972a14a77ef/duckdb-1.4.4-cp311-cp311-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl",hashes = {sha256 = "6cb357cfa3403910e79e2eb46c8e445bb1ee2fd62e9e9588c6b999df4256abc1"}}, - {name = "duckdb-1.4.4-cp311-cp311-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl",url = "https://files.pythonhosted.org/packages/79/a2/ac0f5ee16df890d141304bcd48733516b7202c0de34cd3555634d6eb4551/duckdb-1.4.4-cp311-cp311-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl",hashes = {sha256 = "4c25d5b0febda02b7944e94fdae95aecf952797afc8cb920f677b46a7c251955"}}, - {name = "duckdb-1.4.4-cp311-cp311-win_amd64.whl",url = "https://files.pythonhosted.org/packages/37/a2/9a3402edeedaecf72de05fe9ff7f0303d701b8dfc136aea4a4be1a5f7eee/duckdb-1.4.4-cp311-cp311-win_amd64.whl",hashes = {sha256 = "6703dd1bb650025b3771552333d305d62ddd7ff182de121483d4e042ea6e2e00"}}, - {name = "duckdb-1.4.4-cp311-cp311-win_arm64.whl",url = "https://files.pythonhosted.org/packages/f6/e6/052ea6dcdf35b259fd182eff3efd8d75a071de4010c9807556098df137b9/duckdb-1.4.4-cp311-cp311-win_arm64.whl",hashes = {sha256 = "bf138201f56e5d6fc276a25138341b3523e2f84733613fc43f02c54465619a95"}}, - {name = "duckdb-1.4.4-cp310-cp310-macosx_10_9_universal2.whl",url = "https://files.pythonhosted.org/packages/a2/9f/67a75f1e88f84946909826fa7aadd0c4b0dc067f24956142751fd9d59fe6/duckdb-1.4.4-cp310-cp310-macosx_10_9_universal2.whl",hashes = {sha256 = "e870a441cb1c41d556205deb665749f26347ed13b3a247b53714f5d589596977"}}, - {name = "duckdb-1.4.4-cp310-cp310-macosx_10_9_x86_64.whl",url = "https://files.pythonhosted.org/packages/6b/7a/e9277d0567884c21f345ad43cc01aeaa2abe566d5fdf22e35c3861dd44fa/duckdb-1.4.4-cp310-cp310-macosx_10_9_x86_64.whl",hashes = {sha256 = "49123b579e4a6323e65139210cd72dddc593a72d840211556b60f9703bda8526"}}, - {name = "duckdb-1.4.4-cp310-cp310-macosx_11_0_arm64.whl",url = "https://files.pythonhosted.org/packages/4a/96/3a7630d2779d2bae6f3cdf540a088ed45166adefd3c429971e5b85ce8f84/duckdb-1.4.4-cp310-cp310-macosx_11_0_arm64.whl",hashes = {sha256 = "5e1933fac5293fea5926b0ee75a55b8cfe7f516d867310a5b251831ab61fe62b"}}, - {name = "duckdb-1.4.4-cp310-cp310-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl",url = "https://files.pythonhosted.org/packages/8e/ad/f62a3a65d200e8afc1f75cf0dd3f0aa84ef0dd07c484414a11f2abed810e/duckdb-1.4.4-cp310-cp310-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl",hashes = {sha256 = "707530f6637e91dc4b8125260595299ec9dd157c09f5d16c4186c5988bfbd09a"}}, - {name = "duckdb-1.4.4-cp310-cp310-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl",url = "https://files.pythonhosted.org/packages/a2/5f/23bd586ecb21273b41b5aa4b16fd88b7fecb53ed48d897273651c0c3d66f/duckdb-1.4.4-cp310-cp310-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl",hashes = {sha256 = "453b115f4777467f35103d8081770ac2f223fb5799178db5b06186e3ab51d1f2"}}, - {name = "duckdb-1.4.4-cp310-cp310-win_amd64.whl",url = "https://files.pythonhosted.org/packages/8b/d0/4ce78bf341c930d4a22a56cb686bfc2c975eaf25f653a7ac25e3929d98bb/duckdb-1.4.4-cp310-cp310-win_amd64.whl",hashes = {sha256 = "a3c8542db7ffb128aceb7f3b35502ebaddcd4f73f1227569306cc34bad06680c"}}, +version = "1.5.0" +requires-python = ">=3.10.0" +sdist = {name = "duckdb-1.5.0.tar.gz", url = "https://files.pythonhosted.org/packages/ee/11/e05a7eb73a373d523e45d83c261025e02bc31ebf868e6282c30c4d02cc59/duckdb-1.5.0.tar.gz", hashes = {sha256 = "f974b61b1c375888ee62bc3125c60ac11c4e45e4457dd1bb31a8f8d3cf277edd"}} +wheels = [ + {name = "duckdb-1.5.0-cp314-cp314-macosx_10_15_universal2.whl",url = "https://files.pythonhosted.org/packages/66/9f/dd806d4e8ecd99006eb240068f34e1054533da1857ad06ac726305cd102d/duckdb-1.5.0-cp314-cp314-macosx_10_15_universal2.whl",hashes = {sha256 = "d4b618de670cd2271dd7b3397508c7b3c62d8ea70c592c755643211a6f9154fa"}}, + {name = "duckdb-1.5.0-cp314-cp314-macosx_10_15_x86_64.whl",url = "https://files.pythonhosted.org/packages/79/c2/7b7b8a5c65d5535c88a513e267b5e6d7a55ab3e9b67e4ddd474454653268/duckdb-1.5.0-cp314-cp314-macosx_10_15_x86_64.whl",hashes = {sha256 = "065ae50cb185bac4b904287df72e6b4801b3bee2ad85679576dd712b8ba07021"}}, + {name = "duckdb-1.5.0-cp314-cp314-macosx_11_0_arm64.whl",url = "https://files.pythonhosted.org/packages/23/c5/9a52a2cdb228b8d8d191a603254364d929274d9cc7d285beada8f7daa712/duckdb-1.5.0-cp314-cp314-macosx_11_0_arm64.whl",hashes = {sha256 = "6be5e48e287a24d98306ce9dd55093c3b105a8fbd8a2e7a45e13df34bf081985"}}, + {name = "duckdb-1.5.0-cp314-cp314-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl",url = "https://files.pythonhosted.org/packages/b8/68/646045cb97982702a8a143dc2e45f3bdcb79fbe2d559a98d74b8c160e5e2/duckdb-1.5.0-cp314-cp314-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl",hashes = {sha256 = "a5ee41a0bf793882f02192ce105b9a113c3e8c505a27c7ef9437d7b756317113"}}, + {name = "duckdb-1.5.0-cp314-cp314-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl",url = "https://files.pythonhosted.org/packages/15/1b/5abf0c7f38febb3b4a231c784223fceccfd3f2bfd957699d786f46e41ce6/duckdb-1.5.0-cp314-cp314-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl",hashes = {sha256 = "f8e42aaf3cd217417c5dc9ff522dc3939d18b25a6fe5f846348277e831e6f59c"}}, + {name = "duckdb-1.5.0-cp314-cp314-win_amd64.whl",url = "https://files.pythonhosted.org/packages/93/a4/a90f2901cc0a1ce7ca4f0564b8492b9dbfe048a6395b27933d46ae9be473/duckdb-1.5.0-cp314-cp314-win_amd64.whl",hashes = {sha256 = "11ae50aaeda2145b50294ee0247e4f11fb9448b3cc3d2aea1cfc456637dfb977"}}, + {name = "duckdb-1.5.0-cp314-cp314-win_arm64.whl",url = "https://files.pythonhosted.org/packages/64/aa/f14dd5e241ec80d9f9d82196ca65e0c53badfc8a7a619d5497c5626657ad/duckdb-1.5.0-cp314-cp314-win_arm64.whl",hashes = {sha256 = "d6d2858c734d1a7e7a1b6e9b8403b3fce26dfefb4e0a2479c420fba6cd36db36"}}, + {name = "duckdb-1.5.0-cp313-cp313-macosx_10_13_universal2.whl",url = "https://files.pythonhosted.org/packages/35/5d/af5501221f42e4e3662c047ecec4dcd0761229fceeba3c67ad4d9d8741df/duckdb-1.5.0-cp313-cp313-macosx_10_13_universal2.whl",hashes = {sha256 = "11dd05b827846c87f0ae2f67b9ae1d60985882a7c08ce855379e4a08d5be0e1d"}}, + {name = "duckdb-1.5.0-cp313-cp313-macosx_10_13_x86_64.whl",url = "https://files.pythonhosted.org/packages/43/bd/a278d73fedbd3783bf9aedb09cad4171fe8e55bd522952a84f6849522eb6/duckdb-1.5.0-cp313-cp313-macosx_10_13_x86_64.whl",hashes = {sha256 = "5ad8d9c91b7c280ab6811f59deff554b845706c20baa28c4e8f80a95690b252b"}}, + {name = "duckdb-1.5.0-cp313-cp313-macosx_11_0_arm64.whl",url = "https://files.pythonhosted.org/packages/76/fc/c916e928606946209c20fb50898dabf120241fb528a244e2bd8cde1bd9e2/duckdb-1.5.0-cp313-cp313-macosx_11_0_arm64.whl",hashes = {sha256 = "0ee4dabe03ed810d64d93927e0fd18cd137060b81ee75dcaeaaff32cbc816656"}}, + {name = "duckdb-1.5.0-cp313-cp313-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl",url = "https://files.pythonhosted.org/packages/53/07/1390e69db922423b2e111e32ed342b3e8fad0a31c144db70681ea1ba4d56/duckdb-1.5.0-cp313-cp313-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl",hashes = {sha256 = "9409ed1184b363ddea239609c5926f5148ee412b8d9e5ffa617718d755d942f6"}}, + {name = "duckdb-1.5.0-cp313-cp313-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl",url = "https://files.pythonhosted.org/packages/54/13/b58d718415cde993823a54952ea511d2612302f1d2bc220549d0cef752a4/duckdb-1.5.0-cp313-cp313-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl",hashes = {sha256 = "1df8c4f9c853a45f3ec1e79ed7fe1957a203e5ec893bbbb853e727eb93e0090f"}}, + {name = "duckdb-1.5.0-cp313-cp313-win_amd64.whl",url = "https://files.pythonhosted.org/packages/e0/96/4460429651e371eb5ff745a4790e7fa0509c7a58c71fc4f0f893404c9646/duckdb-1.5.0-cp313-cp313-win_amd64.whl",hashes = {sha256 = "9a3d3dfa2d8bc74008ce3ad9564761ae23505a9e4282f6a36df29bd87249620b"}}, + {name = "duckdb-1.5.0-cp313-cp313-win_arm64.whl",url = "https://files.pythonhosted.org/packages/ba/54/6d5b805113214b830fa3c267bb3383fb8febaa30760d0162ef59aadb110a/duckdb-1.5.0-cp313-cp313-win_arm64.whl",hashes = {sha256 = "2deebcbafd9d39c04f31ec968f4dd7cee832c021e10d96b32ab0752453e247c8"}}, + {name = "duckdb-1.5.0-cp312-cp312-macosx_10_13_universal2.whl",url = "https://files.pythonhosted.org/packages/43/73/120e673e48ae25aaf689044c25ef51b0ea1d088563c9a2532612aea18e0a/duckdb-1.5.0-cp312-cp312-macosx_10_13_universal2.whl",hashes = {sha256 = "9ea988d1d5c8737720d1b2852fd70e4d9e83b1601b8896a1d6d31df5e6afc7dd"}}, + {name = "duckdb-1.5.0-cp312-cp312-macosx_10_13_x86_64.whl",url = "https://files.pythonhosted.org/packages/21/e9/61143471958d36d3f3e764cb4cd43330be208ddbff1c78d3310b9ee67fe8/duckdb-1.5.0-cp312-cp312-macosx_10_13_x86_64.whl",hashes = {sha256 = "cb786d5472afc16cc3c7355eb2007172538311d6f0cc6f6a0859e84a60220375"}}, + {name = "duckdb-1.5.0-cp312-cp312-macosx_11_0_arm64.whl",url = "https://files.pythonhosted.org/packages/4f/71/76e37c9a599ad89dd944e6cbb3e6a8ad196944a421758e83adea507637b6/duckdb-1.5.0-cp312-cp312-macosx_11_0_arm64.whl",hashes = {sha256 = "dc92b238f4122800a7592e99134124cc9048c50f766c37a0778dd2637f5cbe59"}}, + {name = "duckdb-1.5.0-cp312-cp312-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl",url = "https://files.pythonhosted.org/packages/db/b8/de1831656d5d13173e27c79c7259c8b9a7bdc314fdc8920604838ea4c46d/duckdb-1.5.0-cp312-cp312-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl",hashes = {sha256 = "1b74cb205c21d3696d8f8b88adca401e1063d6e6f57c1c4f56a243610b086e30"}}, + {name = "duckdb-1.5.0-cp312-cp312-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl",url = "https://files.pythonhosted.org/packages/1f/8d/33d349a3bcbd3e9b7b4e904c19d5b97f058c4c20791b89a8d6323bb93dce/duckdb-1.5.0-cp312-cp312-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl",hashes = {sha256 = "6e56c19ffd1ffe3642fa89639e71e2e00ab0cf107b62fe16e88030acaebcbde6"}}, + {name = "duckdb-1.5.0-cp312-cp312-win_amd64.whl",url = "https://files.pythonhosted.org/packages/e2/ec/591a4cad582fae04bc8f8b4a435eceaaaf3838cf0ca771daae16a3c2995b/duckdb-1.5.0-cp312-cp312-win_amd64.whl",hashes = {sha256 = "86525e565ec0c43420106fd34ba2c739a54c01814d476c7fed3007c9ed6efd86"}}, + {name = "duckdb-1.5.0-cp312-cp312-win_arm64.whl",url = "https://files.pythonhosted.org/packages/db/62/42e0a13f9919173bec121c0ff702406e1cdd91d8084c3e0b3412508c3891/duckdb-1.5.0-cp312-cp312-win_arm64.whl",hashes = {sha256 = "5faeebc178c986a7bfa68868a023001137a95a1110bf09b7356442a4eae0f7e7"}}, + {name = "duckdb-1.5.0-cp311-cp311-macosx_10_9_universal2.whl",url = "https://files.pythonhosted.org/packages/01/0c/0282b10a1c96810606b916b8d58a03f2131bd3ede14d2851f58b0b860e7c/duckdb-1.5.0-cp311-cp311-macosx_10_9_universal2.whl",hashes = {sha256 = "3298bd17cf0bb5f342fb51a4edc9aadacae882feb2b04161a03eb93271c70c86"}}, + {name = "duckdb-1.5.0-cp311-cp311-macosx_10_9_x86_64.whl",url = "https://files.pythonhosted.org/packages/71/e8/cbbc920078a794f24f63017fc55c9cbdb17d6fb94d3973f479b2d9f2983d/duckdb-1.5.0-cp311-cp311-macosx_10_9_x86_64.whl",hashes = {sha256 = "13f94c49ca389731c439524248e05007fb1a86cd26f1e38f706abc261069cd41"}}, + {name = "duckdb-1.5.0-cp311-cp311-macosx_11_0_arm64.whl",url = "https://files.pythonhosted.org/packages/31/b6/6cae794d5856259b0060f79d5db71c7fdba043950eaa6a9d72b0bad16095/duckdb-1.5.0-cp311-cp311-macosx_11_0_arm64.whl",hashes = {sha256 = "ab9d597b1e8668466f1c164d0ea07eaf0ebb516950f5a2e794b0f52c81ff3b16"}}, + {name = "duckdb-1.5.0-cp311-cp311-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl",url = "https://files.pythonhosted.org/packages/82/07/aba3887658b93a36ce702dd00ca6a6422de3d14c7ee3a4b4c03ea20a99c0/duckdb-1.5.0-cp311-cp311-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl",hashes = {sha256 = "a43f8289b11c0b50d13f96ab03210489d37652f3fd7911dc8eab04d61b049da2"}}, + {name = "duckdb-1.5.0-cp311-cp311-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl",url = "https://files.pythonhosted.org/packages/fc/a2/723e6df48754e468fa50d7878eb860906c975eafe317c4134a8482ca220e/duckdb-1.5.0-cp311-cp311-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl",hashes = {sha256 = "4f514e796a116c5de070e99974e42d0b8c2e6c303386790e58408c481150d417"}}, + {name = "duckdb-1.5.0-cp311-cp311-win_amd64.whl",url = "https://files.pythonhosted.org/packages/03/af/4dcbdf8f2349ed0b054c254ec59bc362ce6ddf603af35f770124c0984686/duckdb-1.5.0-cp311-cp311-win_amd64.whl",hashes = {sha256 = "cf503ba2c753d97c76beb111e74572fef8803265b974af2dca67bba1de4176d2"}}, + {name = "duckdb-1.5.0-cp311-cp311-win_arm64.whl",url = "https://files.pythonhosted.org/packages/60/5e/1bb7e75a63bf3dc49bc5a2cd27a65ffeef151f52a32db980983516f2d9f6/duckdb-1.5.0-cp311-cp311-win_arm64.whl",hashes = {sha256 = "a1156e91e4e47f0e7d9c9404e559a1d71b372cd61790a407d65eb26948ae8298"}}, + {name = "duckdb-1.5.0-cp310-cp310-macosx_10_9_universal2.whl",url = "https://files.pythonhosted.org/packages/e0/5d/8fa129bbd604d0e91aa9a0a407e7d2acc559b6024c3f887868fd7a13871d/duckdb-1.5.0-cp310-cp310-macosx_10_9_universal2.whl",hashes = {sha256 = "47fbb1c053a627a91fa71ec883951561317f14a82df891c00dcace435e8fea78"}}, + {name = "duckdb-1.5.0-cp310-cp310-macosx_10_9_x86_64.whl",url = "https://files.pythonhosted.org/packages/0c/31/db320641a262a897755e634d16838c98d5ca7dc91f4e096e104e244a3a01/duckdb-1.5.0-cp310-cp310-macosx_10_9_x86_64.whl",hashes = {sha256 = "2b546a30a6ac020165a86ab3abac553255a6e8244d5437d17859a6aa338611aa"}}, + {name = "duckdb-1.5.0-cp310-cp310-macosx_11_0_arm64.whl",url = "https://files.pythonhosted.org/packages/0b/45/5725684794fbabf54d8dbae5247685799a6bf8e1e930ebff3a76a726772c/duckdb-1.5.0-cp310-cp310-macosx_11_0_arm64.whl",hashes = {sha256 = "122396041c0acb78e66d7dc7d36c55f03f67fe6ad012155c132d82739722e381"}}, + {name = "duckdb-1.5.0-cp310-cp310-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl",url = "https://files.pythonhosted.org/packages/27/68/f110c66b43e27191d7e53d3587e118568b73d66f23cb9bd6c7e0a560fd6d/duckdb-1.5.0-cp310-cp310-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl",hashes = {sha256 = "4a2cd73d50ea2c2bf618a4b7d22fe7c4115a1c9083d35654a0d5d421620ed999"}}, + {name = "duckdb-1.5.0-cp310-cp310-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl",url = "https://files.pythonhosted.org/packages/ec/9d/46affc9257377cbc865e494650312a7a08a56e85aa8d702eb297bec430b7/duckdb-1.5.0-cp310-cp310-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl",hashes = {sha256 = "63a8ea3b060a881c90d1c1b9454abed3daf95b6160c39bbb9506fee3a9711730"}}, + {name = "duckdb-1.5.0-cp310-cp310-win_amd64.whl",url = "https://files.pythonhosted.org/packages/3b/34/dac03ab7340989cda258655387959c88342ea3b44949751391267bcbc830/duckdb-1.5.0-cp310-cp310-win_amd64.whl",hashes = {sha256 = "238d576ae1dda441f8c79ed1370c5ccf863e4a5d59ca2563f9c96cd26b2188ac"}}, ] marker = "\"default\" in dependency_groups" @@ -407,10 +407,10 @@ dependencies = [ [[packages]] name = "pytest-cases" -version = "3.9.1" -sdist = {name = "pytest_cases-3.9.1.tar.gz", url = "https://files.pythonhosted.org/packages/c1/69/8b41e074e9e1a9fa85c3765971f213e1b8d4a2f648b457af32dea792bdb8/pytest_cases-3.9.1.tar.gz", hashes = {sha256 = "c4e181f1b525c931a318d4812fa8de656c2c8fb77fccf1571ecf0cc5fe8e7f8f"}} +version = "3.10.1" +sdist = {name = "pytest_cases-3.10.1.tar.gz", url = "https://files.pythonhosted.org/packages/c1/a2/c7abc3b606125cf3732e8e613092b0e2549365e824b5f37972125c22806b/pytest_cases-3.10.1.tar.gz", hashes = {sha256 = "451f9e3ecd5d2d81a4362c10c441126f5b3d1ae3a7efaf59f60b1fb930df2d69"}} wheels = [ - {name = "pytest_cases-3.9.1-py2.py3-none-any.whl",url = "https://files.pythonhosted.org/packages/92/82/db006f1d06e5d31805ac47f9ce979937e3d026292f2759543b744f8040be/pytest_cases-3.9.1-py2.py3-none-any.whl",hashes = {sha256 = "60507716650c5ed1ce4a36a3c137f1c3ec58f4fef1ee8678404be074612fcd21"}}, + {name = "pytest_cases-3.10.1-py2.py3-none-any.whl",url = "https://files.pythonhosted.org/packages/61/f2/7a29fb0571562034b05c38dceabba48dcc622be5d6c5448db80779e55de7/pytest_cases-3.10.1-py2.py3-none-any.whl",hashes = {sha256 = "0deb8a85b6132e44adbc1cfc57897c6a624ec23f48ab445a43c7d56a6b9315a4"}}, ] marker = "\"test\" in dependency_groups" @@ -422,6 +422,18 @@ dependencies = [ "pytest", ] +[[packages]] +name = "pytz" +version = "2026.1.post1" +sdist = {name = "pytz-2026.1.post1.tar.gz", url = "https://files.pythonhosted.org/packages/56/db/b8721d71d945e6a8ac63c0fc900b2067181dbb50805958d4d4661cf7d277/pytz-2026.1.post1.tar.gz", hashes = {sha256 = "3378dde6a0c3d26719182142c56e60c7f9af7e968076f31aae569d72a0358ee1"}} +wheels = [ + {name = "pytz-2026.1.post1-py2.py3-none-any.whl",url = "https://files.pythonhosted.org/packages/10/99/781fe0c827be2742bcc775efefccb3b048a3a9c6ce9aec0cbf4a101677e5/pytz-2026.1.post1-py2.py3-none-any.whl",hashes = {sha256 = "f2fd16142fda348286a75e1a524be810bb05d444e5a081f37f7affc635035f7a"}}, +] +marker = "\"default\" in dependency_groups" + +[packages.tool.pdm] +dependencies = [] + [[packages]] name = "tqdm" version = "4.67.3" @@ -440,11 +452,11 @@ dependencies = [ [[packages]] name = "types-tqdm" -version = "4.67.3.20260205" -requires-python = ">=3.9" -sdist = {name = "types_tqdm-4.67.3.20260205.tar.gz", url = "https://files.pythonhosted.org/packages/53/46/790b9872523a48163bdda87d47849b4466017640e5259d06eed539340afd/types_tqdm-4.67.3.20260205.tar.gz", hashes = {sha256 = "f3023682d4aa3bbbf908c8c6bb35f35692d319460d9bbd3e646e8852f3dd9f85"}} +version = "4.67.3.20260303" +requires-python = ">=3.10" +sdist = {name = "types_tqdm-4.67.3.20260303.tar.gz", url = "https://files.pythonhosted.org/packages/e1/64/3e7cb0f40c4bf9578098b6873df33a96f7e0de90f3a039e614d22bfde40a/types_tqdm-4.67.3.20260303.tar.gz", hashes = {sha256 = "7bfddb506a75aedb4030fabf4f05c5638c9a3bbdf900d54ec6c82be9034bfb96"}} wheels = [ - {name = "types_tqdm-4.67.3.20260205-py3-none-any.whl",url = "https://files.pythonhosted.org/packages/cc/da/7f761868dbaa328392356fab30c18ab90d14cce86b269e7e63328f29d4a3/types_tqdm-4.67.3.20260205-py3-none-any.whl",hashes = {sha256 = "85c31731e81dc3c5cecc34c6c8b2e5166fafa722468f58840c2b5ac6a8c5c173"}}, + {name = "types_tqdm-4.67.3.20260303-py3-none-any.whl",url = "https://files.pythonhosted.org/packages/37/32/e4a1fce59155c74082f1a42d0ffafa59652bfb8cff35b04d56333877748e/types_tqdm-4.67.3.20260303-py3-none-any.whl",hashes = {sha256 = "459decf677e4b05cef36f9012ef8d6e20578edefb6b78c15bd0b546247eda62d"}}, ] marker = "\"types\" in dependency_groups" @@ -820,7 +832,7 @@ marker = "sys_platform == \"win32\" and \"default\" in dependency_groups" dependencies = [] [tool.pdm] -hashes = {sha256 = "fc3d3c9728a89b11648ffab29807d5c42006e80d65c41b735dac8d12d3dd8f1d"} +hashes = {sha256 = "b3cf474c257071e375683a8f88215a2f04a2a1983dea8fae923264a6b0c3b3be"} strategy = ["inherit_metadata", "static_urls"] [[tool.pdm.targets]] From a4a5f5c54b9b9353cfdcab63b689f772d601222b Mon Sep 17 00:00:00 2001 From: Katherine Bargar Date: Tue, 10 Mar 2026 17:46:41 +0000 Subject: [PATCH 5/5] Simplify the typed statement creation --- src/ldlite/database/_expansion/metadata.py | 36 ++++++++-------------- 1 file changed, 13 insertions(+), 23 deletions(-) diff --git a/src/ldlite/database/_expansion/metadata.py b/src/ldlite/database/_expansion/metadata.py index 2914772..50087ff 100644 --- a/src/ldlite/database/_expansion/metadata.py +++ b/src/ldlite/database/_expansion/metadata.py @@ -46,40 +46,30 @@ def select_column( alias: str, ) -> sql.Composed: str_extract = ( - "ldlite_system.jself_string({json_col})" - if self.prop is None - else "{json_col}->>{prop}" + "{json_col}->>{prop}" + if self.prop is not None + else "ldlite_system.jself_string({json_col})" ) + nullable_str_extract = f"NULLIF(NULLIF({str_extract}, ''), 'null')" if self.is_array or self.is_object: - extract = "{json_col}" if self.prop is None else "{json_col}->{prop}" - stmt = sql.SQL(extract + "AS {alias}") + stmt = "{json_col}" if self.prop is None else "{json_col}->{prop}" elif self.json_type == "number" and self.is_float: - stmt = sql.SQL("(" + str_extract + ")::numeric AS {alias}") + stmt = f"({str_extract})::numeric" elif self.json_type == "number" and self.is_bigint: - stmt = sql.SQL("(" + str_extract + ")::bigint AS {alias}") + stmt = f"({str_extract})::bigint" elif self.json_type == "number": - stmt = sql.SQL("(" + str_extract + ")::integer AS {alias}") + stmt = f"({str_extract})::integer" elif self.json_type == "boolean": - stmt = sql.SQL( - "NULLIF(NULLIF(" + str_extract + ", ''), 'null')::bool AS {alias}", - ) + stmt = f"({nullable_str_extract})::bool" elif self.json_type == "string" and self.is_uuid: - stmt = sql.SQL( - "NULLIF(NULLIF(" + str_extract + ", ''), 'null')::uuid AS {alias}", - ) + stmt = f"({nullable_str_extract})::uuid" elif self.json_type == "string" and self.is_datetime: - stmt = sql.SQL( - "NULLIF(NULLIF(" - + str_extract - + ", ''), 'null')::timestamptz AS {alias}", - ) + stmt = f"({nullable_str_extract})::timestamptz" else: - stmt = sql.SQL( - "NULLIF(NULLIF(" + str_extract + ", ''), 'null') AS {alias}", - ) + stmt = nullable_str_extract - return stmt.format( + return sql.SQL(stmt + " AS {alias}").format( json_col=json_col, prop=self.prop, alias=sql.Identifier(alias),