Spaces:
Runtime error
Runtime error
File size: 1,702 Bytes
f3997d4 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 | import re
from typing import List
def validate_email(email: str) -> bool:
"""
Validate email format.
Args:
email: Email string to validate
Returns:
True if valid email format, False otherwise
"""
pattern = r'^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$'
return bool(re.match(pattern, email))
def validate_password(password: str) -> tuple[bool, str]:
"""
Validate password strength.
Args:
password: Password string to validate
Returns:
Tuple of (is_valid, error_message)
"""
if len(password) < 6:
return False, "Password must be at least 6 characters long"
# Bcrypt has a 72-byte limit
if len(password.encode('utf-8')) > 72:
return False, "Password is too long (max 72 bytes)"
return True, ""
def validate_file_type(filename: str, allowed_types: List[str]) -> bool:
"""
Validate file type by extension.
Args:
filename: Name of the file
allowed_types: List of allowed extensions (e.g., ['pdf', 'docx'])
Returns:
True if file type is allowed, False otherwise
"""
if '.' not in filename:
return False
extension = filename.rsplit('.', 1)[1].lower()
return extension in allowed_types
def validate_file_size(file_size: int, max_size_mb: int = 10) -> bool:
"""
Validate file size.
Args:
file_size: File size in bytes
max_size_mb: Maximum allowed size in MB
Returns:
True if file size is within limit, False otherwise
"""
max_size_bytes = max_size_mb * 1024 * 1024
return file_size <= max_size_bytes
|