from dataclasses import dataclass, field from pathlib import Path from typing import Any, Dict, Optional @dataclass class ExtractRule: type: str value: str @dataclass class ServiceConfig: name: str base_url: str current_version_url: Optional[str] current_version_extract: Optional[ExtractRule] current_version_headers: Optional[Dict[str, str]] upstream_latest_version_url: Optional[str] upstream_latest_extract: Optional[ExtractRule] upstream_latest_headers: Optional[Dict[str, str]] notes: Optional[str] login: Optional[Dict[str, Any]] login_socket: Optional[Dict[str, Any]] service_dir: Optional[Path] = field(default=None)