Coverage for src/paperap/resources/document_metadata.py: 72%

18 statements  

« prev     ^ index     » next       coverage.py v7.6.12, created at 2025-03-22 16:02 -0400

1""" 

2 

3 

4 

5 

6---------------------------------------------------------------------------- 

7 

8METADATA: 

9 

10File: document_metadata.py 

11 Project: paperap 

12Created: 2025-03-18 

13 Version: 0.0.9 

14Author: Jess Mann 

15Email: jess@jmann.me 

16 Copyright (c) 2025 Jess Mann 

17 

18---------------------------------------------------------------------------- 

19 

20LAST MODIFIED: 

21 

222025-03-18 By Jess Mann 

23 

24""" 

25 

26from __future__ import annotations 

27 

28from typing import Any 

29 

30from typing_extensions import TypeVar 

31 

32from paperap.const import URLS 

33from paperap.exceptions import APIError, BadResponseError, ResourceNotFoundError 

34from paperap.models.document.metadata import DocumentMetadata, DocumentMetadataQuerySet 

35from paperap.resources.base import BaseResource, StandardResource 

36 

37 

38class DocumentMetadataResource(StandardResource[DocumentMetadata, DocumentMetadataQuerySet]): 

39 model_class = DocumentMetadata 

40 queryset_class = DocumentMetadataQuerySet 

41 name: str = "document_metadata" 

42 endpoints = { 

43 # Override the detail endpoint to point to metadata 

44 "detail": URLS.meta, 

45 } 

46 

47 def get_metadata(self, document_id: int) -> DocumentMetadata: 

48 url = self.get_endpoint("detail", pk=document_id) 

49 response = self.client.request("GET", url) 

50 if not response: 

51 raise ResourceNotFoundError(f"Metadata for document {document_id} not found", self.name) 

52 return self.parse_to_model(response)