Skip to content

Commit

Permalink
Enforce that imports are under if TYPE_CHECKING if possible (#3236)
Browse files Browse the repository at this point in the history
  • Loading branch information
oprypin committed Jun 3, 2023
1 parent 1363c7c commit 41c6ee2
Show file tree
Hide file tree
Showing 11 changed files with 41 additions and 27 deletions.
2 changes: 1 addition & 1 deletion .flake8
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
[flake8]
max-line-length = 119
extend-ignore = E203
extend-ignore = E203, TC004
8 changes: 5 additions & 3 deletions mkdocs/commands/build.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,19 +4,21 @@
import logging
import os
import time
from typing import Any, Sequence
from typing import TYPE_CHECKING, Any, Sequence
from urllib.parse import urlsplit

import jinja2
from jinja2.exceptions import TemplateNotFound

import mkdocs
from mkdocs import utils
from mkdocs.config.defaults import MkDocsConfig
from mkdocs.exceptions import Abort, BuildError
from mkdocs.structure.files import File, Files, get_files
from mkdocs.structure.nav import Navigation, get_navigation
from mkdocs.structure.pages import Page

if TYPE_CHECKING:
from mkdocs.config.defaults import MkDocsConfig
from mkdocs.structure.pages import Page


class DuplicateFilter:
Expand Down
5 changes: 4 additions & 1 deletion mkdocs/commands/gh_deploy.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,14 +4,17 @@
import os
import re
import subprocess
from typing import TYPE_CHECKING

import ghp_import
from packaging import version

import mkdocs
from mkdocs.config.defaults import MkDocsConfig
from mkdocs.exceptions import Abort

if TYPE_CHECKING:
from mkdocs.config.defaults import MkDocsConfig

log = logging.getLogger(__name__)

default_message = """Deployed {sha} with MkDocs version: {version}"""
Expand Down
5 changes: 4 additions & 1 deletion mkdocs/commands/serve.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,16 +5,19 @@
import shutil
import tempfile
from os.path import isdir, isfile, join
from typing import TYPE_CHECKING
from urllib.parse import urlsplit

import jinja2.exceptions

from mkdocs.commands.build import build
from mkdocs.config import load_config
from mkdocs.config.defaults import MkDocsConfig
from mkdocs.exceptions import Abort
from mkdocs.livereload import LiveReloadServer

if TYPE_CHECKING:
from mkdocs.config.defaults import MkDocsConfig

log = logging.getLogger(__name__)


Expand Down
3 changes: 1 addition & 2 deletions mkdocs/config/config_options.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@
import sys
import traceback
import types
import typing as t
import warnings
from collections import Counter, UserString
from typing import (
Expand Down Expand Up @@ -1036,7 +1035,7 @@ def pre_validation(self, config: Config, key_name: str):
def run_validation(self, value: object) -> Mapping[str, Any]:
paths = self._base_option.validate(value)
self.warnings.extend(self._base_option.warnings)
value = t.cast(List[str], value)
assert isinstance(value, list)

hooks = {}
for name, path in zip(value, paths):
Expand Down
6 changes: 4 additions & 2 deletions mkdocs/contrib/search/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,15 +2,17 @@

import logging
import os
from typing import Any, List
from typing import TYPE_CHECKING, Any, List

from mkdocs import utils
from mkdocs.config import base
from mkdocs.config import config_options as c
from mkdocs.config.defaults import MkDocsConfig
from mkdocs.contrib.search.search_index import SearchIndex
from mkdocs.plugins import BasePlugin

if TYPE_CHECKING:
from mkdocs.config.defaults import MkDocsConfig

log = logging.getLogger(__name__)
base_path = os.path.dirname(os.path.abspath(__file__))

Expand Down
6 changes: 4 additions & 2 deletions mkdocs/contrib/search/search_index.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,11 @@
import re
import subprocess
from html.parser import HTMLParser
from typing import TYPE_CHECKING

from mkdocs.structure.pages import Page
from mkdocs.structure.toc import AnchorLink, TableOfContents
if TYPE_CHECKING:
from mkdocs.structure.pages import Page
from mkdocs.structure.toc import AnchorLink, TableOfContents

try:
from lunr import lunr
Expand Down
17 changes: 9 additions & 8 deletions mkdocs/plugins.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,22 +13,23 @@
else:
from importlib_metadata import EntryPoint, entry_points

if sys.version_info >= (3, 8):
from typing import Literal
else:
from typing_extensions import Literal
if TYPE_CHECKING:
if sys.version_info >= (3, 8):
from typing import Literal
else:
from typing_extensions import Literal

import jinja2.environment

from mkdocs import utils
from mkdocs.config.base import Config, ConfigErrors, ConfigWarnings, LegacyConfig, PlainConfigSchema
from mkdocs.livereload import LiveReloadServer
from mkdocs.structure.files import Files
from mkdocs.structure.nav import Navigation
from mkdocs.structure.pages import Page

if TYPE_CHECKING:
from mkdocs.config.defaults import MkDocsConfig
from mkdocs.livereload import LiveReloadServer
from mkdocs.structure.files import Files
from mkdocs.structure.nav import Navigation
from mkdocs.structure.pages import Page


log = logging.getLogger('mkdocs.plugins')
Expand Down
2 changes: 1 addition & 1 deletion mkdocs/structure/nav.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,12 +4,12 @@
from typing import TYPE_CHECKING, Any, Iterator, Mapping, TypeVar
from urllib.parse import urlsplit

from mkdocs.structure.files import Files
from mkdocs.structure.pages import Page
from mkdocs.utils import nest_paths

if TYPE_CHECKING:
from mkdocs.config.defaults import MkDocsConfig
from mkdocs.structure.files import Files


log = logging.getLogger(__name__)
Expand Down
5 changes: 3 additions & 2 deletions mkdocs/structure/pages.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,20 +8,21 @@
from typing import TYPE_CHECKING, Any, Callable, Mapping, MutableMapping
from urllib.parse import unquote as urlunquote
from urllib.parse import urljoin, urlsplit, urlunsplit
from xml.etree import ElementTree as etree

import markdown
import markdown.extensions
import markdown.postprocessors
import markdown.treeprocessors
from markdown.util import AMP_SUBSTITUTE

from mkdocs.structure.files import File, Files
from mkdocs.structure.toc import get_toc
from mkdocs.utils import get_build_date, get_markdown_title, meta, weak_property

if TYPE_CHECKING:
from xml.etree import ElementTree as etree

from mkdocs.config.defaults import MkDocsConfig
from mkdocs.structure.files import File, Files
from mkdocs.structure.nav import Section
from mkdocs.structure.toc import TableOfContents

Expand Down
9 changes: 5 additions & 4 deletions pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -40,8 +40,8 @@ dependencies = [
"watchdog >=2.0",
"ghp-import >=1.0",
"pyyaml_env_tag >=0.1",
"importlib_metadata >=4.3; python_version < '3.10'",
"typing_extensions >=3.10; python_version < '3.8'",
"importlib-metadata >=4.3; python_version < '3.10'",
"typing-extensions >=3.10; python_version < '3.8'",
"packaging >=20.5",
"mergedeep >=1.3.4",
"colorama >=0.4; platform_system == 'Windows'",
Expand All @@ -59,8 +59,8 @@ min-versions = [
"watchdog ==2.0",
"ghp-import ==1.0",
"pyyaml_env_tag ==0.1",
"importlib_metadata ==4.3; python_version < '3.10'",
"typing_extensions ==3.10; python_version < '3.8'",
"importlib-metadata ==4.3; python_version < '3.10'",
"typing-extensions ==3.10; python_version < '3.8'",
"packaging ==20.5",
"mergedeep ==1.3.4",
"colorama ==0.4; platform_system == 'Windows'",
Expand Down Expand Up @@ -156,6 +156,7 @@ dependencies = [
"black",
"isort",
"flake8",
"flake8-type-checking",
]
[tool.hatch.envs.style.scripts]
lint = [
Expand Down

0 comments on commit 41c6ee2

Please sign in to comment.