Cached resolution of a platform shorthand name to its metadata.
| 372 | |
| 373 | @dataclass |
| 374 | class PlatformResolution: |
| 375 | """ |
| 376 | Cached resolution of a platform shorthand name to its metadata. |
| 377 | """ |
| 378 | |
| 379 | name: str |
| 380 | repository_url: Optional[str] = None # Kept for backward compatibility |
| 381 | packages_url: Optional[str] = None # Kept for backward compatibility |
| 382 | version: Optional[str] = None |
| 383 | frameworks: list[str] = field(default_factory=lambda: []) |
| 384 | resolved_at: Optional[datetime] = None |
| 385 | ttl_hours: int = 24 |
| 386 | |
| 387 | # Enhanced multi-value fields |
| 388 | enhanced_resolution: Optional[PlatformUrlResolution] = None |
| 389 | |
| 390 | @property |
| 391 | def git_url(self) -> Optional[str]: |
| 392 | """Get git URL from enhanced resolution or fall back to repository_url.""" |
| 393 | if self.enhanced_resolution: |
| 394 | return self.enhanced_resolution.git_url |
| 395 | return ( |
| 396 | self.repository_url |
| 397 | if self.repository_url and self.repository_url.endswith(".git") |
| 398 | else None |
| 399 | ) |
| 400 | |
| 401 | @property |
| 402 | def zip_url(self) -> Optional[str]: |
| 403 | """Get zip URL from enhanced resolution.""" |
| 404 | if self.enhanced_resolution: |
| 405 | return self.enhanced_resolution.zip_url |
| 406 | return ( |
| 407 | self.repository_url |
| 408 | if self.repository_url and self.repository_url.endswith(".zip") |
| 409 | else None |
| 410 | ) |
| 411 | |
| 412 | |
| 413 | @dataclass |
no outgoing calls
no test coverage detected