|
1 | | -"""SuperSTAC Models.""" |
| 1 | +from dataclasses import dataclass, field, asdict |
| 2 | +from typing import Optional, List |
2 | 3 |
|
3 | | -from __future__ import annotations |
4 | 4 |
|
5 | | -from typing import Optional |
6 | | -from urllib.parse import urlparse |
7 | | - |
8 | | -import attr |
9 | | - |
10 | | -from superstac.enums import AuthType |
11 | | - |
12 | | - |
13 | | -@attr.s(auto_attribs=True, kw_only=True) |
| 5 | +@dataclass |
14 | 6 | class AuthInfo: |
15 | | - type: AuthType |
16 | | - token: Optional[str] | None = None |
| 7 | + type: str |
| 8 | + token: Optional[str] = None |
17 | 9 | username: Optional[str] = None |
18 | | - password: Optional[str] | None = None |
19 | | - header_key: Optional[str] | None = None |
| 10 | + password: Optional[str] = None |
| 11 | + header_key: Optional[str] = None |
20 | 12 |
|
21 | 13 |
|
22 | | -@attr.s(auto_attribs=True, kw_only=True) |
| 14 | +@dataclass |
23 | 15 | class CatalogEntry: |
24 | | - """_summary_. |
25 | | -
|
26 | | - Raises: |
27 | | - ValueError: _description_ |
28 | | -
|
29 | | - """ |
30 | | - |
31 | 16 | name: str |
32 | | - url: str = attr.ib(validator=attr.validators.instance_of(str)) |
| 17 | + url: str |
33 | 18 | auth: Optional[AuthInfo] = None |
34 | 19 | is_available: bool = False |
35 | 20 | latency_ms: Optional[float] = None |
36 | | - conforms_to: Optional[list[str]] = None |
37 | | - collections: Optional[list[str]] = None |
38 | | - extensions: Optional[list[str]] = None |
39 | | - |
40 | | - @url.validator |
41 | | - def _validate_url(self, _, value) -> None: |
42 | | - result = urlparse(value) |
43 | | - if not result.scheme.startswith("http"): |
44 | | - msg = "Invalid URL: must start with http or https" |
45 | | - raise ValueError(msg) |
| 21 | + conforms_to: Optional[List[str]] = field(default_factory=list) |
| 22 | + collections: Optional[List[str]] = field(default_factory=list) |
| 23 | + extensions: Optional[List[str]] = field(default_factory=list) |
0 commit comments