Coverage for src/lexigram/notification/__init__.py: 100%

22 statements  

« prev     ^ index     » next       coverage.py v7.15.4, created at 2026-08-26 02:26 +0800

1"""lexigram-notification — SMS, push, email, and user inbox with Named DI multi-backend support.""" 

2 

3from __future__ import annotations 

4 

5from typing import TYPE_CHECKING 

6 

7from lexigram.contracts.notification.errors import NotificationError 

8from lexigram.contracts.notification.inbox import InboxMessage, InboxStoreProtocol 

9from lexigram.contracts.notification.protocols import ( 

10 PushChannelProtocol, 

11 SMSChannelProtocol, 

12) 

13from lexigram.contracts.notification.types import PushMessage, SMSMessage 

14from lexigram.notification.backends.push import WebPushChannel 

15from lexigram.notification.config import ( 

16 APNsDriverConfig, 

17 FCMDriverConfig, 

18 InboxConfig, 

19 MailerConfig, 

20 NamedMailerConfig, 

21 NamedPushConfig, 

22 NamedSMSConfig, 

23 NotificationConfig, 

24 SendGridDriverConfig, 

25 SMTPDriverConfig, 

26 TwilioDriverConfig, 

27 WebPushDriverConfig, 

28) 

29from lexigram.notification.constants import __version__ 

30from lexigram.notification.events import ( 

31 EmailBouncedEvent, 

32 EmailSentEvent, 

33 InboxMessageCreatedEvent, 

34 InboxMessageReadEvent, 

35 NotificationFailedEvent, 

36 NotificationSentEvent, 

37) 

38from lexigram.notification.exceptions import ( 

39 APNsNotificationError, 

40 FCMNotificationError, 

41 InboxError, 

42 InboxMessageNotFoundError, 

43 InboxPermissionError, 

44 SendGridMailerError, 

45 SMTPMailerError, 

46 TwilioNotificationError, 

47 WebPushNotificationError, 

48) 

49from lexigram.notification.hooks import ( 

50 NotificationFailedHook, 

51 NotificationSentHook, 

52) 

53from lexigram.notification.inbox.database import DatabaseInboxStore 

54from lexigram.notification.inbox.memory import InMemoryInboxStore 

55from lexigram.notification.inbox.service import InboxService 

56from lexigram.notification.mailer.mailable import Mailable 

57from lexigram.notification.mailer.retrying_mailer import RetryingMailer 

58from lexigram.notification.mailer.sendgrid_mailer import SendGridMailer 

59from lexigram.notification.mailer.smtp_mailer import SMTPMailer 

60from lexigram.notification.module import NotificationModule 

61from lexigram.notification.protocols import ( 

62 InboxStoreProtocol, 

63 MailerProtocol, 

64 PushChannelProtocol, 

65 SMSChannelProtocol, 

66) 

67 

68__all__ = [ 

69 "APNsDriverConfig", 

70 "APNsNotificationError", 

71 "DatabaseInboxStore", 

72 "EmailBouncedEvent", 

73 "EmailSentEvent", 

74 "FCMDriverConfig", 

75 "FCMNotificationError", 

76 "InMemoryInboxStore", 

77 "InboxConfig", 

78 "InboxError", 

79 "InboxMessage", 

80 "InboxMessageCreatedEvent", 

81 "InboxMessageNotFoundError", 

82 "InboxMessageReadEvent", 

83 "InboxPermissionError", 

84 "InboxService", 

85 "InboxStoreProtocol", 

86 "Mailable", 

87 "MailerConfig", 

88 "MailerProtocol", 

89 "NamedMailerConfig", 

90 "NamedPushConfig", 

91 "NamedSMSConfig", 

92 "NotificationConfig", 

93 "NotificationError", 

94 "NotificationFailedEvent", 

95 "NotificationFailedHook", 

96 "NotificationModule", 

97 "NotificationSentEvent", 

98 "NotificationSentHook", 

99 "PushChannelProtocol", 

100 "PushMessage", 

101 "RetryingMailer", 

102 "SMSChannelProtocol", 

103 "SMSMessage", 

104 "SMTPDriverConfig", 

105 "SMTPMailer", 

106 "SMTPMailerError", 

107 "SendGridMailer", 

108 "SendGridMailerError", 

109 "TwilioDriverConfig", 

110 "TwilioNotificationError", 

111 "WebPushChannel", 

112 "WebPushDriverConfig", 

113 "WebPushNotificationError", 

114 "__version__", 

115]