7
7
# standard library
8
8
import logging
9
9
import ssl
10
- import sys
10
+ from collections . abc import Iterable
11
11
from datetime import date , datetime
12
12
from email .utils import format_datetime
13
13
from mimetypes import guess_type
14
14
from pathlib import Path
15
- from typing import Any , Iterable , Optional , Tuple , Union
15
+ from typing import Any
16
16
from urllib import request
17
17
from urllib .error import HTTPError , URLError
18
18
from urllib .parse import urlencode , urlparse , urlunparse
33
33
)
34
34
35
35
# 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
40
37
41
38
# ############################################################################
42
39
# ########## Globals #############
@@ -58,9 +55,9 @@ def __init__(
58
55
self ,
59
56
path : str = "." ,
60
57
use_git : bool = True ,
61
- integration_material_social_cards : Optional [
58
+ integration_material_social_cards : None | (
62
59
IntegrationMaterialSocialCards
63
- ] = None ,
60
+ ) = None ,
64
61
):
65
62
"""Class hosting the plugin logic.
66
63
@@ -139,7 +136,7 @@ def build_url(self, base_url: str, path: str, args_dict: dict = None) -> str:
139
136
url_parts [4 ] = urlencode (args_dict )
140
137
return urlunparse (url_parts )
141
138
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 :
143
140
"""
144
141
Retrieves a value from a dictionary using a dot notation key.
145
142
@@ -168,8 +165,8 @@ def get_file_dates(
168
165
source_date_update : str = "git" ,
169
166
meta_datetime_format : str = "%Y-%m-%d %H:%M" ,
170
167
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 ]:
173
170
"""Extract creation and update dates from page metadata (yaml frontmatter) or
174
171
git log for given file.
175
172
@@ -325,7 +322,7 @@ def get_file_dates(
325
322
get_build_datetime (),
326
323
)
327
324
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 :
329
326
"""Returns authors from page meta. It handles 'author' and 'authors' for keys, \
330
327
str and iterable as values types.
331
328
@@ -508,7 +505,7 @@ def get_description_or_abstract(
508
505
)
509
506
return ""
510
507
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 :
512
509
"""Get page's image from page meta or social cards and returns properties.
513
510
514
511
Args:
@@ -610,7 +607,7 @@ def get_remote_image_length(
610
607
http_method : str = "HEAD" ,
611
608
attempt : int = 0 ,
612
609
ssl_context : ssl .SSLContext = None ,
613
- ) -> Optional [ int ] :
610
+ ) -> int | None :
614
611
"""Retrieve length for remote images (starting with 'http' \
615
612
in meta.image or meta.illustration). \
616
613
It tries to perform a HEAD request and get the length from the headers. \
@@ -662,7 +659,7 @@ def get_remote_image_length(
662
659
return int (img_length )
663
660
664
661
@staticmethod
665
- def get_site_url (mkdocs_config : Config ) -> Optional [ str ] :
662
+ def get_site_url (mkdocs_config : Config ) -> str | None :
666
663
"""Extract site URL from MkDocs configuration and enforce the behavior to ensure \
667
664
returning a str with length > 0 or None. If exists, it adds an ending slash.
668
665
@@ -688,7 +685,7 @@ def get_site_url(mkdocs_config: Config) -> Optional[str]:
688
685
689
686
return site_url
690
687
691
- def guess_locale (self , mkdocs_config : Config ) -> Optional [ str ] :
688
+ def guess_locale (self , mkdocs_config : Config ) -> str | None :
692
689
"""Extract language code from MkDocs or Theme configuration.
693
690
694
691
:param mkdocs_config: configuration object
0 commit comments