Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

DM-41528: Incorporate the REST spawner and JupyterHub build #210

Merged
merged 171 commits into from
Nov 3, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
171 commits
Select commit Hold shift + click to select a range
a9a198f
Initial commit
athornton Dec 20, 2022
2378781
Add Makefile
athornton Dec 20, 2022
09028da
Add requirements
athornton Dec 20, 2022
4a919c3
Syntactically OK
athornton Dec 20, 2022
630166d
update README
athornton Dec 20, 2022
2e72037
update README
athornton Dec 20, 2022
bab7101
Add auth.py
athornton Dec 21, 2022
6e2e19e
begin implementing spawner functionality
athornton Dec 22, 2022
137dd1c
Add spawner entrypoint and freshen reqs
athornton Jan 13, 2023
b7ba146
Add kubernetes_asyncio to make jupyterhub happy
athornton Jan 13, 2023
75ed72f
Export spawner symbols
athornton Jan 13, 2023
6ff5da0
Add pyscopg2
athornton Jan 13, 2023
ee0414e
add idle culler
athornton Jan 13, 2023
6917cf3
Determine external URL
athornton Jan 17, 2023
48d55d4
Add progress method
athornton Jan 25, 2023
aa01f6e
Freshen Deps
athornton Jan 20, 2023
6c4fa0c
Mock out httpx in test suite
athornton Mar 6, 2023
90ce6aa
Work around controller lab model bug
athornton Mar 7, 2023
596ae0c
Make options_from_form() passthrough again; freshen deps
athornton Mar 8, 2023
636b01c
Guard against stream timeout
athornton Mar 8, 2023
68c4d6a
Stream debugging
athornton Mar 8, 2023
53a0f12
Revert "Stream debugging"
athornton Mar 8, 2023
0cfc99f
explicitly require ruamel/.clib to make GH actions happier
athornton Mar 8, 2023
73deebe
Add models and support classes for tests
athornton Feb 21, 2023
2e84088
apply review suggestions
athornton Mar 9, 2023
193982a
apply review suggestions
athornton Mar 9, 2023
edca1ac
fix up test suite
athornton Mar 9, 2023
4f9fc5d
fix up test suite
athornton Mar 9, 2023
74da92c
Improve event handling
athornton Mar 9, 2023
5375491
Merge pull request #1 from lsst-sqre/tickets/DM-36734
athornton Mar 10, 2023
5d4e44e
Add container build and push
athornton Mar 10, 2023
411d826
Merge pull request #2 from lsst-sqre/update_ci
athornton Mar 10, 2023
ea1052b
update README
athornton Mar 10, 2023
0e9e843
Merge pull request #3 from lsst-sqre/tickets/test_ci
athornton Mar 10, 2023
d5a22aa
Remove debug logging
athornton Mar 11, 2023
4ac7a66
Merge pull request #4 from lsst-sqre/tickets/DM-36734B
athornton Mar 11, 2023
9badfed
Update dependencies
rra Mar 23, 2023
c4b744c
Merge pull request #8 from lsst-sqre/tickets/DM-38279a
rra Mar 24, 2023
df9da29
Pin JupyterHub
rra Mar 24, 2023
d287b99
Merge pull request #9 from lsst-sqre/tickets/DM-38279a
rra Mar 24, 2023
d4efaba
Clean up headers sent with lab controller requests
rra Mar 22, 2023
3945ae3
Merge pull request #6 from lsst-sqre/tickets/DM-38279
rra Mar 27, 2023
87037a2
Redo how the shared AsyncClient is handled
rra Mar 23, 2023
460426c
Simplify the test suite
rra Mar 23, 2023
6bbb5e9
Remove more dead code
rra Mar 23, 2023
0c7b266
Remove tests/obj_test
rra Mar 23, 2023
f894001
Test the spawner options form method
rra Mar 23, 2023
01607fa
Add test for progress method
rra Mar 23, 2023
8ce8ebc
Merge pull request #10 from lsst-sqre/tickets/DM-38279
rra Mar 28, 2023
b8363e4
Use httpx-sse for progress events
rra Mar 23, 2023
4db1695
Update dependencies
rra Mar 28, 2023
eeadd3b
Merge pull request #11 from lsst-sqre/tickets/DM-38279
rra Mar 28, 2023
8af611f
Clean up enums and configuration
rra Mar 23, 2023
a13bc09
Mark our configuration options as configurable
rra Mar 24, 2023
f9cd469
Use new syntax for marking traitlets configurable
rra Mar 26, 2023
65be514
Do not inherit environment from JupyterHub
rra Mar 26, 2023
f05d674
Merge pull request #12 from lsst-sqre/tickets/DM-38279
rra Mar 28, 2023
dd86502
Refactor GafaelfawrAuthHandler
rra Mar 24, 2023
67f6819
Export GafaelfawrAuthenticator from the top level
rra Mar 24, 2023
6087d3d
Reorder test code a little
rra Mar 29, 2023
ecdc563
Merge pull request #13 from lsst-sqre/tickets/DM-38279
rra Mar 29, 2023
34d7fa6
Do all spawning work in start
rra Mar 24, 2023
9486be1
Test the spawner sends the right tokens
rra Mar 24, 2023
92232cb
Add more tests for spawning and progress
rra Mar 24, 2023
962a0d3
Improve progress messages and debugging
rra Mar 24, 2023
ee43252
Improve some comments in progress
rra Mar 29, 2023
a1b58fc
Rename gather_progress to collect_progress
rra Mar 29, 2023
e085412
Merge pull request #14 from lsst-sqre/tickets/DM-38279
rra Mar 29, 2023
519f0ab
Update build system
rra Mar 24, 2023
db60fa7
Merge pull request #15 from lsst-sqre/tickets/DM-38279
rra Mar 29, 2023
8785138
Rename errors.py to exceptions.py
rra Mar 24, 2023
f941e56
Add better exception reporting
rra Mar 24, 2023
85fe66c
Use a decorator to convert exceptions
rra Mar 26, 2023
1cae0d7
Fix exception nesting on spawn failure
rra Mar 29, 2023
4e50873
Merge pull request #16 from lsst-sqre/tickets/DM-38279
rra Mar 29, 2023
e72bd4c
Ignore keepalive messages from sse-starlette
rra Mar 26, 2023
9a74774
Merge pull request #17 from lsst-sqre/tickets/DM-38279
rra Mar 29, 2023
2b64568
Use JSON progress messages
rra Apr 4, 2023
4ff1ac3
Merge pull request #18 from lsst-sqre/tickets/DM-38554
rra Apr 11, 2023
c674373
Implement get_url
rra Apr 4, 2023
bdd2880
Merge pull request #19 from lsst-sqre/tickets/DM-38554
rra Apr 11, 2023
dc6ebfd
Alphabetize spawner methods
rra Apr 4, 2023
aeab665
Merge pull request #20 from lsst-sqre/tickets/DM-38554
rra Apr 11, 2023
5f9dfb6
Tweak progress after spawn to 75%
rra Apr 11, 2023
b3a6be1
Merge pull request #21 from lsst-sqre/tickets/DM-38554
rra Apr 12, 2023
c0367f1
Use more accurate type for exception conversion
rra Apr 4, 2023
c84590f
Merge pull request #22 from lsst-sqre/tickets/DM-38554
rra Apr 13, 2023
3617b9a
Use asyncio locking for progress events
rra Apr 20, 2023
0194f6d
Merge pull request #23 from lsst-sqre/tickets/DM-38795
rra Apr 20, 2023
0f0c278
Update dependencies
rra Apr 20, 2023
674a8e1
Merge pull request #24 from lsst-sqre/tickets/DM-38795
rra Apr 20, 2023
bcfe371
[neophile] Update dependencies
sqrbot Apr 24, 2023
402ca24
Merge pull request #25 from lsst-sqre/u/neophile
sqrbot Apr 24, 2023
9906123
[neophile] Update dependencies
sqrbot May 1, 2023
25eb654
Merge pull request #28 from lsst-sqre/u/neophile
sqrbot May 1, 2023
8a7dd5a
Remove lab stop on spawn failure
rra Apr 27, 2023
942653f
Merge pull request #27 from lsst-sqre/tickets/DM-38795
rra May 1, 2023
ab14fc5
[neophile] Update dependencies
sqrbot May 8, 2023
de6bbc7
Merge pull request #29 from lsst-sqre/u/neophile
sqrbot May 8, 2023
3c2733b
[neophile] Update dependencies
sqrbot May 15, 2023
c787c91
Merge pull request #30 from lsst-sqre/u/neophile
sqrbot May 15, 2023
1d5d512
Do not reuse labs on conflict
rra May 17, 2023
1c85eb6
Merge pull request #31 from lsst-sqre/tickets/DM-39249
rra May 18, 2023
b728b60
[neophile] Update dependencies
sqrbot May 22, 2023
c0a1a54
Merge pull request #33 from lsst-sqre/u/neophile
sqrbot May 22, 2023
906fbfd
Log REST spawner exceptions before translating
rra May 19, 2023
c52f722
Merge pull request #32 from lsst-sqre/tickets/DM-39249
rra May 23, 2023
ac32aea
Update dependencies
rra May 23, 2023
2e58c5d
Merge pull request #34 from lsst-sqre/tickets/DM-39249
rra May 23, 2023
89efd20
Improve logging in spawner get_url method
rra May 25, 2023
8c87fd7
Merge pull request #35 from lsst-sqre/tickets/DM-39400
rra May 25, 2023
69cbf35
[neophile] Update dependencies
sqrbot May 29, 2023
5e3a20e
Merge pull request #36 from lsst-sqre/u/neophile
sqrbot May 29, 2023
7bfc02b
[neophile] Update dependencies
sqrbot Jun 5, 2023
915e48c
Merge pull request #37 from lsst-sqre/u/neophile
sqrbot Jun 5, 2023
5478820
[neophile] Update dependencies
sqrbot Jun 12, 2023
4f93540
Merge pull request #38 from lsst-sqre/u/neophile
sqrbot Jun 12, 2023
20db043
[neophile] Update dependencies
sqrbot Jun 19, 2023
612df3b
Merge pull request #39 from lsst-sqre/u/neophile
sqrbot Jun 19, 2023
a07c348
[neophile] Update dependencies
sqrbot Jun 26, 2023
ba4554d
Merge pull request #40 from lsst-sqre/u/neophile
sqrbot Jun 26, 2023
bb82407
Increase timeout when talking to controller
rra Jul 6, 2023
f0b7516
Pin additional dependency required by 3.10
rra Jul 6, 2023
23e5e12
Merge pull request #41 from lsst-sqre/tickets/DM-39596
rra Jul 6, 2023
b6b8bcd
Switch to Ruff for linting
rra Sep 6, 2023
6e8401f
Filter pipes deprecation warning
rra Sep 6, 2023
4888e01
Merge pull request #42 from lsst-sqre/tickets/DM-40638
rra Sep 6, 2023
c9cd5ed
Update dependencies and add GitHub Actions
rra Sep 6, 2023
e4c857c
Merge pull request #43 from lsst-sqre/tickets/DM-40638
rra Sep 6, 2023
a66a1c7
Update Python dependencies
rra Sep 18, 2023
2f55ef5
Update pre-commit dependencies
rra Sep 18, 2023
db4a3ee
Use Python 3.11 to run neophile
rra Sep 18, 2023
1e402b7
Merge pull request #45 from lsst-sqre/u/rra/dependencies
rra Sep 18, 2023
cc2b144
Update Makefile targets
rra Sep 6, 2023
9a73fda
Merge pull request #47 from lsst-sqre/tickets/DM-40638a
rra Sep 20, 2023
5c4cdee
[neophile] Update dependencies
neophile-square[bot] Sep 25, 2023
5b12245
Merge pull request #52 from lsst-sqre/u/neophile
neophile-square[bot] Sep 25, 2023
9037017
Bump docker/setup-buildx-action from 2 to 3
dependabot[bot] Sep 25, 2023
3f4fbf0
Merge pull request #51 from lsst-sqre/dependabot/github_actions/docke…
rra Sep 25, 2023
c012f19
Bump docker/build-push-action from 4 to 5
dependabot[bot] Sep 25, 2023
16f62d4
Merge pull request #50 from lsst-sqre/dependabot/github_actions/docke…
rra Sep 25, 2023
35063ab
Bump docker/login-action from 2 to 3
dependabot[bot] Sep 25, 2023
d5ba20a
Merge pull request #49 from lsst-sqre/dependabot/github_actions/docke…
rra Sep 25, 2023
280d0c2
Bump actions/checkout from 3 to 4
dependabot[bot] Sep 25, 2023
e2cfe63
Merge pull request #48 from lsst-sqre/dependabot/github_actions/actio…
rra Sep 25, 2023
776b6f9
[neophile] Update dependencies
neophile-square[bot] Oct 9, 2023
5988d6b
Merge pull request #53 from lsst-sqre/u/neophile
neophile-square[bot] Oct 9, 2023
5712dff
bump hub version
athornton Oct 12, 2023
3707222
Merge pull request #54 from lsst-sqre/tickets/DM-41170
athornton Oct 12, 2023
e70bba7
add postgresql-client to image
athornton Oct 16, 2023
98c74ef
Merge pull request #56 from lsst-sqre/tickets/DM-41198B
athornton Oct 17, 2023
65cfdac
[neophile] Update dependencies
neophile-square[bot] Oct 23, 2023
430658f
Merge pull request #57 from lsst-sqre/u/neophile
neophile-square[bot] Oct 23, 2023
c988b35
Handle terminating and terminated status
rra Oct 26, 2023
3a4ef09
Merge pull request #58 from lsst-sqre/tickets/DM-41350
rra Oct 26, 2023
11a2e8f
Update Python dependencies
rra Oct 26, 2023
245b5a4
Add pytest-sugar
rra Oct 26, 2023
f6759df
Merge pull request #59 from lsst-sqre/tickets/DM-41350
rra Oct 26, 2023
07b0aa3
Merge rsp-restspawner project as spawner
rra Nov 2, 2023
b518df1
Simplify spawner pyproject.toml
rra Nov 2, 2023
5cadd55
Update Python dependencies
rra Nov 2, 2023
1e7c54b
Adjust Docker build for the controller
rra Nov 2, 2023
ad87236
Add spawner directory to noxfile.py
rra Nov 2, 2023
5f6eb9e
Integrate Docker build for JupyterHub
rra Nov 3, 2023
2d20ccc
Make LICENSE files links
rra Nov 3, 2023
b75df02
Add Ruff exclusions from rsp-restspawner
rra Nov 3, 2023
f5aa8c6
Add rsp_restspawner to first-party for Ruff
rra Nov 3, 2023
471b02e
Fix Black pre-commit configuration
rra Nov 3, 2023
66d65a2
Remove unneeded files in spawner directory
rra Nov 3, 2023
ab57cf4
Update dependencies
rra Nov 3, 2023
78ef81a
Fix duplicate build ids in GitHub Actions
rra Nov 3, 2023
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 14 additions & 2 deletions .github/workflows/ci.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -124,11 +124,23 @@ jobs:
fetch-depth: 0

- uses: lsst-sqre/build-and-push-to-ghcr@v1
id: build
id: build1
with:
dockerfile: Dockerfile.controller
image: ${{ github.repository }}-controller
github_token: ${{ secrets.GITHUB_TOKEN }}

- name: Report result
run: |
echo Pushed ghcr.io/${{ github.repository }}-controller:${{ steps.build.outputs.tag }}
echo Pushed ghcr.io/${{ github.repository }}-controller:${{ steps.build1.outputs.tag }}

- uses: lsst-sqre/build-and-push-to-ghcr@v1
id: build2
with:
dockerfile: Dockerfile.controller
image: ${{ github.repository }}-jupyterhub
github_token: ${{ secrets.GITHUB_TOKEN }}

- name: Report result
run: |
echo Pushed ghcr.io/${{ github.repository }}-jupyterhub:${{ steps.build2.outputs.tag }}
3 changes: 2 additions & 1 deletion .pre-commit-config.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ repos:
- id: trailing-whitespace

- repo: https://github.com/astral-sh/ruff-pre-commit
rev: v0.1.3
rev: v0.1.4
hooks:
- id: ruff
args: [--fix, --exit-non-zero-on-fix]
Expand All @@ -17,6 +17,7 @@ repos:
rev: 23.10.1
hooks:
- id: black
args: [--config, pyproject.toml]

- repo: https://github.com/adamchainz/blacken-docs
rev: 1.16.0
Expand Down
14 changes: 8 additions & 6 deletions Dockerfile → Dockerfile.controller
Original file line number Diff line number Diff line change
@@ -1,12 +1,14 @@
# Docker build instructions for the Nublado controller.
#
# This Dockerfile has four stages:
#
# base-image
# Updates the base Python image with security patches and common system
# packages. This image becomes the base of all other images.
# dependencies-image
# Installs third-party dependencies (requirements/main.txt) into a virtual
# environment. This virtual environment is ideal for copying across build
# stages.
# Installs third-party dependencies (controller/requirements/main.txt)
# into a virtual environment. This virtual environment is ideal for
# copying across build stages.
# install-image
# Installs the app into the virtual environment.
# runtime-image
Expand All @@ -17,13 +19,13 @@
FROM python:3.11.5-slim-bullseye as base-image

# Update system packages
COPY scripts/install-base-packages.sh .
COPY controller/scripts/install-base-packages.sh .
RUN ./install-base-packages.sh && rm ./install-base-packages.sh

FROM base-image AS dependencies-image

# Install system packages only needed for building dependencies.
COPY scripts/install-dependency-packages.sh .
COPY controller/scripts/install-dependency-packages.sh .
RUN ./install-dependency-packages.sh

# Create a Python virtual environment
Expand Down Expand Up @@ -56,7 +58,7 @@ RUN useradd --create-home appuser
COPY --from=install-image /opt/venv /opt/venv

# Copy the startup script
COPY scripts/start.sh /start.sh
COPY controller/scripts/start.sh /start.sh

# Make sure we use the virtualenv
ENV PATH="/opt/venv/bin:$PATH"
Expand Down
49 changes: 49 additions & 0 deletions Dockerfile.hub
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
# Docker build instructions for the custom Nublado JupyterHub build.
#
# This Dockerfile has three stages:
#
# base-image
# Updates the base Python image with security patches and common system
# packages. This image becomes the base of all other images.
# dependencies-image
# Installs third-party dependencies (spawner/requirements/main.txt) into
# a virtual environment. This virtual environment is ideal for copying
# across build stages.
# runtime-image
# - Copies the virtual environment into place.
# - Installs the additional JupyterHub plugins.
# - Runs a non-root user.

FROM jupyterhub/jupyterhub:4.0.2 as base-image

# Update system packages
COPY spawner/scripts/install-base-packages.sh .
RUN ./install-base-packages.sh && rm install-base-packages.sh

FROM base-image as dependencies-image

# Install system packages only needed for building dependencies.
COPY spawner/scripts/install-dependency-packages.sh .
RUN ./install-dependency-packages.sh && rm install-dependency-packages.sh

# Install the dependencies of the extra JupyterHub modules.
COPY spawner/requirements/main.txt ./requirements.txt
RUN pip install --quiet --no-cache-dir -r requirements.txt

FROM dependencies-image as runtime-image

# Install the extra JupyterHub modules.
COPY . /app
WORKDIR /app
RUN pip install --no-cache-dir spawner

# Create a non-root user to run JupyterHub. Upstream uses 768 as the UID
# and GID. This value must be kept in sync with the Phalanx nublado
# application values.yaml.
RUN groupadd --gid 768 jovyan
RUN useradd --create-home jovyan --uid 768 --gid 768
WORKDIR /home/jovyan

USER jovyan
EXPOSE 8000
EXPOSE 8081
21 changes: 0 additions & 21 deletions controller/LICENSE

This file was deleted.

1 change: 1 addition & 0 deletions controller/LICENSE
15 changes: 7 additions & 8 deletions controller/requirements/dev.txt
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ anyio==3.7.1 \
--hash=sha256:91dee416e570e92c64041bd18b900d1d6fa78dff7048769ce5ac5ddad004fbb5
# via
# -c controller/requirements/main.txt
# httpcore
# httpx
asgi-lifespan==2.1.0 \
--hash=sha256:5e2effaf0bfe39829cf2d64e7ecc47c7d86d676a6599f7afba378c31f5e3a308 \
--hash=sha256:ed840706680e28428c01e14afb3875d7d76d3206f3d5b2f2294e059b5c23804f
Expand Down Expand Up @@ -247,15 +247,15 @@ h11==0.14.0 \
# via
# -c controller/requirements/main.txt
# httpcore
httpcore==0.18.0 \
--hash=sha256:13b5e5cd1dca1a6636a6aaea212b19f4f85cd88c366a2b82304181b769aab3c9 \
--hash=sha256:adc5398ee0a476567bf87467063ee63584a8bce86078bf748e48754f60202ced
httpcore==1.0.1 \
--hash=sha256:c5e97ef177dca2023d0b9aad98e49507ef5423e9f1d94ffe2cfe250aa28e63b0 \
--hash=sha256:fce1ddf9b606cfb98132ab58865c3728c52c8e4c3c46e2aabb3674464a186e92
# via
# -c controller/requirements/main.txt
# httpx
httpx==0.25.0 \
--hash=sha256:181ea7f8ba3a82578be86ef4171554dd45fec26a02556a744db029a0a27b7100 \
--hash=sha256:47ecda285389cb32bb2691cc6e069e3ab0205956f681c5b2ad2325719751d875
httpx==0.25.1 \
--hash=sha256:fec7d6cc5c27c578a391f7e87b9aa7d3d8fbcd034f6399f9f79b45bcc12a866a \
--hash=sha256:ffd96d5cf901e63863d9f1b4b6807861dbea4d301613415d9e6e57ead15fc5d0
# via
# -c controller/requirements/main.txt
# respx
Expand Down Expand Up @@ -802,7 +802,6 @@ sniffio==1.3.0 \
# -c controller/requirements/main.txt
# anyio
# asgi-lifespan
# httpcore
# httpx
snowballstemmer==2.2.0 \
--hash=sha256:09b16deb8547d3412ad7b590689584cd0fe25ec8db3be37788be3810cbf19cb1 \
Expand Down
21 changes: 10 additions & 11 deletions controller/requirements/main.txt
Original file line number Diff line number Diff line change
Expand Up @@ -110,7 +110,7 @@ anyio==3.7.1 \
--hash=sha256:91dee416e570e92c64041bd18b900d1d6fa78dff7048769ce5ac5ddad004fbb5
# via
# fastapi
# httpcore
# httpx
# starlette
# watchfiles
async-timeout==4.0.3 \
Expand Down Expand Up @@ -402,9 +402,9 @@ google-auth==2.23.4 \
--hash=sha256:79905d6b1652187def79d491d6e23d0cbb3a21d3c7ba0dbaa9c8a01906b13ff3 \
--hash=sha256:d4bbc92fe4b8bfd2f3e8d88e5ba7085935da208ee38a134fc280e7ce682a05f2
# via google-api-core
google-cloud-artifact-registry==1.8.4 \
--hash=sha256:2deba5c9c0065cf8e2e63c547e93a4921867d57261d57d4a756be1031529e228 \
--hash=sha256:a5066555fe8324cc6e8498014b054b1d3e87a8f9e1b0fa1e47ba3bbc3daaa581
google-cloud-artifact-registry==1.9.0 \
--hash=sha256:3484d2a2c04fadfa480be16a554d01e47e4c4f4b5a123cd3725e865b4dd7f325 \
--hash=sha256:aeee14226b1636e7bc043476cff756876068872bda3246a3b124c39d3f4e3be8
# via -r controller/requirements/main.in
googleapis-common-protos[grpc]==1.61.0 \
--hash=sha256:22f1915393bb3245343f6efe87f6fe868532efc12aa26b391b15132e1279f1c0 \
Expand Down Expand Up @@ -487,9 +487,9 @@ h11==0.14.0 \
# via
# httpcore
# uvicorn
httpcore==0.18.0 \
--hash=sha256:13b5e5cd1dca1a6636a6aaea212b19f4f85cd88c366a2b82304181b769aab3c9 \
--hash=sha256:adc5398ee0a476567bf87467063ee63584a8bce86078bf748e48754f60202ced
httpcore==1.0.1 \
--hash=sha256:c5e97ef177dca2023d0b9aad98e49507ef5423e9f1d94ffe2cfe250aa28e63b0 \
--hash=sha256:fce1ddf9b606cfb98132ab58865c3728c52c8e4c3c46e2aabb3674464a186e92
# via httpx
httptools==0.6.1 \
--hash=sha256:00d5d4b68a717765b1fabfd9ca755bd12bf44105eeb806c03d1962acd9b8e563 \
Expand Down Expand Up @@ -529,9 +529,9 @@ httptools==0.6.1 \
--hash=sha256:e57997ac7fb7ee43140cc03664de5f268813a481dff6245e0075925adc6aa185 \
--hash=sha256:fe467eb086d80217b7584e61313ebadc8d187a4d95bb62031b7bab4b205c3ba3
# via uvicorn
httpx==0.25.0 \
--hash=sha256:181ea7f8ba3a82578be86ef4171554dd45fec26a02556a744db029a0a27b7100 \
--hash=sha256:47ecda285389cb32bb2691cc6e069e3ab0205956f681c5b2ad2325719751d875
httpx==0.25.1 \
--hash=sha256:fec7d6cc5c27c578a391f7e87b9aa7d3d8fbcd034f6399f9f79b45bcc12a866a \
--hash=sha256:ffd96d5cf901e63863d9f1b4b6807861dbea4d301613415d9e6e57ead15fc5d0
# via
# -r controller/requirements/main.in
# safir
Expand Down Expand Up @@ -948,7 +948,6 @@ sniffio==1.3.0 \
--hash=sha256:eecefdce1e5bbfb7ad2eeaabf7c1eeb404d7757c379bd1f7e5cce9d8bf425384
# via
# anyio
# httpcore
# httpx
sse-starlette==1.6.5 \
--hash=sha256:68b6b7eb49be0c72a2af80a055994c13afcaa4761b29226beb208f954c25a642 \
Expand Down
File renamed without changes.
Loading