Skip to content

Commit

Permalink
Add mypy to CI pipeline and begin typing modules (#435)
Browse files Browse the repository at this point in the history
* Add mypy to CI pipeline and begin typing effort
* Make some hard options false to begin with something

Co-authored-by: Pierre Sassoulas <[email protected]>
  • Loading branch information
gnikonorov and Pierre-Sassoulas authored Nov 20, 2024
1 parent 9aa1b99 commit c2181e4
Show file tree
Hide file tree
Showing 5 changed files with 55 additions and 13 deletions.
8 changes: 7 additions & 1 deletion .pre-commit-config.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,13 @@ repos:
- [email protected]
- [email protected]
args: ["--fix"]

- repo: https://github.com/pre-commit/mirrors-mypy
rev: v1.13.0
hooks:
- id: mypy
files: ^(src/pytest_html|testing)
additional_dependencies:
- types-setuptools
- repo: local
hooks:
- id: rst
Expand Down
17 changes: 17 additions & 0 deletions pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -98,3 +98,20 @@ version-file = "src/pytest_html/__version.py"

[tool.hatch.build.hooks.custom]
path = "scripts/npm.py"

[tool.mypy]
check_untyped_defs = false # TODO
disallow_any_generics = true
disallow_incomplete_defs = true
disallow_untyped_calls = true
disallow_untyped_decorators = true
disallow_untyped_defs = false # TODO
ignore_missing_imports = true
no_implicit_optional = true
no_implicit_reexport = true
show_error_codes = true
strict_equality = true
warn_redundant_casts = true
warn_return_any = true
warn_unreachable = true
warn_unused_configs = true
2 changes: 1 addition & 1 deletion src/pytest_html/__init__.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
try:
from . import __version
from . import __version # type: ignore

__version__ = __version.version
except ImportError:
Expand Down
40 changes: 29 additions & 11 deletions src/pytest_html/extras.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
from typing import Dict
from typing import Optional

FORMAT_HTML = "html"
FORMAT_IMAGE = "image"
Expand All @@ -10,7 +12,13 @@
FORMAT_VIDEO = "video"


def extra(content, format_type, name=None, mime_type=None, extension=None):
def extra(
content: str,
format_type: str,
name: Optional[str] = None,
mime_type: Optional[str] = None,
extension: Optional[str] = None,
) -> Dict[str, Optional[str]]:
return {
"name": name,
"format_type": format_type,
Expand All @@ -20,41 +28,51 @@ def extra(content, format_type, name=None, mime_type=None, extension=None):
}


def html(content):
def html(content: str) -> Dict[str, Optional[str]]:
return extra(content, FORMAT_HTML)


def image(content, name="Image", mime_type="image/png", extension="png"):
def image(
content: str,
name: str = "Image",
mime_type: str = "image/png",
extension: str = "png",
) -> Dict[str, Optional[str]]:
return extra(content, FORMAT_IMAGE, name, mime_type, extension)


def png(content, name="Image"):
def png(content: str, name: str = "Image") -> Dict[str, Optional[str]]:
return image(content, name, mime_type="image/png", extension="png")


def jpg(content, name="Image"):
def jpg(content: str, name: str = "Image") -> Dict[str, Optional[str]]:
return image(content, name, mime_type="image/jpeg", extension="jpg")


def svg(content, name="Image"):
def svg(content: str, name: str = "Image") -> Dict[str, Optional[str]]:
return image(content, name, mime_type="image/svg+xml", extension="svg")


def json(content, name="JSON"):
def json(content: str, name: str = "JSON") -> Dict[str, Optional[str]]:
return extra(content, FORMAT_JSON, name, "application/json", "json")


def text(content, name="Text"):
def text(content: str, name: str = "Text") -> Dict[str, Optional[str]]:
return extra(content, FORMAT_TEXT, name, "text/plain", "txt")


def url(content, name="URL"):
def url(content: str, name: str = "URL") -> Dict[str, Optional[str]]:
return extra(content, FORMAT_URL, name)


def video(content, name="Video", mime_type="video/mp4", extension="mp4"):
def video(
content: str,
name: str = "Video",
mime_type: str = "video/mp4",
extension: str = "mp4",
) -> Dict[str, Optional[str]]:
return extra(content, FORMAT_VIDEO, name, mime_type, extension)


def mp4(content, name="Video"):
def mp4(content: str, name: str = "Video") -> Dict[str, Optional[str]]:
return video(content, name)
1 change: 1 addition & 0 deletions testing/legacy_test_pytest_html.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
# type: ignore
import json
import os
import random
Expand Down

0 comments on commit c2181e4

Please sign in to comment.