enable bug-bear linting rules
This commit is contained in:
@@ -27,12 +27,14 @@ def set_admin_service(
|
||||
base_url: str,
|
||||
allowed_keys: dict[str, str],
|
||||
instance_name: str = "admin",
|
||||
extra_machines: list[str] = [],
|
||||
extra_machines: list[str] | None = None,
|
||||
) -> None:
|
||||
"""
|
||||
Set the admin service of a clan
|
||||
Every machine is by default part of the admin service via the 'all' tag
|
||||
"""
|
||||
if extra_machines is None:
|
||||
extra_machines = []
|
||||
inventory = load_inventory_eval(base_url)
|
||||
|
||||
if not allowed_keys:
|
||||
|
||||
@@ -55,7 +55,7 @@ def extract_frontmatter(readme_content: str, err_scope: str) -> tuple[Frontmatte
|
||||
f"Error parsing TOML frontmatter: {e}",
|
||||
description=f"Invalid TOML frontmatter. {err_scope}",
|
||||
location="extract_frontmatter",
|
||||
)
|
||||
) from e
|
||||
|
||||
return Frontmatter(**frontmatter_parsed), remaining_content
|
||||
|
||||
@@ -97,12 +97,12 @@ def get_modules(base_path: str) -> dict[str, str]:
|
||||
try:
|
||||
proc = run_no_stdout(cmd)
|
||||
res = proc.stdout.strip()
|
||||
except ClanCmdError:
|
||||
except ClanCmdError as e:
|
||||
raise ClanError(
|
||||
"clanInternals might not have clanModules attributes",
|
||||
location=f"list_modules {base_path}",
|
||||
description="Evaluation failed on clanInternals.clanModules attribute",
|
||||
)
|
||||
) from e
|
||||
modules: dict[str, str] = json.loads(res)
|
||||
return modules
|
||||
|
||||
|
||||
@@ -121,11 +121,13 @@ JsonValue = str | float | dict[str, Any] | list[Any] | None
|
||||
|
||||
|
||||
def construct_value(
|
||||
t: type | UnionType, field_value: JsonValue, loc: list[str] = []
|
||||
t: type | UnionType, field_value: JsonValue, loc: list[str] | None = None
|
||||
) -> Any:
|
||||
"""
|
||||
Construct a field value from a type hint and a field value.
|
||||
"""
|
||||
if loc is None:
|
||||
loc = []
|
||||
if t is None and field_value:
|
||||
raise ClanError(f"Expected None but got: {field_value}", location=f"{loc}")
|
||||
|
||||
@@ -203,11 +205,15 @@ def construct_value(
|
||||
raise ClanError(f"Unhandled field type {t} with value {field_value}")
|
||||
|
||||
|
||||
def construct_dataclass(t: type[T], data: dict[str, Any], path: list[str] = []) -> T:
|
||||
def construct_dataclass(
|
||||
t: type[T], data: dict[str, Any], path: list[str] | None = None
|
||||
) -> T:
|
||||
"""
|
||||
type t MUST be a dataclass
|
||||
Dynamically instantiate a data class from a dictionary, handling nested data classes.
|
||||
"""
|
||||
if path is None:
|
||||
path = []
|
||||
if not is_dataclass(t):
|
||||
raise ClanError(f"{t.__name__} is not a dataclass")
|
||||
|
||||
@@ -253,8 +259,10 @@ def construct_dataclass(t: type[T], data: dict[str, Any], path: list[str] = [])
|
||||
|
||||
|
||||
def from_dict(
|
||||
t: type | UnionType, data: dict[str, Any] | Any, path: list[str] = []
|
||||
t: type | UnionType, data: dict[str, Any] | Any, path: list[str] | None = None
|
||||
) -> Any:
|
||||
if path is None:
|
||||
path = []
|
||||
if is_dataclass(t):
|
||||
if not isinstance(data, dict):
|
||||
raise ClanError(f"{data} is not a dict. Expected {t}")
|
||||
|
||||
@@ -30,7 +30,7 @@ def inspect_dataclass_fields(t: type) -> dict[TypeVar, type]:
|
||||
|
||||
type_params = origin.__parameters__
|
||||
# Create a map from type parameters to actual type arguments
|
||||
type_map = dict(zip(type_params, type_args))
|
||||
type_map = dict(zip(type_params, type_args, strict=False))
|
||||
|
||||
return type_map
|
||||
|
||||
@@ -67,7 +67,11 @@ def apply_annotations(schema: dict[str, Any], annotations: list[Any]) -> dict[st
|
||||
return schema
|
||||
|
||||
|
||||
def type_to_dict(t: Any, scope: str = "", type_map: dict[TypeVar, type] = {}) -> dict:
|
||||
def type_to_dict(
|
||||
t: Any, scope: str = "", type_map: dict[TypeVar, type] | None = None
|
||||
) -> dict:
|
||||
if type_map is None:
|
||||
type_map = {}
|
||||
if t is None:
|
||||
return {"type": "null"}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user