Skip to content

models

Julia model.

JuliaConfig

Bases: BaseModel

Julia configuration model.

Source code in src/somesy/julia/models.py
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
class JuliaConfig(BaseModel):
    """Julia configuration model."""

    model_config = dict(use_enum_values=True)

    name: Annotated[
        str,
        Field(description="Package name"),
    ]
    version: Annotated[
        str,
        Field(
            pattern=r"^\d+(\.\d+)*((a|b|rc)\d+)?(post\d+)?(dev\d+)?$",
            description="Package version",
        ),
    ]
    uuid: Annotated[str, Field(description="Package UUID")]
    authors: Annotated[Optional[Set[str]], Field(description="Package authors")] = None

    @field_validator("version")
    @classmethod
    def validate_version(cls, v):
        """Validate version using PEP 440."""
        try:
            _ = parse_version(v)
        except ValueError as err:
            raise ValueError("Invalid version") from err
        return v

    @field_validator("authors")
    @classmethod
    def validate_email_format(cls, v):
        """Validate email format."""
        for author in v:
            if (
                not isinstance(author, str)
                or " " not in author
                or not EMailAddress.validate_python(author.split(" ")[-1][1:-1])
            ):
                raise ValueError("Invalid email format")
        return v

    @field_validator("uuid")
    @classmethod
    def validate_uuid(cls, v):
        """Validate uuid field."""
        try:
            _ = uuid.UUID(v)
        except ValueError as err:
            raise ValueError("Invalid UUID") from err
        return v

validate_version classmethod

validate_version(v)

Validate version using PEP 440.

Source code in src/somesy/julia/models.py
37
38
39
40
41
42
43
44
45
@field_validator("version")
@classmethod
def validate_version(cls, v):
    """Validate version using PEP 440."""
    try:
        _ = parse_version(v)
    except ValueError as err:
        raise ValueError("Invalid version") from err
    return v

validate_email_format classmethod

validate_email_format(v)

Validate email format.

Source code in src/somesy/julia/models.py
47
48
49
50
51
52
53
54
55
56
57
58
@field_validator("authors")
@classmethod
def validate_email_format(cls, v):
    """Validate email format."""
    for author in v:
        if (
            not isinstance(author, str)
            or " " not in author
            or not EMailAddress.validate_python(author.split(" ")[-1][1:-1])
        ):
            raise ValueError("Invalid email format")
    return v

validate_uuid classmethod

validate_uuid(v)

Validate uuid field.

Source code in src/somesy/julia/models.py
60
61
62
63
64
65
66
67
68
@field_validator("uuid")
@classmethod
def validate_uuid(cls, v):
    """Validate uuid field."""
    try:
        _ = uuid.UUID(v)
    except ValueError as err:
        raise ValueError("Invalid UUID") from err
    return v