mirror of
https://github.com/django-components/django-components.git
synced 2025-09-18 03:39:43 +00:00
refactor: more linting and error fixes
This commit is contained in:
parent
53a5804706
commit
486fb236bc
10 changed files with 27 additions and 20 deletions
|
@ -758,20 +758,23 @@ def _map_media_filepaths(media: Type[ComponentMediaInput], map_fn: Callable[[Seq
|
|||
|
||||
|
||||
def _is_media_filepath(filepath: Any) -> bool:
|
||||
# Case callable
|
||||
if callable(filepath):
|
||||
return True
|
||||
|
||||
if (
|
||||
isinstance(filepath, SafeData)
|
||||
or hasattr(filepath, "__html__")
|
||||
or isinstance(filepath, (Path, os.PathLike))
|
||||
or hasattr(filepath, "__fspath__")
|
||||
):
|
||||
# Case SafeString
|
||||
if isinstance(filepath, SafeData) or hasattr(filepath, "__html__"):
|
||||
return True
|
||||
|
||||
# Case PathLike
|
||||
if isinstance(filepath, (Path, os.PathLike)) or hasattr(filepath, "__fspath__"):
|
||||
return True
|
||||
|
||||
# Case bytes
|
||||
if isinstance(filepath, bytes):
|
||||
return True
|
||||
|
||||
# Case str
|
||||
return isinstance(filepath, str)
|
||||
|
||||
|
||||
|
|
|
@ -1043,7 +1043,7 @@ class ExtensionManager:
|
|||
if component_ext_subclass:
|
||||
bases_list.insert(0, component_ext_subclass)
|
||||
|
||||
bases: tuple[Type, ...] = tuple(bases_list)
|
||||
bases: Tuple[Type, ...] = tuple(bases_list)
|
||||
|
||||
# Allow component-level extension class to access the owner `Component` class that via
|
||||
# `component_cls`.
|
||||
|
|
|
@ -176,7 +176,7 @@ class CacheExtension(ComponentExtension):
|
|||
ComponentConfig = ComponentCache
|
||||
|
||||
def __init__(self, *_args: Any, **_kwargs: Any) -> None:
|
||||
self.render_id_to_cache_key: dict[str, str] = {}
|
||||
self.render_id_to_cache_key: Dict[str, str] = {}
|
||||
|
||||
def on_component_input(self, ctx: OnComponentInputContext) -> Optional[Any]:
|
||||
cache_instance = ctx.component.cache
|
||||
|
|
|
@ -36,13 +36,13 @@ def apply_component_highlight(highlight_type: Literal["component", "slot"], outp
|
|||
|
||||
output = f"""
|
||||
<style>
|
||||
.{type}-highlight-{highlight_id}::before {{
|
||||
.{highlight_type}-highlight-{highlight_id}::before {{
|
||||
content: "{name}: ";
|
||||
font-weight: bold;
|
||||
color: {color.text_color};
|
||||
}}
|
||||
</style>
|
||||
<div class="{type}-highlight-{highlight_id}" style="border: 1px solid {color.border_color}">
|
||||
<div class="{highlight_type}-highlight-{highlight_id}" style="border: 1px solid {color.border_color}">
|
||||
{output}
|
||||
</div>
|
||||
"""
|
||||
|
|
|
@ -157,7 +157,8 @@ def set_provided_context_var(
|
|||
# We turn the kwargs into a NamedTuple so that the object that's "provided"
|
||||
# is immutable. This ensures that the data returned from `inject` will always
|
||||
# have all the keys that were passed to the `provide` tag.
|
||||
tuple_cls = NamedTuple("DepInject", provided_kwargs.keys()) # type: ignore[misc]
|
||||
fields = [(field, Any) for field in provided_kwargs]
|
||||
tuple_cls = NamedTuple("DepInject", fields) # type: ignore[misc]
|
||||
payload = tuple_cls(**provided_kwargs)
|
||||
|
||||
# Instead of storing the provided data on the Context object, we store it
|
||||
|
|
|
@ -338,7 +338,7 @@ class TestComponentCache:
|
|||
return {"input": kwargs["input"]}
|
||||
|
||||
with pytest.raises(
|
||||
ValueError,
|
||||
TypeError,
|
||||
match=re.escape(
|
||||
"Cannot hash slot 'content' of component 'TestComponent' - Slot functions are unhashable.",
|
||||
),
|
||||
|
|
|
@ -4,7 +4,7 @@ import re
|
|||
import sys
|
||||
from pathlib import Path
|
||||
from textwrap import dedent
|
||||
from typing import Optional
|
||||
from typing import List, Optional
|
||||
|
||||
import pytest
|
||||
from django.core.exceptions import ImproperlyConfigured
|
||||
|
@ -344,7 +344,7 @@ class TestComponentMedia:
|
|||
def test_media_custom_render_js(self):
|
||||
class MyMedia(Media):
|
||||
def render_js(self):
|
||||
tags: list[str] = []
|
||||
tags: List[str] = []
|
||||
for path in self._js: # type: ignore[attr-defined]
|
||||
abs_path = self.absolute_path(path) # type: ignore[attr-defined]
|
||||
tags.append(f'<script defer src="{abs_path}"></script>')
|
||||
|
@ -370,7 +370,7 @@ class TestComponentMedia:
|
|||
def test_media_custom_render_css(self):
|
||||
class MyMedia(Media):
|
||||
def render_css(self):
|
||||
tags: list[str] = []
|
||||
tags: List[str] = []
|
||||
media = sorted(self._css) # type: ignore[attr-defined]
|
||||
for medium in media:
|
||||
for path in self._css[medium]: # type: ignore[attr-defined]
|
||||
|
@ -789,7 +789,7 @@ class TestMediaStaticfiles:
|
|||
|
||||
class MyMedia(Media):
|
||||
def render_js(self):
|
||||
tags: list[str] = []
|
||||
tags: List[str] = []
|
||||
for path in self._js: # type: ignore[attr-defined]
|
||||
abs_path = self.absolute_path(path) # type: ignore[attr-defined]
|
||||
tags.append(f'<script defer src="{abs_path}"></script>')
|
||||
|
@ -849,7 +849,7 @@ class TestMediaStaticfiles:
|
|||
|
||||
class MyMedia(Media):
|
||||
def render_js(self):
|
||||
tags: list[str] = []
|
||||
tags: List[str] = []
|
||||
for path in self._js: # type: ignore[attr-defined]
|
||||
abs_path = self.absolute_path(path) # type: ignore[attr-defined]
|
||||
tags.append(f'<script defer src="{abs_path}"></script>')
|
||||
|
|
|
@ -201,7 +201,10 @@ class TestComponentAsView:
|
|||
client = CustomClient(urlpatterns=[path("test/", view)])
|
||||
response = client.get("/test/")
|
||||
assert response.status_code == 200
|
||||
assert b'<input type="text" name="variable" value="MockComponentRequest">' in response.content
|
||||
assertInHTML(
|
||||
'<input type="text" name="variable" value="MockComponentRequest">',
|
||||
response.content.decode(),
|
||||
)
|
||||
|
||||
def test_replace_slot_in_view(self):
|
||||
class MockComponentSlot(Component):
|
||||
|
|
|
@ -121,7 +121,7 @@ class TestSlot:
|
|||
slot: Slot = Slot(lambda _ctx: "SLOT_FN")
|
||||
|
||||
with pytest.raises(
|
||||
ValueError,
|
||||
TypeError,
|
||||
match=re.escape("Slot received another Slot instance as `contents`"),
|
||||
):
|
||||
Slot(slot)
|
||||
|
|
|
@ -2434,7 +2434,7 @@ class TestSlotInput:
|
|||
|
||||
@djc_test(parametrize=PARAMETRIZE_CONTEXT_BEHAVIOR)
|
||||
def test_slots_normalized_as_slot_instances(self, components_settings):
|
||||
seen_slots: dict[str, Slot] = {}
|
||||
seen_slots: Dict[str, Slot] = {}
|
||||
|
||||
@register("test")
|
||||
class SlottedComponent(Component):
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue