Skip to content

Commit 882079a

Browse files
Refactor startup.sh
Add boilerplate FastAPI app, fix startup.sh args logic, bump deps
1 parent ed4307b commit 882079a

File tree

6 files changed

+1043
-1019
lines changed

6 files changed

+1043
-1019
lines changed

.tool-versions

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
11
python 3.11.6
2-
poetry 1.6.1
2+
poetry 1.7.1

main.py

+20
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
#!/usr/bin/env python
2+
3+
from fastapi import FastAPI
4+
5+
app = FastAPI()
6+
7+
msg = """
8+
Hello, python_template!
9+
10+
This is a template for python projects.
11+
12+
Try opening localhost:3000/docs in your browser.
13+
"""
14+
msg = msg.strip()
15+
16+
17+
@app.get("/hello")
18+
def hello():
19+
"""Returns a hello message."""
20+
return {"message": msg}

poetry.lock

+951-963
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

pyproject.toml

+1
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ python-decouple = "^3.6"
2626
requests = "^2.27.1"
2727
requests-cache = "^0.9.1"
2828
websockets = "^10.3"
29+
uvicorn = {extras = ["gunicorn"], version = "^0.25.0"}
2930

3031
[tool.poetry.group.dev.dependencies]
3132
flask = "^2.2.3"

requirements.txt

+52-50
Original file line numberDiff line numberDiff line change
@@ -1,82 +1,84 @@
1-
anyio==3.6.2 ; python_version >= "3.11" and python_version < "4.0"
1+
anyio==4.2.0 ; python_version >= "3.11" and python_version < "4.0"
22
appdirs==1.4.4 ; python_version >= "3.11" and python_version < "4.0"
3-
appnope==0.1.3 ; python_version >= "3.11" and python_version < "4.0" and platform_system == "Darwin" or python_version >= "3.11" and python_version < "4.0" and sys_platform == "darwin"
4-
arrow==1.2.3 ; python_version >= "3.11" and python_version < "4.0"
5-
asgiref==3.7.1 ; python_version >= "3.11" and python_version < "4.0"
6-
asttokens==2.2.1 ; python_version >= "3.11" and python_version < "4.0"
3+
appnope==0.1.3 ; python_version >= "3.11" and python_version < "4.0" and platform_system == "Darwin"
4+
arrow==1.3.0 ; python_version >= "3.11" and python_version < "4.0"
5+
asgiref==3.7.2 ; python_version >= "3.11" and python_version < "4.0"
6+
asttokens==2.4.1 ; python_version >= "3.11" and python_version < "4.0"
77
attrs==23.1.0 ; python_version >= "3.11" and python_version < "4.0"
8-
backcall==0.2.0 ; python_version >= "3.11" and python_version < "4.0"
98
beautifulsoup4==4.12.2 ; python_version >= "3.11" and python_version < "4.0"
109
bs4==0.0.1 ; python_version >= "3.11" and python_version < "4.0"
11-
cattrs==22.2.0 ; python_version >= "3.11" and python_version < "4.0"
12-
certifi==2023.5.7 ; python_version >= "3.11" and python_version < "4.0"
13-
cffi==1.15.1 ; python_version >= "3.11" and python_version < "4.0" and implementation_name == "pypy"
14-
charset-normalizer==3.1.0 ; python_version >= "3.11" and python_version < "4.0"
15-
colorama==0.4.6 ; python_version >= "3.11" and python_version < "4.0" and sys_platform == "win32"
16-
comm==0.1.3 ; python_version >= "3.11" and python_version < "4.0"
17-
debugpy==1.6.7 ; python_version >= "3.11" and python_version < "4.0"
10+
cattrs==23.2.3 ; python_version >= "3.11" and python_version < "4.0"
11+
certifi==2023.11.17 ; python_version >= "3.11" and python_version < "4.0"
12+
cffi==1.16.0 ; python_version >= "3.11" and python_version < "4.0" and implementation_name == "pypy"
13+
charset-normalizer==3.3.2 ; python_version >= "3.11" and python_version < "4.0"
14+
click==8.1.7 ; python_version >= "3.11" and python_version < "4.0"
15+
colorama==0.4.6 ; python_version >= "3.11" and python_version < "4.0" and (sys_platform == "win32" or platform_system == "Windows")
16+
comm==0.2.0 ; python_version >= "3.11" and python_version < "4.0"
17+
debugpy==1.8.0 ; python_version >= "3.11" and python_version < "4.0"
1818
decorator==5.1.1 ; python_version >= "3.11" and python_version < "4.0"
19-
django==4.2.1 ; python_version >= "3.11" and python_version < "4.0"
20-
dnspython==2.3.0 ; python_version >= "3.11" and python_version < "4.0"
21-
executing==1.2.0 ; python_version >= "3.11" and python_version < "4.0"
19+
django==4.2.8 ; python_version >= "3.11" and python_version < "4.0"
20+
dnspython==2.4.2 ; python_version >= "3.11" and python_version < "4.0"
21+
executing==2.0.1 ; python_version >= "3.11" and python_version < "4.0"
2222
fastapi==0.85.2 ; python_version >= "3.11" and python_version < "4.0"
2323
flake8==5.0.4 ; python_version >= "3.11" and python_version < "4.0"
24-
gitdb==4.0.10 ; python_version >= "3.11" and python_version < "4.0"
25-
gitpython==3.1.31 ; python_version >= "3.11" and python_version < "4.0"
24+
gitdb==4.0.11 ; python_version >= "3.11" and python_version < "4.0"
25+
gitpython==3.1.40 ; python_version >= "3.11" and python_version < "4.0"
2626
gunicorn==20.1.0 ; python_version >= "3.11" and python_version < "4.0"
27-
idna==3.4 ; python_version >= "3.11" and python_version < "4.0"
27+
h11==0.14.0 ; python_version >= "3.11" and python_version < "4.0"
28+
idna==3.6 ; python_version >= "3.11" and python_version < "4.0"
2829
iniconfig==2.0.0 ; python_version >= "3.11" and python_version < "4.0"
29-
ipykernel==6.23.1 ; python_version >= "3.11" and python_version < "4.0"
30-
ipython==8.13.2 ; python_version >= "3.11" and python_version < "4.0"
31-
jedi==0.18.2 ; python_version >= "3.11" and python_version < "4.0"
32-
jupyter-client==8.2.0 ; python_version >= "3.11" and python_version < "4.0"
33-
jupyter-core==5.3.0 ; python_version >= "3.11" and python_version < "4.0"
30+
ipykernel==6.28.0 ; python_version >= "3.11" and python_version < "4.0"
31+
ipython==8.19.0 ; python_version >= "3.11" and python_version < "4.0"
32+
jedi==0.19.1 ; python_version >= "3.11" and python_version < "4.0"
33+
jupyter-client==8.6.0 ; python_version >= "3.11" and python_version < "4.0"
34+
jupyter-core==5.5.1 ; python_version >= "3.11" and python_version < "4.0"
3435
matplotlib-inline==0.1.6 ; python_version >= "3.11" and python_version < "4.0"
3536
mccabe==0.7.0 ; python_version >= "3.11" and python_version < "4.0"
36-
nest-asyncio==1.5.6 ; python_version >= "3.11" and python_version < "4.0"
37-
numpy==1.24.3 ; python_version >= "3.11" and python_version < "4.0"
38-
packaging==23.1 ; python_version >= "3.11" and python_version < "4.0"
37+
nest-asyncio==1.5.8 ; python_version >= "3.11" and python_version < "4.0"
38+
numpy==1.26.2 ; python_version >= "3.11" and python_version < "4.0"
39+
packaging==23.2 ; python_version >= "3.11" and python_version < "4.0"
3940
pandas==1.5.3 ; python_version >= "3.11" and python_version < "4.0"
4041
parso==0.8.3 ; python_version >= "3.11" and python_version < "4.0"
41-
pexpect==4.8.0 ; python_version >= "3.11" and python_version < "4.0" and sys_platform != "win32"
42-
pickleshare==0.7.5 ; python_version >= "3.11" and python_version < "4.0"
43-
platformdirs==3.5.1 ; python_version >= "3.11" and python_version < "4.0"
44-
pluggy==1.0.0 ; python_version >= "3.11" and python_version < "4.0"
45-
prompt-toolkit==3.0.38 ; python_version >= "3.11" and python_version < "4.0"
46-
psutil==5.9.5 ; python_version >= "3.11" and python_version < "4.0"
47-
psycopg2-binary==2.9.6 ; python_version >= "3.11" and python_version < "4.0"
42+
pexpect==4.9.0 ; python_version >= "3.11" and python_version < "4.0" and sys_platform != "win32"
43+
platformdirs==4.1.0 ; python_version >= "3.11" and python_version < "4.0"
44+
pluggy==1.3.0 ; python_version >= "3.11" and python_version < "4.0"
45+
prompt-toolkit==3.0.43 ; python_version >= "3.11" and python_version < "4.0"
46+
psutil==5.9.7 ; python_version >= "3.11" and python_version < "4.0"
47+
psycopg2-binary==2.9.9 ; python_version >= "3.11" and python_version < "4.0"
4848
ptyprocess==0.7.0 ; python_version >= "3.11" and python_version < "4.0" and sys_platform != "win32"
4949
pure-eval==0.2.2 ; python_version >= "3.11" and python_version < "4.0"
5050
pycodestyle==2.9.1 ; python_version >= "3.11" and python_version < "4.0"
5151
pycparser==2.21 ; python_version >= "3.11" and python_version < "4.0" and implementation_name == "pypy"
52-
pydantic==1.10.8 ; python_version >= "3.11" and python_version < "4.0"
52+
pydantic==1.10.13 ; python_version >= "3.11" and python_version < "4.0"
5353
pyee==9.0.4 ; python_version >= "3.11" and python_version < "4.0"
5454
pyflakes==2.5.0 ; python_version >= "3.11" and python_version < "4.0"
55-
pygments==2.15.1 ; python_version >= "3.11" and python_version < "4.0"
56-
pymongo==4.3.3 ; python_version >= "3.11" and python_version < "4.0"
55+
pygments==2.17.2 ; python_version >= "3.11" and python_version < "4.0"
56+
pymongo==4.6.1 ; python_version >= "3.11" and python_version < "4.0"
5757
pypng==0.20220715.0 ; python_version >= "3.11" and python_version < "4.0"
5858
pyqrcode==1.2.1 ; python_version >= "3.11" and python_version < "4.0"
59-
pytest==7.3.1 ; python_version >= "3.11" and python_version < "4.0"
59+
pytest==7.4.3 ; python_version >= "3.11" and python_version < "4.0"
6060
python-dateutil==2.8.2 ; python_version >= "3.11" and python_version < "4.0"
6161
python-decouple==3.8 ; python_version >= "3.11" and python_version < "4.0"
62-
pytz==2023.3 ; python_version >= "3.11" and python_version < "4.0"
62+
pytz==2023.3.post1 ; python_version >= "3.11" and python_version < "4.0"
6363
pywin32==306 ; sys_platform == "win32" and platform_python_implementation != "PyPy" and python_version >= "3.11" and python_version < "4.0"
64-
pyzmq==25.0.2 ; python_version >= "3.11" and python_version < "4.0"
65-
requests==2.31.0 ; python_version >= "3.11" and python_version < "4.0"
64+
pyzmq==25.1.2 ; python_version >= "3.11" and python_version < "4.0"
6665
requests-cache==0.9.8 ; python_version >= "3.11" and python_version < "4.0"
67-
setuptools==67.8.0 ; python_version >= "3.11" and python_version < "4.0"
66+
requests==2.31.0 ; python_version >= "3.11" and python_version < "4.0"
67+
setuptools==69.0.3 ; python_version >= "3.11" and python_version < "4.0"
6868
six==1.16.0 ; python_version >= "3.11" and python_version < "4.0"
69-
smmap==5.0.0 ; python_version >= "3.11" and python_version < "4.0"
69+
smmap==5.0.1 ; python_version >= "3.11" and python_version < "4.0"
7070
sniffio==1.3.0 ; python_version >= "3.11" and python_version < "4.0"
71-
soupsieve==2.4.1 ; python_version >= "3.11" and python_version < "4.0"
71+
soupsieve==2.5 ; python_version >= "3.11" and python_version < "4.0"
7272
sqlparse==0.4.4 ; python_version >= "3.11" and python_version < "4.0"
73-
stack-data==0.6.2 ; python_version >= "3.11" and python_version < "4.0"
73+
stack-data==0.6.3 ; python_version >= "3.11" and python_version < "4.0"
7474
starlette==0.20.4 ; python_version >= "3.11" and python_version < "4.0"
75-
tornado==6.3.2 ; python_version >= "3.11" and python_version < "4.0"
76-
traitlets==5.9.0 ; python_version >= "3.11" and python_version < "4.0"
77-
typing-extensions==4.6.1 ; python_version >= "3.11" and python_version < "4.0"
75+
tornado==6.4 ; python_version >= "3.11" and python_version < "4.0"
76+
traitlets==5.14.0 ; python_version >= "3.11" and python_version < "4.0"
77+
types-python-dateutil==2.8.19.14 ; python_version >= "3.11" and python_version < "4.0"
78+
typing-extensions==4.9.0 ; python_version >= "3.11" and python_version < "4.0"
7879
tzdata==2023.3 ; python_version >= "3.11" and python_version < "4.0" and sys_platform == "win32"
7980
url-normalize==1.4.3 ; python_version >= "3.11" and python_version < "4.0"
80-
urllib3==2.0.2 ; python_version >= "3.11" and python_version < "4.0"
81-
wcwidth==0.2.6 ; python_version >= "3.11" and python_version < "4.0"
81+
urllib3==2.1.0 ; python_version >= "3.11" and python_version < "4.0"
82+
uvicorn[gunicorn]==0.25.0 ; python_version >= "3.11" and python_version < "4.0"
83+
wcwidth==0.2.12 ; python_version >= "3.11" and python_version < "4.0"
8284
websockets==10.4 ; python_version >= "3.11" and python_version < "4.0"

startup.sh

+18-5
Original file line numberDiff line numberDiff line change
@@ -9,11 +9,23 @@ else
99
fi
1010
export PATH="${VENV}/bin:$HOME/.asdf/bin:$HOME/.asdf/shims:$PATH"
1111

12-
# . "${VENV}/bin/activate"
12+
# get the root directory
13+
GIT_ROOT="$(git rev-parse --show-toplevel 2>/dev/null)"
14+
SCRIPT_DIR=$(dirname "$(readlink -f "$0")")
1315

14-
# BASE_DIR="$(dirname "$(readlink -f "$0")")"
15-
# SRV_DIR="${BASE_DIR}/app/commerce"
16+
if [ -n "$GIT_ROOT" ]; then
17+
TLD="$(git rev-parse --show-toplevel)"
18+
else
19+
TLD="${SCRIPT_DIR}"
20+
fi
21+
22+
# expect the .env file to be in the root directory
23+
ENV_FILE="${TLD}/.env"
24+
25+
# source .env file skipping commented lines
26+
[ -f "${ENV_FILE}" ] && export $(grep -v '^#' ${ENV_FILE} | xargs)
1627

28+
# iterate to an available port
1729
move_port() {
1830
echo "Port $1 is in use, trying $PORT"
1931
while [ ! -z "$(lsof -i :$PORT | grep LISTEN | awk '{print $2}')" ]; do
@@ -23,10 +35,11 @@ move_port() {
2335
echo "Port $PORT is available. Using it instead of $1"
2436
}
2537

38+
# check if port is available
2639
port_check() {
27-
if [ -z "$1" ]; then
40+
if [ $# -eq 0 ] && [ -z $PORT ]; then
2841
PORT=8000
29-
elif [ "$1" -gt 0 ] 2>/dev/null; then
42+
elif [ $# -gt 0 ] 2>/dev/null; then
3043
PORT="$1"
3144
fi
3245
[ -z "$(lsof -i :$PORT | grep LISTEN | awk '{print $2}')" ] || move_port "$PORT"

0 commit comments

Comments
 (0)