Coverage for src / ezcompiler / utils / validators / format_validators.py: 39.13%
17 statements
« prev ^ index » next coverage.py v7.13.5, created at 2026-03-27 06:49 +0000
« prev ^ index » next coverage.py v7.13.5, created at 2026-03-27 06:49 +0000
1# ///////////////////////////////////////////////////////////////
2# FORMAT_VALIDATORS - Format validation utilities
3# Project: ezcompiler
4# ///////////////////////////////////////////////////////////////
6"""
7Format validators - Validation utilities for common data formats.
9This module provides validation functions for common data formats like
10version strings, email addresses, and URLs.
11"""
13from __future__ import annotations
15# ///////////////////////////////////////////////////////////////
16# IMPORTS
17# ///////////////////////////////////////////////////////////////
18# Standard library imports
19import re
21# ///////////////////////////////////////////////////////////////
22# FUNCTIONS
23# ///////////////////////////////////////////////////////////////
26def validate_version_string(version: str) -> bool:
27 """
28 Validate a version string format.
30 Args:
31 version: Version string to validate
33 Returns:
34 bool: True if version format is valid (e.g., 1.0.0), False otherwise
36 Note:
37 Accepts common version formats: x.y.z, x.y.z.w, x.y, etc.
39 Example:
40 >>> validate_version_string("1.0.0")
41 True
42 >>> validate_version_string("1.0")
43 True
44 >>> validate_version_string("invalid")
45 False
46 """
47 if not isinstance(version, str): 47 ↛ 48line 47 didn't jump to line 48 because the condition on line 47 was never true
48 return False
50 # Check for common version formats: x.y.z, x.y.z.w, x.y, etc.
51 version_pattern = r"^\d+(\.\d+)*$"
52 return bool(re.match(version_pattern, version))
55def validate_email(email: str) -> bool:
56 """
57 Validate an email address format.
59 Args:
60 email: Email address to validate
62 Returns:
63 bool: True if email format is valid, False otherwise
65 Note:
66 Uses basic regex pattern validation. Not a strict RFC 5322 validator.
68 Example:
69 >>> validate_email("user@example.com")
70 True
71 >>> validate_email("invalid-email")
72 False
73 """
74 if not isinstance(email, str):
75 return False
77 # Basic email validation pattern
78 email_pattern = r"^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$"
79 return bool(re.match(email_pattern, email))
82def validate_url(url: str) -> bool:
83 """
84 Validate a URL format.
86 Args:
87 url: URL to validate
89 Returns:
90 bool: True if URL format is valid, False otherwise
92 Note:
93 Validates basic HTTP/HTTPS URL structure.
95 Example:
96 >>> validate_url("https://example.com")
97 True
98 >>> validate_url("http://example.com/path")
99 True
100 >>> validate_url("invalid-url")
101 False
102 """
103 if not isinstance(url, str):
104 return False
106 # Basic URL validation pattern
107 url_pattern = r"^https?://[^\s/$.?#].[^\s]*$"
108 return bool(re.match(url_pattern, url))