ryanbalch commited on
Commit
7e85237
·
1 Parent(s): c263aa9

adding user bios

Browse files
This view is limited to 50 files because it contains too many changes.   See raw diff
Files changed (50) hide show
  1. Makefile +31 -0
  2. api/Dockerfile +69 -0
  3. api/poetry.lock +1000 -0
  4. api/pyproject.toml +24 -0
  5. api/scripts/create_play_profile_pic.py +20 -0
  6. api/scripts/create_player_profiles.py +174 -0
  7. api/server.py +35 -0
  8. data/huge-league/players/Everglade_FC_1.json +1 -0
  9. data/huge-league/players/Everglade_FC_10.json +1 -0
  10. data/huge-league/players/Everglade_FC_11.json +1 -0
  11. data/huge-league/players/Everglade_FC_12.json +1 -0
  12. data/huge-league/players/Everglade_FC_13.json +1 -0
  13. data/huge-league/players/Everglade_FC_14.json +1 -0
  14. data/huge-league/players/Everglade_FC_15.json +1 -0
  15. data/huge-league/players/Everglade_FC_16.json +1 -0
  16. data/huge-league/players/Everglade_FC_17.json +1 -0
  17. data/huge-league/players/Everglade_FC_18.json +1 -0
  18. data/huge-league/players/Everglade_FC_19.json +1 -0
  19. data/huge-league/players/Everglade_FC_2.json +1 -0
  20. data/huge-league/players/Everglade_FC_20.json +1 -0
  21. data/huge-league/players/Everglade_FC_21.json +1 -0
  22. data/huge-league/players/Everglade_FC_22.json +1 -0
  23. data/huge-league/players/Everglade_FC_23.json +1 -0
  24. data/huge-league/players/Everglade_FC_3.json +1 -0
  25. data/huge-league/players/Everglade_FC_4.json +1 -0
  26. data/huge-league/players/Everglade_FC_5.json +1 -0
  27. data/huge-league/players/Everglade_FC_6.json +1 -0
  28. data/huge-league/players/Everglade_FC_7.json +1 -0
  29. data/huge-league/players/Everglade_FC_8.json +1 -0
  30. data/huge-league/players/Everglade_FC_9.json +1 -0
  31. data/huge-league/players/Fraser_Valley_United_1.json +1 -0
  32. data/huge-league/players/Fraser_Valley_United_10.json +1 -0
  33. data/huge-league/players/Fraser_Valley_United_11.json +1 -0
  34. data/huge-league/players/Fraser_Valley_United_12.json +1 -0
  35. data/huge-league/players/Fraser_Valley_United_13.json +1 -0
  36. data/huge-league/players/Fraser_Valley_United_14.json +1 -0
  37. data/huge-league/players/Fraser_Valley_United_15.json +1 -0
  38. data/huge-league/players/Fraser_Valley_United_16.json +1 -0
  39. data/huge-league/players/Fraser_Valley_United_17.json +1 -0
  40. data/huge-league/players/Fraser_Valley_United_18.json +1 -0
  41. data/huge-league/players/Fraser_Valley_United_19.json +1 -0
  42. data/huge-league/players/Fraser_Valley_United_2.json +1 -0
  43. data/huge-league/players/Fraser_Valley_United_20.json +1 -0
  44. data/huge-league/players/Fraser_Valley_United_21.json +1 -0
  45. data/huge-league/players/Fraser_Valley_United_22.json +1 -0
  46. data/huge-league/players/Fraser_Valley_United_23.json +1 -0
  47. data/huge-league/players/Fraser_Valley_United_3.json +1 -0
  48. data/huge-league/players/Fraser_Valley_United_4.json +1 -0
  49. data/huge-league/players/Fraser_Valley_United_5.json +1 -0
  50. data/huge-league/players/Fraser_Valley_United_6.json +1 -0
Makefile ADDED
@@ -0,0 +1,31 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ IMAGE_NAME = huge-ifx-api
2
+
3
+ extract-lock:
4
+ @echo "Extracting poetry.lock from container..."
5
+ @docker create --name temp-extract ${IMAGE_NAME}
6
+ @docker cp temp-extract:/code/poetry.lock .
7
+ @docker rm temp-extract
8
+ @echo "Lock file updated locally."
9
+
10
+ build:
11
+ docker compose -f docker-compose.yaml build
12
+
13
+ build-update:
14
+ @echo "Deleting lock file..."
15
+ rm -f poetry.lock
16
+ @echo "Rebuilding image..."
17
+ docker compose -f docker-compose.yaml build
18
+ @$(MAKE) extract-lock
19
+
20
+ up:
21
+ docker compose -f docker-compose.yaml up
22
+
23
+ command:
24
+ docker exec -it ${IMAGE_NAME} /bin/bash
25
+
26
+ command-raw:
27
+ docker compose run ${IMAGE_NAME} bash
28
+
29
+ clean-requirements:
30
+ rm -f poetry.lock
31
+
api/Dockerfile ADDED
@@ -0,0 +1,69 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # === Builder Stage ===
2
+ FROM python:3.12-slim AS base
3
+ # FROM nvidia/cuda:12.4.1-devel-ubuntu22.04 as base
4
+
5
+ # Install build tools and required system packages
6
+ RUN apt update -y && apt install --no-install-recommends -y \
7
+ build-essential \
8
+ vim \
9
+ python3-dev \
10
+ python3-pip \
11
+ curl
12
+
13
+ WORKDIR /code
14
+
15
+ # Set environment variables for Python behavior and module discovery
16
+ ENV PYTHONUNBUFFERED=1
17
+ ENV PYTHONPATH="$PYTHONPATH:/code"
18
+
19
+ # Setup history for interactive sessions (ensuring it’s mappable with a volume)
20
+ RUN mkdir -p /root/history
21
+ ENV HISTFILE=/root/history/.bash_history
22
+ ENV PROMPT_COMMAND="history -a"
23
+
24
+ # Build the Huggingface cache directory
25
+ RUN mkdir -p /huggingface_cache
26
+ ENV HF_HOME="/huggingface_cache"
27
+
28
+ # Install Poetry inside the container
29
+ RUN curl -sSL https://install.python-poetry.org | python3 -
30
+ ENV PATH="/root/.local/bin:$PATH"
31
+
32
+ # Configure Poetry to install directly into system Python (no venv)
33
+ RUN poetry config virtualenvs.create false
34
+
35
+ # Copy project dependency descriptors
36
+ COPY pyproject.toml poetry.lock* ./
37
+
38
+ # Install dependencies using Poetry into the system environment
39
+ RUN poetry install --no-root --no-interaction --no-ansi --only main
40
+
41
+ # === Runtime Stage ===
42
+ FROM python:3.12-slim AS runtime
43
+
44
+ WORKDIR /code
45
+
46
+ # Copy installed dependencies from the builder
47
+ COPY --from=base /usr/local/lib/python3.12/site-packages /usr/local/lib/python3.12/site-packages
48
+ COPY --from=base /usr/local/bin /usr/local/bin
49
+
50
+ # Reapply the environment variables for runtime and module resolution
51
+ ENV PYTHONUNBUFFERED=1
52
+ ENV PYTHONPATH="$PYTHONPATH:/code"
53
+
54
+ # Recreate history and Huggingface cache directories (so they can be mapped via Docker Compose)
55
+ RUN mkdir -p /root/history
56
+ ENV HISTFILE=/root/history/.bash_history
57
+ ENV PROMPT_COMMAND="history -a"
58
+
59
+ RUN mkdir -p /huggingface_cache
60
+ ENV HF_HOME="/huggingface_cache"
61
+
62
+ # Copy the rest of your application code
63
+ COPY . .
64
+
65
+ # Expose your service port
66
+ EXPOSE 8000
67
+
68
+ # Final command to run your app
69
+ CMD ["uvicorn", "server:app", "--host", "0.0.0.0", "--port", "8000"]
api/poetry.lock ADDED
@@ -0,0 +1,1000 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # This file is automatically @generated by Poetry 2.1.3 and should not be changed by hand.
2
+
3
+ [[package]]
4
+ name = "annotated-types"
5
+ version = "0.7.0"
6
+ description = "Reusable constraint types to use with typing.Annotated"
7
+ optional = false
8
+ python-versions = ">=3.8"
9
+ groups = ["main"]
10
+ files = [
11
+ {file = "annotated_types-0.7.0-py3-none-any.whl", hash = "sha256:1f02e8b43a8fbbc3f3e0d4f0f4bfc8131bcb4eebe8849b8e5c773f3a1c582a53"},
12
+ {file = "annotated_types-0.7.0.tar.gz", hash = "sha256:aff07c09a53a08bc8cfccb9c85b05f1aa9a2a6f23728d790723543408344ce89"},
13
+ ]
14
+
15
+ [[package]]
16
+ name = "anyio"
17
+ version = "4.9.0"
18
+ description = "High level compatibility layer for multiple asynchronous event loop implementations"
19
+ optional = false
20
+ python-versions = ">=3.9"
21
+ groups = ["main"]
22
+ files = [
23
+ {file = "anyio-4.9.0-py3-none-any.whl", hash = "sha256:9f76d541cad6e36af7beb62e978876f3b41e3e04f2c1fbf0884604c0a9c4d93c"},
24
+ {file = "anyio-4.9.0.tar.gz", hash = "sha256:673c0c244e15788651a4ff38710fea9675823028a6f08a5eda409e0c9840a028"},
25
+ ]
26
+
27
+ [package.dependencies]
28
+ idna = ">=2.8"
29
+ sniffio = ">=1.1"
30
+ typing_extensions = {version = ">=4.5", markers = "python_version < \"3.13\""}
31
+
32
+ [package.extras]
33
+ doc = ["Sphinx (>=8.2,<9.0)", "packaging", "sphinx-autodoc-typehints (>=1.2.0)", "sphinx_rtd_theme"]
34
+ 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\""]
35
+ trio = ["trio (>=0.26.1)"]
36
+
37
+ [[package]]
38
+ name = "asyncio"
39
+ version = "3.4.3"
40
+ description = "reference implementation of PEP 3156"
41
+ optional = false
42
+ python-versions = "*"
43
+ groups = ["main"]
44
+ files = [
45
+ {file = "asyncio-3.4.3-cp33-none-win32.whl", hash = "sha256:b62c9157d36187eca799c378e572c969f0da87cd5fc42ca372d92cdb06e7e1de"},
46
+ {file = "asyncio-3.4.3-cp33-none-win_amd64.whl", hash = "sha256:c46a87b48213d7464f22d9a497b9eef8c1928b68320a2fa94240f969f6fec08c"},
47
+ {file = "asyncio-3.4.3-py3-none-any.whl", hash = "sha256:c4d18b22701821de07bd6aea8b53d21449ec0ec5680645e5317062ea21817d2d"},
48
+ {file = "asyncio-3.4.3.tar.gz", hash = "sha256:83360ff8bc97980e4ff25c964c7bd3923d333d177aa4f7fb736b019f26c7cb41"},
49
+ ]
50
+
51
+ [[package]]
52
+ name = "certifi"
53
+ version = "2025.1.31"
54
+ description = "Python package for providing Mozilla's CA Bundle."
55
+ optional = false
56
+ python-versions = ">=3.6"
57
+ groups = ["main"]
58
+ files = [
59
+ {file = "certifi-2025.1.31-py3-none-any.whl", hash = "sha256:ca78db4565a652026a4db2bcdf68f2fb589ea80d0be70e03929ed730746b84fe"},
60
+ {file = "certifi-2025.1.31.tar.gz", hash = "sha256:3d5da6925056f6f18f119200434a4780a94263f10d1c21d032a6f6b2baa20651"},
61
+ ]
62
+
63
+ [[package]]
64
+ name = "click"
65
+ version = "8.1.8"
66
+ description = "Composable command line interface toolkit"
67
+ optional = false
68
+ python-versions = ">=3.7"
69
+ groups = ["main"]
70
+ files = [
71
+ {file = "click-8.1.8-py3-none-any.whl", hash = "sha256:63c132bbbed01578a06712a2d1f497bb62d9c1c0d329b7903a866228027263b2"},
72
+ {file = "click-8.1.8.tar.gz", hash = "sha256:ed53c9d8990d83c2a27deae68e4ee337473f6330c040a31d4225c9574d16096a"},
73
+ ]
74
+
75
+ [package.dependencies]
76
+ colorama = {version = "*", markers = "platform_system == \"Windows\""}
77
+
78
+ [[package]]
79
+ name = "colorama"
80
+ version = "0.4.6"
81
+ description = "Cross-platform colored terminal text."
82
+ optional = false
83
+ python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7"
84
+ groups = ["main", "dev"]
85
+ files = [
86
+ {file = "colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6"},
87
+ {file = "colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44"},
88
+ ]
89
+ markers = {main = "platform_system == \"Windows\" or sys_platform == \"win32\"", dev = "sys_platform == \"win32\""}
90
+
91
+ [[package]]
92
+ name = "debugpy"
93
+ version = "1.8.13"
94
+ description = "An implementation of the Debug Adapter Protocol for Python"
95
+ optional = false
96
+ python-versions = ">=3.8"
97
+ groups = ["main"]
98
+ files = [
99
+ {file = "debugpy-1.8.13-cp310-cp310-macosx_14_0_x86_64.whl", hash = "sha256:06859f68e817966723ffe046b896b1bd75c665996a77313370336ee9e1de3e90"},
100
+ {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"},
101
+ {file = "debugpy-1.8.13-cp310-cp310-win32.whl", hash = "sha256:46abe0b821cad751fc1fb9f860fb2e68d75e2c5d360986d0136cd1db8cad4428"},
102
+ {file = "debugpy-1.8.13-cp310-cp310-win_amd64.whl", hash = "sha256:dc7b77f5d32674686a5f06955e4b18c0e41fb5a605f5b33cf225790f114cfeec"},
103
+ {file = "debugpy-1.8.13-cp311-cp311-macosx_14_0_universal2.whl", hash = "sha256:eee02b2ed52a563126c97bf04194af48f2fe1f68bb522a312b05935798e922ff"},
104
+ {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"},
105
+ {file = "debugpy-1.8.13-cp311-cp311-win32.whl", hash = "sha256:7d9a05efc6973b5aaf076d779cf3a6bbb1199e059a17738a2aa9d27a53bcc888"},
106
+ {file = "debugpy-1.8.13-cp311-cp311-win_amd64.whl", hash = "sha256:62f9b4a861c256f37e163ada8cf5a81f4c8d5148fc17ee31fb46813bd658cdcc"},
107
+ {file = "debugpy-1.8.13-cp312-cp312-macosx_14_0_universal2.whl", hash = "sha256:2b8de94c5c78aa0d0ed79023eb27c7c56a64c68217d881bee2ffbcb13951d0c1"},
108
+ {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"},
109
+ {file = "debugpy-1.8.13-cp312-cp312-win32.whl", hash = "sha256:3872ce5453b17837ef47fb9f3edc25085ff998ce63543f45ba7af41e7f7d370f"},
110
+ {file = "debugpy-1.8.13-cp312-cp312-win_amd64.whl", hash = "sha256:63ca7670563c320503fea26ac688988d9d6b9c6a12abc8a8cf2e7dd8e5f6b6ea"},
111
+ {file = "debugpy-1.8.13-cp313-cp313-macosx_14_0_universal2.whl", hash = "sha256:31abc9618be4edad0b3e3a85277bc9ab51a2d9f708ead0d99ffb5bb750e18503"},
112
+ {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"},
113
+ {file = "debugpy-1.8.13-cp313-cp313-win32.whl", hash = "sha256:5268ae7fdca75f526d04465931cb0bd24577477ff50e8bb03dab90983f4ebd02"},
114
+ {file = "debugpy-1.8.13-cp313-cp313-win_amd64.whl", hash = "sha256:79ce4ed40966c4c1631d0131606b055a5a2f8e430e3f7bf8fd3744b09943e8e8"},
115
+ {file = "debugpy-1.8.13-cp38-cp38-macosx_14_0_x86_64.whl", hash = "sha256:acf39a6e98630959763f9669feddee540745dfc45ad28dbc9bd1f9cd60639391"},
116
+ {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"},
117
+ {file = "debugpy-1.8.13-cp38-cp38-win32.whl", hash = "sha256:3dae443739c6b604802da9f3e09b0f45ddf1cf23c99161f3a1a8039f61a8bb89"},
118
+ {file = "debugpy-1.8.13-cp38-cp38-win_amd64.whl", hash = "sha256:ed93c3155fc1f888ab2b43626182174e457fc31b7781cd1845629303790b8ad1"},
119
+ {file = "debugpy-1.8.13-cp39-cp39-macosx_14_0_x86_64.whl", hash = "sha256:6fab771639332bd8ceb769aacf454a30d14d7a964f2012bf9c4e04c60f16e85b"},
120
+ {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"},
121
+ {file = "debugpy-1.8.13-cp39-cp39-win32.whl", hash = "sha256:f14d2c4efa1809da125ca62df41050d9c7cd9cb9e380a2685d1e453c4d450ccb"},
122
+ {file = "debugpy-1.8.13-cp39-cp39-win_amd64.whl", hash = "sha256:ea869fe405880327497e6945c09365922c79d2a1eed4c3ae04d77ac7ae34b2b5"},
123
+ {file = "debugpy-1.8.13-py2.py3-none-any.whl", hash = "sha256:d4ba115cdd0e3a70942bd562adba9ec8c651fe69ddde2298a1be296fc331906f"},
124
+ {file = "debugpy-1.8.13.tar.gz", hash = "sha256:837e7bef95bdefba426ae38b9a94821ebdc5bea55627879cd48165c90b9e50ce"},
125
+ ]
126
+
127
+ [[package]]
128
+ name = "distro"
129
+ version = "1.9.0"
130
+ description = "Distro - an OS platform information API"
131
+ optional = false
132
+ python-versions = ">=3.6"
133
+ groups = ["main"]
134
+ files = [
135
+ {file = "distro-1.9.0-py3-none-any.whl", hash = "sha256:7bffd925d65168f85027d8da9af6bddab658135b840670a223589bc0c8ef02b2"},
136
+ {file = "distro-1.9.0.tar.gz", hash = "sha256:2fa77c6fd8940f116ee1d6b94a2f90b13b5ea8d019b98bc8bafdcabcdd9bdbed"},
137
+ ]
138
+
139
+ [[package]]
140
+ name = "fastapi"
141
+ version = "0.115.12"
142
+ description = "FastAPI framework, high performance, easy to learn, fast to code, ready for production"
143
+ optional = false
144
+ python-versions = ">=3.8"
145
+ groups = ["main"]
146
+ files = [
147
+ {file = "fastapi-0.115.12-py3-none-any.whl", hash = "sha256:e94613d6c05e27be7ffebdd6ea5f388112e5e430c8f7d6494a9d1d88d43e814d"},
148
+ {file = "fastapi-0.115.12.tar.gz", hash = "sha256:1e2c2a2646905f9e83d32f04a3f86aff4a286669c6c950ca95b5fd68c2602681"},
149
+ ]
150
+
151
+ [package.dependencies]
152
+ 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"
153
+ starlette = ">=0.40.0,<0.47.0"
154
+ typing-extensions = ">=4.8.0"
155
+
156
+ [package.extras]
157
+ 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)"]
158
+ 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)"]
159
+
160
+ [[package]]
161
+ name = "h11"
162
+ version = "0.14.0"
163
+ description = "A pure-Python, bring-your-own-I/O implementation of HTTP/1.1"
164
+ optional = false
165
+ python-versions = ">=3.7"
166
+ groups = ["main"]
167
+ files = [
168
+ {file = "h11-0.14.0-py3-none-any.whl", hash = "sha256:e3fe4ac4b851c468cc8363d500db52c2ead036020723024a109d37346efaa761"},
169
+ {file = "h11-0.14.0.tar.gz", hash = "sha256:8f19fbbe99e72420ff35c00b27a34cb9937e902a8b810e2c88300c6f0a3b699d"},
170
+ ]
171
+
172
+ [[package]]
173
+ name = "httpcore"
174
+ version = "1.0.7"
175
+ description = "A minimal low-level HTTP client."
176
+ optional = false
177
+ python-versions = ">=3.8"
178
+ groups = ["main"]
179
+ files = [
180
+ {file = "httpcore-1.0.7-py3-none-any.whl", hash = "sha256:a3fff8f43dc260d5bd363d9f9cf1830fa3a458b332856f34282de498ed420edd"},
181
+ {file = "httpcore-1.0.7.tar.gz", hash = "sha256:8551cb62a169ec7162ac7be8d4817d561f60e08eaa485234898414bb5a8a0b4c"},
182
+ ]
183
+
184
+ [package.dependencies]
185
+ certifi = "*"
186
+ h11 = ">=0.13,<0.15"
187
+
188
+ [package.extras]
189
+ asyncio = ["anyio (>=4.0,<5.0)"]
190
+ http2 = ["h2 (>=3,<5)"]
191
+ socks = ["socksio (==1.*)"]
192
+ trio = ["trio (>=0.22.0,<1.0)"]
193
+
194
+ [[package]]
195
+ name = "httptools"
196
+ version = "0.6.4"
197
+ description = "A collection of framework independent HTTP protocol utils."
198
+ optional = false
199
+ python-versions = ">=3.8.0"
200
+ groups = ["main"]
201
+ files = [
202
+ {file = "httptools-0.6.4-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:3c73ce323711a6ffb0d247dcd5a550b8babf0f757e86a52558fe5b86d6fefcc0"},
203
+ {file = "httptools-0.6.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:345c288418f0944a6fe67be8e6afa9262b18c7626c3ef3c28adc5eabc06a68da"},
204
+ {file = "httptools-0.6.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:deee0e3343f98ee8047e9f4c5bc7cedbf69f5734454a94c38ee829fb2d5fa3c1"},
205
+ {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"},
206
+ {file = "httptools-0.6.4-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:90d96a385fa941283ebd231464045187a31ad932ebfa541be8edf5b3c2328959"},
207
+ {file = "httptools-0.6.4-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:59e724f8b332319e2875efd360e61ac07f33b492889284a3e05e6d13746876f4"},
208
+ {file = "httptools-0.6.4-cp310-cp310-win_amd64.whl", hash = "sha256:c26f313951f6e26147833fc923f78f95604bbec812a43e5ee37f26dc9e5a686c"},
209
+ {file = "httptools-0.6.4-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:f47f8ed67cc0ff862b84a1189831d1d33c963fb3ce1ee0c65d3b0cbe7b711069"},
210
+ {file = "httptools-0.6.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:0614154d5454c21b6410fdf5262b4a3ddb0f53f1e1721cfd59d55f32138c578a"},
211
+ {file = "httptools-0.6.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f8787367fbdfccae38e35abf7641dafc5310310a5987b689f4c32cc8cc3ee975"},
212
+ {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"},
213
+ {file = "httptools-0.6.4-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:40a5ec98d3f49904b9fe36827dcf1aadfef3b89e2bd05b0e35e94f97c2b14721"},
214
+ {file = "httptools-0.6.4-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:dacdd3d10ea1b4ca9df97a0a303cbacafc04b5cd375fa98732678151643d4988"},
215
+ {file = "httptools-0.6.4-cp311-cp311-win_amd64.whl", hash = "sha256:288cd628406cc53f9a541cfaf06041b4c71d751856bab45e3702191f931ccd17"},
216
+ {file = "httptools-0.6.4-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:df017d6c780287d5c80601dafa31f17bddb170232d85c066604d8558683711a2"},
217
+ {file = "httptools-0.6.4-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:85071a1e8c2d051b507161f6c3e26155b5c790e4e28d7f236422dbacc2a9cc44"},
218
+ {file = "httptools-0.6.4-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:69422b7f458c5af875922cdb5bd586cc1f1033295aa9ff63ee196a87519ac8e1"},
219
+ {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"},
220
+ {file = "httptools-0.6.4-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:ec4f178901fa1834d4a060320d2f3abc5c9e39766953d038f1458cb885f47e81"},
221
+ {file = "httptools-0.6.4-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:f9eb89ecf8b290f2e293325c646a211ff1c2493222798bb80a530c5e7502494f"},
222
+ {file = "httptools-0.6.4-cp312-cp312-win_amd64.whl", hash = "sha256:db78cb9ca56b59b016e64b6031eda5653be0589dba2b1b43453f6e8b405a0970"},
223
+ {file = "httptools-0.6.4-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:ade273d7e767d5fae13fa637f4d53b6e961fb7fd93c7797562663f0171c26660"},
224
+ {file = "httptools-0.6.4-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:856f4bc0478ae143bad54a4242fccb1f3f86a6e1be5548fecfd4102061b3a083"},
225
+ {file = "httptools-0.6.4-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:322d20ea9cdd1fa98bd6a74b77e2ec5b818abdc3d36695ab402a0de8ef2865a3"},
226
+ {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"},
227
+ {file = "httptools-0.6.4-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:342dd6946aa6bda4b8f18c734576106b8a31f2fe31492881a9a160ec84ff4bd5"},
228
+ {file = "httptools-0.6.4-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:4b36913ba52008249223042dca46e69967985fb4051951f94357ea681e1f5dc0"},
229
+ {file = "httptools-0.6.4-cp313-cp313-win_amd64.whl", hash = "sha256:28908df1b9bb8187393d5b5db91435ccc9c8e891657f9cbb42a2541b44c82fc8"},
230
+ {file = "httptools-0.6.4-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:d3f0d369e7ffbe59c4b6116a44d6a8eb4783aae027f2c0b366cf0aa964185dba"},
231
+ {file = "httptools-0.6.4-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:94978a49b8f4569ad607cd4946b759d90b285e39c0d4640c6b36ca7a3ddf2efc"},
232
+ {file = "httptools-0.6.4-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:40dc6a8e399e15ea525305a2ddba998b0af5caa2566bcd79dcbe8948181eeaff"},
233
+ {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"},
234
+ {file = "httptools-0.6.4-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:fc411e1c0a7dcd2f902c7c48cf079947a7e65b5485dea9decb82b9105ca71a43"},
235
+ {file = "httptools-0.6.4-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:d54efd20338ac52ba31e7da78e4a72570cf729fac82bc31ff9199bedf1dc7440"},
236
+ {file = "httptools-0.6.4-cp38-cp38-win_amd64.whl", hash = "sha256:df959752a0c2748a65ab5387d08287abf6779ae9165916fe053e68ae1fbdc47f"},
237
+ {file = "httptools-0.6.4-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:85797e37e8eeaa5439d33e556662cc370e474445d5fab24dcadc65a8ffb04003"},
238
+ {file = "httptools-0.6.4-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:db353d22843cf1028f43c3651581e4bb49374d85692a85f95f7b9a130e1b2cab"},
239
+ {file = "httptools-0.6.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d1ffd262a73d7c28424252381a5b854c19d9de5f56f075445d33919a637e3547"},
240
+ {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"},
241
+ {file = "httptools-0.6.4-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:aafe0f1918ed07b67c1e838f950b1c1fabc683030477e60b335649b8020e1076"},
242
+ {file = "httptools-0.6.4-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:0e563e54979e97b6d13f1bbc05a96109923e76b901f786a5eae36e99c01237bd"},
243
+ {file = "httptools-0.6.4-cp39-cp39-win_amd64.whl", hash = "sha256:b799de31416ecc589ad79dd85a0b2657a8fe39327944998dea368c1d4c9e55e6"},
244
+ {file = "httptools-0.6.4.tar.gz", hash = "sha256:4e93eee4add6493b59a5c514da98c939b244fce4a0d8879cd3f466562f4b7d5c"},
245
+ ]
246
+
247
+ [package.extras]
248
+ test = ["Cython (>=0.29.24)"]
249
+
250
+ [[package]]
251
+ name = "httpx"
252
+ version = "0.28.1"
253
+ description = "The next generation HTTP client."
254
+ optional = false
255
+ python-versions = ">=3.8"
256
+ groups = ["main"]
257
+ files = [
258
+ {file = "httpx-0.28.1-py3-none-any.whl", hash = "sha256:d909fcccc110f8c7faf814ca82a9a4d816bc5a6dbfea25d6591d6985b8ba59ad"},
259
+ {file = "httpx-0.28.1.tar.gz", hash = "sha256:75e98c5f16b0f35b567856f597f06ff2270a374470a5c2392242528e3e3e42fc"},
260
+ ]
261
+
262
+ [package.dependencies]
263
+ anyio = "*"
264
+ certifi = "*"
265
+ httpcore = "==1.*"
266
+ idna = "*"
267
+
268
+ [package.extras]
269
+ brotli = ["brotli ; platform_python_implementation == \"CPython\"", "brotlicffi ; platform_python_implementation != \"CPython\""]
270
+ cli = ["click (==8.*)", "pygments (==2.*)", "rich (>=10,<14)"]
271
+ http2 = ["h2 (>=3,<5)"]
272
+ socks = ["socksio (==1.*)"]
273
+ zstd = ["zstandard (>=0.18.0)"]
274
+
275
+ [[package]]
276
+ name = "idna"
277
+ version = "3.10"
278
+ description = "Internationalized Domain Names in Applications (IDNA)"
279
+ optional = false
280
+ python-versions = ">=3.6"
281
+ groups = ["main"]
282
+ files = [
283
+ {file = "idna-3.10-py3-none-any.whl", hash = "sha256:946d195a0d259cbba61165e88e65941f16e9b36ea6ddb97f00452bae8b1287d3"},
284
+ {file = "idna-3.10.tar.gz", hash = "sha256:12f65c9b470abda6dc35cf8e63cc574b1c52b11df2c86030af0ac09b01b13ea9"},
285
+ ]
286
+
287
+ [package.extras]
288
+ all = ["flake8 (>=7.1.1)", "mypy (>=1.11.2)", "pytest (>=8.3.2)", "ruff (>=0.6.2)"]
289
+
290
+ [[package]]
291
+ name = "iniconfig"
292
+ version = "2.1.0"
293
+ description = "brain-dead simple config-ini parsing"
294
+ optional = false
295
+ python-versions = ">=3.8"
296
+ groups = ["dev"]
297
+ files = [
298
+ {file = "iniconfig-2.1.0-py3-none-any.whl", hash = "sha256:9deba5723312380e77435581c6bf4935c94cbfab9b1ed33ef8d238ea168eb760"},
299
+ {file = "iniconfig-2.1.0.tar.gz", hash = "sha256:3abbd2e30b36733fee78f9c7f7308f2d0050e88f0087fd25c2645f63c773e1c7"},
300
+ ]
301
+
302
+ [[package]]
303
+ name = "jiter"
304
+ version = "0.9.0"
305
+ description = "Fast iterable JSON parser."
306
+ optional = false
307
+ python-versions = ">=3.8"
308
+ groups = ["main"]
309
+ files = [
310
+ {file = "jiter-0.9.0-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:816ec9b60fdfd1fec87da1d7ed46c66c44ffec37ab2ef7de5b147b2fce3fd5ad"},
311
+ {file = "jiter-0.9.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:9b1d3086f8a3ee0194ecf2008cf81286a5c3e540d977fa038ff23576c023c0ea"},
312
+ {file = "jiter-0.9.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1339f839b91ae30b37c409bf16ccd3dc453e8b8c3ed4bd1d6a567193651a4a51"},
313
+ {file = "jiter-0.9.0-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:ffba79584b3b670fefae66ceb3a28822365d25b7bf811e030609a3d5b876f538"},
314
+ {file = "jiter-0.9.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5cfc7d0a8e899089d11f065e289cb5b2daf3d82fbe028f49b20d7b809193958d"},
315
+ {file = "jiter-0.9.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e00a1a2bbfaaf237e13c3d1592356eab3e9015d7efd59359ac8b51eb56390a12"},
316
+ {file = "jiter-0.9.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d1d9870561eb26b11448854dce0ff27a9a27cb616b632468cafc938de25e9e51"},
317
+ {file = "jiter-0.9.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:9872aeff3f21e437651df378cb75aeb7043e5297261222b6441a620218b58708"},
318
+ {file = "jiter-0.9.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:1fd19112d1049bdd47f17bfbb44a2c0001061312dcf0e72765bfa8abd4aa30e5"},
319
+ {file = "jiter-0.9.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:6ef5da104664e526836070e4a23b5f68dec1cc673b60bf1edb1bfbe8a55d0678"},
320
+ {file = "jiter-0.9.0-cp310-cp310-win32.whl", hash = "sha256:cb12e6d65ebbefe5518de819f3eda53b73187b7089040b2d17f5b39001ff31c4"},
321
+ {file = "jiter-0.9.0-cp310-cp310-win_amd64.whl", hash = "sha256:c43ca669493626d8672be3b645dbb406ef25af3f4b6384cfd306da7eb2e70322"},
322
+ {file = "jiter-0.9.0-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:6c4d99c71508912a7e556d631768dcdef43648a93660670986916b297f1c54af"},
323
+ {file = "jiter-0.9.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:8f60fb8ce7df529812bf6c625635a19d27f30806885139e367af93f6e734ef58"},
324
+ {file = "jiter-0.9.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:51c4e1a4f8ea84d98b7b98912aa4290ac3d1eabfde8e3c34541fae30e9d1f08b"},
325
+ {file = "jiter-0.9.0-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:5f4c677c424dc76684fea3e7285a7a2a7493424bea89ac441045e6a1fb1d7b3b"},
326
+ {file = "jiter-0.9.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:2221176dfec87f3470b21e6abca056e6b04ce9bff72315cb0b243ca9e835a4b5"},
327
+ {file = "jiter-0.9.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3c7adb66f899ffa25e3c92bfcb593391ee1947dbdd6a9a970e0d7e713237d572"},
328
+ {file = "jiter-0.9.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c98d27330fdfb77913c1097a7aab07f38ff2259048949f499c9901700789ac15"},
329
+ {file = "jiter-0.9.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:eda3f8cc74df66892b1d06b5d41a71670c22d95a1ca2cbab73654745ce9d0419"},
330
+ {file = "jiter-0.9.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:dd5ab5ddc11418dce28343123644a100f487eaccf1de27a459ab36d6cca31043"},
331
+ {file = "jiter-0.9.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:42f8a68a69f047b310319ef8e2f52fdb2e7976fb3313ef27df495cf77bcad965"},
332
+ {file = "jiter-0.9.0-cp311-cp311-win32.whl", hash = "sha256:a25519efb78a42254d59326ee417d6f5161b06f5da827d94cf521fed961b1ff2"},
333
+ {file = "jiter-0.9.0-cp311-cp311-win_amd64.whl", hash = "sha256:923b54afdd697dfd00d368b7ccad008cccfeb1efb4e621f32860c75e9f25edbd"},
334
+ {file = "jiter-0.9.0-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:7b46249cfd6c48da28f89eb0be3f52d6fdb40ab88e2c66804f546674e539ec11"},
335
+ {file = "jiter-0.9.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:609cf3c78852f1189894383cf0b0b977665f54cb38788e3e6b941fa6d982c00e"},
336
+ {file = "jiter-0.9.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d726a3890a54561e55a9c5faea1f7655eda7f105bd165067575ace6e65f80bb2"},
337
+ {file = "jiter-0.9.0-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:2e89dc075c1fef8fa9be219e249f14040270dbc507df4215c324a1839522ea75"},
338
+ {file = "jiter-0.9.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:04e8ffa3c353b1bc4134f96f167a2082494351e42888dfcf06e944f2729cbe1d"},
339
+ {file = "jiter-0.9.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:203f28a72a05ae0e129b3ed1f75f56bc419d5f91dfacd057519a8bd137b00c42"},
340
+ {file = "jiter-0.9.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fca1a02ad60ec30bb230f65bc01f611c8608b02d269f998bc29cca8619a919dc"},
341
+ {file = "jiter-0.9.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:237e5cee4d5d2659aaf91bbf8ec45052cc217d9446070699441a91b386ae27dc"},
342
+ {file = "jiter-0.9.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:528b6b71745e7326eed73c53d4aa57e2a522242320b6f7d65b9c5af83cf49b6e"},
343
+ {file = "jiter-0.9.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:9f48e86b57bc711eb5acdfd12b6cb580a59cc9a993f6e7dcb6d8b50522dcd50d"},
344
+ {file = "jiter-0.9.0-cp312-cp312-win32.whl", hash = "sha256:699edfde481e191d81f9cf6d2211debbfe4bd92f06410e7637dffb8dd5dfde06"},
345
+ {file = "jiter-0.9.0-cp312-cp312-win_amd64.whl", hash = "sha256:099500d07b43f61d8bd780466d429c45a7b25411b334c60ca875fa775f68ccb0"},
346
+ {file = "jiter-0.9.0-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:2764891d3f3e8b18dce2cff24949153ee30c9239da7c00f032511091ba688ff7"},
347
+ {file = "jiter-0.9.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:387b22fbfd7a62418d5212b4638026d01723761c75c1c8232a8b8c37c2f1003b"},
348
+ {file = "jiter-0.9.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:40d8da8629ccae3606c61d9184970423655fb4e33d03330bcdfe52d234d32f69"},
349
+ {file = "jiter-0.9.0-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:a1be73d8982bdc278b7b9377426a4b44ceb5c7952073dd7488e4ae96b88e1103"},
350
+ {file = "jiter-0.9.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:2228eaaaa111ec54b9e89f7481bffb3972e9059301a878d085b2b449fbbde635"},
351
+ {file = "jiter-0.9.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:11509bfecbc319459647d4ac3fd391d26fdf530dad00c13c4dadabf5b81f01a4"},
352
+ {file = "jiter-0.9.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3f22238da568be8bbd8e0650e12feeb2cfea15eda4f9fc271d3b362a4fa0604d"},
353
+ {file = "jiter-0.9.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:17f5d55eb856597607562257c8e36c42bc87f16bef52ef7129b7da11afc779f3"},
354
+ {file = "jiter-0.9.0-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:6a99bed9fbb02f5bed416d137944419a69aa4c423e44189bc49718859ea83bc5"},
355
+ {file = "jiter-0.9.0-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:e057adb0cd1bd39606100be0eafe742de2de88c79df632955b9ab53a086b3c8d"},
356
+ {file = "jiter-0.9.0-cp313-cp313-win32.whl", hash = "sha256:f7e6850991f3940f62d387ccfa54d1a92bd4bb9f89690b53aea36b4364bcab53"},
357
+ {file = "jiter-0.9.0-cp313-cp313-win_amd64.whl", hash = "sha256:c8ae3bf27cd1ac5e6e8b7a27487bf3ab5f82318211ec2e1346a5b058756361f7"},
358
+ {file = "jiter-0.9.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:f0b2827fb88dda2cbecbbc3e596ef08d69bda06c6f57930aec8e79505dc17001"},
359
+ {file = "jiter-0.9.0-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:062b756ceb1d40b0b28f326cba26cfd575a4918415b036464a52f08632731e5a"},
360
+ {file = "jiter-0.9.0-cp313-cp313t-win_amd64.whl", hash = "sha256:6f7838bc467ab7e8ef9f387bd6de195c43bad82a569c1699cb822f6609dd4cdf"},
361
+ {file = "jiter-0.9.0-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:4a2d16360d0642cd68236f931b85fe50288834c383492e4279d9f1792e309571"},
362
+ {file = "jiter-0.9.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:e84ed1c9c9ec10bbb8c37f450077cbe3c0d4e8c2b19f0a49a60ac7ace73c7452"},
363
+ {file = "jiter-0.9.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9f3c848209ccd1bfa344a1240763975ca917de753c7875c77ec3034f4151d06c"},
364
+ {file = "jiter-0.9.0-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:7825f46e50646bee937e0f849d14ef3a417910966136f59cd1eb848b8b5bb3e4"},
365
+ {file = "jiter-0.9.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d82a811928b26d1a6311a886b2566f68ccf2b23cf3bfed042e18686f1f22c2d7"},
366
+ {file = "jiter-0.9.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0c058ecb51763a67f019ae423b1cbe3fa90f7ee6280c31a1baa6ccc0c0e2d06e"},
367
+ {file = "jiter-0.9.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9897115ad716c48f0120c1f0c4efae348ec47037319a6c63b2d7838bb53aaef4"},
368
+ {file = "jiter-0.9.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:351f4c90a24c4fb8c87c6a73af2944c440494ed2bea2094feecacb75c50398ae"},
369
+ {file = "jiter-0.9.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:d45807b0f236c485e1e525e2ce3a854807dfe28ccf0d013dd4a563395e28008a"},
370
+ {file = "jiter-0.9.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:1537a890724ba00fdba21787010ac6f24dad47f763410e9e1093277913592784"},
371
+ {file = "jiter-0.9.0-cp38-cp38-win32.whl", hash = "sha256:e3630ec20cbeaddd4b65513fa3857e1b7c4190d4481ef07fb63d0fad59033321"},
372
+ {file = "jiter-0.9.0-cp38-cp38-win_amd64.whl", hash = "sha256:2685f44bf80e95f8910553bf2d33b9c87bf25fceae6e9f0c1355f75d2922b0ee"},
373
+ {file = "jiter-0.9.0-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:9ef340fae98065071ccd5805fe81c99c8f80484e820e40043689cf97fb66b3e2"},
374
+ {file = "jiter-0.9.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:efb767d92c63b2cd9ec9f24feeb48f49574a713870ec87e9ba0c2c6e9329c3e2"},
375
+ {file = "jiter-0.9.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:113f30f87fb1f412510c6d7ed13e91422cfd329436364a690c34c8b8bd880c42"},
376
+ {file = "jiter-0.9.0-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:8793b6df019b988526f5a633fdc7456ea75e4a79bd8396a3373c371fc59f5c9b"},
377
+ {file = "jiter-0.9.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:7a9aaa5102dba4e079bb728076fadd5a2dca94c05c04ce68004cfd96f128ea34"},
378
+ {file = "jiter-0.9.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d838650f6ebaf4ccadfb04522463e74a4c378d7e667e0eb1865cfe3990bfac49"},
379
+ {file = "jiter-0.9.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c0194f813efdf4b8865ad5f5c5f50f8566df7d770a82c51ef593d09e0b347020"},
380
+ {file = "jiter-0.9.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:a7954a401d0a8a0b8bc669199db78af435aae1e3569187c2939c477c53cb6a0a"},
381
+ {file = "jiter-0.9.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:4feafe787eb8a8d98168ab15637ca2577f6ddf77ac6c8c66242c2d028aa5420e"},
382
+ {file = "jiter-0.9.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:27cd1f2e8bb377f31d3190b34e4328d280325ad7ef55c6ac9abde72f79e84d2e"},
383
+ {file = "jiter-0.9.0-cp39-cp39-win32.whl", hash = "sha256:161d461dcbe658cf0bd0aa375b30a968b087cdddc624fc585f3867c63c6eca95"},
384
+ {file = "jiter-0.9.0-cp39-cp39-win_amd64.whl", hash = "sha256:e8b36d8a16a61993be33e75126ad3d8aa29cf450b09576f3c427d27647fcb4aa"},
385
+ {file = "jiter-0.9.0.tar.gz", hash = "sha256:aadba0964deb424daa24492abc3d229c60c4a31bfee205aedbf1acc7639d7893"},
386
+ ]
387
+
388
+ [[package]]
389
+ name = "openai"
390
+ version = "1.77.0"
391
+ description = "The official Python library for the openai API"
392
+ optional = false
393
+ python-versions = ">=3.8"
394
+ groups = ["main"]
395
+ files = [
396
+ {file = "openai-1.77.0-py3-none-any.whl", hash = "sha256:07706e91eb71631234996989a8ea991d5ee56f0744ef694c961e0824d4f39218"},
397
+ {file = "openai-1.77.0.tar.gz", hash = "sha256:897969f927f0068b8091b4b041d1f8175bcf124f7ea31bab418bf720971223bc"},
398
+ ]
399
+
400
+ [package.dependencies]
401
+ anyio = ">=3.5.0,<5"
402
+ distro = ">=1.7.0,<2"
403
+ httpx = ">=0.23.0,<1"
404
+ jiter = ">=0.4.0,<1"
405
+ pydantic = ">=1.9.0,<3"
406
+ sniffio = "*"
407
+ tqdm = ">4"
408
+ typing-extensions = ">=4.11,<5"
409
+
410
+ [package.extras]
411
+ datalib = ["numpy (>=1)", "pandas (>=1.2.3)", "pandas-stubs (>=1.1.0.11)"]
412
+ realtime = ["websockets (>=13,<16)"]
413
+ voice-helpers = ["numpy (>=2.0.2)", "sounddevice (>=0.5.1)"]
414
+
415
+ [[package]]
416
+ name = "packaging"
417
+ version = "24.2"
418
+ description = "Core utilities for Python packages"
419
+ optional = false
420
+ python-versions = ">=3.8"
421
+ groups = ["dev"]
422
+ files = [
423
+ {file = "packaging-24.2-py3-none-any.whl", hash = "sha256:09abb1bccd265c01f4a3aa3f7a7db064b36514d2cba19a2f694fe6150451a759"},
424
+ {file = "packaging-24.2.tar.gz", hash = "sha256:c228a6dc5e932d346bc5739379109d49e8853dd8223571c7c5b55260edc0b97f"},
425
+ ]
426
+
427
+ [[package]]
428
+ name = "pluggy"
429
+ version = "1.5.0"
430
+ description = "plugin and hook calling mechanisms for python"
431
+ optional = false
432
+ python-versions = ">=3.8"
433
+ groups = ["dev"]
434
+ files = [
435
+ {file = "pluggy-1.5.0-py3-none-any.whl", hash = "sha256:44e1ad92c8ca002de6377e165f3e0f1be63266ab4d554740532335b9d75ea669"},
436
+ {file = "pluggy-1.5.0.tar.gz", hash = "sha256:2cffa88e94fdc978c4c574f15f9e59b7f4201d439195c3715ca9e2486f1d0cf1"},
437
+ ]
438
+
439
+ [package.extras]
440
+ dev = ["pre-commit", "tox"]
441
+ testing = ["pytest", "pytest-benchmark"]
442
+
443
+ [[package]]
444
+ name = "pydantic"
445
+ version = "2.11.3"
446
+ description = "Data validation using Python type hints"
447
+ optional = false
448
+ python-versions = ">=3.9"
449
+ groups = ["main"]
450
+ files = [
451
+ {file = "pydantic-2.11.3-py3-none-any.whl", hash = "sha256:a082753436a07f9ba1289c6ffa01cd93db3548776088aa917cc43b63f68fa60f"},
452
+ {file = "pydantic-2.11.3.tar.gz", hash = "sha256:7471657138c16adad9322fe3070c0116dd6c3ad8d649300e3cbdfe91f4db4ec3"},
453
+ ]
454
+
455
+ [package.dependencies]
456
+ annotated-types = ">=0.6.0"
457
+ pydantic-core = "2.33.1"
458
+ typing-extensions = ">=4.12.2"
459
+ typing-inspection = ">=0.4.0"
460
+
461
+ [package.extras]
462
+ email = ["email-validator (>=2.0.0)"]
463
+ timezone = ["tzdata ; python_version >= \"3.9\" and platform_system == \"Windows\""]
464
+
465
+ [[package]]
466
+ name = "pydantic-core"
467
+ version = "2.33.1"
468
+ description = "Core functionality for Pydantic validation and serialization"
469
+ optional = false
470
+ python-versions = ">=3.9"
471
+ groups = ["main"]
472
+ files = [
473
+ {file = "pydantic_core-2.33.1-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:3077cfdb6125cc8dab61b155fdd714663e401f0e6883f9632118ec12cf42df26"},
474
+ {file = "pydantic_core-2.33.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:8ffab8b2908d152e74862d276cf5017c81a2f3719f14e8e3e8d6b83fda863927"},
475
+ {file = "pydantic_core-2.33.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5183e4f6a2d468787243ebcd70cf4098c247e60d73fb7d68d5bc1e1beaa0c4db"},
476
+ {file = "pydantic_core-2.33.1-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:398a38d323f37714023be1e0285765f0a27243a8b1506b7b7de87b647b517e48"},
477
+ {file = "pydantic_core-2.33.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:87d3776f0001b43acebfa86f8c64019c043b55cc5a6a2e313d728b5c95b46969"},
478
+ {file = "pydantic_core-2.33.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c566dd9c5f63d22226409553531f89de0cac55397f2ab8d97d6f06cfce6d947e"},
479
+ {file = "pydantic_core-2.33.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a0d5f3acc81452c56895e90643a625302bd6be351e7010664151cc55b7b97f89"},
480
+ {file = "pydantic_core-2.33.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:d3a07fadec2a13274a8d861d3d37c61e97a816beae717efccaa4b36dfcaadcde"},
481
+ {file = "pydantic_core-2.33.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:f99aeda58dce827f76963ee87a0ebe75e648c72ff9ba1174a253f6744f518f65"},
482
+ {file = "pydantic_core-2.33.1-cp310-cp310-musllinux_1_1_armv7l.whl", hash = "sha256:902dbc832141aa0ec374f4310f1e4e7febeebc3256f00dc359a9ac3f264a45dc"},
483
+ {file = "pydantic_core-2.33.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:fe44d56aa0b00d66640aa84a3cbe80b7a3ccdc6f0b1ca71090696a6d4777c091"},
484
+ {file = "pydantic_core-2.33.1-cp310-cp310-win32.whl", hash = "sha256:ed3eb16d51257c763539bde21e011092f127a2202692afaeaccb50db55a31383"},
485
+ {file = "pydantic_core-2.33.1-cp310-cp310-win_amd64.whl", hash = "sha256:694ad99a7f6718c1a498dc170ca430687a39894a60327f548e02a9c7ee4b6504"},
486
+ {file = "pydantic_core-2.33.1-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:6e966fc3caaf9f1d96b349b0341c70c8d6573bf1bac7261f7b0ba88f96c56c24"},
487
+ {file = "pydantic_core-2.33.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:bfd0adeee563d59c598ceabddf2c92eec77abcb3f4a391b19aa7366170bd9e30"},
488
+ {file = "pydantic_core-2.33.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:91815221101ad3c6b507804178a7bb5cb7b2ead9ecd600041669c8d805ebd595"},
489
+ {file = "pydantic_core-2.33.1-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:9fea9c1869bb4742d174a57b4700c6dadea951df8b06de40c2fedb4f02931c2e"},
490
+ {file = "pydantic_core-2.33.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1d20eb4861329bb2484c021b9d9a977566ab16d84000a57e28061151c62b349a"},
491
+ {file = "pydantic_core-2.33.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0fb935c5591573ae3201640579f30128ccc10739b45663f93c06796854405505"},
492
+ {file = "pydantic_core-2.33.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c964fd24e6166420d18fb53996d8c9fd6eac9bf5ae3ec3d03015be4414ce497f"},
493
+ {file = "pydantic_core-2.33.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:681d65e9011f7392db5aa002b7423cc442d6a673c635668c227c6c8d0e5a4f77"},
494
+ {file = "pydantic_core-2.33.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:e100c52f7355a48413e2999bfb4e139d2977a904495441b374f3d4fb4a170961"},
495
+ {file = "pydantic_core-2.33.1-cp311-cp311-musllinux_1_1_armv7l.whl", hash = "sha256:048831bd363490be79acdd3232f74a0e9951b11b2b4cc058aeb72b22fdc3abe1"},
496
+ {file = "pydantic_core-2.33.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:bdc84017d28459c00db6f918a7272a5190bec3090058334e43a76afb279eac7c"},
497
+ {file = "pydantic_core-2.33.1-cp311-cp311-win32.whl", hash = "sha256:32cd11c5914d1179df70406427097c7dcde19fddf1418c787540f4b730289896"},
498
+ {file = "pydantic_core-2.33.1-cp311-cp311-win_amd64.whl", hash = "sha256:2ea62419ba8c397e7da28a9170a16219d310d2cf4970dbc65c32faf20d828c83"},
499
+ {file = "pydantic_core-2.33.1-cp311-cp311-win_arm64.whl", hash = "sha256:fc903512177361e868bc1f5b80ac8c8a6e05fcdd574a5fb5ffeac5a9982b9e89"},
500
+ {file = "pydantic_core-2.33.1-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:1293d7febb995e9d3ec3ea09caf1a26214eec45b0f29f6074abb004723fc1de8"},
501
+ {file = "pydantic_core-2.33.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:99b56acd433386c8f20be5c4000786d1e7ca0523c8eefc995d14d79c7a081498"},
502
+ {file = "pydantic_core-2.33.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:35a5ec3fa8c2fe6c53e1b2ccc2454398f95d5393ab398478f53e1afbbeb4d939"},
503
+ {file = "pydantic_core-2.33.1-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:b172f7b9d2f3abc0efd12e3386f7e48b576ef309544ac3a63e5e9cdd2e24585d"},
504
+ {file = "pydantic_core-2.33.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9097b9f17f91eea659b9ec58148c0747ec354a42f7389b9d50701610d86f812e"},
505
+ {file = "pydantic_core-2.33.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cc77ec5b7e2118b152b0d886c7514a4653bcb58c6b1d760134a9fab915f777b3"},
506
+ {file = "pydantic_core-2.33.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d5e3d15245b08fa4a84cefc6c9222e6f37c98111c8679fbd94aa145f9a0ae23d"},
507
+ {file = "pydantic_core-2.33.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:ef99779001d7ac2e2461d8ab55d3373fe7315caefdbecd8ced75304ae5a6fc6b"},
508
+ {file = "pydantic_core-2.33.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:fc6bf8869e193855e8d91d91f6bf59699a5cdfaa47a404e278e776dd7f168b39"},
509
+ {file = "pydantic_core-2.33.1-cp312-cp312-musllinux_1_1_armv7l.whl", hash = "sha256:b1caa0bc2741b043db7823843e1bde8aaa58a55a58fda06083b0569f8b45693a"},
510
+ {file = "pydantic_core-2.33.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:ec259f62538e8bf364903a7d0d0239447059f9434b284f5536e8402b7dd198db"},
511
+ {file = "pydantic_core-2.33.1-cp312-cp312-win32.whl", hash = "sha256:e14f369c98a7c15772b9da98987f58e2b509a93235582838bd0d1d8c08b68fda"},
512
+ {file = "pydantic_core-2.33.1-cp312-cp312-win_amd64.whl", hash = "sha256:1c607801d85e2e123357b3893f82c97a42856192997b95b4d8325deb1cd0c5f4"},
513
+ {file = "pydantic_core-2.33.1-cp312-cp312-win_arm64.whl", hash = "sha256:8d13f0276806ee722e70a1c93da19748594f19ac4299c7e41237fc791d1861ea"},
514
+ {file = "pydantic_core-2.33.1-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:70af6a21237b53d1fe7b9325b20e65cbf2f0a848cf77bed492b029139701e66a"},
515
+ {file = "pydantic_core-2.33.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:282b3fe1bbbe5ae35224a0dbd05aed9ccabccd241e8e6b60370484234b456266"},
516
+ {file = "pydantic_core-2.33.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4b315e596282bbb5822d0c7ee9d255595bd7506d1cb20c2911a4da0b970187d3"},
517
+ {file = "pydantic_core-2.33.1-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:1dfae24cf9921875ca0ca6a8ecb4bb2f13c855794ed0d468d6abbec6e6dcd44a"},
518
+ {file = "pydantic_core-2.33.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:6dd8ecfde08d8bfadaea669e83c63939af76f4cf5538a72597016edfa3fad516"},
519
+ {file = "pydantic_core-2.33.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2f593494876eae852dc98c43c6f260f45abdbfeec9e4324e31a481d948214764"},
520
+ {file = "pydantic_core-2.33.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:948b73114f47fd7016088e5186d13faf5e1b2fe83f5e320e371f035557fd264d"},
521
+ {file = "pydantic_core-2.33.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:e11f3864eb516af21b01e25fac915a82e9ddad3bb0fb9e95a246067398b435a4"},
522
+ {file = "pydantic_core-2.33.1-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:549150be302428b56fdad0c23c2741dcdb5572413776826c965619a25d9c6bde"},
523
+ {file = "pydantic_core-2.33.1-cp313-cp313-musllinux_1_1_armv7l.whl", hash = "sha256:495bc156026efafd9ef2d82372bd38afce78ddd82bf28ef5276c469e57c0c83e"},
524
+ {file = "pydantic_core-2.33.1-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:ec79de2a8680b1a67a07490bddf9636d5c2fab609ba8c57597e855fa5fa4dacd"},
525
+ {file = "pydantic_core-2.33.1-cp313-cp313-win32.whl", hash = "sha256:ee12a7be1742f81b8a65b36c6921022301d466b82d80315d215c4c691724986f"},
526
+ {file = "pydantic_core-2.33.1-cp313-cp313-win_amd64.whl", hash = "sha256:ede9b407e39949d2afc46385ce6bd6e11588660c26f80576c11c958e6647bc40"},
527
+ {file = "pydantic_core-2.33.1-cp313-cp313-win_arm64.whl", hash = "sha256:aa687a23d4b7871a00e03ca96a09cad0f28f443690d300500603bd0adba4b523"},
528
+ {file = "pydantic_core-2.33.1-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:401d7b76e1000d0dd5538e6381d28febdcacb097c8d340dde7d7fc6e13e9f95d"},
529
+ {file = "pydantic_core-2.33.1-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7aeb055a42d734c0255c9e489ac67e75397d59c6fbe60d155851e9782f276a9c"},
530
+ {file = "pydantic_core-2.33.1-cp313-cp313t-win_amd64.whl", hash = "sha256:338ea9b73e6e109f15ab439e62cb3b78aa752c7fd9536794112e14bee02c8d18"},
531
+ {file = "pydantic_core-2.33.1-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:5ab77f45d33d264de66e1884fca158bc920cb5e27fd0764a72f72f5756ae8bdb"},
532
+ {file = "pydantic_core-2.33.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:e7aaba1b4b03aaea7bb59e1b5856d734be011d3e6d98f5bcaa98cb30f375f2ad"},
533
+ {file = "pydantic_core-2.33.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7fb66263e9ba8fea2aa85e1e5578980d127fb37d7f2e292773e7bc3a38fb0c7b"},
534
+ {file = "pydantic_core-2.33.1-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:3f2648b9262607a7fb41d782cc263b48032ff7a03a835581abbf7a3bec62bcf5"},
535
+ {file = "pydantic_core-2.33.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:723c5630c4259400818b4ad096735a829074601805d07f8cafc366d95786d331"},
536
+ {file = "pydantic_core-2.33.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d100e3ae783d2167782391e0c1c7a20a31f55f8015f3293647544df3f9c67824"},
537
+ {file = "pydantic_core-2.33.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:177d50460bc976a0369920b6c744d927b0ecb8606fb56858ff542560251b19e5"},
538
+ {file = "pydantic_core-2.33.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:a3edde68d1a1f9af1273b2fe798997b33f90308fb6d44d8550c89fc6a3647cf6"},
539
+ {file = "pydantic_core-2.33.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:a62c3c3ef6a7e2c45f7853b10b5bc4ddefd6ee3cd31024754a1a5842da7d598d"},
540
+ {file = "pydantic_core-2.33.1-cp39-cp39-musllinux_1_1_armv7l.whl", hash = "sha256:c91dbb0ab683fa0cd64a6e81907c8ff41d6497c346890e26b23de7ee55353f96"},
541
+ {file = "pydantic_core-2.33.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:9f466e8bf0a62dc43e068c12166281c2eca72121dd2adc1040f3aa1e21ef8599"},
542
+ {file = "pydantic_core-2.33.1-cp39-cp39-win32.whl", hash = "sha256:ab0277cedb698749caada82e5d099dc9fed3f906a30d4c382d1a21725777a1e5"},
543
+ {file = "pydantic_core-2.33.1-cp39-cp39-win_amd64.whl", hash = "sha256:5773da0ee2d17136b1f1c6fbde543398d452a6ad2a7b54ea1033e2daa739b8d2"},
544
+ {file = "pydantic_core-2.33.1-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:5c834f54f8f4640fd7e4b193f80eb25a0602bba9e19b3cd2fc7ffe8199f5ae02"},
545
+ {file = "pydantic_core-2.33.1-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:049e0de24cf23766f12cc5cc71d8abc07d4a9deb9061b334b62093dedc7cb068"},
546
+ {file = "pydantic_core-2.33.1-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1a28239037b3d6f16916a4c831a5a0eadf856bdd6d2e92c10a0da3a59eadcf3e"},
547
+ {file = "pydantic_core-2.33.1-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9d3da303ab5f378a268fa7d45f37d7d85c3ec19769f28d2cc0c61826a8de21fe"},
548
+ {file = "pydantic_core-2.33.1-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:25626fb37b3c543818c14821afe0fd3830bc327a43953bc88db924b68c5723f1"},
549
+ {file = "pydantic_core-2.33.1-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:3ab2d36e20fbfcce8f02d73c33a8a7362980cff717926bbae030b93ae46b56c7"},
550
+ {file = "pydantic_core-2.33.1-pp310-pypy310_pp73-musllinux_1_1_armv7l.whl", hash = "sha256:2f9284e11c751b003fd4215ad92d325d92c9cb19ee6729ebd87e3250072cdcde"},
551
+ {file = "pydantic_core-2.33.1-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:048c01eee07d37cbd066fc512b9d8b5ea88ceeb4e629ab94b3e56965ad655add"},
552
+ {file = "pydantic_core-2.33.1-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:5ccd429694cf26af7997595d627dd2637e7932214486f55b8a357edaac9dae8c"},
553
+ {file = "pydantic_core-2.33.1-pp311-pypy311_pp73-macosx_10_12_x86_64.whl", hash = "sha256:3a371dc00282c4b84246509a5ddc808e61b9864aa1eae9ecc92bb1268b82db4a"},
554
+ {file = "pydantic_core-2.33.1-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:f59295ecc75a1788af8ba92f2e8c6eeaa5a94c22fc4d151e8d9638814f85c8fc"},
555
+ {file = "pydantic_core-2.33.1-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:08530b8ac922003033f399128505f513e30ca770527cc8bbacf75a84fcc2c74b"},
556
+ {file = "pydantic_core-2.33.1-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bae370459da6a5466978c0eacf90690cb57ec9d533f8e63e564ef3822bfa04fe"},
557
+ {file = "pydantic_core-2.33.1-pp311-pypy311_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:e3de2777e3b9f4d603112f78006f4ae0acb936e95f06da6cb1a45fbad6bdb4b5"},
558
+ {file = "pydantic_core-2.33.1-pp311-pypy311_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:3a64e81e8cba118e108d7126362ea30e021291b7805d47e4896e52c791be2761"},
559
+ {file = "pydantic_core-2.33.1-pp311-pypy311_pp73-musllinux_1_1_armv7l.whl", hash = "sha256:52928d8c1b6bda03cc6d811e8923dffc87a2d3c8b3bfd2ce16471c7147a24850"},
560
+ {file = "pydantic_core-2.33.1-pp311-pypy311_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:1b30d92c9412beb5ac6b10a3eb7ef92ccb14e3f2a8d7732e2d739f58b3aa7544"},
561
+ {file = "pydantic_core-2.33.1-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:f995719707e0e29f0f41a8aa3bcea6e761a36c9136104d3189eafb83f5cec5e5"},
562
+ {file = "pydantic_core-2.33.1-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:7edbc454a29fc6aeae1e1eecba4f07b63b8d76e76a748532233c4c167b4cb9ea"},
563
+ {file = "pydantic_core-2.33.1-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:ad05b683963f69a1d5d2c2bdab1274a31221ca737dbbceaa32bcb67359453cdd"},
564
+ {file = "pydantic_core-2.33.1-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:df6a94bf9452c6da9b5d76ed229a5683d0306ccb91cca8e1eea883189780d568"},
565
+ {file = "pydantic_core-2.33.1-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7965c13b3967909a09ecc91f21d09cfc4576bf78140b988904e94f130f188396"},
566
+ {file = "pydantic_core-2.33.1-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:3f1fdb790440a34f6ecf7679e1863b825cb5ffde858a9197f851168ed08371e5"},
567
+ {file = "pydantic_core-2.33.1-pp39-pypy39_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:5277aec8d879f8d05168fdd17ae811dd313b8ff894aeeaf7cd34ad28b4d77e33"},
568
+ {file = "pydantic_core-2.33.1-pp39-pypy39_pp73-musllinux_1_1_armv7l.whl", hash = "sha256:8ab581d3530611897d863d1a649fb0644b860286b4718db919bfd51ece41f10b"},
569
+ {file = "pydantic_core-2.33.1-pp39-pypy39_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:0483847fa9ad5e3412265c1bd72aad35235512d9ce9d27d81a56d935ef489672"},
570
+ {file = "pydantic_core-2.33.1-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:de9e06abe3cc5ec6a2d5f75bc99b0bdca4f5c719a5b34026f8c57efbdecd2ee3"},
571
+ {file = "pydantic_core-2.33.1.tar.gz", hash = "sha256:bcc9c6fdb0ced789245b02b7d6603e17d1563064ddcfc36f046b61c0c05dd9df"},
572
+ ]
573
+
574
+ [package.dependencies]
575
+ typing-extensions = ">=4.6.0,<4.7.0 || >4.7.0"
576
+
577
+ [[package]]
578
+ name = "pytest"
579
+ version = "7.4.4"
580
+ description = "pytest: simple powerful testing with Python"
581
+ optional = false
582
+ python-versions = ">=3.7"
583
+ groups = ["dev"]
584
+ files = [
585
+ {file = "pytest-7.4.4-py3-none-any.whl", hash = "sha256:b090cdf5ed60bf4c45261be03239c2c1c22df034fbffe691abe93cd80cea01d8"},
586
+ {file = "pytest-7.4.4.tar.gz", hash = "sha256:2cf0005922c6ace4a3e2ec8b4080eb0d9753fdc93107415332f50ce9e7994280"},
587
+ ]
588
+
589
+ [package.dependencies]
590
+ colorama = {version = "*", markers = "sys_platform == \"win32\""}
591
+ iniconfig = "*"
592
+ packaging = "*"
593
+ pluggy = ">=0.12,<2.0"
594
+
595
+ [package.extras]
596
+ testing = ["argcomplete", "attrs (>=19.2.0)", "hypothesis (>=3.56)", "mock", "nose", "pygments (>=2.7.2)", "requests", "setuptools", "xmlschema"]
597
+
598
+ [[package]]
599
+ name = "python-dotenv"
600
+ version = "1.1.0"
601
+ description = "Read key-value pairs from a .env file and set them as environment variables"
602
+ optional = false
603
+ python-versions = ">=3.9"
604
+ groups = ["main"]
605
+ files = [
606
+ {file = "python_dotenv-1.1.0-py3-none-any.whl", hash = "sha256:d7c01d9e2293916c18baf562d95698754b0dbbb5e74d457c45d4f6561fb9d55d"},
607
+ {file = "python_dotenv-1.1.0.tar.gz", hash = "sha256:41f90bc6f5f177fb41f53e87666db362025010eb28f60a01c9143bfa33a2b2d5"},
608
+ ]
609
+
610
+ [package.extras]
611
+ cli = ["click (>=5.0)"]
612
+
613
+ [[package]]
614
+ name = "pyyaml"
615
+ version = "6.0.2"
616
+ description = "YAML parser and emitter for Python"
617
+ optional = false
618
+ python-versions = ">=3.8"
619
+ groups = ["main"]
620
+ files = [
621
+ {file = "PyYAML-6.0.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:0a9a2848a5b7feac301353437eb7d5957887edbf81d56e903999a75a3d743086"},
622
+ {file = "PyYAML-6.0.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:29717114e51c84ddfba879543fb232a6ed60086602313ca38cce623c1d62cfbf"},
623
+ {file = "PyYAML-6.0.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8824b5a04a04a047e72eea5cec3bc266db09e35de6bdfe34c9436ac5ee27d237"},
624
+ {file = "PyYAML-6.0.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7c36280e6fb8385e520936c3cb3b8042851904eba0e58d277dca80a5cfed590b"},
625
+ {file = "PyYAML-6.0.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ec031d5d2feb36d1d1a24380e4db6d43695f3748343d99434e6f5f9156aaa2ed"},
626
+ {file = "PyYAML-6.0.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:936d68689298c36b53b29f23c6dbb74de12b4ac12ca6cfe0e047bedceea56180"},
627
+ {file = "PyYAML-6.0.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:23502f431948090f597378482b4812b0caae32c22213aecf3b55325e049a6c68"},
628
+ {file = "PyYAML-6.0.2-cp310-cp310-win32.whl", hash = "sha256:2e99c6826ffa974fe6e27cdb5ed0021786b03fc98e5ee3c5bfe1fd5015f42b99"},
629
+ {file = "PyYAML-6.0.2-cp310-cp310-win_amd64.whl", hash = "sha256:a4d3091415f010369ae4ed1fc6b79def9416358877534caf6a0fdd2146c87a3e"},
630
+ {file = "PyYAML-6.0.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:cc1c1159b3d456576af7a3e4d1ba7e6924cb39de8f67111c735f6fc832082774"},
631
+ {file = "PyYAML-6.0.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:1e2120ef853f59c7419231f3bf4e7021f1b936f6ebd222406c3b60212205d2ee"},
632
+ {file = "PyYAML-6.0.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5d225db5a45f21e78dd9358e58a98702a0302f2659a3c6cd320564b75b86f47c"},
633
+ {file = "PyYAML-6.0.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5ac9328ec4831237bec75defaf839f7d4564be1e6b25ac710bd1a96321cc8317"},
634
+ {file = "PyYAML-6.0.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3ad2a3decf9aaba3d29c8f537ac4b243e36bef957511b4766cb0057d32b0be85"},
635
+ {file = "PyYAML-6.0.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:ff3824dc5261f50c9b0dfb3be22b4567a6f938ccce4587b38952d85fd9e9afe4"},
636
+ {file = "PyYAML-6.0.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:797b4f722ffa07cc8d62053e4cff1486fa6dc094105d13fea7b1de7d8bf71c9e"},
637
+ {file = "PyYAML-6.0.2-cp311-cp311-win32.whl", hash = "sha256:11d8f3dd2b9c1207dcaf2ee0bbbfd5991f571186ec9cc78427ba5bd32afae4b5"},
638
+ {file = "PyYAML-6.0.2-cp311-cp311-win_amd64.whl", hash = "sha256:e10ce637b18caea04431ce14fabcf5c64a1c61ec9c56b071a4b7ca131ca52d44"},
639
+ {file = "PyYAML-6.0.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:c70c95198c015b85feafc136515252a261a84561b7b1d51e3384e0655ddf25ab"},
640
+ {file = "PyYAML-6.0.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:ce826d6ef20b1bc864f0a68340c8b3287705cae2f8b4b1d932177dcc76721725"},
641
+ {file = "PyYAML-6.0.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1f71ea527786de97d1a0cc0eacd1defc0985dcf6b3f17bb77dcfc8c34bec4dc5"},
642
+ {file = "PyYAML-6.0.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9b22676e8097e9e22e36d6b7bda33190d0d400f345f23d4065d48f4ca7ae0425"},
643
+ {file = "PyYAML-6.0.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:80bab7bfc629882493af4aa31a4cfa43a4c57c83813253626916b8c7ada83476"},
644
+ {file = "PyYAML-6.0.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:0833f8694549e586547b576dcfaba4a6b55b9e96098b36cdc7ebefe667dfed48"},
645
+ {file = "PyYAML-6.0.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:8b9c7197f7cb2738065c481a0461e50ad02f18c78cd75775628afb4d7137fb3b"},
646
+ {file = "PyYAML-6.0.2-cp312-cp312-win32.whl", hash = "sha256:ef6107725bd54b262d6dedcc2af448a266975032bc85ef0172c5f059da6325b4"},
647
+ {file = "PyYAML-6.0.2-cp312-cp312-win_amd64.whl", hash = "sha256:7e7401d0de89a9a855c839bc697c079a4af81cf878373abd7dc625847d25cbd8"},
648
+ {file = "PyYAML-6.0.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:efdca5630322a10774e8e98e1af481aad470dd62c3170801852d752aa7a783ba"},
649
+ {file = "PyYAML-6.0.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:50187695423ffe49e2deacb8cd10510bc361faac997de9efef88badc3bb9e2d1"},
650
+ {file = "PyYAML-6.0.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0ffe8360bab4910ef1b9e87fb812d8bc0a308b0d0eef8c8f44e0254ab3b07133"},
651
+ {file = "PyYAML-6.0.2-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:17e311b6c678207928d649faa7cb0d7b4c26a0ba73d41e99c4fff6b6c3276484"},
652
+ {file = "PyYAML-6.0.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:70b189594dbe54f75ab3a1acec5f1e3faa7e8cf2f1e08d9b561cb41b845f69d5"},
653
+ {file = "PyYAML-6.0.2-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:41e4e3953a79407c794916fa277a82531dd93aad34e29c2a514c2c0c5fe971cc"},
654
+ {file = "PyYAML-6.0.2-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:68ccc6023a3400877818152ad9a1033e3db8625d899c72eacb5a668902e4d652"},
655
+ {file = "PyYAML-6.0.2-cp313-cp313-win32.whl", hash = "sha256:bc2fa7c6b47d6bc618dd7fb02ef6fdedb1090ec036abab80d4681424b84c1183"},
656
+ {file = "PyYAML-6.0.2-cp313-cp313-win_amd64.whl", hash = "sha256:8388ee1976c416731879ac16da0aff3f63b286ffdd57cdeb95f3f2e085687563"},
657
+ {file = "PyYAML-6.0.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:24471b829b3bf607e04e88d79542a9d48bb037c2267d7927a874e6c205ca7e9a"},
658
+ {file = "PyYAML-6.0.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d7fded462629cfa4b685c5416b949ebad6cec74af5e2d42905d41e257e0869f5"},
659
+ {file = "PyYAML-6.0.2-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d84a1718ee396f54f3a086ea0a66d8e552b2ab2017ef8b420e92edbc841c352d"},
660
+ {file = "PyYAML-6.0.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9056c1ecd25795207ad294bcf39f2db3d845767be0ea6e6a34d856f006006083"},
661
+ {file = "PyYAML-6.0.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:82d09873e40955485746739bcb8b4586983670466c23382c19cffecbf1fd8706"},
662
+ {file = "PyYAML-6.0.2-cp38-cp38-win32.whl", hash = "sha256:43fa96a3ca0d6b1812e01ced1044a003533c47f6ee8aca31724f78e93ccc089a"},
663
+ {file = "PyYAML-6.0.2-cp38-cp38-win_amd64.whl", hash = "sha256:01179a4a8559ab5de078078f37e5c1a30d76bb88519906844fd7bdea1b7729ff"},
664
+ {file = "PyYAML-6.0.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:688ba32a1cffef67fd2e9398a2efebaea461578b0923624778664cc1c914db5d"},
665
+ {file = "PyYAML-6.0.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:a8786accb172bd8afb8be14490a16625cbc387036876ab6ba70912730faf8e1f"},
666
+ {file = "PyYAML-6.0.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d8e03406cac8513435335dbab54c0d385e4a49e4945d2909a581c83647ca0290"},
667
+ {file = "PyYAML-6.0.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f753120cb8181e736c57ef7636e83f31b9c0d1722c516f7e86cf15b7aa57ff12"},
668
+ {file = "PyYAML-6.0.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3b1fdb9dc17f5a7677423d508ab4f243a726dea51fa5e70992e59a7411c89d19"},
669
+ {file = "PyYAML-6.0.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:0b69e4ce7a131fe56b7e4d770c67429700908fc0752af059838b1cfb41960e4e"},
670
+ {file = "PyYAML-6.0.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:a9f8c2e67970f13b16084e04f134610fd1d374bf477b17ec1599185cf611d725"},
671
+ {file = "PyYAML-6.0.2-cp39-cp39-win32.whl", hash = "sha256:6395c297d42274772abc367baaa79683958044e5d3835486c16da75d2a694631"},
672
+ {file = "PyYAML-6.0.2-cp39-cp39-win_amd64.whl", hash = "sha256:39693e1f8320ae4f43943590b49779ffb98acb81f788220ea932a6b6c51004d8"},
673
+ {file = "pyyaml-6.0.2.tar.gz", hash = "sha256:d584d9ec91ad65861cc08d42e834324ef890a082e591037abe114850ff7bbc3e"},
674
+ ]
675
+
676
+ [[package]]
677
+ name = "sniffio"
678
+ version = "1.3.1"
679
+ description = "Sniff out which async library your code is running under"
680
+ optional = false
681
+ python-versions = ">=3.7"
682
+ groups = ["main"]
683
+ files = [
684
+ {file = "sniffio-1.3.1-py3-none-any.whl", hash = "sha256:2f6da418d1f1e0fddd844478f41680e794e6051915791a034ff65e5f100525a2"},
685
+ {file = "sniffio-1.3.1.tar.gz", hash = "sha256:f4324edc670a0f49750a81b895f35c3adb843cca46f0530f79fc1babb23789dc"},
686
+ ]
687
+
688
+ [[package]]
689
+ name = "starlette"
690
+ version = "0.46.1"
691
+ description = "The little ASGI library that shines."
692
+ optional = false
693
+ python-versions = ">=3.9"
694
+ groups = ["main"]
695
+ files = [
696
+ {file = "starlette-0.46.1-py3-none-any.whl", hash = "sha256:77c74ed9d2720138b25875133f3a2dae6d854af2ec37dceb56aef370c1d8a227"},
697
+ {file = "starlette-0.46.1.tar.gz", hash = "sha256:3c88d58ee4bd1bb807c0d1acb381838afc7752f9ddaec81bbe4383611d833230"},
698
+ ]
699
+
700
+ [package.dependencies]
701
+ anyio = ">=3.6.2,<5"
702
+
703
+ [package.extras]
704
+ full = ["httpx (>=0.27.0,<0.29.0)", "itsdangerous", "jinja2", "python-multipart (>=0.0.18)", "pyyaml"]
705
+
706
+ [[package]]
707
+ name = "tqdm"
708
+ version = "4.67.1"
709
+ description = "Fast, Extensible Progress Meter"
710
+ optional = false
711
+ python-versions = ">=3.7"
712
+ groups = ["main"]
713
+ files = [
714
+ {file = "tqdm-4.67.1-py3-none-any.whl", hash = "sha256:26445eca388f82e72884e0d580d5464cd801a3ea01e63e5601bdff9ba6a48de2"},
715
+ {file = "tqdm-4.67.1.tar.gz", hash = "sha256:f8aef9c52c08c13a65f30ea34f4e5aac3fd1a34959879d7e59e63027286627f2"},
716
+ ]
717
+
718
+ [package.dependencies]
719
+ colorama = {version = "*", markers = "platform_system == \"Windows\""}
720
+
721
+ [package.extras]
722
+ dev = ["nbval", "pytest (>=6)", "pytest-asyncio (>=0.24)", "pytest-cov", "pytest-timeout"]
723
+ discord = ["requests"]
724
+ notebook = ["ipywidgets (>=6)"]
725
+ slack = ["slack-sdk"]
726
+ telegram = ["requests"]
727
+
728
+ [[package]]
729
+ name = "typing-extensions"
730
+ version = "4.13.1"
731
+ description = "Backported and Experimental Type Hints for Python 3.8+"
732
+ optional = false
733
+ python-versions = ">=3.8"
734
+ groups = ["main"]
735
+ files = [
736
+ {file = "typing_extensions-4.13.1-py3-none-any.whl", hash = "sha256:4b6cf02909eb5495cfbc3f6e8fd49217e6cc7944e145cdda8caa3734777f9e69"},
737
+ {file = "typing_extensions-4.13.1.tar.gz", hash = "sha256:98795af00fb9640edec5b8e31fc647597b4691f099ad75f469a2616be1a76dff"},
738
+ ]
739
+
740
+ [[package]]
741
+ name = "typing-inspection"
742
+ version = "0.4.0"
743
+ description = "Runtime typing introspection tools"
744
+ optional = false
745
+ python-versions = ">=3.9"
746
+ groups = ["main"]
747
+ files = [
748
+ {file = "typing_inspection-0.4.0-py3-none-any.whl", hash = "sha256:50e72559fcd2a6367a19f7a7e610e6afcb9fac940c650290eed893d61386832f"},
749
+ {file = "typing_inspection-0.4.0.tar.gz", hash = "sha256:9765c87de36671694a67904bf2c96e395be9c6439bb6c87b5142569dcdd65122"},
750
+ ]
751
+
752
+ [package.dependencies]
753
+ typing-extensions = ">=4.12.0"
754
+
755
+ [[package]]
756
+ name = "uvicorn"
757
+ version = "0.34.0"
758
+ description = "The lightning-fast ASGI server."
759
+ optional = false
760
+ python-versions = ">=3.9"
761
+ groups = ["main"]
762
+ files = [
763
+ {file = "uvicorn-0.34.0-py3-none-any.whl", hash = "sha256:023dc038422502fa28a09c7a30bf2b6991512da7dcdb8fd35fe57cfc154126f4"},
764
+ {file = "uvicorn-0.34.0.tar.gz", hash = "sha256:404051050cd7e905de2c9a7e61790943440b3416f49cb409f965d9dcd0fa73e9"},
765
+ ]
766
+
767
+ [package.dependencies]
768
+ click = ">=7.0"
769
+ colorama = {version = ">=0.4", optional = true, markers = "sys_platform == \"win32\" and extra == \"standard\""}
770
+ h11 = ">=0.8"
771
+ httptools = {version = ">=0.6.3", optional = true, markers = "extra == \"standard\""}
772
+ python-dotenv = {version = ">=0.13", optional = true, markers = "extra == \"standard\""}
773
+ pyyaml = {version = ">=5.1", optional = true, markers = "extra == \"standard\""}
774
+ 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\""}
775
+ watchfiles = {version = ">=0.13", optional = true, markers = "extra == \"standard\""}
776
+ websockets = {version = ">=10.4", optional = true, markers = "extra == \"standard\""}
777
+
778
+ [package.extras]
779
+ 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)"]
780
+
781
+ [[package]]
782
+ name = "uvloop"
783
+ version = "0.21.0"
784
+ description = "Fast implementation of asyncio event loop on top of libuv"
785
+ optional = false
786
+ python-versions = ">=3.8.0"
787
+ groups = ["main"]
788
+ markers = "sys_platform != \"win32\" and sys_platform != \"cygwin\" and platform_python_implementation != \"PyPy\""
789
+ files = [
790
+ {file = "uvloop-0.21.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:ec7e6b09a6fdded42403182ab6b832b71f4edaf7f37a9a0e371a01db5f0cb45f"},
791
+ {file = "uvloop-0.21.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:196274f2adb9689a289ad7d65700d37df0c0930fd8e4e743fa4834e850d7719d"},
792
+ {file = "uvloop-0.21.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f38b2e090258d051d68a5b14d1da7203a3c3677321cf32a95a6f4db4dd8b6f26"},
793
+ {file = "uvloop-0.21.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:87c43e0f13022b998eb9b973b5e97200c8b90823454d4bc06ab33829e09fb9bb"},
794
+ {file = "uvloop-0.21.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:10d66943def5fcb6e7b37310eb6b5639fd2ccbc38df1177262b0640c3ca68c1f"},
795
+ {file = "uvloop-0.21.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:67dd654b8ca23aed0a8e99010b4c34aca62f4b7fce88f39d452ed7622c94845c"},
796
+ {file = "uvloop-0.21.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:c0f3fa6200b3108919f8bdabb9a7f87f20e7097ea3c543754cabc7d717d95cf8"},
797
+ {file = "uvloop-0.21.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:0878c2640cf341b269b7e128b1a5fed890adc4455513ca710d77d5e93aa6d6a0"},
798
+ {file = "uvloop-0.21.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b9fb766bb57b7388745d8bcc53a359b116b8a04c83a2288069809d2b3466c37e"},
799
+ {file = "uvloop-0.21.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8a375441696e2eda1c43c44ccb66e04d61ceeffcd76e4929e527b7fa401b90fb"},
800
+ {file = "uvloop-0.21.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:baa0e6291d91649c6ba4ed4b2f982f9fa165b5bbd50a9e203c416a2797bab3c6"},
801
+ {file = "uvloop-0.21.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:4509360fcc4c3bd2c70d87573ad472de40c13387f5fda8cb58350a1d7475e58d"},
802
+ {file = "uvloop-0.21.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:359ec2c888397b9e592a889c4d72ba3d6befba8b2bb01743f72fffbde663b59c"},
803
+ {file = "uvloop-0.21.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:f7089d2dc73179ce5ac255bdf37c236a9f914b264825fdaacaded6990a7fb4c2"},
804
+ {file = "uvloop-0.21.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:baa4dcdbd9ae0a372f2167a207cd98c9f9a1ea1188a8a526431eef2f8116cc8d"},
805
+ {file = "uvloop-0.21.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:86975dca1c773a2c9864f4c52c5a55631038e387b47eaf56210f873887b6c8dc"},
806
+ {file = "uvloop-0.21.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:461d9ae6660fbbafedd07559c6a2e57cd553b34b0065b6550685f6653a98c1cb"},
807
+ {file = "uvloop-0.21.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:183aef7c8730e54c9a3ee3227464daed66e37ba13040bb3f350bc2ddc040f22f"},
808
+ {file = "uvloop-0.21.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:bfd55dfcc2a512316e65f16e503e9e450cab148ef11df4e4e679b5e8253a5281"},
809
+ {file = "uvloop-0.21.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:787ae31ad8a2856fc4e7c095341cccc7209bd657d0e71ad0dc2ea83c4a6fa8af"},
810
+ {file = "uvloop-0.21.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5ee4d4ef48036ff6e5cfffb09dd192c7a5027153948d85b8da7ff705065bacc6"},
811
+ {file = "uvloop-0.21.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f3df876acd7ec037a3d005b3ab85a7e4110422e4d9c1571d4fc89b0fc41b6816"},
812
+ {file = "uvloop-0.21.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:bd53ecc9a0f3d87ab847503c2e1552b690362e005ab54e8a48ba97da3924c0dc"},
813
+ {file = "uvloop-0.21.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:a5c39f217ab3c663dc699c04cbd50c13813e31d917642d459fdcec07555cc553"},
814
+ {file = "uvloop-0.21.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:17df489689befc72c39a08359efac29bbee8eee5209650d4b9f34df73d22e414"},
815
+ {file = "uvloop-0.21.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:bc09f0ff191e61c2d592a752423c767b4ebb2986daa9ed62908e2b1b9a9ae206"},
816
+ {file = "uvloop-0.21.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f0ce1b49560b1d2d8a2977e3ba4afb2414fb46b86a1b64056bc4ab929efdafbe"},
817
+ {file = "uvloop-0.21.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e678ad6fe52af2c58d2ae3c73dc85524ba8abe637f134bf3564ed07f555c5e79"},
818
+ {file = "uvloop-0.21.0-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:460def4412e473896ef179a1671b40c039c7012184b627898eea5072ef6f017a"},
819
+ {file = "uvloop-0.21.0-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:10da8046cc4a8f12c91a1c39d1dd1585c41162a15caaef165c2174db9ef18bdc"},
820
+ {file = "uvloop-0.21.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:c097078b8031190c934ed0ebfee8cc5f9ba9642e6eb88322b9958b649750f72b"},
821
+ {file = "uvloop-0.21.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:46923b0b5ee7fc0020bef24afe7836cb068f5050ca04caf6b487c513dc1a20b2"},
822
+ {file = "uvloop-0.21.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:53e420a3afe22cdcf2a0f4846e377d16e718bc70103d7088a4f7623567ba5fb0"},
823
+ {file = "uvloop-0.21.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:88cb67cdbc0e483da00af0b2c3cdad4b7c61ceb1ee0f33fe00e09c81e3a6cb75"},
824
+ {file = "uvloop-0.21.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:221f4f2a1f46032b403bf3be628011caf75428ee3cc204a22addf96f586b19fd"},
825
+ {file = "uvloop-0.21.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:2d1f581393673ce119355d56da84fe1dd9d2bb8b3d13ce792524e1607139feff"},
826
+ {file = "uvloop-0.21.0.tar.gz", hash = "sha256:3bf12b0fda68447806a7ad847bfa591613177275d35b6724b1ee573faa3704e3"},
827
+ ]
828
+
829
+ [package.extras]
830
+ dev = ["Cython (>=3.0,<4.0)", "setuptools (>=60)"]
831
+ 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)"]
832
+ 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)"]
833
+
834
+ [[package]]
835
+ name = "watchfiles"
836
+ version = "1.0.5"
837
+ description = "Simple, modern and high performance file watching and code reload in python."
838
+ optional = false
839
+ python-versions = ">=3.9"
840
+ groups = ["main"]
841
+ files = [
842
+ {file = "watchfiles-1.0.5-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:5c40fe7dd9e5f81e0847b1ea64e1f5dd79dd61afbedb57759df06767ac719b40"},
843
+ {file = "watchfiles-1.0.5-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:8c0db396e6003d99bb2d7232c957b5f0b5634bbd1b24e381a5afcc880f7373fb"},
844
+ {file = "watchfiles-1.0.5-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b551d4fb482fc57d852b4541f911ba28957d051c8776e79c3b4a51eb5e2a1b11"},
845
+ {file = "watchfiles-1.0.5-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:830aa432ba5c491d52a15b51526c29e4a4b92bf4f92253787f9726fe01519487"},
846
+ {file = "watchfiles-1.0.5-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a16512051a822a416b0d477d5f8c0e67b67c1a20d9acecb0aafa3aa4d6e7d256"},
847
+ {file = "watchfiles-1.0.5-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:bfe0cbc787770e52a96c6fda6726ace75be7f840cb327e1b08d7d54eadc3bc85"},
848
+ {file = "watchfiles-1.0.5-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d363152c5e16b29d66cbde8fa614f9e313e6f94a8204eaab268db52231fe5358"},
849
+ {file = "watchfiles-1.0.5-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7ee32c9a9bee4d0b7bd7cbeb53cb185cf0b622ac761efaa2eba84006c3b3a614"},
850
+ {file = "watchfiles-1.0.5-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:29c7fd632ccaf5517c16a5188e36f6612d6472ccf55382db6c7fe3fcccb7f59f"},
851
+ {file = "watchfiles-1.0.5-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:8e637810586e6fe380c8bc1b3910accd7f1d3a9a7262c8a78d4c8fb3ba6a2b3d"},
852
+ {file = "watchfiles-1.0.5-cp310-cp310-win32.whl", hash = "sha256:cd47d063fbeabd4c6cae1d4bcaa38f0902f8dc5ed168072874ea11d0c7afc1ff"},
853
+ {file = "watchfiles-1.0.5-cp310-cp310-win_amd64.whl", hash = "sha256:86c0df05b47a79d80351cd179893f2f9c1b1cae49d96e8b3290c7f4bd0ca0a92"},
854
+ {file = "watchfiles-1.0.5-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:237f9be419e977a0f8f6b2e7b0475ababe78ff1ab06822df95d914a945eac827"},
855
+ {file = "watchfiles-1.0.5-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:e0da39ff917af8b27a4bdc5a97ac577552a38aac0d260a859c1517ea3dc1a7c4"},
856
+ {file = "watchfiles-1.0.5-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2cfcb3952350e95603f232a7a15f6c5f86c5375e46f0bd4ae70d43e3e063c13d"},
857
+ {file = "watchfiles-1.0.5-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:68b2dddba7a4e6151384e252a5632efcaa9bc5d1c4b567f3cb621306b2ca9f63"},
858
+ {file = "watchfiles-1.0.5-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:95cf944fcfc394c5f9de794ce581914900f82ff1f855326f25ebcf24d5397418"},
859
+ {file = "watchfiles-1.0.5-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ecf6cd9f83d7c023b1aba15d13f705ca7b7d38675c121f3cc4a6e25bd0857ee9"},
860
+ {file = "watchfiles-1.0.5-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:852de68acd6212cd6d33edf21e6f9e56e5d98c6add46f48244bd479d97c967c6"},
861
+ {file = "watchfiles-1.0.5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d5730f3aa35e646103b53389d5bc77edfbf578ab6dab2e005142b5b80a35ef25"},
862
+ {file = "watchfiles-1.0.5-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:18b3bd29954bc4abeeb4e9d9cf0b30227f0f206c86657674f544cb032296acd5"},
863
+ {file = "watchfiles-1.0.5-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:ba5552a1b07c8edbf197055bc9d518b8f0d98a1c6a73a293bc0726dce068ed01"},
864
+ {file = "watchfiles-1.0.5-cp311-cp311-win32.whl", hash = "sha256:2f1fefb2e90e89959447bc0420fddd1e76f625784340d64a2f7d5983ef9ad246"},
865
+ {file = "watchfiles-1.0.5-cp311-cp311-win_amd64.whl", hash = "sha256:b6e76ceb1dd18c8e29c73f47d41866972e891fc4cc7ba014f487def72c1cf096"},
866
+ {file = "watchfiles-1.0.5-cp311-cp311-win_arm64.whl", hash = "sha256:266710eb6fddc1f5e51843c70e3bebfb0f5e77cf4f27129278c70554104d19ed"},
867
+ {file = "watchfiles-1.0.5-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:b5eb568c2aa6018e26da9e6c86f3ec3fd958cee7f0311b35c2630fa4217d17f2"},
868
+ {file = "watchfiles-1.0.5-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:0a04059f4923ce4e856b4b4e5e783a70f49d9663d22a4c3b3298165996d1377f"},
869
+ {file = "watchfiles-1.0.5-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3e380c89983ce6e6fe2dd1e1921b9952fb4e6da882931abd1824c092ed495dec"},
870
+ {file = "watchfiles-1.0.5-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:fe43139b2c0fdc4a14d4f8d5b5d967f7a2777fd3d38ecf5b1ec669b0d7e43c21"},
871
+ {file = "watchfiles-1.0.5-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ee0822ce1b8a14fe5a066f93edd20aada932acfe348bede8aa2149f1a4489512"},
872
+ {file = "watchfiles-1.0.5-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a0dbcb1c2d8f2ab6e0a81c6699b236932bd264d4cef1ac475858d16c403de74d"},
873
+ {file = "watchfiles-1.0.5-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a2014a2b18ad3ca53b1f6c23f8cd94a18ce930c1837bd891262c182640eb40a6"},
874
+ {file = "watchfiles-1.0.5-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:10f6ae86d5cb647bf58f9f655fcf577f713915a5d69057a0371bc257e2553234"},
875
+ {file = "watchfiles-1.0.5-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:1a7bac2bde1d661fb31f4d4e8e539e178774b76db3c2c17c4bb3e960a5de07a2"},
876
+ {file = "watchfiles-1.0.5-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:4ab626da2fc1ac277bbf752446470b367f84b50295264d2d313e28dc4405d663"},
877
+ {file = "watchfiles-1.0.5-cp312-cp312-win32.whl", hash = "sha256:9f4571a783914feda92018ef3901dab8caf5b029325b5fe4558c074582815249"},
878
+ {file = "watchfiles-1.0.5-cp312-cp312-win_amd64.whl", hash = "sha256:360a398c3a19672cf93527f7e8d8b60d8275119c5d900f2e184d32483117a705"},
879
+ {file = "watchfiles-1.0.5-cp312-cp312-win_arm64.whl", hash = "sha256:1a2902ede862969077b97523987c38db28abbe09fb19866e711485d9fbf0d417"},
880
+ {file = "watchfiles-1.0.5-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:0b289572c33a0deae62daa57e44a25b99b783e5f7aed81b314232b3d3c81a11d"},
881
+ {file = "watchfiles-1.0.5-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:a056c2f692d65bf1e99c41045e3bdcaea3cb9e6b5a53dcaf60a5f3bd95fc9763"},
882
+ {file = "watchfiles-1.0.5-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b9dca99744991fc9850d18015c4f0438865414e50069670f5f7eee08340d8b40"},
883
+ {file = "watchfiles-1.0.5-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:894342d61d355446d02cd3988a7326af344143eb33a2fd5d38482a92072d9563"},
884
+ {file = "watchfiles-1.0.5-cp313-cp313-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ab44e1580924d1ffd7b3938e02716d5ad190441965138b4aa1d1f31ea0877f04"},
885
+ {file = "watchfiles-1.0.5-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d6f9367b132078b2ceb8d066ff6c93a970a18c3029cea37bfd7b2d3dd2e5db8f"},
886
+ {file = "watchfiles-1.0.5-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f2e55a9b162e06e3f862fb61e399fe9f05d908d019d87bf5b496a04ef18a970a"},
887
+ {file = "watchfiles-1.0.5-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0125f91f70e0732a9f8ee01e49515c35d38ba48db507a50c5bdcad9503af5827"},
888
+ {file = "watchfiles-1.0.5-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:13bb21f8ba3248386337c9fa51c528868e6c34a707f729ab041c846d52a0c69a"},
889
+ {file = "watchfiles-1.0.5-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:839ebd0df4a18c5b3c1b890145b5a3f5f64063c2a0d02b13c76d78fe5de34936"},
890
+ {file = "watchfiles-1.0.5-cp313-cp313-win32.whl", hash = "sha256:4a8ec1e4e16e2d5bafc9ba82f7aaecfeec990ca7cd27e84fb6f191804ed2fcfc"},
891
+ {file = "watchfiles-1.0.5-cp313-cp313-win_amd64.whl", hash = "sha256:f436601594f15bf406518af922a89dcaab416568edb6f65c4e5bbbad1ea45c11"},
892
+ {file = "watchfiles-1.0.5-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:2cfb371be97d4db374cba381b9f911dd35bb5f4c58faa7b8b7106c8853e5d225"},
893
+ {file = "watchfiles-1.0.5-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:a3904d88955fda461ea2531fcf6ef73584ca921415d5cfa44457a225f4a42bc1"},
894
+ {file = "watchfiles-1.0.5-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2b7a21715fb12274a71d335cff6c71fe7f676b293d322722fe708a9ec81d91f5"},
895
+ {file = "watchfiles-1.0.5-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:dfd6ae1c385ab481766b3c61c44aca2b3cd775f6f7c0fa93d979ddec853d29d5"},
896
+ {file = "watchfiles-1.0.5-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b659576b950865fdad31fa491d31d37cf78b27113a7671d39f919828587b429b"},
897
+ {file = "watchfiles-1.0.5-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1909e0a9cd95251b15bff4261de5dd7550885bd172e3536824bf1cf6b121e200"},
898
+ {file = "watchfiles-1.0.5-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:832ccc221927c860e7286c55c9b6ebcc0265d5e072f49c7f6456c7798d2b39aa"},
899
+ {file = "watchfiles-1.0.5-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:85fbb6102b3296926d0c62cfc9347f6237fb9400aecd0ba6bbda94cae15f2b3b"},
900
+ {file = "watchfiles-1.0.5-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:15ac96dd567ad6c71c71f7b2c658cb22b7734901546cd50a475128ab557593ca"},
901
+ {file = "watchfiles-1.0.5-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:4b6227351e11c57ae997d222e13f5b6f1f0700d84b8c52304e8675d33a808382"},
902
+ {file = "watchfiles-1.0.5-cp39-cp39-win32.whl", hash = "sha256:974866e0db748ebf1eccab17862bc0f0303807ed9cda465d1324625b81293a18"},
903
+ {file = "watchfiles-1.0.5-cp39-cp39-win_amd64.whl", hash = "sha256:9848b21ae152fe79c10dd0197304ada8f7b586d3ebc3f27f43c506e5a52a863c"},
904
+ {file = "watchfiles-1.0.5-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:f59b870db1f1ae5a9ac28245707d955c8721dd6565e7f411024fa374b5362d1d"},
905
+ {file = "watchfiles-1.0.5-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:9475b0093767e1475095f2aeb1d219fb9664081d403d1dff81342df8cd707034"},
906
+ {file = "watchfiles-1.0.5-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fc533aa50664ebd6c628b2f30591956519462f5d27f951ed03d6c82b2dfd9965"},
907
+ {file = "watchfiles-1.0.5-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fed1cd825158dcaae36acce7b2db33dcbfd12b30c34317a88b8ed80f0541cc57"},
908
+ {file = "watchfiles-1.0.5-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:554389562c29c2c182e3908b149095051f81d28c2fec79ad6c8997d7d63e0009"},
909
+ {file = "watchfiles-1.0.5-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:a74add8d7727e6404d5dc4dcd7fac65d4d82f95928bbee0cf5414c900e86773e"},
910
+ {file = "watchfiles-1.0.5-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cb1489f25b051a89fae574505cc26360c8e95e227a9500182a7fe0afcc500ce0"},
911
+ {file = "watchfiles-1.0.5-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c0901429650652d3f0da90bad42bdafc1f9143ff3605633c455c999a2d786cac"},
912
+ {file = "watchfiles-1.0.5.tar.gz", hash = "sha256:b7529b5dcc114679d43827d8c35a07c493ad6f083633d573d81c660abc5979e9"},
913
+ ]
914
+
915
+ [package.dependencies]
916
+ anyio = ">=3.0.0"
917
+
918
+ [[package]]
919
+ name = "websockets"
920
+ version = "15.0.1"
921
+ description = "An implementation of the WebSocket Protocol (RFC 6455 & 7692)"
922
+ optional = false
923
+ python-versions = ">=3.9"
924
+ groups = ["main"]
925
+ files = [
926
+ {file = "websockets-15.0.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:d63efaa0cd96cf0c5fe4d581521d9fa87744540d4bc999ae6e08595a1014b45b"},
927
+ {file = "websockets-15.0.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:ac60e3b188ec7574cb761b08d50fcedf9d77f1530352db4eef1707fe9dee7205"},
928
+ {file = "websockets-15.0.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:5756779642579d902eed757b21b0164cd6fe338506a8083eb58af5c372e39d9a"},
929
+ {file = "websockets-15.0.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0fdfe3e2a29e4db3659dbd5bbf04560cea53dd9610273917799f1cde46aa725e"},
930
+ {file = "websockets-15.0.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4c2529b320eb9e35af0fa3016c187dffb84a3ecc572bcee7c3ce302bfeba52bf"},
931
+ {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"},
932
+ {file = "websockets-15.0.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:5df592cd503496351d6dc14f7cdad49f268d8e618f80dce0cd5a36b93c3fc08d"},
933
+ {file = "websockets-15.0.1-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:0a34631031a8f05657e8e90903e656959234f3a04552259458aac0b0f9ae6fd9"},
934
+ {file = "websockets-15.0.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:3d00075aa65772e7ce9e990cab3ff1de702aa09be3940d1dc88d5abf1ab8a09c"},
935
+ {file = "websockets-15.0.1-cp310-cp310-win32.whl", hash = "sha256:1234d4ef35db82f5446dca8e35a7da7964d02c127b095e172e54397fb6a6c256"},
936
+ {file = "websockets-15.0.1-cp310-cp310-win_amd64.whl", hash = "sha256:39c1fec2c11dc8d89bba6b2bf1556af381611a173ac2b511cf7231622058af41"},
937
+ {file = "websockets-15.0.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:823c248b690b2fd9303ba00c4f66cd5e2d8c3ba4aa968b2779be9532a4dad431"},
938
+ {file = "websockets-15.0.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:678999709e68425ae2593acf2e3ebcbcf2e69885a5ee78f9eb80e6e371f1bf57"},
939
+ {file = "websockets-15.0.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:d50fd1ee42388dcfb2b3676132c78116490976f1300da28eb629272d5d93e905"},
940
+ {file = "websockets-15.0.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d99e5546bf73dbad5bf3547174cd6cb8ba7273062a23808ffea025ecb1cf8562"},
941
+ {file = "websockets-15.0.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:66dd88c918e3287efc22409d426c8f729688d89a0c587c88971a0faa2c2f3792"},
942
+ {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"},
943
+ {file = "websockets-15.0.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:8fdc51055e6ff4adeb88d58a11042ec9a5eae317a0a53d12c062c8a8865909e8"},
944
+ {file = "websockets-15.0.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:693f0192126df6c2327cce3baa7c06f2a117575e32ab2308f7f8216c29d9e2e3"},
945
+ {file = "websockets-15.0.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:54479983bd5fb469c38f2f5c7e3a24f9a4e70594cd68cd1fa6b9340dadaff7cf"},
946
+ {file = "websockets-15.0.1-cp311-cp311-win32.whl", hash = "sha256:16b6c1b3e57799b9d38427dda63edcbe4926352c47cf88588c0be4ace18dac85"},
947
+ {file = "websockets-15.0.1-cp311-cp311-win_amd64.whl", hash = "sha256:27ccee0071a0e75d22cb35849b1db43f2ecd3e161041ac1ee9d2352ddf72f065"},
948
+ {file = "websockets-15.0.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:3e90baa811a5d73f3ca0bcbf32064d663ed81318ab225ee4f427ad4e26e5aff3"},
949
+ {file = "websockets-15.0.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:592f1a9fe869c778694f0aa806ba0374e97648ab57936f092fd9d87f8bc03665"},
950
+ {file = "websockets-15.0.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:0701bc3cfcb9164d04a14b149fd74be7347a530ad3bbf15ab2c678a2cd3dd9a2"},
951
+ {file = "websockets-15.0.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e8b56bdcdb4505c8078cb6c7157d9811a85790f2f2b3632c7d1462ab5783d215"},
952
+ {file = "websockets-15.0.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0af68c55afbd5f07986df82831c7bff04846928ea8d1fd7f30052638788bc9b5"},
953
+ {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"},
954
+ {file = "websockets-15.0.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:d5f6b181bb38171a8ad1d6aa58a67a6aa9d4b38d0f8c5f496b9e42561dfc62fe"},
955
+ {file = "websockets-15.0.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:5d54b09eba2bada6011aea5375542a157637b91029687eb4fdb2dab11059c1b4"},
956
+ {file = "websockets-15.0.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:3be571a8b5afed347da347bfcf27ba12b069d9d7f42cb8c7028b5e98bbb12597"},
957
+ {file = "websockets-15.0.1-cp312-cp312-win32.whl", hash = "sha256:c338ffa0520bdb12fbc527265235639fb76e7bc7faafbb93f6ba80d9c06578a9"},
958
+ {file = "websockets-15.0.1-cp312-cp312-win_amd64.whl", hash = "sha256:fcd5cf9e305d7b8338754470cf69cf81f420459dbae8a3b40cee57417f4614a7"},
959
+ {file = "websockets-15.0.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:ee443ef070bb3b6ed74514f5efaa37a252af57c90eb33b956d35c8e9c10a1931"},
960
+ {file = "websockets-15.0.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:5a939de6b7b4e18ca683218320fc67ea886038265fd1ed30173f5ce3f8e85675"},
961
+ {file = "websockets-15.0.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:746ee8dba912cd6fc889a8147168991d50ed70447bf18bcda7039f7d2e3d9151"},
962
+ {file = "websockets-15.0.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:595b6c3969023ecf9041b2936ac3827e4623bfa3ccf007575f04c5a6aa318c22"},
963
+ {file = "websockets-15.0.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3c714d2fc58b5ca3e285461a4cc0c9a66bd0e24c5da9911e30158286c9b5be7f"},
964
+ {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"},
965
+ {file = "websockets-15.0.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:229cf1d3ca6c1804400b0a9790dc66528e08a6a1feec0d5040e8b9eb14422375"},
966
+ {file = "websockets-15.0.1-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:756c56e867a90fb00177d530dca4b097dd753cde348448a1012ed6c5131f8b7d"},
967
+ {file = "websockets-15.0.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:558d023b3df0bffe50a04e710bc87742de35060580a293c2a984299ed83bc4e4"},
968
+ {file = "websockets-15.0.1-cp313-cp313-win32.whl", hash = "sha256:ba9e56e8ceeeedb2e080147ba85ffcd5cd0711b89576b83784d8605a7df455fa"},
969
+ {file = "websockets-15.0.1-cp313-cp313-win_amd64.whl", hash = "sha256:e09473f095a819042ecb2ab9465aee615bd9c2028e4ef7d933600a8401c79561"},
970
+ {file = "websockets-15.0.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:5f4c04ead5aed67c8a1a20491d54cdfba5884507a48dd798ecaf13c74c4489f5"},
971
+ {file = "websockets-15.0.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:abdc0c6c8c648b4805c5eacd131910d2a7f6455dfd3becab248ef108e89ab16a"},
972
+ {file = "websockets-15.0.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:a625e06551975f4b7ea7102bc43895b90742746797e2e14b70ed61c43a90f09b"},
973
+ {file = "websockets-15.0.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d591f8de75824cbb7acad4e05d2d710484f15f29d4a915092675ad3456f11770"},
974
+ {file = "websockets-15.0.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:47819cea040f31d670cc8d324bb6435c6f133b8c7a19ec3d61634e62f8d8f9eb"},
975
+ {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"},
976
+ {file = "websockets-15.0.1-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:4a9fac8e469d04ce6c25bb2610dc535235bd4aa14996b4e6dbebf5e007eba5ee"},
977
+ {file = "websockets-15.0.1-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:363c6f671b761efcb30608d24925a382497c12c506b51661883c3e22337265ed"},
978
+ {file = "websockets-15.0.1-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:2034693ad3097d5355bfdacfffcbd3ef5694f9718ab7f29c29689a9eae841880"},
979
+ {file = "websockets-15.0.1-cp39-cp39-win32.whl", hash = "sha256:3b1ac0d3e594bf121308112697cf4b32be538fb1444468fb0a6ae4feebc83411"},
980
+ {file = "websockets-15.0.1-cp39-cp39-win_amd64.whl", hash = "sha256:b7643a03db5c95c799b89b31c036d5f27eeb4d259c798e878d6937d71832b1e4"},
981
+ {file = "websockets-15.0.1-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:0c9e74d766f2818bb95f84c25be4dea09841ac0f734d1966f415e4edfc4ef1c3"},
982
+ {file = "websockets-15.0.1-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:1009ee0c7739c08a0cd59de430d6de452a55e42d6b522de7aa15e6f67db0b8e1"},
983
+ {file = "websockets-15.0.1-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:76d1f20b1c7a2fa82367e04982e708723ba0e7b8d43aa643d3dcd404d74f1475"},
984
+ {file = "websockets-15.0.1-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f29d80eb9a9263b8d109135351caf568cc3f80b9928bccde535c235de55c22d9"},
985
+ {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"},
986
+ {file = "websockets-15.0.1-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:cad21560da69f4ce7658ca2cb83138fb4cf695a2ba3e475e0559e05991aa8122"},
987
+ {file = "websockets-15.0.1-pp39-pypy39_pp73-macosx_10_15_x86_64.whl", hash = "sha256:7f493881579c90fc262d9cdbaa05a6b54b3811c2f300766748db79f098db9940"},
988
+ {file = "websockets-15.0.1-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:47b099e1f4fbc95b701b6e85768e1fcdaf1630f3cbe4765fa216596f12310e2e"},
989
+ {file = "websockets-15.0.1-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:67f2b6de947f8c757db2db9c71527933ad0019737ec374a8a6be9a956786aaf9"},
990
+ {file = "websockets-15.0.1-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d08eb4c2b7d6c41da6ca0600c077e93f5adcfd979cd777d747e9ee624556da4b"},
991
+ {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"},
992
+ {file = "websockets-15.0.1-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:21c1fa28a6a7e3cbdc171c694398b6df4744613ce9b36b1a498e816787e28123"},
993
+ {file = "websockets-15.0.1-py3-none-any.whl", hash = "sha256:f7a866fbc1e97b5c617ee4116daaa09b722101d4a3c170c787450ba409f9736f"},
994
+ {file = "websockets-15.0.1.tar.gz", hash = "sha256:82544de02076bafba038ce055ee6412d68da13ab47f0c60cab827346de828dee"},
995
+ ]
996
+
997
+ [metadata]
998
+ lock-version = "2.1"
999
+ python-versions = "^3.12"
1000
+ content-hash = "a8a8c70853fedde787ddc12e88f802cccde8f13657bbecfc460f99ba63f1dbbc"
api/pyproject.toml ADDED
@@ -0,0 +1,24 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ [tool.poetry]
2
+ name = "docker-template"
3
+ version = "1.0.0"
4
+ description = "Docker Template with FastAPI"
5
+ authors = ["Your Name <[email protected]>"]
6
+ readme = "README.md"
7
+
8
+ [tool.poetry.dependencies]
9
+ python = "^3.12"
10
+ asyncio = "^3.4.3"
11
+ debugpy = "~=1.8.13"
12
+ fastapi = "~=0.115.12"
13
+ httpx = "~=0.28.1"
14
+ python-dotenv = "~=1.1.0"
15
+ uvicorn = {extras = ["standard"], version = "~=0.34.0"}
16
+ websockets = "~=15.0.1"
17
+ openai = "^1.77.0"
18
+
19
+ [tool.poetry.group.dev.dependencies]
20
+ pytest = "^7.4.0"
21
+
22
+ [build-system]
23
+ requires = ["poetry-core"]
24
+ build-backend = "poetry.core.masonry.api"
api/scripts/create_play_profile_pic.py ADDED
@@ -0,0 +1,20 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from openai import OpenAI
2
+ import base64
3
+ client = OpenAI()
4
+
5
+ prompt = """
6
+ A children's book drawing of a veterinarian using a stethoscope to
7
+ listen to the heartbeat of a baby otter.
8
+ """
9
+
10
+ result = client.images.generate(
11
+ model="gpt-image-1",
12
+ prompt=prompt
13
+ )
14
+
15
+ image_base64 = result.data[0].b64_json
16
+ image_bytes = base64.b64decode(image_base64)
17
+
18
+ # Save the image to a file
19
+ with open("otter.png", "wb") as f:
20
+ f.write(image_bytes)
api/scripts/create_player_profiles.py ADDED
@@ -0,0 +1,174 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from openai import OpenAI
2
+ import os
3
+ import csv
4
+ from pydantic import BaseModel, Field, ValidationError
5
+ from typing import Literal, Optional
6
+ import hashlib
7
+ import json
8
+ from pprint import pprint
9
+
10
+
11
+ client = OpenAI()
12
+
13
+ prompt = """
14
+ You are generating structured simulation data for a fictional soccer player.
15
+
16
+ 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.
17
+
18
+ Here is the known player information:
19
+ {player_info}
20
+
21
+ Here is the team context:
22
+ {team_name_description}
23
+
24
+ Your task:
25
+ Generate a single flat JSON object with **exactly** the following fields — no more, no less:
26
+
27
+ ```json
28
+ {{
29
+ "height_cm": // integer, range 150-210
30
+ "weight_kg": // integer, range 50-110
31
+ "overall_rating": // integer, range 1-100
32
+ "is_injured": // boolean
33
+ "form": // integer, range 1-10
34
+ "goals": // integer
35
+ "assists": // integer
36
+ "yellow_cards": // integer
37
+ "red_cards": // integer
38
+ "bio": // short paragraph; highlight signature play style, attitude, origins, or memorable traits — make it vivid, not generic
39
+ }}
40
+ ```
41
+ """
42
+
43
+ def get_ai_response(prompt):
44
+ response = client.responses.create(
45
+ model="gpt-4o-mini",
46
+ input=prompt
47
+ )
48
+ return response.output_text
49
+
50
+ # response = client.responses.create(
51
+ # # model="gpt-4.1",
52
+ # model="gpt-4o-mini",
53
+ # input="Write a one-sentence bedtime story about a unicorn."
54
+ # )
55
+
56
+ # print(response.output_text)
57
+
58
+ team_descriptions = {
59
+ '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.',
60
+ '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.',
61
+ '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.',
62
+ '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.',
63
+ }
64
+
65
+
66
+ class Player(BaseModel):
67
+ number: int
68
+ name: str
69
+ age: int
70
+ nationality: str
71
+ shirt_number: int
72
+ position: Literal[
73
+ "Goalkeeper", "Left Back", "Center Back", "Right Back",
74
+ "Full Back", "Defensive Mid", "Central Mid", "Attacking Mid",
75
+ "Left Wing", "Right Wing", "Forward/Winger", "Striker", "Various"
76
+ ]
77
+ preferred_foot: Literal["Left", "Right", "Mixed"]
78
+ role: Literal["Starter", "Bench", "Reserve/Prospect"]
79
+
80
+ @property
81
+ def id(self):
82
+ if not self.team:
83
+ raise ValueError("Team must not be empty")
84
+ return hashlib.sha256(f"{self.team}_{self.number}".encode()).hexdigest()
85
+
86
+ @property
87
+ def filename(self):
88
+ return f'{self.team.replace(" ", "_")}_{self.number}.json'
89
+
90
+ # Optional flair / simulation fields
91
+ team: Optional[str] = None
92
+ height_cm: Optional[int] = Field(None, ge=150, le=210)
93
+ weight_kg: Optional[int] = Field(None, ge=50, le=110)
94
+ overall_rating: Optional[int] = Field(None, ge=1, le=100)
95
+ is_injured: Optional[bool] = False
96
+ form: Optional[int] = Field(None, ge=1, le=10) # recent performance (1-10)
97
+
98
+ # Stats placeholder — useful if you want to track across games
99
+ goals: Optional[int] = 0
100
+ assists: Optional[int] = 0
101
+ yellow_cards: Optional[int] = 0
102
+ red_cards: Optional[int] = 0
103
+
104
+ # Narrative hook
105
+ bio: Optional[str] = None
106
+
107
+ @classmethod
108
+ def from_row(cls, row):
109
+ if len(row) != 8:
110
+ raise ValueError("Row must have 8 elements")
111
+ return cls(
112
+ number=row[0],
113
+ name=row[1],
114
+ position=row[2],
115
+ age=row[3],
116
+ nationality=row[4],
117
+ shirt_number=row[5],
118
+ preferred_foot=row[6],
119
+ role=row[7],
120
+ )
121
+
122
+ def player_info(self):
123
+ return {
124
+ "number": self.number,
125
+ "name": self.name,
126
+ "position": self.position,
127
+ "age": self.age,
128
+ "nationality": self.nationality,
129
+ "shirt_number": self.shirt_number,
130
+ "preferred_foot": self.preferred_foot,
131
+ "role": self.role,
132
+ }
133
+
134
+ def save(self):
135
+ with open(os.path.join("/workspace/data/huge-league/players", self.filename), 'w') as f:
136
+ json.dump(self.model_dump(), f)
137
+
138
+ @classmethod
139
+ def load(cls, filename):
140
+ with open(os.path.join("/workspace/data/huge-league/players", filename), 'r') as f:
141
+ data = json.load(f)
142
+ return cls.model_validate(data)
143
+
144
+
145
+
146
+ for filename in os.listdir("/workspace/data/huge-league/rosters"):
147
+ with open(os.path.join("/workspace/data/huge-league/rosters", filename), 'r') as f:
148
+ print(f"Processing {filename}")
149
+ team_description = team_descriptions.get(filename)
150
+ team_name = " ".join(filename.split("_")[:-1])
151
+ reader = csv.reader(f)
152
+ next(reader) # skip header
153
+ for row in reader:
154
+ player = Player.from_row(row)
155
+ player.team = team_name
156
+ # print('-->', player.id)
157
+ print('-->', player)
158
+ print('---->', player.filename)
159
+ # print('-->', team_description)
160
+ player_info = player.player_info()
161
+ text = prompt.format(player_info=player_info, team_name_description=team_description)
162
+ response = get_ai_response(text)
163
+ # print('\n=======\n', response, '\n=======\n')
164
+
165
+ for key, value in json.loads(response).items():
166
+ setattr(player, key, value)
167
+ # print(player)
168
+ player.save()
169
+
170
+ # break
171
+ # # break
172
+
173
+ # # # player = Player.load("Everglade_FC_1.json")
174
+ # # # pprint(player.dict())
api/server.py ADDED
@@ -0,0 +1,35 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import os
2
+ from fastapi import FastAPI
3
+ from fastapi.middleware.cors import CORSMiddleware
4
+
5
+ debug = bool(os.getenv("DEBUG", False))
6
+
7
+ app = FastAPI(
8
+ title='Huge IFX',
9
+ version='1.0',
10
+ description='Huge IFX with FastAPI',
11
+ )
12
+
13
+ # Set all CORS enabled origins
14
+ app.add_middleware(
15
+ CORSMiddleware,
16
+ allow_origins=["*"],
17
+ allow_credentials=True,
18
+ allow_methods=["*"],
19
+ allow_headers=["*"],
20
+ expose_headers=["*"],
21
+ )
22
+
23
+ # Your existing endpoints
24
+ @app.get('/')
25
+ async def home():
26
+ return {'message': 'Home'}
27
+
28
+ if debug:
29
+ import debugpy
30
+ debugpy.listen(("0.0.0.0", 5678))
31
+ print("VS Code debugger is ready to be attached, press F5 in VS Code...")
32
+
33
+ if __name__ == '__main__':
34
+ import uvicorn
35
+ uvicorn.run('server:app', host='0.0.0.0', port=8000, reload=True)
data/huge-league/players/Everglade_FC_1.json ADDED
@@ -0,0 +1 @@
 
 
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."}
data/huge-league/players/Everglade_FC_10.json ADDED
@@ -0,0 +1 @@
 
 
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."}
data/huge-league/players/Everglade_FC_11.json ADDED
@@ -0,0 +1 @@
 
 
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."}
data/huge-league/players/Everglade_FC_12.json ADDED
@@ -0,0 +1 @@
 
 
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."}
data/huge-league/players/Everglade_FC_13.json ADDED
@@ -0,0 +1 @@
 
 
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."}
data/huge-league/players/Everglade_FC_14.json ADDED
@@ -0,0 +1 @@
 
 
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."}
data/huge-league/players/Everglade_FC_15.json ADDED
@@ -0,0 +1 @@
 
 
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."}
data/huge-league/players/Everglade_FC_16.json ADDED
@@ -0,0 +1 @@
 
 
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."}
data/huge-league/players/Everglade_FC_17.json ADDED
@@ -0,0 +1 @@
 
 
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."}
data/huge-league/players/Everglade_FC_18.json ADDED
@@ -0,0 +1 @@
 
 
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."}
data/huge-league/players/Everglade_FC_19.json ADDED
@@ -0,0 +1 @@
 
 
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."}
data/huge-league/players/Everglade_FC_2.json ADDED
@@ -0,0 +1 @@
 
 
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."}
data/huge-league/players/Everglade_FC_20.json ADDED
@@ -0,0 +1 @@
 
 
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."}
data/huge-league/players/Everglade_FC_21.json ADDED
@@ -0,0 +1 @@
 
 
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."}
data/huge-league/players/Everglade_FC_22.json ADDED
@@ -0,0 +1 @@
 
 
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."}
data/huge-league/players/Everglade_FC_23.json ADDED
@@ -0,0 +1 @@
 
 
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."}
data/huge-league/players/Everglade_FC_3.json ADDED
@@ -0,0 +1 @@
 
 
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."}
data/huge-league/players/Everglade_FC_4.json ADDED
@@ -0,0 +1 @@
 
 
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."}
data/huge-league/players/Everglade_FC_5.json ADDED
@@ -0,0 +1 @@
 
 
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."}
data/huge-league/players/Everglade_FC_6.json ADDED
@@ -0,0 +1 @@
 
 
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."}
data/huge-league/players/Everglade_FC_7.json ADDED
@@ -0,0 +1 @@
 
 
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."}
data/huge-league/players/Everglade_FC_8.json ADDED
@@ -0,0 +1 @@
 
 
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."}
data/huge-league/players/Everglade_FC_9.json ADDED
@@ -0,0 +1 @@
 
 
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."}
data/huge-league/players/Fraser_Valley_United_1.json ADDED
@@ -0,0 +1 @@
 
 
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."}
data/huge-league/players/Fraser_Valley_United_10.json ADDED
@@ -0,0 +1 @@
 
 
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."}
data/huge-league/players/Fraser_Valley_United_11.json ADDED
@@ -0,0 +1 @@
 
 
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."}
data/huge-league/players/Fraser_Valley_United_12.json ADDED
@@ -0,0 +1 @@
 
 
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."}
data/huge-league/players/Fraser_Valley_United_13.json ADDED
@@ -0,0 +1 @@
 
 
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."}
data/huge-league/players/Fraser_Valley_United_14.json ADDED
@@ -0,0 +1 @@
 
 
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."}
data/huge-league/players/Fraser_Valley_United_15.json ADDED
@@ -0,0 +1 @@
 
 
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."}
data/huge-league/players/Fraser_Valley_United_16.json ADDED
@@ -0,0 +1 @@
 
 
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."}
data/huge-league/players/Fraser_Valley_United_17.json ADDED
@@ -0,0 +1 @@
 
 
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."}
data/huge-league/players/Fraser_Valley_United_18.json ADDED
@@ -0,0 +1 @@
 
 
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."}
data/huge-league/players/Fraser_Valley_United_19.json ADDED
@@ -0,0 +1 @@
 
 
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."}
data/huge-league/players/Fraser_Valley_United_2.json ADDED
@@ -0,0 +1 @@
 
 
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."}
data/huge-league/players/Fraser_Valley_United_20.json ADDED
@@ -0,0 +1 @@
 
 
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."}
data/huge-league/players/Fraser_Valley_United_21.json ADDED
@@ -0,0 +1 @@
 
 
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."}
data/huge-league/players/Fraser_Valley_United_22.json ADDED
@@ -0,0 +1 @@
 
 
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."}
data/huge-league/players/Fraser_Valley_United_23.json ADDED
@@ -0,0 +1 @@
 
 
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."}
data/huge-league/players/Fraser_Valley_United_3.json ADDED
@@ -0,0 +1 @@
 
 
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."}
data/huge-league/players/Fraser_Valley_United_4.json ADDED
@@ -0,0 +1 @@
 
 
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."}
data/huge-league/players/Fraser_Valley_United_5.json ADDED
@@ -0,0 +1 @@
 
 
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."}
data/huge-league/players/Fraser_Valley_United_6.json ADDED
@@ -0,0 +1 @@
 
 
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."}