PHP 8.2.30
Preview: extra_validations.py Size: 1.13 KB
//opt/alt/python311/lib/python3.11/site-packages/setuptools/config/_validate_pyproject/extra_validations.py

"""The purpose of this module is implement PEP 621 validations that are
difficult to express as a JSON Schema (or that are not supported by the current
JSON Schema library).
"""

from typing import Mapping, TypeVar

from .error_reporting import ValidationError

T = TypeVar("T", bound=Mapping)


class RedefiningStaticFieldAsDynamic(ValidationError):
    """According to PEP 621:

    Build back-ends MUST raise an error if the metadata specifies a field
    statically as well as being listed in dynamic.
    """


def validate_project_dynamic(pyproject: T) -> T:
    project_table = pyproject.get("project", {})
    dynamic = project_table.get("dynamic", [])

    for field in dynamic:
        if field in project_table:
            msg = f"You cannot provide a value for `project.{field}` and "
            msg += "list it under `project.dynamic` at the same time"
            name = f"data.project.{field}"
            value = {field: project_table[field], "...": " # ...", "dynamic": dynamic}
            raise RedefiningStaticFieldAsDynamic(msg, value, name, rule="PEP 621")

    return pyproject


EXTRA_VALIDATIONS = (validate_project_dynamic,)

Directory Contents

Dirs: 1 × Files: 6

Name Size Perms Modified Actions
- drwxr-xr-x 2024-03-03 22:48:42
Edit Download
11.00 KB lrw-r--r-- 2023-11-13 22:03:24
Edit Download
1.13 KB lrw-r--r-- 2023-11-13 22:03:24
Edit Download
1.57 KB lrw-r--r-- 2023-11-13 22:03:24
Edit Download
263.57 KB lrw-r--r-- 2023-11-13 22:03:24
Edit Download
8.53 KB lrw-r--r-- 2023-11-13 22:03:24
Edit Download
1.01 KB lrw-r--r-- 2023-11-13 22:03:24
Edit Download

If ZipArchive is unavailable, a .tar will be created (no compression).