fix(acms): convert ContextPolicyConfig and ViewPolicyConfiguration to Pydantic BaseModel
CI / load-versions (pull_request) Successful in 18s
CI / push-validation (pull_request) Successful in 29s
CI / lint (pull_request) Successful in 43s
CI / typecheck (pull_request) Successful in 1m3s
CI / security (pull_request) Successful in 1m8s
CI / quality (pull_request) Successful in 1m0s
CI / build (pull_request) Successful in 43s
CI / helm (pull_request) Successful in 42s
CI / unit_tests (pull_request) Successful in 5m19s
CI / integration_tests (pull_request) Successful in 8m42s
CI / docker (pull_request) Successful in 1m45s
CI / coverage (pull_request) Failing after 21m52s
CI / status-check (pull_request) Has been cancelled
CI / load-versions (pull_request) Successful in 18s
CI / push-validation (pull_request) Successful in 29s
CI / lint (pull_request) Successful in 43s
CI / typecheck (pull_request) Successful in 1m3s
CI / security (pull_request) Successful in 1m8s
CI / quality (pull_request) Successful in 1m0s
CI / build (pull_request) Successful in 43s
CI / helm (pull_request) Successful in 42s
CI / unit_tests (pull_request) Successful in 5m19s
CI / integration_tests (pull_request) Successful in 8m42s
CI / docker (pull_request) Successful in 1m45s
CI / coverage (pull_request) Failing after 21m52s
CI / status-check (pull_request) Has been cancelled
The two dataclasses used @dataclass decorator without importing it from dataclasses, causing a NameError on import. This also violated the architecture invariant that requires all dataclasses to use Pydantic BaseModel instead of @dataclass. Replace @dataclass with BaseModel inheritance and field(default_factory=...) with Field(default_factory=...) which was already imported from pydantic.
This commit is contained in:
@@ -8,15 +8,14 @@ with scope rules, priority weights, and budget overrides.
|
||||
from __future__ import annotations
|
||||
|
||||
import tomllib
|
||||
from dataclasses import dataclass, field
|
||||
from pathlib import Path
|
||||
from typing import Any, ClassVar
|
||||
|
||||
import yaml
|
||||
from pydantic import BaseModel, Field
|
||||
|
||||
|
||||
@dataclass
|
||||
class PolicyScope:
|
||||
class PolicyScope(BaseModel):
|
||||
"""Represents a scope rule for context policy application."""
|
||||
|
||||
name: str
|
||||
@@ -45,8 +44,7 @@ class PolicyScope:
|
||||
return context_value in scope_values
|
||||
|
||||
|
||||
@dataclass
|
||||
class ContextPolicyConfig:
|
||||
class ContextPolicyConfig(BaseModel):
|
||||
"""Configuration for a context policy."""
|
||||
|
||||
name: str
|
||||
@@ -55,7 +53,7 @@ class ContextPolicyConfig:
|
||||
description: str | None = None
|
||||
"""Description of the policy."""
|
||||
|
||||
scopes: list[PolicyScope] = field(default_factory=list)
|
||||
scopes: list[PolicyScope] = Field(default_factory=list)
|
||||
"""List of scope rules for this policy."""
|
||||
|
||||
priority_weight: float = 1.0
|
||||
@@ -67,18 +65,17 @@ class ContextPolicyConfig:
|
||||
enabled: bool = True
|
||||
"""Whether this policy is enabled."""
|
||||
|
||||
metadata: dict[str, Any] = field(default_factory=dict)
|
||||
metadata: dict[str, Any] = Field(default_factory=dict)
|
||||
"""Additional metadata for the policy."""
|
||||
|
||||
|
||||
@dataclass
|
||||
class ViewPolicyConfiguration:
|
||||
class ViewPolicyConfiguration(BaseModel):
|
||||
"""Configuration for policies applied to a specific view."""
|
||||
|
||||
view_name: str
|
||||
"""Name of the view."""
|
||||
|
||||
policies: list[ContextPolicyConfig] = field(default_factory=list)
|
||||
policies: list[ContextPolicyConfig] = Field(default_factory=list)
|
||||
"""List of policies for this view."""
|
||||
|
||||
default_priority_weight: float = 1.0
|
||||
@@ -87,7 +84,7 @@ class ViewPolicyConfiguration:
|
||||
default_budget: int | None = None
|
||||
"""Default budget for this view."""
|
||||
|
||||
metadata: dict[str, Any] = field(default_factory=dict)
|
||||
metadata: dict[str, Any] = Field(default_factory=dict)
|
||||
"""Additional metadata for the view."""
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user