From c281fd686e9cc6da57dc1432096789a4981dd3a1 Mon Sep 17 00:00:00 2001 From: Francis Secada Date: Fri, 17 Jan 2025 23:09:11 -0500 Subject: [PATCH] WIP: initial builds for site components --- .pre-commit-config.yaml | 11 +++--- core_requirements.in | 1 + core_requirements.txt | 6 ++-- dev_requirements.txt | 2 +- pyproject.toml | 7 ++-- src/app.py | 2 +- src/backend/core/core.py | 2 +- src/backend/site/router.py | 2 +- src/backend/utils.py | 2 +- .../templates/components/main/Base.jinja | 23 ++++++++++++ .../templates/components/main/Header.jinja | 13 ++++--- .../templates/components/main/Nav.jinja | 8 +++++ .../templates/components/main/Scripts.jinja | 3 ++ .../components/main/Stylesheets.jinja | 9 +++++ .../templates/components/snippets/Base.jinja | 17 --------- .../templates/components/snippets/Css.jinja | 3 +- .../templates/components/snippets/Js.jinja | 8 ++--- .../components/snippets/NavbarBrand.jinja | 18 ++++++++++ .../components/snippets/NavbarMenu.jinja | 17 +++++++++ src/frontend/templates/home.html | 3 ++ uv.lock | 35 ++++++++++++------- 21 files changed, 137 insertions(+), 55 deletions(-) create mode 100644 src/frontend/templates/components/main/Base.jinja create mode 100644 src/frontend/templates/components/main/Scripts.jinja create mode 100644 src/frontend/templates/components/main/Stylesheets.jinja delete mode 100644 src/frontend/templates/components/snippets/Base.jinja create mode 100644 src/frontend/templates/components/snippets/NavbarBrand.jinja create mode 100644 src/frontend/templates/components/snippets/NavbarMenu.jinja create mode 100644 src/frontend/templates/home.html diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 7f45b35..ba5615b 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -12,15 +12,18 @@ repos: - id: end-of-file-fixer - id: mixed-line-ending - id: trailing-whitespace -- hooks: - - id: add-trailing-comma - repo: 'https://github.com/asottile/add-trailing-comma' - rev: v3.1.0 +- repo: https://github.com/aufdenpunkt/pre-commit-js-beautify + rev: 1.13.0 # represents the used version of JS Beautify as well + hooks: + - id: js-beautify + args: ['--html', '--wrap-attributes=force-aligned', '--wrap-line-length=80', "--templating=django"] + files: \.(html|jinja)$ - hooks: - id: pyupgrade repo: 'https://github.com/asottile/pyupgrade' rev: v3.19.1 + - repo: https://github.com/charliermarsh/ruff-pre-commit # Ruff version. rev: "v0.9.2" diff --git a/core_requirements.in b/core_requirements.in index 78cd950..8fc37eb 100644 --- a/core_requirements.in +++ b/core_requirements.in @@ -12,6 +12,7 @@ httpx[socks] httpx-html html5lib hypercorn; platform_system == 'Windows' +itsdangerous jinjax loguru lxml diff --git a/core_requirements.txt b/core_requirements.txt index 57b9ff7..ea09d88 100644 --- a/core_requirements.txt +++ b/core_requirements.txt @@ -10,7 +10,7 @@ annotated-types==0.7.0 # via # pydantic # sqlmodel-crud-utilities -anthropic==0.43.0 +anthropic==0.43.1 # via pydantic-ai-slim anyio==4.8.0 # via @@ -154,6 +154,8 @@ importlib-metadata==8.5.0 # via # opentelemetry-api # pyppeteer +itsdangerous==2.2.0 + # via -r core_requirements.in jinja2==3.1.5 # via jinjax jinjax==0.48 @@ -193,7 +195,7 @@ mistralai==1.3.1 # via pydantic-ai-slim mypy-extensions==1.0.0 # via typing-inspect -openai==1.59.7 +openai==1.59.8 # via pydantic-ai-slim opentelemetry-api==1.29.0 # via diff --git a/dev_requirements.txt b/dev_requirements.txt index 1e2355d..8c774ee 100644 --- a/dev_requirements.txt +++ b/dev_requirements.txt @@ -398,7 +398,7 @@ urllib3==1.26.20 # via # -c core_requirements.txt # requests -virtualenv==20.29.0 +virtualenv==20.29.1 # via pre-commit wcwidth==0.2.13 # via diff --git a/pyproject.toml b/pyproject.toml index 1483bd4..dd09d47 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -79,7 +79,7 @@ dependencies = [ "aiomysql==0.2.0", "amqp==5.3.1", "annotated-types==0.7.0", - "anthropic==0.43.0", + "anthropic==0.43.1", "anyio==4.8.0", "appdirs==1.4.4", "asgiref==3.8.1", @@ -124,6 +124,7 @@ dependencies = [ "hyperframe==6.0.1", "idna==3.10", "importlib-metadata==8.5.0", + "itsdangerous==2.2.0", "jinja2==3.1.5", "jinjax==0.48", "jiter==0.8.2", @@ -139,7 +140,7 @@ dependencies = [ "mdurl==0.1.2", "mistralai==1.3.1", "mypy-extensions==1.0.0", - "openai==1.59.7", + "openai==1.59.8", "opentelemetry-api==1.29.0", "opentelemetry-exporter-otlp-proto-common==1.29.0", "opentelemetry-exporter-otlp-proto-http==1.29.0", @@ -332,7 +333,7 @@ dev = [ "typing-extensions==4.12.2", "uri-template==1.3.0", "urllib3==1.26.20", - "virtualenv==20.29.0", + "virtualenv==20.29.1", "wcwidth==0.2.13", "webcolors==24.11.1", "webencodings==0.5.1", diff --git a/src/app.py b/src/app.py index e8dbb38..7df692e 100644 --- a/src/app.py +++ b/src/app.py @@ -121,7 +121,7 @@ if app_settings.DEBUG in (True, "True"): app.add_middleware( DebugToolbarMiddleware, - panels=["app.SQLModelPanel"], + panels=["app.SQLAModelPanel"], disable_panels=["debug_toolbar.panels.profiling.ProfilingPanel"], ) diff --git a/src/backend/core/core.py b/src/backend/core/core.py index fa86e76..ffbdeb6 100644 --- a/src/backend/core/core.py +++ b/src/backend/core/core.py @@ -24,7 +24,7 @@ class SwotAgentDeps(Base): request: Any | None = None update_status_func: Callable | None = None - tool_history: list[str] + tool_history: list[str] | None = None swot_agent = Agent( diff --git a/src/backend/site/router.py b/src/backend/site/router.py index 6950ba3..53df4e0 100644 --- a/src/backend/site/router.py +++ b/src/backend/site/router.py @@ -26,7 +26,7 @@ catalog = Catalog(jinja_env=templates.env) list( map( lambda folder: catalog.add_folder( - os.path.join(frontend, "components", folder), # noqa + os.path.join(frontend, "templates", "components", folder), # noqa ), ("main", "forms", "snippets"), ), diff --git a/src/backend/utils.py b/src/backend/utils.py index 733bbc5..0c36e65 100644 --- a/src/backend/utils.py +++ b/src/backend/utils.py @@ -57,7 +57,7 @@ def get_val(val: str, default: str | int | bool | None = None, **kwargs): val = os.environ.get(val) elif config(val, None, **kwargs) is not None: val = config(val) - elif default: + elif default is not None: val = default else: raise ValueError( diff --git a/src/frontend/templates/components/main/Base.jinja b/src/frontend/templates/components/main/Base.jinja new file mode 100644 index 0000000..215a446 --- /dev/null +++ b/src/frontend/templates/components/main/Base.jinja @@ -0,0 +1,23 @@ + + +
+ + + + + + + + integrity="sha512-z3gLpd7yknf1YoNbCzqRKc4qyor8gaKU1qmn+CShxbuBusANI9QpRohGBreCFkKxLhei6S9CQXFEbbKuqLg0DA==" + crossorigin="anonymous" + referrerpolicy="no-referrer" + +
+ + + {{ content }} + + + \ No newline at end of file diff --git a/src/frontend/templates/components/main/Header.jinja b/src/frontend/templates/components/main/Header.jinja index 184675b..f85680b 100644 --- a/src/frontend/templates/components/main/Header.jinja +++ b/src/frontend/templates/components/main/Header.jinja @@ -1,9 +1,12 @@ {# def title: str #} + - - - {{ title }} - {{ slot }} - + + + {{ title }} + {{ content }} + + \ No newline at end of file diff --git a/src/frontend/templates/components/main/Nav.jinja b/src/frontend/templates/components/main/Nav.jinja index e69de29..e3f0465 100644 --- a/src/frontend/templates/components/main/Nav.jinja +++ b/src/frontend/templates/components/main/Nav.jinja @@ -0,0 +1,8 @@ + \ No newline at end of file diff --git a/src/frontend/templates/components/main/Scripts.jinja b/src/frontend/templates/components/main/Scripts.jinja new file mode 100644 index 0000000..7aecb53 --- /dev/null +++ b/src/frontend/templates/components/main/Scripts.jinja @@ -0,0 +1,3 @@ +type="modules" + + \ No newline at end of file diff --git a/src/frontend/templates/components/main/Stylesheets.jinja b/src/frontend/templates/components/main/Stylesheets.jinja new file mode 100644 index 0000000..4d75f33 --- /dev/null +++ b/src/frontend/templates/components/main/Stylesheets.jinja @@ -0,0 +1,9 @@ + + + + + integrity="sha512-z3gLpd7yknf1YoNbCzqRKc4qyor8gaKU1qmn+CShxbuBusANI9QpRohGBreCFkKxLhei6S9CQXFEbbKuqLg0DA==" + crossorigin="anonymous" + referrerpolicy="no-referrer" + \ No newline at end of file diff --git a/src/frontend/templates/components/snippets/Base.jinja b/src/frontend/templates/components/snippets/Base.jinja deleted file mode 100644 index f1ff21b..0000000 --- a/src/frontend/templates/components/snippets/Base.jinja +++ /dev/null @@ -1,17 +0,0 @@ - - -
- - - - - - integrity="sha512-z3gLpd7yknf1YoNbCzqRKc4qyor8gaKU1qmn+CShxbuBusANI9QpRohGBreCFkKxLhei6S9CQXFEbbKuqLg0DA==" - crossorigin="anonymous" - referrerpolicy="no-referrer" - -
- - - - diff --git a/src/frontend/templates/components/snippets/Css.jinja b/src/frontend/templates/components/snippets/Css.jinja index 6fdac76..c29534c 100644 --- a/src/frontend/templates/components/snippets/Css.jinja +++ b/src/frontend/templates/components/snippets/Css.jinja @@ -5,5 +5,4 @@ + {{ content }} /> \ No newline at end of file diff --git a/src/frontend/templates/components/snippets/Js.jinja b/src/frontend/templates/components/snippets/Js.jinja index 2e48ba7..a5cc67a 100644 --- a/src/frontend/templates/components/snippets/Js.jinja +++ b/src/frontend/templates/components/snippets/Js.jinja @@ -1,8 +1,6 @@ {# def - url: str + url: str, #} - + \ No newline at end of file diff --git a/src/frontend/templates/components/snippets/NavbarBrand.jinja b/src/frontend/templates/components/snippets/NavbarBrand.jinja new file mode 100644 index 0000000..9968b66 --- /dev/null +++ b/src/frontend/templates/components/snippets/NavbarBrand.jinja @@ -0,0 +1,18 @@ +{# def + url: str, + brand_title: str +#} + + \ No newline at end of file diff --git a/src/frontend/templates/components/snippets/NavbarMenu.jinja b/src/frontend/templates/components/snippets/NavbarMenu.jinja new file mode 100644 index 0000000..be61ec3 --- /dev/null +++ b/src/frontend/templates/components/snippets/NavbarMenu.jinja @@ -0,0 +1,17 @@ + \ No newline at end of file diff --git a/src/frontend/templates/home.html b/src/frontend/templates/home.html new file mode 100644 index 0000000..c362309 --- /dev/null +++ b/src/frontend/templates/home.html @@ -0,0 +1,3 @@ + +

foo bar

+ \ No newline at end of file diff --git a/uv.lock b/uv.lock index 97b92fc..d510f54 100644 --- a/uv.lock +++ b/uv.lock @@ -55,6 +55,7 @@ dependencies = [ { name = "hyperframe" }, { name = "idna" }, { name = "importlib-metadata" }, + { name = "itsdangerous" }, { name = "jinja2" }, { name = "jinjax" }, { name = "jiter" }, @@ -276,7 +277,7 @@ requires-dist = [ { name = "aiomysql", specifier = "==0.2.0" }, { name = "amqp", specifier = "==5.3.1" }, { name = "annotated-types", specifier = "==0.7.0" }, - { name = "anthropic", specifier = "==0.43.0" }, + { name = "anthropic", specifier = "==0.43.1" }, { name = "anyio", specifier = "==4.8.0" }, { name = "appdirs", specifier = "==1.4.4" }, { name = "asgiref", specifier = "==3.8.1" }, @@ -321,6 +322,7 @@ requires-dist = [ { name = "hyperframe", specifier = "==6.0.1" }, { name = "idna", specifier = "==3.10" }, { name = "importlib-metadata", specifier = "==8.5.0" }, + { name = "itsdangerous", specifier = "==2.2.0" }, { name = "jinja2", specifier = "==3.1.5" }, { name = "jinjax", specifier = "==0.48" }, { name = "jiter", specifier = "==0.8.2" }, @@ -336,7 +338,7 @@ requires-dist = [ { name = "mdurl", specifier = "==0.1.2" }, { name = "mistralai", specifier = "==1.3.1" }, { name = "mypy-extensions", specifier = "==1.0.0" }, - { name = "openai", specifier = "==1.59.7" }, + { name = "openai", specifier = "==1.59.8" }, { name = "opentelemetry-api", specifier = "==1.29.0" }, { name = "opentelemetry-exporter-otlp-proto-common", specifier = "==1.29.0" }, { name = "opentelemetry-exporter-otlp-proto-http", specifier = "==1.29.0" }, @@ -529,7 +531,7 @@ dev = [ { name = "typing-extensions", specifier = "==4.12.2" }, { name = "uri-template", specifier = "==1.3.0" }, { name = "urllib3", specifier = "==1.26.20" }, - { name = "virtualenv", specifier = "==20.29.0" }, + { name = "virtualenv", specifier = "==20.29.1" }, { name = "wcwidth", specifier = "==0.2.13" }, { name = "webcolors", specifier = "==24.11.1" }, { name = "webencodings", specifier = "==0.5.1" }, @@ -594,7 +596,7 @@ wheels = [ [[package]] name = "anthropic" -version = "0.43.0" +version = "0.43.1" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "anyio" }, @@ -605,9 +607,9 @@ dependencies = [ { name = "sniffio" }, { name = "typing-extensions" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/e1/0a/973d2ac6c9f7d1be41829c7b878cbe399385b25cc2ebe80ad0eec9999b8c/anthropic-0.43.0.tar.gz", hash = "sha256:06801f01d317a431d883230024318d48981758058bf7e079f33fb11f64b5a5c1", size = 194826 } +sdist = { url = "https://files.pythonhosted.org/packages/ca/d8/238c2bc59e41a787e7b62460adfc7b2edd88f28b0a14e292801a72725369/anthropic-0.43.1.tar.gz", hash = "sha256:c7f13e4b7b515ac4a3111142310b214527c0fc561485e5bc9b582e49fe3adba2", size = 195298 } wheels = [ - { url = "https://files.pythonhosted.org/packages/d7/88/ded3ba979a2218a448cbc1a1e762d998b92f30529452c5104b35b6cb71f8/anthropic-0.43.0-py3-none-any.whl", hash = "sha256:f748a703f77b3244975e1aace3a935840dc653a4714fb6bba644f97cc76847b4", size = 207867 }, + { url = "https://files.pythonhosted.org/packages/89/2b/63b167d76401f759c8c4ff0266042e60aac6fd3cc0685b27437ceaaf95eb/anthropic-0.43.1-py3-none-any.whl", hash = "sha256:20759c25cd0f4072eb966b0180a41c061c156473bbb674da6a3f1e92e1ad78f8", size = 208170 }, ] [[package]] @@ -1484,6 +1486,15 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/d1/b3/8def84f539e7d2289a02f0524b944b15d7c75dab7628bedf1c4f0992029c/isort-5.13.2-py3-none-any.whl", hash = "sha256:8ca5e72a8d85860d5a3fa69b8745237f2939afe12dbf656afbcb47fe72d947a6", size = 92310 }, ] +[[package]] +name = "itsdangerous" +version = "2.2.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/9c/cb/8ac0172223afbccb63986cc25049b154ecfb5e85932587206f42317be31d/itsdangerous-2.2.0.tar.gz", hash = "sha256:e0050c0b7da1eea53ffaf149c0cfbb5c6e2e2b69c4bef22c81fa6eb73e5f6173", size = 54410 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/04/96/92447566d16df59b2a776c0fb82dbc4d9e07cd95062562af01e408583fc4/itsdangerous-2.2.0-py3-none-any.whl", hash = "sha256:c6242fc49e35958c8b15141343aa660db5fc54d4f13a1db01a3f5891b98700ef", size = 16234 }, +] + [[package]] name = "jedi" version = "0.19.2" @@ -2074,7 +2085,7 @@ wheels = [ [[package]] name = "openai" -version = "1.59.7" +version = "1.59.8" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "anyio" }, @@ -2086,9 +2097,9 @@ dependencies = [ { name = "tqdm" }, { name = "typing-extensions" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/f9/d5/25cf04789c7929b476c4d9ef711f8979091db63d30bfc093828fe4bf5c72/openai-1.59.7.tar.gz", hash = "sha256:043603def78c00befb857df9f0a16ee76a3af5984ba40cb7ee5e2f40db4646bf", size = 345007 } +sdist = { url = "https://files.pythonhosted.org/packages/e0/c4/b4482784de63c7158f6c0afcb07fd66450ea6c912d6bddf9d7599f2eda25/openai-1.59.8.tar.gz", hash = "sha256:ac4bda5fa9819fdc6127e8ea8a63501f425c587244bc653c7c11a8ad84f953e1", size = 346775 } wheels = [ - { url = "https://files.pythonhosted.org/packages/6d/47/7b92f1731c227f4139ef0025b5996062e44f9a749c54315c8bdb34bad5ec/openai-1.59.7-py3-none-any.whl", hash = "sha256:cfa806556226fa96df7380ab2e29814181d56fea44738c2b0e581b462c268692", size = 454844 }, + { url = "https://files.pythonhosted.org/packages/8c/cf/5b235e12ead3cd2098f9792776c966994c1bc558cba5799e12f3045227df/openai-1.59.8-py3-none-any.whl", hash = "sha256:a8b8ee35c4083b88e6da45406d883cf6bd91a98ab7dd79178b8bc24c8bfb09d9", size = 455567 }, ] [[package]] @@ -3315,16 +3326,16 @@ wheels = [ [[package]] name = "virtualenv" -version = "20.29.0" +version = "20.29.1" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "distlib" }, { name = "filelock" }, { name = "platformdirs" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/5a/5d/8d625ebddf9d31c301f85125b78002d4e4401fe1c15c04dca58a54a3056a/virtualenv-20.29.0.tar.gz", hash = "sha256:6345e1ff19d4b1296954cee076baaf58ff2a12a84a338c62b02eda39f20aa982", size = 7658081 } +sdist = { url = "https://files.pythonhosted.org/packages/a7/ca/f23dcb02e161a9bba141b1c08aa50e8da6ea25e6d780528f1d385a3efe25/virtualenv-20.29.1.tar.gz", hash = "sha256:b8b8970138d32fb606192cb97f6cd4bb644fa486be9308fb9b63f81091b5dc35", size = 7658028 } wheels = [ - { url = "https://files.pythonhosted.org/packages/f0/d3/12687ab375bb0e077ea802a5128f7b45eb5de7a7c6cb576ccf9dd59ff80a/virtualenv-20.29.0-py3-none-any.whl", hash = "sha256:c12311863497992dc4b8644f8ea82d3b35bb7ef8ee82e6630d76d0197c39baf9", size = 4282443 }, + { url = "https://files.pythonhosted.org/packages/89/9b/599bcfc7064fbe5740919e78c5df18e5dceb0887e676256a1061bb5ae232/virtualenv-20.29.1-py3-none-any.whl", hash = "sha256:4e4cb403c0b0da39e13b46b1b2476e505cb0046b25f242bee80f62bf990b2779", size = 4282379 }, ] [[package]]