• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

abravalheri / validate-pyproject / 5226968556240896

pending completion
5226968556240896

push

cirrus-ci

GitHub
Typo: validate-project => validate-pyproject (#78)

Source File
Press 'n' to go to next uncovered line, 'b' for previous

100.0
/src/validate_pyproject/extra_validations.py
1
"""The purpose of this module is implement PEP 621 validations that are
2
difficult to express as a JSON Schema (or that are not supported by the current
3
JSON Schema library).
4
"""
5

6
from typing import Mapping, TypeVar
8✔
7

8
from .error_reporting import ValidationError
8✔
9

10
T = TypeVar("T", bound=Mapping)
8✔
11

12

13
class RedefiningStaticFieldAsDynamic(ValidationError):
8✔
14
    """According to PEP 621:
15

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

20

21
def validate_project_dynamic(pyproject: T) -> T:
8✔
22
    project_table = pyproject.get("project", {})
8✔
23
    dynamic = project_table.get("dynamic", [])
8✔
24

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

33
    return pyproject
8✔
34

35

36
EXTRA_VALIDATIONS = (validate_project_dynamic,)
8✔
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2025 Coveralls, Inc