| Viewing file:  extra_validations.py (1.13 KB)      -rw-r--r-- Select action/file-type:
 
  (+) |  (+) |  (+) | Code (+) | Session (+) |  (+) | SDB (+) |  (+) |  (+) |  (+) |  (+) |  (+) | 
 
"""The purpose of this module is implement PEP 621 validations that aredifficult 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,)
 
 |