python-fasthtml 0.12.8__tar.gz → 0.12.10__tar.gz
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.
- {python_fasthtml-0.12.8/python_fasthtml.egg-info → python_fasthtml-0.12.10}/PKG-INFO +18 -2
- python_fasthtml-0.12.10/fasthtml/__init__.py +2 -0
- {python_fasthtml-0.12.8 → python_fasthtml-0.12.10}/fasthtml/_modidx.py +2 -0
- {python_fasthtml-0.12.8 → python_fasthtml-0.12.10}/fasthtml/common.py +1 -0
- {python_fasthtml-0.12.8 → python_fasthtml-0.12.10}/fasthtml/core.py +4 -3
- {python_fasthtml-0.12.8 → python_fasthtml-0.12.10}/fasthtml/xtend.py +6 -1
- python_fasthtml-0.12.10/pyproject.toml +11 -0
- {python_fasthtml-0.12.8 → python_fasthtml-0.12.10/python_fasthtml.egg-info}/PKG-INFO +18 -2
- {python_fasthtml-0.12.8 → python_fasthtml-0.12.10}/settings.ini +2 -2
- {python_fasthtml-0.12.8 → python_fasthtml-0.12.10}/setup.py +2 -2
- python_fasthtml-0.12.8/fasthtml/__init__.py +0 -2
- python_fasthtml-0.12.8/pyproject.toml +0 -3
- {python_fasthtml-0.12.8 → python_fasthtml-0.12.10}/CONTRIBUTING.md +0 -0
- {python_fasthtml-0.12.8 → python_fasthtml-0.12.10}/LICENSE +0 -0
- {python_fasthtml-0.12.8 → python_fasthtml-0.12.10}/MANIFEST.in +0 -0
- {python_fasthtml-0.12.8 → python_fasthtml-0.12.10}/README.md +0 -0
- {python_fasthtml-0.12.8 → python_fasthtml-0.12.10}/fasthtml/authmw.py +0 -0
- {python_fasthtml-0.12.8 → python_fasthtml-0.12.10}/fasthtml/basics.py +0 -0
- {python_fasthtml-0.12.8 → python_fasthtml-0.12.10}/fasthtml/cli.py +0 -0
- {python_fasthtml-0.12.8 → python_fasthtml-0.12.10}/fasthtml/components.py +0 -0
- {python_fasthtml-0.12.8 → python_fasthtml-0.12.10}/fasthtml/components.pyi +0 -0
- {python_fasthtml-0.12.8 → python_fasthtml-0.12.10}/fasthtml/core.pyi +0 -0
- {python_fasthtml-0.12.8 → python_fasthtml-0.12.10}/fasthtml/fastapp.py +0 -0
- {python_fasthtml-0.12.8 → python_fasthtml-0.12.10}/fasthtml/ft.py +0 -0
- {python_fasthtml-0.12.8 → python_fasthtml-0.12.10}/fasthtml/js.py +0 -0
- {python_fasthtml-0.12.8 → python_fasthtml-0.12.10}/fasthtml/jupyter.py +0 -0
- {python_fasthtml-0.12.8 → python_fasthtml-0.12.10}/fasthtml/katex.js +0 -0
- {python_fasthtml-0.12.8 → python_fasthtml-0.12.10}/fasthtml/live_reload.py +0 -0
- {python_fasthtml-0.12.8 → python_fasthtml-0.12.10}/fasthtml/oauth.py +0 -0
- {python_fasthtml-0.12.8 → python_fasthtml-0.12.10}/fasthtml/pico.py +0 -0
- {python_fasthtml-0.12.8 → python_fasthtml-0.12.10}/fasthtml/starlette.py +0 -0
- {python_fasthtml-0.12.8 → python_fasthtml-0.12.10}/fasthtml/stripe_otp.py +0 -0
- {python_fasthtml-0.12.8 → python_fasthtml-0.12.10}/fasthtml/svg.py +0 -0
- {python_fasthtml-0.12.8 → python_fasthtml-0.12.10}/fasthtml/toaster.py +0 -0
- {python_fasthtml-0.12.8 → python_fasthtml-0.12.10}/fasthtml/xtend.pyi +0 -0
- {python_fasthtml-0.12.8 → python_fasthtml-0.12.10}/python_fasthtml.egg-info/SOURCES.txt +0 -0
- {python_fasthtml-0.12.8 → python_fasthtml-0.12.10}/python_fasthtml.egg-info/dependency_links.txt +0 -0
- {python_fasthtml-0.12.8 → python_fasthtml-0.12.10}/python_fasthtml.egg-info/entry_points.txt +0 -0
- {python_fasthtml-0.12.8 → python_fasthtml-0.12.10}/python_fasthtml.egg-info/not-zip-safe +0 -0
- {python_fasthtml-0.12.8 → python_fasthtml-0.12.10}/python_fasthtml.egg-info/requires.txt +0 -0
- {python_fasthtml-0.12.8 → python_fasthtml-0.12.10}/python_fasthtml.egg-info/top_level.txt +0 -0
- {python_fasthtml-0.12.8 → python_fasthtml-0.12.10}/setup.cfg +0 -0
- {python_fasthtml-0.12.8 → python_fasthtml-0.12.10}/tests/test_toaster.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
Metadata-Version: 2.
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
2
|
Name: python-fasthtml
|
|
3
|
-
Version: 0.12.
|
|
3
|
+
Version: 0.12.10
|
|
4
4
|
Summary: The fastest way to create an HTML app
|
|
5
5
|
Home-page: https://github.com/AnswerDotAI/fasthtml
|
|
6
6
|
Author: Jeremy Howard and contributors
|
|
@@ -11,6 +11,9 @@ Classifier: Development Status :: 4 - Beta
|
|
|
11
11
|
Classifier: Intended Audience :: Developers
|
|
12
12
|
Classifier: Natural Language :: English
|
|
13
13
|
Classifier: Programming Language :: Python :: 3.10
|
|
14
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
15
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
16
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
14
17
|
Classifier: License :: OSI Approved :: Apache Software License
|
|
15
18
|
Requires-Python: >=3.10
|
|
16
19
|
Description-Content-Type: text/markdown
|
|
@@ -30,6 +33,19 @@ Requires-Dist: ipython; extra == "dev"
|
|
|
30
33
|
Requires-Dist: lxml; extra == "dev"
|
|
31
34
|
Requires-Dist: pysymbol_llm; extra == "dev"
|
|
32
35
|
Requires-Dist: monsterui; extra == "dev"
|
|
36
|
+
Dynamic: author
|
|
37
|
+
Dynamic: author-email
|
|
38
|
+
Dynamic: classifier
|
|
39
|
+
Dynamic: description
|
|
40
|
+
Dynamic: description-content-type
|
|
41
|
+
Dynamic: home-page
|
|
42
|
+
Dynamic: keywords
|
|
43
|
+
Dynamic: license
|
|
44
|
+
Dynamic: license-file
|
|
45
|
+
Dynamic: provides-extra
|
|
46
|
+
Dynamic: requires-dist
|
|
47
|
+
Dynamic: requires-python
|
|
48
|
+
Dynamic: summary
|
|
33
49
|
|
|
34
50
|
# FastHTML
|
|
35
51
|
|
|
@@ -247,6 +247,8 @@ d = { 'settings': { 'branch': 'main',
|
|
|
247
247
|
'fasthtml.xtend.CheckboxX': ('api/xtend.html#checkboxx', 'fasthtml/xtend.py'),
|
|
248
248
|
'fasthtml.xtend.Favicon': ('api/xtend.html#favicon', 'fasthtml/xtend.py'),
|
|
249
249
|
'fasthtml.xtend.Form': ('api/xtend.html#form', 'fasthtml/xtend.py'),
|
|
250
|
+
'fasthtml.xtend.Fragment': ('api/xtend.html#fragment', 'fasthtml/xtend.py'),
|
|
251
|
+
'fasthtml.xtend.Fragment.__init__': ('api/xtend.html#fragment.__init__', 'fasthtml/xtend.py'),
|
|
250
252
|
'fasthtml.xtend.Hidden': ('api/xtend.html#hidden', 'fasthtml/xtend.py'),
|
|
251
253
|
'fasthtml.xtend.HtmxOn': ('api/xtend.html#htmxon', 'fasthtml/xtend.py'),
|
|
252
254
|
'fasthtml.xtend.Nbsp': ('api/xtend.html#nbsp', 'fasthtml/xtend.py'),
|
|
@@ -448,7 +448,7 @@ htmx_exts = {
|
|
|
448
448
|
}
|
|
449
449
|
|
|
450
450
|
# %% ../nbs/api/00_core.ipynb
|
|
451
|
-
htmxsrc = Script(src="https://
|
|
451
|
+
htmxsrc = Script(src="https://cdn.jsdelivr.net/npm/htmx.org@2.0.4/dist/htmx.min.js")
|
|
452
452
|
fhjsscr = Script(src="https://cdn.jsdelivr.net/gh/answerdotai/fasthtml-js@1.0.12/fasthtml.js")
|
|
453
453
|
surrsrc = Script(src="https://cdn.jsdelivr.net/gh/answerdotai/surreal@main/surreal.js")
|
|
454
454
|
scopesrc = Script(src="https://cdn.jsdelivr.net/gh/gnat/css-scope-inline@main/script.js")
|
|
@@ -775,12 +775,13 @@ class MiddlewareBase:
|
|
|
775
775
|
# %% ../nbs/api/00_core.ipynb
|
|
776
776
|
class FtResponse:
|
|
777
777
|
"Wrap an FT response with any Starlette `Response`"
|
|
778
|
-
def __init__(self, content, status_code:int=200, headers=None, cls=HTMLResponse, media_type:str|None=None):
|
|
778
|
+
def __init__(self, content, status_code:int=200, headers=None, cls=HTMLResponse, media_type:str|None=None, background: BackgroundTask | None = None):
|
|
779
779
|
self.content,self.status_code,self.headers = content,status_code,headers
|
|
780
|
-
self.cls,self.media_type = cls,media_type
|
|
780
|
+
self.cls,self.media_type,self.background = cls,media_type,background
|
|
781
781
|
|
|
782
782
|
def __response__(self, req):
|
|
783
783
|
cts,httphdrs,tasks = _xt_cts(req, self.content)
|
|
784
|
+
if not tasks.tasks: tasks = self.background
|
|
784
785
|
headers = {**(self.headers or {}), **httphdrs}
|
|
785
786
|
return self.cls(cts, status_code=self.status_code, headers=headers, media_type=self.media_type, background=tasks)
|
|
786
787
|
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
# %% auto 0
|
|
6
6
|
__all__ = ['sid_scr', 'A', 'AX', 'Form', 'Hidden', 'CheckboxX', 'Script', 'Style', 'double_braces', 'undouble_braces',
|
|
7
7
|
'loose_format', 'ScriptX', 'replace_css_vars', 'StyleX', 'Nbsp', 'Surreal', 'On', 'Prev', 'Now', 'AnyNow',
|
|
8
|
-
'run_js', 'HtmxOn', 'jsd', 'Titled', 'Socials', 'YouTubeEmbed', 'Favicon', 'clear', 'with_sid']
|
|
8
|
+
'run_js', 'HtmxOn', 'jsd', 'Fragment', 'Titled', 'Socials', 'YouTubeEmbed', 'Favicon', 'clear', 'with_sid']
|
|
9
9
|
|
|
10
10
|
# %% ../nbs/api/02_xtend.ipynb
|
|
11
11
|
from dataclasses import dataclass, asdict
|
|
@@ -178,6 +178,11 @@ def jsd(org, repo, root, path, prov='gh', typ='script', ver=None, esm=False, **k
|
|
|
178
178
|
if esm: s += '/+esm'
|
|
179
179
|
return Script(src=s, **kwargs) if typ=='script' else Link(rel='stylesheet', href=s, **kwargs) if typ=='css' else s
|
|
180
180
|
|
|
181
|
+
# %% ../nbs/api/02_xtend.ipynb
|
|
182
|
+
class Fragment(FT):
|
|
183
|
+
"An empty tag, used as a container"
|
|
184
|
+
def __init__(self, *c): super().__init__('', c, {}, void_=True)
|
|
185
|
+
|
|
181
186
|
# %% ../nbs/api/02_xtend.ipynb
|
|
182
187
|
@delegates(ft_hx, keep=True)
|
|
183
188
|
def Titled(title:str="FastHTML app", *args, cls="container", **kwargs)->FT:
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
[build-system]
|
|
2
|
+
requires = ["setuptools>=64.0"]
|
|
3
|
+
build-backend = "setuptools.build_meta"
|
|
4
|
+
|
|
5
|
+
[project]
|
|
6
|
+
name="python-fasthtml"
|
|
7
|
+
requires-python=">=3.10"
|
|
8
|
+
dynamic = [ "keywords", "description", "version", "dependencies", "optional-dependencies", "readme", "license", "authors", "classifiers", "entry-points", "scripts", "urls"]
|
|
9
|
+
|
|
10
|
+
[tool.uv]
|
|
11
|
+
cache-keys = [{ file = "pyproject.toml" }, { file = "settings.ini" }, { file = "setup.py" }]
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
Metadata-Version: 2.
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
2
|
Name: python-fasthtml
|
|
3
|
-
Version: 0.12.
|
|
3
|
+
Version: 0.12.10
|
|
4
4
|
Summary: The fastest way to create an HTML app
|
|
5
5
|
Home-page: https://github.com/AnswerDotAI/fasthtml
|
|
6
6
|
Author: Jeremy Howard and contributors
|
|
@@ -11,6 +11,9 @@ Classifier: Development Status :: 4 - Beta
|
|
|
11
11
|
Classifier: Intended Audience :: Developers
|
|
12
12
|
Classifier: Natural Language :: English
|
|
13
13
|
Classifier: Programming Language :: Python :: 3.10
|
|
14
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
15
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
16
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
14
17
|
Classifier: License :: OSI Approved :: Apache Software License
|
|
15
18
|
Requires-Python: >=3.10
|
|
16
19
|
Description-Content-Type: text/markdown
|
|
@@ -30,6 +33,19 @@ Requires-Dist: ipython; extra == "dev"
|
|
|
30
33
|
Requires-Dist: lxml; extra == "dev"
|
|
31
34
|
Requires-Dist: pysymbol_llm; extra == "dev"
|
|
32
35
|
Requires-Dist: monsterui; extra == "dev"
|
|
36
|
+
Dynamic: author
|
|
37
|
+
Dynamic: author-email
|
|
38
|
+
Dynamic: classifier
|
|
39
|
+
Dynamic: description
|
|
40
|
+
Dynamic: description-content-type
|
|
41
|
+
Dynamic: home-page
|
|
42
|
+
Dynamic: keywords
|
|
43
|
+
Dynamic: license
|
|
44
|
+
Dynamic: license-file
|
|
45
|
+
Dynamic: provides-extra
|
|
46
|
+
Dynamic: requires-dist
|
|
47
|
+
Dynamic: requires-python
|
|
48
|
+
Dynamic: summary
|
|
33
49
|
|
|
34
50
|
# FastHTML
|
|
35
51
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
[DEFAULT]
|
|
2
2
|
repo = fasthtml
|
|
3
|
-
lib_name = fasthtml
|
|
4
|
-
version = 0.12.
|
|
3
|
+
lib_name = python-fasthtml
|
|
4
|
+
version = 0.12.10
|
|
5
5
|
min_python = 3.10
|
|
6
6
|
license = apache2
|
|
7
7
|
requirements = fastcore>=1.7.18 python-dateutil starlette>0.33 oauthlib itsdangerous uvicorn[standard]>=0.30 httpx fastlite>=0.1.1 python-multipart beautifulsoup4
|
|
@@ -22,7 +22,7 @@ licenses = {
|
|
|
22
22
|
}
|
|
23
23
|
statuses = [ '1 - Planning', '2 - Pre-Alpha', '3 - Alpha',
|
|
24
24
|
'4 - Beta', '5 - Production/Stable', '6 - Mature', '7 - Inactive' ]
|
|
25
|
-
py_versions = '3.6 3.7 3.8 3.9 3.10'.split()
|
|
25
|
+
py_versions = '3.6 3.7 3.8 3.9 3.10 3.11 3.12 3.13'.split()
|
|
26
26
|
|
|
27
27
|
requirements = shlex.split(cfg.get('requirements', ''))
|
|
28
28
|
if cfg.get('pip_requirements'): requirements += shlex.split(cfg.get('pip_requirements', ''))
|
|
@@ -31,7 +31,7 @@ lic = licenses.get(cfg['license'].lower(), (cfg['license'], None))
|
|
|
31
31
|
dev_requirements = (cfg.get('dev_requirements') or '').split()
|
|
32
32
|
|
|
33
33
|
setuptools.setup(
|
|
34
|
-
name = '
|
|
34
|
+
name = cfg['lib_name'],
|
|
35
35
|
license = lic[0],
|
|
36
36
|
classifiers = [
|
|
37
37
|
'Development Status :: ' + statuses[int(cfg['status'])],
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{python_fasthtml-0.12.8 → python_fasthtml-0.12.10}/python_fasthtml.egg-info/dependency_links.txt
RENAMED
|
File without changes
|
{python_fasthtml-0.12.8 → python_fasthtml-0.12.10}/python_fasthtml.egg-info/entry_points.txt
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|