| Total Complexity | 1 |
| Total Lines | 30 |
| Duplicated Lines | 0 % |
| Changes | 0 | ||
| 1 | from typing import Optional |
||
| 2 | |||
| 3 | from ..protocol import Subject, SubjectHandler |
||
| 4 | from .rx_subject_replay import rx_subject_replay |
||
| 5 | |||
| 6 | __all__ = ["rx_subject_behavior"] |
||
| 7 | |||
| 8 | |||
| 9 | def rx_subject_behavior(subject_handler: Optional[SubjectHandler] = None) -> Subject: |
||
| 10 | """Create a behavior subject. |
||
| 11 | |||
| 12 | One of the variants of Subjects is the BehaviorSubject, which has a notion |
||
| 13 | of "the current value". |
||
| 14 | It stores the latest value emitted to its consumers, and whenever |
||
| 15 | a new Observer subscribes, it will immediately receive the "current value" |
||
| 16 | from the BehaviorSubject. |
||
| 17 | |||
| 18 | BehaviorSubjects are useful for representing "values over time". |
||
| 19 | For instance, an event stream of birthdays is a Subject, |
||
| 20 | but the stream of a person's age would be a BehaviorSubject. |
||
| 21 | |||
| 22 | Args: |
||
| 23 | subject_handler (Optional[SubjectHandler]): optional suject handler callback |
||
| 24 | |||
| 25 | Returns: |
||
| 26 | (Subject): the subject |
||
| 27 | |||
| 28 | """ |
||
| 29 | return rx_subject_replay(buffer_size=1, subject_handler=subject_handler) |
||
| 30 |