summaryrefslogtreecommitdiff
path: root/sphinx/transforms/post_transforms
diff options
context:
space:
mode:
authorTakeshi KOMIYA <i.tkomiya@gmail.com>2019-08-21 00:39:30 +0900
committerTakeshi KOMIYA <i.tkomiya@gmail.com>2019-08-21 01:25:45 +0900
commit823a947bbf2a4bf63558cf0a4ed42056f5da3166 (patch)
treec5a8477ca20e9ce16b78f6645d0d7d15dd8181b9 /sphinx/transforms/post_transforms
parent02c2c5076bb72858d90bfe19bd10e93f258a94a6 (diff)
downloadsphinx-git-823a947bbf2a4bf63558cf0a4ed42056f5da3166.tar.gz
Migrate to py3 style type annotation: sphinx.transforms.post_transforms.images
Diffstat (limited to 'sphinx/transforms/post_transforms')
-rw-r--r--sphinx/transforms/post_transforms/images.py58
1 files changed, 19 insertions, 39 deletions
diff --git a/sphinx/transforms/post_transforms/images.py b/sphinx/transforms/post_transforms/images.py
index 68c0621b0..a8af5dd55 100644
--- a/sphinx/transforms/post_transforms/images.py
+++ b/sphinx/transforms/post_transforms/images.py
@@ -11,9 +11,11 @@
import os
from hashlib import sha1
from math import ceil
+from typing import Any, Dict, List, Tuple
from docutils import nodes
+from sphinx.application import Sphinx
from sphinx.locale import __
from sphinx.transforms import SphinxTransform
from sphinx.util import epoch_to_rfc1123, rfc1123_to_epoch
@@ -21,11 +23,6 @@ from sphinx.util import logging, requests
from sphinx.util.images import guess_mimetype, get_image_extension, parse_data_uri
from sphinx.util.osutil import ensuredir, movefile
-if False:
- # For type annotation
- from typing import Any, Dict, List, Tuple # NOQA
- from sphinx.application import Sphinx # NOQA
-
logger = logging.getLogger(__name__)
@@ -33,31 +30,26 @@ MAX_FILENAME_LEN = 32
class BaseImageConverter(SphinxTransform):
- def apply(self, **kwargsj):
- # type: (Any) -> None
+ def apply(self, **kwargs: Any) -> None:
for node in self.document.traverse(nodes.image):
if self.match(node):
self.handle(node)
- def match(self, node):
- # type: (nodes.image) -> bool
+ def match(self, node: nodes.image) -> bool:
return True
- def handle(self, node):
- # type: (nodes.image) -> None
+ def handle(self, node: nodes.image) -> None:
pass
@property
- def imagedir(self):
- # type: () -> str
+ def imagedir(self) -> str:
return os.path.join(self.app.doctreedir, 'images')
class ImageDownloader(BaseImageConverter):
default_priority = 100
- def match(self, node):
- # type: (nodes.image) -> bool
+ def match(self, node: nodes.image) -> bool:
if self.app.builder.supported_image_types == []:
return False
elif self.app.builder.supported_remote_images:
@@ -65,8 +57,7 @@ class ImageDownloader(BaseImageConverter):
else:
return '://' in node['uri']
- def handle(self, node):
- # type: (nodes.image) -> None
+ def handle(self, node: nodes.image) -> None:
try:
basename = os.path.basename(node['uri'])
if '?' in basename:
@@ -123,8 +114,7 @@ class ImageDownloader(BaseImageConverter):
class DataURIExtractor(BaseImageConverter):
default_priority = 150
- def match(self, node):
- # type: (nodes.image) -> bool
+ def match(self, node: nodes.image) -> bool:
if self.app.builder.supported_remote_images == []:
return False
elif self.app.builder.supported_data_uri_images is True:
@@ -132,8 +122,7 @@ class DataURIExtractor(BaseImageConverter):
else:
return 'data:' in node['uri']
- def handle(self, node):
- # type: (nodes.image) -> None
+ def handle(self, node: nodes.image) -> None:
image = parse_data_uri(node['uri'])
ext = get_image_extension(image.mimetype)
if ext is None:
@@ -155,8 +144,7 @@ class DataURIExtractor(BaseImageConverter):
self.app.env.images.add_file(self.env.docname, path)
-def get_filename_for(filename, mimetype):
- # type: (str, str) -> str
+def get_filename_for(filename: str, mimetype: str) -> str:
basename = os.path.basename(filename)
return os.path.splitext(basename)[0] + get_image_extension(mimetype)
@@ -195,15 +183,13 @@ class ImageConverter(BaseImageConverter):
#: ]
conversion_rules = [] # type: List[Tuple[str, str]]
- def __init__(self, *args, **kwargs):
- # type: (Any, Any) -> None
+ def __init__(self, *args, **kwargs) -> None:
self.available = None # type: bool
# the converter is available or not.
# Will be checked at first conversion
super().__init__(*args, **kwargs)
- def match(self, node):
- # type: (nodes.image) -> bool
+ def match(self, node: nodes.image) -> bool:
if self.available is None:
self.available = self.is_available()
@@ -219,8 +205,7 @@ class ImageConverter(BaseImageConverter):
else:
return False
- def get_conversion_rule(self, node):
- # type: (nodes.image) -> Tuple[str, str]
+ def get_conversion_rule(self, node: nodes.image) -> Tuple[str, str]:
for candidate in self.guess_mimetypes(node):
for supported in self.app.builder.supported_image_types:
rule = (candidate, supported)
@@ -229,13 +214,11 @@ class ImageConverter(BaseImageConverter):
return None
- def is_available(self):
- # type: () -> bool
+ def is_available(self) -> bool:
"""Return the image converter is available or not."""
raise NotImplementedError()
- def guess_mimetypes(self, node):
- # type: (nodes.image) -> List[str]
+ def guess_mimetypes(self, node: nodes.image) -> List[str]:
if '?' in node['candidates']:
return []
elif '*' in node['candidates']:
@@ -244,8 +227,7 @@ class ImageConverter(BaseImageConverter):
else:
return node['candidates'].keys()
- def handle(self, node):
- # type: (nodes.image) -> None
+ def handle(self, node: nodes.image) -> None:
_from, _to = self.get_conversion_rule(node)
if _from in node['candidates']:
@@ -268,8 +250,7 @@ class ImageConverter(BaseImageConverter):
self.env.original_image_uri[destpath] = srcpath
self.env.images.add_file(self.env.docname, destpath)
- def convert(self, _from, _to):
- # type: (str, str) -> bool
+ def convert(self, _from: str, _to: str) -> bool:
"""Convert a image file to expected format.
*_from* is a path for source image file, and *_to* is a path for
@@ -278,8 +259,7 @@ class ImageConverter(BaseImageConverter):
raise NotImplementedError()
-def setup(app):
- # type: (Sphinx) -> Dict[str, Any]
+def setup(app: Sphinx) -> Dict[str, Any]:
app.add_post_transform(ImageDownloader)
app.add_post_transform(DataURIExtractor)