fastlifeweb 0.25.0__py3-none-any.whl → 0.25.2__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- CHANGELOG.md +11 -0
- fastlife/adapters/jinjax/widget_factory/emailstr_builder.py +1 -0
- fastlife/adapters/jinjax/widget_factory/secretstr_builder.py +3 -4
- fastlife/adapters/jinjax/widgets/mfa_code.py +25 -0
- fastlife/adapters/jinjax/widgets/sequence.py +1 -1
- fastlife/adapters/jinjax/widgets/text.py +33 -7
- fastlife/assets/dist.css +768 -0
- fastlife/assets/source.css +1 -0
- fastlife/components/A.jinja +1 -1
- fastlife/components/Button.jinja +1 -1
- fastlife/components/Checkbox.jinja +1 -1
- fastlife/components/Details.jinja +1 -1
- fastlife/components/Form.jinja +1 -1
- fastlife/components/H1.jinja +1 -1
- fastlife/components/H2.jinja +1 -1
- fastlife/components/H3.jinja +1 -1
- fastlife/components/H4.jinja +1 -1
- fastlife/components/H5.jinja +1 -1
- fastlife/components/H6.jinja +1 -1
- fastlife/components/Input.jinja +23 -4
- fastlife/components/Label.jinja +1 -1
- fastlife/components/P.jinja +1 -1
- fastlife/components/Password.jinja +51 -0
- fastlife/components/Radio.jinja +3 -3
- fastlife/components/Select.jinja +1 -1
- fastlife/components/Summary.jinja +2 -2
- fastlife/components/Table.jinja +1 -1
- fastlife/components/Td.jinja +1 -1
- fastlife/components/Th.jinja +1 -1
- fastlife/components/pydantic_form/Error.jinja +9 -3
- fastlife/components/pydantic_form/FatalError.jinja +19 -5
- fastlife/domain/model/form.py +2 -1
- fastlife/middlewares/session/middleware.py +1 -1
- fastlife/service/templates.py +1 -0
- fastlife/template_globals.py +14 -0
- {fastlifeweb-0.25.0.dist-info → fastlifeweb-0.25.2.dist-info}/METADATA +4 -4
- {fastlifeweb-0.25.0.dist-info → fastlifeweb-0.25.2.dist-info}/RECORD +40 -36
- {fastlifeweb-0.25.0.dist-info → fastlifeweb-0.25.2.dist-info}/WHEEL +0 -0
- {fastlifeweb-0.25.0.dist-info → fastlifeweb-0.25.2.dist-info}/entry_points.txt +0 -0
- {fastlifeweb-0.25.0.dist-info → fastlifeweb-0.25.2.dist-info}/licenses/LICENSE +0 -0
@@ -0,0 +1 @@
|
|
1
|
+
@import 'tailwindcss' source('../../../src/');
|
fastlife/components/A.jinja
CHANGED
@@ -8,7 +8,7 @@
|
|
8
8
|
id: Annotated[str | None, "unique identifier of the element."] = None,
|
9
9
|
class_: Annotated[
|
10
10
|
str | None,
|
11
|
-
"css class for the node, defaults to :attr:`fastlife.
|
11
|
+
"css class for the node, defaults to :attr:`fastlife.template_globals.Globals.A_CLASS`."
|
12
12
|
] = None,
|
13
13
|
hx_target: Annotated[
|
14
14
|
str,
|
fastlife/components/Button.jinja
CHANGED
@@ -10,7 +10,7 @@
|
|
10
10
|
class_: Annotated[
|
11
11
|
str | None,
|
12
12
|
"css class for the node, defaults to "
|
13
|
-
":attr:`fastlife.
|
13
|
+
":attr:`fastlife.template_globals.Globals.BUTTON_CLASS`."
|
14
14
|
] = None,
|
15
15
|
name: str = "action",
|
16
16
|
value: str = "submit",
|
@@ -7,7 +7,7 @@
|
|
7
7
|
class_: Annotated[
|
8
8
|
str | None,
|
9
9
|
"css class for the node, defaults to "
|
10
|
-
":attr:`fastlife.
|
10
|
+
":attr:`fastlife.template_globals.Globals.CHECKBOX_CLASS`."
|
11
11
|
] = None,
|
12
12
|
value: Annotated[str | None, "http submitted value if the checkbox is checked"] = None,
|
13
13
|
checked: Annotated[bool, "Initialized the checkbox as ticked"] = False,
|
@@ -19,7 +19,7 @@
|
|
19
19
|
class_: Annotated[
|
20
20
|
str | None,
|
21
21
|
"css class for the node, defaults to "
|
22
|
-
":attr:`fastlife.
|
22
|
+
":attr:`fastlife.template_globals.Globals.DETAILS_CLASS`."
|
23
23
|
] = None,
|
24
24
|
open: Annotated[bool, "open/close state."] = True,
|
25
25
|
#}
|
fastlife/components/Form.jinja
CHANGED
@@ -18,7 +18,7 @@
|
|
18
18
|
class_: Annotated[
|
19
19
|
str | None,
|
20
20
|
"css class for the node, defaults to "
|
21
|
-
":attr:`fastlife.
|
21
|
+
":attr:`fastlife.template_globals.Globals.FORM_CLASS`"
|
22
22
|
] = None,
|
23
23
|
method: Annotated[Literal["get", "post"] | None, "Http method used"] = None,
|
24
24
|
action: Annotated[str | None, "url where the form will be submitted"] = None,
|
fastlife/components/H1.jinja
CHANGED
fastlife/components/H2.jinja
CHANGED
fastlife/components/H3.jinja
CHANGED
fastlife/components/H4.jinja
CHANGED
fastlife/components/H5.jinja
CHANGED
fastlife/components/H6.jinja
CHANGED
fastlife/components/Input.jinja
CHANGED
@@ -9,7 +9,7 @@
|
|
9
9
|
class_: Annotated[
|
10
10
|
str | None,
|
11
11
|
"css class for the node, defaults to "
|
12
|
-
":attr:`fastlife.
|
12
|
+
":attr:`fastlife.template_globals.Globals.INPUT_CLASS`."
|
13
13
|
] = None,
|
14
14
|
aria_label: Annotated[str | None, "aria-label"] = None,
|
15
15
|
placeholder: Annotated[
|
@@ -21,12 +21,31 @@
|
|
21
21
|
"none", "text", "decimal", "numeric", "tel", "search", "email", "url"
|
22
22
|
] | None,
|
23
23
|
"Define a virtual keyboard layout"
|
24
|
-
] = None
|
24
|
+
] = None,
|
25
|
+
autocomplete: Annotated[
|
26
|
+
Literal[
|
27
|
+
"on", "off",
|
28
|
+
"name", "username", "current-password", "new-password", "one-time-code",
|
29
|
+
"email", "tel", "organization", "street-address",
|
30
|
+
"address-line1", "address-line2", "address-line3",
|
31
|
+
"postal-code", "country", "country-name",
|
32
|
+
"cc-name", "cc-number", "cc-exp", "cc-csc",
|
33
|
+
"tel-country-code", "tel-national", "tel-area-code",
|
34
|
+
"tel-local", "tel-extension",
|
35
|
+
"bday", "bday-day", "bday-month", "bday-year",
|
36
|
+
"transaction-amount", "transaction-currency"
|
37
|
+
] | None,
|
38
|
+
"Define autocomplete mode"
|
39
|
+
] = None,
|
40
|
+
autofocus: Annotated[bool, "Five the focus"] = False,
|
25
41
|
#}
|
26
42
|
|
27
|
-
<input name="{{name}}" value="{{value}}" type="{{type}}"
|
43
|
+
<input name="{{name}}" value="{{value|default('')}}" type="{{type}}"
|
28
44
|
{%- if id %} id="{{id}}" {%- endif %}
|
29
45
|
{%- if aria_label %} aria-label="{{aria_label}}" {%- endif %}
|
30
46
|
{%- if placeholder %} placeholder="{{placeholder}}" {%- endif %}
|
31
47
|
{%- if inputmode %} inputmode="{{inputmode}}" {%- endif %}
|
32
|
-
|
48
|
+
{%- if autocomplete %} autocomplete="{{autocomplete}}" {%- endif %}
|
49
|
+
class="{{attrs.class or INPUT_CLASS}}"
|
50
|
+
{%- if autofocus %} autofocus{% endif -%}
|
51
|
+
/>
|
fastlife/components/Label.jinja
CHANGED
fastlife/components/P.jinja
CHANGED
@@ -0,0 +1,51 @@
|
|
1
|
+
{# doc
|
2
|
+
Produce ``<input type="password">`` node.
|
3
|
+
#}
|
4
|
+
{# def
|
5
|
+
name: Annotated[str, "submitted name in the form"],
|
6
|
+
id: Annotated[str | None, "unique identifier of the element."] = None,
|
7
|
+
class_: Annotated[
|
8
|
+
str | None,
|
9
|
+
"css class for the node, defaults to "
|
10
|
+
":attr:`fastlife.template_globals.Globals.INPUT_CLASS`."
|
11
|
+
] = None,
|
12
|
+
aria_label: Annotated[str | None, "aria-label"] = None,
|
13
|
+
placeholder: Annotated[
|
14
|
+
str | None,
|
15
|
+
"brief hint to the user as to what kind of information is expected in the field."
|
16
|
+
] = None,
|
17
|
+
autocomplete: Annotated[
|
18
|
+
Literal[
|
19
|
+
"on", "off",
|
20
|
+
"current-password", "new-password",
|
21
|
+
] | None,
|
22
|
+
"Define autocomplete mode"
|
23
|
+
] = None,
|
24
|
+
inputmode: Annotated[
|
25
|
+
Literal[
|
26
|
+
"none", "text", "numeric",
|
27
|
+
] | None,
|
28
|
+
"Define a virtual keyboard layout"
|
29
|
+
] = None,
|
30
|
+
minlength: Annotated[int | None, "Minimum length"] = None,
|
31
|
+
maxlength: Annotated[int | None, "Maximum length"] = None,
|
32
|
+
pattern: Annotated[str | None, "Must match a pattern"] = None,
|
33
|
+
autofocus: Annotated[bool, "Five the focus"] = False,
|
34
|
+
required: Annotated[bool, "Mark as required field"] = False,
|
35
|
+
readonly: Annotated[bool, "Mark as readonly field"] = False,
|
36
|
+
#}
|
37
|
+
|
38
|
+
<input name="{{name}}" type="password"
|
39
|
+
{%- if id %} id="{{id}}" {%- endif %}
|
40
|
+
{%- if aria_label %} aria-label="{{aria_label}}" {%- endif %}
|
41
|
+
{%- if placeholder %} placeholder="{{placeholder}}" {%- endif %}
|
42
|
+
{%- if autocomplete %} autocomplete="{{autocomplete}}" {%- endif %}
|
43
|
+
{%- if inputmode %} inputmode="{{inputmode}}" {%- endif %}
|
44
|
+
{%- if minlength %} minlength="{{minlength}}" {%- endif %}
|
45
|
+
{%- if maxlength %} maxlength="{{maxlength}}" {%- endif %}
|
46
|
+
{%- if pattern %} pattern="{{pattern}}" {%- endif %}
|
47
|
+
class="{{attrs.class or INPUT_CLASS}}"
|
48
|
+
{%- if autofocus %} autofocus{% endif -%}
|
49
|
+
{%- if required %} required{% endif -%}
|
50
|
+
{%- if readonly %} readonly{% endif -%}
|
51
|
+
/>
|
fastlife/components/Radio.jinja
CHANGED
@@ -12,17 +12,17 @@
|
|
12
12
|
div_class: Annotated[
|
13
13
|
str | None,
|
14
14
|
"css class for the div node, defaults to "
|
15
|
-
":attr:`fastlife.
|
15
|
+
":attr:`fastlife.template_globals.Globals.RADIO_DIV_CLASS`"
|
16
16
|
] = None,
|
17
17
|
class_: Annotated[
|
18
18
|
str | None,
|
19
19
|
"css class for the input node, defaults to "
|
20
|
-
":attr:`fastlife.
|
20
|
+
":attr:`fastlife.template_globals.Globals.RADIO_INPUT_CLASS`"
|
21
21
|
] = None,
|
22
22
|
label_class: Annotated[
|
23
23
|
str | None,
|
24
24
|
"css class for the label node, defaults to "
|
25
|
-
":attr:`fastlife.
|
25
|
+
":attr:`fastlife.template_globals.Globals.RADIO_LABEL_CLASS`"
|
26
26
|
] = None,
|
27
27
|
#}
|
28
28
|
<div class="{{ div_class or RADIO_DIV_CLASS }}">
|
fastlife/components/Select.jinja
CHANGED
@@ -7,7 +7,7 @@ id: Annotated[str | None, "unique identifier of the element."] = None,
|
|
7
7
|
class_: Annotated[
|
8
8
|
str | None,
|
9
9
|
"css class for the node, defaults to "
|
10
|
-
":attr:`fastlife.
|
10
|
+
":attr:`fastlife.template_globals.Globals.SELECT_CLASS`."
|
11
11
|
] = None,
|
12
12
|
multiple: Annotated[bool, "Mark as multiple"] = False,
|
13
13
|
#}
|
@@ -6,12 +6,12 @@
|
|
6
6
|
class_: Annotated[
|
7
7
|
str | None,
|
8
8
|
"css class for the node, defaults to "
|
9
|
-
":attr:`fastlife.
|
9
|
+
":attr:`fastlife.template_globals.Globals.SUMMARY_CLASS`."
|
10
10
|
] = None,
|
11
11
|
open: Annotated[bool, "Open or collapse the content of the details."] = True
|
12
12
|
#}
|
13
13
|
|
14
|
-
<summary id="{{id}}"
|
14
|
+
<summary id="{{id}}" class="{{attrs.class or SUMMARY_CLASS}}"
|
15
15
|
style="list-style: none; -webkit-user-select: none; -moz-user-select: none; -ms-user-select: none; user-select: none;"
|
16
16
|
onclick="document.getElementById('{{id}}-icon').classList.toggle('rotate-90')">
|
17
17
|
<icons.ChevronRight :id="id + '-icon'"
|
fastlife/components/Table.jinja
CHANGED
fastlife/components/Td.jinja
CHANGED
fastlife/components/Th.jinja
CHANGED
@@ -1,5 +1,11 @@
|
|
1
1
|
{# doc display an error for a field. #}
|
2
|
-
{# def
|
2
|
+
{# def
|
3
|
+
text: Annotated[str | None, "error message"],
|
4
|
+
class_: Annotated[
|
5
|
+
str | None,
|
6
|
+
"css class for the node, defaults to :attr:`fastlife.template_globals.Globals.ERROR_CLASS`."
|
7
|
+
] = None,
|
8
|
+
#}
|
3
9
|
{%- if text -%}
|
4
|
-
<span class="
|
5
|
-
{%- endif -%}
|
10
|
+
<span class="{{attrs.class or ERROR_CLASS }}">{{ text }}</span>
|
11
|
+
{%- endif -%}
|
@@ -1,8 +1,22 @@
|
|
1
1
|
{# doc display an error for a field. #}
|
2
|
-
{# def
|
2
|
+
{# def
|
3
|
+
message: Annotated[str | None, "error message"],
|
4
|
+
class_: Annotated[
|
5
|
+
str | None,
|
6
|
+
"css class for the node, defaults to :attr:`fastlife.template_globals.Globals.FATAL_ERROR_CLASS`."
|
7
|
+
] = None,
|
8
|
+
icon_class: Annotated[
|
9
|
+
str | None,
|
10
|
+
"css class for the node, defaults to :attr:`fastlife.template_globals.Globals.FATAL_ERROR_ICON_CLASS`."
|
11
|
+
] = None,
|
12
|
+
text_class: Annotated[
|
13
|
+
str | None,
|
14
|
+
"css class for the node, defaults to :attr:`fastlife.template_globals.Globals.FATAL_ERROR_TEXT_CLASS`."
|
15
|
+
] = None,
|
16
|
+
#}
|
3
17
|
{%- if message -%}
|
4
|
-
<div class="
|
5
|
-
<icons.Fire class="
|
6
|
-
<span class="
|
18
|
+
<div class="{{attrs.class or FATAL_ERROR_CLASS}}" role="alert">
|
19
|
+
<icons.Fire :class="icon_class or FATAL_ERROR_ICON_CLASS" />
|
20
|
+
<span class="{{text_class or FATAL_ERROR_TEXT_CLASS}}">{{ message }}</span>
|
7
21
|
</div>
|
8
|
-
{%- endif -%}
|
22
|
+
{%- endif -%}
|
fastlife/domain/model/form.py
CHANGED
@@ -58,7 +58,8 @@ class FormModel(Generic[T]):
|
|
58
58
|
cls, prefix: str, pydantic_type: type[T], data: Mapping[str, Any]
|
59
59
|
) -> "FormModel[T]":
|
60
60
|
try:
|
61
|
-
|
61
|
+
ret = cls(prefix, pydantic_type(**data.get(prefix, {})), {}, True)
|
62
|
+
return ret
|
62
63
|
except ValidationError as exc:
|
63
64
|
errors: dict[str, str] = {}
|
64
65
|
for error in exc.errors():
|
fastlife/service/templates.py
CHANGED
fastlife/template_globals.py
CHANGED
@@ -323,3 +323,17 @@ class Globals(BaseModel):
|
|
323
323
|
|
324
324
|
TH_CLASS: str = "px-4 py-2 font-medium border-b dark:border-neutral-500"
|
325
325
|
"""Default css class for {jinjax:component}`Th`."""
|
326
|
+
|
327
|
+
ERROR_CLASS: str = "mt-2 text-sm text-danger-500 dark:text-danger-400"
|
328
|
+
"""Default css class for {jinjax:component}`pydantic_form.Error`."""
|
329
|
+
|
330
|
+
FATAL_ERROR_CLASS: str = (
|
331
|
+
"flex items-center bg-red-50 border border-red-400 text-red-700"
|
332
|
+
)
|
333
|
+
"""Default css class for {jinjax:component}`pydantic_form.FatalError`."""
|
334
|
+
|
335
|
+
FATAL_ERROR_ICON_CLASS: str = "m-3 w-16 h-16 fill-orange-500"
|
336
|
+
"""Default css class for {jinjax:component}`pydantic_form.FatalError` icon."""
|
337
|
+
|
338
|
+
FATAL_ERROR_TEXT_CLASS: str = "sm:inline text-xl"
|
339
|
+
"""Default css class for {jinjax:component}`pydantic_form.FatalError` text."""
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: fastlifeweb
|
3
|
-
Version: 0.25.
|
3
|
+
Version: 0.25.2
|
4
4
|
Summary: High-level web framework
|
5
5
|
Author-Email: Guillaume Gauvrit <guillaume@gauvr.it>
|
6
6
|
License: MIT
|
@@ -17,14 +17,14 @@ Project-URL: Repository, https://github.com/mardiros/fastlife.git
|
|
17
17
|
Project-URL: Issues, https://github.com/mardiros/fastlife/issues
|
18
18
|
Project-URL: Changelog, https://mardiros.github.io/fastlife/user/changelog.html
|
19
19
|
Requires-Python: >=3.11
|
20
|
-
Requires-Dist: fastapi[standard]<
|
20
|
+
Requires-Dist: fastapi[standard]<0.116.0,>=0.115.4
|
21
21
|
Requires-Dist: itsdangerous<3,>=2.1.2
|
22
|
-
Requires-Dist: jinjax<0.
|
22
|
+
Requires-Dist: jinjax<0.49,>=0.48
|
23
23
|
Requires-Dist: markupsafe<3,>=2.1.3
|
24
24
|
Requires-Dist: multidict<7,>=6.0.5
|
25
25
|
Requires-Dist: pydantic<3,>=2.5.3
|
26
26
|
Requires-Dist: pydantic-settings<3,>=2.0.3
|
27
|
-
Requires-Dist: python-multipart<1,>=0.0.
|
27
|
+
Requires-Dist: python-multipart<1,>=0.0.13
|
28
28
|
Requires-Dist: venusian<4,>=3.0.0
|
29
29
|
Provides-Extra: testing
|
30
30
|
Requires-Dist: beautifulsoup4; extra == "testing"
|
@@ -1,4 +1,4 @@
|
|
1
|
-
CHANGELOG.md,sha256=
|
1
|
+
CHANGELOG.md,sha256=lrPhY2hvBQErCpC_v376kDsXv_K2LTj4DgK7XWC_dsk,8373
|
2
2
|
fastlife/__init__.py,sha256=nXWE4AbhkhG_yBjPJU-XnKDMTsU9ebv7Vj4eIciWQI0,2219
|
3
3
|
fastlife/adapters/__init__.py,sha256=imPD1hImpgrYkvUJRhHA5kVyGAua7VbP2WGkhSWKJT8,93
|
4
4
|
fastlife/adapters/fastapi/__init__.py,sha256=1goV1FGFP04TGyskJBLKZam4Gvt1yoAvLMNs4ekWSSQ,243
|
@@ -21,12 +21,12 @@ fastlife/adapters/jinjax/renderer.py,sha256=8Pv2Ivg8iObPa-LeIfj764p2MEq78wzHqxZe
|
|
21
21
|
fastlife/adapters/jinjax/widget_factory/__init__.py,sha256=Dy_2xr_YDAyEF9WtNpjV-aYaehRO1iKEIHVFdfFeszw,59
|
22
22
|
fastlife/adapters/jinjax/widget_factory/base.py,sha256=TLEpYdekR4AeHhIie_DICc_oSvQaUaL8GlatqNiRewg,1046
|
23
23
|
fastlife/adapters/jinjax/widget_factory/bool_builder.py,sha256=ElIDb6rlUiwuDAetC22TreoMa9HDgoZ2euVV1VurFFY,1291
|
24
|
-
fastlife/adapters/jinjax/widget_factory/emailstr_builder.py,sha256=
|
24
|
+
fastlife/adapters/jinjax/widget_factory/emailstr_builder.py,sha256=1niv0fB-KXV5wEjs5Q7PmKMs0RlmQ8CmGJ8YLw3cI7k,1566
|
25
25
|
fastlife/adapters/jinjax/widget_factory/enum_builder.py,sha256=agx67oUeVy5_BKzY4WV0DxT67R43Vy74CoeHl9PBvK4,1527
|
26
26
|
fastlife/adapters/jinjax/widget_factory/factory.py,sha256=zTa6zbpW5lAh_eHlhO6XBP2GbeDTHatymhMAJQ-alTI,5915
|
27
27
|
fastlife/adapters/jinjax/widget_factory/literal_builder.py,sha256=mrtWbDMKNFtw5ufJK3DnkkttGGk16EnDQhejyOd57Ys,1758
|
28
28
|
fastlife/adapters/jinjax/widget_factory/model_builder.py,sha256=WgIEUExtGO_s9AlNQlaTG_136ipe64MIJsNP0nlnsOc,2236
|
29
|
-
fastlife/adapters/jinjax/widget_factory/secretstr_builder.py,sha256
|
29
|
+
fastlife/adapters/jinjax/widget_factory/secretstr_builder.py,sha256=-A7tEQTvzc1M9eNPvEZ_9EYX8zqel2XjLGNFH-V6iqk,1564
|
30
30
|
fastlife/adapters/jinjax/widget_factory/sequence_builder.py,sha256=j5KRfK5R8q_QdzGqjG86mjoKTWH7gvhjXesFAoItPaU,1944
|
31
31
|
fastlife/adapters/jinjax/widget_factory/set_builder.py,sha256=kwtVLATkoOFTcKBKHk7xZwQxRomPCic0sp4Bsd8YQfM,2742
|
32
32
|
fastlife/adapters/jinjax/widget_factory/simpletype_builder.py,sha256=olP66B9AMY1X8fgEAxhMdozWN_w1TtcIAIW6uPJRSng,1570
|
@@ -37,36 +37,40 @@ fastlife/adapters/jinjax/widgets/boolean.py,sha256=GFvyO2Lz-vTJ8lpX2UrkJk7ymu0vU
|
|
37
37
|
fastlife/adapters/jinjax/widgets/checklist.py,sha256=xsr_edMu1nTcNnMEs1AAS3U-ugK95pEqn5NV5hjTeI0,1747
|
38
38
|
fastlife/adapters/jinjax/widgets/dropdown.py,sha256=ou8U48txShr8IXdwF4_pBvTn1VcR9SazZKzbLcsN3_0,1458
|
39
39
|
fastlife/adapters/jinjax/widgets/hidden.py,sha256=IKcVYs6NjN8YjW-UTr3DRBong6Wrc0QLgcp8U9JoQmE,638
|
40
|
+
fastlife/adapters/jinjax/widgets/mfa_code.py,sha256=8HHaEHyUEQT6xzJ0Y4O0eA1SU3wSfzXljx8XY73o-Rc,733
|
40
41
|
fastlife/adapters/jinjax/widgets/model.py,sha256=YBIEWa_6mnmrBnesXjLTrpJ4drUS2CIorNmhK24cz7Q,1298
|
41
|
-
fastlife/adapters/jinjax/widgets/sequence.py,sha256=
|
42
|
-
fastlife/adapters/jinjax/widgets/text.py,sha256=
|
42
|
+
fastlife/adapters/jinjax/widgets/sequence.py,sha256=dVoHQmHloaRuU1Sd82b2jnO8WDfdwM2FaZlLCJCps1o,2566
|
43
|
+
fastlife/adapters/jinjax/widgets/text.py,sha256=TfmlJU233aZWIl-4cmm-f-pFxp6ycHWHnbiluOvRDgM,3040
|
43
44
|
fastlife/adapters/jinjax/widgets/union.py,sha256=roCoFA82dLjF1XFW6UYaV7SCQWdFsSAT8Ux7KEB6_Us,2602
|
44
|
-
fastlife/
|
45
|
-
fastlife/
|
46
|
-
fastlife/components/
|
45
|
+
fastlife/assets/dist.css,sha256=BkGYK48Fmy7t3-KMKlpGnpjmpJpxQ4D6QUNlfmtVbU8,18432
|
46
|
+
fastlife/assets/source.css,sha256=0KtDcsKHj9LOcqNR1iv9pACwNBaNWkieEDqqjkgNL_s,47
|
47
|
+
fastlife/components/A.jinja,sha256=MDNJ2auIeYbpNeErvJdlGid4nIKfbi85ArmMgChsCJU,1384
|
48
|
+
fastlife/components/Button.jinja,sha256=itKU-ct45XissU33yfmTekyHsNe00fr4RQL-e9cxbgU,2305
|
49
|
+
fastlife/components/Checkbox.jinja,sha256=g62A1LR8TaN60h94pE2e5l9_eMmgnhVVE9HVCQtVVMo,748
|
47
50
|
fastlife/components/CsrfToken.jinja,sha256=mS0q-3_hAevl_waWEPaN0QAYOBzMyzl-W1PSpEHUBA0,215
|
48
|
-
fastlife/components/Details.jinja,sha256=
|
49
|
-
fastlife/components/Form.jinja,sha256=
|
50
|
-
fastlife/components/H1.jinja,sha256=
|
51
|
-
fastlife/components/H2.jinja,sha256=
|
52
|
-
fastlife/components/H3.jinja,sha256=
|
53
|
-
fastlife/components/H4.jinja,sha256=
|
54
|
-
fastlife/components/H5.jinja,sha256=
|
55
|
-
fastlife/components/H6.jinja,sha256=
|
51
|
+
fastlife/components/Details.jinja,sha256=NtQX-V3kcp1CV1GkrMkj5fc-KHPZHshWkrhXAZ8E3ms,736
|
52
|
+
fastlife/components/Form.jinja,sha256=IJhkUwp_dF-BePi8okh-sUglXP6wJvtxNd-4PUFCwTY,2089
|
53
|
+
fastlife/components/H1.jinja,sha256=fWZtTq34qN9gwGgDF91lkypxaXvGN_OTmUY7XUHIpw0,370
|
54
|
+
fastlife/components/H2.jinja,sha256=o7Q-oR_zDtItV5A7QWfEo_LoMw6bR44YNBDQP3ao1bg,370
|
55
|
+
fastlife/components/H3.jinja,sha256=cZHJTVER1LVYWAwP3sR-23Ktbk9WYlLgLnr2Dz_0oqU,370
|
56
|
+
fastlife/components/H4.jinja,sha256=w-n0bFqR_38oIuju_Bs_8OwYCtLP0gIfSsoi5u3U8GM,370
|
57
|
+
fastlife/components/H5.jinja,sha256=bpphjO54yrKLKt64voR5wCvxwFpxQRfkZg_OqhCPAcA,370
|
58
|
+
fastlife/components/H6.jinja,sha256=9qzd6LpaLk5oTLdKw3utSVyX-uq7fn837mm22zG23Ko,370
|
56
59
|
fastlife/components/Hidden.jinja,sha256=-D74wZ7qp2n5l_8HKmDhX5v_M2sAJ5l-w_z9m5d5KvA,283
|
57
|
-
fastlife/components/Input.jinja,sha256=
|
58
|
-
fastlife/components/Label.jinja,sha256=
|
60
|
+
fastlife/components/Input.jinja,sha256=bg2YCVGQsXwNF5zPauNg0VYbhf3qzEW12t6Xz7bWYVI,1950
|
61
|
+
fastlife/components/Label.jinja,sha256=t50MUGyNSFB4LK-J0D0fM2xMT_vCsG3fnO0OapvzPJQ,532
|
59
62
|
fastlife/components/Option.jinja,sha256=x6t7uUQsI1YSRstD4bSVlgK2wm8NJUXnzOWfNWGlk_Y,448
|
60
|
-
fastlife/components/P.jinja,sha256=
|
61
|
-
fastlife/components/
|
62
|
-
fastlife/components/
|
63
|
-
fastlife/components/
|
64
|
-
fastlife/components/
|
63
|
+
fastlife/components/P.jinja,sha256=Jumlwu9Wix8E2K7QwwimgWTrMdrFDAEfdLHlkz_Mp-g,371
|
64
|
+
fastlife/components/Password.jinja,sha256=dSjPzzgBJM1K1hg_9UURPLpvUcwnna8hf6lH0nsYEps,1903
|
65
|
+
fastlife/components/Radio.jinja,sha256=DyoCDnAv1b0aaoHRA7iqaR86cZ4ZjkAcW2VpU9DIxZU,1478
|
66
|
+
fastlife/components/Select.jinja,sha256=H9Tg1ctASVXb0aTdGVDP1XDlLfTGIntPhMLjb2xCjM8,551
|
67
|
+
fastlife/components/Summary.jinja,sha256=1kGaGtCSl3pbE3Y406_zdQcK0FDQrEchXJpc4-iPWuE,851
|
68
|
+
fastlife/components/Table.jinja,sha256=mAtaCVmVGjhuGHtCnKBs3YZTr_d_DBgkUNuQTa5TQA8,385
|
65
69
|
fastlife/components/Tbody.jinja,sha256=FqldzLFhV6dfG0UsB55kDtALixpnECdIISXGWXiXxEM,331
|
66
|
-
fastlife/components/Td.jinja,sha256=
|
70
|
+
fastlife/components/Td.jinja,sha256=pYiw_iKb4t3EaWm4IswpsZuF4CjD4UlcjJzrNn9Dm-4,369
|
67
71
|
fastlife/components/Textarea.jinja,sha256=0WsTi-yxVwYXndmJJN93WblQVqM0h0NCSMUDwoC3kdc,636
|
68
72
|
fastlife/components/Tfoot.jinja,sha256=Hw_eFhmbHcOx0dCHrNkyi4q1lrKye5RpihHBwjaT3zY,331
|
69
|
-
fastlife/components/Th.jinja,sha256=
|
73
|
+
fastlife/components/Th.jinja,sha256=YGL1uOJXMY2EfiFNQa5OoQESYUsUNR5Xj4OBCTWiCtE,370
|
70
74
|
fastlife/components/Thead.jinja,sha256=TpnnbtbgYe97e0QDjeJulbh0_-Cbu3z_Qh9dsraQNb4,330
|
71
75
|
fastlife/components/Tr.jinja,sha256=kWy-jx4ShT2dv9vuHqJtMnc3O2pZ3y8KCWEAifMpjrU,322
|
72
76
|
fastlife/components/icons/AcademicCap.jinja,sha256=c4hjr-AbncgcrYoN1h1384qdYAyd8NCyTudy3k3RdgI,732
|
@@ -1681,8 +1685,8 @@ fastlife/components/icons/solid/Wrench.jinja,sha256=ZdpxRZTC5p54FGWw3bgeaQyaPooJ
|
|
1681
1685
|
fastlife/components/icons/solid/WrenchScrewdriver.jinja,sha256=bqF-g6PTJds_KK2cMosVfycBVIIrmy_3sCaTkb9-C9o,1566
|
1682
1686
|
fastlife/components/icons/solid/XCircle.jinja,sha256=pO93hG8JImNOy94B62tN7fdzkzGvSsqkSkkZlkLaxeo,791
|
1683
1687
|
fastlife/components/icons/solid/XMark.jinja,sha256=c-ngdLuYwEMicwm4-Aj4xcEc1uQ_LrBoPhdDhQutEA8,705
|
1684
|
-
fastlife/components/pydantic_form/Error.jinja,sha256=
|
1685
|
-
fastlife/components/pydantic_form/FatalError.jinja,sha256=
|
1688
|
+
fastlife/components/pydantic_form/Error.jinja,sha256=vvmnUosm3bbWZfFVRY_8QvmgrRE0_YU_ocU7XbyP7RA,337
|
1689
|
+
fastlife/components/pydantic_form/FatalError.jinja,sha256=ADtQvmo-e-NmDcFM1E6wZV8aiFXoo-6KWT7zhFoaV-o,820
|
1686
1690
|
fastlife/components/pydantic_form/Hint.jinja,sha256=8leBpfMGDmalc_KAjr2paTojr_rwq-luS6m_1BGj7Tw,202
|
1687
1691
|
fastlife/components/pydantic_form/Widget.jinja,sha256=PgguUpvhG6CY9AW6H8qQMjKqjlybjDCAaFFAOHzrzVQ,418
|
1688
1692
|
fastlife/config/__init__.py,sha256=5qpuaVYqi-AS0GgsfggM6rFsSwXgrqrLBo9jH6dVroc,407
|
@@ -1695,7 +1699,7 @@ fastlife/domain/__init__.py,sha256=3zDDos5InVX0el9OO0lgSDGzdUNYIhlA6w4uhBh2pF8,2
|
|
1695
1699
|
fastlife/domain/model/__init__.py,sha256=aoBjaSpDscuFXvtknJHwiNyoJRUpE-v4X54h_wNuo2Y,27
|
1696
1700
|
fastlife/domain/model/asgi.py,sha256=RSTnfTsofOmCaWzHNuRGowjlyHYmoDCrXFbvNY_B55k,129
|
1697
1701
|
fastlife/domain/model/csrf.py,sha256=BUiWK-S7rVciWHO1qTkM8e_KxzpF6gGC4MMJK1v6iDo,414
|
1698
|
-
fastlife/domain/model/form.py,sha256=
|
1702
|
+
fastlife/domain/model/form.py,sha256=JP6uumlZBYhiPxzcdxOsfsFm5BRfvkDFvlUCD6Vy8dI,3275
|
1699
1703
|
fastlife/domain/model/request.py,sha256=ZRHZW_MOmtO_DFHt2UYu_aUmtoMdD14085A8Z8_eS8s,2678
|
1700
1704
|
fastlife/domain/model/security_policy.py,sha256=f9SLi54vvRU-KSPJ5K0unoqYpkxIyzuZjKf2Ylwf5Rg,4796
|
1701
1705
|
fastlife/domain/model/template.py,sha256=z9oxdKme1hMPuvk7mBiKR_tuVY8TqH77aTYqMgvEGl8,876
|
@@ -1705,7 +1709,7 @@ fastlife/middlewares/base.py,sha256=7FZE_1YU7wNew2u1qdYXjamosk4CXJmg1mJWGp6Xhc0,
|
|
1705
1709
|
fastlife/middlewares/reverse_proxy/__init__.py,sha256=g1SoVDmenKzpAAPYHTEsWgdBByOxtLg9fGx6RV3i0ok,846
|
1706
1710
|
fastlife/middlewares/reverse_proxy/x_forwarded.py,sha256=PPDjcfwik5eoYaolSY1Y4x5QMKpDV0XrOP_i4Am0y30,1724
|
1707
1711
|
fastlife/middlewares/session/__init__.py,sha256=ZhXWXs53A__F9wJKBJ87rW8Qyt5Mn866vhzKDxVZ4t0,1348
|
1708
|
-
fastlife/middlewares/session/middleware.py,sha256=
|
1712
|
+
fastlife/middlewares/session/middleware.py,sha256=tzaJHLT3ri9sstrppATu8MWXUALTq54PsNKU0v5DTBI,3133
|
1709
1713
|
fastlife/middlewares/session/serializer.py,sha256=nbJGiCJ_ryZxkW1I28kmK6hD3U98D4ZlUQA7B8_tngQ,635
|
1710
1714
|
fastlife/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
1711
1715
|
fastlife/service/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
@@ -1714,14 +1718,14 @@ fastlife/service/csrf.py,sha256=wC1PaKOmZ3il0FF_kevxnlg9PxDqruRdLrNnOA3ZHrU,1886
|
|
1714
1718
|
fastlife/service/locale_negociator.py,sha256=JUqzTukxDqTJVOR-CNI7Vqo6kvdvwxYvZQe8P3V9S2U,796
|
1715
1719
|
fastlife/service/registry.py,sha256=3lm7aUD7FdlV1lQUS73OuBlL55-O1DulPJdE0n6Epks,2648
|
1716
1720
|
fastlife/service/security_policy.py,sha256=qYXs4mhfz_u4x59NhUkirqKYKQbFv9YrzyRuXj7mxE0,4688
|
1717
|
-
fastlife/service/templates.py,sha256=
|
1721
|
+
fastlife/service/templates.py,sha256=xNMKH-jNkEoCscO04H-QlzTqg-0pYbF_fc65xG-2rzs,2575
|
1718
1722
|
fastlife/service/translatablestring.py,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
|
1719
1723
|
fastlife/service/translations.py,sha256=s6qFZSXR-1vYxSr7RRH-mS-VjNaa8OTxR7-k6Ib7h0E,6878
|
1720
1724
|
fastlife/settings.py,sha256=q-rz4CEF2RQGow5-m-yZJOvdh3PPb2c1Q_ZLJGnu4VQ,3647
|
1721
1725
|
fastlife/shared_utils/__init__.py,sha256=i66ytuf-Ezo7jSiNQHIsBMVIcB-tDX0tg28-pUOlhzE,26
|
1722
1726
|
fastlife/shared_utils/infer.py,sha256=0GflLkaWJ-4LZ1Ig3moR-_o55wwJ_p_vJ4xo-yi3lyA,1406
|
1723
1727
|
fastlife/shared_utils/resolver.py,sha256=Wb9cO2MWavpti63hju15xmwFMgaD5DsQaxikRpB39E8,3713
|
1724
|
-
fastlife/template_globals.py,sha256=
|
1728
|
+
fastlife/template_globals.py,sha256=bKcj6kSnQlzuOeoILA5oRxxzy6CsrBFMZv9S0w5XlTQ,9021
|
1725
1729
|
fastlife/testing/__init__.py,sha256=VpxkS3Zp3t_hH8dBiLaGFGhsvt511dhBS_8fMoFXdmU,99
|
1726
1730
|
fastlife/testing/dom.py,sha256=dVzDoZokn-ii681UaEwAr-khM5KE-CHgXSSLSo24oH0,4489
|
1727
1731
|
fastlife/testing/form.py,sha256=diiGfVMfNt19JTNUxlnbGfcbskR3ZMpk0Y-A57vfShc,7871
|
@@ -1729,8 +1733,8 @@ fastlife/testing/session.py,sha256=LEFFbiR67_x_g-ioudkY0C7PycHdbDfaIaoo_G7GXQ8,2
|
|
1729
1733
|
fastlife/testing/testclient.py,sha256=Id1tlA1ZapyW-8kUh2_U3lLteL64m3ERqOO7NAN7HEY,6922
|
1730
1734
|
fastlife/views/__init__.py,sha256=zG8gveL8e2zBdYx6_9jtZfpQ6qJT-MFnBY3xXkLwHZI,22
|
1731
1735
|
fastlife/views/pydantic_form.py,sha256=o7EUItciAGL1OSaGNHo-3BTrYAk34GuWE7zGikjiAGY,1486
|
1732
|
-
fastlifeweb-0.25.
|
1733
|
-
fastlifeweb-0.25.
|
1734
|
-
fastlifeweb-0.25.
|
1735
|
-
fastlifeweb-0.25.
|
1736
|
-
fastlifeweb-0.25.
|
1736
|
+
fastlifeweb-0.25.2.dist-info/METADATA,sha256=szZ9s9Rv4714GIS8XeM0PAWN9EbGfZ5qX7T6TcjaMhE,3690
|
1737
|
+
fastlifeweb-0.25.2.dist-info/WHEEL,sha256=thaaA2w1JzcGC48WYufAs8nrYZjJm8LqNfnXFOFyCC4,90
|
1738
|
+
fastlifeweb-0.25.2.dist-info/entry_points.txt,sha256=6OYgBcLyFCUgeqLgnvMyOJxPCWzgy7se4rLPKtNonMs,34
|
1739
|
+
fastlifeweb-0.25.2.dist-info/licenses/LICENSE,sha256=JFWuiKYRXKKMEAsX0aZp3hBcju-HYflJ2rwJAGwbCJo,1080
|
1740
|
+
fastlifeweb-0.25.2.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|