Coverage for polar/checkout/eventstream.py: 84%

23 statements  

« prev     ^ index     » next       coverage.py v7.10.6, created at 2025-12-05 15:52 +0000

1from enum import StrEnum 1a

2from typing import Literal, TypedDict, overload 1a

3 

4from polar.eventstream.service import publish 1a

5from polar.models.checkout import CheckoutStatus 1a

6 

7 

8class CheckoutEvent(StrEnum): 1a

9 updated = "checkout.updated" 1a

10 order_created = "checkout.order_created" 1a

11 subscription_created = "checkout.subscription_created" 1a

12 webhook_event_delivered = "checkout.webhook_event_delivered" 1a

13 

14 

15class CheckoutEventUpdatedPayload(TypedDict): 1a

16 status: CheckoutStatus 1a

17 

18 

19class CheckoutEventWebhookEventDeliveredPayload(TypedDict): 1a

20 status: CheckoutStatus 1a

21 

22 

23@overload 1a

24async def publish_checkout_event( 24 ↛ exitline 24 didn't return from function 'publish_checkout_event' because 1a

25 client_secret: str, 

26 event: Literal[CheckoutEvent.updated], 

27 payload: CheckoutEventUpdatedPayload, 

28) -> None: ... 

29 

30 

31@overload 1a

32async def publish_checkout_event( 32 ↛ exitline 32 didn't return from function 'publish_checkout_event' because 1a

33 client_secret: str, 

34 event: Literal[CheckoutEvent.order_created], 

35) -> None: ... 

36 

37 

38@overload 1a

39async def publish_checkout_event( 39 ↛ exitline 39 didn't return from function 'publish_checkout_event' because 1a

40 client_secret: str, 

41 event: Literal[CheckoutEvent.subscription_created], 

42) -> None: ... 

43 

44 

45@overload 1a

46async def publish_checkout_event( 46 ↛ exitline 46 didn't return from function 'publish_checkout_event' because 1a

47 client_secret: str, 

48 event: Literal[CheckoutEvent.webhook_event_delivered], 

49 payload: CheckoutEventWebhookEventDeliveredPayload, 

50) -> None: ... 

51 

52 

53async def publish_checkout_event( 1a

54 client_secret: str, 

55 event: CheckoutEvent, 

56 payload: CheckoutEventUpdatedPayload 

57 | CheckoutEventWebhookEventDeliveredPayload 

58 | None = None, 

59) -> None: 

60 return await publish( 

61 event, {**payload} if payload else {}, checkout_client_secret=client_secret 

62 )