fastblocks 0.2.0__tar.gz → 0.2.2__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.
- {fastblocks-0.2.0 → fastblocks-0.2.2}/PKG-INFO +10 -11
- fastblocks-0.2.2/fastblocks/Dockerfile +13 -0
- fastblocks-0.2.2/fastblocks/actions/__init__.py +9 -0
- {fastblocks-0.2.0 → fastblocks-0.2.2}/fastblocks/actions/minify.py +4 -4
- fastblocks-0.2.2/fastblocks/adapters/__init__.py +12 -0
- fastblocks-0.2.2/fastblocks/adapters/admin/__init__.py +3 -0
- {fastblocks-0.2.0 → fastblocks-0.2.2}/fastblocks/adapters/admin/sqladmin.py +11 -14
- fastblocks-0.2.2/fastblocks/adapters/app/__init__.py +3 -0
- fastblocks-0.2.0/fastblocks/adapters/app/main.py → fastblocks-0.2.2/fastblocks/adapters/app/admin.py +14 -19
- fastblocks-0.2.2/fastblocks/adapters/app/main.py +70 -0
- {fastblocks-0.2.0 → fastblocks-0.2.2}/fastblocks/adapters/auth/__init__.py +2 -3
- {fastblocks-0.2.0 → fastblocks-0.2.2}/fastblocks/adapters/auth/_model.py +1 -1
- {fastblocks-0.2.0 → fastblocks-0.2.2}/fastblocks/adapters/auth/firebase.py +1 -1
- fastblocks-0.2.2/fastblocks/adapters/fonts/__init__.py +3 -0
- fastblocks-0.2.2/fastblocks/adapters/style/cirrus.py +1 -0
- fastblocks-0.2.2/fastblocks/adapters/templates/__init__.py +3 -0
- {fastblocks-0.2.0 → fastblocks-0.2.2}/fastblocks/adapters/templates/jinja.py +2 -2
- {fastblocks-0.2.0 → fastblocks-0.2.2}/fastblocks/applications.py +1 -7
- {fastblocks-0.2.0 → fastblocks-0.2.2}/fastblocks/routing.py +0 -2
- {fastblocks-0.2.0 → fastblocks-0.2.2}/pyproject.toml +23 -18
- fastblocks-0.2.0/fastblocks/adapters/admin/__init__.py +0 -3
- fastblocks-0.2.0/fastblocks/adapters/app/__init__.py +0 -3
- fastblocks-0.2.0/fastblocks/adapters/auth/_routes.py +0 -0
- fastblocks-0.2.0/fastblocks/adapters/fonts/__init__.py +0 -3
- fastblocks-0.2.0/fastblocks/adapters/style/__init__.py +0 -0
- fastblocks-0.2.0/fastblocks/adapters/templates/__init__.py +0 -3
- {fastblocks-0.2.0 → fastblocks-0.2.2}/LICENSE +0 -0
- {fastblocks-0.2.0 → fastblocks-0.2.2}/README.md +0 -0
- {fastblocks-0.2.0 → fastblocks-0.2.2}/fastblocks/__init__.py +0 -0
- {fastblocks-0.2.0 → fastblocks-0.2.2}/fastblocks/__main__.py +0 -0
- {fastblocks-0.2.0 → fastblocks-0.2.2}/fastblocks/adapters/admin/_base.py +0 -0
- {fastblocks-0.2.0 → fastblocks-0.2.2}/fastblocks/adapters/app/_base.py +0 -0
- {fastblocks-0.2.0 → fastblocks-0.2.2}/fastblocks/adapters/app/_router.py +0 -0
- {fastblocks-0.2.0 → fastblocks-0.2.2}/fastblocks/adapters/auth/_base.py +0 -0
- /fastblocks-0.2.0/fastblocks/actions/__init__.py → /fastblocks-0.2.2/fastblocks/adapters/auth/_router.py +0 -0
- {fastblocks-0.2.0 → fastblocks-0.2.2}/fastblocks/adapters/fonts/_base.py +0 -0
- {fastblocks-0.2.0 → fastblocks-0.2.2}/fastblocks/adapters/fonts/google.py +0 -0
- {fastblocks-0.2.0/fastblocks/adapters → fastblocks-0.2.2/fastblocks/adapters/sitemap}/__init__.py +0 -0
- {fastblocks-0.2.0 → fastblocks-0.2.2}/fastblocks/adapters/sitemap/sitemap.py +0 -0
- {fastblocks-0.2.0/fastblocks/adapters/sitemap → fastblocks-0.2.2/fastblocks/adapters/style}/__init__.py +0 -0
- {fastblocks-0.2.0 → fastblocks-0.2.2}/fastblocks/adapters/style/_base.py +0 -0
- {fastblocks-0.2.0 → fastblocks-0.2.2}/fastblocks/adapters/style/bulma.py +0 -0
- {fastblocks-0.2.0 → fastblocks-0.2.2}/fastblocks/adapters/templates/_base.py +0 -0
- {fastblocks-0.2.0 → fastblocks-0.2.2}/fastblocks/adapters/templates/_filters.py +0 -0
- {fastblocks-0.2.0 → fastblocks-0.2.2}/fastblocks/middleware.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: fastblocks
|
|
3
|
-
Version: 0.2.
|
|
3
|
+
Version: 0.2.2
|
|
4
4
|
Summary: Starlette based app for the rapid delivery HTMX/Jinja template blocks
|
|
5
5
|
Keywords: starlette htmx jinja httpx fastapi sqladmin sqlmodel pydantic sqlalchemy redis
|
|
6
6
|
Author-Email: lesleslie <les@wedgwoodwebworks.com>
|
|
@@ -23,25 +23,24 @@ Requires-Dist: asgi-logger>=0.1.0
|
|
|
23
23
|
Requires-Dist: brotli-asgi>=1.4.0
|
|
24
24
|
Requires-Dist: secure>=0.3.0
|
|
25
25
|
Requires-Dist: starlette-csrf>=3.0.0
|
|
26
|
-
Requires-Dist:
|
|
27
|
-
Requires-Dist: cashews>=6.3.0
|
|
26
|
+
Requires-Dist: cashews>=6.4.0
|
|
28
27
|
Requires-Dist: starception>=1.2.1
|
|
29
|
-
Requires-Dist: pydantic>=2.
|
|
28
|
+
Requires-Dist: pydantic>=2.5.3
|
|
30
29
|
Requires-Dist: starlette-decorouter>=1.0.0
|
|
31
30
|
Requires-Dist: pyfiglet>=1.0.2
|
|
32
|
-
Requires-Dist:
|
|
33
|
-
Requires-Dist:
|
|
34
|
-
Requires-Dist: acb[cache,requests,secrets,sql,storage]>=0.3.4
|
|
35
|
-
Requires-Dist: uvicorn>=0.23.2
|
|
31
|
+
Requires-Dist: starlette>=0.34.0
|
|
32
|
+
Requires-Dist: uvicorn>=0.25.0
|
|
36
33
|
Requires-Dist: htmlmin>=0.1.12
|
|
37
34
|
Requires-Dist: jsmin>=3.0.1
|
|
38
35
|
Requires-Dist: libsass>=0.22.0
|
|
39
|
-
Requires-Dist: aiohttp>=3.9.
|
|
36
|
+
Requires-Dist: aiohttp>=3.9.1
|
|
37
|
+
Requires-Dist: acb[cache,requests,secrets,sql,storage]>=0.4.2
|
|
38
|
+
Requires-Dist: starlette-async-jinja>=1.4.2
|
|
40
39
|
Requires-Dist: asgi-sitemaps>=1.0.0; extra == "sitemap"
|
|
41
|
-
Requires-Dist: firebase-admin>=6.
|
|
40
|
+
Requires-Dist: firebase-admin>=6.3.0; extra == "auth"
|
|
42
41
|
Requires-Dist: beautifulsoup4>=4.12.2; extra == "style"
|
|
43
42
|
Requires-Dist: tinycss2>=1.2.1; extra == "style"
|
|
44
|
-
Requires-Dist: sqladmin>=0.
|
|
43
|
+
Requires-Dist: sqladmin>=0.16.0; extra == "admin"
|
|
45
44
|
Provides-Extra: sitemap
|
|
46
45
|
Provides-Extra: auth
|
|
47
46
|
Provides-Extra: style
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
FROM python:3.12
|
|
2
|
+
|
|
3
|
+
# Copy local code to the container image.
|
|
4
|
+
ENV APP_HOME /app
|
|
5
|
+
WORKDIR $APP_HOME
|
|
6
|
+
COPY . ./
|
|
7
|
+
|
|
8
|
+
# Install production dependencies.
|
|
9
|
+
RUN pip install --upgrade pipx
|
|
10
|
+
RUN pipx install pdm
|
|
11
|
+
RUN pdm install
|
|
12
|
+
|
|
13
|
+
uvicorn --port $PORT --host 0.0.0.0 main:app
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
from acb.actions import compress
|
|
2
|
+
from acb.actions import encode
|
|
3
|
+
from acb.actions import hash
|
|
4
|
+
from acb.actions import register_actions
|
|
5
|
+
from fastblocks.actions import minify
|
|
6
|
+
|
|
7
|
+
__all__: list[str] = ["encode", "hash", "compress", "minify"]
|
|
8
|
+
|
|
9
|
+
register_actions()
|
|
@@ -5,16 +5,16 @@ from jsmin import jsmin as min_js
|
|
|
5
5
|
|
|
6
6
|
class Minify:
|
|
7
7
|
@staticmethod
|
|
8
|
-
def js(js: str):
|
|
8
|
+
def js(js: str) -> str:
|
|
9
9
|
return min_js(js)
|
|
10
10
|
|
|
11
11
|
@staticmethod
|
|
12
|
-
def html(html: str):
|
|
12
|
+
def html(html: str) -> str:
|
|
13
13
|
return min_html(html)
|
|
14
14
|
|
|
15
15
|
@staticmethod
|
|
16
|
-
def scss(css: str):
|
|
17
|
-
return sass.compile(string=css, output_style="compressed")
|
|
16
|
+
def scss(css: str) -> str:
|
|
17
|
+
return sass.compile(string=css, output_style="compressed") # type: ignore
|
|
18
18
|
|
|
19
19
|
|
|
20
20
|
minify = Minify()
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
from acb.adapters import cache
|
|
2
|
+
from acb.adapters import logger
|
|
3
|
+
from acb.adapters import register_adapters
|
|
4
|
+
from acb.adapters import requests
|
|
5
|
+
from acb.adapters import secrets
|
|
6
|
+
from acb.adapters import sql
|
|
7
|
+
from acb.adapters import storage
|
|
8
|
+
from . import app
|
|
9
|
+
|
|
10
|
+
__all__: list[str] = ["logger", "cache", "secrets", "storage", "requests", "sql", "app"]
|
|
11
|
+
|
|
12
|
+
register_adapters()
|
|
@@ -2,7 +2,7 @@ import typing as t
|
|
|
2
2
|
from typing import override
|
|
3
3
|
|
|
4
4
|
from acb.adapters.logger import Logger
|
|
5
|
-
from acb.adapters.
|
|
5
|
+
from acb.adapters.sql import SqlModels
|
|
6
6
|
from acb.adapters.storage import Storage
|
|
7
7
|
from acb.config import Config
|
|
8
8
|
from acb.config import Settings
|
|
@@ -25,7 +25,7 @@ from ..templates import Templates
|
|
|
25
25
|
|
|
26
26
|
|
|
27
27
|
class AdminSettings(Settings):
|
|
28
|
-
requires: list[str] = ["app", "storage", "sql", "auth"]
|
|
28
|
+
requires: t.Optional[list[str]] = ["app", "storage", "sql", "auth"]
|
|
29
29
|
title: str = "Fastblocks Dashboard"
|
|
30
30
|
roles: t.Optional[list[str]] = ["admin", "owner", "contributor", "viewer"]
|
|
31
31
|
|
|
@@ -41,20 +41,17 @@ class Admin(SqlAdmin):
|
|
|
41
41
|
super().__init__(app, **kwargs)
|
|
42
42
|
|
|
43
43
|
@depends.inject
|
|
44
|
-
async def init(self, models:
|
|
44
|
+
async def init(self, models: SqlModels = depends()) -> None: # type: ignore
|
|
45
45
|
...
|
|
46
46
|
|
|
47
|
-
@
|
|
48
|
-
def init_templating_engine(
|
|
49
|
-
self
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
tmpls.env.globals["is_list"] = lambda x: isinstance(x, list) # type: ignore
|
|
56
|
-
tmpls.env.globals["get_object_identifier"] = get_object_identifier
|
|
57
|
-
return tmpls
|
|
47
|
+
@override
|
|
48
|
+
def init_templating_engine(self) -> AsyncJinja2Templates: # type: ignore
|
|
49
|
+
self.templates.env.globals["min"] = min
|
|
50
|
+
self.templates.env.globals["zip"] = zip
|
|
51
|
+
self.templates.env.globals["admin"] = self
|
|
52
|
+
self.templates.env.globals["is_list"] = lambda x: isinstance(x, list) # type: ignore
|
|
53
|
+
self.templates.globals["get_object_identifier"] = get_object_identifier
|
|
54
|
+
return self.templates
|
|
58
55
|
|
|
59
56
|
@override
|
|
60
57
|
async def login(self, request: Request) -> (RedirectResponse | Response):
|
fastblocks-0.2.0/fastblocks/adapters/app/main.py → fastblocks-0.2.2/fastblocks/adapters/app/admin.py
RENAMED
|
@@ -2,33 +2,27 @@ from contextlib import asynccontextmanager
|
|
|
2
2
|
from time import time
|
|
3
3
|
|
|
4
4
|
from acb import adapter_registry
|
|
5
|
-
from acb import register_package
|
|
6
5
|
from acb.adapters.cache import Cache
|
|
7
6
|
from acb.adapters.logger import Logger
|
|
8
|
-
from acb.adapters.
|
|
7
|
+
from acb.adapters.sql import SqlModels
|
|
9
8
|
from acb.adapters.sql import Sql
|
|
10
9
|
from acb.config import Config
|
|
11
10
|
from acb.depends import depends
|
|
12
|
-
from fastblocks.routing import router_registry
|
|
13
|
-
|
|
14
11
|
from fastblocks.adapters.admin import Admin
|
|
15
12
|
from fastblocks.adapters.auth import Auth
|
|
16
13
|
from fastblocks.adapters.templates import Templates
|
|
17
|
-
from middleware import middlewares
|
|
18
|
-
from sqlalchemy.exc import IntegrityError
|
|
19
14
|
from fastblocks.applications import FastBlocks
|
|
15
|
+
from fastblocks.routing import router_registry
|
|
16
|
+
from middleware import middlewares
|
|
20
17
|
from ._base import AppBase
|
|
21
18
|
from ._base import AppBaseSettings
|
|
22
19
|
|
|
23
|
-
register_package()
|
|
24
|
-
|
|
25
20
|
main_start = time()
|
|
26
21
|
|
|
27
22
|
|
|
28
23
|
class AppSettings(AppBaseSettings):
|
|
29
24
|
style: str = "bulma"
|
|
30
25
|
theme: str = "light"
|
|
31
|
-
wtf_csrf_time_limit: int = 172_800
|
|
32
26
|
media_types: list[str] = ["image", "video", "audio"]
|
|
33
27
|
video_exts: list[str] = [".webm", ".m4v", ".mp4"]
|
|
34
28
|
image_exts: list[str] = [".jpeg", ".jpg", ".png", ".webp"]
|
|
@@ -50,6 +44,7 @@ class AppSettings(AppBaseSettings):
|
|
|
50
44
|
danger="exclamation-circle",
|
|
51
45
|
warning="exclamation-triangle",
|
|
52
46
|
)
|
|
47
|
+
wtf_csrf_time_limit: int = 172_800
|
|
53
48
|
|
|
54
49
|
|
|
55
50
|
class App(FastBlocks, AppBase):
|
|
@@ -74,7 +69,7 @@ class App(FastBlocks, AppBase):
|
|
|
74
69
|
self,
|
|
75
70
|
config: Config = depends(), # type: ignore
|
|
76
71
|
logger: Logger = depends(), # type: ignore
|
|
77
|
-
models:
|
|
72
|
+
models: SqlModels = depends(), # type: ignore
|
|
78
73
|
cache: Cache = depends(), # type: ignore
|
|
79
74
|
sql: Sql = depends(), # type: ignore
|
|
80
75
|
auth: Auth = depends(), # type: ignore
|
|
@@ -82,15 +77,15 @@ class App(FastBlocks, AppBase):
|
|
|
82
77
|
):
|
|
83
78
|
logger.info("Application starting...")
|
|
84
79
|
if next(a for a in adapter_registry.get() if a.name == "admin" and a.installed):
|
|
85
|
-
try:
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
except IntegrityError:
|
|
93
|
-
|
|
80
|
+
# try:
|
|
81
|
+
# logger.info("Creating admin superuser...")
|
|
82
|
+
# await models.create_user(
|
|
83
|
+
# gmail=config.admin.gmail,
|
|
84
|
+
# email=config.admin.email,
|
|
85
|
+
# role="admin",
|
|
86
|
+
# )
|
|
87
|
+
# except IntegrityError:
|
|
88
|
+
# logger.debug("Admin superuser exists")
|
|
94
89
|
admin.__init__(
|
|
95
90
|
app=self,
|
|
96
91
|
engine=sql.engine,
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
from contextlib import asynccontextmanager
|
|
2
|
+
from time import time
|
|
3
|
+
|
|
4
|
+
from acb.adapters.cache import Cache
|
|
5
|
+
from acb.adapters.logger import Logger
|
|
6
|
+
from acb.adapters.storage import Storage
|
|
7
|
+
from acb.config import Config
|
|
8
|
+
from acb.depends import depends
|
|
9
|
+
from fastblocks.adapters.templates import Templates
|
|
10
|
+
from fastblocks.applications import FastBlocks
|
|
11
|
+
from fastblocks.routing import router_registry
|
|
12
|
+
from middleware import middlewares
|
|
13
|
+
from ._base import AppBase
|
|
14
|
+
from ._base import AppBaseSettings
|
|
15
|
+
|
|
16
|
+
main_start = time()
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
class AppSettings(AppBaseSettings):
|
|
20
|
+
style: str = "bulma"
|
|
21
|
+
theme: str = "light"
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
class App(FastBlocks, AppBase):
|
|
25
|
+
config: Config = depends() # type: ignore
|
|
26
|
+
templates: Templates = depends() # type: ignore
|
|
27
|
+
|
|
28
|
+
def __init__(self) -> None:
|
|
29
|
+
super().__init__(
|
|
30
|
+
debug=self.config.debug.app,
|
|
31
|
+
middleware=middlewares(),
|
|
32
|
+
lifespan=self.lifespan,
|
|
33
|
+
)
|
|
34
|
+
self.templates = self.templates.app
|
|
35
|
+
|
|
36
|
+
async def init(self) -> None:
|
|
37
|
+
for router in router_registry.get():
|
|
38
|
+
super().routes.append(router)
|
|
39
|
+
|
|
40
|
+
@depends.inject
|
|
41
|
+
@asynccontextmanager
|
|
42
|
+
async def lifespan(
|
|
43
|
+
self,
|
|
44
|
+
logger: Logger = depends(), # type: ignore
|
|
45
|
+
cache: Cache = depends(), # type: ignore
|
|
46
|
+
storage: Storage = depends(), # type: ignore
|
|
47
|
+
):
|
|
48
|
+
logger.info("Application starting...")
|
|
49
|
+
|
|
50
|
+
async def post_startup() -> None:
|
|
51
|
+
if not self.config.deployed:
|
|
52
|
+
from aioconsole import aprint
|
|
53
|
+
from pyfiglet import Figlet # type: ignore
|
|
54
|
+
|
|
55
|
+
fig = Figlet(font="slant", width=90, justify="center")
|
|
56
|
+
await aprint(f"\n\n{fig.renderText(self.config.app.name.upper())}\n")
|
|
57
|
+
if not self.config.debug.production and self.config.app.deployed:
|
|
58
|
+
logger.info("Entering production mode...")
|
|
59
|
+
|
|
60
|
+
await post_startup()
|
|
61
|
+
main_start_time = time() - main_start
|
|
62
|
+
logger.info(f"App started in {main_start_time} s")
|
|
63
|
+
yield
|
|
64
|
+
await cache.close()
|
|
65
|
+
logger.error("Application shut down")
|
|
66
|
+
|
|
67
|
+
|
|
68
|
+
depends.set(App)
|
|
69
|
+
|
|
70
|
+
app = depends.get(App)
|
|
@@ -1,14 +1,13 @@
|
|
|
1
|
-
from acb.
|
|
1
|
+
from acb.adapters import load_adapter
|
|
2
2
|
from ._model import UserModel
|
|
3
3
|
from ._base import current_user
|
|
4
4
|
|
|
5
5
|
|
|
6
6
|
__all__: list[str] = [
|
|
7
7
|
"Auth",
|
|
8
|
-
"AuthSettings",
|
|
9
8
|
"UserModel",
|
|
10
9
|
"current_user",
|
|
11
10
|
]
|
|
12
11
|
|
|
13
12
|
|
|
14
|
-
Auth
|
|
13
|
+
Auth = load_adapter()
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
# cirrus-ui style placeholder
|
|
@@ -9,7 +9,7 @@ from re import search
|
|
|
9
9
|
|
|
10
10
|
from jinja_partials import register_starlette_extensions # type: ignore
|
|
11
11
|
|
|
12
|
-
from acb import adapters_path
|
|
12
|
+
# from acb import adapters_path
|
|
13
13
|
from acb import base_path
|
|
14
14
|
from acb.adapters.cache import Cache
|
|
15
15
|
from acb.adapters.logger import Logger
|
|
@@ -259,7 +259,7 @@ class TemplatesSettings(TemplatesBaseSettings):
|
|
|
259
259
|
requires: t.Optional[list[str]] = ["cache", "storage"]
|
|
260
260
|
app: t.Optional[EnvTemplatePaths] = EnvTemplatePaths(root=base_path)
|
|
261
261
|
admin: t.Optional[EnvTemplatePaths] = EnvTemplatePaths(
|
|
262
|
-
root=
|
|
262
|
+
root=base_path.parent / "admin" / "_templates"
|
|
263
263
|
)
|
|
264
264
|
loader: t.Optional[str] = None
|
|
265
265
|
extensions: list[Extension] = []
|
|
@@ -1,13 +1,10 @@
|
|
|
1
1
|
import typing as t
|
|
2
|
-
from pathlib import Path
|
|
3
2
|
from platform import system
|
|
4
3
|
|
|
5
|
-
from acb import register_package
|
|
6
|
-
from acb.adapters.logger._base import ExternalLogger
|
|
7
4
|
from acb.adapters.logger import Logger
|
|
5
|
+
from acb.adapters.logger._base import ExternalLogger
|
|
8
6
|
from acb.config import Config
|
|
9
7
|
from acb.depends import depends
|
|
10
|
-
|
|
11
8
|
from asgi_htmx import HtmxRequest as Request
|
|
12
9
|
from starception import add_link_template
|
|
13
10
|
from starception import install_error_handler
|
|
@@ -20,8 +17,6 @@ from starlette.responses import Response
|
|
|
20
17
|
from starlette.types import ASGIApp
|
|
21
18
|
from .middleware import middlewares
|
|
22
19
|
|
|
23
|
-
register_package()
|
|
24
|
-
|
|
25
20
|
match system():
|
|
26
21
|
case "Windows":
|
|
27
22
|
add_link_template("pycharm", "pycharm64.exe --line {lineno} {path}")
|
|
@@ -39,7 +34,6 @@ class FastBlocks(Starlette):
|
|
|
39
34
|
|
|
40
35
|
def __init__(self, **kwargs: t.Any) -> None:
|
|
41
36
|
super().__init__(**kwargs)
|
|
42
|
-
register_package(Path.cwd())
|
|
43
37
|
set_editor("pycharm")
|
|
44
38
|
install_error_handler()
|
|
45
39
|
loggers = ["uvicorn", "uvicorn.access", "uvicorn.error"]
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "fastblocks"
|
|
3
|
-
version = "0.2.
|
|
3
|
+
version = "0.2.2"
|
|
4
4
|
description = "Starlette based app for the rapid delivery HTMX/Jinja template blocks"
|
|
5
5
|
authors = [
|
|
6
6
|
{ name = "lesleslie", email = "les@wedgwoodwebworks.com" },
|
|
@@ -41,20 +41,19 @@ dependencies = [
|
|
|
41
41
|
"brotli-asgi>=1.4.0",
|
|
42
42
|
"secure>=0.3.0",
|
|
43
43
|
"starlette-csrf>=3.0.0",
|
|
44
|
-
"
|
|
45
|
-
"cashews>=6.3.0",
|
|
44
|
+
"cashews>=6.4.0",
|
|
46
45
|
"starception>=1.2.1",
|
|
47
|
-
"pydantic>=2.
|
|
46
|
+
"pydantic>=2.5.3",
|
|
48
47
|
"starlette-decorouter>=1.0.0",
|
|
49
48
|
"pyfiglet>=1.0.2",
|
|
50
|
-
"
|
|
51
|
-
"
|
|
52
|
-
"acb[cache,requests,secrets,sql,storage]>=0.3.4",
|
|
53
|
-
"uvicorn>=0.23.2",
|
|
49
|
+
"starlette>=0.34.0",
|
|
50
|
+
"uvicorn>=0.25.0",
|
|
54
51
|
"htmlmin>=0.1.12",
|
|
55
52
|
"jsmin>=3.0.1",
|
|
56
53
|
"libsass>=0.22.0",
|
|
57
|
-
"aiohttp>=3.9.
|
|
54
|
+
"aiohttp>=3.9.1",
|
|
55
|
+
"acb[cache,requests,secrets,sql,storage]>=0.4.2",
|
|
56
|
+
"starlette-async-jinja>=1.4.2",
|
|
58
57
|
]
|
|
59
58
|
|
|
60
59
|
[project.optional-dependencies]
|
|
@@ -62,14 +61,14 @@ sitemap = [
|
|
|
62
61
|
"asgi-sitemaps>=1.0.0",
|
|
63
62
|
]
|
|
64
63
|
auth = [
|
|
65
|
-
"firebase-admin>=6.
|
|
64
|
+
"firebase-admin>=6.3.0",
|
|
66
65
|
]
|
|
67
66
|
style = [
|
|
68
67
|
"beautifulsoup4>=4.12.2",
|
|
69
68
|
"tinycss2>=1.2.1",
|
|
70
69
|
]
|
|
71
70
|
admin = [
|
|
72
|
-
"sqladmin>=0.
|
|
71
|
+
"sqladmin>=0.16.0",
|
|
73
72
|
]
|
|
74
73
|
|
|
75
74
|
[project.license]
|
|
@@ -83,7 +82,7 @@ config = [
|
|
|
83
82
|
|
|
84
83
|
[tool.pdm.dev-dependencies]
|
|
85
84
|
dev = [
|
|
86
|
-
"crackerjack>=0.7.
|
|
85
|
+
"crackerjack>=0.7.19",
|
|
87
86
|
]
|
|
88
87
|
|
|
89
88
|
[tool.ruff]
|
|
@@ -114,13 +113,14 @@ paths = [
|
|
|
114
113
|
deps-file = "pyproject.toml"
|
|
115
114
|
exclude-deps = [
|
|
116
115
|
"pytest",
|
|
117
|
-
"
|
|
118
|
-
"aiohttp",
|
|
116
|
+
"pdm-bump",
|
|
119
117
|
"pre-commit",
|
|
120
|
-
"starlette-decorouter",
|
|
121
118
|
"libsass",
|
|
122
|
-
"pdm
|
|
119
|
+
"pdm",
|
|
123
120
|
"autotyping",
|
|
121
|
+
"aiohttp",
|
|
122
|
+
"starlette-decorouter",
|
|
123
|
+
"pyfiglet",
|
|
124
124
|
]
|
|
125
125
|
|
|
126
126
|
[tool.refurb]
|
|
@@ -131,10 +131,10 @@ target = [
|
|
|
131
131
|
"fastblocks",
|
|
132
132
|
]
|
|
133
133
|
skips = [
|
|
134
|
+
"B404",
|
|
134
135
|
"B403",
|
|
135
|
-
"B113",
|
|
136
136
|
"B603",
|
|
137
|
-
"
|
|
137
|
+
"B113",
|
|
138
138
|
]
|
|
139
139
|
|
|
140
140
|
[tool.pyright]
|
|
@@ -156,6 +156,11 @@ reportPrivateUsage = "warning"
|
|
|
156
156
|
pythonVersion = "3.12"
|
|
157
157
|
pythonPlatform = "Darwin"
|
|
158
158
|
|
|
159
|
+
[tool.codespell]
|
|
160
|
+
skip = "*/data/*"
|
|
161
|
+
quiet-level = 3
|
|
162
|
+
ignore-words-list = "crate,uptodate"
|
|
163
|
+
|
|
159
164
|
[build-system]
|
|
160
165
|
requires = [
|
|
161
166
|
"pdm-backend",
|
|
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
|
{fastblocks-0.2.0/fastblocks/adapters → fastblocks-0.2.2/fastblocks/adapters/sitemap}/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|