From ab3f262c22691647c95f2da5b48d19e8ba3ae730 Mon Sep 17 00:00:00 2001 From: Johannes Kirschbauer Date: Thu, 23 Oct 2025 10:35:16 +0200 Subject: [PATCH] modules/inventory: use filtered serialization of inventory Opens up inventory for partially non-serializable parts --- pkgs/clan-cli/clan_lib/flake/flake_cache_test.py | 4 ++-- pkgs/clan-cli/clan_lib/persist/inventory_store.py | 8 +++++--- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/pkgs/clan-cli/clan_lib/flake/flake_cache_test.py b/pkgs/clan-cli/clan_lib/flake/flake_cache_test.py index 37d413b4b..45aee8f9f 100644 --- a/pkgs/clan-cli/clan_lib/flake/flake_cache_test.py +++ b/pkgs/clan-cli/clan_lib/flake/flake_cache_test.py @@ -241,9 +241,9 @@ def test_caching_works(flake: ClanFlake) -> None: wraps=my_flake.get_from_nix, ) as tracked_build: assert tracked_build.call_count == 0 - my_flake.select("clanInternals.inventoryClass.inventory.meta") + my_flake.select("clanInternals.inventoryClass.inventorySerialization.meta") assert tracked_build.call_count == 1 - my_flake.select("clanInternals.inventoryClass.inventory.meta") + my_flake.select("clanInternals.inventoryClass.inventorySerialization.meta") assert tracked_build.call_count == 1 diff --git a/pkgs/clan-cli/clan_lib/persist/inventory_store.py b/pkgs/clan-cli/clan_lib/persist/inventory_store.py index 838aefb07..f9553ccfd 100644 --- a/pkgs/clan-cli/clan_lib/persist/inventory_store.py +++ b/pkgs/clan-cli/clan_lib/persist/inventory_store.py @@ -138,7 +138,7 @@ class InventoryStore: @classmethod def default_selectors(cls) -> list[str]: return [ - f"clanInternals.inventoryClass.inventory.{key}" + f"clanInternals.inventoryClass.inventorySerialization.{key}" for key in cls.default_keys() ] @@ -146,7 +146,7 @@ class InventoryStore: """Loads the evaluated inventory. After all merge operations with eventual nix code in buildClan. - Evaluates clanInternals.inventoryClass.inventory with nix. Which is performant. + Evaluates clanInternals.inventoryClass.inventorySerialization with nix. Which is performant. - Contains all clan metadata - Contains all machines @@ -164,7 +164,9 @@ class InventoryStore: def get_readonly_raw(self, keys: set[str]) -> Inventory: attrs = "{" + ",".join(sorted(keys)) + "}" - return self._flake.select(f"clanInternals.inventoryClass.inventory.{attrs}") + return self._flake.select( + f"clanInternals.inventoryClass.inventorySerialization.{attrs}" + ) def _get_persisted(self) -> InventorySnapshot: """Load the inventory FILE from the flake directory