|
6 | 6 | from urllib.parse import urlparse, urlunparse |
7 | 7 | from mailbits import ContentType |
8 | 8 | import requests |
| 9 | +from .enums import ProjectStatus |
9 | 10 | from .errors import UnparsableFilenameError, UnsupportedContentTypeError |
10 | 11 | from .filenames import parse_filename |
11 | 12 | from .html import Link, RepositoryPage |
@@ -277,6 +278,16 @@ class ProjectPage: |
277 | 278 | #: __ https://peps.python.org/pep-0708/#alternate-locations-metadata |
278 | 279 | alternate_locations: list[str] = field(default_factory=list) |
279 | 280 |
|
| 281 | + #: .. versionadded:: 1.7.0 |
| 282 | + #: |
| 283 | + #: Project status marker, or `None` if not specified. See :pep:`792`. |
| 284 | + status: ProjectStatus | None = None |
| 285 | + |
| 286 | + #: .. versionadded:: 1.7.0 |
| 287 | + #: |
| 288 | + #: Freeform text contextualizing `status`, or `None` if not specified |
| 289 | + status_reason: str | None = None |
| 290 | + |
280 | 291 | @classmethod |
281 | 292 | def from_html( |
282 | 293 | cls, |
@@ -317,6 +328,8 @@ def from_html( |
317 | 328 | versions=None, |
318 | 329 | tracks=page.tracks, |
319 | 330 | alternate_locations=page.alternate_locations, |
| 331 | + status=page.status, |
| 332 | + status_reason=page.status_reason, |
320 | 333 | ) |
321 | 334 |
|
322 | 335 | @classmethod |
@@ -352,6 +365,8 @@ def from_json_data(cls, data: Any, base_url: Optional[str] = None) -> ProjectPag |
352 | 365 | versions=project.versions, |
353 | 366 | tracks=project.meta.tracks, |
354 | 367 | alternate_locations=project.alternate_locations, |
| 368 | + status=project.project_status.status, |
| 369 | + status_reason=project.project_status.reason, |
355 | 370 | ) |
356 | 371 |
|
357 | 372 | @classmethod |
|
0 commit comments