From 02fc847166f25d4f33c5bd8719f9bee248d4abb9 Mon Sep 17 00:00:00 2001 From: Ed_ Date: Wed, 25 Feb 2026 12:41:01 -0500 Subject: [PATCH] feat(headless): add fastapi and uvicorn dependencies --- pyproject.toml | 2 ++ requirements.txt | Bin 1784 -> 93035 bytes tests/test_headless_dependencies.py | 16 ++++++++++++++++ 3 files changed, 18 insertions(+) create mode 100644 tests/test_headless_dependencies.py diff --git a/pyproject.toml b/pyproject.toml index 3e81357..e11f7dc 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -10,6 +10,8 @@ dependencies = [ "anthropic", "tomli-w", "psutil>=7.2.2", + "fastapi", + "uvicorn", ] [dependency-groups] diff --git a/requirements.txt b/requirements.txt index 93cca2f7b5e67ebc7dfb66f50063767a0f248a2f..87461a1dc40c8fef9279bf28a267c67685e18d0d 100644 GIT binary patch literal 93035 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 RDgUXf&t2X3mdjgDklV+Qx6WHCqWf! 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

^LeOxu9$UdqFcmPeiW~^r%e8n! zTT42iE@~8FREd_f1vX`*7wV$6dLp7-4o#rV5t5isAHFUS3)8M+UL%@-Djpt*FU@2V zm?J-LL#`RmXjY5v6|0eoiuX}5Q*)5sAgY2{-ITzm^Bj#MpWy`13me5!KU*aPJ3@0g ztaZCQy$Ms+h!bqB;33b|{Z0ZkO(E#7$B8$c@H#Jk3do3#IAC?_qPEOxxj`R@ z)y+`QZPZ+U_9OBQ?^9+w4R)I$H7Vf!I^#WKTJKMR3wLuFVk6}$1@CIyb(6_wln;&x zK^3$z%X>2bpwW>v^V@aA!$m^7L(2(17xc;YmRvKevanjXW^^`1RJic@jCq)s6lzch zxOl4!)$Po-$vwhcFZ3ZMW0l3Zkb1};Wk*z5wlLBd+&d>ei>Vpd3PLN|gONqx)6^u? zY0J`_4?`v>pCG488@bS6Zq&UJ%b%a`l#|9j?erXmVVe@y8qF_N^G_%ln}p_TwP7hY z@~XPS&#Z;lHk=b*EgC$1;GrbMi{L{P;kk5Vl{}A}4?Y&PgzrsLjc8*}vr`cfO~#nF zDP@&lkLaa15QO(RRXGYSVaba1ki#IrKr8`4$c}ROB>l~>TJl%aN;Wgw)7>+>`uU>> zT^K?eiZJTAh1%9p|DW_+!e>2?;UVm`^6)WyP{eo4Vb%`fTZ{3zU1eO9*M#1X$jTMp zX>FFAUa>(Kg;pJ^km>s-#CoZ^QSPVT@@Mg!v}Y7@X_d)&w)zS6X8fo~wcOZ8=5U_w zs-6^2j7n9W6z{@|mh0YVw<{+T^`)XIj+&^bG#5dyg_4=NDV$Az7rq;Mbc?DHZ;;P} zDi@YZ2AE{*mx@Dpv)zUKtc@AI9}|xBG7pnB3mjyY2YoYDjb)*i)8stA=shQ7 z?QM#lRpF#KY(Sa~0hK-@FzS_awtmCG-HhF)cV&3hXQTb}({qwfqwueK-z@Xw4o7yQ z^>!2nIPIb{POv+|q!pT(e$@%^ecsm5OgslELDTvk;54M{@~??Yet=e~T5q2CErDXc z2i)~Pb22ecGvNN9GG#a7#gxrb5k1W9R3ujPh;u{S&&!%~jC!p%%ktYTI>`)vm2yW( zb+)T{;db$f!x5^u!+6WR#SEoWiz^nQ%;Qd8XI-!YY?<|K7#!i+Wd!2NTOan8ayuFRz*?etSBdo~^}U!Mymd%e(d; Yg~L7cs=s4TV%?~jnFEOmt|h7Y1z+$39RL6T diff --git a/tests/test_headless_dependencies.py b/tests/test_headless_dependencies.py new file mode 100644 index 0000000..ff7581e --- /dev/null +++ b/tests/test_headless_dependencies.py @@ -0,0 +1,16 @@ +import pytest +import importlib + +def test_fastapi_installed(): + """Verify that fastapi is installed.""" + try: + importlib.import_module("fastapi") + except ImportError: + pytest.fail("fastapi is not installed") + +def test_uvicorn_installed(): + """Verify that uvicorn is installed.""" + try: + importlib.import_module("uvicorn") + except ImportError: + pytest.fail("uvicorn is not installed")