diff --git a/pyhelm3/models.py b/pyhelm3/models.py index d03fdc6..2142eed 100644 --- a/pyhelm3/models.py +++ b/pyhelm3/models.py @@ -14,6 +14,7 @@ FilePath, AnyUrl as PydanticAnyUrl, HttpUrl as PydanticHttpUrl, + UrlConstraints, constr, field_validator ) @@ -61,10 +62,13 @@ def validate_str_as(validate_type): adapter = TypeAdapter(validate_type) return lambda v: str(adapter.validate_python(v)) +class PydanticDataUrl(PydanticAnyUrl): + _constraints = UrlConstraints(allowed_schemes=["data"]) #: Annotated string types for URLs AnyUrl = t.Annotated[str, AfterValidator(validate_str_as(PydanticAnyUrl))] HttpUrl = t.Annotated[str, AfterValidator(validate_str_as(PydanticHttpUrl))] +DataUrl = t.Annotated[str, AfterValidator(validate_str_as(PydanticDataUrl))] class ChartDependency(BaseModel): @@ -173,7 +177,7 @@ class ChartMetadata(BaseModel): default_factory = list, description = "List of maintainers for the chart." ) - icon: t.Optional[HttpUrl] = Field( + icon: t.Optional[HttpUrl | DataUrl] = Field( None, description = "URL to an SVG or PNG image to be used as an icon." )