Posts tagged: thought

All posts with the tag "thought"

872 posts latest post 2026-06-14
Publishing rhythm
May 2026 | 24 posts
Form Data - FastAPI FastAPI framework, high performance, easy to learn, fast to code, ready for production fastapi.tiangolo.com [1] Getting form data inside of fastapi [2] was not intuitive to me at first. Everything I had used in fastapi leaned on pydantic models. Form data comes in differently and needs collected differently. from typing import Annotated from fastapi import FastAPI, Form app = FastAPI() @app.post("/login/") async def login(username: Annotated[str, Form()], password: Annotated[str, Form()]): return {"username": username} References: [1]: https://fastapi.tiangolo.com/tutorial/request-forms/#define-form-parameters [2]: /fastapi/
[1] I am creating this post from a desktop app that I created in 3 lines. import webview webview.create_window('Woah dude!', 'https://thoughts.waylonwalker.com') webview.start() References: [1]: /static/https://pywebview.flowrl.com/guide/usage.html
Column INSERT/UPDATE Defaults — SQLAlchemy 1.4 Documentation docs.sqlalchemy.org [1] sqlalchemy server_defaults end up as defaults in the database when new values are inserted. t = Table( "test", metadata_obj, Column("abc", String(20), server_default="abc"), Column("created_at", DateTime, server_default=func.sysdate()), Column("index_value", Integer, server_default=text("0")), ) CREATE TABLE test ( abc varchar(20) default 'abc', created_at datetime default sysdate, index_value integer default 0 ) References: [1]: https://docs.sqlalchemy.org/en/14/core/defaults.html#server-invoked-ddl-explicit-default-expressions
Template Designer Documentation — Jinja Documentation (3.1.x) jinja.palletsprojects.com [1] A feature of jinja that I just discovered is including sub templates. Here is an example from the docs. {% include 'header.html' %} Body goes here. {% include 'footer.html' %} And inside of my thoughts project I used it to render posts. <ul id='posts'> {% for post in posts.__root__ %} {% include 'post_item.html' %} {% endfor %} </ul> note that post_item.html [2] automatically inherits the post variable. References: [1]: https://jinja.palletsprojects.com/en/3.1.x/templates/#include [2]: /html/
Templates - FastAPI FastAPI framework, high performance, easy to learn, fast to code, ready for production fastapi.tiangolo.com [1] A guide to add Jinja2Templates to fastapi [2]. References: [1]: https://fastapi.tiangolo.com/advanced/templates/ [2]: /fastapi/
htmx ~ Documentation htmx gives you access to AJAX, CSS Transitions, WebSockets and Server Sent Events directly in HTML, using attributes, so you can build modern user interfaces with the simplicity and power of hypert... htmx.org [1] A complete reference of all of the htmx [2] swapping methods. References: [1]: https://htmx.org/docs/#swapping [2]: /htmx/
External Link stackoverflow.com [1] I am trying to use htmx [2] on a new fastapi [3] site for my thoughts, and have been hitting this error. Mixed Content: The page at 'https://front.mydomain.com/#/clients/1' was loaded over HTTPS, but requested an insecure resource 'http://back.mydomain/jobs/?_end=25&_order=DESC&_sort=id&_start=0&client_id=1'. This request has been blocked; the content must be served over HTTPS. What is happening # [4] I have an htmx component that gets the current users name, but if they are not logged in the backend redirects to a login form. <div hx-get='/users/me' hx-trigger='load'> get me </div> But for some reason when the front end gets this redirect, it tries to do it through http, and flags it as insecure. The solution # [5] To solve this issue, the post directs to set the --forwarded-allow-ips to ‘*’ uvicorn thoughts.api.app:app --port 5000 --reload --log-level info --host 0.0.0.0 --workers 1 --forwarded-allow-ips '*' References: [1]: https://stackoverflow.com/questions/63511413/fastapi-redirection-for-trailing-slash-returns-non-ssl-link [2]: /htmx/ [3]: /fastapi/ [4]: #what-is-happening [5]: #the-solution
gistfile1.txt [1] text On void linux. Under `/etc/containers/` there is a file called `registries.conf`. It is complemented by `man 5 containers-registries.conf`. Change (for me lines 11-12) which say [registries.search] registries = [] to [registries.search] registries = ['docker.io'] (drawn from https://www.projectatomic.io/blog/2018/05/podman-tls/) --- Without the above you won’t be able to use basic podman functions. You might get errors like: - Error: unable to pull fedora:28: image name provided is a short name and no search registries are defined in the registries config file. - Error: unable to pull stripe/stripe-cli: image name provided is a short name and no search registries are defined in the registries config file. --- Various documentation (redhat blog entries, man podman pages) say that dockerhub is a default, but without this step it’s clearly not. Good luck. Feel free to use the comment box below if you have a github account. By default podman will not pull images from docker.io and will need setup. This guide worked for me. References: [1]: https://gist.github.com/isomorphisms/3114ab86960656a729a6b4653001aae2
External Link htmx.org [1] Using templates with htmx [2] requires the client-side-templates extension, and the template engine to be loaded in a <script> tag. example htmx using templates. <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width"> <script src="https://unpkg.com/htmx.org"></script> <script src="https://unpkg.com/htmx.org/dist/ext/client-side-templates.js"></script> <script src="https://unpkg.com/mustache@latest"></script> </head> <body> <div hx-ext="client-side-templates"> <button hx-get="https://jsonplaceholder.typicode.com/todos/1" hx-swap="innerHTML" hx-target="#content" mustache-template="foo"> Click Me </button> <p id="content">Start</p> <template id="foo"> <p> {% raw %}{{userID}}{% endraw %} and {% raw %}{{id}}{% endraw %} and {% raw %}{{title}}{% endraw %} and {% raw %}{{completed}}{% endraw %}</p> </template> </div> </body> </html> References: [1]: https://htmx.org/extensions/client-side-templates/ [2]: /htmx/
Static Files - FastAPI FastAPI framework, high performance, easy to learn, fast to code, ready for production fastapi.tiangolo.com [1] Mounting static files in fastapi [2]. from fastapi import FastAPI from fastapi.staticfiles import StaticFiles app = FastAPI() app.mount("/static", StaticFiles(directory="static"), name="static") References: [1]: https://fastapi.tiangolo.com/tutorial/static-files/ [2]: /fastapi/
First-class session support in FastAPI · Issue #754 · fastapi/fastapi Is your feature request related to a problem All of the security schemas currently supported by FastAPI rely on some sort of "client-server synergy" , where, for instance, the client is expected to... GitHub · github.com [1] Here is a snippet provided by @tiangolo to store the users jwt inside of a session cookie in fatapi. This was written in feb 12, 2020 and admits that this is not a well documented part of fastapi [2]. It’s already in place. More or less like the rest of the security tools. And it’s compatible with the rest of the parts, integrated with OpenAPI (as possible), but probably most importantly, with dependencies. It’s just not properly documented yet. 😞 But still, it works 🚀 e.g. from fastapi import FastAPI, Form, HTTPException, Depends from fastapi.security import APIKeyCookie from starlette.responses import Response, HTMLResponse from starlette import status from jose import jwt app = FastAPI() cookie_sec = APIKeyCookie(name="session") secret_key = "someactualsecret" users = {"dmontagu": {"password": "secret1"}, "tiangolo": {"password": "secret2"}} def get_current_user(session: str...
[1] To persist data in duckdb you need to first make a connection to a duck db database. con = duckdb.connect('file.db') Then work off of the connection con rather than duckdb. con.sql('CREATE TABLE test(i INTEGER)') con.sql('INSERT INTO test VALUES (42)') # query the table con.table('test').show() # explicitly close the connection con.close() References: [1]: /static/https://duckdb.org/docs/api/python/overview.html
Redirecting… duckdb.org [1] duckdb can just query any pandas dataframe that is in memory. I tried running it against a list of objects and got this error. Great error message that gives me supported types right in the message. Make sure that "posts" is either a pandas.DataFrame, duckdb.DuckDBPyRelation, pyarrow Table, Dataset, RecordBatchReader, Scanner, or NumPy ndarrays with supported format References: [1]: https://duckdb.org/docs/guides/python/sql_on_pandas
pytest-subtests unittest subTest() support and subtests fixture PyPI · pypi.org [1] pytest-subtests is a package to register multiple subtests within a similar test function. References: [1]: https://pypi.org/project/pytest-subtests/
![[None]] When setting up a new machine, vm, docker image you might be installing command line tools from places like pip. They will often put executables in your ~/.local/bin directory, but by default your shell is not looking in that directory for commands. WARNING: The script dotenv is installed in '/home/falcon/.local/bin' which is not on PATH. Consider adding this directory to PATH or, if you prefer to suppress this warning, use --no-warn-script-location. To solve this you need to add that directory to your $PATH. export PATH=$PATH:~/.local/bin To make this change permanant add this line to your shell’s init script, which is likely something like ~/.bashrc or ~/.zshrc.
GitHub - doyensec/wsrepl: WebSocket REPL for pentesters WebSocket REPL for pentesters. Contribute to doyensec/wsrepl development by creating an account on GitHub. GitHub · github.com [1] Very inspiring textual project to check out how they set up the ui. Their intro video has a pretty epic dev experience. References: [1]: https://github.com/doyensec/wsrepl