Lazar Radojevic commited on
Commit
be043a6
Β·
1 Parent(s): 57a12d2

working version

Browse files
.gitignore DELETED
@@ -1 +0,0 @@
1
- __pycache__
 
 
Dockerfile CHANGED
@@ -1,18 +1,33 @@
1
- # Use the official Docker image with Docker and Docker Compose
2
- FROM docker:latest
3
 
4
- # Set the working directory to /app
5
- WORKDIR /app
6
 
7
- # Copy the docker-compose.yml file into the container at /app
8
- COPY docker-compose.yml .
9
 
10
- # Copy the frontend and backend directories into the container
11
- COPY frontend ./frontend
12
- COPY backend ./backend
13
 
14
- # Expose ports (adjust if necessary)
15
- EXPOSE 8501 8080
16
 
17
- # Run docker-compose up when the container starts
18
- CMD ["docker", "compose", "up"]
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Use the official Python image from the Docker Hub
2
+ FROM python:3.10-slim
3
 
4
+ # Set up a new user named "user" with user ID 1000
5
+ RUN useradd -m -u 1000 user
6
 
7
+ # Switch to the "user" user
8
+ USER user
9
 
10
+ # Set home to the user's home directory
11
+ ENV HOME=/home/user \
12
+ PATH=/home/user/.local/bin:$PATH
13
 
14
+ # Set the working directory to the user's home directory
15
+ WORKDIR $HOME/app
16
 
17
+ # Install Poetry
18
+ RUN pip install poetry
19
+
20
+ # Copy only the pyproject.toml and poetry.lock files to install dependencies first
21
+ COPY pyproject.toml poetry.lock ./
22
+
23
+ # Install dependencies using Poetry
24
+ RUN poetry install
25
+
26
+ # Copy the rest of the application code to the working directory
27
+ COPY . .
28
+
29
+ # Expose the port FastAPI will run on
30
+ EXPOSE 8000
31
+
32
+ # Command to run the FastAPI application
33
+ CMD ["poetry", "run", "python", "run.py"]
README.md CHANGED
@@ -6,6 +6,7 @@ colorTo: green
6
  sdk: docker
7
  pinned: false
8
  license: apache-2.0
 
9
  ---
10
 
11
  Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference
 
6
  sdk: docker
7
  pinned: false
8
  license: apache-2.0
9
+ app_port: 8000
10
  ---
11
 
12
  Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference
backend/__init__.py β†’ __init__.py RENAMED
File without changes
backend/Dockerfile DELETED
@@ -1,23 +0,0 @@
1
- # Use the official Python image from the Docker Hub
2
- FROM python:3.10-slim
3
-
4
- # Set the working directory in the container
5
- WORKDIR /app
6
-
7
- # Install Poetry
8
- RUN pip install poetry
9
-
10
- # Copy only the pyproject.toml and poetry.lock files to install dependencies first
11
- COPY pyproject.toml poetry.lock ./
12
-
13
- # Install dependencies using Poetry
14
- RUN poetry config virtualenvs.create false && poetry install --only=main
15
-
16
- # Copy the rest of the application code to the working directory
17
- COPY . .
18
-
19
- # Expose the port FastAPI will run on
20
- EXPOSE 8000
21
-
22
- # Command to run the FastAPI application
23
- CMD ["poetry", "run", "uvicorn", "run:app", "--host", "0.0.0.0", "--port", "8000", "--reload"]
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
backend/poe/common-tasks.toml DELETED
@@ -1,52 +0,0 @@
1
- # This file defines common tasks that most python projects can benefit from
2
-
3
- [tool.poe.tasks.format-isort]
4
- help = "Format code with isort"
5
- cmd = "isort ."
6
-
7
- [tool.poe.tasks.format-black]
8
- help = "Format code with black"
9
- cmd = "black ."
10
-
11
- [tool.poe.tasks.format]
12
- help = "Run code formating tools"
13
- sequence = ["format-isort", "format-black"]
14
-
15
- [tool.poe.tasks.style-black]
16
- help = "Validate black code style"
17
- cmd = "black . --check --diff"
18
-
19
- [tool.poe.tasks.style-isort]
20
- help = "Validate isort code style"
21
- cmd = "isort . --check --diff"
22
-
23
- [tool.poe.tasks.style]
24
- help = "Validate code style"
25
- sequence = ["style-isort", "style-black"]
26
-
27
- [tool.poe.tasks.types]
28
- help = "Run the type checker"
29
- cmd = "mypy . --ignore-missing-imports --check-untyped-defs --install-types --non-interactive"
30
-
31
- [tool.poe.tasks.lint]
32
- help = "Evaluate ruff rules"
33
- cmd = "ruff check ."
34
-
35
- [tool.poe.tasks.test]
36
- help = "Run unit tests"
37
- cmd = "pytest -p no:cacheprovider"
38
-
39
- [tool.poe.tasks.clean]
40
- help = "Remove automatically generated files"
41
- cmd = """
42
- rm -rf dist
43
- .mypy_cache
44
- .pytest_cache
45
- .ruff_cache
46
- ./**/__pycache__/
47
- ./**/*.pyc
48
- """
49
-
50
- [tool.poe.tasks.check]
51
- help = "Run all checks on the code base"
52
- sequence = ["style", "types", "lint", "clean"]
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
docker-compose.yml DELETED
@@ -1,14 +0,0 @@
1
- services:
2
- frontend:
3
- build: frontend
4
- ports:
5
- - 8501:8501
6
- depends_on:
7
- - backend
8
- environment:
9
- - API_URL=http://backend:8000/
10
-
11
- backend:
12
- build: backend
13
- ports:
14
- - 8000:8000
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
frontend/Dockerfile DELETED
@@ -1,22 +0,0 @@
1
-
2
- # Use the official Python image from the Docker Hub
3
- FROM python:3.10-slim
4
-
5
- # Set the working directory in the container
6
- WORKDIR /app
7
-
8
- # Install Poetry
9
- RUN pip install poetry
10
-
11
- # Copy only the pyproject.toml and poetry.lock files to install dependencies first
12
- COPY pyproject.toml poetry.lock ./
13
-
14
- # Install dependencies using Poetry
15
- RUN poetry config virtualenvs.create false && poetry install --only=main
16
-
17
- # Copy the rest of the application code to the working directory
18
- COPY . .
19
-
20
- EXPOSE 8501
21
-
22
- CMD ["streamlit", "run", "run.py"]
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
frontend/app_ui.py ADDED
@@ -0,0 +1,46 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import streamlit as st
2
+ import requests
3
+
4
+ # Define the URL of the FastAPI service
5
+ API_URL = "http://localhost:8000/most_similar" # Adjust if the FastAPI service is hosted elsewhere
6
+
7
+
8
+ def get_similar_prompts(query, n):
9
+ try:
10
+ response = requests.post(API_URL, json={"query": query, "n": n})
11
+ response.raise_for_status() # Raise an exception for HTTP errors
12
+ return response.json()
13
+ except requests.RequestException as e:
14
+ st.error(f"Error: {e}")
15
+ return None
16
+
17
+
18
+ def main():
19
+ st.title("Prompt Similarity Finder")
20
+
21
+ # User input for query
22
+ query = st.text_input("Enter your query:", "")
23
+ n = st.slider(
24
+ "Number of similar prompts to retrieve:", min_value=1, max_value=20, value=5
25
+ )
26
+
27
+ if st.button("Find Similar Prompts"):
28
+ if query:
29
+ with st.spinner("Fetching similar prompts..."):
30
+ result = get_similar_prompts(query, n)
31
+ if result:
32
+ similar_prompts = result.get("similar_prompts", [])
33
+ if similar_prompts:
34
+ st.subheader("Similar Prompts:")
35
+ for item in similar_prompts:
36
+ st.write(f"**Score:** {item['score']:.2f}")
37
+ st.write(f"**Prompt:** {item['prompt']}")
38
+ st.write("---")
39
+ else:
40
+ st.write("No similar prompts found.")
41
+ else:
42
+ st.warning("Please enter a query.")
43
+
44
+
45
+ if __name__ == "__main__":
46
+ main()
frontend/poetry.lock DELETED
The diff for this file is too large to render. See raw diff
 
frontend/pyproject.toml DELETED
@@ -1,23 +0,0 @@
1
- [tool.poetry]
2
- name = "smart-cat-assignment-frontend"
3
- version = "0.0.1"
4
- description = "SmartCat Assignment"
5
- authors = ["Lazar Radojevic <[email protected]>"]
6
- readme = "README.md"
7
-
8
- [tool.poetry.dependencies]
9
- python = "^3.10"
10
- mypy = "^1.8.0"
11
- ruff = "^0.3.2"
12
- streamlit = "^1.37.0"
13
-
14
- [tool.poetry.group.dev.dependencies]
15
- black = "^24.1.1"
16
- poethepoet = "^0.24.4"
17
- isort = "^5.13.2"
18
-
19
- [tool.isort]
20
- profile = "black"
21
-
22
- [tool.poe]
23
- include = "./poe/common-tasks.toml"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
frontend/run.py DELETED
@@ -1,37 +0,0 @@
1
- import streamlit as st
2
- import requests
3
- from typing import List, Tuple
4
- import os
5
-
6
- API_URL = os.getenv("API_URL")
7
-
8
-
9
- def get_similar_prompts(query: str, n: int) -> List[Tuple[float, str]]:
10
- try:
11
- response = requests.post(f"{API_URL}/most_similar", json={"query": query, "n": n})
12
- if response.status_code == 200:
13
- return response.json().get("similar_prompts", [])
14
- else:
15
- st.error(f"Error: {response.status_code} - {response.text}")
16
- return []
17
- except requests.exceptions.RequestException as e:
18
- st.error(f"Request error: {e}")
19
- return []
20
-
21
-
22
- st.title("Prompt Search Engine")
23
-
24
- query = st.text_input("Enter a prompt:")
25
- n = st.slider("Number of similar prompts to retrieve:", 1, 20, 5)
26
-
27
- if st.button("Search"):
28
- if query:
29
- response = get_similar_prompts(query, n)
30
- if response:
31
- st.write(f"Top {n} similar prompts:")
32
- for query_response in response:
33
- st.write(
34
- f"**Score:** {query_response['score']:.4f} | **Prompt:** {query_response['prompt']}"
35
- )
36
- else:
37
- st.warning("Please enter a prompt to search.")
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
backend/run.py β†’ main.py RENAMED
@@ -46,4 +46,4 @@ async def get_most_similar(query_request: QueryRequest):
46
  )
47
  return response
48
  except Exception as e:
49
- raise HTTPException(status_code=500, detail=str(e))
 
46
  )
47
  return response
48
  except Exception as e:
49
+ raise HTTPException(status_code=500, detail=str(e))
{frontend/poe β†’ poe}/common-tasks.toml RENAMED
@@ -49,4 +49,8 @@ cmd = """
49
 
50
  [tool.poe.tasks.check]
51
  help = "Run all checks on the code base"
52
- sequence = ["style", "types", "lint", "clean"]
 
 
 
 
 
49
 
50
  [tool.poe.tasks.check]
51
  help = "Run all checks on the code base"
52
+ sequence = ["style", "types", "lint", "clean"]
53
+
54
+ [tool.poe.tasks.ui]
55
+ help = "Start the UI"
56
+ cmd = "streamlit run ./frontend/app_ui.py"
backend/poetry.lock β†’ poetry.lock RENAMED
@@ -112,6 +112,32 @@ files = [
112
  [package.dependencies]
113
  frozenlist = ">=1.1.0"
114
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
115
  [[package]]
116
  name = "annotated-types"
117
  version = "0.7.0"
@@ -226,6 +252,30 @@ d = ["aiohttp (>=3.7.4)", "aiohttp (>=3.7.4,!=3.9.0)"]
226
  jupyter = ["ipython (>=7.8.0)", "tokenize-rt (>=3.2.0)"]
227
  uvloop = ["uvloop (>=0.15.2)"]
228
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
229
  [[package]]
230
  name = "certifi"
231
  version = "2024.7.4"
@@ -668,6 +718,40 @@ test-downstream = ["aiobotocore (>=2.5.4,<3.0.0)", "dask-expr", "dask[dataframe,
668
  test-full = ["adlfs", "aiohttp (!=4.0.0a0,!=4.0.0a1)", "cloudpickle", "dask", "distributed", "dropbox", "dropboxdrivefs", "fastparquet", "fusepy", "gcsfs", "jinja2", "kerchunk", "libarchive-c", "lz4", "notebook", "numpy", "ocifs", "pandas", "panel", "paramiko", "pyarrow", "pyarrow (>=1)", "pyftpdlib", "pygit2", "pytest", "pytest-asyncio (!=0.22.0)", "pytest-benchmark", "pytest-cov", "pytest-mock", "pytest-recording", "pytest-rerunfailures", "python-snappy", "requests", "smbprotocol", "tqdm", "urllib3", "zarr", "zstandard"]
669
  tqdm = ["tqdm"]
670
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
671
  [[package]]
672
  name = "h11"
673
  version = "0.14.0"
@@ -868,6 +952,43 @@ files = [
868
  {file = "joblib-1.4.2.tar.gz", hash = "sha256:2382c5816b2636fbd20a09e0f4e9dad4736765fdfb7dca582943b9c1366b3f0e"},
869
  ]
870
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
871
  [[package]]
872
  name = "markdown-it-py"
873
  version = "3.0.0"
@@ -1452,9 +1573,9 @@ files = [
1452
 
1453
  [package.dependencies]
1454
  numpy = [
1455
- {version = ">=1.26.0", markers = "python_version >= \"3.12\""},
1456
  {version = ">=1.22.4", markers = "python_version < \"3.11\""},
1457
  {version = ">=1.23.2", markers = "python_version == \"3.11\""},
 
1458
  ]
1459
  python-dateutil = ">=2.8.2"
1460
  pytz = ">=2020.1"
@@ -1643,6 +1764,27 @@ tomli = ">=1.2.2"
1643
  [package.extras]
1644
  poetry-plugin = ["poetry (>=1.0,<2.0)"]
1645
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1646
  [[package]]
1647
  name = "pyarrow"
1648
  version = "17.0.0"
@@ -1723,8 +1865,8 @@ files = [
1723
  annotated-types = ">=0.4.0"
1724
  pydantic-core = "2.20.1"
1725
  typing-extensions = [
1726
- {version = ">=4.12.2", markers = "python_version >= \"3.13\""},
1727
  {version = ">=4.6.1", markers = "python_version < \"3.13\""},
 
1728
  ]
1729
 
1730
  [package.extras]
@@ -1832,6 +1974,26 @@ files = [
1832
  [package.dependencies]
1833
  typing-extensions = ">=4.6.0,<4.7.0 || >4.7.0"
1834
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1835
  [[package]]
1836
  name = "pygments"
1837
  version = "2.18.0"
@@ -1965,6 +2127,22 @@ files = [
1965
  {file = "PyYAML-6.0.1.tar.gz", hash = "sha256:bfdf460b1736c775f2ba9f6a92bca30bc2095067b8a9d77876d1fad6cc3b4a43"},
1966
  ]
1967
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1968
  [[package]]
1969
  name = "regex"
1970
  version = "2024.7.24"
@@ -2095,6 +2273,119 @@ pygments = ">=2.13.0,<3.0.0"
2095
  [package.extras]
2096
  jupyter = ["ipywidgets (>=7.5.1,<9)"]
2097
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2098
  [[package]]
2099
  name = "ruff"
2100
  version = "0.3.7"
@@ -2384,6 +2675,18 @@ files = [
2384
  {file = "six-1.16.0.tar.gz", hash = "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926"},
2385
  ]
2386
 
 
 
 
 
 
 
 
 
 
 
 
 
2387
  [[package]]
2388
  name = "sniffio"
2389
  version = "1.3.1"
@@ -2414,6 +2717,42 @@ anyio = ">=3.4.0,<5"
2414
  [package.extras]
2415
  full = ["httpx (>=0.22.0)", "itsdangerous", "jinja2", "python-multipart (>=0.0.7)", "pyyaml"]
2416
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2417
  [[package]]
2418
  name = "sympy"
2419
  version = "1.13.1"
@@ -2432,6 +2771,22 @@ mpmath = ">=1.1.0,<1.4"
2432
  [package.extras]
2433
  dev = ["hypothesis (>=6.70.0)", "pytest (>=7.1.0)"]
2434
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2435
  [[package]]
2436
  name = "threadpoolctl"
2437
  version = "3.5.0"
@@ -2562,6 +2917,18 @@ dev = ["tokenizers[testing]"]
2562
  docs = ["setuptools-rust", "sphinx", "sphinx-rtd-theme"]
2563
  testing = ["black (==22.3)", "datasets", "numpy", "pytest", "requests", "ruff"]
2564
 
 
 
 
 
 
 
 
 
 
 
 
 
2565
  [[package]]
2566
  name = "tomli"
2567
  version = "2.0.1"
@@ -2574,6 +2941,18 @@ files = [
2574
  {file = "tomli-2.0.1.tar.gz", hash = "sha256:de526c12914f0c550d15924c62d72abc48d6fe7364aa87328337a31007fe8a4f"},
2575
  ]
2576
 
 
 
 
 
 
 
 
 
 
 
 
 
2577
  [[package]]
2578
  name = "torch"
2579
  version = "2.4.0"
@@ -2628,6 +3007,27 @@ typing-extensions = ">=4.8.0"
2628
  opt-einsum = ["opt-einsum (>=3.3)"]
2629
  optree = ["optree (>=0.11.0)"]
2630
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2631
  [[package]]
2632
  name = "tqdm"
2633
  version = "4.66.4"
@@ -2878,6 +3278,51 @@ files = [
2878
  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)"]
2879
  test = ["Cython (>=0.29.36,<0.30.0)", "aiohttp (==3.9.0b0)", "aiohttp (>=3.8.1)", "flake8 (>=5.0,<6.0)", "mypy (>=0.800)", "psutil", "pyOpenSSL (>=23.0.0,<23.1.0)", "pycodestyle (>=2.9.0,<2.10.0)"]
2880
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2881
  [[package]]
2882
  name = "watchfiles"
2883
  version = "0.22.0"
@@ -3273,4 +3718,4 @@ multidict = ">=4.0"
3273
  [metadata]
3274
  lock-version = "2.0"
3275
  python-versions = "^3.10"
3276
- content-hash = "764bc02a73f67a4d76b9fb62bfc94c96cb2741d58bcbfbf16ace072520f28683"
 
112
  [package.dependencies]
113
  frozenlist = ">=1.1.0"
114
 
115
+ [[package]]
116
+ name = "altair"
117
+ version = "5.3.0"
118
+ description = "Vega-Altair: A declarative statistical visualization library for Python."
119
+ category = "main"
120
+ optional = false
121
+ python-versions = ">=3.8"
122
+ files = [
123
+ {file = "altair-5.3.0-py3-none-any.whl", hash = "sha256:7084a1dab4d83c5e7e5246b92dc1b4451a6c68fd057f3716ee9d315c8980e59a"},
124
+ {file = "altair-5.3.0.tar.gz", hash = "sha256:5a268b1a0983b23d8f9129f819f956174aa7aea2719ed55a52eba9979b9f6675"},
125
+ ]
126
+
127
+ [package.dependencies]
128
+ jinja2 = "*"
129
+ jsonschema = ">=3.0"
130
+ numpy = "*"
131
+ packaging = "*"
132
+ pandas = ">=0.25"
133
+ toolz = "*"
134
+ typing-extensions = {version = ">=4.0.1", markers = "python_version < \"3.11\""}
135
+
136
+ [package.extras]
137
+ all = ["altair-tiles (>=0.3.0)", "anywidget (>=0.9.0)", "pyarrow (>=11)", "vega-datasets (>=0.9.0)", "vegafusion[embed] (>=1.6.6)", "vl-convert-python (>=1.3.0)"]
138
+ dev = ["geopandas", "hatch", "ipython", "m2r", "mypy", "pandas-stubs", "pytest", "pytest-cov", "ruff (>=0.3.0)", "types-jsonschema", "types-setuptools"]
139
+ doc = ["docutils", "jinja2", "myst-parser", "numpydoc", "pillow (>=9,<10)", "pydata-sphinx-theme (>=0.14.1)", "scipy", "sphinx", "sphinx-copybutton", "sphinx-design", "sphinxext-altair"]
140
+
141
  [[package]]
142
  name = "annotated-types"
143
  version = "0.7.0"
 
252
  jupyter = ["ipython (>=7.8.0)", "tokenize-rt (>=3.2.0)"]
253
  uvloop = ["uvloop (>=0.15.2)"]
254
 
255
+ [[package]]
256
+ name = "blinker"
257
+ version = "1.8.2"
258
+ description = "Fast, simple object-to-object and broadcast signaling"
259
+ category = "main"
260
+ optional = false
261
+ python-versions = ">=3.8"
262
+ files = [
263
+ {file = "blinker-1.8.2-py3-none-any.whl", hash = "sha256:1779309f71bf239144b9399d06ae925637cf6634cf6bd131104184531bf67c01"},
264
+ {file = "blinker-1.8.2.tar.gz", hash = "sha256:8f77b09d3bf7c795e969e9486f39c2c5e9c39d4ee07424be2bc594ece9642d83"},
265
+ ]
266
+
267
+ [[package]]
268
+ name = "cachetools"
269
+ version = "5.4.0"
270
+ description = "Extensible memoizing collections and decorators"
271
+ category = "main"
272
+ optional = false
273
+ python-versions = ">=3.7"
274
+ files = [
275
+ {file = "cachetools-5.4.0-py3-none-any.whl", hash = "sha256:3ae3b49a3d5e28a77a0be2b37dbcb89005058959cb2323858c2657c4a8cab474"},
276
+ {file = "cachetools-5.4.0.tar.gz", hash = "sha256:b8adc2e7c07f105ced7bc56dbb6dfbe7c4a00acce20e2227b3f355be89bc6827"},
277
+ ]
278
+
279
  [[package]]
280
  name = "certifi"
281
  version = "2024.7.4"
 
718
  test-full = ["adlfs", "aiohttp (!=4.0.0a0,!=4.0.0a1)", "cloudpickle", "dask", "distributed", "dropbox", "dropboxdrivefs", "fastparquet", "fusepy", "gcsfs", "jinja2", "kerchunk", "libarchive-c", "lz4", "notebook", "numpy", "ocifs", "pandas", "panel", "paramiko", "pyarrow", "pyarrow (>=1)", "pyftpdlib", "pygit2", "pytest", "pytest-asyncio (!=0.22.0)", "pytest-benchmark", "pytest-cov", "pytest-mock", "pytest-recording", "pytest-rerunfailures", "python-snappy", "requests", "smbprotocol", "tqdm", "urllib3", "zarr", "zstandard"]
719
  tqdm = ["tqdm"]
720
 
721
+ [[package]]
722
+ name = "gitdb"
723
+ version = "4.0.11"
724
+ description = "Git Object Database"
725
+ category = "main"
726
+ optional = false
727
+ python-versions = ">=3.7"
728
+ files = [
729
+ {file = "gitdb-4.0.11-py3-none-any.whl", hash = "sha256:81a3407ddd2ee8df444cbacea00e2d038e40150acfa3001696fe0dcf1d3adfa4"},
730
+ {file = "gitdb-4.0.11.tar.gz", hash = "sha256:bf5421126136d6d0af55bc1e7c1af1c397a34f5b7bd79e776cd3e89785c2b04b"},
731
+ ]
732
+
733
+ [package.dependencies]
734
+ smmap = ">=3.0.1,<6"
735
+
736
+ [[package]]
737
+ name = "gitpython"
738
+ version = "3.1.43"
739
+ description = "GitPython is a Python library used to interact with Git repositories"
740
+ category = "main"
741
+ optional = false
742
+ python-versions = ">=3.7"
743
+ files = [
744
+ {file = "GitPython-3.1.43-py3-none-any.whl", hash = "sha256:eec7ec56b92aad751f9912a73404bc02ba212a23adb2c7098ee668417051a1ff"},
745
+ {file = "GitPython-3.1.43.tar.gz", hash = "sha256:35f314a9f878467f5453cc1fee295c3e18e52f1b99f10f6cf5b1682e968a9e7c"},
746
+ ]
747
+
748
+ [package.dependencies]
749
+ gitdb = ">=4.0.1,<5"
750
+
751
+ [package.extras]
752
+ doc = ["sphinx (==4.3.2)", "sphinx-autodoc-typehints", "sphinx-rtd-theme", "sphinxcontrib-applehelp (>=1.0.2,<=1.0.4)", "sphinxcontrib-devhelp (==1.0.2)", "sphinxcontrib-htmlhelp (>=2.0.0,<=2.0.1)", "sphinxcontrib-qthelp (==1.0.3)", "sphinxcontrib-serializinghtml (==1.1.5)"]
753
+ test = ["coverage[toml]", "ddt (>=1.1.1,!=1.4.3)", "mock", "mypy", "pre-commit", "pytest (>=7.3.1)", "pytest-cov", "pytest-instafail", "pytest-mock", "pytest-sugar", "typing-extensions"]
754
+
755
  [[package]]
756
  name = "h11"
757
  version = "0.14.0"
 
952
  {file = "joblib-1.4.2.tar.gz", hash = "sha256:2382c5816b2636fbd20a09e0f4e9dad4736765fdfb7dca582943b9c1366b3f0e"},
953
  ]
954
 
955
+ [[package]]
956
+ name = "jsonschema"
957
+ version = "4.23.0"
958
+ description = "An implementation of JSON Schema validation for Python"
959
+ category = "main"
960
+ optional = false
961
+ python-versions = ">=3.8"
962
+ files = [
963
+ {file = "jsonschema-4.23.0-py3-none-any.whl", hash = "sha256:fbadb6f8b144a8f8cf9f0b89ba94501d143e50411a1278633f56a7acf7fd5566"},
964
+ {file = "jsonschema-4.23.0.tar.gz", hash = "sha256:d71497fef26351a33265337fa77ffeb82423f3ea21283cd9467bb03999266bc4"},
965
+ ]
966
+
967
+ [package.dependencies]
968
+ attrs = ">=22.2.0"
969
+ jsonschema-specifications = ">=2023.03.6"
970
+ referencing = ">=0.28.4"
971
+ rpds-py = ">=0.7.1"
972
+
973
+ [package.extras]
974
+ format = ["fqdn", "idna", "isoduration", "jsonpointer (>1.13)", "rfc3339-validator", "rfc3987", "uri-template", "webcolors (>=1.11)"]
975
+ format-nongpl = ["fqdn", "idna", "isoduration", "jsonpointer (>1.13)", "rfc3339-validator", "rfc3986-validator (>0.1.0)", "uri-template", "webcolors (>=24.6.0)"]
976
+
977
+ [[package]]
978
+ name = "jsonschema-specifications"
979
+ version = "2023.12.1"
980
+ description = "The JSON Schema meta-schemas and vocabularies, exposed as a Registry"
981
+ category = "main"
982
+ optional = false
983
+ python-versions = ">=3.8"
984
+ files = [
985
+ {file = "jsonschema_specifications-2023.12.1-py3-none-any.whl", hash = "sha256:87e4fdf3a94858b8a2ba2778d9ba57d8a9cafca7c7489c46ba0d30a8bc6a9c3c"},
986
+ {file = "jsonschema_specifications-2023.12.1.tar.gz", hash = "sha256:48a76787b3e70f5ed53f1160d2b81f586e4ca6d1548c5de7085d1682674764cc"},
987
+ ]
988
+
989
+ [package.dependencies]
990
+ referencing = ">=0.31.0"
991
+
992
  [[package]]
993
  name = "markdown-it-py"
994
  version = "3.0.0"
 
1573
 
1574
  [package.dependencies]
1575
  numpy = [
 
1576
  {version = ">=1.22.4", markers = "python_version < \"3.11\""},
1577
  {version = ">=1.23.2", markers = "python_version == \"3.11\""},
1578
+ {version = ">=1.26.0", markers = "python_version >= \"3.12\""},
1579
  ]
1580
  python-dateutil = ">=2.8.2"
1581
  pytz = ">=2020.1"
 
1764
  [package.extras]
1765
  poetry-plugin = ["poetry (>=1.0,<2.0)"]
1766
 
1767
+ [[package]]
1768
+ name = "protobuf"
1769
+ version = "5.27.2"
1770
+ description = ""
1771
+ category = "main"
1772
+ optional = false
1773
+ python-versions = ">=3.8"
1774
+ files = [
1775
+ {file = "protobuf-5.27.2-cp310-abi3-win32.whl", hash = "sha256:354d84fac2b0d76062e9b3221f4abbbacdfd2a4d8af36bab0474f3a0bb30ab38"},
1776
+ {file = "protobuf-5.27.2-cp310-abi3-win_amd64.whl", hash = "sha256:0e341109c609749d501986b835f667c6e1e24531096cff9d34ae411595e26505"},
1777
+ {file = "protobuf-5.27.2-cp38-abi3-macosx_10_9_universal2.whl", hash = "sha256:a109916aaac42bff84702fb5187f3edadbc7c97fc2c99c5ff81dd15dcce0d1e5"},
1778
+ {file = "protobuf-5.27.2-cp38-abi3-manylinux2014_aarch64.whl", hash = "sha256:176c12b1f1c880bf7a76d9f7c75822b6a2bc3db2d28baa4d300e8ce4cde7409b"},
1779
+ {file = "protobuf-5.27.2-cp38-abi3-manylinux2014_x86_64.whl", hash = "sha256:b848dbe1d57ed7c191dfc4ea64b8b004a3f9ece4bf4d0d80a367b76df20bf36e"},
1780
+ {file = "protobuf-5.27.2-cp38-cp38-win32.whl", hash = "sha256:4fadd8d83e1992eed0248bc50a4a6361dc31bcccc84388c54c86e530b7f58863"},
1781
+ {file = "protobuf-5.27.2-cp38-cp38-win_amd64.whl", hash = "sha256:610e700f02469c4a997e58e328cac6f305f649826853813177e6290416e846c6"},
1782
+ {file = "protobuf-5.27.2-cp39-cp39-win32.whl", hash = "sha256:9e8f199bf7f97bd7ecebffcae45ebf9527603549b2b562df0fbc6d4d688f14ca"},
1783
+ {file = "protobuf-5.27.2-cp39-cp39-win_amd64.whl", hash = "sha256:7fc3add9e6003e026da5fc9e59b131b8f22b428b991ccd53e2af8071687b4fce"},
1784
+ {file = "protobuf-5.27.2-py3-none-any.whl", hash = "sha256:54330f07e4949d09614707c48b06d1a22f8ffb5763c159efd5c0928326a91470"},
1785
+ {file = "protobuf-5.27.2.tar.gz", hash = "sha256:f3ecdef226b9af856075f28227ff2c90ce3a594d092c39bee5513573f25e2714"},
1786
+ ]
1787
+
1788
  [[package]]
1789
  name = "pyarrow"
1790
  version = "17.0.0"
 
1865
  annotated-types = ">=0.4.0"
1866
  pydantic-core = "2.20.1"
1867
  typing-extensions = [
 
1868
  {version = ">=4.6.1", markers = "python_version < \"3.13\""},
1869
+ {version = ">=4.12.2", markers = "python_version >= \"3.13\""},
1870
  ]
1871
 
1872
  [package.extras]
 
1974
  [package.dependencies]
1975
  typing-extensions = ">=4.6.0,<4.7.0 || >4.7.0"
1976
 
1977
+ [[package]]
1978
+ name = "pydeck"
1979
+ version = "0.9.1"
1980
+ description = "Widget for deck.gl maps"
1981
+ category = "main"
1982
+ optional = false
1983
+ python-versions = ">=3.8"
1984
+ files = [
1985
+ {file = "pydeck-0.9.1-py2.py3-none-any.whl", hash = "sha256:b3f75ba0d273fc917094fa61224f3f6076ca8752b93d46faf3bcfd9f9d59b038"},
1986
+ {file = "pydeck-0.9.1.tar.gz", hash = "sha256:f74475ae637951d63f2ee58326757f8d4f9cd9f2a457cf42950715003e2cb605"},
1987
+ ]
1988
+
1989
+ [package.dependencies]
1990
+ jinja2 = ">=2.10.1"
1991
+ numpy = ">=1.16.4"
1992
+
1993
+ [package.extras]
1994
+ carto = ["pydeck-carto"]
1995
+ jupyter = ["ipykernel (>=5.1.2)", "ipython (>=5.8.0)", "ipywidgets (>=7,<8)", "traitlets (>=4.3.2)"]
1996
+
1997
  [[package]]
1998
  name = "pygments"
1999
  version = "2.18.0"
 
2127
  {file = "PyYAML-6.0.1.tar.gz", hash = "sha256:bfdf460b1736c775f2ba9f6a92bca30bc2095067b8a9d77876d1fad6cc3b4a43"},
2128
  ]
2129
 
2130
+ [[package]]
2131
+ name = "referencing"
2132
+ version = "0.35.1"
2133
+ description = "JSON Referencing + Python"
2134
+ category = "main"
2135
+ optional = false
2136
+ python-versions = ">=3.8"
2137
+ files = [
2138
+ {file = "referencing-0.35.1-py3-none-any.whl", hash = "sha256:eda6d3234d62814d1c64e305c1331c9a3a6132da475ab6382eaa997b21ee75de"},
2139
+ {file = "referencing-0.35.1.tar.gz", hash = "sha256:25b42124a6c8b632a425174f24087783efb348a6f1e0008e63cd4466fedf703c"},
2140
+ ]
2141
+
2142
+ [package.dependencies]
2143
+ attrs = ">=22.2.0"
2144
+ rpds-py = ">=0.7.0"
2145
+
2146
  [[package]]
2147
  name = "regex"
2148
  version = "2024.7.24"
 
2273
  [package.extras]
2274
  jupyter = ["ipywidgets (>=7.5.1,<9)"]
2275
 
2276
+ [[package]]
2277
+ name = "rpds-py"
2278
+ version = "0.19.1"
2279
+ description = "Python bindings to Rust's persistent data structures (rpds)"
2280
+ category = "main"
2281
+ optional = false
2282
+ python-versions = ">=3.8"
2283
+ files = [
2284
+ {file = "rpds_py-0.19.1-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:aaf71f95b21f9dc708123335df22e5a2fef6307e3e6f9ed773b2e0938cc4d491"},
2285
+ {file = "rpds_py-0.19.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:ca0dda0c5715efe2ab35bb83f813f681ebcd2840d8b1b92bfc6fe3ab382fae4a"},
2286
+ {file = "rpds_py-0.19.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:81db2e7282cc0487f500d4db203edc57da81acde9e35f061d69ed983228ffe3b"},
2287
+ {file = "rpds_py-0.19.1-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:1a8dfa125b60ec00c7c9baef945bb04abf8ac772d8ebefd79dae2a5f316d7850"},
2288
+ {file = "rpds_py-0.19.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:271accf41b02687cef26367c775ab220372ee0f4925591c6796e7c148c50cab5"},
2289
+ {file = "rpds_py-0.19.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f9bc4161bd3b970cd6a6fcda70583ad4afd10f2750609fb1f3ca9505050d4ef3"},
2290
+ {file = "rpds_py-0.19.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f0cf2a0dbb5987da4bd92a7ca727eadb225581dd9681365beba9accbe5308f7d"},
2291
+ {file = "rpds_py-0.19.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:b5e28e56143750808c1c79c70a16519e9bc0a68b623197b96292b21b62d6055c"},
2292
+ {file = "rpds_py-0.19.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:c7af6f7b80f687b33a4cdb0a785a5d4de1fb027a44c9a049d8eb67d5bfe8a687"},
2293
+ {file = "rpds_py-0.19.1-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:e429fc517a1c5e2a70d576077231538a98d59a45dfc552d1ac45a132844e6dfb"},
2294
+ {file = "rpds_py-0.19.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:d2dbd8f4990d4788cb122f63bf000357533f34860d269c1a8e90ae362090ff3a"},
2295
+ {file = "rpds_py-0.19.1-cp310-none-win32.whl", hash = "sha256:e0f9d268b19e8f61bf42a1da48276bcd05f7ab5560311f541d22557f8227b866"},
2296
+ {file = "rpds_py-0.19.1-cp310-none-win_amd64.whl", hash = "sha256:df7c841813f6265e636fe548a49664c77af31ddfa0085515326342a751a6ba51"},
2297
+ {file = "rpds_py-0.19.1-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:902cf4739458852fe917104365ec0efbea7d29a15e4276c96a8d33e6ed8ec137"},
2298
+ {file = "rpds_py-0.19.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:f3d73022990ab0c8b172cce57c69fd9a89c24fd473a5e79cbce92df87e3d9c48"},
2299
+ {file = "rpds_py-0.19.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3837c63dd6918a24de6c526277910e3766d8c2b1627c500b155f3eecad8fad65"},
2300
+ {file = "rpds_py-0.19.1-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:cdb7eb3cf3deb3dd9e7b8749323b5d970052711f9e1e9f36364163627f96da58"},
2301
+ {file = "rpds_py-0.19.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:26ab43b6d65d25b1a333c8d1b1c2f8399385ff683a35ab5e274ba7b8bb7dc61c"},
2302
+ {file = "rpds_py-0.19.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:75130df05aae7a7ac171b3b5b24714cffeabd054ad2ebc18870b3aa4526eba23"},
2303
+ {file = "rpds_py-0.19.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c34f751bf67cab69638564eee34023909380ba3e0d8ee7f6fe473079bf93f09b"},
2304
+ {file = "rpds_py-0.19.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:f2671cb47e50a97f419a02cd1e0c339b31de017b033186358db92f4d8e2e17d8"},
2305
+ {file = "rpds_py-0.19.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:3c73254c256081704dba0a333457e2fb815364018788f9b501efe7c5e0ada401"},
2306
+ {file = "rpds_py-0.19.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:4383beb4a29935b8fa28aca8fa84c956bf545cb0c46307b091b8d312a9150e6a"},
2307
+ {file = "rpds_py-0.19.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:dbceedcf4a9329cc665452db1aaf0845b85c666e4885b92ee0cddb1dbf7e052a"},
2308
+ {file = "rpds_py-0.19.1-cp311-none-win32.whl", hash = "sha256:f0a6d4a93d2a05daec7cb885157c97bbb0be4da739d6f9dfb02e101eb40921cd"},
2309
+ {file = "rpds_py-0.19.1-cp311-none-win_amd64.whl", hash = "sha256:c149a652aeac4902ecff2dd93c3b2681c608bd5208c793c4a99404b3e1afc87c"},
2310
+ {file = "rpds_py-0.19.1-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:56313be667a837ff1ea3508cebb1ef6681d418fa2913a0635386cf29cff35165"},
2311
+ {file = "rpds_py-0.19.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:6d1d7539043b2b31307f2c6c72957a97c839a88b2629a348ebabe5aa8b626d6b"},
2312
+ {file = "rpds_py-0.19.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3e1dc59a5e7bc7f44bd0c048681f5e05356e479c50be4f2c1a7089103f1621d5"},
2313
+ {file = "rpds_py-0.19.1-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:b8f78398e67a7227aefa95f876481485403eb974b29e9dc38b307bb6eb2315ea"},
2314
+ {file = "rpds_py-0.19.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ef07a0a1d254eeb16455d839cef6e8c2ed127f47f014bbda64a58b5482b6c836"},
2315
+ {file = "rpds_py-0.19.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8124101e92c56827bebef084ff106e8ea11c743256149a95b9fd860d3a4f331f"},
2316
+ {file = "rpds_py-0.19.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:08ce9c95a0b093b7aec75676b356a27879901488abc27e9d029273d280438505"},
2317
+ {file = "rpds_py-0.19.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:0b02dd77a2de6e49078c8937aadabe933ceac04b41c5dde5eca13a69f3cf144e"},
2318
+ {file = "rpds_py-0.19.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:4dd02e29c8cbed21a1875330b07246b71121a1c08e29f0ee3db5b4cfe16980c4"},
2319
+ {file = "rpds_py-0.19.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:9c7042488165f7251dc7894cd533a875d2875af6d3b0e09eda9c4b334627ad1c"},
2320
+ {file = "rpds_py-0.19.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:f809a17cc78bd331e137caa25262b507225854073fd319e987bd216bed911b7c"},
2321
+ {file = "rpds_py-0.19.1-cp312-none-win32.whl", hash = "sha256:3ddab996807c6b4227967fe1587febade4e48ac47bb0e2d3e7858bc621b1cace"},
2322
+ {file = "rpds_py-0.19.1-cp312-none-win_amd64.whl", hash = "sha256:32e0db3d6e4f45601b58e4ac75c6f24afbf99818c647cc2066f3e4b192dabb1f"},
2323
+ {file = "rpds_py-0.19.1-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:747251e428406b05fc86fee3904ee19550c4d2d19258cef274e2151f31ae9d38"},
2324
+ {file = "rpds_py-0.19.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:dc733d35f861f8d78abfaf54035461e10423422999b360966bf1c443cbc42705"},
2325
+ {file = "rpds_py-0.19.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bbda75f245caecff8faa7e32ee94dfaa8312a3367397975527f29654cd17a6ed"},
2326
+ {file = "rpds_py-0.19.1-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:bd04d8cab16cab5b0a9ffc7d10f0779cf1120ab16c3925404428f74a0a43205a"},
2327
+ {file = "rpds_py-0.19.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e2d66eb41ffca6cc3c91d8387509d27ba73ad28371ef90255c50cb51f8953301"},
2328
+ {file = "rpds_py-0.19.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:fdf4890cda3b59170009d012fca3294c00140e7f2abe1910e6a730809d0f3f9b"},
2329
+ {file = "rpds_py-0.19.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d1fa67ef839bad3815124f5f57e48cd50ff392f4911a9f3cf449d66fa3df62a5"},
2330
+ {file = "rpds_py-0.19.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:b82c9514c6d74b89a370c4060bdb80d2299bc6857e462e4a215b4ef7aa7b090e"},
2331
+ {file = "rpds_py-0.19.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:c7b07959866a6afb019abb9564d8a55046feb7a84506c74a6f197cbcdf8a208e"},
2332
+ {file = "rpds_py-0.19.1-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:4f580ae79d0b861dfd912494ab9d477bea535bfb4756a2269130b6607a21802e"},
2333
+ {file = "rpds_py-0.19.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:c6d20c8896c00775e6f62d8373aba32956aa0b850d02b5ec493f486c88e12859"},
2334
+ {file = "rpds_py-0.19.1-cp313-none-win32.whl", hash = "sha256:afedc35fe4b9e30ab240b208bb9dc8938cb4afe9187589e8d8d085e1aacb8309"},
2335
+ {file = "rpds_py-0.19.1-cp313-none-win_amd64.whl", hash = "sha256:1d4af2eb520d759f48f1073ad3caef997d1bfd910dc34e41261a595d3f038a94"},
2336
+ {file = "rpds_py-0.19.1-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:34bca66e2e3eabc8a19e9afe0d3e77789733c702c7c43cd008e953d5d1463fde"},
2337
+ {file = "rpds_py-0.19.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:24f8ae92c7fae7c28d0fae9b52829235df83f34847aa8160a47eb229d9666c7b"},
2338
+ {file = "rpds_py-0.19.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:71157f9db7f6bc6599a852852f3389343bea34315b4e6f109e5cbc97c1fb2963"},
2339
+ {file = "rpds_py-0.19.1-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:1d494887d40dc4dd0d5a71e9d07324e5c09c4383d93942d391727e7a40ff810b"},
2340
+ {file = "rpds_py-0.19.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:7b3661e6d4ba63a094138032c1356d557de5b3ea6fd3cca62a195f623e381c76"},
2341
+ {file = "rpds_py-0.19.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:97fbb77eaeb97591efdc654b8b5f3ccc066406ccfb3175b41382f221ecc216e8"},
2342
+ {file = "rpds_py-0.19.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4cc4bc73e53af8e7a42c8fd7923bbe35babacfa7394ae9240b3430b5dcf16b2a"},
2343
+ {file = "rpds_py-0.19.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:35af5e4d5448fa179fd7fff0bba0fba51f876cd55212f96c8bbcecc5c684ae5c"},
2344
+ {file = "rpds_py-0.19.1-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:3511f6baf8438326e351097cecd137eb45c5f019944fe0fd0ae2fea2fd26be39"},
2345
+ {file = "rpds_py-0.19.1-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:57863d16187995c10fe9cf911b897ed443ac68189179541734502353af33e693"},
2346
+ {file = "rpds_py-0.19.1-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:9e318e6786b1e750a62f90c6f7fa8b542102bdcf97c7c4de2a48b50b61bd36ec"},
2347
+ {file = "rpds_py-0.19.1-cp38-none-win32.whl", hash = "sha256:53dbc35808c6faa2ce3e48571f8f74ef70802218554884787b86a30947842a14"},
2348
+ {file = "rpds_py-0.19.1-cp38-none-win_amd64.whl", hash = "sha256:8df1c283e57c9cb4d271fdc1875f4a58a143a2d1698eb0d6b7c0d7d5f49c53a1"},
2349
+ {file = "rpds_py-0.19.1-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:e76c902d229a3aa9d5ceb813e1cbcc69bf5bda44c80d574ff1ac1fa3136dea71"},
2350
+ {file = "rpds_py-0.19.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:de1f7cd5b6b351e1afd7568bdab94934d656abe273d66cda0ceea43bbc02a0c2"},
2351
+ {file = "rpds_py-0.19.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:24fc5a84777cb61692d17988989690d6f34f7f95968ac81398d67c0d0994a897"},
2352
+ {file = "rpds_py-0.19.1-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:74129d5ffc4cde992d89d345f7f7d6758320e5d44a369d74d83493429dad2de5"},
2353
+ {file = "rpds_py-0.19.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5e360188b72f8080fefa3adfdcf3618604cc8173651c9754f189fece068d2a45"},
2354
+ {file = "rpds_py-0.19.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:13e6d4840897d4e4e6b2aa1443e3a8eca92b0402182aafc5f4ca1f5e24f9270a"},
2355
+ {file = "rpds_py-0.19.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f09529d2332264a902688031a83c19de8fda5eb5881e44233286b9c9ec91856d"},
2356
+ {file = "rpds_py-0.19.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:0d4b52811dcbc1aba08fd88d475f75b4f6db0984ba12275d9bed1a04b2cae9b5"},
2357
+ {file = "rpds_py-0.19.1-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:dd635c2c4043222d80d80ca1ac4530a633102a9f2ad12252183bcf338c1b9474"},
2358
+ {file = "rpds_py-0.19.1-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:f35b34a5184d5e0cc360b61664c1c06e866aab077b5a7c538a3e20c8fcdbf90b"},
2359
+ {file = "rpds_py-0.19.1-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:d4ec0046facab83012d821b33cead742a35b54575c4edfb7ed7445f63441835f"},
2360
+ {file = "rpds_py-0.19.1-cp39-none-win32.whl", hash = "sha256:f5b8353ea1a4d7dfb59a7f45c04df66ecfd363bb5b35f33b11ea579111d4655f"},
2361
+ {file = "rpds_py-0.19.1-cp39-none-win_amd64.whl", hash = "sha256:1fb93d3486f793d54a094e2bfd9cd97031f63fcb5bc18faeb3dd4b49a1c06523"},
2362
+ {file = "rpds_py-0.19.1-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:7d5c7e32f3ee42f77d8ff1a10384b5cdcc2d37035e2e3320ded909aa192d32c3"},
2363
+ {file = "rpds_py-0.19.1-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:89cc8921a4a5028d6dd388c399fcd2eef232e7040345af3d5b16c04b91cf3c7e"},
2364
+ {file = "rpds_py-0.19.1-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bca34e913d27401bda2a6f390d0614049f5a95b3b11cd8eff80fe4ec340a1208"},
2365
+ {file = "rpds_py-0.19.1-pp310-pypy310_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:5953391af1405f968eb5701ebbb577ebc5ced8d0041406f9052638bafe52209d"},
2366
+ {file = "rpds_py-0.19.1-pp310-pypy310_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:840e18c38098221ea6201f091fc5d4de6128961d2930fbbc96806fb43f69aec1"},
2367
+ {file = "rpds_py-0.19.1-pp310-pypy310_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:6d8b735c4d162dc7d86a9cf3d717f14b6c73637a1f9cd57fe7e61002d9cb1972"},
2368
+ {file = "rpds_py-0.19.1-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ce757c7c90d35719b38fa3d4ca55654a76a40716ee299b0865f2de21c146801c"},
2369
+ {file = "rpds_py-0.19.1-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:a9421b23c85f361a133aa7c5e8ec757668f70343f4ed8fdb5a4a14abd5437244"},
2370
+ {file = "rpds_py-0.19.1-pp310-pypy310_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:3b823be829407393d84ee56dc849dbe3b31b6a326f388e171555b262e8456cc1"},
2371
+ {file = "rpds_py-0.19.1-pp310-pypy310_pp73-musllinux_1_2_i686.whl", hash = "sha256:5e58b61dcbb483a442c6239c3836696b79f2cd8e7eec11e12155d3f6f2d886d1"},
2372
+ {file = "rpds_py-0.19.1-pp310-pypy310_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:39d67896f7235b2c886fb1ee77b1491b77049dcef6fbf0f401e7b4cbed86bbd4"},
2373
+ {file = "rpds_py-0.19.1-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:8b32cd4ab6db50c875001ba4f5a6b30c0f42151aa1fbf9c2e7e3674893fb1dc4"},
2374
+ {file = "rpds_py-0.19.1-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:1c32e41de995f39b6b315d66c27dea3ef7f7c937c06caab4c6a79a5e09e2c415"},
2375
+ {file = "rpds_py-0.19.1-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:1a129c02b42d46758c87faeea21a9f574e1c858b9f358b6dd0bbd71d17713175"},
2376
+ {file = "rpds_py-0.19.1-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:346557f5b1d8fd9966059b7a748fd79ac59f5752cd0e9498d6a40e3ac1c1875f"},
2377
+ {file = "rpds_py-0.19.1-pp39-pypy39_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:31e450840f2f27699d014cfc8865cc747184286b26d945bcea6042bb6aa4d26e"},
2378
+ {file = "rpds_py-0.19.1-pp39-pypy39_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:01227f8b3e6c8961490d869aa65c99653df80d2f0a7fde8c64ebddab2b9b02fd"},
2379
+ {file = "rpds_py-0.19.1-pp39-pypy39_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:69084fd29bfeff14816666c93a466e85414fe6b7d236cfc108a9c11afa6f7301"},
2380
+ {file = "rpds_py-0.19.1-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e4d2b88efe65544a7d5121b0c3b003ebba92bfede2ea3577ce548b69c5235185"},
2381
+ {file = "rpds_py-0.19.1-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:6ea961a674172ed2235d990d7edf85d15d8dfa23ab8575e48306371c070cda67"},
2382
+ {file = "rpds_py-0.19.1-pp39-pypy39_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:5beffdbe766cfe4fb04f30644d822a1080b5359df7db3a63d30fa928375b2720"},
2383
+ {file = "rpds_py-0.19.1-pp39-pypy39_pp73-musllinux_1_2_i686.whl", hash = "sha256:720f3108fb1bfa32e51db58b832898372eb5891e8472a8093008010911e324c5"},
2384
+ {file = "rpds_py-0.19.1-pp39-pypy39_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:c2087dbb76a87ec2c619253e021e4fb20d1a72580feeaa6892b0b3d955175a71"},
2385
+ {file = "rpds_py-0.19.1-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:2ddd50f18ebc05ec29a0d9271e9dbe93997536da3546677f8ca00b76d477680c"},
2386
+ {file = "rpds_py-0.19.1.tar.gz", hash = "sha256:31dd5794837f00b46f4096aa8ccaa5972f73a938982e32ed817bb520c465e520"},
2387
+ ]
2388
+
2389
  [[package]]
2390
  name = "ruff"
2391
  version = "0.3.7"
 
2675
  {file = "six-1.16.0.tar.gz", hash = "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926"},
2676
  ]
2677
 
2678
+ [[package]]
2679
+ name = "smmap"
2680
+ version = "5.0.1"
2681
+ description = "A pure Python implementation of a sliding window memory map manager"
2682
+ category = "main"
2683
+ optional = false
2684
+ python-versions = ">=3.7"
2685
+ files = [
2686
+ {file = "smmap-5.0.1-py3-none-any.whl", hash = "sha256:e6d8668fa5f93e706934a62d7b4db19c8d9eb8cf2adbb75ef1b675aa332b69da"},
2687
+ {file = "smmap-5.0.1.tar.gz", hash = "sha256:dceeb6c0028fdb6734471eb07c0cd2aae706ccaecab45965ee83f11c8d3b1f62"},
2688
+ ]
2689
+
2690
  [[package]]
2691
  name = "sniffio"
2692
  version = "1.3.1"
 
2717
  [package.extras]
2718
  full = ["httpx (>=0.22.0)", "itsdangerous", "jinja2", "python-multipart (>=0.0.7)", "pyyaml"]
2719
 
2720
+ [[package]]
2721
+ name = "streamlit"
2722
+ version = "1.37.0"
2723
+ description = "A faster way to build and share data apps"
2724
+ category = "main"
2725
+ optional = false
2726
+ python-versions = "!=3.9.7,>=3.8"
2727
+ files = [
2728
+ {file = "streamlit-1.37.0-py2.py3-none-any.whl", hash = "sha256:d17e2d32b075a270a97f134ab5d22bbb98b4e474fa261ff49dc4a2b380386c84"},
2729
+ {file = "streamlit-1.37.0.tar.gz", hash = "sha256:463ef728ba21e74e05122e3704e8af644a7bdbb5822e281b8daf4a0a48761879"},
2730
+ ]
2731
+
2732
+ [package.dependencies]
2733
+ altair = ">=4.0,<6"
2734
+ blinker = ">=1.0.0,<2"
2735
+ cachetools = ">=4.0,<6"
2736
+ click = ">=7.0,<9"
2737
+ gitpython = ">=3.0.7,<3.1.19 || >3.1.19,<4"
2738
+ numpy = ">=1.20,<3"
2739
+ packaging = ">=20,<25"
2740
+ pandas = ">=1.3.0,<3"
2741
+ pillow = ">=7.1.0,<11"
2742
+ protobuf = ">=3.20,<6"
2743
+ pyarrow = ">=7.0"
2744
+ pydeck = ">=0.8.0b4,<1"
2745
+ requests = ">=2.27,<3"
2746
+ rich = ">=10.14.0,<14"
2747
+ tenacity = ">=8.1.0,<9"
2748
+ toml = ">=0.10.1,<2"
2749
+ tornado = ">=6.0.3,<7"
2750
+ typing-extensions = ">=4.3.0,<5"
2751
+ watchdog = {version = ">=2.1.5,<5", markers = "platform_system != \"Darwin\""}
2752
+
2753
+ [package.extras]
2754
+ snowflake = ["snowflake-connector-python (>=2.8.0)", "snowflake-snowpark-python (>=0.9.0)"]
2755
+
2756
  [[package]]
2757
  name = "sympy"
2758
  version = "1.13.1"
 
2771
  [package.extras]
2772
  dev = ["hypothesis (>=6.70.0)", "pytest (>=7.1.0)"]
2773
 
2774
+ [[package]]
2775
+ name = "tenacity"
2776
+ version = "8.5.0"
2777
+ description = "Retry code until it succeeds"
2778
+ category = "main"
2779
+ optional = false
2780
+ python-versions = ">=3.8"
2781
+ files = [
2782
+ {file = "tenacity-8.5.0-py3-none-any.whl", hash = "sha256:b594c2a5945830c267ce6b79a166228323ed52718f30302c1359836112346687"},
2783
+ {file = "tenacity-8.5.0.tar.gz", hash = "sha256:8bc6c0c8a09b31e6cad13c47afbed1a567518250a9a171418582ed8d9c20ca78"},
2784
+ ]
2785
+
2786
+ [package.extras]
2787
+ doc = ["reno", "sphinx"]
2788
+ test = ["pytest", "tornado (>=4.5)", "typeguard"]
2789
+
2790
  [[package]]
2791
  name = "threadpoolctl"
2792
  version = "3.5.0"
 
2917
  docs = ["setuptools-rust", "sphinx", "sphinx-rtd-theme"]
2918
  testing = ["black (==22.3)", "datasets", "numpy", "pytest", "requests", "ruff"]
2919
 
2920
+ [[package]]
2921
+ name = "toml"
2922
+ version = "0.10.2"
2923
+ description = "Python Library for Tom's Obvious, Minimal Language"
2924
+ category = "main"
2925
+ optional = false
2926
+ python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*"
2927
+ files = [
2928
+ {file = "toml-0.10.2-py2.py3-none-any.whl", hash = "sha256:806143ae5bfb6a3c6e736a764057db0e6a0e05e338b5630894a5f779cabb4f9b"},
2929
+ {file = "toml-0.10.2.tar.gz", hash = "sha256:b3bda1d108d5dd99f4a20d24d9c348e91c4db7ab1b749200bded2f839ccbe68f"},
2930
+ ]
2931
+
2932
  [[package]]
2933
  name = "tomli"
2934
  version = "2.0.1"
 
2941
  {file = "tomli-2.0.1.tar.gz", hash = "sha256:de526c12914f0c550d15924c62d72abc48d6fe7364aa87328337a31007fe8a4f"},
2942
  ]
2943
 
2944
+ [[package]]
2945
+ name = "toolz"
2946
+ version = "0.12.1"
2947
+ description = "List processing tools and functional utilities"
2948
+ category = "main"
2949
+ optional = false
2950
+ python-versions = ">=3.7"
2951
+ files = [
2952
+ {file = "toolz-0.12.1-py3-none-any.whl", hash = "sha256:d22731364c07d72eea0a0ad45bafb2c2937ab6fd38a3507bf55eae8744aa7d85"},
2953
+ {file = "toolz-0.12.1.tar.gz", hash = "sha256:ecca342664893f177a13dac0e6b41cbd8ac25a358e5f215316d43e2100224f4d"},
2954
+ ]
2955
+
2956
  [[package]]
2957
  name = "torch"
2958
  version = "2.4.0"
 
3007
  opt-einsum = ["opt-einsum (>=3.3)"]
3008
  optree = ["optree (>=0.11.0)"]
3009
 
3010
+ [[package]]
3011
+ name = "tornado"
3012
+ version = "6.4.1"
3013
+ description = "Tornado is a Python web framework and asynchronous networking library, originally developed at FriendFeed."
3014
+ category = "main"
3015
+ optional = false
3016
+ python-versions = ">=3.8"
3017
+ files = [
3018
+ {file = "tornado-6.4.1-cp38-abi3-macosx_10_9_universal2.whl", hash = "sha256:163b0aafc8e23d8cdc3c9dfb24c5368af84a81e3364745ccb4427669bf84aec8"},
3019
+ {file = "tornado-6.4.1-cp38-abi3-macosx_10_9_x86_64.whl", hash = "sha256:6d5ce3437e18a2b66fbadb183c1d3364fb03f2be71299e7d10dbeeb69f4b2a14"},
3020
+ {file = "tornado-6.4.1-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e2e20b9113cd7293f164dc46fffb13535266e713cdb87bd2d15ddb336e96cfc4"},
3021
+ {file = "tornado-6.4.1-cp38-abi3-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8ae50a504a740365267b2a8d1a90c9fbc86b780a39170feca9bcc1787ff80842"},
3022
+ {file = "tornado-6.4.1-cp38-abi3-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:613bf4ddf5c7a95509218b149b555621497a6cc0d46ac341b30bd9ec19eac7f3"},
3023
+ {file = "tornado-6.4.1-cp38-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:25486eb223babe3eed4b8aecbac33b37e3dd6d776bc730ca14e1bf93888b979f"},
3024
+ {file = "tornado-6.4.1-cp38-abi3-musllinux_1_2_i686.whl", hash = "sha256:454db8a7ecfcf2ff6042dde58404164d969b6f5d58b926da15e6b23817950fc4"},
3025
+ {file = "tornado-6.4.1-cp38-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:a02a08cc7a9314b006f653ce40483b9b3c12cda222d6a46d4ac63bb6c9057698"},
3026
+ {file = "tornado-6.4.1-cp38-abi3-win32.whl", hash = "sha256:d9a566c40b89757c9aa8e6f032bcdb8ca8795d7c1a9762910c722b1635c9de4d"},
3027
+ {file = "tornado-6.4.1-cp38-abi3-win_amd64.whl", hash = "sha256:b24b8982ed444378d7f21d563f4180a2de31ced9d8d84443907a0a64da2072e7"},
3028
+ {file = "tornado-6.4.1.tar.gz", hash = "sha256:92d3ab53183d8c50f8204a51e6f91d18a15d5ef261e84d452800d4ff6fc504e9"},
3029
+ ]
3030
+
3031
  [[package]]
3032
  name = "tqdm"
3033
  version = "4.66.4"
 
3278
  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)"]
3279
  test = ["Cython (>=0.29.36,<0.30.0)", "aiohttp (==3.9.0b0)", "aiohttp (>=3.8.1)", "flake8 (>=5.0,<6.0)", "mypy (>=0.800)", "psutil", "pyOpenSSL (>=23.0.0,<23.1.0)", "pycodestyle (>=2.9.0,<2.10.0)"]
3280
 
3281
+ [[package]]
3282
+ name = "watchdog"
3283
+ version = "4.0.1"
3284
+ description = "Filesystem events monitoring"
3285
+ category = "main"
3286
+ optional = false
3287
+ python-versions = ">=3.8"
3288
+ files = [
3289
+ {file = "watchdog-4.0.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:da2dfdaa8006eb6a71051795856bedd97e5b03e57da96f98e375682c48850645"},
3290
+ {file = "watchdog-4.0.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:e93f451f2dfa433d97765ca2634628b789b49ba8b504fdde5837cdcf25fdb53b"},
3291
+ {file = "watchdog-4.0.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:ef0107bbb6a55f5be727cfc2ef945d5676b97bffb8425650dadbb184be9f9a2b"},
3292
+ {file = "watchdog-4.0.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:17e32f147d8bf9657e0922c0940bcde863b894cd871dbb694beb6704cfbd2fb5"},
3293
+ {file = "watchdog-4.0.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:03e70d2df2258fb6cb0e95bbdbe06c16e608af94a3ffbd2b90c3f1e83eb10767"},
3294
+ {file = "watchdog-4.0.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:123587af84260c991dc5f62a6e7ef3d1c57dfddc99faacee508c71d287248459"},
3295
+ {file = "watchdog-4.0.1-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:093b23e6906a8b97051191a4a0c73a77ecc958121d42346274c6af6520dec175"},
3296
+ {file = "watchdog-4.0.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:611be3904f9843f0529c35a3ff3fd617449463cb4b73b1633950b3d97fa4bfb7"},
3297
+ {file = "watchdog-4.0.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:62c613ad689ddcb11707f030e722fa929f322ef7e4f18f5335d2b73c61a85c28"},
3298
+ {file = "watchdog-4.0.1-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:d4925e4bf7b9bddd1c3de13c9b8a2cdb89a468f640e66fbfabaf735bd85b3e35"},
3299
+ {file = "watchdog-4.0.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:cad0bbd66cd59fc474b4a4376bc5ac3fc698723510cbb64091c2a793b18654db"},
3300
+ {file = "watchdog-4.0.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:a3c2c317a8fb53e5b3d25790553796105501a235343f5d2bf23bb8649c2c8709"},
3301
+ {file = "watchdog-4.0.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:c9904904b6564d4ee8a1ed820db76185a3c96e05560c776c79a6ce5ab71888ba"},
3302
+ {file = "watchdog-4.0.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:667f3c579e813fcbad1b784db7a1aaa96524bed53437e119f6a2f5de4db04235"},
3303
+ {file = "watchdog-4.0.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:d10a681c9a1d5a77e75c48a3b8e1a9f2ae2928eda463e8d33660437705659682"},
3304
+ {file = "watchdog-4.0.1-pp310-pypy310_pp73-macosx_10_9_x86_64.whl", hash = "sha256:0144c0ea9997b92615af1d94afc0c217e07ce2c14912c7b1a5731776329fcfc7"},
3305
+ {file = "watchdog-4.0.1-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:998d2be6976a0ee3a81fb8e2777900c28641fb5bfbd0c84717d89bca0addcdc5"},
3306
+ {file = "watchdog-4.0.1-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:e7921319fe4430b11278d924ef66d4daa469fafb1da679a2e48c935fa27af193"},
3307
+ {file = "watchdog-4.0.1-pp38-pypy38_pp73-macosx_11_0_arm64.whl", hash = "sha256:f0de0f284248ab40188f23380b03b59126d1479cd59940f2a34f8852db710625"},
3308
+ {file = "watchdog-4.0.1-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:bca36be5707e81b9e6ce3208d92d95540d4ca244c006b61511753583c81c70dd"},
3309
+ {file = "watchdog-4.0.1-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:ab998f567ebdf6b1da7dc1e5accfaa7c6992244629c0fdaef062f43249bd8dee"},
3310
+ {file = "watchdog-4.0.1-py3-none-manylinux2014_aarch64.whl", hash = "sha256:dddba7ca1c807045323b6af4ff80f5ddc4d654c8bce8317dde1bd96b128ed253"},
3311
+ {file = "watchdog-4.0.1-py3-none-manylinux2014_armv7l.whl", hash = "sha256:4513ec234c68b14d4161440e07f995f231be21a09329051e67a2118a7a612d2d"},
3312
+ {file = "watchdog-4.0.1-py3-none-manylinux2014_i686.whl", hash = "sha256:4107ac5ab936a63952dea2a46a734a23230aa2f6f9db1291bf171dac3ebd53c6"},
3313
+ {file = "watchdog-4.0.1-py3-none-manylinux2014_ppc64.whl", hash = "sha256:6e8c70d2cd745daec2a08734d9f63092b793ad97612470a0ee4cbb8f5f705c57"},
3314
+ {file = "watchdog-4.0.1-py3-none-manylinux2014_ppc64le.whl", hash = "sha256:f27279d060e2ab24c0aa98363ff906d2386aa6c4dc2f1a374655d4e02a6c5e5e"},
3315
+ {file = "watchdog-4.0.1-py3-none-manylinux2014_s390x.whl", hash = "sha256:f8affdf3c0f0466e69f5b3917cdd042f89c8c63aebdb9f7c078996f607cdb0f5"},
3316
+ {file = "watchdog-4.0.1-py3-none-manylinux2014_x86_64.whl", hash = "sha256:ac7041b385f04c047fcc2951dc001671dee1b7e0615cde772e84b01fbf68ee84"},
3317
+ {file = "watchdog-4.0.1-py3-none-win32.whl", hash = "sha256:206afc3d964f9a233e6ad34618ec60b9837d0582b500b63687e34011e15bb429"},
3318
+ {file = "watchdog-4.0.1-py3-none-win_amd64.whl", hash = "sha256:7577b3c43e5909623149f76b099ac49a1a01ca4e167d1785c76eb52fa585745a"},
3319
+ {file = "watchdog-4.0.1-py3-none-win_ia64.whl", hash = "sha256:d7b9f5f3299e8dd230880b6c55504a1f69cf1e4316275d1b215ebdd8187ec88d"},
3320
+ {file = "watchdog-4.0.1.tar.gz", hash = "sha256:eebaacf674fa25511e8867028d281e602ee6500045b57f43b08778082f7f8b44"},
3321
+ ]
3322
+
3323
+ [package.extras]
3324
+ watchmedo = ["PyYAML (>=3.10)"]
3325
+
3326
  [[package]]
3327
  name = "watchfiles"
3328
  version = "0.22.0"
 
3718
  [metadata]
3719
  lock-version = "2.0"
3720
  python-versions = "^3.10"
3721
+ content-hash = "38832b2f1f7e879f5efe88601e5ba8d8971bbbe8b4326625936762f860a7c128"
backend/pyproject.toml β†’ pyproject.toml RENAMED
@@ -14,6 +14,7 @@ sentence-transformers = "^3.0.1"
14
  numpy = "1.26.4"
15
  fastapi = "^0.111.1"
16
  uvicorn = "^0.30.3"
 
17
 
18
  [tool.poetry.group.dev.dependencies]
19
  black = "^24.1.1"
 
14
  numpy = "1.26.4"
15
  fastapi = "^0.111.1"
16
  uvicorn = "^0.30.3"
17
+ streamlit = "^1.37.0"
18
 
19
  [tool.poetry.group.dev.dependencies]
20
  black = "^24.1.1"
run.py ADDED
@@ -0,0 +1,14 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import uvicorn
2
+
3
+
4
+ def run_fastapi_app():
5
+ uvicorn.run(
6
+ "main:app", # Module name and app instance
7
+ host="0.0.0.0",
8
+ port=8000,
9
+ reload=True, # Enable auto-reload for development
10
+ )
11
+
12
+
13
+ if __name__ == "__main__":
14
+ run_fastapi_app()
{backend/src β†’ src}/__init__.py RENAMED
File without changes
{backend/src β†’ src}/prompt_loader.py RENAMED
File without changes
{backend/src β†’ src}/search_engine.py RENAMED
File without changes
{backend/src β†’ src}/similarity_scorer.py RENAMED
File without changes
{backend/src β†’ src}/vectorizer.py RENAMED
File without changes