site-intelligence-studio / src /upload_limits.py
Eishaan's picture
Add KML terrain and soil analysis layers
2f91d7e
Raw
History Blame Contribute Delete
891 Bytes
from __future__ import annotations
from pathlib import Path
from typing import Iterable
MAX_DXF_MB = 10
MAX_GEOJSON_MB = 5
MAX_KML_MB = 8
MAX_PDF_REFERENCE_MB = 15
MAX_BOARD_PREVIEW_MB = 12
def validate_upload(
path: str | Path,
*,
allowed_suffixes: Iterable[str],
max_mb: int,
label: str,
) -> Path:
source = Path(path)
if not source.exists() or not source.is_file():
raise ValueError(f"{label} upload is missing or could not be read.")
suffixes = {suffix.lower() for suffix in allowed_suffixes}
if source.suffix.lower() not in suffixes:
allowed = ", ".join(sorted(suffixes))
raise ValueError(f"{label} must be one of: {allowed}.")
size_mb = source.stat().st_size / (1024 * 1024)
if size_mb > max_mb:
raise ValueError(f"{label} is {size_mb:.1f} MB. Limit is {max_mb} MB for this Space.")
return source