Coverage for polar/benefit/strategies/license_keys/schemas.py: 100%

22 statements  

« prev     ^ index     » next       coverage.py v7.15.2, created at 2026-10-07 12:42 +0000

1from typing import Literal 

2 

3from pydantic import Field 

4 

5from polar.kit.schemas import EmptyStrToNone, Schema 

6from polar.models.benefit import BenefitType 

7 

8from ..base.schemas import ( 

9 BenefitBase, 

10 BenefitCreateBase, 

11 BenefitSubscriberBase, 

12 BenefitUpdateBase, 

13) 

14 

15 

16class BenefitLicenseKeyExpirationProperties(Schema): 

17 ttl: int = Field(gt=0) 

18 timeframe: Literal["year", "month", "day"] 

19 

20 

21class BenefitLicenseKeyActivationCreateProperties(Schema): 

22 limit: int = Field(gt=0, le=50) 

23 enable_customer_admin: bool 

24 

25 

26class BenefitLicenseKeyActivationProperties(Schema): 

27 limit: int 

28 enable_customer_admin: bool 

29 

30 

31class BenefitLicenseKeysCreateProperties(Schema): 

32 prefix: EmptyStrToNone | None = None 

33 expires: BenefitLicenseKeyExpirationProperties | None = None 

34 activations: BenefitLicenseKeyActivationCreateProperties | None = None 

35 limit_usage: int | None = Field(gt=0, default=None) 

36 

37 

38class BenefitLicenseKeysProperties(Schema): 

39 prefix: str | None 

40 expires: BenefitLicenseKeyExpirationProperties | None 

41 activations: BenefitLicenseKeyActivationProperties | None 

42 limit_usage: int | None 

43 

44 

45class BenefitLicenseKeysSubscriberProperties(Schema): 

46 prefix: str | None 

47 expires: BenefitLicenseKeyExpirationProperties | None 

48 activations: BenefitLicenseKeyActivationProperties | None 

49 limit_usage: int | None 

50 

51 

52class BenefitLicenseKeysCreate(BenefitCreateBase): 

53 type: Literal[BenefitType.license_keys] 

54 properties: BenefitLicenseKeysCreateProperties 

55 

56 

57class BenefitLicenseKeysUpdate(BenefitUpdateBase): 

58 type: Literal[BenefitType.license_keys] 

59 properties: BenefitLicenseKeysCreateProperties | None = None 

60 

61 

62class BenefitLicenseKeys(BenefitBase): 

63 type: Literal[BenefitType.license_keys] 

64 properties: BenefitLicenseKeysProperties 

65 

66 

67class BenefitLicenseKeysSubscriber(BenefitSubscriberBase): 

68 type: Literal[BenefitType.license_keys] 

69 properties: BenefitLicenseKeysSubscriberProperties