Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 7 additions & 4 deletions properdocs/config/config_options.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
from __future__ import annotations

import functools
import importlib.util
import ipaddress
import logging
import os
Expand Down Expand Up @@ -1172,6 +1173,7 @@ def __init__(self, plugins_key: str) -> None:
super().__init__()
self.default = []
self.plugins_key = plugins_key
self._loaded_hooks: dict[tuple[str, str], types.ModuleType] = {}

def pre_validation(self, config: Config, key_name: str):
self._base_option = ListOfItems(File(exists=True))
Expand All @@ -1183,13 +1185,13 @@ def run_validation(self, value: object) -> Mapping[str, Any]:
assert isinstance(value, list)

hooks = {}
for name, path in zip(value, paths):
for name, path in zip(value, paths, strict=True):
hooks[name] = self._load_hook(name, path)
return hooks

@functools.cache
def _load_hook(self, name, path):
import importlib.util
def _load_hook(self, name: str, path: str) -> types.ModuleType:
if loaded_hook := self._loaded_hooks.get((name, path)):
return loaded_hook

spec = importlib.util.spec_from_file_location(name, path)
if spec is None:
Expand All @@ -1206,6 +1208,7 @@ def _load_hook(self, name, path):
finally:
sys.path[:] = old_sys_path

self._loaded_hooks[name, path] = module
return module

def post_validation(self, config: Config, key_name: str):
Expand Down
2 changes: 1 addition & 1 deletion pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -180,7 +180,7 @@ select = [
"F", "E", "W", "I", "UP", "YTT", "ASYNC", "C4", "DTZ", "T10", "FA", "ISC", "PIE", "T20", "RSE",
"N803", "N804", "N805", "N806", "N807", "N815", "N999",
"S201", "S202", "S303", "S304", "S305", "S306", "S602", "S604", "S605", "S612",
"B002", "B003", "B004", "B005", "B008", "B009", "B010", "B011", "B012", "B013", "B014", "B015", "B016", "B017", "B018", "B020", "B021", "B022", "B023", "B025", "B026", "B029", "B030", "B031", "B032", "B033", "B034", "B035", "B039", "B909",
"B002", "B003", "B004", "B005", "B008", "B009", "B010", "B011", "B012", "B013", "B014", "B015", "B016", "B017", "B018", "B019", "B020", "B021", "B022", "B023", "B025", "B026", "B029", "B030", "B031", "B032", "B033", "B034", "B035", "B039", "B909",
"COM818",
"D200", "D201", "D202", "D204", "D207", "D208", "D209", "D210", "D211", "D213", "D214", "D300", "D301", "D400", "D402", "D403", "D405", "D412", "D414", "D415", "D416", "D417", "D419",
"LOG001", "LOG007", "LOG009", "LOG015",
Expand Down
Loading