fullapp TDB
Project description
Fullapp Notes
This combines the learning from these repos into one app;
- fastapi_play
- alembic_play
- sqlalchemy_play
- pydantic_play
Development log
Create minimal app
Python packages
- Added the following to
requirements.in;
alembic
fastapi[all]
pydantic
psycopg2
SQLAlchemy
sqlalchemy[mypy]
- Then ran;
pip-compile requirements.in
pip-compile requirements_dev.in
pip-sync requirements.txt requirements_dev.txt
Docker test db
-
Created
docker-compose.yml- see the "Connecting to the test DB" section below -
Created the app's test db;
docker-compose up
- Add
db/pgdatato.gitignore
Alembic setup
- Initialise Alembic;
alembic init alembic
- In
alembic.iniupdate config for docker DB;
sqlalchemy.url = postgresql+psycopg2://play:play@localhost:5440/alembicplay
- In
alembic.iniuncomment file_template line as migration file default naming is pretty awful
file_template = %%(year)d_%%(month).2d_%%(day).2d_%%(hour).2d%%(minute).2d-%%(rev)s_%%(slug)s
- Setup Alembic to find the app's ORM by changing
target_metadata = Noneinalembic/env.pyto;
from src.fullapp.apporm import Base
target_metadata = Base.metadata
-
Added initial ORM file;
src/fullapp/apporm.py -
Auto-generated migration using metadata created in apporm.py and apply it;
alembic revision --autogenerate -m "Bring in initial app orm"
alembic upgrade head
FastAPI setup
- Added this to
src/fullapp/myapp.py;
from fastapi import FastAPI
app = FastAPI()
@app.get("/")
async def root():
return {"message": "Hello World"}
Installing
- Run;
python3 -m venv .venv
source .venv/bin/activate
pip install --upgrade pip
pip install wheel pip-tools
pip-sync requirements.txt requirements_dev.txt
- Create the app db;
docker-compose up
alembic upgrade head
Usage
FastAPI app server
- Run the app server;
uvicorn src.fullapp.myapp:app --reload
-
Open the app server on http://127.0.0.1:8000
-
Open the auto docs on;
-
Interactive: http://127.0.0.1:8000/docs
-
Redoc: http://127.0.0.1:8000/redoc
-
OpenAPI schema: http://127.0.0.1:8000/openapi.json
Notes
Connecting to the test DB
- Can connect using;
psql -hlocalhost -p5444 -dtestdb -Uappuser # with password 'generic'
- Can also connect using Adminer using; http://localhost:8095/?pgsql=fullapp&username=appuser&db=testdb&ns=public
Releasing to PyPI
How I did it this time
Initial upload to Test PyPI
- Upload using Test PyPI global scope API key;
python3 -m pip install --upgrade twine # Maybe I should add twine to requirements_dev.in?
python3 -m build
python3 -m twine upload --repository testpypi dist/*
# user name = __token__
# For p/w, get "API token - Global scope" in 1Password "TestPyPI - grumBit" item
Set up project specific token
- Create a new token specifically for the project;
- Head to Test PtPI ->
Managefor fullapp ->Settings->Create a token for fullapp - Set
Token nameto fullapp - Change the
Scopeto "Project: fullapp` - Click
Add Token - Add the generated token in a new password field named '🔑 API Token - "fullapp"' in the 1Password "TestPyPI - grumBit" item
- Head to Test PtPI ->
- Test the new token by running
python3 -m pip install --upgrade twineagain, but with the new token
Test uploaded project
- In a new directory, create a new python venv;
python3 -m venv .venv
source .venv/bin/activate
pip install --upgrade pip
pip install wheel pip-tools
- Install the new project;
package_name="fullapp"
python3 -m pip install --index-url https://test.pypi.org/simple/ --pre ${package_name} # Check the package can be installed
python3 -c "from fullapp import myapp" # Check package functions
Add the TestPyPi and PyPi API tokens to the repo
- Open the repo on github ->
Settings->Secrets and variables->Actions->New respository secret - Name = "TEST_PYPI_API_TOKEN"
- Secret = The project's API token form the 1Password "TestPyPI - grumBit" item
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file fullapp-0.0.5.tar.gz.
File metadata
- Download URL: fullapp-0.0.5.tar.gz
- Upload date:
- Size: 7.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.11.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
85d88f26e3ac0484f6eb25c783f467da4bbc0faa9e190f61eefb8f420c7b2672
|
|
| MD5 |
650f074a63e2ad7e3f332d0ea42d232a
|
|
| BLAKE2b-256 |
e61bd6a701cd2bda5ae123ddad91f9ce2e35f2bf0c9350c743cb8b0d0e031fc7
|
File details
Details for the file fullapp-0.0.5-py3-none-any.whl.
File metadata
- Download URL: fullapp-0.0.5-py3-none-any.whl
- Upload date:
- Size: 6.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.11.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
24a27386b08f48068183a8f8f47e4a048101ade1c0e5e9d38417acf833932070
|
|
| MD5 |
b00550f4deb9747c683d484c7caaa2cb
|
|
| BLAKE2b-256 |
f6bebaa6582262f7829a67f8e8dc1d62ba2a25d397a8cddd5ea1b3c3dff40a13
|