77# standard library
88import logging
99import ssl
10- import sys
10+ from collections . abc import Iterable
1111from datetime import date , datetime
1212from email .utils import format_datetime
1313from mimetypes import guess_type
1414from pathlib import Path
15- from typing import Any , Iterable , Optional , Tuple , Union
15+ from typing import Any
1616from urllib import request
1717from urllib .error import HTTPError , URLError
1818from urllib .parse import urlencode , urlparse , urlunparse
3333)
3434
3535# conditional imports
36- if sys .version_info < (3 , 9 ):
37- from mkdocs_rss_plugin .timezoner_pre39 import set_datetime_zoneinfo
38- else :
39- from mkdocs_rss_plugin .timezoner_py39 import set_datetime_zoneinfo
36+ from mkdocs_rss_plugin .timezoner_py39 import set_datetime_zoneinfo
4037
4138# ############################################################################
4239# ########## Globals #############
@@ -58,9 +55,9 @@ def __init__(
5855 self ,
5956 path : str = "." ,
6057 use_git : bool = True ,
61- integration_material_social_cards : Optional [
58+ integration_material_social_cards : None | (
6259 IntegrationMaterialSocialCards
63- ] = None ,
60+ ) = None ,
6461 ):
6562 """Class hosting the plugin logic.
6663
@@ -139,7 +136,7 @@ def build_url(self, base_url: str, path: str, args_dict: dict = None) -> str:
139136 url_parts [4 ] = urlencode (args_dict )
140137 return urlunparse (url_parts )
141138
142- def get_value_from_dot_key (self , data : dict , dot_key : Union [ str , bool ] ) -> Any :
139+ def get_value_from_dot_key (self , data : dict , dot_key : str | bool ) -> Any :
143140 """
144141 Retrieves a value from a dictionary using a dot notation key.
145142
@@ -168,8 +165,8 @@ def get_file_dates(
168165 source_date_update : str = "git" ,
169166 meta_datetime_format : str = "%Y-%m-%d %H:%M" ,
170167 meta_default_timezone : str = "UTC" ,
171- meta_default_time : Optional [ datetime ] = None ,
172- ) -> Tuple [datetime , datetime ]:
168+ meta_default_time : datetime | None = None ,
169+ ) -> tuple [datetime , datetime ]:
173170 """Extract creation and update dates from page metadata (yaml frontmatter) or
174171 git log for given file.
175172
@@ -325,7 +322,7 @@ def get_file_dates(
325322 get_build_datetime (),
326323 )
327324
328- def get_authors_from_meta (self , in_page : Page ) -> Optional [ Tuple [ str ]] :
325+ def get_authors_from_meta (self , in_page : Page ) -> tuple [ str ] | None :
329326 """Returns authors from page meta. It handles 'author' and 'authors' for keys, \
330327 str and iterable as values types.
331328
@@ -508,7 +505,7 @@ def get_description_or_abstract(
508505 )
509506 return ""
510507
511- def get_image (self , in_page : Page , base_url : str ) -> Optional [ Tuple [ str , str , int ]] :
508+ def get_image (self , in_page : Page , base_url : str ) -> tuple [ str , str , int ] | None :
512509 """Get page's image from page meta or social cards and returns properties.
513510
514511 Args:
@@ -610,7 +607,7 @@ def get_remote_image_length(
610607 http_method : str = "HEAD" ,
611608 attempt : int = 0 ,
612609 ssl_context : ssl .SSLContext = None ,
613- ) -> Optional [ int ] :
610+ ) -> int | None :
614611 """Retrieve length for remote images (starting with 'http' \
615612 in meta.image or meta.illustration). \
616613 It tries to perform a HEAD request and get the length from the headers. \
@@ -662,7 +659,7 @@ def get_remote_image_length(
662659 return int (img_length )
663660
664661 @staticmethod
665- def get_site_url (mkdocs_config : Config ) -> Optional [ str ] :
662+ def get_site_url (mkdocs_config : Config ) -> str | None :
666663 """Extract site URL from MkDocs configuration and enforce the behavior to ensure \
667664 returning a str with length > 0 or None. If exists, it adds an ending slash.
668665
@@ -688,7 +685,7 @@ def get_site_url(mkdocs_config: Config) -> Optional[str]:
688685
689686 return site_url
690687
691- def guess_locale (self , mkdocs_config : Config ) -> Optional [ str ] :
688+ def guess_locale (self , mkdocs_config : Config ) -> str | None :
692689 """Extract language code from MkDocs or Theme configuration.
693690
694691 :param mkdocs_config: configuration object
0 commit comments