Coverage for src/usaspending/resources/funding_resource.py: 100%

10 statements  

« prev     ^ index     » next       coverage.py v7.10.6, created at 2025-09-03 17:15 -0700

1"""Funding resource implementation.""" 

2 

3from __future__ import annotations 

4from typing import TYPE_CHECKING 

5 

6from .base_resource import BaseResource 

7from ..logging_config import USASpendingLogger 

8 

9if TYPE_CHECKING: 

10 from ..queries.funding_search import FundingSearch 

11 

12logger = USASpendingLogger.get_logger(__name__) 

13 

14 

15class FundingResource(BaseResource): 

16 """Resource for funding-related operations. 

17 

18 Provides access to federal account funding data for awards. 

19 """ 

20 

21 def for_award(self, award_id: str) -> "FundingSearch": 

22 """Create a funding search query for a specific award. 

23 

24 Args: 

25 award_id: Unique award identifier 

26 

27 Returns: 

28 FundingSearch query builder for chaining filters 

29 

30 Example: 

31 >>> funding = client.funding.for_award("CONT_AWD_123") 

32 ... .order_by("fiscal_date", "asc") 

33 ... .limit(50) 

34 >>> for record in funding: 

35 ... print(f"{record.reporting_fiscal_year}-{record.reporting_fiscal_month}: " 

36 ... f"${record.transaction_obligated_amount:,.2f}") 

37 """ 

38 logger.debug(f"Creating funding search for award: {award_id}") 

39 from ..queries.funding_search import FundingSearch 

40 

41 return FundingSearch(self._client).for_award(award_id)