diff --git a/Makefile b/Makefile new file mode 100644 index 0000000000000000000000000000000000000000..759a81c2e3d0b1e301531ba16ffa9ecdb8ae805e --- /dev/null +++ b/Makefile @@ -0,0 +1,31 @@ +IMAGE_NAME = huge-ifx-api + +extract-lock: + @echo "Extracting poetry.lock from container..." + @docker create --name temp-extract ${IMAGE_NAME} + @docker cp temp-extract:/code/poetry.lock . + @docker rm temp-extract + @echo "Lock file updated locally." + +build: + docker compose -f docker-compose.yaml build + +build-update: + @echo "Deleting lock file..." + rm -f poetry.lock + @echo "Rebuilding image..." + docker compose -f docker-compose.yaml build + @$(MAKE) extract-lock + +up: + docker compose -f docker-compose.yaml up + +command: + docker exec -it ${IMAGE_NAME} /bin/bash + +command-raw: + docker compose run ${IMAGE_NAME} bash + +clean-requirements: + rm -f poetry.lock + \ No newline at end of file diff --git a/api/Dockerfile b/api/Dockerfile new file mode 100644 index 0000000000000000000000000000000000000000..85e114dfb750144cb460d61fa33a295b7240b5f1 --- /dev/null +++ b/api/Dockerfile @@ -0,0 +1,69 @@ +# === Builder Stage === +FROM python:3.12-slim AS base +# FROM nvidia/cuda:12.4.1-devel-ubuntu22.04 as base + +# Install build tools and required system packages +RUN apt update -y && apt install --no-install-recommends -y \ + build-essential \ + vim \ + python3-dev \ + python3-pip \ + curl + +WORKDIR /code + +# Set environment variables for Python behavior and module discovery +ENV PYTHONUNBUFFERED=1 +ENV PYTHONPATH="$PYTHONPATH:/code" + +# Setup history for interactive sessions (ensuring it’s mappable with a volume) +RUN mkdir -p /root/history +ENV HISTFILE=/root/history/.bash_history +ENV PROMPT_COMMAND="history -a" + +# Build the Huggingface cache directory +RUN mkdir -p /huggingface_cache +ENV HF_HOME="/huggingface_cache" + +# Install Poetry inside the container +RUN curl -sSL https://install.python-poetry.org | python3 - +ENV PATH="/root/.local/bin:$PATH" + +# Configure Poetry to install directly into system Python (no venv) +RUN poetry config virtualenvs.create false + +# Copy project dependency descriptors +COPY pyproject.toml poetry.lock* ./ + +# Install dependencies using Poetry into the system environment +RUN poetry install --no-root --no-interaction --no-ansi --only main + +# === Runtime Stage === +FROM python:3.12-slim AS runtime + +WORKDIR /code + +# Copy installed dependencies from the builder +COPY --from=base /usr/local/lib/python3.12/site-packages /usr/local/lib/python3.12/site-packages +COPY --from=base /usr/local/bin /usr/local/bin + +# Reapply the environment variables for runtime and module resolution +ENV PYTHONUNBUFFERED=1 +ENV PYTHONPATH="$PYTHONPATH:/code" + +# Recreate history and Huggingface cache directories (so they can be mapped via Docker Compose) +RUN mkdir -p /root/history +ENV HISTFILE=/root/history/.bash_history +ENV PROMPT_COMMAND="history -a" + +RUN mkdir -p /huggingface_cache +ENV HF_HOME="/huggingface_cache" + +# Copy the rest of your application code +COPY . . + +# Expose your service port +EXPOSE 8000 + +# Final command to run your app +CMD ["uvicorn", "server:app", "--host", "0.0.0.0", "--port", "8000"] \ No newline at end of file diff --git a/api/poetry.lock b/api/poetry.lock new file mode 100644 index 0000000000000000000000000000000000000000..ef841b0f7f73951c6ee4b4d947f241e1c33dfcc6 --- /dev/null +++ b/api/poetry.lock @@ -0,0 +1,1000 @@ +# This file is automatically @generated by Poetry 2.1.3 and should not be changed by hand. + +[[package]] +name = "annotated-types" +version = "0.7.0" +description = "Reusable constraint types to use with typing.Annotated" +optional = false +python-versions = ">=3.8" +groups = ["main"] +files = [ + {file = "annotated_types-0.7.0-py3-none-any.whl", hash = "sha256:1f02e8b43a8fbbc3f3e0d4f0f4bfc8131bcb4eebe8849b8e5c773f3a1c582a53"}, + {file = "annotated_types-0.7.0.tar.gz", hash = "sha256:aff07c09a53a08bc8cfccb9c85b05f1aa9a2a6f23728d790723543408344ce89"}, +] + +[[package]] +name = "anyio" +version = "4.9.0" +description = "High level compatibility layer for multiple asynchronous event loop implementations" +optional = false +python-versions = ">=3.9" +groups = ["main"] +files = [ + {file = "anyio-4.9.0-py3-none-any.whl", hash = "sha256:9f76d541cad6e36af7beb62e978876f3b41e3e04f2c1fbf0884604c0a9c4d93c"}, + {file = "anyio-4.9.0.tar.gz", hash = "sha256:673c0c244e15788651a4ff38710fea9675823028a6f08a5eda409e0c9840a028"}, +] + +[package.dependencies] +idna = ">=2.8" +sniffio = ">=1.1" +typing_extensions = {version = ">=4.5", markers = "python_version < \"3.13\""} + +[package.extras] +doc = ["Sphinx (>=8.2,<9.0)", "packaging", "sphinx-autodoc-typehints (>=1.2.0)", "sphinx_rtd_theme"] +test = ["anyio[trio]", "blockbuster (>=1.5.23)", "coverage[toml] (>=7)", "exceptiongroup (>=1.2.0)", "hypothesis (>=4.0)", "psutil (>=5.9)", "pytest (>=7.0)", "trustme", "truststore (>=0.9.1) ; python_version >= \"3.10\"", "uvloop (>=0.21) ; platform_python_implementation == \"CPython\" and platform_system != \"Windows\" and python_version < \"3.14\""] +trio = ["trio (>=0.26.1)"] + +[[package]] +name = "asyncio" +version = "3.4.3" +description = "reference implementation of PEP 3156" +optional = false +python-versions = "*" +groups = ["main"] +files = [ + {file = "asyncio-3.4.3-cp33-none-win32.whl", hash = "sha256:b62c9157d36187eca799c378e572c969f0da87cd5fc42ca372d92cdb06e7e1de"}, + {file = "asyncio-3.4.3-cp33-none-win_amd64.whl", hash = "sha256:c46a87b48213d7464f22d9a497b9eef8c1928b68320a2fa94240f969f6fec08c"}, + {file = "asyncio-3.4.3-py3-none-any.whl", hash = "sha256:c4d18b22701821de07bd6aea8b53d21449ec0ec5680645e5317062ea21817d2d"}, + {file = "asyncio-3.4.3.tar.gz", hash = "sha256:83360ff8bc97980e4ff25c964c7bd3923d333d177aa4f7fb736b019f26c7cb41"}, +] + +[[package]] +name = "certifi" +version = "2025.1.31" +description = "Python package for providing Mozilla's CA Bundle." +optional = false +python-versions = ">=3.6" +groups = ["main"] +files = [ + {file = "certifi-2025.1.31-py3-none-any.whl", hash = "sha256:ca78db4565a652026a4db2bcdf68f2fb589ea80d0be70e03929ed730746b84fe"}, + {file = "certifi-2025.1.31.tar.gz", hash = "sha256:3d5da6925056f6f18f119200434a4780a94263f10d1c21d032a6f6b2baa20651"}, +] + +[[package]] +name = "click" +version = "8.1.8" +description = "Composable command line interface toolkit" +optional = false +python-versions = ">=3.7" +groups = ["main"] +files = [ + {file = "click-8.1.8-py3-none-any.whl", hash = "sha256:63c132bbbed01578a06712a2d1f497bb62d9c1c0d329b7903a866228027263b2"}, + {file = "click-8.1.8.tar.gz", hash = "sha256:ed53c9d8990d83c2a27deae68e4ee337473f6330c040a31d4225c9574d16096a"}, +] + +[package.dependencies] +colorama = {version = "*", markers = "platform_system == \"Windows\""} + +[[package]] +name = "colorama" +version = "0.4.6" +description = "Cross-platform colored terminal text." +optional = false +python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7" +groups = ["main", "dev"] +files = [ + {file = "colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6"}, + {file = "colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44"}, +] +markers = {main = "platform_system == \"Windows\" or sys_platform == \"win32\"", dev = "sys_platform == \"win32\""} + +[[package]] +name = "debugpy" +version = "1.8.13" +description = "An implementation of the Debug Adapter Protocol for Python" +optional = false +python-versions = ">=3.8" +groups = ["main"] +files = [ + {file = "debugpy-1.8.13-cp310-cp310-macosx_14_0_x86_64.whl", hash = "sha256:06859f68e817966723ffe046b896b1bd75c665996a77313370336ee9e1de3e90"}, + {file = "debugpy-1.8.13-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cb56c2db69fb8df3168bc857d7b7d2494fed295dfdbde9a45f27b4b152f37520"}, + {file = "debugpy-1.8.13-cp310-cp310-win32.whl", hash = "sha256:46abe0b821cad751fc1fb9f860fb2e68d75e2c5d360986d0136cd1db8cad4428"}, + {file = "debugpy-1.8.13-cp310-cp310-win_amd64.whl", hash = "sha256:dc7b77f5d32674686a5f06955e4b18c0e41fb5a605f5b33cf225790f114cfeec"}, + {file = "debugpy-1.8.13-cp311-cp311-macosx_14_0_universal2.whl", hash = "sha256:eee02b2ed52a563126c97bf04194af48f2fe1f68bb522a312b05935798e922ff"}, + {file = "debugpy-1.8.13-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4caca674206e97c85c034c1efab4483f33971d4e02e73081265ecb612af65377"}, + {file = "debugpy-1.8.13-cp311-cp311-win32.whl", hash = "sha256:7d9a05efc6973b5aaf076d779cf3a6bbb1199e059a17738a2aa9d27a53bcc888"}, + {file = "debugpy-1.8.13-cp311-cp311-win_amd64.whl", hash = "sha256:62f9b4a861c256f37e163ada8cf5a81f4c8d5148fc17ee31fb46813bd658cdcc"}, + {file = "debugpy-1.8.13-cp312-cp312-macosx_14_0_universal2.whl", hash = "sha256:2b8de94c5c78aa0d0ed79023eb27c7c56a64c68217d881bee2ffbcb13951d0c1"}, + {file = "debugpy-1.8.13-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:887d54276cefbe7290a754424b077e41efa405a3e07122d8897de54709dbe522"}, + {file = "debugpy-1.8.13-cp312-cp312-win32.whl", hash = "sha256:3872ce5453b17837ef47fb9f3edc25085ff998ce63543f45ba7af41e7f7d370f"}, + {file = "debugpy-1.8.13-cp312-cp312-win_amd64.whl", hash = "sha256:63ca7670563c320503fea26ac688988d9d6b9c6a12abc8a8cf2e7dd8e5f6b6ea"}, + {file = "debugpy-1.8.13-cp313-cp313-macosx_14_0_universal2.whl", hash = "sha256:31abc9618be4edad0b3e3a85277bc9ab51a2d9f708ead0d99ffb5bb750e18503"}, + {file = "debugpy-1.8.13-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a0bd87557f97bced5513a74088af0b84982b6ccb2e254b9312e29e8a5c4270eb"}, + {file = "debugpy-1.8.13-cp313-cp313-win32.whl", hash = "sha256:5268ae7fdca75f526d04465931cb0bd24577477ff50e8bb03dab90983f4ebd02"}, + {file = "debugpy-1.8.13-cp313-cp313-win_amd64.whl", hash = "sha256:79ce4ed40966c4c1631d0131606b055a5a2f8e430e3f7bf8fd3744b09943e8e8"}, + {file = "debugpy-1.8.13-cp38-cp38-macosx_14_0_x86_64.whl", hash = "sha256:acf39a6e98630959763f9669feddee540745dfc45ad28dbc9bd1f9cd60639391"}, + {file = "debugpy-1.8.13-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:924464d87e7d905eb0d79fb70846558910e906d9ee309b60c4fe597a2e802590"}, + {file = "debugpy-1.8.13-cp38-cp38-win32.whl", hash = "sha256:3dae443739c6b604802da9f3e09b0f45ddf1cf23c99161f3a1a8039f61a8bb89"}, + {file = "debugpy-1.8.13-cp38-cp38-win_amd64.whl", hash = "sha256:ed93c3155fc1f888ab2b43626182174e457fc31b7781cd1845629303790b8ad1"}, + {file = "debugpy-1.8.13-cp39-cp39-macosx_14_0_x86_64.whl", hash = "sha256:6fab771639332bd8ceb769aacf454a30d14d7a964f2012bf9c4e04c60f16e85b"}, + {file = "debugpy-1.8.13-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:32b6857f8263a969ce2ca098f228e5cc0604d277447ec05911a8c46cf3e7e307"}, + {file = "debugpy-1.8.13-cp39-cp39-win32.whl", hash = "sha256:f14d2c4efa1809da125ca62df41050d9c7cd9cb9e380a2685d1e453c4d450ccb"}, + {file = "debugpy-1.8.13-cp39-cp39-win_amd64.whl", hash = "sha256:ea869fe405880327497e6945c09365922c79d2a1eed4c3ae04d77ac7ae34b2b5"}, + {file = "debugpy-1.8.13-py2.py3-none-any.whl", hash = "sha256:d4ba115cdd0e3a70942bd562adba9ec8c651fe69ddde2298a1be296fc331906f"}, + {file = "debugpy-1.8.13.tar.gz", hash = "sha256:837e7bef95bdefba426ae38b9a94821ebdc5bea55627879cd48165c90b9e50ce"}, +] + +[[package]] +name = "distro" +version = "1.9.0" +description = "Distro - an OS platform information API" +optional = false +python-versions = ">=3.6" +groups = ["main"] +files = [ + {file = "distro-1.9.0-py3-none-any.whl", hash = "sha256:7bffd925d65168f85027d8da9af6bddab658135b840670a223589bc0c8ef02b2"}, + {file = "distro-1.9.0.tar.gz", hash = "sha256:2fa77c6fd8940f116ee1d6b94a2f90b13b5ea8d019b98bc8bafdcabcdd9bdbed"}, +] + +[[package]] +name = "fastapi" +version = "0.115.12" +description = "FastAPI framework, high performance, easy to learn, fast to code, ready for production" +optional = false +python-versions = ">=3.8" +groups = ["main"] +files = [ + {file = "fastapi-0.115.12-py3-none-any.whl", hash = "sha256:e94613d6c05e27be7ffebdd6ea5f388112e5e430c8f7d6494a9d1d88d43e814d"}, + {file = "fastapi-0.115.12.tar.gz", hash = "sha256:1e2c2a2646905f9e83d32f04a3f86aff4a286669c6c950ca95b5fd68c2602681"}, +] + +[package.dependencies] +pydantic = ">=1.7.4,<1.8 || >1.8,<1.8.1 || >1.8.1,<2.0.0 || >2.0.0,<2.0.1 || >2.0.1,<2.1.0 || >2.1.0,<3.0.0" +starlette = ">=0.40.0,<0.47.0" +typing-extensions = ">=4.8.0" + +[package.extras] +all = ["email-validator (>=2.0.0)", "fastapi-cli[standard] (>=0.0.5)", "httpx (>=0.23.0)", "itsdangerous (>=1.1.0)", "jinja2 (>=3.1.5)", "orjson (>=3.2.1)", "pydantic-extra-types (>=2.0.0)", "pydantic-settings (>=2.0.0)", "python-multipart (>=0.0.18)", "pyyaml (>=5.3.1)", "ujson (>=4.0.1,!=4.0.2,!=4.1.0,!=4.2.0,!=4.3.0,!=5.0.0,!=5.1.0)", "uvicorn[standard] (>=0.12.0)"] +standard = ["email-validator (>=2.0.0)", "fastapi-cli[standard] (>=0.0.5)", "httpx (>=0.23.0)", "jinja2 (>=3.1.5)", "python-multipart (>=0.0.18)", "uvicorn[standard] (>=0.12.0)"] + +[[package]] +name = "h11" +version = "0.14.0" +description = "A pure-Python, bring-your-own-I/O implementation of HTTP/1.1" +optional = false +python-versions = ">=3.7" +groups = ["main"] +files = [ + {file = "h11-0.14.0-py3-none-any.whl", hash = "sha256:e3fe4ac4b851c468cc8363d500db52c2ead036020723024a109d37346efaa761"}, + {file = "h11-0.14.0.tar.gz", hash = "sha256:8f19fbbe99e72420ff35c00b27a34cb9937e902a8b810e2c88300c6f0a3b699d"}, +] + +[[package]] +name = "httpcore" +version = "1.0.7" +description = "A minimal low-level HTTP client." +optional = false +python-versions = ">=3.8" +groups = ["main"] +files = [ + {file = "httpcore-1.0.7-py3-none-any.whl", hash = "sha256:a3fff8f43dc260d5bd363d9f9cf1830fa3a458b332856f34282de498ed420edd"}, + {file = "httpcore-1.0.7.tar.gz", hash = "sha256:8551cb62a169ec7162ac7be8d4817d561f60e08eaa485234898414bb5a8a0b4c"}, +] + +[package.dependencies] +certifi = "*" +h11 = ">=0.13,<0.15" + +[package.extras] +asyncio = ["anyio (>=4.0,<5.0)"] +http2 = ["h2 (>=3,<5)"] +socks = ["socksio (==1.*)"] +trio = ["trio (>=0.22.0,<1.0)"] + +[[package]] +name = "httptools" +version = "0.6.4" +description = "A collection of framework independent HTTP protocol utils." +optional = false +python-versions = ">=3.8.0" +groups = ["main"] +files = [ + {file = "httptools-0.6.4-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:3c73ce323711a6ffb0d247dcd5a550b8babf0f757e86a52558fe5b86d6fefcc0"}, + {file = "httptools-0.6.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:345c288418f0944a6fe67be8e6afa9262b18c7626c3ef3c28adc5eabc06a68da"}, + {file = "httptools-0.6.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:deee0e3343f98ee8047e9f4c5bc7cedbf69f5734454a94c38ee829fb2d5fa3c1"}, + {file = "httptools-0.6.4-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ca80b7485c76f768a3bc83ea58373f8db7b015551117375e4918e2aa77ea9b50"}, + {file = "httptools-0.6.4-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:90d96a385fa941283ebd231464045187a31ad932ebfa541be8edf5b3c2328959"}, + {file = "httptools-0.6.4-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:59e724f8b332319e2875efd360e61ac07f33b492889284a3e05e6d13746876f4"}, + {file = "httptools-0.6.4-cp310-cp310-win_amd64.whl", hash = "sha256:c26f313951f6e26147833fc923f78f95604bbec812a43e5ee37f26dc9e5a686c"}, + {file = "httptools-0.6.4-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:f47f8ed67cc0ff862b84a1189831d1d33c963fb3ce1ee0c65d3b0cbe7b711069"}, + {file = "httptools-0.6.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:0614154d5454c21b6410fdf5262b4a3ddb0f53f1e1721cfd59d55f32138c578a"}, + {file = "httptools-0.6.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f8787367fbdfccae38e35abf7641dafc5310310a5987b689f4c32cc8cc3ee975"}, + {file = "httptools-0.6.4-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:40b0f7fe4fd38e6a507bdb751db0379df1e99120c65fbdc8ee6c1d044897a636"}, + {file = "httptools-0.6.4-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:40a5ec98d3f49904b9fe36827dcf1aadfef3b89e2bd05b0e35e94f97c2b14721"}, + {file = "httptools-0.6.4-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:dacdd3d10ea1b4ca9df97a0a303cbacafc04b5cd375fa98732678151643d4988"}, + {file = "httptools-0.6.4-cp311-cp311-win_amd64.whl", hash = "sha256:288cd628406cc53f9a541cfaf06041b4c71d751856bab45e3702191f931ccd17"}, + {file = "httptools-0.6.4-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:df017d6c780287d5c80601dafa31f17bddb170232d85c066604d8558683711a2"}, + {file = "httptools-0.6.4-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:85071a1e8c2d051b507161f6c3e26155b5c790e4e28d7f236422dbacc2a9cc44"}, + {file = "httptools-0.6.4-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:69422b7f458c5af875922cdb5bd586cc1f1033295aa9ff63ee196a87519ac8e1"}, + {file = "httptools-0.6.4-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:16e603a3bff50db08cd578d54f07032ca1631450ceb972c2f834c2b860c28ea2"}, + {file = "httptools-0.6.4-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:ec4f178901fa1834d4a060320d2f3abc5c9e39766953d038f1458cb885f47e81"}, + {file = "httptools-0.6.4-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:f9eb89ecf8b290f2e293325c646a211ff1c2493222798bb80a530c5e7502494f"}, + {file = "httptools-0.6.4-cp312-cp312-win_amd64.whl", hash = "sha256:db78cb9ca56b59b016e64b6031eda5653be0589dba2b1b43453f6e8b405a0970"}, + {file = "httptools-0.6.4-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:ade273d7e767d5fae13fa637f4d53b6e961fb7fd93c7797562663f0171c26660"}, + {file = "httptools-0.6.4-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:856f4bc0478ae143bad54a4242fccb1f3f86a6e1be5548fecfd4102061b3a083"}, + {file = "httptools-0.6.4-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:322d20ea9cdd1fa98bd6a74b77e2ec5b818abdc3d36695ab402a0de8ef2865a3"}, + {file = "httptools-0.6.4-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4d87b29bd4486c0093fc64dea80231f7c7f7eb4dc70ae394d70a495ab8436071"}, + {file = "httptools-0.6.4-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:342dd6946aa6bda4b8f18c734576106b8a31f2fe31492881a9a160ec84ff4bd5"}, + {file = "httptools-0.6.4-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:4b36913ba52008249223042dca46e69967985fb4051951f94357ea681e1f5dc0"}, + {file = "httptools-0.6.4-cp313-cp313-win_amd64.whl", hash = "sha256:28908df1b9bb8187393d5b5db91435ccc9c8e891657f9cbb42a2541b44c82fc8"}, + {file = "httptools-0.6.4-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:d3f0d369e7ffbe59c4b6116a44d6a8eb4783aae027f2c0b366cf0aa964185dba"}, + {file = "httptools-0.6.4-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:94978a49b8f4569ad607cd4946b759d90b285e39c0d4640c6b36ca7a3ddf2efc"}, + {file = "httptools-0.6.4-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:40dc6a8e399e15ea525305a2ddba998b0af5caa2566bcd79dcbe8948181eeaff"}, + {file = "httptools-0.6.4-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ab9ba8dcf59de5181f6be44a77458e45a578fc99c31510b8c65b7d5acc3cf490"}, + {file = "httptools-0.6.4-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:fc411e1c0a7dcd2f902c7c48cf079947a7e65b5485dea9decb82b9105ca71a43"}, + {file = "httptools-0.6.4-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:d54efd20338ac52ba31e7da78e4a72570cf729fac82bc31ff9199bedf1dc7440"}, + {file = "httptools-0.6.4-cp38-cp38-win_amd64.whl", hash = "sha256:df959752a0c2748a65ab5387d08287abf6779ae9165916fe053e68ae1fbdc47f"}, + {file = "httptools-0.6.4-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:85797e37e8eeaa5439d33e556662cc370e474445d5fab24dcadc65a8ffb04003"}, + {file = "httptools-0.6.4-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:db353d22843cf1028f43c3651581e4bb49374d85692a85f95f7b9a130e1b2cab"}, + {file = "httptools-0.6.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d1ffd262a73d7c28424252381a5b854c19d9de5f56f075445d33919a637e3547"}, + {file = "httptools-0.6.4-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:703c346571fa50d2e9856a37d7cd9435a25e7fd15e236c397bf224afaa355fe9"}, + {file = "httptools-0.6.4-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:aafe0f1918ed07b67c1e838f950b1c1fabc683030477e60b335649b8020e1076"}, + {file = "httptools-0.6.4-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:0e563e54979e97b6d13f1bbc05a96109923e76b901f786a5eae36e99c01237bd"}, + {file = "httptools-0.6.4-cp39-cp39-win_amd64.whl", hash = "sha256:b799de31416ecc589ad79dd85a0b2657a8fe39327944998dea368c1d4c9e55e6"}, + {file = "httptools-0.6.4.tar.gz", hash = "sha256:4e93eee4add6493b59a5c514da98c939b244fce4a0d8879cd3f466562f4b7d5c"}, +] + +[package.extras] +test = ["Cython (>=0.29.24)"] + +[[package]] +name = "httpx" +version = "0.28.1" +description = "The next generation HTTP client." +optional = false +python-versions = ">=3.8" +groups = ["main"] +files = [ + {file = "httpx-0.28.1-py3-none-any.whl", hash = "sha256:d909fcccc110f8c7faf814ca82a9a4d816bc5a6dbfea25d6591d6985b8ba59ad"}, + {file = "httpx-0.28.1.tar.gz", hash = "sha256:75e98c5f16b0f35b567856f597f06ff2270a374470a5c2392242528e3e3e42fc"}, +] + +[package.dependencies] +anyio = "*" +certifi = "*" +httpcore = "==1.*" +idna = "*" + +[package.extras] +brotli = ["brotli ; platform_python_implementation == \"CPython\"", "brotlicffi ; platform_python_implementation != \"CPython\""] +cli = ["click (==8.*)", "pygments (==2.*)", "rich (>=10,<14)"] +http2 = ["h2 (>=3,<5)"] +socks = ["socksio (==1.*)"] +zstd = ["zstandard (>=0.18.0)"] + +[[package]] +name = "idna" +version = "3.10" +description = "Internationalized Domain Names in Applications (IDNA)" +optional = false +python-versions = ">=3.6" +groups = ["main"] +files = [ + {file = "idna-3.10-py3-none-any.whl", hash = "sha256:946d195a0d259cbba61165e88e65941f16e9b36ea6ddb97f00452bae8b1287d3"}, + {file = "idna-3.10.tar.gz", hash = "sha256:12f65c9b470abda6dc35cf8e63cc574b1c52b11df2c86030af0ac09b01b13ea9"}, +] + +[package.extras] +all = ["flake8 (>=7.1.1)", "mypy (>=1.11.2)", "pytest (>=8.3.2)", "ruff (>=0.6.2)"] + +[[package]] +name = "iniconfig" +version = "2.1.0" +description = "brain-dead simple config-ini parsing" +optional = false +python-versions = ">=3.8" +groups = ["dev"] +files = [ + {file = "iniconfig-2.1.0-py3-none-any.whl", hash = "sha256:9deba5723312380e77435581c6bf4935c94cbfab9b1ed33ef8d238ea168eb760"}, + {file = "iniconfig-2.1.0.tar.gz", hash = "sha256:3abbd2e30b36733fee78f9c7f7308f2d0050e88f0087fd25c2645f63c773e1c7"}, +] + +[[package]] +name = "jiter" +version = "0.9.0" +description = "Fast iterable JSON parser." +optional = false +python-versions = ">=3.8" +groups = ["main"] +files = [ + {file = "jiter-0.9.0-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:816ec9b60fdfd1fec87da1d7ed46c66c44ffec37ab2ef7de5b147b2fce3fd5ad"}, + {file = "jiter-0.9.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:9b1d3086f8a3ee0194ecf2008cf81286a5c3e540d977fa038ff23576c023c0ea"}, + {file = "jiter-0.9.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1339f839b91ae30b37c409bf16ccd3dc453e8b8c3ed4bd1d6a567193651a4a51"}, + {file = "jiter-0.9.0-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:ffba79584b3b670fefae66ceb3a28822365d25b7bf811e030609a3d5b876f538"}, + {file = "jiter-0.9.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5cfc7d0a8e899089d11f065e289cb5b2daf3d82fbe028f49b20d7b809193958d"}, + {file = "jiter-0.9.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e00a1a2bbfaaf237e13c3d1592356eab3e9015d7efd59359ac8b51eb56390a12"}, + {file = "jiter-0.9.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d1d9870561eb26b11448854dce0ff27a9a27cb616b632468cafc938de25e9e51"}, + {file = "jiter-0.9.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:9872aeff3f21e437651df378cb75aeb7043e5297261222b6441a620218b58708"}, + {file = "jiter-0.9.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:1fd19112d1049bdd47f17bfbb44a2c0001061312dcf0e72765bfa8abd4aa30e5"}, + {file = "jiter-0.9.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:6ef5da104664e526836070e4a23b5f68dec1cc673b60bf1edb1bfbe8a55d0678"}, + {file = "jiter-0.9.0-cp310-cp310-win32.whl", hash = "sha256:cb12e6d65ebbefe5518de819f3eda53b73187b7089040b2d17f5b39001ff31c4"}, + {file = "jiter-0.9.0-cp310-cp310-win_amd64.whl", hash = "sha256:c43ca669493626d8672be3b645dbb406ef25af3f4b6384cfd306da7eb2e70322"}, + {file = "jiter-0.9.0-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:6c4d99c71508912a7e556d631768dcdef43648a93660670986916b297f1c54af"}, + {file = "jiter-0.9.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:8f60fb8ce7df529812bf6c625635a19d27f30806885139e367af93f6e734ef58"}, + {file = "jiter-0.9.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:51c4e1a4f8ea84d98b7b98912aa4290ac3d1eabfde8e3c34541fae30e9d1f08b"}, + {file = "jiter-0.9.0-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:5f4c677c424dc76684fea3e7285a7a2a7493424bea89ac441045e6a1fb1d7b3b"}, + {file = "jiter-0.9.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:2221176dfec87f3470b21e6abca056e6b04ce9bff72315cb0b243ca9e835a4b5"}, + {file = "jiter-0.9.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3c7adb66f899ffa25e3c92bfcb593391ee1947dbdd6a9a970e0d7e713237d572"}, + {file = "jiter-0.9.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c98d27330fdfb77913c1097a7aab07f38ff2259048949f499c9901700789ac15"}, + {file = "jiter-0.9.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:eda3f8cc74df66892b1d06b5d41a71670c22d95a1ca2cbab73654745ce9d0419"}, + {file = "jiter-0.9.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:dd5ab5ddc11418dce28343123644a100f487eaccf1de27a459ab36d6cca31043"}, + {file = "jiter-0.9.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:42f8a68a69f047b310319ef8e2f52fdb2e7976fb3313ef27df495cf77bcad965"}, + {file = "jiter-0.9.0-cp311-cp311-win32.whl", hash = "sha256:a25519efb78a42254d59326ee417d6f5161b06f5da827d94cf521fed961b1ff2"}, + {file = "jiter-0.9.0-cp311-cp311-win_amd64.whl", hash = "sha256:923b54afdd697dfd00d368b7ccad008cccfeb1efb4e621f32860c75e9f25edbd"}, + {file = "jiter-0.9.0-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:7b46249cfd6c48da28f89eb0be3f52d6fdb40ab88e2c66804f546674e539ec11"}, + {file = "jiter-0.9.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:609cf3c78852f1189894383cf0b0b977665f54cb38788e3e6b941fa6d982c00e"}, + {file = "jiter-0.9.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d726a3890a54561e55a9c5faea1f7655eda7f105bd165067575ace6e65f80bb2"}, + {file = "jiter-0.9.0-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:2e89dc075c1fef8fa9be219e249f14040270dbc507df4215c324a1839522ea75"}, + {file = "jiter-0.9.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:04e8ffa3c353b1bc4134f96f167a2082494351e42888dfcf06e944f2729cbe1d"}, + {file = "jiter-0.9.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:203f28a72a05ae0e129b3ed1f75f56bc419d5f91dfacd057519a8bd137b00c42"}, + {file = "jiter-0.9.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fca1a02ad60ec30bb230f65bc01f611c8608b02d269f998bc29cca8619a919dc"}, + {file = "jiter-0.9.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:237e5cee4d5d2659aaf91bbf8ec45052cc217d9446070699441a91b386ae27dc"}, + {file = "jiter-0.9.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:528b6b71745e7326eed73c53d4aa57e2a522242320b6f7d65b9c5af83cf49b6e"}, + {file = "jiter-0.9.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:9f48e86b57bc711eb5acdfd12b6cb580a59cc9a993f6e7dcb6d8b50522dcd50d"}, + {file = "jiter-0.9.0-cp312-cp312-win32.whl", hash = "sha256:699edfde481e191d81f9cf6d2211debbfe4bd92f06410e7637dffb8dd5dfde06"}, + {file = "jiter-0.9.0-cp312-cp312-win_amd64.whl", hash = "sha256:099500d07b43f61d8bd780466d429c45a7b25411b334c60ca875fa775f68ccb0"}, + {file = "jiter-0.9.0-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:2764891d3f3e8b18dce2cff24949153ee30c9239da7c00f032511091ba688ff7"}, + {file = "jiter-0.9.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:387b22fbfd7a62418d5212b4638026d01723761c75c1c8232a8b8c37c2f1003b"}, + {file = "jiter-0.9.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:40d8da8629ccae3606c61d9184970423655fb4e33d03330bcdfe52d234d32f69"}, + {file = "jiter-0.9.0-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:a1be73d8982bdc278b7b9377426a4b44ceb5c7952073dd7488e4ae96b88e1103"}, + {file = "jiter-0.9.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:2228eaaaa111ec54b9e89f7481bffb3972e9059301a878d085b2b449fbbde635"}, + {file = "jiter-0.9.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:11509bfecbc319459647d4ac3fd391d26fdf530dad00c13c4dadabf5b81f01a4"}, + {file = "jiter-0.9.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3f22238da568be8bbd8e0650e12feeb2cfea15eda4f9fc271d3b362a4fa0604d"}, + {file = "jiter-0.9.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:17f5d55eb856597607562257c8e36c42bc87f16bef52ef7129b7da11afc779f3"}, + {file = "jiter-0.9.0-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:6a99bed9fbb02f5bed416d137944419a69aa4c423e44189bc49718859ea83bc5"}, + {file = "jiter-0.9.0-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:e057adb0cd1bd39606100be0eafe742de2de88c79df632955b9ab53a086b3c8d"}, + {file = "jiter-0.9.0-cp313-cp313-win32.whl", hash = "sha256:f7e6850991f3940f62d387ccfa54d1a92bd4bb9f89690b53aea36b4364bcab53"}, + {file = "jiter-0.9.0-cp313-cp313-win_amd64.whl", hash = "sha256:c8ae3bf27cd1ac5e6e8b7a27487bf3ab5f82318211ec2e1346a5b058756361f7"}, + {file = "jiter-0.9.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:f0b2827fb88dda2cbecbbc3e596ef08d69bda06c6f57930aec8e79505dc17001"}, + {file = "jiter-0.9.0-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:062b756ceb1d40b0b28f326cba26cfd575a4918415b036464a52f08632731e5a"}, + {file = "jiter-0.9.0-cp313-cp313t-win_amd64.whl", hash = "sha256:6f7838bc467ab7e8ef9f387bd6de195c43bad82a569c1699cb822f6609dd4cdf"}, + {file = "jiter-0.9.0-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:4a2d16360d0642cd68236f931b85fe50288834c383492e4279d9f1792e309571"}, + {file = "jiter-0.9.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:e84ed1c9c9ec10bbb8c37f450077cbe3c0d4e8c2b19f0a49a60ac7ace73c7452"}, + {file = "jiter-0.9.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9f3c848209ccd1bfa344a1240763975ca917de753c7875c77ec3034f4151d06c"}, + {file = "jiter-0.9.0-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:7825f46e50646bee937e0f849d14ef3a417910966136f59cd1eb848b8b5bb3e4"}, + {file = "jiter-0.9.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d82a811928b26d1a6311a886b2566f68ccf2b23cf3bfed042e18686f1f22c2d7"}, + {file = "jiter-0.9.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0c058ecb51763a67f019ae423b1cbe3fa90f7ee6280c31a1baa6ccc0c0e2d06e"}, + {file = "jiter-0.9.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9897115ad716c48f0120c1f0c4efae348ec47037319a6c63b2d7838bb53aaef4"}, + {file = "jiter-0.9.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:351f4c90a24c4fb8c87c6a73af2944c440494ed2bea2094feecacb75c50398ae"}, + {file = "jiter-0.9.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:d45807b0f236c485e1e525e2ce3a854807dfe28ccf0d013dd4a563395e28008a"}, + {file = "jiter-0.9.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:1537a890724ba00fdba21787010ac6f24dad47f763410e9e1093277913592784"}, + {file = "jiter-0.9.0-cp38-cp38-win32.whl", hash = "sha256:e3630ec20cbeaddd4b65513fa3857e1b7c4190d4481ef07fb63d0fad59033321"}, + {file = "jiter-0.9.0-cp38-cp38-win_amd64.whl", hash = "sha256:2685f44bf80e95f8910553bf2d33b9c87bf25fceae6e9f0c1355f75d2922b0ee"}, + {file = "jiter-0.9.0-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:9ef340fae98065071ccd5805fe81c99c8f80484e820e40043689cf97fb66b3e2"}, + {file = "jiter-0.9.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:efb767d92c63b2cd9ec9f24feeb48f49574a713870ec87e9ba0c2c6e9329c3e2"}, + {file = "jiter-0.9.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:113f30f87fb1f412510c6d7ed13e91422cfd329436364a690c34c8b8bd880c42"}, + {file = "jiter-0.9.0-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:8793b6df019b988526f5a633fdc7456ea75e4a79bd8396a3373c371fc59f5c9b"}, + {file = "jiter-0.9.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:7a9aaa5102dba4e079bb728076fadd5a2dca94c05c04ce68004cfd96f128ea34"}, + {file = "jiter-0.9.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d838650f6ebaf4ccadfb04522463e74a4c378d7e667e0eb1865cfe3990bfac49"}, + {file = "jiter-0.9.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c0194f813efdf4b8865ad5f5c5f50f8566df7d770a82c51ef593d09e0b347020"}, + {file = "jiter-0.9.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:a7954a401d0a8a0b8bc669199db78af435aae1e3569187c2939c477c53cb6a0a"}, + {file = "jiter-0.9.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:4feafe787eb8a8d98168ab15637ca2577f6ddf77ac6c8c66242c2d028aa5420e"}, + {file = "jiter-0.9.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:27cd1f2e8bb377f31d3190b34e4328d280325ad7ef55c6ac9abde72f79e84d2e"}, + {file = "jiter-0.9.0-cp39-cp39-win32.whl", hash = "sha256:161d461dcbe658cf0bd0aa375b30a968b087cdddc624fc585f3867c63c6eca95"}, + {file = "jiter-0.9.0-cp39-cp39-win_amd64.whl", hash = "sha256:e8b36d8a16a61993be33e75126ad3d8aa29cf450b09576f3c427d27647fcb4aa"}, + {file = "jiter-0.9.0.tar.gz", hash = "sha256:aadba0964deb424daa24492abc3d229c60c4a31bfee205aedbf1acc7639d7893"}, +] + +[[package]] +name = "openai" +version = "1.77.0" +description = "The official Python library for the openai API" +optional = false +python-versions = ">=3.8" +groups = ["main"] +files = [ + {file = "openai-1.77.0-py3-none-any.whl", hash = "sha256:07706e91eb71631234996989a8ea991d5ee56f0744ef694c961e0824d4f39218"}, + {file = "openai-1.77.0.tar.gz", hash = "sha256:897969f927f0068b8091b4b041d1f8175bcf124f7ea31bab418bf720971223bc"}, +] + +[package.dependencies] +anyio = ">=3.5.0,<5" +distro = ">=1.7.0,<2" +httpx = ">=0.23.0,<1" +jiter = ">=0.4.0,<1" +pydantic = ">=1.9.0,<3" +sniffio = "*" +tqdm = ">4" +typing-extensions = ">=4.11,<5" + +[package.extras] +datalib = ["numpy (>=1)", "pandas (>=1.2.3)", "pandas-stubs (>=1.1.0.11)"] +realtime = ["websockets (>=13,<16)"] +voice-helpers = ["numpy (>=2.0.2)", "sounddevice (>=0.5.1)"] + +[[package]] +name = "packaging" +version = "24.2" +description = "Core utilities for Python packages" +optional = false +python-versions = ">=3.8" +groups = ["dev"] +files = [ + {file = "packaging-24.2-py3-none-any.whl", hash = "sha256:09abb1bccd265c01f4a3aa3f7a7db064b36514d2cba19a2f694fe6150451a759"}, + {file = "packaging-24.2.tar.gz", hash = "sha256:c228a6dc5e932d346bc5739379109d49e8853dd8223571c7c5b55260edc0b97f"}, +] + +[[package]] +name = "pluggy" +version = "1.5.0" +description = "plugin and hook calling mechanisms for python" +optional = false +python-versions = ">=3.8" +groups = ["dev"] +files = [ + {file = "pluggy-1.5.0-py3-none-any.whl", hash = "sha256:44e1ad92c8ca002de6377e165f3e0f1be63266ab4d554740532335b9d75ea669"}, + {file = "pluggy-1.5.0.tar.gz", hash = "sha256:2cffa88e94fdc978c4c574f15f9e59b7f4201d439195c3715ca9e2486f1d0cf1"}, +] + +[package.extras] +dev = ["pre-commit", "tox"] +testing = ["pytest", "pytest-benchmark"] + +[[package]] +name = "pydantic" +version = "2.11.3" +description = "Data validation using Python type hints" +optional = false +python-versions = ">=3.9" +groups = ["main"] +files = [ + {file = "pydantic-2.11.3-py3-none-any.whl", hash = "sha256:a082753436a07f9ba1289c6ffa01cd93db3548776088aa917cc43b63f68fa60f"}, + {file = "pydantic-2.11.3.tar.gz", hash = "sha256:7471657138c16adad9322fe3070c0116dd6c3ad8d649300e3cbdfe91f4db4ec3"}, +] + +[package.dependencies] +annotated-types = ">=0.6.0" +pydantic-core = "2.33.1" +typing-extensions = ">=4.12.2" +typing-inspection = ">=0.4.0" + +[package.extras] +email = ["email-validator (>=2.0.0)"] +timezone = ["tzdata ; python_version >= \"3.9\" and platform_system == \"Windows\""] + +[[package]] +name = "pydantic-core" +version = "2.33.1" +description = "Core functionality for Pydantic validation and serialization" +optional = false +python-versions = ">=3.9" +groups = ["main"] +files = [ + {file = "pydantic_core-2.33.1-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:3077cfdb6125cc8dab61b155fdd714663e401f0e6883f9632118ec12cf42df26"}, + {file = "pydantic_core-2.33.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:8ffab8b2908d152e74862d276cf5017c81a2f3719f14e8e3e8d6b83fda863927"}, + {file = "pydantic_core-2.33.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5183e4f6a2d468787243ebcd70cf4098c247e60d73fb7d68d5bc1e1beaa0c4db"}, + {file = "pydantic_core-2.33.1-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:398a38d323f37714023be1e0285765f0a27243a8b1506b7b7de87b647b517e48"}, + {file = "pydantic_core-2.33.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:87d3776f0001b43acebfa86f8c64019c043b55cc5a6a2e313d728b5c95b46969"}, + {file = "pydantic_core-2.33.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c566dd9c5f63d22226409553531f89de0cac55397f2ab8d97d6f06cfce6d947e"}, + {file = "pydantic_core-2.33.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a0d5f3acc81452c56895e90643a625302bd6be351e7010664151cc55b7b97f89"}, + {file = "pydantic_core-2.33.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:d3a07fadec2a13274a8d861d3d37c61e97a816beae717efccaa4b36dfcaadcde"}, + {file = "pydantic_core-2.33.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:f99aeda58dce827f76963ee87a0ebe75e648c72ff9ba1174a253f6744f518f65"}, + {file = "pydantic_core-2.33.1-cp310-cp310-musllinux_1_1_armv7l.whl", hash = "sha256:902dbc832141aa0ec374f4310f1e4e7febeebc3256f00dc359a9ac3f264a45dc"}, + {file = "pydantic_core-2.33.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:fe44d56aa0b00d66640aa84a3cbe80b7a3ccdc6f0b1ca71090696a6d4777c091"}, + {file = "pydantic_core-2.33.1-cp310-cp310-win32.whl", hash = "sha256:ed3eb16d51257c763539bde21e011092f127a2202692afaeaccb50db55a31383"}, + {file = "pydantic_core-2.33.1-cp310-cp310-win_amd64.whl", hash = "sha256:694ad99a7f6718c1a498dc170ca430687a39894a60327f548e02a9c7ee4b6504"}, + {file = "pydantic_core-2.33.1-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:6e966fc3caaf9f1d96b349b0341c70c8d6573bf1bac7261f7b0ba88f96c56c24"}, + {file = "pydantic_core-2.33.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:bfd0adeee563d59c598ceabddf2c92eec77abcb3f4a391b19aa7366170bd9e30"}, + {file = "pydantic_core-2.33.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:91815221101ad3c6b507804178a7bb5cb7b2ead9ecd600041669c8d805ebd595"}, + {file = "pydantic_core-2.33.1-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:9fea9c1869bb4742d174a57b4700c6dadea951df8b06de40c2fedb4f02931c2e"}, + {file = "pydantic_core-2.33.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1d20eb4861329bb2484c021b9d9a977566ab16d84000a57e28061151c62b349a"}, + {file = "pydantic_core-2.33.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0fb935c5591573ae3201640579f30128ccc10739b45663f93c06796854405505"}, + {file = "pydantic_core-2.33.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c964fd24e6166420d18fb53996d8c9fd6eac9bf5ae3ec3d03015be4414ce497f"}, + {file = "pydantic_core-2.33.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:681d65e9011f7392db5aa002b7423cc442d6a673c635668c227c6c8d0e5a4f77"}, + {file = "pydantic_core-2.33.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:e100c52f7355a48413e2999bfb4e139d2977a904495441b374f3d4fb4a170961"}, + {file = "pydantic_core-2.33.1-cp311-cp311-musllinux_1_1_armv7l.whl", hash = "sha256:048831bd363490be79acdd3232f74a0e9951b11b2b4cc058aeb72b22fdc3abe1"}, + {file = "pydantic_core-2.33.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:bdc84017d28459c00db6f918a7272a5190bec3090058334e43a76afb279eac7c"}, + {file = "pydantic_core-2.33.1-cp311-cp311-win32.whl", hash = "sha256:32cd11c5914d1179df70406427097c7dcde19fddf1418c787540f4b730289896"}, + {file = "pydantic_core-2.33.1-cp311-cp311-win_amd64.whl", hash = "sha256:2ea62419ba8c397e7da28a9170a16219d310d2cf4970dbc65c32faf20d828c83"}, + {file = "pydantic_core-2.33.1-cp311-cp311-win_arm64.whl", hash = "sha256:fc903512177361e868bc1f5b80ac8c8a6e05fcdd574a5fb5ffeac5a9982b9e89"}, + {file = "pydantic_core-2.33.1-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:1293d7febb995e9d3ec3ea09caf1a26214eec45b0f29f6074abb004723fc1de8"}, + {file = "pydantic_core-2.33.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:99b56acd433386c8f20be5c4000786d1e7ca0523c8eefc995d14d79c7a081498"}, + {file = "pydantic_core-2.33.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:35a5ec3fa8c2fe6c53e1b2ccc2454398f95d5393ab398478f53e1afbbeb4d939"}, + {file = "pydantic_core-2.33.1-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:b172f7b9d2f3abc0efd12e3386f7e48b576ef309544ac3a63e5e9cdd2e24585d"}, + {file = "pydantic_core-2.33.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9097b9f17f91eea659b9ec58148c0747ec354a42f7389b9d50701610d86f812e"}, + {file = "pydantic_core-2.33.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cc77ec5b7e2118b152b0d886c7514a4653bcb58c6b1d760134a9fab915f777b3"}, + {file = "pydantic_core-2.33.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d5e3d15245b08fa4a84cefc6c9222e6f37c98111c8679fbd94aa145f9a0ae23d"}, + {file = "pydantic_core-2.33.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:ef99779001d7ac2e2461d8ab55d3373fe7315caefdbecd8ced75304ae5a6fc6b"}, + {file = "pydantic_core-2.33.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:fc6bf8869e193855e8d91d91f6bf59699a5cdfaa47a404e278e776dd7f168b39"}, + {file = "pydantic_core-2.33.1-cp312-cp312-musllinux_1_1_armv7l.whl", hash = "sha256:b1caa0bc2741b043db7823843e1bde8aaa58a55a58fda06083b0569f8b45693a"}, + {file = "pydantic_core-2.33.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:ec259f62538e8bf364903a7d0d0239447059f9434b284f5536e8402b7dd198db"}, + {file = "pydantic_core-2.33.1-cp312-cp312-win32.whl", hash = "sha256:e14f369c98a7c15772b9da98987f58e2b509a93235582838bd0d1d8c08b68fda"}, + {file = "pydantic_core-2.33.1-cp312-cp312-win_amd64.whl", hash = "sha256:1c607801d85e2e123357b3893f82c97a42856192997b95b4d8325deb1cd0c5f4"}, + {file = "pydantic_core-2.33.1-cp312-cp312-win_arm64.whl", hash = "sha256:8d13f0276806ee722e70a1c93da19748594f19ac4299c7e41237fc791d1861ea"}, + {file = "pydantic_core-2.33.1-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:70af6a21237b53d1fe7b9325b20e65cbf2f0a848cf77bed492b029139701e66a"}, + {file = "pydantic_core-2.33.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:282b3fe1bbbe5ae35224a0dbd05aed9ccabccd241e8e6b60370484234b456266"}, + {file = "pydantic_core-2.33.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4b315e596282bbb5822d0c7ee9d255595bd7506d1cb20c2911a4da0b970187d3"}, + {file = "pydantic_core-2.33.1-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:1dfae24cf9921875ca0ca6a8ecb4bb2f13c855794ed0d468d6abbec6e6dcd44a"}, + {file = "pydantic_core-2.33.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:6dd8ecfde08d8bfadaea669e83c63939af76f4cf5538a72597016edfa3fad516"}, + {file = "pydantic_core-2.33.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2f593494876eae852dc98c43c6f260f45abdbfeec9e4324e31a481d948214764"}, + {file = "pydantic_core-2.33.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:948b73114f47fd7016088e5186d13faf5e1b2fe83f5e320e371f035557fd264d"}, + {file = "pydantic_core-2.33.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:e11f3864eb516af21b01e25fac915a82e9ddad3bb0fb9e95a246067398b435a4"}, + {file = "pydantic_core-2.33.1-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:549150be302428b56fdad0c23c2741dcdb5572413776826c965619a25d9c6bde"}, + {file = "pydantic_core-2.33.1-cp313-cp313-musllinux_1_1_armv7l.whl", hash = "sha256:495bc156026efafd9ef2d82372bd38afce78ddd82bf28ef5276c469e57c0c83e"}, + {file = "pydantic_core-2.33.1-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:ec79de2a8680b1a67a07490bddf9636d5c2fab609ba8c57597e855fa5fa4dacd"}, + {file = "pydantic_core-2.33.1-cp313-cp313-win32.whl", hash = "sha256:ee12a7be1742f81b8a65b36c6921022301d466b82d80315d215c4c691724986f"}, + {file = "pydantic_core-2.33.1-cp313-cp313-win_amd64.whl", hash = "sha256:ede9b407e39949d2afc46385ce6bd6e11588660c26f80576c11c958e6647bc40"}, + {file = "pydantic_core-2.33.1-cp313-cp313-win_arm64.whl", hash = "sha256:aa687a23d4b7871a00e03ca96a09cad0f28f443690d300500603bd0adba4b523"}, + {file = "pydantic_core-2.33.1-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:401d7b76e1000d0dd5538e6381d28febdcacb097c8d340dde7d7fc6e13e9f95d"}, + {file = "pydantic_core-2.33.1-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7aeb055a42d734c0255c9e489ac67e75397d59c6fbe60d155851e9782f276a9c"}, + {file = "pydantic_core-2.33.1-cp313-cp313t-win_amd64.whl", hash = "sha256:338ea9b73e6e109f15ab439e62cb3b78aa752c7fd9536794112e14bee02c8d18"}, + {file = "pydantic_core-2.33.1-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:5ab77f45d33d264de66e1884fca158bc920cb5e27fd0764a72f72f5756ae8bdb"}, + {file = "pydantic_core-2.33.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:e7aaba1b4b03aaea7bb59e1b5856d734be011d3e6d98f5bcaa98cb30f375f2ad"}, + {file = "pydantic_core-2.33.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7fb66263e9ba8fea2aa85e1e5578980d127fb37d7f2e292773e7bc3a38fb0c7b"}, + {file = "pydantic_core-2.33.1-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:3f2648b9262607a7fb41d782cc263b48032ff7a03a835581abbf7a3bec62bcf5"}, + {file = "pydantic_core-2.33.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:723c5630c4259400818b4ad096735a829074601805d07f8cafc366d95786d331"}, + {file = "pydantic_core-2.33.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d100e3ae783d2167782391e0c1c7a20a31f55f8015f3293647544df3f9c67824"}, + {file = "pydantic_core-2.33.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:177d50460bc976a0369920b6c744d927b0ecb8606fb56858ff542560251b19e5"}, + {file = "pydantic_core-2.33.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:a3edde68d1a1f9af1273b2fe798997b33f90308fb6d44d8550c89fc6a3647cf6"}, + {file = "pydantic_core-2.33.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:a62c3c3ef6a7e2c45f7853b10b5bc4ddefd6ee3cd31024754a1a5842da7d598d"}, + {file = "pydantic_core-2.33.1-cp39-cp39-musllinux_1_1_armv7l.whl", hash = "sha256:c91dbb0ab683fa0cd64a6e81907c8ff41d6497c346890e26b23de7ee55353f96"}, + {file = "pydantic_core-2.33.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:9f466e8bf0a62dc43e068c12166281c2eca72121dd2adc1040f3aa1e21ef8599"}, + {file = "pydantic_core-2.33.1-cp39-cp39-win32.whl", hash = "sha256:ab0277cedb698749caada82e5d099dc9fed3f906a30d4c382d1a21725777a1e5"}, + {file = "pydantic_core-2.33.1-cp39-cp39-win_amd64.whl", hash = "sha256:5773da0ee2d17136b1f1c6fbde543398d452a6ad2a7b54ea1033e2daa739b8d2"}, + {file = "pydantic_core-2.33.1-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:5c834f54f8f4640fd7e4b193f80eb25a0602bba9e19b3cd2fc7ffe8199f5ae02"}, + {file = "pydantic_core-2.33.1-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:049e0de24cf23766f12cc5cc71d8abc07d4a9deb9061b334b62093dedc7cb068"}, + {file = "pydantic_core-2.33.1-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1a28239037b3d6f16916a4c831a5a0eadf856bdd6d2e92c10a0da3a59eadcf3e"}, + {file = "pydantic_core-2.33.1-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9d3da303ab5f378a268fa7d45f37d7d85c3ec19769f28d2cc0c61826a8de21fe"}, + {file = "pydantic_core-2.33.1-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:25626fb37b3c543818c14821afe0fd3830bc327a43953bc88db924b68c5723f1"}, + {file = "pydantic_core-2.33.1-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:3ab2d36e20fbfcce8f02d73c33a8a7362980cff717926bbae030b93ae46b56c7"}, + {file = "pydantic_core-2.33.1-pp310-pypy310_pp73-musllinux_1_1_armv7l.whl", hash = "sha256:2f9284e11c751b003fd4215ad92d325d92c9cb19ee6729ebd87e3250072cdcde"}, + {file = "pydantic_core-2.33.1-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:048c01eee07d37cbd066fc512b9d8b5ea88ceeb4e629ab94b3e56965ad655add"}, + {file = "pydantic_core-2.33.1-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:5ccd429694cf26af7997595d627dd2637e7932214486f55b8a357edaac9dae8c"}, + {file = "pydantic_core-2.33.1-pp311-pypy311_pp73-macosx_10_12_x86_64.whl", hash = "sha256:3a371dc00282c4b84246509a5ddc808e61b9864aa1eae9ecc92bb1268b82db4a"}, + {file = "pydantic_core-2.33.1-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:f59295ecc75a1788af8ba92f2e8c6eeaa5a94c22fc4d151e8d9638814f85c8fc"}, + {file = "pydantic_core-2.33.1-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:08530b8ac922003033f399128505f513e30ca770527cc8bbacf75a84fcc2c74b"}, + {file = "pydantic_core-2.33.1-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bae370459da6a5466978c0eacf90690cb57ec9d533f8e63e564ef3822bfa04fe"}, + {file = "pydantic_core-2.33.1-pp311-pypy311_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:e3de2777e3b9f4d603112f78006f4ae0acb936e95f06da6cb1a45fbad6bdb4b5"}, + {file = "pydantic_core-2.33.1-pp311-pypy311_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:3a64e81e8cba118e108d7126362ea30e021291b7805d47e4896e52c791be2761"}, + {file = "pydantic_core-2.33.1-pp311-pypy311_pp73-musllinux_1_1_armv7l.whl", hash = "sha256:52928d8c1b6bda03cc6d811e8923dffc87a2d3c8b3bfd2ce16471c7147a24850"}, + {file = "pydantic_core-2.33.1-pp311-pypy311_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:1b30d92c9412beb5ac6b10a3eb7ef92ccb14e3f2a8d7732e2d739f58b3aa7544"}, + {file = "pydantic_core-2.33.1-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:f995719707e0e29f0f41a8aa3bcea6e761a36c9136104d3189eafb83f5cec5e5"}, + {file = "pydantic_core-2.33.1-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:7edbc454a29fc6aeae1e1eecba4f07b63b8d76e76a748532233c4c167b4cb9ea"}, + {file = "pydantic_core-2.33.1-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:ad05b683963f69a1d5d2c2bdab1274a31221ca737dbbceaa32bcb67359453cdd"}, + {file = "pydantic_core-2.33.1-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:df6a94bf9452c6da9b5d76ed229a5683d0306ccb91cca8e1eea883189780d568"}, + {file = "pydantic_core-2.33.1-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7965c13b3967909a09ecc91f21d09cfc4576bf78140b988904e94f130f188396"}, + {file = "pydantic_core-2.33.1-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:3f1fdb790440a34f6ecf7679e1863b825cb5ffde858a9197f851168ed08371e5"}, + {file = "pydantic_core-2.33.1-pp39-pypy39_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:5277aec8d879f8d05168fdd17ae811dd313b8ff894aeeaf7cd34ad28b4d77e33"}, + {file = "pydantic_core-2.33.1-pp39-pypy39_pp73-musllinux_1_1_armv7l.whl", hash = "sha256:8ab581d3530611897d863d1a649fb0644b860286b4718db919bfd51ece41f10b"}, + {file = "pydantic_core-2.33.1-pp39-pypy39_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:0483847fa9ad5e3412265c1bd72aad35235512d9ce9d27d81a56d935ef489672"}, + {file = "pydantic_core-2.33.1-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:de9e06abe3cc5ec6a2d5f75bc99b0bdca4f5c719a5b34026f8c57efbdecd2ee3"}, + {file = "pydantic_core-2.33.1.tar.gz", hash = "sha256:bcc9c6fdb0ced789245b02b7d6603e17d1563064ddcfc36f046b61c0c05dd9df"}, +] + +[package.dependencies] +typing-extensions = ">=4.6.0,<4.7.0 || >4.7.0" + +[[package]] +name = "pytest" +version = "7.4.4" +description = "pytest: simple powerful testing with Python" +optional = false +python-versions = ">=3.7" +groups = ["dev"] +files = [ + {file = "pytest-7.4.4-py3-none-any.whl", hash = "sha256:b090cdf5ed60bf4c45261be03239c2c1c22df034fbffe691abe93cd80cea01d8"}, + {file = "pytest-7.4.4.tar.gz", hash = "sha256:2cf0005922c6ace4a3e2ec8b4080eb0d9753fdc93107415332f50ce9e7994280"}, +] + +[package.dependencies] +colorama = {version = "*", markers = "sys_platform == \"win32\""} +iniconfig = "*" +packaging = "*" +pluggy = ">=0.12,<2.0" + +[package.extras] +testing = ["argcomplete", "attrs (>=19.2.0)", "hypothesis (>=3.56)", "mock", "nose", "pygments (>=2.7.2)", "requests", "setuptools", "xmlschema"] + +[[package]] +name = "python-dotenv" +version = "1.1.0" +description = "Read key-value pairs from a .env file and set them as environment variables" +optional = false +python-versions = ">=3.9" +groups = ["main"] +files = [ + {file = "python_dotenv-1.1.0-py3-none-any.whl", hash = "sha256:d7c01d9e2293916c18baf562d95698754b0dbbb5e74d457c45d4f6561fb9d55d"}, + {file = "python_dotenv-1.1.0.tar.gz", hash = "sha256:41f90bc6f5f177fb41f53e87666db362025010eb28f60a01c9143bfa33a2b2d5"}, +] + +[package.extras] +cli = ["click (>=5.0)"] + +[[package]] +name = "pyyaml" +version = "6.0.2" +description = "YAML parser and emitter for Python" +optional = false +python-versions = ">=3.8" +groups = ["main"] +files = [ + {file = "PyYAML-6.0.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:0a9a2848a5b7feac301353437eb7d5957887edbf81d56e903999a75a3d743086"}, + {file = "PyYAML-6.0.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:29717114e51c84ddfba879543fb232a6ed60086602313ca38cce623c1d62cfbf"}, + {file = "PyYAML-6.0.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8824b5a04a04a047e72eea5cec3bc266db09e35de6bdfe34c9436ac5ee27d237"}, + {file = "PyYAML-6.0.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7c36280e6fb8385e520936c3cb3b8042851904eba0e58d277dca80a5cfed590b"}, + {file = "PyYAML-6.0.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ec031d5d2feb36d1d1a24380e4db6d43695f3748343d99434e6f5f9156aaa2ed"}, + {file = "PyYAML-6.0.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:936d68689298c36b53b29f23c6dbb74de12b4ac12ca6cfe0e047bedceea56180"}, + {file = "PyYAML-6.0.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:23502f431948090f597378482b4812b0caae32c22213aecf3b55325e049a6c68"}, + {file = "PyYAML-6.0.2-cp310-cp310-win32.whl", hash = "sha256:2e99c6826ffa974fe6e27cdb5ed0021786b03fc98e5ee3c5bfe1fd5015f42b99"}, + {file = "PyYAML-6.0.2-cp310-cp310-win_amd64.whl", hash = "sha256:a4d3091415f010369ae4ed1fc6b79def9416358877534caf6a0fdd2146c87a3e"}, + {file = "PyYAML-6.0.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:cc1c1159b3d456576af7a3e4d1ba7e6924cb39de8f67111c735f6fc832082774"}, + {file = "PyYAML-6.0.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:1e2120ef853f59c7419231f3bf4e7021f1b936f6ebd222406c3b60212205d2ee"}, + {file = "PyYAML-6.0.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5d225db5a45f21e78dd9358e58a98702a0302f2659a3c6cd320564b75b86f47c"}, + {file = "PyYAML-6.0.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5ac9328ec4831237bec75defaf839f7d4564be1e6b25ac710bd1a96321cc8317"}, + {file = "PyYAML-6.0.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3ad2a3decf9aaba3d29c8f537ac4b243e36bef957511b4766cb0057d32b0be85"}, + {file = "PyYAML-6.0.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:ff3824dc5261f50c9b0dfb3be22b4567a6f938ccce4587b38952d85fd9e9afe4"}, + {file = "PyYAML-6.0.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:797b4f722ffa07cc8d62053e4cff1486fa6dc094105d13fea7b1de7d8bf71c9e"}, + {file = "PyYAML-6.0.2-cp311-cp311-win32.whl", hash = "sha256:11d8f3dd2b9c1207dcaf2ee0bbbfd5991f571186ec9cc78427ba5bd32afae4b5"}, + {file = "PyYAML-6.0.2-cp311-cp311-win_amd64.whl", hash = "sha256:e10ce637b18caea04431ce14fabcf5c64a1c61ec9c56b071a4b7ca131ca52d44"}, + {file = "PyYAML-6.0.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:c70c95198c015b85feafc136515252a261a84561b7b1d51e3384e0655ddf25ab"}, + {file = "PyYAML-6.0.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:ce826d6ef20b1bc864f0a68340c8b3287705cae2f8b4b1d932177dcc76721725"}, + {file = "PyYAML-6.0.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1f71ea527786de97d1a0cc0eacd1defc0985dcf6b3f17bb77dcfc8c34bec4dc5"}, + {file = "PyYAML-6.0.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9b22676e8097e9e22e36d6b7bda33190d0d400f345f23d4065d48f4ca7ae0425"}, + {file = "PyYAML-6.0.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:80bab7bfc629882493af4aa31a4cfa43a4c57c83813253626916b8c7ada83476"}, + {file = "PyYAML-6.0.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:0833f8694549e586547b576dcfaba4a6b55b9e96098b36cdc7ebefe667dfed48"}, + {file = "PyYAML-6.0.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:8b9c7197f7cb2738065c481a0461e50ad02f18c78cd75775628afb4d7137fb3b"}, + {file = "PyYAML-6.0.2-cp312-cp312-win32.whl", hash = "sha256:ef6107725bd54b262d6dedcc2af448a266975032bc85ef0172c5f059da6325b4"}, + {file = "PyYAML-6.0.2-cp312-cp312-win_amd64.whl", hash = "sha256:7e7401d0de89a9a855c839bc697c079a4af81cf878373abd7dc625847d25cbd8"}, + {file = "PyYAML-6.0.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:efdca5630322a10774e8e98e1af481aad470dd62c3170801852d752aa7a783ba"}, + {file = "PyYAML-6.0.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:50187695423ffe49e2deacb8cd10510bc361faac997de9efef88badc3bb9e2d1"}, + {file = "PyYAML-6.0.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0ffe8360bab4910ef1b9e87fb812d8bc0a308b0d0eef8c8f44e0254ab3b07133"}, + {file = "PyYAML-6.0.2-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:17e311b6c678207928d649faa7cb0d7b4c26a0ba73d41e99c4fff6b6c3276484"}, + {file = "PyYAML-6.0.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:70b189594dbe54f75ab3a1acec5f1e3faa7e8cf2f1e08d9b561cb41b845f69d5"}, + {file = "PyYAML-6.0.2-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:41e4e3953a79407c794916fa277a82531dd93aad34e29c2a514c2c0c5fe971cc"}, + {file = "PyYAML-6.0.2-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:68ccc6023a3400877818152ad9a1033e3db8625d899c72eacb5a668902e4d652"}, + {file = "PyYAML-6.0.2-cp313-cp313-win32.whl", hash = "sha256:bc2fa7c6b47d6bc618dd7fb02ef6fdedb1090ec036abab80d4681424b84c1183"}, + {file = "PyYAML-6.0.2-cp313-cp313-win_amd64.whl", hash = "sha256:8388ee1976c416731879ac16da0aff3f63b286ffdd57cdeb95f3f2e085687563"}, + {file = "PyYAML-6.0.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:24471b829b3bf607e04e88d79542a9d48bb037c2267d7927a874e6c205ca7e9a"}, + {file = "PyYAML-6.0.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d7fded462629cfa4b685c5416b949ebad6cec74af5e2d42905d41e257e0869f5"}, + {file = "PyYAML-6.0.2-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d84a1718ee396f54f3a086ea0a66d8e552b2ab2017ef8b420e92edbc841c352d"}, + {file = "PyYAML-6.0.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9056c1ecd25795207ad294bcf39f2db3d845767be0ea6e6a34d856f006006083"}, + {file = "PyYAML-6.0.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:82d09873e40955485746739bcb8b4586983670466c23382c19cffecbf1fd8706"}, + {file = "PyYAML-6.0.2-cp38-cp38-win32.whl", hash = "sha256:43fa96a3ca0d6b1812e01ced1044a003533c47f6ee8aca31724f78e93ccc089a"}, + {file = "PyYAML-6.0.2-cp38-cp38-win_amd64.whl", hash = "sha256:01179a4a8559ab5de078078f37e5c1a30d76bb88519906844fd7bdea1b7729ff"}, + {file = "PyYAML-6.0.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:688ba32a1cffef67fd2e9398a2efebaea461578b0923624778664cc1c914db5d"}, + {file = "PyYAML-6.0.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:a8786accb172bd8afb8be14490a16625cbc387036876ab6ba70912730faf8e1f"}, + {file = "PyYAML-6.0.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d8e03406cac8513435335dbab54c0d385e4a49e4945d2909a581c83647ca0290"}, + {file = "PyYAML-6.0.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f753120cb8181e736c57ef7636e83f31b9c0d1722c516f7e86cf15b7aa57ff12"}, + {file = "PyYAML-6.0.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3b1fdb9dc17f5a7677423d508ab4f243a726dea51fa5e70992e59a7411c89d19"}, + {file = "PyYAML-6.0.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:0b69e4ce7a131fe56b7e4d770c67429700908fc0752af059838b1cfb41960e4e"}, + {file = "PyYAML-6.0.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:a9f8c2e67970f13b16084e04f134610fd1d374bf477b17ec1599185cf611d725"}, + {file = "PyYAML-6.0.2-cp39-cp39-win32.whl", hash = "sha256:6395c297d42274772abc367baaa79683958044e5d3835486c16da75d2a694631"}, + {file = "PyYAML-6.0.2-cp39-cp39-win_amd64.whl", hash = "sha256:39693e1f8320ae4f43943590b49779ffb98acb81f788220ea932a6b6c51004d8"}, + {file = "pyyaml-6.0.2.tar.gz", hash = "sha256:d584d9ec91ad65861cc08d42e834324ef890a082e591037abe114850ff7bbc3e"}, +] + +[[package]] +name = "sniffio" +version = "1.3.1" +description = "Sniff out which async library your code is running under" +optional = false +python-versions = ">=3.7" +groups = ["main"] +files = [ + {file = "sniffio-1.3.1-py3-none-any.whl", hash = "sha256:2f6da418d1f1e0fddd844478f41680e794e6051915791a034ff65e5f100525a2"}, + {file = "sniffio-1.3.1.tar.gz", hash = "sha256:f4324edc670a0f49750a81b895f35c3adb843cca46f0530f79fc1babb23789dc"}, +] + +[[package]] +name = "starlette" +version = "0.46.1" +description = "The little ASGI library that shines." +optional = false +python-versions = ">=3.9" +groups = ["main"] +files = [ + {file = "starlette-0.46.1-py3-none-any.whl", hash = "sha256:77c74ed9d2720138b25875133f3a2dae6d854af2ec37dceb56aef370c1d8a227"}, + {file = "starlette-0.46.1.tar.gz", hash = "sha256:3c88d58ee4bd1bb807c0d1acb381838afc7752f9ddaec81bbe4383611d833230"}, +] + +[package.dependencies] +anyio = ">=3.6.2,<5" + +[package.extras] +full = ["httpx (>=0.27.0,<0.29.0)", "itsdangerous", "jinja2", "python-multipart (>=0.0.18)", "pyyaml"] + +[[package]] +name = "tqdm" +version = "4.67.1" +description = "Fast, Extensible Progress Meter" +optional = false +python-versions = ">=3.7" +groups = ["main"] +files = [ + {file = "tqdm-4.67.1-py3-none-any.whl", hash = "sha256:26445eca388f82e72884e0d580d5464cd801a3ea01e63e5601bdff9ba6a48de2"}, + {file = "tqdm-4.67.1.tar.gz", hash = "sha256:f8aef9c52c08c13a65f30ea34f4e5aac3fd1a34959879d7e59e63027286627f2"}, +] + +[package.dependencies] +colorama = {version = "*", markers = "platform_system == \"Windows\""} + +[package.extras] +dev = ["nbval", "pytest (>=6)", "pytest-asyncio (>=0.24)", "pytest-cov", "pytest-timeout"] +discord = ["requests"] +notebook = ["ipywidgets (>=6)"] +slack = ["slack-sdk"] +telegram = ["requests"] + +[[package]] +name = "typing-extensions" +version = "4.13.1" +description = "Backported and Experimental Type Hints for Python 3.8+" +optional = false +python-versions = ">=3.8" +groups = ["main"] +files = [ + {file = "typing_extensions-4.13.1-py3-none-any.whl", hash = "sha256:4b6cf02909eb5495cfbc3f6e8fd49217e6cc7944e145cdda8caa3734777f9e69"}, + {file = "typing_extensions-4.13.1.tar.gz", hash = "sha256:98795af00fb9640edec5b8e31fc647597b4691f099ad75f469a2616be1a76dff"}, +] + +[[package]] +name = "typing-inspection" +version = "0.4.0" +description = "Runtime typing introspection tools" +optional = false +python-versions = ">=3.9" +groups = ["main"] +files = [ + {file = "typing_inspection-0.4.0-py3-none-any.whl", hash = "sha256:50e72559fcd2a6367a19f7a7e610e6afcb9fac940c650290eed893d61386832f"}, + {file = "typing_inspection-0.4.0.tar.gz", hash = "sha256:9765c87de36671694a67904bf2c96e395be9c6439bb6c87b5142569dcdd65122"}, +] + +[package.dependencies] +typing-extensions = ">=4.12.0" + +[[package]] +name = "uvicorn" +version = "0.34.0" +description = "The lightning-fast ASGI server." +optional = false +python-versions = ">=3.9" +groups = ["main"] +files = [ + {file = "uvicorn-0.34.0-py3-none-any.whl", hash = "sha256:023dc038422502fa28a09c7a30bf2b6991512da7dcdb8fd35fe57cfc154126f4"}, + {file = "uvicorn-0.34.0.tar.gz", hash = "sha256:404051050cd7e905de2c9a7e61790943440b3416f49cb409f965d9dcd0fa73e9"}, +] + +[package.dependencies] +click = ">=7.0" +colorama = {version = ">=0.4", optional = true, markers = "sys_platform == \"win32\" and extra == \"standard\""} +h11 = ">=0.8" +httptools = {version = ">=0.6.3", optional = true, markers = "extra == \"standard\""} +python-dotenv = {version = ">=0.13", optional = true, markers = "extra == \"standard\""} +pyyaml = {version = ">=5.1", optional = true, markers = "extra == \"standard\""} +uvloop = {version = ">=0.14.0,<0.15.0 || >0.15.0,<0.15.1 || >0.15.1", optional = true, markers = "sys_platform != \"win32\" and sys_platform != \"cygwin\" and platform_python_implementation != \"PyPy\" and extra == \"standard\""} +watchfiles = {version = ">=0.13", optional = true, markers = "extra == \"standard\""} +websockets = {version = ">=10.4", optional = true, markers = "extra == \"standard\""} + +[package.extras] +standard = ["colorama (>=0.4) ; sys_platform == \"win32\"", "httptools (>=0.6.3)", "python-dotenv (>=0.13)", "pyyaml (>=5.1)", "uvloop (>=0.14.0,!=0.15.0,!=0.15.1) ; sys_platform != \"win32\" and sys_platform != \"cygwin\" and platform_python_implementation != \"PyPy\"", "watchfiles (>=0.13)", "websockets (>=10.4)"] + +[[package]] +name = "uvloop" +version = "0.21.0" +description = "Fast implementation of asyncio event loop on top of libuv" +optional = false +python-versions = ">=3.8.0" +groups = ["main"] +markers = "sys_platform != \"win32\" and sys_platform != \"cygwin\" and platform_python_implementation != \"PyPy\"" +files = [ + {file = "uvloop-0.21.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:ec7e6b09a6fdded42403182ab6b832b71f4edaf7f37a9a0e371a01db5f0cb45f"}, + {file = "uvloop-0.21.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:196274f2adb9689a289ad7d65700d37df0c0930fd8e4e743fa4834e850d7719d"}, + {file = "uvloop-0.21.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f38b2e090258d051d68a5b14d1da7203a3c3677321cf32a95a6f4db4dd8b6f26"}, + {file = "uvloop-0.21.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:87c43e0f13022b998eb9b973b5e97200c8b90823454d4bc06ab33829e09fb9bb"}, + {file = "uvloop-0.21.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:10d66943def5fcb6e7b37310eb6b5639fd2ccbc38df1177262b0640c3ca68c1f"}, + {file = "uvloop-0.21.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:67dd654b8ca23aed0a8e99010b4c34aca62f4b7fce88f39d452ed7622c94845c"}, + {file = "uvloop-0.21.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:c0f3fa6200b3108919f8bdabb9a7f87f20e7097ea3c543754cabc7d717d95cf8"}, + {file = "uvloop-0.21.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:0878c2640cf341b269b7e128b1a5fed890adc4455513ca710d77d5e93aa6d6a0"}, + {file = "uvloop-0.21.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b9fb766bb57b7388745d8bcc53a359b116b8a04c83a2288069809d2b3466c37e"}, + {file = "uvloop-0.21.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8a375441696e2eda1c43c44ccb66e04d61ceeffcd76e4929e527b7fa401b90fb"}, + {file = "uvloop-0.21.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:baa0e6291d91649c6ba4ed4b2f982f9fa165b5bbd50a9e203c416a2797bab3c6"}, + {file = "uvloop-0.21.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:4509360fcc4c3bd2c70d87573ad472de40c13387f5fda8cb58350a1d7475e58d"}, + {file = "uvloop-0.21.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:359ec2c888397b9e592a889c4d72ba3d6befba8b2bb01743f72fffbde663b59c"}, + {file = "uvloop-0.21.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:f7089d2dc73179ce5ac255bdf37c236a9f914b264825fdaacaded6990a7fb4c2"}, + {file = "uvloop-0.21.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:baa4dcdbd9ae0a372f2167a207cd98c9f9a1ea1188a8a526431eef2f8116cc8d"}, + {file = "uvloop-0.21.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:86975dca1c773a2c9864f4c52c5a55631038e387b47eaf56210f873887b6c8dc"}, + {file = "uvloop-0.21.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:461d9ae6660fbbafedd07559c6a2e57cd553b34b0065b6550685f6653a98c1cb"}, + {file = "uvloop-0.21.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:183aef7c8730e54c9a3ee3227464daed66e37ba13040bb3f350bc2ddc040f22f"}, + {file = "uvloop-0.21.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:bfd55dfcc2a512316e65f16e503e9e450cab148ef11df4e4e679b5e8253a5281"}, + {file = "uvloop-0.21.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:787ae31ad8a2856fc4e7c095341cccc7209bd657d0e71ad0dc2ea83c4a6fa8af"}, + {file = "uvloop-0.21.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5ee4d4ef48036ff6e5cfffb09dd192c7a5027153948d85b8da7ff705065bacc6"}, + {file = "uvloop-0.21.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f3df876acd7ec037a3d005b3ab85a7e4110422e4d9c1571d4fc89b0fc41b6816"}, + {file = "uvloop-0.21.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:bd53ecc9a0f3d87ab847503c2e1552b690362e005ab54e8a48ba97da3924c0dc"}, + {file = "uvloop-0.21.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:a5c39f217ab3c663dc699c04cbd50c13813e31d917642d459fdcec07555cc553"}, + {file = "uvloop-0.21.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:17df489689befc72c39a08359efac29bbee8eee5209650d4b9f34df73d22e414"}, + {file = "uvloop-0.21.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:bc09f0ff191e61c2d592a752423c767b4ebb2986daa9ed62908e2b1b9a9ae206"}, + {file = "uvloop-0.21.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f0ce1b49560b1d2d8a2977e3ba4afb2414fb46b86a1b64056bc4ab929efdafbe"}, + {file = "uvloop-0.21.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e678ad6fe52af2c58d2ae3c73dc85524ba8abe637f134bf3564ed07f555c5e79"}, + {file = "uvloop-0.21.0-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:460def4412e473896ef179a1671b40c039c7012184b627898eea5072ef6f017a"}, + {file = "uvloop-0.21.0-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:10da8046cc4a8f12c91a1c39d1dd1585c41162a15caaef165c2174db9ef18bdc"}, + {file = "uvloop-0.21.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:c097078b8031190c934ed0ebfee8cc5f9ba9642e6eb88322b9958b649750f72b"}, + {file = "uvloop-0.21.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:46923b0b5ee7fc0020bef24afe7836cb068f5050ca04caf6b487c513dc1a20b2"}, + {file = "uvloop-0.21.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:53e420a3afe22cdcf2a0f4846e377d16e718bc70103d7088a4f7623567ba5fb0"}, + {file = "uvloop-0.21.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:88cb67cdbc0e483da00af0b2c3cdad4b7c61ceb1ee0f33fe00e09c81e3a6cb75"}, + {file = "uvloop-0.21.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:221f4f2a1f46032b403bf3be628011caf75428ee3cc204a22addf96f586b19fd"}, + {file = "uvloop-0.21.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:2d1f581393673ce119355d56da84fe1dd9d2bb8b3d13ce792524e1607139feff"}, + {file = "uvloop-0.21.0.tar.gz", hash = "sha256:3bf12b0fda68447806a7ad847bfa591613177275d35b6724b1ee573faa3704e3"}, +] + +[package.extras] +dev = ["Cython (>=3.0,<4.0)", "setuptools (>=60)"] +docs = ["Sphinx (>=4.1.2,<4.2.0)", "sphinx-rtd-theme (>=0.5.2,<0.6.0)", "sphinxcontrib-asyncio (>=0.3.0,<0.4.0)"] +test = ["aiohttp (>=3.10.5)", "flake8 (>=5.0,<6.0)", "mypy (>=0.800)", "psutil", "pyOpenSSL (>=23.0.0,<23.1.0)", "pycodestyle (>=2.9.0,<2.10.0)"] + +[[package]] +name = "watchfiles" +version = "1.0.5" +description = "Simple, modern and high performance file watching and code reload in python." +optional = false +python-versions = ">=3.9" +groups = ["main"] +files = [ + {file = "watchfiles-1.0.5-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:5c40fe7dd9e5f81e0847b1ea64e1f5dd79dd61afbedb57759df06767ac719b40"}, + {file = "watchfiles-1.0.5-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:8c0db396e6003d99bb2d7232c957b5f0b5634bbd1b24e381a5afcc880f7373fb"}, + {file = "watchfiles-1.0.5-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b551d4fb482fc57d852b4541f911ba28957d051c8776e79c3b4a51eb5e2a1b11"}, + {file = "watchfiles-1.0.5-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:830aa432ba5c491d52a15b51526c29e4a4b92bf4f92253787f9726fe01519487"}, + {file = "watchfiles-1.0.5-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a16512051a822a416b0d477d5f8c0e67b67c1a20d9acecb0aafa3aa4d6e7d256"}, + {file = "watchfiles-1.0.5-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:bfe0cbc787770e52a96c6fda6726ace75be7f840cb327e1b08d7d54eadc3bc85"}, + {file = "watchfiles-1.0.5-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d363152c5e16b29d66cbde8fa614f9e313e6f94a8204eaab268db52231fe5358"}, + {file = "watchfiles-1.0.5-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7ee32c9a9bee4d0b7bd7cbeb53cb185cf0b622ac761efaa2eba84006c3b3a614"}, + {file = "watchfiles-1.0.5-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:29c7fd632ccaf5517c16a5188e36f6612d6472ccf55382db6c7fe3fcccb7f59f"}, + {file = "watchfiles-1.0.5-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:8e637810586e6fe380c8bc1b3910accd7f1d3a9a7262c8a78d4c8fb3ba6a2b3d"}, + {file = "watchfiles-1.0.5-cp310-cp310-win32.whl", hash = "sha256:cd47d063fbeabd4c6cae1d4bcaa38f0902f8dc5ed168072874ea11d0c7afc1ff"}, + {file = "watchfiles-1.0.5-cp310-cp310-win_amd64.whl", hash = "sha256:86c0df05b47a79d80351cd179893f2f9c1b1cae49d96e8b3290c7f4bd0ca0a92"}, + {file = "watchfiles-1.0.5-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:237f9be419e977a0f8f6b2e7b0475ababe78ff1ab06822df95d914a945eac827"}, + {file = "watchfiles-1.0.5-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:e0da39ff917af8b27a4bdc5a97ac577552a38aac0d260a859c1517ea3dc1a7c4"}, + {file = "watchfiles-1.0.5-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2cfcb3952350e95603f232a7a15f6c5f86c5375e46f0bd4ae70d43e3e063c13d"}, + {file = "watchfiles-1.0.5-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:68b2dddba7a4e6151384e252a5632efcaa9bc5d1c4b567f3cb621306b2ca9f63"}, + {file = "watchfiles-1.0.5-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:95cf944fcfc394c5f9de794ce581914900f82ff1f855326f25ebcf24d5397418"}, + {file = "watchfiles-1.0.5-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ecf6cd9f83d7c023b1aba15d13f705ca7b7d38675c121f3cc4a6e25bd0857ee9"}, + {file = "watchfiles-1.0.5-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:852de68acd6212cd6d33edf21e6f9e56e5d98c6add46f48244bd479d97c967c6"}, + {file = "watchfiles-1.0.5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d5730f3aa35e646103b53389d5bc77edfbf578ab6dab2e005142b5b80a35ef25"}, + {file = "watchfiles-1.0.5-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:18b3bd29954bc4abeeb4e9d9cf0b30227f0f206c86657674f544cb032296acd5"}, + {file = "watchfiles-1.0.5-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:ba5552a1b07c8edbf197055bc9d518b8f0d98a1c6a73a293bc0726dce068ed01"}, + {file = "watchfiles-1.0.5-cp311-cp311-win32.whl", hash = "sha256:2f1fefb2e90e89959447bc0420fddd1e76f625784340d64a2f7d5983ef9ad246"}, + {file = "watchfiles-1.0.5-cp311-cp311-win_amd64.whl", hash = "sha256:b6e76ceb1dd18c8e29c73f47d41866972e891fc4cc7ba014f487def72c1cf096"}, + {file = "watchfiles-1.0.5-cp311-cp311-win_arm64.whl", hash = "sha256:266710eb6fddc1f5e51843c70e3bebfb0f5e77cf4f27129278c70554104d19ed"}, + {file = "watchfiles-1.0.5-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:b5eb568c2aa6018e26da9e6c86f3ec3fd958cee7f0311b35c2630fa4217d17f2"}, + {file = "watchfiles-1.0.5-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:0a04059f4923ce4e856b4b4e5e783a70f49d9663d22a4c3b3298165996d1377f"}, + {file = "watchfiles-1.0.5-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3e380c89983ce6e6fe2dd1e1921b9952fb4e6da882931abd1824c092ed495dec"}, + {file = "watchfiles-1.0.5-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:fe43139b2c0fdc4a14d4f8d5b5d967f7a2777fd3d38ecf5b1ec669b0d7e43c21"}, + {file = "watchfiles-1.0.5-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ee0822ce1b8a14fe5a066f93edd20aada932acfe348bede8aa2149f1a4489512"}, + {file = "watchfiles-1.0.5-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a0dbcb1c2d8f2ab6e0a81c6699b236932bd264d4cef1ac475858d16c403de74d"}, + {file = "watchfiles-1.0.5-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a2014a2b18ad3ca53b1f6c23f8cd94a18ce930c1837bd891262c182640eb40a6"}, + {file = "watchfiles-1.0.5-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:10f6ae86d5cb647bf58f9f655fcf577f713915a5d69057a0371bc257e2553234"}, + {file = "watchfiles-1.0.5-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:1a7bac2bde1d661fb31f4d4e8e539e178774b76db3c2c17c4bb3e960a5de07a2"}, + {file = "watchfiles-1.0.5-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:4ab626da2fc1ac277bbf752446470b367f84b50295264d2d313e28dc4405d663"}, + {file = "watchfiles-1.0.5-cp312-cp312-win32.whl", hash = "sha256:9f4571a783914feda92018ef3901dab8caf5b029325b5fe4558c074582815249"}, + {file = "watchfiles-1.0.5-cp312-cp312-win_amd64.whl", hash = "sha256:360a398c3a19672cf93527f7e8d8b60d8275119c5d900f2e184d32483117a705"}, + {file = "watchfiles-1.0.5-cp312-cp312-win_arm64.whl", hash = "sha256:1a2902ede862969077b97523987c38db28abbe09fb19866e711485d9fbf0d417"}, + {file = "watchfiles-1.0.5-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:0b289572c33a0deae62daa57e44a25b99b783e5f7aed81b314232b3d3c81a11d"}, + {file = "watchfiles-1.0.5-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:a056c2f692d65bf1e99c41045e3bdcaea3cb9e6b5a53dcaf60a5f3bd95fc9763"}, + {file = "watchfiles-1.0.5-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b9dca99744991fc9850d18015c4f0438865414e50069670f5f7eee08340d8b40"}, + {file = "watchfiles-1.0.5-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:894342d61d355446d02cd3988a7326af344143eb33a2fd5d38482a92072d9563"}, + {file = "watchfiles-1.0.5-cp313-cp313-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ab44e1580924d1ffd7b3938e02716d5ad190441965138b4aa1d1f31ea0877f04"}, + {file = "watchfiles-1.0.5-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d6f9367b132078b2ceb8d066ff6c93a970a18c3029cea37bfd7b2d3dd2e5db8f"}, + {file = "watchfiles-1.0.5-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f2e55a9b162e06e3f862fb61e399fe9f05d908d019d87bf5b496a04ef18a970a"}, + {file = "watchfiles-1.0.5-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0125f91f70e0732a9f8ee01e49515c35d38ba48db507a50c5bdcad9503af5827"}, + {file = "watchfiles-1.0.5-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:13bb21f8ba3248386337c9fa51c528868e6c34a707f729ab041c846d52a0c69a"}, + {file = "watchfiles-1.0.5-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:839ebd0df4a18c5b3c1b890145b5a3f5f64063c2a0d02b13c76d78fe5de34936"}, + {file = "watchfiles-1.0.5-cp313-cp313-win32.whl", hash = "sha256:4a8ec1e4e16e2d5bafc9ba82f7aaecfeec990ca7cd27e84fb6f191804ed2fcfc"}, + {file = "watchfiles-1.0.5-cp313-cp313-win_amd64.whl", hash = "sha256:f436601594f15bf406518af922a89dcaab416568edb6f65c4e5bbbad1ea45c11"}, + {file = "watchfiles-1.0.5-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:2cfb371be97d4db374cba381b9f911dd35bb5f4c58faa7b8b7106c8853e5d225"}, + {file = "watchfiles-1.0.5-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:a3904d88955fda461ea2531fcf6ef73584ca921415d5cfa44457a225f4a42bc1"}, + {file = "watchfiles-1.0.5-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2b7a21715fb12274a71d335cff6c71fe7f676b293d322722fe708a9ec81d91f5"}, + {file = "watchfiles-1.0.5-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:dfd6ae1c385ab481766b3c61c44aca2b3cd775f6f7c0fa93d979ddec853d29d5"}, + {file = "watchfiles-1.0.5-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b659576b950865fdad31fa491d31d37cf78b27113a7671d39f919828587b429b"}, + {file = "watchfiles-1.0.5-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1909e0a9cd95251b15bff4261de5dd7550885bd172e3536824bf1cf6b121e200"}, + {file = "watchfiles-1.0.5-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:832ccc221927c860e7286c55c9b6ebcc0265d5e072f49c7f6456c7798d2b39aa"}, + {file = "watchfiles-1.0.5-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:85fbb6102b3296926d0c62cfc9347f6237fb9400aecd0ba6bbda94cae15f2b3b"}, + {file = "watchfiles-1.0.5-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:15ac96dd567ad6c71c71f7b2c658cb22b7734901546cd50a475128ab557593ca"}, + {file = "watchfiles-1.0.5-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:4b6227351e11c57ae997d222e13f5b6f1f0700d84b8c52304e8675d33a808382"}, + {file = "watchfiles-1.0.5-cp39-cp39-win32.whl", hash = "sha256:974866e0db748ebf1eccab17862bc0f0303807ed9cda465d1324625b81293a18"}, + {file = "watchfiles-1.0.5-cp39-cp39-win_amd64.whl", hash = "sha256:9848b21ae152fe79c10dd0197304ada8f7b586d3ebc3f27f43c506e5a52a863c"}, + {file = "watchfiles-1.0.5-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:f59b870db1f1ae5a9ac28245707d955c8721dd6565e7f411024fa374b5362d1d"}, + {file = "watchfiles-1.0.5-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:9475b0093767e1475095f2aeb1d219fb9664081d403d1dff81342df8cd707034"}, + {file = "watchfiles-1.0.5-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fc533aa50664ebd6c628b2f30591956519462f5d27f951ed03d6c82b2dfd9965"}, + {file = "watchfiles-1.0.5-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fed1cd825158dcaae36acce7b2db33dcbfd12b30c34317a88b8ed80f0541cc57"}, + {file = "watchfiles-1.0.5-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:554389562c29c2c182e3908b149095051f81d28c2fec79ad6c8997d7d63e0009"}, + {file = "watchfiles-1.0.5-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:a74add8d7727e6404d5dc4dcd7fac65d4d82f95928bbee0cf5414c900e86773e"}, + {file = "watchfiles-1.0.5-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cb1489f25b051a89fae574505cc26360c8e95e227a9500182a7fe0afcc500ce0"}, + {file = "watchfiles-1.0.5-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c0901429650652d3f0da90bad42bdafc1f9143ff3605633c455c999a2d786cac"}, + {file = "watchfiles-1.0.5.tar.gz", hash = "sha256:b7529b5dcc114679d43827d8c35a07c493ad6f083633d573d81c660abc5979e9"}, +] + +[package.dependencies] +anyio = ">=3.0.0" + +[[package]] +name = "websockets" +version = "15.0.1" +description = "An implementation of the WebSocket Protocol (RFC 6455 & 7692)" +optional = false +python-versions = ">=3.9" +groups = ["main"] +files = [ + {file = "websockets-15.0.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:d63efaa0cd96cf0c5fe4d581521d9fa87744540d4bc999ae6e08595a1014b45b"}, + {file = "websockets-15.0.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:ac60e3b188ec7574cb761b08d50fcedf9d77f1530352db4eef1707fe9dee7205"}, + {file = "websockets-15.0.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:5756779642579d902eed757b21b0164cd6fe338506a8083eb58af5c372e39d9a"}, + {file = "websockets-15.0.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0fdfe3e2a29e4db3659dbd5bbf04560cea53dd9610273917799f1cde46aa725e"}, + {file = "websockets-15.0.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4c2529b320eb9e35af0fa3016c187dffb84a3ecc572bcee7c3ce302bfeba52bf"}, + {file = "websockets-15.0.1-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ac1e5c9054fe23226fb11e05a6e630837f074174c4c2f0fe442996112a6de4fb"}, + {file = "websockets-15.0.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:5df592cd503496351d6dc14f7cdad49f268d8e618f80dce0cd5a36b93c3fc08d"}, + {file = "websockets-15.0.1-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:0a34631031a8f05657e8e90903e656959234f3a04552259458aac0b0f9ae6fd9"}, + {file = "websockets-15.0.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:3d00075aa65772e7ce9e990cab3ff1de702aa09be3940d1dc88d5abf1ab8a09c"}, + {file = "websockets-15.0.1-cp310-cp310-win32.whl", hash = "sha256:1234d4ef35db82f5446dca8e35a7da7964d02c127b095e172e54397fb6a6c256"}, + {file = "websockets-15.0.1-cp310-cp310-win_amd64.whl", hash = "sha256:39c1fec2c11dc8d89bba6b2bf1556af381611a173ac2b511cf7231622058af41"}, + {file = "websockets-15.0.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:823c248b690b2fd9303ba00c4f66cd5e2d8c3ba4aa968b2779be9532a4dad431"}, + {file = "websockets-15.0.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:678999709e68425ae2593acf2e3ebcbcf2e69885a5ee78f9eb80e6e371f1bf57"}, + {file = "websockets-15.0.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:d50fd1ee42388dcfb2b3676132c78116490976f1300da28eb629272d5d93e905"}, + {file = "websockets-15.0.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d99e5546bf73dbad5bf3547174cd6cb8ba7273062a23808ffea025ecb1cf8562"}, + {file = "websockets-15.0.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:66dd88c918e3287efc22409d426c8f729688d89a0c587c88971a0faa2c2f3792"}, + {file = "websockets-15.0.1-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8dd8327c795b3e3f219760fa603dcae1dcc148172290a8ab15158cf85a953413"}, + {file = "websockets-15.0.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:8fdc51055e6ff4adeb88d58a11042ec9a5eae317a0a53d12c062c8a8865909e8"}, + {file = "websockets-15.0.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:693f0192126df6c2327cce3baa7c06f2a117575e32ab2308f7f8216c29d9e2e3"}, + {file = "websockets-15.0.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:54479983bd5fb469c38f2f5c7e3a24f9a4e70594cd68cd1fa6b9340dadaff7cf"}, + {file = "websockets-15.0.1-cp311-cp311-win32.whl", hash = "sha256:16b6c1b3e57799b9d38427dda63edcbe4926352c47cf88588c0be4ace18dac85"}, + {file = "websockets-15.0.1-cp311-cp311-win_amd64.whl", hash = "sha256:27ccee0071a0e75d22cb35849b1db43f2ecd3e161041ac1ee9d2352ddf72f065"}, + {file = "websockets-15.0.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:3e90baa811a5d73f3ca0bcbf32064d663ed81318ab225ee4f427ad4e26e5aff3"}, + {file = "websockets-15.0.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:592f1a9fe869c778694f0aa806ba0374e97648ab57936f092fd9d87f8bc03665"}, + {file = "websockets-15.0.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:0701bc3cfcb9164d04a14b149fd74be7347a530ad3bbf15ab2c678a2cd3dd9a2"}, + {file = "websockets-15.0.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e8b56bdcdb4505c8078cb6c7157d9811a85790f2f2b3632c7d1462ab5783d215"}, + {file = "websockets-15.0.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0af68c55afbd5f07986df82831c7bff04846928ea8d1fd7f30052638788bc9b5"}, + {file = "websockets-15.0.1-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:64dee438fed052b52e4f98f76c5790513235efaa1ef7f3f2192c392cd7c91b65"}, + {file = "websockets-15.0.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:d5f6b181bb38171a8ad1d6aa58a67a6aa9d4b38d0f8c5f496b9e42561dfc62fe"}, + {file = "websockets-15.0.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:5d54b09eba2bada6011aea5375542a157637b91029687eb4fdb2dab11059c1b4"}, + {file = "websockets-15.0.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:3be571a8b5afed347da347bfcf27ba12b069d9d7f42cb8c7028b5e98bbb12597"}, + {file = "websockets-15.0.1-cp312-cp312-win32.whl", hash = "sha256:c338ffa0520bdb12fbc527265235639fb76e7bc7faafbb93f6ba80d9c06578a9"}, + {file = "websockets-15.0.1-cp312-cp312-win_amd64.whl", hash = "sha256:fcd5cf9e305d7b8338754470cf69cf81f420459dbae8a3b40cee57417f4614a7"}, + {file = "websockets-15.0.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:ee443ef070bb3b6ed74514f5efaa37a252af57c90eb33b956d35c8e9c10a1931"}, + {file = "websockets-15.0.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:5a939de6b7b4e18ca683218320fc67ea886038265fd1ed30173f5ce3f8e85675"}, + {file = "websockets-15.0.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:746ee8dba912cd6fc889a8147168991d50ed70447bf18bcda7039f7d2e3d9151"}, + {file = "websockets-15.0.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:595b6c3969023ecf9041b2936ac3827e4623bfa3ccf007575f04c5a6aa318c22"}, + {file = "websockets-15.0.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3c714d2fc58b5ca3e285461a4cc0c9a66bd0e24c5da9911e30158286c9b5be7f"}, + {file = "websockets-15.0.1-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0f3c1e2ab208db911594ae5b4f79addeb3501604a165019dd221c0bdcabe4db8"}, + {file = "websockets-15.0.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:229cf1d3ca6c1804400b0a9790dc66528e08a6a1feec0d5040e8b9eb14422375"}, + {file = "websockets-15.0.1-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:756c56e867a90fb00177d530dca4b097dd753cde348448a1012ed6c5131f8b7d"}, + {file = "websockets-15.0.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:558d023b3df0bffe50a04e710bc87742de35060580a293c2a984299ed83bc4e4"}, + {file = "websockets-15.0.1-cp313-cp313-win32.whl", hash = "sha256:ba9e56e8ceeeedb2e080147ba85ffcd5cd0711b89576b83784d8605a7df455fa"}, + {file = "websockets-15.0.1-cp313-cp313-win_amd64.whl", hash = "sha256:e09473f095a819042ecb2ab9465aee615bd9c2028e4ef7d933600a8401c79561"}, + {file = "websockets-15.0.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:5f4c04ead5aed67c8a1a20491d54cdfba5884507a48dd798ecaf13c74c4489f5"}, + {file = "websockets-15.0.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:abdc0c6c8c648b4805c5eacd131910d2a7f6455dfd3becab248ef108e89ab16a"}, + {file = "websockets-15.0.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:a625e06551975f4b7ea7102bc43895b90742746797e2e14b70ed61c43a90f09b"}, + {file = "websockets-15.0.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d591f8de75824cbb7acad4e05d2d710484f15f29d4a915092675ad3456f11770"}, + {file = "websockets-15.0.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:47819cea040f31d670cc8d324bb6435c6f133b8c7a19ec3d61634e62f8d8f9eb"}, + {file = "websockets-15.0.1-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ac017dd64572e5c3bd01939121e4d16cf30e5d7e110a119399cf3133b63ad054"}, + {file = "websockets-15.0.1-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:4a9fac8e469d04ce6c25bb2610dc535235bd4aa14996b4e6dbebf5e007eba5ee"}, + {file = "websockets-15.0.1-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:363c6f671b761efcb30608d24925a382497c12c506b51661883c3e22337265ed"}, + {file = "websockets-15.0.1-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:2034693ad3097d5355bfdacfffcbd3ef5694f9718ab7f29c29689a9eae841880"}, + {file = "websockets-15.0.1-cp39-cp39-win32.whl", hash = "sha256:3b1ac0d3e594bf121308112697cf4b32be538fb1444468fb0a6ae4feebc83411"}, + {file = "websockets-15.0.1-cp39-cp39-win_amd64.whl", hash = "sha256:b7643a03db5c95c799b89b31c036d5f27eeb4d259c798e878d6937d71832b1e4"}, + {file = "websockets-15.0.1-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:0c9e74d766f2818bb95f84c25be4dea09841ac0f734d1966f415e4edfc4ef1c3"}, + {file = "websockets-15.0.1-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:1009ee0c7739c08a0cd59de430d6de452a55e42d6b522de7aa15e6f67db0b8e1"}, + {file = "websockets-15.0.1-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:76d1f20b1c7a2fa82367e04982e708723ba0e7b8d43aa643d3dcd404d74f1475"}, + {file = "websockets-15.0.1-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f29d80eb9a9263b8d109135351caf568cc3f80b9928bccde535c235de55c22d9"}, + {file = "websockets-15.0.1-pp310-pypy310_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b359ed09954d7c18bbc1680f380c7301f92c60bf924171629c5db97febb12f04"}, + {file = "websockets-15.0.1-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:cad21560da69f4ce7658ca2cb83138fb4cf695a2ba3e475e0559e05991aa8122"}, + {file = "websockets-15.0.1-pp39-pypy39_pp73-macosx_10_15_x86_64.whl", hash = "sha256:7f493881579c90fc262d9cdbaa05a6b54b3811c2f300766748db79f098db9940"}, + {file = "websockets-15.0.1-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:47b099e1f4fbc95b701b6e85768e1fcdaf1630f3cbe4765fa216596f12310e2e"}, + {file = "websockets-15.0.1-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:67f2b6de947f8c757db2db9c71527933ad0019737ec374a8a6be9a956786aaf9"}, + {file = "websockets-15.0.1-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d08eb4c2b7d6c41da6ca0600c077e93f5adcfd979cd777d747e9ee624556da4b"}, + {file = "websockets-15.0.1-pp39-pypy39_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4b826973a4a2ae47ba357e4e82fa44a463b8f168e1ca775ac64521442b19e87f"}, + {file = "websockets-15.0.1-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:21c1fa28a6a7e3cbdc171c694398b6df4744613ce9b36b1a498e816787e28123"}, + {file = "websockets-15.0.1-py3-none-any.whl", hash = "sha256:f7a866fbc1e97b5c617ee4116daaa09b722101d4a3c170c787450ba409f9736f"}, + {file = "websockets-15.0.1.tar.gz", hash = "sha256:82544de02076bafba038ce055ee6412d68da13ab47f0c60cab827346de828dee"}, +] + +[metadata] +lock-version = "2.1" +python-versions = "^3.12" +content-hash = "a8a8c70853fedde787ddc12e88f802cccde8f13657bbecfc460f99ba63f1dbbc" diff --git a/api/pyproject.toml b/api/pyproject.toml new file mode 100644 index 0000000000000000000000000000000000000000..f94b791ba71f961ada79efa453c57bd82045755a --- /dev/null +++ b/api/pyproject.toml @@ -0,0 +1,24 @@ +[tool.poetry] +name = "docker-template" +version = "1.0.0" +description = "Docker Template with FastAPI" +authors = ["Your Name "] +readme = "README.md" + +[tool.poetry.dependencies] +python = "^3.12" +asyncio = "^3.4.3" +debugpy = "~=1.8.13" +fastapi = "~=0.115.12" +httpx = "~=0.28.1" +python-dotenv = "~=1.1.0" +uvicorn = {extras = ["standard"], version = "~=0.34.0"} +websockets = "~=15.0.1" +openai = "^1.77.0" + +[tool.poetry.group.dev.dependencies] +pytest = "^7.4.0" + +[build-system] +requires = ["poetry-core"] +build-backend = "poetry.core.masonry.api" \ No newline at end of file diff --git a/api/scripts/create_play_profile_pic.py b/api/scripts/create_play_profile_pic.py new file mode 100644 index 0000000000000000000000000000000000000000..2019c4118bec6febeb6732224c6e70c36401ac9c --- /dev/null +++ b/api/scripts/create_play_profile_pic.py @@ -0,0 +1,20 @@ +from openai import OpenAI +import base64 +client = OpenAI() + +prompt = """ +A children's book drawing of a veterinarian using a stethoscope to +listen to the heartbeat of a baby otter. +""" + +result = client.images.generate( + model="gpt-image-1", + prompt=prompt +) + +image_base64 = result.data[0].b64_json +image_bytes = base64.b64decode(image_base64) + +# Save the image to a file +with open("otter.png", "wb") as f: + f.write(image_bytes) \ No newline at end of file diff --git a/api/scripts/create_player_profiles.py b/api/scripts/create_player_profiles.py new file mode 100644 index 0000000000000000000000000000000000000000..befcb17b01b0fc3558c6a52f0a76cb6059db66c0 --- /dev/null +++ b/api/scripts/create_player_profiles.py @@ -0,0 +1,174 @@ +from openai import OpenAI +import os +import csv +from pydantic import BaseModel, Field, ValidationError +from typing import Literal, Optional +import hashlib +import json +from pprint import pprint + + +client = OpenAI() + +prompt = """ +You are generating structured simulation data for a fictional soccer player. + +Only return **valid JSON** that can be passed to Python's `json.loads()` without issues. Do **not** explain or wrap it in markdown. No commentary. No prose. Just raw JSON. + +Here is the known player information: +{player_info} + +Here is the team context: +{team_name_description} + +Your task: +Generate a single flat JSON object with **exactly** the following fields — no more, no less: + +```json +{{ + "height_cm": // integer, range 150-210 + "weight_kg": // integer, range 50-110 + "overall_rating": // integer, range 1-100 + "is_injured": // boolean + "form": // integer, range 1-10 + "goals": // integer + "assists": // integer + "yellow_cards": // integer + "red_cards": // integer + "bio": // short paragraph; highlight signature play style, attitude, origins, or memorable traits — make it vivid, not generic +}} +``` +""" + +def get_ai_response(prompt): + response = client.responses.create( + model="gpt-4o-mini", + input=prompt + ) + return response.output_text + +# response = client.responses.create( +# # model="gpt-4.1", +# model="gpt-4o-mini", +# input="Write a one-sentence bedtime story about a unicorn." +# ) + +# print(response.output_text) + +team_descriptions = { + 'Everglade_FC_Roster.csv': 'Everglade FC — Miami, Florida Fast, flashy, and fiercely proud of their roots in the wetlands, Everglade FC plays with flair under the humid lights of South Florida. Their style is as wild and unpredictable as the ecosystem they represent.', + 'Fraser_Valley_United_Roster.csv': 'Fraser Valley United — Abbotsford, British Columbia Surrounded by vineyards and mountains, this team brings together rural BC pride with west coast sophistication. Known for their academy program, they\'re a pipeline for Canadian talent.', + 'Tierra_Alta_FC_Roster.csv': 'Tierra Alta FC — San José, Costa Rica Named for the highlands of Costa Rica, this team champions sustainability and tactical intelligence. Their lush green stadium is solar-powered and ringed by cloud forest.', + 'Yucatan_Force_Roster.csv': 'Yucatán Force — Mérida, Mexico Deep in the Mayan heartland, this team blends cultural pride with raw talent. Their fortress-like stadium is known as El Templo del Sol — The Temple of the Sun.', +} + + +class Player(BaseModel): + number: int + name: str + age: int + nationality: str + shirt_number: int + position: Literal[ + "Goalkeeper", "Left Back", "Center Back", "Right Back", + "Full Back", "Defensive Mid", "Central Mid", "Attacking Mid", + "Left Wing", "Right Wing", "Forward/Winger", "Striker", "Various" + ] + preferred_foot: Literal["Left", "Right", "Mixed"] + role: Literal["Starter", "Bench", "Reserve/Prospect"] + + @property + def id(self): + if not self.team: + raise ValueError("Team must not be empty") + return hashlib.sha256(f"{self.team}_{self.number}".encode()).hexdigest() + + @property + def filename(self): + return f'{self.team.replace(" ", "_")}_{self.number}.json' + + # Optional flair / simulation fields + team: Optional[str] = None + height_cm: Optional[int] = Field(None, ge=150, le=210) + weight_kg: Optional[int] = Field(None, ge=50, le=110) + overall_rating: Optional[int] = Field(None, ge=1, le=100) + is_injured: Optional[bool] = False + form: Optional[int] = Field(None, ge=1, le=10) # recent performance (1-10) + + # Stats placeholder — useful if you want to track across games + goals: Optional[int] = 0 + assists: Optional[int] = 0 + yellow_cards: Optional[int] = 0 + red_cards: Optional[int] = 0 + + # Narrative hook + bio: Optional[str] = None + + @classmethod + def from_row(cls, row): + if len(row) != 8: + raise ValueError("Row must have 8 elements") + return cls( + number=row[0], + name=row[1], + position=row[2], + age=row[3], + nationality=row[4], + shirt_number=row[5], + preferred_foot=row[6], + role=row[7], + ) + + def player_info(self): + return { + "number": self.number, + "name": self.name, + "position": self.position, + "age": self.age, + "nationality": self.nationality, + "shirt_number": self.shirt_number, + "preferred_foot": self.preferred_foot, + "role": self.role, + } + + def save(self): + with open(os.path.join("/workspace/data/huge-league/players", self.filename), 'w') as f: + json.dump(self.model_dump(), f) + + @classmethod + def load(cls, filename): + with open(os.path.join("/workspace/data/huge-league/players", filename), 'r') as f: + data = json.load(f) + return cls.model_validate(data) + + + +for filename in os.listdir("/workspace/data/huge-league/rosters"): + with open(os.path.join("/workspace/data/huge-league/rosters", filename), 'r') as f: + print(f"Processing {filename}") + team_description = team_descriptions.get(filename) + team_name = " ".join(filename.split("_")[:-1]) + reader = csv.reader(f) + next(reader) # skip header + for row in reader: + player = Player.from_row(row) + player.team = team_name + # print('-->', player.id) + print('-->', player) + print('---->', player.filename) + # print('-->', team_description) + player_info = player.player_info() + text = prompt.format(player_info=player_info, team_name_description=team_description) + response = get_ai_response(text) + # print('\n=======\n', response, '\n=======\n') + + for key, value in json.loads(response).items(): + setattr(player, key, value) + # print(player) + player.save() + +# break +# # break + +# # # player = Player.load("Everglade_FC_1.json") +# # # pprint(player.dict()) \ No newline at end of file diff --git a/api/server.py b/api/server.py new file mode 100644 index 0000000000000000000000000000000000000000..b47ef900a782762696008736c22850fe798b344b --- /dev/null +++ b/api/server.py @@ -0,0 +1,35 @@ +import os +from fastapi import FastAPI +from fastapi.middleware.cors import CORSMiddleware + +debug = bool(os.getenv("DEBUG", False)) + +app = FastAPI( + title='Huge IFX', + version='1.0', + description='Huge IFX with FastAPI', +) + +# Set all CORS enabled origins +app.add_middleware( + CORSMiddleware, + allow_origins=["*"], + allow_credentials=True, + allow_methods=["*"], + allow_headers=["*"], + expose_headers=["*"], +) + +# Your existing endpoints +@app.get('/') +async def home(): + return {'message': 'Home'} + +if debug: + import debugpy + debugpy.listen(("0.0.0.0", 5678)) + print("VS Code debugger is ready to be attached, press F5 in VS Code...") + +if __name__ == '__main__': + import uvicorn + uvicorn.run('server:app', host='0.0.0.0', port=8000, reload=True) \ No newline at end of file diff --git a/data/huge-league/players/Everglade_FC_1.json b/data/huge-league/players/Everglade_FC_1.json new file mode 100644 index 0000000000000000000000000000000000000000..04bf01e0adbc0fc3e03d0b756a80b1c87848d725 --- /dev/null +++ b/data/huge-league/players/Everglade_FC_1.json @@ -0,0 +1 @@ +{"number": 1, "name": "Eric Miller", "age": 28, "nationality": "USA", "shirt_number": 1, "position": "Goalkeeper", "preferred_foot": "Right", "role": "Starter", "team": "Everglade FC", "height_cm": 185, "weight_kg": 80, "overall_rating": 88, "is_injured": false, "form": 8, "goals": 0, "assists": 0, "yellow_cards": 2, "red_cards": 0, "bio": "Eric Miller, a dynamic goalkeeper with a commanding presence, thrives under pressure, effortlessly diving to make game-changing saves. A proud product of Miami, he embodies the fiery spirit of Everglade FC, showcasing agility and flair that resonates with the team's wild, unpredictable style. His leadership on the field inspires teammates to elevate their game, making him an irreplaceable asset."} \ No newline at end of file diff --git a/data/huge-league/players/Everglade_FC_10.json b/data/huge-league/players/Everglade_FC_10.json new file mode 100644 index 0000000000000000000000000000000000000000..a9d52ee9522251165a210676f23ddbe9f2463a2d --- /dev/null +++ b/data/huge-league/players/Everglade_FC_10.json @@ -0,0 +1 @@ +{"number": 10, "name": "Matthew Martin", "age": 24, "nationality": "USA", "shirt_number": 10, "position": "Striker", "preferred_foot": "Left", "role": "Starter", "team": "Everglade FC", "height_cm": 182, "weight_kg": 77, "overall_rating": 85, "is_injured": false, "form": 8, "goals": 15, "assists": 5, "yellow_cards": 2, "red_cards": 0, "bio": "Matthew Martin is a dynamic striker known for his explosive pace and clinical finishing. Hailing from the vibrant streets of Miami, he embodies the flair of Everglade FC, often dazzling defenders with his deft footwork and unpredictable movements. His fierce determination and humble beginnings fuel his passion on the pitch, making him a fan favorite and a relentless competitor."} \ No newline at end of file diff --git a/data/huge-league/players/Everglade_FC_11.json b/data/huge-league/players/Everglade_FC_11.json new file mode 100644 index 0000000000000000000000000000000000000000..a300a14486afea8bac4ae8faa38e41fc504bed14 --- /dev/null +++ b/data/huge-league/players/Everglade_FC_11.json @@ -0,0 +1 @@ +{"number": 11, "name": "Michael Smith", "age": 20, "nationality": "USA", "shirt_number": 11, "position": "Right Wing", "preferred_foot": "Right", "role": "Starter", "team": "Everglade FC", "height_cm": 178, "weight_kg": 70, "overall_rating": 85, "is_injured": false, "form": 8, "goals": 12, "assists": 10, "yellow_cards": 3, "red_cards": 1, "bio": "Michael Smith, the electrifying right wing from Everglade FC, combines blistering speed with uncanny dribbling skills, making defenders dizzy. Hailing from the vibrant streets of Miami, his playful flair on the pitch reflects the rich culture of his roots. With a fierce determination, he thrives under pressure, often delivering stunning goals in crucial moments."} \ No newline at end of file diff --git a/data/huge-league/players/Everglade_FC_12.json b/data/huge-league/players/Everglade_FC_12.json new file mode 100644 index 0000000000000000000000000000000000000000..f2b8dfdb4988fdcbad2beef9806ae1636282bb0d --- /dev/null +++ b/data/huge-league/players/Everglade_FC_12.json @@ -0,0 +1 @@ +{"number": 12, "name": "Eric Johnson", "age": 30, "nationality": "USA", "shirt_number": 12, "position": "Goalkeeper", "preferred_foot": "Left", "role": "Bench", "team": "Everglade FC", "height_cm": 185, "weight_kg": 80, "overall_rating": 76, "is_injured": false, "form": 7, "goals": 0, "assists": 0, "yellow_cards": 2, "red_cards": 0, "bio": "Hailing from the bustling streets of Miami, Eric Johnson is known for his quick reflexes and fearless approach to goalkeeping. His left foot is not just for kicking but also for orchestrating play from the back, commanding the defense with a calm yet fiery presence. Always ready to dive into action, he's a beloved figure among fans for his dedication and the vibrant spirit he brings to the pitch."} \ No newline at end of file diff --git a/data/huge-league/players/Everglade_FC_13.json b/data/huge-league/players/Everglade_FC_13.json new file mode 100644 index 0000000000000000000000000000000000000000..29c362d8ede3df49d9ff55438485a2969c5fdd21 --- /dev/null +++ b/data/huge-league/players/Everglade_FC_13.json @@ -0,0 +1 @@ +{"number": 13, "name": "Michael Martin", "age": 22, "nationality": "USA", "shirt_number": 13, "position": "Center Back", "preferred_foot": "Left", "role": "Bench", "team": "Everglade FC", "height_cm": 185, "weight_kg": 78, "overall_rating": 75, "is_injured": false, "form": 7, "goals": 2, "assists": 1, "yellow_cards": 4, "red_cards": 0, "bio": "Michael Martin, a determined Center Back at 22, commands the field with his tactical acumen and a left-footed booming clearance. Hailing from the wetlands of Miami, his play style embodies both grit and grace, making him a formidable presence in the backline. Known for his fierce tackles and leadership, he carries the pride of Everglade FC, reflecting the wild and spirited essence of South Florida's ecosystem."} \ No newline at end of file diff --git a/data/huge-league/players/Everglade_FC_14.json b/data/huge-league/players/Everglade_FC_14.json new file mode 100644 index 0000000000000000000000000000000000000000..5d425436cfb5624ba4e329f37418d8b24ab55e79 --- /dev/null +++ b/data/huge-league/players/Everglade_FC_14.json @@ -0,0 +1 @@ +{"number": 14, "name": "Nicholas Gonzalez", "age": 19, "nationality": "USA", "shirt_number": 14, "position": "Full Back", "preferred_foot": "Left", "role": "Bench", "team": "Everglade FC", "height_cm": 178, "weight_kg": 75, "overall_rating": 85, "is_injured": false, "form": 7, "goals": 3, "assists": 5, "yellow_cards": 2, "red_cards": 0, "bio": "Nicholas Gonzalez, a dynamic Full Back from the wetlands of Miami, embodies the wild spirit of Everglade FC. With his left foot, he possesses a fierce ability to whip in dangerous crosses and initiate breathtaking counter-attacks, all while maintaining a fearless defensive stance. At just 19, his passion on the field mirrors the vibrant energy of his roots, earning him a growing fan base and the respect of his teammates."} \ No newline at end of file diff --git a/data/huge-league/players/Everglade_FC_15.json b/data/huge-league/players/Everglade_FC_15.json new file mode 100644 index 0000000000000000000000000000000000000000..5c40db85417e1e1a232d4f2d554b6fe857b829d5 --- /dev/null +++ b/data/huge-league/players/Everglade_FC_15.json @@ -0,0 +1 @@ +{"number": 15, "name": "Joseph Thomas", "age": 27, "nationality": "USA", "shirt_number": 15, "position": "Defensive Mid", "preferred_foot": "Right", "role": "Bench", "team": "Everglade FC", "height_cm": 178, "weight_kg": 72, "overall_rating": 82, "is_injured": false, "form": 7, "goals": 3, "assists": 5, "yellow_cards": 2, "red_cards": 0, "bio": "Joseph Thomas is a dynamic defensive mid known for his tenacity and exceptional ball-winning ability. With a heart as big as the wetlands he represents, he showcases tireless work ethic and an eye for threading key passes, embodying the spirit of Everglade FC."} \ No newline at end of file diff --git a/data/huge-league/players/Everglade_FC_16.json b/data/huge-league/players/Everglade_FC_16.json new file mode 100644 index 0000000000000000000000000000000000000000..dcad0bcfb6808a1cf9c34479ad711fb232d043a1 --- /dev/null +++ b/data/huge-league/players/Everglade_FC_16.json @@ -0,0 +1 @@ +{"number": 16, "name": "Michael Martin", "age": 26, "nationality": "USA", "shirt_number": 16, "position": "Central Mid", "preferred_foot": "Left", "role": "Bench", "team": "Everglade FC", "height_cm": 180, "weight_kg": 75, "overall_rating": 82, "is_injured": false, "form": 7, "goals": 5, "assists": 8, "yellow_cards": 2, "red_cards": 0, "bio": "Michael Martin, a vibrant midfielder hailing from the wetlands of South Florida, dazzles with his left foot precision and uncanny ability to read the game. His agile dribbling and eye for a pass electrify the field, embodying the flashy essence of Everglade FC, making him a cornerstone in their relentless attack."} \ No newline at end of file diff --git a/data/huge-league/players/Everglade_FC_17.json b/data/huge-league/players/Everglade_FC_17.json new file mode 100644 index 0000000000000000000000000000000000000000..57458b0d4ef2759ef41ced984f944f1640978e8d --- /dev/null +++ b/data/huge-league/players/Everglade_FC_17.json @@ -0,0 +1 @@ +{"number": 17, "name": "Zachary Johnson", "age": 22, "nationality": "USA", "shirt_number": 17, "position": "Attacking Mid", "preferred_foot": "Left", "role": "Bench", "team": "Everglade FC", "height_cm": 178, "weight_kg": 72, "overall_rating": 75, "is_injured": false, "form": 8, "goals": 5, "assists": 10, "yellow_cards": 3, "red_cards": 0, "bio": "Zachary Johnson, a talented 22-year-old attacking midfielder from the USA, dazzles on the field with his left foot's finesse. Known for his rapid bursts through defenses and a flair for the dramatic, he embodies the wild spirit of Everglade FC. Despite his youth, his vision and creativity often steal the spotlight, making him a pivotal player in every match."} \ No newline at end of file diff --git a/data/huge-league/players/Everglade_FC_18.json b/data/huge-league/players/Everglade_FC_18.json new file mode 100644 index 0000000000000000000000000000000000000000..773b1834c179885e3516846beb20620661d50263 --- /dev/null +++ b/data/huge-league/players/Everglade_FC_18.json @@ -0,0 +1 @@ +{"number": 18, "name": "Ryan Martinez", "age": 28, "nationality": "USA", "shirt_number": 18, "position": "Forward/Winger", "preferred_foot": "Left", "role": "Bench", "team": "Everglade FC", "height_cm": 178, "weight_kg": 75, "overall_rating": 82, "is_injured": false, "form": 7, "goals": 12, "assists": 8, "yellow_cards": 3, "red_cards": 0, "bio": "Ryan Martinez, a dazzling forward with a penchant for dramatic flair, thrives in the unpredictable rhythm of the game. Hailing from the vibrant streets of Miami, his left-footed strikes often leave defenders in despair, while his charismatic presence on the pitch ignites the spirit of Everglade FC. Known for weaving through defenses with hypnotic footwork, he embodies the fierce pride of the wetlands he represents."} \ No newline at end of file diff --git a/data/huge-league/players/Everglade_FC_19.json b/data/huge-league/players/Everglade_FC_19.json new file mode 100644 index 0000000000000000000000000000000000000000..ab496d73edb43ce018910c65ad6da503d4e3227b --- /dev/null +++ b/data/huge-league/players/Everglade_FC_19.json @@ -0,0 +1 @@ +{"number": 19, "name": "Ryan Moore", "age": 29, "nationality": "USA", "shirt_number": 19, "position": "Striker", "preferred_foot": "Right", "role": "Bench", "team": "Everglade FC", "height_cm": 183, "weight_kg": 78, "overall_rating": 85, "is_injured": false, "form": 7, "goals": 22, "assists": 10, "yellow_cards": 3, "red_cards": 1, "bio": "Ryan Moore, a dynamic striker from the wetlands of Miami, captivates fans with his electrifying speed and exquisite footwork. Known for his ability to weave through defenders like a heron gliding over water, he's a game-changer on the pitch. With an unwavering determination and a fierce pride in his roots, he consistently brings a touch of flair to Everglade FC's vibrant style of play."} \ No newline at end of file diff --git a/data/huge-league/players/Everglade_FC_2.json b/data/huge-league/players/Everglade_FC_2.json new file mode 100644 index 0000000000000000000000000000000000000000..3274abd3d7c079741b303f790b3eaaaa75010333 --- /dev/null +++ b/data/huge-league/players/Everglade_FC_2.json @@ -0,0 +1 @@ +{"number": 2, "name": "Matthew Garcia", "age": 32, "nationality": "USA", "shirt_number": 2, "position": "Left Back", "preferred_foot": "Left", "role": "Starter", "team": "Everglade FC", "height_cm": 178, "weight_kg": 76, "overall_rating": 84, "is_injured": false, "form": 8, "goals": 5, "assists": 12, "yellow_cards": 3, "red_cards": 1, "bio": "Matthew Garcia, a left back with a fierce competitive spirit, thrives in the electric atmosphere of Everglade FC. His dynamic runs down the flank and tactical awareness make him a key player in both defense and attacking plays. Known for his precise crosses and fierce tackles, he embodies the untamed energy of Miami's wetlands."} \ No newline at end of file diff --git a/data/huge-league/players/Everglade_FC_20.json b/data/huge-league/players/Everglade_FC_20.json new file mode 100644 index 0000000000000000000000000000000000000000..2f84e365911ce2d189f48d241eb8585daf81d0fc --- /dev/null +++ b/data/huge-league/players/Everglade_FC_20.json @@ -0,0 +1 @@ +{"number": 20, "name": "Andrew Davis", "age": 19, "nationality": "USA", "shirt_number": 20, "position": "Left Wing", "preferred_foot": "Right", "role": "Bench", "team": "Everglade FC", "height_cm": 178, "weight_kg": 72, "overall_rating": 85, "is_injured": false, "form": 8, "goals": 12, "assists": 9, "yellow_cards": 3, "red_cards": 1, "bio": "Andrew Davis, known for his dazzling footwork and lightning speed, embodies the essence of Everglade FC. With roots in the wetlands of Miami, he plays with a fierce pride, often leaving defenders grasping at air as he twists and turns down the left flank. His electrifying presence on the pitch, combined with an uncanny ability to find teammates in the box, makes him a pivotal player for his team."} \ No newline at end of file diff --git a/data/huge-league/players/Everglade_FC_21.json b/data/huge-league/players/Everglade_FC_21.json new file mode 100644 index 0000000000000000000000000000000000000000..1e554f994cd99aa52967478db8dab03e3189a550 --- /dev/null +++ b/data/huge-league/players/Everglade_FC_21.json @@ -0,0 +1 @@ +{"number": 21, "name": "Ryan Brown", "age": 21, "nationality": "USA", "shirt_number": 21, "position": "Right Wing", "preferred_foot": "Left", "role": "Bench", "team": "Everglade FC", "height_cm": 178, "weight_kg": 70, "overall_rating": 84, "is_injured": false, "form": 8, "goals": 12, "assists": 9, "yellow_cards": 3, "red_cards": 0, "bio": "Ryan Brown is a dynamic Right Wing known for his blistering pace and audacious footwork. Raised in the vibrant streets of Miami, he embodies the fierce spirit of Everglade FC, dazzling fans with every touch. His left foot sends chills down defenders' spines, making him a constant threat. A true team player, Ryan thrives on the big stage, often taking it upon himself to turn the tide in tight matches."} \ No newline at end of file diff --git a/data/huge-league/players/Everglade_FC_22.json b/data/huge-league/players/Everglade_FC_22.json new file mode 100644 index 0000000000000000000000000000000000000000..437f7f12cc1bb07aec25874b996250445445f5ff --- /dev/null +++ b/data/huge-league/players/Everglade_FC_22.json @@ -0,0 +1 @@ +{"number": 22, "name": "Ryan Martinez", "age": 25, "nationality": "USA", "shirt_number": 22, "position": "Various", "preferred_foot": "Right", "role": "Reserve/Prospect", "team": "Everglade FC", "height_cm": 182, "weight_kg": 75, "overall_rating": 78, "is_injured": false, "form": 7, "goals": 10, "assists": 8, "yellow_cards": 3, "red_cards": 1, "bio": "With his nimble footwork and explosive pace, Ryan Martinez dances down the flanks like a breeze through the Everglades. Proud of his roots, he embodies a relentless spirit, often leaving defenders bewildered with his flashy dribbles. Known for his creative flair on the pitch, he combines skill and tenacity, making him a thrilling player to watch in every match."} \ No newline at end of file diff --git a/data/huge-league/players/Everglade_FC_23.json b/data/huge-league/players/Everglade_FC_23.json new file mode 100644 index 0000000000000000000000000000000000000000..37085e68aa798489dda0da0d4330ca00bf4e46dd --- /dev/null +++ b/data/huge-league/players/Everglade_FC_23.json @@ -0,0 +1 @@ +{"number": 23, "name": "Brian Davis", "age": 27, "nationality": "USA", "shirt_number": 23, "position": "Various", "preferred_foot": "Right", "role": "Reserve/Prospect", "team": "Everglade FC", "height_cm": 180, "weight_kg": 75, "overall_rating": 82, "is_injured": false, "form": 7, "goals": 10, "assists": 5, "yellow_cards": 3, "red_cards": 0, "bio": "Brian Davis, a dynamic player known for his dazzling footwork and unpredictable moves, embodies the wild spirit of Everglade FC. At 27, he has honed his craft in the humid conditions of Miami, turning every game into an electrifying display of skill and determination. His right foot delivers precision while his flair on the ball leaves defenders in his wake, making him a beloved figure amongst the fans."} \ No newline at end of file diff --git a/data/huge-league/players/Everglade_FC_3.json b/data/huge-league/players/Everglade_FC_3.json new file mode 100644 index 0000000000000000000000000000000000000000..e8ddf53f6c40a09547f2dffff72be9d3cffbe829 --- /dev/null +++ b/data/huge-league/players/Everglade_FC_3.json @@ -0,0 +1 @@ +{"number": 3, "name": "Brandon Jones", "age": 21, "nationality": "USA", "shirt_number": 3, "position": "Center Back", "preferred_foot": "Right", "role": "Starter", "team": "Everglade FC", "height_cm": 184, "weight_kg": 78, "overall_rating": 85, "is_injured": false, "form": 8, "goals": 2, "assists": 1, "yellow_cards": 3, "red_cards": 0, "bio": "Brandon Jones is a formidable Center Back known for his robust tackling and aerial dominance. With a fierce determination and an unwavering spirit, he anchors the Everglade FC defense while showcasing a remarkable ability to read the game. Hailing from the vibrant streets of Miami, his style is infused with the artistry of the wetlands, making him both a wall and a playmaker."} \ No newline at end of file diff --git a/data/huge-league/players/Everglade_FC_4.json b/data/huge-league/players/Everglade_FC_4.json new file mode 100644 index 0000000000000000000000000000000000000000..7c529091505d947aa1a4f72f67c621c8d96ec558 --- /dev/null +++ b/data/huge-league/players/Everglade_FC_4.json @@ -0,0 +1 @@ +{"number": 4, "name": "Zachary Garcia", "age": 29, "nationality": "USA", "shirt_number": 4, "position": "Center Back", "preferred_foot": "Right", "role": "Starter", "team": "Everglade FC", "height_cm": 182, "weight_kg": 78, "overall_rating": 85, "is_injured": false, "form": 8, "goals": 3, "assists": 1, "yellow_cards": 5, "red_cards": 0, "bio": "Zachary Garcia, a formidable Center Back, commands the pitch with a blend of tenacity and tactical acumen. Hailing from the bustling streets of Miami, he embodies the vibrant spirit of Everglade FC, often throwing himself into the fray to thwart attackers. With his trademark sliding tackles and keen sense of positioning, he remains a cornerstone of the defense, inspiring teammates with his unwavering hustle and determination."} \ No newline at end of file diff --git a/data/huge-league/players/Everglade_FC_5.json b/data/huge-league/players/Everglade_FC_5.json new file mode 100644 index 0000000000000000000000000000000000000000..c3186d8cbb337cc5e5f78183115fc39fc931a7e3 --- /dev/null +++ b/data/huge-league/players/Everglade_FC_5.json @@ -0,0 +1 @@ +{"number": 5, "name": "Brandon Hernandez", "age": 17, "nationality": "USA", "shirt_number": 5, "position": "Right Back", "preferred_foot": "Right", "role": "Starter", "team": "Everglade FC", "height_cm": 178, "weight_kg": 65, "overall_rating": 78, "is_injured": false, "form": 7, "goals": 2, "assists": 5, "yellow_cards": 3, "red_cards": 1, "bio": "Brandon Hernandez, a dynamic Right Back for Everglade FC, dazzles fans with his blistering pace and fearless tackles. Proud of his Miami roots, he embodies the bustling spirit of the Everglades, often igniting the pitch with his relentless energy and flair. At just 17, his maturity on the field is impressive, making him a vital part of the team\u2019s fast-paced play."} \ No newline at end of file diff --git a/data/huge-league/players/Everglade_FC_6.json b/data/huge-league/players/Everglade_FC_6.json new file mode 100644 index 0000000000000000000000000000000000000000..b79cffe12b2e69056e44929090d7eaf1dc0f93f8 --- /dev/null +++ b/data/huge-league/players/Everglade_FC_6.json @@ -0,0 +1 @@ +{"number": 6, "name": "Austin Jackson", "age": 23, "nationality": "USA", "shirt_number": 6, "position": "Defensive Mid", "preferred_foot": "Right", "role": "Starter", "team": "Everglade FC", "height_cm": 178, "weight_kg": 70, "overall_rating": 82, "is_injured": false, "form": 7, "goals": 5, "assists": 8, "yellow_cards": 3, "red_cards": 1, "bio": "Austin Jackson, a dynamic midfielder from the heart of Florida, embodies the spirited essence of Everglade FC. His lightning-fast footwork and tenacious tackling make him a formidable presence on the pitch. With roots deeply embedded in the wetlands, Austin plays with a blend of grit and flair, often turning defensive plays into thrilling counter-attacks that leave fans cheering and opponents bewildered."} \ No newline at end of file diff --git a/data/huge-league/players/Everglade_FC_7.json b/data/huge-league/players/Everglade_FC_7.json new file mode 100644 index 0000000000000000000000000000000000000000..6e8ca1f6d4d840de401b915b4f525b910051aff4 --- /dev/null +++ b/data/huge-league/players/Everglade_FC_7.json @@ -0,0 +1 @@ +{"number": 7, "name": "Ryan Williams", "age": 25, "nationality": "USA", "shirt_number": 7, "position": "Central Mid", "preferred_foot": "Right", "role": "Starter", "team": "Everglade FC", "height_cm": 178, "weight_kg": 75, "overall_rating": 85, "is_injured": false, "form": 8, "goals": 12, "assists": 10, "yellow_cards": 3, "red_cards": 1, "bio": "Ryan Williams, a dynamic central midfielder from the wetlands of Miami, embodies Everglade FC's electric style. Known for his dazzling footwork and fearless tackles, he masterfully orchestrates play while bringing a fiery passion to the pitch that inspires his teammates. His roots in the vibrant ecosystem shape his unpredictable game, making him a fan favorite and an essential starter for the team."} \ No newline at end of file diff --git a/data/huge-league/players/Everglade_FC_8.json b/data/huge-league/players/Everglade_FC_8.json new file mode 100644 index 0000000000000000000000000000000000000000..a3498144d193a1ad04815bbd3c9241aee0f2081f --- /dev/null +++ b/data/huge-league/players/Everglade_FC_8.json @@ -0,0 +1 @@ +{"number": 8, "name": "Nicholas Jackson", "age": 32, "nationality": "USA", "shirt_number": 8, "position": "Central Mid", "preferred_foot": "Right", "role": "Starter", "team": "Everglade FC", "height_cm": 178, "weight_kg": 76, "overall_rating": 85, "is_injured": false, "form": 7, "goals": 12, "assists": 15, "yellow_cards": 3, "red_cards": 1, "bio": "Nicholas Jackson, a dynamic Central Midfielder, is known for his razor-sharp passing and tenacious tackling. At 32 years old, he blends experience with youthful exuberance, mesmerizing fans with his flashy footwork and unyielding spirit on the field. Hailing from the vibrant landscapes of the USA, his infectious enthusiasm and flair embody the wild essence of Everglade FC, captivating the South Florida crowd with every touch."} \ No newline at end of file diff --git a/data/huge-league/players/Everglade_FC_9.json b/data/huge-league/players/Everglade_FC_9.json new file mode 100644 index 0000000000000000000000000000000000000000..ac49247e9bd59394dd0ffef5bbedbc7398d78ca9 --- /dev/null +++ b/data/huge-league/players/Everglade_FC_9.json @@ -0,0 +1 @@ +{"number": 9, "name": "Andrew Anderson", "age": 24, "nationality": "USA", "shirt_number": 9, "position": "Left Wing", "preferred_foot": "Right", "role": "Starter", "team": "Everglade FC", "height_cm": 178, "weight_kg": 75, "overall_rating": 85, "is_injured": false, "form": 8, "goals": 12, "assists": 10, "yellow_cards": 2, "red_cards": 0, "bio": "Andrew Anderson, a 24-year-old virtuoso of the pitch, dances down the left wing with an electrifying agility that mirrors the swaying of Everglade marshes. Known for his explosive speed and pinpoint crosses, he embodies the fiery spirit of Miami, leaving defenders in his wake while maintaining a relentless drive to conquer every game."} \ No newline at end of file diff --git a/data/huge-league/players/Fraser_Valley_United_1.json b/data/huge-league/players/Fraser_Valley_United_1.json new file mode 100644 index 0000000000000000000000000000000000000000..76ee56240beb1f87ff771c2a45b9fd11c076c596 --- /dev/null +++ b/data/huge-league/players/Fraser_Valley_United_1.json @@ -0,0 +1 @@ +{"number": 1, "name": "Noah Martin", "age": 21, "nationality": "Canada", "shirt_number": 1, "position": "Goalkeeper", "preferred_foot": "Left", "role": "Starter", "team": "Fraser Valley United", "height_cm": 186, "weight_kg": 82, "overall_rating": 75, "is_injured": false, "form": 8, "goals": 0, "assists": 0, "yellow_cards": 1, "red_cards": 0, "bio": "Noah Martin is a dynamic goalkeeper known for his cat-like reflexes and commanding presence in the box. Hailing from Abbotsford, he embodies the spirit of Fraser Valley United, displaying a fearless attitude and unwavering dedication. A left-footed kicker, he often surprises opponents with precision goal kicks and adept ball distribution, making him a key asset in transitioning from defense to attack."} \ No newline at end of file diff --git a/data/huge-league/players/Fraser_Valley_United_10.json b/data/huge-league/players/Fraser_Valley_United_10.json new file mode 100644 index 0000000000000000000000000000000000000000..afb8c353cef7152d727bc1b2d720baeedeca4fe3 --- /dev/null +++ b/data/huge-league/players/Fraser_Valley_United_10.json @@ -0,0 +1 @@ +{"number": 10, "name": "Thomas Walker", "age": 30, "nationality": "Canada", "shirt_number": 10, "position": "Striker", "preferred_foot": "Left", "role": "Starter", "team": "Fraser Valley United", "height_cm": 182, "weight_kg": 78, "overall_rating": 85, "is_injured": false, "form": 8, "goals": 22, "assists": 10, "yellow_cards": 3, "red_cards": 0, "bio": "Thomas Walker, a dynamic striker from Canada, combines speed and precision with a keen eye for goal. Known for his powerful left-footed shots, he is a constant threat in the box. His leadership on the pitch is matched only by his unyielding determination, making him a fan favorite in Abbotsford."} \ No newline at end of file diff --git a/data/huge-league/players/Fraser_Valley_United_11.json b/data/huge-league/players/Fraser_Valley_United_11.json new file mode 100644 index 0000000000000000000000000000000000000000..6bcf079a67bb472c12042f2e11f102f9757fdca5 --- /dev/null +++ b/data/huge-league/players/Fraser_Valley_United_11.json @@ -0,0 +1 @@ +{"number": 11, "name": "Lucas Harris", "age": 32, "nationality": "Canada", "shirt_number": 11, "position": "Right Wing", "preferred_foot": "Left", "role": "Starter", "team": "Fraser Valley United", "height_cm": 178, "weight_kg": 75, "overall_rating": 88, "is_injured": false, "form": 7, "goals": 12, "assists": 9, "yellow_cards": 3, "red_cards": 1, "bio": "Lucas Harris, a dynamic right winger from Canada, captivates fans with his electrifying speed and pinpoint crossing ability. With a fierce competitive spirit, he embodies the heart of Fraser Valley United, navigating the pitch with a signature left-footed finesse. His journey from the vineyards of Abbotsford to the professional arena showcases his relentless dedication and sharp tactical awareness, making him a standout player in the league."} \ No newline at end of file diff --git a/data/huge-league/players/Fraser_Valley_United_12.json b/data/huge-league/players/Fraser_Valley_United_12.json new file mode 100644 index 0000000000000000000000000000000000000000..e853f7de18da4c34125f2b48b32dcd6783915880 --- /dev/null +++ b/data/huge-league/players/Fraser_Valley_United_12.json @@ -0,0 +1 @@ +{"number": 12, "name": "Mason Lee", "age": 21, "nationality": "Canada", "shirt_number": 12, "position": "Goalkeeper", "preferred_foot": "Right", "role": "Bench", "team": "Fraser Valley United", "height_cm": 185, "weight_kg": 78, "overall_rating": 76, "is_injured": false, "form": 8, "goals": 0, "assists": 0, "yellow_cards": 1, "red_cards": 0, "bio": "Mason Lee, a dynamic goalkeeper known for his lightning reflexes and commanding presence in the box, embodies the spirit of Fraser Valley United. Raised amidst the vineyards of Abbotsford, he combines rural grit with a sophisticated understanding of the game, often pulling off miraculous saves that leave fans in awe. His passion for soccer is matched only by his unwavering determination to elevate the Canadian talent pool."} \ No newline at end of file diff --git a/data/huge-league/players/Fraser_Valley_United_13.json b/data/huge-league/players/Fraser_Valley_United_13.json new file mode 100644 index 0000000000000000000000000000000000000000..e11534871f953beb45a56428b00dc4e0256125a9 --- /dev/null +++ b/data/huge-league/players/Fraser_Valley_United_13.json @@ -0,0 +1 @@ +{"number": 13, "name": "Carter Lee", "age": 24, "nationality": "Canada", "shirt_number": 13, "position": "Center Back", "preferred_foot": "Right", "role": "Bench", "team": "Fraser Valley United", "height_cm": 182, "weight_kg": 80, "overall_rating": 75, "is_injured": false, "form": 8, "goals": 2, "assists": 1, "yellow_cards": 3, "red_cards": 0, "bio": "Carter Lee, a dynamic Center Back from Canada, showcases a fierce determination and an unmatched ability to read the game. Known for his aerial prowess and tenacity in tackles, he commands the backline with a presence that intimidates forwards. His journey from rural roots to professional soccer is marked by relentless hard work and an unwavering team spirit, making him a pivotal player for Fraser Valley United."} \ No newline at end of file diff --git a/data/huge-league/players/Fraser_Valley_United_14.json b/data/huge-league/players/Fraser_Valley_United_14.json new file mode 100644 index 0000000000000000000000000000000000000000..6a4abec3c22ef9af7a4ea57cbde879bbb1f7c8c1 --- /dev/null +++ b/data/huge-league/players/Fraser_Valley_United_14.json @@ -0,0 +1 @@ +{"number": 14, "name": "William Harris", "age": 23, "nationality": "Canada", "shirt_number": 14, "position": "Full Back", "preferred_foot": "Right", "role": "Bench", "team": "Fraser Valley United", "height_cm": 178, "weight_kg": 75, "overall_rating": 82, "is_injured": false, "form": 7, "goals": 3, "assists": 5, "yellow_cards": 2, "red_cards": 0, "bio": "William Harris, a dynamic full back from Canada, is known for his lightning-fast sprints down the flank and impeccable tackling skills. With a tenacious attitude and a keen eye for creating plays, he seamlessly integrates defense and attack. His roots in the Fraser Valley reflect in his dedication and work ethic, making him a fan favorite and a pivotal asset to Fraser Valley United."} \ No newline at end of file diff --git a/data/huge-league/players/Fraser_Valley_United_15.json b/data/huge-league/players/Fraser_Valley_United_15.json new file mode 100644 index 0000000000000000000000000000000000000000..f5f5bc2e1f80eeaeb03c0687bab0ad35775d8640 --- /dev/null +++ b/data/huge-league/players/Fraser_Valley_United_15.json @@ -0,0 +1 @@ +{"number": 15, "name": "Aiden Brown", "age": 17, "nationality": "Canada", "shirt_number": 15, "position": "Defensive Mid", "preferred_foot": "Left", "role": "Bench", "team": "Fraser Valley United", "height_cm": 178, "weight_kg": 72, "overall_rating": 85, "is_injured": false, "form": 8, "goals": 5, "assists": 10, "yellow_cards": 3, "red_cards": 1, "bio": "Aiden Brown, hailing from the scenic landscapes of Abbotsford, is a dynamic defensive mid known for his tenacity and vision on the field. With an elegant left foot, he often orchestrates play from deep positions, making him a linchpin in Fraser Valley United's midfield. His fearless attitude and commitment to the team have made him a crowd favorite, often seen breaking up opposition attacks and launching quick counterplays."} \ No newline at end of file diff --git a/data/huge-league/players/Fraser_Valley_United_16.json b/data/huge-league/players/Fraser_Valley_United_16.json new file mode 100644 index 0000000000000000000000000000000000000000..efc63a0097250e957ec21523e8d4714325e2c916 --- /dev/null +++ b/data/huge-league/players/Fraser_Valley_United_16.json @@ -0,0 +1 @@ +{"number": 16, "name": "Logan Clark", "age": 26, "nationality": "Canada", "shirt_number": 16, "position": "Central Mid", "preferred_foot": "Right", "role": "Bench", "team": "Fraser Valley United", "height_cm": 178, "weight_kg": 73, "overall_rating": 85, "is_injured": false, "form": 7, "goals": 12, "assists": 8, "yellow_cards": 3, "red_cards": 1, "bio": "Logan Clark, a dynamic central midfielder, thrives on the pitch with his vision and precise passing. Hailing from the serene landscapes of rural British Columbia, he embodies the spirit of Fraser Valley United. Known for his relentless work ethic and ability to dictate the tempo of the game, Logan is a fan favorite, often dazzling spectators with his cheeky nutmegs and long-range strikes."} \ No newline at end of file diff --git a/data/huge-league/players/Fraser_Valley_United_17.json b/data/huge-league/players/Fraser_Valley_United_17.json new file mode 100644 index 0000000000000000000000000000000000000000..7f36f77f2eff84718ffdfb88dfb8432d877d7745 --- /dev/null +++ b/data/huge-league/players/Fraser_Valley_United_17.json @@ -0,0 +1 @@ +{"number": 17, "name": "Owen Campbell", "age": 23, "nationality": "Canada", "shirt_number": 17, "position": "Attacking Mid", "preferred_foot": "Right", "role": "Bench", "team": "Fraser Valley United", "height_cm": 178, "weight_kg": 70, "overall_rating": 82, "is_injured": false, "form": 8, "goals": 5, "assists": 10, "yellow_cards": 2, "red_cards": 0, "bio": "Owen Campbell is a dynamic attacking midfielder known for his exceptional vision and precise passing. Hailing from the heart of Canada, he combines technical skill with a relentless work ethic. His knack for turning defense into attack swiftly has made him a key asset for Fraser Valley United, where he seamlessly integrates creativity and strategy, thrilling fans with his playmaking prowess."} \ No newline at end of file diff --git a/data/huge-league/players/Fraser_Valley_United_18.json b/data/huge-league/players/Fraser_Valley_United_18.json new file mode 100644 index 0000000000000000000000000000000000000000..9ee33058466cedade25e9cc9732b3db37cfb4da7 --- /dev/null +++ b/data/huge-league/players/Fraser_Valley_United_18.json @@ -0,0 +1 @@ +{"number": 18, "name": "Thomas Walker", "age": 32, "nationality": "Canada", "shirt_number": 18, "position": "Forward/Winger", "preferred_foot": "Right", "role": "Bench", "team": "Fraser Valley United", "height_cm": 180, "weight_kg": 75, "overall_rating": 78, "is_injured": false, "form": 7, "goals": 12, "assists": 8, "yellow_cards": 3, "red_cards": 1, "bio": "A dynamic forward with a fierce right foot, Thomas Walker thrives on the wing, using his blistering speed to outpace defenders. Known for his relentless work ethic and tactical awareness, he brings a spark to Fraser Valley United, often turning matches with his flair and creativity. Hailing from the picturesque landscapes of Canada, his journey reflects a blend of rural grit and urban sophistication."} \ No newline at end of file diff --git a/data/huge-league/players/Fraser_Valley_United_19.json b/data/huge-league/players/Fraser_Valley_United_19.json new file mode 100644 index 0000000000000000000000000000000000000000..0945e127e11cf48bf8f245ce18d7f952c92d7266 --- /dev/null +++ b/data/huge-league/players/Fraser_Valley_United_19.json @@ -0,0 +1 @@ +{"number": 19, "name": "Elijah Gagnon", "age": 23, "nationality": "Canada", "shirt_number": 19, "position": "Striker", "preferred_foot": "Right", "role": "Bench", "team": "Fraser Valley United", "height_cm": 183, "weight_kg": 78, "overall_rating": 76, "is_injured": false, "form": 7, "goals": 12, "assists": 5, "yellow_cards": 3, "red_cards": 0, "bio": "Elijah Gagnon, a 23-year-old striker from Canada, possesses an explosive speed and keen eye for goal. His ability to find space and create opportunities for himself and teammates makes him a standout player. Hailing from the scenic Fraser Valley, he brings a combination of technical skill and rural determination to the pitch, often leaving defenders trailing in his wake with his signature swift dribbles and accurate finishing."} \ No newline at end of file diff --git a/data/huge-league/players/Fraser_Valley_United_2.json b/data/huge-league/players/Fraser_Valley_United_2.json new file mode 100644 index 0000000000000000000000000000000000000000..62b6da13f52ab593eeafc8f6ecad76bc07bc9a82 --- /dev/null +++ b/data/huge-league/players/Fraser_Valley_United_2.json @@ -0,0 +1 @@ +{"number": 2, "name": "Liam Thompson", "age": 23, "nationality": "Canada", "shirt_number": 2, "position": "Left Back", "preferred_foot": "Right", "role": "Starter", "team": "Fraser Valley United", "height_cm": 178, "weight_kg": 74, "overall_rating": 82, "is_injured": false, "form": 7, "goals": 3, "assists": 5, "yellow_cards": 2, "red_cards": 0, "bio": "Liam Thompson is a dynamic left-back known for his relentless pace and tactical awareness. Originating from the diverse landscapes of Canada, he embodies a blend of resilience and finesse on the pitch. His signature move, an overlapping run down the flank, consistently catches opponents off guard. With an unwavering spirit and strong leadership qualities, Liam has quickly become a fan favorite in Fraser Valley United's journey to elevate Canadian soccer."} \ No newline at end of file diff --git a/data/huge-league/players/Fraser_Valley_United_20.json b/data/huge-league/players/Fraser_Valley_United_20.json new file mode 100644 index 0000000000000000000000000000000000000000..748b1b0d48e78892ae4266e75cb0884d32eb87d2 --- /dev/null +++ b/data/huge-league/players/Fraser_Valley_United_20.json @@ -0,0 +1 @@ +{"number": 20, "name": "Thomas MacDonald", "age": 21, "nationality": "Canada", "shirt_number": 20, "position": "Left Wing", "preferred_foot": "Right", "role": "Bench", "team": "Fraser Valley United", "height_cm": 182, "weight_kg": 76, "overall_rating": 85, "is_injured": false, "form": 8, "goals": 12, "assists": 10, "yellow_cards": 3, "red_cards": 1, "bio": "Thomas MacDonald, the Left Wing sensation from Canada, dances down the flank with unparalleled agility. His right foot strikes fear into opposing defenders, showcasing his knack for precise crosses and dazzling dribbles. Born and raised amidst the picturesque landscapes of British Columbia, he embodies the spirit of Fraser Valley United, blending rural grit with technical finesse. With an infectious work ethic and a charismatic presence, Thomas is not just a player; he's a beacon of hope for aspiring young talents."} \ No newline at end of file diff --git a/data/huge-league/players/Fraser_Valley_United_21.json b/data/huge-league/players/Fraser_Valley_United_21.json new file mode 100644 index 0000000000000000000000000000000000000000..a1ec61fca63356a974bb16acff2db58ae219262c --- /dev/null +++ b/data/huge-league/players/Fraser_Valley_United_21.json @@ -0,0 +1 @@ +{"number": 21, "name": "Jacob Gagnon", "age": 23, "nationality": "Canada", "shirt_number": 21, "position": "Right Wing", "preferred_foot": "Right", "role": "Bench", "team": "Fraser Valley United", "height_cm": 178, "weight_kg": 75, "overall_rating": 82, "is_injured": false, "form": 7, "goals": 12, "assists": 8, "yellow_cards": 3, "red_cards": 1, "bio": "Hailing from the picturesque vineyards of Abbotsford, Jacob Gagnon is known for his explosive speed and pinpoint accuracy on the right wing. His agile footwork and relentless drive make him a nightmare for defenders. With a positive attitude and fierce competitiveness, he embodies the spirit of Fraser Valley United, showcasing a blend of raw talent and tactical intelligence."} \ No newline at end of file diff --git a/data/huge-league/players/Fraser_Valley_United_22.json b/data/huge-league/players/Fraser_Valley_United_22.json new file mode 100644 index 0000000000000000000000000000000000000000..ca898797fcdebcd59d25cbfd461250210bf2f535 --- /dev/null +++ b/data/huge-league/players/Fraser_Valley_United_22.json @@ -0,0 +1 @@ +{"number": 22, "name": "William Taylor", "age": 27, "nationality": "Canada", "shirt_number": 22, "position": "Various", "preferred_foot": "Left", "role": "Reserve/Prospect", "team": "Fraser Valley United", "height_cm": 178, "weight_kg": 75, "overall_rating": 78, "is_injured": false, "form": 8, "goals": 15, "assists": 10, "yellow_cards": 2, "red_cards": 0, "bio": "William Taylor, a dynamic left-footed midfielder, is known for his exceptional vision and ability to dictate the pace of the game. With roots in the calm landscapes of Canada, he blends rural resilience with urban flair on the pitch. His signature moves often leave defenders guessing, while his team spirit and leadership qualities make him a standout prospect for Fraser Valley United."} \ No newline at end of file diff --git a/data/huge-league/players/Fraser_Valley_United_23.json b/data/huge-league/players/Fraser_Valley_United_23.json new file mode 100644 index 0000000000000000000000000000000000000000..588496bb4288b642a241473ef29759d1be35c0ad --- /dev/null +++ b/data/huge-league/players/Fraser_Valley_United_23.json @@ -0,0 +1 @@ +{"number": 23, "name": "Aiden Campbell", "age": 17, "nationality": "Canada", "shirt_number": 23, "position": "Various", "preferred_foot": "Left", "role": "Reserve/Prospect", "team": "Fraser Valley United", "height_cm": 178, "weight_kg": 72, "overall_rating": 80, "is_injured": false, "form": 7, "goals": 12, "assists": 8, "yellow_cards": 3, "red_cards": 0, "bio": "Aiden Campbell, at just 17, dazzles on the field with his agile footwork and keen eye for spotting opportunities. His left foot is lethal, capable of bending the ball around defenders with ease. Growing up in the lush landscapes of Abbotsford, he embodies the spirit of Fraser Valley United, weaving rural pride into every match. Known for his relentless determination, Aiden is a promising prospect who plays with an infectious enthusiasm that rallies his teammates."} \ No newline at end of file diff --git a/data/huge-league/players/Fraser_Valley_United_3.json b/data/huge-league/players/Fraser_Valley_United_3.json new file mode 100644 index 0000000000000000000000000000000000000000..d64459d506af56ddece9c607554f19e883c90934 --- /dev/null +++ b/data/huge-league/players/Fraser_Valley_United_3.json @@ -0,0 +1 @@ +{"number": 3, "name": "Dylan Tremblay", "age": 30, "nationality": "Canada", "shirt_number": 3, "position": "Center Back", "preferred_foot": "Right", "role": "Starter", "team": "Fraser Valley United", "height_cm": 185, "weight_kg": 80, "overall_rating": 84, "is_injured": false, "form": 8, "goals": 3, "assists": 1, "yellow_cards": 4, "red_cards": 0, "bio": "A resolute center back from Canada, Dylan Tremblay excels in aerial duels and displays remarkable composure under pressure. Known for his tactical awareness and leadership qualities, he embodies the spirit of Fraser Valley United, inspiring his teammates with his relentless work ethic and determination on the pitch."} \ No newline at end of file diff --git a/data/huge-league/players/Fraser_Valley_United_4.json b/data/huge-league/players/Fraser_Valley_United_4.json new file mode 100644 index 0000000000000000000000000000000000000000..961d23358e3336e3166a20f3e9c42590acfbceb9 --- /dev/null +++ b/data/huge-league/players/Fraser_Valley_United_4.json @@ -0,0 +1 @@ +{"number": 4, "name": "Jacob Thompson", "age": 23, "nationality": "Canada", "shirt_number": 4, "position": "Center Back", "preferred_foot": "Left", "role": "Starter", "team": "Fraser Valley United", "height_cm": 185, "weight_kg": 78, "overall_rating": 82, "is_injured": false, "form": 7, "goals": 3, "assists": 2, "yellow_cards": 5, "red_cards": 0, "bio": "A commanding presence on the pitch, Jacob Thompson excels in aerial duels and tackles, often acting as the backbone of the defense. Hailing from the scenic vineyards of Abbotsford, his leadership is evident not only in his play but also in his unwavering determination to inspire teammates. Known for his precise long passes and tactical awareness, he embodies the spirit and tenacity of Fraser Valley United."} \ No newline at end of file diff --git a/data/huge-league/players/Fraser_Valley_United_5.json b/data/huge-league/players/Fraser_Valley_United_5.json new file mode 100644 index 0000000000000000000000000000000000000000..eeb4b5dca2ce60d1212290ed26c314048483822d --- /dev/null +++ b/data/huge-league/players/Fraser_Valley_United_5.json @@ -0,0 +1 @@ +{"number": 5, "name": "Aiden Smith", "age": 27, "nationality": "Canada", "shirt_number": 5, "position": "Right Back", "preferred_foot": "Left", "role": "Starter", "team": "Fraser Valley United", "height_cm": 182, "weight_kg": 78, "overall_rating": 85, "is_injured": false, "form": 7, "goals": 3, "assists": 5, "yellow_cards": 2, "red_cards": 0, "bio": "Aiden Smith is a dynamic right back known for his fierce tackling and relentless work ethic on the pitch. Hailing from the picturesque landscapes of British Columbia, he embodies both rural resilience and urban sophistication. His ability to read the game allows him to initiate counter-attacks quickly, making him a valuable asset to Fraser Valley United. Aiden's left foot delivers precise crosses, often setting up scoring opportunities for his teammates, solidifying his role as a cornerstone of the team's defense."} \ No newline at end of file diff --git a/data/huge-league/players/Fraser_Valley_United_6.json b/data/huge-league/players/Fraser_Valley_United_6.json new file mode 100644 index 0000000000000000000000000000000000000000..518e42fe0f856f742dc43667ee049368ac68230b --- /dev/null +++ b/data/huge-league/players/Fraser_Valley_United_6.json @@ -0,0 +1 @@ +{"number": 6, "name": "Logan Gagnon", "age": 31, "nationality": "Canada", "shirt_number": 6, "position": "Defensive Mid", "preferred_foot": "Right", "role": "Starter", "team": "Fraser Valley United", "height_cm": 180, "weight_kg": 75, "overall_rating": 82, "is_injured": false, "form": 8, "goals": 5, "assists": 10, "yellow_cards": 3, "red_cards": 1, "bio": "Logan Gagnon, a stalwart defensive midfielder from Canada, combines tactical intelligence with a fierce competitive spirit. Known for his relentless work rate and precise passing, he thrives in high-pressure situations. With roots in the rugged terrains of rural British Columbia, Logan embodies the heart and tenacity of Fraser Valley United, consistently driving his teammates to excel."} \ No newline at end of file diff --git a/data/huge-league/players/Fraser_Valley_United_7.json b/data/huge-league/players/Fraser_Valley_United_7.json new file mode 100644 index 0000000000000000000000000000000000000000..a8d870796b0692b2d3fa769f8d07e68ce5357547 --- /dev/null +++ b/data/huge-league/players/Fraser_Valley_United_7.json @@ -0,0 +1 @@ +{"number": 7, "name": "Thomas Brown", "age": 30, "nationality": "Canada", "shirt_number": 7, "position": "Central Mid", "preferred_foot": "Left", "role": "Starter", "team": "Fraser Valley United", "height_cm": 182, "weight_kg": 75, "overall_rating": 85, "is_injured": false, "form": 7, "goals": 12, "assists": 15, "yellow_cards": 3, "red_cards": 0, "bio": "Thomas Brown is a dynamic central midfielder known for his exceptional vision and precise passing. With a fierce left foot, he commands the midfield, orchestrating plays that highlight his playmaking ability. Born and raised in the heart of Vancouver, his dedication shines through in every match, where he combines grit with creativity, making him a fan favorite among the Fraser Valley United supporters."} \ No newline at end of file diff --git a/data/huge-league/players/Fraser_Valley_United_8.json b/data/huge-league/players/Fraser_Valley_United_8.json new file mode 100644 index 0000000000000000000000000000000000000000..e8b6ecb0fb56de9c6b0b355f1771c34064c0686f --- /dev/null +++ b/data/huge-league/players/Fraser_Valley_United_8.json @@ -0,0 +1 @@ +{"number": 8, "name": "Mason Walker", "age": 21, "nationality": "Canada", "shirt_number": 8, "position": "Central Mid", "preferred_foot": "Left", "role": "Starter", "team": "Fraser Valley United", "height_cm": 182, "weight_kg": 75, "overall_rating": 85, "is_injured": false, "form": 8, "goals": 12, "assists": 15, "yellow_cards": 3, "red_cards": 0, "bio": "Mason Walker is a dynamic central midfielder known for his exceptional passing range and vision on the pitch. Hailing from the scenic landscapes of British Columbia, he blends technical skill with a relentless work ethic, making him a fan favorite. His left foot is a weapon, capable of delivering pinpoint crosses and stunning long-range strikes, while his leadership qualities inspire teammates. Walker's knack for creating chances has made him a key player for Fraser Valley United."} \ No newline at end of file diff --git a/data/huge-league/players/Fraser_Valley_United_9.json b/data/huge-league/players/Fraser_Valley_United_9.json new file mode 100644 index 0000000000000000000000000000000000000000..6c5e66d38821f1a15d6305605ebfbe203b4605fe --- /dev/null +++ b/data/huge-league/players/Fraser_Valley_United_9.json @@ -0,0 +1 @@ +{"number": 9, "name": "Dylan Walker", "age": 30, "nationality": "Canada", "shirt_number": 9, "position": "Left Wing", "preferred_foot": "Right", "role": "Starter", "team": "Fraser Valley United", "height_cm": 178, "weight_kg": 75, "overall_rating": 85, "is_injured": false, "form": 8, "goals": 15, "assists": 10, "yellow_cards": 3, "red_cards": 1, "bio": "Dylan Walker is a dynamic left winger known for his lightning speed and precise dribbling. Hailing from the vineyards of Abbotsford, he embodies the spirit of Fraser Valley United, bringing a blend of rural charm and relentless determination to the pitch. His ability to create scoring opportunities and deliver pinpoint crosses makes him a fan favorite, while his competitive attitude inspires his teammates to elevate their game."} \ No newline at end of file diff --git a/data/huge-league/players/Tierra_Alta_FC_1.json b/data/huge-league/players/Tierra_Alta_FC_1.json new file mode 100644 index 0000000000000000000000000000000000000000..e16ca4af473cb8be89c254c80488f582c98e0152 --- /dev/null +++ b/data/huge-league/players/Tierra_Alta_FC_1.json @@ -0,0 +1 @@ +{"number": 1, "name": "Marco Araya", "age": 17, "nationality": "Costa Rica", "shirt_number": 1, "position": "Goalkeeper", "preferred_foot": "Left", "role": "Starter", "team": "Tierra Alta FC", "height_cm": 185, "weight_kg": 75, "overall_rating": 82, "is_injured": false, "form": 8, "goals": 0, "assists": 0, "yellow_cards": 2, "red_cards": 0, "bio": "Marco Araya is a young, dynamic goalkeeper known for his lightning-fast reflexes and commanding presence in the box. Hailing from the vibrant highlands of Costa Rica, he embodies the spirit of sustainability championed by Tierra Alta FC. With an unwavering attitude and a knack for making crucial saves, Marco is determined to leave his mark on the pitch."} \ No newline at end of file diff --git a/data/huge-league/players/Tierra_Alta_FC_10.json b/data/huge-league/players/Tierra_Alta_FC_10.json new file mode 100644 index 0000000000000000000000000000000000000000..2b55ba88fdf5d2ab8faa751f3d312f70f2e50331 --- /dev/null +++ b/data/huge-league/players/Tierra_Alta_FC_10.json @@ -0,0 +1 @@ +{"number": 10, "name": "Felipe Z\u00fa\u00f1iga", "age": 25, "nationality": "Costa Rica", "shirt_number": 10, "position": "Striker", "preferred_foot": "Right", "role": "Starter", "team": "Tierra Alta FC", "height_cm": 178, "weight_kg": 75, "overall_rating": 88, "is_injured": false, "form": 8, "goals": 15, "assists": 7, "yellow_cards": 3, "red_cards": 0, "bio": "Felipe Z\u00fa\u00f1iga, a dynamic striker from Costa Rica, dazzles with his agility and clinical finishing. Known for his fierce determination and tactical acumen, he often finds the back of the net from impossible angles. With a passion rooted in the lush landscapes of San Jos\u00e9, he plays each match with a zealous spirit that resonates with Tierra Alta FC's commitment to excellence."} \ No newline at end of file diff --git a/data/huge-league/players/Tierra_Alta_FC_11.json b/data/huge-league/players/Tierra_Alta_FC_11.json new file mode 100644 index 0000000000000000000000000000000000000000..1064ff2b6cba19a1704e3a319a4aafd7c103db63 --- /dev/null +++ b/data/huge-league/players/Tierra_Alta_FC_11.json @@ -0,0 +1 @@ +{"number": 11, "name": "Gabriel Fonseca", "age": 30, "nationality": "Costa Rica", "shirt_number": 11, "position": "Right Wing", "preferred_foot": "Right", "role": "Starter", "team": "Tierra Alta FC", "height_cm": 178, "weight_kg": 72, "overall_rating": 85, "is_injured": false, "form": 8, "goals": 22, "assists": 15, "yellow_cards": 3, "red_cards": 1, "bio": "Gabriel Fonseca, a vibrant Right Wing, dazzles crowds with his blistering pace and deft touches. Born in the lush landscapes of Costa Rica, he brings not only skill but a passionate flair to each match, embodying the spirit of Tierra Alta FC. A formidable playmaker, he is known for his deadly crosses and an unyielding determination to uplift his team, always pushing boundaries on the pitch."} \ No newline at end of file diff --git a/data/huge-league/players/Tierra_Alta_FC_12.json b/data/huge-league/players/Tierra_Alta_FC_12.json new file mode 100644 index 0000000000000000000000000000000000000000..e868936808d92504290df6cea4c129078d482cc1 --- /dev/null +++ b/data/huge-league/players/Tierra_Alta_FC_12.json @@ -0,0 +1 @@ +{"number": 12, "name": "Alonso Camacho", "age": 26, "nationality": "Costa Rica", "shirt_number": 12, "position": "Goalkeeper", "preferred_foot": "Left", "role": "Bench", "team": "Tierra Alta FC", "height_cm": 185, "weight_kg": 78, "overall_rating": 82, "is_injured": false, "form": 7, "goals": 0, "assists": 0, "yellow_cards": 1, "red_cards": 0, "bio": "Alonso Camacho, standing tall at 185 cm, commands the goal with a blend of agility and strong presence. His left foot is legendary for precision kicking, often launching counter-attacks. Hailing from the lush landscapes of Costa Rica, he embodies resilience and dedication on the pitch, making crucial saves that ignite the crowd's spirit."} \ No newline at end of file diff --git a/data/huge-league/players/Tierra_Alta_FC_13.json b/data/huge-league/players/Tierra_Alta_FC_13.json new file mode 100644 index 0000000000000000000000000000000000000000..c658c1c6077dee97b92fe227e6db5629c4ba11da --- /dev/null +++ b/data/huge-league/players/Tierra_Alta_FC_13.json @@ -0,0 +1 @@ +{"number": 13, "name": "Carlos P\u00e9rez", "age": 27, "nationality": "Costa Rica", "shirt_number": 13, "position": "Center Back", "preferred_foot": "Right", "role": "Bench", "team": "Tierra Alta FC", "height_cm": 185, "weight_kg": 80, "overall_rating": 78, "is_injured": false, "form": 7, "goals": 1, "assists": 2, "yellow_cards": 3, "red_cards": 0, "bio": "Carlos P\u00e9rez, a steadfast Center Back from Costa Rica, embodies resilience and tactical prowess on the pitch. Known for his towering presence and quick decision-making, he excels in intercepting passes and organizing the defense. Growing up amidst the lush landscapes of San Jos\u00e9, his commitment to sustainability mirrors that of Tierra Alta FC, making him an invaluable asset both on and off the field."} \ No newline at end of file diff --git a/data/huge-league/players/Tierra_Alta_FC_14.json b/data/huge-league/players/Tierra_Alta_FC_14.json new file mode 100644 index 0000000000000000000000000000000000000000..d6e54fb793325458c41c3a018adf0ef8aa303633 --- /dev/null +++ b/data/huge-league/players/Tierra_Alta_FC_14.json @@ -0,0 +1 @@ +{"number": 14, "name": "Erick Z\u00fa\u00f1iga", "age": 32, "nationality": "Costa Rica", "shirt_number": 14, "position": "Full Back", "preferred_foot": "Right", "role": "Bench", "team": "Tierra Alta FC", "height_cm": 180, "weight_kg": 75, "overall_rating": 82, "is_injured": false, "form": 7, "goals": 5, "assists": 12, "yellow_cards": 3, "red_cards": 0, "bio": "Erick Z\u00fa\u00f1iga, the agile full back from Costa Rica, is known for his relentless stamina and exceptional crossing ability. With a blend of tactical intelligence and true passion for football, he fearlessly engages in both defensive duties and offensive support, making him a vital player on the pitch. His roots in the lush landscapes of San Jos\u00e9 deeply influence his playing style, embodying the spirit of Tierra Alta FC."} \ No newline at end of file diff --git a/data/huge-league/players/Tierra_Alta_FC_15.json b/data/huge-league/players/Tierra_Alta_FC_15.json new file mode 100644 index 0000000000000000000000000000000000000000..2f92f55142d7d784d836a964e374057a7d9300d2 --- /dev/null +++ b/data/huge-league/players/Tierra_Alta_FC_15.json @@ -0,0 +1 @@ +{"number": 15, "name": "Cristian Salazar", "age": 22, "nationality": "Costa Rica", "shirt_number": 15, "position": "Defensive Mid", "preferred_foot": "Left", "role": "Bench", "team": "Tierra Alta FC", "height_cm": 178, "weight_kg": 70, "overall_rating": 78, "is_injured": false, "form": 7, "goals": 3, "assists": 5, "yellow_cards": 2, "red_cards": 0, "bio": "Cristian Salazar thrives in the heart of the midfield, known for his pinpoint tackles and relentless drive. With a keen soccer IQ and an attacking mindset, he effortlessly transitions from defense to support, showcasing his left foot's prowess in set pieces. Hailing from the lush landscapes of Costa Rica, he embodies the spirit of sustainability, reflecting Tierra Alta FC\u2019s commitment to preservation both on and off the pitch."} \ No newline at end of file diff --git a/data/huge-league/players/Tierra_Alta_FC_16.json b/data/huge-league/players/Tierra_Alta_FC_16.json new file mode 100644 index 0000000000000000000000000000000000000000..6ce2e3f619dba1f003a60f617cb52a78136fd070 --- /dev/null +++ b/data/huge-league/players/Tierra_Alta_FC_16.json @@ -0,0 +1 @@ +{"number": 16, "name": "Daniel Araya", "age": 24, "nationality": "Costa Rica", "shirt_number": 16, "position": "Central Mid", "preferred_foot": "Left", "role": "Bench", "team": "Tierra Alta FC", "height_cm": 178, "weight_kg": 72, "overall_rating": 76, "is_injured": false, "form": 7, "goals": 5, "assists": 8, "yellow_cards": 3, "red_cards": 1, "bio": "Daniel Araya is a tenacious midfielder known for his exceptional vision and playmaking ability. Originating from the vibrant landscapes of Costa Rica, he combines a fierce competitive spirit with an artistic flair on the ball, often leaving defenders in his wake with his signature left-footed passes. His relentless work ethic and tactical intelligence make him a vital asset for Tierra Alta FC, inspiring his teammates with every match."} \ No newline at end of file diff --git a/data/huge-league/players/Tierra_Alta_FC_17.json b/data/huge-league/players/Tierra_Alta_FC_17.json new file mode 100644 index 0000000000000000000000000000000000000000..7b39d45005e7f4051be333a7157c3c748bf1ded0 --- /dev/null +++ b/data/huge-league/players/Tierra_Alta_FC_17.json @@ -0,0 +1 @@ +{"number": 17, "name": "Carlos Solano", "age": 29, "nationality": "Costa Rica", "shirt_number": 17, "position": "Attacking Mid", "preferred_foot": "Right", "role": "Bench", "team": "Tierra Alta FC", "height_cm": 175, "weight_kg": 70, "overall_rating": 84, "is_injured": false, "form": 7, "goals": 12, "assists": 18, "yellow_cards": 5, "red_cards": 1, "bio": "Carlos Solano, a 29-year-old attacking midfielder from Costa Rica, dazzles on the field with his quick dribbling and pinpoint passes. Known for his tactical intelligence and relentless energy, he often orchestrates plays that leave the opposition guessing. A fan favorite at Tierra Alta FC, his passion for sustainability reflects both in his game and outside, making him a symbol of the team's green values."} \ No newline at end of file diff --git a/data/huge-league/players/Tierra_Alta_FC_18.json b/data/huge-league/players/Tierra_Alta_FC_18.json new file mode 100644 index 0000000000000000000000000000000000000000..3bde4b76669b178f963599a66e386086f04e2bcf --- /dev/null +++ b/data/huge-league/players/Tierra_Alta_FC_18.json @@ -0,0 +1 @@ +{"number": 18, "name": "Leonardo Salazar", "age": 25, "nationality": "Costa Rica", "shirt_number": 18, "position": "Forward/Winger", "preferred_foot": "Left", "role": "Bench", "team": "Tierra Alta FC", "height_cm": 178, "weight_kg": 75, "overall_rating": 82, "is_injured": false, "form": 8, "goals": 12, "assists": 7, "yellow_cards": 3, "red_cards": 0, "bio": "Leonardo Salazar is a dynamic forward known for his electrifying speed and deft left foot. Hailing from the picturesque cloud forests of Costa Rica, he possesses an innate ability to read the game and make crucial plays in high-pressure situations. With a relentless work ethic and a knack for finding the back of the net, he has become a fan favorite at Tierra Alta FC."} \ No newline at end of file diff --git a/data/huge-league/players/Tierra_Alta_FC_19.json b/data/huge-league/players/Tierra_Alta_FC_19.json new file mode 100644 index 0000000000000000000000000000000000000000..f8c20fec9534b4d89169b7fee0110db3d5d5c643 --- /dev/null +++ b/data/huge-league/players/Tierra_Alta_FC_19.json @@ -0,0 +1 @@ +{"number": 19, "name": "Sebasti\u00e1n Mora", "age": 29, "nationality": "Costa Rica", "shirt_number": 19, "position": "Striker", "preferred_foot": "Right", "role": "Bench", "team": "Tierra Alta FC", "height_cm": 182, "weight_kg": 78, "overall_rating": 85, "is_injured": false, "form": 7, "goals": 12, "assists": 5, "yellow_cards": 3, "red_cards": 1, "bio": "Sebasti\u00e1n Mora is known for his lightning-fast pace and clinical finishing. With roots in the lush landscapes of Costa Rica, he plays with a fiery passion that ignites the crowd. A versatile striker, he thrives in tight spaces, often beating defenders with his agile footwork and keen tactical awareness."} \ No newline at end of file diff --git a/data/huge-league/players/Tierra_Alta_FC_2.json b/data/huge-league/players/Tierra_Alta_FC_2.json new file mode 100644 index 0000000000000000000000000000000000000000..ee68c9180fb40bf1fd464a2e001d142bd64e0982 --- /dev/null +++ b/data/huge-league/players/Tierra_Alta_FC_2.json @@ -0,0 +1 @@ +{"number": 2, "name": "Jos\u00e9 Chac\u00f3n", "age": 22, "nationality": "Costa Rica", "shirt_number": 2, "position": "Left Back", "preferred_foot": "Left", "role": "Starter", "team": "Tierra Alta FC", "height_cm": 178, "weight_kg": 72, "overall_rating": 85, "is_injured": false, "form": 7, "goals": 3, "assists": 5, "yellow_cards": 2, "red_cards": 0, "bio": "A dynamic Left Back known for his tenacity and impeccable tackling, Jos\u00e9 Chac\u00f3n embodies the spirit of Tierra Alta FC. With roots in the lush highlands of Costa Rica, his commitment to sustainability mirrors the club's ethos. Possessing an eye for connecting plays, he often surges forward to assist, making him a vital player in the transition from defense to attack."} \ No newline at end of file diff --git a/data/huge-league/players/Tierra_Alta_FC_20.json b/data/huge-league/players/Tierra_Alta_FC_20.json new file mode 100644 index 0000000000000000000000000000000000000000..d3fd0a2849e3a2610fb5e370715b9f1dfe41e158 --- /dev/null +++ b/data/huge-league/players/Tierra_Alta_FC_20.json @@ -0,0 +1 @@ +{"number": 20, "name": "Sebasti\u00e1n Alvarado", "age": 27, "nationality": "Costa Rica", "shirt_number": 20, "position": "Left Wing", "preferred_foot": "Right", "role": "Bench", "team": "Tierra Alta FC", "height_cm": 178, "weight_kg": 72, "overall_rating": 85, "is_injured": false, "form": 7, "goals": 12, "assists": 8, "yellow_cards": 3, "red_cards": 0, "bio": "Sebasti\u00e1n Alvarado is a dynamic left winger known for his explosive speed and precise crossing ability. Hailing from Costa Rica, he embodies a spirited determination and flair on the pitch. With a keen eye for goal and a tenacious work ethic, he's a vital asset to Tierra Alta FC, thrilling fans with his creativity and relentless pursuit of victory."} \ No newline at end of file diff --git a/data/huge-league/players/Tierra_Alta_FC_21.json b/data/huge-league/players/Tierra_Alta_FC_21.json new file mode 100644 index 0000000000000000000000000000000000000000..a89a27f2ccbff7a277f28a38dbf213c5f4f3d715 --- /dev/null +++ b/data/huge-league/players/Tierra_Alta_FC_21.json @@ -0,0 +1 @@ +{"number": 21, "name": "Rafael Cordero", "age": 24, "nationality": "Costa Rica", "shirt_number": 21, "position": "Right Wing", "preferred_foot": "Right", "role": "Bench", "team": "Tierra Alta FC", "height_cm": 178, "weight_kg": 75, "overall_rating": 82, "is_injured": false, "form": 7, "goals": 12, "assists": 8, "yellow_cards": 3, "red_cards": 1, "bio": "Rafael Cordero, the dynamic right winger from Costa Rica, is known for his lightning-fast pace and precise crosses. With an unyielding spirit and a contagious enthusiasm, he constantly challenges defenders, embodying the tactical intelligence of Tierra Alta FC. His playful flair and deep roots in the lush landscapes of San Jos\u00e9 enhance his on-field creativity."} \ No newline at end of file diff --git a/data/huge-league/players/Tierra_Alta_FC_22.json b/data/huge-league/players/Tierra_Alta_FC_22.json new file mode 100644 index 0000000000000000000000000000000000000000..0e78fd50fad39ca48c662fb5b371da4e860b920e --- /dev/null +++ b/data/huge-league/players/Tierra_Alta_FC_22.json @@ -0,0 +1 @@ +{"number": 22, "name": "Andr\u00e9s Z\u00fa\u00f1iga", "age": 29, "nationality": "Costa Rica", "shirt_number": 22, "position": "Various", "preferred_foot": "Left", "role": "Reserve/Prospect", "team": "Tierra Alta FC", "height_cm": 178, "weight_kg": 75, "overall_rating": 83, "is_injured": false, "form": 7, "goals": 12, "assists": 8, "yellow_cards": 3, "red_cards": 1, "bio": "Andr\u00e9s Z\u00fa\u00f1iga is a dynamic player known for his dazzling footwork and strategic vision on the field. A product of Costa Rica's rich soccer culture, he plays primarily on the left flank, where his preferred foot allows him to deliver precise crosses and create scoring opportunities. Renowned for his relentless work ethic and positive attitude, Z\u00fa\u00f1iga inspires his teammates, often leading by example both on and off the pitch."} \ No newline at end of file diff --git a/data/huge-league/players/Tierra_Alta_FC_23.json b/data/huge-league/players/Tierra_Alta_FC_23.json new file mode 100644 index 0000000000000000000000000000000000000000..5f2e03c7fc3b91aaedbcd9d0d41993bd4d556d94 --- /dev/null +++ b/data/huge-league/players/Tierra_Alta_FC_23.json @@ -0,0 +1 @@ +{"number": 23, "name": "Gabriel Chac\u00f3n", "age": 25, "nationality": "Costa Rica", "shirt_number": 23, "position": "Various", "preferred_foot": "Right", "role": "Reserve/Prospect", "team": "Tierra Alta FC", "height_cm": 178, "weight_kg": 75, "overall_rating": 82, "is_injured": false, "form": 7, "goals": 15, "assists": 10, "yellow_cards": 3, "red_cards": 1, "bio": "Gabriel Chac\u00f3n, with his deft footwork and tactical awareness, mesmerizes fans with a style that seamlessly blends creativity and precision. Emerging from the lush landscapes of Costa Rica, he embodies the spirit of Tierra Alta FC, often making crucial plays that ignite the team\u2019s momentum. His resilience and determination make him a rising star, as he strives to etch his name in the hearts of supporters."} \ No newline at end of file diff --git a/data/huge-league/players/Tierra_Alta_FC_3.json b/data/huge-league/players/Tierra_Alta_FC_3.json new file mode 100644 index 0000000000000000000000000000000000000000..f3d126fd8bfc9952291b7cc40e16c62392d453f7 --- /dev/null +++ b/data/huge-league/players/Tierra_Alta_FC_3.json @@ -0,0 +1 @@ +{"number": 3, "name": "David Alvarado", "age": 24, "nationality": "Costa Rica", "shirt_number": 3, "position": "Center Back", "preferred_foot": "Left", "role": "Starter", "team": "Tierra Alta FC", "height_cm": 182, "weight_kg": 76, "overall_rating": 85, "is_injured": false, "form": 8, "goals": 2, "assists": 1, "yellow_cards": 3, "red_cards": 0, "bio": "David Alvarado, a commanding presence on the pitch, is known for his robust tackling and strategic positional play. Hailing from the vibrant streets of San Jos\u00e9, his left-footed clearances and aerial prowess make him a cornerstone of Tierra Alta FC's defense. A passionate advocate for environmental sustainability, he embodies the team\u2019s ethos both on and off the field."} \ No newline at end of file diff --git a/data/huge-league/players/Tierra_Alta_FC_4.json b/data/huge-league/players/Tierra_Alta_FC_4.json new file mode 100644 index 0000000000000000000000000000000000000000..4a0bd2d677e4258912e9be3de85d0be3ef20619f --- /dev/null +++ b/data/huge-league/players/Tierra_Alta_FC_4.json @@ -0,0 +1 @@ +{"number": 4, "name": "Marco Salazar", "age": 21, "nationality": "Costa Rica", "shirt_number": 4, "position": "Center Back", "preferred_foot": "Right", "role": "Starter", "team": "Tierra Alta FC", "height_cm": 182, "weight_kg": 75, "overall_rating": 85, "is_injured": false, "form": 8, "goals": 2, "assists": 1, "yellow_cards": 3, "red_cards": 0, "bio": "Marco Salazar, a towering presence in defense, excels at intercepting passes and launching counter-attacks with pinpoint accuracy. Born in the heart of Costa Rica, his fierce competitiveness and tactical intelligence make him a cornerstone for Tierra Alta FC, embodying the team's sustainable spirit and ambition."} \ No newline at end of file diff --git a/data/huge-league/players/Tierra_Alta_FC_5.json b/data/huge-league/players/Tierra_Alta_FC_5.json new file mode 100644 index 0000000000000000000000000000000000000000..2081f542e6e7403a041fe751e5fd640acaaec0bd --- /dev/null +++ b/data/huge-league/players/Tierra_Alta_FC_5.json @@ -0,0 +1 @@ +{"number": 5, "name": "Ricardo Cordero", "age": 19, "nationality": "Costa Rica", "shirt_number": 5, "position": "Right Back", "preferred_foot": "Left", "role": "Starter", "team": "Tierra Alta FC", "height_cm": 178, "weight_kg": 75, "overall_rating": 82, "is_injured": false, "form": 7, "goals": 2, "assists": 5, "yellow_cards": 3, "red_cards": 1, "bio": "Ricardo Cordero, the dynamic Right Back for Tierra Alta FC, showcases explosive pace and relentless energy on the field. Hailing from the lush terrains of Costa Rica, he combines an aggressive defensive style with precise crossing ability, making him a dual threat. Known for his determination and tactical awareness, Cordero's tenacity and vibrant presence inspire his teammates, helping them thrive in both domestic and international competitions."} \ No newline at end of file diff --git a/data/huge-league/players/Tierra_Alta_FC_6.json b/data/huge-league/players/Tierra_Alta_FC_6.json new file mode 100644 index 0000000000000000000000000000000000000000..4f5241e11175fc251bdb70d0a4503d1a23ae4f62 --- /dev/null +++ b/data/huge-league/players/Tierra_Alta_FC_6.json @@ -0,0 +1 @@ +{"number": 6, "name": "Mauricio P\u00e9rez", "age": 23, "nationality": "Costa Rica", "shirt_number": 6, "position": "Defensive Mid", "preferred_foot": "Right", "role": "Starter", "team": "Tierra Alta FC", "height_cm": 178, "weight_kg": 75, "overall_rating": 82, "is_injured": false, "form": 8, "goals": 3, "assists": 5, "yellow_cards": 2, "red_cards": 0, "bio": "Mauricio P\u00e9rez, a tenacious midfielder from Costa Rica, combines relentless work ethic with sharp tactical awareness. Known for his exceptional passing range and ability to break up opposition attacks, he embodies the heart of Tierra Alta FC. His signature play style is characterized by game-saving interceptions and the ability to initiate swift counterattacks, making him a key player on the pitch."} \ No newline at end of file diff --git a/data/huge-league/players/Tierra_Alta_FC_7.json b/data/huge-league/players/Tierra_Alta_FC_7.json new file mode 100644 index 0000000000000000000000000000000000000000..e52fa01fd7cfc400c4cd5ab3972afd3333bfafea --- /dev/null +++ b/data/huge-league/players/Tierra_Alta_FC_7.json @@ -0,0 +1 @@ +{"number": 7, "name": "Joaqu\u00edn Araya", "age": 20, "nationality": "Costa Rica", "shirt_number": 7, "position": "Central Mid", "preferred_foot": "Left", "role": "Starter", "team": "Tierra Alta FC", "height_cm": 178, "weight_kg": 72, "overall_rating": 85, "is_injured": false, "form": 8, "goals": 12, "assists": 10, "yellow_cards": 3, "red_cards": 1, "bio": "Joaqu\u00edn Araya, a dynamic 20-year-old from Costa Rica, is known for his agile dribbling and precise left-footed passes. With a passion for the game that ignites the field, he embodies the tactical intelligence of Tierra Alta FC, often orchestrating plays with vision and flair. His electrifying presence is complemented by a tenacity that makes him a fan favorite."} \ No newline at end of file diff --git a/data/huge-league/players/Tierra_Alta_FC_8.json b/data/huge-league/players/Tierra_Alta_FC_8.json new file mode 100644 index 0000000000000000000000000000000000000000..5c7d31b35c9cfd6904394ebec4e7e16713ceb346 --- /dev/null +++ b/data/huge-league/players/Tierra_Alta_FC_8.json @@ -0,0 +1 @@ +{"number": 8, "name": "Pablo Ure\u00f1a", "age": 23, "nationality": "Costa Rica", "shirt_number": 8, "position": "Central Mid", "preferred_foot": "Left", "role": "Starter", "team": "Tierra Alta FC", "height_cm": 178, "weight_kg": 70, "overall_rating": 86, "is_injured": false, "form": 7, "goals": 10, "assists": 15, "yellow_cards": 3, "red_cards": 1, "bio": "Pablo Ure\u00f1a is a dynamic central midfielder known for his visionary passing and tenacious tackling. Hailing from the lush landscapes of Costa Rica, he embodies a vibrant playing style marked by his left-footed precision and a knack for game-changing assists. He's a passionate player who thrives under pressure, often seen rallying teammates with his relentless spirit."} \ No newline at end of file diff --git a/data/huge-league/players/Tierra_Alta_FC_9.json b/data/huge-league/players/Tierra_Alta_FC_9.json new file mode 100644 index 0000000000000000000000000000000000000000..c00e2f08604fe277dd0768caacf101787479b5e6 --- /dev/null +++ b/data/huge-league/players/Tierra_Alta_FC_9.json @@ -0,0 +1 @@ +{"number": 9, "name": "Esteban Camacho", "age": 30, "nationality": "Costa Rica", "shirt_number": 9, "position": "Left Wing", "preferred_foot": "Left", "role": "Starter", "team": "Tierra Alta FC", "height_cm": 178, "weight_kg": 75, "overall_rating": 86, "is_injured": false, "form": 7, "goals": 12, "assists": 8, "yellow_cards": 3, "red_cards": 1, "bio": "Esteban Camacho is known for his electrifying pace and precise left foot, making him a constant threat on the left flank. With roots deep in the lush landscapes of Costa Rica, his passionate play embodies the spirit of Tierra Alta FC, combining flair and tactical acumen. A crowd favorite, Esteban's ability to change the game in an instant leaves opponents scrambling. His commitment to sustainability off the pitch makes him a role model in his community."} \ No newline at end of file diff --git a/data/huge-league/players/Yucatan_Force_1.json b/data/huge-league/players/Yucatan_Force_1.json new file mode 100644 index 0000000000000000000000000000000000000000..e5845b62a1e6181615309a612f876a87640462f4 --- /dev/null +++ b/data/huge-league/players/Yucatan_Force_1.json @@ -0,0 +1 @@ +{"number": 1, "name": "Carlos Hern\u00e1ndez", "age": 17, "nationality": "Mexico", "shirt_number": 1, "position": "Goalkeeper", "preferred_foot": "Right", "role": "Starter", "team": "Yucatan Force", "height_cm": 182, "weight_kg": 75, "overall_rating": 88, "is_injured": false, "form": 9, "goals": 0, "assists": 0, "yellow_cards": 2, "red_cards": 0, "bio": "A dynamic presence in goal, Carlos Hern\u00e1ndez commands his area with confidence and a fierce determination. Growing up in the vibrant culture of M\u00e9rida, he combines agility with sharp reflexes, turning potential goals into mere whispers of defeat for the opponents. Known for his fearless dives and quick throws, he's the backbone of Yucat\u00e1n Force, embodying the spirit of the Mayan heartland with every save."} \ No newline at end of file diff --git a/data/huge-league/players/Yucatan_Force_10.json b/data/huge-league/players/Yucatan_Force_10.json new file mode 100644 index 0000000000000000000000000000000000000000..40ea0de4ebeb0285bf42ee33fe2f062d7db6a2f3 --- /dev/null +++ b/data/huge-league/players/Yucatan_Force_10.json @@ -0,0 +1 @@ +{"number": 10, "name": "Ram\u00f3n Jim\u00e9nez", "age": 26, "nationality": "Mexico", "shirt_number": 10, "position": "Striker", "preferred_foot": "Left", "role": "Starter", "team": "Yucatan Force", "height_cm": 182, "weight_kg": 78, "overall_rating": 85, "is_injured": false, "form": 8, "goals": 24, "assists": 12, "yellow_cards": 3, "red_cards": 0, "bio": "Ram\u00f3n Jim\u00e9nez, a fierce competitor from the heart of Mexico, thrives on the pitch with his explosive speed and clinical finishing. A left-footed maestro, he dances past defenders with grace, often leaving them bewildered. Known for his relentless work ethic and an infectious passion for the game, he embodies the spirit of Yucat\u00e1n Force, proving time and again that he can turn a match on its head with a single strike."} \ No newline at end of file diff --git a/data/huge-league/players/Yucatan_Force_11.json b/data/huge-league/players/Yucatan_Force_11.json new file mode 100644 index 0000000000000000000000000000000000000000..fb6adeae69b594f4a07646cb39ab2855c81d8ca1 --- /dev/null +++ b/data/huge-league/players/Yucatan_Force_11.json @@ -0,0 +1 @@ +{"number": 11, "name": "Jos\u00e9 Delgado", "age": 32, "nationality": "Mexico", "shirt_number": 11, "position": "Right Wing", "preferred_foot": "Right", "role": "Starter", "team": "Yucatan Force", "height_cm": 178, "weight_kg": 72, "overall_rating": 85, "is_injured": false, "form": 8, "goals": 15, "assists": 10, "yellow_cards": 3, "red_cards": 1, "bio": "Jos\u00e9 Delgado is known for his blazing speed and exceptional dribbling skills that leave defenders in the dust. His ability to deliver pinpoint crosses makes him a constant threat on the right wing. Born in Mexico City, he embodies the spirit of Yucat\u00e1n Force, dazzling fans with his flair and passion on the pitch, often celebrating goals with a signature dance that reflects his cultural roots."} \ No newline at end of file diff --git a/data/huge-league/players/Yucatan_Force_12.json b/data/huge-league/players/Yucatan_Force_12.json new file mode 100644 index 0000000000000000000000000000000000000000..e67d3d762c80b0b0836dea77a08f13cae6668a5c --- /dev/null +++ b/data/huge-league/players/Yucatan_Force_12.json @@ -0,0 +1 @@ +{"number": 12, "name": "Miguel Morales", "age": 22, "nationality": "Mexico", "shirt_number": 12, "position": "Goalkeeper", "preferred_foot": "Right", "role": "Bench", "team": "Yucatan Force", "height_cm": 190, "weight_kg": 85, "overall_rating": 78, "is_injured": false, "form": 7, "goals": 0, "assists": 0, "yellow_cards": 1, "red_cards": 0, "bio": "Miguel Morales, a towering presence in the goal, is known for his acrobatic saves and commanding voice that organizes the defense. With roots in the heart of Mexico, he embodies agility and determination, often inspiring his teammates with his relentless work ethic and commitment to the Yucat\u00e1n Force. His quick reflexes and ability to read the game make him a formidable guardian against any attack."} \ No newline at end of file diff --git a/data/huge-league/players/Yucatan_Force_13.json b/data/huge-league/players/Yucatan_Force_13.json new file mode 100644 index 0000000000000000000000000000000000000000..b96d39c30d79b8443baabe066fbbfb622d2c9ff8 --- /dev/null +++ b/data/huge-league/players/Yucatan_Force_13.json @@ -0,0 +1 @@ +{"number": 13, "name": "Ricardo Hern\u00e1ndez", "age": 19, "nationality": "Mexico", "shirt_number": 13, "position": "Center Back", "preferred_foot": "Right", "role": "Bench", "team": "Yucatan Force", "height_cm": 182, "weight_kg": 75, "overall_rating": 78, "is_injured": false, "form": 7, "goals": 2, "assists": 1, "yellow_cards": 3, "red_cards": 0, "bio": "Ricardo Hern\u00e1ndez, a towering presence in defense, commands the pitch with his assertive tackling and keen game awareness. Hailing from the vibrant streets of M\u00e9rida, his passion for soccer shines through every match. A true warrior, his relentless spirit and unwavering commitment make him a fan favorite at El Templo del Sol."} \ No newline at end of file diff --git a/data/huge-league/players/Yucatan_Force_14.json b/data/huge-league/players/Yucatan_Force_14.json new file mode 100644 index 0000000000000000000000000000000000000000..0137dc13242f8f4354fe5324f02641c90a0015b7 --- /dev/null +++ b/data/huge-league/players/Yucatan_Force_14.json @@ -0,0 +1 @@ +{"number": 14, "name": "Fernando Flores", "age": 22, "nationality": "Mexico", "shirt_number": 14, "position": "Full Back", "preferred_foot": "Left", "role": "Bench", "team": "Yucatan Force", "height_cm": 178, "weight_kg": 72, "overall_rating": 75, "is_injured": false, "form": 8, "goals": 3, "assists": 5, "yellow_cards": 2, "red_cards": 0, "bio": "Fernando Flores, the dynamic full back of Yucat\u00e1n Force, electrifies the pitch with his agile runs and precise crosses. Hailing from the vibrant streets of M\u00e9rida, his tenacity and relentless spirit embody the soul of his team. Known for his tireless work ethic and eye for assists, he\u2019s a player who thrives under pressure, creating pivotal moments in high-stakes games."} \ No newline at end of file diff --git a/data/huge-league/players/Yucatan_Force_15.json b/data/huge-league/players/Yucatan_Force_15.json new file mode 100644 index 0000000000000000000000000000000000000000..00deb67c19cbe1b4e418ff20fa4f3b49f014089d --- /dev/null +++ b/data/huge-league/players/Yucatan_Force_15.json @@ -0,0 +1 @@ +{"number": 15, "name": "Fernando Rodr\u00edguez", "age": 24, "nationality": "Mexico", "shirt_number": 15, "position": "Defensive Mid", "preferred_foot": "Right", "role": "Bench", "team": "Yucatan Force", "height_cm": 178, "weight_kg": 74, "overall_rating": 82, "is_injured": false, "form": 7, "goals": 3, "assists": 5, "yellow_cards": 2, "red_cards": 0, "bio": "Fernando Rodr\u00edguez, a dynamic defensive midfielder from Mexico, showcases unmatched tenacity and exceptional vision on the pitch. Renowned for his tactical prowess and precise passing ability, he boasts an unwavering determination to shield his team from opposing threats. Hailing from a rich cultural background in M\u00e9rida, he draws inspiration from the vibrant history of the Yucat\u00e1n, making every match feel like a celebration of his heritage."} \ No newline at end of file diff --git a/data/huge-league/players/Yucatan_Force_16.json b/data/huge-league/players/Yucatan_Force_16.json new file mode 100644 index 0000000000000000000000000000000000000000..d1b89a8855a4fc69a2e4142412b31716e9962648 --- /dev/null +++ b/data/huge-league/players/Yucatan_Force_16.json @@ -0,0 +1 @@ +{"number": 16, "name": "Alonso Ramos", "age": 21, "nationality": "Mexico", "shirt_number": 16, "position": "Central Mid", "preferred_foot": "Left", "role": "Bench", "team": "Yucatan Force", "height_cm": 175, "weight_kg": 70, "overall_rating": 82, "is_injured": false, "form": 8, "goals": 12, "assists": 15, "yellow_cards": 3, "red_cards": 1, "bio": "Alonso Ramos is a dynamic central midfielder known for his exceptional passing range and vision on the field. With a fierce left foot and an unyielding determination, he brings the spirit of Mexico's soccer legacy to Yucat\u00e1n Force, captivating fans at El Templo del Sol. His ability to orchestrate plays and fuel the attack reflects his roots in the vibrant culture of M\u00e9rida, blending artistry with athleticism."} \ No newline at end of file diff --git a/data/huge-league/players/Yucatan_Force_17.json b/data/huge-league/players/Yucatan_Force_17.json new file mode 100644 index 0000000000000000000000000000000000000000..f251ecf776c6c398342340aea133b54e8346efc2 --- /dev/null +++ b/data/huge-league/players/Yucatan_Force_17.json @@ -0,0 +1 @@ +{"number": 17, "name": "Ram\u00f3n Jim\u00e9nez", "age": 17, "nationality": "Mexico", "shirt_number": 17, "position": "Attacking Mid", "preferred_foot": "Right", "role": "Bench", "team": "Yucatan Force", "height_cm": 178, "weight_kg": 68, "overall_rating": 85, "is_injured": false, "form": 8, "goals": 12, "assists": 9, "yellow_cards": 3, "red_cards": 1, "bio": "A prodigy from the vibrant streets of M\u00e9rida, Ram\u00f3n Jim\u00e9nez dazzles with his sharp dribbling and vision. With a flair for threading precise passes and a fire in his belly, he embodies the spirit of the Yucat\u00e1n Force. Fans remember his game-winning free kick that echoed through El Templo del Sol, solidifying his place as a rising star in Mexican soccer."} \ No newline at end of file diff --git a/data/huge-league/players/Yucatan_Force_18.json b/data/huge-league/players/Yucatan_Force_18.json new file mode 100644 index 0000000000000000000000000000000000000000..6f6f26f8fb71523ba16ba3ebb6400721b3950645 --- /dev/null +++ b/data/huge-league/players/Yucatan_Force_18.json @@ -0,0 +1 @@ +{"number": 18, "name": "Emilio Navarro", "age": 24, "nationality": "Mexico", "shirt_number": 18, "position": "Forward/Winger", "preferred_foot": "Left", "role": "Bench", "team": "Yucatan Force", "height_cm": 177, "weight_kg": 72, "overall_rating": 86, "is_injured": false, "form": 8, "goals": 12, "assists": 7, "yellow_cards": 3, "red_cards": 1, "bio": "Emilio Navarro, a dazzling presence on the field, combines blistering pace with a keen eye for goal. Born and raised in the vibrant streets of M\u00e9rida, he showcases his Mexican heritage with every electrifying run. Known for his trademark left-foot curler, Navarro's tenacity and flair make him a fan favorite at El Templo del Sol, where he consistently thrills supporters with his audacious plays."} \ No newline at end of file diff --git a/data/huge-league/players/Yucatan_Force_19.json b/data/huge-league/players/Yucatan_Force_19.json new file mode 100644 index 0000000000000000000000000000000000000000..dba26f3770ec2400f55e5bd5cd1b652dc553bd1a --- /dev/null +++ b/data/huge-league/players/Yucatan_Force_19.json @@ -0,0 +1 @@ +{"number": 19, "name": "Emilio Mart\u00ednez", "age": 24, "nationality": "Mexico", "shirt_number": 19, "position": "Striker", "preferred_foot": "Right", "role": "Bench", "team": "Yucatan Force", "height_cm": 182, "weight_kg": 78, "overall_rating": 85, "is_injured": false, "form": 7, "goals": 15, "assists": 8, "yellow_cards": 3, "red_cards": 1, "bio": "Emilio Mart\u00ednez, a dynamic striker from Mexico, combines explosive speed with an uncanny ability to read the game. Known for his powerful right foot, he often finds the back of the net from unexpected angles. Hailing from M\u00e9rida, he wears the number 19 jersey with pride, embodying the spirit of Yucat\u00e1n Force. His relentless determination and flair for dramatic goals have made him a fan favorite."} \ No newline at end of file diff --git a/data/huge-league/players/Yucatan_Force_2.json b/data/huge-league/players/Yucatan_Force_2.json new file mode 100644 index 0000000000000000000000000000000000000000..9a5a9551e03ccfe35bce7728e65a9882cba4134a --- /dev/null +++ b/data/huge-league/players/Yucatan_Force_2.json @@ -0,0 +1 @@ +{"number": 2, "name": "C\u00e9sar Navarro", "age": 30, "nationality": "Mexico", "shirt_number": 2, "position": "Left Back", "preferred_foot": "Right", "role": "Starter", "team": "Yucatan Force", "height_cm": 178, "weight_kg": 75, "overall_rating": 85, "is_injured": false, "form": 8, "goals": 3, "assists": 7, "yellow_cards": 2, "red_cards": 0, "bio": "C\u00e9sar Navarro, a formidable left back from Yucat\u00e1n, combines fierce defensive skills with a remarkable ability to support his team's attacking plays. Renowned for his tireless work rate and sharp tactical awareness, C\u00e9sar embodies the spirit of El Templo del Sol. His signature skill is the swift overlap, consistently catching opponents off guard, making him a crucial player for Yucat\u00e1n Force."} \ No newline at end of file diff --git a/data/huge-league/players/Yucatan_Force_20.json b/data/huge-league/players/Yucatan_Force_20.json new file mode 100644 index 0000000000000000000000000000000000000000..daf99c6139a84f5fa63ffa97ccca186f4e58b7db --- /dev/null +++ b/data/huge-league/players/Yucatan_Force_20.json @@ -0,0 +1 @@ +{"number": 20, "name": "Javier Mart\u00ednez", "age": 28, "nationality": "Mexico", "shirt_number": 20, "position": "Left Wing", "preferred_foot": "Right", "role": "Bench", "team": "Yucatan Force", "height_cm": 178, "weight_kg": 75, "overall_rating": 82, "is_injured": false, "form": 7, "goals": 15, "assists": 10, "yellow_cards": 3, "red_cards": 1, "bio": "Born in the vibrant streets of Guadalajara, Javier Mart\u00ednez is known for his explosive pace and deft dribbling. A true left-wing magician, he dances around defenders with ease, channeling the spirit of Mexico's rich football heritage. His tenacity and flair make him a crowd favorite at El Templo del Sol, where fans roar with every dazzling run he makes."} \ No newline at end of file diff --git a/data/huge-league/players/Yucatan_Force_21.json b/data/huge-league/players/Yucatan_Force_21.json new file mode 100644 index 0000000000000000000000000000000000000000..b517ddbc209651eabe2baf19afb2ef66e6b04131 --- /dev/null +++ b/data/huge-league/players/Yucatan_Force_21.json @@ -0,0 +1 @@ +{"number": 21, "name": "Eduardo Castillo", "age": 24, "nationality": "Mexico", "shirt_number": 21, "position": "Right Wing", "preferred_foot": "Left", "role": "Bench", "team": "Yucatan Force", "height_cm": 178, "weight_kg": 72, "overall_rating": 85, "is_injured": false, "form": 7, "goals": 15, "assists": 10, "yellow_cards": 3, "red_cards": 1, "bio": "Eduardo Castillo, a dazzling right winger from Mexico, is known for his blistering pace and impeccable dribbling skills. His signature move\u2014a feint followed by a curling left-footed shot\u2014often leaves defenders in the dust. With a fierce competitive spirit, Eduardo brings a vibrant energy to Yucat\u00e1n Force, embodying the passion and heritage of the Mayan heartland."} \ No newline at end of file diff --git a/data/huge-league/players/Yucatan_Force_22.json b/data/huge-league/players/Yucatan_Force_22.json new file mode 100644 index 0000000000000000000000000000000000000000..718818d76a15a688b129c0f7cb4bc1828ff0f716 --- /dev/null +++ b/data/huge-league/players/Yucatan_Force_22.json @@ -0,0 +1 @@ +{"number": 22, "name": "Santiago Jim\u00e9nez", "age": 21, "nationality": "Mexico", "shirt_number": 22, "position": "Various", "preferred_foot": "Left", "role": "Reserve/Prospect", "team": "Yucatan Force", "height_cm": 178, "weight_kg": 75, "overall_rating": 82, "is_injured": false, "form": 7, "goals": 15, "assists": 8, "yellow_cards": 3, "red_cards": 0, "bio": "Santiago Jim\u00e9nez, a dynamic left-footed forward, dazzles on the pitch with his agility and precise finishing. Hailing from Mexico, he combines youthful exuberance with a fierce determination to leave an impact each match. Often seen weaving through defenders, his signature move is a deft cut inside, enabling him to unleash powerful shots that resonate in the hearts of Yucat\u00e1n Force fans. His relentless work ethic and passion for the game make him a bright prospect in the world of soccer."} \ No newline at end of file diff --git a/data/huge-league/players/Yucatan_Force_23.json b/data/huge-league/players/Yucatan_Force_23.json new file mode 100644 index 0000000000000000000000000000000000000000..13b6b56a38572d19760e15f9cc6de816f3229f19 --- /dev/null +++ b/data/huge-league/players/Yucatan_Force_23.json @@ -0,0 +1 @@ +{"number": 23, "name": "Pablo Vargas", "age": 24, "nationality": "Mexico", "shirt_number": 23, "position": "Various", "preferred_foot": "Right", "role": "Reserve/Prospect", "team": "Yucatan Force", "height_cm": 178, "weight_kg": 70, "overall_rating": 78, "is_injured": false, "form": 7, "goals": 12, "assists": 5, "yellow_cards": 3, "red_cards": 1, "bio": "Pablo Vargas is a dynamic playmaker known for his quick footwork and creative vision on the pitch. Hailing from the vibrant streets of M\u00e9rida, he embodies the spirit of the Yucat\u00e1n Force, dazzling fans with his unpredictable dribbles and fearless attitude. A product of local talent, his signature move, a swift cut inside followed by a powerful shot, has made him a crowd favorite, leaving defenders bewildered and the stands erupting with excitement."} \ No newline at end of file diff --git a/data/huge-league/players/Yucatan_Force_3.json b/data/huge-league/players/Yucatan_Force_3.json new file mode 100644 index 0000000000000000000000000000000000000000..59a50e71033a9c02418b3c8675ed34881be6fd4b --- /dev/null +++ b/data/huge-league/players/Yucatan_Force_3.json @@ -0,0 +1 @@ +{"number": 3, "name": "Luis Navarro", "age": 25, "nationality": "Mexico", "shirt_number": 3, "position": "Center Back", "preferred_foot": "Right", "role": "Starter", "team": "Yucatan Force", "height_cm": 180, "weight_kg": 75, "overall_rating": 85, "is_injured": false, "form": 8, "goals": 2, "assists": 1, "yellow_cards": 3, "red_cards": 0, "bio": "Luis Navarro, a stalwart at the back, orchestrates the defensive line with a commanding presence. Known for his unyielding tackles and precise aerial ability, he embodies the fighting spirit of his roots in M\u00e9rida. With a fierce determination and a knack for stepping up in crucial moments, Navarro has become a fan favorite, earning respect as a leader both on and off the pitch."} \ No newline at end of file diff --git a/data/huge-league/players/Yucatan_Force_4.json b/data/huge-league/players/Yucatan_Force_4.json new file mode 100644 index 0000000000000000000000000000000000000000..8af3123e2ecbf6d1199025f7717b24e793849a02 --- /dev/null +++ b/data/huge-league/players/Yucatan_Force_4.json @@ -0,0 +1 @@ +{"number": 4, "name": "Arturo S\u00e1nchez", "age": 32, "nationality": "Mexico", "shirt_number": 4, "position": "Center Back", "preferred_foot": "Left", "role": "Starter", "team": "Yucatan Force", "height_cm": 185, "weight_kg": 80, "overall_rating": 78, "is_injured": false, "form": 7, "goals": 3, "assists": 1, "yellow_cards": 5, "red_cards": 1, "bio": "Arturo S\u00e1nchez is a stalwart center back renowned for his aggressive tackles and aerial prowess. A true warrior on the pitch, he embodies the spirit of Yucat\u00e1n Force, motivating teammates with his tenacity and fierce dedication. Growing up in the vibrant culture of M\u00e9rida, he combines skilled defending with a heart full of passion for his roots."} \ No newline at end of file diff --git a/data/huge-league/players/Yucatan_Force_5.json b/data/huge-league/players/Yucatan_Force_5.json new file mode 100644 index 0000000000000000000000000000000000000000..28cf0f69a6168d1560814e8c3668791151fd1c56 --- /dev/null +++ b/data/huge-league/players/Yucatan_Force_5.json @@ -0,0 +1 @@ +{"number": 5, "name": "Ram\u00f3n S\u00e1nchez", "age": 31, "nationality": "Mexico", "shirt_number": 5, "position": "Right Back", "preferred_foot": "Right", "role": "Starter", "team": "Yucatan Force", "height_cm": 178, "weight_kg": 75, "overall_rating": 82, "is_injured": false, "form": 8, "goals": 2, "assists": 5, "yellow_cards": 3, "red_cards": 1, "bio": "Ram\u00f3n S\u00e1nchez, known for his relentless tackles and precise crosses, embodies the spirit of Yucat\u00e1n Force. His aggressive playing style is matched only by his unwavering determination to defend his territory, making him a fan favorite in El Templo del Sol. A proud Mexican, he combines raw athleticism with strategic vision, earning him respect across the league."} \ No newline at end of file diff --git a/data/huge-league/players/Yucatan_Force_6.json b/data/huge-league/players/Yucatan_Force_6.json new file mode 100644 index 0000000000000000000000000000000000000000..8e119d2ec1e4df7e63409c9551b368a1ecf3b07b --- /dev/null +++ b/data/huge-league/players/Yucatan_Force_6.json @@ -0,0 +1 @@ +{"number": 6, "name": "Miguel Vargas", "age": 31, "nationality": "Mexico", "shirt_number": 6, "position": "Defensive Mid", "preferred_foot": "Left", "role": "Starter", "team": "Yucatan Force", "height_cm": 178, "weight_kg": 75, "overall_rating": 85, "is_injured": false, "form": 8, "goals": 4, "assists": 7, "yellow_cards": 3, "red_cards": 0, "bio": "Miguel Vargas is a tenacious midfielder with an unyielding spirit, known for his precise tackles and uncanny ability to read the game. Hailing from the vibrant streets of M\u00e9rida, he embodies the heart of Yucat\u00e1n Force, making him a fan favorite. With a slick, left-footed shot and an eye for connecting plays, he consistently brings intensity and flair to every match."} \ No newline at end of file diff --git a/data/huge-league/players/Yucatan_Force_7.json b/data/huge-league/players/Yucatan_Force_7.json new file mode 100644 index 0000000000000000000000000000000000000000..3968bc18df2a28f5bd3fa513c0c94e8b9b3dcaeb --- /dev/null +++ b/data/huge-league/players/Yucatan_Force_7.json @@ -0,0 +1 @@ +{"number": 7, "name": "Santiago Ortega", "age": 19, "nationality": "Mexico", "shirt_number": 7, "position": "Central Mid", "preferred_foot": "Left", "role": "Starter", "team": "Yucatan Force", "height_cm": 175, "weight_kg": 68, "overall_rating": 85, "is_injured": false, "form": 8, "goals": 10, "assists": 12, "yellow_cards": 3, "red_cards": 1, "bio": "Santiago Ortega, a 19-year-old dynamo from Mexico, thrives in the midfield with his deft left foot and uncanny ability to orchestrate the game. Known for his aggressive style and vision, he dances deftly past opponents, embodying the spirit of Yucat\u00e1n Force. With a flair for the dramatic, he has quickly become a fan favorite, often leading the charge with his electrifying runs and vital contributions in crucial matches."} \ No newline at end of file diff --git a/data/huge-league/players/Yucatan_Force_8.json b/data/huge-league/players/Yucatan_Force_8.json new file mode 100644 index 0000000000000000000000000000000000000000..d0cfd4c197a03fe2467e1f011b67e75bc9d10233 --- /dev/null +++ b/data/huge-league/players/Yucatan_Force_8.json @@ -0,0 +1 @@ +{"number": 8, "name": "Juan Reyes", "age": 29, "nationality": "Mexico", "shirt_number": 8, "position": "Central Mid", "preferred_foot": "Left", "role": "Starter", "team": "Yucatan Force", "height_cm": 175, "weight_kg": 70, "overall_rating": 82, "is_injured": false, "form": 8, "goals": 12, "assists": 15, "yellow_cards": 3, "red_cards": 0, "bio": "Juan Reyes, a maestro in midfield, weaves his left foot like a craftsman, effortlessly orchestrating play with unparalleled vision and flair. Born and raised in the vibrant heart of Mexico, his tenacity and creativity on the pitch resonate with the rich cultural backdrop of his homeland, making him a beloved figure in Yucat\u00e1n Force\u2019s storied history."} \ No newline at end of file diff --git a/data/huge-league/players/Yucatan_Force_9.json b/data/huge-league/players/Yucatan_Force_9.json new file mode 100644 index 0000000000000000000000000000000000000000..4c8e6cefb9ebd2f3ae6c8332d79e0ae449806034 --- /dev/null +++ b/data/huge-league/players/Yucatan_Force_9.json @@ -0,0 +1 @@ +{"number": 9, "name": "H\u00e9ctor L\u00f3pez", "age": 28, "nationality": "Mexico", "shirt_number": 9, "position": "Left Wing", "preferred_foot": "Left", "role": "Starter", "team": "Yucatan Force", "height_cm": 175, "weight_kg": 70, "overall_rating": 85, "is_injured": false, "form": 8, "goals": 15, "assists": 10, "yellow_cards": 3, "red_cards": 1, "bio": "H\u00e9ctor L\u00f3pez, hailing from the vibrant streets of M\u00e9rida, is known for his electrifying left foot that dazzles defenders. With a fierce competitive spirit and unmatched agility, he leaves his mark on every match, embodying the heart and soul of Yucat\u00e1n Force. His signature move, a swift cut inside followed by a curling shot, is a crowd favorite, making him a true local hero and a constant threat on the flank."} \ No newline at end of file diff --git a/data/huge-league/tournament.md b/data/huge-league/tournament.md new file mode 100644 index 0000000000000000000000000000000000000000..47248419922e2dbcb45641a83d11d1ef3fb9e727 --- /dev/null +++ b/data/huge-league/tournament.md @@ -0,0 +1,10 @@ +# Tournament + +## Tournament Bracket + +| Match | Teams | Score | Winner | Date | Venue | +|-------------|------------------|--------------------|----------------|----------------|----------------| +| Semifinal 1 | Yucatán Force vs Tierra Alta FC | 2–1 | Yucatán Force | July 10, 2025 | El Templo del Sol | +| Semifinal 2 | Everglade FC vs Fraser Valley United | 3–3 (4–2 pens) | Everglade FC | July 11, 2025 | Everglade Arena | + + diff --git a/docker-compose.yaml b/docker-compose.yaml new file mode 100644 index 0000000000000000000000000000000000000000..d7dce625c46e1bf5c0e8ca6a80cbc79d057e353e --- /dev/null +++ b/docker-compose.yaml @@ -0,0 +1,28 @@ +services: + huge-ifx-api: + container_name: huge-ifx-api + build: + context: ./api + target: base + volumes: + - ./api:/code + - .:/workspace + - root_hist:/root/history # i keep roots history across everything + - huggingface-cache:/root/.cache/huggingface + # - ~/.config/gcloud:/.config/gcloud + stdin_open: true + tty: true + ports: + - "8000:8000" # serving site + environment: + DEBUG: false + OPENAI_API_KEY: + command: uvicorn server:app --reload --host 0.0.0.0 --port 8000 --reload --log-level debug + +volumes: + root_hist: + name: root_hist + external: true + huggingface-cache: + name: huggingface-cache + external: true \ No newline at end of file