Coverage for datacite/validators.py: 100%

12 statements  

« prev     ^ index     » next       coverage.py v7.10.1, created at 2025-07-29 15:38 +0000

1from typing import Any 

2 

3from django.core.exceptions import ValidationError 

4from django.core.validators import MaxValueValidator, MinValueValidator, RegexValidator 

5 

6from datacite.utils import DOI_REGEX 

7 

8DoiValidator = RegexValidator( 

9 regex=DOI_REGEX, 

10 message="Enter a valid DOI.", 

11 code="invalid_doi", 

12) 

13 

14YearValidators = (MinValueValidator(1900), MaxValueValidator(2100)) 

15 

16 

17schemes = ["http", "https", "info"] 

18INVALID_URI = "Invalid URI" 

19 

20 

21def validate_uri(value: Any) -> None: 

22 valid_scheme = any(value.startswith(scheme + ":") for scheme in schemes) 

23 if not valid_scheme: 

24 raise ValidationError(INVALID_URI)