From 53d9b84bc13a9efc14569ce621f0733bc6787138 Mon Sep 17 00:00:00 2001 From: Kevin Longe <273747162+kvlonge@users.noreply.github.com> Date: Sun, 15 Nov 2026 12:40:28 +0000 Subject: [PATCH 1/2] build: require fensu 0.31.0 and cap oversized code at its current size Fensu 0.31.0 limits _helpers/ containers to 15 buckets and packages or crates to 75,000 code lines. The Python bindings crate, its helpers container and the runtime package are already over those limits, so each is capped at its current size until it is split. --- Cargo.lock | 8 ++++---- Cargo.toml | 4 ++-- fensu.toml | 15 +++++++++++++++ pyproject.toml | 2 +- uv.lock | 30 +++++++++++++++--------------- 5 files changed, 37 insertions(+), 22 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 49e5e0751..647572ecf 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1408,9 +1408,9 @@ checksum = "da7c62ceae207dd37ea5b845da6a0696c799f85e97da1ab5b7910be3c1c80223" [[package]] name = "fensu-facts" -version = "0.30.0" +version = "0.31.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cebbb33fa7353b9e6d12ad9c62481d9d672da2fd5e9d50429a968b4279d448b2" +checksum = "bbaaeb4fa29af8fa378ebd826e8a28655dfd13ed7acb98919dbe64f882681fef" dependencies = [ "dunce", "get-size2", @@ -1426,9 +1426,9 @@ dependencies = [ [[package]] name = "fensu-native" -version = "0.30.0" +version = "0.31.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "385879149037e2b959b21e677c1cd8b302926f3d252b46c014d17cf88a9300cc" +checksum = "8053936f5ea33f32a301649d2178fad69cee1fe8aff7f17b35d56ba88d85024b" dependencies = [ "fensu-facts", "globset", diff --git a/Cargo.toml b/Cargo.toml index 870a5c559..b284cece3 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -77,8 +77,8 @@ tower-http = { version = "0.6", default-features = false, features = ["compressi fensu-policy = "=0.22.0" # Fensu's Python facts and core rules without their Python bindings: the default `python` # feature adds PyO3, rusqlite, flate2 and sha2. -fensu-facts = { version = "=0.30.0", default-features = false } -fensu-native = { version = "=0.30.0", default-features = false } +fensu-facts = { version = "=0.31.0", default-features = false } +fensu-native = { version = "=0.31.0", default-features = false } futures-util = { version = "0.3", default-features = false, features = ["std"] } # `sqb` names compute log captures with random ids, as `uuid.uuid4().hex`. getrandom = "0.4" diff --git a/fensu.toml b/fensu.toml index 3f1d83277..805b717d3 100644 --- a/fensu.toml +++ b/fensu.toml @@ -1175,6 +1175,11 @@ reason = "The custom-rule host tests compute expected module-state tokens with i [targets.python.thresholds] max_positional_args = 1 +[[targets.python.threshold_overrides]] +paths = ["src/sqlbuild/__init__.py"] +thresholds = { max_crate_code_lines = 89427 } +reason = "The runtime package is above the code-line limit; this caps it at its current size until it is split into packages by area. Lower the cap as code moves out." + [targets.python.rule_options.XSB074] pending_budgets = [ "tests/e2e/src/sqlbuild/cli/commands/main/compile/helpers.py=6", @@ -1639,6 +1644,16 @@ rule_modules = [ ] select = ["FPRS", "XSB072", "XSB073", "XSB075", "XSB076", "XSB077", "XSB078", "XSB079"] +[[targets.rust.threshold_overrides]] +paths = ["crates/sqlbuild-python/Cargo.toml"] +thresholds = { max_crate_code_lines = 216783 } +reason = "The Python bindings crate is above the code-line limit; this caps it at its current size until it is split into crates by area. Lower the cap as code moves out." + +[[targets.rust.threshold_overrides]] +paths = ["crates/sqlbuild-python/src/bindings/_helpers"] +thresholds = { max_helpers_container_buckets = 111 } +reason = "The bindings helpers container is above the bucket limit; this caps it at its current bucket count until cohesive groups move into their own modules or crates. Lower the cap as buckets move out." + [targets.rust.rule_options.XSB076] schema_paths = ["crates/sqlbuild-orchestration/src/store"] allowed = [ diff --git a/pyproject.toml b/pyproject.toml index 1f08638f7..90082607b 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -81,7 +81,7 @@ dev = [ "pytest-cov>=7.0.0", "pytest-xdist>=3.8.0", "ruff>=0.12.0", - "fensu>=0.29.1", + "fensu>=0.31.0", "testcontainers>=4.8.1", "ty>=0.0.1a19", ] diff --git a/uv.lock b/uv.lock index 85f4c3677..5a2b9185d 100644 --- a/uv.lock +++ b/uv.lock @@ -1343,31 +1343,31 @@ wheels = [ [[package]] name = "fensu" -version = "0.29.1" +version = "0.31.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "fensu-cli" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/45/e9/9d8ee916f426abdf40a47305238bec6001e6c1b1021a863d973861dfb738/fensu-0.29.1.tar.gz", hash = "sha256:8461d64efdfadb7eff0f395cb58dd36870d919aec0d15c42a274892a9a1240c1", size = 531134, upload-time = "2026-11-05T11:07:12.133Z" } +sdist = { url = "https://files.pythonhosted.org/packages/6b/99/a1692065a637e8d85acef4de5496ca0ba93913f3365920995f4e9290f6eb/fensu-0.31.0.tar.gz", hash = "sha256:af5aad8b7595b521940e548ad11a3c649914c60d7a72e5c16f2486ae0ad00727", size = 537385, upload-time = "2026-11-15T12:31:37.016Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/e1/21/5b988f5ec4e76ceaf511472f2a87e94e5a805aa9d5c0c778b6a8cf5121f6/fensu-0.29.1-cp312-abi3-macosx_10_12_x86_64.whl", hash = "sha256:57d3ce1a71064bc100fc0cf0a08f3f22396d48a71ac4f0148e452a9a4af1bdfd", size = 4150776, upload-time = "2026-11-05T11:06:48.593Z" }, - { url = "https://files.pythonhosted.org/packages/f3/f9/96be9309bc8a75df6523243d802e9bd5fedfc6f54113cd577d7b96142b87/fensu-0.29.1-cp312-abi3-macosx_11_0_arm64.whl", hash = "sha256:3c522e7d11baef472e5f4b7cc1668c490455c4772986941da73dbd556f5abbd0", size = 4000549, upload-time = "2026-11-05T11:06:51.631Z" }, - { url = "https://files.pythonhosted.org/packages/9d/36/35f1800d9d560a2734444e9871dc9da147392736310ea30604f2a5bdb5aa/fensu-0.29.1-cp312-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:64e55545d58c158efac682ae0181575fa9af67cb5a4240fe665330db6bf87a2b", size = 4227182, upload-time = "2026-11-05T11:06:54.133Z" }, - { url = "https://files.pythonhosted.org/packages/da/05/f27b63e1ff7e25d2ec7ddcd13e623c2215eacd8dba273ab7dcb91cbff9e6/fensu-0.29.1-cp312-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:c9b5872a3093da557912242d8fc060d172fb4bf31a3ce3be87866daa70cf76d2", size = 4305965, upload-time = "2026-11-05T11:06:56.436Z" }, - { url = "https://files.pythonhosted.org/packages/3e/4a/266a467e57693c4ee027163d810b4502438fe4fd5b02ab81a81018f70c72/fensu-0.29.1-cp312-abi3-win_amd64.whl", hash = "sha256:d775821b228bb433303e21d676cd6d9202954b62097a15a829862f9898451e9c", size = 3972955, upload-time = "2026-11-05T11:06:58.422Z" }, + { url = "https://files.pythonhosted.org/packages/f8/de/91648b56387827750097b61e17e395164a42c9aa07a9729df83021d4dec7/fensu-0.31.0-cp312-abi3-macosx_10_12_x86_64.whl", hash = "sha256:41b87150cd8fc57539c75209e6212e49c047a9b39ed9808aefdd0d61c85b4491", size = 4157866, upload-time = "2026-11-15T12:31:17.872Z" }, + { url = "https://files.pythonhosted.org/packages/74/e7/7d56f99c2edaf220b6669b2b05f4db816ac7b6b8190b5e91c4497448480d/fensu-0.31.0-cp312-abi3-macosx_11_0_arm64.whl", hash = "sha256:3b466cbdcdf118a8d5e89f69a38f2c9b17115cb6de3b988443b50b8c6da7b41d", size = 4012595, upload-time = "2026-11-15T12:31:19.625Z" }, + { url = "https://files.pythonhosted.org/packages/e5/78/510278b4542e714cf7c7dd43189ded49de9b8fc7c759cb6c901f1b6e4286/fensu-0.31.0-cp312-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:229b8c459a85aa5560ac1b15363df69dd87bc44b68d87147a78ab8ea897fd44b", size = 4249463, upload-time = "2026-11-15T12:31:21.301Z" }, + { url = "https://files.pythonhosted.org/packages/93/d2/eb491ade5cd0b8b40376951965b873688ce05d4aa7d8bfa663ce87c810ea/fensu-0.31.0-cp312-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:3eed44bc6a830384815dc80e3e9b05ab189c28d49c89a0927b1e88945c01206a", size = 4322607, upload-time = "2026-11-15T12:31:22.777Z" }, + { url = "https://files.pythonhosted.org/packages/bd/44/00d555425c9e9c0b6817416d1bd1f44387e416045c6c94c9793b87bf91ea/fensu-0.31.0-cp312-abi3-win_amd64.whl", hash = "sha256:37e17e24a25f206334f7e26041a378bff9562808aa13ef2a043b0fcee82359b9", size = 3987846, upload-time = "2026-11-15T12:31:24.29Z" }, ] [[package]] name = "fensu-cli" -version = "0.29.1" +version = "0.31.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/1a/c0/c128843b495f97dc472a1550e9c49c66a88476b3a9e16805e9c74c1dcfbf/fensu_cli-0.29.1.tar.gz", hash = "sha256:26ed73adc6d0b3b4f3acdc01fc208cf5b3312a05fe10a89746dbc009f2d11270", size = 768252, upload-time = "2026-11-05T11:07:13.722Z" } +sdist = { url = "https://files.pythonhosted.org/packages/b2/2f/672748107c792850f63af6adaefce85d3145b76de36599e6c0dd6a5939cb/fensu_cli-0.31.0.tar.gz", hash = "sha256:67d3aff62712369de68e9b8d01a9370da8cab2268a35b883eeb1b84728a64561", size = 781412, upload-time = "2026-11-15T12:31:38.26Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/e8/bd/f05480d1d22a99f7be590ae1c11269b90249061f145530e249d6cc719451/fensu_cli-0.29.1-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:aecd95f965434e0506480f27831c878a8b52d1c205271ac5d1aefbe22bff7bb9", size = 7979278, upload-time = "2026-11-05T11:07:00.24Z" }, - { url = "https://files.pythonhosted.org/packages/8f/22/f55869d77767e0b605dd69af3ddb5ae7f2c7c703a59070774f99cf51dbf5/fensu_cli-0.29.1-py3-none-macosx_11_0_arm64.whl", hash = "sha256:94d2f18365f4a1526505d5d4c35ce41c10bf4daec3434a179631feb30407fbbe", size = 7498370, upload-time = "2026-11-05T11:07:03.435Z" }, - { url = "https://files.pythonhosted.org/packages/cd/33/985756764406ba114b37bd5b87abfd7a0212b8b7ed2a83e168df3e22303d/fensu_cli-0.29.1-py3-none-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:da6ee8e758a1344c09a8ceb9c902d5907cde8699ffc71cd9a91cf3b8c3785c3b", size = 7861563, upload-time = "2026-11-05T11:07:05.264Z" }, - { url = "https://files.pythonhosted.org/packages/a2/c3/24bc7b9824c830e3ad44997a91f80db8e18e0b32ff3d2ee7e19e91accf42/fensu_cli-0.29.1-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:b0e63e44f4af2950854cb457393705a40dc4d0ffa084e3710b14a4e513e02813", size = 8320198, upload-time = "2026-11-05T11:07:07.859Z" }, - { url = "https://files.pythonhosted.org/packages/81/ee/5416a68b2b6e385cb48a3f86534246625d052a7275076544a4c9b23681e1/fensu_cli-0.29.1-py3-none-win_amd64.whl", hash = "sha256:c09d1a13cdbf56bf936c2965351282798fad9baf562dc117613607c156df8dfb", size = 7694852, upload-time = "2026-11-05T11:07:09.873Z" }, + { url = "https://files.pythonhosted.org/packages/4d/28/f369973cf3b83d863454737dfd0fc6727f7c78cac86b64a2fb77e0132b16/fensu_cli-0.31.0-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:e914c246f32943f8ceecd359c0d3baf107a156aa8951d09ef6a74b166f4cb09c", size = 8022964, upload-time = "2026-11-15T12:31:25.917Z" }, + { url = "https://files.pythonhosted.org/packages/3e/73/481478bd5192f35627573784a8c4cb3c8b7dfb9ba4e2d693d04949986748/fensu_cli-0.31.0-py3-none-macosx_11_0_arm64.whl", hash = "sha256:b698b322e27fa7eb83477418329eb9e6b72817ebe36ae7aa7bf50fe1737534ed", size = 7535483, upload-time = "2026-11-15T12:31:27.75Z" }, + { url = "https://files.pythonhosted.org/packages/af/e2/fdcf0db07a5644b0964acc492b316182912f8873f18a19b3a555a79eba03/fensu_cli-0.31.0-py3-none-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:3fdd19fe970509d8452a8c4e37f0fffdaa85e6e9ec0c0c9054f453ca2dad113d", size = 7894784, upload-time = "2026-11-15T12:31:29.665Z" }, + { url = "https://files.pythonhosted.org/packages/ad/69/87c07af19a513191a326d516541eeff4dea30e022fe1fe0e8fa21af9517b/fensu_cli-0.31.0-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:de717bc0ad15b147ab7fd31c2add282b446a30eddf72c46910bab6b142ff8f21", size = 8361052, upload-time = "2026-11-15T12:31:31.99Z" }, + { url = "https://files.pythonhosted.org/packages/8a/64/a1551ab57fd25d706fa8f6a4929ba832c7271dad9b9c7a3499ec6398b211/fensu_cli-0.31.0-py3-none-win_amd64.whl", hash = "sha256:66e91cfe28414c87e66c9517945bb93ca02c38273f04f4978604a4cd10cbcba0", size = 7752224, upload-time = "2026-11-15T12:31:35.271Z" }, ] [[package]] @@ -4346,7 +4346,7 @@ dev = [ { name = "dbt-snowflake", specifier = "==1.12.0b1" }, { name = "dbt-sqlserver", specifier = ">=1.9.0,<1.11" }, { name = "dlt", extras = ["duckdb", "filesystem", "sql-database"], specifier = ">=1.28.0,<2" }, - { name = "fensu", specifier = ">=0.29.1" }, + { name = "fensu", specifier = ">=0.31.0" }, { name = "ingestr", specifier = ">=1.1.73" }, { name = "jsonschema", specifier = ">=4.23.0" }, { name = "maturin", specifier = ">=1.9,<2" }, From 5956331d8352e9b2a65639c7e06da6199ff3dcae Mon Sep 17 00:00:00 2001 From: Kevin Longe <273747162+kvlonge@users.noreply.github.com> Date: Sun, 15 Nov 2026 13:43:24 +0000 Subject: [PATCH 2/2] build: cap the bindings crate and runtime package at their size after the merged rules change The orchestration and purity rules change merged first and added code to both, so the caps set before it were below their current size. --- fensu.toml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/fensu.toml b/fensu.toml index dacde5f74..fa7d7ca44 100644 --- a/fensu.toml +++ b/fensu.toml @@ -1177,7 +1177,7 @@ max_positional_args = 1 [[targets.python.threshold_overrides]] paths = ["src/sqlbuild/__init__.py"] -thresholds = { max_crate_code_lines = 89427 } +thresholds = { max_crate_code_lines = 89457 } reason = "The runtime package is above the code-line limit; this caps it at its current size until it is split into packages by area. Lower the cap as code moves out." [targets.python.rule_options.XSB074] @@ -1646,7 +1646,7 @@ select = ["FPRS", "XSB072", "XSB073", "XSB075", "XSB076", "XSB077", "XSB078", "X [[targets.rust.threshold_overrides]] paths = ["crates/sqlbuild-python/Cargo.toml"] -thresholds = { max_crate_code_lines = 216783 } +thresholds = { max_crate_code_lines = 217769 } reason = "The Python bindings crate is above the code-line limit; this caps it at its current size until it is split into crates by area. Lower the cap as code moves out." [[targets.rust.threshold_overrides]]