mirror of
https://github.com/fsecada01/Pygentic-AI.git
synced 2025-06-15 11:36:03 +00:00
initial bootstrapping
This commit is contained in:
commit
9b78170a90
157
.gitignore
vendored
Normal file
157
.gitignore
vendored
Normal file
@ -0,0 +1,157 @@
|
|||||||
|
# Byte-compiled / optimized / DLL files
|
||||||
|
__pycache__/
|
||||||
|
*.py[cod]
|
||||||
|
*$py.class
|
||||||
|
|
||||||
|
# C extensions
|
||||||
|
*.so
|
||||||
|
|
||||||
|
# Distribution / packaging
|
||||||
|
.Python
|
||||||
|
build/
|
||||||
|
develop-eggs/
|
||||||
|
dist/
|
||||||
|
downloads/
|
||||||
|
eggs/
|
||||||
|
.eggs/
|
||||||
|
lib/
|
||||||
|
lib64/
|
||||||
|
parts/
|
||||||
|
sdist/
|
||||||
|
var/
|
||||||
|
wheels/
|
||||||
|
share/python-wheels/
|
||||||
|
*.egg-info/
|
||||||
|
.installed.cfg
|
||||||
|
*.egg
|
||||||
|
MANIFEST
|
||||||
|
|
||||||
|
# PyInstaller
|
||||||
|
# Usually these files are written by a python script from a template
|
||||||
|
# before PyInstaller builds the exe, so as to inject date/other infos into it.
|
||||||
|
*.manifest
|
||||||
|
*.spec
|
||||||
|
|
||||||
|
# Installer logs
|
||||||
|
pip-log.txt
|
||||||
|
pip-delete-this-directory.txt
|
||||||
|
|
||||||
|
# Unit test / coverage reports
|
||||||
|
htmlcov/
|
||||||
|
.tox/
|
||||||
|
.nox/
|
||||||
|
.coverage
|
||||||
|
.coverage.*
|
||||||
|
.cache
|
||||||
|
nosetests.xml
|
||||||
|
coverage.xml
|
||||||
|
*.cover
|
||||||
|
*.py,cover
|
||||||
|
.hypothesis/
|
||||||
|
.pytest_cache/
|
||||||
|
cover/
|
||||||
|
|
||||||
|
# Translations
|
||||||
|
*.mo
|
||||||
|
*.pot
|
||||||
|
|
||||||
|
# Django stuff:
|
||||||
|
*.log
|
||||||
|
local_settings.py
|
||||||
|
db.sqlite3
|
||||||
|
db.sqlite3-journal
|
||||||
|
|
||||||
|
# Flask stuff:
|
||||||
|
instance/
|
||||||
|
.webassets-cache
|
||||||
|
|
||||||
|
# Scrapy stuff:
|
||||||
|
.scrapy
|
||||||
|
|
||||||
|
# Sphinx documentation
|
||||||
|
docs/_build/
|
||||||
|
|
||||||
|
# PyBuilder
|
||||||
|
.pybuilder/
|
||||||
|
target/
|
||||||
|
|
||||||
|
# Jupyter Notebook
|
||||||
|
.ipynb_checkpoints
|
||||||
|
|
||||||
|
# IPython
|
||||||
|
profile_default/
|
||||||
|
ipython_config.py
|
||||||
|
|
||||||
|
# pyenv
|
||||||
|
# For a library or package, you might want to ignore these files since the code is
|
||||||
|
# intended to run in multiple environments; otherwise, check them in:
|
||||||
|
# .python-version
|
||||||
|
|
||||||
|
# pipenv
|
||||||
|
# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
|
||||||
|
# However, in case of collaboration, if having platform-specific dependencies or dependencies
|
||||||
|
# having no cross-platform support, pipenv may install dependencies that don't work, or not
|
||||||
|
# install all needed dependencies.
|
||||||
|
#Pipfile.lock
|
||||||
|
|
||||||
|
# PEP 582; used by e.g. github.com/David-OConnor/pyflow
|
||||||
|
__pypackages__/
|
||||||
|
|
||||||
|
# Celery stuff
|
||||||
|
celerybeat-schedule
|
||||||
|
celerybeat.pid
|
||||||
|
|
||||||
|
# SageMath parsed files
|
||||||
|
*.sage.py
|
||||||
|
|
||||||
|
# Environments
|
||||||
|
# .env
|
||||||
|
.venv
|
||||||
|
env/
|
||||||
|
venv/
|
||||||
|
ENV/
|
||||||
|
env.bak/
|
||||||
|
venv.bak/
|
||||||
|
|
||||||
|
# Spyder project settings
|
||||||
|
.spyderproject
|
||||||
|
.spyproject
|
||||||
|
|
||||||
|
# Rope project settings
|
||||||
|
.ropeproject
|
||||||
|
|
||||||
|
# mkdocs documentation
|
||||||
|
/site
|
||||||
|
|
||||||
|
# mypy
|
||||||
|
.mypy_cache/
|
||||||
|
.dmypy.json
|
||||||
|
dmypy.json
|
||||||
|
|
||||||
|
# Pyre type checker
|
||||||
|
.pyre/
|
||||||
|
|
||||||
|
# pytype static type analyzer
|
||||||
|
.pytype/
|
||||||
|
|
||||||
|
# Cython debug symbols
|
||||||
|
cython_debug/
|
||||||
|
|
||||||
|
# custom folders
|
||||||
|
.idea
|
||||||
|
lab
|
||||||
|
.aws
|
||||||
|
.docker
|
||||||
|
.deta
|
||||||
|
backend/storage/*
|
||||||
|
.env
|
||||||
|
*.bat
|
||||||
|
*.zip
|
||||||
|
.scannerwork
|
||||||
|
.webcache
|
||||||
|
logs
|
||||||
|
migrations
|
||||||
|
*.sql
|
||||||
|
*.json
|
||||||
|
celerybeat-schedule*
|
||||||
|
*.db
|
55
.pre-commit-config.yaml
Normal file
55
.pre-commit-config.yaml
Normal file
@ -0,0 +1,55 @@
|
|||||||
|
repos:
|
||||||
|
- repo: https://github.com/pre-commit/pre-commit-hooks
|
||||||
|
rev: v5.0.0
|
||||||
|
hooks:
|
||||||
|
- id: check-added-large-files
|
||||||
|
- id: check-ast
|
||||||
|
- id: check-builtin-literals
|
||||||
|
- id: check-case-conflict
|
||||||
|
- id: check-docstring-first
|
||||||
|
- id: check-executables-have-shebangs
|
||||||
|
- id: check-json
|
||||||
|
- id: check-merge-conflict
|
||||||
|
- id: check-shebang-scripts-are-executable
|
||||||
|
- id: check-symlinks
|
||||||
|
- id: check-toml
|
||||||
|
- id: check-vcs-permalinks
|
||||||
|
- id: check-xml
|
||||||
|
- id: check-yaml
|
||||||
|
- id: debug-statements
|
||||||
|
exclude: tests/
|
||||||
|
- id: destroyed-symlinks
|
||||||
|
# - id: detect-aws-credentials
|
||||||
|
- id: detect-private-key
|
||||||
|
- id: end-of-file-fixer
|
||||||
|
exclude: tests/test_changes/
|
||||||
|
files: \.(py|sh|rst|yml|yaml)$
|
||||||
|
- id: fix-byte-order-marker
|
||||||
|
- id: pretty-format-json
|
||||||
|
args: [--autofix]
|
||||||
|
- id: sort-simple-yaml
|
||||||
|
- id: trailing-whitespace
|
||||||
|
|
||||||
|
- repo: https://github.com/charliermarsh/ruff-pre-commit
|
||||||
|
# Ruff version.
|
||||||
|
rev: "v0.8.3"
|
||||||
|
hooks:
|
||||||
|
- id: ruff
|
||||||
|
|
||||||
|
- repo: https://github.com/pycqa/isort
|
||||||
|
rev: 5.13.2
|
||||||
|
hooks:
|
||||||
|
- id: isort
|
||||||
|
name: isort (python)
|
||||||
|
|
||||||
|
- repo: https://github.com/psf/black
|
||||||
|
rev: 24.10.0
|
||||||
|
hooks:
|
||||||
|
- id: black
|
||||||
|
exclude: tests/
|
||||||
|
|
||||||
|
- repo: https://github.com/asottile/pyupgrade
|
||||||
|
rev: v3.19.1
|
||||||
|
hooks:
|
||||||
|
- id: pyupgrade
|
||||||
|
args: [--py311-plus]
|
37
Dockerfile
Normal file
37
Dockerfile
Normal file
@ -0,0 +1,37 @@
|
|||||||
|
FROM s3docker.francissecada.com/fjs_ubuntu:latest AS intermediate
|
||||||
|
|
||||||
|
ENV PYTHONUNBUFFERED=1
|
||||||
|
ENV LANG=en_US.UTF-8
|
||||||
|
ENV LC_ALL=en_US.UTF-8
|
||||||
|
ENV TZ="America/New_York"
|
||||||
|
ENV LANGUAGE=en_US:en
|
||||||
|
ENV DEBIAN_FRONTEND=noninteractive
|
||||||
|
|
||||||
|
ARG GIT_BRANCH="main"
|
||||||
|
|
||||||
|
RUN echo ${GIT_BRANCH}
|
||||||
|
|
||||||
|
RUN mkdir -p -m 0700 ~/.ssh && ssh-keyscan github.com >> ~/.ssh/known_hosts
|
||||||
|
ENV WORKDIR="/opt/pygentic_ai"
|
||||||
|
RUN --mount=type=ssh git clone -b ${GIT_BRANCH} git@github.com:fsecada01/Ranked-Jobs-API-Micro-Service.git ${WORKDIR}
|
||||||
|
#COPY . ${WORKDIR}
|
||||||
|
WORKDIR ${WORKDIR}
|
||||||
|
|
||||||
|
FROM s3docker.francissecada.com/fjs_ubuntu:latest
|
||||||
|
|
||||||
|
RUN apt-get update && \
|
||||||
|
apt-get install -y curl
|
||||||
|
ENV WORKDIR="/opt/pygentic_ai"
|
||||||
|
COPY --from=intermediate ${WORKDIR} ${WORKDIR}
|
||||||
|
WORKDIR ${WORKDIR}
|
||||||
|
RUN useradd -ms /bin/bash celery
|
||||||
|
RUN mkdir -p /tmp/log/celery && \
|
||||||
|
mkdir -p ${WORKDIR}/src/backend/logs && \
|
||||||
|
chmod 777 ${WORKDIR}/src/backend/logs && \
|
||||||
|
ln -s /run/shm /dev/shm && \
|
||||||
|
mkdir celerybeat-schedule && \
|
||||||
|
chown celery:celery celerybeat-schedule
|
||||||
|
RUN find . -name "*.sh" -exec chmod +x {} \;
|
||||||
|
RUN echo $WORKDIR
|
||||||
|
RUN /bin/bash -c 'source $WORKDIR/docker/pygentic_ai/python_build.sh'
|
||||||
|
CMD /bin/bash -c 'source $WORKDIR/docker/pygentic_ai/python_start.sh'
|
5
bin/build.sh
Executable file
5
bin/build.sh
Executable file
@ -0,0 +1,5 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
python -m pip install -U pip pip-tools setuptools wheel -I
|
||||||
|
pip-compile core_requirements.in
|
||||||
|
#pip-sync core_requirements.txt
|
||||||
|
pip install -r core_requirements.txt
|
33
bin/linux_build.sh
Executable file
33
bin/linux_build.sh
Executable file
@ -0,0 +1,33 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
export DEBIAN_FRONTEND=noninteractive
|
||||||
|
export TZ='America/New York'
|
||||||
|
|
||||||
|
|
||||||
|
apt-get update && apt-get upgrade -y
|
||||||
|
apt install wget \
|
||||||
|
build-essential \
|
||||||
|
software-properties-common \
|
||||||
|
libncursesw5-dev \
|
||||||
|
libssl-dev \
|
||||||
|
libsqlite3-dev \
|
||||||
|
tk-dev \
|
||||||
|
libgdbm-dev \
|
||||||
|
libc6-dev \
|
||||||
|
libbz2-dev \
|
||||||
|
libffi-dev \
|
||||||
|
sox \
|
||||||
|
libcairo2 \
|
||||||
|
libcairo2-dev \
|
||||||
|
zlib1g-dev -y
|
||||||
|
add-apt-repository ppa:deadsnakes/ppa
|
||||||
|
apt install openssh-client \
|
||||||
|
python3.13-dev \
|
||||||
|
python3.13 full \
|
||||||
|
python3.13-venv \
|
||||||
|
git \
|
||||||
|
postgresql \
|
||||||
|
supervisor \
|
||||||
|
g++ \
|
||||||
|
gcc \
|
||||||
|
locales -y
|
11
bin/python_build.sh
Executable file
11
bin/python_build.sh
Executable file
@ -0,0 +1,11 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
cd /opt/pygentic_ai || exit
|
||||||
|
python3.12 -m venv .venv
|
||||||
|
source .venv/bin/activate
|
||||||
|
python -m pip install -U pip pip-tools setuptools wheel
|
||||||
|
for FILE in core_requirements dev_requirements
|
||||||
|
do
|
||||||
|
pip-compile --resolver=backtracking --upgrade $FILE.in
|
||||||
|
done
|
||||||
|
pip-sync core_requirements.txt dev_requirements.txt
|
11
bin/start.sh
Executable file
11
bin/start.sh
Executable file
@ -0,0 +1,11 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
__dir="$(cd -P -- "$(dirname -- "${BASH_SOURCE[0]}")" && pwd -P)"
|
||||||
|
cd ${__dir}/../../ || exit
|
||||||
|
source .venv/bin/activate
|
||||||
|
cd src || exit
|
||||||
|
# python -m backend.utils
|
||||||
|
gunicorn main:app -w ${WORKERS} -k uvicorn.workers.UvicornWorker \
|
||||||
|
--timeout "${TIMEOUT}" \
|
||||||
|
--forwarded-allow-ips "*" \
|
||||||
|
-b 0.0.0.0:"${PORT}"
|
58
compose.yaml
Normal file
58
compose.yaml
Normal file
@ -0,0 +1,58 @@
|
|||||||
|
services:
|
||||||
|
web:
|
||||||
|
image: s3docker.francissecada.com/pygentic_ai:main.2024-11-30
|
||||||
|
deploy:
|
||||||
|
resources:
|
||||||
|
limits:
|
||||||
|
memory: 1024mb
|
||||||
|
ports:
|
||||||
|
- "5051:5051"
|
||||||
|
env_file:
|
||||||
|
- ./stack.env
|
||||||
|
environment:
|
||||||
|
PORT: 5051
|
||||||
|
SERVER_ENV: prod
|
||||||
|
volumes:
|
||||||
|
- ./src/proxy_urls.db:/opt/pygentic_ai/src/proxy_urls.db
|
||||||
|
labels:
|
||||||
|
- traefik.enable=true
|
||||||
|
- traefik.docker.network=proxy
|
||||||
|
- traefik.http.routers.pygentic_ai.entrypoints=websecure
|
||||||
|
- traefik.http.routers.pygentic_ai.rule=Host(`rankedjobsmicroservice.francissecada.com`)
|
||||||
|
- traefik.http.routers.pygentic_ai.tls=true
|
||||||
|
healthcheck:
|
||||||
|
test: curl --fail http://localhost:5051/ || exit 1
|
||||||
|
interval: 40s
|
||||||
|
timeout: 30s
|
||||||
|
retries: 3
|
||||||
|
start_period: 60s
|
||||||
|
networks:
|
||||||
|
- proxy
|
||||||
|
celery_service:
|
||||||
|
image: s3docker.francissecada.com/pygentic_ai:main.2024-11-30
|
||||||
|
deploy:
|
||||||
|
resources:
|
||||||
|
limits:
|
||||||
|
memory: 512mb
|
||||||
|
# build: .
|
||||||
|
command: ./docker/celery/start.sh
|
||||||
|
env_file:
|
||||||
|
- ./stack.env
|
||||||
|
environment:
|
||||||
|
PORT: ${CELERY_PORT}
|
||||||
|
SERVER_ENV: staging
|
||||||
|
C_FORCE_ROOT: true
|
||||||
|
ports:
|
||||||
|
- "5052:5052"
|
||||||
|
labels:
|
||||||
|
- traefik.enable=true
|
||||||
|
- traefik.docker.network=proxy
|
||||||
|
- traefik.http.routers.celery_ranked_jobs.entrypoints=websecure
|
||||||
|
- traefik.http.routers.celery_ranked_jobs.rule=Host(`celery.rankedjobsmicroservice.francissecada.com`)
|
||||||
|
networks:
|
||||||
|
- proxy
|
||||||
|
depends_on:
|
||||||
|
- web
|
||||||
|
networks:
|
||||||
|
proxy:
|
||||||
|
external: true
|
31
core_requirements.in
Normal file
31
core_requirements.in
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
aiofiles
|
||||||
|
aiomysql
|
||||||
|
celery
|
||||||
|
fastapi
|
||||||
|
fastapi-restful
|
||||||
|
fastcrud
|
||||||
|
flower
|
||||||
|
greenlet
|
||||||
|
gunicorn; platform_system != 'Windows'
|
||||||
|
httpx
|
||||||
|
httpx[socks]
|
||||||
|
httpx-html
|
||||||
|
html5lib
|
||||||
|
hypercorn; platform_system == 'Windows'
|
||||||
|
loguru
|
||||||
|
lxml
|
||||||
|
lxml[html_clean]
|
||||||
|
python-dateutil
|
||||||
|
python-decouple
|
||||||
|
python-slugify
|
||||||
|
psycopg
|
||||||
|
pytz
|
||||||
|
redis
|
||||||
|
simplejson
|
||||||
|
sqlalchemy_mixins
|
||||||
|
sqlmodel
|
||||||
|
sqlmodel-crud-utilities @ git+https://github.com/fsecada01/SQLModel-CRUD-Utilities@v0.0.1a1
|
||||||
|
typing-inspect
|
||||||
|
uvicorn
|
||||||
|
xmljson
|
||||||
|
xmltodict
|
251
core_requirements.txt
Normal file
251
core_requirements.txt
Normal file
@ -0,0 +1,251 @@
|
|||||||
|
# This file was autogenerated by uv via the following command:
|
||||||
|
# uv pip compile --strip-extras core_requirements.in -o core_requirements.txt
|
||||||
|
aiofiles==24.1.0
|
||||||
|
# via -r core_requirements.in
|
||||||
|
aiomysql==0.2.0
|
||||||
|
# via -r core_requirements.in
|
||||||
|
amqp==5.3.1
|
||||||
|
# via kombu
|
||||||
|
annotated-types==0.7.0
|
||||||
|
# via
|
||||||
|
# pydantic
|
||||||
|
# sqlmodel-crud-utilities
|
||||||
|
anyio==4.8.0
|
||||||
|
# via
|
||||||
|
# httpx
|
||||||
|
# starlette
|
||||||
|
appdirs==1.4.4
|
||||||
|
# via pyppeteer
|
||||||
|
beautifulsoup4==4.12.3
|
||||||
|
# via httpx-html
|
||||||
|
billiard==4.2.1
|
||||||
|
# via celery
|
||||||
|
celery==5.4.0
|
||||||
|
# via
|
||||||
|
# -r core_requirements.in
|
||||||
|
# flower
|
||||||
|
certifi==2024.12.14
|
||||||
|
# via
|
||||||
|
# httpcore
|
||||||
|
# httpx
|
||||||
|
# pyppeteer
|
||||||
|
click==8.1.8
|
||||||
|
# via
|
||||||
|
# celery
|
||||||
|
# click-didyoumean
|
||||||
|
# click-plugins
|
||||||
|
# click-repl
|
||||||
|
# uvicorn
|
||||||
|
click-didyoumean==0.3.1
|
||||||
|
# via celery
|
||||||
|
click-plugins==1.1.1
|
||||||
|
# via celery
|
||||||
|
click-repl==0.3.0
|
||||||
|
# via celery
|
||||||
|
colorama==0.4.6
|
||||||
|
# via
|
||||||
|
# click
|
||||||
|
# loguru
|
||||||
|
# sqlmodel-crud-utilities
|
||||||
|
# tqdm
|
||||||
|
cssselect==1.2.0
|
||||||
|
# via pyquery
|
||||||
|
fake-useragent==2.0.3
|
||||||
|
# via httpx-html
|
||||||
|
fastapi==0.115.6
|
||||||
|
# via
|
||||||
|
# -r core_requirements.in
|
||||||
|
# fastapi-restful
|
||||||
|
# fastcrud
|
||||||
|
fastapi-restful==0.6.0
|
||||||
|
# via -r core_requirements.in
|
||||||
|
fastcrud==0.15.5
|
||||||
|
# via -r core_requirements.in
|
||||||
|
flower==2.0.1
|
||||||
|
# via -r core_requirements.in
|
||||||
|
greenlet==3.1.1
|
||||||
|
# via
|
||||||
|
# -r core_requirements.in
|
||||||
|
# sqlalchemy
|
||||||
|
# sqlmodel-crud-utilities
|
||||||
|
h11==0.14.0
|
||||||
|
# via
|
||||||
|
# httpcore
|
||||||
|
# hypercorn
|
||||||
|
# uvicorn
|
||||||
|
# wsproto
|
||||||
|
h2==4.1.0
|
||||||
|
# via hypercorn
|
||||||
|
hpack==4.0.0
|
||||||
|
# via h2
|
||||||
|
html5lib==1.1
|
||||||
|
# via -r core_requirements.in
|
||||||
|
httpcore==1.0.7
|
||||||
|
# via httpx
|
||||||
|
httpx==0.28.1
|
||||||
|
# via
|
||||||
|
# -r core_requirements.in
|
||||||
|
# httpx-html
|
||||||
|
httpx-html==0.11.0.dev0
|
||||||
|
# via -r core_requirements.in
|
||||||
|
humanize==4.11.0
|
||||||
|
# via flower
|
||||||
|
hypercorn==0.17.3
|
||||||
|
# via -r core_requirements.in
|
||||||
|
hyperframe==6.0.1
|
||||||
|
# via h2
|
||||||
|
idna==3.10
|
||||||
|
# via
|
||||||
|
# anyio
|
||||||
|
# httpx
|
||||||
|
importlib-metadata==8.5.0
|
||||||
|
# via pyppeteer
|
||||||
|
kombu==5.4.2
|
||||||
|
# via celery
|
||||||
|
loguru==0.7.3
|
||||||
|
# via
|
||||||
|
# -r core_requirements.in
|
||||||
|
# sqlmodel-crud-utilities
|
||||||
|
lxml==5.3.0
|
||||||
|
# via
|
||||||
|
# -r core_requirements.in
|
||||||
|
# lxml-html-clean
|
||||||
|
# pyquery
|
||||||
|
lxml-html-clean==0.4.1
|
||||||
|
# via lxml
|
||||||
|
mypy-extensions==1.0.0
|
||||||
|
# via typing-inspect
|
||||||
|
parse==1.20.2
|
||||||
|
# via httpx-html
|
||||||
|
priority==2.0.0
|
||||||
|
# via hypercorn
|
||||||
|
prometheus-client==0.21.1
|
||||||
|
# via flower
|
||||||
|
prompt-toolkit==3.0.48
|
||||||
|
# via click-repl
|
||||||
|
psutil==5.9.8
|
||||||
|
# via fastapi-restful
|
||||||
|
psycopg==3.2.4
|
||||||
|
# via -r core_requirements.in
|
||||||
|
pydantic==2.10.5
|
||||||
|
# via
|
||||||
|
# fastapi
|
||||||
|
# fastapi-restful
|
||||||
|
# fastcrud
|
||||||
|
# sqlmodel
|
||||||
|
# sqlmodel-crud-utilities
|
||||||
|
pydantic-core==2.27.2
|
||||||
|
# via
|
||||||
|
# pydantic
|
||||||
|
# sqlmodel-crud-utilities
|
||||||
|
pyee==11.1.1
|
||||||
|
# via pyppeteer
|
||||||
|
pymysql==1.1.1
|
||||||
|
# via aiomysql
|
||||||
|
pyppeteer==2.0.0
|
||||||
|
# via httpx-html
|
||||||
|
pyquery==2.0.1
|
||||||
|
# via httpx-html
|
||||||
|
python-dateutil==2.9.0.post0
|
||||||
|
# via
|
||||||
|
# -r core_requirements.in
|
||||||
|
# celery
|
||||||
|
# sqlmodel-crud-utilities
|
||||||
|
python-decouple==3.8
|
||||||
|
# via -r core_requirements.in
|
||||||
|
python-dotenv==1.0.1
|
||||||
|
# via sqlmodel-crud-utilities
|
||||||
|
python-slugify==8.0.4
|
||||||
|
# via -r core_requirements.in
|
||||||
|
pytz==2024.2
|
||||||
|
# via
|
||||||
|
# -r core_requirements.in
|
||||||
|
# flower
|
||||||
|
redis==5.2.1
|
||||||
|
# via -r core_requirements.in
|
||||||
|
simplejson==3.19.3
|
||||||
|
# via -r core_requirements.in
|
||||||
|
six==1.17.0
|
||||||
|
# via
|
||||||
|
# html5lib
|
||||||
|
# python-dateutil
|
||||||
|
# sqlalchemy-mixins
|
||||||
|
# sqlmodel-crud-utilities
|
||||||
|
sniffio==1.3.1
|
||||||
|
# via anyio
|
||||||
|
socksio==1.0.0
|
||||||
|
# via httpx
|
||||||
|
soupsieve==2.6
|
||||||
|
# via beautifulsoup4
|
||||||
|
sqlalchemy==2.0.37
|
||||||
|
# via
|
||||||
|
# fastcrud
|
||||||
|
# sqlalchemy-mixins
|
||||||
|
# sqlalchemy-utils
|
||||||
|
# sqlmodel
|
||||||
|
# sqlmodel-crud-utilities
|
||||||
|
sqlalchemy-mixins==2.0.5
|
||||||
|
# via -r core_requirements.in
|
||||||
|
sqlalchemy-utils==0.41.2
|
||||||
|
# via fastcrud
|
||||||
|
sqlmodel==0.0.22
|
||||||
|
# via
|
||||||
|
# -r core_requirements.in
|
||||||
|
# sqlmodel-crud-utilities
|
||||||
|
sqlmodel-crud-utilities @ git+https://github.com/fsecada01/SQLModel-CRUD-Utilities@83e964f6e7b633e339e45ddcaaa49cd8617fa105
|
||||||
|
# via -r core_requirements.in
|
||||||
|
starlette==0.41.3
|
||||||
|
# via fastapi
|
||||||
|
text-unidecode==1.3
|
||||||
|
# via python-slugify
|
||||||
|
tornado==6.4.2
|
||||||
|
# via flower
|
||||||
|
tqdm==4.67.1
|
||||||
|
# via pyppeteer
|
||||||
|
typing-extensions==4.12.2
|
||||||
|
# via
|
||||||
|
# anyio
|
||||||
|
# fastapi
|
||||||
|
# psycopg
|
||||||
|
# pydantic
|
||||||
|
# pydantic-core
|
||||||
|
# pyee
|
||||||
|
# sqlalchemy
|
||||||
|
# sqlmodel-crud-utilities
|
||||||
|
# typing-inspect
|
||||||
|
typing-inspect==0.9.0
|
||||||
|
# via -r core_requirements.in
|
||||||
|
tzdata==2024.2
|
||||||
|
# via
|
||||||
|
# celery
|
||||||
|
# kombu
|
||||||
|
# psycopg
|
||||||
|
urllib3==1.26.20
|
||||||
|
# via pyppeteer
|
||||||
|
uvicorn==0.34.0
|
||||||
|
# via -r core_requirements.in
|
||||||
|
vine==5.1.0
|
||||||
|
# via
|
||||||
|
# amqp
|
||||||
|
# celery
|
||||||
|
# kombu
|
||||||
|
w3lib==2.2.1
|
||||||
|
# via httpx-html
|
||||||
|
wcwidth==0.2.13
|
||||||
|
# via prompt-toolkit
|
||||||
|
webencodings==0.5.1
|
||||||
|
# via html5lib
|
||||||
|
websockets==10.4
|
||||||
|
# via pyppeteer
|
||||||
|
win32-setctime==1.2.0
|
||||||
|
# via
|
||||||
|
# loguru
|
||||||
|
# sqlmodel-crud-utilities
|
||||||
|
wsproto==1.2.0
|
||||||
|
# via hypercorn
|
||||||
|
xmljson==0.2.1
|
||||||
|
# via -r core_requirements.in
|
||||||
|
xmltodict==0.14.2
|
||||||
|
# via -r core_requirements.in
|
||||||
|
zipp==3.21.0
|
||||||
|
# via importlib-metadata
|
10
dev_requirements.in
Normal file
10
dev_requirements.in
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
-c core_requirements.txt
|
||||||
|
|
||||||
|
alembic
|
||||||
|
black
|
||||||
|
fastapi-debug-toolbar
|
||||||
|
isort
|
||||||
|
jupyterlab
|
||||||
|
jupyterlab-code-formatter
|
||||||
|
pre-commit
|
||||||
|
ruff
|
403
dev_requirements.txt
Normal file
403
dev_requirements.txt
Normal file
@ -0,0 +1,403 @@
|
|||||||
|
# This file was autogenerated by uv via the following command:
|
||||||
|
# uv pip compile --strip-extras dev_requirements.in -o dev_requirements.txt
|
||||||
|
alembic==1.14.0
|
||||||
|
# via -r dev_requirements.in
|
||||||
|
annotated-types==0.7.0
|
||||||
|
# via
|
||||||
|
# -c core_requirements.txt
|
||||||
|
# pydantic
|
||||||
|
anyio==4.8.0
|
||||||
|
# via
|
||||||
|
# -c core_requirements.txt
|
||||||
|
# fastapi-debug-toolbar
|
||||||
|
# httpx
|
||||||
|
# jupyter-server
|
||||||
|
# starlette
|
||||||
|
argon2-cffi==23.1.0
|
||||||
|
# via jupyter-server
|
||||||
|
argon2-cffi-bindings==21.2.0
|
||||||
|
# via argon2-cffi
|
||||||
|
arrow==1.3.0
|
||||||
|
# via isoduration
|
||||||
|
asttokens==3.0.0
|
||||||
|
# via stack-data
|
||||||
|
async-lru==2.0.4
|
||||||
|
# via jupyterlab
|
||||||
|
attrs==24.3.0
|
||||||
|
# via
|
||||||
|
# jsonschema
|
||||||
|
# referencing
|
||||||
|
babel==2.16.0
|
||||||
|
# via jupyterlab-server
|
||||||
|
beautifulsoup4==4.12.3
|
||||||
|
# via
|
||||||
|
# -c core_requirements.txt
|
||||||
|
# nbconvert
|
||||||
|
black==24.10.0
|
||||||
|
# via -r dev_requirements.in
|
||||||
|
bleach==6.2.0
|
||||||
|
# via nbconvert
|
||||||
|
certifi==2024.12.14
|
||||||
|
# via
|
||||||
|
# -c core_requirements.txt
|
||||||
|
# httpcore
|
||||||
|
# httpx
|
||||||
|
# requests
|
||||||
|
cffi==1.17.1
|
||||||
|
# via argon2-cffi-bindings
|
||||||
|
cfgv==3.4.0
|
||||||
|
# via pre-commit
|
||||||
|
charset-normalizer==3.4.1
|
||||||
|
# via requests
|
||||||
|
click==8.1.8
|
||||||
|
# via
|
||||||
|
# -c core_requirements.txt
|
||||||
|
# black
|
||||||
|
colorama==0.4.6
|
||||||
|
# via
|
||||||
|
# -c core_requirements.txt
|
||||||
|
# click
|
||||||
|
# ipython
|
||||||
|
comm==0.2.2
|
||||||
|
# via ipykernel
|
||||||
|
debugpy==1.8.11
|
||||||
|
# via ipykernel
|
||||||
|
decorator==5.1.1
|
||||||
|
# via ipython
|
||||||
|
defusedxml==0.7.1
|
||||||
|
# via nbconvert
|
||||||
|
distlib==0.3.9
|
||||||
|
# via virtualenv
|
||||||
|
executing==2.1.0
|
||||||
|
# via stack-data
|
||||||
|
fastapi==0.115.6
|
||||||
|
# via
|
||||||
|
# -c core_requirements.txt
|
||||||
|
# fastapi-debug-toolbar
|
||||||
|
fastapi-debug-toolbar==0.6.3
|
||||||
|
# via -r dev_requirements.in
|
||||||
|
fastjsonschema==2.21.1
|
||||||
|
# via nbformat
|
||||||
|
filelock==3.16.1
|
||||||
|
# via virtualenv
|
||||||
|
fqdn==1.5.1
|
||||||
|
# via jsonschema
|
||||||
|
greenlet==3.1.1
|
||||||
|
# via
|
||||||
|
# -c core_requirements.txt
|
||||||
|
# sqlalchemy
|
||||||
|
h11==0.14.0
|
||||||
|
# via
|
||||||
|
# -c core_requirements.txt
|
||||||
|
# httpcore
|
||||||
|
httpcore==1.0.7
|
||||||
|
# via
|
||||||
|
# -c core_requirements.txt
|
||||||
|
# httpx
|
||||||
|
httpx==0.28.1
|
||||||
|
# via
|
||||||
|
# -c core_requirements.txt
|
||||||
|
# jupyterlab
|
||||||
|
identify==2.6.5
|
||||||
|
# via pre-commit
|
||||||
|
idna==3.10
|
||||||
|
# via
|
||||||
|
# -c core_requirements.txt
|
||||||
|
# anyio
|
||||||
|
# httpx
|
||||||
|
# jsonschema
|
||||||
|
# requests
|
||||||
|
ipykernel==6.29.5
|
||||||
|
# via jupyterlab
|
||||||
|
ipython==8.31.0
|
||||||
|
# via ipykernel
|
||||||
|
isoduration==20.11.0
|
||||||
|
# via jsonschema
|
||||||
|
isort==5.13.2
|
||||||
|
# via -r dev_requirements.in
|
||||||
|
jedi==0.19.2
|
||||||
|
# via ipython
|
||||||
|
jinja2==3.1.5
|
||||||
|
# via
|
||||||
|
# fastapi-debug-toolbar
|
||||||
|
# jupyter-server
|
||||||
|
# jupyterlab
|
||||||
|
# jupyterlab-server
|
||||||
|
# nbconvert
|
||||||
|
json5==0.10.0
|
||||||
|
# via jupyterlab-server
|
||||||
|
jsonpointer==3.0.0
|
||||||
|
# via jsonschema
|
||||||
|
jsonschema==4.23.0
|
||||||
|
# via
|
||||||
|
# jupyter-events
|
||||||
|
# jupyterlab-server
|
||||||
|
# nbformat
|
||||||
|
jsonschema-specifications==2024.10.1
|
||||||
|
# via jsonschema
|
||||||
|
jupyter-client==8.6.3
|
||||||
|
# via
|
||||||
|
# ipykernel
|
||||||
|
# jupyter-server
|
||||||
|
# nbclient
|
||||||
|
jupyter-core==5.7.2
|
||||||
|
# via
|
||||||
|
# ipykernel
|
||||||
|
# jupyter-client
|
||||||
|
# jupyter-server
|
||||||
|
# jupyterlab
|
||||||
|
# nbclient
|
||||||
|
# nbconvert
|
||||||
|
# nbformat
|
||||||
|
jupyter-events==0.11.0
|
||||||
|
# via jupyter-server
|
||||||
|
jupyter-lsp==2.2.5
|
||||||
|
# via jupyterlab
|
||||||
|
jupyter-server==2.15.0
|
||||||
|
# via
|
||||||
|
# jupyter-lsp
|
||||||
|
# jupyterlab
|
||||||
|
# jupyterlab-code-formatter
|
||||||
|
# jupyterlab-server
|
||||||
|
# notebook-shim
|
||||||
|
jupyter-server-terminals==0.5.3
|
||||||
|
# via jupyter-server
|
||||||
|
jupyterlab==4.3.4
|
||||||
|
# via -r dev_requirements.in
|
||||||
|
jupyterlab-code-formatter==3.0.2
|
||||||
|
# via -r dev_requirements.in
|
||||||
|
jupyterlab-pygments==0.3.0
|
||||||
|
# via nbconvert
|
||||||
|
jupyterlab-server==2.27.3
|
||||||
|
# via jupyterlab
|
||||||
|
mako==1.3.8
|
||||||
|
# via alembic
|
||||||
|
markupsafe==3.0.2
|
||||||
|
# via
|
||||||
|
# jinja2
|
||||||
|
# mako
|
||||||
|
# nbconvert
|
||||||
|
matplotlib-inline==0.1.7
|
||||||
|
# via
|
||||||
|
# ipykernel
|
||||||
|
# ipython
|
||||||
|
mistune==3.1.0
|
||||||
|
# via nbconvert
|
||||||
|
mypy-extensions==1.0.0
|
||||||
|
# via
|
||||||
|
# -c core_requirements.txt
|
||||||
|
# black
|
||||||
|
nbclient==0.10.2
|
||||||
|
# via nbconvert
|
||||||
|
nbconvert==7.16.5
|
||||||
|
# via jupyter-server
|
||||||
|
nbformat==5.10.4
|
||||||
|
# via
|
||||||
|
# jupyter-server
|
||||||
|
# nbclient
|
||||||
|
# nbconvert
|
||||||
|
nest-asyncio==1.6.0
|
||||||
|
# via ipykernel
|
||||||
|
nodeenv==1.9.1
|
||||||
|
# via pre-commit
|
||||||
|
notebook-shim==0.2.4
|
||||||
|
# via jupyterlab
|
||||||
|
overrides==7.7.0
|
||||||
|
# via jupyter-server
|
||||||
|
packaging==24.2
|
||||||
|
# via
|
||||||
|
# black
|
||||||
|
# ipykernel
|
||||||
|
# jupyter-server
|
||||||
|
# jupyterlab
|
||||||
|
# jupyterlab-code-formatter
|
||||||
|
# jupyterlab-server
|
||||||
|
# nbconvert
|
||||||
|
pandocfilters==1.5.1
|
||||||
|
# via nbconvert
|
||||||
|
parso==0.8.4
|
||||||
|
# via jedi
|
||||||
|
pathspec==0.12.1
|
||||||
|
# via black
|
||||||
|
platformdirs==4.3.6
|
||||||
|
# via
|
||||||
|
# black
|
||||||
|
# jupyter-core
|
||||||
|
# virtualenv
|
||||||
|
pre-commit==4.0.1
|
||||||
|
# via -r dev_requirements.in
|
||||||
|
prometheus-client==0.21.1
|
||||||
|
# via
|
||||||
|
# -c core_requirements.txt
|
||||||
|
# jupyter-server
|
||||||
|
prompt-toolkit==3.0.48
|
||||||
|
# via
|
||||||
|
# -c core_requirements.txt
|
||||||
|
# ipython
|
||||||
|
psutil==5.9.8
|
||||||
|
# via
|
||||||
|
# -c core_requirements.txt
|
||||||
|
# ipykernel
|
||||||
|
pure-eval==0.2.3
|
||||||
|
# via stack-data
|
||||||
|
pycparser==2.22
|
||||||
|
# via cffi
|
||||||
|
pydantic==2.10.5
|
||||||
|
# via
|
||||||
|
# -c core_requirements.txt
|
||||||
|
# fastapi
|
||||||
|
# fastapi-debug-toolbar
|
||||||
|
# pydantic-extra-types
|
||||||
|
# pydantic-settings
|
||||||
|
pydantic-core==2.27.2
|
||||||
|
# via
|
||||||
|
# -c core_requirements.txt
|
||||||
|
# pydantic
|
||||||
|
pydantic-extra-types==2.10.2
|
||||||
|
# via fastapi-debug-toolbar
|
||||||
|
pydantic-settings==2.7.1
|
||||||
|
# via fastapi-debug-toolbar
|
||||||
|
pygments==2.19.1
|
||||||
|
# via
|
||||||
|
# ipython
|
||||||
|
# nbconvert
|
||||||
|
pyinstrument==5.0.0
|
||||||
|
# via fastapi-debug-toolbar
|
||||||
|
python-dateutil==2.9.0.post0
|
||||||
|
# via
|
||||||
|
# -c core_requirements.txt
|
||||||
|
# arrow
|
||||||
|
# jupyter-client
|
||||||
|
python-dotenv==1.0.1
|
||||||
|
# via
|
||||||
|
# -c core_requirements.txt
|
||||||
|
# pydantic-settings
|
||||||
|
python-json-logger==3.2.1
|
||||||
|
# via jupyter-events
|
||||||
|
pywin32==308
|
||||||
|
# via jupyter-core
|
||||||
|
pywinpty==2.0.14
|
||||||
|
# via
|
||||||
|
# jupyter-server
|
||||||
|
# jupyter-server-terminals
|
||||||
|
# terminado
|
||||||
|
pyyaml==6.0.2
|
||||||
|
# via
|
||||||
|
# jupyter-events
|
||||||
|
# pre-commit
|
||||||
|
pyzmq==26.2.0
|
||||||
|
# via
|
||||||
|
# ipykernel
|
||||||
|
# jupyter-client
|
||||||
|
# jupyter-server
|
||||||
|
referencing==0.35.1
|
||||||
|
# via
|
||||||
|
# jsonschema
|
||||||
|
# jsonschema-specifications
|
||||||
|
# jupyter-events
|
||||||
|
requests==2.32.3
|
||||||
|
# via jupyterlab-server
|
||||||
|
rfc3339-validator==0.1.4
|
||||||
|
# via
|
||||||
|
# jsonschema
|
||||||
|
# jupyter-events
|
||||||
|
rfc3986-validator==0.1.1
|
||||||
|
# via
|
||||||
|
# jsonschema
|
||||||
|
# jupyter-events
|
||||||
|
rpds-py==0.22.3
|
||||||
|
# via
|
||||||
|
# jsonschema
|
||||||
|
# referencing
|
||||||
|
ruff==0.9.2
|
||||||
|
# via -r dev_requirements.in
|
||||||
|
send2trash==1.8.3
|
||||||
|
# via jupyter-server
|
||||||
|
setuptools==75.8.0
|
||||||
|
# via jupyterlab
|
||||||
|
six==1.17.0
|
||||||
|
# via
|
||||||
|
# -c core_requirements.txt
|
||||||
|
# python-dateutil
|
||||||
|
# rfc3339-validator
|
||||||
|
sniffio==1.3.1
|
||||||
|
# via
|
||||||
|
# -c core_requirements.txt
|
||||||
|
# anyio
|
||||||
|
soupsieve==2.6
|
||||||
|
# via
|
||||||
|
# -c core_requirements.txt
|
||||||
|
# beautifulsoup4
|
||||||
|
sqlalchemy==2.0.37
|
||||||
|
# via
|
||||||
|
# -c core_requirements.txt
|
||||||
|
# alembic
|
||||||
|
sqlparse==0.5.3
|
||||||
|
# via fastapi-debug-toolbar
|
||||||
|
stack-data==0.6.3
|
||||||
|
# via ipython
|
||||||
|
starlette==0.41.3
|
||||||
|
# via
|
||||||
|
# -c core_requirements.txt
|
||||||
|
# fastapi
|
||||||
|
terminado==0.18.1
|
||||||
|
# via
|
||||||
|
# jupyter-server
|
||||||
|
# jupyter-server-terminals
|
||||||
|
tinycss2==1.4.0
|
||||||
|
# via bleach
|
||||||
|
tornado==6.4.2
|
||||||
|
# via
|
||||||
|
# -c core_requirements.txt
|
||||||
|
# ipykernel
|
||||||
|
# jupyter-client
|
||||||
|
# jupyter-server
|
||||||
|
# jupyterlab
|
||||||
|
# terminado
|
||||||
|
traitlets==5.14.3
|
||||||
|
# via
|
||||||
|
# comm
|
||||||
|
# ipykernel
|
||||||
|
# ipython
|
||||||
|
# jupyter-client
|
||||||
|
# jupyter-core
|
||||||
|
# jupyter-events
|
||||||
|
# jupyter-server
|
||||||
|
# jupyterlab
|
||||||
|
# matplotlib-inline
|
||||||
|
# nbclient
|
||||||
|
# nbconvert
|
||||||
|
# nbformat
|
||||||
|
types-python-dateutil==2.9.0.20241206
|
||||||
|
# via arrow
|
||||||
|
typing-extensions==4.12.2
|
||||||
|
# via
|
||||||
|
# -c core_requirements.txt
|
||||||
|
# alembic
|
||||||
|
# anyio
|
||||||
|
# fastapi
|
||||||
|
# pydantic
|
||||||
|
# pydantic-core
|
||||||
|
# pydantic-extra-types
|
||||||
|
# sqlalchemy
|
||||||
|
uri-template==1.3.0
|
||||||
|
# via jsonschema
|
||||||
|
urllib3==1.26.20
|
||||||
|
# via
|
||||||
|
# -c core_requirements.txt
|
||||||
|
# requests
|
||||||
|
virtualenv==20.29.0
|
||||||
|
# via pre-commit
|
||||||
|
wcwidth==0.2.13
|
||||||
|
# via
|
||||||
|
# -c core_requirements.txt
|
||||||
|
# prompt-toolkit
|
||||||
|
webcolors==24.11.1
|
||||||
|
# via jsonschema
|
||||||
|
webencodings==0.5.1
|
||||||
|
# via
|
||||||
|
# -c core_requirements.txt
|
||||||
|
# bleach
|
||||||
|
# tinycss2
|
||||||
|
websocket-client==1.8.0
|
||||||
|
# via jupyter-server
|
40
docker/celery/start.sh
Executable file
40
docker/celery/start.sh
Executable file
@ -0,0 +1,40 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
#set -o errexit
|
||||||
|
#set -o nounset
|
||||||
|
|
||||||
|
rm -f './celerybeat.pid'
|
||||||
|
|
||||||
|
cd /opt/pygentic_ai
|
||||||
|
source .venv/bin/activate
|
||||||
|
|
||||||
|
#apt-get install supervisor -y
|
||||||
|
#
|
||||||
|
#echo user=nobody >> /etc/supervisor/supervisord.conf
|
||||||
|
#service supervisor stop
|
||||||
|
#service supervisor start
|
||||||
|
#supervisorctl start celeryd
|
||||||
|
#supervisorctl start celerybeat
|
||||||
|
|
||||||
|
celery -A cworker --workdir /opt/pygentic_ai/src worker -l INFO --detach
|
||||||
|
celery -A cworker --workdir \
|
||||||
|
/opt/pygentic_ai/src beat \
|
||||||
|
--scheduler celery.beat.Scheduler \
|
||||||
|
-l INFO \
|
||||||
|
--detach
|
||||||
|
|
||||||
|
sleep 10
|
||||||
|
|
||||||
|
worker_ready() {
|
||||||
|
celery -A cworker --workdir /opt/pygentic_ai/src inspect ping
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
until worker_ready; do
|
||||||
|
>&2 echo 'Celery workers not available'
|
||||||
|
sleep 1
|
||||||
|
done
|
||||||
|
>&2 echo 'Celery workers is available'
|
||||||
|
|
||||||
|
celery -A cworker --workdir /opt/pygentic_ai/src flower --basic-auth=${FLOWER_USERNAME}:${FLOWER_PASSWORD} --port=${CELERY_PORT} -l INFO
|
17
docker/ranked_jobs_ms/build.sh
Executable file
17
docker/ranked_jobs_ms/build.sh
Executable file
@ -0,0 +1,17 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
export DEBIAN_FRONTEND=noninteractive
|
||||||
|
export TZ='America/New York'
|
||||||
|
|
||||||
|
apt-get update && apt-get upgrade -y
|
||||||
|
apt-get install openssh-client \
|
||||||
|
python3-dev \
|
||||||
|
python3-full \
|
||||||
|
python3-venv \
|
||||||
|
python3-pip \
|
||||||
|
git \
|
||||||
|
postgresql \
|
||||||
|
supervisor \
|
||||||
|
g++ \
|
||||||
|
gcc \
|
||||||
|
locales -y
|
12
docker/ranked_jobs_ms/python_build.sh
Executable file
12
docker/ranked_jobs_ms/python_build.sh
Executable file
@ -0,0 +1,12 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
curl -LsSf https://astral.sh/uv/install.sh | sh
|
||||||
|
PATH="/root/.local/bin/:$PATH"
|
||||||
|
cd /opt/pygentic_ai || exit
|
||||||
|
uv venv .venv
|
||||||
|
source .venv/bin/activate
|
||||||
|
for FILE in core_requirements dev_requirements
|
||||||
|
do
|
||||||
|
uv pip compile --upgrade $FILE.in -o $FILE.txt
|
||||||
|
done
|
||||||
|
uv pip sync core_requirements.txt
|
10
docker/ranked_jobs_ms/python_start.sh
Executable file
10
docker/ranked_jobs_ms/python_start.sh
Executable file
@ -0,0 +1,10 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
__dir="$(cd -P -- "$(dirname -- "${BASH_SOURCE[0]}")" && pwd -P)"
|
||||||
|
cd ${__dir}/../.. || exit
|
||||||
|
source .venv/bin/activate
|
||||||
|
cd src || exit
|
||||||
|
gunicorn main:app -w ${WORKERS} -k uvicorn.workers.UvicornWorker \
|
||||||
|
--timeout "${TIMEOUT}" \
|
||||||
|
--forwarded-allow-ips "*" \
|
||||||
|
-b 0.0.0.0:"${PORT}"
|
102
labs/Untitled.ipynb
Normal file
102
labs/Untitled.ipynb
Normal file
@ -0,0 +1,102 @@
|
|||||||
|
{
|
||||||
|
"cells": [
|
||||||
|
{
|
||||||
|
"cell_type": "code",
|
||||||
|
"execution_count": 1,
|
||||||
|
"id": "11b8593d-dea7-44e0-beee-c0c6ffea7d1a",
|
||||||
|
"metadata": {},
|
||||||
|
"outputs": [],
|
||||||
|
"source": [
|
||||||
|
"from pathlib import Path"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "code",
|
||||||
|
"execution_count": 6,
|
||||||
|
"id": "2b9388f3-c7e0-401d-8d0b-9ef43b78bd73",
|
||||||
|
"metadata": {},
|
||||||
|
"outputs": [],
|
||||||
|
"source": [
|
||||||
|
"work_dir = Path(__name__).resolve().parent.parent / \"src\""
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "code",
|
||||||
|
"execution_count": 7,
|
||||||
|
"id": "c0625c16-9e78-4525-aa84-2194480aaf0c",
|
||||||
|
"metadata": {},
|
||||||
|
"outputs": [
|
||||||
|
{
|
||||||
|
"data": {
|
||||||
|
"text/plain": [
|
||||||
|
"WindowsPath('C:/dev/python/interview_eval_project/highmark_agentic_ai/src')"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"execution_count": 7,
|
||||||
|
"metadata": {},
|
||||||
|
"output_type": "execute_result"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"source": [
|
||||||
|
"work_dir"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "code",
|
||||||
|
"execution_count": 8,
|
||||||
|
"id": "481c534a-5120-457c-8f5e-3dbb2a5f1c3d",
|
||||||
|
"metadata": {},
|
||||||
|
"outputs": [],
|
||||||
|
"source": [
|
||||||
|
"backend = work_dir / \"backend\""
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "code",
|
||||||
|
"execution_count": 13,
|
||||||
|
"id": "69c64859-7ad8-4e04-b974-ad54c8647bbf",
|
||||||
|
"metadata": {},
|
||||||
|
"outputs": [],
|
||||||
|
"source": [
|
||||||
|
"if backend.exists():\n",
|
||||||
|
" for folder in (\"core\", \"db\", \"server\", \"settings\", \"site\"):\n",
|
||||||
|
" directory = backend / folder\n",
|
||||||
|
" if not directory.exists():\n",
|
||||||
|
" directory.mkdir(exist_ok=True)\n",
|
||||||
|
" for file in (\"__init__\", \"core\", \"main\", \"utils\", \"consts\"):\n",
|
||||||
|
" file_path = directory / file\n",
|
||||||
|
" # file_path.touch(exist_ok=True)\n",
|
||||||
|
" file_path.unlink(missing_ok=True)"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "code",
|
||||||
|
"execution_count": null,
|
||||||
|
"id": "50e9ff3d-f23a-402d-8bad-5f7f821d6b84",
|
||||||
|
"metadata": {},
|
||||||
|
"outputs": [],
|
||||||
|
"source": []
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"metadata": {
|
||||||
|
"kernelspec": {
|
||||||
|
"display_name": "Pydantic Agent AI",
|
||||||
|
"language": "python",
|
||||||
|
"name": "agentic_ai"
|
||||||
|
},
|
||||||
|
"language_info": {
|
||||||
|
"codemirror_mode": {
|
||||||
|
"name": "ipython",
|
||||||
|
"version": 3
|
||||||
|
},
|
||||||
|
"file_extension": ".py",
|
||||||
|
"mimetype": "text/x-python",
|
||||||
|
"name": "python",
|
||||||
|
"nbconvert_exporter": "python",
|
||||||
|
"pygments_lexer": "ipython3",
|
||||||
|
"version": "3.12.8"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nbformat": 4,
|
||||||
|
"nbformat_minor": 5
|
||||||
|
}
|
288
pyproject.toml
Normal file
288
pyproject.toml
Normal file
@ -0,0 +1,288 @@
|
|||||||
|
[tool.ruff]
|
||||||
|
fix = true
|
||||||
|
exclude = [
|
||||||
|
".bzr",
|
||||||
|
".direnv",
|
||||||
|
".eggs",
|
||||||
|
".git",
|
||||||
|
".hg",
|
||||||
|
".mypy_cache",
|
||||||
|
".nox",
|
||||||
|
".pants.d",
|
||||||
|
".pytype",
|
||||||
|
".ruff_cache",
|
||||||
|
".svn",
|
||||||
|
".tox",
|
||||||
|
".venv",
|
||||||
|
"__pypackages__",
|
||||||
|
"_build",
|
||||||
|
"buck-out",
|
||||||
|
"build",
|
||||||
|
"dist",
|
||||||
|
"node_modules",
|
||||||
|
"venv",
|
||||||
|
"migrations",
|
||||||
|
]
|
||||||
|
|
||||||
|
line-length = 80
|
||||||
|
|
||||||
|
[tool.ruff.lint]
|
||||||
|
preview = true
|
||||||
|
select = ["E", "F", "B"]
|
||||||
|
#select = ["E", "F", "I", "PL", "I", "B"]
|
||||||
|
ignore = ["B008", "E501"] # black will take care of line-length violations
|
||||||
|
ignore-init-module-imports = true
|
||||||
|
unfixable = []
|
||||||
|
|
||||||
|
[tool.ruff.lint.mccabe]
|
||||||
|
max-complexity = 10
|
||||||
|
|
||||||
|
[tool.ruff.lint.per-file-ignores]
|
||||||
|
"__init__.py" = ["F403", "F405", "E501"]
|
||||||
|
"consts.py" = ["E501"]
|
||||||
|
|
||||||
|
[tool.black]
|
||||||
|
line-length = 80
|
||||||
|
target-version = ['py39', 'py310', 'py311', 'py312', 'py313']
|
||||||
|
extend-exclude = '''
|
||||||
|
/(
|
||||||
|
# The following are specific to Black, you probably don't want those.
|
||||||
|
| blib2to3
|
||||||
|
| tests/data
|
||||||
|
| profiling
|
||||||
|
)/
|
||||||
|
'''
|
||||||
|
[tool.isort]
|
||||||
|
profile = "black"
|
||||||
|
line_length = 80
|
||||||
|
|
||||||
|
[tool.uv.sources]
|
||||||
|
sqlmodel-crud-utilities = { git = "https://github.com/fsecada01/SQLModel-CRUD-Utilities", rev = "83e964f6e7b633e339e45ddcaaa49cd8617fa105" }
|
||||||
|
#multi_line_output = 3
|
||||||
|
#include_trailing_comma = true
|
||||||
|
#force_grid_wrap = 0
|
||||||
|
|
||||||
|
[project]
|
||||||
|
name = "agentic_ai_service"
|
||||||
|
authors = [
|
||||||
|
{ name = "Francis Secada", email = "francis.secada@gmail.com" }
|
||||||
|
]
|
||||||
|
readme = "README.md"
|
||||||
|
classifiers = [
|
||||||
|
"Programming Language :: Python :: 3",
|
||||||
|
"License :: OSI Approved :: MIT License",
|
||||||
|
"Operating System :: OS Independent",
|
||||||
|
]
|
||||||
|
version = "1.0.0b0"
|
||||||
|
dependencies = [
|
||||||
|
"aiofiles==24.1.0",
|
||||||
|
"aiomysql==0.2.0",
|
||||||
|
"amqp==5.3.1",
|
||||||
|
"annotated-types==0.7.0",
|
||||||
|
"anyio==4.8.0",
|
||||||
|
"appdirs==1.4.4",
|
||||||
|
"beautifulsoup4==4.12.3",
|
||||||
|
"billiard==4.2.1",
|
||||||
|
"celery==5.4.0",
|
||||||
|
"certifi==2024.12.14",
|
||||||
|
"click-didyoumean==0.3.1",
|
||||||
|
"click-plugins==1.1.1",
|
||||||
|
"click-repl==0.3.0",
|
||||||
|
"click==8.1.8",
|
||||||
|
"colorama==0.4.6",
|
||||||
|
"cssselect==1.2.0",
|
||||||
|
"fake-useragent==2.0.3",
|
||||||
|
"fastapi-restful==0.6.0",
|
||||||
|
"fastapi==0.115.6",
|
||||||
|
"fastcrud==0.15.5",
|
||||||
|
"flower==2.0.1",
|
||||||
|
"greenlet==3.1.1",
|
||||||
|
"h11==0.14.0",
|
||||||
|
"h2==4.1.0",
|
||||||
|
"hpack==4.0.0",
|
||||||
|
"html5lib==1.1",
|
||||||
|
"httpcore==1.0.7",
|
||||||
|
"httpx-html==0.11.0.dev0",
|
||||||
|
"httpx==0.28.1",
|
||||||
|
"humanize==4.11.0",
|
||||||
|
"hypercorn==0.17.3",
|
||||||
|
"hyperframe==6.0.1",
|
||||||
|
"idna==3.10",
|
||||||
|
"importlib-metadata==8.5.0",
|
||||||
|
"kombu==5.4.2",
|
||||||
|
"loguru==0.7.3",
|
||||||
|
"lxml-html-clean==0.4.1",
|
||||||
|
"lxml==5.3.0",
|
||||||
|
"mypy-extensions==1.0.0",
|
||||||
|
"parse==1.20.2",
|
||||||
|
"priority==2.0.0",
|
||||||
|
"prometheus-client==0.21.1",
|
||||||
|
"prompt-toolkit==3.0.48",
|
||||||
|
"psutil==5.9.8",
|
||||||
|
"psycopg==3.2.4",
|
||||||
|
"pydantic-core==2.27.2",
|
||||||
|
"pydantic==2.10.5",
|
||||||
|
"pyee==11.1.1",
|
||||||
|
"pymysql==1.1.1",
|
||||||
|
"pyppeteer==2.0.0",
|
||||||
|
"pyquery==2.0.1",
|
||||||
|
"python-dateutil==2.9.0.post0",
|
||||||
|
"python-decouple==3.8",
|
||||||
|
"python-dotenv==1.0.1",
|
||||||
|
"python-slugify==8.0.4",
|
||||||
|
"pytz==2024.2",
|
||||||
|
"redis==5.2.1",
|
||||||
|
"simplejson==3.19.3",
|
||||||
|
"six==1.17.0",
|
||||||
|
"sniffio==1.3.1",
|
||||||
|
"socksio==1.0.0",
|
||||||
|
"soupsieve==2.6",
|
||||||
|
"sqlalchemy-mixins==2.0.5",
|
||||||
|
"sqlalchemy-utils==0.41.2",
|
||||||
|
"sqlalchemy==2.0.37",
|
||||||
|
"sqlmodel-crud-utilities",
|
||||||
|
"sqlmodel==0.0.22",
|
||||||
|
"starlette==0.41.3",
|
||||||
|
"text-unidecode==1.3",
|
||||||
|
"tornado==6.4.2",
|
||||||
|
"tqdm==4.67.1",
|
||||||
|
"typing-extensions==4.12.2",
|
||||||
|
"typing-inspect==0.9.0",
|
||||||
|
"tzdata==2024.2",
|
||||||
|
"urllib3==1.26.20",
|
||||||
|
"uvicorn==0.34.0",
|
||||||
|
"vine==5.1.0",
|
||||||
|
"w3lib==2.2.1",
|
||||||
|
"wcwidth==0.2.13",
|
||||||
|
"webencodings==0.5.1",
|
||||||
|
"websockets==10.4",
|
||||||
|
"win32-setctime==1.2.0",
|
||||||
|
"wsproto==1.2.0",
|
||||||
|
"xmljson==0.2.1",
|
||||||
|
"xmltodict==0.14.2",
|
||||||
|
"zipp==3.21.0",
|
||||||
|
]
|
||||||
|
|
||||||
|
[dependency-groups]
|
||||||
|
dev = [
|
||||||
|
"alembic==1.14.0",
|
||||||
|
"annotated-types==0.7.0",
|
||||||
|
"anyio==4.8.0",
|
||||||
|
"argon2-cffi-bindings==21.2.0",
|
||||||
|
"argon2-cffi==23.1.0",
|
||||||
|
"arrow==1.3.0",
|
||||||
|
"asttokens==3.0.0",
|
||||||
|
"async-lru==2.0.4",
|
||||||
|
"attrs==24.3.0",
|
||||||
|
"babel==2.16.0",
|
||||||
|
"beautifulsoup4==4.12.3",
|
||||||
|
"black==24.10.0",
|
||||||
|
"bleach==6.2.0",
|
||||||
|
"certifi==2024.12.14",
|
||||||
|
"cffi==1.17.1",
|
||||||
|
"cfgv==3.4.0",
|
||||||
|
"charset-normalizer==3.4.1",
|
||||||
|
"click==8.1.8",
|
||||||
|
"colorama==0.4.6",
|
||||||
|
"comm==0.2.2",
|
||||||
|
"debugpy==1.8.11",
|
||||||
|
"decorator==5.1.1",
|
||||||
|
"defusedxml==0.7.1",
|
||||||
|
"distlib==0.3.9",
|
||||||
|
"executing==2.1.0",
|
||||||
|
"fastapi-debug-toolbar==0.6.3",
|
||||||
|
"fastapi==0.115.6",
|
||||||
|
"fastjsonschema==2.21.1",
|
||||||
|
"filelock==3.16.1",
|
||||||
|
"fqdn==1.5.1",
|
||||||
|
"greenlet==3.1.1",
|
||||||
|
"h11==0.14.0",
|
||||||
|
"httpcore==1.0.7",
|
||||||
|
"httpx==0.28.1",
|
||||||
|
"identify==2.6.5",
|
||||||
|
"idna==3.10",
|
||||||
|
"ipykernel==6.29.5",
|
||||||
|
"ipython==8.31.0",
|
||||||
|
"isoduration==20.11.0",
|
||||||
|
"isort==5.13.2",
|
||||||
|
"jedi==0.19.2",
|
||||||
|
"jinja2==3.1.5",
|
||||||
|
"json5==0.10.0",
|
||||||
|
"jsonpointer==3.0.0",
|
||||||
|
"jsonschema-specifications==2024.10.1",
|
||||||
|
"jsonschema==4.23.0",
|
||||||
|
"jupyter-client==8.6.3",
|
||||||
|
"jupyter-core==5.7.2",
|
||||||
|
"jupyter-events==0.11.0",
|
||||||
|
"jupyter-lsp==2.2.5",
|
||||||
|
"jupyter-server-terminals==0.5.3",
|
||||||
|
"jupyter-server==2.15.0",
|
||||||
|
"jupyterlab-code-formatter==3.0.2",
|
||||||
|
"jupyterlab-pygments==0.3.0",
|
||||||
|
"jupyterlab-server==2.27.3",
|
||||||
|
"jupyterlab==4.3.4",
|
||||||
|
"mako==1.3.8",
|
||||||
|
"markupsafe==3.0.2",
|
||||||
|
"matplotlib-inline==0.1.7",
|
||||||
|
"mistune==3.1.0",
|
||||||
|
"mypy-extensions==1.0.0",
|
||||||
|
"nbclient==0.10.2",
|
||||||
|
"nbconvert==7.16.5",
|
||||||
|
"nbformat==5.10.4",
|
||||||
|
"nest-asyncio==1.6.0",
|
||||||
|
"nodeenv==1.9.1",
|
||||||
|
"notebook-shim==0.2.4",
|
||||||
|
"overrides==7.7.0",
|
||||||
|
"packaging==24.2",
|
||||||
|
"pandocfilters==1.5.1",
|
||||||
|
"parso==0.8.4",
|
||||||
|
"pathspec==0.12.1",
|
||||||
|
"platformdirs==4.3.6",
|
||||||
|
"pre-commit==4.0.1",
|
||||||
|
"prometheus-client==0.21.1",
|
||||||
|
"prompt-toolkit==3.0.48",
|
||||||
|
"psutil==5.9.8",
|
||||||
|
"pure-eval==0.2.3",
|
||||||
|
"pycparser==2.22",
|
||||||
|
"pydantic-core==2.27.2",
|
||||||
|
"pydantic-extra-types==2.10.2",
|
||||||
|
"pydantic-settings==2.7.1",
|
||||||
|
"pydantic==2.10.5",
|
||||||
|
"pygments==2.19.1",
|
||||||
|
"pyinstrument==5.0.0",
|
||||||
|
"python-dateutil==2.9.0.post0",
|
||||||
|
"python-dotenv==1.0.1",
|
||||||
|
"python-json-logger==3.2.1",
|
||||||
|
"pywin32==308",
|
||||||
|
"pywinpty==2.0.14",
|
||||||
|
"pyyaml==6.0.2",
|
||||||
|
"pyzmq==26.2.0",
|
||||||
|
"referencing==0.35.1",
|
||||||
|
"requests==2.32.3",
|
||||||
|
"rfc3339-validator==0.1.4",
|
||||||
|
"rfc3986-validator==0.1.1",
|
||||||
|
"rpds-py==0.22.3",
|
||||||
|
"ruff==0.9.2",
|
||||||
|
"send2trash==1.8.3",
|
||||||
|
"setuptools==75.8.0",
|
||||||
|
"six==1.17.0",
|
||||||
|
"sniffio==1.3.1",
|
||||||
|
"soupsieve==2.6",
|
||||||
|
"sqlalchemy==2.0.37",
|
||||||
|
"sqlparse==0.5.3",
|
||||||
|
"stack-data==0.6.3",
|
||||||
|
"starlette==0.41.3",
|
||||||
|
"terminado==0.18.1",
|
||||||
|
"tinycss2==1.4.0",
|
||||||
|
"tornado==6.4.2",
|
||||||
|
"traitlets==5.14.3",
|
||||||
|
"types-python-dateutil==2.9.0.20241206",
|
||||||
|
"typing-extensions==4.12.2",
|
||||||
|
"uri-template==1.3.0",
|
||||||
|
"urllib3==1.26.20",
|
||||||
|
"virtualenv==20.29.0",
|
||||||
|
"wcwidth==0.2.13",
|
||||||
|
"webcolors==24.11.1",
|
||||||
|
"webencodings==0.5.1",
|
||||||
|
"websocket-client==1.8.0",
|
||||||
|
]
|
0
src/app.py
Normal file
0
src/app.py
Normal file
0
src/backend/__init__.py
Normal file
0
src/backend/__init__.py
Normal file
0
src/backend/core/__init__.py
Normal file
0
src/backend/core/__init__.py
Normal file
0
src/backend/core/consts.py
Normal file
0
src/backend/core/consts.py
Normal file
0
src/backend/core/core.py
Normal file
0
src/backend/core/core.py
Normal file
0
src/backend/core/main.py
Normal file
0
src/backend/core/main.py
Normal file
0
src/backend/core/utils.py
Normal file
0
src/backend/core/utils.py
Normal file
0
src/backend/db/__init__.py
Normal file
0
src/backend/db/__init__.py
Normal file
0
src/backend/db/consts.py
Normal file
0
src/backend/db/consts.py
Normal file
0
src/backend/db/core.py
Normal file
0
src/backend/db/core.py
Normal file
0
src/backend/db/main.py
Normal file
0
src/backend/db/main.py
Normal file
0
src/backend/db/utils.py
Normal file
0
src/backend/db/utils.py
Normal file
0
src/backend/logger.py
Normal file
0
src/backend/logger.py
Normal file
0
src/backend/server/__init__.py
Normal file
0
src/backend/server/__init__.py
Normal file
0
src/backend/server/consts.py
Normal file
0
src/backend/server/consts.py
Normal file
0
src/backend/server/core.py
Normal file
0
src/backend/server/core.py
Normal file
0
src/backend/server/main.py
Normal file
0
src/backend/server/main.py
Normal file
0
src/backend/server/utils.py
Normal file
0
src/backend/server/utils.py
Normal file
0
src/backend/settings/__init__.py
Normal file
0
src/backend/settings/__init__.py
Normal file
0
src/backend/settings/consts.py
Normal file
0
src/backend/settings/consts.py
Normal file
0
src/backend/settings/core.py
Normal file
0
src/backend/settings/core.py
Normal file
0
src/backend/settings/main.py
Normal file
0
src/backend/settings/main.py
Normal file
0
src/backend/settings/utils.py
Normal file
0
src/backend/settings/utils.py
Normal file
0
src/backend/site/__init__.py
Normal file
0
src/backend/site/__init__.py
Normal file
0
src/backend/site/consts.py
Normal file
0
src/backend/site/consts.py
Normal file
0
src/backend/site/core.py
Normal file
0
src/backend/site/core.py
Normal file
0
src/backend/site/main.py
Normal file
0
src/backend/site/main.py
Normal file
0
src/backend/site/utils.py
Normal file
0
src/backend/site/utils.py
Normal file
0
src/backend/utils.py
Normal file
0
src/backend/utils.py
Normal file
0
src/cworker.py
Normal file
0
src/cworker.py
Normal file
Loading…
x
Reference in New Issue
Block a user