activity.utils ============== .. py:module:: activity.utils Attributes ---------- .. autoapisummary:: activity.utils.SupportsRichComparisonT activity.utils.INTERNAL_IMAGE_EX activity.utils.NUM_RANGE_RE activity.utils.DATE_RANGE_RE activity.utils.MUNICIPALITY_EX activity.utils.GROUP_CODE_EX Functions --------- .. autoapisummary:: activity.utils.random_group_code activity.utils.is_valid_group_code activity.utils.overlaps activity.utils.merge_ranges activity.utils.num_range_decode activity.utils.num_range_encode activity.utils.date_range_decode activity.utils.date_range_encode activity.utils.generate_xml activity.utils.dates_overlap activity.utils.is_internal_image activity.utils.extract_thumbnail activity.utils.extract_municipality Module Contents --------------- .. py:data:: SupportsRichComparisonT .. py:data:: INTERNAL_IMAGE_EX .. py:data:: NUM_RANGE_RE .. py:data:: DATE_RANGE_RE .. py:data:: MUNICIPALITY_EX .. py:data:: GROUP_CODE_EX .. py:function:: random_group_code() -> str .. py:function:: is_valid_group_code(code: str) -> bool .. py:function:: overlaps(range_a: RangeLike[SupportsRichComparisonT], range_b: RangeLike[SupportsRichComparisonT]) -> bool .. py:function:: merge_ranges(ranges: collections.abc.Iterable[RangeTuple[SupportsRichComparisonT]]) -> list[RangeTuple[SupportsRichComparisonT]] Merges the given list of ranges into a list of ranges including only exclusive ranges. The ranges are turned into tuples to make them hashable. .. py:function:: num_range_decode(s: object) -> tuple[int, int] | None .. py:function:: num_range_encode(a: RangeLike[int]) -> str .. py:function:: date_range_decode(s: object) -> tuple[datetime.date, datetime.date] | None .. py:function:: date_range_encode(d: RangeLike[datetime.date]) -> str .. py:function:: generate_xml(payments: collections.abc.Iterable[dict[str, Any]]) -> str Creates an xml for import through ISO20022. Used for testing only. .. py:function:: dates_overlap(a: collections.abc.Iterable[RangeTuple[datetime.datetime]], b: collections.abc.Iterable[RangeTuple[datetime.datetime]], minutes_between: float = 0, cut_end: bool = True, alignment: Literal['day', 'week', 'month'] | None = None) -> bool Returns true if any time tuple in the list of tuples in a overlaps with a time tuple in b. .. py:function:: is_internal_image(url: str | None) -> TypeGuard[str] .. py:function:: extract_thumbnail(text: str | None) -> str | None .. py:function:: extract_municipality(text: str | None) -> tuple[int, str] | None