sbuild (Debian sbuild) 0.89.3+deb13u4 (28 December 2025) on c7a-large-1787858680 +==============================================================================+ | python-mcp 1.28.1-1 (amd64) Thu, 27 Aug 2026 19:29:36 +0000 | +==============================================================================+ Package: python-mcp Version: 1.28.1-1 Source Version: 1.28.1-1 Distribution: sid-unshare Machine Architecture: amd64 Host Architecture: amd64 Build Architecture: amd64 Build Type: binary I: Unpacking /var/lib/buildd/.cache/sbuild/sid-unshare-amd64.tar.gz to /tmp/tmp.sbuild.oaE478Q9Vo... I: Setting up the chroot... I: Creating chroot session... I: Setting up log color... I: NOTICE: Log filtering will replace 'sbuild-unshare-dummy-location' with '<>' I: Setting up apt archive... I: NOTICE: Log filtering will replace 'build/python-mcp-lwKchI/resolver-PpRvkO' with '<>' +------------------------------------------------------------------------------+ | Update chroot Thu, 27 Aug 2026 19:29:45 +0000 | +------------------------------------------------------------------------------+ Get:1 http://deb.debian.org/debian sid InRelease [193 kB] Get:2 http://deb.debian.org/debian sid/main Sources [11.9 MB] Get:3 http://deb.debian.org/debian sid/non-free Sources [84.0 kB] Get:4 http://deb.debian.org/debian sid/contrib Sources [64.9 kB] Get:5 http://deb.debian.org/debian sid/non-free-firmware Sources [10.6 kB] Get:6 http://deb.debian.org/debian sid/non-free amd64 Packages [132 kB] Get:7 http://deb.debian.org/debian sid/non-free-firmware amd64 Packages [10.8 kB] Get:8 http://deb.debian.org/debian sid/contrib amd64 Packages [64.4 kB] Get:9 http://deb.debian.org/debian sid/main amd64 Packages [10.7 MB] Fetched 23.2 MB in 1s (19.1 MB/s) Reading package lists... Reading package lists... Building dependency tree... Reading state information... Calculating upgrade... 0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded. +------------------------------------------------------------------------------+ | Fetch source files Thu, 27 Aug 2026 19:29:47 +0000 | +------------------------------------------------------------------------------+ Check APT --------- Checking available source versions... Download source files with APT ------------------------------ Reading package lists... NOTICE: 'python-mcp' packaging is maintained in the 'Git' version control system at: https://salsa.debian.org/python-team/packages/python-mcp.git Please use: git clone https://salsa.debian.org/python-team/packages/python-mcp.git to retrieve the latest (possibly unreleased) updates to the package. Need to get 658 kB of source archives. Get:1 http://deb.debian.org/debian sid/main python-mcp 1.28.1-1 (dsc) [2638 B] Get:2 http://deb.debian.org/debian sid/main python-mcp 1.28.1-1 (tar) [647 kB] Get:3 http://deb.debian.org/debian sid/main python-mcp 1.28.1-1 (diff) [8072 B] Fetched 658 kB in 0s (39.5 MB/s) Download complete and in download only mode I: NOTICE: Log filtering will replace 'build/python-mcp-lwKchI/python-mcp-1.28.1' with '<>' I: NOTICE: Log filtering will replace 'build/python-mcp-lwKchI' with '<>' +------------------------------------------------------------------------------+ | Install package build dependencies Thu, 27 Aug 2026 19:29:48 +0000 | +------------------------------------------------------------------------------+ Setup apt archive ----------------- Merged Build-Depends: debhelper-compat (= 14), dh-python, pybuild-plugin-pyproject, python3-all, python3-hatchling, python3-pytest, python3-pytest-xdist, python3-anyio, python3-httpx, python3-pydantic, python3-pydantic-settings, python3-httpx-sse, python3-dirty-equals, python3-inline-snapshot, python3-requests, python3-starlette, python3-sse-starlette, python3-uvicorn, python3-websockets, python3-jsonschema, python3-typer, python3-python-multipart, python3-jwt, build-essential Filtered Build-Depends: debhelper-compat (= 14), dh-python, pybuild-plugin-pyproject, python3-all, python3-hatchling, python3-pytest, python3-pytest-xdist, python3-anyio, python3-httpx, python3-pydantic, python3-pydantic-settings, python3-httpx-sse, python3-dirty-equals, python3-inline-snapshot, python3-requests, python3-starlette, python3-sse-starlette, python3-uvicorn, python3-websockets, python3-jsonschema, python3-typer, python3-python-multipart, python3-jwt, build-essential dpkg-deb: building package 'sbuild-build-depends-main-dummy' in '/<>/apt_archive/sbuild-build-depends-main-dummy.deb'. Ign:1 copy:/<>/apt_archive ./ InRelease Get:2 copy:/<>/apt_archive ./ Release [615 B] Ign:3 copy:/<>/apt_archive ./ Release.gpg Get:4 copy:/<>/apt_archive ./ Sources [1217 B] Get:5 copy:/<>/apt_archive ./ Packages [1059 B] Fetched 2891 B in 0s (0 B/s) Reading package lists... Reading package lists... Install main build dependencies (apt-based resolver) ---------------------------------------------------- Installing build dependencies Reading package lists... Building dependency tree... Reading state information... Solving dependencies... The following additional packages will be installed: autoconf automake autopoint autotools-dev bsdextrautils ca-certificates debhelper dh-autoreconf dh-python dh-strip-nondeterminism dwz file gettext gettext-base groff-base intltool-debian libarchive-zip-perl libdebhelper-perl libelf1t64 libexpat1 libffi8 libfile-stripnondeterminism-perl libmagic-mgc libmagic1t64 libncursesw6 libpipeline1 libpython3-stdlib libpython3.14-minimal libpython3.14-stdlib libreadline8t64 libsqlite3-0 libtool libuchardet0 libunistring5 libuv1t64 libxml2-16 m4 man-db media-types netbase openssl po-debconf pybuild-plugin-pyproject python3 python3-all python3-annotated-types python3-anyio python3-astroid python3-asttokens python3-attr python3-build python3-certifi python3-chardet python3-charset-normalizer python3-click python3-dirty-equals python3-dnspython python3-dotenv python3-email-validator python3-execnet python3-executing python3-h11 python3-hatchling python3-httpcore python3-httpx python3-httpx-sse python3-idna python3-iniconfig python3-inline-snapshot python3-installer python3-jsonschema python3-jsonschema-specifications python3-jwt python3-linkify-it python3-markdown-it python3-mdurl python3-minimal python3-packaging python3-pathspec python3-pluggy python3-pydantic python3-pydantic-core python3-pydantic-settings python3-pygments python3-pyproject-hooks python3-pytest python3-pytest-xdist python3-python-multipart python3-referencing python3-requests python3-rich python3-rpds-py python3-shellingham python3-sse-starlette python3-starlette python3-trove-classifiers python3-typer python3-typing-extensions python3-typing-inspection python3-uc-micro python3-urllib3 python3-uvicorn python3-uvloop python3-websockets python3-wheel python3-wsproto python3.14 python3.14-minimal readline-common sensible-utils tzdata Suggested packages: autoconf-archive gnu-standards autoconf-doc dh-make flit gettext-doc libasprintf-dev libgettextpo-dev gnulib-l10n groff libtool-doc gfortran | fortran95-compiler m4-doc apparmor less www-browser libmail-box-perl python3-doc python3-tk python3-venv python-attr-doc python3-pip python-build-doc python-charset-normalizer-doc python3-aioquic python3-trio execnet-doc python-inline-snapshot-doc python-installer-doc python-jsonschema-doc python-jwt-doc python3-crypto python-pygments-doc ttf-bitstream-vera python3-cryptography python3-openssl python3-socks python-requests-doc python3-aiosqlite python3-fastapi python3-sqlalchemy python3-databases python-typer-doc typer python-typing-extensions-doc python3-brotli python-uvicorn-doc python3-setuptools python3.14-venv python3.14-doc binfmt-support readline-doc Recommended packages: curl | wget | lynx libarchive-cpio-perl libgpm2 libltdl-dev libmail-sendmail-perl python3-cryptography python3-h2 python3-fqdn python3-isoduration python3-json-pointer python3-rfc3339-validator python3-rfc3986-validator python3-rfc3987 python3-uritemplate python3-webcolors python3-yaml python3-httpx2 python3-itsdangerous python3-jinja2 The following NEW packages will be installed: autoconf automake autopoint autotools-dev bsdextrautils ca-certificates debhelper dh-autoreconf dh-python dh-strip-nondeterminism dwz file gettext gettext-base groff-base intltool-debian libarchive-zip-perl libdebhelper-perl libelf1t64 libexpat1 libffi8 libfile-stripnondeterminism-perl libmagic-mgc libmagic1t64 libncursesw6 libpipeline1 libpython3-stdlib libpython3.14-minimal libpython3.14-stdlib libreadline8t64 libsqlite3-0 libtool libuchardet0 libunistring5 libuv1t64 libxml2-16 m4 man-db media-types netbase openssl po-debconf pybuild-plugin-pyproject python3 python3-all python3-annotated-types python3-anyio python3-astroid python3-asttokens python3-attr python3-build python3-certifi python3-chardet python3-charset-normalizer python3-click python3-dirty-equals python3-dnspython python3-dotenv python3-email-validator python3-execnet python3-executing python3-h11 python3-hatchling python3-httpcore python3-httpx python3-httpx-sse python3-idna python3-iniconfig python3-inline-snapshot python3-installer python3-jsonschema python3-jsonschema-specifications python3-jwt python3-linkify-it python3-markdown-it python3-mdurl python3-minimal python3-packaging python3-pathspec python3-pluggy python3-pydantic python3-pydantic-core python3-pydantic-settings python3-pygments python3-pyproject-hooks python3-pytest python3-pytest-xdist python3-python-multipart python3-referencing python3-requests python3-rich python3-rpds-py python3-shellingham python3-sse-starlette python3-starlette python3-trove-classifiers python3-typer python3-typing-extensions python3-typing-inspection python3-uc-micro python3-urllib3 python3-uvicorn python3-uvloop python3-websockets python3-wheel python3-wsproto python3.14 python3.14-minimal readline-common sbuild-build-depends-main-dummy sensible-utils tzdata 0 upgraded, 112 newly installed, 0 to remove and 0 not upgraded. Need to get 30.8 MB of archives. After this operation, 132 MB of additional disk space will be used. Get:1 copy:/<>/apt_archive ./ sbuild-build-depends-main-dummy 0.invalid.0 [1020 B] Get:2 http://deb.debian.org/debian sid/main amd64 libexpat1 amd64 2.8.3-1 [127 kB] Get:3 http://deb.debian.org/debian sid/main amd64 libpython3.14-minimal amd64 3.14.7-1 [899 kB] Get:4 http://deb.debian.org/debian sid/main amd64 python3.14-minimal amd64 3.14.7-1 [2714 kB] Get:5 http://deb.debian.org/debian sid/main amd64 python3-minimal amd64 3.14.7-3 [25.3 kB] Get:6 http://deb.debian.org/debian sid/main amd64 media-types all 14.0.0 [30.8 kB] Get:7 http://deb.debian.org/debian sid/main amd64 netbase all 6.6 [10.3 kB] Get:8 http://deb.debian.org/debian sid/main amd64 tzdata all 2026c-1 [260 kB] Get:9 http://deb.debian.org/debian sid/main amd64 libffi8 amd64 3.8.0-2 [32.5 kB] Get:10 http://deb.debian.org/debian sid/main amd64 libncursesw6 amd64 6.6+20260608-2 [137 kB] Get:11 http://deb.debian.org/debian sid/main amd64 readline-common all 8.3-4 [74.8 kB] Get:12 http://deb.debian.org/debian sid/main amd64 libreadline8t64 amd64 8.3-4 [181 kB] Get:13 http://deb.debian.org/debian sid/main amd64 libsqlite3-0 amd64 3.53.4-2 [974 kB] Get:14 http://deb.debian.org/debian sid/main amd64 libpython3.14-stdlib amd64 3.14.7-1 [2356 kB] Get:15 http://deb.debian.org/debian sid/main amd64 python3.14 amd64 3.14.7-1 [861 kB] Get:16 http://deb.debian.org/debian sid/main amd64 libpython3-stdlib amd64 3.14.7-3 [8252 B] Get:17 http://deb.debian.org/debian sid/main amd64 python3 amd64 3.14.7-3 [26.0 kB] Get:18 http://deb.debian.org/debian sid/main amd64 sensible-utils all 0.0.26 [27.0 kB] Get:19 http://deb.debian.org/debian sid/main amd64 openssl amd64 3.6.4-1 [1546 kB] Get:20 http://deb.debian.org/debian sid/main amd64 ca-certificates all 20260816 [134 kB] Get:21 http://deb.debian.org/debian sid/main amd64 libmagic-mgc amd64 1:5.47-4 [345 kB] Get:22 http://deb.debian.org/debian sid/main amd64 libmagic1t64 amd64 1:5.47-4 [111 kB] Get:23 http://deb.debian.org/debian sid/main amd64 file amd64 1:5.47-4 [43.0 kB] Get:24 http://deb.debian.org/debian sid/main amd64 gettext-base amd64 1.0-3 [332 kB] Get:25 http://deb.debian.org/debian sid/main amd64 libuchardet0 amd64 0.0.8-2+b2 [69.0 kB] Get:26 http://deb.debian.org/debian sid/main amd64 groff-base amd64 1.24.1-1 [1336 kB] Get:27 http://deb.debian.org/debian sid/main amd64 bsdextrautils amd64 2.42.2-4 [102 kB] Get:28 http://deb.debian.org/debian sid/main amd64 libpipeline1 amd64 1.5.8-3 [49.2 kB] Get:29 http://deb.debian.org/debian sid/main amd64 man-db amd64 2.13.1-1 [1469 kB] Get:30 http://deb.debian.org/debian sid/main amd64 m4 amd64 1.4.21-1 [332 kB] Get:31 http://deb.debian.org/debian sid/main amd64 autoconf all 2.73-2 [516 kB] Get:32 http://deb.debian.org/debian sid/main amd64 autotools-dev all 20240727.1+nmu1 [60.0 kB] Get:33 http://deb.debian.org/debian sid/main amd64 automake all 1:1.18.1-4 [877 kB] Get:34 http://deb.debian.org/debian sid/main amd64 autopoint all 1.0-3 [820 kB] Get:35 http://deb.debian.org/debian sid/main amd64 libdebhelper-perl all 14.3 [77.3 kB] Get:36 http://deb.debian.org/debian sid/main amd64 libtool all 2.6.2-2 [553 kB] Get:37 http://deb.debian.org/debian sid/main amd64 dh-autoreconf all 22 [12.2 kB] Get:38 http://deb.debian.org/debian sid/main amd64 libarchive-zip-perl all 1.68-1 [104 kB] Get:39 http://deb.debian.org/debian sid/main amd64 libfile-stripnondeterminism-perl all 1.15.1-1 [17.1 kB] Get:40 http://deb.debian.org/debian sid/main amd64 dh-strip-nondeterminism all 1.15.1-1 [6020 B] Get:41 http://deb.debian.org/debian sid/main amd64 libelf1t64 amd64 0.195-1 [58.1 kB] Get:42 http://deb.debian.org/debian sid/main amd64 dwz amd64 0.17-1 [109 kB] Get:43 http://deb.debian.org/debian sid/main amd64 libunistring5 amd64 1.4.2-1 [480 kB] Get:44 http://deb.debian.org/debian sid/main amd64 libxml2-16 amd64 2.15.3+dfsg-1 [642 kB] Get:45 http://deb.debian.org/debian sid/main amd64 gettext amd64 1.0-3 [2658 kB] Get:46 http://deb.debian.org/debian sid/main amd64 intltool-debian all 0.35.0+20060710.6 [22.9 kB] Get:47 http://deb.debian.org/debian sid/main amd64 po-debconf all 1.0.22 [216 kB] Get:48 http://deb.debian.org/debian sid/main amd64 debhelper all 14.3 [934 kB] Get:49 http://deb.debian.org/debian sid/main amd64 dh-python all 7.20260623 [114 kB] Get:50 http://deb.debian.org/debian sid/main amd64 libuv1t64 amd64 1.52.1-4 [158 kB] Get:51 http://deb.debian.org/debian sid/main amd64 python3-packaging all 26.2-2 [84.2 kB] Get:52 http://deb.debian.org/debian sid/main amd64 python3-pyproject-hooks all 1.2.0-1 [11.7 kB] Get:53 http://deb.debian.org/debian sid/main amd64 python3-wheel all 0.47.0-1 [26.9 kB] Get:54 http://deb.debian.org/debian sid/main amd64 python3-build all 1.5.1-1 [85.5 kB] Get:55 http://deb.debian.org/debian sid/main amd64 python3-installer all 1.0.1+dfsg1-2 [19.6 kB] Get:56 http://deb.debian.org/debian sid/main amd64 pybuild-plugin-pyproject all 7.20260623 [6996 B] Get:57 http://deb.debian.org/debian sid/main amd64 python3-all amd64 3.14.7-3 [984 B] Get:58 http://deb.debian.org/debian sid/main amd64 python3-annotated-types all 0.8.0-1 [18.7 kB] Get:59 http://deb.debian.org/debian sid/main amd64 python3-idna all 3.18-1 [41.6 kB] Get:60 http://deb.debian.org/debian sid/main amd64 python3-typing-extensions all 4.16.0-5 [95.2 kB] Get:61 http://deb.debian.org/debian sid/main amd64 python3-anyio all 4.12.1-3 [75.2 kB] Get:62 http://deb.debian.org/debian sid/main amd64 python3-astroid all 4.1.1-2 [213 kB] Get:63 http://deb.debian.org/debian sid/main amd64 python3-asttokens all 3.0.1-3 [19.9 kB] Get:64 http://deb.debian.org/debian sid/main amd64 python3-attr all 26.1.0-1 [72.2 kB] Get:65 http://deb.debian.org/debian sid/main amd64 python3-certifi all 2026.7.22+ds-1 [9928 B] Get:66 http://deb.debian.org/debian sid/main amd64 python3-chardet all 5.2.0+dfsg-2 [108 kB] Get:67 http://deb.debian.org/debian sid/main amd64 python3-charset-normalizer amd64 3.4.7-2 [247 kB] Get:68 http://deb.debian.org/debian sid/main amd64 python3-click all 8.3.3-2 [107 kB] Get:69 http://deb.debian.org/debian sid/main amd64 python3-dirty-equals all 0.11.0-2 [22.9 kB] Get:70 http://deb.debian.org/debian sid/main amd64 python3-dnspython all 2.8.0-5 [175 kB] Get:71 http://deb.debian.org/debian sid/main amd64 python3-dotenv all 1.2.1-2 [28.4 kB] Get:72 http://deb.debian.org/debian sid/main amd64 python3-email-validator all 2.2.0-1 [31.6 kB] Get:73 http://deb.debian.org/debian sid/main amd64 python3-execnet all 2.1.2-1 [39.7 kB] Get:74 http://deb.debian.org/debian sid/main amd64 python3-executing all 2.2.1-0.1 [25.7 kB] Get:75 http://deb.debian.org/debian sid/main amd64 python3-h11 all 0.16.0-2 [50.0 kB] Get:76 http://deb.debian.org/debian sid/main amd64 python3-pathspec all 1.1.1-1 [38.2 kB] Get:77 http://deb.debian.org/debian sid/main amd64 python3-pluggy all 1.6.0-2 [27.2 kB] Get:78 http://deb.debian.org/debian sid/main amd64 python3-trove-classifiers all 2026.1.14.14-1 [10.9 kB] Get:79 http://deb.debian.org/debian sid/main amd64 python3-hatchling all 1.30.1-2 [47.9 kB] Get:80 http://deb.debian.org/debian sid/main amd64 python3-httpcore all 1.0.9-1.1 [44.3 kB] Get:81 http://deb.debian.org/debian sid/main amd64 python3-pygments all 2.20.0+dfsg-2 [850 kB] Get:82 http://deb.debian.org/debian sid/main amd64 python3-mdurl all 0.1.2-1 [9444 B] Get:83 http://deb.debian.org/debian sid/main amd64 python3-uc-micro all 2.0.0-1 [6028 B] Get:84 http://deb.debian.org/debian sid/main amd64 python3-linkify-it all 2.1.0-2 [18.7 kB] Get:85 http://deb.debian.org/debian sid/main amd64 python3-markdown-it all 4.2.0-3 [63.7 kB] Get:86 http://deb.debian.org/debian sid/main amd64 python3-rich all 15.0.0-1 [210 kB] Get:87 http://deb.debian.org/debian sid/main amd64 python3-httpx all 0.28.1-1.1 [75.1 kB] Get:88 http://deb.debian.org/debian sid/main amd64 python3-httpx-sse all 0.4.3-3 [10.1 kB] Get:89 http://deb.debian.org/debian sid/main amd64 python3-iniconfig all 2.1.0-2 [7540 B] Get:90 http://deb.debian.org/debian sid/main amd64 python3-pytest all 9.1.1-1 [280 kB] Get:91 http://deb.debian.org/debian sid/main amd64 python3-inline-snapshot all 0.35.3-1 [71.9 kB] Get:92 http://deb.debian.org/debian sid/main amd64 python3-rpds-py amd64 0.30.0-2 [317 kB] Get:93 http://deb.debian.org/debian sid/main amd64 python3-referencing all 0.37.0+~2025.1.1-3 [24.1 kB] Get:94 http://deb.debian.org/debian sid/main amd64 python3-jsonschema-specifications all 2023.12.1-6 [9112 B] Get:95 http://deb.debian.org/debian sid/main amd64 python3-jsonschema all 4.26.0-2 [74.5 kB] Get:96 http://deb.debian.org/debian sid/main amd64 python3-jwt all 2.13.0-1 [39.5 kB] Get:97 http://deb.debian.org/debian sid/main amd64 python3-pydantic-core amd64 2.46.4-3 [2088 kB] Get:98 http://deb.debian.org/debian sid/main amd64 python3-typing-inspection all 0.4.4-1 [14.1 kB] Get:99 http://deb.debian.org/debian sid/main amd64 python3-pydantic amd64 2.13.4-4 [389 kB] Get:100 http://deb.debian.org/debian sid/main amd64 python3-pydantic-settings all 2.15.0-1 [76.5 kB] Get:101 http://deb.debian.org/debian sid/main amd64 python3-pytest-xdist all 3.8.0-5 [45.0 kB] Get:102 http://deb.debian.org/debian sid/main amd64 python3-python-multipart all 0.0.26-1 [24.9 kB] Get:103 http://deb.debian.org/debian sid/main amd64 python3-urllib3 all 2.7.0-3 [119 kB] Get:104 http://deb.debian.org/debian sid/main amd64 python3-requests all 2.34.2-1 [77.6 kB] Get:105 http://deb.debian.org/debian sid/main amd64 python3-shellingham all 1.5.4-1 [11.0 kB] Get:106 http://deb.debian.org/debian sid/main amd64 python3-starlette all 1.3.1-1 [52.4 kB] Get:107 http://deb.debian.org/debian sid/main amd64 python3-sse-starlette all 3.4.6-1 [25.2 kB] Get:108 http://deb.debian.org/debian sid/main amd64 python3-typer all 0.20.0-1 [38.7 kB] Get:109 http://deb.debian.org/debian sid/main amd64 python3-uvloop amd64 0.22.1+ds1-3 [815 kB] Get:110 http://deb.debian.org/debian sid/main amd64 python3-wsproto all 1.3.2-3 [23.1 kB] Get:111 http://deb.debian.org/debian sid/main amd64 python3-uvicorn all 0.38.0-1 [53.0 kB] Get:112 http://deb.debian.org/debian sid/main amd64 python3-websockets amd64 16.0-1 [96.6 kB] Preconfiguring packages ... Fetched 30.8 MB in 0s (194 MB/s) Selecting previously unselected package libexpat1:amd64. (Reading database ... 11977 files and directories currently installed.) Preparing to unpack .../libexpat1_2.8.3-1_amd64.deb ... Unpacking libexpat1:amd64 (2.8.3-1) ... Selecting previously unselected package libpython3.14-minimal:amd64. Preparing to unpack .../libpython3.14-minimal_3.14.7-1_amd64.deb ... Unpacking libpython3.14-minimal:amd64 (3.14.7-1) ... Selecting previously unselected package python3.14-minimal. Preparing to unpack .../python3.14-minimal_3.14.7-1_amd64.deb ... Unpacking python3.14-minimal (3.14.7-1) ... Setting up libpython3.14-minimal:amd64 (3.14.7-1) ... Setting up libexpat1:amd64 (2.8.3-1) ... Setting up python3.14-minimal (3.14.7-1) ... Selecting previously unselected package python3-minimal. (Reading database ... 12333 files and directories currently installed.) Preparing to unpack .../00-python3-minimal_3.14.7-3_amd64.deb ... Unpacking python3-minimal (3.14.7-3) ... Selecting previously unselected package media-types. Preparing to unpack .../01-media-types_14.0.0_all.deb ... Unpacking media-types (14.0.0) ... Selecting previously unselected package netbase. Preparing to unpack .../02-netbase_6.6_all.deb ... Unpacking netbase (6.6) ... Selecting previously unselected package tzdata. Preparing to unpack .../03-tzdata_2026c-1_all.deb ... Unpacking tzdata (2026c-1) ... Selecting previously unselected package libffi8:amd64. Preparing to unpack .../04-libffi8_3.8.0-2_amd64.deb ... Unpacking libffi8:amd64 (3.8.0-2) ... Selecting previously unselected package libncursesw6:amd64. Preparing to unpack .../05-libncursesw6_6.6+20260608-2_amd64.deb ... Unpacking libncursesw6:amd64 (6.6+20260608-2) ... Selecting previously unselected package readline-common. Preparing to unpack .../06-readline-common_8.3-4_all.deb ... Unpacking readline-common (8.3-4) ... Selecting previously unselected package libreadline8t64:amd64. Preparing to unpack .../07-libreadline8t64_8.3-4_amd64.deb ... Adding 'diversion of /lib/x86_64-linux-gnu/libhistory.so.8 to /lib/x86_64-linux-gnu/libhistory.so.8.usr-is-merged by libreadline8t64' Adding 'diversion of /lib/x86_64-linux-gnu/libhistory.so.8.2 to /lib/x86_64-linux-gnu/libhistory.so.8.2.usr-is-merged by libreadline8t64' Adding 'diversion of /lib/x86_64-linux-gnu/libreadline.so.8 to /lib/x86_64-linux-gnu/libreadline.so.8.usr-is-merged by libreadline8t64' Adding 'diversion of /lib/x86_64-linux-gnu/libreadline.so.8.2 to /lib/x86_64-linux-gnu/libreadline.so.8.2.usr-is-merged by libreadline8t64' Unpacking libreadline8t64:amd64 (8.3-4) ... Selecting previously unselected package libsqlite3-0:amd64. Preparing to unpack .../08-libsqlite3-0_3.53.4-2_amd64.deb ... Unpacking libsqlite3-0:amd64 (3.53.4-2) ... Selecting previously unselected package libpython3.14-stdlib:amd64. Preparing to unpack .../09-libpython3.14-stdlib_3.14.7-1_amd64.deb ... Unpacking libpython3.14-stdlib:amd64 (3.14.7-1) ... Selecting previously unselected package python3.14. Preparing to unpack .../10-python3.14_3.14.7-1_amd64.deb ... Unpacking python3.14 (3.14.7-1) ... Selecting previously unselected package libpython3-stdlib:amd64. Preparing to unpack .../11-libpython3-stdlib_3.14.7-3_amd64.deb ... Unpacking libpython3-stdlib:amd64 (3.14.7-3) ... Setting up python3-minimal (3.14.7-3) ... Selecting previously unselected package python3. (Reading database ... 13379 files and directories currently installed.) Preparing to unpack .../00-python3_3.14.7-3_amd64.deb ... Unpacking python3 (3.14.7-3) ... Selecting previously unselected package sensible-utils. Preparing to unpack .../01-sensible-utils_0.0.26_all.deb ... Unpacking sensible-utils (0.0.26) ... Selecting previously unselected package openssl. Preparing to unpack .../02-openssl_3.6.4-1_amd64.deb ... Unpacking openssl (3.6.4-1) ... Selecting previously unselected package ca-certificates. Preparing to unpack .../03-ca-certificates_20260816_all.deb ... Unpacking ca-certificates (20260816) ... Selecting previously unselected package libmagic-mgc. Preparing to unpack .../04-libmagic-mgc_1%3a5.47-4_amd64.deb ... Unpacking libmagic-mgc (1:5.47-4) ... Selecting previously unselected package libmagic1t64:amd64. Preparing to unpack .../05-libmagic1t64_1%3a5.47-4_amd64.deb ... Unpacking libmagic1t64:amd64 (1:5.47-4) ... Selecting previously unselected package file. Preparing to unpack .../06-file_1%3a5.47-4_amd64.deb ... Unpacking file (1:5.47-4) ... Selecting previously unselected package gettext-base. Preparing to unpack .../07-gettext-base_1.0-3_amd64.deb ... Unpacking gettext-base (1.0-3) ... Selecting previously unselected package libuchardet0:amd64. Preparing to unpack .../08-libuchardet0_0.0.8-2+b2_amd64.deb ... Unpacking libuchardet0:amd64 (0.0.8-2+b2) ... Selecting previously unselected package groff-base. Preparing to unpack .../09-groff-base_1.24.1-1_amd64.deb ... Unpacking groff-base (1.24.1-1) ... Selecting previously unselected package bsdextrautils. Preparing to unpack .../10-bsdextrautils_2.42.2-4_amd64.deb ... Unpacking bsdextrautils (2.42.2-4) ... Selecting previously unselected package libpipeline1:amd64. Preparing to unpack .../11-libpipeline1_1.5.8-3_amd64.deb ... Unpacking libpipeline1:amd64 (1.5.8-3) ... Selecting previously unselected package man-db. Preparing to unpack .../12-man-db_2.13.1-1_amd64.deb ... Unpacking man-db (2.13.1-1) ... Selecting previously unselected package m4. Preparing to unpack .../13-m4_1.4.21-1_amd64.deb ... Unpacking m4 (1.4.21-1) ... Selecting previously unselected package autoconf. Preparing to unpack .../14-autoconf_2.73-2_all.deb ... Unpacking autoconf (2.73-2) ... Selecting previously unselected package autotools-dev. Preparing to unpack .../15-autotools-dev_20240727.1+nmu1_all.deb ... Unpacking autotools-dev (20240727.1+nmu1) ... Selecting previously unselected package automake. Preparing to unpack .../16-automake_1%3a1.18.1-4_all.deb ... Unpacking automake (1:1.18.1-4) ... Selecting previously unselected package autopoint. Preparing to unpack .../17-autopoint_1.0-3_all.deb ... Unpacking autopoint (1.0-3) ... Selecting previously unselected package libdebhelper-perl. Preparing to unpack .../18-libdebhelper-perl_14.3_all.deb ... Unpacking libdebhelper-perl (14.3) ... Selecting previously unselected package libtool. Preparing to unpack .../19-libtool_2.6.2-2_all.deb ... Unpacking libtool (2.6.2-2) ... Selecting previously unselected package dh-autoreconf. Preparing to unpack .../20-dh-autoreconf_22_all.deb ... Unpacking dh-autoreconf (22) ... Selecting previously unselected package libarchive-zip-perl. Preparing to unpack .../21-libarchive-zip-perl_1.68-1_all.deb ... Unpacking libarchive-zip-perl (1.68-1) ... Selecting previously unselected package libfile-stripnondeterminism-perl. Preparing to unpack .../22-libfile-stripnondeterminism-perl_1.15.1-1_all.deb ... Unpacking libfile-stripnondeterminism-perl (1.15.1-1) ... Selecting previously unselected package dh-strip-nondeterminism. Preparing to unpack .../23-dh-strip-nondeterminism_1.15.1-1_all.deb ... Unpacking dh-strip-nondeterminism (1.15.1-1) ... Selecting previously unselected package libelf1t64:amd64. Preparing to unpack .../24-libelf1t64_0.195-1_amd64.deb ... Unpacking libelf1t64:amd64 (0.195-1) ... Selecting previously unselected package dwz. Preparing to unpack .../25-dwz_0.17-1_amd64.deb ... Unpacking dwz (0.17-1) ... Selecting previously unselected package libunistring5:amd64. Preparing to unpack .../26-libunistring5_1.4.2-1_amd64.deb ... Unpacking libunistring5:amd64 (1.4.2-1) ... Selecting previously unselected package libxml2-16:amd64. Preparing to unpack .../27-libxml2-16_2.15.3+dfsg-1_amd64.deb ... Unpacking libxml2-16:amd64 (2.15.3+dfsg-1) ... Selecting previously unselected package gettext. Preparing to unpack .../28-gettext_1.0-3_amd64.deb ... Unpacking gettext (1.0-3) ... Selecting previously unselected package intltool-debian. Preparing to unpack .../29-intltool-debian_0.35.0+20060710.6_all.deb ... Unpacking intltool-debian (0.35.0+20060710.6) ... Selecting previously unselected package po-debconf. Preparing to unpack .../30-po-debconf_1.0.22_all.deb ... Unpacking po-debconf (1.0.22) ... Selecting previously unselected package debhelper. Preparing to unpack .../31-debhelper_14.3_all.deb ... Unpacking debhelper (14.3) ... Selecting previously unselected package dh-python. Preparing to unpack .../32-dh-python_7.20260623_all.deb ... Unpacking dh-python (7.20260623) ... Selecting previously unselected package libuv1t64:amd64. Preparing to unpack .../33-libuv1t64_1.52.1-4_amd64.deb ... Unpacking libuv1t64:amd64 (1.52.1-4) ... Selecting previously unselected package python3-packaging. Preparing to unpack .../34-python3-packaging_26.2-2_all.deb ... Unpacking python3-packaging (26.2-2) ... Selecting previously unselected package python3-pyproject-hooks. Preparing to unpack .../35-python3-pyproject-hooks_1.2.0-1_all.deb ... Unpacking python3-pyproject-hooks (1.2.0-1) ... Selecting previously unselected package python3-wheel. Preparing to unpack .../36-python3-wheel_0.47.0-1_all.deb ... Unpacking python3-wheel (0.47.0-1) ... Selecting previously unselected package python3-build. Preparing to unpack .../37-python3-build_1.5.1-1_all.deb ... Unpacking python3-build (1.5.1-1) ... Selecting previously unselected package python3-installer. Preparing to unpack .../38-python3-installer_1.0.1+dfsg1-2_all.deb ... Unpacking python3-installer (1.0.1+dfsg1-2) ... Selecting previously unselected package pybuild-plugin-pyproject. Preparing to unpack .../39-pybuild-plugin-pyproject_7.20260623_all.deb ... Unpacking pybuild-plugin-pyproject (7.20260623) ... Selecting previously unselected package python3-all. Preparing to unpack .../40-python3-all_3.14.7-3_amd64.deb ... Unpacking python3-all (3.14.7-3) ... Selecting previously unselected package python3-annotated-types. Preparing to unpack .../41-python3-annotated-types_0.8.0-1_all.deb ... Unpacking python3-annotated-types (0.8.0-1) ... Selecting previously unselected package python3-idna. Preparing to unpack .../42-python3-idna_3.18-1_all.deb ... Unpacking python3-idna (3.18-1) ... Selecting previously unselected package python3-typing-extensions. Preparing to unpack .../43-python3-typing-extensions_4.16.0-5_all.deb ... Unpacking python3-typing-extensions (4.16.0-5) ... Selecting previously unselected package python3-anyio. Preparing to unpack .../44-python3-anyio_4.12.1-3_all.deb ... Unpacking python3-anyio (4.12.1-3) ... Selecting previously unselected package python3-astroid. Preparing to unpack .../45-python3-astroid_4.1.1-2_all.deb ... Unpacking python3-astroid (4.1.1-2) ... Selecting previously unselected package python3-asttokens. Preparing to unpack .../46-python3-asttokens_3.0.1-3_all.deb ... Unpacking python3-asttokens (3.0.1-3) ... Selecting previously unselected package python3-attr. Preparing to unpack .../47-python3-attr_26.1.0-1_all.deb ... Unpacking python3-attr (26.1.0-1) ... Selecting previously unselected package python3-certifi. Preparing to unpack .../48-python3-certifi_2026.7.22+ds-1_all.deb ... Unpacking python3-certifi (2026.7.22+ds-1) ... Selecting previously unselected package python3-chardet. Preparing to unpack .../49-python3-chardet_5.2.0+dfsg-2_all.deb ... Unpacking python3-chardet (5.2.0+dfsg-2) ... Selecting previously unselected package python3-charset-normalizer. Preparing to unpack .../50-python3-charset-normalizer_3.4.7-2_amd64.deb ... Unpacking python3-charset-normalizer (3.4.7-2) ... Selecting previously unselected package python3-click. Preparing to unpack .../51-python3-click_8.3.3-2_all.deb ... Unpacking python3-click (8.3.3-2) ... Selecting previously unselected package python3-dirty-equals. Preparing to unpack .../52-python3-dirty-equals_0.11.0-2_all.deb ... Unpacking python3-dirty-equals (0.11.0-2) ... Selecting previously unselected package python3-dnspython. Preparing to unpack .../53-python3-dnspython_2.8.0-5_all.deb ... Unpacking python3-dnspython (2.8.0-5) ... Selecting previously unselected package python3-dotenv. Preparing to unpack .../54-python3-dotenv_1.2.1-2_all.deb ... Unpacking python3-dotenv (1.2.1-2) ... Selecting previously unselected package python3-email-validator. Preparing to unpack .../55-python3-email-validator_2.2.0-1_all.deb ... Unpacking python3-email-validator (2.2.0-1) ... Selecting previously unselected package python3-execnet. Preparing to unpack .../56-python3-execnet_2.1.2-1_all.deb ... Unpacking python3-execnet (2.1.2-1) ... Selecting previously unselected package python3-executing. Preparing to unpack .../57-python3-executing_2.2.1-0.1_all.deb ... Unpacking python3-executing (2.2.1-0.1) ... Selecting previously unselected package python3-h11. Preparing to unpack .../58-python3-h11_0.16.0-2_all.deb ... Unpacking python3-h11 (0.16.0-2) ... Selecting previously unselected package python3-pathspec. Preparing to unpack .../59-python3-pathspec_1.1.1-1_all.deb ... Unpacking python3-pathspec (1.1.1-1) ... Selecting previously unselected package python3-pluggy. Preparing to unpack .../60-python3-pluggy_1.6.0-2_all.deb ... Unpacking python3-pluggy (1.6.0-2) ... Selecting previously unselected package python3-trove-classifiers. Preparing to unpack .../61-python3-trove-classifiers_2026.1.14.14-1_all.deb ... Unpacking python3-trove-classifiers (2026.1.14.14-1) ... Selecting previously unselected package python3-hatchling. Preparing to unpack .../62-python3-hatchling_1.30.1-2_all.deb ... Unpacking python3-hatchling (1.30.1-2) ... Selecting previously unselected package python3-httpcore. Preparing to unpack .../63-python3-httpcore_1.0.9-1.1_all.deb ... Unpacking python3-httpcore (1.0.9-1.1) ... Selecting previously unselected package python3-pygments. Preparing to unpack .../64-python3-pygments_2.20.0+dfsg-2_all.deb ... Unpacking python3-pygments (2.20.0+dfsg-2) ... Selecting previously unselected package python3-mdurl. Preparing to unpack .../65-python3-mdurl_0.1.2-1_all.deb ... Unpacking python3-mdurl (0.1.2-1) ... Selecting previously unselected package python3-uc-micro. Preparing to unpack .../66-python3-uc-micro_2.0.0-1_all.deb ... Unpacking python3-uc-micro (2.0.0-1) ... Selecting previously unselected package python3-linkify-it. Preparing to unpack .../67-python3-linkify-it_2.1.0-2_all.deb ... Unpacking python3-linkify-it (2.1.0-2) ... Selecting previously unselected package python3-markdown-it. Preparing to unpack .../68-python3-markdown-it_4.2.0-3_all.deb ... Unpacking python3-markdown-it (4.2.0-3) ... Selecting previously unselected package python3-rich. Preparing to unpack .../69-python3-rich_15.0.0-1_all.deb ... Unpacking python3-rich (15.0.0-1) ... Selecting previously unselected package python3-httpx. Preparing to unpack .../70-python3-httpx_0.28.1-1.1_all.deb ... Unpacking python3-httpx (0.28.1-1.1) ... Selecting previously unselected package python3-httpx-sse. Preparing to unpack .../71-python3-httpx-sse_0.4.3-3_all.deb ... Unpacking python3-httpx-sse (0.4.3-3) ... Selecting previously unselected package python3-iniconfig. Preparing to unpack .../72-python3-iniconfig_2.1.0-2_all.deb ... Unpacking python3-iniconfig (2.1.0-2) ... Selecting previously unselected package python3-pytest. Preparing to unpack .../73-python3-pytest_9.1.1-1_all.deb ... Unpacking python3-pytest (9.1.1-1) ... Selecting previously unselected package python3-inline-snapshot. Preparing to unpack .../74-python3-inline-snapshot_0.35.3-1_all.deb ... Unpacking python3-inline-snapshot (0.35.3-1) ... Selecting previously unselected package python3-rpds-py. Preparing to unpack .../75-python3-rpds-py_0.30.0-2_amd64.deb ... Unpacking python3-rpds-py (0.30.0-2) ... Selecting previously unselected package python3-referencing. Preparing to unpack .../76-python3-referencing_0.37.0+~2025.1.1-3_all.deb ... Unpacking python3-referencing (0.37.0+~2025.1.1-3) ... Selecting previously unselected package python3-jsonschema-specifications. Preparing to unpack .../77-python3-jsonschema-specifications_2023.12.1-6_all.deb ... Unpacking python3-jsonschema-specifications (2023.12.1-6) ... Selecting previously unselected package python3-jsonschema. Preparing to unpack .../78-python3-jsonschema_4.26.0-2_all.deb ... Unpacking python3-jsonschema (4.26.0-2) ... Selecting previously unselected package python3-jwt. Preparing to unpack .../79-python3-jwt_2.13.0-1_all.deb ... Unpacking python3-jwt (2.13.0-1) ... Selecting previously unselected package python3-pydantic-core. Preparing to unpack .../80-python3-pydantic-core_2.46.4-3_amd64.deb ... Unpacking python3-pydantic-core (2.46.4-3) ... Selecting previously unselected package python3-typing-inspection. Preparing to unpack .../81-python3-typing-inspection_0.4.4-1_all.deb ... Unpacking python3-typing-inspection (0.4.4-1) ... Selecting previously unselected package python3-pydantic. Preparing to unpack .../82-python3-pydantic_2.13.4-4_amd64.deb ... Unpacking python3-pydantic (2.13.4-4) ... Selecting previously unselected package python3-pydantic-settings. Preparing to unpack .../83-python3-pydantic-settings_2.15.0-1_all.deb ... Unpacking python3-pydantic-settings (2.15.0-1) ... Selecting previously unselected package python3-pytest-xdist. Preparing to unpack .../84-python3-pytest-xdist_3.8.0-5_all.deb ... Unpacking python3-pytest-xdist (3.8.0-5) ... Selecting previously unselected package python3-python-multipart. Preparing to unpack .../85-python3-python-multipart_0.0.26-1_all.deb ... Unpacking python3-python-multipart (0.0.26-1) ... Selecting previously unselected package python3-urllib3. Preparing to unpack .../86-python3-urllib3_2.7.0-3_all.deb ... Unpacking python3-urllib3 (2.7.0-3) ... Selecting previously unselected package python3-requests. Preparing to unpack .../87-python3-requests_2.34.2-1_all.deb ... Unpacking python3-requests (2.34.2-1) ... Selecting previously unselected package python3-shellingham. Preparing to unpack .../88-python3-shellingham_1.5.4-1_all.deb ... Unpacking python3-shellingham (1.5.4-1) ... Selecting previously unselected package python3-starlette. Preparing to unpack .../89-python3-starlette_1.3.1-1_all.deb ... Unpacking python3-starlette (1.3.1-1) ... Selecting previously unselected package python3-sse-starlette. Preparing to unpack .../90-python3-sse-starlette_3.4.6-1_all.deb ... Unpacking python3-sse-starlette (3.4.6-1) ... Selecting previously unselected package python3-typer. Preparing to unpack .../91-python3-typer_0.20.0-1_all.deb ... Unpacking python3-typer (0.20.0-1) ... Selecting previously unselected package python3-uvloop. Preparing to unpack .../92-python3-uvloop_0.22.1+ds1-3_amd64.deb ... Unpacking python3-uvloop (0.22.1+ds1-3) ... Selecting previously unselected package python3-wsproto. Preparing to unpack .../93-python3-wsproto_1.3.2-3_all.deb ... Unpacking python3-wsproto (1.3.2-3) ... Selecting previously unselected package python3-uvicorn. Preparing to unpack .../94-python3-uvicorn_0.38.0-1_all.deb ... Unpacking python3-uvicorn (0.38.0-1) ... Selecting previously unselected package python3-websockets. Preparing to unpack .../95-python3-websockets_16.0-1_amd64.deb ... Unpacking python3-websockets (16.0-1) ... Selecting previously unselected package sbuild-build-depends-main-dummy. Preparing to unpack .../96-sbuild-build-depends-main-dummy_0.invalid.0_amd64.deb ... Unpacking sbuild-build-depends-main-dummy (0.invalid.0) ... Setting up media-types (14.0.0) ... Setting up libpipeline1:amd64 (1.5.8-3) ... Setting up bsdextrautils (2.42.2-4) ... Setting up libmagic-mgc (1:5.47-4) ... Setting up libarchive-zip-perl (1.68-1) ... Setting up libxml2-16:amd64 (2.15.3+dfsg-1) ... Setting up libdebhelper-perl (14.3) ... Setting up libsqlite3-0:amd64 (3.53.4-2) ... Setting up libuv1t64:amd64 (1.52.1-4) ... Setting up libmagic1t64:amd64 (1:5.47-4) ... Setting up gettext-base (1.0-3) ... Setting up m4 (1.4.21-1) ... Setting up file (1:5.47-4) ... Setting up libelf1t64:amd64 (0.195-1) ... Setting up tzdata (2026c-1) ... Current default time zone: 'Etc/UTC' Local time is now: Thu Aug 27 19:29:59 UTC 2026. Universal Time is now: Thu Aug 27 19:29:59 UTC 2026. Run 'dpkg-reconfigure tzdata' if you wish to change it. Setting up autotools-dev (20240727.1+nmu1) ... Setting up libunistring5:amd64 (1.4.2-1) ... Setting up autopoint (1.0-3) ... Setting up libncursesw6:amd64 (6.6+20260608-2) ... Setting up autoconf (2.73-2) ... Setting up libffi8:amd64 (3.8.0-2) ... Setting up dwz (0.17-1) ... Setting up sensible-utils (0.0.26) ... Setting up libuchardet0:amd64 (0.0.8-2+b2) ... Setting up netbase (6.6) ... Setting up openssl (3.6.4-1) ... Setting up readline-common (8.3-4) ... Setting up automake (1:1.18.1-4) ... update-alternatives: using /usr/bin/automake-1.18 to provide /usr/bin/automake (automake) in auto mode Setting up libfile-stripnondeterminism-perl (1.15.1-1) ... Setting up gettext (1.0-3) ... Setting up libtool (2.6.2-2) ... Setting up intltool-debian (0.35.0+20060710.6) ... Setting up dh-autoreconf (22) ... Setting up ca-certificates (20260816) ... Updating certificates in /etc/ssl/certs... 121 added, 0 removed; done. Setting up libreadline8t64:amd64 (8.3-4) ... Setting up dh-strip-nondeterminism (1.15.1-1) ... Setting up groff-base (1.24.1-1) ... Setting up libpython3.14-stdlib:amd64 (3.14.7-1) ... Setting up po-debconf (1.0.22) ... Setting up man-db (2.13.1-1) ... Not building database; man-db/auto-update is not 'true'. Setting up python3.14 (3.14.7-1) ... Setting up libpython3-stdlib:amd64 (3.14.7-3) ... Setting up debhelper (14.3) ... Setting up python3 (3.14.7-3) ... Setting up python3-click (8.3.3-2) ... Setting up python3-annotated-types (0.8.0-1) ... Setting up python3-uc-micro (2.0.0-1) ... Setting up python3-pygments (2.20.0+dfsg-2) ... Setting up python3-packaging (26.2-2) ... Setting up python3-chardet (5.2.0+dfsg-2) ... Setting up python3-pyproject-hooks (1.2.0-1) ... Setting up python3-certifi (2026.7.22+ds-1) ... Setting up python3-mdurl (0.1.2-1) ... Setting up python3-idna (3.18-1) ... Setting up python3-h11 (0.16.0-2) ... Setting up python3-typing-extensions (4.16.0-5) ... Setting up python3-uvloop (0.22.1+ds1-3) ... Setting up python3-installer (1.0.1+dfsg1-2) ... Setting up python3-urllib3 (2.7.0-3) ... Setting up python3-pluggy (1.6.0-2) ... Setting up python3-rpds-py (0.30.0-2) ... Setting up python3-trove-classifiers (2026.1.14.14-1) ... Setting up python3-astroid (4.1.1-2) ... Setting up python3-dnspython (2.8.0-5) ... Setting up python3-linkify-it (2.1.0-2) ... Setting up python3-email-validator (2.2.0-1) ... Setting up python3-execnet (2.1.2-1) ... Setting up python3-shellingham (1.5.4-1) ... Setting up python3-pathspec (1.1.1-1) ... Setting up python3-websockets (16.0-1) ... Setting up python3-dotenv (1.2.1-2) ... Setting up dh-python (7.20260623) ... Setting up python3-httpcore (1.0.9-1.1) ... Setting up python3-iniconfig (2.1.0-2) ... Setting up python3-attr (26.1.0-1) ... Setting up python3-pydantic-core (2.46.4-3) ... Setting up python3-wsproto (1.3.2-3) ... Setting up python3-typing-inspection (0.4.4-1) ... Setting up python3-python-multipart (0.0.26-1) ... Setting up python3-anyio (4.12.1-3) ... Setting up python3-jwt (2.13.0-1) ... Setting up python3-asttokens (3.0.1-3) ... Setting up python3-charset-normalizer (3.4.7-2) ... Setting up python3-pytest (9.1.1-1) ... Setting up python3-dirty-equals (0.11.0-2) ... Setting up python3-all (3.14.7-3) ... Setting up python3-starlette (1.3.1-1) ... Setting up python3-wheel (0.47.0-1) ... Setting up python3-executing (2.2.1-0.1) ... Setting up python3-sse-starlette (3.4.6-1) ... Setting up python3-pydantic (2.13.4-4) ... Setting up python3-requests (2.34.2-1) ... Setting up python3-markdown-it (4.2.0-3) ... Setting up python3-pydantic-settings (2.15.0-1) ... Setting up python3-hatchling (1.30.1-2) ... Setting up python3-build (1.5.1-1) ... Setting up python3-referencing (0.37.0+~2025.1.1-3) ... Setting up python3-uvicorn (0.38.0-1) ... Setting up python3-pytest-xdist (3.8.0-5) ... Setting up python3-rich (15.0.0-1) ... Setting up pybuild-plugin-pyproject (7.20260623) ... Setting up python3-typer (0.20.0-1) ... Setting up python3-inline-snapshot (0.35.3-1) ... Setting up python3-httpx (0.28.1-1.1) ... Setting up python3-jsonschema-specifications (2023.12.1-6) ... Setting up python3-httpx-sse (0.4.3-3) ... Setting up python3-jsonschema (4.26.0-2) ... Setting up sbuild-build-depends-main-dummy (0.invalid.0) ... Processing triggers for libc-bin (2.43-4) ... Processing triggers for ca-certificates (20260816) ... Updating certificates in /etc/ssl/certs... 0 added, 0 removed; done. Running hooks in /etc/ca-certificates/update.d... done. +------------------------------------------------------------------------------+ | Check architectures Thu, 27 Aug 2026 19:30:10 +0000 | +------------------------------------------------------------------------------+ Arch check ok (amd64 included in all) +------------------------------------------------------------------------------+ | Build environment Thu, 27 Aug 2026 19:30:11 +0000 | +------------------------------------------------------------------------------+ Kernel: Linux 6.12.105+deb13-cloud-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.12.105-1 (2026-08-24) amd64 (x86_64) Toolchain package versions: binutils_2.47-2 dpkg-dev_1.23.7 g++-16_16.2.0-1 gcc-16_16.2.0-1 libc6-dev_2.43-4 libstdc++-16-dev_16.2.0-1 libstdc++6_16.2.0-1 linux-libc-dev_7.1.10-1 Package versions: apt_3.3.3 autoconf_2.73-2 automake_1:1.18.1-4 autopoint_1.0-3 autotools-dev_20240727.1+nmu1 base-files_14.2 base-passwd_3.6.8 bash_5.3-3+b1 binutils_2.47-2 binutils-common_2.47-2 binutils-x86-64-linux-gnu_2.47-2 bsdextrautils_2.42.2-4 build-essential_12.12 bzip2_1.0.8-6+b2 ca-certificates_20260816 coreutils_9.10-1 cpp_4:16.1.0-3 cpp-16_16.2.0-1 cpp-16-x86-64-linux-gnu_16.2.0-1 cpp-x86-64-linux-gnu_4:16.1.0-3 dash_0.5.12-12 debconf_1.5.92 debhelper_14.3 debian-archive-keyring_2025.1 debianutils_5.23.2 dh-autoreconf_22 dh-python_7.20260623 dh-strip-nondeterminism_1.15.1-1 diffutils_1:3.12-1 dpkg_1.23.7 dpkg-dev_1.23.7 dwz_0.17-1 file_1:5.47-4 findutils_4.11.0-2 g++_4:16.1.0-3 g++-16_16.2.0-1 g++-16-x86-64-linux-gnu_16.2.0-1 g++-x86-64-linux-gnu_4:16.1.0-3 gcc_4:16.1.0-3 gcc-16_16.2.0-1 gcc-16-base_16.2.0-1 gcc-16-x86-64-linux-gnu_16.2.0-1 gcc-x86-64-linux-gnu_4:16.1.0-3 gettext_1.0-3 gettext-base_1.0-3 grep_3.12-1 groff-base_1.24.1-1 gzip_1.14-1 hostname_3.25 init-system-helpers_1.69+nmu1 intltool-debian_0.35.0+20060710.6 libacl1_2.4.0-1 libapt-pkg7.0_3.3.3 libarchive-zip-perl_1.68-1 libasan8_16.2.0-1 libatomic1_16.2.0-1 libattr1_1:2.6.0-1 libaudit-common_1:4.1.2-1 libaudit1_1:4.1.2-1+b1 libbinutils_2.47-2 libblkid1_2.42.2-4 libbz2-1.0_1.0.8-6+b2 libc-bin_2.43-4 libc-dev-bin_2.43-4 libc-gconv-modules-extra_2.43-4 libc6_2.43-4 libc6-dev_2.43-4 libcap-ng0_0.9.3-1+b1 libcc1-0_16.2.0-1 libcrypt1_1:4.5.2+20251210-1 libctf-nobfd0_2.47-2 libctf0_2.47-2 libdb5.3t64_5.3.28+dfsg2-11+b1 libdebconfclient0_0.283 libdebhelper-perl_14.3 libdpkg-perl_1.23.7 libelf1t64_0.195-1 libexpat1_2.8.3-1 libffi8_3.8.0-2 libfile-stripnondeterminism-perl_1.15.1-1 libgcc-16-dev_16.2.0-1 libgcc-s1_16.2.0-1 libgdbm-compat4t64_1.26-1+b2 libgdbm6t64_1.26-1+b2 libgmp10_2:6.3.0+dfsg-5+b2 libgomp1_16.2.0-1 libgprofng0_2.47-2 libhogweed6t64_3.10.2-1+b1 libhwasan0_16.2.0-1 libisl23_0.28-1 libitm1_16.2.0-1 libjansson4_2.15.1-1 liblsan0_16.2.0-1 liblz4-1_1.10.0-10 liblzma5_5.8.3-1 libmagic-mgc_1:5.47-4 libmagic1t64_1:5.47-4 libmd0_1.2.0-2 libmount1_2.42.2-4 libmpc3_1.3.1-3 libmpfr6_4.2.2-3 libncursesw6_6.6+20260608-2 libnettle8t64_3.10.2-1+b1 libpam-modules_1.7.0-8 libpam-modules-bin_1.7.0-8 libpam-runtime_1.7.0-8 libpam0g_1.7.0-8 libpcre2-8-0_10.46-1+b2 libperl5.42_5.42.3-1 libpipeline1_1.5.8-3 libpython3-stdlib_3.14.7-3 libpython3.14-minimal_3.14.7-1 libpython3.14-stdlib_3.14.7-1 libquadmath0_16.2.0-1 libreadline8t64_8.3-4 libseccomp2_2.6.1-1 libselinux1_3.11-2 libsframe3_2.47-2 libsmartcols1_2.42.2-4 libsqlite3-0_3.53.4-2 libssl3t64_3.6.4-1 libstdc++-16-dev_16.2.0-1 libstdc++6_16.2.0-1 libsystemd0_261.2-1 libtinfo6_6.6+20260608-2 libtool_2.6.2-2 libtsan2_16.2.0-1 libubsan1_16.2.0-1 libuchardet0_0.0.8-2+b2 libudev1_261.2-1 libunistring5_1.4.2-1 libuuid1_2.42.2-4 libuv1t64_1.52.1-4 libxml2-16_2.15.3+dfsg-1 libxxhash0_0.8.3-2+b2 libzstd1_1.5.7+dfsg-4 linux-libc-dev_7.1.10-1 m4_1.4.21-1 make_4.4.1-3 man-db_2.13.1-1 mawk_1.3.4.20260302-1 media-types_14.0.0 ncurses-base_6.6+20260608-2 ncurses-bin_6.6+20260608-2 netbase_6.6 openssl_3.6.4-1 openssl-provider-legacy_3.6.4-1 patch_2.8-2 perl_5.42.3-1 perl-base_5.42.3-1 perl-modules-5.42_5.42.3-1 po-debconf_1.0.22 pybuild-plugin-pyproject_7.20260623 python3_3.14.7-3 python3-all_3.14.7-3 python3-annotated-types_0.8.0-1 python3-anyio_4.12.1-3 python3-astroid_4.1.1-2 python3-asttokens_3.0.1-3 python3-attr_26.1.0-1 python3-build_1.5.1-1 python3-certifi_2026.7.22+ds-1 python3-chardet_5.2.0+dfsg-2 python3-charset-normalizer_3.4.7-2 python3-click_8.3.3-2 python3-dirty-equals_0.11.0-2 python3-dnspython_2.8.0-5 python3-dotenv_1.2.1-2 python3-email-validator_2.2.0-1 python3-execnet_2.1.2-1 python3-executing_2.2.1-0.1 python3-h11_0.16.0-2 python3-hatchling_1.30.1-2 python3-httpcore_1.0.9-1.1 python3-httpx_0.28.1-1.1 python3-httpx-sse_0.4.3-3 python3-idna_3.18-1 python3-iniconfig_2.1.0-2 python3-inline-snapshot_0.35.3-1 python3-installer_1.0.1+dfsg1-2 python3-jsonschema_4.26.0-2 python3-jsonschema-specifications_2023.12.1-6 python3-jwt_2.13.0-1 python3-linkify-it_2.1.0-2 python3-markdown-it_4.2.0-3 python3-mdurl_0.1.2-1 python3-minimal_3.14.7-3 python3-packaging_26.2-2 python3-pathspec_1.1.1-1 python3-pluggy_1.6.0-2 python3-pydantic_2.13.4-4 python3-pydantic-core_2.46.4-3 python3-pydantic-settings_2.15.0-1 python3-pygments_2.20.0+dfsg-2 python3-pyproject-hooks_1.2.0-1 python3-pytest_9.1.1-1 python3-pytest-xdist_3.8.0-5 python3-python-multipart_0.0.26-1 python3-referencing_0.37.0+~2025.1.1-3 python3-requests_2.34.2-1 python3-rich_15.0.0-1 python3-rpds-py_0.30.0-2 python3-shellingham_1.5.4-1 python3-sse-starlette_3.4.6-1 python3-starlette_1.3.1-1 python3-trove-classifiers_2026.1.14.14-1 python3-typer_0.20.0-1 python3-typing-extensions_4.16.0-5 python3-typing-inspection_0.4.4-1 python3-uc-micro_2.0.0-1 python3-urllib3_2.7.0-3 python3-uvicorn_0.38.0-1 python3-uvloop_0.22.1+ds1-3 python3-websockets_16.0-1 python3-wheel_0.47.0-1 python3-wsproto_1.3.2-3 python3.14_3.14.7-1 python3.14-minimal_3.14.7-1 readline-common_8.3-4 sbuild-build-depends-main-dummy_0.invalid.0 sed_4.9-3 sensible-utils_0.0.26 sqv_1.4.0-1 sysvinit-utils_3.18-1 tar_1.35+dfsg-5 tzdata_2026c-1 util-linux_2.42.2-4 xz-utils_5.8.3-1 zlib1g_1:1.3.dfsg+really1.3.2-3 +------------------------------------------------------------------------------+ | Build Thu, 27 Aug 2026 19:30:11 +0000 | +------------------------------------------------------------------------------+ Unpack source ------------- -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA512 Format: 3.0 (quilt) Source: python-mcp Binary: python3-mcp Architecture: all Version: 1.28.1-1 Maintainer: Debian Python Team Uploaders: Pieter Lenaerts , Homepage: https://modelcontextprotocol.io/docs/getting-started/intro Standards-Version: 4.7.4 Vcs-Browser: https://salsa.debian.org/python-team/packages/python-mcp Vcs-Git: https://salsa.debian.org/python-team/packages/python-mcp.git Testsuite: autopkgtest, autopkgtest-pkg-pybuild Build-Depends: debhelper-compat (= 14), dh-python, pybuild-plugin-pyproject, python3-all, python3-hatchling, python3-pytest , python3-pytest-xdist , python3-anyio , python3-httpx , python3-pydantic , python3-pydantic-settings , python3-httpx-sse , python3-dirty-equals , python3-inline-snapshot , python3-requests , python3-starlette , python3-sse-starlette , python3-uvicorn , python3-websockets , python3-jsonschema , python3-typer , python3-python-multipart , python3-jwt Package-List: python3-mcp deb python unknown arch=all Checksums-Sha1: e06549c1aeabc03529b87a2821499d00153f2078 647106 python-mcp_1.28.1.orig.tar.gz 4fa88e403e100c2592817e6e97eea6f4c7e04a2c 8072 python-mcp_1.28.1-1.debian.tar.xz Checksums-Sha256: 80905c2f78c54a9fe1c848e706a82f245c653642db3ca2e7b549e0372ac6fb38 647106 python-mcp_1.28.1.orig.tar.gz c97be4fc37ad85691c4631c5880746c747b0bada160f4fbde1d1c6203aa538dc 8072 python-mcp_1.28.1-1.debian.tar.xz Files: e09d148964a574868b4220e49f34dc39 647106 python-mcp_1.28.1.orig.tar.gz dd8f43a4ca03e58e4ce6f6a327308455 8072 python-mcp_1.28.1-1.debian.tar.xz -----BEGIN PGP SIGNATURE----- iQIzBAEBCgAdFiEEd8lhnEnWos3N8v+qQoMEoXSNzHoFAmporscACgkQQoMEoXSN zHpjEBAApDIgZ7gMQVT/NZLaKFMVA4n7tH3b7PLB0Y54FzaQ9XJy6yw7q9bJjEA3 WSjCMUrhnyUmyqT/GNlElTVm7Ooa0CY/oB52bzfA2IG8mQf21dHduRpjhCOB/XRy ahNz16AC5r78dZBaB/0ZsdOyTOorQGH4ugzI8BICwL/iWrb8vGeJPCUbYdTF/Z2B 0j7aL1ZbS5O3x9Y5Fqht1h7vT61XRtvFthWtbvQNYkyirXktwU+gbXfMSzxrh0kX 3NGdIYNDXIfIixRweCefzvKeqzatZlo5al04smbzhBJnAUJxXgt2/2OTXOKD9UzP zD8z8Unu5knQVtB4GsywKARNcDGRCJSs72+VYSyjeDvSqrK9TEUWncVwmo5/z4Ju lwU2sF4BND6se5ACTo+2fCn70mrxEHNDBxeCCVMzDphuYwx0eJ6WleeQhoGEcu6K 3AaRbReNh0cGBN6a9BpbBkbe9hlTL2sWZheCNX5KO/JlkQyeqdN6tMJSSRJ7gYoe Tz9Tn583IcrVgFbJyL9QbtHk32bWjiY6s0LfVYobzsOnHeUN9MkvrRTtIpLwzrPy 1BS5Y1lkEb0jdh3q0UMnZ1Rlq68nB8490NunUKncHYa7/NK0McUbRh9VfHEN2fYb iBhoR/cHcZmA1B44+D2YZ9I3HE/pScLpGM4Fs64qnBudMjeMxy0= =sUA6 -----END PGP SIGNATURE----- dpkg-source: warning: cannot verify inline signature for ./python-mcp_1.28.1-1.dsc: missing OpenPGP keyrings dpkg-source: info: verifying ./python-mcp_1.28.1-1.dsc dpkg-source: info: skipping absent keyring /usr/share/keyrings/debian-keyring.pgp dpkg-source: info: skipping absent keyring /usr/share/keyrings/debian-tag2upload.pgp dpkg-source: info: skipping absent keyring /usr/share/keyrings/debian-nonupload.pgp dpkg-source: info: skipping absent keyring /usr/share/keyrings/debian-maintainers.pgp dpkg-source: info: extracting python-mcp in /<> dpkg-source: info: unpacking python-mcp_1.28.1.orig.tar.gz dpkg-source: info: unpacking python-mcp_1.28.1-1.debian.tar.xz dpkg-source: info: using patch list from debian/patches/series dpkg-source: info: applying static_version_in_pyproject.toml dpkg-source: info: applying skip_broken_tests dpkg-source: info: applying disable_proxies_during_tests dpkg-source: info: applying build_dir_in_python_path_for_test_process Check disk space ---------------- Sufficient free space for build User Environment ---------------- APT_CONFIG=/var/lib/sbuild/apt.conf DEB_BUILD_OPTIONS=parallel=2 HOME=/sbuild-nonexistent LC_ALL=C.UTF-8 LOGNAME=sbuild PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games SHELL=/bin/sh USER=sbuild dpkg-buildpackage ----------------- Command: dpkg-buildpackage --sanitize-env -us -uc -b dpkg-buildpackage: info: source package python-mcp dpkg-buildpackage: info: source version 1.28.1-1 dpkg-buildpackage: info: source distribution unstable dpkg-buildpackage: info: source changed by Pieter Lenaerts dpkg-source --before-build . dpkg-buildpackage: info: host architecture amd64 debian/rules clean dh clean --with python3 --buildsystem=pybuild dh: warning: Implicitly activating single-binary dh addon for backwards compatibility. In compat 14+, dh: warning: this fallback will *not* happen automatically via dh_auto_install will instead use a dh: warning: different default for --destdir unless the single-binary add-on is active, dh: warning: which can cause the source to produce an empty binary package dh: warning: dh: warning: To keep the existing behaviour (compat 13), please activate the single-binary addon explicitly. dh: warning: This can be done by adding "dh-sequence-single-binary" to Build-Depends or passing dh: warning: --with=single-binary to dh. dh: warning: dh: warning: If you have solved this issue differently (e.g., by passing --destdir explicitly to dh: warning: dh_auto_install or not using dh_auto_install at all) and want to silence this warning dh: warning: without activating the addon, you can do that by passing --without=single-binary to dh dh: warning: to explicitly acknowledge the change. dh: warning: dh: warning: Please see the description of the "single-binary" in "man dh" for more details of what dh: warning: it does and why this is changing from implicit behaviour to explicitly opt-in. dh_auto_clean -O--buildsystem=pybuild dh_autoreconf_clean -O--buildsystem=pybuild dh_clean -O--buildsystem=pybuild debian/rules binary dh binary --with python3 --buildsystem=pybuild dh: warning: Implicitly activating single-binary dh addon for backwards compatibility. In compat 14+, dh: warning: this fallback will *not* happen automatically via dh_auto_install will instead use a dh: warning: different default for --destdir unless the single-binary add-on is active, dh: warning: which can cause the source to produce an empty binary package dh: warning: dh: warning: To keep the existing behaviour (compat 13), please activate the single-binary addon explicitly. dh: warning: This can be done by adding "dh-sequence-single-binary" to Build-Depends or passing dh: warning: --with=single-binary to dh. dh: warning: dh: warning: If you have solved this issue differently (e.g., by passing --destdir explicitly to dh: warning: dh_auto_install or not using dh_auto_install at all) and want to silence this warning dh: warning: without activating the addon, you can do that by passing --without=single-binary to dh dh: warning: to explicitly acknowledge the change. dh: warning: dh: warning: Please see the description of the "single-binary" in "man dh" for more details of what dh: warning: it does and why this is changing from implicit behaviour to explicitly opt-in. dh_update_autotools_config -O--buildsystem=pybuild dh_autoreconf -O--buildsystem=pybuild dh_auto_configure -O--buildsystem=pybuild dh_auto_build -O--buildsystem=pybuild I: pybuild plugin_pyproject:142: Building wheel for python3.14 with "build" module I: pybuild base:385: python3.14 -m build --skip-dependency-check --no-isolation --wheel --outdir /<>/.pybuild/cpython3_3.14 * Building wheel... Successfully built mcp-1.28.1-py3-none-any.whl I: pybuild plugin_pyproject:168: Unpacking wheel built for python3.14 with "installer" module dh_auto_test -O--buildsystem=pybuild I: pybuild base:385: cd /<>/.pybuild/cpython3_3.14/build; python3.14 -m pytest tests ============================= test session starts ============================== platform linux -- Python 3.14.7, pytest-9.1.1, pluggy-1.6.0 rootdir: /<>/.pybuild/cpython3_3.14/build configfile: pyproject.toml plugins: anyio-4.12.1, xdist-3.8.0, inline-snapshot-0.35.3 created: 2/2 workers 2 workers [1233 items] scheduling tests via LoadScheduling tests/cli/test_utils.py::test_parse_file_path_accepts_valid_specs[server.py-None] [gw0] [ 0%] PASSED tests/cli/test_utils.py::test_parse_file_path_accepts_valid_specs[server.py-None] tests/cli/test_utils.py::test_parse_file_path_accepts_valid_specs[foo.py:srv_obj-srv_obj] [gw0] [ 0%] PASSED tests/cli/test_utils.py::test_parse_file_path_accepts_valid_specs[foo.py:srv_obj-srv_obj] tests/cli/test_utils.py::test_parse_file_path_missing tests/client/test_session_group.py::TestClientSessionGroup::test_establish_session_parameterized[server_params_instance1-sse-mcp.client.session_group.sse_client] [gw1] [ 0%] PASSED tests/client/test_session_group.py::TestClientSessionGroup::test_establish_session_parameterized[server_params_instance1-sse-mcp.client.session_group.sse_client] tests/client/test_session_group.py::TestClientSessionGroup::test_establish_session_parameterized[server_params_instance2-streamablehttp-mcp.client.session_group.streamable_http_client] [gw0] [ 0%] PASSED tests/cli/test_utils.py::test_parse_file_path_missing tests/cli/test_utils.py::test_parse_file_exit_on_dir [gw0] [ 0%] PASSED tests/cli/test_utils.py::test_parse_file_exit_on_dir tests/cli/test_utils.py::test_build_uv_command_minimal [gw0] [ 0%] PASSED tests/cli/test_utils.py::test_build_uv_command_minimal tests/cli/test_utils.py::test_build_uv_command_adds_editable_and_packages [gw0] [ 0%] PASSED tests/cli/test_utils.py::test_build_uv_command_adds_editable_and_packages tests/cli/test_utils.py::test_get_npx_unix_like [gw0] [ 0%] PASSED tests/cli/test_utils.py::test_get_npx_unix_like tests/cli/test_utils.py::test_get_npx_windows [gw0] [ 0%] PASSED tests/cli/test_utils.py::test_get_npx_windows tests/cli/test_utils.py::test_get_npx_returns_none_when_npx_missing [gw0] [ 0%] PASSED tests/cli/test_utils.py::test_get_npx_returns_none_when_npx_missing tests/client/auth/extensions/test_client_credentials.py::TestOAuthFlowClientCredentials::test_token_exchange_request_jwt_predefined [gw0] [ 0%] PASSED tests/client/auth/extensions/test_client_credentials.py::TestOAuthFlowClientCredentials::test_token_exchange_request_jwt_predefined tests/client/auth/extensions/test_client_credentials.py::TestOAuthFlowClientCredentials::test_token_exchange_request_jwt [gw0] [ 0%] PASSED tests/client/auth/extensions/test_client_credentials.py::TestOAuthFlowClientCredentials::test_token_exchange_request_jwt tests/client/auth/extensions/test_client_credentials.py::TestClientCredentialsOAuthProvider::test_init_sets_client_info [gw1] [ 1%] PASSED tests/client/test_session_group.py::TestClientSessionGroup::test_establish_session_parameterized[server_params_instance2-streamablehttp-mcp.client.session_group.streamable_http_client] [gw0] [ 1%] PASSED tests/client/auth/extensions/test_client_credentials.py::TestClientCredentialsOAuthProvider::test_init_sets_client_info tests/client/auth/extensions/test_client_credentials.py::TestClientCredentialsOAuthProvider::test_init_with_scopes [gw0] [ 1%] PASSED tests/client/auth/extensions/test_client_credentials.py::TestClientCredentialsOAuthProvider::test_init_with_scopes tests/client/auth/extensions/test_client_credentials.py::TestClientCredentialsOAuthProvider::test_init_with_client_secret_post [gw0] [ 1%] PASSED tests/client/auth/extensions/test_client_credentials.py::TestClientCredentialsOAuthProvider::test_init_with_client_secret_post tests/client/auth/extensions/test_client_credentials.py::TestClientCredentialsOAuthProvider::test_exchange_token_client_credentials tests/client/test_stdio.py::test_stdio_context_manager_exiting [gw0] [ 1%] PASSED tests/client/auth/extensions/test_client_credentials.py::TestClientCredentialsOAuthProvider::test_exchange_token_client_credentials [gw1] [ 1%] PASSED tests/client/test_stdio.py::test_stdio_context_manager_exiting tests/client/auth/extensions/test_client_credentials.py::TestClientCredentialsOAuthProvider::test_exchange_token_without_scopes tests/client/test_stdio.py::test_stdio_client [gw0] [ 1%] PASSED tests/client/auth/extensions/test_client_credentials.py::TestClientCredentialsOAuthProvider::test_exchange_token_without_scopes tests/client/auth/extensions/test_client_credentials.py::TestPrivateKeyJWTOAuthProvider::test_init_sets_client_info [gw0] [ 1%] PASSED tests/client/auth/extensions/test_client_credentials.py::TestPrivateKeyJWTOAuthProvider::test_init_sets_client_info tests/client/auth/extensions/test_client_credentials.py::TestPrivateKeyJWTOAuthProvider::test_exchange_token_client_credentials [gw0] [ 1%] PASSED tests/client/auth/extensions/test_client_credentials.py::TestPrivateKeyJWTOAuthProvider::test_exchange_token_client_credentials tests/client/auth/extensions/test_client_credentials.py::TestPrivateKeyJWTOAuthProvider::test_exchange_token_without_scopes [gw0] [ 1%] PASSED tests/client/auth/extensions/test_client_credentials.py::TestPrivateKeyJWTOAuthProvider::test_exchange_token_without_scopes [gw1] [ 1%] PASSED tests/client/test_stdio.py::test_stdio_client tests/client/test_stdio.py::test_stdio_client_bad_path tests/client/auth/extensions/test_client_credentials.py::TestSignedJWTParameters::test_create_assertion_provider [gw0] [ 1%] PASSED tests/client/auth/extensions/test_client_credentials.py::TestSignedJWTParameters::test_create_assertion_provider tests/client/auth/extensions/test_client_credentials.py::TestSignedJWTParameters::test_create_assertion_provider_with_additional_claims [gw0] [ 2%] PASSED tests/client/auth/extensions/test_client_credentials.py::TestSignedJWTParameters::test_create_assertion_provider_with_additional_claims tests/client/auth/extensions/test_client_credentials.py::TestStaticAssertionProvider::test_returns_static_token [gw0] [ 2%] PASSED tests/client/auth/extensions/test_client_credentials.py::TestStaticAssertionProvider::test_returns_static_token tests/client/test_auth.py::TestPKCEParameters::test_pkce_generation [gw0] [ 2%] PASSED tests/client/test_auth.py::TestPKCEParameters::test_pkce_generation tests/client/test_auth.py::TestPKCEParameters::test_pkce_uniqueness [gw0] [ 2%] PASSED tests/client/test_auth.py::TestPKCEParameters::test_pkce_uniqueness tests/client/test_auth.py::TestOAuthContext::test_oauth_provider_initialization [gw0] [ 2%] PASSED tests/client/test_auth.py::TestOAuthContext::test_oauth_provider_initialization tests/client/test_auth.py::TestOAuthContext::test_context_url_parsing [gw0] [ 2%] PASSED tests/client/test_auth.py::TestOAuthContext::test_context_url_parsing tests/client/test_auth.py::TestOAuthContext::test_token_validity_checking [gw0] [ 2%] PASSED tests/client/test_auth.py::TestOAuthContext::test_token_validity_checking tests/client/test_auth.py::TestOAuthContext::test_clear_tokens [gw0] [ 2%] PASSED tests/client/test_auth.py::TestOAuthContext::test_clear_tokens tests/client/test_auth.py::TestOAuthFlow::test_build_protected_resource_discovery_urls [gw0] [ 2%] PASSED tests/client/test_auth.py::TestOAuthFlow::test_build_protected_resource_discovery_urls tests/client/test_auth.py::TestOAuthFlow::test_create_oauth_metadata_request [gw0] [ 2%] PASSED tests/client/test_auth.py::TestOAuthFlow::test_create_oauth_metadata_request tests/client/test_auth.py::TestOAuthFallback::test_oauth_discovery_legacy_fallback_when_no_prm [gw0] [ 2%] PASSED tests/client/test_auth.py::TestOAuthFallback::test_oauth_discovery_legacy_fallback_when_no_prm tests/client/test_auth.py::TestOAuthFallback::test_oauth_discovery_path_aware_when_auth_server_has_path [gw0] [ 2%] PASSED tests/client/test_auth.py::TestOAuthFallback::test_oauth_discovery_path_aware_when_auth_server_has_path tests/client/test_auth.py::TestOAuthFallback::test_oauth_discovery_root_when_auth_server_has_no_path [gw0] [ 3%] PASSED tests/client/test_auth.py::TestOAuthFallback::test_oauth_discovery_root_when_auth_server_has_no_path tests/client/test_auth.py::TestOAuthFallback::test_oauth_discovery_root_when_auth_server_has_only_slash [gw0] [ 3%] PASSED tests/client/test_auth.py::TestOAuthFallback::test_oauth_discovery_root_when_auth_server_has_only_slash tests/client/test_auth.py::TestOAuthFallback::test_oauth_discovery_fallback_order [gw0] [ 3%] PASSED tests/client/test_auth.py::TestOAuthFallback::test_oauth_discovery_fallback_order tests/client/test_auth.py::TestOAuthFallback::test_oauth_discovery_fallback_conditions [gw1] [ 3%] PASSED tests/client/test_stdio.py::test_stdio_client_bad_path tests/client/test_stdio.py::test_stdio_client_nonexistent_command [gw1] [ 3%] PASSED tests/client/test_stdio.py::test_stdio_client_nonexistent_command tests/client/test_stdio.py::test_stdio_client_universal_cleanup [gw0] [ 3%] PASSED tests/client/test_auth.py::TestOAuthFallback::test_oauth_discovery_fallback_conditions tests/client/test_auth.py::TestOAuthFallback::test_handle_metadata_response_success [gw0] [ 3%] PASSED tests/client/test_auth.py::TestOAuthFallback::test_handle_metadata_response_success tests/client/test_auth.py::TestOAuthFallback::test_prioritize_www_auth_scope_over_prm [gw0] [ 3%] PASSED tests/client/test_auth.py::TestOAuthFallback::test_prioritize_www_auth_scope_over_prm tests/client/test_auth.py::TestOAuthFallback::test_prioritize_prm_scopes_when_no_www_auth_scope [gw0] [ 3%] PASSED tests/client/test_auth.py::TestOAuthFallback::test_prioritize_prm_scopes_when_no_www_auth_scope tests/client/test_auth.py::TestOAuthFallback::test_omit_scope_when_no_prm_scopes_or_www_auth [gw0] [ 3%] PASSED tests/client/test_auth.py::TestOAuthFallback::test_omit_scope_when_no_prm_scopes_or_www_auth tests/client/test_auth.py::TestOAuthFallback::test_token_exchange_request_authorization_code [gw0] [ 3%] PASSED tests/client/test_auth.py::TestOAuthFallback::test_token_exchange_request_authorization_code tests/client/test_auth.py::TestOAuthFallback::test_refresh_token_request [gw0] [ 3%] PASSED tests/client/test_auth.py::TestOAuthFallback::test_refresh_token_request tests/client/test_auth.py::TestOAuthFallback::test_basic_auth_token_exchange [gw0] [ 3%] PASSED tests/client/test_auth.py::TestOAuthFallback::test_basic_auth_token_exchange tests/client/test_auth.py::TestOAuthFallback::test_basic_auth_refresh_token [gw0] [ 4%] PASSED tests/client/test_auth.py::TestOAuthFallback::test_basic_auth_refresh_token tests/client/test_auth.py::TestOAuthFallback::test_none_auth_method [gw0] [ 4%] PASSED tests/client/test_auth.py::TestOAuthFallback::test_none_auth_method tests/client/test_auth.py::TestProtectedResourceMetadata::test_resource_param_included_with_recent_protocol_version [gw0] [ 4%] PASSED tests/client/test_auth.py::TestProtectedResourceMetadata::test_resource_param_included_with_recent_protocol_version tests/client/test_auth.py::TestProtectedResourceMetadata::test_resource_param_excluded_with_old_protocol_version [gw0] [ 4%] PASSED tests/client/test_auth.py::TestProtectedResourceMetadata::test_resource_param_excluded_with_old_protocol_version tests/client/test_auth.py::TestProtectedResourceMetadata::test_resource_param_included_with_protected_resource_metadata [gw0] [ 4%] PASSED tests/client/test_auth.py::TestProtectedResourceMetadata::test_resource_param_included_with_protected_resource_metadata tests/client/test_auth.py::TestRegistrationResponse::test_handle_registration_response_reads_before_accessing_text [gw0] [ 4%] PASSED tests/client/test_auth.py::TestRegistrationResponse::test_handle_registration_response_reads_before_accessing_text tests/client/test_auth.py::TestCreateClientRegistrationRequest::test_uses_registration_endpoint_from_metadata [gw0] [ 4%] PASSED tests/client/test_auth.py::TestCreateClientRegistrationRequest::test_uses_registration_endpoint_from_metadata tests/client/test_auth.py::TestCreateClientRegistrationRequest::test_falls_back_to_default_register_endpoint_when_no_metadata [gw0] [ 4%] PASSED tests/client/test_auth.py::TestCreateClientRegistrationRequest::test_falls_back_to_default_register_endpoint_when_no_metadata tests/client/test_auth.py::TestCreateClientRegistrationRequest::test_falls_back_when_metadata_has_no_registration_endpoint [gw0] [ 4%] PASSED tests/client/test_auth.py::TestCreateClientRegistrationRequest::test_falls_back_when_metadata_has_no_registration_endpoint tests/client/test_auth.py::TestAuthFlow::test_auth_flow_with_valid_tokens [gw0] [ 4%] PASSED tests/client/test_auth.py::TestAuthFlow::test_auth_flow_with_valid_tokens tests/client/test_auth.py::TestAuthFlow::test_auth_flow_with_no_tokens [gw0] [ 4%] PASSED tests/client/test_auth.py::TestAuthFlow::test_auth_flow_with_no_tokens tests/client/test_auth.py::TestAuthFlow::test_auth_flow_no_unnecessary_retry_after_oauth [gw0] [ 4%] PASSED tests/client/test_auth.py::TestAuthFlow::test_auth_flow_no_unnecessary_retry_after_oauth tests/client/test_auth.py::TestAuthFlow::test_403_insufficient_scope_updates_scope_from_header [gw0] [ 5%] PASSED tests/client/test_auth.py::TestAuthFlow::test_403_insufficient_scope_updates_scope_from_header tests/client/test_auth.py::test_build_metadata[simple-url] [gw0] [ 5%] XFAIL tests/client/test_auth.py::test_build_metadata[simple-url] tests/client/test_auth.py::test_build_metadata[with-trailing-slash] [gw0] [ 5%] PASSED tests/client/test_auth.py::test_build_metadata[with-trailing-slash] tests/client/test_auth.py::test_build_metadata[with-path-param] [gw0] [ 5%] PASSED tests/client/test_auth.py::test_build_metadata[with-path-param] tests/client/test_auth.py::TestLegacyServerFallback::test_legacy_server_no_prm_falls_back_to_root_oauth_discovery [gw0] [ 5%] PASSED tests/client/test_auth.py::TestLegacyServerFallback::test_legacy_server_no_prm_falls_back_to_root_oauth_discovery tests/client/test_auth.py::TestLegacyServerFallback::test_legacy_server_with_different_prm_and_root_urls [gw0] [ 5%] PASSED tests/client/test_auth.py::TestLegacyServerFallback::test_legacy_server_with_different_prm_and_root_urls tests/client/test_auth.py::TestSEP985Discovery::test_path_based_fallback_when_no_www_authenticate [gw0] [ 5%] PASSED tests/client/test_auth.py::TestSEP985Discovery::test_path_based_fallback_when_no_www_authenticate tests/client/test_auth.py::TestSEP985Discovery::test_root_based_fallback_after_path_based_404 [gw0] [ 5%] PASSED tests/client/test_auth.py::TestSEP985Discovery::test_root_based_fallback_after_path_based_404 tests/client/test_auth.py::TestSEP985Discovery::test_www_authenticate_takes_priority_over_well_known [gw0] [ 5%] PASSED tests/client/test_auth.py::TestSEP985Discovery::test_www_authenticate_takes_priority_over_well_known tests/client/test_auth.py::TestWWWAuthenticate::test_extract_field_from_www_auth_valid_cases[Bearer scope="read write"-scope-read write] [gw0] [ 5%] PASSED tests/client/test_auth.py::TestWWWAuthenticate::test_extract_field_from_www_auth_valid_cases[Bearer scope="read write"-scope-read write] tests/client/test_auth.py::TestWWWAuthenticate::test_extract_field_from_www_auth_valid_cases[Bearer resource_metadata="https://api.example.com/.well-known/oauth-protected-resource"-resource_metadata-https://api.example.com/.well-known/oauth-protected-resource] [gw0] [ 5%] PASSED tests/client/test_auth.py::TestWWWAuthenticate::test_extract_field_from_www_auth_valid_cases[Bearer resource_metadata="https://api.example.com/.well-known/oauth-protected-resource"-resource_metadata-https://api.example.com/.well-known/oauth-protected-resource] tests/client/test_auth.py::TestWWWAuthenticate::test_extract_field_from_www_auth_valid_cases[Bearer error="insufficient_scope"-error-insufficient_scope] [gw0] [ 5%] PASSED tests/client/test_auth.py::TestWWWAuthenticate::test_extract_field_from_www_auth_valid_cases[Bearer error="insufficient_scope"-error-insufficient_scope] tests/client/test_auth.py::TestWWWAuthenticate::test_extract_field_from_www_auth_valid_cases[Bearer scope=read-scope-read] [gw0] [ 6%] PASSED tests/client/test_auth.py::TestWWWAuthenticate::test_extract_field_from_www_auth_valid_cases[Bearer scope=read-scope-read] tests/client/test_auth.py::TestWWWAuthenticate::test_extract_field_from_www_auth_valid_cases[Bearer resource_metadata=https://api.example.com/.well-known/oauth-protected-resource-resource_metadata-https://api.example.com/.well-known/oauth-protected-resource] [gw0] [ 6%] PASSED tests/client/test_auth.py::TestWWWAuthenticate::test_extract_field_from_www_auth_valid_cases[Bearer resource_metadata=https://api.example.com/.well-known/oauth-protected-resource-resource_metadata-https://api.example.com/.well-known/oauth-protected-resource] tests/client/test_auth.py::TestWWWAuthenticate::test_extract_field_from_www_auth_valid_cases[Bearer error=invalid_token-error-invalid_token] [gw0] [ 6%] PASSED tests/client/test_auth.py::TestWWWAuthenticate::test_extract_field_from_www_auth_valid_cases[Bearer error=invalid_token-error-invalid_token] tests/client/test_auth.py::TestWWWAuthenticate::test_extract_field_from_www_auth_valid_cases[Bearer realm="api", scope="admin:write resource:read", error="insufficient_scope"-scope-admin:write resource:read] [gw0] [ 6%] PASSED tests/client/test_auth.py::TestWWWAuthenticate::test_extract_field_from_www_auth_valid_cases[Bearer realm="api", scope="admin:write resource:read", error="insufficient_scope"-scope-admin:write resource:read] tests/client/test_auth.py::TestWWWAuthenticate::test_extract_field_from_www_auth_valid_cases[Bearer realm="api", resource_metadata="https://api.example.com/.well-known/oauth-protected-resource", error="insufficient_scope"-resource_metadata-https://api.example.com/.well-known/oauth-protected-resource] [gw0] [ 6%] PASSED tests/client/test_auth.py::TestWWWAuthenticate::test_extract_field_from_www_auth_valid_cases[Bearer realm="api", resource_metadata="https://api.example.com/.well-known/oauth-protected-resource", error="insufficient_scope"-resource_metadata-https://api.example.com/.well-known/oauth-protected-resource] tests/client/test_auth.py::TestWWWAuthenticate::test_extract_field_from_www_auth_valid_cases[Bearer realm="api", scope=basic-scope-basic] [gw0] [ 6%] PASSED tests/client/test_auth.py::TestWWWAuthenticate::test_extract_field_from_www_auth_valid_cases[Bearer realm="api", scope=basic-scope-basic] tests/client/test_auth.py::TestWWWAuthenticate::test_extract_field_from_www_auth_valid_cases[Bearer scope="resource:read resource:write user_profile"-scope-resource:read resource:write user_profile] [gw0] [ 6%] PASSED tests/client/test_auth.py::TestWWWAuthenticate::test_extract_field_from_www_auth_valid_cases[Bearer scope="resource:read resource:write user_profile"-scope-resource:read resource:write user_profile] tests/client/test_auth.py::TestWWWAuthenticate::test_extract_field_from_www_auth_valid_cases[Bearer resource_metadata="https://api.example.com/auth/metadata?version=1"-resource_metadata-https://api.example.com/auth/metadata?version=1] [gw0] [ 6%] PASSED tests/client/test_auth.py::TestWWWAuthenticate::test_extract_field_from_www_auth_valid_cases[Bearer resource_metadata="https://api.example.com/auth/metadata?version=1"-resource_metadata-https://api.example.com/auth/metadata?version=1] tests/client/test_auth.py::TestWWWAuthenticate::test_extract_field_from_www_auth_invalid_cases[None-scope-no WWW-Authenticate header] [gw0] [ 6%] PASSED tests/client/test_auth.py::TestWWWAuthenticate::test_extract_field_from_www_auth_invalid_cases[None-scope-no WWW-Authenticate header] tests/client/test_auth.py::TestWWWAuthenticate::test_extract_field_from_www_auth_invalid_cases[-scope-empty WWW-Authenticate header] [gw0] [ 6%] PASSED tests/client/test_auth.py::TestWWWAuthenticate::test_extract_field_from_www_auth_invalid_cases[-scope-empty WWW-Authenticate header] tests/client/test_auth.py::TestWWWAuthenticate::test_extract_field_from_www_auth_invalid_cases[Bearer realm="api", error="insufficient_scope"-scope-no scope parameter] [gw0] [ 6%] PASSED tests/client/test_auth.py::TestWWWAuthenticate::test_extract_field_from_www_auth_invalid_cases[Bearer realm="api", error="insufficient_scope"-scope-no scope parameter] tests/client/test_auth.py::TestWWWAuthenticate::test_extract_field_from_www_auth_invalid_cases[Bearer realm="api", scope="read write"-resource_metadata-no resource_metadata parameter] [gw0] [ 6%] PASSED tests/client/test_auth.py::TestWWWAuthenticate::test_extract_field_from_www_auth_invalid_cases[Bearer realm="api", scope="read write"-resource_metadata-no resource_metadata parameter] tests/client/test_auth.py::TestWWWAuthenticate::test_extract_field_from_www_auth_invalid_cases[Bearer scope=-scope-malformed scope parameter] [gw0] [ 6%] PASSED tests/client/test_auth.py::TestWWWAuthenticate::test_extract_field_from_www_auth_invalid_cases[Bearer scope=-scope-malformed scope parameter] tests/client/test_auth.py::TestWWWAuthenticate::test_extract_field_from_www_auth_invalid_cases[Bearer resource_metadata=-resource_metadata-malformed resource_metadata parameter] [gw0] [ 7%] PASSED tests/client/test_auth.py::TestWWWAuthenticate::test_extract_field_from_www_auth_invalid_cases[Bearer resource_metadata=-resource_metadata-malformed resource_metadata parameter] tests/client/test_auth.py::TestCIMD::test_is_valid_client_metadata_url[https://example.com/client-True] [gw0] [ 7%] PASSED tests/client/test_auth.py::TestCIMD::test_is_valid_client_metadata_url[https://example.com/client-True] tests/client/test_auth.py::TestCIMD::test_is_valid_client_metadata_url[https://example.com/client-metadata.json-True] [gw0] [ 7%] PASSED tests/client/test_auth.py::TestCIMD::test_is_valid_client_metadata_url[https://example.com/client-metadata.json-True] tests/client/test_auth.py::TestCIMD::test_is_valid_client_metadata_url[https://example.com/path/to/client-True] [gw0] [ 7%] PASSED tests/client/test_auth.py::TestCIMD::test_is_valid_client_metadata_url[https://example.com/path/to/client-True] tests/client/test_auth.py::TestCIMD::test_is_valid_client_metadata_url[https://example.com:8443/client-True] [gw0] [ 7%] PASSED tests/client/test_auth.py::TestCIMD::test_is_valid_client_metadata_url[https://example.com:8443/client-True] tests/client/test_auth.py::TestCIMD::test_is_valid_client_metadata_url[http://example.com/client-False] [gw0] [ 7%] PASSED tests/client/test_auth.py::TestCIMD::test_is_valid_client_metadata_url[http://example.com/client-False] tests/client/test_auth.py::TestCIMD::test_is_valid_client_metadata_url[https://example.com-False] [gw0] [ 7%] PASSED tests/client/test_auth.py::TestCIMD::test_is_valid_client_metadata_url[https://example.com-False] tests/client/test_auth.py::TestCIMD::test_is_valid_client_metadata_url[https://example.com/-False] [gw0] [ 7%] PASSED tests/client/test_auth.py::TestCIMD::test_is_valid_client_metadata_url[https://example.com/-False] tests/client/test_auth.py::TestCIMD::test_is_valid_client_metadata_url[None-False] [gw0] [ 7%] PASSED tests/client/test_auth.py::TestCIMD::test_is_valid_client_metadata_url[None-False] tests/client/test_auth.py::TestCIMD::test_is_valid_client_metadata_url[-False] [gw0] [ 7%] PASSED tests/client/test_auth.py::TestCIMD::test_is_valid_client_metadata_url[-False] tests/client/test_auth.py::TestCIMD::test_is_valid_client_metadata_url[http://[::1/foo/-False] [gw0] [ 7%] PASSED tests/client/test_auth.py::TestCIMD::test_is_valid_client_metadata_url[http://[::1/foo/-False] tests/client/test_auth.py::TestCIMD::test_should_use_client_metadata_url_when_server_supports [gw0] [ 7%] PASSED tests/client/test_auth.py::TestCIMD::test_should_use_client_metadata_url_when_server_supports tests/client/test_auth.py::TestCIMD::test_should_not_use_client_metadata_url_when_server_does_not_support [gw0] [ 8%] PASSED tests/client/test_auth.py::TestCIMD::test_should_not_use_client_metadata_url_when_server_does_not_support tests/client/test_auth.py::TestCIMD::test_should_not_use_client_metadata_url_when_not_provided [gw0] [ 8%] PASSED tests/client/test_auth.py::TestCIMD::test_should_not_use_client_metadata_url_when_not_provided tests/client/test_auth.py::TestCIMD::test_should_not_use_client_metadata_url_when_no_metadata [gw0] [ 8%] PASSED tests/client/test_auth.py::TestCIMD::test_should_not_use_client_metadata_url_when_no_metadata tests/client/test_auth.py::TestCIMD::test_create_client_info_from_metadata_url [gw0] [ 8%] PASSED tests/client/test_auth.py::TestCIMD::test_create_client_info_from_metadata_url tests/client/test_auth.py::TestCIMD::test_oauth_provider_with_valid_client_metadata_url [gw0] [ 8%] PASSED tests/client/test_auth.py::TestCIMD::test_oauth_provider_with_valid_client_metadata_url tests/client/test_auth.py::TestCIMD::test_oauth_provider_with_invalid_client_metadata_url_raises_error [gw0] [ 8%] PASSED tests/client/test_auth.py::TestCIMD::test_oauth_provider_with_invalid_client_metadata_url_raises_error tests/client/test_auth.py::TestCIMD::test_auth_flow_uses_cimd_when_server_supports [gw0] [ 8%] PASSED tests/client/test_auth.py::TestCIMD::test_auth_flow_uses_cimd_when_server_supports tests/client/test_auth.py::TestCIMD::test_auth_flow_falls_back_to_dcr_when_no_cimd_support [gw0] [ 8%] PASSED tests/client/test_auth.py::TestCIMD::test_auth_flow_falls_back_to_dcr_when_no_cimd_support tests/client/test_auth.py::test_validate_resource_rejects_mismatched_resource [gw0] [ 8%] PASSED tests/client/test_auth.py::test_validate_resource_rejects_mismatched_resource tests/client/test_auth.py::test_validate_resource_accepts_matching_resource [gw0] [ 8%] PASSED tests/client/test_auth.py::test_validate_resource_accepts_matching_resource tests/client/test_auth.py::test_validate_resource_accepts_root_url_with_trailing_slash [gw0] [ 8%] PASSED tests/client/test_auth.py::test_validate_resource_accepts_root_url_with_trailing_slash tests/client/test_auth.py::test_get_resource_url_falls_back_when_prm_mismatches [gw0] [ 8%] PASSED tests/client/test_auth.py::test_get_resource_url_falls_back_when_prm_mismatches tests/client/test_config.py::test_command_execution [gw0] [ 9%] SKIPPED tests/client/test_config.py::test_command_execution tests/client/test_config.py::test_absolute_uv_path [gw0] [ 9%] SKIPPED tests/client/test_config.py::test_absolute_uv_path tests/client/test_http_unicode.py::test_streamable_http_client_unicode_tool_call [gw0] [ 9%] PASSED tests/client/test_http_unicode.py::test_streamable_http_client_unicode_tool_call tests/client/test_http_unicode.py::test_streamable_http_client_unicode_prompts [gw0] [ 9%] PASSED tests/client/test_http_unicode.py::test_streamable_http_client_unicode_prompts tests/client/test_list_methods_cursor.py::test_list_methods_cursor_parameter[list_tools-tools/list] [gw0] [ 9%] ERROR tests/client/test_list_methods_cursor.py::test_list_methods_cursor_parameter[list_tools-tools/list] tests/client/test_list_methods_cursor.py::test_list_methods_cursor_parameter[list_resources-resources/list] [gw0] [ 9%] ERROR tests/client/test_list_methods_cursor.py::test_list_methods_cursor_parameter[list_resources-resources/list] tests/client/test_list_methods_cursor.py::test_list_methods_cursor_parameter[list_prompts-prompts/list] [gw0] [ 9%] ERROR tests/client/test_list_methods_cursor.py::test_list_methods_cursor_parameter[list_prompts-prompts/list] tests/client/test_list_methods_cursor.py::test_list_methods_cursor_parameter[list_resource_templates-resources/templates/list] [gw0] [ 9%] ERROR tests/client/test_list_methods_cursor.py::test_list_methods_cursor_parameter[list_resource_templates-resources/templates/list] tests/client/test_list_methods_cursor.py::test_list_methods_params_parameter[list_tools-tools/list] [gw0] [ 9%] ERROR tests/client/test_list_methods_cursor.py::test_list_methods_params_parameter[list_tools-tools/list] tests/client/test_list_methods_cursor.py::test_list_methods_params_parameter[list_resources-resources/list] [gw0] [ 9%] ERROR tests/client/test_list_methods_cursor.py::test_list_methods_params_parameter[list_resources-resources/list] tests/client/test_list_methods_cursor.py::test_list_methods_params_parameter[list_prompts-prompts/list] [gw0] [ 9%] ERROR tests/client/test_list_methods_cursor.py::test_list_methods_params_parameter[list_prompts-prompts/list] tests/client/test_list_methods_cursor.py::test_list_methods_params_parameter[list_resource_templates-resources/templates/list] [gw0] [ 9%] ERROR tests/client/test_list_methods_cursor.py::test_list_methods_params_parameter[list_resource_templates-resources/templates/list] tests/client/test_list_methods_cursor.py::test_list_methods_raises_error_when_both_cursor_and_params_provided[list_tools] [gw0] [ 9%] ERROR tests/client/test_list_methods_cursor.py::test_list_methods_raises_error_when_both_cursor_and_params_provided[list_tools] tests/client/test_list_methods_cursor.py::test_list_methods_raises_error_when_both_cursor_and_params_provided[list_resources] [gw0] [ 10%] ERROR tests/client/test_list_methods_cursor.py::test_list_methods_raises_error_when_both_cursor_and_params_provided[list_resources] tests/client/test_list_methods_cursor.py::test_list_methods_raises_error_when_both_cursor_and_params_provided[list_prompts] [gw0] [ 10%] ERROR tests/client/test_list_methods_cursor.py::test_list_methods_raises_error_when_both_cursor_and_params_provided[list_prompts] tests/client/test_list_methods_cursor.py::test_list_methods_raises_error_when_both_cursor_and_params_provided[list_resource_templates] [gw0] [ 10%] ERROR tests/client/test_list_methods_cursor.py::test_list_methods_raises_error_when_both_cursor_and_params_provided[list_resource_templates] tests/client/test_list_methods_cursor.py::test_list_tools_with_strict_server_validation [gw0] [ 10%] PASSED tests/client/test_list_methods_cursor.py::test_list_tools_with_strict_server_validation tests/client/test_list_roots_callback.py::test_list_roots_callback [gw0] [ 10%] FAILED tests/client/test_list_roots_callback.py::test_list_roots_callback tests/client/test_logging_callback.py::test_logging_callback [gw0] [ 10%] FAILED tests/client/test_logging_callback.py::test_logging_callback tests/client/test_notification_response.py::test_non_compliant_notification_response [gw1] [ 10%] PASSED tests/client/test_stdio.py::test_stdio_client_universal_cleanup tests/client/test_stdio.py::test_stdio_client_sigint_only_process [gw0] [ 10%] PASSED tests/client/test_notification_response.py::test_non_compliant_notification_response tests/client/test_output_schema_validation.py::TestClientOutputSchemaValidation::test_tool_structured_output_client_side_validation_basemodel [gw0] [ 10%] PASSED tests/client/test_output_schema_validation.py::TestClientOutputSchemaValidation::test_tool_structured_output_client_side_validation_basemodel tests/client/test_output_schema_validation.py::TestClientOutputSchemaValidation::test_tool_structured_output_client_side_validation_primitive [gw0] [ 10%] PASSED tests/client/test_output_schema_validation.py::TestClientOutputSchemaValidation::test_tool_structured_output_client_side_validation_primitive tests/client/test_output_schema_validation.py::TestClientOutputSchemaValidation::test_tool_structured_output_client_side_validation_dict_typed [gw0] [ 10%] PASSED tests/client/test_output_schema_validation.py::TestClientOutputSchemaValidation::test_tool_structured_output_client_side_validation_dict_typed tests/client/test_output_schema_validation.py::TestClientOutputSchemaValidation::test_tool_structured_output_client_side_validation_missing_required [gw0] [ 10%] PASSED tests/client/test_output_schema_validation.py::TestClientOutputSchemaValidation::test_tool_structured_output_client_side_validation_missing_required tests/client/test_output_schema_validation.py::TestClientOutputSchemaValidation::test_tool_not_listed_warning [gw0] [ 11%] PASSED tests/client/test_output_schema_validation.py::TestClientOutputSchemaValidation::test_tool_not_listed_warning tests/client/test_resource_cleanup.py::test_send_request_stream_cleanup [gw0] [ 11%] PASSED tests/client/test_resource_cleanup.py::test_send_request_stream_cleanup tests/client/test_sampling_callback.py::test_sampling_callback [gw0] [ 11%] FAILED tests/client/test_sampling_callback.py::test_sampling_callback tests/client/test_sampling_callback.py::test_create_message_backwards_compat_single_content [gw0] [ 11%] FAILED tests/client/test_sampling_callback.py::test_create_message_backwards_compat_single_content tests/client/test_sampling_callback.py::test_create_message_result_with_tools_type [gw0] [ 11%] PASSED tests/client/test_sampling_callback.py::test_create_message_result_with_tools_type tests/client/test_scope_bug_1630.py::test_401_uses_www_auth_scope_not_resource_metadata_url [gw0] [ 11%] PASSED tests/client/test_scope_bug_1630.py::test_401_uses_www_auth_scope_not_resource_metadata_url tests/client/test_session.py::test_client_session_initialize [gw0] [ 11%] PASSED tests/client/test_session.py::test_client_session_initialize tests/client/test_session.py::test_client_session_custom_client_info [gw0] [ 11%] PASSED tests/client/test_session.py::test_client_session_custom_client_info tests/client/test_session.py::test_client_session_default_client_info [gw0] [ 11%] PASSED tests/client/test_session.py::test_client_session_default_client_info tests/client/test_session.py::test_client_session_version_negotiation_success [gw0] [ 11%] PASSED tests/client/test_session.py::test_client_session_version_negotiation_success tests/client/test_session.py::test_client_session_version_negotiation_failure [gw0] [ 11%] PASSED tests/client/test_session.py::test_client_session_version_negotiation_failure tests/client/test_session.py::test_client_capabilities_default [gw0] [ 11%] PASSED tests/client/test_session.py::test_client_capabilities_default tests/client/test_session.py::test_client_capabilities_with_custom_callbacks [gw0] [ 12%] PASSED tests/client/test_session.py::test_client_capabilities_with_custom_callbacks tests/client/test_session.py::test_client_capabilities_with_sampling_tools [gw0] [ 12%] PASSED tests/client/test_session.py::test_client_capabilities_with_sampling_tools tests/client/test_session.py::test_get_server_capabilities [gw0] [ 12%] PASSED tests/client/test_session.py::test_get_server_capabilities tests/client/test_session.py::test_client_tool_call_with_meta[None] [gw0] [ 12%] PASSED tests/client/test_session.py::test_client_tool_call_with_meta[None] tests/client/test_session.py::test_client_tool_call_with_meta[meta1] [gw0] [ 12%] PASSED tests/client/test_session.py::test_client_tool_call_with_meta[meta1] tests/client/test_session_group.py::TestClientSessionGroup::test_init [gw0] [ 12%] PASSED tests/client/test_session_group.py::TestClientSessionGroup::test_init tests/client/test_session_group.py::TestClientSessionGroup::test_component_properties [gw0] [ 12%] PASSED tests/client/test_session_group.py::TestClientSessionGroup::test_component_properties tests/client/test_session_group.py::TestClientSessionGroup::test_call_tool [gw0] [ 12%] PASSED tests/client/test_session_group.py::TestClientSessionGroup::test_call_tool tests/client/test_session_group.py::TestClientSessionGroup::test_connect_to_server [gw0] [ 12%] PASSED tests/client/test_session_group.py::TestClientSessionGroup::test_connect_to_server tests/client/test_session_group.py::TestClientSessionGroup::test_connect_to_server_with_name_hook [gw0] [ 12%] PASSED tests/client/test_session_group.py::TestClientSessionGroup::test_connect_to_server_with_name_hook tests/client/test_session_group.py::TestClientSessionGroup::test_disconnect_from_server [gw0] [ 12%] PASSED tests/client/test_session_group.py::TestClientSessionGroup::test_disconnect_from_server tests/client/test_session_group.py::TestClientSessionGroup::test_connect_to_server_duplicate_tool_raises_error [gw0] [ 12%] PASSED tests/client/test_session_group.py::TestClientSessionGroup::test_connect_to_server_duplicate_tool_raises_error tests/client/test_session_group.py::TestClientSessionGroup::test_disconnect_non_existent_server [gw0] [ 12%] PASSED tests/client/test_session_group.py::TestClientSessionGroup::test_disconnect_non_existent_server tests/client/test_session_group.py::TestClientSessionGroup::test_establish_session_parameterized[server_params_instance0-stdio-mcp.client.session_group.mcp.stdio_client] [gw0] [ 13%] PASSED tests/client/test_session_group.py::TestClientSessionGroup::test_establish_session_parameterized[server_params_instance0-stdio-mcp.client.session_group.mcp.stdio_client] tests/experimental/tasks/server/test_task_scope.py::test_session_scope_of_returns_none_for_unscoped_ids[0123456789abcdef0123456789abcdef:not-a-uuid] [gw0] [ 13%] PASSED tests/experimental/tasks/server/test_task_scope.py::test_session_scope_of_returns_none_for_unscoped_ids[0123456789abcdef0123456789abcdef:not-a-uuid] tests/experimental/tasks/server/test_task_scope.py::test_session_scope_of_returns_none_for_unscoped_ids[0123456789ABCDEF0123456789ABCDEF:550e8400-e29b-41d4-a716-446655440000] [gw0] [ 13%] PASSED tests/experimental/tasks/server/test_task_scope.py::test_session_scope_of_returns_none_for_unscoped_ids[0123456789ABCDEF0123456789ABCDEF:550e8400-e29b-41d4-a716-446655440000] tests/experimental/tasks/server/test_task_scope.py::test_a_scoped_task_is_usable_only_from_the_scope_that_created_it [gw0] [ 13%] PASSED tests/experimental/tasks/server/test_task_scope.py::test_a_scoped_task_is_usable_only_from_the_scope_that_created_it tests/experimental/tasks/server/test_task_scope.py::test_an_unscoped_task_is_usable_from_any_scope [gw0] [ 13%] PASSED tests/experimental/tasks/server/test_task_scope.py::test_an_unscoped_task_is_usable_from_any_scope tests/experimental/tasks/server/test_task_scope.py::test_a_scoped_task_is_listable_only_in_the_scope_that_created_it [gw0] [ 13%] PASSED tests/experimental/tasks/server/test_task_scope.py::test_a_scoped_task_is_listable_only_in_the_scope_that_created_it tests/experimental/tasks/server/test_task_scope.py::test_an_unscoped_task_is_never_listable [gw0] [ 13%] PASSED tests/experimental/tasks/server/test_task_scope.py::test_an_unscoped_task_is_never_listable tests/experimental/tasks/server/test_task_scope.py::test_configure_session_assigns_a_scope [gw0] [ 13%] PASSED tests/experimental/tasks/server/test_task_scope.py::test_configure_session_assigns_a_scope tests/experimental/tasks/server/test_task_scope.py::test_configure_session_assigns_distinct_scopes_per_session [gw0] [ 13%] PASSED tests/experimental/tasks/server/test_task_scope.py::test_configure_session_assigns_distinct_scopes_per_session tests/experimental/tasks/server/test_task_scope.py::test_configure_session_is_idempotent [gw0] [ 13%] PASSED tests/experimental/tasks/server/test_task_scope.py::test_configure_session_is_idempotent tests/experimental/tasks/server/test_task_scope.py::test_configure_session_assigns_no_scope_to_stateless_sessions [gw0] [ 13%] PASSED tests/experimental/tasks/server/test_task_scope.py::test_configure_session_assigns_no_scope_to_stateless_sessions tests/experimental/tasks/server/test_task_visibility.py::test_a_client_can_poll_its_own_task_to_completion_and_read_the_result [gw0] [ 13%] PASSED tests/experimental/tasks/server/test_task_visibility.py::test_a_client_can_poll_its_own_task_to_completion_and_read_the_result tests/experimental/tasks/server/test_task_visibility.py::test_a_client_sees_its_own_task_when_listing_tasks [gw0] [ 14%] PASSED tests/experimental/tasks/server/test_task_visibility.py::test_a_client_sees_its_own_task_when_listing_tasks tests/experimental/tasks/server/test_task_visibility.py::test_a_client_can_cancel_its_own_task [gw0] [ 14%] PASSED tests/experimental/tasks/server/test_task_visibility.py::test_a_client_can_cancel_its_own_task tests/experimental/tasks/server/test_task_visibility.py::test_a_client_cannot_get_the_status_of_another_clients_task [gw0] [ 14%] PASSED tests/experimental/tasks/server/test_task_visibility.py::test_a_client_cannot_get_the_status_of_another_clients_task tests/experimental/tasks/server/test_task_visibility.py::test_a_client_cannot_get_the_result_of_another_clients_task [gw0] [ 14%] PASSED tests/experimental/tasks/server/test_task_visibility.py::test_a_client_cannot_get_the_result_of_another_clients_task tests/experimental/tasks/server/test_task_visibility.py::test_a_client_cannot_cancel_another_clients_task [gw0] [ 14%] PASSED tests/experimental/tasks/server/test_task_visibility.py::test_a_client_cannot_cancel_another_clients_task tests/experimental/tasks/server/test_task_visibility.py::test_a_client_does_not_see_another_clients_task_when_listing_tasks [gw0] [ 14%] PASSED tests/experimental/tasks/server/test_task_visibility.py::test_a_client_does_not_see_another_clients_task_when_listing_tasks tests/experimental/tasks/server/test_task_visibility.py::test_each_client_lists_only_its_own_tasks [gw0] [ 14%] PASSED tests/experimental/tasks/server/test_task_visibility.py::test_each_client_lists_only_its_own_tasks tests/experimental/tasks/server/test_task_visibility.py::test_listing_tasks_reveals_nothing_about_other_clients_tasks_however_many_there_are [gw0] [ 14%] PASSED tests/experimental/tasks/server/test_task_visibility.py::test_listing_tasks_reveals_nothing_about_other_clients_tasks_however_many_there_are tests/experimental/tasks/server/test_task_visibility.py::test_a_client_with_more_than_one_store_page_of_tasks_lists_all_of_them [gw0] [ 14%] PASSED tests/experimental/tasks/server/test_task_visibility.py::test_a_client_with_more_than_one_store_page_of_tasks_lists_all_of_them tests/experimental/tasks/server/test_task_visibility.py::test_a_task_whose_id_was_chosen_by_the_server_is_accessible_to_every_client [gw0] [ 14%] PASSED tests/experimental/tasks/server/test_task_visibility.py::test_a_task_whose_id_was_chosen_by_the_server_is_accessible_to_every_client tests/experimental/tasks/server/test_task_visibility.py::test_a_stateless_server_serves_a_task_to_any_session_that_knows_its_id [gw0] [ 14%] PASSED tests/experimental/tasks/server/test_task_visibility.py::test_a_stateless_server_serves_a_task_to_any_session_that_knows_its_id tests/experimental/tasks/server/test_task_visibility.py::test_a_stateless_server_lists_no_tasks [gw0] [ 14%] PASSED tests/experimental/tasks/server/test_task_visibility.py::test_a_stateless_server_lists_no_tasks tests/experimental/tasks/server/test_task_visibility.py::test_clients_are_isolated_when_the_server_uses_a_custom_task_store [gw0] [ 15%] PASSED tests/experimental/tasks/server/test_task_visibility.py::test_clients_are_isolated_when_the_server_uses_a_custom_task_store tests/experimental/tasks/test_capabilities.py::TestCheckTasksCapability::test_required_requests_none_returns_true [gw0] [ 15%] PASSED tests/experimental/tasks/test_capabilities.py::TestCheckTasksCapability::test_required_requests_none_returns_true tests/experimental/tasks/test_capabilities.py::TestCheckTasksCapability::test_client_requests_none_returns_false [gw0] [ 15%] PASSED tests/experimental/tasks/test_capabilities.py::TestCheckTasksCapability::test_client_requests_none_returns_false tests/experimental/tasks/test_capabilities.py::TestCheckTasksCapability::test_elicitation_required_but_client_missing [gw0] [ 15%] PASSED tests/experimental/tasks/test_capabilities.py::TestCheckTasksCapability::test_elicitation_required_but_client_missing tests/experimental/tasks/test_capabilities.py::TestCheckTasksCapability::test_elicitation_create_required_but_client_missing [gw0] [ 15%] PASSED tests/experimental/tasks/test_capabilities.py::TestCheckTasksCapability::test_elicitation_create_required_but_client_missing tests/experimental/tasks/test_capabilities.py::TestCheckTasksCapability::test_elicitation_create_present [gw0] [ 15%] PASSED tests/experimental/tasks/test_capabilities.py::TestCheckTasksCapability::test_elicitation_create_present tests/experimental/tasks/test_capabilities.py::TestCheckTasksCapability::test_sampling_required_but_client_missing [gw0] [ 15%] PASSED tests/experimental/tasks/test_capabilities.py::TestCheckTasksCapability::test_sampling_required_but_client_missing tests/experimental/tasks/test_capabilities.py::TestCheckTasksCapability::test_sampling_create_message_required_but_client_missing [gw0] [ 15%] PASSED tests/experimental/tasks/test_capabilities.py::TestCheckTasksCapability::test_sampling_create_message_required_but_client_missing tests/experimental/tasks/test_capabilities.py::TestCheckTasksCapability::test_sampling_create_message_present [gw0] [ 15%] PASSED tests/experimental/tasks/test_capabilities.py::TestCheckTasksCapability::test_sampling_create_message_present tests/experimental/tasks/test_capabilities.py::TestCheckTasksCapability::test_both_elicitation_and_sampling_present [gw0] [ 15%] PASSED tests/experimental/tasks/test_capabilities.py::TestCheckTasksCapability::test_both_elicitation_and_sampling_present tests/experimental/tasks/test_capabilities.py::TestCheckTasksCapability::test_elicitation_without_create_required [gw0] [ 15%] PASSED tests/experimental/tasks/test_capabilities.py::TestCheckTasksCapability::test_elicitation_without_create_required tests/experimental/tasks/test_capabilities.py::TestCheckTasksCapability::test_sampling_without_create_message_required [gw0] [ 15%] PASSED tests/experimental/tasks/test_capabilities.py::TestCheckTasksCapability::test_sampling_without_create_message_required tests/experimental/tasks/test_capabilities.py::TestHasTaskAugmentedElicitation::test_tasks_none [gw0] [ 15%] PASSED tests/experimental/tasks/test_capabilities.py::TestHasTaskAugmentedElicitation::test_tasks_none tests/experimental/tasks/test_capabilities.py::TestHasTaskAugmentedElicitation::test_requests_none [gw0] [ 16%] PASSED tests/experimental/tasks/test_capabilities.py::TestHasTaskAugmentedElicitation::test_requests_none tests/experimental/tasks/test_capabilities.py::TestHasTaskAugmentedElicitation::test_elicitation_none [gw0] [ 16%] PASSED tests/experimental/tasks/test_capabilities.py::TestHasTaskAugmentedElicitation::test_elicitation_none tests/experimental/tasks/test_capabilities.py::TestHasTaskAugmentedElicitation::test_create_none [gw0] [ 16%] PASSED tests/experimental/tasks/test_capabilities.py::TestHasTaskAugmentedElicitation::test_create_none tests/experimental/tasks/test_capabilities.py::TestHasTaskAugmentedElicitation::test_create_present [gw0] [ 16%] PASSED tests/experimental/tasks/test_capabilities.py::TestHasTaskAugmentedElicitation::test_create_present tests/experimental/tasks/test_capabilities.py::TestHasTaskAugmentedSampling::test_tasks_none [gw0] [ 16%] PASSED tests/experimental/tasks/test_capabilities.py::TestHasTaskAugmentedSampling::test_tasks_none tests/experimental/tasks/test_capabilities.py::TestHasTaskAugmentedSampling::test_requests_none [gw0] [ 16%] PASSED tests/experimental/tasks/test_capabilities.py::TestHasTaskAugmentedSampling::test_requests_none tests/experimental/tasks/test_capabilities.py::TestHasTaskAugmentedSampling::test_sampling_none [gw0] [ 16%] PASSED tests/experimental/tasks/test_capabilities.py::TestHasTaskAugmentedSampling::test_sampling_none tests/experimental/tasks/test_capabilities.py::TestHasTaskAugmentedSampling::test_create_message_none [gw0] [ 16%] PASSED tests/experimental/tasks/test_capabilities.py::TestHasTaskAugmentedSampling::test_create_message_none tests/experimental/tasks/test_capabilities.py::TestHasTaskAugmentedSampling::test_create_message_present [gw0] [ 16%] PASSED tests/experimental/tasks/test_capabilities.py::TestHasTaskAugmentedSampling::test_create_message_present tests/experimental/tasks/test_capabilities.py::TestRequireTaskAugmentedElicitation::test_raises_when_none [gw0] [ 16%] PASSED tests/experimental/tasks/test_capabilities.py::TestRequireTaskAugmentedElicitation::test_raises_when_none tests/experimental/tasks/test_capabilities.py::TestRequireTaskAugmentedElicitation::test_raises_when_missing [gw0] [ 16%] PASSED tests/experimental/tasks/test_capabilities.py::TestRequireTaskAugmentedElicitation::test_raises_when_missing tests/experimental/tasks/test_capabilities.py::TestRequireTaskAugmentedElicitation::test_passes_when_present [gw0] [ 16%] PASSED tests/experimental/tasks/test_capabilities.py::TestRequireTaskAugmentedElicitation::test_passes_when_present tests/experimental/tasks/test_capabilities.py::TestRequireTaskAugmentedSampling::test_raises_when_none [gw0] [ 17%] PASSED tests/experimental/tasks/test_capabilities.py::TestRequireTaskAugmentedSampling::test_raises_when_none tests/experimental/tasks/test_capabilities.py::TestRequireTaskAugmentedSampling::test_raises_when_missing [gw0] [ 17%] PASSED tests/experimental/tasks/test_capabilities.py::TestRequireTaskAugmentedSampling::test_raises_when_missing tests/experimental/tasks/test_capabilities.py::TestRequireTaskAugmentedSampling::test_passes_when_present [gw0] [ 17%] PASSED tests/experimental/tasks/test_capabilities.py::TestRequireTaskAugmentedSampling::test_passes_when_present tests/experimental/tasks/test_deprecations.py::test_client_session_experimental_property_is_deprecated [gw0] [ 17%] PASSED tests/experimental/tasks/test_deprecations.py::test_client_session_experimental_property_is_deprecated tests/experimental/tasks/test_deprecations.py::test_client_session_experimental_task_handlers_kwarg_is_deprecated [gw0] [ 17%] PASSED tests/experimental/tasks/test_deprecations.py::test_client_session_experimental_task_handlers_kwarg_is_deprecated tests/experimental/tasks/test_deprecations.py::test_server_session_experimental_property_is_deprecated [gw0] [ 17%] PASSED tests/experimental/tasks/test_deprecations.py::test_server_session_experimental_property_is_deprecated tests/experimental/tasks/test_deprecations.py::test_lowlevel_server_experimental_property_is_deprecated [gw0] [ 17%] PASSED tests/experimental/tasks/test_deprecations.py::test_lowlevel_server_experimental_property_is_deprecated tests/experimental/tasks/test_deprecations.py::test_plain_session_usage_does_not_warn [gw0] [ 17%] PASSED tests/experimental/tasks/test_deprecations.py::test_plain_session_usage_does_not_warn tests/experimental/tasks/test_elicitation_scenarios.py::test_scenario1_normal_tool_normal_elicitation [gw0] [ 17%] PASSED tests/experimental/tasks/test_elicitation_scenarios.py::test_scenario1_normal_tool_normal_elicitation tests/experimental/tasks/test_elicitation_scenarios.py::test_scenario2_normal_tool_task_augmented_elicitation [gw0] [ 17%] PASSED tests/experimental/tasks/test_elicitation_scenarios.py::test_scenario2_normal_tool_task_augmented_elicitation tests/experimental/tasks/test_elicitation_scenarios.py::test_scenario3_task_augmented_tool_normal_elicitation [gw0] [ 17%] PASSED tests/experimental/tasks/test_elicitation_scenarios.py::test_scenario3_task_augmented_tool_normal_elicitation tests/experimental/tasks/test_elicitation_scenarios.py::test_scenario4_task_augmented_tool_task_augmented_elicitation [gw0] [ 17%] PASSED tests/experimental/tasks/test_elicitation_scenarios.py::test_scenario4_task_augmented_tool_task_augmented_elicitation tests/experimental/tasks/test_elicitation_scenarios.py::test_scenario2_sampling_normal_tool_task_augmented_sampling [gw0] [ 18%] PASSED tests/experimental/tasks/test_elicitation_scenarios.py::test_scenario2_sampling_normal_tool_task_augmented_sampling tests/experimental/tasks/test_elicitation_scenarios.py::test_scenario4_sampling_task_augmented_tool_task_augmented_sampling [gw0] [ 18%] PASSED tests/experimental/tasks/test_elicitation_scenarios.py::test_scenario4_sampling_task_augmented_tool_task_augmented_sampling tests/experimental/tasks/test_message_queue.py::TestInMemoryTaskMessageQueue::test_enqueue_and_dequeue [gw0] [ 18%] PASSED tests/experimental/tasks/test_message_queue.py::TestInMemoryTaskMessageQueue::test_enqueue_and_dequeue tests/experimental/tasks/test_message_queue.py::TestInMemoryTaskMessageQueue::test_dequeue_empty_returns_none [gw0] [ 18%] PASSED tests/experimental/tasks/test_message_queue.py::TestInMemoryTaskMessageQueue::test_dequeue_empty_returns_none tests/experimental/tasks/test_message_queue.py::TestInMemoryTaskMessageQueue::test_fifo_ordering [gw0] [ 18%] PASSED tests/experimental/tasks/test_message_queue.py::TestInMemoryTaskMessageQueue::test_fifo_ordering tests/experimental/tasks/test_message_queue.py::TestInMemoryTaskMessageQueue::test_separate_queues_per_task [gw0] [ 18%] PASSED tests/experimental/tasks/test_message_queue.py::TestInMemoryTaskMessageQueue::test_separate_queues_per_task tests/experimental/tasks/test_message_queue.py::TestInMemoryTaskMessageQueue::test_peek_does_not_remove [gw0] [ 18%] PASSED tests/experimental/tasks/test_message_queue.py::TestInMemoryTaskMessageQueue::test_peek_does_not_remove tests/experimental/tasks/test_message_queue.py::TestInMemoryTaskMessageQueue::test_is_empty [gw0] [ 18%] PASSED tests/experimental/tasks/test_message_queue.py::TestInMemoryTaskMessageQueue::test_is_empty tests/experimental/tasks/test_message_queue.py::TestInMemoryTaskMessageQueue::test_clear_returns_all_messages [gw0] [ 18%] PASSED tests/experimental/tasks/test_message_queue.py::TestInMemoryTaskMessageQueue::test_clear_returns_all_messages tests/experimental/tasks/test_message_queue.py::TestInMemoryTaskMessageQueue::test_clear_empty_queue [gw0] [ 18%] PASSED tests/experimental/tasks/test_message_queue.py::TestInMemoryTaskMessageQueue::test_clear_empty_queue tests/experimental/tasks/test_message_queue.py::TestInMemoryTaskMessageQueue::test_notification_messages [gw0] [ 18%] PASSED tests/experimental/tasks/test_message_queue.py::TestInMemoryTaskMessageQueue::test_notification_messages tests/experimental/tasks/test_message_queue.py::TestInMemoryTaskMessageQueue::test_message_timestamp [gw0] [ 18%] PASSED tests/experimental/tasks/test_message_queue.py::TestInMemoryTaskMessageQueue::test_message_timestamp tests/experimental/tasks/test_message_queue.py::TestInMemoryTaskMessageQueue::test_message_with_resolver [gw0] [ 18%] PASSED tests/experimental/tasks/test_message_queue.py::TestInMemoryTaskMessageQueue::test_message_with_resolver tests/experimental/tasks/test_message_queue.py::TestInMemoryTaskMessageQueue::test_cleanup_specific_task [gw0] [ 19%] PASSED tests/experimental/tasks/test_message_queue.py::TestInMemoryTaskMessageQueue::test_cleanup_specific_task tests/experimental/tasks/test_message_queue.py::TestInMemoryTaskMessageQueue::test_cleanup_all [gw0] [ 19%] PASSED tests/experimental/tasks/test_message_queue.py::TestInMemoryTaskMessageQueue::test_cleanup_all tests/experimental/tasks/test_message_queue.py::TestInMemoryTaskMessageQueue::test_wait_for_message_returns_immediately_if_message_exists [gw0] [ 19%] PASSED tests/experimental/tasks/test_message_queue.py::TestInMemoryTaskMessageQueue::test_wait_for_message_returns_immediately_if_message_exists tests/experimental/tasks/test_message_queue.py::TestInMemoryTaskMessageQueue::test_wait_for_message_blocks_until_message [gw0] [ 19%] PASSED tests/experimental/tasks/test_message_queue.py::TestInMemoryTaskMessageQueue::test_wait_for_message_blocks_until_message tests/experimental/tasks/test_message_queue.py::TestInMemoryTaskMessageQueue::test_notify_message_available_wakes_waiter [gw0] [ 19%] PASSED tests/experimental/tasks/test_message_queue.py::TestInMemoryTaskMessageQueue::test_notify_message_available_wakes_waiter tests/experimental/tasks/test_message_queue.py::TestInMemoryTaskMessageQueue::test_peek_empty_queue_returns_none [gw0] [ 19%] PASSED tests/experimental/tasks/test_message_queue.py::TestInMemoryTaskMessageQueue::test_peek_empty_queue_returns_none tests/experimental/tasks/test_message_queue.py::TestInMemoryTaskMessageQueue::test_wait_for_message_double_check_race_condition [gw0] [ 19%] PASSED tests/experimental/tasks/test_message_queue.py::TestInMemoryTaskMessageQueue::test_wait_for_message_double_check_race_condition tests/experimental/tasks/test_message_queue.py::TestResolver::test_set_result_and_wait [gw0] [ 19%] PASSED tests/experimental/tasks/test_message_queue.py::TestResolver::test_set_result_and_wait tests/experimental/tasks/test_message_queue.py::TestResolver::test_set_exception_and_wait [gw0] [ 19%] PASSED tests/experimental/tasks/test_message_queue.py::TestResolver::test_set_exception_and_wait tests/experimental/tasks/test_message_queue.py::TestResolver::test_set_result_when_already_completed_raises [gw0] [ 19%] PASSED tests/experimental/tasks/test_message_queue.py::TestResolver::test_set_result_when_already_completed_raises tests/experimental/tasks/test_message_queue.py::TestResolver::test_set_exception_when_already_completed_raises [gw0] [ 19%] PASSED tests/experimental/tasks/test_message_queue.py::TestResolver::test_set_exception_when_already_completed_raises tests/experimental/tasks/test_message_queue.py::TestResolver::test_done_returns_false_before_completion [gw0] [ 19%] PASSED tests/experimental/tasks/test_message_queue.py::TestResolver::test_done_returns_false_before_completion tests/experimental/tasks/test_request_context.py::test_is_task_true_when_metadata_present [gw0] [ 20%] PASSED tests/experimental/tasks/test_request_context.py::test_is_task_true_when_metadata_present tests/experimental/tasks/test_request_context.py::test_is_task_false_when_no_metadata [gw0] [ 20%] PASSED tests/experimental/tasks/test_request_context.py::test_is_task_false_when_no_metadata tests/experimental/tasks/test_request_context.py::test_client_supports_tasks_true [gw0] [ 20%] PASSED tests/experimental/tasks/test_request_context.py::test_client_supports_tasks_true tests/experimental/tasks/test_request_context.py::test_client_supports_tasks_false_no_tasks [gw0] [ 20%] PASSED tests/experimental/tasks/test_request_context.py::test_client_supports_tasks_false_no_tasks tests/experimental/tasks/test_request_context.py::test_client_supports_tasks_false_no_capabilities [gw0] [ 20%] PASSED tests/experimental/tasks/test_request_context.py::test_client_supports_tasks_false_no_capabilities tests/experimental/tasks/test_request_context.py::test_validate_task_mode_required_with_task_is_valid [gw0] [ 20%] PASSED tests/experimental/tasks/test_request_context.py::test_validate_task_mode_required_with_task_is_valid tests/experimental/tasks/test_request_context.py::test_validate_task_mode_required_without_task_returns_error [gw0] [ 20%] PASSED tests/experimental/tasks/test_request_context.py::test_validate_task_mode_required_without_task_returns_error tests/experimental/tasks/test_request_context.py::test_validate_task_mode_required_without_task_raises_by_default [gw0] [ 20%] PASSED tests/experimental/tasks/test_request_context.py::test_validate_task_mode_required_without_task_raises_by_default tests/experimental/tasks/test_request_context.py::test_validate_task_mode_forbidden_without_task_is_valid [gw0] [ 20%] PASSED tests/experimental/tasks/test_request_context.py::test_validate_task_mode_forbidden_without_task_is_valid tests/experimental/tasks/test_request_context.py::test_validate_task_mode_forbidden_with_task_returns_error [gw0] [ 20%] PASSED tests/experimental/tasks/test_request_context.py::test_validate_task_mode_forbidden_with_task_returns_error tests/experimental/tasks/test_request_context.py::test_validate_task_mode_forbidden_with_task_raises_by_default [gw0] [ 20%] PASSED tests/experimental/tasks/test_request_context.py::test_validate_task_mode_forbidden_with_task_raises_by_default tests/experimental/tasks/test_request_context.py::test_validate_task_mode_none_treated_as_forbidden [gw0] [ 20%] PASSED tests/experimental/tasks/test_request_context.py::test_validate_task_mode_none_treated_as_forbidden tests/experimental/tasks/test_request_context.py::test_validate_task_mode_optional_with_task_is_valid [gw0] [ 21%] PASSED tests/experimental/tasks/test_request_context.py::test_validate_task_mode_optional_with_task_is_valid tests/experimental/tasks/test_request_context.py::test_validate_task_mode_optional_without_task_is_valid [gw0] [ 21%] PASSED tests/experimental/tasks/test_request_context.py::test_validate_task_mode_optional_without_task_is_valid tests/experimental/tasks/test_request_context.py::test_validate_for_tool_with_execution_required [gw0] [ 21%] PASSED tests/experimental/tasks/test_request_context.py::test_validate_for_tool_with_execution_required tests/experimental/tasks/test_request_context.py::test_validate_for_tool_without_execution [gw0] [ 21%] PASSED tests/experimental/tasks/test_request_context.py::test_validate_for_tool_without_execution tests/experimental/tasks/test_request_context.py::test_validate_for_tool_optional_with_task [gw0] [ 21%] PASSED tests/experimental/tasks/test_request_context.py::test_validate_for_tool_optional_with_task tests/experimental/tasks/test_request_context.py::test_can_use_tool_required_with_task_support [gw0] [ 21%] PASSED tests/experimental/tasks/test_request_context.py::test_can_use_tool_required_with_task_support tests/experimental/tasks/test_request_context.py::test_can_use_tool_required_without_task_support [gw0] [ 21%] PASSED tests/experimental/tasks/test_request_context.py::test_can_use_tool_required_without_task_support tests/experimental/tasks/test_request_context.py::test_can_use_tool_optional_without_task_support [gw0] [ 21%] PASSED tests/experimental/tasks/test_request_context.py::test_can_use_tool_optional_without_task_support tests/experimental/tasks/test_request_context.py::test_can_use_tool_forbidden_without_task_support [gw0] [ 21%] PASSED tests/experimental/tasks/test_request_context.py::test_can_use_tool_forbidden_without_task_support tests/experimental/tasks/test_request_context.py::test_can_use_tool_none_without_task_support [gw0] [ 21%] PASSED tests/experimental/tasks/test_request_context.py::test_can_use_tool_none_without_task_support tests/experimental/tasks/test_request_context.py::test_run_task_with_an_explicit_task_id_emits_a_deprecation_warning [gw0] [ 21%] PASSED tests/experimental/tasks/test_request_context.py::test_run_task_with_an_explicit_task_id_emits_a_deprecation_warning tests/experimental/tasks/test_request_context.py::test_run_task_without_a_task_id_does_not_warn [gw0] [ 21%] PASSED tests/experimental/tasks/test_request_context.py::test_run_task_without_a_task_id_does_not_warn tests/experimental/tasks/test_spec_compliance.py::test_server_without_task_handlers_has_no_tasks_capability [gw0] [ 21%] PASSED tests/experimental/tasks/test_spec_compliance.py::test_server_without_task_handlers_has_no_tasks_capability tests/experimental/tasks/test_spec_compliance.py::test_server_with_list_tasks_handler_declares_list_capability [gw0] [ 22%] PASSED tests/experimental/tasks/test_spec_compliance.py::test_server_with_list_tasks_handler_declares_list_capability tests/experimental/tasks/test_spec_compliance.py::test_server_with_cancel_task_handler_declares_cancel_capability [gw0] [ 22%] PASSED tests/experimental/tasks/test_spec_compliance.py::test_server_with_cancel_task_handler_declares_cancel_capability tests/experimental/tasks/test_spec_compliance.py::test_server_with_get_task_handler_declares_requests_tools_call_capability [gw0] [ 22%] PASSED tests/experimental/tasks/test_spec_compliance.py::test_server_with_get_task_handler_declares_requests_tools_call_capability tests/experimental/tasks/test_spec_compliance.py::test_server_without_list_handler_has_no_list_capability [gw0] [ 22%] PASSED tests/experimental/tasks/test_spec_compliance.py::test_server_without_list_handler_has_no_list_capability tests/experimental/tasks/test_spec_compliance.py::test_server_without_cancel_handler_has_no_cancel_capability [gw0] [ 22%] PASSED tests/experimental/tasks/test_spec_compliance.py::test_server_without_cancel_handler_has_no_cancel_capability tests/experimental/tasks/test_spec_compliance.py::test_server_with_all_task_handlers_has_full_capability [gw0] [ 22%] PASSED tests/experimental/tasks/test_spec_compliance.py::test_server_with_all_task_handlers_has_full_capability tests/experimental/tasks/test_spec_compliance.py::TestClientCapabilities::test_client_declares_tasks_capability [gw0] [ 22%] SKIPPED tests/experimental/tasks/test_spec_compliance.py::TestClientCapabilities::test_client_declares_tasks_capability tests/experimental/tasks/test_spec_compliance.py::TestToolLevelNegotiation::test_tool_execution_task_forbidden_rejects_task_augmented_call [gw0] [ 22%] SKIPPED tests/experimental/tasks/test_spec_compliance.py::TestToolLevelNegotiation::test_tool_execution_task_forbidden_rejects_task_augmented_call tests/experimental/tasks/test_spec_compliance.py::TestToolLevelNegotiation::test_tool_execution_task_absent_rejects_task_augmented_call [gw0] [ 22%] SKIPPED tests/experimental/tasks/test_spec_compliance.py::TestToolLevelNegotiation::test_tool_execution_task_absent_rejects_task_augmented_call tests/experimental/tasks/test_spec_compliance.py::TestToolLevelNegotiation::test_tool_execution_task_optional_accepts_normal_call [gw0] [ 22%] SKIPPED tests/experimental/tasks/test_spec_compliance.py::TestToolLevelNegotiation::test_tool_execution_task_optional_accepts_normal_call tests/experimental/tasks/test_spec_compliance.py::TestToolLevelNegotiation::test_tool_execution_task_optional_accepts_task_augmented_call [gw0] [ 22%] SKIPPED tests/experimental/tasks/test_spec_compliance.py::TestToolLevelNegotiation::test_tool_execution_task_optional_accepts_task_augmented_call tests/experimental/tasks/test_spec_compliance.py::TestToolLevelNegotiation::test_tool_execution_task_required_rejects_normal_call [gw0] [ 22%] SKIPPED tests/experimental/tasks/test_spec_compliance.py::TestToolLevelNegotiation::test_tool_execution_task_required_rejects_normal_call tests/experimental/tasks/test_spec_compliance.py::TestToolLevelNegotiation::test_tool_execution_task_required_accepts_task_augmented_call [gw0] [ 23%] SKIPPED tests/experimental/tasks/test_spec_compliance.py::TestToolLevelNegotiation::test_tool_execution_task_required_accepts_task_augmented_call tests/experimental/tasks/test_spec_compliance.py::TestCapabilityNegotiation::test_receiver_without_capability_ignores_task_metadata [gw0] [ 23%] SKIPPED tests/experimental/tasks/test_spec_compliance.py::TestCapabilityNegotiation::test_receiver_without_capability_ignores_task_metadata tests/experimental/tasks/test_spec_compliance.py::TestCapabilityNegotiation::test_receiver_with_capability_may_require_task_augmentation [gw0] [ 23%] SKIPPED tests/experimental/tasks/test_spec_compliance.py::TestCapabilityNegotiation::test_receiver_with_capability_may_require_task_augmentation tests/experimental/tasks/test_spec_compliance.py::TestTaskStatusLifecycle::test_task_begins_in_working_status [gw0] [ 23%] SKIPPED tests/experimental/tasks/test_spec_compliance.py::TestTaskStatusLifecycle::test_task_begins_in_working_status tests/experimental/tasks/test_spec_compliance.py::TestTaskStatusLifecycle::test_working_to_completed_transition [gw0] [ 23%] SKIPPED tests/experimental/tasks/test_spec_compliance.py::TestTaskStatusLifecycle::test_working_to_completed_transition tests/experimental/tasks/test_spec_compliance.py::TestTaskStatusLifecycle::test_working_to_failed_transition [gw0] [ 23%] SKIPPED tests/experimental/tasks/test_spec_compliance.py::TestTaskStatusLifecycle::test_working_to_failed_transition tests/experimental/tasks/test_spec_compliance.py::TestTaskStatusLifecycle::test_working_to_cancelled_transition [gw0] [ 23%] SKIPPED tests/experimental/tasks/test_spec_compliance.py::TestTaskStatusLifecycle::test_working_to_cancelled_transition tests/experimental/tasks/test_spec_compliance.py::TestTaskStatusLifecycle::test_working_to_input_required_transition [gw0] [ 23%] SKIPPED tests/experimental/tasks/test_spec_compliance.py::TestTaskStatusLifecycle::test_working_to_input_required_transition tests/experimental/tasks/test_spec_compliance.py::TestTaskStatusLifecycle::test_input_required_to_working_transition [gw0] [ 23%] SKIPPED tests/experimental/tasks/test_spec_compliance.py::TestTaskStatusLifecycle::test_input_required_to_working_transition tests/experimental/tasks/test_spec_compliance.py::TestTaskStatusLifecycle::test_input_required_to_terminal_transition [gw0] [ 23%] SKIPPED tests/experimental/tasks/test_spec_compliance.py::TestTaskStatusLifecycle::test_input_required_to_terminal_transition tests/experimental/tasks/test_spec_compliance.py::TestTaskStatusLifecycle::test_terminal_state_no_further_transitions [gw0] [ 23%] SKIPPED tests/experimental/tasks/test_spec_compliance.py::TestTaskStatusLifecycle::test_terminal_state_no_further_transitions tests/experimental/tasks/test_spec_compliance.py::TestTaskStatusLifecycle::test_completed_is_terminal [gw0] [ 23%] SKIPPED tests/experimental/tasks/test_spec_compliance.py::TestTaskStatusLifecycle::test_completed_is_terminal tests/experimental/tasks/test_spec_compliance.py::TestTaskStatusLifecycle::test_failed_is_terminal [gw0] [ 24%] SKIPPED tests/experimental/tasks/test_spec_compliance.py::TestTaskStatusLifecycle::test_failed_is_terminal tests/experimental/tasks/test_spec_compliance.py::TestTaskStatusLifecycle::test_cancelled_is_terminal [gw0] [ 24%] SKIPPED tests/experimental/tasks/test_spec_compliance.py::TestTaskStatusLifecycle::test_cancelled_is_terminal tests/experimental/tasks/test_spec_compliance.py::TestInputRequiredStatus::test_input_required_status_retrievable_via_tasks_get [gw0] [ 24%] SKIPPED tests/experimental/tasks/test_spec_compliance.py::TestInputRequiredStatus::test_input_required_status_retrievable_via_tasks_get tests/experimental/tasks/test_spec_compliance.py::TestInputRequiredStatus::test_input_required_related_task_metadata_in_requests [gw0] [ 24%] SKIPPED tests/experimental/tasks/test_spec_compliance.py::TestInputRequiredStatus::test_input_required_related_task_metadata_in_requests tests/experimental/tasks/test_spec_compliance.py::TestCreatingTask::test_task_augmented_request_returns_create_task_result [gw0] [ 24%] SKIPPED tests/experimental/tasks/test_spec_compliance.py::TestCreatingTask::test_task_augmented_request_returns_create_task_result tests/experimental/tasks/test_spec_compliance.py::TestCreatingTask::test_create_task_result_contains_task_id [gw0] [ 24%] SKIPPED tests/experimental/tasks/test_spec_compliance.py::TestCreatingTask::test_create_task_result_contains_task_id tests/experimental/tasks/test_spec_compliance.py::TestCreatingTask::test_create_task_result_contains_status_working [gw0] [ 24%] SKIPPED tests/experimental/tasks/test_spec_compliance.py::TestCreatingTask::test_create_task_result_contains_status_working tests/experimental/tasks/test_spec_compliance.py::TestCreatingTask::test_create_task_result_contains_created_at [gw0] [ 24%] SKIPPED tests/experimental/tasks/test_spec_compliance.py::TestCreatingTask::test_create_task_result_contains_created_at tests/experimental/tasks/test_spec_compliance.py::TestCreatingTask::test_create_task_result_created_at_is_iso8601 [gw0] [ 24%] SKIPPED tests/experimental/tasks/test_spec_compliance.py::TestCreatingTask::test_create_task_result_created_at_is_iso8601 tests/experimental/tasks/test_spec_compliance.py::TestCreatingTask::test_create_task_result_may_contain_ttl [gw0] [ 24%] SKIPPED tests/experimental/tasks/test_spec_compliance.py::TestCreatingTask::test_create_task_result_may_contain_ttl tests/experimental/tasks/test_spec_compliance.py::TestCreatingTask::test_create_task_result_may_contain_poll_interval [gw0] [ 24%] SKIPPED tests/experimental/tasks/test_spec_compliance.py::TestCreatingTask::test_create_task_result_may_contain_poll_interval tests/experimental/tasks/test_spec_compliance.py::TestCreatingTask::test_create_task_result_may_contain_status_message [gw0] [ 24%] SKIPPED tests/experimental/tasks/test_spec_compliance.py::TestCreatingTask::test_create_task_result_may_contain_status_message tests/experimental/tasks/test_spec_compliance.py::TestCreatingTask::test_receiver_may_override_requested_ttl [gw0] [ 24%] SKIPPED tests/experimental/tasks/test_spec_compliance.py::TestCreatingTask::test_receiver_may_override_requested_ttl tests/experimental/tasks/test_spec_compliance.py::TestCreatingTask::test_model_immediate_response_in_meta [gw0] [ 25%] PASSED tests/experimental/tasks/test_spec_compliance.py::TestCreatingTask::test_model_immediate_response_in_meta tests/experimental/tasks/test_spec_compliance.py::TestGettingTaskStatus::test_tasks_get_returns_task_object [gw0] [ 25%] SKIPPED tests/experimental/tasks/test_spec_compliance.py::TestGettingTaskStatus::test_tasks_get_returns_task_object tests/experimental/tasks/test_spec_compliance.py::TestGettingTaskStatus::test_tasks_get_returns_current_status [gw0] [ 25%] SKIPPED tests/experimental/tasks/test_spec_compliance.py::TestGettingTaskStatus::test_tasks_get_returns_current_status tests/experimental/tasks/test_spec_compliance.py::TestGettingTaskStatus::test_tasks_get_may_return_poll_interval [gw0] [ 25%] SKIPPED tests/experimental/tasks/test_spec_compliance.py::TestGettingTaskStatus::test_tasks_get_may_return_poll_interval tests/experimental/tasks/test_spec_compliance.py::TestGettingTaskStatus::test_tasks_get_invalid_task_id_returns_error [gw0] [ 25%] SKIPPED tests/experimental/tasks/test_spec_compliance.py::TestGettingTaskStatus::test_tasks_get_invalid_task_id_returns_error tests/experimental/tasks/test_spec_compliance.py::TestGettingTaskStatus::test_tasks_get_nonexistent_task_id_returns_error [gw0] [ 25%] SKIPPED tests/experimental/tasks/test_spec_compliance.py::TestGettingTaskStatus::test_tasks_get_nonexistent_task_id_returns_error tests/experimental/tasks/test_spec_compliance.py::TestRetrievingResults::test_tasks_result_returns_underlying_result [gw0] [ 25%] SKIPPED tests/experimental/tasks/test_spec_compliance.py::TestRetrievingResults::test_tasks_result_returns_underlying_result tests/experimental/tasks/test_spec_compliance.py::TestRetrievingResults::test_tasks_result_blocks_until_terminal [gw0] [ 25%] SKIPPED tests/experimental/tasks/test_spec_compliance.py::TestRetrievingResults::test_tasks_result_blocks_until_terminal tests/experimental/tasks/test_spec_compliance.py::TestRetrievingResults::test_tasks_result_unblocks_on_terminal [gw0] [ 25%] SKIPPED tests/experimental/tasks/test_spec_compliance.py::TestRetrievingResults::test_tasks_result_unblocks_on_terminal tests/experimental/tasks/test_spec_compliance.py::TestRetrievingResults::test_tasks_result_includes_related_task_metadata [gw0] [ 25%] SKIPPED tests/experimental/tasks/test_spec_compliance.py::TestRetrievingResults::test_tasks_result_includes_related_task_metadata tests/experimental/tasks/test_spec_compliance.py::TestRetrievingResults::test_tasks_result_returns_error_for_failed_task [gw0] [ 25%] SKIPPED tests/experimental/tasks/test_spec_compliance.py::TestRetrievingResults::test_tasks_result_returns_error_for_failed_task tests/experimental/tasks/test_spec_compliance.py::TestRetrievingResults::test_tasks_result_invalid_task_id_returns_error [gw0] [ 25%] SKIPPED tests/experimental/tasks/test_spec_compliance.py::TestRetrievingResults::test_tasks_result_invalid_task_id_returns_error tests/experimental/tasks/test_spec_compliance.py::TestListingTasks::test_tasks_list_returns_array_of_tasks [gw0] [ 26%] SKIPPED tests/experimental/tasks/test_spec_compliance.py::TestListingTasks::test_tasks_list_returns_array_of_tasks tests/experimental/tasks/test_spec_compliance.py::TestListingTasks::test_tasks_list_pagination_with_cursor [gw0] [ 26%] SKIPPED tests/experimental/tasks/test_spec_compliance.py::TestListingTasks::test_tasks_list_pagination_with_cursor tests/experimental/tasks/test_spec_compliance.py::TestListingTasks::test_tasks_list_returns_next_cursor_when_more_results [gw0] [ 26%] SKIPPED tests/experimental/tasks/test_spec_compliance.py::TestListingTasks::test_tasks_list_returns_next_cursor_when_more_results tests/experimental/tasks/test_spec_compliance.py::TestListingTasks::test_tasks_list_cursors_are_opaque [gw0] [ 26%] SKIPPED tests/experimental/tasks/test_spec_compliance.py::TestListingTasks::test_tasks_list_cursors_are_opaque tests/experimental/tasks/test_spec_compliance.py::TestListingTasks::test_tasks_list_invalid_cursor_returns_error [gw0] [ 26%] SKIPPED tests/experimental/tasks/test_spec_compliance.py::TestListingTasks::test_tasks_list_invalid_cursor_returns_error tests/experimental/tasks/test_spec_compliance.py::TestCancellingTasks::test_tasks_cancel_returns_cancelled_task [gw0] [ 26%] SKIPPED tests/experimental/tasks/test_spec_compliance.py::TestCancellingTasks::test_tasks_cancel_returns_cancelled_task tests/experimental/tasks/test_spec_compliance.py::TestCancellingTasks::test_tasks_cancel_terminal_task_returns_error [gw0] [ 26%] SKIPPED tests/experimental/tasks/test_spec_compliance.py::TestCancellingTasks::test_tasks_cancel_terminal_task_returns_error tests/experimental/tasks/test_spec_compliance.py::TestCancellingTasks::test_tasks_cancel_completed_task_returns_error [gw0] [ 26%] SKIPPED tests/experimental/tasks/test_spec_compliance.py::TestCancellingTasks::test_tasks_cancel_completed_task_returns_error tests/experimental/tasks/test_spec_compliance.py::TestCancellingTasks::test_tasks_cancel_failed_task_returns_error [gw0] [ 26%] SKIPPED tests/experimental/tasks/test_spec_compliance.py::TestCancellingTasks::test_tasks_cancel_failed_task_returns_error tests/experimental/tasks/test_spec_compliance.py::TestCancellingTasks::test_tasks_cancel_already_cancelled_task_returns_error [gw0] [ 26%] SKIPPED tests/experimental/tasks/test_spec_compliance.py::TestCancellingTasks::test_tasks_cancel_already_cancelled_task_returns_error tests/experimental/tasks/test_spec_compliance.py::TestCancellingTasks::test_tasks_cancel_invalid_task_id_returns_error [gw0] [ 26%] SKIPPED tests/experimental/tasks/test_spec_compliance.py::TestCancellingTasks::test_tasks_cancel_invalid_task_id_returns_error tests/experimental/tasks/test_spec_compliance.py::TestStatusNotifications::test_receiver_may_send_status_notification [gw0] [ 26%] SKIPPED tests/experimental/tasks/test_spec_compliance.py::TestStatusNotifications::test_receiver_may_send_status_notification tests/experimental/tasks/test_spec_compliance.py::TestStatusNotifications::test_status_notification_contains_task_id [gw0] [ 27%] SKIPPED tests/experimental/tasks/test_spec_compliance.py::TestStatusNotifications::test_status_notification_contains_task_id tests/experimental/tasks/test_spec_compliance.py::TestStatusNotifications::test_status_notification_contains_status [gw0] [ 27%] SKIPPED tests/experimental/tasks/test_spec_compliance.py::TestStatusNotifications::test_status_notification_contains_status tests/experimental/tasks/test_spec_compliance.py::TestTaskManagement::test_task_ids_are_unique_strings [gw0] [ 27%] SKIPPED tests/experimental/tasks/test_spec_compliance.py::TestTaskManagement::test_task_ids_are_unique_strings tests/experimental/tasks/test_spec_compliance.py::TestTaskManagement::test_multiple_tasks_have_unique_ids [gw0] [ 27%] SKIPPED tests/experimental/tasks/test_spec_compliance.py::TestTaskManagement::test_multiple_tasks_have_unique_ids tests/experimental/tasks/test_spec_compliance.py::TestTaskManagement::test_receiver_may_delete_tasks_after_ttl [gw0] [ 27%] SKIPPED tests/experimental/tasks/test_spec_compliance.py::TestTaskManagement::test_receiver_may_delete_tasks_after_ttl tests/experimental/tasks/test_spec_compliance.py::TestTaskManagement::test_related_task_metadata_in_task_messages [gw0] [ 27%] SKIPPED tests/experimental/tasks/test_spec_compliance.py::TestTaskManagement::test_related_task_metadata_in_task_messages tests/experimental/tasks/test_spec_compliance.py::TestTaskManagement::test_tasks_get_does_not_require_related_task_metadata [gw0] [ 27%] SKIPPED tests/experimental/tasks/test_spec_compliance.py::TestTaskManagement::test_tasks_get_does_not_require_related_task_metadata tests/experimental/tasks/test_spec_compliance.py::TestTaskManagement::test_tasks_list_does_not_require_related_task_metadata [gw0] [ 27%] SKIPPED tests/experimental/tasks/test_spec_compliance.py::TestTaskManagement::test_tasks_list_does_not_require_related_task_metadata tests/experimental/tasks/test_spec_compliance.py::TestTaskManagement::test_tasks_cancel_does_not_require_related_task_metadata [gw0] [ 27%] SKIPPED tests/experimental/tasks/test_spec_compliance.py::TestTaskManagement::test_tasks_cancel_does_not_require_related_task_metadata tests/experimental/tasks/test_spec_compliance.py::TestResultHandling::test_create_task_result_returned_immediately [gw0] [ 27%] SKIPPED tests/experimental/tasks/test_spec_compliance.py::TestResultHandling::test_create_task_result_returned_immediately tests/experimental/tasks/test_spec_compliance.py::TestResultHandling::test_tasks_result_matches_underlying_result_structure [gw0] [ 27%] SKIPPED tests/experimental/tasks/test_spec_compliance.py::TestResultHandling::test_tasks_result_matches_underlying_result_structure tests/experimental/tasks/test_spec_compliance.py::TestResultHandling::test_tasks_result_for_tool_call_returns_call_tool_result [gw0] [ 27%] SKIPPED tests/experimental/tasks/test_spec_compliance.py::TestResultHandling::test_tasks_result_for_tool_call_returns_call_tool_result tests/experimental/tasks/test_spec_compliance.py::TestProgressTracking::test_progress_token_valid_throughout_task_lifetime [gw0] [ 27%] SKIPPED tests/experimental/tasks/test_spec_compliance.py::TestProgressTracking::test_progress_token_valid_throughout_task_lifetime tests/experimental/tasks/test_spec_compliance.py::TestProgressTracking::test_progress_notifications_sent_during_task_execution [gw0] [ 28%] SKIPPED tests/experimental/tasks/test_spec_compliance.py::TestProgressTracking::test_progress_notifications_sent_during_task_execution tests/experimental/tasks/test_spec_compliance.py::TestProtocolErrors::test_invalid_request_for_required_task_augmentation [gw0] [ 28%] SKIPPED tests/experimental/tasks/test_spec_compliance.py::TestProtocolErrors::test_invalid_request_for_required_task_augmentation tests/experimental/tasks/test_spec_compliance.py::TestProtocolErrors::test_invalid_params_for_invalid_task_id [gw0] [ 28%] SKIPPED tests/experimental/tasks/test_spec_compliance.py::TestProtocolErrors::test_invalid_params_for_invalid_task_id tests/experimental/tasks/test_spec_compliance.py::TestProtocolErrors::test_invalid_params_for_nonexistent_task_id [gw0] [ 28%] SKIPPED tests/experimental/tasks/test_spec_compliance.py::TestProtocolErrors::test_invalid_params_for_nonexistent_task_id tests/experimental/tasks/test_spec_compliance.py::TestProtocolErrors::test_invalid_params_for_invalid_cursor [gw0] [ 28%] SKIPPED tests/experimental/tasks/test_spec_compliance.py::TestProtocolErrors::test_invalid_params_for_invalid_cursor tests/experimental/tasks/test_spec_compliance.py::TestProtocolErrors::test_invalid_params_for_cancel_terminal_task [gw0] [ 28%] SKIPPED tests/experimental/tasks/test_spec_compliance.py::TestProtocolErrors::test_invalid_params_for_cancel_terminal_task tests/experimental/tasks/test_spec_compliance.py::TestProtocolErrors::test_internal_error_for_server_failure [gw0] [ 28%] SKIPPED tests/experimental/tasks/test_spec_compliance.py::TestProtocolErrors::test_internal_error_for_server_failure tests/experimental/tasks/test_spec_compliance.py::TestTaskExecutionErrors::test_underlying_failure_moves_task_to_failed [gw0] [ 28%] SKIPPED tests/experimental/tasks/test_spec_compliance.py::TestTaskExecutionErrors::test_underlying_failure_moves_task_to_failed tests/experimental/tasks/test_spec_compliance.py::TestTaskExecutionErrors::test_failed_task_has_status_message [gw0] [ 28%] SKIPPED tests/experimental/tasks/test_spec_compliance.py::TestTaskExecutionErrors::test_failed_task_has_status_message tests/experimental/tasks/test_spec_compliance.py::TestTaskExecutionErrors::test_tasks_result_returns_underlying_error [gw0] [ 28%] SKIPPED tests/experimental/tasks/test_spec_compliance.py::TestTaskExecutionErrors::test_tasks_result_returns_underlying_error tests/experimental/tasks/test_spec_compliance.py::TestTaskExecutionErrors::test_tool_call_is_error_true_moves_to_failed [gw0] [ 28%] SKIPPED tests/experimental/tasks/test_spec_compliance.py::TestTaskExecutionErrors::test_tool_call_is_error_true_moves_to_failed tests/experimental/tasks/test_spec_compliance.py::TestTaskObject::test_task_has_task_id_string [gw0] [ 28%] SKIPPED tests/experimental/tasks/test_spec_compliance.py::TestTaskObject::test_task_has_task_id_string tests/experimental/tasks/test_spec_compliance.py::TestTaskObject::test_task_has_status [gw0] [ 29%] SKIPPED tests/experimental/tasks/test_spec_compliance.py::TestTaskObject::test_task_has_status tests/experimental/tasks/test_spec_compliance.py::TestTaskObject::test_task_status_message_is_optional [gw0] [ 29%] SKIPPED tests/experimental/tasks/test_spec_compliance.py::TestTaskObject::test_task_status_message_is_optional tests/experimental/tasks/test_spec_compliance.py::TestTaskObject::test_task_has_created_at [gw0] [ 29%] SKIPPED tests/experimental/tasks/test_spec_compliance.py::TestTaskObject::test_task_has_created_at tests/experimental/tasks/test_spec_compliance.py::TestTaskObject::test_task_ttl_is_optional [gw0] [ 29%] SKIPPED tests/experimental/tasks/test_spec_compliance.py::TestTaskObject::test_task_ttl_is_optional tests/experimental/tasks/test_spec_compliance.py::TestTaskObject::test_task_poll_interval_is_optional [gw0] [ 29%] SKIPPED tests/experimental/tasks/test_spec_compliance.py::TestTaskObject::test_task_poll_interval_is_optional tests/experimental/tasks/test_spec_compliance.py::TestRelatedTaskMetadata::test_related_task_metadata_structure [gw0] [ 29%] SKIPPED tests/experimental/tasks/test_spec_compliance.py::TestRelatedTaskMetadata::test_related_task_metadata_structure tests/experimental/tasks/test_spec_compliance.py::TestRelatedTaskMetadata::test_related_task_metadata_contains_task_id [gw0] [ 29%] SKIPPED tests/experimental/tasks/test_spec_compliance.py::TestRelatedTaskMetadata::test_related_task_metadata_contains_task_id tests/experimental/tasks/test_spec_compliance.py::TestAccessAndIsolation::test_task_bound_to_authorization_context [gw0] [ 29%] SKIPPED tests/experimental/tasks/test_spec_compliance.py::TestAccessAndIsolation::test_task_bound_to_authorization_context tests/experimental/tasks/test_spec_compliance.py::TestAccessAndIsolation::test_reject_task_operations_outside_authorization_context [gw0] [ 29%] SKIPPED tests/experimental/tasks/test_spec_compliance.py::TestAccessAndIsolation::test_reject_task_operations_outside_authorization_context tests/experimental/tasks/test_spec_compliance.py::TestAccessAndIsolation::test_non_authorized_environments_use_secure_ids [gw0] [ 29%] SKIPPED tests/experimental/tasks/test_spec_compliance.py::TestAccessAndIsolation::test_non_authorized_environments_use_secure_ids tests/experimental/tasks/test_spec_compliance.py::TestAccessAndIsolation::test_non_authorized_environments_use_shorter_ttls [gw0] [ 29%] SKIPPED tests/experimental/tasks/test_spec_compliance.py::TestAccessAndIsolation::test_non_authorized_environments_use_shorter_ttls tests/experimental/tasks/test_spec_compliance.py::TestResourceLimits::test_concurrent_task_limit_enforced [gw0] [ 29%] SKIPPED tests/experimental/tasks/test_spec_compliance.py::TestResourceLimits::test_concurrent_task_limit_enforced tests/experimental/tasks/test_spec_compliance.py::TestResourceLimits::test_maximum_ttl_constraint_enforced [gw0] [ 30%] SKIPPED tests/experimental/tasks/test_spec_compliance.py::TestResourceLimits::test_maximum_ttl_constraint_enforced tests/experimental/tasks/test_spec_compliance.py::TestResourceLimits::test_expired_tasks_cleaned_up [gw0] [ 30%] SKIPPED tests/experimental/tasks/test_spec_compliance.py::TestResourceLimits::test_expired_tasks_cleaned_up tests/issues/test_100_tool_listing.py::test_list_tools_returns_all_tools [gw0] [ 30%] FAILED tests/issues/test_100_tool_listing.py::test_list_tools_returns_all_tools tests/issues/test_1027_win_unreachable_cleanup.py::test_lifespan_cleanup_executed [gw0] [ 30%] PASSED tests/issues/test_1027_win_unreachable_cleanup.py::test_lifespan_cleanup_executed tests/issues/test_1027_win_unreachable_cleanup.py::test_stdin_close_triggers_cleanup [gw0] [ 30%] PASSED tests/issues/test_1027_win_unreachable_cleanup.py::test_stdin_close_triggers_cleanup tests/issues/test_129_resource_templates.py::test_resource_templates [gw0] [ 30%] FAILED tests/issues/test_129_resource_templates.py::test_resource_templates tests/issues/test_1338_icons_and_metadata.py::test_icons_and_website_url [gw0] [ 30%] FAILED tests/issues/test_1338_icons_and_metadata.py::test_icons_and_website_url tests/issues/test_1338_icons_and_metadata.py::test_multiple_icons [gw0] [ 30%] FAILED tests/issues/test_1338_icons_and_metadata.py::test_multiple_icons tests/issues/test_1338_icons_and_metadata.py::test_no_icons_or_website [gw0] [ 30%] FAILED tests/issues/test_1338_icons_and_metadata.py::test_no_icons_or_website tests/issues/test_1363_race_condition_streamable_http.py::test_race_condition_invalid_accept_headers [gw0] [ 30%] PASSED tests/issues/test_1363_race_condition_streamable_http.py::test_race_condition_invalid_accept_headers tests/issues/test_1363_race_condition_streamable_http.py::test_race_condition_invalid_content_type [gw0] [ 30%] PASSED tests/issues/test_1363_race_condition_streamable_http.py::test_race_condition_invalid_content_type tests/issues/test_1363_race_condition_streamable_http.py::test_race_condition_message_router_async_for [gw0] [ 30%] PASSED tests/issues/test_1363_race_condition_streamable_http.py::test_race_condition_message_router_async_for tests/issues/test_141_resource_templates.py::test_resource_template_edge_cases [gw0] [ 30%] FAILED tests/issues/test_141_resource_templates.py::test_resource_template_edge_cases tests/issues/test_141_resource_templates.py::test_resource_template_client_interaction [gw0] [ 31%] FAILED tests/issues/test_141_resource_templates.py::test_resource_template_client_interaction tests/issues/test_152_resource_mime_type.py::test_fastmcp_resource_mime_type [gw0] [ 31%] FAILED tests/issues/test_152_resource_mime_type.py::test_fastmcp_resource_mime_type tests/issues/test_152_resource_mime_type.py::test_lowlevel_resource_mime_type [gw0] [ 31%] PASSED tests/issues/test_152_resource_mime_type.py::test_lowlevel_resource_mime_type tests/issues/test_1754_mime_type_parameters.py::test_mime_type_with_parameters [gw0] [ 31%] FAILED tests/issues/test_1754_mime_type_parameters.py::test_mime_type_with_parameters tests/issues/test_1754_mime_type_parameters.py::test_mime_type_with_parameters_and_space [gw0] [ 31%] FAILED tests/issues/test_1754_mime_type_parameters.py::test_mime_type_with_parameters_and_space tests/issues/test_1754_mime_type_parameters.py::test_mime_type_with_multiple_parameters [gw0] [ 31%] FAILED tests/issues/test_1754_mime_type_parameters.py::test_mime_type_with_multiple_parameters tests/issues/test_1754_mime_type_parameters.py::test_mime_type_preserved_in_read_resource [gw0] [ 31%] FAILED tests/issues/test_1754_mime_type_parameters.py::test_mime_type_preserved_in_read_resource tests/issues/test_176_progress_token.py::test_progress_token_zero_first_call [gw0] [ 31%] PASSED tests/issues/test_176_progress_token.py::test_progress_token_zero_first_call tests/issues/test_188_concurrency.py::test_messages_are_executed_concurrently_tools [gw0] [ 31%] FAILED tests/issues/test_188_concurrency.py::test_messages_are_executed_concurrently_tools tests/issues/test_188_concurrency.py::test_messages_are_executed_concurrently_tools_and_resources [gw0] [ 31%] FAILED tests/issues/test_188_concurrency.py::test_messages_are_executed_concurrently_tools_and_resources tests/issues/test_192_request_id.py::test_request_id_match [gw0] [ 31%] PASSED tests/issues/test_192_request_id.py::test_request_id_match tests/issues/test_342_base64_encoding.py::test_server_base64_encoding_issue [gw0] [ 31%] PASSED tests/issues/test_342_base64_encoding.py::test_server_base64_encoding_issue tests/issues/test_552_windows_hang.py::test_windows_stdio_client_with_session [gw0] [ 32%] SKIPPED tests/issues/test_552_windows_hang.py::test_windows_stdio_client_with_session tests/issues/test_88_random_error.py::test_notification_validation_error [gw0] [ 32%] PASSED tests/issues/test_88_random_error.py::test_notification_validation_error tests/issues/test_malformed_input.py::test_malformed_initialize_request_does_not_crash_server [gw0] [ 32%] PASSED tests/issues/test_malformed_input.py::test_malformed_initialize_request_does_not_crash_server tests/issues/test_malformed_input.py::test_multiple_concurrent_malformed_requests [gw0] [ 32%] PASSED tests/issues/test_malformed_input.py::test_multiple_concurrent_malformed_requests tests/server/auth/middleware/test_auth_context.py::TestAuthContextMiddleware::test_with_authenticated_user [gw0] [ 32%] PASSED tests/server/auth/middleware/test_auth_context.py::TestAuthContextMiddleware::test_with_authenticated_user tests/server/auth/middleware/test_auth_context.py::TestAuthContextMiddleware::test_with_no_user [gw0] [ 32%] PASSED tests/server/auth/middleware/test_auth_context.py::TestAuthContextMiddleware::test_with_no_user tests/server/auth/middleware/test_bearer_auth.py::TestBearerAuthBackend::test_no_auth_header [gw0] [ 32%] PASSED tests/server/auth/middleware/test_bearer_auth.py::TestBearerAuthBackend::test_no_auth_header tests/server/auth/middleware/test_bearer_auth.py::TestBearerAuthBackend::test_non_bearer_auth_header [gw0] [ 32%] PASSED tests/server/auth/middleware/test_bearer_auth.py::TestBearerAuthBackend::test_non_bearer_auth_header tests/server/auth/middleware/test_bearer_auth.py::TestBearerAuthBackend::test_invalid_token [gw0] [ 32%] PASSED tests/server/auth/middleware/test_bearer_auth.py::TestBearerAuthBackend::test_invalid_token tests/server/auth/middleware/test_bearer_auth.py::TestBearerAuthBackend::test_expired_token [gw0] [ 32%] PASSED tests/server/auth/middleware/test_bearer_auth.py::TestBearerAuthBackend::test_expired_token tests/server/auth/middleware/test_bearer_auth.py::TestBearerAuthBackend::test_valid_token [gw0] [ 32%] PASSED tests/server/auth/middleware/test_bearer_auth.py::TestBearerAuthBackend::test_valid_token tests/server/auth/middleware/test_bearer_auth.py::TestBearerAuthBackend::test_token_without_expiry [gw0] [ 32%] PASSED tests/server/auth/middleware/test_bearer_auth.py::TestBearerAuthBackend::test_token_without_expiry tests/server/auth/middleware/test_bearer_auth.py::TestBearerAuthBackend::test_lowercase_bearer_prefix [gw0] [ 33%] PASSED tests/server/auth/middleware/test_bearer_auth.py::TestBearerAuthBackend::test_lowercase_bearer_prefix tests/server/auth/middleware/test_bearer_auth.py::TestBearerAuthBackend::test_mixed_case_bearer_prefix [gw0] [ 33%] PASSED tests/server/auth/middleware/test_bearer_auth.py::TestBearerAuthBackend::test_mixed_case_bearer_prefix tests/server/auth/middleware/test_bearer_auth.py::TestBearerAuthBackend::test_mixed_case_authorization_header [gw0] [ 33%] PASSED tests/server/auth/middleware/test_bearer_auth.py::TestBearerAuthBackend::test_mixed_case_authorization_header tests/server/auth/middleware/test_bearer_auth.py::TestRequireAuthMiddleware::test_no_user [gw0] [ 33%] PASSED tests/server/auth/middleware/test_bearer_auth.py::TestRequireAuthMiddleware::test_no_user tests/server/auth/middleware/test_bearer_auth.py::TestRequireAuthMiddleware::test_non_authenticated_user [gw0] [ 33%] PASSED tests/server/auth/middleware/test_bearer_auth.py::TestRequireAuthMiddleware::test_non_authenticated_user tests/server/auth/middleware/test_bearer_auth.py::TestRequireAuthMiddleware::test_missing_required_scope [gw0] [ 33%] PASSED tests/server/auth/middleware/test_bearer_auth.py::TestRequireAuthMiddleware::test_missing_required_scope tests/server/auth/middleware/test_bearer_auth.py::TestRequireAuthMiddleware::test_no_auth_credentials [gw0] [ 33%] PASSED tests/server/auth/middleware/test_bearer_auth.py::TestRequireAuthMiddleware::test_no_auth_credentials tests/server/auth/middleware/test_bearer_auth.py::TestRequireAuthMiddleware::test_has_required_scopes [gw0] [ 33%] PASSED tests/server/auth/middleware/test_bearer_auth.py::TestRequireAuthMiddleware::test_has_required_scopes tests/server/auth/middleware/test_bearer_auth.py::TestRequireAuthMiddleware::test_multiple_required_scopes [gw0] [ 33%] PASSED tests/server/auth/middleware/test_bearer_auth.py::TestRequireAuthMiddleware::test_multiple_required_scopes tests/server/auth/middleware/test_bearer_auth.py::TestRequireAuthMiddleware::test_no_required_scopes [gw0] [ 33%] PASSED tests/server/auth/middleware/test_bearer_auth.py::TestRequireAuthMiddleware::test_no_required_scopes tests/server/auth/test_error_handling.py::TestRegistrationErrorHandling::test_registration_error_handling [gw0] [ 33%] PASSED tests/server/auth/test_error_handling.py::TestRegistrationErrorHandling::test_registration_error_handling tests/server/auth/test_error_handling.py::TestAuthorizeErrorHandling::test_authorize_error_handling [gw0] [ 33%] PASSED tests/server/auth/test_error_handling.py::TestAuthorizeErrorHandling::test_authorize_error_handling tests/server/auth/test_error_handling.py::TestTokenErrorHandling::test_token_error_handling_auth_code [gw0] [ 33%] PASSED tests/server/auth/test_error_handling.py::TestTokenErrorHandling::test_token_error_handling_auth_code tests/server/auth/test_error_handling.py::TestTokenErrorHandling::test_token_error_handling_refresh_token [gw0] [ 34%] PASSED tests/server/auth/test_error_handling.py::TestTokenErrorHandling::test_token_error_handling_refresh_token tests/server/auth/test_protected_resource.py::test_metadata_endpoint_with_path [gw0] [ 34%] PASSED tests/server/auth/test_protected_resource.py::test_metadata_endpoint_with_path tests/server/auth/test_protected_resource.py::test_metadata_endpoint_root_path_returns_404 [gw0] [ 34%] PASSED tests/server/auth/test_protected_resource.py::test_metadata_endpoint_root_path_returns_404 tests/server/auth/test_protected_resource.py::test_metadata_endpoint_without_path [gw0] [ 34%] PASSED tests/server/auth/test_protected_resource.py::test_metadata_endpoint_without_path tests/server/auth/test_protected_resource.py::TestMetadataUrlConstruction::test_url_without_path [gw0] [ 34%] PASSED tests/server/auth/test_protected_resource.py::TestMetadataUrlConstruction::test_url_without_path tests/server/auth/test_protected_resource.py::TestMetadataUrlConstruction::test_url_with_path_component [gw0] [ 34%] PASSED tests/server/auth/test_protected_resource.py::TestMetadataUrlConstruction::test_url_with_path_component tests/server/auth/test_protected_resource.py::TestMetadataUrlConstruction::test_url_with_trailing_slash_only [gw0] [ 34%] PASSED tests/server/auth/test_protected_resource.py::TestMetadataUrlConstruction::test_url_with_trailing_slash_only tests/server/auth/test_protected_resource.py::TestMetadataUrlConstruction::test_various_resource_configurations[https://example.com-https://example.com/.well-known/oauth-protected-resource] [gw0] [ 34%] PASSED tests/server/auth/test_protected_resource.py::TestMetadataUrlConstruction::test_various_resource_configurations[https://example.com-https://example.com/.well-known/oauth-protected-resource] tests/server/auth/test_protected_resource.py::TestMetadataUrlConstruction::test_various_resource_configurations[https://example.com/-https://example.com/.well-known/oauth-protected-resource] [gw0] [ 34%] PASSED tests/server/auth/test_protected_resource.py::TestMetadataUrlConstruction::test_various_resource_configurations[https://example.com/-https://example.com/.well-known/oauth-protected-resource] tests/server/auth/test_protected_resource.py::TestMetadataUrlConstruction::test_various_resource_configurations[https://example.com/mcp-https://example.com/.well-known/oauth-protected-resource/mcp] [gw0] [ 34%] PASSED tests/server/auth/test_protected_resource.py::TestMetadataUrlConstruction::test_various_resource_configurations[https://example.com/mcp-https://example.com/.well-known/oauth-protected-resource/mcp] tests/server/auth/test_protected_resource.py::TestMetadataUrlConstruction::test_various_resource_configurations[http://localhost:8001/mcp-http://localhost:8001/.well-known/oauth-protected-resource/mcp] [gw0] [ 34%] PASSED tests/server/auth/test_protected_resource.py::TestMetadataUrlConstruction::test_various_resource_configurations[http://localhost:8001/mcp-http://localhost:8001/.well-known/oauth-protected-resource/mcp] tests/server/auth/test_protected_resource.py::TestRouteConsistency::test_route_path_matches_metadata_url [gw0] [ 34%] PASSED tests/server/auth/test_protected_resource.py::TestRouteConsistency::test_route_path_matches_metadata_url tests/server/auth/test_protected_resource.py::TestRouteConsistency::test_consistent_paths_for_various_resources[https://example.com-/.well-known/oauth-protected-resource] [gw0] [ 35%] PASSED tests/server/auth/test_protected_resource.py::TestRouteConsistency::test_consistent_paths_for_various_resources[https://example.com-/.well-known/oauth-protected-resource] tests/server/auth/test_protected_resource.py::TestRouteConsistency::test_consistent_paths_for_various_resources[https://example.com/-/.well-known/oauth-protected-resource] [gw0] [ 35%] PASSED tests/server/auth/test_protected_resource.py::TestRouteConsistency::test_consistent_paths_for_various_resources[https://example.com/-/.well-known/oauth-protected-resource] tests/server/auth/test_protected_resource.py::TestRouteConsistency::test_consistent_paths_for_various_resources[https://example.com/mcp-/.well-known/oauth-protected-resource/mcp] [gw0] [ 35%] PASSED tests/server/auth/test_protected_resource.py::TestRouteConsistency::test_consistent_paths_for_various_resources[https://example.com/mcp-/.well-known/oauth-protected-resource/mcp] tests/server/auth/test_provider.py::TestConstructRedirectUri::test_construct_redirect_uri_no_existing_params [gw0] [ 35%] PASSED tests/server/auth/test_provider.py::TestConstructRedirectUri::test_construct_redirect_uri_no_existing_params tests/server/auth/test_provider.py::TestConstructRedirectUri::test_construct_redirect_uri_with_existing_params [gw0] [ 35%] PASSED tests/server/auth/test_provider.py::TestConstructRedirectUri::test_construct_redirect_uri_with_existing_params tests/server/auth/test_provider.py::TestConstructRedirectUri::test_construct_redirect_uri_multiple_existing_params [gw0] [ 35%] PASSED tests/server/auth/test_provider.py::TestConstructRedirectUri::test_construct_redirect_uri_multiple_existing_params tests/server/auth/test_provider.py::TestConstructRedirectUri::test_construct_redirect_uri_with_none_values [gw0] [ 35%] PASSED tests/server/auth/test_provider.py::TestConstructRedirectUri::test_construct_redirect_uri_with_none_values tests/server/auth/test_provider.py::TestConstructRedirectUri::test_construct_redirect_uri_empty_params [gw0] [ 35%] PASSED tests/server/auth/test_provider.py::TestConstructRedirectUri::test_construct_redirect_uri_empty_params tests/server/auth/test_provider.py::TestConstructRedirectUri::test_construct_redirect_uri_duplicate_param_names [gw0] [ 35%] PASSED tests/server/auth/test_provider.py::TestConstructRedirectUri::test_construct_redirect_uri_duplicate_param_names tests/server/auth/test_provider.py::TestConstructRedirectUri::test_construct_redirect_uri_multivalued_existing_params [gw0] [ 35%] PASSED tests/server/auth/test_provider.py::TestConstructRedirectUri::test_construct_redirect_uri_multivalued_existing_params tests/server/auth/test_provider.py::TestConstructRedirectUri::test_construct_redirect_uri_encoded_values [gw0] [ 35%] PASSED tests/server/auth/test_provider.py::TestConstructRedirectUri::test_construct_redirect_uri_encoded_values tests/server/fastmcp/auth/test_auth_integration.py::TestAuthEndpoints::test_metadata_endpoint [gw0] [ 35%] PASSED tests/server/fastmcp/auth/test_auth_integration.py::TestAuthEndpoints::test_metadata_endpoint tests/server/fastmcp/auth/test_auth_integration.py::TestAuthEndpoints::test_token_validation_error [gw0] [ 36%] PASSED tests/server/fastmcp/auth/test_auth_integration.py::TestAuthEndpoints::test_token_validation_error tests/server/fastmcp/auth/test_auth_integration.py::TestAuthEndpoints::test_token_invalid_auth_code [gw0] [ 36%] PASSED tests/server/fastmcp/auth/test_auth_integration.py::TestAuthEndpoints::test_token_invalid_auth_code tests/server/fastmcp/auth/test_auth_integration.py::TestAuthEndpoints::test_token_expired_auth_code [gw0] [ 36%] PASSED tests/server/fastmcp/auth/test_auth_integration.py::TestAuthEndpoints::test_token_expired_auth_code tests/server/fastmcp/auth/test_auth_integration.py::TestAuthEndpoints::test_token_redirect_uri_mismatch[registered_client0] [gw0] [ 36%] PASSED tests/server/fastmcp/auth/test_auth_integration.py::TestAuthEndpoints::test_token_redirect_uri_mismatch[registered_client0] tests/server/fastmcp/auth/test_auth_integration.py::TestAuthEndpoints::test_token_code_verifier_mismatch [gw0] [ 36%] PASSED tests/server/fastmcp/auth/test_auth_integration.py::TestAuthEndpoints::test_token_code_verifier_mismatch tests/server/fastmcp/auth/test_auth_integration.py::TestAuthEndpoints::test_token_invalid_refresh_token [gw0] [ 36%] PASSED tests/server/fastmcp/auth/test_auth_integration.py::TestAuthEndpoints::test_token_invalid_refresh_token tests/server/fastmcp/auth/test_auth_integration.py::TestAuthEndpoints::test_token_expired_refresh_token [gw0] [ 36%] PASSED tests/server/fastmcp/auth/test_auth_integration.py::TestAuthEndpoints::test_token_expired_refresh_token tests/server/fastmcp/auth/test_auth_integration.py::TestAuthEndpoints::test_token_invalid_scope [gw0] [ 36%] PASSED tests/server/fastmcp/auth/test_auth_integration.py::TestAuthEndpoints::test_token_invalid_scope tests/server/fastmcp/auth/test_auth_integration.py::TestAuthEndpoints::test_client_registration [gw0] [ 36%] PASSED tests/server/fastmcp/auth/test_auth_integration.py::TestAuthEndpoints::test_client_registration tests/server/fastmcp/auth/test_auth_integration.py::TestAuthEndpoints::test_client_registration_missing_required_fields [gw0] [ 36%] PASSED tests/server/fastmcp/auth/test_auth_integration.py::TestAuthEndpoints::test_client_registration_missing_required_fields tests/server/fastmcp/auth/test_auth_integration.py::TestAuthEndpoints::test_client_registration_invalid_uri [gw0] [ 36%] PASSED tests/server/fastmcp/auth/test_auth_integration.py::TestAuthEndpoints::test_client_registration_invalid_uri tests/server/fastmcp/auth/test_auth_integration.py::TestAuthEndpoints::test_client_registration_empty_redirect_uris [gw0] [ 36%] PASSED tests/server/fastmcp/auth/test_auth_integration.py::TestAuthEndpoints::test_client_registration_empty_redirect_uris tests/server/fastmcp/auth/test_auth_integration.py::TestAuthEndpoints::test_authorize_form_post [gw0] [ 36%] PASSED tests/server/fastmcp/auth/test_auth_integration.py::TestAuthEndpoints::test_authorize_form_post tests/server/fastmcp/auth/test_auth_integration.py::TestAuthEndpoints::test_authorization_get [gw0] [ 37%] PASSED tests/server/fastmcp/auth/test_auth_integration.py::TestAuthEndpoints::test_authorization_get tests/server/fastmcp/auth/test_auth_integration.py::TestAuthEndpoints::test_revoke_invalid_token [gw0] [ 37%] PASSED tests/server/fastmcp/auth/test_auth_integration.py::TestAuthEndpoints::test_revoke_invalid_token tests/server/fastmcp/auth/test_auth_integration.py::TestAuthEndpoints::test_revoke_with_malformed_token [gw0] [ 37%] PASSED tests/server/fastmcp/auth/test_auth_integration.py::TestAuthEndpoints::test_revoke_with_malformed_token tests/server/fastmcp/auth/test_auth_integration.py::TestAuthEndpoints::test_client_registration_disallowed_scopes [gw0] [ 37%] PASSED tests/server/fastmcp/auth/test_auth_integration.py::TestAuthEndpoints::test_client_registration_disallowed_scopes tests/server/fastmcp/auth/test_auth_integration.py::TestAuthEndpoints::test_client_registration_default_scopes [gw0] [ 37%] PASSED tests/server/fastmcp/auth/test_auth_integration.py::TestAuthEndpoints::test_client_registration_default_scopes tests/server/fastmcp/auth/test_auth_integration.py::TestAuthEndpoints::test_client_registration_invalid_grant_type [gw0] [ 37%] PASSED tests/server/fastmcp/auth/test_auth_integration.py::TestAuthEndpoints::test_client_registration_invalid_grant_type tests/server/fastmcp/auth/test_auth_integration.py::TestAuthEndpoints::test_client_registration_with_additional_grant_type [gw0] [ 37%] PASSED tests/server/fastmcp/auth/test_auth_integration.py::TestAuthEndpoints::test_client_registration_with_additional_grant_type tests/server/fastmcp/auth/test_auth_integration.py::TestAuthEndpoints::test_client_registration_with_additional_response_types [gw0] [ 37%] PASSED tests/server/fastmcp/auth/test_auth_integration.py::TestAuthEndpoints::test_client_registration_with_additional_response_types tests/server/fastmcp/auth/test_auth_integration.py::TestAuthEndpoints::test_client_registration_response_types_without_code [gw0] [ 37%] PASSED tests/server/fastmcp/auth/test_auth_integration.py::TestAuthEndpoints::test_client_registration_response_types_without_code tests/server/fastmcp/auth/test_auth_integration.py::TestAuthEndpoints::test_client_registration_default_response_types [gw0] [ 37%] PASSED tests/server/fastmcp/auth/test_auth_integration.py::TestAuthEndpoints::test_client_registration_default_response_types tests/server/fastmcp/auth/test_auth_integration.py::TestAuthEndpoints::test_client_secret_basic_authentication [gw0] [ 37%] PASSED tests/server/fastmcp/auth/test_auth_integration.py::TestAuthEndpoints::test_client_secret_basic_authentication tests/server/fastmcp/auth/test_auth_integration.py::TestAuthEndpoints::test_wrong_auth_method_without_valid_credentials_fails [gw0] [ 37%] PASSED tests/server/fastmcp/auth/test_auth_integration.py::TestAuthEndpoints::test_wrong_auth_method_without_valid_credentials_fails tests/server/fastmcp/auth/test_auth_integration.py::TestAuthEndpoints::test_basic_auth_without_header_fails [gw0] [ 38%] PASSED tests/server/fastmcp/auth/test_auth_integration.py::TestAuthEndpoints::test_basic_auth_without_header_fails tests/server/fastmcp/auth/test_auth_integration.py::TestAuthEndpoints::test_basic_auth_invalid_base64_fails [gw0] [ 38%] PASSED tests/server/fastmcp/auth/test_auth_integration.py::TestAuthEndpoints::test_basic_auth_invalid_base64_fails tests/server/fastmcp/auth/test_auth_integration.py::TestAuthEndpoints::test_basic_auth_no_colon_fails [gw0] [ 38%] PASSED tests/server/fastmcp/auth/test_auth_integration.py::TestAuthEndpoints::test_basic_auth_no_colon_fails tests/server/fastmcp/auth/test_auth_integration.py::TestAuthEndpoints::test_basic_auth_client_id_mismatch_fails [gw0] [ 38%] PASSED tests/server/fastmcp/auth/test_auth_integration.py::TestAuthEndpoints::test_basic_auth_client_id_mismatch_fails tests/server/fastmcp/auth/test_auth_integration.py::TestAuthEndpoints::test_none_auth_method_public_client [gw0] [ 38%] PASSED tests/server/fastmcp/auth/test_auth_integration.py::TestAuthEndpoints::test_none_auth_method_public_client tests/server/fastmcp/auth/test_auth_integration.py::TestAuthorizeEndpointErrors::test_authorize_missing_client_id [gw0] [ 38%] PASSED tests/server/fastmcp/auth/test_auth_integration.py::TestAuthorizeEndpointErrors::test_authorize_missing_client_id tests/server/fastmcp/auth/test_auth_integration.py::TestAuthorizeEndpointErrors::test_authorize_invalid_client_id [gw0] [ 38%] PASSED tests/server/fastmcp/auth/test_auth_integration.py::TestAuthorizeEndpointErrors::test_authorize_invalid_client_id tests/server/fastmcp/auth/test_auth_integration.py::TestAuthorizeEndpointErrors::test_authorize_missing_redirect_uri [gw0] [ 38%] PASSED tests/server/fastmcp/auth/test_auth_integration.py::TestAuthorizeEndpointErrors::test_authorize_missing_redirect_uri tests/server/fastmcp/auth/test_auth_integration.py::TestAuthorizeEndpointErrors::test_authorize_invalid_redirect_uri [gw0] [ 38%] PASSED tests/server/fastmcp/auth/test_auth_integration.py::TestAuthorizeEndpointErrors::test_authorize_invalid_redirect_uri tests/server/fastmcp/auth/test_auth_integration.py::TestAuthorizeEndpointErrors::test_authorize_missing_redirect_uri_multiple_registered[registered_client0] [gw0] [ 38%] PASSED tests/server/fastmcp/auth/test_auth_integration.py::TestAuthorizeEndpointErrors::test_authorize_missing_redirect_uri_multiple_registered[registered_client0] tests/server/fastmcp/auth/test_auth_integration.py::TestAuthorizeEndpointErrors::test_authorize_unsupported_response_type [gw0] [ 38%] PASSED tests/server/fastmcp/auth/test_auth_integration.py::TestAuthorizeEndpointErrors::test_authorize_unsupported_response_type tests/server/fastmcp/auth/test_auth_integration.py::TestAuthorizeEndpointErrors::test_authorize_missing_response_type [gw0] [ 38%] PASSED tests/server/fastmcp/auth/test_auth_integration.py::TestAuthorizeEndpointErrors::test_authorize_missing_response_type tests/server/fastmcp/auth/test_auth_integration.py::TestAuthorizeEndpointErrors::test_authorize_missing_pkce_challenge [gw0] [ 39%] PASSED tests/server/fastmcp/auth/test_auth_integration.py::TestAuthorizeEndpointErrors::test_authorize_missing_pkce_challenge tests/server/fastmcp/auth/test_auth_integration.py::TestAuthorizeEndpointErrors::test_authorize_invalid_scope [gw0] [ 39%] PASSED tests/server/fastmcp/auth/test_auth_integration.py::TestAuthorizeEndpointErrors::test_authorize_invalid_scope tests/server/fastmcp/prompts/test_base.py::TestRenderPrompt::test_basic_fn [gw0] [ 39%] PASSED tests/server/fastmcp/prompts/test_base.py::TestRenderPrompt::test_basic_fn tests/server/fastmcp/prompts/test_base.py::TestRenderPrompt::test_async_fn [gw0] [ 39%] PASSED tests/server/fastmcp/prompts/test_base.py::TestRenderPrompt::test_async_fn tests/server/fastmcp/prompts/test_base.py::TestRenderPrompt::test_fn_with_args [gw0] [ 39%] PASSED tests/server/fastmcp/prompts/test_base.py::TestRenderPrompt::test_fn_with_args tests/server/fastmcp/prompts/test_base.py::TestRenderPrompt::test_fn_with_invalid_kwargs [gw0] [ 39%] PASSED tests/server/fastmcp/prompts/test_base.py::TestRenderPrompt::test_fn_with_invalid_kwargs tests/server/fastmcp/prompts/test_base.py::TestRenderPrompt::test_fn_returns_message [gw0] [ 39%] PASSED tests/server/fastmcp/prompts/test_base.py::TestRenderPrompt::test_fn_returns_message tests/server/fastmcp/prompts/test_base.py::TestRenderPrompt::test_fn_returns_assistant_message [gw0] [ 39%] PASSED tests/server/fastmcp/prompts/test_base.py::TestRenderPrompt::test_fn_returns_assistant_message tests/server/fastmcp/prompts/test_base.py::TestRenderPrompt::test_fn_returns_multiple_messages [gw0] [ 39%] PASSED tests/server/fastmcp/prompts/test_base.py::TestRenderPrompt::test_fn_returns_multiple_messages tests/server/fastmcp/prompts/test_base.py::TestRenderPrompt::test_fn_returns_list_of_strings [gw0] [ 39%] PASSED tests/server/fastmcp/prompts/test_base.py::TestRenderPrompt::test_fn_returns_list_of_strings tests/server/fastmcp/prompts/test_base.py::TestRenderPrompt::test_fn_returns_resource_content [gw0] [ 39%] PASSED tests/server/fastmcp/prompts/test_base.py::TestRenderPrompt::test_fn_returns_resource_content tests/server/fastmcp/prompts/test_base.py::TestRenderPrompt::test_fn_returns_mixed_content [gw0] [ 39%] PASSED tests/server/fastmcp/prompts/test_base.py::TestRenderPrompt::test_fn_returns_mixed_content tests/server/fastmcp/prompts/test_base.py::TestRenderPrompt::test_fn_returns_dict_with_resource [gw0] [ 39%] PASSED tests/server/fastmcp/prompts/test_base.py::TestRenderPrompt::test_fn_returns_dict_with_resource tests/server/fastmcp/prompts/test_manager.py::TestPromptManager::test_add_prompt [gw0] [ 40%] PASSED tests/server/fastmcp/prompts/test_manager.py::TestPromptManager::test_add_prompt tests/server/fastmcp/prompts/test_manager.py::TestPromptManager::test_add_duplicate_prompt [gw0] [ 40%] PASSED tests/server/fastmcp/prompts/test_manager.py::TestPromptManager::test_add_duplicate_prompt tests/server/fastmcp/prompts/test_manager.py::TestPromptManager::test_disable_warn_on_duplicate_prompts [gw0] [ 40%] PASSED tests/server/fastmcp/prompts/test_manager.py::TestPromptManager::test_disable_warn_on_duplicate_prompts tests/server/fastmcp/prompts/test_manager.py::TestPromptManager::test_list_prompts [gw0] [ 40%] PASSED tests/server/fastmcp/prompts/test_manager.py::TestPromptManager::test_list_prompts tests/server/fastmcp/prompts/test_manager.py::TestPromptManager::test_render_prompt [gw0] [ 40%] PASSED tests/server/fastmcp/prompts/test_manager.py::TestPromptManager::test_render_prompt tests/server/fastmcp/prompts/test_manager.py::TestPromptManager::test_render_prompt_with_args [gw0] [ 40%] PASSED tests/server/fastmcp/prompts/test_manager.py::TestPromptManager::test_render_prompt_with_args tests/server/fastmcp/prompts/test_manager.py::TestPromptManager::test_render_unknown_prompt [gw0] [ 40%] PASSED tests/server/fastmcp/prompts/test_manager.py::TestPromptManager::test_render_unknown_prompt tests/server/fastmcp/prompts/test_manager.py::TestPromptManager::test_render_prompt_with_missing_args [gw0] [ 40%] PASSED tests/server/fastmcp/prompts/test_manager.py::TestPromptManager::test_render_prompt_with_missing_args tests/server/fastmcp/resources/test_file_resources.py::TestFileResource::test_file_resource_creation [gw0] [ 40%] PASSED tests/server/fastmcp/resources/test_file_resources.py::TestFileResource::test_file_resource_creation tests/server/fastmcp/resources/test_file_resources.py::TestFileResource::test_file_resource_str_path_conversion [gw0] [ 40%] PASSED tests/server/fastmcp/resources/test_file_resources.py::TestFileResource::test_file_resource_str_path_conversion tests/server/fastmcp/resources/test_file_resources.py::TestFileResource::test_read_text_file [gw0] [ 40%] PASSED tests/server/fastmcp/resources/test_file_resources.py::TestFileResource::test_read_text_file tests/server/fastmcp/resources/test_file_resources.py::TestFileResource::test_read_binary_file [gw0] [ 40%] PASSED tests/server/fastmcp/resources/test_file_resources.py::TestFileResource::test_read_binary_file tests/server/fastmcp/resources/test_file_resources.py::TestFileResource::test_relative_path_error [gw0] [ 41%] PASSED tests/server/fastmcp/resources/test_file_resources.py::TestFileResource::test_relative_path_error tests/server/fastmcp/resources/test_file_resources.py::TestFileResource::test_missing_file_error [gw0] [ 41%] PASSED tests/server/fastmcp/resources/test_file_resources.py::TestFileResource::test_missing_file_error tests/server/fastmcp/resources/test_file_resources.py::TestFileResource::test_permission_error [gw0] [ 41%] PASSED tests/server/fastmcp/resources/test_file_resources.py::TestFileResource::test_permission_error tests/server/fastmcp/resources/test_function_resources.py::TestFunctionResource::test_function_resource_creation [gw0] [ 41%] PASSED tests/server/fastmcp/resources/test_function_resources.py::TestFunctionResource::test_function_resource_creation tests/server/fastmcp/resources/test_function_resources.py::TestFunctionResource::test_read_text [gw0] [ 41%] PASSED tests/server/fastmcp/resources/test_function_resources.py::TestFunctionResource::test_read_text tests/server/fastmcp/resources/test_function_resources.py::TestFunctionResource::test_read_binary [gw0] [ 41%] PASSED tests/server/fastmcp/resources/test_function_resources.py::TestFunctionResource::test_read_binary tests/server/fastmcp/resources/test_function_resources.py::TestFunctionResource::test_json_conversion [gw0] [ 41%] PASSED tests/server/fastmcp/resources/test_function_resources.py::TestFunctionResource::test_json_conversion tests/server/fastmcp/resources/test_function_resources.py::TestFunctionResource::test_error_handling [gw0] [ 41%] PASSED tests/server/fastmcp/resources/test_function_resources.py::TestFunctionResource::test_error_handling tests/server/fastmcp/resources/test_function_resources.py::TestFunctionResource::test_basemodel_conversion [gw0] [ 41%] PASSED tests/server/fastmcp/resources/test_function_resources.py::TestFunctionResource::test_basemodel_conversion tests/server/fastmcp/resources/test_function_resources.py::TestFunctionResource::test_custom_type_conversion [gw0] [ 41%] PASSED tests/server/fastmcp/resources/test_function_resources.py::TestFunctionResource::test_custom_type_conversion tests/server/fastmcp/resources/test_function_resources.py::TestFunctionResource::test_async_read_text [gw0] [ 41%] PASSED tests/server/fastmcp/resources/test_function_resources.py::TestFunctionResource::test_async_read_text tests/server/fastmcp/resources/test_function_resources.py::TestFunctionResource::test_from_function [gw0] [ 41%] PASSED tests/server/fastmcp/resources/test_function_resources.py::TestFunctionResource::test_from_function tests/server/fastmcp/resources/test_function_resources.py::TestFunctionResourceMetadata::test_from_function_with_metadata [gw0] [ 42%] PASSED tests/server/fastmcp/resources/test_function_resources.py::TestFunctionResourceMetadata::test_from_function_with_metadata tests/server/fastmcp/resources/test_function_resources.py::TestFunctionResourceMetadata::test_from_function_without_metadata [gw0] [ 42%] PASSED tests/server/fastmcp/resources/test_function_resources.py::TestFunctionResourceMetadata::test_from_function_without_metadata tests/server/fastmcp/resources/test_resource_manager.py::TestResourceManager::test_add_resource [gw0] [ 42%] PASSED tests/server/fastmcp/resources/test_resource_manager.py::TestResourceManager::test_add_resource tests/server/fastmcp/resources/test_resource_manager.py::TestResourceManager::test_add_duplicate_resource [gw0] [ 42%] PASSED tests/server/fastmcp/resources/test_resource_manager.py::TestResourceManager::test_add_duplicate_resource tests/server/fastmcp/resources/test_resource_manager.py::TestResourceManager::test_warn_on_duplicate_resources [gw0] [ 42%] PASSED tests/server/fastmcp/resources/test_resource_manager.py::TestResourceManager::test_warn_on_duplicate_resources tests/server/fastmcp/resources/test_resource_manager.py::TestResourceManager::test_disable_warn_on_duplicate_resources [gw0] [ 42%] PASSED tests/server/fastmcp/resources/test_resource_manager.py::TestResourceManager::test_disable_warn_on_duplicate_resources tests/server/fastmcp/resources/test_resource_manager.py::TestResourceManager::test_get_resource [gw0] [ 42%] PASSED tests/server/fastmcp/resources/test_resource_manager.py::TestResourceManager::test_get_resource tests/server/fastmcp/resources/test_resource_manager.py::TestResourceManager::test_get_resource_from_template [gw0] [ 42%] PASSED tests/server/fastmcp/resources/test_resource_manager.py::TestResourceManager::test_get_resource_from_template tests/server/fastmcp/resources/test_resource_manager.py::TestResourceManager::test_get_unknown_resource [gw0] [ 42%] PASSED tests/server/fastmcp/resources/test_resource_manager.py::TestResourceManager::test_get_unknown_resource tests/server/fastmcp/resources/test_resource_manager.py::TestResourceManager::test_list_resources [gw0] [ 42%] PASSED tests/server/fastmcp/resources/test_resource_manager.py::TestResourceManager::test_list_resources tests/server/fastmcp/resources/test_resource_manager.py::TestResourceManagerMetadata::test_add_template_with_metadata [gw0] [ 42%] PASSED tests/server/fastmcp/resources/test_resource_manager.py::TestResourceManagerMetadata::test_add_template_with_metadata tests/server/fastmcp/resources/test_resource_manager.py::TestResourceManagerMetadata::test_add_template_without_metadata [gw0] [ 42%] PASSED tests/server/fastmcp/resources/test_resource_manager.py::TestResourceManagerMetadata::test_add_template_without_metadata tests/server/fastmcp/resources/test_resource_template.py::TestResourceTemplate::test_template_creation [gw0] [ 42%] PASSED tests/server/fastmcp/resources/test_resource_template.py::TestResourceTemplate::test_template_creation tests/server/fastmcp/resources/test_resource_template.py::TestResourceTemplate::test_template_matches [gw0] [ 43%] PASSED tests/server/fastmcp/resources/test_resource_template.py::TestResourceTemplate::test_template_matches tests/server/fastmcp/resources/test_resource_template.py::TestResourceTemplate::test_create_resource [gw0] [ 43%] PASSED tests/server/fastmcp/resources/test_resource_template.py::TestResourceTemplate::test_create_resource tests/server/fastmcp/resources/test_resource_template.py::TestResourceTemplate::test_template_error [gw0] [ 43%] PASSED tests/server/fastmcp/resources/test_resource_template.py::TestResourceTemplate::test_template_error tests/server/fastmcp/resources/test_resource_template.py::TestResourceTemplate::test_async_text_resource [gw0] [ 43%] PASSED tests/server/fastmcp/resources/test_resource_template.py::TestResourceTemplate::test_async_text_resource tests/server/fastmcp/resources/test_resource_template.py::TestResourceTemplate::test_async_binary_resource [gw0] [ 43%] PASSED tests/server/fastmcp/resources/test_resource_template.py::TestResourceTemplate::test_async_binary_resource tests/server/fastmcp/resources/test_resource_template.py::TestResourceTemplate::test_basemodel_conversion [gw0] [ 43%] PASSED tests/server/fastmcp/resources/test_resource_template.py::TestResourceTemplate::test_basemodel_conversion tests/server/fastmcp/resources/test_resource_template.py::TestResourceTemplate::test_custom_type_conversion [gw0] [ 43%] PASSED tests/server/fastmcp/resources/test_resource_template.py::TestResourceTemplate::test_custom_type_conversion tests/server/fastmcp/resources/test_resource_template.py::TestResourceTemplateAnnotations::test_template_with_annotations [gw0] [ 43%] PASSED tests/server/fastmcp/resources/test_resource_template.py::TestResourceTemplateAnnotations::test_template_with_annotations tests/server/fastmcp/resources/test_resource_template.py::TestResourceTemplateAnnotations::test_template_without_annotations [gw0] [ 43%] PASSED tests/server/fastmcp/resources/test_resource_template.py::TestResourceTemplateAnnotations::test_template_without_annotations tests/server/fastmcp/resources/test_resource_template.py::TestResourceTemplateAnnotations::test_template_annotations_in_fastmcp [gw0] [ 43%] FAILED tests/server/fastmcp/resources/test_resource_template.py::TestResourceTemplateAnnotations::test_template_annotations_in_fastmcp tests/server/fastmcp/resources/test_resource_template.py::TestResourceTemplateAnnotations::test_template_created_resources_inherit_annotations [gw0] [ 43%] PASSED tests/server/fastmcp/resources/test_resource_template.py::TestResourceTemplateAnnotations::test_template_created_resources_inherit_annotations tests/server/fastmcp/resources/test_resource_template.py::TestResourceTemplateMetadata::test_template_from_function_with_metadata [gw0] [ 43%] PASSED tests/server/fastmcp/resources/test_resource_template.py::TestResourceTemplateMetadata::test_template_from_function_with_metadata tests/server/fastmcp/resources/test_resource_template.py::TestResourceTemplateMetadata::test_template_created_resources_inherit_metadata [gw0] [ 44%] PASSED tests/server/fastmcp/resources/test_resource_template.py::TestResourceTemplateMetadata::test_template_created_resources_inherit_metadata tests/server/fastmcp/resources/test_resources.py::TestResourceValidation::test_resource_uri_validation [gw0] [ 44%] PASSED tests/server/fastmcp/resources/test_resources.py::TestResourceValidation::test_resource_uri_validation tests/server/fastmcp/resources/test_resources.py::TestResourceValidation::test_resource_name_from_uri [gw0] [ 44%] PASSED tests/server/fastmcp/resources/test_resources.py::TestResourceValidation::test_resource_name_from_uri tests/server/fastmcp/resources/test_resources.py::TestResourceValidation::test_resource_name_validation [gw0] [ 44%] PASSED tests/server/fastmcp/resources/test_resources.py::TestResourceValidation::test_resource_name_validation tests/server/fastmcp/resources/test_resources.py::TestResourceValidation::test_resource_mime_type [gw0] [ 44%] PASSED tests/server/fastmcp/resources/test_resources.py::TestResourceValidation::test_resource_mime_type tests/server/fastmcp/resources/test_resources.py::TestResourceValidation::test_resource_read_abstract [gw0] [ 44%] PASSED tests/server/fastmcp/resources/test_resources.py::TestResourceValidation::test_resource_read_abstract tests/server/fastmcp/resources/test_resources.py::TestResourceAnnotations::test_resource_with_annotations [gw0] [ 44%] PASSED tests/server/fastmcp/resources/test_resources.py::TestResourceAnnotations::test_resource_with_annotations tests/server/fastmcp/resources/test_resources.py::TestResourceAnnotations::test_resource_without_annotations [gw0] [ 44%] PASSED tests/server/fastmcp/resources/test_resources.py::TestResourceAnnotations::test_resource_without_annotations tests/server/fastmcp/resources/test_resources.py::TestResourceAnnotations::test_resource_annotations_in_fastmcp [gw0] [ 44%] FAILED tests/server/fastmcp/resources/test_resources.py::TestResourceAnnotations::test_resource_annotations_in_fastmcp tests/server/fastmcp/resources/test_resources.py::TestResourceAnnotations::test_resource_annotations_with_both_audiences [gw0] [ 44%] FAILED tests/server/fastmcp/resources/test_resources.py::TestResourceAnnotations::test_resource_annotations_with_both_audiences tests/server/fastmcp/resources/test_resources.py::TestAnnotationsValidation::test_priority_validation [gw0] [ 44%] PASSED tests/server/fastmcp/resources/test_resources.py::TestAnnotationsValidation::test_priority_validation tests/server/fastmcp/resources/test_resources.py::TestAnnotationsValidation::test_audience_validation [gw0] [ 44%] PASSED tests/server/fastmcp/resources/test_resources.py::TestAnnotationsValidation::test_audience_validation tests/server/fastmcp/resources/test_resources.py::TestResourceMetadata::test_resource_with_metadata [gw0] [ 45%] PASSED tests/server/fastmcp/resources/test_resources.py::TestResourceMetadata::test_resource_with_metadata tests/server/fastmcp/resources/test_resources.py::TestResourceMetadata::test_resource_without_metadata [gw0] [ 45%] PASSED tests/server/fastmcp/resources/test_resources.py::TestResourceMetadata::test_resource_without_metadata tests/server/fastmcp/servers/test_file_server.py::test_list_resources [gw0] [ 45%] ERROR tests/server/fastmcp/servers/test_file_server.py::test_list_resources tests/server/fastmcp/servers/test_file_server.py::test_read_resource_dir [gw0] [ 45%] ERROR tests/server/fastmcp/servers/test_file_server.py::test_read_resource_dir tests/server/fastmcp/servers/test_file_server.py::test_read_resource_file [gw0] [ 45%] ERROR tests/server/fastmcp/servers/test_file_server.py::test_read_resource_file tests/server/fastmcp/servers/test_file_server.py::test_delete_file [gw0] [ 45%] ERROR tests/server/fastmcp/servers/test_file_server.py::test_delete_file tests/server/fastmcp/servers/test_file_server.py::test_delete_file_and_check_resources [gw0] [ 45%] ERROR tests/server/fastmcp/servers/test_file_server.py::test_delete_file_and_check_resources tests/server/fastmcp/test_elicitation.py::test_stdio_elicitation [gw0] [ 45%] FAILED tests/server/fastmcp/test_elicitation.py::test_stdio_elicitation tests/server/fastmcp/test_elicitation.py::test_stdio_elicitation_decline [gw0] [ 45%] FAILED tests/server/fastmcp/test_elicitation.py::test_stdio_elicitation_decline tests/server/fastmcp/test_elicitation.py::test_elicitation_schema_validation [gw0] [ 45%] FAILED tests/server/fastmcp/test_elicitation.py::test_elicitation_schema_validation tests/server/fastmcp/test_elicitation.py::test_elicitation_with_optional_fields [gw0] [ 45%] FAILED tests/server/fastmcp/test_elicitation.py::test_elicitation_with_optional_fields tests/server/fastmcp/test_elicitation.py::test_elicitation_with_default_values [gw0] [ 45%] FAILED tests/server/fastmcp/test_elicitation.py::test_elicitation_with_default_values tests/server/fastmcp/test_elicitation.py::test_elicitation_with_enum_titles [gw0] [ 45%] FAILED tests/server/fastmcp/test_elicitation.py::test_elicitation_with_enum_titles tests/server/fastmcp/test_func_metadata.py::test_complex_function_runtime_arg_validation_non_json [gw0] [ 46%] PASSED tests/server/fastmcp/test_func_metadata.py::test_complex_function_runtime_arg_validation_non_json tests/server/fastmcp/test_func_metadata.py::test_complex_function_runtime_arg_validation_with_json [gw0] [ 46%] PASSED tests/server/fastmcp/test_func_metadata.py::test_complex_function_runtime_arg_validation_with_json tests/server/fastmcp/test_func_metadata.py::test_str_vs_list_str [gw0] [ 46%] PASSED tests/server/fastmcp/test_func_metadata.py::test_str_vs_list_str tests/server/fastmcp/test_func_metadata.py::test_skip_names [gw0] [ 46%] PASSED tests/server/fastmcp/test_func_metadata.py::test_skip_names tests/server/fastmcp/test_func_metadata.py::test_structured_output_dict_str_types [gw0] [ 46%] PASSED tests/server/fastmcp/test_func_metadata.py::test_structured_output_dict_str_types tests/server/fastmcp/test_func_metadata.py::test_lambda_function [gw0] [ 46%] PASSED tests/server/fastmcp/test_func_metadata.py::test_lambda_function tests/server/fastmcp/test_func_metadata.py::test_complex_function_json_schema [gw0] [ 46%] PASSED tests/server/fastmcp/test_func_metadata.py::test_complex_function_json_schema tests/server/fastmcp/test_func_metadata.py::test_str_vs_int [gw0] [ 46%] PASSED tests/server/fastmcp/test_func_metadata.py::test_str_vs_int tests/server/fastmcp/test_func_metadata.py::test_str_annotation_preserves_json_string [gw0] [ 46%] PASSED tests/server/fastmcp/test_func_metadata.py::test_str_annotation_preserves_json_string tests/server/fastmcp/test_func_metadata.py::test_str_annotation_runtime_validation [gw0] [ 46%] PASSED tests/server/fastmcp/test_func_metadata.py::test_str_annotation_runtime_validation tests/server/fastmcp/test_func_metadata.py::test_structured_output_requires_return_annotation [gw0] [ 46%] PASSED tests/server/fastmcp/test_func_metadata.py::test_structured_output_requires_return_annotation tests/server/fastmcp/test_func_metadata.py::test_structured_output_basemodel [gw0] [ 46%] PASSED tests/server/fastmcp/test_func_metadata.py::test_structured_output_basemodel tests/server/fastmcp/test_func_metadata.py::test_structured_output_primitives [gw0] [ 47%] PASSED tests/server/fastmcp/test_func_metadata.py::test_structured_output_primitives tests/server/fastmcp/test_func_metadata.py::test_structured_output_generic_types [gw0] [ 47%] PASSED tests/server/fastmcp/test_func_metadata.py::test_structured_output_generic_types tests/server/fastmcp/test_func_metadata.py::test_structured_output_dataclass [gw0] [ 47%] PASSED tests/server/fastmcp/test_func_metadata.py::test_structured_output_dataclass tests/server/fastmcp/test_func_metadata.py::test_structured_output_typeddict [gw0] [ 47%] PASSED tests/server/fastmcp/test_func_metadata.py::test_structured_output_typeddict tests/server/fastmcp/test_func_metadata.py::test_structured_output_ordinary_class [gw0] [ 47%] PASSED tests/server/fastmcp/test_func_metadata.py::test_structured_output_ordinary_class tests/server/fastmcp/test_func_metadata.py::test_unstructured_output_unannotated_class [gw0] [ 47%] PASSED tests/server/fastmcp/test_func_metadata.py::test_unstructured_output_unannotated_class tests/server/fastmcp/test_func_metadata.py::test_tool_call_result_is_unstructured_and_not_converted [gw0] [ 47%] PASSED tests/server/fastmcp/test_func_metadata.py::test_tool_call_result_is_unstructured_and_not_converted tests/server/fastmcp/test_func_metadata.py::test_tool_call_result_annotated_is_structured_and_converted [gw0] [ 47%] PASSED tests/server/fastmcp/test_func_metadata.py::test_tool_call_result_annotated_is_structured_and_converted tests/server/fastmcp/test_func_metadata.py::test_tool_call_result_annotated_is_structured_and_invalid [gw0] [ 47%] PASSED tests/server/fastmcp/test_func_metadata.py::test_tool_call_result_annotated_is_structured_and_invalid tests/server/fastmcp/test_func_metadata.py::test_tool_call_result_in_optional_is_rejected [gw0] [ 47%] PASSED tests/server/fastmcp/test_func_metadata.py::test_tool_call_result_in_optional_is_rejected tests/server/fastmcp/test_func_metadata.py::test_tool_call_result_in_union_is_rejected [gw0] [ 47%] PASSED tests/server/fastmcp/test_func_metadata.py::test_tool_call_result_in_union_is_rejected tests/server/fastmcp/test_func_metadata.py::test_tool_call_result_in_pipe_union_is_rejected [gw0] [ 47%] PASSED tests/server/fastmcp/test_func_metadata.py::test_tool_call_result_in_pipe_union_is_rejected tests/server/fastmcp/test_func_metadata.py::test_structured_output_with_field_descriptions [gw0] [ 48%] PASSED tests/server/fastmcp/test_func_metadata.py::test_structured_output_with_field_descriptions tests/server/fastmcp/test_func_metadata.py::test_structured_output_nested_models [gw0] [ 48%] PASSED tests/server/fastmcp/test_func_metadata.py::test_structured_output_nested_models tests/server/fastmcp/test_func_metadata.py::test_structured_output_unserializable_type_error [gw0] [ 48%] PASSED tests/server/fastmcp/test_func_metadata.py::test_structured_output_unserializable_type_error tests/server/fastmcp/test_func_metadata.py::test_structured_output_aliases [gw0] [ 48%] PASSED tests/server/fastmcp/test_func_metadata.py::test_structured_output_aliases tests/server/fastmcp/test_func_metadata.py::test_basemodel_reserved_names [gw0] [ 48%] PASSED tests/server/fastmcp/test_func_metadata.py::test_basemodel_reserved_names tests/server/fastmcp/test_func_metadata.py::test_basemodel_reserved_names_validation [gw0] [ 48%] PASSED tests/server/fastmcp/test_func_metadata.py::test_basemodel_reserved_names_validation tests/server/fastmcp/test_func_metadata.py::test_basemodel_reserved_names_with_json_preparsing [gw0] [ 48%] PASSED tests/server/fastmcp/test_func_metadata.py::test_basemodel_reserved_names_with_json_preparsing tests/server/fastmcp/test_func_metadata.py::test_disallowed_type_qualifier [gw0] [ 48%] PASSED tests/server/fastmcp/test_func_metadata.py::test_disallowed_type_qualifier tests/server/fastmcp/test_func_metadata.py::test_preserves_pydantic_metadata [gw0] [ 48%] PASSED tests/server/fastmcp/test_func_metadata.py::test_preserves_pydantic_metadata tests/server/fastmcp/test_integration.py::test_basic_tools[server_transport0] [gw0] [ 48%] SKIPPED tests/server/fastmcp/test_integration.py::test_basic_tools[server_transport0] tests/server/fastmcp/test_integration.py::test_basic_tools[server_transport1] [gw0] [ 48%] SKIPPED tests/server/fastmcp/test_integration.py::test_basic_tools[server_transport1] tests/server/fastmcp/test_integration.py::test_basic_resources[server_transport0] [gw0] [ 48%] SKIPPED tests/server/fastmcp/test_integration.py::test_basic_resources[server_transport0] tests/server/fastmcp/test_integration.py::test_basic_resources[server_transport1] [gw0] [ 48%] SKIPPED tests/server/fastmcp/test_integration.py::test_basic_resources[server_transport1] tests/server/fastmcp/test_integration.py::test_basic_prompts[server_transport0] [gw0] [ 49%] SKIPPED tests/server/fastmcp/test_integration.py::test_basic_prompts[server_transport0] tests/server/fastmcp/test_integration.py::test_basic_prompts[server_transport1] [gw0] [ 49%] SKIPPED tests/server/fastmcp/test_integration.py::test_basic_prompts[server_transport1] tests/server/fastmcp/test_integration.py::test_tool_progress[server_transport0] [gw0] [ 49%] SKIPPED tests/server/fastmcp/test_integration.py::test_tool_progress[server_transport0] tests/server/fastmcp/test_integration.py::test_tool_progress[server_transport1] [gw0] [ 49%] SKIPPED tests/server/fastmcp/test_integration.py::test_tool_progress[server_transport1] tests/server/fastmcp/test_integration.py::test_sampling[server_transport0] [gw0] [ 49%] SKIPPED tests/server/fastmcp/test_integration.py::test_sampling[server_transport0] tests/server/fastmcp/test_integration.py::test_sampling[server_transport1] [gw0] [ 49%] SKIPPED tests/server/fastmcp/test_integration.py::test_sampling[server_transport1] tests/server/fastmcp/test_integration.py::test_elicitation[server_transport0] [gw0] [ 49%] SKIPPED tests/server/fastmcp/test_integration.py::test_elicitation[server_transport0] tests/server/fastmcp/test_integration.py::test_elicitation[server_transport1] [gw0] [ 49%] SKIPPED tests/server/fastmcp/test_integration.py::test_elicitation[server_transport1] tests/server/fastmcp/test_integration.py::test_notifications[server_transport0] [gw0] [ 49%] SKIPPED tests/server/fastmcp/test_integration.py::test_notifications[server_transport0] tests/server/fastmcp/test_integration.py::test_notifications[server_transport1] [gw0] [ 49%] SKIPPED tests/server/fastmcp/test_integration.py::test_notifications[server_transport1] tests/server/fastmcp/test_integration.py::test_completion[server_transport0] [gw0] [ 49%] SKIPPED tests/server/fastmcp/test_integration.py::test_completion[server_transport0] tests/server/fastmcp/test_integration.py::test_completion[server_transport1] [gw0] [ 49%] SKIPPED tests/server/fastmcp/test_integration.py::test_completion[server_transport1] tests/server/fastmcp/test_integration.py::test_fastmcp_quickstart[server_transport0] [gw0] [ 50%] SKIPPED tests/server/fastmcp/test_integration.py::test_fastmcp_quickstart[server_transport0] tests/server/fastmcp/test_integration.py::test_fastmcp_quickstart[server_transport1] [gw0] [ 50%] SKIPPED tests/server/fastmcp/test_integration.py::test_fastmcp_quickstart[server_transport1] tests/server/fastmcp/test_integration.py::test_structured_output[server_transport0] [gw0] [ 50%] SKIPPED tests/server/fastmcp/test_integration.py::test_structured_output[server_transport0] tests/server/fastmcp/test_integration.py::test_structured_output[server_transport1] [gw0] [ 50%] SKIPPED tests/server/fastmcp/test_integration.py::test_structured_output[server_transport1] tests/server/fastmcp/test_parameter_descriptions.py::test_parameter_descriptions [gw0] [ 50%] FAILED tests/server/fastmcp/test_parameter_descriptions.py::test_parameter_descriptions tests/server/fastmcp/test_server.py::TestServer::test_create_server [gw0] [ 50%] FAILED tests/server/fastmcp/test_server.py::TestServer::test_create_server tests/server/fastmcp/test_server.py::TestServer::test_normalize_path [gw1] [ 50%] PASSED tests/client/test_stdio.py::test_stdio_client_sigint_only_process tests/client/test_stdio.py::TestChildProcessCleanup::test_basic_child_process_cleanup [gw0] [ 50%] FAILED tests/server/fastmcp/test_server.py::TestServer::test_normalize_path tests/server/fastmcp/test_server.py::TestServer::test_sse_app_with_mount_path [gw0] [ 50%] FAILED tests/server/fastmcp/test_server.py::TestServer::test_sse_app_with_mount_path tests/server/fastmcp/test_server.py::TestServer::test_starlette_routes_with_mount_path [gw0] [ 50%] FAILED tests/server/fastmcp/test_server.py::TestServer::test_starlette_routes_with_mount_path tests/server/fastmcp/test_server.py::TestServer::test_non_ascii_description [gw0] [ 50%] FAILED tests/server/fastmcp/test_server.py::TestServer::test_non_ascii_description tests/server/fastmcp/test_server.py::TestServer::test_add_tool_decorator [gw0] [ 50%] FAILED tests/server/fastmcp/test_server.py::TestServer::test_add_tool_decorator tests/server/fastmcp/test_server.py::TestServer::test_add_tool_decorator_incorrect_usage [gw0] [ 51%] FAILED tests/server/fastmcp/test_server.py::TestServer::test_add_tool_decorator_incorrect_usage tests/server/fastmcp/test_server.py::TestServer::test_add_resource_decorator [gw0] [ 51%] FAILED tests/server/fastmcp/test_server.py::TestServer::test_add_resource_decorator tests/server/fastmcp/test_server.py::TestServer::test_add_resource_decorator_incorrect_usage [gw0] [ 51%] FAILED tests/server/fastmcp/test_server.py::TestServer::test_add_resource_decorator_incorrect_usage tests/server/fastmcp/test_server.py::TestDnsRebindingProtection::test_auto_enabled_for_127_0_0_1 [gw0] [ 51%] FAILED tests/server/fastmcp/test_server.py::TestDnsRebindingProtection::test_auto_enabled_for_127_0_0_1 tests/server/fastmcp/test_server.py::TestDnsRebindingProtection::test_auto_enabled_for_localhost [gw0] [ 51%] FAILED tests/server/fastmcp/test_server.py::TestDnsRebindingProtection::test_auto_enabled_for_localhost tests/server/fastmcp/test_server.py::TestDnsRebindingProtection::test_auto_enabled_for_ipv6_localhost [gw0] [ 51%] FAILED tests/server/fastmcp/test_server.py::TestDnsRebindingProtection::test_auto_enabled_for_ipv6_localhost tests/server/fastmcp/test_server.py::TestDnsRebindingProtection::test_not_auto_enabled_for_other_hosts [gw0] [ 51%] FAILED tests/server/fastmcp/test_server.py::TestDnsRebindingProtection::test_not_auto_enabled_for_other_hosts tests/server/fastmcp/test_server.py::TestDnsRebindingProtection::test_explicit_settings_not_overridden [gw0] [ 51%] FAILED tests/server/fastmcp/test_server.py::TestDnsRebindingProtection::test_explicit_settings_not_overridden tests/server/fastmcp/test_server.py::TestServerTools::test_add_tool [gw0] [ 51%] FAILED tests/server/fastmcp/test_server.py::TestServerTools::test_add_tool tests/server/fastmcp/test_server.py::TestServerTools::test_list_tools [gw0] [ 51%] FAILED tests/server/fastmcp/test_server.py::TestServerTools::test_list_tools tests/server/fastmcp/test_server.py::TestServerTools::test_call_tool [gw0] [ 51%] FAILED tests/server/fastmcp/test_server.py::TestServerTools::test_call_tool tests/server/fastmcp/test_server.py::TestServerTools::test_tool_exception_handling [gw0] [ 51%] FAILED tests/server/fastmcp/test_server.py::TestServerTools::test_tool_exception_handling tests/server/fastmcp/test_server.py::TestServerTools::test_tool_error_handling [gw0] [ 51%] FAILED tests/server/fastmcp/test_server.py::TestServerTools::test_tool_error_handling tests/server/fastmcp/test_server.py::TestServerTools::test_tool_error_details [gw0] [ 52%] FAILED tests/server/fastmcp/test_server.py::TestServerTools::test_tool_error_details tests/server/fastmcp/test_server.py::TestServerTools::test_tool_return_value_conversion [gw0] [ 52%] FAILED tests/server/fastmcp/test_server.py::TestServerTools::test_tool_return_value_conversion tests/server/fastmcp/test_server.py::TestServerTools::test_tool_image_helper [gw0] [ 52%] FAILED tests/server/fastmcp/test_server.py::TestServerTools::test_tool_image_helper tests/server/fastmcp/test_server.py::TestServerTools::test_tool_audio_helper [gw0] [ 52%] FAILED tests/server/fastmcp/test_server.py::TestServerTools::test_tool_audio_helper tests/server/fastmcp/test_server.py::TestServerTools::test_tool_audio_suffix_detection[test.wav-audio/wav] [gw0] [ 52%] FAILED tests/server/fastmcp/test_server.py::TestServerTools::test_tool_audio_suffix_detection[test.wav-audio/wav] tests/server/fastmcp/test_server.py::TestServerTools::test_tool_audio_suffix_detection[test.mp3-audio/mpeg] [gw0] [ 52%] FAILED tests/server/fastmcp/test_server.py::TestServerTools::test_tool_audio_suffix_detection[test.mp3-audio/mpeg] tests/server/fastmcp/test_server.py::TestServerTools::test_tool_audio_suffix_detection[test.ogg-audio/ogg] [gw1] [ 52%] PASSED tests/client/test_stdio.py::TestChildProcessCleanup::test_basic_child_process_cleanup tests/client/test_stdio.py::TestChildProcessCleanup::test_nested_process_tree [gw0] [ 52%] FAILED tests/server/fastmcp/test_server.py::TestServerTools::test_tool_audio_suffix_detection[test.ogg-audio/ogg] tests/server/fastmcp/test_server.py::TestServerTools::test_tool_audio_suffix_detection[test.flac-audio/flac] [gw0] [ 52%] FAILED tests/server/fastmcp/test_server.py::TestServerTools::test_tool_audio_suffix_detection[test.flac-audio/flac] tests/server/fastmcp/test_server.py::TestServerTools::test_tool_audio_suffix_detection[test.aac-audio/aac] [gw0] [ 52%] FAILED tests/server/fastmcp/test_server.py::TestServerTools::test_tool_audio_suffix_detection[test.aac-audio/aac] tests/server/fastmcp/test_server.py::TestServerTools::test_tool_audio_suffix_detection[test.m4a-audio/mp4] [gw0] [ 52%] FAILED tests/server/fastmcp/test_server.py::TestServerTools::test_tool_audio_suffix_detection[test.m4a-audio/mp4] tests/server/fastmcp/test_server.py::TestServerTools::test_tool_audio_suffix_detection[test.unknown-application/octet-stream] [gw0] [ 52%] FAILED tests/server/fastmcp/test_server.py::TestServerTools::test_tool_audio_suffix_detection[test.unknown-application/octet-stream] tests/server/fastmcp/test_server.py::TestServerTools::test_tool_mixed_content [gw0] [ 53%] FAILED tests/server/fastmcp/test_server.py::TestServerTools::test_tool_mixed_content tests/server/fastmcp/test_server.py::TestServerTools::test_tool_mixed_list_with_audio_and_image [gw0] [ 53%] FAILED tests/server/fastmcp/test_server.py::TestServerTools::test_tool_mixed_list_with_audio_and_image tests/server/fastmcp/test_server.py::TestServerTools::test_tool_structured_output_basemodel [gw0] [ 53%] FAILED tests/server/fastmcp/test_server.py::TestServerTools::test_tool_structured_output_basemodel tests/server/fastmcp/test_server.py::TestServerTools::test_tool_structured_output_primitive [gw0] [ 53%] FAILED tests/server/fastmcp/test_server.py::TestServerTools::test_tool_structured_output_primitive tests/server/fastmcp/test_server.py::TestServerTools::test_tool_structured_output_list [gw0] [ 53%] FAILED tests/server/fastmcp/test_server.py::TestServerTools::test_tool_structured_output_list tests/server/fastmcp/test_server.py::TestServerTools::test_tool_structured_output_server_side_validation_error [gw0] [ 53%] FAILED tests/server/fastmcp/test_server.py::TestServerTools::test_tool_structured_output_server_side_validation_error tests/server/fastmcp/test_server.py::TestServerTools::test_tool_structured_output_dict_str_any [gw0] [ 53%] FAILED tests/server/fastmcp/test_server.py::TestServerTools::test_tool_structured_output_dict_str_any tests/server/fastmcp/test_server.py::TestServerTools::test_tool_structured_output_dict_str_typed [gw0] [ 53%] FAILED tests/server/fastmcp/test_server.py::TestServerTools::test_tool_structured_output_dict_str_typed tests/server/fastmcp/test_server.py::TestServerTools::test_remove_tool [gw0] [ 53%] FAILED tests/server/fastmcp/test_server.py::TestServerTools::test_remove_tool tests/server/fastmcp/test_server.py::TestServerTools::test_remove_nonexistent_tool [gw0] [ 53%] FAILED tests/server/fastmcp/test_server.py::TestServerTools::test_remove_nonexistent_tool tests/server/fastmcp/test_server.py::TestServerTools::test_remove_tool_and_list [gw0] [ 53%] FAILED tests/server/fastmcp/test_server.py::TestServerTools::test_remove_tool_and_list tests/server/fastmcp/test_server.py::TestServerTools::test_remove_tool_and_call [gw0] [ 53%] FAILED tests/server/fastmcp/test_server.py::TestServerTools::test_remove_tool_and_call tests/server/fastmcp/test_server.py::TestServerResources::test_text_resource [gw0] [ 54%] FAILED tests/server/fastmcp/test_server.py::TestServerResources::test_text_resource tests/server/fastmcp/test_server.py::TestServerResources::test_binary_resource [gw0] [ 54%] FAILED tests/server/fastmcp/test_server.py::TestServerResources::test_binary_resource tests/server/fastmcp/test_server.py::TestServerResources::test_file_resource_text [gw0] [ 54%] FAILED tests/server/fastmcp/test_server.py::TestServerResources::test_file_resource_text tests/server/fastmcp/test_server.py::TestServerResources::test_file_resource_binary [gw0] [ 54%] FAILED tests/server/fastmcp/test_server.py::TestServerResources::test_file_resource_binary tests/server/fastmcp/test_server.py::TestServerResources::test_function_resource [gw0] [ 54%] FAILED tests/server/fastmcp/test_server.py::TestServerResources::test_function_resource tests/server/fastmcp/test_server.py::TestServerResourceTemplates::test_resource_with_params [gw0] [ 54%] FAILED tests/server/fastmcp/test_server.py::TestServerResourceTemplates::test_resource_with_params tests/server/fastmcp/test_server.py::TestServerResourceTemplates::test_resource_with_uri_params [gw0] [ 54%] FAILED tests/server/fastmcp/test_server.py::TestServerResourceTemplates::test_resource_with_uri_params tests/server/fastmcp/test_server.py::TestServerResourceTemplates::test_resource_with_untyped_params [gw0] [ 54%] FAILED tests/server/fastmcp/test_server.py::TestServerResourceTemplates::test_resource_with_untyped_params tests/server/fastmcp/test_server.py::TestServerResourceTemplates::test_resource_matching_params [gw0] [ 54%] FAILED tests/server/fastmcp/test_server.py::TestServerResourceTemplates::test_resource_matching_params tests/server/fastmcp/test_server.py::TestServerResourceTemplates::test_resource_mismatched_params [gw0] [ 54%] FAILED tests/server/fastmcp/test_server.py::TestServerResourceTemplates::test_resource_mismatched_params tests/server/fastmcp/test_server.py::TestServerResourceTemplates::test_resource_multiple_params [gw0] [ 54%] FAILED tests/server/fastmcp/test_server.py::TestServerResourceTemplates::test_resource_multiple_params tests/server/fastmcp/test_server.py::TestServerResourceTemplates::test_resource_multiple_mismatched_params [gw0] [ 54%] FAILED tests/server/fastmcp/test_server.py::TestServerResourceTemplates::test_resource_multiple_mismatched_params tests/server/fastmcp/test_server.py::TestServerResourceTemplates::test_template_to_resource_conversion [gw0] [ 54%] FAILED tests/server/fastmcp/test_server.py::TestServerResourceTemplates::test_template_to_resource_conversion tests/server/fastmcp/test_server.py::TestServerResourceTemplates::test_resource_template_includes_mime_type [gw0] [ 55%] FAILED tests/server/fastmcp/test_server.py::TestServerResourceTemplates::test_resource_template_includes_mime_type tests/server/fastmcp/test_server.py::TestServerResourceMetadata::test_resource_decorator_with_metadata [gw0] [ 55%] FAILED tests/server/fastmcp/test_server.py::TestServerResourceMetadata::test_resource_decorator_with_metadata tests/server/fastmcp/test_server.py::TestServerResourceMetadata::test_resource_template_decorator_with_metadata [gw0] [ 55%] FAILED tests/server/fastmcp/test_server.py::TestServerResourceMetadata::test_resource_template_decorator_with_metadata tests/server/fastmcp/test_server.py::TestServerResourceMetadata::test_read_resource_returns_meta [gw0] [ 55%] FAILED tests/server/fastmcp/test_server.py::TestServerResourceMetadata::test_read_resource_returns_meta tests/server/fastmcp/test_server.py::TestContextInjection::test_context_detection [gw0] [ 55%] FAILED tests/server/fastmcp/test_server.py::TestContextInjection::test_context_detection tests/server/fastmcp/test_server.py::TestContextInjection::test_context_injection [gw0] [ 55%] FAILED tests/server/fastmcp/test_server.py::TestContextInjection::test_context_injection tests/server/fastmcp/test_server.py::TestContextInjection::test_async_context [gw0] [ 55%] FAILED tests/server/fastmcp/test_server.py::TestContextInjection::test_async_context tests/server/fastmcp/test_server.py::TestContextInjection::test_context_logging [gw0] [ 55%] FAILED tests/server/fastmcp/test_server.py::TestContextInjection::test_context_logging tests/server/fastmcp/test_server.py::TestContextInjection::test_optional_context [gw0] [ 55%] FAILED tests/server/fastmcp/test_server.py::TestContextInjection::test_optional_context tests/server/fastmcp/test_server.py::TestContextInjection::test_context_resource_access [gw0] [ 55%] FAILED tests/server/fastmcp/test_server.py::TestContextInjection::test_context_resource_access tests/server/fastmcp/test_server.py::TestContextInjection::test_resource_with_context [gw0] [ 55%] FAILED tests/server/fastmcp/test_server.py::TestContextInjection::test_resource_with_context tests/server/fastmcp/test_server.py::TestContextInjection::test_resource_without_context [gw0] [ 55%] FAILED tests/server/fastmcp/test_server.py::TestContextInjection::test_resource_without_context tests/server/fastmcp/test_server.py::TestContextInjection::test_resource_context_custom_name [gw0] [ 56%] FAILED tests/server/fastmcp/test_server.py::TestContextInjection::test_resource_context_custom_name tests/server/fastmcp/test_server.py::TestContextInjection::test_prompt_with_context [gw0] [ 56%] FAILED tests/server/fastmcp/test_server.py::TestContextInjection::test_prompt_with_context tests/server/fastmcp/test_server.py::TestContextInjection::test_prompt_without_context [gw0] [ 56%] FAILED tests/server/fastmcp/test_server.py::TestContextInjection::test_prompt_without_context tests/server/fastmcp/test_server.py::TestServerPrompts::test_prompt_decorator [gw0] [ 56%] FAILED tests/server/fastmcp/test_server.py::TestServerPrompts::test_prompt_decorator tests/server/fastmcp/test_server.py::TestServerPrompts::test_prompt_decorator_with_name [gw0] [ 56%] FAILED tests/server/fastmcp/test_server.py::TestServerPrompts::test_prompt_decorator_with_name tests/server/fastmcp/test_server.py::TestServerPrompts::test_prompt_decorator_with_description [gw0] [ 56%] FAILED tests/server/fastmcp/test_server.py::TestServerPrompts::test_prompt_decorator_with_description tests/server/fastmcp/test_server.py::TestServerPrompts::test_prompt_decorator_error [gw0] [ 56%] FAILED tests/server/fastmcp/test_server.py::TestServerPrompts::test_prompt_decorator_error tests/server/fastmcp/test_server.py::TestServerPrompts::test_list_prompts [gw0] [ 56%] FAILED tests/server/fastmcp/test_server.py::TestServerPrompts::test_list_prompts tests/server/fastmcp/test_server.py::TestServerPrompts::test_get_prompt [gw0] [ 56%] FAILED tests/server/fastmcp/test_server.py::TestServerPrompts::test_get_prompt tests/server/fastmcp/test_server.py::TestServerPrompts::test_get_prompt_with_description [gw0] [ 56%] FAILED tests/server/fastmcp/test_server.py::TestServerPrompts::test_get_prompt_with_description tests/server/fastmcp/test_server.py::TestServerPrompts::test_get_prompt_without_description [gw0] [ 56%] FAILED tests/server/fastmcp/test_server.py::TestServerPrompts::test_get_prompt_without_description tests/server/fastmcp/test_server.py::TestServerPrompts::test_get_prompt_with_docstring_description [gw0] [ 56%] FAILED tests/server/fastmcp/test_server.py::TestServerPrompts::test_get_prompt_with_docstring_description tests/server/fastmcp/test_server.py::TestServerPrompts::test_get_prompt_with_resource [gw0] [ 57%] FAILED tests/server/fastmcp/test_server.py::TestServerPrompts::test_get_prompt_with_resource tests/server/fastmcp/test_server.py::TestServerPrompts::test_get_unknown_prompt [gw0] [ 57%] FAILED tests/server/fastmcp/test_server.py::TestServerPrompts::test_get_unknown_prompt tests/server/fastmcp/test_server.py::TestServerPrompts::test_get_prompt_missing_args [gw0] [ 57%] FAILED tests/server/fastmcp/test_server.py::TestServerPrompts::test_get_prompt_missing_args tests/server/fastmcp/test_server.py::test_streamable_http_no_redirect [gw0] [ 57%] FAILED tests/server/fastmcp/test_server.py::test_streamable_http_no_redirect tests/server/fastmcp/test_title.py::test_tool_title_precedence [gw0] [ 57%] FAILED tests/server/fastmcp/test_title.py::test_tool_title_precedence tests/server/fastmcp/test_title.py::test_prompt_title [gw0] [ 57%] FAILED tests/server/fastmcp/test_title.py::test_prompt_title tests/server/fastmcp/test_title.py::test_resource_title [gw0] [ 57%] FAILED tests/server/fastmcp/test_title.py::test_resource_title tests/server/fastmcp/test_title.py::test_get_display_name_utility [gw0] [ 57%] PASSED tests/server/fastmcp/test_title.py::test_get_display_name_utility tests/server/fastmcp/test_tool_manager.py::TestAddTools::test_basic_function [gw0] [ 57%] PASSED tests/server/fastmcp/test_tool_manager.py::TestAddTools::test_basic_function tests/server/fastmcp/test_tool_manager.py::TestAddTools::test_init_with_tools [gw0] [ 57%] PASSED tests/server/fastmcp/test_tool_manager.py::TestAddTools::test_init_with_tools tests/server/fastmcp/test_tool_manager.py::TestAddTools::test_async_function [gw0] [ 57%] PASSED tests/server/fastmcp/test_tool_manager.py::TestAddTools::test_async_function tests/server/fastmcp/test_tool_manager.py::TestAddTools::test_pydantic_model_function [gw0] [ 57%] PASSED tests/server/fastmcp/test_tool_manager.py::TestAddTools::test_pydantic_model_function tests/server/fastmcp/test_tool_manager.py::TestAddTools::test_add_callable_object [gw0] [ 57%] PASSED tests/server/fastmcp/test_tool_manager.py::TestAddTools::test_add_callable_object tests/server/fastmcp/test_tool_manager.py::TestAddTools::test_add_async_callable_object [gw0] [ 58%] PASSED tests/server/fastmcp/test_tool_manager.py::TestAddTools::test_add_async_callable_object tests/server/fastmcp/test_tool_manager.py::TestAddTools::test_add_invalid_tool [gw0] [ 58%] PASSED tests/server/fastmcp/test_tool_manager.py::TestAddTools::test_add_invalid_tool tests/server/fastmcp/test_tool_manager.py::TestAddTools::test_add_lambda [gw0] [ 58%] PASSED tests/server/fastmcp/test_tool_manager.py::TestAddTools::test_add_lambda tests/server/fastmcp/test_tool_manager.py::TestAddTools::test_add_lambda_with_no_name [gw0] [ 58%] PASSED tests/server/fastmcp/test_tool_manager.py::TestAddTools::test_add_lambda_with_no_name tests/server/fastmcp/test_tool_manager.py::TestAddTools::test_warn_on_duplicate_tools [gw0] [ 58%] PASSED tests/server/fastmcp/test_tool_manager.py::TestAddTools::test_warn_on_duplicate_tools tests/server/fastmcp/test_tool_manager.py::TestAddTools::test_disable_warn_on_duplicate_tools [gw0] [ 58%] PASSED tests/server/fastmcp/test_tool_manager.py::TestAddTools::test_disable_warn_on_duplicate_tools tests/server/fastmcp/test_tool_manager.py::TestCallTools::test_call_tool [gw0] [ 58%] PASSED tests/server/fastmcp/test_tool_manager.py::TestCallTools::test_call_tool tests/server/fastmcp/test_tool_manager.py::TestCallTools::test_call_async_tool [gw0] [ 58%] PASSED tests/server/fastmcp/test_tool_manager.py::TestCallTools::test_call_async_tool tests/server/fastmcp/test_tool_manager.py::TestCallTools::test_call_object_tool [gw0] [ 58%] PASSED tests/server/fastmcp/test_tool_manager.py::TestCallTools::test_call_object_tool tests/server/fastmcp/test_tool_manager.py::TestCallTools::test_call_async_object_tool [gw0] [ 58%] PASSED tests/server/fastmcp/test_tool_manager.py::TestCallTools::test_call_async_object_tool tests/server/fastmcp/test_tool_manager.py::TestCallTools::test_call_tool_with_default_args [gw0] [ 58%] PASSED tests/server/fastmcp/test_tool_manager.py::TestCallTools::test_call_tool_with_default_args tests/server/fastmcp/test_tool_manager.py::TestCallTools::test_call_tool_with_missing_args [gw0] [ 58%] PASSED tests/server/fastmcp/test_tool_manager.py::TestCallTools::test_call_tool_with_missing_args tests/server/fastmcp/test_tool_manager.py::TestCallTools::test_call_unknown_tool [gw0] [ 59%] PASSED tests/server/fastmcp/test_tool_manager.py::TestCallTools::test_call_unknown_tool tests/server/fastmcp/test_tool_manager.py::TestCallTools::test_call_tool_with_list_int_input [gw0] [ 59%] PASSED tests/server/fastmcp/test_tool_manager.py::TestCallTools::test_call_tool_with_list_int_input tests/server/fastmcp/test_tool_manager.py::TestCallTools::test_call_tool_with_list_str_or_str_input [gw0] [ 59%] PASSED tests/server/fastmcp/test_tool_manager.py::TestCallTools::test_call_tool_with_list_str_or_str_input tests/server/fastmcp/test_tool_manager.py::TestCallTools::test_call_tool_with_complex_model [gw0] [ 59%] PASSED tests/server/fastmcp/test_tool_manager.py::TestCallTools::test_call_tool_with_complex_model tests/server/fastmcp/test_tool_manager.py::TestToolSchema::test_context_arg_excluded_from_schema [gw0] [ 59%] PASSED tests/server/fastmcp/test_tool_manager.py::TestToolSchema::test_context_arg_excluded_from_schema tests/server/fastmcp/test_tool_manager.py::TestContextHandling::test_context_parameter_detection [gw0] [ 59%] PASSED tests/server/fastmcp/test_tool_manager.py::TestContextHandling::test_context_parameter_detection tests/server/fastmcp/test_tool_manager.py::TestContextHandling::test_context_injection [gw0] [ 59%] FAILED tests/server/fastmcp/test_tool_manager.py::TestContextHandling::test_context_injection tests/server/fastmcp/test_tool_manager.py::TestContextHandling::test_context_injection_async [gw0] [ 59%] FAILED tests/server/fastmcp/test_tool_manager.py::TestContextHandling::test_context_injection_async tests/server/fastmcp/test_tool_manager.py::TestContextHandling::test_context_optional [gw0] [ 59%] PASSED tests/server/fastmcp/test_tool_manager.py::TestContextHandling::test_context_optional tests/server/fastmcp/test_tool_manager.py::TestContextHandling::test_context_error_handling [gw0] [ 59%] FAILED tests/server/fastmcp/test_tool_manager.py::TestContextHandling::test_context_error_handling tests/server/fastmcp/test_tool_manager.py::TestToolAnnotations::test_tool_annotations [gw0] [ 59%] PASSED tests/server/fastmcp/test_tool_manager.py::TestToolAnnotations::test_tool_annotations tests/server/fastmcp/test_tool_manager.py::TestToolAnnotations::test_tool_annotations_in_fastmcp [gw0] [ 59%] FAILED tests/server/fastmcp/test_tool_manager.py::TestToolAnnotations::test_tool_annotations_in_fastmcp tests/server/fastmcp/test_tool_manager.py::TestStructuredOutput::test_tool_with_basemodel_output [gw0] [ 60%] PASSED tests/server/fastmcp/test_tool_manager.py::TestStructuredOutput::test_tool_with_basemodel_output tests/server/fastmcp/test_tool_manager.py::TestStructuredOutput::test_tool_with_primitive_output [gw0] [ 60%] PASSED tests/server/fastmcp/test_tool_manager.py::TestStructuredOutput::test_tool_with_primitive_output tests/server/fastmcp/test_tool_manager.py::TestStructuredOutput::test_tool_with_typeddict_output [gw0] [ 60%] PASSED tests/server/fastmcp/test_tool_manager.py::TestStructuredOutput::test_tool_with_typeddict_output tests/server/fastmcp/test_tool_manager.py::TestStructuredOutput::test_tool_with_dataclass_output [gw0] [ 60%] PASSED tests/server/fastmcp/test_tool_manager.py::TestStructuredOutput::test_tool_with_dataclass_output tests/server/fastmcp/test_tool_manager.py::TestStructuredOutput::test_tool_with_list_output [gw0] [ 60%] PASSED tests/server/fastmcp/test_tool_manager.py::TestStructuredOutput::test_tool_with_list_output tests/server/fastmcp/test_tool_manager.py::TestStructuredOutput::test_tool_without_structured_output [gw0] [ 60%] PASSED tests/server/fastmcp/test_tool_manager.py::TestStructuredOutput::test_tool_without_structured_output tests/server/fastmcp/test_tool_manager.py::TestStructuredOutput::test_tool_output_schema_property [gw0] [ 60%] PASSED tests/server/fastmcp/test_tool_manager.py::TestStructuredOutput::test_tool_output_schema_property tests/server/fastmcp/test_tool_manager.py::TestStructuredOutput::test_tool_with_dict_str_any_output [gw0] [ 60%] PASSED tests/server/fastmcp/test_tool_manager.py::TestStructuredOutput::test_tool_with_dict_str_any_output tests/server/fastmcp/test_tool_manager.py::TestStructuredOutput::test_tool_with_dict_str_typed_output [gw0] [ 60%] PASSED tests/server/fastmcp/test_tool_manager.py::TestStructuredOutput::test_tool_with_dict_str_typed_output tests/server/fastmcp/test_tool_manager.py::TestToolMetadata::test_add_tool_with_metadata [gw0] [ 60%] PASSED tests/server/fastmcp/test_tool_manager.py::TestToolMetadata::test_add_tool_with_metadata tests/server/fastmcp/test_tool_manager.py::TestToolMetadata::test_add_tool_without_metadata [gw0] [ 60%] PASSED tests/server/fastmcp/test_tool_manager.py::TestToolMetadata::test_add_tool_without_metadata tests/server/fastmcp/test_tool_manager.py::TestToolMetadata::test_metadata_in_fastmcp_decorator [gw1] [ 60%] PASSED tests/client/test_stdio.py::TestChildProcessCleanup::test_nested_process_tree tests/client/test_stdio.py::TestChildProcessCleanup::test_early_parent_exit [gw0] [ 60%] FAILED tests/server/fastmcp/test_tool_manager.py::TestToolMetadata::test_metadata_in_fastmcp_decorator tests/server/fastmcp/test_tool_manager.py::TestToolMetadata::test_metadata_in_list_tools [gw0] [ 61%] FAILED tests/server/fastmcp/test_tool_manager.py::TestToolMetadata::test_metadata_in_list_tools tests/server/fastmcp/test_tool_manager.py::TestToolMetadata::test_multiple_tools_with_different_metadata [gw0] [ 61%] FAILED tests/server/fastmcp/test_tool_manager.py::TestToolMetadata::test_multiple_tools_with_different_metadata tests/server/fastmcp/test_tool_manager.py::TestToolMetadata::test_metadata_with_complex_structure [gw0] [ 61%] PASSED tests/server/fastmcp/test_tool_manager.py::TestToolMetadata::test_metadata_with_complex_structure tests/server/fastmcp/test_tool_manager.py::TestToolMetadata::test_metadata_empty_dict [gw0] [ 61%] PASSED tests/server/fastmcp/test_tool_manager.py::TestToolMetadata::test_metadata_empty_dict tests/server/fastmcp/test_tool_manager.py::TestToolMetadata::test_metadata_with_annotations [gw0] [ 61%] FAILED tests/server/fastmcp/test_tool_manager.py::TestToolMetadata::test_metadata_with_annotations tests/server/fastmcp/test_tool_manager.py::TestRemoveTools::test_remove_existing_tool [gw0] [ 61%] PASSED tests/server/fastmcp/test_tool_manager.py::TestRemoveTools::test_remove_existing_tool tests/server/fastmcp/test_tool_manager.py::TestRemoveTools::test_remove_nonexistent_tool [gw0] [ 61%] PASSED tests/server/fastmcp/test_tool_manager.py::TestRemoveTools::test_remove_nonexistent_tool tests/server/fastmcp/test_tool_manager.py::TestRemoveTools::test_remove_tool_from_multiple_tools [gw0] [ 61%] PASSED tests/server/fastmcp/test_tool_manager.py::TestRemoveTools::test_remove_tool_from_multiple_tools tests/server/fastmcp/test_tool_manager.py::TestRemoveTools::test_call_removed_tool_raises_error [gw0] [ 61%] PASSED tests/server/fastmcp/test_tool_manager.py::TestRemoveTools::test_call_removed_tool_raises_error tests/server/fastmcp/test_tool_manager.py::TestRemoveTools::test_remove_tool_case_sensitive [gw0] [ 61%] PASSED tests/server/fastmcp/test_tool_manager.py::TestRemoveTools::test_remove_tool_case_sensitive tests/server/fastmcp/test_url_elicitation.py::test_url_elicitation_accept [gw0] [ 61%] FAILED tests/server/fastmcp/test_url_elicitation.py::test_url_elicitation_accept tests/server/fastmcp/test_url_elicitation.py::test_url_elicitation_decline [gw0] [ 61%] FAILED tests/server/fastmcp/test_url_elicitation.py::test_url_elicitation_decline tests/server/fastmcp/test_url_elicitation.py::test_url_elicitation_cancel [gw0] [ 62%] FAILED tests/server/fastmcp/test_url_elicitation.py::test_url_elicitation_cancel tests/server/fastmcp/test_url_elicitation.py::test_url_elicitation_helper_function [gw0] [ 62%] FAILED tests/server/fastmcp/test_url_elicitation.py::test_url_elicitation_helper_function tests/server/fastmcp/test_url_elicitation.py::test_url_no_content_in_response [gw0] [ 62%] FAILED tests/server/fastmcp/test_url_elicitation.py::test_url_no_content_in_response tests/server/fastmcp/test_url_elicitation.py::test_form_mode_still_works [gw0] [ 62%] FAILED tests/server/fastmcp/test_url_elicitation.py::test_form_mode_still_works tests/server/fastmcp/test_url_elicitation.py::test_elicit_complete_notification [gw0] [ 62%] FAILED tests/server/fastmcp/test_url_elicitation.py::test_elicit_complete_notification tests/server/fastmcp/test_url_elicitation.py::test_url_elicitation_required_error_code [gw0] [ 62%] PASSED tests/server/fastmcp/test_url_elicitation.py::test_url_elicitation_required_error_code tests/server/fastmcp/test_url_elicitation.py::test_elicit_url_typed_results [gw0] [ 62%] FAILED tests/server/fastmcp/test_url_elicitation.py::test_elicit_url_typed_results tests/server/fastmcp/test_url_elicitation.py::test_deprecated_elicit_method [gw0] [ 62%] FAILED tests/server/fastmcp/test_url_elicitation.py::test_deprecated_elicit_method tests/server/fastmcp/test_url_elicitation.py::test_ctx_elicit_url_convenience_method [gw0] [ 62%] FAILED tests/server/fastmcp/test_url_elicitation.py::test_ctx_elicit_url_convenience_method tests/server/fastmcp/test_url_elicitation_error_throw.py::test_url_elicitation_error_thrown_from_tool [gw0] [ 62%] FAILED tests/server/fastmcp/test_url_elicitation_error_throw.py::test_url_elicitation_error_thrown_from_tool tests/server/fastmcp/test_url_elicitation_error_throw.py::test_url_elicitation_error_from_error [gw0] [ 62%] FAILED tests/server/fastmcp/test_url_elicitation_error_throw.py::test_url_elicitation_error_from_error tests/server/fastmcp/test_url_elicitation_error_throw.py::test_normal_exceptions_still_return_error_result [gw0] [ 62%] FAILED tests/server/fastmcp/test_url_elicitation_error_throw.py::test_normal_exceptions_still_return_error_result tests/server/lowlevel/test_func_inspection.py::test_no_params_returns_deprecated_wrapper [gw0] [ 63%] PASSED tests/server/lowlevel/test_func_inspection.py::test_no_params_returns_deprecated_wrapper tests/server/lowlevel/test_func_inspection.py::test_param_with_default_returns_deprecated_wrapper [gw0] [ 63%] PASSED tests/server/lowlevel/test_func_inspection.py::test_param_with_default_returns_deprecated_wrapper tests/server/lowlevel/test_func_inspection.py::test_typed_request_param_passes_request [gw0] [ 63%] PASSED tests/server/lowlevel/test_func_inspection.py::test_typed_request_param_passes_request tests/server/lowlevel/test_func_inspection.py::test_typed_request_with_default_param_passes_request [gw0] [ 63%] PASSED tests/server/lowlevel/test_func_inspection.py::test_typed_request_with_default_param_passes_request tests/server/lowlevel/test_func_inspection.py::test_optional_typed_request_with_default_none_is_deprecated [gw0] [ 63%] PASSED tests/server/lowlevel/test_func_inspection.py::test_optional_typed_request_with_default_none_is_deprecated tests/server/lowlevel/test_func_inspection.py::test_untyped_request_param_is_deprecated [gw0] [ 63%] PASSED tests/server/lowlevel/test_func_inspection.py::test_untyped_request_param_is_deprecated tests/server/lowlevel/test_func_inspection.py::test_any_typed_request_param_is_deprecated [gw0] [ 63%] PASSED tests/server/lowlevel/test_func_inspection.py::test_any_typed_request_param_is_deprecated tests/server/lowlevel/test_func_inspection.py::test_generic_typed_request_param_is_deprecated [gw0] [ 63%] PASSED tests/server/lowlevel/test_func_inspection.py::test_generic_typed_request_param_is_deprecated tests/server/lowlevel/test_func_inspection.py::test_wrong_typed_request_param_is_deprecated [gw0] [ 63%] PASSED tests/server/lowlevel/test_func_inspection.py::test_wrong_typed_request_param_is_deprecated tests/server/lowlevel/test_func_inspection.py::test_required_param_before_typed_request_attempts_to_pass [gw0] [ 63%] PASSED tests/server/lowlevel/test_func_inspection.py::test_required_param_before_typed_request_attempts_to_pass tests/server/lowlevel/test_func_inspection.py::test_positional_only_param_with_correct_type [gw0] [ 63%] PASSED tests/server/lowlevel/test_func_inspection.py::test_positional_only_param_with_correct_type tests/server/lowlevel/test_func_inspection.py::test_keyword_only_param_with_correct_type [gw0] [ 63%] PASSED tests/server/lowlevel/test_func_inspection.py::test_keyword_only_param_with_correct_type tests/server/lowlevel/test_func_inspection.py::test_different_request_types [gw0] [ 63%] PASSED tests/server/lowlevel/test_func_inspection.py::test_different_request_types tests/server/lowlevel/test_func_inspection.py::test_mixed_params_with_typed_request [gw0] [ 64%] PASSED tests/server/lowlevel/test_func_inspection.py::test_mixed_params_with_typed_request tests/server/lowlevel/test_helper_types.py::TestReadResourceContentsMetadata::test_read_resource_contents_with_metadata [gw0] [ 64%] PASSED tests/server/lowlevel/test_helper_types.py::TestReadResourceContentsMetadata::test_read_resource_contents_with_metadata tests/server/lowlevel/test_helper_types.py::TestReadResourceContentsMetadata::test_read_resource_contents_without_metadata [gw0] [ 64%] PASSED tests/server/lowlevel/test_helper_types.py::TestReadResourceContentsMetadata::test_read_resource_contents_without_metadata tests/server/lowlevel/test_helper_types.py::TestReadResourceContentsMetadata::test_read_resource_contents_with_bytes [gw0] [ 64%] PASSED tests/server/lowlevel/test_helper_types.py::TestReadResourceContentsMetadata::test_read_resource_contents_with_bytes tests/server/lowlevel/test_server_listing.py::test_list_prompts_basic [gw0] [ 64%] PASSED tests/server/lowlevel/test_server_listing.py::test_list_prompts_basic tests/server/lowlevel/test_server_listing.py::test_list_resources_basic [gw0] [ 64%] PASSED tests/server/lowlevel/test_server_listing.py::test_list_resources_basic tests/server/lowlevel/test_server_listing.py::test_list_tools_basic [gw0] [ 64%] PASSED tests/server/lowlevel/test_server_listing.py::test_list_tools_basic tests/server/lowlevel/test_server_listing.py::test_list_prompts_empty [gw0] [ 64%] PASSED tests/server/lowlevel/test_server_listing.py::test_list_prompts_empty tests/server/lowlevel/test_server_listing.py::test_list_resources_empty [gw0] [ 64%] PASSED tests/server/lowlevel/test_server_listing.py::test_list_resources_empty tests/server/lowlevel/test_server_listing.py::test_list_tools_empty [gw0] [ 64%] PASSED tests/server/lowlevel/test_server_listing.py::test_list_tools_empty tests/server/lowlevel/test_server_pagination.py::test_list_prompts_pagination [gw0] [ 64%] PASSED tests/server/lowlevel/test_server_pagination.py::test_list_prompts_pagination tests/server/lowlevel/test_server_pagination.py::test_list_resources_pagination [gw0] [ 64%] PASSED tests/server/lowlevel/test_server_pagination.py::test_list_resources_pagination tests/server/lowlevel/test_server_pagination.py::test_list_tools_pagination [gw0] [ 65%] PASSED tests/server/lowlevel/test_server_pagination.py::test_list_tools_pagination tests/server/test_cancel_handling.py::test_server_remains_functional_after_cancel [gw0] [ 65%] PASSED tests/server/test_cancel_handling.py::test_server_remains_functional_after_cancel tests/server/test_cancel_handling.py::test_server_cancels_in_flight_handlers_on_transport_close [gw0] [ 65%] PASSED tests/server/test_cancel_handling.py::test_server_cancels_in_flight_handlers_on_transport_close tests/server/test_cancel_handling.py::test_server_handles_transport_close_with_pending_server_to_client_requests [gw0] [ 65%] PASSED tests/server/test_cancel_handling.py::test_server_handles_transport_close_with_pending_server_to_client_requests tests/server/test_completion_with_context.py::test_completion_handler_receives_context [gw0] [ 65%] PASSED tests/server/test_completion_with_context.py::test_completion_handler_receives_context tests/server/test_completion_with_context.py::test_completion_backward_compatibility [gw0] [ 65%] PASSED tests/server/test_completion_with_context.py::test_completion_backward_compatibility tests/server/test_completion_with_context.py::test_dependent_completion_scenario [gw0] [ 65%] PASSED tests/server/test_completion_with_context.py::test_dependent_completion_scenario tests/server/test_completion_with_context.py::test_completion_error_on_missing_context [gw0] [ 65%] PASSED tests/server/test_completion_with_context.py::test_completion_error_on_missing_context tests/server/test_lifespan.py::test_lowlevel_server_lifespan [gw0] [ 65%] PASSED tests/server/test_lifespan.py::test_lowlevel_server_lifespan tests/server/test_lifespan.py::test_fastmcp_server_lifespan [gw0] [ 65%] FAILED tests/server/test_lifespan.py::test_fastmcp_server_lifespan tests/server/test_lowlevel_exception_handling.py::test_exception_handling_with_raise_exceptions_true [gw0] [ 65%] PASSED tests/server/test_lowlevel_exception_handling.py::test_exception_handling_with_raise_exceptions_true tests/server/test_lowlevel_exception_handling.py::test_exception_handling_with_raise_exceptions_false[ValueError-Test validation error] [gw0] [ 65%] PASSED tests/server/test_lowlevel_exception_handling.py::test_exception_handling_with_raise_exceptions_false[ValueError-Test validation error] tests/server/test_lowlevel_exception_handling.py::test_exception_handling_with_raise_exceptions_false[RuntimeError-Test runtime error] [gw0] [ 66%] PASSED tests/server/test_lowlevel_exception_handling.py::test_exception_handling_with_raise_exceptions_false[RuntimeError-Test runtime error] tests/server/test_lowlevel_exception_handling.py::test_exception_handling_with_raise_exceptions_false[KeyError-Test key error] [gw0] [ 66%] PASSED tests/server/test_lowlevel_exception_handling.py::test_exception_handling_with_raise_exceptions_false[KeyError-Test key error] tests/server/test_lowlevel_exception_handling.py::test_exception_handling_with_raise_exceptions_false[Exception-Basic error] [gw0] [ 66%] PASSED tests/server/test_lowlevel_exception_handling.py::test_exception_handling_with_raise_exceptions_false[Exception-Basic error] tests/server/test_lowlevel_exception_handling.py::test_normal_message_handling_not_affected [gw0] [ 66%] PASSED tests/server/test_lowlevel_exception_handling.py::test_normal_message_handling_not_affected tests/server/test_lowlevel_input_validation.py::test_valid_tool_call [gw0] [ 66%] PASSED tests/server/test_lowlevel_input_validation.py::test_valid_tool_call tests/server/test_lowlevel_input_validation.py::test_invalid_tool_call_missing_required [gw0] [ 66%] PASSED tests/server/test_lowlevel_input_validation.py::test_invalid_tool_call_missing_required tests/server/test_lowlevel_input_validation.py::test_invalid_tool_call_wrong_type [gw0] [ 66%] PASSED tests/server/test_lowlevel_input_validation.py::test_invalid_tool_call_wrong_type tests/server/test_lowlevel_input_validation.py::test_cache_refresh_on_missing_tool [gw0] [ 66%] PASSED tests/server/test_lowlevel_input_validation.py::test_cache_refresh_on_missing_tool tests/server/test_lowlevel_input_validation.py::test_enum_constraint_validation [gw0] [ 66%] PASSED tests/server/test_lowlevel_input_validation.py::test_enum_constraint_validation tests/server/test_lowlevel_input_validation.py::test_tool_not_in_list_logs_warning [gw0] [ 66%] PASSED tests/server/test_lowlevel_input_validation.py::test_tool_not_in_list_logs_warning tests/server/test_lowlevel_output_validation.py::test_content_only_without_output_schema [gw0] [ 66%] PASSED tests/server/test_lowlevel_output_validation.py::test_content_only_without_output_schema tests/server/test_lowlevel_output_validation.py::test_dict_only_without_output_schema [gw0] [ 66%] PASSED tests/server/test_lowlevel_output_validation.py::test_dict_only_without_output_schema tests/server/test_lowlevel_output_validation.py::test_both_content_and_dict_without_output_schema [gw0] [ 66%] PASSED tests/server/test_lowlevel_output_validation.py::test_both_content_and_dict_without_output_schema tests/server/test_lowlevel_output_validation.py::test_content_only_with_output_schema_error [gw0] [ 67%] PASSED tests/server/test_lowlevel_output_validation.py::test_content_only_with_output_schema_error tests/server/test_lowlevel_output_validation.py::test_valid_dict_with_output_schema [gw0] [ 67%] PASSED tests/server/test_lowlevel_output_validation.py::test_valid_dict_with_output_schema tests/server/test_lowlevel_output_validation.py::test_invalid_dict_with_output_schema [gw0] [ 67%] PASSED tests/server/test_lowlevel_output_validation.py::test_invalid_dict_with_output_schema tests/server/test_lowlevel_output_validation.py::test_both_content_and_valid_dict_with_output_schema [gw0] [ 67%] PASSED tests/server/test_lowlevel_output_validation.py::test_both_content_and_valid_dict_with_output_schema tests/server/test_lowlevel_output_validation.py::test_tool_call_result [gw0] [ 67%] PASSED tests/server/test_lowlevel_output_validation.py::test_tool_call_result tests/server/test_lowlevel_output_validation.py::test_output_schema_type_validation [gw0] [ 67%] PASSED tests/server/test_lowlevel_output_validation.py::test_output_schema_type_validation tests/server/test_lowlevel_tool_annotations.py::test_lowlevel_server_tool_annotations [gw0] [ 67%] PASSED tests/server/test_lowlevel_tool_annotations.py::test_lowlevel_server_tool_annotations tests/server/test_read_resource.py::test_read_resource_text [gw0] [ 67%] PASSED tests/server/test_read_resource.py::test_read_resource_text tests/server/test_read_resource.py::test_read_resource_binary [gw0] [ 67%] PASSED tests/server/test_read_resource.py::test_read_resource_binary tests/server/test_read_resource.py::test_read_resource_default_mime [gw0] [ 67%] PASSED tests/server/test_read_resource.py::test_read_resource_default_mime tests/server/test_session.py::test_server_session_initialize [gw0] [ 67%] PASSED tests/server/test_session.py::test_server_session_initialize tests/server/test_session.py::test_server_capabilities [gw0] [ 67%] PASSED tests/server/test_session.py::test_server_capabilities tests/server/test_session.py::test_server_session_initialize_with_older_protocol_version [gw0] [ 68%] PASSED tests/server/test_session.py::test_server_session_initialize_with_older_protocol_version tests/server/test_session.py::test_ping_request_before_initialization [gw0] [ 68%] PASSED tests/server/test_session.py::test_ping_request_before_initialization tests/server/test_session.py::test_create_message_tool_result_validation [gw0] [ 68%] PASSED tests/server/test_session.py::test_create_message_tool_result_validation tests/server/test_session.py::test_create_message_without_tools_capability [gw0] [ 68%] PASSED tests/server/test_session.py::test_create_message_without_tools_capability tests/server/test_session.py::test_other_requests_blocked_before_initialization [gw0] [ 68%] PASSED tests/server/test_session.py::test_other_requests_blocked_before_initialization tests/server/test_session_race_condition.py::test_request_immediately_after_initialize_response [gw0] [ 68%] PASSED tests/server/test_session_race_condition.py::test_request_immediately_after_initialize_response tests/server/test_sse_security.py::test_sse_security_default_settings [gw1] [ 68%] PASSED tests/client/test_stdio.py::TestChildProcessCleanup::test_early_parent_exit tests/client/test_stdio.py::test_stdio_client_graceful_stdin_exit [gw1] [ 68%] PASSED tests/client/test_stdio.py::test_stdio_client_graceful_stdin_exit tests/client/test_stdio.py::test_stdio_client_stdin_close_ignored [gw0] [ 68%] PASSED tests/server/test_sse_security.py::test_sse_security_default_settings tests/server/test_sse_security.py::test_sse_security_invalid_host_header [gw0] [ 68%] PASSED tests/server/test_sse_security.py::test_sse_security_invalid_host_header tests/server/test_sse_security.py::test_sse_security_invalid_origin_header [gw0] [ 68%] PASSED tests/server/test_sse_security.py::test_sse_security_invalid_origin_header tests/server/test_sse_security.py::test_sse_security_post_invalid_content_type [gw0] [ 68%] PASSED tests/server/test_sse_security.py::test_sse_security_post_invalid_content_type tests/server/test_sse_security.py::test_sse_security_disabled [gw1] [ 69%] PASSED tests/client/test_stdio.py::test_stdio_client_stdin_close_ignored tests/experimental/tasks/client/test_capabilities.py::test_client_capabilities_without_tasks [gw1] [ 69%] PASSED tests/experimental/tasks/client/test_capabilities.py::test_client_capabilities_without_tasks tests/experimental/tasks/client/test_capabilities.py::test_client_capabilities_with_tasks [gw1] [ 69%] PASSED tests/experimental/tasks/client/test_capabilities.py::test_client_capabilities_with_tasks tests/experimental/tasks/client/test_capabilities.py::test_client_capabilities_auto_built_from_handlers [gw1] [ 69%] PASSED tests/experimental/tasks/client/test_capabilities.py::test_client_capabilities_auto_built_from_handlers tests/experimental/tasks/client/test_capabilities.py::test_client_capabilities_with_task_augmented_handlers [gw1] [ 69%] PASSED tests/experimental/tasks/client/test_capabilities.py::test_client_capabilities_with_task_augmented_handlers tests/experimental/tasks/client/test_handlers.py::test_client_handles_get_task_request [gw1] [ 69%] PASSED tests/experimental/tasks/client/test_handlers.py::test_client_handles_get_task_request tests/experimental/tasks/client/test_handlers.py::test_client_handles_get_task_result_request [gw1] [ 69%] PASSED tests/experimental/tasks/client/test_handlers.py::test_client_handles_get_task_result_request tests/experimental/tasks/client/test_handlers.py::test_client_handles_list_tasks_request [gw1] [ 69%] PASSED tests/experimental/tasks/client/test_handlers.py::test_client_handles_list_tasks_request tests/experimental/tasks/client/test_handlers.py::test_client_handles_cancel_task_request [gw1] [ 69%] PASSED tests/experimental/tasks/client/test_handlers.py::test_client_handles_cancel_task_request tests/experimental/tasks/client/test_handlers.py::test_client_task_augmented_sampling [gw1] [ 69%] PASSED tests/experimental/tasks/client/test_handlers.py::test_client_task_augmented_sampling tests/experimental/tasks/client/test_handlers.py::test_client_task_augmented_elicitation [gw1] [ 69%] PASSED tests/experimental/tasks/client/test_handlers.py::test_client_task_augmented_elicitation tests/experimental/tasks/client/test_handlers.py::test_client_returns_error_for_unhandled_task_request [gw1] [ 69%] PASSED tests/experimental/tasks/client/test_handlers.py::test_client_returns_error_for_unhandled_task_request tests/experimental/tasks/client/test_handlers.py::test_client_returns_error_for_unhandled_task_result_request [gw1] [ 69%] PASSED tests/experimental/tasks/client/test_handlers.py::test_client_returns_error_for_unhandled_task_result_request tests/experimental/tasks/client/test_handlers.py::test_client_returns_error_for_unhandled_list_tasks_request [gw1] [ 70%] PASSED tests/experimental/tasks/client/test_handlers.py::test_client_returns_error_for_unhandled_list_tasks_request tests/experimental/tasks/client/test_handlers.py::test_client_returns_error_for_unhandled_cancel_task_request [gw1] [ 70%] PASSED tests/experimental/tasks/client/test_handlers.py::test_client_returns_error_for_unhandled_cancel_task_request tests/experimental/tasks/client/test_handlers.py::test_client_returns_error_for_unhandled_task_augmented_sampling [gw1] [ 70%] PASSED tests/experimental/tasks/client/test_handlers.py::test_client_returns_error_for_unhandled_task_augmented_sampling tests/experimental/tasks/client/test_handlers.py::test_client_returns_error_for_unhandled_task_augmented_elicitation [gw1] [ 70%] PASSED tests/experimental/tasks/client/test_handlers.py::test_client_returns_error_for_unhandled_task_augmented_elicitation tests/experimental/tasks/client/test_poll_task.py::test_poll_task_yields_until_completed [gw1] [ 70%] PASSED tests/experimental/tasks/client/test_poll_task.py::test_poll_task_yields_until_completed tests/experimental/tasks/client/test_poll_task.py::test_poll_task_exits_on_terminal[completed] [gw1] [ 70%] PASSED tests/experimental/tasks/client/test_poll_task.py::test_poll_task_exits_on_terminal[completed] tests/experimental/tasks/client/test_poll_task.py::test_poll_task_exits_on_terminal[failed] [gw1] [ 70%] PASSED tests/experimental/tasks/client/test_poll_task.py::test_poll_task_exits_on_terminal[failed] tests/experimental/tasks/client/test_poll_task.py::test_poll_task_exits_on_terminal[cancelled] [gw1] [ 70%] PASSED tests/experimental/tasks/client/test_poll_task.py::test_poll_task_exits_on_terminal[cancelled] tests/experimental/tasks/client/test_poll_task.py::test_poll_task_continues_through_input_required [gw1] [ 70%] PASSED tests/experimental/tasks/client/test_poll_task.py::test_poll_task_continues_through_input_required tests/experimental/tasks/client/test_poll_task.py::test_poll_task_passes_task_id [gw1] [ 70%] PASSED tests/experimental/tasks/client/test_poll_task.py::test_poll_task_passes_task_id tests/experimental/tasks/client/test_poll_task.py::test_poll_task_yields_full_result [gw1] [ 70%] PASSED tests/experimental/tasks/client/test_poll_task.py::test_poll_task_yields_full_result tests/experimental/tasks/client/test_tasks.py::test_session_experimental_get_task [gw1] [ 70%] PASSED tests/experimental/tasks/client/test_tasks.py::test_session_experimental_get_task tests/experimental/tasks/client/test_tasks.py::test_session_experimental_get_task_result [gw1] [ 71%] PASSED tests/experimental/tasks/client/test_tasks.py::test_session_experimental_get_task_result tests/experimental/tasks/client/test_tasks.py::test_session_experimental_list_tasks [gw1] [ 71%] PASSED tests/experimental/tasks/client/test_tasks.py::test_session_experimental_list_tasks tests/experimental/tasks/client/test_tasks.py::test_session_experimental_cancel_task [gw1] [ 71%] PASSED tests/experimental/tasks/client/test_tasks.py::test_session_experimental_cancel_task tests/experimental/tasks/server/test_context.py::test_task_context_properties [gw1] [ 71%] PASSED tests/experimental/tasks/server/test_context.py::test_task_context_properties tests/experimental/tasks/server/test_context.py::test_task_context_update_status [gw1] [ 71%] PASSED tests/experimental/tasks/server/test_context.py::test_task_context_update_status tests/experimental/tasks/server/test_context.py::test_task_context_complete [gw1] [ 71%] PASSED tests/experimental/tasks/server/test_context.py::test_task_context_complete tests/experimental/tasks/server/test_context.py::test_task_context_fail [gw1] [ 71%] PASSED tests/experimental/tasks/server/test_context.py::test_task_context_fail tests/experimental/tasks/server/test_context.py::test_task_context_cancellation [gw1] [ 71%] PASSED tests/experimental/tasks/server/test_context.py::test_task_context_cancellation tests/experimental/tasks/server/test_context.py::test_create_task_state_generates_id [gw1] [ 71%] PASSED tests/experimental/tasks/server/test_context.py::test_create_task_state_generates_id tests/experimental/tasks/server/test_context.py::test_create_task_state_uses_provided_id [gw1] [ 71%] PASSED tests/experimental/tasks/server/test_context.py::test_create_task_state_uses_provided_id tests/experimental/tasks/server/test_context.py::test_create_task_state_null_ttl [gw1] [ 71%] PASSED tests/experimental/tasks/server/test_context.py::test_create_task_state_null_ttl tests/experimental/tasks/server/test_context.py::test_create_task_state_has_created_at [gw1] [ 71%] PASSED tests/experimental/tasks/server/test_context.py::test_create_task_state_has_created_at tests/experimental/tasks/server/test_context.py::test_task_execution_provides_context [gw1] [ 72%] PASSED tests/experimental/tasks/server/test_context.py::test_task_execution_provides_context tests/experimental/tasks/server/test_context.py::test_task_execution_auto_fails_on_exception [gw1] [ 72%] PASSED tests/experimental/tasks/server/test_context.py::test_task_execution_auto_fails_on_exception tests/experimental/tasks/server/test_context.py::test_task_execution_doesnt_fail_if_already_terminal [gw1] [ 72%] PASSED tests/experimental/tasks/server/test_context.py::test_task_execution_doesnt_fail_if_already_terminal tests/experimental/tasks/server/test_context.py::test_task_execution_not_found [gw1] [ 72%] PASSED tests/experimental/tasks/server/test_context.py::test_task_execution_not_found tests/experimental/tasks/server/test_integration.py::test_task_lifecycle_with_task_execution [gw1] [ 72%] PASSED tests/experimental/tasks/server/test_integration.py::test_task_lifecycle_with_task_execution tests/experimental/tasks/server/test_integration.py::test_task_auto_fails_on_exception [gw1] [ 72%] PASSED tests/experimental/tasks/server/test_integration.py::test_task_auto_fails_on_exception tests/experimental/tasks/server/test_run_task_flow.py::test_run_task_basic_flow [gw1] [ 72%] PASSED tests/experimental/tasks/server/test_run_task_flow.py::test_run_task_basic_flow tests/experimental/tasks/server/test_run_task_flow.py::test_run_task_auto_fails_on_exception [gw1] [ 72%] PASSED tests/experimental/tasks/server/test_run_task_flow.py::test_run_task_auto_fails_on_exception tests/experimental/tasks/server/test_run_task_flow.py::test_enable_tasks_auto_registers_handlers [gw1] [ 72%] PASSED tests/experimental/tasks/server/test_run_task_flow.py::test_enable_tasks_auto_registers_handlers tests/experimental/tasks/server/test_run_task_flow.py::test_enable_tasks_with_custom_store_and_queue [gw1] [ 72%] PASSED tests/experimental/tasks/server/test_run_task_flow.py::test_enable_tasks_with_custom_store_and_queue tests/experimental/tasks/server/test_run_task_flow.py::test_enable_tasks_skips_default_handlers_when_custom_registered [gw1] [ 72%] PASSED tests/experimental/tasks/server/test_run_task_flow.py::test_enable_tasks_skips_default_handlers_when_custom_registered tests/experimental/tasks/server/test_run_task_flow.py::test_run_task_without_enable_tasks_raises [gw1] [ 72%] PASSED tests/experimental/tasks/server/test_run_task_flow.py::test_run_task_without_enable_tasks_raises tests/experimental/tasks/server/test_run_task_flow.py::test_task_support_task_group_before_run_raises [gw1] [ 72%] PASSED tests/experimental/tasks/server/test_run_task_flow.py::test_task_support_task_group_before_run_raises tests/experimental/tasks/server/test_run_task_flow.py::test_run_task_without_session_raises [gw1] [ 73%] PASSED tests/experimental/tasks/server/test_run_task_flow.py::test_run_task_without_session_raises tests/experimental/tasks/server/test_run_task_flow.py::test_run_task_without_task_metadata_raises [gw1] [ 73%] PASSED tests/experimental/tasks/server/test_run_task_flow.py::test_run_task_without_task_metadata_raises tests/experimental/tasks/server/test_run_task_flow.py::test_run_task_with_model_immediate_response [gw1] [ 73%] PASSED tests/experimental/tasks/server/test_run_task_flow.py::test_run_task_with_model_immediate_response tests/experimental/tasks/server/test_run_task_flow.py::test_run_task_doesnt_complete_if_already_terminal [gw1] [ 73%] PASSED tests/experimental/tasks/server/test_run_task_flow.py::test_run_task_doesnt_complete_if_already_terminal tests/experimental/tasks/server/test_run_task_flow.py::test_run_task_doesnt_fail_if_already_terminal [gw1] [ 73%] PASSED tests/experimental/tasks/server/test_run_task_flow.py::test_run_task_doesnt_fail_if_already_terminal tests/experimental/tasks/server/test_server.py::test_list_tasks_handler [gw1] [ 73%] PASSED tests/experimental/tasks/server/test_server.py::test_list_tasks_handler tests/experimental/tasks/server/test_server.py::test_get_task_handler [gw1] [ 73%] PASSED tests/experimental/tasks/server/test_server.py::test_get_task_handler tests/experimental/tasks/server/test_server.py::test_get_task_result_handler [gw1] [ 73%] PASSED tests/experimental/tasks/server/test_server.py::test_get_task_result_handler tests/experimental/tasks/server/test_server.py::test_cancel_task_handler [gw1] [ 73%] PASSED tests/experimental/tasks/server/test_server.py::test_cancel_task_handler tests/experimental/tasks/server/test_server.py::test_server_capabilities_include_tasks [gw1] [ 73%] PASSED tests/experimental/tasks/server/test_server.py::test_server_capabilities_include_tasks tests/experimental/tasks/server/test_server.py::test_server_capabilities_partial_tasks [gw1] [ 73%] PASSED tests/experimental/tasks/server/test_server.py::test_server_capabilities_partial_tasks tests/experimental/tasks/server/test_server.py::test_tool_with_task_execution_metadata [gw1] [ 73%] PASSED tests/experimental/tasks/server/test_server.py::test_tool_with_task_execution_metadata tests/experimental/tasks/server/test_server.py::test_task_metadata_in_call_tool_request [gw1] [ 74%] PASSED tests/experimental/tasks/server/test_server.py::test_task_metadata_in_call_tool_request tests/experimental/tasks/server/test_server.py::test_task_metadata_is_task_property [gw1] [ 74%] PASSED tests/experimental/tasks/server/test_server.py::test_task_metadata_is_task_property tests/experimental/tasks/server/test_server.py::test_update_capabilities_no_handlers [gw1] [ 74%] PASSED tests/experimental/tasks/server/test_server.py::test_update_capabilities_no_handlers tests/experimental/tasks/server/test_server.py::test_default_task_handlers_via_enable_tasks [gw1] [ 74%] PASSED tests/experimental/tasks/server/test_server.py::test_default_task_handlers_via_enable_tasks tests/experimental/tasks/server/test_server.py::test_build_elicit_form_request [gw1] [ 74%] PASSED tests/experimental/tasks/server/test_server.py::test_build_elicit_form_request tests/experimental/tasks/server/test_server.py::test_build_elicit_url_request [gw1] [ 74%] PASSED tests/experimental/tasks/server/test_server.py::test_build_elicit_url_request tests/experimental/tasks/server/test_server.py::test_build_create_message_request [gw1] [ 74%] PASSED tests/experimental/tasks/server/test_server.py::test_build_create_message_request tests/experimental/tasks/server/test_server.py::test_send_message [gw1] [ 74%] PASSED tests/experimental/tasks/server/test_server.py::test_send_message tests/experimental/tasks/server/test_server.py::test_response_routing_success [gw1] [ 74%] PASSED tests/experimental/tasks/server/test_server.py::test_response_routing_success tests/experimental/tasks/server/test_server.py::test_response_routing_error [gw1] [ 74%] PASSED tests/experimental/tasks/server/test_server.py::test_response_routing_error tests/experimental/tasks/server/test_server.py::test_response_routing_skips_non_matching_routers [gw1] [ 74%] PASSED tests/experimental/tasks/server/test_server.py::test_response_routing_skips_non_matching_routers tests/experimental/tasks/server/test_server.py::test_error_routing_skips_non_matching_routers [gw1] [ 74%] PASSED tests/experimental/tasks/server/test_server.py::test_error_routing_skips_non_matching_routers tests/experimental/tasks/server/test_server_task_context.py::test_server_task_context_properties [gw1] [ 75%] PASSED tests/experimental/tasks/server/test_server_task_context.py::test_server_task_context_properties tests/experimental/tasks/server/test_server_task_context.py::test_server_task_context_request_cancellation [gw1] [ 75%] PASSED tests/experimental/tasks/server/test_server_task_context.py::test_server_task_context_request_cancellation tests/experimental/tasks/server/test_server_task_context.py::test_server_task_context_update_status_with_notify [gw1] [ 75%] PASSED tests/experimental/tasks/server/test_server_task_context.py::test_server_task_context_update_status_with_notify tests/experimental/tasks/server/test_server_task_context.py::test_server_task_context_update_status_without_notify [gw1] [ 75%] PASSED tests/experimental/tasks/server/test_server_task_context.py::test_server_task_context_update_status_without_notify tests/experimental/tasks/server/test_server_task_context.py::test_server_task_context_complete_with_notify [gw1] [ 75%] PASSED tests/experimental/tasks/server/test_server_task_context.py::test_server_task_context_complete_with_notify tests/experimental/tasks/server/test_server_task_context.py::test_server_task_context_fail_with_notify [gw1] [ 75%] PASSED tests/experimental/tasks/server/test_server_task_context.py::test_server_task_context_fail_with_notify tests/experimental/tasks/server/test_server_task_context.py::test_elicit_raises_when_client_lacks_capability [gw1] [ 75%] PASSED tests/experimental/tasks/server/test_server_task_context.py::test_elicit_raises_when_client_lacks_capability tests/experimental/tasks/server/test_server_task_context.py::test_create_message_raises_when_client_lacks_capability [gw1] [ 75%] PASSED tests/experimental/tasks/server/test_server_task_context.py::test_create_message_raises_when_client_lacks_capability tests/experimental/tasks/server/test_server_task_context.py::test_elicit_raises_without_handler [gw1] [ 75%] PASSED tests/experimental/tasks/server/test_server_task_context.py::test_elicit_raises_without_handler tests/experimental/tasks/server/test_server_task_context.py::test_elicit_url_raises_without_handler [gw1] [ 75%] PASSED tests/experimental/tasks/server/test_server_task_context.py::test_elicit_url_raises_without_handler tests/experimental/tasks/server/test_server_task_context.py::test_create_message_raises_without_handler [gw1] [ 75%] PASSED tests/experimental/tasks/server/test_server_task_context.py::test_create_message_raises_without_handler tests/experimental/tasks/server/test_server_task_context.py::test_elicit_queues_request_and_waits_for_response [gw1] [ 75%] PASSED tests/experimental/tasks/server/test_server_task_context.py::test_elicit_queues_request_and_waits_for_response tests/experimental/tasks/server/test_server_task_context.py::test_elicit_url_queues_request_and_waits_for_response [gw1] [ 75%] PASSED tests/experimental/tasks/server/test_server_task_context.py::test_elicit_url_queues_request_and_waits_for_response tests/experimental/tasks/server/test_server_task_context.py::test_create_message_queues_request_and_waits_for_response [gw1] [ 76%] PASSED tests/experimental/tasks/server/test_server_task_context.py::test_create_message_queues_request_and_waits_for_response tests/experimental/tasks/server/test_server_task_context.py::test_elicit_restores_status_on_cancellation [gw1] [ 76%] PASSED tests/experimental/tasks/server/test_server_task_context.py::test_elicit_restores_status_on_cancellation tests/experimental/tasks/server/test_server_task_context.py::test_create_message_restores_status_on_cancellation [gw1] [ 76%] PASSED tests/experimental/tasks/server/test_server_task_context.py::test_create_message_restores_status_on_cancellation tests/experimental/tasks/server/test_server_task_context.py::test_elicit_as_task_raises_without_handler [gw1] [ 76%] PASSED tests/experimental/tasks/server/test_server_task_context.py::test_elicit_as_task_raises_without_handler tests/experimental/tasks/server/test_server_task_context.py::test_create_message_as_task_raises_without_handler [gw1] [ 76%] PASSED tests/experimental/tasks/server/test_server_task_context.py::test_create_message_as_task_raises_without_handler tests/experimental/tasks/server/test_store.py::test_create_and_get [gw1] [ 76%] PASSED tests/experimental/tasks/server/test_store.py::test_create_and_get tests/experimental/tasks/server/test_store.py::test_create_with_custom_id [gw1] [ 76%] PASSED tests/experimental/tasks/server/test_store.py::test_create_with_custom_id tests/experimental/tasks/server/test_store.py::test_create_duplicate_id_raises [gw1] [ 76%] PASSED tests/experimental/tasks/server/test_store.py::test_create_duplicate_id_raises tests/experimental/tasks/server/test_store.py::test_get_nonexistent_returns_none [gw1] [ 76%] PASSED tests/experimental/tasks/server/test_store.py::test_get_nonexistent_returns_none tests/experimental/tasks/server/test_store.py::test_update_status [gw1] [ 76%] PASSED tests/experimental/tasks/server/test_store.py::test_update_status tests/experimental/tasks/server/test_store.py::test_update_nonexistent_raises [gw1] [ 76%] PASSED tests/experimental/tasks/server/test_store.py::test_update_nonexistent_raises tests/experimental/tasks/server/test_store.py::test_store_and_get_result [gw1] [ 76%] PASSED tests/experimental/tasks/server/test_store.py::test_store_and_get_result tests/experimental/tasks/server/test_store.py::test_get_result_nonexistent_returns_none [gw1] [ 77%] PASSED tests/experimental/tasks/server/test_store.py::test_get_result_nonexistent_returns_none tests/experimental/tasks/server/test_store.py::test_get_result_no_result_returns_none [gw1] [ 77%] PASSED tests/experimental/tasks/server/test_store.py::test_get_result_no_result_returns_none tests/experimental/tasks/server/test_store.py::test_list_tasks [gw1] [ 77%] PASSED tests/experimental/tasks/server/test_store.py::test_list_tasks tests/experimental/tasks/server/test_store.py::test_list_tasks_pagination [gw1] [ 77%] PASSED tests/experimental/tasks/server/test_store.py::test_list_tasks_pagination tests/experimental/tasks/server/test_store.py::test_list_tasks_invalid_cursor [gw1] [ 77%] PASSED tests/experimental/tasks/server/test_store.py::test_list_tasks_invalid_cursor tests/experimental/tasks/server/test_store.py::test_delete_task [gw1] [ 77%] PASSED tests/experimental/tasks/server/test_store.py::test_delete_task tests/experimental/tasks/server/test_store.py::test_get_all_tasks_helper [gw1] [ 77%] PASSED tests/experimental/tasks/server/test_store.py::test_get_all_tasks_helper tests/experimental/tasks/server/test_store.py::test_store_result_nonexistent_raises [gw1] [ 77%] PASSED tests/experimental/tasks/server/test_store.py::test_store_result_nonexistent_raises tests/experimental/tasks/server/test_store.py::test_create_task_with_null_ttl [gw1] [ 77%] PASSED tests/experimental/tasks/server/test_store.py::test_create_task_with_null_ttl tests/experimental/tasks/server/test_store.py::test_task_expiration_cleanup [gw1] [ 77%] PASSED tests/experimental/tasks/server/test_store.py::test_task_expiration_cleanup tests/experimental/tasks/server/test_store.py::test_task_with_null_ttl_never_expires [gw1] [ 77%] PASSED tests/experimental/tasks/server/test_store.py::test_task_with_null_ttl_never_expires tests/experimental/tasks/server/test_store.py::test_terminal_task_ttl_reset [gw1] [ 77%] PASSED tests/experimental/tasks/server/test_store.py::test_terminal_task_ttl_reset tests/experimental/tasks/server/test_store.py::test_terminal_status_transition_rejected [gw1] [ 78%] PASSED tests/experimental/tasks/server/test_store.py::test_terminal_status_transition_rejected tests/experimental/tasks/server/test_store.py::test_terminal_status_allows_same_status [gw1] [ 78%] PASSED tests/experimental/tasks/server/test_store.py::test_terminal_status_allows_same_status tests/experimental/tasks/server/test_store.py::test_wait_for_update_nonexistent_raises [gw1] [ 78%] PASSED tests/experimental/tasks/server/test_store.py::test_wait_for_update_nonexistent_raises tests/experimental/tasks/server/test_store.py::test_cancel_task_succeeds_for_working_task [gw1] [ 78%] PASSED tests/experimental/tasks/server/test_store.py::test_cancel_task_succeeds_for_working_task tests/experimental/tasks/server/test_store.py::test_cancel_task_rejects_nonexistent_task [gw1] [ 78%] PASSED tests/experimental/tasks/server/test_store.py::test_cancel_task_rejects_nonexistent_task tests/experimental/tasks/server/test_store.py::test_cancel_task_rejects_completed_task [gw1] [ 78%] PASSED tests/experimental/tasks/server/test_store.py::test_cancel_task_rejects_completed_task tests/experimental/tasks/server/test_store.py::test_cancel_task_rejects_failed_task [gw1] [ 78%] PASSED tests/experimental/tasks/server/test_store.py::test_cancel_task_rejects_failed_task tests/experimental/tasks/server/test_store.py::test_cancel_task_rejects_already_cancelled_task [gw1] [ 78%] PASSED tests/experimental/tasks/server/test_store.py::test_cancel_task_rejects_already_cancelled_task tests/experimental/tasks/server/test_store.py::test_cancel_task_succeeds_for_input_required_task [gw1] [ 78%] PASSED tests/experimental/tasks/server/test_store.py::test_cancel_task_succeeds_for_input_required_task tests/experimental/tasks/server/test_task_result_handler.py::test_handle_returns_result_for_completed_task [gw1] [ 78%] PASSED tests/experimental/tasks/server/test_task_result_handler.py::test_handle_returns_result_for_completed_task tests/experimental/tasks/server/test_task_result_handler.py::test_handle_omits_none_fields_from_completed_task_payload [gw1] [ 78%] PASSED tests/experimental/tasks/server/test_task_result_handler.py::test_handle_omits_none_fields_from_completed_task_payload tests/experimental/tasks/server/test_task_result_handler.py::test_handle_raises_for_nonexistent_task [gw1] [ 78%] PASSED tests/experimental/tasks/server/test_task_result_handler.py::test_handle_raises_for_nonexistent_task tests/experimental/tasks/server/test_task_result_handler.py::test_handle_returns_empty_result_when_no_result_stored [gw1] [ 78%] PASSED tests/experimental/tasks/server/test_task_result_handler.py::test_handle_returns_empty_result_when_no_result_stored tests/experimental/tasks/server/test_task_result_handler.py::test_handle_delivers_queued_messages [gw1] [ 79%] PASSED tests/experimental/tasks/server/test_task_result_handler.py::test_handle_delivers_queued_messages tests/experimental/tasks/server/test_task_result_handler.py::test_handle_waits_for_task_completion [gw1] [ 79%] PASSED tests/experimental/tasks/server/test_task_result_handler.py::test_handle_waits_for_task_completion tests/experimental/tasks/server/test_task_result_handler.py::test_route_response_resolves_pending_request [gw1] [ 79%] PASSED tests/experimental/tasks/server/test_task_result_handler.py::test_route_response_resolves_pending_request tests/experimental/tasks/server/test_task_result_handler.py::test_route_response_returns_false_for_unknown_request [gw1] [ 79%] PASSED tests/experimental/tasks/server/test_task_result_handler.py::test_route_response_returns_false_for_unknown_request tests/experimental/tasks/server/test_task_result_handler.py::test_route_response_returns_false_for_already_done_resolver [gw1] [ 79%] PASSED tests/experimental/tasks/server/test_task_result_handler.py::test_route_response_returns_false_for_already_done_resolver tests/experimental/tasks/server/test_task_result_handler.py::test_route_error_resolves_pending_request_with_exception [gw1] [ 79%] PASSED tests/experimental/tasks/server/test_task_result_handler.py::test_route_error_resolves_pending_request_with_exception tests/experimental/tasks/server/test_task_result_handler.py::test_route_error_returns_false_for_unknown_request [gw0] [ 79%] PASSED tests/server/test_sse_security.py::test_sse_security_disabled tests/server/test_sse_security.py::test_sse_security_custom_allowed_hosts [gw1] [ 79%] PASSED tests/experimental/tasks/server/test_task_result_handler.py::test_route_error_returns_false_for_unknown_request tests/experimental/tasks/server/test_task_result_handler.py::test_deliver_registers_resolver_for_request_messages [gw1] [ 79%] PASSED tests/experimental/tasks/server/test_task_result_handler.py::test_deliver_registers_resolver_for_request_messages tests/experimental/tasks/server/test_task_result_handler.py::test_deliver_skips_resolver_registration_when_no_original_id [gw1] [ 79%] PASSED tests/experimental/tasks/server/test_task_result_handler.py::test_deliver_skips_resolver_registration_when_no_original_id tests/experimental/tasks/server/test_task_result_handler.py::test_wait_for_task_update_handles_store_exception [gw1] [ 79%] PASSED tests/experimental/tasks/server/test_task_result_handler.py::test_wait_for_task_update_handles_store_exception tests/experimental/tasks/server/test_task_result_handler.py::test_wait_for_task_update_handles_queue_exception [gw1] [ 79%] PASSED tests/experimental/tasks/server/test_task_result_handler.py::test_wait_for_task_update_handles_queue_exception tests/experimental/tasks/server/test_task_scope.py::test_new_session_scope_is_unique [gw1] [ 80%] PASSED tests/experimental/tasks/server/test_task_scope.py::test_new_session_scope_is_unique tests/experimental/tasks/server/test_task_scope.py::test_scoped_task_id_round_trips_its_scope [gw1] [ 80%] PASSED tests/experimental/tasks/server/test_task_scope.py::test_scoped_task_id_round_trips_its_scope tests/experimental/tasks/server/test_task_scope.py::test_scoped_task_ids_are_unique_within_a_scope [gw1] [ 80%] PASSED tests/experimental/tasks/server/test_task_scope.py::test_scoped_task_ids_are_unique_within_a_scope tests/experimental/tasks/server/test_task_scope.py::test_session_scope_of_returns_none_for_unscoped_ids[plain-task-id] [gw1] [ 80%] PASSED tests/experimental/tasks/server/test_task_scope.py::test_session_scope_of_returns_none_for_unscoped_ids[plain-task-id] tests/experimental/tasks/server/test_task_scope.py::test_session_scope_of_returns_none_for_unscoped_ids[550e8400-e29b-41d4-a716-446655440000] [gw1] [ 80%] PASSED tests/experimental/tasks/server/test_task_scope.py::test_session_scope_of_returns_none_for_unscoped_ids[550e8400-e29b-41d4-a716-446655440000] tests/experimental/tasks/server/test_task_scope.py::test_session_scope_of_returns_none_for_unscoped_ids[] [gw1] [ 80%] PASSED tests/experimental/tasks/server/test_task_scope.py::test_session_scope_of_returns_none_for_unscoped_ids[] tests/experimental/tasks/server/test_task_scope.py::test_session_scope_of_returns_none_for_unscoped_ids[not-a-scope:550e8400-e29b-41d4-a716-446655440000] [gw1] [ 80%] PASSED tests/experimental/tasks/server/test_task_scope.py::test_session_scope_of_returns_none_for_unscoped_ids[not-a-scope:550e8400-e29b-41d4-a716-446655440000] tests/server/test_streamable_http_router.py::test_router_unconsumed_request_stream_does_not_block_siblings [gw1] [ 80%] PASSED tests/server/test_streamable_http_router.py::test_router_unconsumed_request_stream_does_not_block_siblings tests/server/test_streamable_http_router.py::test_priming_store_failure_leaves_no_per_request_state [gw1] [ 80%] PASSED tests/server/test_streamable_http_router.py::test_priming_store_failure_leaves_no_per_request_state tests/server/test_streamable_http_security.py::test_streamable_http_security_default_settings [gw0] [ 80%] PASSED tests/server/test_sse_security.py::test_sse_security_custom_allowed_hosts tests/server/test_sse_security.py::test_sse_security_wildcard_ports [gw1] [ 80%] PASSED tests/server/test_streamable_http_security.py::test_streamable_http_security_default_settings tests/server/test_streamable_http_security.py::test_streamable_http_security_invalid_host_header [gw0] [ 80%] PASSED tests/server/test_sse_security.py::test_sse_security_wildcard_ports tests/server/test_sse_security.py::test_sse_security_post_valid_content_type [gw1] [ 81%] PASSED tests/server/test_streamable_http_security.py::test_streamable_http_security_invalid_host_header tests/server/test_streamable_http_security.py::test_streamable_http_security_invalid_origin_header [gw0] [ 81%] PASSED tests/server/test_sse_security.py::test_sse_security_post_valid_content_type tests/server/test_sse_security.py::test_sse_post_requires_the_credential_that_created_the_session[different-client] [gw0] [ 81%] PASSED tests/server/test_sse_security.py::test_sse_post_requires_the_credential_that_created_the_session[different-client] tests/server/test_sse_security.py::test_sse_post_requires_the_credential_that_created_the_session[unauthenticated-sender] [gw0] [ 81%] PASSED tests/server/test_sse_security.py::test_sse_post_requires_the_credential_that_created_the_session[unauthenticated-sender] tests/server/test_sse_security.py::test_sse_post_requires_the_credential_that_created_the_session[same-client-different-subject] [gw0] [ 81%] PASSED tests/server/test_sse_security.py::test_sse_post_requires_the_credential_that_created_the_session[same-client-different-subject] tests/server/test_sse_security.py::test_sse_post_requires_the_credential_that_created_the_session[same-client-no-subject] [gw0] [ 81%] PASSED tests/server/test_sse_security.py::test_sse_post_requires_the_credential_that_created_the_session[same-client-no-subject] tests/server/test_sse_security.py::test_sse_post_requires_the_credential_that_created_the_session[different-issuer] [gw0] [ 81%] PASSED tests/server/test_sse_security.py::test_sse_post_requires_the_credential_that_created_the_session[different-issuer] tests/server/test_sse_security.py::test_sse_post_requires_the_credential_that_created_the_session[unauthenticated-creator] [gw0] [ 81%] PASSED tests/server/test_sse_security.py::test_sse_post_requires_the_credential_that_created_the_session[unauthenticated-creator] tests/server/test_sse_security.py::test_sse_post_requires_the_credential_that_created_the_session[same-client] [gw0] [ 81%] PASSED tests/server/test_sse_security.py::test_sse_post_requires_the_credential_that_created_the_session[same-client] tests/server/test_sse_security.py::test_sse_post_requires_the_credential_that_created_the_session[same-client-and-subject] [gw0] [ 81%] PASSED tests/server/test_sse_security.py::test_sse_post_requires_the_credential_that_created_the_session[same-client-and-subject] tests/server/test_sse_security.py::test_sse_post_requires_the_credential_that_created_the_session[both-unauthenticated] [gw0] [ 81%] PASSED tests/server/test_sse_security.py::test_sse_post_requires_the_credential_that_created_the_session[both-unauthenticated] tests/server/test_stdio.py::test_stdio_server [gw0] [ 81%] PASSED tests/server/test_stdio.py::test_stdio_server tests/server/test_stdio.py::test_stdio_server_invalid_utf8 [gw0] [ 81%] PASSED tests/server/test_stdio.py::test_stdio_server_invalid_utf8 tests/server/test_streamable_http_manager.py::test_run_can_only_be_called_once [gw0] [ 82%] PASSED tests/server/test_streamable_http_manager.py::test_run_can_only_be_called_once tests/server/test_streamable_http_manager.py::test_run_prevents_concurrent_calls [gw1] [ 82%] PASSED tests/server/test_streamable_http_security.py::test_streamable_http_security_invalid_origin_header tests/server/test_streamable_http_security.py::test_streamable_http_security_invalid_content_type [gw0] [ 82%] PASSED tests/server/test_streamable_http_manager.py::test_run_prevents_concurrent_calls tests/server/test_streamable_http_manager.py::test_handle_request_without_run_raises_error [gw0] [ 82%] PASSED tests/server/test_streamable_http_manager.py::test_handle_request_without_run_raises_error tests/server/test_streamable_http_manager.py::test_stateful_session_cleanup_on_graceful_exit [gw0] [ 82%] PASSED tests/server/test_streamable_http_manager.py::test_stateful_session_cleanup_on_graceful_exit tests/server/test_streamable_http_manager.py::test_stateful_session_cleanup_on_exception [gw0] [ 82%] PASSED tests/server/test_streamable_http_manager.py::test_stateful_session_cleanup_on_exception tests/server/test_streamable_http_manager.py::test_stateless_requests_memory_cleanup [gw0] [ 82%] PASSED tests/server/test_streamable_http_manager.py::test_stateless_requests_memory_cleanup tests/server/test_streamable_http_manager.py::test_unknown_session_id_returns_404 [gw0] [ 82%] PASSED tests/server/test_streamable_http_manager.py::test_unknown_session_id_returns_404 tests/server/test_streamable_http_manager.py::test_idle_session_is_reaped [gw0] [ 82%] PASSED tests/server/test_streamable_http_manager.py::test_idle_session_is_reaped tests/server/test_streamable_http_manager.py::test_session_idle_timeout_rejects_non_positive [gw0] [ 82%] PASSED tests/server/test_streamable_http_manager.py::test_session_idle_timeout_rejects_non_positive tests/server/test_streamable_http_manager.py::test_session_idle_timeout_rejects_stateless [gw0] [ 82%] PASSED tests/server/test_streamable_http_manager.py::test_session_idle_timeout_rejects_stateless tests/server/test_streamable_http_manager.py::test_session_accepts_requests_from_the_credential_that_created_it [gw0] [ 82%] PASSED tests/server/test_streamable_http_manager.py::test_session_accepts_requests_from_the_credential_that_created_it tests/server/test_streamable_http_manager.py::test_session_rejects_requests_from_a_different_credential[POST] [gw0] [ 83%] PASSED tests/server/test_streamable_http_manager.py::test_session_rejects_requests_from_a_different_credential[POST] tests/server/test_streamable_http_manager.py::test_session_rejects_requests_from_a_different_credential[GET] [gw0] [ 83%] PASSED tests/server/test_streamable_http_manager.py::test_session_rejects_requests_from_a_different_credential[GET] tests/server/test_streamable_http_manager.py::test_session_rejects_requests_from_a_different_credential[DELETE] [gw0] [ 83%] PASSED tests/server/test_streamable_http_manager.py::test_session_rejects_requests_from_a_different_credential[DELETE] tests/server/test_streamable_http_manager.py::test_session_rejects_requests_from_a_different_subject_of_the_same_client [gw0] [ 83%] PASSED tests/server/test_streamable_http_manager.py::test_session_rejects_requests_from_a_different_subject_of_the_same_client tests/server/test_streamable_http_manager.py::test_session_rejects_requests_with_the_same_subject_from_a_different_issuer [gw0] [ 83%] PASSED tests/server/test_streamable_http_manager.py::test_session_rejects_requests_with_the_same_subject_from_a_different_issuer tests/server/test_streamable_http_manager.py::test_session_rejects_unauthenticated_requests_for_an_authenticated_session [gw0] [ 83%] PASSED tests/server/test_streamable_http_manager.py::test_session_rejects_unauthenticated_requests_for_an_authenticated_session tests/server/test_streamable_http_manager.py::test_session_rejects_authenticated_requests_for_an_anonymous_session [gw0] [ 83%] PASSED tests/server/test_streamable_http_manager.py::test_session_rejects_authenticated_requests_for_an_anonymous_session tests/server/test_streamable_http_manager.py::test_anonymous_session_accepts_anonymous_requests [gw0] [ 83%] PASSED tests/server/test_streamable_http_manager.py::test_anonymous_session_accepts_anonymous_requests tests/server/test_websocket_security.py::test_ws_security_disabled [gw1] [ 83%] PASSED tests/server/test_streamable_http_security.py::test_streamable_http_security_invalid_content_type tests/server/test_streamable_http_security.py::test_streamable_http_security_disabled [gw0] [ 83%] PASSED tests/server/test_websocket_security.py::test_ws_security_disabled tests/server/test_websocket_security.py::test_ws_security_rejects_before_accept [gw0] [ 83%] PASSED tests/server/test_websocket_security.py::test_ws_security_rejects_before_accept tests/shared/test_auth.py::TestOAuthMetadata::test_oauth [gw0] [ 83%] PASSED tests/shared/test_auth.py::TestOAuthMetadata::test_oauth tests/shared/test_auth.py::TestOAuthMetadata::test_oidc [gw0] [ 84%] PASSED tests/shared/test_auth.py::TestOAuthMetadata::test_oidc tests/shared/test_auth.py::TestOAuthMetadata::test_oauth_with_jarm [gw0] [ 84%] PASSED tests/shared/test_auth.py::TestOAuthMetadata::test_oauth_with_jarm tests/shared/test_auth.py::test_optional_url_empty_string_coerced_to_none[client_uri] [gw0] [ 84%] PASSED tests/shared/test_auth.py::test_optional_url_empty_string_coerced_to_none[client_uri] tests/shared/test_auth.py::test_optional_url_empty_string_coerced_to_none[logo_uri] [gw0] [ 84%] PASSED tests/shared/test_auth.py::test_optional_url_empty_string_coerced_to_none[logo_uri] tests/shared/test_auth.py::test_optional_url_empty_string_coerced_to_none[tos_uri] [gw0] [ 84%] PASSED tests/shared/test_auth.py::test_optional_url_empty_string_coerced_to_none[tos_uri] tests/shared/test_auth.py::test_optional_url_empty_string_coerced_to_none[policy_uri] [gw0] [ 84%] PASSED tests/shared/test_auth.py::test_optional_url_empty_string_coerced_to_none[policy_uri] tests/shared/test_auth.py::test_optional_url_empty_string_coerced_to_none[jwks_uri] [gw0] [ 84%] PASSED tests/shared/test_auth.py::test_optional_url_empty_string_coerced_to_none[jwks_uri] tests/shared/test_auth.py::test_all_optional_urls_empty_together [gw0] [ 84%] PASSED tests/shared/test_auth.py::test_all_optional_urls_empty_together tests/shared/test_auth.py::test_valid_url_passes_through_unchanged [gw0] [ 84%] PASSED tests/shared/test_auth.py::test_valid_url_passes_through_unchanged tests/shared/test_auth.py::test_information_full_inherits_coercion [gw0] [ 84%] PASSED tests/shared/test_auth.py::test_information_full_inherits_coercion tests/shared/test_auth.py::test_invalid_non_empty_url_still_rejected [gw0] [ 84%] PASSED tests/shared/test_auth.py::test_invalid_non_empty_url_still_rejected tests/shared/test_auth_utils.py::TestResourceUrlFromServerUrl::test_removes_fragment [gw0] [ 84%] PASSED tests/shared/test_auth_utils.py::TestResourceUrlFromServerUrl::test_removes_fragment tests/shared/test_auth_utils.py::TestResourceUrlFromServerUrl::test_preserves_path [gw0] [ 84%] PASSED tests/shared/test_auth_utils.py::TestResourceUrlFromServerUrl::test_preserves_path tests/shared/test_auth_utils.py::TestResourceUrlFromServerUrl::test_preserves_query [gw0] [ 85%] PASSED tests/shared/test_auth_utils.py::TestResourceUrlFromServerUrl::test_preserves_query tests/shared/test_auth_utils.py::TestResourceUrlFromServerUrl::test_preserves_port [gw0] [ 85%] PASSED tests/shared/test_auth_utils.py::TestResourceUrlFromServerUrl::test_preserves_port tests/shared/test_auth_utils.py::TestResourceUrlFromServerUrl::test_lowercase_scheme_and_host [gw0] [ 85%] PASSED tests/shared/test_auth_utils.py::TestResourceUrlFromServerUrl::test_lowercase_scheme_and_host tests/shared/test_auth_utils.py::TestResourceUrlFromServerUrl::test_handles_pydantic_urls [gw0] [ 85%] PASSED tests/shared/test_auth_utils.py::TestResourceUrlFromServerUrl::test_handles_pydantic_urls tests/shared/test_auth_utils.py::TestCheckResourceAllowed::test_identical_urls [gw0] [ 85%] PASSED tests/shared/test_auth_utils.py::TestCheckResourceAllowed::test_identical_urls tests/shared/test_auth_utils.py::TestCheckResourceAllowed::test_different_schemes [gw0] [ 85%] PASSED tests/shared/test_auth_utils.py::TestCheckResourceAllowed::test_different_schemes tests/shared/test_auth_utils.py::TestCheckResourceAllowed::test_different_domains [gw0] [ 85%] PASSED tests/shared/test_auth_utils.py::TestCheckResourceAllowed::test_different_domains tests/shared/test_auth_utils.py::TestCheckResourceAllowed::test_different_ports [gw0] [ 85%] PASSED tests/shared/test_auth_utils.py::TestCheckResourceAllowed::test_different_ports tests/shared/test_auth_utils.py::TestCheckResourceAllowed::test_hierarchical_matching [gw0] [ 85%] PASSED tests/shared/test_auth_utils.py::TestCheckResourceAllowed::test_hierarchical_matching tests/shared/test_auth_utils.py::TestCheckResourceAllowed::test_path_boundary_matching [gw0] [ 85%] PASSED tests/shared/test_auth_utils.py::TestCheckResourceAllowed::test_path_boundary_matching tests/shared/test_auth_utils.py::TestCheckResourceAllowed::test_trailing_slash_handling [gw0] [ 85%] PASSED tests/shared/test_auth_utils.py::TestCheckResourceAllowed::test_trailing_slash_handling tests/shared/test_auth_utils.py::TestCheckResourceAllowed::test_case_insensitive_origin [gw0] [ 85%] PASSED tests/shared/test_auth_utils.py::TestCheckResourceAllowed::test_case_insensitive_origin tests/shared/test_auth_utils.py::TestCheckResourceAllowed::test_empty_paths [gw0] [ 86%] PASSED tests/shared/test_auth_utils.py::TestCheckResourceAllowed::test_empty_paths tests/shared/test_exceptions.py::TestUrlElicitationRequiredError::test_create_with_single_elicitation [gw0] [ 86%] PASSED tests/shared/test_exceptions.py::TestUrlElicitationRequiredError::test_create_with_single_elicitation tests/shared/test_exceptions.py::TestUrlElicitationRequiredError::test_create_with_multiple_elicitations [gw0] [ 86%] PASSED tests/shared/test_exceptions.py::TestUrlElicitationRequiredError::test_create_with_multiple_elicitations tests/shared/test_exceptions.py::TestUrlElicitationRequiredError::test_custom_message [gw0] [ 86%] PASSED tests/shared/test_exceptions.py::TestUrlElicitationRequiredError::test_custom_message tests/shared/test_exceptions.py::TestUrlElicitationRequiredError::test_from_error_data [gw0] [ 86%] PASSED tests/shared/test_exceptions.py::TestUrlElicitationRequiredError::test_from_error_data tests/shared/test_exceptions.py::TestUrlElicitationRequiredError::test_from_error_data_wrong_code [gw0] [ 86%] PASSED tests/shared/test_exceptions.py::TestUrlElicitationRequiredError::test_from_error_data_wrong_code tests/shared/test_exceptions.py::TestUrlElicitationRequiredError::test_serialization_roundtrip [gw0] [ 86%] PASSED tests/shared/test_exceptions.py::TestUrlElicitationRequiredError::test_serialization_roundtrip tests/shared/test_exceptions.py::TestUrlElicitationRequiredError::test_error_data_contains_elicitations [gw0] [ 86%] PASSED tests/shared/test_exceptions.py::TestUrlElicitationRequiredError::test_error_data_contains_elicitations tests/shared/test_exceptions.py::TestUrlElicitationRequiredError::test_inherits_from_mcp_error [gw0] [ 86%] PASSED tests/shared/test_exceptions.py::TestUrlElicitationRequiredError::test_inherits_from_mcp_error tests/shared/test_exceptions.py::TestUrlElicitationRequiredError::test_exception_message [gw0] [ 86%] PASSED tests/shared/test_exceptions.py::TestUrlElicitationRequiredError::test_exception_message tests/shared/test_httpx_utils.py::test_default_settings [gw0] [ 86%] PASSED tests/shared/test_httpx_utils.py::test_default_settings tests/shared/test_httpx_utils.py::test_custom_parameters [gw0] [ 86%] PASSED tests/shared/test_httpx_utils.py::test_custom_parameters tests/shared/test_memory.py::test_memory_server_and_client_connection [gw0] [ 87%] PASSED tests/shared/test_memory.py::test_memory_server_and_client_connection tests/shared/test_progress_notifications.py::test_bidirectional_progress_notifications [gw1] [ 87%] PASSED tests/server/test_streamable_http_security.py::test_streamable_http_security_disabled tests/server/test_streamable_http_security.py::test_streamable_http_security_custom_allowed_hosts [gw0] [ 87%] PASSED tests/shared/test_progress_notifications.py::test_bidirectional_progress_notifications tests/shared/test_progress_notifications.py::test_progress_context_manager [gw1] [ 87%] PASSED tests/server/test_streamable_http_security.py::test_streamable_http_security_custom_allowed_hosts tests/server/test_streamable_http_security.py::test_streamable_http_security_get_request [gw0] [ 87%] PASSED tests/shared/test_progress_notifications.py::test_progress_context_manager tests/shared/test_progress_notifications.py::test_progress_callback_exception_logging [gw0] [ 87%] PASSED tests/shared/test_progress_notifications.py::test_progress_callback_exception_logging tests/shared/test_session.py::test_in_flight_requests_cleared_after_completion [gw0] [ 87%] PASSED tests/shared/test_session.py::test_in_flight_requests_cleared_after_completion tests/shared/test_session.py::test_request_cancellation [gw0] [ 87%] PASSED tests/shared/test_session.py::test_request_cancellation tests/shared/test_session.py::test_response_id_type_mismatch_string_to_int [gw0] [ 87%] PASSED tests/shared/test_session.py::test_response_id_type_mismatch_string_to_int tests/shared/test_session.py::test_error_response_id_type_mismatch_string_to_int [gw0] [ 87%] PASSED tests/shared/test_session.py::test_error_response_id_type_mismatch_string_to_int tests/shared/test_session.py::test_response_id_non_numeric_string_no_match [gw0] [ 87%] PASSED tests/shared/test_session.py::test_response_id_non_numeric_string_no_match tests/shared/test_session.py::test_connection_closed [gw0] [ 87%] PASSED tests/shared/test_session.py::test_connection_closed [gw1] [ 87%] PASSED tests/server/test_streamable_http_security.py::test_streamable_http_security_get_request tests/shared/test_sse.py::test_raw_sse_connection tests/server/test_validation.py::TestCheckSamplingToolsCapability::test_returns_false_when_caps_none [gw1] [ 88%] PASSED tests/server/test_validation.py::TestCheckSamplingToolsCapability::test_returns_false_when_caps_none tests/server/test_validation.py::TestCheckSamplingToolsCapability::test_returns_false_when_sampling_none [gw1] [ 88%] PASSED tests/server/test_validation.py::TestCheckSamplingToolsCapability::test_returns_false_when_sampling_none tests/server/test_validation.py::TestCheckSamplingToolsCapability::test_returns_false_when_tools_none [gw1] [ 88%] PASSED tests/server/test_validation.py::TestCheckSamplingToolsCapability::test_returns_false_when_tools_none tests/server/test_validation.py::TestCheckSamplingToolsCapability::test_returns_true_when_tools_present [gw1] [ 88%] PASSED tests/server/test_validation.py::TestCheckSamplingToolsCapability::test_returns_true_when_tools_present tests/server/test_validation.py::TestValidateSamplingTools::test_no_error_when_tools_none [gw1] [ 88%] PASSED tests/server/test_validation.py::TestValidateSamplingTools::test_no_error_when_tools_none tests/server/test_validation.py::TestValidateSamplingTools::test_raises_when_tools_provided_but_no_capability [gw1] [ 88%] PASSED tests/server/test_validation.py::TestValidateSamplingTools::test_raises_when_tools_provided_but_no_capability tests/server/test_validation.py::TestValidateSamplingTools::test_raises_when_tool_choice_provided_but_no_capability [gw1] [ 88%] PASSED tests/server/test_validation.py::TestValidateSamplingTools::test_raises_when_tool_choice_provided_but_no_capability tests/server/test_validation.py::TestValidateSamplingTools::test_no_error_when_capability_present [gw1] [ 88%] PASSED tests/server/test_validation.py::TestValidateSamplingTools::test_no_error_when_capability_present tests/server/test_validation.py::TestValidateToolUseResultMessages::test_no_error_for_empty_messages [gw1] [ 88%] PASSED tests/server/test_validation.py::TestValidateToolUseResultMessages::test_no_error_for_empty_messages tests/server/test_validation.py::TestValidateToolUseResultMessages::test_no_error_for_simple_text_messages [gw1] [ 88%] PASSED tests/server/test_validation.py::TestValidateToolUseResultMessages::test_no_error_for_simple_text_messages tests/server/test_validation.py::TestValidateToolUseResultMessages::test_raises_when_tool_result_mixed_with_other_content [gw1] [ 88%] PASSED tests/server/test_validation.py::TestValidateToolUseResultMessages::test_raises_when_tool_result_mixed_with_other_content tests/server/test_validation.py::TestValidateToolUseResultMessages::test_raises_when_tool_result_without_previous_tool_use [gw1] [ 88%] PASSED tests/server/test_validation.py::TestValidateToolUseResultMessages::test_raises_when_tool_result_without_previous_tool_use tests/server/test_validation.py::TestValidateToolUseResultMessages::test_raises_when_tool_result_ids_dont_match_tool_use [gw1] [ 89%] PASSED tests/server/test_validation.py::TestValidateToolUseResultMessages::test_raises_when_tool_result_ids_dont_match_tool_use tests/server/test_validation.py::TestValidateToolUseResultMessages::test_no_error_when_tool_result_matches_tool_use [gw1] [ 89%] PASSED tests/server/test_validation.py::TestValidateToolUseResultMessages::test_no_error_when_tool_result_matches_tool_use tests/server/test_websocket_security.py::test_ws_security_default_settings [gw0] [ 89%] PASSED tests/shared/test_sse.py::test_raw_sse_connection tests/shared/test_sse.py::test_sse_client_basic_connection [gw1] [ 89%] PASSED tests/server/test_websocket_security.py::test_ws_security_default_settings tests/server/test_websocket_security.py::test_ws_security_invalid_origin_header [gw0] [ 89%] PASSED tests/shared/test_sse.py::test_sse_client_basic_connection tests/shared/test_sse.py::test_sse_client_on_session_created [gw1] [ 89%] PASSED tests/server/test_websocket_security.py::test_ws_security_invalid_origin_header tests/server/test_websocket_security.py::test_ws_security_invalid_host_header [gw0] [ 89%] PASSED tests/shared/test_sse.py::test_sse_client_on_session_created tests/shared/test_sse.py::test_extract_session_id_from_endpoint[/messages?sessionId=abc123-abc123] [gw0] [ 89%] PASSED tests/shared/test_sse.py::test_extract_session_id_from_endpoint[/messages?sessionId=abc123-abc123] tests/shared/test_sse.py::test_extract_session_id_from_endpoint[/messages?session_id=def456-def456] [gw0] [ 89%] PASSED tests/shared/test_sse.py::test_extract_session_id_from_endpoint[/messages?session_id=def456-def456] tests/shared/test_sse.py::test_extract_session_id_from_endpoint[/messages?sessionId=abc&session_id=def-abc] [gw0] [ 89%] PASSED tests/shared/test_sse.py::test_extract_session_id_from_endpoint[/messages?sessionId=abc&session_id=def-abc] tests/shared/test_sse.py::test_extract_session_id_from_endpoint[/messages?other=value-None] [gw0] [ 89%] PASSED tests/shared/test_sse.py::test_extract_session_id_from_endpoint[/messages?other=value-None] tests/shared/test_sse.py::test_extract_session_id_from_endpoint[/messages-None] [gw0] [ 89%] PASSED tests/shared/test_sse.py::test_extract_session_id_from_endpoint[/messages-None] tests/shared/test_sse.py::test_extract_session_id_from_endpoint[-None] [gw0] [ 90%] PASSED tests/shared/test_sse.py::test_extract_session_id_from_endpoint[-None] tests/shared/test_sse.py::test_sse_client_on_session_created_not_called_when_no_session_id [gw1] [ 90%] PASSED tests/server/test_websocket_security.py::test_ws_security_invalid_host_header tests/server/test_websocket_security.py::test_ws_security_allowed_origin [gw0] [ 90%] PASSED tests/shared/test_sse.py::test_sse_client_on_session_created_not_called_when_no_session_id tests/shared/test_sse.py::test_sse_client_happy_request_and_response [gw0] [ 90%] PASSED tests/shared/test_sse.py::test_sse_client_happy_request_and_response tests/shared/test_sse.py::test_sse_client_exception_handling [gw1] [ 90%] PASSED tests/server/test_websocket_security.py::test_ws_security_allowed_origin tests/shared/test_streamable_http.py::test_json_parsing [gw0] [ 90%] PASSED tests/shared/test_sse.py::test_sse_client_exception_handling tests/shared/test_sse.py::test_sse_client_timeout [gw0] [ 90%] SKIPPED tests/shared/test_sse.py::test_sse_client_timeout tests/shared/test_sse.py::test_sse_client_basic_connection_mounted_app [gw1] [ 90%] PASSED tests/shared/test_streamable_http.py::test_json_parsing tests/shared/test_streamable_http.py::test_method_not_allowed [gw0] [ 90%] PASSED tests/shared/test_sse.py::test_sse_client_basic_connection_mounted_app tests/shared/test_sse.py::test_request_context_propagation [gw1] [ 90%] PASSED tests/shared/test_streamable_http.py::test_method_not_allowed tests/shared/test_streamable_http.py::test_session_validation [gw0] [ 90%] PASSED tests/shared/test_sse.py::test_request_context_propagation tests/shared/test_sse.py::test_request_context_isolation [gw1] [ 90%] PASSED tests/shared/test_streamable_http.py::test_session_validation tests/shared/test_streamable_http.py::test_session_id_pattern [gw1] [ 90%] PASSED tests/shared/test_streamable_http.py::test_session_id_pattern tests/shared/test_streamable_http.py::test_streamable_http_transport_init_validation [gw1] [ 91%] PASSED tests/shared/test_streamable_http.py::test_streamable_http_transport_init_validation tests/shared/test_streamable_http.py::test_session_termination [gw1] [ 91%] PASSED tests/shared/test_streamable_http.py::test_session_termination tests/shared/test_streamable_http.py::test_response [gw0] [ 91%] PASSED tests/shared/test_sse.py::test_request_context_isolation tests/shared/test_sse.py::test_sse_message_id_coercion [gw0] [ 91%] PASSED tests/shared/test_sse.py::test_sse_message_id_coercion tests/shared/test_sse.py::test_sse_server_transport_endpoint_validation[/messages/-/messages/] [gw0] [ 91%] PASSED tests/shared/test_sse.py::test_sse_server_transport_endpoint_validation[/messages/-/messages/] tests/shared/test_sse.py::test_sse_server_transport_endpoint_validation[messages/-/messages/] [gw0] [ 91%] PASSED tests/shared/test_sse.py::test_sse_server_transport_endpoint_validation[messages/-/messages/] tests/shared/test_sse.py::test_sse_server_transport_endpoint_validation[/-/] [gw0] [ 91%] PASSED tests/shared/test_sse.py::test_sse_server_transport_endpoint_validation[/-/] tests/shared/test_sse.py::test_sse_server_transport_endpoint_validation[http://example.com/messages/-ValueError] [gw0] [ 91%] PASSED tests/shared/test_sse.py::test_sse_server_transport_endpoint_validation[http://example.com/messages/-ValueError] tests/shared/test_sse.py::test_sse_server_transport_endpoint_validation[//example.com/messages/-ValueError] [gw0] [ 91%] PASSED tests/shared/test_sse.py::test_sse_server_transport_endpoint_validation[//example.com/messages/-ValueError] tests/shared/test_sse.py::test_sse_server_transport_endpoint_validation[ftp://example.com/messages/-ValueError] [gw0] [ 91%] PASSED tests/shared/test_sse.py::test_sse_server_transport_endpoint_validation[ftp://example.com/messages/-ValueError] tests/shared/test_sse.py::test_sse_server_transport_endpoint_validation[/messages/?param=value-ValueError] [gw0] [ 91%] PASSED tests/shared/test_sse.py::test_sse_server_transport_endpoint_validation[/messages/?param=value-ValueError] tests/shared/test_sse.py::test_sse_server_transport_endpoint_validation[/messages/#fragment-ValueError] [gw0] [ 91%] PASSED tests/shared/test_sse.py::test_sse_server_transport_endpoint_validation[/messages/#fragment-ValueError] tests/shared/test_sse.py::test_sse_client_handles_empty_keepalive_pings [gw0] [ 92%] PASSED tests/shared/test_sse.py::test_sse_client_handles_empty_keepalive_pings tests/shared/test_streamable_http.py::test_accept_header_validation [gw1] [ 92%] PASSED tests/shared/test_streamable_http.py::test_response tests/shared/test_streamable_http.py::test_json_response [gw0] [ 92%] PASSED tests/shared/test_streamable_http.py::test_accept_header_validation tests/shared/test_streamable_http.py::test_content_type_validation [gw1] [ 92%] PASSED tests/shared/test_streamable_http.py::test_json_response tests/shared/test_streamable_http.py::test_json_response_accept_json_only [gw0] [ 92%] PASSED tests/shared/test_streamable_http.py::test_content_type_validation tests/shared/test_streamable_http.py::test_json_validation [gw1] [ 92%] PASSED tests/shared/test_streamable_http.py::test_json_response_accept_json_only tests/shared/test_streamable_http.py::test_json_response_missing_accept_header [gw0] [ 92%] PASSED tests/shared/test_streamable_http.py::test_json_validation tests/shared/test_streamable_http.py::test_client_includes_protocol_version_header_after_init [gw1] [ 92%] PASSED tests/shared/test_streamable_http.py::test_json_response_missing_accept_header tests/shared/test_streamable_http.py::test_json_response_incorrect_accept_header [gw0] [ 92%] PASSED tests/shared/test_streamable_http.py::test_client_includes_protocol_version_header_after_init tests/shared/test_streamable_http.py::test_server_validates_protocol_version_header [gw1] [ 92%] PASSED tests/shared/test_streamable_http.py::test_json_response_incorrect_accept_header tests/shared/test_streamable_http.py::test_get_sse_stream [gw0] [ 92%] PASSED tests/shared/test_streamable_http.py::test_server_validates_protocol_version_header tests/shared/test_streamable_http.py::test_server_backwards_compatibility_no_protocol_version [gw1] [ 92%] PASSED tests/shared/test_streamable_http.py::test_get_sse_stream tests/shared/test_streamable_http.py::test_get_validation [gw0] [ 93%] PASSED tests/shared/test_streamable_http.py::test_server_backwards_compatibility_no_protocol_version tests/shared/test_streamable_http.py::test_client_crash_handled [gw1] [ 93%] PASSED tests/shared/test_streamable_http.py::test_get_validation tests/shared/test_streamable_http.py::test_streamable_http_client_basic_connection [gw0] [ 93%] PASSED tests/shared/test_streamable_http.py::test_client_crash_handled tests/shared/test_streamable_http.py::test_handle_sse_event_skips_empty_data [gw0] [ 93%] PASSED tests/shared/test_streamable_http.py::test_handle_sse_event_skips_empty_data tests/shared/test_streamable_http.py::test_priming_event_not_minted_for_old_protocol_version [gw1] [ 93%] PASSED tests/shared/test_streamable_http.py::test_streamable_http_client_basic_connection [gw0] [ 93%] PASSED tests/shared/test_streamable_http.py::test_priming_event_not_minted_for_old_protocol_version tests/shared/test_streamable_http.py::test_priming_event_not_minted_without_event_store [gw0] [ 93%] PASSED tests/shared/test_streamable_http.py::test_priming_event_not_minted_without_event_store tests/shared/test_streamable_http.py::test_priming_event_includes_retry_interval [gw0] [ 93%] PASSED tests/shared/test_streamable_http.py::test_priming_event_includes_retry_interval tests/shared/test_streamable_http.py::test_close_sse_stream_callback_not_provided_for_old_protocol_version [gw0] [ 93%] PASSED tests/shared/test_streamable_http.py::test_close_sse_stream_callback_not_provided_for_old_protocol_version tests/shared/test_streamable_http.py::test_streamable_http_client_receives_priming_event tests/shared/test_streamable_http.py::test_streamable_http_client_resource_read [gw1] [ 93%] PASSED tests/shared/test_streamable_http.py::test_streamable_http_client_resource_read [gw0] [ 93%] PASSED tests/shared/test_streamable_http.py::test_streamable_http_client_receives_priming_event tests/shared/test_streamable_http.py::test_streamable_http_client_tool_invocation tests/shared/test_streamable_http.py::test_server_close_sse_stream_via_context [gw1] [ 93%] PASSED tests/shared/test_streamable_http.py::test_streamable_http_client_tool_invocation tests/shared/test_streamable_http.py::test_streamable_http_client_error_handling [gw1] [ 93%] PASSED tests/shared/test_streamable_http.py::test_streamable_http_client_error_handling tests/shared/test_streamable_http.py::test_streamable_http_client_session_persistence [gw0] [ 94%] PASSED tests/shared/test_streamable_http.py::test_server_close_sse_stream_via_context tests/shared/test_streamable_http.py::test_streamable_http_client_auto_reconnects [gw1] [ 94%] PASSED tests/shared/test_streamable_http.py::test_streamable_http_client_session_persistence tests/shared/test_streamable_http.py::test_streamable_http_client_json_response [gw1] [ 94%] PASSED tests/shared/test_streamable_http.py::test_streamable_http_client_json_response tests/shared/test_streamable_http.py::test_streamable_http_client_get_stream [gw0] [ 94%] PASSED tests/shared/test_streamable_http.py::test_streamable_http_client_auto_reconnects tests/shared/test_streamable_http.py::test_streamable_http_client_respects_retry_interval [gw1] [ 94%] PASSED tests/shared/test_streamable_http.py::test_streamable_http_client_get_stream tests/shared/test_streamable_http.py::test_streamable_http_client_session_termination [gw1] [ 94%] PASSED tests/shared/test_streamable_http.py::test_streamable_http_client_session_termination tests/shared/test_streamable_http.py::test_streamable_http_client_session_termination_204 [gw0] [ 94%] PASSED tests/shared/test_streamable_http.py::test_streamable_http_client_respects_retry_interval tests/shared/test_streamable_http.py::test_streamable_http_sse_polling_full_cycle [gw1] [ 94%] PASSED tests/shared/test_streamable_http.py::test_streamable_http_client_session_termination_204 tests/shared/test_streamable_http.py::test_streamable_http_client_resumption [gw1] [ 94%] PASSED tests/shared/test_streamable_http.py::test_streamable_http_client_resumption tests/shared/test_streamable_http.py::test_streamablehttp_server_sampling [gw0] [ 94%] PASSED tests/shared/test_streamable_http.py::test_streamable_http_sse_polling_full_cycle tests/shared/test_streamable_http.py::test_streamable_http_events_replayed_after_disconnect [gw1] [ 94%] PASSED tests/shared/test_streamable_http.py::test_streamablehttp_server_sampling tests/shared/test_streamable_http.py::test_streamablehttp_request_context_propagation [gw1] [ 94%] PASSED tests/shared/test_streamable_http.py::test_streamablehttp_request_context_propagation tests/shared/test_streamable_http.py::test_streamablehttp_request_context_isolation [gw0] [ 95%] PASSED tests/shared/test_streamable_http.py::test_streamable_http_events_replayed_after_disconnect tests/shared/test_streamable_http.py::test_streamable_http_multiple_reconnections [gw1] [ 95%] PASSED tests/shared/test_streamable_http.py::test_streamablehttp_request_context_isolation tests/shared/test_streamable_http.py::test_streamablehttp_client_deprecation_warning [gw1] [ 95%] PASSED tests/shared/test_streamable_http.py::test_streamablehttp_client_deprecation_warning tests/shared/test_tool_name_validation.py::TestValidateToolName::TestValidNames::test_accepts_valid_names[simple_alphanumeric] [gw1] [ 95%] PASSED tests/shared/test_tool_name_validation.py::TestValidateToolName::TestValidNames::test_accepts_valid_names[simple_alphanumeric] tests/shared/test_tool_name_validation.py::TestValidateToolName::TestValidNames::test_accepts_valid_names[with_underscores] [gw1] [ 95%] PASSED tests/shared/test_tool_name_validation.py::TestValidateToolName::TestValidNames::test_accepts_valid_names[with_underscores] tests/shared/test_tool_name_validation.py::TestValidateToolName::TestValidNames::test_accepts_valid_names[with_dashes] [gw1] [ 95%] PASSED tests/shared/test_tool_name_validation.py::TestValidateToolName::TestValidNames::test_accepts_valid_names[with_dashes] tests/shared/test_tool_name_validation.py::TestValidateToolName::TestValidNames::test_accepts_valid_names[with_dots] [gw1] [ 95%] PASSED tests/shared/test_tool_name_validation.py::TestValidateToolName::TestValidNames::test_accepts_valid_names[with_dots] tests/shared/test_tool_name_validation.py::TestValidateToolName::TestValidNames::test_accepts_valid_names[mixed_characters] [gw1] [ 95%] PASSED tests/shared/test_tool_name_validation.py::TestValidateToolName::TestValidNames::test_accepts_valid_names[mixed_characters] tests/shared/test_tool_name_validation.py::TestValidateToolName::TestValidNames::test_accepts_valid_names[single_character] [gw1] [ 95%] PASSED tests/shared/test_tool_name_validation.py::TestValidateToolName::TestValidNames::test_accepts_valid_names[single_character] tests/shared/test_tool_name_validation.py::TestValidateToolName::TestValidNames::test_accepts_valid_names[max_length_128] [gw1] [ 95%] PASSED tests/shared/test_tool_name_validation.py::TestValidateToolName::TestValidNames::test_accepts_valid_names[max_length_128] tests/shared/test_tool_name_validation.py::TestValidateToolName::TestInvalidNames::test_rejects_empty_name [gw1] [ 95%] PASSED tests/shared/test_tool_name_validation.py::TestValidateToolName::TestInvalidNames::test_rejects_empty_name tests/shared/test_tool_name_validation.py::TestValidateToolName::TestInvalidNames::test_rejects_name_exceeding_max_length [gw1] [ 95%] PASSED tests/shared/test_tool_name_validation.py::TestValidateToolName::TestInvalidNames::test_rejects_name_exceeding_max_length tests/shared/test_tool_name_validation.py::TestValidateToolName::TestInvalidNames::test_rejects_invalid_characters[with_spaces] [gw1] [ 96%] PASSED tests/shared/test_tool_name_validation.py::TestValidateToolName::TestInvalidNames::test_rejects_invalid_characters[with_spaces] tests/shared/test_tool_name_validation.py::TestValidateToolName::TestInvalidNames::test_rejects_invalid_characters[with_commas] [gw1] [ 96%] PASSED tests/shared/test_tool_name_validation.py::TestValidateToolName::TestInvalidNames::test_rejects_invalid_characters[with_commas] tests/shared/test_tool_name_validation.py::TestValidateToolName::TestInvalidNames::test_rejects_invalid_characters[with_slashes] [gw1] [ 96%] PASSED tests/shared/test_tool_name_validation.py::TestValidateToolName::TestInvalidNames::test_rejects_invalid_characters[with_slashes] tests/shared/test_tool_name_validation.py::TestValidateToolName::TestInvalidNames::test_rejects_invalid_characters[with_at_symbol] [gw1] [ 96%] PASSED tests/shared/test_tool_name_validation.py::TestValidateToolName::TestInvalidNames::test_rejects_invalid_characters[with_at_symbol] tests/shared/test_tool_name_validation.py::TestValidateToolName::TestInvalidNames::test_rejects_multiple_invalid_chars [gw1] [ 96%] PASSED tests/shared/test_tool_name_validation.py::TestValidateToolName::TestInvalidNames::test_rejects_multiple_invalid_chars tests/shared/test_tool_name_validation.py::TestValidateToolName::TestInvalidNames::test_rejects_unicode_characters [gw1] [ 96%] PASSED tests/shared/test_tool_name_validation.py::TestValidateToolName::TestInvalidNames::test_rejects_unicode_characters tests/shared/test_tool_name_validation.py::TestValidateToolName::TestWarningsForProblematicPatterns::test_warns_on_leading_dash [gw1] [ 96%] PASSED tests/shared/test_tool_name_validation.py::TestValidateToolName::TestWarningsForProblematicPatterns::test_warns_on_leading_dash tests/shared/test_tool_name_validation.py::TestValidateToolName::TestWarningsForProblematicPatterns::test_warns_on_trailing_dash [gw1] [ 96%] PASSED tests/shared/test_tool_name_validation.py::TestValidateToolName::TestWarningsForProblematicPatterns::test_warns_on_trailing_dash tests/shared/test_tool_name_validation.py::TestValidateToolName::TestWarningsForProblematicPatterns::test_warns_on_leading_dot [gw1] [ 96%] PASSED tests/shared/test_tool_name_validation.py::TestValidateToolName::TestWarningsForProblematicPatterns::test_warns_on_leading_dot tests/shared/test_tool_name_validation.py::TestValidateToolName::TestWarningsForProblematicPatterns::test_warns_on_trailing_dot [gw1] [ 96%] PASSED tests/shared/test_tool_name_validation.py::TestValidateToolName::TestWarningsForProblematicPatterns::test_warns_on_trailing_dot tests/shared/test_tool_name_validation.py::TestIssueToolNameWarning::test_logs_warnings [gw1] [ 96%] PASSED tests/shared/test_tool_name_validation.py::TestIssueToolNameWarning::test_logs_warnings tests/shared/test_tool_name_validation.py::TestIssueToolNameWarning::test_no_logging_for_empty_warnings [gw1] [ 96%] PASSED tests/shared/test_tool_name_validation.py::TestIssueToolNameWarning::test_no_logging_for_empty_warnings tests/shared/test_tool_name_validation.py::TestValidateAndWarnToolName::test_returns_true_for_valid_name [gw1] [ 96%] PASSED tests/shared/test_tool_name_validation.py::TestValidateAndWarnToolName::test_returns_true_for_valid_name tests/shared/test_tool_name_validation.py::TestValidateAndWarnToolName::test_returns_false_for_invalid_name [gw1] [ 97%] PASSED tests/shared/test_tool_name_validation.py::TestValidateAndWarnToolName::test_returns_false_for_invalid_name tests/shared/test_tool_name_validation.py::TestValidateAndWarnToolName::test_logs_warnings_for_invalid_name [gw1] [ 97%] PASSED tests/shared/test_tool_name_validation.py::TestValidateAndWarnToolName::test_logs_warnings_for_invalid_name tests/shared/test_tool_name_validation.py::TestValidateAndWarnToolName::test_no_warnings_for_clean_valid_name [gw1] [ 97%] PASSED tests/shared/test_tool_name_validation.py::TestValidateAndWarnToolName::test_no_warnings_for_clean_valid_name tests/shared/test_tool_name_validation.py::TestEdgeCases::test_edge_cases[only_dots] [gw1] [ 97%] PASSED tests/shared/test_tool_name_validation.py::TestEdgeCases::test_edge_cases[only_dots] tests/shared/test_tool_name_validation.py::TestEdgeCases::test_edge_cases[only_dashes] [gw1] [ 97%] PASSED tests/shared/test_tool_name_validation.py::TestEdgeCases::test_edge_cases[only_dashes] tests/shared/test_tool_name_validation.py::TestEdgeCases::test_edge_cases[only_slashes] [gw1] [ 97%] PASSED tests/shared/test_tool_name_validation.py::TestEdgeCases::test_edge_cases[only_slashes] tests/shared/test_tool_name_validation.py::TestEdgeCases::test_edge_cases[mixed_valid_invalid] [gw1] [ 97%] PASSED tests/shared/test_tool_name_validation.py::TestEdgeCases::test_edge_cases[mixed_valid_invalid] tests/shared/test_ws.py::test_ws_client_basic_connection [gw1] [ 97%] PASSED tests/shared/test_ws.py::test_ws_client_basic_connection tests/shared/test_ws.py::test_ws_client_happy_request_and_response [gw1] [ 97%] PASSED tests/shared/test_ws.py::test_ws_client_happy_request_and_response tests/shared/test_ws.py::test_ws_client_exception_handling [gw1] [ 97%] PASSED tests/shared/test_ws.py::test_ws_client_exception_handling tests/shared/test_ws.py::test_ws_client_timeout [gw0] [ 97%] PASSED tests/shared/test_streamable_http.py::test_streamable_http_multiple_reconnections tests/shared/test_streamable_http.py::test_standalone_get_stream_reconnection [gw1] [ 97%] PASSED tests/shared/test_ws.py::test_ws_client_timeout tests/shared/test_ws.py::test_websocket_client_is_deprecated [gw1] [ 98%] PASSED tests/shared/test_ws.py::test_websocket_client_is_deprecated tests/shared/test_ws.py::test_websocket_server_is_deprecated [gw1] [ 98%] PASSED tests/shared/test_ws.py::test_websocket_server_is_deprecated tests/test_examples.py::test_simple_echo [gw1] [ 98%] SKIPPED tests/test_examples.py::test_simple_echo tests/test_examples.py::test_complex_inputs [gw1] [ 98%] SKIPPED tests/test_examples.py::test_complex_inputs tests/test_examples.py::test_direct_call_tool_result_return [gw1] [ 98%] SKIPPED tests/test_examples.py::test_direct_call_tool_result_return tests/test_examples.py::test_desktop [gw1] [ 98%] SKIPPED tests/test_examples.py::test_desktop tests/test_types.py::test_jsonrpc_request [gw1] [ 98%] PASSED tests/test_types.py::test_jsonrpc_request tests/test_types.py::test_method_initialization [gw1] [ 98%] PASSED tests/test_types.py::test_method_initialization tests/test_types.py::test_tool_use_content [gw1] [ 98%] PASSED tests/test_types.py::test_tool_use_content tests/test_types.py::test_tool_result_content [gw1] [ 98%] PASSED tests/test_types.py::test_tool_result_content tests/test_types.py::test_tool_choice [gw1] [ 98%] PASSED tests/test_types.py::test_tool_choice tests/test_types.py::test_sampling_message_with_user_role [gw1] [ 98%] PASSED tests/test_types.py::test_sampling_message_with_user_role tests/test_types.py::test_sampling_message_with_assistant_role [gw1] [ 99%] PASSED tests/test_types.py::test_sampling_message_with_assistant_role tests/test_types.py::test_sampling_message_backward_compatibility [gw1] [ 99%] PASSED tests/test_types.py::test_sampling_message_backward_compatibility tests/test_types.py::test_create_message_request_params_with_tools [gw1] [ 99%] PASSED tests/test_types.py::test_create_message_request_params_with_tools tests/test_types.py::test_create_message_result_with_tool_use [gw1] [ 99%] PASSED tests/test_types.py::test_create_message_result_with_tool_use tests/test_types.py::test_create_message_result_basic [gw1] [ 99%] PASSED tests/test_types.py::test_create_message_result_basic tests/test_types.py::test_client_capabilities_with_sampling_tools [gw1] [ 99%] PASSED tests/test_types.py::test_client_capabilities_with_sampling_tools tests/test_types.py::test_tool_preserves_json_schema_2020_12_fields [gw1] [ 99%] PASSED tests/test_types.py::test_tool_preserves_json_schema_2020_12_fields tests/test_types.py::test_list_tools_result_preserves_json_schema_2020_12_fields [gw1] [ 99%] PASSED tests/test_types.py::test_list_tools_result_preserves_json_schema_2020_12_fields [gw0] [ 99%] PASSED tests/shared/test_streamable_http.py::test_standalone_get_stream_reconnection tests/shared/test_streamable_http.py::test_streamable_http_client_does_not_mutate_provided_client [gw0] [ 99%] PASSED tests/shared/test_streamable_http.py::test_streamable_http_client_does_not_mutate_provided_client tests/shared/test_streamable_http.py::test_streamable_http_client_mcp_headers_override_defaults [gw0] [ 99%] PASSED tests/shared/test_streamable_http.py::test_streamable_http_client_mcp_headers_override_defaults tests/shared/test_streamable_http.py::test_streamable_http_client_preserves_custom_with_mcp_headers [gw0] [ 99%] PASSED tests/shared/test_streamable_http.py::test_streamable_http_client_preserves_custom_with_mcp_headers tests/shared/test_streamable_http.py::test_streamable_http_transport_deprecated_params_ignored [gw0] [100%] PASSED tests/shared/test_streamable_http.py::test_streamable_http_transport_deprecated_params_ignored ═══════════════════════════════ inline-snapshot ════════════════════════════════ INFO: inline-snapshot was disabled because you used xdist. This means that tests with snapshots will continue to run, but snapshot(x) will only return x and inline-snapshot will not be able to fix snapshots or generate reports. ==================================== ERRORS ==================================== _____________ ERROR collecting tests/issues/test_355_type_error.py _____________ tests/issues/test_355_type_error.py:22: in mcp = FastMCP("My App") ^^^^^^^^^^^^^^^^^ mcp/server/fastmcp/server.py:185: in __init__ self.settings = Settings( /usr/lib/python3/dist-packages/pydantic_settings/main.py:229: in __init__ else __pydantic_self__.__class__._settings_init_sources( /usr/lib/python3/dist-packages/pydantic_settings/main.py:397: in _settings_init_sources default_settings = DefaultSettingsSource( /usr/lib/python3/dist-packages/pydantic_settings/sources/base.py:287: in __init__ _warn_if_field_info_incomplete(field_info, field_name, self._init_state) /usr/lib/python3/dist-packages/pydantic_settings/sources/utils.py:47: in _warn_if_field_info_incomplete warnings.warn( E pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifespan' has an incomplete definition: its annotation contains an unresolved forward reference, so settings sources may fail to correctly resolve its value. Call `model_rebuild()` on the model where the field is defined, once all the referenced types are defined. _____________ ERROR collecting tests/issues/test_355_type_error.py _____________ tests/issues/test_355_type_error.py:22: in mcp = FastMCP("My App") ^^^^^^^^^^^^^^^^^ mcp/server/fastmcp/server.py:185: in __init__ self.settings = Settings( /usr/lib/python3/dist-packages/pydantic_settings/main.py:229: in __init__ else __pydantic_self__.__class__._settings_init_sources( /usr/lib/python3/dist-packages/pydantic_settings/main.py:397: in _settings_init_sources default_settings = DefaultSettingsSource( /usr/lib/python3/dist-packages/pydantic_settings/sources/base.py:287: in __init__ _warn_if_field_info_incomplete(field_info, field_name, self._init_state) /usr/lib/python3/dist-packages/pydantic_settings/sources/utils.py:47: in _warn_if_field_info_incomplete warnings.warn( E pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifespan' has an incomplete definition: its annotation contains an unresolved forward reference, so settings sources may fail to correctly resolve its value. Call `model_rebuild()` on the model where the field is defined, once all the referenced types are defined. _ ERROR at setup of test_list_methods_cursor_parameter[list_tools-tools/list] __ [gw0] linux -- Python 3.14.7 /usr/bin/python3.14 @pytest.fixture async def full_featured_server():  """Create a server with tools, resources, prompts, and templates.""" > server = FastMCP("test") ^^^^^^^^^^^^^^^ tests/client/test_list_methods_cursor.py:19: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ mcp/server/fastmcp/server.py:185: in __init__ self.settings = Settings( /usr/lib/python3/dist-packages/pydantic_settings/main.py:229: in __init__ else __pydantic_self__.__class__._settings_init_sources( /usr/lib/python3/dist-packages/pydantic_settings/main.py:397: in _settings_init_sources default_settings = DefaultSettingsSource( /usr/lib/python3/dist-packages/pydantic_settings/sources/base.py:287: in __init__ _warn_if_field_info_incomplete(field_info, field_name, self._init_state) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ field_info = FieldInfo(annotation=ForwardRef('Callable[[FastMCP[LifespanResultT]], AbstractAsyncContextManager[LifespanResultT]] | None', is_class=True), required=True) field_name = 'lifespan', init_state = {'field_info_ids': {140456318704880}} def _warn_if_field_info_incomplete(field_info: FieldInfo, field_name: str, init_state: InitState) -> None:  """Warn if the field is incomplete, i.e. its annotation contains unresolved forward references.   An incomplete `FieldInfo` instance is unsafe to inspect — any of its attributes (annotation,  aliases, metadata, default) may rely on the unresolved annotation, so settings sources may  silently fail to resolve the field's value. Each instance is only warned about once per  `init_state`, so that a field accessed by multiple sources during a single settings  resolution doesn't emit duplicate warnings.  """ if getattr(field_info, '_complete', True): return warned_ids = init_state.setdefault('field_info_ids', set()) if id(field_info) in warned_ids: return warned_ids.add(id(field_info)) > warnings.warn( f'Field {field_name!r} has an incomplete definition: its annotation contains an unresolved ' 'forward reference, so settings sources may fail to correctly resolve its value. ' 'Call `model_rebuild()` on the model where the field is defined, once all the referenced ' 'types are defined.', IncompleteFieldDefinitionWarning, ) E pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifespan' has an incomplete definition: its annotation contains an unresolved forward reference, so settings sources may fail to correctly resolve its value. Call `model_rebuild()` on the model where the field is defined, once all the referenced types are defined. /usr/lib/python3/dist-packages/pydantic_settings/sources/utils.py:47: IncompleteFieldDefinitionWarning _ ERROR at setup of test_list_methods_cursor_parameter[list_resources-resources/list] _ [gw0] linux -- Python 3.14.7 /usr/bin/python3.14 @pytest.fixture async def full_featured_server():  """Create a server with tools, resources, prompts, and templates.""" > server = FastMCP("test") ^^^^^^^^^^^^^^^ tests/client/test_list_methods_cursor.py:19: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ mcp/server/fastmcp/server.py:185: in __init__ self.settings = Settings( /usr/lib/python3/dist-packages/pydantic_settings/main.py:229: in __init__ else __pydantic_self__.__class__._settings_init_sources( /usr/lib/python3/dist-packages/pydantic_settings/main.py:397: in _settings_init_sources default_settings = DefaultSettingsSource( /usr/lib/python3/dist-packages/pydantic_settings/sources/base.py:287: in __init__ _warn_if_field_info_incomplete(field_info, field_name, self._init_state) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ field_info = FieldInfo(annotation=ForwardRef('Callable[[FastMCP[LifespanResultT]], AbstractAsyncContextManager[LifespanResultT]] | None', is_class=True), required=True) field_name = 'lifespan', init_state = {'field_info_ids': {140456318704880}} def _warn_if_field_info_incomplete(field_info: FieldInfo, field_name: str, init_state: InitState) -> None:  """Warn if the field is incomplete, i.e. its annotation contains unresolved forward references.   An incomplete `FieldInfo` instance is unsafe to inspect — any of its attributes (annotation,  aliases, metadata, default) may rely on the unresolved annotation, so settings sources may  silently fail to resolve the field's value. Each instance is only warned about once per  `init_state`, so that a field accessed by multiple sources during a single settings  resolution doesn't emit duplicate warnings.  """ if getattr(field_info, '_complete', True): return warned_ids = init_state.setdefault('field_info_ids', set()) if id(field_info) in warned_ids: return warned_ids.add(id(field_info)) > warnings.warn( f'Field {field_name!r} has an incomplete definition: its annotation contains an unresolved ' 'forward reference, so settings sources may fail to correctly resolve its value. ' 'Call `model_rebuild()` on the model where the field is defined, once all the referenced ' 'types are defined.', IncompleteFieldDefinitionWarning, ) E pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifespan' has an incomplete definition: its annotation contains an unresolved forward reference, so settings sources may fail to correctly resolve its value. Call `model_rebuild()` on the model where the field is defined, once all the referenced types are defined. /usr/lib/python3/dist-packages/pydantic_settings/sources/utils.py:47: IncompleteFieldDefinitionWarning _ ERROR at setup of test_list_methods_cursor_parameter[list_prompts-prompts/list] _ [gw0] linux -- Python 3.14.7 /usr/bin/python3.14 @pytest.fixture async def full_featured_server():  """Create a server with tools, resources, prompts, and templates.""" > server = FastMCP("test") ^^^^^^^^^^^^^^^ tests/client/test_list_methods_cursor.py:19: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ mcp/server/fastmcp/server.py:185: in __init__ self.settings = Settings( /usr/lib/python3/dist-packages/pydantic_settings/main.py:229: in __init__ else __pydantic_self__.__class__._settings_init_sources( /usr/lib/python3/dist-packages/pydantic_settings/main.py:397: in _settings_init_sources default_settings = DefaultSettingsSource( /usr/lib/python3/dist-packages/pydantic_settings/sources/base.py:287: in __init__ _warn_if_field_info_incomplete(field_info, field_name, self._init_state) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ field_info = FieldInfo(annotation=ForwardRef('Callable[[FastMCP[LifespanResultT]], AbstractAsyncContextManager[LifespanResultT]] | None', is_class=True), required=True) field_name = 'lifespan', init_state = {'field_info_ids': {140456318704880}} def _warn_if_field_info_incomplete(field_info: FieldInfo, field_name: str, init_state: InitState) -> None:  """Warn if the field is incomplete, i.e. its annotation contains unresolved forward references.   An incomplete `FieldInfo` instance is unsafe to inspect — any of its attributes (annotation,  aliases, metadata, default) may rely on the unresolved annotation, so settings sources may  silently fail to resolve the field's value. Each instance is only warned about once per  `init_state`, so that a field accessed by multiple sources during a single settings  resolution doesn't emit duplicate warnings.  """ if getattr(field_info, '_complete', True): return warned_ids = init_state.setdefault('field_info_ids', set()) if id(field_info) in warned_ids: return warned_ids.add(id(field_info)) > warnings.warn( f'Field {field_name!r} has an incomplete definition: its annotation contains an unresolved ' 'forward reference, so settings sources may fail to correctly resolve its value. ' 'Call `model_rebuild()` on the model where the field is defined, once all the referenced ' 'types are defined.', IncompleteFieldDefinitionWarning, ) E pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifespan' has an incomplete definition: its annotation contains an unresolved forward reference, so settings sources may fail to correctly resolve its value. Call `model_rebuild()` on the model where the field is defined, once all the referenced types are defined. /usr/lib/python3/dist-packages/pydantic_settings/sources/utils.py:47: IncompleteFieldDefinitionWarning _ ERROR at setup of test_list_methods_cursor_parameter[list_resource_templates-resources/templates/list] _ [gw0] linux -- Python 3.14.7 /usr/bin/python3.14 @pytest.fixture async def full_featured_server():  """Create a server with tools, resources, prompts, and templates.""" > server = FastMCP("test") ^^^^^^^^^^^^^^^ tests/client/test_list_methods_cursor.py:19: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ mcp/server/fastmcp/server.py:185: in __init__ self.settings = Settings( /usr/lib/python3/dist-packages/pydantic_settings/main.py:229: in __init__ else __pydantic_self__.__class__._settings_init_sources( /usr/lib/python3/dist-packages/pydantic_settings/main.py:397: in _settings_init_sources default_settings = DefaultSettingsSource( /usr/lib/python3/dist-packages/pydantic_settings/sources/base.py:287: in __init__ _warn_if_field_info_incomplete(field_info, field_name, self._init_state) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ field_info = FieldInfo(annotation=ForwardRef('Callable[[FastMCP[LifespanResultT]], AbstractAsyncContextManager[LifespanResultT]] | None', is_class=True), required=True) field_name = 'lifespan', init_state = {'field_info_ids': {140456318704880}} def _warn_if_field_info_incomplete(field_info: FieldInfo, field_name: str, init_state: InitState) -> None:  """Warn if the field is incomplete, i.e. its annotation contains unresolved forward references.   An incomplete `FieldInfo` instance is unsafe to inspect — any of its attributes (annotation,  aliases, metadata, default) may rely on the unresolved annotation, so settings sources may  silently fail to resolve the field's value. Each instance is only warned about once per  `init_state`, so that a field accessed by multiple sources during a single settings  resolution doesn't emit duplicate warnings.  """ if getattr(field_info, '_complete', True): return warned_ids = init_state.setdefault('field_info_ids', set()) if id(field_info) in warned_ids: return warned_ids.add(id(field_info)) > warnings.warn( f'Field {field_name!r} has an incomplete definition: its annotation contains an unresolved ' 'forward reference, so settings sources may fail to correctly resolve its value. ' 'Call `model_rebuild()` on the model where the field is defined, once all the referenced ' 'types are defined.', IncompleteFieldDefinitionWarning, ) E pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifespan' has an incomplete definition: its annotation contains an unresolved forward reference, so settings sources may fail to correctly resolve its value. Call `model_rebuild()` on the model where the field is defined, once all the referenced types are defined. /usr/lib/python3/dist-packages/pydantic_settings/sources/utils.py:47: IncompleteFieldDefinitionWarning _ ERROR at setup of test_list_methods_params_parameter[list_tools-tools/list] __ [gw0] linux -- Python 3.14.7 /usr/bin/python3.14 @pytest.fixture async def full_featured_server():  """Create a server with tools, resources, prompts, and templates.""" > server = FastMCP("test") ^^^^^^^^^^^^^^^ tests/client/test_list_methods_cursor.py:19: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ mcp/server/fastmcp/server.py:185: in __init__ self.settings = Settings( /usr/lib/python3/dist-packages/pydantic_settings/main.py:229: in __init__ else __pydantic_self__.__class__._settings_init_sources( /usr/lib/python3/dist-packages/pydantic_settings/main.py:397: in _settings_init_sources default_settings = DefaultSettingsSource( /usr/lib/python3/dist-packages/pydantic_settings/sources/base.py:287: in __init__ _warn_if_field_info_incomplete(field_info, field_name, self._init_state) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ field_info = FieldInfo(annotation=ForwardRef('Callable[[FastMCP[LifespanResultT]], AbstractAsyncContextManager[LifespanResultT]] | None', is_class=True), required=True) field_name = 'lifespan', init_state = {'field_info_ids': {140456318704880}} def _warn_if_field_info_incomplete(field_info: FieldInfo, field_name: str, init_state: InitState) -> None:  """Warn if the field is incomplete, i.e. its annotation contains unresolved forward references.   An incomplete `FieldInfo` instance is unsafe to inspect — any of its attributes (annotation,  aliases, metadata, default) may rely on the unresolved annotation, so settings sources may  silently fail to resolve the field's value. Each instance is only warned about once per  `init_state`, so that a field accessed by multiple sources during a single settings  resolution doesn't emit duplicate warnings.  """ if getattr(field_info, '_complete', True): return warned_ids = init_state.setdefault('field_info_ids', set()) if id(field_info) in warned_ids: return warned_ids.add(id(field_info)) > warnings.warn( f'Field {field_name!r} has an incomplete definition: its annotation contains an unresolved ' 'forward reference, so settings sources may fail to correctly resolve its value. ' 'Call `model_rebuild()` on the model where the field is defined, once all the referenced ' 'types are defined.', IncompleteFieldDefinitionWarning, ) E pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifespan' has an incomplete definition: its annotation contains an unresolved forward reference, so settings sources may fail to correctly resolve its value. Call `model_rebuild()` on the model where the field is defined, once all the referenced types are defined. /usr/lib/python3/dist-packages/pydantic_settings/sources/utils.py:47: IncompleteFieldDefinitionWarning _ ERROR at setup of test_list_methods_params_parameter[list_resources-resources/list] _ [gw0] linux -- Python 3.14.7 /usr/bin/python3.14 @pytest.fixture async def full_featured_server():  """Create a server with tools, resources, prompts, and templates.""" > server = FastMCP("test") ^^^^^^^^^^^^^^^ tests/client/test_list_methods_cursor.py:19: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ mcp/server/fastmcp/server.py:185: in __init__ self.settings = Settings( /usr/lib/python3/dist-packages/pydantic_settings/main.py:229: in __init__ else __pydantic_self__.__class__._settings_init_sources( /usr/lib/python3/dist-packages/pydantic_settings/main.py:397: in _settings_init_sources default_settings = DefaultSettingsSource( /usr/lib/python3/dist-packages/pydantic_settings/sources/base.py:287: in __init__ _warn_if_field_info_incomplete(field_info, field_name, self._init_state) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ field_info = FieldInfo(annotation=ForwardRef('Callable[[FastMCP[LifespanResultT]], AbstractAsyncContextManager[LifespanResultT]] | None', is_class=True), required=True) field_name = 'lifespan', init_state = {'field_info_ids': {140456318704880}} def _warn_if_field_info_incomplete(field_info: FieldInfo, field_name: str, init_state: InitState) -> None:  """Warn if the field is incomplete, i.e. its annotation contains unresolved forward references.   An incomplete `FieldInfo` instance is unsafe to inspect — any of its attributes (annotation,  aliases, metadata, default) may rely on the unresolved annotation, so settings sources may  silently fail to resolve the field's value. Each instance is only warned about once per  `init_state`, so that a field accessed by multiple sources during a single settings  resolution doesn't emit duplicate warnings.  """ if getattr(field_info, '_complete', True): return warned_ids = init_state.setdefault('field_info_ids', set()) if id(field_info) in warned_ids: return warned_ids.add(id(field_info)) > warnings.warn( f'Field {field_name!r} has an incomplete definition: its annotation contains an unresolved ' 'forward reference, so settings sources may fail to correctly resolve its value. ' 'Call `model_rebuild()` on the model where the field is defined, once all the referenced ' 'types are defined.', IncompleteFieldDefinitionWarning, ) E pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifespan' has an incomplete definition: its annotation contains an unresolved forward reference, so settings sources may fail to correctly resolve its value. Call `model_rebuild()` on the model where the field is defined, once all the referenced types are defined. /usr/lib/python3/dist-packages/pydantic_settings/sources/utils.py:47: IncompleteFieldDefinitionWarning _ ERROR at setup of test_list_methods_params_parameter[list_prompts-prompts/list] _ [gw0] linux -- Python 3.14.7 /usr/bin/python3.14 @pytest.fixture async def full_featured_server():  """Create a server with tools, resources, prompts, and templates.""" > server = FastMCP("test") ^^^^^^^^^^^^^^^ tests/client/test_list_methods_cursor.py:19: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ mcp/server/fastmcp/server.py:185: in __init__ self.settings = Settings( /usr/lib/python3/dist-packages/pydantic_settings/main.py:229: in __init__ else __pydantic_self__.__class__._settings_init_sources( /usr/lib/python3/dist-packages/pydantic_settings/main.py:397: in _settings_init_sources default_settings = DefaultSettingsSource( /usr/lib/python3/dist-packages/pydantic_settings/sources/base.py:287: in __init__ _warn_if_field_info_incomplete(field_info, field_name, self._init_state) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ field_info = FieldInfo(annotation=ForwardRef('Callable[[FastMCP[LifespanResultT]], AbstractAsyncContextManager[LifespanResultT]] | None', is_class=True), required=True) field_name = 'lifespan', init_state = {'field_info_ids': {140456318704880}} def _warn_if_field_info_incomplete(field_info: FieldInfo, field_name: str, init_state: InitState) -> None:  """Warn if the field is incomplete, i.e. its annotation contains unresolved forward references.   An incomplete `FieldInfo` instance is unsafe to inspect — any of its attributes (annotation,  aliases, metadata, default) may rely on the unresolved annotation, so settings sources may  silently fail to resolve the field's value. Each instance is only warned about once per  `init_state`, so that a field accessed by multiple sources during a single settings  resolution doesn't emit duplicate warnings.  """ if getattr(field_info, '_complete', True): return warned_ids = init_state.setdefault('field_info_ids', set()) if id(field_info) in warned_ids: return warned_ids.add(id(field_info)) > warnings.warn( f'Field {field_name!r} has an incomplete definition: its annotation contains an unresolved ' 'forward reference, so settings sources may fail to correctly resolve its value. ' 'Call `model_rebuild()` on the model where the field is defined, once all the referenced ' 'types are defined.', IncompleteFieldDefinitionWarning, ) E pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifespan' has an incomplete definition: its annotation contains an unresolved forward reference, so settings sources may fail to correctly resolve its value. Call `model_rebuild()` on the model where the field is defined, once all the referenced types are defined. /usr/lib/python3/dist-packages/pydantic_settings/sources/utils.py:47: IncompleteFieldDefinitionWarning _ ERROR at setup of test_list_methods_params_parameter[list_resource_templates-resources/templates/list] _ [gw0] linux -- Python 3.14.7 /usr/bin/python3.14 @pytest.fixture async def full_featured_server():  """Create a server with tools, resources, prompts, and templates.""" > server = FastMCP("test") ^^^^^^^^^^^^^^^ tests/client/test_list_methods_cursor.py:19: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ mcp/server/fastmcp/server.py:185: in __init__ self.settings = Settings( /usr/lib/python3/dist-packages/pydantic_settings/main.py:229: in __init__ else __pydantic_self__.__class__._settings_init_sources( /usr/lib/python3/dist-packages/pydantic_settings/main.py:397: in _settings_init_sources default_settings = DefaultSettingsSource( /usr/lib/python3/dist-packages/pydantic_settings/sources/base.py:287: in __init__ _warn_if_field_info_incomplete(field_info, field_name, self._init_state) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ field_info = FieldInfo(annotation=ForwardRef('Callable[[FastMCP[LifespanResultT]], AbstractAsyncContextManager[LifespanResultT]] | None', is_class=True), required=True) field_name = 'lifespan', init_state = {'field_info_ids': {140456318704880}} def _warn_if_field_info_incomplete(field_info: FieldInfo, field_name: str, init_state: InitState) -> None:  """Warn if the field is incomplete, i.e. its annotation contains unresolved forward references.   An incomplete `FieldInfo` instance is unsafe to inspect — any of its attributes (annotation,  aliases, metadata, default) may rely on the unresolved annotation, so settings sources may  silently fail to resolve the field's value. Each instance is only warned about once per  `init_state`, so that a field accessed by multiple sources during a single settings  resolution doesn't emit duplicate warnings.  """ if getattr(field_info, '_complete', True): return warned_ids = init_state.setdefault('field_info_ids', set()) if id(field_info) in warned_ids: return warned_ids.add(id(field_info)) > warnings.warn( f'Field {field_name!r} has an incomplete definition: its annotation contains an unresolved ' 'forward reference, so settings sources may fail to correctly resolve its value. ' 'Call `model_rebuild()` on the model where the field is defined, once all the referenced ' 'types are defined.', IncompleteFieldDefinitionWarning, ) E pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifespan' has an incomplete definition: its annotation contains an unresolved forward reference, so settings sources may fail to correctly resolve its value. Call `model_rebuild()` on the model where the field is defined, once all the referenced types are defined. /usr/lib/python3/dist-packages/pydantic_settings/sources/utils.py:47: IncompleteFieldDefinitionWarning _ ERROR at setup of test_list_methods_raises_error_when_both_cursor_and_params_provided[list_tools] _ [gw0] linux -- Python 3.14.7 /usr/bin/python3.14 @pytest.fixture async def full_featured_server():  """Create a server with tools, resources, prompts, and templates.""" > server = FastMCP("test") ^^^^^^^^^^^^^^^ tests/client/test_list_methods_cursor.py:19: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ mcp/server/fastmcp/server.py:185: in __init__ self.settings = Settings( /usr/lib/python3/dist-packages/pydantic_settings/main.py:229: in __init__ else __pydantic_self__.__class__._settings_init_sources( /usr/lib/python3/dist-packages/pydantic_settings/main.py:397: in _settings_init_sources default_settings = DefaultSettingsSource( /usr/lib/python3/dist-packages/pydantic_settings/sources/base.py:287: in __init__ _warn_if_field_info_incomplete(field_info, field_name, self._init_state) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ field_info = FieldInfo(annotation=ForwardRef('Callable[[FastMCP[LifespanResultT]], AbstractAsyncContextManager[LifespanResultT]] | None', is_class=True), required=True) field_name = 'lifespan', init_state = {'field_info_ids': {140456318704880}} def _warn_if_field_info_incomplete(field_info: FieldInfo, field_name: str, init_state: InitState) -> None:  """Warn if the field is incomplete, i.e. its annotation contains unresolved forward references.   An incomplete `FieldInfo` instance is unsafe to inspect — any of its attributes (annotation,  aliases, metadata, default) may rely on the unresolved annotation, so settings sources may  silently fail to resolve the field's value. Each instance is only warned about once per  `init_state`, so that a field accessed by multiple sources during a single settings  resolution doesn't emit duplicate warnings.  """ if getattr(field_info, '_complete', True): return warned_ids = init_state.setdefault('field_info_ids', set()) if id(field_info) in warned_ids: return warned_ids.add(id(field_info)) > warnings.warn( f'Field {field_name!r} has an incomplete definition: its annotation contains an unresolved ' 'forward reference, so settings sources may fail to correctly resolve its value. ' 'Call `model_rebuild()` on the model where the field is defined, once all the referenced ' 'types are defined.', IncompleteFieldDefinitionWarning, ) E pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifespan' has an incomplete definition: its annotation contains an unresolved forward reference, so settings sources may fail to correctly resolve its value. Call `model_rebuild()` on the model where the field is defined, once all the referenced types are defined. /usr/lib/python3/dist-packages/pydantic_settings/sources/utils.py:47: IncompleteFieldDefinitionWarning _ ERROR at setup of test_list_methods_raises_error_when_both_cursor_and_params_provided[list_resources] _ [gw0] linux -- Python 3.14.7 /usr/bin/python3.14 @pytest.fixture async def full_featured_server():  """Create a server with tools, resources, prompts, and templates.""" > server = FastMCP("test") ^^^^^^^^^^^^^^^ tests/client/test_list_methods_cursor.py:19: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ mcp/server/fastmcp/server.py:185: in __init__ self.settings = Settings( /usr/lib/python3/dist-packages/pydantic_settings/main.py:229: in __init__ else __pydantic_self__.__class__._settings_init_sources( /usr/lib/python3/dist-packages/pydantic_settings/main.py:397: in _settings_init_sources default_settings = DefaultSettingsSource( /usr/lib/python3/dist-packages/pydantic_settings/sources/base.py:287: in __init__ _warn_if_field_info_incomplete(field_info, field_name, self._init_state) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ field_info = FieldInfo(annotation=ForwardRef('Callable[[FastMCP[LifespanResultT]], AbstractAsyncContextManager[LifespanResultT]] | None', is_class=True), required=True) field_name = 'lifespan', init_state = {'field_info_ids': {140456318704880}} def _warn_if_field_info_incomplete(field_info: FieldInfo, field_name: str, init_state: InitState) -> None:  """Warn if the field is incomplete, i.e. its annotation contains unresolved forward references.   An incomplete `FieldInfo` instance is unsafe to inspect — any of its attributes (annotation,  aliases, metadata, default) may rely on the unresolved annotation, so settings sources may  silently fail to resolve the field's value. Each instance is only warned about once per  `init_state`, so that a field accessed by multiple sources during a single settings  resolution doesn't emit duplicate warnings.  """ if getattr(field_info, '_complete', True): return warned_ids = init_state.setdefault('field_info_ids', set()) if id(field_info) in warned_ids: return warned_ids.add(id(field_info)) > warnings.warn( f'Field {field_name!r} has an incomplete definition: its annotation contains an unresolved ' 'forward reference, so settings sources may fail to correctly resolve its value. ' 'Call `model_rebuild()` on the model where the field is defined, once all the referenced ' 'types are defined.', IncompleteFieldDefinitionWarning, ) E pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifespan' has an incomplete definition: its annotation contains an unresolved forward reference, so settings sources may fail to correctly resolve its value. Call `model_rebuild()` on the model where the field is defined, once all the referenced types are defined. /usr/lib/python3/dist-packages/pydantic_settings/sources/utils.py:47: IncompleteFieldDefinitionWarning _ ERROR at setup of test_list_methods_raises_error_when_both_cursor_and_params_provided[list_prompts] _ [gw0] linux -- Python 3.14.7 /usr/bin/python3.14 @pytest.fixture async def full_featured_server():  """Create a server with tools, resources, prompts, and templates.""" > server = FastMCP("test") ^^^^^^^^^^^^^^^ tests/client/test_list_methods_cursor.py:19: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ mcp/server/fastmcp/server.py:185: in __init__ self.settings = Settings( /usr/lib/python3/dist-packages/pydantic_settings/main.py:229: in __init__ else __pydantic_self__.__class__._settings_init_sources( /usr/lib/python3/dist-packages/pydantic_settings/main.py:397: in _settings_init_sources default_settings = DefaultSettingsSource( /usr/lib/python3/dist-packages/pydantic_settings/sources/base.py:287: in __init__ _warn_if_field_info_incomplete(field_info, field_name, self._init_state) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ field_info = FieldInfo(annotation=ForwardRef('Callable[[FastMCP[LifespanResultT]], AbstractAsyncContextManager[LifespanResultT]] | None', is_class=True), required=True) field_name = 'lifespan', init_state = {'field_info_ids': {140456318704880}} def _warn_if_field_info_incomplete(field_info: FieldInfo, field_name: str, init_state: InitState) -> None:  """Warn if the field is incomplete, i.e. its annotation contains unresolved forward references.   An incomplete `FieldInfo` instance is unsafe to inspect — any of its attributes (annotation,  aliases, metadata, default) may rely on the unresolved annotation, so settings sources may  silently fail to resolve the field's value. Each instance is only warned about once per  `init_state`, so that a field accessed by multiple sources during a single settings  resolution doesn't emit duplicate warnings.  """ if getattr(field_info, '_complete', True): return warned_ids = init_state.setdefault('field_info_ids', set()) if id(field_info) in warned_ids: return warned_ids.add(id(field_info)) > warnings.warn( f'Field {field_name!r} has an incomplete definition: its annotation contains an unresolved ' 'forward reference, so settings sources may fail to correctly resolve its value. ' 'Call `model_rebuild()` on the model where the field is defined, once all the referenced ' 'types are defined.', IncompleteFieldDefinitionWarning, ) E pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifespan' has an incomplete definition: its annotation contains an unresolved forward reference, so settings sources may fail to correctly resolve its value. Call `model_rebuild()` on the model where the field is defined, once all the referenced types are defined. /usr/lib/python3/dist-packages/pydantic_settings/sources/utils.py:47: IncompleteFieldDefinitionWarning _ ERROR at setup of test_list_methods_raises_error_when_both_cursor_and_params_provided[list_resource_templates] _ [gw0] linux -- Python 3.14.7 /usr/bin/python3.14 @pytest.fixture async def full_featured_server():  """Create a server with tools, resources, prompts, and templates.""" > server = FastMCP("test") ^^^^^^^^^^^^^^^ tests/client/test_list_methods_cursor.py:19: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ mcp/server/fastmcp/server.py:185: in __init__ self.settings = Settings( /usr/lib/python3/dist-packages/pydantic_settings/main.py:229: in __init__ else __pydantic_self__.__class__._settings_init_sources( /usr/lib/python3/dist-packages/pydantic_settings/main.py:397: in _settings_init_sources default_settings = DefaultSettingsSource( /usr/lib/python3/dist-packages/pydantic_settings/sources/base.py:287: in __init__ _warn_if_field_info_incomplete(field_info, field_name, self._init_state) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ field_info = FieldInfo(annotation=ForwardRef('Callable[[FastMCP[LifespanResultT]], AbstractAsyncContextManager[LifespanResultT]] | None', is_class=True), required=True) field_name = 'lifespan', init_state = {'field_info_ids': {140456318704880}} def _warn_if_field_info_incomplete(field_info: FieldInfo, field_name: str, init_state: InitState) -> None:  """Warn if the field is incomplete, i.e. its annotation contains unresolved forward references.   An incomplete `FieldInfo` instance is unsafe to inspect — any of its attributes (annotation,  aliases, metadata, default) may rely on the unresolved annotation, so settings sources may  silently fail to resolve the field's value. Each instance is only warned about once per  `init_state`, so that a field accessed by multiple sources during a single settings  resolution doesn't emit duplicate warnings.  """ if getattr(field_info, '_complete', True): return warned_ids = init_state.setdefault('field_info_ids', set()) if id(field_info) in warned_ids: return warned_ids.add(id(field_info)) > warnings.warn( f'Field {field_name!r} has an incomplete definition: its annotation contains an unresolved ' 'forward reference, so settings sources may fail to correctly resolve its value. ' 'Call `model_rebuild()` on the model where the field is defined, once all the referenced ' 'types are defined.', IncompleteFieldDefinitionWarning, ) E pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifespan' has an incomplete definition: its annotation contains an unresolved forward reference, so settings sources may fail to correctly resolve its value. Call `model_rebuild()` on the model where the field is defined, once all the referenced types are defined. /usr/lib/python3/dist-packages/pydantic_settings/sources/utils.py:47: IncompleteFieldDefinitionWarning ____________________ ERROR at setup of test_list_resources _____________________ [gw0] linux -- Python 3.14.7 /usr/bin/python3.14 @pytest.fixture def mcp() -> FastMCP: > mcp = FastMCP() ^^^^^^^^^ tests/server/fastmcp/servers/test_file_server.py:24: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ mcp/server/fastmcp/server.py:185: in __init__ self.settings = Settings( /usr/lib/python3/dist-packages/pydantic_settings/main.py:229: in __init__ else __pydantic_self__.__class__._settings_init_sources( /usr/lib/python3/dist-packages/pydantic_settings/main.py:397: in _settings_init_sources default_settings = DefaultSettingsSource( /usr/lib/python3/dist-packages/pydantic_settings/sources/base.py:287: in __init__ _warn_if_field_info_incomplete(field_info, field_name, self._init_state) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ field_info = FieldInfo(annotation=ForwardRef('Callable[[FastMCP[LifespanResultT]], AbstractAsyncContextManager[LifespanResultT]] | None', is_class=True), required=True) field_name = 'lifespan', init_state = {'field_info_ids': {140456318704880}} def _warn_if_field_info_incomplete(field_info: FieldInfo, field_name: str, init_state: InitState) -> None:  """Warn if the field is incomplete, i.e. its annotation contains unresolved forward references.   An incomplete `FieldInfo` instance is unsafe to inspect — any of its attributes (annotation,  aliases, metadata, default) may rely on the unresolved annotation, so settings sources may  silently fail to resolve the field's value. Each instance is only warned about once per  `init_state`, so that a field accessed by multiple sources during a single settings  resolution doesn't emit duplicate warnings.  """ if getattr(field_info, '_complete', True): return warned_ids = init_state.setdefault('field_info_ids', set()) if id(field_info) in warned_ids: return warned_ids.add(id(field_info)) > warnings.warn( f'Field {field_name!r} has an incomplete definition: its annotation contains an unresolved ' 'forward reference, so settings sources may fail to correctly resolve its value. ' 'Call `model_rebuild()` on the model where the field is defined, once all the referenced ' 'types are defined.', IncompleteFieldDefinitionWarning, ) E pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifespan' has an incomplete definition: its annotation contains an unresolved forward reference, so settings sources may fail to correctly resolve its value. Call `model_rebuild()` on the model where the field is defined, once all the referenced types are defined. /usr/lib/python3/dist-packages/pydantic_settings/sources/utils.py:47: IncompleteFieldDefinitionWarning ___________________ ERROR at setup of test_read_resource_dir ___________________ [gw0] linux -- Python 3.14.7 /usr/bin/python3.14 @pytest.fixture def mcp() -> FastMCP: > mcp = FastMCP() ^^^^^^^^^ tests/server/fastmcp/servers/test_file_server.py:24: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ mcp/server/fastmcp/server.py:185: in __init__ self.settings = Settings( /usr/lib/python3/dist-packages/pydantic_settings/main.py:229: in __init__ else __pydantic_self__.__class__._settings_init_sources( /usr/lib/python3/dist-packages/pydantic_settings/main.py:397: in _settings_init_sources default_settings = DefaultSettingsSource( /usr/lib/python3/dist-packages/pydantic_settings/sources/base.py:287: in __init__ _warn_if_field_info_incomplete(field_info, field_name, self._init_state) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ field_info = FieldInfo(annotation=ForwardRef('Callable[[FastMCP[LifespanResultT]], AbstractAsyncContextManager[LifespanResultT]] | None', is_class=True), required=True) field_name = 'lifespan', init_state = {'field_info_ids': {140456318704880}} def _warn_if_field_info_incomplete(field_info: FieldInfo, field_name: str, init_state: InitState) -> None:  """Warn if the field is incomplete, i.e. its annotation contains unresolved forward references.   An incomplete `FieldInfo` instance is unsafe to inspect — any of its attributes (annotation,  aliases, metadata, default) may rely on the unresolved annotation, so settings sources may  silently fail to resolve the field's value. Each instance is only warned about once per  `init_state`, so that a field accessed by multiple sources during a single settings  resolution doesn't emit duplicate warnings.  """ if getattr(field_info, '_complete', True): return warned_ids = init_state.setdefault('field_info_ids', set()) if id(field_info) in warned_ids: return warned_ids.add(id(field_info)) > warnings.warn( f'Field {field_name!r} has an incomplete definition: its annotation contains an unresolved ' 'forward reference, so settings sources may fail to correctly resolve its value. ' 'Call `model_rebuild()` on the model where the field is defined, once all the referenced ' 'types are defined.', IncompleteFieldDefinitionWarning, ) E pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifespan' has an incomplete definition: its annotation contains an unresolved forward reference, so settings sources may fail to correctly resolve its value. Call `model_rebuild()` on the model where the field is defined, once all the referenced types are defined. /usr/lib/python3/dist-packages/pydantic_settings/sources/utils.py:47: IncompleteFieldDefinitionWarning __________________ ERROR at setup of test_read_resource_file ___________________ [gw0] linux -- Python 3.14.7 /usr/bin/python3.14 @pytest.fixture def mcp() -> FastMCP: > mcp = FastMCP() ^^^^^^^^^ tests/server/fastmcp/servers/test_file_server.py:24: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ mcp/server/fastmcp/server.py:185: in __init__ self.settings = Settings( /usr/lib/python3/dist-packages/pydantic_settings/main.py:229: in __init__ else __pydantic_self__.__class__._settings_init_sources( /usr/lib/python3/dist-packages/pydantic_settings/main.py:397: in _settings_init_sources default_settings = DefaultSettingsSource( /usr/lib/python3/dist-packages/pydantic_settings/sources/base.py:287: in __init__ _warn_if_field_info_incomplete(field_info, field_name, self._init_state) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ field_info = FieldInfo(annotation=ForwardRef('Callable[[FastMCP[LifespanResultT]], AbstractAsyncContextManager[LifespanResultT]] | None', is_class=True), required=True) field_name = 'lifespan', init_state = {'field_info_ids': {140456318704880}} def _warn_if_field_info_incomplete(field_info: FieldInfo, field_name: str, init_state: InitState) -> None:  """Warn if the field is incomplete, i.e. its annotation contains unresolved forward references.   An incomplete `FieldInfo` instance is unsafe to inspect — any of its attributes (annotation,  aliases, metadata, default) may rely on the unresolved annotation, so settings sources may  silently fail to resolve the field's value. Each instance is only warned about once per  `init_state`, so that a field accessed by multiple sources during a single settings  resolution doesn't emit duplicate warnings.  """ if getattr(field_info, '_complete', True): return warned_ids = init_state.setdefault('field_info_ids', set()) if id(field_info) in warned_ids: return warned_ids.add(id(field_info)) > warnings.warn( f'Field {field_name!r} has an incomplete definition: its annotation contains an unresolved ' 'forward reference, so settings sources may fail to correctly resolve its value. ' 'Call `model_rebuild()` on the model where the field is defined, once all the referenced ' 'types are defined.', IncompleteFieldDefinitionWarning, ) E pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifespan' has an incomplete definition: its annotation contains an unresolved forward reference, so settings sources may fail to correctly resolve its value. Call `model_rebuild()` on the model where the field is defined, once all the referenced types are defined. /usr/lib/python3/dist-packages/pydantic_settings/sources/utils.py:47: IncompleteFieldDefinitionWarning ______________________ ERROR at setup of test_delete_file ______________________ [gw0] linux -- Python 3.14.7 /usr/bin/python3.14 @pytest.fixture def mcp() -> FastMCP: > mcp = FastMCP() ^^^^^^^^^ tests/server/fastmcp/servers/test_file_server.py:24: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ mcp/server/fastmcp/server.py:185: in __init__ self.settings = Settings( /usr/lib/python3/dist-packages/pydantic_settings/main.py:229: in __init__ else __pydantic_self__.__class__._settings_init_sources( /usr/lib/python3/dist-packages/pydantic_settings/main.py:397: in _settings_init_sources default_settings = DefaultSettingsSource( /usr/lib/python3/dist-packages/pydantic_settings/sources/base.py:287: in __init__ _warn_if_field_info_incomplete(field_info, field_name, self._init_state) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ field_info = FieldInfo(annotation=ForwardRef('Callable[[FastMCP[LifespanResultT]], AbstractAsyncContextManager[LifespanResultT]] | None', is_class=True), required=True) field_name = 'lifespan', init_state = {'field_info_ids': {140456318704880}} def _warn_if_field_info_incomplete(field_info: FieldInfo, field_name: str, init_state: InitState) -> None:  """Warn if the field is incomplete, i.e. its annotation contains unresolved forward references.   An incomplete `FieldInfo` instance is unsafe to inspect — any of its attributes (annotation,  aliases, metadata, default) may rely on the unresolved annotation, so settings sources may  silently fail to resolve the field's value. Each instance is only warned about once per  `init_state`, so that a field accessed by multiple sources during a single settings  resolution doesn't emit duplicate warnings.  """ if getattr(field_info, '_complete', True): return warned_ids = init_state.setdefault('field_info_ids', set()) if id(field_info) in warned_ids: return warned_ids.add(id(field_info)) > warnings.warn( f'Field {field_name!r} has an incomplete definition: its annotation contains an unresolved ' 'forward reference, so settings sources may fail to correctly resolve its value. ' 'Call `model_rebuild()` on the model where the field is defined, once all the referenced ' 'types are defined.', IncompleteFieldDefinitionWarning, ) E pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifespan' has an incomplete definition: its annotation contains an unresolved forward reference, so settings sources may fail to correctly resolve its value. Call `model_rebuild()` on the model where the field is defined, once all the referenced types are defined. /usr/lib/python3/dist-packages/pydantic_settings/sources/utils.py:47: IncompleteFieldDefinitionWarning ____________ ERROR at setup of test_delete_file_and_check_resources ____________ [gw0] linux -- Python 3.14.7 /usr/bin/python3.14 @pytest.fixture def mcp() -> FastMCP: > mcp = FastMCP() ^^^^^^^^^ tests/server/fastmcp/servers/test_file_server.py:24: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ mcp/server/fastmcp/server.py:185: in __init__ self.settings = Settings( /usr/lib/python3/dist-packages/pydantic_settings/main.py:229: in __init__ else __pydantic_self__.__class__._settings_init_sources( /usr/lib/python3/dist-packages/pydantic_settings/main.py:397: in _settings_init_sources default_settings = DefaultSettingsSource( /usr/lib/python3/dist-packages/pydantic_settings/sources/base.py:287: in __init__ _warn_if_field_info_incomplete(field_info, field_name, self._init_state) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ field_info = FieldInfo(annotation=ForwardRef('Callable[[FastMCP[LifespanResultT]], AbstractAsyncContextManager[LifespanResultT]] | None', is_class=True), required=True) field_name = 'lifespan', init_state = {'field_info_ids': {140456318704880}} def _warn_if_field_info_incomplete(field_info: FieldInfo, field_name: str, init_state: InitState) -> None:  """Warn if the field is incomplete, i.e. its annotation contains unresolved forward references.   An incomplete `FieldInfo` instance is unsafe to inspect — any of its attributes (annotation,  aliases, metadata, default) may rely on the unresolved annotation, so settings sources may  silently fail to resolve the field's value. Each instance is only warned about once per  `init_state`, so that a field accessed by multiple sources during a single settings  resolution doesn't emit duplicate warnings.  """ if getattr(field_info, '_complete', True): return warned_ids = init_state.setdefault('field_info_ids', set()) if id(field_info) in warned_ids: return warned_ids.add(id(field_info)) > warnings.warn( f'Field {field_name!r} has an incomplete definition: its annotation contains an unresolved ' 'forward reference, so settings sources may fail to correctly resolve its value. ' 'Call `model_rebuild()` on the model where the field is defined, once all the referenced ' 'types are defined.', IncompleteFieldDefinitionWarning, ) E pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifespan' has an incomplete definition: its annotation contains an unresolved forward reference, so settings sources may fail to correctly resolve its value. Call `model_rebuild()` on the model where the field is defined, once all the referenced types are defined. /usr/lib/python3/dist-packages/pydantic_settings/sources/utils.py:47: IncompleteFieldDefinitionWarning =================================== FAILURES =================================== ___________________________ test_list_roots_callback ___________________________ [gw0] linux -- Python 3.14.7 /usr/bin/python3.14 @pytest.mark.anyio async def test_list_roots_callback(): from mcp.server.fastmcp import FastMCP  > server = FastMCP("test") ^^^^^^^^^^^^^^^ tests/client/test_list_roots_callback.py:18: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ mcp/server/fastmcp/server.py:185: in __init__ self.settings = Settings( /usr/lib/python3/dist-packages/pydantic_settings/main.py:229: in __init__ else __pydantic_self__.__class__._settings_init_sources( /usr/lib/python3/dist-packages/pydantic_settings/main.py:397: in _settings_init_sources default_settings = DefaultSettingsSource( /usr/lib/python3/dist-packages/pydantic_settings/sources/base.py:287: in __init__ _warn_if_field_info_incomplete(field_info, field_name, self._init_state) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ field_info = FieldInfo(annotation=ForwardRef('Callable[[FastMCP[LifespanResultT]], AbstractAsyncContextManager[LifespanResultT]] | None', is_class=True), required=True) field_name = 'lifespan', init_state = {'field_info_ids': {140456318704880}} def _warn_if_field_info_incomplete(field_info: FieldInfo, field_name: str, init_state: InitState) -> None:  """Warn if the field is incomplete, i.e. its annotation contains unresolved forward references.   An incomplete `FieldInfo` instance is unsafe to inspect — any of its attributes (annotation,  aliases, metadata, default) may rely on the unresolved annotation, so settings sources may  silently fail to resolve the field's value. Each instance is only warned about once per  `init_state`, so that a field accessed by multiple sources during a single settings  resolution doesn't emit duplicate warnings.  """ if getattr(field_info, '_complete', True): return warned_ids = init_state.setdefault('field_info_ids', set()) if id(field_info) in warned_ids: return warned_ids.add(id(field_info)) > warnings.warn( f'Field {field_name!r} has an incomplete definition: its annotation contains an unresolved ' 'forward reference, so settings sources may fail to correctly resolve its value. ' 'Call `model_rebuild()` on the model where the field is defined, once all the referenced ' 'types are defined.', IncompleteFieldDefinitionWarning, ) E pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifespan' has an incomplete definition: its annotation contains an unresolved forward reference, so settings sources may fail to correctly resolve its value. Call `model_rebuild()` on the model where the field is defined, once all the referenced types are defined. /usr/lib/python3/dist-packages/pydantic_settings/sources/utils.py:47: IncompleteFieldDefinitionWarning ____________________________ test_logging_callback _____________________________ [gw0] linux -- Python 3.14.7 /usr/bin/python3.14 @pytest.mark.anyio async def test_logging_callback(): from mcp.server.fastmcp import FastMCP  > server = FastMCP("test") ^^^^^^^^^^^^^^^ tests/client/test_logging_callback.py:28: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ mcp/server/fastmcp/server.py:185: in __init__ self.settings = Settings( /usr/lib/python3/dist-packages/pydantic_settings/main.py:229: in __init__ else __pydantic_self__.__class__._settings_init_sources( /usr/lib/python3/dist-packages/pydantic_settings/main.py:397: in _settings_init_sources default_settings = DefaultSettingsSource( /usr/lib/python3/dist-packages/pydantic_settings/sources/base.py:287: in __init__ _warn_if_field_info_incomplete(field_info, field_name, self._init_state) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ field_info = FieldInfo(annotation=ForwardRef('Callable[[FastMCP[LifespanResultT]], AbstractAsyncContextManager[LifespanResultT]] | None', is_class=True), required=True) field_name = 'lifespan', init_state = {'field_info_ids': {140456318704880}} def _warn_if_field_info_incomplete(field_info: FieldInfo, field_name: str, init_state: InitState) -> None:  """Warn if the field is incomplete, i.e. its annotation contains unresolved forward references.   An incomplete `FieldInfo` instance is unsafe to inspect — any of its attributes (annotation,  aliases, metadata, default) may rely on the unresolved annotation, so settings sources may  silently fail to resolve the field's value. Each instance is only warned about once per  `init_state`, so that a field accessed by multiple sources during a single settings  resolution doesn't emit duplicate warnings.  """ if getattr(field_info, '_complete', True): return warned_ids = init_state.setdefault('field_info_ids', set()) if id(field_info) in warned_ids: return warned_ids.add(id(field_info)) > warnings.warn( f'Field {field_name!r} has an incomplete definition: its annotation contains an unresolved ' 'forward reference, so settings sources may fail to correctly resolve its value. ' 'Call `model_rebuild()` on the model where the field is defined, once all the referenced ' 'types are defined.', IncompleteFieldDefinitionWarning, ) E pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifespan' has an incomplete definition: its annotation contains an unresolved forward reference, so settings sources may fail to correctly resolve its value. Call `model_rebuild()` on the model where the field is defined, once all the referenced types are defined. /usr/lib/python3/dist-packages/pydantic_settings/sources/utils.py:47: IncompleteFieldDefinitionWarning ____________________________ test_sampling_callback ____________________________ [gw0] linux -- Python 3.14.7 /usr/bin/python3.14 @pytest.mark.anyio async def test_sampling_callback(): from mcp.server.fastmcp import FastMCP  > server = FastMCP("test") ^^^^^^^^^^^^^^^ tests/client/test_sampling_callback.py:22: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ mcp/server/fastmcp/server.py:185: in __init__ self.settings = Settings( /usr/lib/python3/dist-packages/pydantic_settings/main.py:229: in __init__ else __pydantic_self__.__class__._settings_init_sources( /usr/lib/python3/dist-packages/pydantic_settings/main.py:397: in _settings_init_sources default_settings = DefaultSettingsSource( /usr/lib/python3/dist-packages/pydantic_settings/sources/base.py:287: in __init__ _warn_if_field_info_incomplete(field_info, field_name, self._init_state) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ field_info = FieldInfo(annotation=ForwardRef('Callable[[FastMCP[LifespanResultT]], AbstractAsyncContextManager[LifespanResultT]] | None', is_class=True), required=True) field_name = 'lifespan', init_state = {'field_info_ids': {140456318704880}} def _warn_if_field_info_incomplete(field_info: FieldInfo, field_name: str, init_state: InitState) -> None:  """Warn if the field is incomplete, i.e. its annotation contains unresolved forward references.   An incomplete `FieldInfo` instance is unsafe to inspect — any of its attributes (annotation,  aliases, metadata, default) may rely on the unresolved annotation, so settings sources may  silently fail to resolve the field's value. Each instance is only warned about once per  `init_state`, so that a field accessed by multiple sources during a single settings  resolution doesn't emit duplicate warnings.  """ if getattr(field_info, '_complete', True): return warned_ids = init_state.setdefault('field_info_ids', set()) if id(field_info) in warned_ids: return warned_ids.add(id(field_info)) > warnings.warn( f'Field {field_name!r} has an incomplete definition: its annotation contains an unresolved ' 'forward reference, so settings sources may fail to correctly resolve its value. ' 'Call `model_rebuild()` on the model where the field is defined, once all the referenced ' 'types are defined.', IncompleteFieldDefinitionWarning, ) E pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifespan' has an incomplete definition: its annotation contains an unresolved forward reference, so settings sources may fail to correctly resolve its value. Call `model_rebuild()` on the model where the field is defined, once all the referenced types are defined. /usr/lib/python3/dist-packages/pydantic_settings/sources/utils.py:47: IncompleteFieldDefinitionWarning _____________ test_create_message_backwards_compat_single_content ______________ [gw0] linux -- Python 3.14.7 /usr/bin/python3.14 @pytest.mark.anyio async def test_create_message_backwards_compat_single_content():  """Test backwards compatibility: create_message without tools returns single content.""" from mcp.server.fastmcp import FastMCP  > server = FastMCP("test") ^^^^^^^^^^^^^^^ tests/client/test_sampling_callback.py:68: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ mcp/server/fastmcp/server.py:185: in __init__ self.settings = Settings( /usr/lib/python3/dist-packages/pydantic_settings/main.py:229: in __init__ else __pydantic_self__.__class__._settings_init_sources( /usr/lib/python3/dist-packages/pydantic_settings/main.py:397: in _settings_init_sources default_settings = DefaultSettingsSource( /usr/lib/python3/dist-packages/pydantic_settings/sources/base.py:287: in __init__ _warn_if_field_info_incomplete(field_info, field_name, self._init_state) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ field_info = FieldInfo(annotation=ForwardRef('Callable[[FastMCP[LifespanResultT]], AbstractAsyncContextManager[LifespanResultT]] | None', is_class=True), required=True) field_name = 'lifespan', init_state = {'field_info_ids': {140456318704880}} def _warn_if_field_info_incomplete(field_info: FieldInfo, field_name: str, init_state: InitState) -> None:  """Warn if the field is incomplete, i.e. its annotation contains unresolved forward references.   An incomplete `FieldInfo` instance is unsafe to inspect — any of its attributes (annotation,  aliases, metadata, default) may rely on the unresolved annotation, so settings sources may  silently fail to resolve the field's value. Each instance is only warned about once per  `init_state`, so that a field accessed by multiple sources during a single settings  resolution doesn't emit duplicate warnings.  """ if getattr(field_info, '_complete', True): return warned_ids = init_state.setdefault('field_info_ids', set()) if id(field_info) in warned_ids: return warned_ids.add(id(field_info)) > warnings.warn( f'Field {field_name!r} has an incomplete definition: its annotation contains an unresolved ' 'forward reference, so settings sources may fail to correctly resolve its value. ' 'Call `model_rebuild()` on the model where the field is defined, once all the referenced ' 'types are defined.', IncompleteFieldDefinitionWarning, ) E pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifespan' has an incomplete definition: its annotation contains an unresolved forward reference, so settings sources may fail to correctly resolve its value. Call `model_rebuild()` on the model where the field is defined, once all the referenced types are defined. /usr/lib/python3/dist-packages/pydantic_settings/sources/utils.py:47: IncompleteFieldDefinitionWarning ______________________ test_list_tools_returns_all_tools _______________________ [gw0] linux -- Python 3.14.7 /usr/bin/python3.14 async def test_list_tools_returns_all_tools(): > mcp = FastMCP("TestTools") ^^^^^^^^^^^^^^^^^^^^ tests/issues/test_100_tool_listing.py:9: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ mcp/server/fastmcp/server.py:185: in __init__ self.settings = Settings( /usr/lib/python3/dist-packages/pydantic_settings/main.py:229: in __init__ else __pydantic_self__.__class__._settings_init_sources( /usr/lib/python3/dist-packages/pydantic_settings/main.py:397: in _settings_init_sources default_settings = DefaultSettingsSource( /usr/lib/python3/dist-packages/pydantic_settings/sources/base.py:287: in __init__ _warn_if_field_info_incomplete(field_info, field_name, self._init_state) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ field_info = FieldInfo(annotation=ForwardRef('Callable[[FastMCP[LifespanResultT]], AbstractAsyncContextManager[LifespanResultT]] | None', is_class=True), required=True) field_name = 'lifespan', init_state = {'field_info_ids': {140456318704880}} def _warn_if_field_info_incomplete(field_info: FieldInfo, field_name: str, init_state: InitState) -> None:  """Warn if the field is incomplete, i.e. its annotation contains unresolved forward references.   An incomplete `FieldInfo` instance is unsafe to inspect — any of its attributes (annotation,  aliases, metadata, default) may rely on the unresolved annotation, so settings sources may  silently fail to resolve the field's value. Each instance is only warned about once per  `init_state`, so that a field accessed by multiple sources during a single settings  resolution doesn't emit duplicate warnings.  """ if getattr(field_info, '_complete', True): return warned_ids = init_state.setdefault('field_info_ids', set()) if id(field_info) in warned_ids: return warned_ids.add(id(field_info)) > warnings.warn( f'Field {field_name!r} has an incomplete definition: its annotation contains an unresolved ' 'forward reference, so settings sources may fail to correctly resolve its value. ' 'Call `model_rebuild()` on the model where the field is defined, once all the referenced ' 'types are defined.', IncompleteFieldDefinitionWarning, ) E pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifespan' has an incomplete definition: its annotation contains an unresolved forward reference, so settings sources may fail to correctly resolve its value. Call `model_rebuild()` on the model where the field is defined, once all the referenced types are defined. /usr/lib/python3/dist-packages/pydantic_settings/sources/utils.py:47: IncompleteFieldDefinitionWarning ___________________________ test_resource_templates ____________________________ [gw0] linux -- Python 3.14.7 /usr/bin/python3.14 @pytest.mark.anyio async def test_resource_templates(): # Create an MCP server > mcp = FastMCP("Demo") ^^^^^^^^^^^^^^^ tests/issues/test_129_resource_templates.py:10: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ mcp/server/fastmcp/server.py:185: in __init__ self.settings = Settings( /usr/lib/python3/dist-packages/pydantic_settings/main.py:229: in __init__ else __pydantic_self__.__class__._settings_init_sources( /usr/lib/python3/dist-packages/pydantic_settings/main.py:397: in _settings_init_sources default_settings = DefaultSettingsSource( /usr/lib/python3/dist-packages/pydantic_settings/sources/base.py:287: in __init__ _warn_if_field_info_incomplete(field_info, field_name, self._init_state) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ field_info = FieldInfo(annotation=ForwardRef('Callable[[FastMCP[LifespanResultT]], AbstractAsyncContextManager[LifespanResultT]] | None', is_class=True), required=True) field_name = 'lifespan', init_state = {'field_info_ids': {140456318704880}} def _warn_if_field_info_incomplete(field_info: FieldInfo, field_name: str, init_state: InitState) -> None:  """Warn if the field is incomplete, i.e. its annotation contains unresolved forward references.   An incomplete `FieldInfo` instance is unsafe to inspect — any of its attributes (annotation,  aliases, metadata, default) may rely on the unresolved annotation, so settings sources may  silently fail to resolve the field's value. Each instance is only warned about once per  `init_state`, so that a field accessed by multiple sources during a single settings  resolution doesn't emit duplicate warnings.  """ if getattr(field_info, '_complete', True): return warned_ids = init_state.setdefault('field_info_ids', set()) if id(field_info) in warned_ids: return warned_ids.add(id(field_info)) > warnings.warn( f'Field {field_name!r} has an incomplete definition: its annotation contains an unresolved ' 'forward reference, so settings sources may fail to correctly resolve its value. ' 'Call `model_rebuild()` on the model where the field is defined, once all the referenced ' 'types are defined.', IncompleteFieldDefinitionWarning, ) E pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifespan' has an incomplete definition: its annotation contains an unresolved forward reference, so settings sources may fail to correctly resolve its value. Call `model_rebuild()` on the model where the field is defined, once all the referenced types are defined. /usr/lib/python3/dist-packages/pydantic_settings/sources/utils.py:47: IncompleteFieldDefinitionWarning __________________________ test_icons_and_website_url __________________________ [gw0] linux -- Python 3.14.7 /usr/bin/python3.14 async def test_icons_and_website_url():  """Test that icons and websiteUrl are properly returned in API calls."""  # Create test icon test_icon = Icon( src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mNkYPhfDwAChwGA60e6kgAAAABJRU5ErkJggg==", mimeType="image/png", sizes=["1x1"], )  # Create server with website URL and icon > mcp = FastMCP("TestServer", website_url="https://example.com", icons=[test_icon]) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ tests/issues/test_1338_icons_and_metadata.py:22: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ mcp/server/fastmcp/server.py:185: in __init__ self.settings = Settings( /usr/lib/python3/dist-packages/pydantic_settings/main.py:229: in __init__ else __pydantic_self__.__class__._settings_init_sources( /usr/lib/python3/dist-packages/pydantic_settings/main.py:397: in _settings_init_sources default_settings = DefaultSettingsSource( /usr/lib/python3/dist-packages/pydantic_settings/sources/base.py:287: in __init__ _warn_if_field_info_incomplete(field_info, field_name, self._init_state) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ field_info = FieldInfo(annotation=ForwardRef('Callable[[FastMCP[LifespanResultT]], AbstractAsyncContextManager[LifespanResultT]] | None', is_class=True), required=True) field_name = 'lifespan', init_state = {'field_info_ids': {140456318704880}} def _warn_if_field_info_incomplete(field_info: FieldInfo, field_name: str, init_state: InitState) -> None:  """Warn if the field is incomplete, i.e. its annotation contains unresolved forward references.   An incomplete `FieldInfo` instance is unsafe to inspect — any of its attributes (annotation,  aliases, metadata, default) may rely on the unresolved annotation, so settings sources may  silently fail to resolve the field's value. Each instance is only warned about once per  `init_state`, so that a field accessed by multiple sources during a single settings  resolution doesn't emit duplicate warnings.  """ if getattr(field_info, '_complete', True): return warned_ids = init_state.setdefault('field_info_ids', set()) if id(field_info) in warned_ids: return warned_ids.add(id(field_info)) > warnings.warn( f'Field {field_name!r} has an incomplete definition: its annotation contains an unresolved ' 'forward reference, so settings sources may fail to correctly resolve its value. ' 'Call `model_rebuild()` on the model where the field is defined, once all the referenced ' 'types are defined.', IncompleteFieldDefinitionWarning, ) E pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifespan' has an incomplete definition: its annotation contains an unresolved forward reference, so settings sources may fail to correctly resolve its value. Call `model_rebuild()` on the model where the field is defined, once all the referenced types are defined. /usr/lib/python3/dist-packages/pydantic_settings/sources/utils.py:47: IncompleteFieldDefinitionWarning _____________________________ test_multiple_icons ______________________________ [gw0] linux -- Python 3.14.7 /usr/bin/python3.14 async def test_multiple_icons():  """Test that multiple icons can be added to tools, resources, and prompts."""  # Create multiple test icons icon1 = Icon(src="data:image/png;base64,icon1", mimeType="image/png", sizes=["16x16"]) icon2 = Icon(src="data:image/png;base64,icon2", mimeType="image/png", sizes=["32x32"]) icon3 = Icon(src="data:image/png;base64,icon3", mimeType="image/png", sizes=["64x64"])  > mcp = FastMCP("MultiIconServer") ^^^^^^^^^^^^^^^^^^^^^^^^^^ tests/issues/test_1338_icons_and_metadata.py:103: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ mcp/server/fastmcp/server.py:185: in __init__ self.settings = Settings( /usr/lib/python3/dist-packages/pydantic_settings/main.py:229: in __init__ else __pydantic_self__.__class__._settings_init_sources( /usr/lib/python3/dist-packages/pydantic_settings/main.py:397: in _settings_init_sources default_settings = DefaultSettingsSource( /usr/lib/python3/dist-packages/pydantic_settings/sources/base.py:287: in __init__ _warn_if_field_info_incomplete(field_info, field_name, self._init_state) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ field_info = FieldInfo(annotation=ForwardRef('Callable[[FastMCP[LifespanResultT]], AbstractAsyncContextManager[LifespanResultT]] | None', is_class=True), required=True) field_name = 'lifespan', init_state = {'field_info_ids': {140456318704880}} def _warn_if_field_info_incomplete(field_info: FieldInfo, field_name: str, init_state: InitState) -> None:  """Warn if the field is incomplete, i.e. its annotation contains unresolved forward references.   An incomplete `FieldInfo` instance is unsafe to inspect — any of its attributes (annotation,  aliases, metadata, default) may rely on the unresolved annotation, so settings sources may  silently fail to resolve the field's value. Each instance is only warned about once per  `init_state`, so that a field accessed by multiple sources during a single settings  resolution doesn't emit duplicate warnings.  """ if getattr(field_info, '_complete', True): return warned_ids = init_state.setdefault('field_info_ids', set()) if id(field_info) in warned_ids: return warned_ids.add(id(field_info)) > warnings.warn( f'Field {field_name!r} has an incomplete definition: its annotation contains an unresolved ' 'forward reference, so settings sources may fail to correctly resolve its value. ' 'Call `model_rebuild()` on the model where the field is defined, once all the referenced ' 'types are defined.', IncompleteFieldDefinitionWarning, ) E pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifespan' has an incomplete definition: its annotation contains an unresolved forward reference, so settings sources may fail to correctly resolve its value. Call `model_rebuild()` on the model where the field is defined, once all the referenced types are defined. /usr/lib/python3/dist-packages/pydantic_settings/sources/utils.py:47: IncompleteFieldDefinitionWarning ___________________________ test_no_icons_or_website ___________________________ [gw0] linux -- Python 3.14.7 /usr/bin/python3.14 async def test_no_icons_or_website():  """Test that server works without icons or websiteUrl."""  > mcp = FastMCP("BasicServer") ^^^^^^^^^^^^^^^^^^^^^^ tests/issues/test_1338_icons_and_metadata.py:125: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ mcp/server/fastmcp/server.py:185: in __init__ self.settings = Settings( /usr/lib/python3/dist-packages/pydantic_settings/main.py:229: in __init__ else __pydantic_self__.__class__._settings_init_sources( /usr/lib/python3/dist-packages/pydantic_settings/main.py:397: in _settings_init_sources default_settings = DefaultSettingsSource( /usr/lib/python3/dist-packages/pydantic_settings/sources/base.py:287: in __init__ _warn_if_field_info_incomplete(field_info, field_name, self._init_state) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ field_info = FieldInfo(annotation=ForwardRef('Callable[[FastMCP[LifespanResultT]], AbstractAsyncContextManager[LifespanResultT]] | None', is_class=True), required=True) field_name = 'lifespan', init_state = {'field_info_ids': {140456318704880}} def _warn_if_field_info_incomplete(field_info: FieldInfo, field_name: str, init_state: InitState) -> None:  """Warn if the field is incomplete, i.e. its annotation contains unresolved forward references.   An incomplete `FieldInfo` instance is unsafe to inspect — any of its attributes (annotation,  aliases, metadata, default) may rely on the unresolved annotation, so settings sources may  silently fail to resolve the field's value. Each instance is only warned about once per  `init_state`, so that a field accessed by multiple sources during a single settings  resolution doesn't emit duplicate warnings.  """ if getattr(field_info, '_complete', True): return warned_ids = init_state.setdefault('field_info_ids', set()) if id(field_info) in warned_ids: return warned_ids.add(id(field_info)) > warnings.warn( f'Field {field_name!r} has an incomplete definition: its annotation contains an unresolved ' 'forward reference, so settings sources may fail to correctly resolve its value. ' 'Call `model_rebuild()` on the model where the field is defined, once all the referenced ' 'types are defined.', IncompleteFieldDefinitionWarning, ) E pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifespan' has an incomplete definition: its annotation contains an unresolved forward reference, so settings sources may fail to correctly resolve its value. Call `model_rebuild()` on the model where the field is defined, once all the referenced types are defined. /usr/lib/python3/dist-packages/pydantic_settings/sources/utils.py:47: IncompleteFieldDefinitionWarning ______________________ test_resource_template_edge_cases _______________________ [gw0] linux -- Python 3.14.7 /usr/bin/python3.14 @pytest.mark.anyio async def test_resource_template_edge_cases():  """Test server-side resource template validation""" > mcp = FastMCP("Demo") ^^^^^^^^^^^^^^^ tests/issues/test_141_resource_templates.py:17: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ mcp/server/fastmcp/server.py:185: in __init__ self.settings = Settings( /usr/lib/python3/dist-packages/pydantic_settings/main.py:229: in __init__ else __pydantic_self__.__class__._settings_init_sources( /usr/lib/python3/dist-packages/pydantic_settings/main.py:397: in _settings_init_sources default_settings = DefaultSettingsSource( /usr/lib/python3/dist-packages/pydantic_settings/sources/base.py:287: in __init__ _warn_if_field_info_incomplete(field_info, field_name, self._init_state) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ field_info = FieldInfo(annotation=ForwardRef('Callable[[FastMCP[LifespanResultT]], AbstractAsyncContextManager[LifespanResultT]] | None', is_class=True), required=True) field_name = 'lifespan', init_state = {'field_info_ids': {140456318704880}} def _warn_if_field_info_incomplete(field_info: FieldInfo, field_name: str, init_state: InitState) -> None:  """Warn if the field is incomplete, i.e. its annotation contains unresolved forward references.   An incomplete `FieldInfo` instance is unsafe to inspect — any of its attributes (annotation,  aliases, metadata, default) may rely on the unresolved annotation, so settings sources may  silently fail to resolve the field's value. Each instance is only warned about once per  `init_state`, so that a field accessed by multiple sources during a single settings  resolution doesn't emit duplicate warnings.  """ if getattr(field_info, '_complete', True): return warned_ids = init_state.setdefault('field_info_ids', set()) if id(field_info) in warned_ids: return warned_ids.add(id(field_info)) > warnings.warn( f'Field {field_name!r} has an incomplete definition: its annotation contains an unresolved ' 'forward reference, so settings sources may fail to correctly resolve its value. ' 'Call `model_rebuild()` on the model where the field is defined, once all the referenced ' 'types are defined.', IncompleteFieldDefinitionWarning, ) E pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifespan' has an incomplete definition: its annotation contains an unresolved forward reference, so settings sources may fail to correctly resolve its value. Call `model_rebuild()` on the model where the field is defined, once all the referenced types are defined. /usr/lib/python3/dist-packages/pydantic_settings/sources/utils.py:47: IncompleteFieldDefinitionWarning __________________ test_resource_template_client_interaction ___________________ [gw0] linux -- Python 3.14.7 /usr/bin/python3.14 @pytest.mark.anyio async def test_resource_template_client_interaction():  """Test client-side resource template interaction""" > mcp = FastMCP("Demo") ^^^^^^^^^^^^^^^ tests/issues/test_141_resource_templates.py:70: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ mcp/server/fastmcp/server.py:185: in __init__ self.settings = Settings( /usr/lib/python3/dist-packages/pydantic_settings/main.py:229: in __init__ else __pydantic_self__.__class__._settings_init_sources( /usr/lib/python3/dist-packages/pydantic_settings/main.py:397: in _settings_init_sources default_settings = DefaultSettingsSource( /usr/lib/python3/dist-packages/pydantic_settings/sources/base.py:287: in __init__ _warn_if_field_info_incomplete(field_info, field_name, self._init_state) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ field_info = FieldInfo(annotation=ForwardRef('Callable[[FastMCP[LifespanResultT]], AbstractAsyncContextManager[LifespanResultT]] | None', is_class=True), required=True) field_name = 'lifespan', init_state = {'field_info_ids': {140456318704880}} def _warn_if_field_info_incomplete(field_info: FieldInfo, field_name: str, init_state: InitState) -> None:  """Warn if the field is incomplete, i.e. its annotation contains unresolved forward references.   An incomplete `FieldInfo` instance is unsafe to inspect — any of its attributes (annotation,  aliases, metadata, default) may rely on the unresolved annotation, so settings sources may  silently fail to resolve the field's value. Each instance is only warned about once per  `init_state`, so that a field accessed by multiple sources during a single settings  resolution doesn't emit duplicate warnings.  """ if getattr(field_info, '_complete', True): return warned_ids = init_state.setdefault('field_info_ids', set()) if id(field_info) in warned_ids: return warned_ids.add(id(field_info)) > warnings.warn( f'Field {field_name!r} has an incomplete definition: its annotation contains an unresolved ' 'forward reference, so settings sources may fail to correctly resolve its value. ' 'Call `model_rebuild()` on the model where the field is defined, once all the referenced ' 'types are defined.', IncompleteFieldDefinitionWarning, ) E pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifespan' has an incomplete definition: its annotation contains an unresolved forward reference, so settings sources may fail to correctly resolve its value. Call `model_rebuild()` on the model where the field is defined, once all the referenced types are defined. /usr/lib/python3/dist-packages/pydantic_settings/sources/utils.py:47: IncompleteFieldDefinitionWarning _______________________ test_fastmcp_resource_mime_type ________________________ [gw0] linux -- Python 3.14.7 /usr/bin/python3.14 async def test_fastmcp_resource_mime_type():  """Test that mime_type parameter is respected for resources.""" > mcp = FastMCP("test") ^^^^^^^^^^^^^^^ tests/issues/test_152_resource_mime_type.py:19: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ mcp/server/fastmcp/server.py:185: in __init__ self.settings = Settings( /usr/lib/python3/dist-packages/pydantic_settings/main.py:229: in __init__ else __pydantic_self__.__class__._settings_init_sources( /usr/lib/python3/dist-packages/pydantic_settings/main.py:397: in _settings_init_sources default_settings = DefaultSettingsSource( /usr/lib/python3/dist-packages/pydantic_settings/sources/base.py:287: in __init__ _warn_if_field_info_incomplete(field_info, field_name, self._init_state) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ field_info = FieldInfo(annotation=ForwardRef('Callable[[FastMCP[LifespanResultT]], AbstractAsyncContextManager[LifespanResultT]] | None', is_class=True), required=True) field_name = 'lifespan', init_state = {'field_info_ids': {140456318704880}} def _warn_if_field_info_incomplete(field_info: FieldInfo, field_name: str, init_state: InitState) -> None:  """Warn if the field is incomplete, i.e. its annotation contains unresolved forward references.   An incomplete `FieldInfo` instance is unsafe to inspect — any of its attributes (annotation,  aliases, metadata, default) may rely on the unresolved annotation, so settings sources may  silently fail to resolve the field's value. Each instance is only warned about once per  `init_state`, so that a field accessed by multiple sources during a single settings  resolution doesn't emit duplicate warnings.  """ if getattr(field_info, '_complete', True): return warned_ids = init_state.setdefault('field_info_ids', set()) if id(field_info) in warned_ids: return warned_ids.add(id(field_info)) > warnings.warn( f'Field {field_name!r} has an incomplete definition: its annotation contains an unresolved ' 'forward reference, so settings sources may fail to correctly resolve its value. ' 'Call `model_rebuild()` on the model where the field is defined, once all the referenced ' 'types are defined.', IncompleteFieldDefinitionWarning, ) E pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifespan' has an incomplete definition: its annotation contains an unresolved forward reference, so settings sources may fail to correctly resolve its value. Call `model_rebuild()` on the model where the field is defined, once all the referenced types are defined. /usr/lib/python3/dist-packages/pydantic_settings/sources/utils.py:47: IncompleteFieldDefinitionWarning ________________________ test_mime_type_with_parameters ________________________ [gw0] linux -- Python 3.14.7 /usr/bin/python3.14 async def test_mime_type_with_parameters():  """Test that MIME types with parameters are accepted (RFC 2045).""" > mcp = FastMCP("test") ^^^^^^^^^^^^^^^ tests/issues/test_1754_mime_type_parameters.py:20: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ mcp/server/fastmcp/server.py:185: in __init__ self.settings = Settings( /usr/lib/python3/dist-packages/pydantic_settings/main.py:229: in __init__ else __pydantic_self__.__class__._settings_init_sources( /usr/lib/python3/dist-packages/pydantic_settings/main.py:397: in _settings_init_sources default_settings = DefaultSettingsSource( /usr/lib/python3/dist-packages/pydantic_settings/sources/base.py:287: in __init__ _warn_if_field_info_incomplete(field_info, field_name, self._init_state) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ field_info = FieldInfo(annotation=ForwardRef('Callable[[FastMCP[LifespanResultT]], AbstractAsyncContextManager[LifespanResultT]] | None', is_class=True), required=True) field_name = 'lifespan', init_state = {'field_info_ids': {140456318704880}} def _warn_if_field_info_incomplete(field_info: FieldInfo, field_name: str, init_state: InitState) -> None:  """Warn if the field is incomplete, i.e. its annotation contains unresolved forward references.   An incomplete `FieldInfo` instance is unsafe to inspect — any of its attributes (annotation,  aliases, metadata, default) may rely on the unresolved annotation, so settings sources may  silently fail to resolve the field's value. Each instance is only warned about once per  `init_state`, so that a field accessed by multiple sources during a single settings  resolution doesn't emit duplicate warnings.  """ if getattr(field_info, '_complete', True): return warned_ids = init_state.setdefault('field_info_ids', set()) if id(field_info) in warned_ids: return warned_ids.add(id(field_info)) > warnings.warn( f'Field {field_name!r} has an incomplete definition: its annotation contains an unresolved ' 'forward reference, so settings sources may fail to correctly resolve its value. ' 'Call `model_rebuild()` on the model where the field is defined, once all the referenced ' 'types are defined.', IncompleteFieldDefinitionWarning, ) E pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifespan' has an incomplete definition: its annotation contains an unresolved forward reference, so settings sources may fail to correctly resolve its value. Call `model_rebuild()` on the model where the field is defined, once all the referenced types are defined. /usr/lib/python3/dist-packages/pydantic_settings/sources/utils.py:47: IncompleteFieldDefinitionWarning ___________________ test_mime_type_with_parameters_and_space ___________________ [gw0] linux -- Python 3.14.7 /usr/bin/python3.14 async def test_mime_type_with_parameters_and_space():  """Test MIME type with space after semicolon.""" > mcp = FastMCP("test") ^^^^^^^^^^^^^^^ tests/issues/test_1754_mime_type_parameters.py:34: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ mcp/server/fastmcp/server.py:185: in __init__ self.settings = Settings( /usr/lib/python3/dist-packages/pydantic_settings/main.py:229: in __init__ else __pydantic_self__.__class__._settings_init_sources( /usr/lib/python3/dist-packages/pydantic_settings/main.py:397: in _settings_init_sources default_settings = DefaultSettingsSource( /usr/lib/python3/dist-packages/pydantic_settings/sources/base.py:287: in __init__ _warn_if_field_info_incomplete(field_info, field_name, self._init_state) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ field_info = FieldInfo(annotation=ForwardRef('Callable[[FastMCP[LifespanResultT]], AbstractAsyncContextManager[LifespanResultT]] | None', is_class=True), required=True) field_name = 'lifespan', init_state = {'field_info_ids': {140456318704880}} def _warn_if_field_info_incomplete(field_info: FieldInfo, field_name: str, init_state: InitState) -> None:  """Warn if the field is incomplete, i.e. its annotation contains unresolved forward references.   An incomplete `FieldInfo` instance is unsafe to inspect — any of its attributes (annotation,  aliases, metadata, default) may rely on the unresolved annotation, so settings sources may  silently fail to resolve the field's value. Each instance is only warned about once per  `init_state`, so that a field accessed by multiple sources during a single settings  resolution doesn't emit duplicate warnings.  """ if getattr(field_info, '_complete', True): return warned_ids = init_state.setdefault('field_info_ids', set()) if id(field_info) in warned_ids: return warned_ids.add(id(field_info)) > warnings.warn( f'Field {field_name!r} has an incomplete definition: its annotation contains an unresolved ' 'forward reference, so settings sources may fail to correctly resolve its value. ' 'Call `model_rebuild()` on the model where the field is defined, once all the referenced ' 'types are defined.', IncompleteFieldDefinitionWarning, ) E pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifespan' has an incomplete definition: its annotation contains an unresolved forward reference, so settings sources may fail to correctly resolve its value. Call `model_rebuild()` on the model where the field is defined, once all the referenced types are defined. /usr/lib/python3/dist-packages/pydantic_settings/sources/utils.py:47: IncompleteFieldDefinitionWarning ___________________ test_mime_type_with_multiple_parameters ____________________ [gw0] linux -- Python 3.14.7 /usr/bin/python3.14 async def test_mime_type_with_multiple_parameters():  """Test MIME type with multiple parameters.""" > mcp = FastMCP("test") ^^^^^^^^^^^^^^^ tests/issues/test_1754_mime_type_parameters.py:47: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ mcp/server/fastmcp/server.py:185: in __init__ self.settings = Settings( /usr/lib/python3/dist-packages/pydantic_settings/main.py:229: in __init__ else __pydantic_self__.__class__._settings_init_sources( /usr/lib/python3/dist-packages/pydantic_settings/main.py:397: in _settings_init_sources default_settings = DefaultSettingsSource( /usr/lib/python3/dist-packages/pydantic_settings/sources/base.py:287: in __init__ _warn_if_field_info_incomplete(field_info, field_name, self._init_state) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ field_info = FieldInfo(annotation=ForwardRef('Callable[[FastMCP[LifespanResultT]], AbstractAsyncContextManager[LifespanResultT]] | None', is_class=True), required=True) field_name = 'lifespan', init_state = {'field_info_ids': {140456318704880}} def _warn_if_field_info_incomplete(field_info: FieldInfo, field_name: str, init_state: InitState) -> None:  """Warn if the field is incomplete, i.e. its annotation contains unresolved forward references.   An incomplete `FieldInfo` instance is unsafe to inspect — any of its attributes (annotation,  aliases, metadata, default) may rely on the unresolved annotation, so settings sources may  silently fail to resolve the field's value. Each instance is only warned about once per  `init_state`, so that a field accessed by multiple sources during a single settings  resolution doesn't emit duplicate warnings.  """ if getattr(field_info, '_complete', True): return warned_ids = init_state.setdefault('field_info_ids', set()) if id(field_info) in warned_ids: return warned_ids.add(id(field_info)) > warnings.warn( f'Field {field_name!r} has an incomplete definition: its annotation contains an unresolved ' 'forward reference, so settings sources may fail to correctly resolve its value. ' 'Call `model_rebuild()` on the model where the field is defined, once all the referenced ' 'types are defined.', IncompleteFieldDefinitionWarning, ) E pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifespan' has an incomplete definition: its annotation contains an unresolved forward reference, so settings sources may fail to correctly resolve its value. Call `model_rebuild()` on the model where the field is defined, once all the referenced types are defined. /usr/lib/python3/dist-packages/pydantic_settings/sources/utils.py:47: IncompleteFieldDefinitionWarning __________________ test_mime_type_preserved_in_read_resource ___________________ [gw0] linux -- Python 3.14.7 /usr/bin/python3.14 async def test_mime_type_preserved_in_read_resource():  """Test that MIME type with parameters is preserved when reading resource.""" > mcp = FastMCP("test") ^^^^^^^^^^^^^^^ tests/issues/test_1754_mime_type_parameters.py:60: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ mcp/server/fastmcp/server.py:185: in __init__ self.settings = Settings( /usr/lib/python3/dist-packages/pydantic_settings/main.py:229: in __init__ else __pydantic_self__.__class__._settings_init_sources( /usr/lib/python3/dist-packages/pydantic_settings/main.py:397: in _settings_init_sources default_settings = DefaultSettingsSource( /usr/lib/python3/dist-packages/pydantic_settings/sources/base.py:287: in __init__ _warn_if_field_info_incomplete(field_info, field_name, self._init_state) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ field_info = FieldInfo(annotation=ForwardRef('Callable[[FastMCP[LifespanResultT]], AbstractAsyncContextManager[LifespanResultT]] | None', is_class=True), required=True) field_name = 'lifespan', init_state = {'field_info_ids': {140456318704880}} def _warn_if_field_info_incomplete(field_info: FieldInfo, field_name: str, init_state: InitState) -> None:  """Warn if the field is incomplete, i.e. its annotation contains unresolved forward references.   An incomplete `FieldInfo` instance is unsafe to inspect — any of its attributes (annotation,  aliases, metadata, default) may rely on the unresolved annotation, so settings sources may  silently fail to resolve the field's value. Each instance is only warned about once per  `init_state`, so that a field accessed by multiple sources during a single settings  resolution doesn't emit duplicate warnings.  """ if getattr(field_info, '_complete', True): return warned_ids = init_state.setdefault('field_info_ids', set()) if id(field_info) in warned_ids: return warned_ids.add(id(field_info)) > warnings.warn( f'Field {field_name!r} has an incomplete definition: its annotation contains an unresolved ' 'forward reference, so settings sources may fail to correctly resolve its value. ' 'Call `model_rebuild()` on the model where the field is defined, once all the referenced ' 'types are defined.', IncompleteFieldDefinitionWarning, ) E pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifespan' has an incomplete definition: its annotation contains an unresolved forward reference, so settings sources may fail to correctly resolve its value. Call `model_rebuild()` on the model where the field is defined, once all the referenced types are defined. /usr/lib/python3/dist-packages/pydantic_settings/sources/utils.py:47: IncompleteFieldDefinitionWarning ________________ test_messages_are_executed_concurrently_tools _________________ [gw0] linux -- Python 3.14.7 /usr/bin/python3.14 @pytest.mark.anyio async def test_messages_are_executed_concurrently_tools(): > server = FastMCP("test") ^^^^^^^^^^^^^^^ tests/issues/test_188_concurrency.py:11: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ mcp/server/fastmcp/server.py:185: in __init__ self.settings = Settings( /usr/lib/python3/dist-packages/pydantic_settings/main.py:229: in __init__ else __pydantic_self__.__class__._settings_init_sources( /usr/lib/python3/dist-packages/pydantic_settings/main.py:397: in _settings_init_sources default_settings = DefaultSettingsSource( /usr/lib/python3/dist-packages/pydantic_settings/sources/base.py:287: in __init__ _warn_if_field_info_incomplete(field_info, field_name, self._init_state) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ field_info = FieldInfo(annotation=ForwardRef('Callable[[FastMCP[LifespanResultT]], AbstractAsyncContextManager[LifespanResultT]] | None', is_class=True), required=True) field_name = 'lifespan', init_state = {'field_info_ids': {140456318704880}} def _warn_if_field_info_incomplete(field_info: FieldInfo, field_name: str, init_state: InitState) -> None:  """Warn if the field is incomplete, i.e. its annotation contains unresolved forward references.   An incomplete `FieldInfo` instance is unsafe to inspect — any of its attributes (annotation,  aliases, metadata, default) may rely on the unresolved annotation, so settings sources may  silently fail to resolve the field's value. Each instance is only warned about once per  `init_state`, so that a field accessed by multiple sources during a single settings  resolution doesn't emit duplicate warnings.  """ if getattr(field_info, '_complete', True): return warned_ids = init_state.setdefault('field_info_ids', set()) if id(field_info) in warned_ids: return warned_ids.add(id(field_info)) > warnings.warn( f'Field {field_name!r} has an incomplete definition: its annotation contains an unresolved ' 'forward reference, so settings sources may fail to correctly resolve its value. ' 'Call `model_rebuild()` on the model where the field is defined, once all the referenced ' 'types are defined.', IncompleteFieldDefinitionWarning, ) E pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifespan' has an incomplete definition: its annotation contains an unresolved forward reference, so settings sources may fail to correctly resolve its value. Call `model_rebuild()` on the model where the field is defined, once all the referenced types are defined. /usr/lib/python3/dist-packages/pydantic_settings/sources/utils.py:47: IncompleteFieldDefinitionWarning _________ test_messages_are_executed_concurrently_tools_and_resources __________ [gw0] linux -- Python 3.14.7 /usr/bin/python3.14 @pytest.mark.anyio async def test_messages_are_executed_concurrently_tools_and_resources(): > server = FastMCP("test") ^^^^^^^^^^^^^^^ tests/issues/test_188_concurrency.py:52: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ mcp/server/fastmcp/server.py:185: in __init__ self.settings = Settings( /usr/lib/python3/dist-packages/pydantic_settings/main.py:229: in __init__ else __pydantic_self__.__class__._settings_init_sources( /usr/lib/python3/dist-packages/pydantic_settings/main.py:397: in _settings_init_sources default_settings = DefaultSettingsSource( /usr/lib/python3/dist-packages/pydantic_settings/sources/base.py:287: in __init__ _warn_if_field_info_incomplete(field_info, field_name, self._init_state) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ field_info = FieldInfo(annotation=ForwardRef('Callable[[FastMCP[LifespanResultT]], AbstractAsyncContextManager[LifespanResultT]] | None', is_class=True), required=True) field_name = 'lifespan', init_state = {'field_info_ids': {140456318704880}} def _warn_if_field_info_incomplete(field_info: FieldInfo, field_name: str, init_state: InitState) -> None:  """Warn if the field is incomplete, i.e. its annotation contains unresolved forward references.   An incomplete `FieldInfo` instance is unsafe to inspect — any of its attributes (annotation,  aliases, metadata, default) may rely on the unresolved annotation, so settings sources may  silently fail to resolve the field's value. Each instance is only warned about once per  `init_state`, so that a field accessed by multiple sources during a single settings  resolution doesn't emit duplicate warnings.  """ if getattr(field_info, '_complete', True): return warned_ids = init_state.setdefault('field_info_ids', set()) if id(field_info) in warned_ids: return warned_ids.add(id(field_info)) > warnings.warn( f'Field {field_name!r} has an incomplete definition: its annotation contains an unresolved ' 'forward reference, so settings sources may fail to correctly resolve its value. ' 'Call `model_rebuild()` on the model where the field is defined, once all the referenced ' 'types are defined.', IncompleteFieldDefinitionWarning, ) E pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifespan' has an incomplete definition: its annotation contains an unresolved forward reference, so settings sources may fail to correctly resolve its value. Call `model_rebuild()` on the model where the field is defined, once all the referenced types are defined. /usr/lib/python3/dist-packages/pydantic_settings/sources/utils.py:47: IncompleteFieldDefinitionWarning _____ TestResourceTemplateAnnotations.test_template_annotations_in_fastmcp _____ [gw0] linux -- Python 3.14.7 /usr/bin/python3.14 self = @pytest.mark.anyio async def test_template_annotations_in_fastmcp(self):  """Test template annotations via FastMCP decorator."""  > mcp = FastMCP() ^^^^^^^^^ tests/server/fastmcp/resources/test_resource_template.py:225: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ mcp/server/fastmcp/server.py:185: in __init__ self.settings = Settings( /usr/lib/python3/dist-packages/pydantic_settings/main.py:229: in __init__ else __pydantic_self__.__class__._settings_init_sources( /usr/lib/python3/dist-packages/pydantic_settings/main.py:397: in _settings_init_sources default_settings = DefaultSettingsSource( /usr/lib/python3/dist-packages/pydantic_settings/sources/base.py:287: in __init__ _warn_if_field_info_incomplete(field_info, field_name, self._init_state) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ field_info = FieldInfo(annotation=ForwardRef('Callable[[FastMCP[LifespanResultT]], AbstractAsyncContextManager[LifespanResultT]] | None', is_class=True), required=True) field_name = 'lifespan', init_state = {'field_info_ids': {140456318704880}} def _warn_if_field_info_incomplete(field_info: FieldInfo, field_name: str, init_state: InitState) -> None:  """Warn if the field is incomplete, i.e. its annotation contains unresolved forward references.   An incomplete `FieldInfo` instance is unsafe to inspect — any of its attributes (annotation,  aliases, metadata, default) may rely on the unresolved annotation, so settings sources may  silently fail to resolve the field's value. Each instance is only warned about once per  `init_state`, so that a field accessed by multiple sources during a single settings  resolution doesn't emit duplicate warnings.  """ if getattr(field_info, '_complete', True): return warned_ids = init_state.setdefault('field_info_ids', set()) if id(field_info) in warned_ids: return warned_ids.add(id(field_info)) > warnings.warn( f'Field {field_name!r} has an incomplete definition: its annotation contains an unresolved ' 'forward reference, so settings sources may fail to correctly resolve its value. ' 'Call `model_rebuild()` on the model where the field is defined, once all the referenced ' 'types are defined.', IncompleteFieldDefinitionWarning, ) E pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifespan' has an incomplete definition: its annotation contains an unresolved forward reference, so settings sources may fail to correctly resolve its value. Call `model_rebuild()` on the model where the field is defined, once all the referenced types are defined. /usr/lib/python3/dist-packages/pydantic_settings/sources/utils.py:47: IncompleteFieldDefinitionWarning _________ TestResourceAnnotations.test_resource_annotations_in_fastmcp _________ [gw0] linux -- Python 3.14.7 /usr/bin/python3.14 self = @pytest.mark.anyio async def test_resource_annotations_in_fastmcp(self):  """Test resource annotations via FastMCP decorator."""  > mcp = FastMCP() ^^^^^^^^^ tests/server/fastmcp/resources/test_resources.py:137: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ mcp/server/fastmcp/server.py:185: in __init__ self.settings = Settings( /usr/lib/python3/dist-packages/pydantic_settings/main.py:229: in __init__ else __pydantic_self__.__class__._settings_init_sources( /usr/lib/python3/dist-packages/pydantic_settings/main.py:397: in _settings_init_sources default_settings = DefaultSettingsSource( /usr/lib/python3/dist-packages/pydantic_settings/sources/base.py:287: in __init__ _warn_if_field_info_incomplete(field_info, field_name, self._init_state) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ field_info = FieldInfo(annotation=ForwardRef('Callable[[FastMCP[LifespanResultT]], AbstractAsyncContextManager[LifespanResultT]] | None', is_class=True), required=True) field_name = 'lifespan', init_state = {'field_info_ids': {140456318704880}} def _warn_if_field_info_incomplete(field_info: FieldInfo, field_name: str, init_state: InitState) -> None:  """Warn if the field is incomplete, i.e. its annotation contains unresolved forward references.   An incomplete `FieldInfo` instance is unsafe to inspect — any of its attributes (annotation,  aliases, metadata, default) may rely on the unresolved annotation, so settings sources may  silently fail to resolve the field's value. Each instance is only warned about once per  `init_state`, so that a field accessed by multiple sources during a single settings  resolution doesn't emit duplicate warnings.  """ if getattr(field_info, '_complete', True): return warned_ids = init_state.setdefault('field_info_ids', set()) if id(field_info) in warned_ids: return warned_ids.add(id(field_info)) > warnings.warn( f'Field {field_name!r} has an incomplete definition: its annotation contains an unresolved ' 'forward reference, so settings sources may fail to correctly resolve its value. ' 'Call `model_rebuild()` on the model where the field is defined, once all the referenced ' 'types are defined.', IncompleteFieldDefinitionWarning, ) E pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifespan' has an incomplete definition: its annotation contains an unresolved forward reference, so settings sources may fail to correctly resolve its value. Call `model_rebuild()` on the model where the field is defined, once all the referenced types are defined. /usr/lib/python3/dist-packages/pydantic_settings/sources/utils.py:47: IncompleteFieldDefinitionWarning ____ TestResourceAnnotations.test_resource_annotations_with_both_audiences _____ [gw0] linux -- Python 3.14.7 /usr/bin/python3.14 self = @pytest.mark.anyio async def test_resource_annotations_with_both_audiences(self):  """Test resource with both user and assistant audience."""  > mcp = FastMCP() ^^^^^^^^^ tests/server/fastmcp/resources/test_resources.py:154: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ mcp/server/fastmcp/server.py:185: in __init__ self.settings = Settings( /usr/lib/python3/dist-packages/pydantic_settings/main.py:229: in __init__ else __pydantic_self__.__class__._settings_init_sources( /usr/lib/python3/dist-packages/pydantic_settings/main.py:397: in _settings_init_sources default_settings = DefaultSettingsSource( /usr/lib/python3/dist-packages/pydantic_settings/sources/base.py:287: in __init__ _warn_if_field_info_incomplete(field_info, field_name, self._init_state) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ field_info = FieldInfo(annotation=ForwardRef('Callable[[FastMCP[LifespanResultT]], AbstractAsyncContextManager[LifespanResultT]] | None', is_class=True), required=True) field_name = 'lifespan', init_state = {'field_info_ids': {140456318704880}} def _warn_if_field_info_incomplete(field_info: FieldInfo, field_name: str, init_state: InitState) -> None:  """Warn if the field is incomplete, i.e. its annotation contains unresolved forward references.   An incomplete `FieldInfo` instance is unsafe to inspect — any of its attributes (annotation,  aliases, metadata, default) may rely on the unresolved annotation, so settings sources may  silently fail to resolve the field's value. Each instance is only warned about once per  `init_state`, so that a field accessed by multiple sources during a single settings  resolution doesn't emit duplicate warnings.  """ if getattr(field_info, '_complete', True): return warned_ids = init_state.setdefault('field_info_ids', set()) if id(field_info) in warned_ids: return warned_ids.add(id(field_info)) > warnings.warn( f'Field {field_name!r} has an incomplete definition: its annotation contains an unresolved ' 'forward reference, so settings sources may fail to correctly resolve its value. ' 'Call `model_rebuild()` on the model where the field is defined, once all the referenced ' 'types are defined.', IncompleteFieldDefinitionWarning, ) E pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifespan' has an incomplete definition: its annotation contains an unresolved forward reference, so settings sources may fail to correctly resolve its value. Call `model_rebuild()` on the model where the field is defined, once all the referenced types are defined. /usr/lib/python3/dist-packages/pydantic_settings/sources/utils.py:47: IncompleteFieldDefinitionWarning ____________________________ test_stdio_elicitation ____________________________ [gw0] linux -- Python 3.14.7 /usr/bin/python3.14 @pytest.mark.anyio async def test_stdio_elicitation():  """Test the elicitation feature using stdio transport.""" > mcp = FastMCP(name="StdioElicitationServer") ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ tests/server/fastmcp/test_elicitation.py:71: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ mcp/server/fastmcp/server.py:185: in __init__ self.settings = Settings( /usr/lib/python3/dist-packages/pydantic_settings/main.py:229: in __init__ else __pydantic_self__.__class__._settings_init_sources( /usr/lib/python3/dist-packages/pydantic_settings/main.py:397: in _settings_init_sources default_settings = DefaultSettingsSource( /usr/lib/python3/dist-packages/pydantic_settings/sources/base.py:287: in __init__ _warn_if_field_info_incomplete(field_info, field_name, self._init_state) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ field_info = FieldInfo(annotation=ForwardRef('Callable[[FastMCP[LifespanResultT]], AbstractAsyncContextManager[LifespanResultT]] | None', is_class=True), required=True) field_name = 'lifespan', init_state = {'field_info_ids': {140456318704880}} def _warn_if_field_info_incomplete(field_info: FieldInfo, field_name: str, init_state: InitState) -> None:  """Warn if the field is incomplete, i.e. its annotation contains unresolved forward references.   An incomplete `FieldInfo` instance is unsafe to inspect — any of its attributes (annotation,  aliases, metadata, default) may rely on the unresolved annotation, so settings sources may  silently fail to resolve the field's value. Each instance is only warned about once per  `init_state`, so that a field accessed by multiple sources during a single settings  resolution doesn't emit duplicate warnings.  """ if getattr(field_info, '_complete', True): return warned_ids = init_state.setdefault('field_info_ids', set()) if id(field_info) in warned_ids: return warned_ids.add(id(field_info)) > warnings.warn( f'Field {field_name!r} has an incomplete definition: its annotation contains an unresolved ' 'forward reference, so settings sources may fail to correctly resolve its value. ' 'Call `model_rebuild()` on the model where the field is defined, once all the referenced ' 'types are defined.', IncompleteFieldDefinitionWarning, ) E pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifespan' has an incomplete definition: its annotation contains an unresolved forward reference, so settings sources may fail to correctly resolve its value. Call `model_rebuild()` on the model where the field is defined, once all the referenced types are defined. /usr/lib/python3/dist-packages/pydantic_settings/sources/utils.py:47: IncompleteFieldDefinitionWarning ________________________ test_stdio_elicitation_decline ________________________ [gw0] linux -- Python 3.14.7 /usr/bin/python3.14 @pytest.mark.anyio async def test_stdio_elicitation_decline():  """Test elicitation with user declining.""" > mcp = FastMCP(name="StdioElicitationDeclineServer") ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ tests/server/fastmcp/test_elicitation.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ mcp/server/fastmcp/server.py:185: in __init__ self.settings = Settings( /usr/lib/python3/dist-packages/pydantic_settings/main.py:229: in __init__ else __pydantic_self__.__class__._settings_init_sources( /usr/lib/python3/dist-packages/pydantic_settings/main.py:397: in _settings_init_sources default_settings = DefaultSettingsSource( /usr/lib/python3/dist-packages/pydantic_settings/sources/base.py:287: in __init__ _warn_if_field_info_incomplete(field_info, field_name, self._init_state) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ field_info = FieldInfo(annotation=ForwardRef('Callable[[FastMCP[LifespanResultT]], AbstractAsyncContextManager[LifespanResultT]] | None', is_class=True), required=True) field_name = 'lifespan', init_state = {'field_info_ids': {140456318704880}} def _warn_if_field_info_incomplete(field_info: FieldInfo, field_name: str, init_state: InitState) -> None:  """Warn if the field is incomplete, i.e. its annotation contains unresolved forward references.   An incomplete `FieldInfo` instance is unsafe to inspect — any of its attributes (annotation,  aliases, metadata, default) may rely on the unresolved annotation, so settings sources may  silently fail to resolve the field's value. Each instance is only warned about once per  `init_state`, so that a field accessed by multiple sources during a single settings  resolution doesn't emit duplicate warnings.  """ if getattr(field_info, '_complete', True): return warned_ids = init_state.setdefault('field_info_ids', set()) if id(field_info) in warned_ids: return warned_ids.add(id(field_info)) > warnings.warn( f'Field {field_name!r} has an incomplete definition: its annotation contains an unresolved ' 'forward reference, so settings sources may fail to correctly resolve its value. ' 'Call `model_rebuild()` on the model where the field is defined, once all the referenced ' 'types are defined.', IncompleteFieldDefinitionWarning, ) E pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifespan' has an incomplete definition: its annotation contains an unresolved forward reference, so settings sources may fail to correctly resolve its value. Call `model_rebuild()` on the model where the field is defined, once all the referenced types are defined. /usr/lib/python3/dist-packages/pydantic_settings/sources/utils.py:47: IncompleteFieldDefinitionWarning ______________________ test_elicitation_schema_validation ______________________ [gw0] linux -- Python 3.14.7 /usr/bin/python3.14 @pytest.mark.anyio async def test_elicitation_schema_validation():  """Test that elicitation schemas must only contain primitive types.""" > mcp = FastMCP(name="ValidationTestServer") ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ tests/server/fastmcp/test_elicitation.py:105: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ mcp/server/fastmcp/server.py:185: in __init__ self.settings = Settings( /usr/lib/python3/dist-packages/pydantic_settings/main.py:229: in __init__ else __pydantic_self__.__class__._settings_init_sources( /usr/lib/python3/dist-packages/pydantic_settings/main.py:397: in _settings_init_sources default_settings = DefaultSettingsSource( /usr/lib/python3/dist-packages/pydantic_settings/sources/base.py:287: in __init__ _warn_if_field_info_incomplete(field_info, field_name, self._init_state) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ field_info = FieldInfo(annotation=ForwardRef('Callable[[FastMCP[LifespanResultT]], AbstractAsyncContextManager[LifespanResultT]] | None', is_class=True), required=True) field_name = 'lifespan', init_state = {'field_info_ids': {140456318704880}} def _warn_if_field_info_incomplete(field_info: FieldInfo, field_name: str, init_state: InitState) -> None:  """Warn if the field is incomplete, i.e. its annotation contains unresolved forward references.   An incomplete `FieldInfo` instance is unsafe to inspect — any of its attributes (annotation,  aliases, metadata, default) may rely on the unresolved annotation, so settings sources may  silently fail to resolve the field's value. Each instance is only warned about once per  `init_state`, so that a field accessed by multiple sources during a single settings  resolution doesn't emit duplicate warnings.  """ if getattr(field_info, '_complete', True): return warned_ids = init_state.setdefault('field_info_ids', set()) if id(field_info) in warned_ids: return warned_ids.add(id(field_info)) > warnings.warn( f'Field {field_name!r} has an incomplete definition: its annotation contains an unresolved ' 'forward reference, so settings sources may fail to correctly resolve its value. ' 'Call `model_rebuild()` on the model where the field is defined, once all the referenced ' 'types are defined.', IncompleteFieldDefinitionWarning, ) E pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifespan' has an incomplete definition: its annotation contains an unresolved forward reference, so settings sources may fail to correctly resolve its value. Call `model_rebuild()` on the model where the field is defined, once all the referenced types are defined. /usr/lib/python3/dist-packages/pydantic_settings/sources/utils.py:47: IncompleteFieldDefinitionWarning ____________________ test_elicitation_with_optional_fields _____________________ [gw0] linux -- Python 3.14.7 /usr/bin/python3.14 @pytest.mark.anyio async def test_elicitation_with_optional_fields():  """Test that Optional fields work correctly in elicitation schemas.""" > mcp = FastMCP(name="OptionalFieldServer") ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ tests/server/fastmcp/test_elicitation.py:154: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ mcp/server/fastmcp/server.py:185: in __init__ self.settings = Settings( /usr/lib/python3/dist-packages/pydantic_settings/main.py:229: in __init__ else __pydantic_self__.__class__._settings_init_sources( /usr/lib/python3/dist-packages/pydantic_settings/main.py:397: in _settings_init_sources default_settings = DefaultSettingsSource( /usr/lib/python3/dist-packages/pydantic_settings/sources/base.py:287: in __init__ _warn_if_field_info_incomplete(field_info, field_name, self._init_state) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ field_info = FieldInfo(annotation=ForwardRef('Callable[[FastMCP[LifespanResultT]], AbstractAsyncContextManager[LifespanResultT]] | None', is_class=True), required=True) field_name = 'lifespan', init_state = {'field_info_ids': {140456318704880}} def _warn_if_field_info_incomplete(field_info: FieldInfo, field_name: str, init_state: InitState) -> None:  """Warn if the field is incomplete, i.e. its annotation contains unresolved forward references.   An incomplete `FieldInfo` instance is unsafe to inspect — any of its attributes (annotation,  aliases, metadata, default) may rely on the unresolved annotation, so settings sources may  silently fail to resolve the field's value. Each instance is only warned about once per  `init_state`, so that a field accessed by multiple sources during a single settings  resolution doesn't emit duplicate warnings.  """ if getattr(field_info, '_complete', True): return warned_ids = init_state.setdefault('field_info_ids', set()) if id(field_info) in warned_ids: return warned_ids.add(id(field_info)) > warnings.warn( f'Field {field_name!r} has an incomplete definition: its annotation contains an unresolved ' 'forward reference, so settings sources may fail to correctly resolve its value. ' 'Call `model_rebuild()` on the model where the field is defined, once all the referenced ' 'types are defined.', IncompleteFieldDefinitionWarning, ) E pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifespan' has an incomplete definition: its annotation contains an unresolved forward reference, so settings sources may fail to correctly resolve its value. Call `model_rebuild()` on the model where the field is defined, once all the referenced types are defined. /usr/lib/python3/dist-packages/pydantic_settings/sources/utils.py:47: IncompleteFieldDefinitionWarning _____________________ test_elicitation_with_default_values _____________________ [gw0] linux -- Python 3.14.7 /usr/bin/python3.14 @pytest.mark.anyio async def test_elicitation_with_default_values():  """Test that default values work correctly in elicitation schemas and are included in JSON.""" > mcp = FastMCP(name="DefaultValuesServer") ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ tests/server/fastmcp/test_elicitation.py:269: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ mcp/server/fastmcp/server.py:185: in __init__ self.settings = Settings( /usr/lib/python3/dist-packages/pydantic_settings/main.py:229: in __init__ else __pydantic_self__.__class__._settings_init_sources( /usr/lib/python3/dist-packages/pydantic_settings/main.py:397: in _settings_init_sources default_settings = DefaultSettingsSource( /usr/lib/python3/dist-packages/pydantic_settings/sources/base.py:287: in __init__ _warn_if_field_info_incomplete(field_info, field_name, self._init_state) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ field_info = FieldInfo(annotation=ForwardRef('Callable[[FastMCP[LifespanResultT]], AbstractAsyncContextManager[LifespanResultT]] | None', is_class=True), required=True) field_name = 'lifespan', init_state = {'field_info_ids': {140456318704880}} def _warn_if_field_info_incomplete(field_info: FieldInfo, field_name: str, init_state: InitState) -> None:  """Warn if the field is incomplete, i.e. its annotation contains unresolved forward references.   An incomplete `FieldInfo` instance is unsafe to inspect — any of its attributes (annotation,  aliases, metadata, default) may rely on the unresolved annotation, so settings sources may  silently fail to resolve the field's value. Each instance is only warned about once per  `init_state`, so that a field accessed by multiple sources during a single settings  resolution doesn't emit duplicate warnings.  """ if getattr(field_info, '_complete', True): return warned_ids = init_state.setdefault('field_info_ids', set()) if id(field_info) in warned_ids: return warned_ids.add(id(field_info)) > warnings.warn( f'Field {field_name!r} has an incomplete definition: its annotation contains an unresolved ' 'forward reference, so settings sources may fail to correctly resolve its value. ' 'Call `model_rebuild()` on the model where the field is defined, once all the referenced ' 'types are defined.', IncompleteFieldDefinitionWarning, ) E pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifespan' has an incomplete definition: its annotation contains an unresolved forward reference, so settings sources may fail to correctly resolve its value. Call `model_rebuild()` on the model where the field is defined, once all the referenced types are defined. /usr/lib/python3/dist-packages/pydantic_settings/sources/utils.py:47: IncompleteFieldDefinitionWarning ______________________ test_elicitation_with_enum_titles _______________________ [gw0] linux -- Python 3.14.7 /usr/bin/python3.14 @pytest.mark.anyio async def test_elicitation_with_enum_titles():  """Test elicitation with enum schemas using oneOf/anyOf for titles.""" > mcp = FastMCP(name="ColorPreferencesApp") ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ tests/server/fastmcp/test_elicitation.py:325: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ mcp/server/fastmcp/server.py:185: in __init__ self.settings = Settings( /usr/lib/python3/dist-packages/pydantic_settings/main.py:229: in __init__ else __pydantic_self__.__class__._settings_init_sources( /usr/lib/python3/dist-packages/pydantic_settings/main.py:397: in _settings_init_sources default_settings = DefaultSettingsSource( /usr/lib/python3/dist-packages/pydantic_settings/sources/base.py:287: in __init__ _warn_if_field_info_incomplete(field_info, field_name, self._init_state) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ field_info = FieldInfo(annotation=ForwardRef('Callable[[FastMCP[LifespanResultT]], AbstractAsyncContextManager[LifespanResultT]] | None', is_class=True), required=True) field_name = 'lifespan', init_state = {'field_info_ids': {140456318704880}} def _warn_if_field_info_incomplete(field_info: FieldInfo, field_name: str, init_state: InitState) -> None:  """Warn if the field is incomplete, i.e. its annotation contains unresolved forward references.   An incomplete `FieldInfo` instance is unsafe to inspect — any of its attributes (annotation,  aliases, metadata, default) may rely on the unresolved annotation, so settings sources may  silently fail to resolve the field's value. Each instance is only warned about once per  `init_state`, so that a field accessed by multiple sources during a single settings  resolution doesn't emit duplicate warnings.  """ if getattr(field_info, '_complete', True): return warned_ids = init_state.setdefault('field_info_ids', set()) if id(field_info) in warned_ids: return warned_ids.add(id(field_info)) > warnings.warn( f'Field {field_name!r} has an incomplete definition: its annotation contains an unresolved ' 'forward reference, so settings sources may fail to correctly resolve its value. ' 'Call `model_rebuild()` on the model where the field is defined, once all the referenced ' 'types are defined.', IncompleteFieldDefinitionWarning, ) E pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifespan' has an incomplete definition: its annotation contains an unresolved forward reference, so settings sources may fail to correctly resolve its value. Call `model_rebuild()` on the model where the field is defined, once all the referenced types are defined. /usr/lib/python3/dist-packages/pydantic_settings/sources/utils.py:47: IncompleteFieldDefinitionWarning _________________________ test_parameter_descriptions __________________________ [gw0] linux -- Python 3.14.7 /usr/bin/python3.14 @pytest.mark.anyio async def test_parameter_descriptions(): > mcp = FastMCP("Test Server") ^^^^^^^^^^^^^^^^^^^^^^ tests/server/fastmcp/test_parameter_descriptions.py:11: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ mcp/server/fastmcp/server.py:185: in __init__ self.settings = Settings( /usr/lib/python3/dist-packages/pydantic_settings/main.py:229: in __init__ else __pydantic_self__.__class__._settings_init_sources( /usr/lib/python3/dist-packages/pydantic_settings/main.py:397: in _settings_init_sources default_settings = DefaultSettingsSource( /usr/lib/python3/dist-packages/pydantic_settings/sources/base.py:287: in __init__ _warn_if_field_info_incomplete(field_info, field_name, self._init_state) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ field_info = FieldInfo(annotation=ForwardRef('Callable[[FastMCP[LifespanResultT]], AbstractAsyncContextManager[LifespanResultT]] | None', is_class=True), required=True) field_name = 'lifespan', init_state = {'field_info_ids': {140456318704880}} def _warn_if_field_info_incomplete(field_info: FieldInfo, field_name: str, init_state: InitState) -> None:  """Warn if the field is incomplete, i.e. its annotation contains unresolved forward references.   An incomplete `FieldInfo` instance is unsafe to inspect — any of its attributes (annotation,  aliases, metadata, default) may rely on the unresolved annotation, so settings sources may  silently fail to resolve the field's value. Each instance is only warned about once per  `init_state`, so that a field accessed by multiple sources during a single settings  resolution doesn't emit duplicate warnings.  """ if getattr(field_info, '_complete', True): return warned_ids = init_state.setdefault('field_info_ids', set()) if id(field_info) in warned_ids: return warned_ids.add(id(field_info)) > warnings.warn( f'Field {field_name!r} has an incomplete definition: its annotation contains an unresolved ' 'forward reference, so settings sources may fail to correctly resolve its value. ' 'Call `model_rebuild()` on the model where the field is defined, once all the referenced ' 'types are defined.', IncompleteFieldDefinitionWarning, ) E pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifespan' has an incomplete definition: its annotation contains an unresolved forward reference, so settings sources may fail to correctly resolve its value. Call `model_rebuild()` on the model where the field is defined, once all the referenced types are defined. /usr/lib/python3/dist-packages/pydantic_settings/sources/utils.py:47: IncompleteFieldDefinitionWarning ________________________ TestServer.test_create_server _________________________ [gw0] linux -- Python 3.14.7 /usr/bin/python3.14 self = @pytest.mark.anyio async def test_create_server(self): > mcp = FastMCP(instructions="Server instructions") ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ tests/server/fastmcp/test_server.py:37: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ mcp/server/fastmcp/server.py:185: in __init__ self.settings = Settings( /usr/lib/python3/dist-packages/pydantic_settings/main.py:229: in __init__ else __pydantic_self__.__class__._settings_init_sources( /usr/lib/python3/dist-packages/pydantic_settings/main.py:397: in _settings_init_sources default_settings = DefaultSettingsSource( /usr/lib/python3/dist-packages/pydantic_settings/sources/base.py:287: in __init__ _warn_if_field_info_incomplete(field_info, field_name, self._init_state) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ field_info = FieldInfo(annotation=ForwardRef('Callable[[FastMCP[LifespanResultT]], AbstractAsyncContextManager[LifespanResultT]] | None', is_class=True), required=True) field_name = 'lifespan', init_state = {'field_info_ids': {140456318704880}} def _warn_if_field_info_incomplete(field_info: FieldInfo, field_name: str, init_state: InitState) -> None:  """Warn if the field is incomplete, i.e. its annotation contains unresolved forward references.   An incomplete `FieldInfo` instance is unsafe to inspect — any of its attributes (annotation,  aliases, metadata, default) may rely on the unresolved annotation, so settings sources may  silently fail to resolve the field's value. Each instance is only warned about once per  `init_state`, so that a field accessed by multiple sources during a single settings  resolution doesn't emit duplicate warnings.  """ if getattr(field_info, '_complete', True): return warned_ids = init_state.setdefault('field_info_ids', set()) if id(field_info) in warned_ids: return warned_ids.add(id(field_info)) > warnings.warn( f'Field {field_name!r} has an incomplete definition: its annotation contains an unresolved ' 'forward reference, so settings sources may fail to correctly resolve its value. ' 'Call `model_rebuild()` on the model where the field is defined, once all the referenced ' 'types are defined.', IncompleteFieldDefinitionWarning, ) E pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifespan' has an incomplete definition: its annotation contains an unresolved forward reference, so settings sources may fail to correctly resolve its value. Call `model_rebuild()` on the model where the field is defined, once all the referenced types are defined. /usr/lib/python3/dist-packages/pydantic_settings/sources/utils.py:47: IncompleteFieldDefinitionWarning ________________________ TestServer.test_normalize_path ________________________ [gw0] linux -- Python 3.14.7 /usr/bin/python3.14 self = @pytest.mark.anyio async def test_normalize_path(self):  """Test path normalization for mount paths.""" > mcp = FastMCP() ^^^^^^^^^ tests/server/fastmcp/test_server.py:44: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ mcp/server/fastmcp/server.py:185: in __init__ self.settings = Settings( /usr/lib/python3/dist-packages/pydantic_settings/main.py:229: in __init__ else __pydantic_self__.__class__._settings_init_sources( /usr/lib/python3/dist-packages/pydantic_settings/main.py:397: in _settings_init_sources default_settings = DefaultSettingsSource( /usr/lib/python3/dist-packages/pydantic_settings/sources/base.py:287: in __init__ _warn_if_field_info_incomplete(field_info, field_name, self._init_state) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ field_info = FieldInfo(annotation=ForwardRef('Callable[[FastMCP[LifespanResultT]], AbstractAsyncContextManager[LifespanResultT]] | None', is_class=True), required=True) field_name = 'lifespan', init_state = {'field_info_ids': {140456318704880}} def _warn_if_field_info_incomplete(field_info: FieldInfo, field_name: str, init_state: InitState) -> None:  """Warn if the field is incomplete, i.e. its annotation contains unresolved forward references.   An incomplete `FieldInfo` instance is unsafe to inspect — any of its attributes (annotation,  aliases, metadata, default) may rely on the unresolved annotation, so settings sources may  silently fail to resolve the field's value. Each instance is only warned about once per  `init_state`, so that a field accessed by multiple sources during a single settings  resolution doesn't emit duplicate warnings.  """ if getattr(field_info, '_complete', True): return warned_ids = init_state.setdefault('field_info_ids', set()) if id(field_info) in warned_ids: return warned_ids.add(id(field_info)) > warnings.warn( f'Field {field_name!r} has an incomplete definition: its annotation contains an unresolved ' 'forward reference, so settings sources may fail to correctly resolve its value. ' 'Call `model_rebuild()` on the model where the field is defined, once all the referenced ' 'types are defined.', IncompleteFieldDefinitionWarning, ) E pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifespan' has an incomplete definition: its annotation contains an unresolved forward reference, so settings sources may fail to correctly resolve its value. Call `model_rebuild()` on the model where the field is defined, once all the referenced types are defined. /usr/lib/python3/dist-packages/pydantic_settings/sources/utils.py:47: IncompleteFieldDefinitionWarning ___________________ TestServer.test_sse_app_with_mount_path ____________________ [gw0] linux -- Python 3.14.7 /usr/bin/python3.14 self = @pytest.mark.anyio async def test_sse_app_with_mount_path(self):  """Test SSE app creation with different mount paths.""" # Test with default mount path > mcp = FastMCP() ^^^^^^^^^ tests/server/fastmcp/test_server.py:65: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ mcp/server/fastmcp/server.py:185: in __init__ self.settings = Settings( /usr/lib/python3/dist-packages/pydantic_settings/main.py:229: in __init__ else __pydantic_self__.__class__._settings_init_sources( /usr/lib/python3/dist-packages/pydantic_settings/main.py:397: in _settings_init_sources default_settings = DefaultSettingsSource( /usr/lib/python3/dist-packages/pydantic_settings/sources/base.py:287: in __init__ _warn_if_field_info_incomplete(field_info, field_name, self._init_state) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ field_info = FieldInfo(annotation=ForwardRef('Callable[[FastMCP[LifespanResultT]], AbstractAsyncContextManager[LifespanResultT]] | None', is_class=True), required=True) field_name = 'lifespan', init_state = {'field_info_ids': {140456318704880}} def _warn_if_field_info_incomplete(field_info: FieldInfo, field_name: str, init_state: InitState) -> None:  """Warn if the field is incomplete, i.e. its annotation contains unresolved forward references.   An incomplete `FieldInfo` instance is unsafe to inspect — any of its attributes (annotation,  aliases, metadata, default) may rely on the unresolved annotation, so settings sources may  silently fail to resolve the field's value. Each instance is only warned about once per  `init_state`, so that a field accessed by multiple sources during a single settings  resolution doesn't emit duplicate warnings.  """ if getattr(field_info, '_complete', True): return warned_ids = init_state.setdefault('field_info_ids', set()) if id(field_info) in warned_ids: return warned_ids.add(id(field_info)) > warnings.warn( f'Field {field_name!r} has an incomplete definition: its annotation contains an unresolved ' 'forward reference, so settings sources may fail to correctly resolve its value. ' 'Call `model_rebuild()` on the model where the field is defined, once all the referenced ' 'types are defined.', IncompleteFieldDefinitionWarning, ) E pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifespan' has an incomplete definition: its annotation contains an unresolved forward reference, so settings sources may fail to correctly resolve its value. Call `model_rebuild()` on the model where the field is defined, once all the referenced types are defined. /usr/lib/python3/dist-packages/pydantic_settings/sources/utils.py:47: IncompleteFieldDefinitionWarning _______________ TestServer.test_starlette_routes_with_mount_path _______________ [gw0] linux -- Python 3.14.7 /usr/bin/python3.14 self = @pytest.mark.anyio async def test_starlette_routes_with_mount_path(self):  """Test that Starlette routes are correctly configured with mount path.""" # Test with mount path in settings > mcp = FastMCP() ^^^^^^^^^ tests/server/fastmcp/test_server.py:90: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ mcp/server/fastmcp/server.py:185: in __init__ self.settings = Settings( /usr/lib/python3/dist-packages/pydantic_settings/main.py:229: in __init__ else __pydantic_self__.__class__._settings_init_sources( /usr/lib/python3/dist-packages/pydantic_settings/main.py:397: in _settings_init_sources default_settings = DefaultSettingsSource( /usr/lib/python3/dist-packages/pydantic_settings/sources/base.py:287: in __init__ _warn_if_field_info_incomplete(field_info, field_name, self._init_state) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ field_info = FieldInfo(annotation=ForwardRef('Callable[[FastMCP[LifespanResultT]], AbstractAsyncContextManager[LifespanResultT]] | None', is_class=True), required=True) field_name = 'lifespan', init_state = {'field_info_ids': {140456318704880}} def _warn_if_field_info_incomplete(field_info: FieldInfo, field_name: str, init_state: InitState) -> None:  """Warn if the field is incomplete, i.e. its annotation contains unresolved forward references.   An incomplete `FieldInfo` instance is unsafe to inspect — any of its attributes (annotation,  aliases, metadata, default) may rely on the unresolved annotation, so settings sources may  silently fail to resolve the field's value. Each instance is only warned about once per  `init_state`, so that a field accessed by multiple sources during a single settings  resolution doesn't emit duplicate warnings.  """ if getattr(field_info, '_complete', True): return warned_ids = init_state.setdefault('field_info_ids', set()) if id(field_info) in warned_ids: return warned_ids.add(id(field_info)) > warnings.warn( f'Field {field_name!r} has an incomplete definition: its annotation contains an unresolved ' 'forward reference, so settings sources may fail to correctly resolve its value. ' 'Call `model_rebuild()` on the model where the field is defined, once all the referenced ' 'types are defined.', IncompleteFieldDefinitionWarning, ) E pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifespan' has an incomplete definition: its annotation contains an unresolved forward reference, so settings sources may fail to correctly resolve its value. Call `model_rebuild()` on the model where the field is defined, once all the referenced types are defined. /usr/lib/python3/dist-packages/pydantic_settings/sources/utils.py:47: IncompleteFieldDefinitionWarning ____________________ TestServer.test_non_ascii_description _____________________ [gw0] linux -- Python 3.14.7 /usr/bin/python3.14 self = @pytest.mark.anyio async def test_non_ascii_description(self):  """Test that FastMCP handles non-ASCII characters in descriptions correctly""" > mcp = FastMCP() ^^^^^^^^^ tests/server/fastmcp/test_server.py:125: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ mcp/server/fastmcp/server.py:185: in __init__ self.settings = Settings( /usr/lib/python3/dist-packages/pydantic_settings/main.py:229: in __init__ else __pydantic_self__.__class__._settings_init_sources( /usr/lib/python3/dist-packages/pydantic_settings/main.py:397: in _settings_init_sources default_settings = DefaultSettingsSource( /usr/lib/python3/dist-packages/pydantic_settings/sources/base.py:287: in __init__ _warn_if_field_info_incomplete(field_info, field_name, self._init_state) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ field_info = FieldInfo(annotation=ForwardRef('Callable[[FastMCP[LifespanResultT]], AbstractAsyncContextManager[LifespanResultT]] | None', is_class=True), required=True) field_name = 'lifespan', init_state = {'field_info_ids': {140456318704880}} def _warn_if_field_info_incomplete(field_info: FieldInfo, field_name: str, init_state: InitState) -> None:  """Warn if the field is incomplete, i.e. its annotation contains unresolved forward references.   An incomplete `FieldInfo` instance is unsafe to inspect — any of its attributes (annotation,  aliases, metadata, default) may rely on the unresolved annotation, so settings sources may  silently fail to resolve the field's value. Each instance is only warned about once per  `init_state`, so that a field accessed by multiple sources during a single settings  resolution doesn't emit duplicate warnings.  """ if getattr(field_info, '_complete', True): return warned_ids = init_state.setdefault('field_info_ids', set()) if id(field_info) in warned_ids: return warned_ids.add(id(field_info)) > warnings.warn( f'Field {field_name!r} has an incomplete definition: its annotation contains an unresolved ' 'forward reference, so settings sources may fail to correctly resolve its value. ' 'Call `model_rebuild()` on the model where the field is defined, once all the referenced ' 'types are defined.', IncompleteFieldDefinitionWarning, ) E pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifespan' has an incomplete definition: its annotation contains an unresolved forward reference, so settings sources may fail to correctly resolve its value. Call `model_rebuild()` on the model where the field is defined, once all the referenced types are defined. /usr/lib/python3/dist-packages/pydantic_settings/sources/utils.py:47: IncompleteFieldDefinitionWarning ______________________ TestServer.test_add_tool_decorator ______________________ [gw0] linux -- Python 3.14.7 /usr/bin/python3.14 self = @pytest.mark.anyio async def test_add_tool_decorator(self): > mcp = FastMCP() ^^^^^^^^^ tests/server/fastmcp/test_server.py:148: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ mcp/server/fastmcp/server.py:185: in __init__ self.settings = Settings( /usr/lib/python3/dist-packages/pydantic_settings/main.py:229: in __init__ else __pydantic_self__.__class__._settings_init_sources( /usr/lib/python3/dist-packages/pydantic_settings/main.py:397: in _settings_init_sources default_settings = DefaultSettingsSource( /usr/lib/python3/dist-packages/pydantic_settings/sources/base.py:287: in __init__ _warn_if_field_info_incomplete(field_info, field_name, self._init_state) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ field_info = FieldInfo(annotation=ForwardRef('Callable[[FastMCP[LifespanResultT]], AbstractAsyncContextManager[LifespanResultT]] | None', is_class=True), required=True) field_name = 'lifespan', init_state = {'field_info_ids': {140456318704880}} def _warn_if_field_info_incomplete(field_info: FieldInfo, field_name: str, init_state: InitState) -> None:  """Warn if the field is incomplete, i.e. its annotation contains unresolved forward references.   An incomplete `FieldInfo` instance is unsafe to inspect — any of its attributes (annotation,  aliases, metadata, default) may rely on the unresolved annotation, so settings sources may  silently fail to resolve the field's value. Each instance is only warned about once per  `init_state`, so that a field accessed by multiple sources during a single settings  resolution doesn't emit duplicate warnings.  """ if getattr(field_info, '_complete', True): return warned_ids = init_state.setdefault('field_info_ids', set()) if id(field_info) in warned_ids: return warned_ids.add(id(field_info)) > warnings.warn( f'Field {field_name!r} has an incomplete definition: its annotation contains an unresolved ' 'forward reference, so settings sources may fail to correctly resolve its value. ' 'Call `model_rebuild()` on the model where the field is defined, once all the referenced ' 'types are defined.', IncompleteFieldDefinitionWarning, ) E pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifespan' has an incomplete definition: its annotation contains an unresolved forward reference, so settings sources may fail to correctly resolve its value. Call `model_rebuild()` on the model where the field is defined, once all the referenced types are defined. /usr/lib/python3/dist-packages/pydantic_settings/sources/utils.py:47: IncompleteFieldDefinitionWarning ______________ TestServer.test_add_tool_decorator_incorrect_usage ______________ [gw0] linux -- Python 3.14.7 /usr/bin/python3.14 self = @pytest.mark.anyio async def test_add_tool_decorator_incorrect_usage(self): > mcp = FastMCP() ^^^^^^^^^ tests/server/fastmcp/test_server.py:158: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ mcp/server/fastmcp/server.py:185: in __init__ self.settings = Settings( /usr/lib/python3/dist-packages/pydantic_settings/main.py:229: in __init__ else __pydantic_self__.__class__._settings_init_sources( /usr/lib/python3/dist-packages/pydantic_settings/main.py:397: in _settings_init_sources default_settings = DefaultSettingsSource( /usr/lib/python3/dist-packages/pydantic_settings/sources/base.py:287: in __init__ _warn_if_field_info_incomplete(field_info, field_name, self._init_state) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ field_info = FieldInfo(annotation=ForwardRef('Callable[[FastMCP[LifespanResultT]], AbstractAsyncContextManager[LifespanResultT]] | None', is_class=True), required=True) field_name = 'lifespan', init_state = {'field_info_ids': {140456318704880}} def _warn_if_field_info_incomplete(field_info: FieldInfo, field_name: str, init_state: InitState) -> None:  """Warn if the field is incomplete, i.e. its annotation contains unresolved forward references.   An incomplete `FieldInfo` instance is unsafe to inspect — any of its attributes (annotation,  aliases, metadata, default) may rely on the unresolved annotation, so settings sources may  silently fail to resolve the field's value. Each instance is only warned about once per  `init_state`, so that a field accessed by multiple sources during a single settings  resolution doesn't emit duplicate warnings.  """ if getattr(field_info, '_complete', True): return warned_ids = init_state.setdefault('field_info_ids', set()) if id(field_info) in warned_ids: return warned_ids.add(id(field_info)) > warnings.warn( f'Field {field_name!r} has an incomplete definition: its annotation contains an unresolved ' 'forward reference, so settings sources may fail to correctly resolve its value. ' 'Call `model_rebuild()` on the model where the field is defined, once all the referenced ' 'types are defined.', IncompleteFieldDefinitionWarning, ) E pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifespan' has an incomplete definition: its annotation contains an unresolved forward reference, so settings sources may fail to correctly resolve its value. Call `model_rebuild()` on the model where the field is defined, once all the referenced types are defined. /usr/lib/python3/dist-packages/pydantic_settings/sources/utils.py:47: IncompleteFieldDefinitionWarning ____________________ TestServer.test_add_resource_decorator ____________________ [gw0] linux -- Python 3.14.7 /usr/bin/python3.14 self = @pytest.mark.anyio async def test_add_resource_decorator(self): > mcp = FastMCP() ^^^^^^^^^ tests/server/fastmcp/test_server.py:168: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ mcp/server/fastmcp/server.py:185: in __init__ self.settings = Settings( /usr/lib/python3/dist-packages/pydantic_settings/main.py:229: in __init__ else __pydantic_self__.__class__._settings_init_sources( /usr/lib/python3/dist-packages/pydantic_settings/main.py:397: in _settings_init_sources default_settings = DefaultSettingsSource( /usr/lib/python3/dist-packages/pydantic_settings/sources/base.py:287: in __init__ _warn_if_field_info_incomplete(field_info, field_name, self._init_state) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ field_info = FieldInfo(annotation=ForwardRef('Callable[[FastMCP[LifespanResultT]], AbstractAsyncContextManager[LifespanResultT]] | None', is_class=True), required=True) field_name = 'lifespan', init_state = {'field_info_ids': {140456318704880}} def _warn_if_field_info_incomplete(field_info: FieldInfo, field_name: str, init_state: InitState) -> None:  """Warn if the field is incomplete, i.e. its annotation contains unresolved forward references.   An incomplete `FieldInfo` instance is unsafe to inspect — any of its attributes (annotation,  aliases, metadata, default) may rely on the unresolved annotation, so settings sources may  silently fail to resolve the field's value. Each instance is only warned about once per  `init_state`, so that a field accessed by multiple sources during a single settings  resolution doesn't emit duplicate warnings.  """ if getattr(field_info, '_complete', True): return warned_ids = init_state.setdefault('field_info_ids', set()) if id(field_info) in warned_ids: return warned_ids.add(id(field_info)) > warnings.warn( f'Field {field_name!r} has an incomplete definition: its annotation contains an unresolved ' 'forward reference, so settings sources may fail to correctly resolve its value. ' 'Call `model_rebuild()` on the model where the field is defined, once all the referenced ' 'types are defined.', IncompleteFieldDefinitionWarning, ) E pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifespan' has an incomplete definition: its annotation contains an unresolved forward reference, so settings sources may fail to correctly resolve its value. Call `model_rebuild()` on the model where the field is defined, once all the referenced types are defined. /usr/lib/python3/dist-packages/pydantic_settings/sources/utils.py:47: IncompleteFieldDefinitionWarning ____________ TestServer.test_add_resource_decorator_incorrect_usage ____________ [gw0] linux -- Python 3.14.7 /usr/bin/python3.14 self = @pytest.mark.anyio async def test_add_resource_decorator_incorrect_usage(self): > mcp = FastMCP() ^^^^^^^^^ tests/server/fastmcp/test_server.py:178: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ mcp/server/fastmcp/server.py:185: in __init__ self.settings = Settings( /usr/lib/python3/dist-packages/pydantic_settings/main.py:229: in __init__ else __pydantic_self__.__class__._settings_init_sources( /usr/lib/python3/dist-packages/pydantic_settings/main.py:397: in _settings_init_sources default_settings = DefaultSettingsSource( /usr/lib/python3/dist-packages/pydantic_settings/sources/base.py:287: in __init__ _warn_if_field_info_incomplete(field_info, field_name, self._init_state) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ field_info = FieldInfo(annotation=ForwardRef('Callable[[FastMCP[LifespanResultT]], AbstractAsyncContextManager[LifespanResultT]] | None', is_class=True), required=True) field_name = 'lifespan', init_state = {'field_info_ids': {140456318704880}} def _warn_if_field_info_incomplete(field_info: FieldInfo, field_name: str, init_state: InitState) -> None:  """Warn if the field is incomplete, i.e. its annotation contains unresolved forward references.   An incomplete `FieldInfo` instance is unsafe to inspect — any of its attributes (annotation,  aliases, metadata, default) may rely on the unresolved annotation, so settings sources may  silently fail to resolve the field's value. Each instance is only warned about once per  `init_state`, so that a field accessed by multiple sources during a single settings  resolution doesn't emit duplicate warnings.  """ if getattr(field_info, '_complete', True): return warned_ids = init_state.setdefault('field_info_ids', set()) if id(field_info) in warned_ids: return warned_ids.add(id(field_info)) > warnings.warn( f'Field {field_name!r} has an incomplete definition: its annotation contains an unresolved ' 'forward reference, so settings sources may fail to correctly resolve its value. ' 'Call `model_rebuild()` on the model where the field is defined, once all the referenced ' 'types are defined.', IncompleteFieldDefinitionWarning, ) E pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifespan' has an incomplete definition: its annotation contains an unresolved forward reference, so settings sources may fail to correctly resolve its value. Call `model_rebuild()` on the model where the field is defined, once all the referenced types are defined. /usr/lib/python3/dist-packages/pydantic_settings/sources/utils.py:47: IncompleteFieldDefinitionWarning __________ TestDnsRebindingProtection.test_auto_enabled_for_127_0_0_1 __________ [gw0] linux -- Python 3.14.7 /usr/bin/python3.14 self = def test_auto_enabled_for_127_0_0_1(self):  """DNS rebinding protection should auto-enable for host=127.0.0.1.""" > mcp = FastMCP(host="127.0.0.1") ^^^^^^^^^^^^^^^^^^^^^^^^^ tests/server/fastmcp/test_server.py:192: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ mcp/server/fastmcp/server.py:185: in __init__ self.settings = Settings( /usr/lib/python3/dist-packages/pydantic_settings/main.py:229: in __init__ else __pydantic_self__.__class__._settings_init_sources( /usr/lib/python3/dist-packages/pydantic_settings/main.py:397: in _settings_init_sources default_settings = DefaultSettingsSource( /usr/lib/python3/dist-packages/pydantic_settings/sources/base.py:287: in __init__ _warn_if_field_info_incomplete(field_info, field_name, self._init_state) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ field_info = FieldInfo(annotation=ForwardRef('Callable[[FastMCP[LifespanResultT]], AbstractAsyncContextManager[LifespanResultT]] | None', is_class=True), required=True) field_name = 'lifespan', init_state = {'field_info_ids': {140456318704880}} def _warn_if_field_info_incomplete(field_info: FieldInfo, field_name: str, init_state: InitState) -> None:  """Warn if the field is incomplete, i.e. its annotation contains unresolved forward references.   An incomplete `FieldInfo` instance is unsafe to inspect — any of its attributes (annotation,  aliases, metadata, default) may rely on the unresolved annotation, so settings sources may  silently fail to resolve the field's value. Each instance is only warned about once per  `init_state`, so that a field accessed by multiple sources during a single settings  resolution doesn't emit duplicate warnings.  """ if getattr(field_info, '_complete', True): return warned_ids = init_state.setdefault('field_info_ids', set()) if id(field_info) in warned_ids: return warned_ids.add(id(field_info)) > warnings.warn( f'Field {field_name!r} has an incomplete definition: its annotation contains an unresolved ' 'forward reference, so settings sources may fail to correctly resolve its value. ' 'Call `model_rebuild()` on the model where the field is defined, once all the referenced ' 'types are defined.', IncompleteFieldDefinitionWarning, ) E pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifespan' has an incomplete definition: its annotation contains an unresolved forward reference, so settings sources may fail to correctly resolve its value. Call `model_rebuild()` on the model where the field is defined, once all the referenced types are defined. /usr/lib/python3/dist-packages/pydantic_settings/sources/utils.py:47: IncompleteFieldDefinitionWarning __________ TestDnsRebindingProtection.test_auto_enabled_for_localhost __________ [gw0] linux -- Python 3.14.7 /usr/bin/python3.14 self = def test_auto_enabled_for_localhost(self):  """DNS rebinding protection should auto-enable for host=localhost.""" > mcp = FastMCP(host="localhost") ^^^^^^^^^^^^^^^^^^^^^^^^^ tests/server/fastmcp/test_server.py:202: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ mcp/server/fastmcp/server.py:185: in __init__ self.settings = Settings( /usr/lib/python3/dist-packages/pydantic_settings/main.py:229: in __init__ else __pydantic_self__.__class__._settings_init_sources( /usr/lib/python3/dist-packages/pydantic_settings/main.py:397: in _settings_init_sources default_settings = DefaultSettingsSource( /usr/lib/python3/dist-packages/pydantic_settings/sources/base.py:287: in __init__ _warn_if_field_info_incomplete(field_info, field_name, self._init_state) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ field_info = FieldInfo(annotation=ForwardRef('Callable[[FastMCP[LifespanResultT]], AbstractAsyncContextManager[LifespanResultT]] | None', is_class=True), required=True) field_name = 'lifespan', init_state = {'field_info_ids': {140456318704880}} def _warn_if_field_info_incomplete(field_info: FieldInfo, field_name: str, init_state: InitState) -> None:  """Warn if the field is incomplete, i.e. its annotation contains unresolved forward references.   An incomplete `FieldInfo` instance is unsafe to inspect — any of its attributes (annotation,  aliases, metadata, default) may rely on the unresolved annotation, so settings sources may  silently fail to resolve the field's value. Each instance is only warned about once per  `init_state`, so that a field accessed by multiple sources during a single settings  resolution doesn't emit duplicate warnings.  """ if getattr(field_info, '_complete', True): return warned_ids = init_state.setdefault('field_info_ids', set()) if id(field_info) in warned_ids: return warned_ids.add(id(field_info)) > warnings.warn( f'Field {field_name!r} has an incomplete definition: its annotation contains an unresolved ' 'forward reference, so settings sources may fail to correctly resolve its value. ' 'Call `model_rebuild()` on the model where the field is defined, once all the referenced ' 'types are defined.', IncompleteFieldDefinitionWarning, ) E pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifespan' has an incomplete definition: its annotation contains an unresolved forward reference, so settings sources may fail to correctly resolve its value. Call `model_rebuild()` on the model where the field is defined, once all the referenced types are defined. /usr/lib/python3/dist-packages/pydantic_settings/sources/utils.py:47: IncompleteFieldDefinitionWarning _______ TestDnsRebindingProtection.test_auto_enabled_for_ipv6_localhost ________ [gw0] linux -- Python 3.14.7 /usr/bin/python3.14 self = def test_auto_enabled_for_ipv6_localhost(self):  """DNS rebinding protection should auto-enable for host=::1 (IPv6 localhost).""" > mcp = FastMCP(host="::1") ^^^^^^^^^^^^^^^^^^^ tests/server/fastmcp/test_server.py:210: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ mcp/server/fastmcp/server.py:185: in __init__ self.settings = Settings( /usr/lib/python3/dist-packages/pydantic_settings/main.py:229: in __init__ else __pydantic_self__.__class__._settings_init_sources( /usr/lib/python3/dist-packages/pydantic_settings/main.py:397: in _settings_init_sources default_settings = DefaultSettingsSource( /usr/lib/python3/dist-packages/pydantic_settings/sources/base.py:287: in __init__ _warn_if_field_info_incomplete(field_info, field_name, self._init_state) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ field_info = FieldInfo(annotation=ForwardRef('Callable[[FastMCP[LifespanResultT]], AbstractAsyncContextManager[LifespanResultT]] | None', is_class=True), required=True) field_name = 'lifespan', init_state = {'field_info_ids': {140456318704880}} def _warn_if_field_info_incomplete(field_info: FieldInfo, field_name: str, init_state: InitState) -> None:  """Warn if the field is incomplete, i.e. its annotation contains unresolved forward references.   An incomplete `FieldInfo` instance is unsafe to inspect — any of its attributes (annotation,  aliases, metadata, default) may rely on the unresolved annotation, so settings sources may  silently fail to resolve the field's value. Each instance is only warned about once per  `init_state`, so that a field accessed by multiple sources during a single settings  resolution doesn't emit duplicate warnings.  """ if getattr(field_info, '_complete', True): return warned_ids = init_state.setdefault('field_info_ids', set()) if id(field_info) in warned_ids: return warned_ids.add(id(field_info)) > warnings.warn( f'Field {field_name!r} has an incomplete definition: its annotation contains an unresolved ' 'forward reference, so settings sources may fail to correctly resolve its value. ' 'Call `model_rebuild()` on the model where the field is defined, once all the referenced ' 'types are defined.', IncompleteFieldDefinitionWarning, ) E pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifespan' has an incomplete definition: its annotation contains an unresolved forward reference, so settings sources may fail to correctly resolve its value. Call `model_rebuild()` on the model where the field is defined, once all the referenced types are defined. /usr/lib/python3/dist-packages/pydantic_settings/sources/utils.py:47: IncompleteFieldDefinitionWarning _______ TestDnsRebindingProtection.test_not_auto_enabled_for_other_hosts _______ [gw0] linux -- Python 3.14.7 /usr/bin/python3.14 self = def test_not_auto_enabled_for_other_hosts(self):  """DNS rebinding protection should NOT auto-enable for other hosts.""" > mcp = FastMCP(host="0.0.0.0") ^^^^^^^^^^^^^^^^^^^^^^^ tests/server/fastmcp/test_server.py:218: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ mcp/server/fastmcp/server.py:185: in __init__ self.settings = Settings( /usr/lib/python3/dist-packages/pydantic_settings/main.py:229: in __init__ else __pydantic_self__.__class__._settings_init_sources( /usr/lib/python3/dist-packages/pydantic_settings/main.py:397: in _settings_init_sources default_settings = DefaultSettingsSource( /usr/lib/python3/dist-packages/pydantic_settings/sources/base.py:287: in __init__ _warn_if_field_info_incomplete(field_info, field_name, self._init_state) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ field_info = FieldInfo(annotation=ForwardRef('Callable[[FastMCP[LifespanResultT]], AbstractAsyncContextManager[LifespanResultT]] | None', is_class=True), required=True) field_name = 'lifespan', init_state = {'field_info_ids': {140456318704880}} def _warn_if_field_info_incomplete(field_info: FieldInfo, field_name: str, init_state: InitState) -> None:  """Warn if the field is incomplete, i.e. its annotation contains unresolved forward references.   An incomplete `FieldInfo` instance is unsafe to inspect — any of its attributes (annotation,  aliases, metadata, default) may rely on the unresolved annotation, so settings sources may  silently fail to resolve the field's value. Each instance is only warned about once per  `init_state`, so that a field accessed by multiple sources during a single settings  resolution doesn't emit duplicate warnings.  """ if getattr(field_info, '_complete', True): return warned_ids = init_state.setdefault('field_info_ids', set()) if id(field_info) in warned_ids: return warned_ids.add(id(field_info)) > warnings.warn( f'Field {field_name!r} has an incomplete definition: its annotation contains an unresolved ' 'forward reference, so settings sources may fail to correctly resolve its value. ' 'Call `model_rebuild()` on the model where the field is defined, once all the referenced ' 'types are defined.', IncompleteFieldDefinitionWarning, ) E pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifespan' has an incomplete definition: its annotation contains an unresolved forward reference, so settings sources may fail to correctly resolve its value. Call `model_rebuild()` on the model where the field is defined, once all the referenced types are defined. /usr/lib/python3/dist-packages/pydantic_settings/sources/utils.py:47: IncompleteFieldDefinitionWarning _______ TestDnsRebindingProtection.test_explicit_settings_not_overridden _______ [gw0] linux -- Python 3.14.7 /usr/bin/python3.14 self = def test_explicit_settings_not_overridden(self):  """Explicit transport_security settings should not be overridden.""" custom_settings = TransportSecuritySettings( enable_dns_rebinding_protection=False, ) > mcp = FastMCP(host="127.0.0.1", transport_security=custom_settings) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ tests/server/fastmcp/test_server.py:226: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ mcp/server/fastmcp/server.py:185: in __init__ self.settings = Settings( /usr/lib/python3/dist-packages/pydantic_settings/main.py:229: in __init__ else __pydantic_self__.__class__._settings_init_sources( /usr/lib/python3/dist-packages/pydantic_settings/main.py:397: in _settings_init_sources default_settings = DefaultSettingsSource( /usr/lib/python3/dist-packages/pydantic_settings/sources/base.py:287: in __init__ _warn_if_field_info_incomplete(field_info, field_name, self._init_state) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ field_info = FieldInfo(annotation=ForwardRef('Callable[[FastMCP[LifespanResultT]], AbstractAsyncContextManager[LifespanResultT]] | None', is_class=True), required=True) field_name = 'lifespan', init_state = {'field_info_ids': {140456318704880}} def _warn_if_field_info_incomplete(field_info: FieldInfo, field_name: str, init_state: InitState) -> None:  """Warn if the field is incomplete, i.e. its annotation contains unresolved forward references.   An incomplete `FieldInfo` instance is unsafe to inspect — any of its attributes (annotation,  aliases, metadata, default) may rely on the unresolved annotation, so settings sources may  silently fail to resolve the field's value. Each instance is only warned about once per  `init_state`, so that a field accessed by multiple sources during a single settings  resolution doesn't emit duplicate warnings.  """ if getattr(field_info, '_complete', True): return warned_ids = init_state.setdefault('field_info_ids', set()) if id(field_info) in warned_ids: return warned_ids.add(id(field_info)) > warnings.warn( f'Field {field_name!r} has an incomplete definition: its annotation contains an unresolved ' 'forward reference, so settings sources may fail to correctly resolve its value. ' 'Call `model_rebuild()` on the model where the field is defined, once all the referenced ' 'types are defined.', IncompleteFieldDefinitionWarning, ) E pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifespan' has an incomplete definition: its annotation contains an unresolved forward reference, so settings sources may fail to correctly resolve its value. Call `model_rebuild()` on the model where the field is defined, once all the referenced types are defined. /usr/lib/python3/dist-packages/pydantic_settings/sources/utils.py:47: IncompleteFieldDefinitionWarning ________________________ TestServerTools.test_add_tool _________________________ [gw0] linux -- Python 3.14.7 /usr/bin/python3.14 self = @pytest.mark.anyio async def test_add_tool(self): > mcp = FastMCP() ^^^^^^^^^ tests/server/fastmcp/test_server.py:260: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ mcp/server/fastmcp/server.py:185: in __init__ self.settings = Settings( /usr/lib/python3/dist-packages/pydantic_settings/main.py:229: in __init__ else __pydantic_self__.__class__._settings_init_sources( /usr/lib/python3/dist-packages/pydantic_settings/main.py:397: in _settings_init_sources default_settings = DefaultSettingsSource( /usr/lib/python3/dist-packages/pydantic_settings/sources/base.py:287: in __init__ _warn_if_field_info_incomplete(field_info, field_name, self._init_state) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ field_info = FieldInfo(annotation=ForwardRef('Callable[[FastMCP[LifespanResultT]], AbstractAsyncContextManager[LifespanResultT]] | None', is_class=True), required=True) field_name = 'lifespan', init_state = {'field_info_ids': {140456318704880}} def _warn_if_field_info_incomplete(field_info: FieldInfo, field_name: str, init_state: InitState) -> None:  """Warn if the field is incomplete, i.e. its annotation contains unresolved forward references.   An incomplete `FieldInfo` instance is unsafe to inspect — any of its attributes (annotation,  aliases, metadata, default) may rely on the unresolved annotation, so settings sources may  silently fail to resolve the field's value. Each instance is only warned about once per  `init_state`, so that a field accessed by multiple sources during a single settings  resolution doesn't emit duplicate warnings.  """ if getattr(field_info, '_complete', True): return warned_ids = init_state.setdefault('field_info_ids', set()) if id(field_info) in warned_ids: return warned_ids.add(id(field_info)) > warnings.warn( f'Field {field_name!r} has an incomplete definition: its annotation contains an unresolved ' 'forward reference, so settings sources may fail to correctly resolve its value. ' 'Call `model_rebuild()` on the model where the field is defined, once all the referenced ' 'types are defined.', IncompleteFieldDefinitionWarning, ) E pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifespan' has an incomplete definition: its annotation contains an unresolved forward reference, so settings sources may fail to correctly resolve its value. Call `model_rebuild()` on the model where the field is defined, once all the referenced types are defined. /usr/lib/python3/dist-packages/pydantic_settings/sources/utils.py:47: IncompleteFieldDefinitionWarning _______________________ TestServerTools.test_list_tools ________________________ [gw0] linux -- Python 3.14.7 /usr/bin/python3.14 self = @pytest.mark.anyio async def test_list_tools(self): > mcp = FastMCP() ^^^^^^^^^ tests/server/fastmcp/test_server.py:267: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ mcp/server/fastmcp/server.py:185: in __init__ self.settings = Settings( /usr/lib/python3/dist-packages/pydantic_settings/main.py:229: in __init__ else __pydantic_self__.__class__._settings_init_sources( /usr/lib/python3/dist-packages/pydantic_settings/main.py:397: in _settings_init_sources default_settings = DefaultSettingsSource( /usr/lib/python3/dist-packages/pydantic_settings/sources/base.py:287: in __init__ _warn_if_field_info_incomplete(field_info, field_name, self._init_state) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ field_info = FieldInfo(annotation=ForwardRef('Callable[[FastMCP[LifespanResultT]], AbstractAsyncContextManager[LifespanResultT]] | None', is_class=True), required=True) field_name = 'lifespan', init_state = {'field_info_ids': {140456318704880}} def _warn_if_field_info_incomplete(field_info: FieldInfo, field_name: str, init_state: InitState) -> None:  """Warn if the field is incomplete, i.e. its annotation contains unresolved forward references.   An incomplete `FieldInfo` instance is unsafe to inspect — any of its attributes (annotation,  aliases, metadata, default) may rely on the unresolved annotation, so settings sources may  silently fail to resolve the field's value. Each instance is only warned about once per  `init_state`, so that a field accessed by multiple sources during a single settings  resolution doesn't emit duplicate warnings.  """ if getattr(field_info, '_complete', True): return warned_ids = init_state.setdefault('field_info_ids', set()) if id(field_info) in warned_ids: return warned_ids.add(id(field_info)) > warnings.warn( f'Field {field_name!r} has an incomplete definition: its annotation contains an unresolved ' 'forward reference, so settings sources may fail to correctly resolve its value. ' 'Call `model_rebuild()` on the model where the field is defined, once all the referenced ' 'types are defined.', IncompleteFieldDefinitionWarning, ) E pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifespan' has an incomplete definition: its annotation contains an unresolved forward reference, so settings sources may fail to correctly resolve its value. Call `model_rebuild()` on the model where the field is defined, once all the referenced types are defined. /usr/lib/python3/dist-packages/pydantic_settings/sources/utils.py:47: IncompleteFieldDefinitionWarning ________________________ TestServerTools.test_call_tool ________________________ [gw0] linux -- Python 3.14.7 /usr/bin/python3.14 self = @pytest.mark.anyio async def test_call_tool(self): > mcp = FastMCP() ^^^^^^^^^ tests/server/fastmcp/test_server.py:275: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ mcp/server/fastmcp/server.py:185: in __init__ self.settings = Settings( /usr/lib/python3/dist-packages/pydantic_settings/main.py:229: in __init__ else __pydantic_self__.__class__._settings_init_sources( /usr/lib/python3/dist-packages/pydantic_settings/main.py:397: in _settings_init_sources default_settings = DefaultSettingsSource( /usr/lib/python3/dist-packages/pydantic_settings/sources/base.py:287: in __init__ _warn_if_field_info_incomplete(field_info, field_name, self._init_state) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ field_info = FieldInfo(annotation=ForwardRef('Callable[[FastMCP[LifespanResultT]], AbstractAsyncContextManager[LifespanResultT]] | None', is_class=True), required=True) field_name = 'lifespan', init_state = {'field_info_ids': {140456318704880}} def _warn_if_field_info_incomplete(field_info: FieldInfo, field_name: str, init_state: InitState) -> None:  """Warn if the field is incomplete, i.e. its annotation contains unresolved forward references.   An incomplete `FieldInfo` instance is unsafe to inspect — any of its attributes (annotation,  aliases, metadata, default) may rely on the unresolved annotation, so settings sources may  silently fail to resolve the field's value. Each instance is only warned about once per  `init_state`, so that a field accessed by multiple sources during a single settings  resolution doesn't emit duplicate warnings.  """ if getattr(field_info, '_complete', True): return warned_ids = init_state.setdefault('field_info_ids', set()) if id(field_info) in warned_ids: return warned_ids.add(id(field_info)) > warnings.warn( f'Field {field_name!r} has an incomplete definition: its annotation contains an unresolved ' 'forward reference, so settings sources may fail to correctly resolve its value. ' 'Call `model_rebuild()` on the model where the field is defined, once all the referenced ' 'types are defined.', IncompleteFieldDefinitionWarning, ) E pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifespan' has an incomplete definition: its annotation contains an unresolved forward reference, so settings sources may fail to correctly resolve its value. Call `model_rebuild()` on the model where the field is defined, once all the referenced types are defined. /usr/lib/python3/dist-packages/pydantic_settings/sources/utils.py:47: IncompleteFieldDefinitionWarning _________________ TestServerTools.test_tool_exception_handling _________________ [gw0] linux -- Python 3.14.7 /usr/bin/python3.14 self = @pytest.mark.anyio async def test_tool_exception_handling(self): > mcp = FastMCP() ^^^^^^^^^ tests/server/fastmcp/test_server.py:284: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ mcp/server/fastmcp/server.py:185: in __init__ self.settings = Settings( /usr/lib/python3/dist-packages/pydantic_settings/main.py:229: in __init__ else __pydantic_self__.__class__._settings_init_sources( /usr/lib/python3/dist-packages/pydantic_settings/main.py:397: in _settings_init_sources default_settings = DefaultSettingsSource( /usr/lib/python3/dist-packages/pydantic_settings/sources/base.py:287: in __init__ _warn_if_field_info_incomplete(field_info, field_name, self._init_state) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ field_info = FieldInfo(annotation=ForwardRef('Callable[[FastMCP[LifespanResultT]], AbstractAsyncContextManager[LifespanResultT]] | None', is_class=True), required=True) field_name = 'lifespan', init_state = {'field_info_ids': {140456318704880}} def _warn_if_field_info_incomplete(field_info: FieldInfo, field_name: str, init_state: InitState) -> None:  """Warn if the field is incomplete, i.e. its annotation contains unresolved forward references.   An incomplete `FieldInfo` instance is unsafe to inspect — any of its attributes (annotation,  aliases, metadata, default) may rely on the unresolved annotation, so settings sources may  silently fail to resolve the field's value. Each instance is only warned about once per  `init_state`, so that a field accessed by multiple sources during a single settings  resolution doesn't emit duplicate warnings.  """ if getattr(field_info, '_complete', True): return warned_ids = init_state.setdefault('field_info_ids', set()) if id(field_info) in warned_ids: return warned_ids.add(id(field_info)) > warnings.warn( f'Field {field_name!r} has an incomplete definition: its annotation contains an unresolved ' 'forward reference, so settings sources may fail to correctly resolve its value. ' 'Call `model_rebuild()` on the model where the field is defined, once all the referenced ' 'types are defined.', IncompleteFieldDefinitionWarning, ) E pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifespan' has an incomplete definition: its annotation contains an unresolved forward reference, so settings sources may fail to correctly resolve its value. Call `model_rebuild()` on the model where the field is defined, once all the referenced types are defined. /usr/lib/python3/dist-packages/pydantic_settings/sources/utils.py:47: IncompleteFieldDefinitionWarning ___________________ TestServerTools.test_tool_error_handling ___________________ [gw0] linux -- Python 3.14.7 /usr/bin/python3.14 self = @pytest.mark.anyio async def test_tool_error_handling(self): > mcp = FastMCP() ^^^^^^^^^ tests/server/fastmcp/test_server.py:296: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ mcp/server/fastmcp/server.py:185: in __init__ self.settings = Settings( /usr/lib/python3/dist-packages/pydantic_settings/main.py:229: in __init__ else __pydantic_self__.__class__._settings_init_sources( /usr/lib/python3/dist-packages/pydantic_settings/main.py:397: in _settings_init_sources default_settings = DefaultSettingsSource( /usr/lib/python3/dist-packages/pydantic_settings/sources/base.py:287: in __init__ _warn_if_field_info_incomplete(field_info, field_name, self._init_state) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ field_info = FieldInfo(annotation=ForwardRef('Callable[[FastMCP[LifespanResultT]], AbstractAsyncContextManager[LifespanResultT]] | None', is_class=True), required=True) field_name = 'lifespan', init_state = {'field_info_ids': {140456318704880}} def _warn_if_field_info_incomplete(field_info: FieldInfo, field_name: str, init_state: InitState) -> None:  """Warn if the field is incomplete, i.e. its annotation contains unresolved forward references.   An incomplete `FieldInfo` instance is unsafe to inspect — any of its attributes (annotation,  aliases, metadata, default) may rely on the unresolved annotation, so settings sources may  silently fail to resolve the field's value. Each instance is only warned about once per  `init_state`, so that a field accessed by multiple sources during a single settings  resolution doesn't emit duplicate warnings.  """ if getattr(field_info, '_complete', True): return warned_ids = init_state.setdefault('field_info_ids', set()) if id(field_info) in warned_ids: return warned_ids.add(id(field_info)) > warnings.warn( f'Field {field_name!r} has an incomplete definition: its annotation contains an unresolved ' 'forward reference, so settings sources may fail to correctly resolve its value. ' 'Call `model_rebuild()` on the model where the field is defined, once all the referenced ' 'types are defined.', IncompleteFieldDefinitionWarning, ) E pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifespan' has an incomplete definition: its annotation contains an unresolved forward reference, so settings sources may fail to correctly resolve its value. Call `model_rebuild()` on the model where the field is defined, once all the referenced types are defined. /usr/lib/python3/dist-packages/pydantic_settings/sources/utils.py:47: IncompleteFieldDefinitionWarning ___________________ TestServerTools.test_tool_error_details ____________________ [gw0] linux -- Python 3.14.7 /usr/bin/python3.14 self = @pytest.mark.anyio async def test_tool_error_details(self):  """Test that exception details are properly formatted in the response""" > mcp = FastMCP() ^^^^^^^^^ tests/server/fastmcp/test_server.py:309: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ mcp/server/fastmcp/server.py:185: in __init__ self.settings = Settings( /usr/lib/python3/dist-packages/pydantic_settings/main.py:229: in __init__ else __pydantic_self__.__class__._settings_init_sources( /usr/lib/python3/dist-packages/pydantic_settings/main.py:397: in _settings_init_sources default_settings = DefaultSettingsSource( /usr/lib/python3/dist-packages/pydantic_settings/sources/base.py:287: in __init__ _warn_if_field_info_incomplete(field_info, field_name, self._init_state) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ field_info = FieldInfo(annotation=ForwardRef('Callable[[FastMCP[LifespanResultT]], AbstractAsyncContextManager[LifespanResultT]] | None', is_class=True), required=True) field_name = 'lifespan', init_state = {'field_info_ids': {140456318704880}} def _warn_if_field_info_incomplete(field_info: FieldInfo, field_name: str, init_state: InitState) -> None:  """Warn if the field is incomplete, i.e. its annotation contains unresolved forward references.   An incomplete `FieldInfo` instance is unsafe to inspect — any of its attributes (annotation,  aliases, metadata, default) may rely on the unresolved annotation, so settings sources may  silently fail to resolve the field's value. Each instance is only warned about once per  `init_state`, so that a field accessed by multiple sources during a single settings  resolution doesn't emit duplicate warnings.  """ if getattr(field_info, '_complete', True): return warned_ids = init_state.setdefault('field_info_ids', set()) if id(field_info) in warned_ids: return warned_ids.add(id(field_info)) > warnings.warn( f'Field {field_name!r} has an incomplete definition: its annotation contains an unresolved ' 'forward reference, so settings sources may fail to correctly resolve its value. ' 'Call `model_rebuild()` on the model where the field is defined, once all the referenced ' 'types are defined.', IncompleteFieldDefinitionWarning, ) E pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifespan' has an incomplete definition: its annotation contains an unresolved forward reference, so settings sources may fail to correctly resolve its value. Call `model_rebuild()` on the model where the field is defined, once all the referenced types are defined. /usr/lib/python3/dist-packages/pydantic_settings/sources/utils.py:47: IncompleteFieldDefinitionWarning ______________ TestServerTools.test_tool_return_value_conversion _______________ [gw0] linux -- Python 3.14.7 /usr/bin/python3.14 self = @pytest.mark.anyio async def test_tool_return_value_conversion(self): > mcp = FastMCP() ^^^^^^^^^ tests/server/fastmcp/test_server.py:321: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ mcp/server/fastmcp/server.py:185: in __init__ self.settings = Settings( /usr/lib/python3/dist-packages/pydantic_settings/main.py:229: in __init__ else __pydantic_self__.__class__._settings_init_sources( /usr/lib/python3/dist-packages/pydantic_settings/main.py:397: in _settings_init_sources default_settings = DefaultSettingsSource( /usr/lib/python3/dist-packages/pydantic_settings/sources/base.py:287: in __init__ _warn_if_field_info_incomplete(field_info, field_name, self._init_state) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ field_info = FieldInfo(annotation=ForwardRef('Callable[[FastMCP[LifespanResultT]], AbstractAsyncContextManager[LifespanResultT]] | None', is_class=True), required=True) field_name = 'lifespan', init_state = {'field_info_ids': {140456318704880}} def _warn_if_field_info_incomplete(field_info: FieldInfo, field_name: str, init_state: InitState) -> None:  """Warn if the field is incomplete, i.e. its annotation contains unresolved forward references.   An incomplete `FieldInfo` instance is unsafe to inspect — any of its attributes (annotation,  aliases, metadata, default) may rely on the unresolved annotation, so settings sources may  silently fail to resolve the field's value. Each instance is only warned about once per  `init_state`, so that a field accessed by multiple sources during a single settings  resolution doesn't emit duplicate warnings.  """ if getattr(field_info, '_complete', True): return warned_ids = init_state.setdefault('field_info_ids', set()) if id(field_info) in warned_ids: return warned_ids.add(id(field_info)) > warnings.warn( f'Field {field_name!r} has an incomplete definition: its annotation contains an unresolved ' 'forward reference, so settings sources may fail to correctly resolve its value. ' 'Call `model_rebuild()` on the model where the field is defined, once all the referenced ' 'types are defined.', IncompleteFieldDefinitionWarning, ) E pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifespan' has an incomplete definition: its annotation contains an unresolved forward reference, so settings sources may fail to correctly resolve its value. Call `model_rebuild()` on the model where the field is defined, once all the referenced types are defined. /usr/lib/python3/dist-packages/pydantic_settings/sources/utils.py:47: IncompleteFieldDefinitionWarning ____________________ TestServerTools.test_tool_image_helper ____________________ [gw0] linux -- Python 3.14.7 /usr/bin/python3.14 self = tmp_path = PosixPath('/tmp/pytest-of-sbuild/pytest-0/popen-gw0/test_tool_image_helper0') @pytest.mark.anyio async def test_tool_image_helper(self, tmp_path: Path): # Create a test image image_path = tmp_path / "test.png" image_path.write_bytes(b"fake png data")  > mcp = FastMCP() ^^^^^^^^^ tests/server/fastmcp/test_server.py:339: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ mcp/server/fastmcp/server.py:185: in __init__ self.settings = Settings( /usr/lib/python3/dist-packages/pydantic_settings/main.py:229: in __init__ else __pydantic_self__.__class__._settings_init_sources( /usr/lib/python3/dist-packages/pydantic_settings/main.py:397: in _settings_init_sources default_settings = DefaultSettingsSource( /usr/lib/python3/dist-packages/pydantic_settings/sources/base.py:287: in __init__ _warn_if_field_info_incomplete(field_info, field_name, self._init_state) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ field_info = FieldInfo(annotation=ForwardRef('Callable[[FastMCP[LifespanResultT]], AbstractAsyncContextManager[LifespanResultT]] | None', is_class=True), required=True) field_name = 'lifespan', init_state = {'field_info_ids': {140456318704880}} def _warn_if_field_info_incomplete(field_info: FieldInfo, field_name: str, init_state: InitState) -> None:  """Warn if the field is incomplete, i.e. its annotation contains unresolved forward references.   An incomplete `FieldInfo` instance is unsafe to inspect — any of its attributes (annotation,  aliases, metadata, default) may rely on the unresolved annotation, so settings sources may  silently fail to resolve the field's value. Each instance is only warned about once per  `init_state`, so that a field accessed by multiple sources during a single settings  resolution doesn't emit duplicate warnings.  """ if getattr(field_info, '_complete', True): return warned_ids = init_state.setdefault('field_info_ids', set()) if id(field_info) in warned_ids: return warned_ids.add(id(field_info)) > warnings.warn( f'Field {field_name!r} has an incomplete definition: its annotation contains an unresolved ' 'forward reference, so settings sources may fail to correctly resolve its value. ' 'Call `model_rebuild()` on the model where the field is defined, once all the referenced ' 'types are defined.', IncompleteFieldDefinitionWarning, ) E pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifespan' has an incomplete definition: its annotation contains an unresolved forward reference, so settings sources may fail to correctly resolve its value. Call `model_rebuild()` on the model where the field is defined, once all the referenced types are defined. /usr/lib/python3/dist-packages/pydantic_settings/sources/utils.py:47: IncompleteFieldDefinitionWarning ____________________ TestServerTools.test_tool_audio_helper ____________________ [gw0] linux -- Python 3.14.7 /usr/bin/python3.14 self = tmp_path = PosixPath('/tmp/pytest-of-sbuild/pytest-0/popen-gw0/test_tool_audio_helper0') @pytest.mark.anyio async def test_tool_audio_helper(self, tmp_path: Path): # Create a test audio audio_path = tmp_path / "test.wav" audio_path.write_bytes(b"fake wav data")  > mcp = FastMCP() ^^^^^^^^^ tests/server/fastmcp/test_server.py:360: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ mcp/server/fastmcp/server.py:185: in __init__ self.settings = Settings( /usr/lib/python3/dist-packages/pydantic_settings/main.py:229: in __init__ else __pydantic_self__.__class__._settings_init_sources( /usr/lib/python3/dist-packages/pydantic_settings/main.py:397: in _settings_init_sources default_settings = DefaultSettingsSource( /usr/lib/python3/dist-packages/pydantic_settings/sources/base.py:287: in __init__ _warn_if_field_info_incomplete(field_info, field_name, self._init_state) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ field_info = FieldInfo(annotation=ForwardRef('Callable[[FastMCP[LifespanResultT]], AbstractAsyncContextManager[LifespanResultT]] | None', is_class=True), required=True) field_name = 'lifespan', init_state = {'field_info_ids': {140456318704880}} def _warn_if_field_info_incomplete(field_info: FieldInfo, field_name: str, init_state: InitState) -> None:  """Warn if the field is incomplete, i.e. its annotation contains unresolved forward references.   An incomplete `FieldInfo` instance is unsafe to inspect — any of its attributes (annotation,  aliases, metadata, default) may rely on the unresolved annotation, so settings sources may  silently fail to resolve the field's value. Each instance is only warned about once per  `init_state`, so that a field accessed by multiple sources during a single settings  resolution doesn't emit duplicate warnings.  """ if getattr(field_info, '_complete', True): return warned_ids = init_state.setdefault('field_info_ids', set()) if id(field_info) in warned_ids: return warned_ids.add(id(field_info)) > warnings.warn( f'Field {field_name!r} has an incomplete definition: its annotation contains an unresolved ' 'forward reference, so settings sources may fail to correctly resolve its value. ' 'Call `model_rebuild()` on the model where the field is defined, once all the referenced ' 'types are defined.', IncompleteFieldDefinitionWarning, ) E pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifespan' has an incomplete definition: its annotation contains an unresolved forward reference, so settings sources may fail to correctly resolve its value. Call `model_rebuild()` on the model where the field is defined, once all the referenced types are defined. /usr/lib/python3/dist-packages/pydantic_settings/sources/utils.py:47: IncompleteFieldDefinitionWarning _____ TestServerTools.test_tool_audio_suffix_detection[test.wav-audio/wav] _____ [gw0] linux -- Python 3.14.7 /usr/bin/python3.14 self = tmp_path = PosixPath('/tmp/pytest-of-sbuild/pytest-0/popen-gw0/test_tool_audio_suffix_detecti0') filename = 'test.wav', expected_mime_type = 'audio/wav' @pytest.mark.parametrize( "filename,expected_mime_type", [ ("test.wav", "audio/wav"), ("test.mp3", "audio/mpeg"), ("test.ogg", "audio/ogg"), ("test.flac", "audio/flac"), ("test.aac", "audio/aac"), ("test.m4a", "audio/mp4"), ("test.unknown", "application/octet-stream"), # Unknown extension fallback ], ) @pytest.mark.anyio async def test_tool_audio_suffix_detection(self, tmp_path: Path, filename: str, expected_mime_type: str):  """Test that Audio helper correctly detects MIME types from file suffixes""" > mcp = FastMCP() ^^^^^^^^^ tests/server/fastmcp/test_server.py:390: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ mcp/server/fastmcp/server.py:185: in __init__ self.settings = Settings( /usr/lib/python3/dist-packages/pydantic_settings/main.py:229: in __init__ else __pydantic_self__.__class__._settings_init_sources( /usr/lib/python3/dist-packages/pydantic_settings/main.py:397: in _settings_init_sources default_settings = DefaultSettingsSource( /usr/lib/python3/dist-packages/pydantic_settings/sources/base.py:287: in __init__ _warn_if_field_info_incomplete(field_info, field_name, self._init_state) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ field_info = FieldInfo(annotation=ForwardRef('Callable[[FastMCP[LifespanResultT]], AbstractAsyncContextManager[LifespanResultT]] | None', is_class=True), required=True) field_name = 'lifespan', init_state = {'field_info_ids': {140456318704880}} def _warn_if_field_info_incomplete(field_info: FieldInfo, field_name: str, init_state: InitState) -> None:  """Warn if the field is incomplete, i.e. its annotation contains unresolved forward references.   An incomplete `FieldInfo` instance is unsafe to inspect — any of its attributes (annotation,  aliases, metadata, default) may rely on the unresolved annotation, so settings sources may  silently fail to resolve the field's value. Each instance is only warned about once per  `init_state`, so that a field accessed by multiple sources during a single settings  resolution doesn't emit duplicate warnings.  """ if getattr(field_info, '_complete', True): return warned_ids = init_state.setdefault('field_info_ids', set()) if id(field_info) in warned_ids: return warned_ids.add(id(field_info)) > warnings.warn( f'Field {field_name!r} has an incomplete definition: its annotation contains an unresolved ' 'forward reference, so settings sources may fail to correctly resolve its value. ' 'Call `model_rebuild()` on the model where the field is defined, once all the referenced ' 'types are defined.', IncompleteFieldDefinitionWarning, ) E pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifespan' has an incomplete definition: its annotation contains an unresolved forward reference, so settings sources may fail to correctly resolve its value. Call `model_rebuild()` on the model where the field is defined, once all the referenced types are defined. /usr/lib/python3/dist-packages/pydantic_settings/sources/utils.py:47: IncompleteFieldDefinitionWarning ____ TestServerTools.test_tool_audio_suffix_detection[test.mp3-audio/mpeg] _____ [gw0] linux -- Python 3.14.7 /usr/bin/python3.14 self = tmp_path = PosixPath('/tmp/pytest-of-sbuild/pytest-0/popen-gw0/test_tool_audio_suffix_detecti1') filename = 'test.mp3', expected_mime_type = 'audio/mpeg' @pytest.mark.parametrize( "filename,expected_mime_type", [ ("test.wav", "audio/wav"), ("test.mp3", "audio/mpeg"), ("test.ogg", "audio/ogg"), ("test.flac", "audio/flac"), ("test.aac", "audio/aac"), ("test.m4a", "audio/mp4"), ("test.unknown", "application/octet-stream"), # Unknown extension fallback ], ) @pytest.mark.anyio async def test_tool_audio_suffix_detection(self, tmp_path: Path, filename: str, expected_mime_type: str):  """Test that Audio helper correctly detects MIME types from file suffixes""" > mcp = FastMCP() ^^^^^^^^^ tests/server/fastmcp/test_server.py:390: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ mcp/server/fastmcp/server.py:185: in __init__ self.settings = Settings( /usr/lib/python3/dist-packages/pydantic_settings/main.py:229: in __init__ else __pydantic_self__.__class__._settings_init_sources( /usr/lib/python3/dist-packages/pydantic_settings/main.py:397: in _settings_init_sources default_settings = DefaultSettingsSource( /usr/lib/python3/dist-packages/pydantic_settings/sources/base.py:287: in __init__ _warn_if_field_info_incomplete(field_info, field_name, self._init_state) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ field_info = FieldInfo(annotation=ForwardRef('Callable[[FastMCP[LifespanResultT]], AbstractAsyncContextManager[LifespanResultT]] | None', is_class=True), required=True) field_name = 'lifespan', init_state = {'field_info_ids': {140456318704880}} def _warn_if_field_info_incomplete(field_info: FieldInfo, field_name: str, init_state: InitState) -> None:  """Warn if the field is incomplete, i.e. its annotation contains unresolved forward references.   An incomplete `FieldInfo` instance is unsafe to inspect — any of its attributes (annotation,  aliases, metadata, default) may rely on the unresolved annotation, so settings sources may  silently fail to resolve the field's value. Each instance is only warned about once per  `init_state`, so that a field accessed by multiple sources during a single settings  resolution doesn't emit duplicate warnings.  """ if getattr(field_info, '_complete', True): return warned_ids = init_state.setdefault('field_info_ids', set()) if id(field_info) in warned_ids: return warned_ids.add(id(field_info)) > warnings.warn( f'Field {field_name!r} has an incomplete definition: its annotation contains an unresolved ' 'forward reference, so settings sources may fail to correctly resolve its value. ' 'Call `model_rebuild()` on the model where the field is defined, once all the referenced ' 'types are defined.', IncompleteFieldDefinitionWarning, ) E pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifespan' has an incomplete definition: its annotation contains an unresolved forward reference, so settings sources may fail to correctly resolve its value. Call `model_rebuild()` on the model where the field is defined, once all the referenced types are defined. /usr/lib/python3/dist-packages/pydantic_settings/sources/utils.py:47: IncompleteFieldDefinitionWarning _____ TestServerTools.test_tool_audio_suffix_detection[test.ogg-audio/ogg] _____ [gw0] linux -- Python 3.14.7 /usr/bin/python3.14 self = tmp_path = PosixPath('/tmp/pytest-of-sbuild/pytest-0/popen-gw0/test_tool_audio_suffix_detecti2') filename = 'test.ogg', expected_mime_type = 'audio/ogg' @pytest.mark.parametrize( "filename,expected_mime_type", [ ("test.wav", "audio/wav"), ("test.mp3", "audio/mpeg"), ("test.ogg", "audio/ogg"), ("test.flac", "audio/flac"), ("test.aac", "audio/aac"), ("test.m4a", "audio/mp4"), ("test.unknown", "application/octet-stream"), # Unknown extension fallback ], ) @pytest.mark.anyio async def test_tool_audio_suffix_detection(self, tmp_path: Path, filename: str, expected_mime_type: str):  """Test that Audio helper correctly detects MIME types from file suffixes""" > mcp = FastMCP() ^^^^^^^^^ tests/server/fastmcp/test_server.py:390: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ mcp/server/fastmcp/server.py:185: in __init__ self.settings = Settings( /usr/lib/python3/dist-packages/pydantic_settings/main.py:229: in __init__ else __pydantic_self__.__class__._settings_init_sources( /usr/lib/python3/dist-packages/pydantic_settings/main.py:397: in _settings_init_sources default_settings = DefaultSettingsSource( /usr/lib/python3/dist-packages/pydantic_settings/sources/base.py:287: in __init__ _warn_if_field_info_incomplete(field_info, field_name, self._init_state) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ field_info = FieldInfo(annotation=ForwardRef('Callable[[FastMCP[LifespanResultT]], AbstractAsyncContextManager[LifespanResultT]] | None', is_class=True), required=True) field_name = 'lifespan', init_state = {'field_info_ids': {140456318704880}} def _warn_if_field_info_incomplete(field_info: FieldInfo, field_name: str, init_state: InitState) -> None:  """Warn if the field is incomplete, i.e. its annotation contains unresolved forward references.   An incomplete `FieldInfo` instance is unsafe to inspect — any of its attributes (annotation,  aliases, metadata, default) may rely on the unresolved annotation, so settings sources may  silently fail to resolve the field's value. Each instance is only warned about once per  `init_state`, so that a field accessed by multiple sources during a single settings  resolution doesn't emit duplicate warnings.  """ if getattr(field_info, '_complete', True): return warned_ids = init_state.setdefault('field_info_ids', set()) if id(field_info) in warned_ids: return warned_ids.add(id(field_info)) > warnings.warn( f'Field {field_name!r} has an incomplete definition: its annotation contains an unresolved ' 'forward reference, so settings sources may fail to correctly resolve its value. ' 'Call `model_rebuild()` on the model where the field is defined, once all the referenced ' 'types are defined.', IncompleteFieldDefinitionWarning, ) E pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifespan' has an incomplete definition: its annotation contains an unresolved forward reference, so settings sources may fail to correctly resolve its value. Call `model_rebuild()` on the model where the field is defined, once all the referenced types are defined. /usr/lib/python3/dist-packages/pydantic_settings/sources/utils.py:47: IncompleteFieldDefinitionWarning ____ TestServerTools.test_tool_audio_suffix_detection[test.flac-audio/flac] ____ [gw0] linux -- Python 3.14.7 /usr/bin/python3.14 self = tmp_path = PosixPath('/tmp/pytest-of-sbuild/pytest-0/popen-gw0/test_tool_audio_suffix_detecti3') filename = 'test.flac', expected_mime_type = 'audio/flac' @pytest.mark.parametrize( "filename,expected_mime_type", [ ("test.wav", "audio/wav"), ("test.mp3", "audio/mpeg"), ("test.ogg", "audio/ogg"), ("test.flac", "audio/flac"), ("test.aac", "audio/aac"), ("test.m4a", "audio/mp4"), ("test.unknown", "application/octet-stream"), # Unknown extension fallback ], ) @pytest.mark.anyio async def test_tool_audio_suffix_detection(self, tmp_path: Path, filename: str, expected_mime_type: str):  """Test that Audio helper correctly detects MIME types from file suffixes""" > mcp = FastMCP() ^^^^^^^^^ tests/server/fastmcp/test_server.py:390: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ mcp/server/fastmcp/server.py:185: in __init__ self.settings = Settings( /usr/lib/python3/dist-packages/pydantic_settings/main.py:229: in __init__ else __pydantic_self__.__class__._settings_init_sources( /usr/lib/python3/dist-packages/pydantic_settings/main.py:397: in _settings_init_sources default_settings = DefaultSettingsSource( /usr/lib/python3/dist-packages/pydantic_settings/sources/base.py:287: in __init__ _warn_if_field_info_incomplete(field_info, field_name, self._init_state) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ field_info = FieldInfo(annotation=ForwardRef('Callable[[FastMCP[LifespanResultT]], AbstractAsyncContextManager[LifespanResultT]] | None', is_class=True), required=True) field_name = 'lifespan', init_state = {'field_info_ids': {140456318704880}} def _warn_if_field_info_incomplete(field_info: FieldInfo, field_name: str, init_state: InitState) -> None:  """Warn if the field is incomplete, i.e. its annotation contains unresolved forward references.   An incomplete `FieldInfo` instance is unsafe to inspect — any of its attributes (annotation,  aliases, metadata, default) may rely on the unresolved annotation, so settings sources may  silently fail to resolve the field's value. Each instance is only warned about once per  `init_state`, so that a field accessed by multiple sources during a single settings  resolution doesn't emit duplicate warnings.  """ if getattr(field_info, '_complete', True): return warned_ids = init_state.setdefault('field_info_ids', set()) if id(field_info) in warned_ids: return warned_ids.add(id(field_info)) > warnings.warn( f'Field {field_name!r} has an incomplete definition: its annotation contains an unresolved ' 'forward reference, so settings sources may fail to correctly resolve its value. ' 'Call `model_rebuild()` on the model where the field is defined, once all the referenced ' 'types are defined.', IncompleteFieldDefinitionWarning, ) E pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifespan' has an incomplete definition: its annotation contains an unresolved forward reference, so settings sources may fail to correctly resolve its value. Call `model_rebuild()` on the model where the field is defined, once all the referenced types are defined. /usr/lib/python3/dist-packages/pydantic_settings/sources/utils.py:47: IncompleteFieldDefinitionWarning _____ TestServerTools.test_tool_audio_suffix_detection[test.aac-audio/aac] _____ [gw0] linux -- Python 3.14.7 /usr/bin/python3.14 self = tmp_path = PosixPath('/tmp/pytest-of-sbuild/pytest-0/popen-gw0/test_tool_audio_suffix_detecti4') filename = 'test.aac', expected_mime_type = 'audio/aac' @pytest.mark.parametrize( "filename,expected_mime_type", [ ("test.wav", "audio/wav"), ("test.mp3", "audio/mpeg"), ("test.ogg", "audio/ogg"), ("test.flac", "audio/flac"), ("test.aac", "audio/aac"), ("test.m4a", "audio/mp4"), ("test.unknown", "application/octet-stream"), # Unknown extension fallback ], ) @pytest.mark.anyio async def test_tool_audio_suffix_detection(self, tmp_path: Path, filename: str, expected_mime_type: str):  """Test that Audio helper correctly detects MIME types from file suffixes""" > mcp = FastMCP() ^^^^^^^^^ tests/server/fastmcp/test_server.py:390: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ mcp/server/fastmcp/server.py:185: in __init__ self.settings = Settings( /usr/lib/python3/dist-packages/pydantic_settings/main.py:229: in __init__ else __pydantic_self__.__class__._settings_init_sources( /usr/lib/python3/dist-packages/pydantic_settings/main.py:397: in _settings_init_sources default_settings = DefaultSettingsSource( /usr/lib/python3/dist-packages/pydantic_settings/sources/base.py:287: in __init__ _warn_if_field_info_incomplete(field_info, field_name, self._init_state) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ field_info = FieldInfo(annotation=ForwardRef('Callable[[FastMCP[LifespanResultT]], AbstractAsyncContextManager[LifespanResultT]] | None', is_class=True), required=True) field_name = 'lifespan', init_state = {'field_info_ids': {140456318704880}} def _warn_if_field_info_incomplete(field_info: FieldInfo, field_name: str, init_state: InitState) -> None:  """Warn if the field is incomplete, i.e. its annotation contains unresolved forward references.   An incomplete `FieldInfo` instance is unsafe to inspect — any of its attributes (annotation,  aliases, metadata, default) may rely on the unresolved annotation, so settings sources may  silently fail to resolve the field's value. Each instance is only warned about once per  `init_state`, so that a field accessed by multiple sources during a single settings  resolution doesn't emit duplicate warnings.  """ if getattr(field_info, '_complete', True): return warned_ids = init_state.setdefault('field_info_ids', set()) if id(field_info) in warned_ids: return warned_ids.add(id(field_info)) > warnings.warn( f'Field {field_name!r} has an incomplete definition: its annotation contains an unresolved ' 'forward reference, so settings sources may fail to correctly resolve its value. ' 'Call `model_rebuild()` on the model where the field is defined, once all the referenced ' 'types are defined.', IncompleteFieldDefinitionWarning, ) E pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifespan' has an incomplete definition: its annotation contains an unresolved forward reference, so settings sources may fail to correctly resolve its value. Call `model_rebuild()` on the model where the field is defined, once all the referenced types are defined. /usr/lib/python3/dist-packages/pydantic_settings/sources/utils.py:47: IncompleteFieldDefinitionWarning _____ TestServerTools.test_tool_audio_suffix_detection[test.m4a-audio/mp4] _____ [gw0] linux -- Python 3.14.7 /usr/bin/python3.14 self = tmp_path = PosixPath('/tmp/pytest-of-sbuild/pytest-0/popen-gw0/test_tool_audio_suffix_detecti5') filename = 'test.m4a', expected_mime_type = 'audio/mp4' @pytest.mark.parametrize( "filename,expected_mime_type", [ ("test.wav", "audio/wav"), ("test.mp3", "audio/mpeg"), ("test.ogg", "audio/ogg"), ("test.flac", "audio/flac"), ("test.aac", "audio/aac"), ("test.m4a", "audio/mp4"), ("test.unknown", "application/octet-stream"), # Unknown extension fallback ], ) @pytest.mark.anyio async def test_tool_audio_suffix_detection(self, tmp_path: Path, filename: str, expected_mime_type: str):  """Test that Audio helper correctly detects MIME types from file suffixes""" > mcp = FastMCP() ^^^^^^^^^ tests/server/fastmcp/test_server.py:390: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ mcp/server/fastmcp/server.py:185: in __init__ self.settings = Settings( /usr/lib/python3/dist-packages/pydantic_settings/main.py:229: in __init__ else __pydantic_self__.__class__._settings_init_sources( /usr/lib/python3/dist-packages/pydantic_settings/main.py:397: in _settings_init_sources default_settings = DefaultSettingsSource( /usr/lib/python3/dist-packages/pydantic_settings/sources/base.py:287: in __init__ _warn_if_field_info_incomplete(field_info, field_name, self._init_state) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ field_info = FieldInfo(annotation=ForwardRef('Callable[[FastMCP[LifespanResultT]], AbstractAsyncContextManager[LifespanResultT]] | None', is_class=True), required=True) field_name = 'lifespan', init_state = {'field_info_ids': {140456318704880}} def _warn_if_field_info_incomplete(field_info: FieldInfo, field_name: str, init_state: InitState) -> None:  """Warn if the field is incomplete, i.e. its annotation contains unresolved forward references.   An incomplete `FieldInfo` instance is unsafe to inspect — any of its attributes (annotation,  aliases, metadata, default) may rely on the unresolved annotation, so settings sources may  silently fail to resolve the field's value. Each instance is only warned about once per  `init_state`, so that a field accessed by multiple sources during a single settings  resolution doesn't emit duplicate warnings.  """ if getattr(field_info, '_complete', True): return warned_ids = init_state.setdefault('field_info_ids', set()) if id(field_info) in warned_ids: return warned_ids.add(id(field_info)) > warnings.warn( f'Field {field_name!r} has an incomplete definition: its annotation contains an unresolved ' 'forward reference, so settings sources may fail to correctly resolve its value. ' 'Call `model_rebuild()` on the model where the field is defined, once all the referenced ' 'types are defined.', IncompleteFieldDefinitionWarning, ) E pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifespan' has an incomplete definition: its annotation contains an unresolved forward reference, so settings sources may fail to correctly resolve its value. Call `model_rebuild()` on the model where the field is defined, once all the referenced types are defined. /usr/lib/python3/dist-packages/pydantic_settings/sources/utils.py:47: IncompleteFieldDefinitionWarning _ TestServerTools.test_tool_audio_suffix_detection[test.unknown-application/octet-stream] _ [gw0] linux -- Python 3.14.7 /usr/bin/python3.14 self = tmp_path = PosixPath('/tmp/pytest-of-sbuild/pytest-0/popen-gw0/test_tool_audio_suffix_detecti6') filename = 'test.unknown', expected_mime_type = 'application/octet-stream' @pytest.mark.parametrize( "filename,expected_mime_type", [ ("test.wav", "audio/wav"), ("test.mp3", "audio/mpeg"), ("test.ogg", "audio/ogg"), ("test.flac", "audio/flac"), ("test.aac", "audio/aac"), ("test.m4a", "audio/mp4"), ("test.unknown", "application/octet-stream"), # Unknown extension fallback ], ) @pytest.mark.anyio async def test_tool_audio_suffix_detection(self, tmp_path: Path, filename: str, expected_mime_type: str):  """Test that Audio helper correctly detects MIME types from file suffixes""" > mcp = FastMCP() ^^^^^^^^^ tests/server/fastmcp/test_server.py:390: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ mcp/server/fastmcp/server.py:185: in __init__ self.settings = Settings( /usr/lib/python3/dist-packages/pydantic_settings/main.py:229: in __init__ else __pydantic_self__.__class__._settings_init_sources( /usr/lib/python3/dist-packages/pydantic_settings/main.py:397: in _settings_init_sources default_settings = DefaultSettingsSource( /usr/lib/python3/dist-packages/pydantic_settings/sources/base.py:287: in __init__ _warn_if_field_info_incomplete(field_info, field_name, self._init_state) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ field_info = FieldInfo(annotation=ForwardRef('Callable[[FastMCP[LifespanResultT]], AbstractAsyncContextManager[LifespanResultT]] | None', is_class=True), required=True) field_name = 'lifespan', init_state = {'field_info_ids': {140456318704880}} def _warn_if_field_info_incomplete(field_info: FieldInfo, field_name: str, init_state: InitState) -> None:  """Warn if the field is incomplete, i.e. its annotation contains unresolved forward references.   An incomplete `FieldInfo` instance is unsafe to inspect — any of its attributes (annotation,  aliases, metadata, default) may rely on the unresolved annotation, so settings sources may  silently fail to resolve the field's value. Each instance is only warned about once per  `init_state`, so that a field accessed by multiple sources during a single settings  resolution doesn't emit duplicate warnings.  """ if getattr(field_info, '_complete', True): return warned_ids = init_state.setdefault('field_info_ids', set()) if id(field_info) in warned_ids: return warned_ids.add(id(field_info)) > warnings.warn( f'Field {field_name!r} has an incomplete definition: its annotation contains an unresolved ' 'forward reference, so settings sources may fail to correctly resolve its value. ' 'Call `model_rebuild()` on the model where the field is defined, once all the referenced ' 'types are defined.', IncompleteFieldDefinitionWarning, ) E pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifespan' has an incomplete definition: its annotation contains an unresolved forward reference, so settings sources may fail to correctly resolve its value. Call `model_rebuild()` on the model where the field is defined, once all the referenced types are defined. /usr/lib/python3/dist-packages/pydantic_settings/sources/utils.py:47: IncompleteFieldDefinitionWarning ___________________ TestServerTools.test_tool_mixed_content ____________________ [gw0] linux -- Python 3.14.7 /usr/bin/python3.14 self = @pytest.mark.anyio async def test_tool_mixed_content(self): > mcp = FastMCP() ^^^^^^^^^ tests/server/fastmcp/test_server.py:410: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ mcp/server/fastmcp/server.py:185: in __init__ self.settings = Settings( /usr/lib/python3/dist-packages/pydantic_settings/main.py:229: in __init__ else __pydantic_self__.__class__._settings_init_sources( /usr/lib/python3/dist-packages/pydantic_settings/main.py:397: in _settings_init_sources default_settings = DefaultSettingsSource( /usr/lib/python3/dist-packages/pydantic_settings/sources/base.py:287: in __init__ _warn_if_field_info_incomplete(field_info, field_name, self._init_state) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ field_info = FieldInfo(annotation=ForwardRef('Callable[[FastMCP[LifespanResultT]], AbstractAsyncContextManager[LifespanResultT]] | None', is_class=True), required=True) field_name = 'lifespan', init_state = {'field_info_ids': {140456318704880}} def _warn_if_field_info_incomplete(field_info: FieldInfo, field_name: str, init_state: InitState) -> None:  """Warn if the field is incomplete, i.e. its annotation contains unresolved forward references.   An incomplete `FieldInfo` instance is unsafe to inspect — any of its attributes (annotation,  aliases, metadata, default) may rely on the unresolved annotation, so settings sources may  silently fail to resolve the field's value. Each instance is only warned about once per  `init_state`, so that a field accessed by multiple sources during a single settings  resolution doesn't emit duplicate warnings.  """ if getattr(field_info, '_complete', True): return warned_ids = init_state.setdefault('field_info_ids', set()) if id(field_info) in warned_ids: return warned_ids.add(id(field_info)) > warnings.warn( f'Field {field_name!r} has an incomplete definition: its annotation contains an unresolved ' 'forward reference, so settings sources may fail to correctly resolve its value. ' 'Call `model_rebuild()` on the model where the field is defined, once all the referenced ' 'types are defined.', IncompleteFieldDefinitionWarning, ) E pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifespan' has an incomplete definition: its annotation contains an unresolved forward reference, so settings sources may fail to correctly resolve its value. Call `model_rebuild()` on the model where the field is defined, once all the referenced types are defined. /usr/lib/python3/dist-packages/pydantic_settings/sources/utils.py:47: IncompleteFieldDefinitionWarning __________ TestServerTools.test_tool_mixed_list_with_audio_and_image ___________ [gw0] linux -- Python 3.14.7 /usr/bin/python3.14 self = tmp_path = PosixPath('/tmp/pytest-of-sbuild/pytest-0/popen-gw0/test_tool_mixed_list_with_audi0') @pytest.mark.anyio async def test_tool_mixed_list_with_audio_and_image(self, tmp_path: Path):  """Test that lists containing Image objects and other types are handled  correctly""" # Create a test image image_path = tmp_path / "test.png" image_path.write_bytes(b"test image data")  # Create a test audio audio_path = tmp_path / "test.wav" audio_path.write_bytes(b"test audio data")  # TODO(Marcelo): It seems if we add the proper type hint, it generates an invalid JSON schema. # We need to fix this. def mixed_list_fn() -> list: # type: ignore return [ # type: ignore "text message", Image(image_path), Audio(audio_path), {"key": "value"}, TextContent(type="text", text="direct content"), ]  > mcp = FastMCP() ^^^^^^^^^ tests/server/fastmcp/test_server.py:462: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ mcp/server/fastmcp/server.py:185: in __init__ self.settings = Settings( /usr/lib/python3/dist-packages/pydantic_settings/main.py:229: in __init__ else __pydantic_self__.__class__._settings_init_sources( /usr/lib/python3/dist-packages/pydantic_settings/main.py:397: in _settings_init_sources default_settings = DefaultSettingsSource( /usr/lib/python3/dist-packages/pydantic_settings/sources/base.py:287: in __init__ _warn_if_field_info_incomplete(field_info, field_name, self._init_state) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ field_info = FieldInfo(annotation=ForwardRef('Callable[[FastMCP[LifespanResultT]], AbstractAsyncContextManager[LifespanResultT]] | None', is_class=True), required=True) field_name = 'lifespan', init_state = {'field_info_ids': {140456318704880}} def _warn_if_field_info_incomplete(field_info: FieldInfo, field_name: str, init_state: InitState) -> None:  """Warn if the field is incomplete, i.e. its annotation contains unresolved forward references.   An incomplete `FieldInfo` instance is unsafe to inspect — any of its attributes (annotation,  aliases, metadata, default) may rely on the unresolved annotation, so settings sources may  silently fail to resolve the field's value. Each instance is only warned about once per  `init_state`, so that a field accessed by multiple sources during a single settings  resolution doesn't emit duplicate warnings.  """ if getattr(field_info, '_complete', True): return warned_ids = init_state.setdefault('field_info_ids', set()) if id(field_info) in warned_ids: return warned_ids.add(id(field_info)) > warnings.warn( f'Field {field_name!r} has an incomplete definition: its annotation contains an unresolved ' 'forward reference, so settings sources may fail to correctly resolve its value. ' 'Call `model_rebuild()` on the model where the field is defined, once all the referenced ' 'types are defined.', IncompleteFieldDefinitionWarning, ) E pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifespan' has an incomplete definition: its annotation contains an unresolved forward reference, so settings sources may fail to correctly resolve its value. Call `model_rebuild()` on the model where the field is defined, once all the referenced types are defined. /usr/lib/python3/dist-packages/pydantic_settings/sources/utils.py:47: IncompleteFieldDefinitionWarning ____________ TestServerTools.test_tool_structured_output_basemodel _____________ [gw0] linux -- Python 3.14.7 /usr/bin/python3.14 self = @pytest.mark.anyio async def test_tool_structured_output_basemodel(self):  """Test tool with structured output returning BaseModel"""  class UserOutput(BaseModel): name: str age: int active: bool = True  def get_user(user_id: int) -> UserOutput:  """Get user by ID""" return UserOutput(name="John Doe", age=30)  > mcp = FastMCP() ^^^^^^^^^ tests/server/fastmcp/test_server.py:505: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ mcp/server/fastmcp/server.py:185: in __init__ self.settings = Settings( /usr/lib/python3/dist-packages/pydantic_settings/main.py:229: in __init__ else __pydantic_self__.__class__._settings_init_sources( /usr/lib/python3/dist-packages/pydantic_settings/main.py:397: in _settings_init_sources default_settings = DefaultSettingsSource( /usr/lib/python3/dist-packages/pydantic_settings/sources/base.py:287: in __init__ _warn_if_field_info_incomplete(field_info, field_name, self._init_state) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ field_info = FieldInfo(annotation=ForwardRef('Callable[[FastMCP[LifespanResultT]], AbstractAsyncContextManager[LifespanResultT]] | None', is_class=True), required=True) field_name = 'lifespan', init_state = {'field_info_ids': {140456318704880}} def _warn_if_field_info_incomplete(field_info: FieldInfo, field_name: str, init_state: InitState) -> None:  """Warn if the field is incomplete, i.e. its annotation contains unresolved forward references.   An incomplete `FieldInfo` instance is unsafe to inspect — any of its attributes (annotation,  aliases, metadata, default) may rely on the unresolved annotation, so settings sources may  silently fail to resolve the field's value. Each instance is only warned about once per  `init_state`, so that a field accessed by multiple sources during a single settings  resolution doesn't emit duplicate warnings.  """ if getattr(field_info, '_complete', True): return warned_ids = init_state.setdefault('field_info_ids', set()) if id(field_info) in warned_ids: return warned_ids.add(id(field_info)) > warnings.warn( f'Field {field_name!r} has an incomplete definition: its annotation contains an unresolved ' 'forward reference, so settings sources may fail to correctly resolve its value. ' 'Call `model_rebuild()` on the model where the field is defined, once all the referenced ' 'types are defined.', IncompleteFieldDefinitionWarning, ) E pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifespan' has an incomplete definition: its annotation contains an unresolved forward reference, so settings sources may fail to correctly resolve its value. Call `model_rebuild()` on the model where the field is defined, once all the referenced types are defined. /usr/lib/python3/dist-packages/pydantic_settings/sources/utils.py:47: IncompleteFieldDefinitionWarning ____________ TestServerTools.test_tool_structured_output_primitive _____________ [gw0] linux -- Python 3.14.7 /usr/bin/python3.14 self = @pytest.mark.anyio async def test_tool_structured_output_primitive(self):  """Test tool with structured output returning primitive type"""  def calculate_sum(a: int, b: int) -> int:  """Add two numbers""" return a + b  > mcp = FastMCP() ^^^^^^^^^ tests/server/fastmcp/test_server.py:535: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ mcp/server/fastmcp/server.py:185: in __init__ self.settings = Settings( /usr/lib/python3/dist-packages/pydantic_settings/main.py:229: in __init__ else __pydantic_self__.__class__._settings_init_sources( /usr/lib/python3/dist-packages/pydantic_settings/main.py:397: in _settings_init_sources default_settings = DefaultSettingsSource( /usr/lib/python3/dist-packages/pydantic_settings/sources/base.py:287: in __init__ _warn_if_field_info_incomplete(field_info, field_name, self._init_state) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ field_info = FieldInfo(annotation=ForwardRef('Callable[[FastMCP[LifespanResultT]], AbstractAsyncContextManager[LifespanResultT]] | None', is_class=True), required=True) field_name = 'lifespan', init_state = {'field_info_ids': {140456318704880}} def _warn_if_field_info_incomplete(field_info: FieldInfo, field_name: str, init_state: InitState) -> None:  """Warn if the field is incomplete, i.e. its annotation contains unresolved forward references.   An incomplete `FieldInfo` instance is unsafe to inspect — any of its attributes (annotation,  aliases, metadata, default) may rely on the unresolved annotation, so settings sources may  silently fail to resolve the field's value. Each instance is only warned about once per  `init_state`, so that a field accessed by multiple sources during a single settings  resolution doesn't emit duplicate warnings.  """ if getattr(field_info, '_complete', True): return warned_ids = init_state.setdefault('field_info_ids', set()) if id(field_info) in warned_ids: return warned_ids.add(id(field_info)) > warnings.warn( f'Field {field_name!r} has an incomplete definition: its annotation contains an unresolved ' 'forward reference, so settings sources may fail to correctly resolve its value. ' 'Call `model_rebuild()` on the model where the field is defined, once all the referenced ' 'types are defined.', IncompleteFieldDefinitionWarning, ) E pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifespan' has an incomplete definition: its annotation contains an unresolved forward reference, so settings sources may fail to correctly resolve its value. Call `model_rebuild()` on the model where the field is defined, once all the referenced types are defined. /usr/lib/python3/dist-packages/pydantic_settings/sources/utils.py:47: IncompleteFieldDefinitionWarning _______________ TestServerTools.test_tool_structured_output_list _______________ [gw0] linux -- Python 3.14.7 /usr/bin/python3.14 self = @pytest.mark.anyio async def test_tool_structured_output_list(self):  """Test tool with structured output returning list"""  def get_numbers() -> list[int]:  """Get a list of numbers""" return [1, 2, 3, 4, 5]  > mcp = FastMCP() ^^^^^^^^^ tests/server/fastmcp/test_server.py:562: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ mcp/server/fastmcp/server.py:185: in __init__ self.settings = Settings( /usr/lib/python3/dist-packages/pydantic_settings/main.py:229: in __init__ else __pydantic_self__.__class__._settings_init_sources( /usr/lib/python3/dist-packages/pydantic_settings/main.py:397: in _settings_init_sources default_settings = DefaultSettingsSource( /usr/lib/python3/dist-packages/pydantic_settings/sources/base.py:287: in __init__ _warn_if_field_info_incomplete(field_info, field_name, self._init_state) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ field_info = FieldInfo(annotation=ForwardRef('Callable[[FastMCP[LifespanResultT]], AbstractAsyncContextManager[LifespanResultT]] | None', is_class=True), required=True) field_name = 'lifespan', init_state = {'field_info_ids': {140456318704880}} def _warn_if_field_info_incomplete(field_info: FieldInfo, field_name: str, init_state: InitState) -> None:  """Warn if the field is incomplete, i.e. its annotation contains unresolved forward references.   An incomplete `FieldInfo` instance is unsafe to inspect — any of its attributes (annotation,  aliases, metadata, default) may rely on the unresolved annotation, so settings sources may  silently fail to resolve the field's value. Each instance is only warned about once per  `init_state`, so that a field accessed by multiple sources during a single settings  resolution doesn't emit duplicate warnings.  """ if getattr(field_info, '_complete', True): return warned_ids = init_state.setdefault('field_info_ids', set()) if id(field_info) in warned_ids: return warned_ids.add(id(field_info)) > warnings.warn( f'Field {field_name!r} has an incomplete definition: its annotation contains an unresolved ' 'forward reference, so settings sources may fail to correctly resolve its value. ' 'Call `model_rebuild()` on the model where the field is defined, once all the referenced ' 'types are defined.', IncompleteFieldDefinitionWarning, ) E pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifespan' has an incomplete definition: its annotation contains an unresolved forward reference, so settings sources may fail to correctly resolve its value. Call `model_rebuild()` on the model where the field is defined, once all the referenced types are defined. /usr/lib/python3/dist-packages/pydantic_settings/sources/utils.py:47: IncompleteFieldDefinitionWarning ___ TestServerTools.test_tool_structured_output_server_side_validation_error ___ [gw0] linux -- Python 3.14.7 /usr/bin/python3.14 self = @pytest.mark.anyio async def test_tool_structured_output_server_side_validation_error(self):  """Test that server-side validation errors are handled properly"""  def get_numbers() -> list[int]: return [1, 2, 3, 4, [5]] # type: ignore  > mcp = FastMCP() ^^^^^^^^^ tests/server/fastmcp/test_server.py:578: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ mcp/server/fastmcp/server.py:185: in __init__ self.settings = Settings( /usr/lib/python3/dist-packages/pydantic_settings/main.py:229: in __init__ else __pydantic_self__.__class__._settings_init_sources( /usr/lib/python3/dist-packages/pydantic_settings/main.py:397: in _settings_init_sources default_settings = DefaultSettingsSource( /usr/lib/python3/dist-packages/pydantic_settings/sources/base.py:287: in __init__ _warn_if_field_info_incomplete(field_info, field_name, self._init_state) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ field_info = FieldInfo(annotation=ForwardRef('Callable[[FastMCP[LifespanResultT]], AbstractAsyncContextManager[LifespanResultT]] | None', is_class=True), required=True) field_name = 'lifespan', init_state = {'field_info_ids': {140456318704880}} def _warn_if_field_info_incomplete(field_info: FieldInfo, field_name: str, init_state: InitState) -> None:  """Warn if the field is incomplete, i.e. its annotation contains unresolved forward references.   An incomplete `FieldInfo` instance is unsafe to inspect — any of its attributes (annotation,  aliases, metadata, default) may rely on the unresolved annotation, so settings sources may  silently fail to resolve the field's value. Each instance is only warned about once per  `init_state`, so that a field accessed by multiple sources during a single settings  resolution doesn't emit duplicate warnings.  """ if getattr(field_info, '_complete', True): return warned_ids = init_state.setdefault('field_info_ids', set()) if id(field_info) in warned_ids: return warned_ids.add(id(field_info)) > warnings.warn( f'Field {field_name!r} has an incomplete definition: its annotation contains an unresolved ' 'forward reference, so settings sources may fail to correctly resolve its value. ' 'Call `model_rebuild()` on the model where the field is defined, once all the referenced ' 'types are defined.', IncompleteFieldDefinitionWarning, ) E pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifespan' has an incomplete definition: its annotation contains an unresolved forward reference, so settings sources may fail to correctly resolve its value. Call `model_rebuild()` on the model where the field is defined, once all the referenced types are defined. /usr/lib/python3/dist-packages/pydantic_settings/sources/utils.py:47: IncompleteFieldDefinitionWarning ___________ TestServerTools.test_tool_structured_output_dict_str_any ___________ [gw0] linux -- Python 3.14.7 /usr/bin/python3.14 self = @pytest.mark.anyio async def test_tool_structured_output_dict_str_any(self):  """Test tool with dict[str, Any] structured output"""  def get_metadata() -> dict[str, Any]:  """Get metadata dictionary""" return { "version": "1.0.0", "enabled": True, "count": 42, "tags": ["production", "stable"], "config": {"nested": {"value": 123}}, }  > mcp = FastMCP() ^^^^^^^^^ tests/server/fastmcp/test_server.py:602: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ mcp/server/fastmcp/server.py:185: in __init__ self.settings = Settings( /usr/lib/python3/dist-packages/pydantic_settings/main.py:229: in __init__ else __pydantic_self__.__class__._settings_init_sources( /usr/lib/python3/dist-packages/pydantic_settings/main.py:397: in _settings_init_sources default_settings = DefaultSettingsSource( /usr/lib/python3/dist-packages/pydantic_settings/sources/base.py:287: in __init__ _warn_if_field_info_incomplete(field_info, field_name, self._init_state) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ field_info = FieldInfo(annotation=ForwardRef('Callable[[FastMCP[LifespanResultT]], AbstractAsyncContextManager[LifespanResultT]] | None', is_class=True), required=True) field_name = 'lifespan', init_state = {'field_info_ids': {140456318704880}} def _warn_if_field_info_incomplete(field_info: FieldInfo, field_name: str, init_state: InitState) -> None:  """Warn if the field is incomplete, i.e. its annotation contains unresolved forward references.   An incomplete `FieldInfo` instance is unsafe to inspect — any of its attributes (annotation,  aliases, metadata, default) may rely on the unresolved annotation, so settings sources may  silently fail to resolve the field's value. Each instance is only warned about once per  `init_state`, so that a field accessed by multiple sources during a single settings  resolution doesn't emit duplicate warnings.  """ if getattr(field_info, '_complete', True): return warned_ids = init_state.setdefault('field_info_ids', set()) if id(field_info) in warned_ids: return warned_ids.add(id(field_info)) > warnings.warn( f'Field {field_name!r} has an incomplete definition: its annotation contains an unresolved ' 'forward reference, so settings sources may fail to correctly resolve its value. ' 'Call `model_rebuild()` on the model where the field is defined, once all the referenced ' 'types are defined.', IncompleteFieldDefinitionWarning, ) E pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifespan' has an incomplete definition: its annotation contains an unresolved forward reference, so settings sources may fail to correctly resolve its value. Call `model_rebuild()` on the model where the field is defined, once all the referenced types are defined. /usr/lib/python3/dist-packages/pydantic_settings/sources/utils.py:47: IncompleteFieldDefinitionWarning __________ TestServerTools.test_tool_structured_output_dict_str_typed __________ [gw0] linux -- Python 3.14.7 /usr/bin/python3.14 self = @pytest.mark.anyio async def test_tool_structured_output_dict_str_typed(self):  """Test tool with dict[str, T] structured output for specific T"""  def get_settings() -> dict[str, str]:  """Get settings as string dictionary""" return {"theme": "dark", "language": "en", "timezone": "UTC"}  > mcp = FastMCP() ^^^^^^^^^ tests/server/fastmcp/test_server.py:637: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ mcp/server/fastmcp/server.py:185: in __init__ self.settings = Settings( /usr/lib/python3/dist-packages/pydantic_settings/main.py:229: in __init__ else __pydantic_self__.__class__._settings_init_sources( /usr/lib/python3/dist-packages/pydantic_settings/main.py:397: in _settings_init_sources default_settings = DefaultSettingsSource( /usr/lib/python3/dist-packages/pydantic_settings/sources/base.py:287: in __init__ _warn_if_field_info_incomplete(field_info, field_name, self._init_state) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ field_info = FieldInfo(annotation=ForwardRef('Callable[[FastMCP[LifespanResultT]], AbstractAsyncContextManager[LifespanResultT]] | None', is_class=True), required=True) field_name = 'lifespan', init_state = {'field_info_ids': {140456318704880}} def _warn_if_field_info_incomplete(field_info: FieldInfo, field_name: str, init_state: InitState) -> None:  """Warn if the field is incomplete, i.e. its annotation contains unresolved forward references.   An incomplete `FieldInfo` instance is unsafe to inspect — any of its attributes (annotation,  aliases, metadata, default) may rely on the unresolved annotation, so settings sources may  silently fail to resolve the field's value. Each instance is only warned about once per  `init_state`, so that a field accessed by multiple sources during a single settings  resolution doesn't emit duplicate warnings.  """ if getattr(field_info, '_complete', True): return warned_ids = init_state.setdefault('field_info_ids', set()) if id(field_info) in warned_ids: return warned_ids.add(id(field_info)) > warnings.warn( f'Field {field_name!r} has an incomplete definition: its annotation contains an unresolved ' 'forward reference, so settings sources may fail to correctly resolve its value. ' 'Call `model_rebuild()` on the model where the field is defined, once all the referenced ' 'types are defined.', IncompleteFieldDefinitionWarning, ) E pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifespan' has an incomplete definition: its annotation contains an unresolved forward reference, so settings sources may fail to correctly resolve its value. Call `model_rebuild()` on the model where the field is defined, once all the referenced types are defined. /usr/lib/python3/dist-packages/pydantic_settings/sources/utils.py:47: IncompleteFieldDefinitionWarning _______________________ TestServerTools.test_remove_tool _______________________ [gw0] linux -- Python 3.14.7 /usr/bin/python3.14 self = @pytest.mark.anyio async def test_remove_tool(self):  """Test removing a tool from the server.""" > mcp = FastMCP() ^^^^^^^^^ tests/server/fastmcp/test_server.py:656: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ mcp/server/fastmcp/server.py:185: in __init__ self.settings = Settings( /usr/lib/python3/dist-packages/pydantic_settings/main.py:229: in __init__ else __pydantic_self__.__class__._settings_init_sources( /usr/lib/python3/dist-packages/pydantic_settings/main.py:397: in _settings_init_sources default_settings = DefaultSettingsSource( /usr/lib/python3/dist-packages/pydantic_settings/sources/base.py:287: in __init__ _warn_if_field_info_incomplete(field_info, field_name, self._init_state) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ field_info = FieldInfo(annotation=ForwardRef('Callable[[FastMCP[LifespanResultT]], AbstractAsyncContextManager[LifespanResultT]] | None', is_class=True), required=True) field_name = 'lifespan', init_state = {'field_info_ids': {140456318704880}} def _warn_if_field_info_incomplete(field_info: FieldInfo, field_name: str, init_state: InitState) -> None:  """Warn if the field is incomplete, i.e. its annotation contains unresolved forward references.   An incomplete `FieldInfo` instance is unsafe to inspect — any of its attributes (annotation,  aliases, metadata, default) may rely on the unresolved annotation, so settings sources may  silently fail to resolve the field's value. Each instance is only warned about once per  `init_state`, so that a field accessed by multiple sources during a single settings  resolution doesn't emit duplicate warnings.  """ if getattr(field_info, '_complete', True): return warned_ids = init_state.setdefault('field_info_ids', set()) if id(field_info) in warned_ids: return warned_ids.add(id(field_info)) > warnings.warn( f'Field {field_name!r} has an incomplete definition: its annotation contains an unresolved ' 'forward reference, so settings sources may fail to correctly resolve its value. ' 'Call `model_rebuild()` on the model where the field is defined, once all the referenced ' 'types are defined.', IncompleteFieldDefinitionWarning, ) E pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifespan' has an incomplete definition: its annotation contains an unresolved forward reference, so settings sources may fail to correctly resolve its value. Call `model_rebuild()` on the model where the field is defined, once all the referenced types are defined. /usr/lib/python3/dist-packages/pydantic_settings/sources/utils.py:47: IncompleteFieldDefinitionWarning _________________ TestServerTools.test_remove_nonexistent_tool _________________ [gw0] linux -- Python 3.14.7 /usr/bin/python3.14 self = @pytest.mark.anyio async def test_remove_nonexistent_tool(self):  """Test that removing a non-existent tool raises ToolError.""" from mcp.server.fastmcp.exceptions import ToolError  > mcp = FastMCP() ^^^^^^^^^ tests/server/fastmcp/test_server.py:673: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ mcp/server/fastmcp/server.py:185: in __init__ self.settings = Settings( /usr/lib/python3/dist-packages/pydantic_settings/main.py:229: in __init__ else __pydantic_self__.__class__._settings_init_sources( /usr/lib/python3/dist-packages/pydantic_settings/main.py:397: in _settings_init_sources default_settings = DefaultSettingsSource( /usr/lib/python3/dist-packages/pydantic_settings/sources/base.py:287: in __init__ _warn_if_field_info_incomplete(field_info, field_name, self._init_state) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ field_info = FieldInfo(annotation=ForwardRef('Callable[[FastMCP[LifespanResultT]], AbstractAsyncContextManager[LifespanResultT]] | None', is_class=True), required=True) field_name = 'lifespan', init_state = {'field_info_ids': {140456318704880}} def _warn_if_field_info_incomplete(field_info: FieldInfo, field_name: str, init_state: InitState) -> None:  """Warn if the field is incomplete, i.e. its annotation contains unresolved forward references.   An incomplete `FieldInfo` instance is unsafe to inspect — any of its attributes (annotation,  aliases, metadata, default) may rely on the unresolved annotation, so settings sources may  silently fail to resolve the field's value. Each instance is only warned about once per  `init_state`, so that a field accessed by multiple sources during a single settings  resolution doesn't emit duplicate warnings.  """ if getattr(field_info, '_complete', True): return warned_ids = init_state.setdefault('field_info_ids', set()) if id(field_info) in warned_ids: return warned_ids.add(id(field_info)) > warnings.warn( f'Field {field_name!r} has an incomplete definition: its annotation contains an unresolved ' 'forward reference, so settings sources may fail to correctly resolve its value. ' 'Call `model_rebuild()` on the model where the field is defined, once all the referenced ' 'types are defined.', IncompleteFieldDefinitionWarning, ) E pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifespan' has an incomplete definition: its annotation contains an unresolved forward reference, so settings sources may fail to correctly resolve its value. Call `model_rebuild()` on the model where the field is defined, once all the referenced types are defined. /usr/lib/python3/dist-packages/pydantic_settings/sources/utils.py:47: IncompleteFieldDefinitionWarning __________________ TestServerTools.test_remove_tool_and_list ___________________ [gw0] linux -- Python 3.14.7 /usr/bin/python3.14 self = @pytest.mark.anyio async def test_remove_tool_and_list(self):  """Test that a removed tool doesn't appear in list_tools.""" > mcp = FastMCP() ^^^^^^^^^ tests/server/fastmcp/test_server.py:681: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ mcp/server/fastmcp/server.py:185: in __init__ self.settings = Settings( /usr/lib/python3/dist-packages/pydantic_settings/main.py:229: in __init__ else __pydantic_self__.__class__._settings_init_sources( /usr/lib/python3/dist-packages/pydantic_settings/main.py:397: in _settings_init_sources default_settings = DefaultSettingsSource( /usr/lib/python3/dist-packages/pydantic_settings/sources/base.py:287: in __init__ _warn_if_field_info_incomplete(field_info, field_name, self._init_state) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ field_info = FieldInfo(annotation=ForwardRef('Callable[[FastMCP[LifespanResultT]], AbstractAsyncContextManager[LifespanResultT]] | None', is_class=True), required=True) field_name = 'lifespan', init_state = {'field_info_ids': {140456318704880}} def _warn_if_field_info_incomplete(field_info: FieldInfo, field_name: str, init_state: InitState) -> None:  """Warn if the field is incomplete, i.e. its annotation contains unresolved forward references.   An incomplete `FieldInfo` instance is unsafe to inspect — any of its attributes (annotation,  aliases, metadata, default) may rely on the unresolved annotation, so settings sources may  silently fail to resolve the field's value. Each instance is only warned about once per  `init_state`, so that a field accessed by multiple sources during a single settings  resolution doesn't emit duplicate warnings.  """ if getattr(field_info, '_complete', True): return warned_ids = init_state.setdefault('field_info_ids', set()) if id(field_info) in warned_ids: return warned_ids.add(id(field_info)) > warnings.warn( f'Field {field_name!r} has an incomplete definition: its annotation contains an unresolved ' 'forward reference, so settings sources may fail to correctly resolve its value. ' 'Call `model_rebuild()` on the model where the field is defined, once all the referenced ' 'types are defined.', IncompleteFieldDefinitionWarning, ) E pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifespan' has an incomplete definition: its annotation contains an unresolved forward reference, so settings sources may fail to correctly resolve its value. Call `model_rebuild()` on the model where the field is defined, once all the referenced types are defined. /usr/lib/python3/dist-packages/pydantic_settings/sources/utils.py:47: IncompleteFieldDefinitionWarning __________________ TestServerTools.test_remove_tool_and_call ___________________ [gw0] linux -- Python 3.14.7 /usr/bin/python3.14 self = @pytest.mark.anyio async def test_remove_tool_and_call(self):  """Test that calling a removed tool fails appropriately.""" > mcp = FastMCP() ^^^^^^^^^ tests/server/fastmcp/test_server.py:705: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ mcp/server/fastmcp/server.py:185: in __init__ self.settings = Settings( /usr/lib/python3/dist-packages/pydantic_settings/main.py:229: in __init__ else __pydantic_self__.__class__._settings_init_sources( /usr/lib/python3/dist-packages/pydantic_settings/main.py:397: in _settings_init_sources default_settings = DefaultSettingsSource( /usr/lib/python3/dist-packages/pydantic_settings/sources/base.py:287: in __init__ _warn_if_field_info_incomplete(field_info, field_name, self._init_state) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ field_info = FieldInfo(annotation=ForwardRef('Callable[[FastMCP[LifespanResultT]], AbstractAsyncContextManager[LifespanResultT]] | None', is_class=True), required=True) field_name = 'lifespan', init_state = {'field_info_ids': {140456318704880}} def _warn_if_field_info_incomplete(field_info: FieldInfo, field_name: str, init_state: InitState) -> None:  """Warn if the field is incomplete, i.e. its annotation contains unresolved forward references.   An incomplete `FieldInfo` instance is unsafe to inspect — any of its attributes (annotation,  aliases, metadata, default) may rely on the unresolved annotation, so settings sources may  silently fail to resolve the field's value. Each instance is only warned about once per  `init_state`, so that a field accessed by multiple sources during a single settings  resolution doesn't emit duplicate warnings.  """ if getattr(field_info, '_complete', True): return warned_ids = init_state.setdefault('field_info_ids', set()) if id(field_info) in warned_ids: return warned_ids.add(id(field_info)) > warnings.warn( f'Field {field_name!r} has an incomplete definition: its annotation contains an unresolved ' 'forward reference, so settings sources may fail to correctly resolve its value. ' 'Call `model_rebuild()` on the model where the field is defined, once all the referenced ' 'types are defined.', IncompleteFieldDefinitionWarning, ) E pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifespan' has an incomplete definition: its annotation contains an unresolved forward reference, so settings sources may fail to correctly resolve its value. Call `model_rebuild()` on the model where the field is defined, once all the referenced types are defined. /usr/lib/python3/dist-packages/pydantic_settings/sources/utils.py:47: IncompleteFieldDefinitionWarning ____________________ TestServerResources.test_text_resource ____________________ [gw0] linux -- Python 3.14.7 /usr/bin/python3.14 self = @pytest.mark.anyio async def test_text_resource(self): > mcp = FastMCP() ^^^^^^^^^ tests/server/fastmcp/test_server.py:731: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ mcp/server/fastmcp/server.py:185: in __init__ self.settings = Settings( /usr/lib/python3/dist-packages/pydantic_settings/main.py:229: in __init__ else __pydantic_self__.__class__._settings_init_sources( /usr/lib/python3/dist-packages/pydantic_settings/main.py:397: in _settings_init_sources default_settings = DefaultSettingsSource( /usr/lib/python3/dist-packages/pydantic_settings/sources/base.py:287: in __init__ _warn_if_field_info_incomplete(field_info, field_name, self._init_state) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ field_info = FieldInfo(annotation=ForwardRef('Callable[[FastMCP[LifespanResultT]], AbstractAsyncContextManager[LifespanResultT]] | None', is_class=True), required=True) field_name = 'lifespan', init_state = {'field_info_ids': {140456318704880}} def _warn_if_field_info_incomplete(field_info: FieldInfo, field_name: str, init_state: InitState) -> None:  """Warn if the field is incomplete, i.e. its annotation contains unresolved forward references.   An incomplete `FieldInfo` instance is unsafe to inspect — any of its attributes (annotation,  aliases, metadata, default) may rely on the unresolved annotation, so settings sources may  silently fail to resolve the field's value. Each instance is only warned about once per  `init_state`, so that a field accessed by multiple sources during a single settings  resolution doesn't emit duplicate warnings.  """ if getattr(field_info, '_complete', True): return warned_ids = init_state.setdefault('field_info_ids', set()) if id(field_info) in warned_ids: return warned_ids.add(id(field_info)) > warnings.warn( f'Field {field_name!r} has an incomplete definition: its annotation contains an unresolved ' 'forward reference, so settings sources may fail to correctly resolve its value. ' 'Call `model_rebuild()` on the model where the field is defined, once all the referenced ' 'types are defined.', IncompleteFieldDefinitionWarning, ) E pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifespan' has an incomplete definition: its annotation contains an unresolved forward reference, so settings sources may fail to correctly resolve its value. Call `model_rebuild()` on the model where the field is defined, once all the referenced types are defined. /usr/lib/python3/dist-packages/pydantic_settings/sources/utils.py:47: IncompleteFieldDefinitionWarning ___________________ TestServerResources.test_binary_resource ___________________ [gw0] linux -- Python 3.14.7 /usr/bin/python3.14 self = @pytest.mark.anyio async def test_binary_resource(self): > mcp = FastMCP() ^^^^^^^^^ tests/server/fastmcp/test_server.py:746: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ mcp/server/fastmcp/server.py:185: in __init__ self.settings = Settings( /usr/lib/python3/dist-packages/pydantic_settings/main.py:229: in __init__ else __pydantic_self__.__class__._settings_init_sources( /usr/lib/python3/dist-packages/pydantic_settings/main.py:397: in _settings_init_sources default_settings = DefaultSettingsSource( /usr/lib/python3/dist-packages/pydantic_settings/sources/base.py:287: in __init__ _warn_if_field_info_incomplete(field_info, field_name, self._init_state) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ field_info = FieldInfo(annotation=ForwardRef('Callable[[FastMCP[LifespanResultT]], AbstractAsyncContextManager[LifespanResultT]] | None', is_class=True), required=True) field_name = 'lifespan', init_state = {'field_info_ids': {140456318704880}} def _warn_if_field_info_incomplete(field_info: FieldInfo, field_name: str, init_state: InitState) -> None:  """Warn if the field is incomplete, i.e. its annotation contains unresolved forward references.   An incomplete `FieldInfo` instance is unsafe to inspect — any of its attributes (annotation,  aliases, metadata, default) may rely on the unresolved annotation, so settings sources may  silently fail to resolve the field's value. Each instance is only warned about once per  `init_state`, so that a field accessed by multiple sources during a single settings  resolution doesn't emit duplicate warnings.  """ if getattr(field_info, '_complete', True): return warned_ids = init_state.setdefault('field_info_ids', set()) if id(field_info) in warned_ids: return warned_ids.add(id(field_info)) > warnings.warn( f'Field {field_name!r} has an incomplete definition: its annotation contains an unresolved ' 'forward reference, so settings sources may fail to correctly resolve its value. ' 'Call `model_rebuild()` on the model where the field is defined, once all the referenced ' 'types are defined.', IncompleteFieldDefinitionWarning, ) E pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifespan' has an incomplete definition: its annotation contains an unresolved forward reference, so settings sources may fail to correctly resolve its value. Call `model_rebuild()` on the model where the field is defined, once all the referenced types are defined. /usr/lib/python3/dist-packages/pydantic_settings/sources/utils.py:47: IncompleteFieldDefinitionWarning _________________ TestServerResources.test_file_resource_text __________________ [gw0] linux -- Python 3.14.7 /usr/bin/python3.14 self = tmp_path = PosixPath('/tmp/pytest-of-sbuild/pytest-0/popen-gw0/test_file_resource_text0') @pytest.mark.anyio async def test_file_resource_text(self, tmp_path: Path): > mcp = FastMCP() ^^^^^^^^^ tests/server/fastmcp/test_server.py:766: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ mcp/server/fastmcp/server.py:185: in __init__ self.settings = Settings( /usr/lib/python3/dist-packages/pydantic_settings/main.py:229: in __init__ else __pydantic_self__.__class__._settings_init_sources( /usr/lib/python3/dist-packages/pydantic_settings/main.py:397: in _settings_init_sources default_settings = DefaultSettingsSource( /usr/lib/python3/dist-packages/pydantic_settings/sources/base.py:287: in __init__ _warn_if_field_info_incomplete(field_info, field_name, self._init_state) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ field_info = FieldInfo(annotation=ForwardRef('Callable[[FastMCP[LifespanResultT]], AbstractAsyncContextManager[LifespanResultT]] | None', is_class=True), required=True) field_name = 'lifespan', init_state = {'field_info_ids': {140456318704880}} def _warn_if_field_info_incomplete(field_info: FieldInfo, field_name: str, init_state: InitState) -> None:  """Warn if the field is incomplete, i.e. its annotation contains unresolved forward references.   An incomplete `FieldInfo` instance is unsafe to inspect — any of its attributes (annotation,  aliases, metadata, default) may rely on the unresolved annotation, so settings sources may  silently fail to resolve the field's value. Each instance is only warned about once per  `init_state`, so that a field accessed by multiple sources during a single settings  resolution doesn't emit duplicate warnings.  """ if getattr(field_info, '_complete', True): return warned_ids = init_state.setdefault('field_info_ids', set()) if id(field_info) in warned_ids: return warned_ids.add(id(field_info)) > warnings.warn( f'Field {field_name!r} has an incomplete definition: its annotation contains an unresolved ' 'forward reference, so settings sources may fail to correctly resolve its value. ' 'Call `model_rebuild()` on the model where the field is defined, once all the referenced ' 'types are defined.', IncompleteFieldDefinitionWarning, ) E pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifespan' has an incomplete definition: its annotation contains an unresolved forward reference, so settings sources may fail to correctly resolve its value. Call `model_rebuild()` on the model where the field is defined, once all the referenced types are defined. /usr/lib/python3/dist-packages/pydantic_settings/sources/utils.py:47: IncompleteFieldDefinitionWarning ________________ TestServerResources.test_file_resource_binary _________________ [gw0] linux -- Python 3.14.7 /usr/bin/python3.14 self = tmp_path = PosixPath('/tmp/pytest-of-sbuild/pytest-0/popen-gw0/test_file_resource_binary0') @pytest.mark.anyio async def test_file_resource_binary(self, tmp_path: Path): > mcp = FastMCP() ^^^^^^^^^ tests/server/fastmcp/test_server.py:782: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ mcp/server/fastmcp/server.py:185: in __init__ self.settings = Settings( /usr/lib/python3/dist-packages/pydantic_settings/main.py:229: in __init__ else __pydantic_self__.__class__._settings_init_sources( /usr/lib/python3/dist-packages/pydantic_settings/main.py:397: in _settings_init_sources default_settings = DefaultSettingsSource( /usr/lib/python3/dist-packages/pydantic_settings/sources/base.py:287: in __init__ _warn_if_field_info_incomplete(field_info, field_name, self._init_state) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ field_info = FieldInfo(annotation=ForwardRef('Callable[[FastMCP[LifespanResultT]], AbstractAsyncContextManager[LifespanResultT]] | None', is_class=True), required=True) field_name = 'lifespan', init_state = {'field_info_ids': {140456318704880}} def _warn_if_field_info_incomplete(field_info: FieldInfo, field_name: str, init_state: InitState) -> None:  """Warn if the field is incomplete, i.e. its annotation contains unresolved forward references.   An incomplete `FieldInfo` instance is unsafe to inspect — any of its attributes (annotation,  aliases, metadata, default) may rely on the unresolved annotation, so settings sources may  silently fail to resolve the field's value. Each instance is only warned about once per  `init_state`, so that a field accessed by multiple sources during a single settings  resolution doesn't emit duplicate warnings.  """ if getattr(field_info, '_complete', True): return warned_ids = init_state.setdefault('field_info_ids', set()) if id(field_info) in warned_ids: return warned_ids.add(id(field_info)) > warnings.warn( f'Field {field_name!r} has an incomplete definition: its annotation contains an unresolved ' 'forward reference, so settings sources may fail to correctly resolve its value. ' 'Call `model_rebuild()` on the model where the field is defined, once all the referenced ' 'types are defined.', IncompleteFieldDefinitionWarning, ) E pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifespan' has an incomplete definition: its annotation contains an unresolved forward reference, so settings sources may fail to correctly resolve its value. Call `model_rebuild()` on the model where the field is defined, once all the referenced types are defined. /usr/lib/python3/dist-packages/pydantic_settings/sources/utils.py:47: IncompleteFieldDefinitionWarning __________________ TestServerResources.test_function_resource __________________ [gw0] linux -- Python 3.14.7 /usr/bin/python3.14 self = @pytest.mark.anyio async def test_function_resource(self): > mcp = FastMCP() ^^^^^^^^^ tests/server/fastmcp/test_server.py:803: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ mcp/server/fastmcp/server.py:185: in __init__ self.settings = Settings( /usr/lib/python3/dist-packages/pydantic_settings/main.py:229: in __init__ else __pydantic_self__.__class__._settings_init_sources( /usr/lib/python3/dist-packages/pydantic_settings/main.py:397: in _settings_init_sources default_settings = DefaultSettingsSource( /usr/lib/python3/dist-packages/pydantic_settings/sources/base.py:287: in __init__ _warn_if_field_info_incomplete(field_info, field_name, self._init_state) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ field_info = FieldInfo(annotation=ForwardRef('Callable[[FastMCP[LifespanResultT]], AbstractAsyncContextManager[LifespanResultT]] | None', is_class=True), required=True) field_name = 'lifespan', init_state = {'field_info_ids': {140456318704880}} def _warn_if_field_info_incomplete(field_info: FieldInfo, field_name: str, init_state: InitState) -> None:  """Warn if the field is incomplete, i.e. its annotation contains unresolved forward references.   An incomplete `FieldInfo` instance is unsafe to inspect — any of its attributes (annotation,  aliases, metadata, default) may rely on the unresolved annotation, so settings sources may  silently fail to resolve the field's value. Each instance is only warned about once per  `init_state`, so that a field accessed by multiple sources during a single settings  resolution doesn't emit duplicate warnings.  """ if getattr(field_info, '_complete', True): return warned_ids = init_state.setdefault('field_info_ids', set()) if id(field_info) in warned_ids: return warned_ids.add(id(field_info)) > warnings.warn( f'Field {field_name!r} has an incomplete definition: its annotation contains an unresolved ' 'forward reference, so settings sources may fail to correctly resolve its value. ' 'Call `model_rebuild()` on the model where the field is defined, once all the referenced ' 'types are defined.', IncompleteFieldDefinitionWarning, ) E pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifespan' has an incomplete definition: its annotation contains an unresolved forward reference, so settings sources may fail to correctly resolve its value. Call `model_rebuild()` on the model where the field is defined, once all the referenced types are defined. /usr/lib/python3/dist-packages/pydantic_settings/sources/utils.py:47: IncompleteFieldDefinitionWarning ____________ TestServerResourceTemplates.test_resource_with_params _____________ [gw0] linux -- Python 3.14.7 /usr/bin/python3.14 self = @pytest.mark.anyio async def test_resource_with_params(self):  """Test that a resource with function parameters raises an error if the URI  parameters don't match""" > mcp = FastMCP() ^^^^^^^^^ tests/server/fastmcp/test_server.py:825: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ mcp/server/fastmcp/server.py:185: in __init__ self.settings = Settings( /usr/lib/python3/dist-packages/pydantic_settings/main.py:229: in __init__ else __pydantic_self__.__class__._settings_init_sources( /usr/lib/python3/dist-packages/pydantic_settings/main.py:397: in _settings_init_sources default_settings = DefaultSettingsSource( /usr/lib/python3/dist-packages/pydantic_settings/sources/base.py:287: in __init__ _warn_if_field_info_incomplete(field_info, field_name, self._init_state) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ field_info = FieldInfo(annotation=ForwardRef('Callable[[FastMCP[LifespanResultT]], AbstractAsyncContextManager[LifespanResultT]] | None', is_class=True), required=True) field_name = 'lifespan', init_state = {'field_info_ids': {140456318704880}} def _warn_if_field_info_incomplete(field_info: FieldInfo, field_name: str, init_state: InitState) -> None:  """Warn if the field is incomplete, i.e. its annotation contains unresolved forward references.   An incomplete `FieldInfo` instance is unsafe to inspect — any of its attributes (annotation,  aliases, metadata, default) may rely on the unresolved annotation, so settings sources may  silently fail to resolve the field's value. Each instance is only warned about once per  `init_state`, so that a field accessed by multiple sources during a single settings  resolution doesn't emit duplicate warnings.  """ if getattr(field_info, '_complete', True): return warned_ids = init_state.setdefault('field_info_ids', set()) if id(field_info) in warned_ids: return warned_ids.add(id(field_info)) > warnings.warn( f'Field {field_name!r} has an incomplete definition: its annotation contains an unresolved ' 'forward reference, so settings sources may fail to correctly resolve its value. ' 'Call `model_rebuild()` on the model where the field is defined, once all the referenced ' 'types are defined.', IncompleteFieldDefinitionWarning, ) E pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifespan' has an incomplete definition: its annotation contains an unresolved forward reference, so settings sources may fail to correctly resolve its value. Call `model_rebuild()` on the model where the field is defined, once all the referenced types are defined. /usr/lib/python3/dist-packages/pydantic_settings/sources/utils.py:47: IncompleteFieldDefinitionWarning __________ TestServerResourceTemplates.test_resource_with_uri_params ___________ [gw0] linux -- Python 3.14.7 /usr/bin/python3.14 self = @pytest.mark.anyio async def test_resource_with_uri_params(self):  """Test that a resource with URI parameters is automatically a template""" > mcp = FastMCP() ^^^^^^^^^ tests/server/fastmcp/test_server.py:836: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ mcp/server/fastmcp/server.py:185: in __init__ self.settings = Settings( /usr/lib/python3/dist-packages/pydantic_settings/main.py:229: in __init__ else __pydantic_self__.__class__._settings_init_sources( /usr/lib/python3/dist-packages/pydantic_settings/main.py:397: in _settings_init_sources default_settings = DefaultSettingsSource( /usr/lib/python3/dist-packages/pydantic_settings/sources/base.py:287: in __init__ _warn_if_field_info_incomplete(field_info, field_name, self._init_state) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ field_info = FieldInfo(annotation=ForwardRef('Callable[[FastMCP[LifespanResultT]], AbstractAsyncContextManager[LifespanResultT]] | None', is_class=True), required=True) field_name = 'lifespan', init_state = {'field_info_ids': {140456318704880}} def _warn_if_field_info_incomplete(field_info: FieldInfo, field_name: str, init_state: InitState) -> None:  """Warn if the field is incomplete, i.e. its annotation contains unresolved forward references.   An incomplete `FieldInfo` instance is unsafe to inspect — any of its attributes (annotation,  aliases, metadata, default) may rely on the unresolved annotation, so settings sources may  silently fail to resolve the field's value. Each instance is only warned about once per  `init_state`, so that a field accessed by multiple sources during a single settings  resolution doesn't emit duplicate warnings.  """ if getattr(field_info, '_complete', True): return warned_ids = init_state.setdefault('field_info_ids', set()) if id(field_info) in warned_ids: return warned_ids.add(id(field_info)) > warnings.warn( f'Field {field_name!r} has an incomplete definition: its annotation contains an unresolved ' 'forward reference, so settings sources may fail to correctly resolve its value. ' 'Call `model_rebuild()` on the model where the field is defined, once all the referenced ' 'types are defined.', IncompleteFieldDefinitionWarning, ) E pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifespan' has an incomplete definition: its annotation contains an unresolved forward reference, so settings sources may fail to correctly resolve its value. Call `model_rebuild()` on the model where the field is defined, once all the referenced types are defined. /usr/lib/python3/dist-packages/pydantic_settings/sources/utils.py:47: IncompleteFieldDefinitionWarning ________ TestServerResourceTemplates.test_resource_with_untyped_params _________ [gw0] linux -- Python 3.14.7 /usr/bin/python3.14 self = @pytest.mark.anyio async def test_resource_with_untyped_params(self):  """Test that a resource with untyped parameters raises an error""" > mcp = FastMCP() ^^^^^^^^^ tests/server/fastmcp/test_server.py:847: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ mcp/server/fastmcp/server.py:185: in __init__ self.settings = Settings( /usr/lib/python3/dist-packages/pydantic_settings/main.py:229: in __init__ else __pydantic_self__.__class__._settings_init_sources( /usr/lib/python3/dist-packages/pydantic_settings/main.py:397: in _settings_init_sources default_settings = DefaultSettingsSource( /usr/lib/python3/dist-packages/pydantic_settings/sources/base.py:287: in __init__ _warn_if_field_info_incomplete(field_info, field_name, self._init_state) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ field_info = FieldInfo(annotation=ForwardRef('Callable[[FastMCP[LifespanResultT]], AbstractAsyncContextManager[LifespanResultT]] | None', is_class=True), required=True) field_name = 'lifespan', init_state = {'field_info_ids': {140456318704880}} def _warn_if_field_info_incomplete(field_info: FieldInfo, field_name: str, init_state: InitState) -> None:  """Warn if the field is incomplete, i.e. its annotation contains unresolved forward references.   An incomplete `FieldInfo` instance is unsafe to inspect — any of its attributes (annotation,  aliases, metadata, default) may rely on the unresolved annotation, so settings sources may  silently fail to resolve the field's value. Each instance is only warned about once per  `init_state`, so that a field accessed by multiple sources during a single settings  resolution doesn't emit duplicate warnings.  """ if getattr(field_info, '_complete', True): return warned_ids = init_state.setdefault('field_info_ids', set()) if id(field_info) in warned_ids: return warned_ids.add(id(field_info)) > warnings.warn( f'Field {field_name!r} has an incomplete definition: its annotation contains an unresolved ' 'forward reference, so settings sources may fail to correctly resolve its value. ' 'Call `model_rebuild()` on the model where the field is defined, once all the referenced ' 'types are defined.', IncompleteFieldDefinitionWarning, ) E pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifespan' has an incomplete definition: its annotation contains an unresolved forward reference, so settings sources may fail to correctly resolve its value. Call `model_rebuild()` on the model where the field is defined, once all the referenced types are defined. /usr/lib/python3/dist-packages/pydantic_settings/sources/utils.py:47: IncompleteFieldDefinitionWarning __________ TestServerResourceTemplates.test_resource_matching_params ___________ [gw0] linux -- Python 3.14.7 /usr/bin/python3.14 self = @pytest.mark.anyio async def test_resource_matching_params(self):  """Test that a resource with matching URI and function parameters works""" > mcp = FastMCP() ^^^^^^^^^ tests/server/fastmcp/test_server.py:856: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ mcp/server/fastmcp/server.py:185: in __init__ self.settings = Settings( /usr/lib/python3/dist-packages/pydantic_settings/main.py:229: in __init__ else __pydantic_self__.__class__._settings_init_sources( /usr/lib/python3/dist-packages/pydantic_settings/main.py:397: in _settings_init_sources default_settings = DefaultSettingsSource( /usr/lib/python3/dist-packages/pydantic_settings/sources/base.py:287: in __init__ _warn_if_field_info_incomplete(field_info, field_name, self._init_state) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ field_info = FieldInfo(annotation=ForwardRef('Callable[[FastMCP[LifespanResultT]], AbstractAsyncContextManager[LifespanResultT]] | None', is_class=True), required=True) field_name = 'lifespan', init_state = {'field_info_ids': {140456318704880}} def _warn_if_field_info_incomplete(field_info: FieldInfo, field_name: str, init_state: InitState) -> None:  """Warn if the field is incomplete, i.e. its annotation contains unresolved forward references.   An incomplete `FieldInfo` instance is unsafe to inspect — any of its attributes (annotation,  aliases, metadata, default) may rely on the unresolved annotation, so settings sources may  silently fail to resolve the field's value. Each instance is only warned about once per  `init_state`, so that a field accessed by multiple sources during a single settings  resolution doesn't emit duplicate warnings.  """ if getattr(field_info, '_complete', True): return warned_ids = init_state.setdefault('field_info_ids', set()) if id(field_info) in warned_ids: return warned_ids.add(id(field_info)) > warnings.warn( f'Field {field_name!r} has an incomplete definition: its annotation contains an unresolved ' 'forward reference, so settings sources may fail to correctly resolve its value. ' 'Call `model_rebuild()` on the model where the field is defined, once all the referenced ' 'types are defined.', IncompleteFieldDefinitionWarning, ) E pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifespan' has an incomplete definition: its annotation contains an unresolved forward reference, so settings sources may fail to correctly resolve its value. Call `model_rebuild()` on the model where the field is defined, once all the referenced types are defined. /usr/lib/python3/dist-packages/pydantic_settings/sources/utils.py:47: IncompleteFieldDefinitionWarning _________ TestServerResourceTemplates.test_resource_mismatched_params __________ [gw0] linux -- Python 3.14.7 /usr/bin/python3.14 self = @pytest.mark.anyio async def test_resource_mismatched_params(self):  """Test that mismatched parameters raise an error""" > mcp = FastMCP() ^^^^^^^^^ tests/server/fastmcp/test_server.py:870: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ mcp/server/fastmcp/server.py:185: in __init__ self.settings = Settings( /usr/lib/python3/dist-packages/pydantic_settings/main.py:229: in __init__ else __pydantic_self__.__class__._settings_init_sources( /usr/lib/python3/dist-packages/pydantic_settings/main.py:397: in _settings_init_sources default_settings = DefaultSettingsSource( /usr/lib/python3/dist-packages/pydantic_settings/sources/base.py:287: in __init__ _warn_if_field_info_incomplete(field_info, field_name, self._init_state) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ field_info = FieldInfo(annotation=ForwardRef('Callable[[FastMCP[LifespanResultT]], AbstractAsyncContextManager[LifespanResultT]] | None', is_class=True), required=True) field_name = 'lifespan', init_state = {'field_info_ids': {140456318704880}} def _warn_if_field_info_incomplete(field_info: FieldInfo, field_name: str, init_state: InitState) -> None:  """Warn if the field is incomplete, i.e. its annotation contains unresolved forward references.   An incomplete `FieldInfo` instance is unsafe to inspect — any of its attributes (annotation,  aliases, metadata, default) may rely on the unresolved annotation, so settings sources may  silently fail to resolve the field's value. Each instance is only warned about once per  `init_state`, so that a field accessed by multiple sources during a single settings  resolution doesn't emit duplicate warnings.  """ if getattr(field_info, '_complete', True): return warned_ids = init_state.setdefault('field_info_ids', set()) if id(field_info) in warned_ids: return warned_ids.add(id(field_info)) > warnings.warn( f'Field {field_name!r} has an incomplete definition: its annotation contains an unresolved ' 'forward reference, so settings sources may fail to correctly resolve its value. ' 'Call `model_rebuild()` on the model where the field is defined, once all the referenced ' 'types are defined.', IncompleteFieldDefinitionWarning, ) E pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifespan' has an incomplete definition: its annotation contains an unresolved forward reference, so settings sources may fail to correctly resolve its value. Call `model_rebuild()` on the model where the field is defined, once all the referenced types are defined. /usr/lib/python3/dist-packages/pydantic_settings/sources/utils.py:47: IncompleteFieldDefinitionWarning __________ TestServerResourceTemplates.test_resource_multiple_params ___________ [gw0] linux -- Python 3.14.7 /usr/bin/python3.14 self = @pytest.mark.anyio async def test_resource_multiple_params(self):  """Test that multiple parameters work correctly""" > mcp = FastMCP() ^^^^^^^^^ tests/server/fastmcp/test_server.py:881: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ mcp/server/fastmcp/server.py:185: in __init__ self.settings = Settings( /usr/lib/python3/dist-packages/pydantic_settings/main.py:229: in __init__ else __pydantic_self__.__class__._settings_init_sources( /usr/lib/python3/dist-packages/pydantic_settings/main.py:397: in _settings_init_sources default_settings = DefaultSettingsSource( /usr/lib/python3/dist-packages/pydantic_settings/sources/base.py:287: in __init__ _warn_if_field_info_incomplete(field_info, field_name, self._init_state) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ field_info = FieldInfo(annotation=ForwardRef('Callable[[FastMCP[LifespanResultT]], AbstractAsyncContextManager[LifespanResultT]] | None', is_class=True), required=True) field_name = 'lifespan', init_state = {'field_info_ids': {140456318704880}} def _warn_if_field_info_incomplete(field_info: FieldInfo, field_name: str, init_state: InitState) -> None:  """Warn if the field is incomplete, i.e. its annotation contains unresolved forward references.   An incomplete `FieldInfo` instance is unsafe to inspect — any of its attributes (annotation,  aliases, metadata, default) may rely on the unresolved annotation, so settings sources may  silently fail to resolve the field's value. Each instance is only warned about once per  `init_state`, so that a field accessed by multiple sources during a single settings  resolution doesn't emit duplicate warnings.  """ if getattr(field_info, '_complete', True): return warned_ids = init_state.setdefault('field_info_ids', set()) if id(field_info) in warned_ids: return warned_ids.add(id(field_info)) > warnings.warn( f'Field {field_name!r} has an incomplete definition: its annotation contains an unresolved ' 'forward reference, so settings sources may fail to correctly resolve its value. ' 'Call `model_rebuild()` on the model where the field is defined, once all the referenced ' 'types are defined.', IncompleteFieldDefinitionWarning, ) E pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifespan' has an incomplete definition: its annotation contains an unresolved forward reference, so settings sources may fail to correctly resolve its value. Call `model_rebuild()` on the model where the field is defined, once all the referenced types are defined. /usr/lib/python3/dist-packages/pydantic_settings/sources/utils.py:47: IncompleteFieldDefinitionWarning _____ TestServerResourceTemplates.test_resource_multiple_mismatched_params _____ [gw0] linux -- Python 3.14.7 /usr/bin/python3.14 self = @pytest.mark.anyio async def test_resource_multiple_mismatched_params(self):  """Test that mismatched parameters raise an error""" > mcp = FastMCP() ^^^^^^^^^ tests/server/fastmcp/test_server.py:895: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ mcp/server/fastmcp/server.py:185: in __init__ self.settings = Settings( /usr/lib/python3/dist-packages/pydantic_settings/main.py:229: in __init__ else __pydantic_self__.__class__._settings_init_sources( /usr/lib/python3/dist-packages/pydantic_settings/main.py:397: in _settings_init_sources default_settings = DefaultSettingsSource( /usr/lib/python3/dist-packages/pydantic_settings/sources/base.py:287: in __init__ _warn_if_field_info_incomplete(field_info, field_name, self._init_state) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ field_info = FieldInfo(annotation=ForwardRef('Callable[[FastMCP[LifespanResultT]], AbstractAsyncContextManager[LifespanResultT]] | None', is_class=True), required=True) field_name = 'lifespan', init_state = {'field_info_ids': {140456318704880}} def _warn_if_field_info_incomplete(field_info: FieldInfo, field_name: str, init_state: InitState) -> None:  """Warn if the field is incomplete, i.e. its annotation contains unresolved forward references.   An incomplete `FieldInfo` instance is unsafe to inspect — any of its attributes (annotation,  aliases, metadata, default) may rely on the unresolved annotation, so settings sources may  silently fail to resolve the field's value. Each instance is only warned about once per  `init_state`, so that a field accessed by multiple sources during a single settings  resolution doesn't emit duplicate warnings.  """ if getattr(field_info, '_complete', True): return warned_ids = init_state.setdefault('field_info_ids', set()) if id(field_info) in warned_ids: return warned_ids.add(id(field_info)) > warnings.warn( f'Field {field_name!r} has an incomplete definition: its annotation contains an unresolved ' 'forward reference, so settings sources may fail to correctly resolve its value. ' 'Call `model_rebuild()` on the model where the field is defined, once all the referenced ' 'types are defined.', IncompleteFieldDefinitionWarning, ) E pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifespan' has an incomplete definition: its annotation contains an unresolved forward reference, so settings sources may fail to correctly resolve its value. Call `model_rebuild()` on the model where the field is defined, once all the referenced types are defined. /usr/lib/python3/dist-packages/pydantic_settings/sources/utils.py:47: IncompleteFieldDefinitionWarning _______ TestServerResourceTemplates.test_template_to_resource_conversion _______ [gw0] linux -- Python 3.14.7 /usr/bin/python3.14 self = @pytest.mark.anyio async def test_template_to_resource_conversion(self):  """Test that templates are properly converted to resources when accessed""" > mcp = FastMCP() ^^^^^^^^^ tests/server/fastmcp/test_server.py:918: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ mcp/server/fastmcp/server.py:185: in __init__ self.settings = Settings( /usr/lib/python3/dist-packages/pydantic_settings/main.py:229: in __init__ else __pydantic_self__.__class__._settings_init_sources( /usr/lib/python3/dist-packages/pydantic_settings/main.py:397: in _settings_init_sources default_settings = DefaultSettingsSource( /usr/lib/python3/dist-packages/pydantic_settings/sources/base.py:287: in __init__ _warn_if_field_info_incomplete(field_info, field_name, self._init_state) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ field_info = FieldInfo(annotation=ForwardRef('Callable[[FastMCP[LifespanResultT]], AbstractAsyncContextManager[LifespanResultT]] | None', is_class=True), required=True) field_name = 'lifespan', init_state = {'field_info_ids': {140456318704880}} def _warn_if_field_info_incomplete(field_info: FieldInfo, field_name: str, init_state: InitState) -> None:  """Warn if the field is incomplete, i.e. its annotation contains unresolved forward references.   An incomplete `FieldInfo` instance is unsafe to inspect — any of its attributes (annotation,  aliases, metadata, default) may rely on the unresolved annotation, so settings sources may  silently fail to resolve the field's value. Each instance is only warned about once per  `init_state`, so that a field accessed by multiple sources during a single settings  resolution doesn't emit duplicate warnings.  """ if getattr(field_info, '_complete', True): return warned_ids = init_state.setdefault('field_info_ids', set()) if id(field_info) in warned_ids: return warned_ids.add(id(field_info)) > warnings.warn( f'Field {field_name!r} has an incomplete definition: its annotation contains an unresolved ' 'forward reference, so settings sources may fail to correctly resolve its value. ' 'Call `model_rebuild()` on the model where the field is defined, once all the referenced ' 'types are defined.', IncompleteFieldDefinitionWarning, ) E pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifespan' has an incomplete definition: its annotation contains an unresolved forward reference, so settings sources may fail to correctly resolve its value. Call `model_rebuild()` on the model where the field is defined, once all the referenced types are defined. /usr/lib/python3/dist-packages/pydantic_settings/sources/utils.py:47: IncompleteFieldDefinitionWarning ____ TestServerResourceTemplates.test_resource_template_includes_mime_type _____ [gw0] linux -- Python 3.14.7 /usr/bin/python3.14 self = @pytest.mark.anyio async def test_resource_template_includes_mime_type(self):  """Test that list resource templates includes the correct mimeType.""" > mcp = FastMCP() ^^^^^^^^^ tests/server/fastmcp/test_server.py:937: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ mcp/server/fastmcp/server.py:185: in __init__ self.settings = Settings( /usr/lib/python3/dist-packages/pydantic_settings/main.py:229: in __init__ else __pydantic_self__.__class__._settings_init_sources( /usr/lib/python3/dist-packages/pydantic_settings/main.py:397: in _settings_init_sources default_settings = DefaultSettingsSource( /usr/lib/python3/dist-packages/pydantic_settings/sources/base.py:287: in __init__ _warn_if_field_info_incomplete(field_info, field_name, self._init_state) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ field_info = FieldInfo(annotation=ForwardRef('Callable[[FastMCP[LifespanResultT]], AbstractAsyncContextManager[LifespanResultT]] | None', is_class=True), required=True) field_name = 'lifespan', init_state = {'field_info_ids': {140456318704880}} def _warn_if_field_info_incomplete(field_info: FieldInfo, field_name: str, init_state: InitState) -> None:  """Warn if the field is incomplete, i.e. its annotation contains unresolved forward references.   An incomplete `FieldInfo` instance is unsafe to inspect — any of its attributes (annotation,  aliases, metadata, default) may rely on the unresolved annotation, so settings sources may  silently fail to resolve the field's value. Each instance is only warned about once per  `init_state`, so that a field accessed by multiple sources during a single settings  resolution doesn't emit duplicate warnings.  """ if getattr(field_info, '_complete', True): return warned_ids = init_state.setdefault('field_info_ids', set()) if id(field_info) in warned_ids: return warned_ids.add(id(field_info)) > warnings.warn( f'Field {field_name!r} has an incomplete definition: its annotation contains an unresolved ' 'forward reference, so settings sources may fail to correctly resolve its value. ' 'Call `model_rebuild()` on the model where the field is defined, once all the referenced ' 'types are defined.', IncompleteFieldDefinitionWarning, ) E pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifespan' has an incomplete definition: its annotation contains an unresolved forward reference, so settings sources may fail to correctly resolve its value. Call `model_rebuild()` on the model where the field is defined, once all the referenced types are defined. /usr/lib/python3/dist-packages/pydantic_settings/sources/utils.py:47: IncompleteFieldDefinitionWarning _______ TestServerResourceMetadata.test_resource_decorator_with_metadata _______ [gw0] linux -- Python 3.14.7 /usr/bin/python3.14 self = @pytest.mark.anyio async def test_resource_decorator_with_metadata(self):  """Test that @resource decorator accepts and passes meta parameter.""" # Tests static resource flow: decorator -> FunctionResource -> list_resources (server.py:544,635,361) > mcp = FastMCP() ^^^^^^^^^ tests/server/fastmcp/test_server.py:967: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ mcp/server/fastmcp/server.py:185: in __init__ self.settings = Settings( /usr/lib/python3/dist-packages/pydantic_settings/main.py:229: in __init__ else __pydantic_self__.__class__._settings_init_sources( /usr/lib/python3/dist-packages/pydantic_settings/main.py:397: in _settings_init_sources default_settings = DefaultSettingsSource( /usr/lib/python3/dist-packages/pydantic_settings/sources/base.py:287: in __init__ _warn_if_field_info_incomplete(field_info, field_name, self._init_state) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ field_info = FieldInfo(annotation=ForwardRef('Callable[[FastMCP[LifespanResultT]], AbstractAsyncContextManager[LifespanResultT]] | None', is_class=True), required=True) field_name = 'lifespan', init_state = {'field_info_ids': {140456318704880}} def _warn_if_field_info_incomplete(field_info: FieldInfo, field_name: str, init_state: InitState) -> None:  """Warn if the field is incomplete, i.e. its annotation contains unresolved forward references.   An incomplete `FieldInfo` instance is unsafe to inspect — any of its attributes (annotation,  aliases, metadata, default) may rely on the unresolved annotation, so settings sources may  silently fail to resolve the field's value. Each instance is only warned about once per  `init_state`, so that a field accessed by multiple sources during a single settings  resolution doesn't emit duplicate warnings.  """ if getattr(field_info, '_complete', True): return warned_ids = init_state.setdefault('field_info_ids', set()) if id(field_info) in warned_ids: return warned_ids.add(id(field_info)) > warnings.warn( f'Field {field_name!r} has an incomplete definition: its annotation contains an unresolved ' 'forward reference, so settings sources may fail to correctly resolve its value. ' 'Call `model_rebuild()` on the model where the field is defined, once all the referenced ' 'types are defined.', IncompleteFieldDefinitionWarning, ) E pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifespan' has an incomplete definition: its annotation contains an unresolved forward reference, so settings sources may fail to correctly resolve its value. Call `model_rebuild()` on the model where the field is defined, once all the referenced types are defined. /usr/lib/python3/dist-packages/pydantic_settings/sources/utils.py:47: IncompleteFieldDefinitionWarning __ TestServerResourceMetadata.test_resource_template_decorator_with_metadata ___ [gw0] linux -- Python 3.14.7 /usr/bin/python3.14 self = @pytest.mark.anyio async def test_resource_template_decorator_with_metadata(self):  """Test that @resource decorator passes meta to templates.""" # Tests template resource flow: decorator -> add_template() -> list_resource_templates (server.py:544,622,377) > mcp = FastMCP() ^^^^^^^^^ tests/server/fastmcp/test_server.py:986: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ mcp/server/fastmcp/server.py:185: in __init__ self.settings = Settings( /usr/lib/python3/dist-packages/pydantic_settings/main.py:229: in __init__ else __pydantic_self__.__class__._settings_init_sources( /usr/lib/python3/dist-packages/pydantic_settings/main.py:397: in _settings_init_sources default_settings = DefaultSettingsSource( /usr/lib/python3/dist-packages/pydantic_settings/sources/base.py:287: in __init__ _warn_if_field_info_incomplete(field_info, field_name, self._init_state) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ field_info = FieldInfo(annotation=ForwardRef('Callable[[FastMCP[LifespanResultT]], AbstractAsyncContextManager[LifespanResultT]] | None', is_class=True), required=True) field_name = 'lifespan', init_state = {'field_info_ids': {140456318704880}} def _warn_if_field_info_incomplete(field_info: FieldInfo, field_name: str, init_state: InitState) -> None:  """Warn if the field is incomplete, i.e. its annotation contains unresolved forward references.   An incomplete `FieldInfo` instance is unsafe to inspect — any of its attributes (annotation,  aliases, metadata, default) may rely on the unresolved annotation, so settings sources may  silently fail to resolve the field's value. Each instance is only warned about once per  `init_state`, so that a field accessed by multiple sources during a single settings  resolution doesn't emit duplicate warnings.  """ if getattr(field_info, '_complete', True): return warned_ids = init_state.setdefault('field_info_ids', set()) if id(field_info) in warned_ids: return warned_ids.add(id(field_info)) > warnings.warn( f'Field {field_name!r} has an incomplete definition: its annotation contains an unresolved ' 'forward reference, so settings sources may fail to correctly resolve its value. ' 'Call `model_rebuild()` on the model where the field is defined, once all the referenced ' 'types are defined.', IncompleteFieldDefinitionWarning, ) E pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifespan' has an incomplete definition: its annotation contains an unresolved forward reference, so settings sources may fail to correctly resolve its value. Call `model_rebuild()` on the model where the field is defined, once all the referenced types are defined. /usr/lib/python3/dist-packages/pydantic_settings/sources/utils.py:47: IncompleteFieldDefinitionWarning __________ TestServerResourceMetadata.test_read_resource_returns_meta __________ [gw0] linux -- Python 3.14.7 /usr/bin/python3.14 self = @pytest.mark.anyio async def test_read_resource_returns_meta(self):  """Test that read_resource includes meta in response.""" # Tests end-to-end: Resource.meta -> ReadResourceContents.meta -> protocol _meta (lowlevel/server.py:341,371) > mcp = FastMCP() ^^^^^^^^^ tests/server/fastmcp/test_server.py:1004: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ mcp/server/fastmcp/server.py:185: in __init__ self.settings = Settings( /usr/lib/python3/dist-packages/pydantic_settings/main.py:229: in __init__ else __pydantic_self__.__class__._settings_init_sources( /usr/lib/python3/dist-packages/pydantic_settings/main.py:397: in _settings_init_sources default_settings = DefaultSettingsSource( /usr/lib/python3/dist-packages/pydantic_settings/sources/base.py:287: in __init__ _warn_if_field_info_incomplete(field_info, field_name, self._init_state) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ field_info = FieldInfo(annotation=ForwardRef('Callable[[FastMCP[LifespanResultT]], AbstractAsyncContextManager[LifespanResultT]] | None', is_class=True), required=True) field_name = 'lifespan', init_state = {'field_info_ids': {140456318704880}} def _warn_if_field_info_incomplete(field_info: FieldInfo, field_name: str, init_state: InitState) -> None:  """Warn if the field is incomplete, i.e. its annotation contains unresolved forward references.   An incomplete `FieldInfo` instance is unsafe to inspect — any of its attributes (annotation,  aliases, metadata, default) may rely on the unresolved annotation, so settings sources may  silently fail to resolve the field's value. Each instance is only warned about once per  `init_state`, so that a field accessed by multiple sources during a single settings  resolution doesn't emit duplicate warnings.  """ if getattr(field_info, '_complete', True): return warned_ids = init_state.setdefault('field_info_ids', set()) if id(field_info) in warned_ids: return warned_ids.add(id(field_info)) > warnings.warn( f'Field {field_name!r} has an incomplete definition: its annotation contains an unresolved ' 'forward reference, so settings sources may fail to correctly resolve its value. ' 'Call `model_rebuild()` on the model where the field is defined, once all the referenced ' 'types are defined.', IncompleteFieldDefinitionWarning, ) E pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifespan' has an incomplete definition: its annotation contains an unresolved forward reference, so settings sources may fail to correctly resolve its value. Call `model_rebuild()` on the model where the field is defined, once all the referenced types are defined. /usr/lib/python3/dist-packages/pydantic_settings/sources/utils.py:47: IncompleteFieldDefinitionWarning _________________ TestContextInjection.test_context_detection __________________ [gw0] linux -- Python 3.14.7 /usr/bin/python3.14 self = @pytest.mark.anyio async def test_context_detection(self):  """Test that context parameters are properly detected.""" > mcp = FastMCP() ^^^^^^^^^ tests/server/fastmcp/test_server.py:1030: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ mcp/server/fastmcp/server.py:185: in __init__ self.settings = Settings( /usr/lib/python3/dist-packages/pydantic_settings/main.py:229: in __init__ else __pydantic_self__.__class__._settings_init_sources( /usr/lib/python3/dist-packages/pydantic_settings/main.py:397: in _settings_init_sources default_settings = DefaultSettingsSource( /usr/lib/python3/dist-packages/pydantic_settings/sources/base.py:287: in __init__ _warn_if_field_info_incomplete(field_info, field_name, self._init_state) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ field_info = FieldInfo(annotation=ForwardRef('Callable[[FastMCP[LifespanResultT]], AbstractAsyncContextManager[LifespanResultT]] | None', is_class=True), required=True) field_name = 'lifespan', init_state = {'field_info_ids': {140456318704880}} def _warn_if_field_info_incomplete(field_info: FieldInfo, field_name: str, init_state: InitState) -> None:  """Warn if the field is incomplete, i.e. its annotation contains unresolved forward references.   An incomplete `FieldInfo` instance is unsafe to inspect — any of its attributes (annotation,  aliases, metadata, default) may rely on the unresolved annotation, so settings sources may  silently fail to resolve the field's value. Each instance is only warned about once per  `init_state`, so that a field accessed by multiple sources during a single settings  resolution doesn't emit duplicate warnings.  """ if getattr(field_info, '_complete', True): return warned_ids = init_state.setdefault('field_info_ids', set()) if id(field_info) in warned_ids: return warned_ids.add(id(field_info)) > warnings.warn( f'Field {field_name!r} has an incomplete definition: its annotation contains an unresolved ' 'forward reference, so settings sources may fail to correctly resolve its value. ' 'Call `model_rebuild()` on the model where the field is defined, once all the referenced ' 'types are defined.', IncompleteFieldDefinitionWarning, ) E pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifespan' has an incomplete definition: its annotation contains an unresolved forward reference, so settings sources may fail to correctly resolve its value. Call `model_rebuild()` on the model where the field is defined, once all the referenced types are defined. /usr/lib/python3/dist-packages/pydantic_settings/sources/utils.py:47: IncompleteFieldDefinitionWarning _________________ TestContextInjection.test_context_injection __________________ [gw0] linux -- Python 3.14.7 /usr/bin/python3.14 self = @pytest.mark.anyio async def test_context_injection(self):  """Test that context is properly injected into tool calls.""" > mcp = FastMCP() ^^^^^^^^^ tests/server/fastmcp/test_server.py:1041: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ mcp/server/fastmcp/server.py:185: in __init__ self.settings = Settings( /usr/lib/python3/dist-packages/pydantic_settings/main.py:229: in __init__ else __pydantic_self__.__class__._settings_init_sources( /usr/lib/python3/dist-packages/pydantic_settings/main.py:397: in _settings_init_sources default_settings = DefaultSettingsSource( /usr/lib/python3/dist-packages/pydantic_settings/sources/base.py:287: in __init__ _warn_if_field_info_incomplete(field_info, field_name, self._init_state) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ field_info = FieldInfo(annotation=ForwardRef('Callable[[FastMCP[LifespanResultT]], AbstractAsyncContextManager[LifespanResultT]] | None', is_class=True), required=True) field_name = 'lifespan', init_state = {'field_info_ids': {140456318704880}} def _warn_if_field_info_incomplete(field_info: FieldInfo, field_name: str, init_state: InitState) -> None:  """Warn if the field is incomplete, i.e. its annotation contains unresolved forward references.   An incomplete `FieldInfo` instance is unsafe to inspect — any of its attributes (annotation,  aliases, metadata, default) may rely on the unresolved annotation, so settings sources may  silently fail to resolve the field's value. Each instance is only warned about once per  `init_state`, so that a field accessed by multiple sources during a single settings  resolution doesn't emit duplicate warnings.  """ if getattr(field_info, '_complete', True): return warned_ids = init_state.setdefault('field_info_ids', set()) if id(field_info) in warned_ids: return warned_ids.add(id(field_info)) > warnings.warn( f'Field {field_name!r} has an incomplete definition: its annotation contains an unresolved ' 'forward reference, so settings sources may fail to correctly resolve its value. ' 'Call `model_rebuild()` on the model where the field is defined, once all the referenced ' 'types are defined.', IncompleteFieldDefinitionWarning, ) E pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifespan' has an incomplete definition: its annotation contains an unresolved forward reference, so settings sources may fail to correctly resolve its value. Call `model_rebuild()` on the model where the field is defined, once all the referenced types are defined. /usr/lib/python3/dist-packages/pydantic_settings/sources/utils.py:47: IncompleteFieldDefinitionWarning ___________________ TestContextInjection.test_async_context ____________________ [gw0] linux -- Python 3.14.7 /usr/bin/python3.14 self = @pytest.mark.anyio async def test_async_context(self):  """Test that context works in async functions.""" > mcp = FastMCP() ^^^^^^^^^ tests/server/fastmcp/test_server.py:1059: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ mcp/server/fastmcp/server.py:185: in __init__ self.settings = Settings( /usr/lib/python3/dist-packages/pydantic_settings/main.py:229: in __init__ else __pydantic_self__.__class__._settings_init_sources( /usr/lib/python3/dist-packages/pydantic_settings/main.py:397: in _settings_init_sources default_settings = DefaultSettingsSource( /usr/lib/python3/dist-packages/pydantic_settings/sources/base.py:287: in __init__ _warn_if_field_info_incomplete(field_info, field_name, self._init_state) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ field_info = FieldInfo(annotation=ForwardRef('Callable[[FastMCP[LifespanResultT]], AbstractAsyncContextManager[LifespanResultT]] | None', is_class=True), required=True) field_name = 'lifespan', init_state = {'field_info_ids': {140456318704880}} def _warn_if_field_info_incomplete(field_info: FieldInfo, field_name: str, init_state: InitState) -> None:  """Warn if the field is incomplete, i.e. its annotation contains unresolved forward references.   An incomplete `FieldInfo` instance is unsafe to inspect — any of its attributes (annotation,  aliases, metadata, default) may rely on the unresolved annotation, so settings sources may  silently fail to resolve the field's value. Each instance is only warned about once per  `init_state`, so that a field accessed by multiple sources during a single settings  resolution doesn't emit duplicate warnings.  """ if getattr(field_info, '_complete', True): return warned_ids = init_state.setdefault('field_info_ids', set()) if id(field_info) in warned_ids: return warned_ids.add(id(field_info)) > warnings.warn( f'Field {field_name!r} has an incomplete definition: its annotation contains an unresolved ' 'forward reference, so settings sources may fail to correctly resolve its value. ' 'Call `model_rebuild()` on the model where the field is defined, once all the referenced ' 'types are defined.', IncompleteFieldDefinitionWarning, ) E pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifespan' has an incomplete definition: its annotation contains an unresolved forward reference, so settings sources may fail to correctly resolve its value. Call `model_rebuild()` on the model where the field is defined, once all the referenced types are defined. /usr/lib/python3/dist-packages/pydantic_settings/sources/utils.py:47: IncompleteFieldDefinitionWarning __________________ TestContextInjection.test_context_logging ___________________ [gw0] linux -- Python 3.14.7 /usr/bin/python3.14 self = @pytest.mark.anyio async def test_context_logging(self):  """Test that context logging methods work.""" > mcp = FastMCP() ^^^^^^^^^ tests/server/fastmcp/test_server.py:1077: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ mcp/server/fastmcp/server.py:185: in __init__ self.settings = Settings( /usr/lib/python3/dist-packages/pydantic_settings/main.py:229: in __init__ else __pydantic_self__.__class__._settings_init_sources( /usr/lib/python3/dist-packages/pydantic_settings/main.py:397: in _settings_init_sources default_settings = DefaultSettingsSource( /usr/lib/python3/dist-packages/pydantic_settings/sources/base.py:287: in __init__ _warn_if_field_info_incomplete(field_info, field_name, self._init_state) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ field_info = FieldInfo(annotation=ForwardRef('Callable[[FastMCP[LifespanResultT]], AbstractAsyncContextManager[LifespanResultT]] | None', is_class=True), required=True) field_name = 'lifespan', init_state = {'field_info_ids': {140456318704880}} def _warn_if_field_info_incomplete(field_info: FieldInfo, field_name: str, init_state: InitState) -> None:  """Warn if the field is incomplete, i.e. its annotation contains unresolved forward references.   An incomplete `FieldInfo` instance is unsafe to inspect — any of its attributes (annotation,  aliases, metadata, default) may rely on the unresolved annotation, so settings sources may  silently fail to resolve the field's value. Each instance is only warned about once per  `init_state`, so that a field accessed by multiple sources during a single settings  resolution doesn't emit duplicate warnings.  """ if getattr(field_info, '_complete', True): return warned_ids = init_state.setdefault('field_info_ids', set()) if id(field_info) in warned_ids: return warned_ids.add(id(field_info)) > warnings.warn( f'Field {field_name!r} has an incomplete definition: its annotation contains an unresolved ' 'forward reference, so settings sources may fail to correctly resolve its value. ' 'Call `model_rebuild()` on the model where the field is defined, once all the referenced ' 'types are defined.', IncompleteFieldDefinitionWarning, ) E pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifespan' has an incomplete definition: its annotation contains an unresolved forward reference, so settings sources may fail to correctly resolve its value. Call `model_rebuild()` on the model where the field is defined, once all the referenced types are defined. /usr/lib/python3/dist-packages/pydantic_settings/sources/utils.py:47: IncompleteFieldDefinitionWarning __________________ TestContextInjection.test_optional_context __________________ [gw0] linux -- Python 3.14.7 /usr/bin/python3.14 self = @pytest.mark.anyio async def test_optional_context(self):  """Test that context is optional.""" > mcp = FastMCP() ^^^^^^^^^ tests/server/fastmcp/test_server.py:1125: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ mcp/server/fastmcp/server.py:185: in __init__ self.settings = Settings( /usr/lib/python3/dist-packages/pydantic_settings/main.py:229: in __init__ else __pydantic_self__.__class__._settings_init_sources( /usr/lib/python3/dist-packages/pydantic_settings/main.py:397: in _settings_init_sources default_settings = DefaultSettingsSource( /usr/lib/python3/dist-packages/pydantic_settings/sources/base.py:287: in __init__ _warn_if_field_info_incomplete(field_info, field_name, self._init_state) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ field_info = FieldInfo(annotation=ForwardRef('Callable[[FastMCP[LifespanResultT]], AbstractAsyncContextManager[LifespanResultT]] | None', is_class=True), required=True) field_name = 'lifespan', init_state = {'field_info_ids': {140456318704880}} def _warn_if_field_info_incomplete(field_info: FieldInfo, field_name: str, init_state: InitState) -> None:  """Warn if the field is incomplete, i.e. its annotation contains unresolved forward references.   An incomplete `FieldInfo` instance is unsafe to inspect — any of its attributes (annotation,  aliases, metadata, default) may rely on the unresolved annotation, so settings sources may  silently fail to resolve the field's value. Each instance is only warned about once per  `init_state`, so that a field accessed by multiple sources during a single settings  resolution doesn't emit duplicate warnings.  """ if getattr(field_info, '_complete', True): return warned_ids = init_state.setdefault('field_info_ids', set()) if id(field_info) in warned_ids: return warned_ids.add(id(field_info)) > warnings.warn( f'Field {field_name!r} has an incomplete definition: its annotation contains an unresolved ' 'forward reference, so settings sources may fail to correctly resolve its value. ' 'Call `model_rebuild()` on the model where the field is defined, once all the referenced ' 'types are defined.', IncompleteFieldDefinitionWarning, ) E pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifespan' has an incomplete definition: its annotation contains an unresolved forward reference, so settings sources may fail to correctly resolve its value. Call `model_rebuild()` on the model where the field is defined, once all the referenced types are defined. /usr/lib/python3/dist-packages/pydantic_settings/sources/utils.py:47: IncompleteFieldDefinitionWarning ______________ TestContextInjection.test_context_resource_access _______________ [gw0] linux -- Python 3.14.7 /usr/bin/python3.14 self = @pytest.mark.anyio async def test_context_resource_access(self):  """Test that context can access resources.""" > mcp = FastMCP() ^^^^^^^^^ tests/server/fastmcp/test_server.py:1141: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ mcp/server/fastmcp/server.py:185: in __init__ self.settings = Settings( /usr/lib/python3/dist-packages/pydantic_settings/main.py:229: in __init__ else __pydantic_self__.__class__._settings_init_sources( /usr/lib/python3/dist-packages/pydantic_settings/main.py:397: in _settings_init_sources default_settings = DefaultSettingsSource( /usr/lib/python3/dist-packages/pydantic_settings/sources/base.py:287: in __init__ _warn_if_field_info_incomplete(field_info, field_name, self._init_state) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ field_info = FieldInfo(annotation=ForwardRef('Callable[[FastMCP[LifespanResultT]], AbstractAsyncContextManager[LifespanResultT]] | None', is_class=True), required=True) field_name = 'lifespan', init_state = {'field_info_ids': {140456318704880}} def _warn_if_field_info_incomplete(field_info: FieldInfo, field_name: str, init_state: InitState) -> None:  """Warn if the field is incomplete, i.e. its annotation contains unresolved forward references.   An incomplete `FieldInfo` instance is unsafe to inspect — any of its attributes (annotation,  aliases, metadata, default) may rely on the unresolved annotation, so settings sources may  silently fail to resolve the field's value. Each instance is only warned about once per  `init_state`, so that a field accessed by multiple sources during a single settings  resolution doesn't emit duplicate warnings.  """ if getattr(field_info, '_complete', True): return warned_ids = init_state.setdefault('field_info_ids', set()) if id(field_info) in warned_ids: return warned_ids.add(id(field_info)) > warnings.warn( f'Field {field_name!r} has an incomplete definition: its annotation contains an unresolved ' 'forward reference, so settings sources may fail to correctly resolve its value. ' 'Call `model_rebuild()` on the model where the field is defined, once all the referenced ' 'types are defined.', IncompleteFieldDefinitionWarning, ) E pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifespan' has an incomplete definition: its annotation contains an unresolved forward reference, so settings sources may fail to correctly resolve its value. Call `model_rebuild()` on the model where the field is defined, once all the referenced types are defined. /usr/lib/python3/dist-packages/pydantic_settings/sources/utils.py:47: IncompleteFieldDefinitionWarning _______________ TestContextInjection.test_resource_with_context ________________ [gw0] linux -- Python 3.14.7 /usr/bin/python3.14 self = @pytest.mark.anyio async def test_resource_with_context(self):  """Test that resources can receive context parameter.""" > mcp = FastMCP() ^^^^^^^^^ tests/server/fastmcp/test_server.py:1165: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ mcp/server/fastmcp/server.py:185: in __init__ self.settings = Settings( /usr/lib/python3/dist-packages/pydantic_settings/main.py:229: in __init__ else __pydantic_self__.__class__._settings_init_sources( /usr/lib/python3/dist-packages/pydantic_settings/main.py:397: in _settings_init_sources default_settings = DefaultSettingsSource( /usr/lib/python3/dist-packages/pydantic_settings/sources/base.py:287: in __init__ _warn_if_field_info_incomplete(field_info, field_name, self._init_state) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ field_info = FieldInfo(annotation=ForwardRef('Callable[[FastMCP[LifespanResultT]], AbstractAsyncContextManager[LifespanResultT]] | None', is_class=True), required=True) field_name = 'lifespan', init_state = {'field_info_ids': {140456318704880}} def _warn_if_field_info_incomplete(field_info: FieldInfo, field_name: str, init_state: InitState) -> None:  """Warn if the field is incomplete, i.e. its annotation contains unresolved forward references.   An incomplete `FieldInfo` instance is unsafe to inspect — any of its attributes (annotation,  aliases, metadata, default) may rely on the unresolved annotation, so settings sources may  silently fail to resolve the field's value. Each instance is only warned about once per  `init_state`, so that a field accessed by multiple sources during a single settings  resolution doesn't emit duplicate warnings.  """ if getattr(field_info, '_complete', True): return warned_ids = init_state.setdefault('field_info_ids', set()) if id(field_info) in warned_ids: return warned_ids.add(id(field_info)) > warnings.warn( f'Field {field_name!r} has an incomplete definition: its annotation contains an unresolved ' 'forward reference, so settings sources may fail to correctly resolve its value. ' 'Call `model_rebuild()` on the model where the field is defined, once all the referenced ' 'types are defined.', IncompleteFieldDefinitionWarning, ) E pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifespan' has an incomplete definition: its annotation contains an unresolved forward reference, so settings sources may fail to correctly resolve its value. Call `model_rebuild()` on the model where the field is defined, once all the referenced types are defined. /usr/lib/python3/dist-packages/pydantic_settings/sources/utils.py:47: IncompleteFieldDefinitionWarning ______________ TestContextInjection.test_resource_without_context ______________ [gw0] linux -- Python 3.14.7 /usr/bin/python3.14 self = @pytest.mark.anyio async def test_resource_without_context(self):  """Test that resources without context work normally.""" > mcp = FastMCP() ^^^^^^^^^ tests/server/fastmcp/test_server.py:1192: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ mcp/server/fastmcp/server.py:185: in __init__ self.settings = Settings( /usr/lib/python3/dist-packages/pydantic_settings/main.py:229: in __init__ else __pydantic_self__.__class__._settings_init_sources( /usr/lib/python3/dist-packages/pydantic_settings/main.py:397: in _settings_init_sources default_settings = DefaultSettingsSource( /usr/lib/python3/dist-packages/pydantic_settings/sources/base.py:287: in __init__ _warn_if_field_info_incomplete(field_info, field_name, self._init_state) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ field_info = FieldInfo(annotation=ForwardRef('Callable[[FastMCP[LifespanResultT]], AbstractAsyncContextManager[LifespanResultT]] | None', is_class=True), required=True) field_name = 'lifespan', init_state = {'field_info_ids': {140456318704880}} def _warn_if_field_info_incomplete(field_info: FieldInfo, field_name: str, init_state: InitState) -> None:  """Warn if the field is incomplete, i.e. its annotation contains unresolved forward references.   An incomplete `FieldInfo` instance is unsafe to inspect — any of its attributes (annotation,  aliases, metadata, default) may rely on the unresolved annotation, so settings sources may  silently fail to resolve the field's value. Each instance is only warned about once per  `init_state`, so that a field accessed by multiple sources during a single settings  resolution doesn't emit duplicate warnings.  """ if getattr(field_info, '_complete', True): return warned_ids = init_state.setdefault('field_info_ids', set()) if id(field_info) in warned_ids: return warned_ids.add(id(field_info)) > warnings.warn( f'Field {field_name!r} has an incomplete definition: its annotation contains an unresolved ' 'forward reference, so settings sources may fail to correctly resolve its value. ' 'Call `model_rebuild()` on the model where the field is defined, once all the referenced ' 'types are defined.', IncompleteFieldDefinitionWarning, ) E pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifespan' has an incomplete definition: its annotation contains an unresolved forward reference, so settings sources may fail to correctly resolve its value. Call `model_rebuild()` on the model where the field is defined, once all the referenced types are defined. /usr/lib/python3/dist-packages/pydantic_settings/sources/utils.py:47: IncompleteFieldDefinitionWarning ____________ TestContextInjection.test_resource_context_custom_name ____________ [gw0] linux -- Python 3.14.7 /usr/bin/python3.14 self = @pytest.mark.anyio async def test_resource_context_custom_name(self):  """Test resource context with custom parameter name.""" > mcp = FastMCP() ^^^^^^^^^ tests/server/fastmcp/test_server.py:1216: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ mcp/server/fastmcp/server.py:185: in __init__ self.settings = Settings( /usr/lib/python3/dist-packages/pydantic_settings/main.py:229: in __init__ else __pydantic_self__.__class__._settings_init_sources( /usr/lib/python3/dist-packages/pydantic_settings/main.py:397: in _settings_init_sources default_settings = DefaultSettingsSource( /usr/lib/python3/dist-packages/pydantic_settings/sources/base.py:287: in __init__ _warn_if_field_info_incomplete(field_info, field_name, self._init_state) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ field_info = FieldInfo(annotation=ForwardRef('Callable[[FastMCP[LifespanResultT]], AbstractAsyncContextManager[LifespanResultT]] | None', is_class=True), required=True) field_name = 'lifespan', init_state = {'field_info_ids': {140456318704880}} def _warn_if_field_info_incomplete(field_info: FieldInfo, field_name: str, init_state: InitState) -> None:  """Warn if the field is incomplete, i.e. its annotation contains unresolved forward references.   An incomplete `FieldInfo` instance is unsafe to inspect — any of its attributes (annotation,  aliases, metadata, default) may rely on the unresolved annotation, so settings sources may  silently fail to resolve the field's value. Each instance is only warned about once per  `init_state`, so that a field accessed by multiple sources during a single settings  resolution doesn't emit duplicate warnings.  """ if getattr(field_info, '_complete', True): return warned_ids = init_state.setdefault('field_info_ids', set()) if id(field_info) in warned_ids: return warned_ids.add(id(field_info)) > warnings.warn( f'Field {field_name!r} has an incomplete definition: its annotation contains an unresolved ' 'forward reference, so settings sources may fail to correctly resolve its value. ' 'Call `model_rebuild()` on the model where the field is defined, once all the referenced ' 'types are defined.', IncompleteFieldDefinitionWarning, ) E pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifespan' has an incomplete definition: its annotation contains an unresolved forward reference, so settings sources may fail to correctly resolve its value. Call `model_rebuild()` on the model where the field is defined, once all the referenced types are defined. /usr/lib/python3/dist-packages/pydantic_settings/sources/utils.py:47: IncompleteFieldDefinitionWarning ________________ TestContextInjection.test_prompt_with_context _________________ [gw0] linux -- Python 3.14.7 /usr/bin/python3.14 self = @pytest.mark.anyio async def test_prompt_with_context(self):  """Test that prompts can receive context parameter.""" > mcp = FastMCP() ^^^^^^^^^ tests/server/fastmcp/test_server.py:1241: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ mcp/server/fastmcp/server.py:185: in __init__ self.settings = Settings( /usr/lib/python3/dist-packages/pydantic_settings/main.py:229: in __init__ else __pydantic_self__.__class__._settings_init_sources( /usr/lib/python3/dist-packages/pydantic_settings/main.py:397: in _settings_init_sources default_settings = DefaultSettingsSource( /usr/lib/python3/dist-packages/pydantic_settings/sources/base.py:287: in __init__ _warn_if_field_info_incomplete(field_info, field_name, self._init_state) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ field_info = FieldInfo(annotation=ForwardRef('Callable[[FastMCP[LifespanResultT]], AbstractAsyncContextManager[LifespanResultT]] | None', is_class=True), required=True) field_name = 'lifespan', init_state = {'field_info_ids': {140456318704880}} def _warn_if_field_info_incomplete(field_info: FieldInfo, field_name: str, init_state: InitState) -> None:  """Warn if the field is incomplete, i.e. its annotation contains unresolved forward references.   An incomplete `FieldInfo` instance is unsafe to inspect — any of its attributes (annotation,  aliases, metadata, default) may rely on the unresolved annotation, so settings sources may  silently fail to resolve the field's value. Each instance is only warned about once per  `init_state`, so that a field accessed by multiple sources during a single settings  resolution doesn't emit duplicate warnings.  """ if getattr(field_info, '_complete', True): return warned_ids = init_state.setdefault('field_info_ids', set()) if id(field_info) in warned_ids: return warned_ids.add(id(field_info)) > warnings.warn( f'Field {field_name!r} has an incomplete definition: its annotation contains an unresolved ' 'forward reference, so settings sources may fail to correctly resolve its value. ' 'Call `model_rebuild()` on the model where the field is defined, once all the referenced ' 'types are defined.', IncompleteFieldDefinitionWarning, ) E pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifespan' has an incomplete definition: its annotation contains an unresolved forward reference, so settings sources may fail to correctly resolve its value. Call `model_rebuild()` on the model where the field is defined, once all the referenced types are defined. /usr/lib/python3/dist-packages/pydantic_settings/sources/utils.py:47: IncompleteFieldDefinitionWarning _______________ TestContextInjection.test_prompt_without_context _______________ [gw0] linux -- Python 3.14.7 /usr/bin/python3.14 self = @pytest.mark.anyio async def test_prompt_without_context(self):  """Test that prompts without context work normally.""" > mcp = FastMCP() ^^^^^^^^^ tests/server/fastmcp/test_server.py:1266: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ mcp/server/fastmcp/server.py:185: in __init__ self.settings = Settings( /usr/lib/python3/dist-packages/pydantic_settings/main.py:229: in __init__ else __pydantic_self__.__class__._settings_init_sources( /usr/lib/python3/dist-packages/pydantic_settings/main.py:397: in _settings_init_sources default_settings = DefaultSettingsSource( /usr/lib/python3/dist-packages/pydantic_settings/sources/base.py:287: in __init__ _warn_if_field_info_incomplete(field_info, field_name, self._init_state) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ field_info = FieldInfo(annotation=ForwardRef('Callable[[FastMCP[LifespanResultT]], AbstractAsyncContextManager[LifespanResultT]] | None', is_class=True), required=True) field_name = 'lifespan', init_state = {'field_info_ids': {140456318704880}} def _warn_if_field_info_incomplete(field_info: FieldInfo, field_name: str, init_state: InitState) -> None:  """Warn if the field is incomplete, i.e. its annotation contains unresolved forward references.   An incomplete `FieldInfo` instance is unsafe to inspect — any of its attributes (annotation,  aliases, metadata, default) may rely on the unresolved annotation, so settings sources may  silently fail to resolve the field's value. Each instance is only warned about once per  `init_state`, so that a field accessed by multiple sources during a single settings  resolution doesn't emit duplicate warnings.  """ if getattr(field_info, '_complete', True): return warned_ids = init_state.setdefault('field_info_ids', set()) if id(field_info) in warned_ids: return warned_ids.add(id(field_info)) > warnings.warn( f'Field {field_name!r} has an incomplete definition: its annotation contains an unresolved ' 'forward reference, so settings sources may fail to correctly resolve its value. ' 'Call `model_rebuild()` on the model where the field is defined, once all the referenced ' 'types are defined.', IncompleteFieldDefinitionWarning, ) E pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifespan' has an incomplete definition: its annotation contains an unresolved forward reference, so settings sources may fail to correctly resolve its value. Call `model_rebuild()` on the model where the field is defined, once all the referenced types are defined. /usr/lib/python3/dist-packages/pydantic_settings/sources/utils.py:47: IncompleteFieldDefinitionWarning ___________________ TestServerPrompts.test_prompt_decorator ____________________ [gw0] linux -- Python 3.14.7 /usr/bin/python3.14 self = @pytest.mark.anyio async def test_prompt_decorator(self):  """Test that the prompt decorator registers prompts correctly.""" > mcp = FastMCP() ^^^^^^^^^ tests/server/fastmcp/test_server.py:1289: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ mcp/server/fastmcp/server.py:185: in __init__ self.settings = Settings( /usr/lib/python3/dist-packages/pydantic_settings/main.py:229: in __init__ else __pydantic_self__.__class__._settings_init_sources( /usr/lib/python3/dist-packages/pydantic_settings/main.py:397: in _settings_init_sources default_settings = DefaultSettingsSource( /usr/lib/python3/dist-packages/pydantic_settings/sources/base.py:287: in __init__ _warn_if_field_info_incomplete(field_info, field_name, self._init_state) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ field_info = FieldInfo(annotation=ForwardRef('Callable[[FastMCP[LifespanResultT]], AbstractAsyncContextManager[LifespanResultT]] | None', is_class=True), required=True) field_name = 'lifespan', init_state = {'field_info_ids': {140456318704880}} def _warn_if_field_info_incomplete(field_info: FieldInfo, field_name: str, init_state: InitState) -> None:  """Warn if the field is incomplete, i.e. its annotation contains unresolved forward references.   An incomplete `FieldInfo` instance is unsafe to inspect — any of its attributes (annotation,  aliases, metadata, default) may rely on the unresolved annotation, so settings sources may  silently fail to resolve the field's value. Each instance is only warned about once per  `init_state`, so that a field accessed by multiple sources during a single settings  resolution doesn't emit duplicate warnings.  """ if getattr(field_info, '_complete', True): return warned_ids = init_state.setdefault('field_info_ids', set()) if id(field_info) in warned_ids: return warned_ids.add(id(field_info)) > warnings.warn( f'Field {field_name!r} has an incomplete definition: its annotation contains an unresolved ' 'forward reference, so settings sources may fail to correctly resolve its value. ' 'Call `model_rebuild()` on the model where the field is defined, once all the referenced ' 'types are defined.', IncompleteFieldDefinitionWarning, ) E pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifespan' has an incomplete definition: its annotation contains an unresolved forward reference, so settings sources may fail to correctly resolve its value. Call `model_rebuild()` on the model where the field is defined, once all the referenced types are defined. /usr/lib/python3/dist-packages/pydantic_settings/sources/utils.py:47: IncompleteFieldDefinitionWarning ______________ TestServerPrompts.test_prompt_decorator_with_name _______________ [gw0] linux -- Python 3.14.7 /usr/bin/python3.14 self = @pytest.mark.anyio async def test_prompt_decorator_with_name(self):  """Test prompt decorator with custom name.""" > mcp = FastMCP() ^^^^^^^^^ tests/server/fastmcp/test_server.py:1306: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ mcp/server/fastmcp/server.py:185: in __init__ self.settings = Settings( /usr/lib/python3/dist-packages/pydantic_settings/main.py:229: in __init__ else __pydantic_self__.__class__._settings_init_sources( /usr/lib/python3/dist-packages/pydantic_settings/main.py:397: in _settings_init_sources default_settings = DefaultSettingsSource( /usr/lib/python3/dist-packages/pydantic_settings/sources/base.py:287: in __init__ _warn_if_field_info_incomplete(field_info, field_name, self._init_state) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ field_info = FieldInfo(annotation=ForwardRef('Callable[[FastMCP[LifespanResultT]], AbstractAsyncContextManager[LifespanResultT]] | None', is_class=True), required=True) field_name = 'lifespan', init_state = {'field_info_ids': {140456318704880}} def _warn_if_field_info_incomplete(field_info: FieldInfo, field_name: str, init_state: InitState) -> None:  """Warn if the field is incomplete, i.e. its annotation contains unresolved forward references.   An incomplete `FieldInfo` instance is unsafe to inspect — any of its attributes (annotation,  aliases, metadata, default) may rely on the unresolved annotation, so settings sources may  silently fail to resolve the field's value. Each instance is only warned about once per  `init_state`, so that a field accessed by multiple sources during a single settings  resolution doesn't emit duplicate warnings.  """ if getattr(field_info, '_complete', True): return warned_ids = init_state.setdefault('field_info_ids', set()) if id(field_info) in warned_ids: return warned_ids.add(id(field_info)) > warnings.warn( f'Field {field_name!r} has an incomplete definition: its annotation contains an unresolved ' 'forward reference, so settings sources may fail to correctly resolve its value. ' 'Call `model_rebuild()` on the model where the field is defined, once all the referenced ' 'types are defined.', IncompleteFieldDefinitionWarning, ) E pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifespan' has an incomplete definition: its annotation contains an unresolved forward reference, so settings sources may fail to correctly resolve its value. Call `model_rebuild()` on the model where the field is defined, once all the referenced types are defined. /usr/lib/python3/dist-packages/pydantic_settings/sources/utils.py:47: IncompleteFieldDefinitionWarning ___________ TestServerPrompts.test_prompt_decorator_with_description ___________ [gw0] linux -- Python 3.14.7 /usr/bin/python3.14 self = @pytest.mark.anyio async def test_prompt_decorator_with_description(self):  """Test prompt decorator with custom description.""" > mcp = FastMCP() ^^^^^^^^^ tests/server/fastmcp/test_server.py:1322: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ mcp/server/fastmcp/server.py:185: in __init__ self.settings = Settings( /usr/lib/python3/dist-packages/pydantic_settings/main.py:229: in __init__ else __pydantic_self__.__class__._settings_init_sources( /usr/lib/python3/dist-packages/pydantic_settings/main.py:397: in _settings_init_sources default_settings = DefaultSettingsSource( /usr/lib/python3/dist-packages/pydantic_settings/sources/base.py:287: in __init__ _warn_if_field_info_incomplete(field_info, field_name, self._init_state) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ field_info = FieldInfo(annotation=ForwardRef('Callable[[FastMCP[LifespanResultT]], AbstractAsyncContextManager[LifespanResultT]] | None', is_class=True), required=True) field_name = 'lifespan', init_state = {'field_info_ids': {140456318704880}} def _warn_if_field_info_incomplete(field_info: FieldInfo, field_name: str, init_state: InitState) -> None:  """Warn if the field is incomplete, i.e. its annotation contains unresolved forward references.   An incomplete `FieldInfo` instance is unsafe to inspect — any of its attributes (annotation,  aliases, metadata, default) may rely on the unresolved annotation, so settings sources may  silently fail to resolve the field's value. Each instance is only warned about once per  `init_state`, so that a field accessed by multiple sources during a single settings  resolution doesn't emit duplicate warnings.  """ if getattr(field_info, '_complete', True): return warned_ids = init_state.setdefault('field_info_ids', set()) if id(field_info) in warned_ids: return warned_ids.add(id(field_info)) > warnings.warn( f'Field {field_name!r} has an incomplete definition: its annotation contains an unresolved ' 'forward reference, so settings sources may fail to correctly resolve its value. ' 'Call `model_rebuild()` on the model where the field is defined, once all the referenced ' 'types are defined.', IncompleteFieldDefinitionWarning, ) E pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifespan' has an incomplete definition: its annotation contains an unresolved forward reference, so settings sources may fail to correctly resolve its value. Call `model_rebuild()` on the model where the field is defined, once all the referenced types are defined. /usr/lib/python3/dist-packages/pydantic_settings/sources/utils.py:47: IncompleteFieldDefinitionWarning ________________ TestServerPrompts.test_prompt_decorator_error _________________ [gw0] linux -- Python 3.14.7 /usr/bin/python3.14 self = def test_prompt_decorator_error(self):  """Test error when decorator is used incorrectly.""" > mcp = FastMCP() ^^^^^^^^^ tests/server/fastmcp/test_server.py:1337: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ mcp/server/fastmcp/server.py:185: in __init__ self.settings = Settings( /usr/lib/python3/dist-packages/pydantic_settings/main.py:229: in __init__ else __pydantic_self__.__class__._settings_init_sources( /usr/lib/python3/dist-packages/pydantic_settings/main.py:397: in _settings_init_sources default_settings = DefaultSettingsSource( /usr/lib/python3/dist-packages/pydantic_settings/sources/base.py:287: in __init__ _warn_if_field_info_incomplete(field_info, field_name, self._init_state) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ field_info = FieldInfo(annotation=ForwardRef('Callable[[FastMCP[LifespanResultT]], AbstractAsyncContextManager[LifespanResultT]] | None', is_class=True), required=True) field_name = 'lifespan', init_state = {'field_info_ids': {140456318704880}} def _warn_if_field_info_incomplete(field_info: FieldInfo, field_name: str, init_state: InitState) -> None:  """Warn if the field is incomplete, i.e. its annotation contains unresolved forward references.   An incomplete `FieldInfo` instance is unsafe to inspect — any of its attributes (annotation,  aliases, metadata, default) may rely on the unresolved annotation, so settings sources may  silently fail to resolve the field's value. Each instance is only warned about once per  `init_state`, so that a field accessed by multiple sources during a single settings  resolution doesn't emit duplicate warnings.  """ if getattr(field_info, '_complete', True): return warned_ids = init_state.setdefault('field_info_ids', set()) if id(field_info) in warned_ids: return warned_ids.add(id(field_info)) > warnings.warn( f'Field {field_name!r} has an incomplete definition: its annotation contains an unresolved ' 'forward reference, so settings sources may fail to correctly resolve its value. ' 'Call `model_rebuild()` on the model where the field is defined, once all the referenced ' 'types are defined.', IncompleteFieldDefinitionWarning, ) E pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifespan' has an incomplete definition: its annotation contains an unresolved forward reference, so settings sources may fail to correctly resolve its value. Call `model_rebuild()` on the model where the field is defined, once all the referenced types are defined. /usr/lib/python3/dist-packages/pydantic_settings/sources/utils.py:47: IncompleteFieldDefinitionWarning _____________________ TestServerPrompts.test_list_prompts ______________________ [gw0] linux -- Python 3.14.7 /usr/bin/python3.14 self = @pytest.mark.anyio async def test_list_prompts(self):  """Test listing prompts through MCP protocol.""" > mcp = FastMCP() ^^^^^^^^^ tests/server/fastmcp/test_server.py:1347: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ mcp/server/fastmcp/server.py:185: in __init__ self.settings = Settings( /usr/lib/python3/dist-packages/pydantic_settings/main.py:229: in __init__ else __pydantic_self__.__class__._settings_init_sources( /usr/lib/python3/dist-packages/pydantic_settings/main.py:397: in _settings_init_sources default_settings = DefaultSettingsSource( /usr/lib/python3/dist-packages/pydantic_settings/sources/base.py:287: in __init__ _warn_if_field_info_incomplete(field_info, field_name, self._init_state) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ field_info = FieldInfo(annotation=ForwardRef('Callable[[FastMCP[LifespanResultT]], AbstractAsyncContextManager[LifespanResultT]] | None', is_class=True), required=True) field_name = 'lifespan', init_state = {'field_info_ids': {140456318704880}} def _warn_if_field_info_incomplete(field_info: FieldInfo, field_name: str, init_state: InitState) -> None:  """Warn if the field is incomplete, i.e. its annotation contains unresolved forward references.   An incomplete `FieldInfo` instance is unsafe to inspect — any of its attributes (annotation,  aliases, metadata, default) may rely on the unresolved annotation, so settings sources may  silently fail to resolve the field's value. Each instance is only warned about once per  `init_state`, so that a field accessed by multiple sources during a single settings  resolution doesn't emit duplicate warnings.  """ if getattr(field_info, '_complete', True): return warned_ids = init_state.setdefault('field_info_ids', set()) if id(field_info) in warned_ids: return warned_ids.add(id(field_info)) > warnings.warn( f'Field {field_name!r} has an incomplete definition: its annotation contains an unresolved ' 'forward reference, so settings sources may fail to correctly resolve its value. ' 'Call `model_rebuild()` on the model where the field is defined, once all the referenced ' 'types are defined.', IncompleteFieldDefinitionWarning, ) E pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifespan' has an incomplete definition: its annotation contains an unresolved forward reference, so settings sources may fail to correctly resolve its value. Call `model_rebuild()` on the model where the field is defined, once all the referenced types are defined. /usr/lib/python3/dist-packages/pydantic_settings/sources/utils.py:47: IncompleteFieldDefinitionWarning ______________________ TestServerPrompts.test_get_prompt _______________________ [gw0] linux -- Python 3.14.7 /usr/bin/python3.14 self = @pytest.mark.anyio async def test_get_prompt(self):  """Test getting a prompt through MCP protocol.""" > mcp = FastMCP() ^^^^^^^^^ tests/server/fastmcp/test_server.py:1369: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ mcp/server/fastmcp/server.py:185: in __init__ self.settings = Settings( /usr/lib/python3/dist-packages/pydantic_settings/main.py:229: in __init__ else __pydantic_self__.__class__._settings_init_sources( /usr/lib/python3/dist-packages/pydantic_settings/main.py:397: in _settings_init_sources default_settings = DefaultSettingsSource( /usr/lib/python3/dist-packages/pydantic_settings/sources/base.py:287: in __init__ _warn_if_field_info_incomplete(field_info, field_name, self._init_state) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ field_info = FieldInfo(annotation=ForwardRef('Callable[[FastMCP[LifespanResultT]], AbstractAsyncContextManager[LifespanResultT]] | None', is_class=True), required=True) field_name = 'lifespan', init_state = {'field_info_ids': {140456318704880}} def _warn_if_field_info_incomplete(field_info: FieldInfo, field_name: str, init_state: InitState) -> None:  """Warn if the field is incomplete, i.e. its annotation contains unresolved forward references.   An incomplete `FieldInfo` instance is unsafe to inspect — any of its attributes (annotation,  aliases, metadata, default) may rely on the unresolved annotation, so settings sources may  silently fail to resolve the field's value. Each instance is only warned about once per  `init_state`, so that a field accessed by multiple sources during a single settings  resolution doesn't emit duplicate warnings.  """ if getattr(field_info, '_complete', True): return warned_ids = init_state.setdefault('field_info_ids', set()) if id(field_info) in warned_ids: return warned_ids.add(id(field_info)) > warnings.warn( f'Field {field_name!r} has an incomplete definition: its annotation contains an unresolved ' 'forward reference, so settings sources may fail to correctly resolve its value. ' 'Call `model_rebuild()` on the model where the field is defined, once all the referenced ' 'types are defined.', IncompleteFieldDefinitionWarning, ) E pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifespan' has an incomplete definition: its annotation contains an unresolved forward reference, so settings sources may fail to correctly resolve its value. Call `model_rebuild()` on the model where the field is defined, once all the referenced types are defined. /usr/lib/python3/dist-packages/pydantic_settings/sources/utils.py:47: IncompleteFieldDefinitionWarning ______________ TestServerPrompts.test_get_prompt_with_description ______________ [gw0] linux -- Python 3.14.7 /usr/bin/python3.14 self = @pytest.mark.anyio async def test_get_prompt_with_description(self):  """Test getting a prompt through MCP protocol.""" > mcp = FastMCP() ^^^^^^^^^ tests/server/fastmcp/test_server.py:1387: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ mcp/server/fastmcp/server.py:185: in __init__ self.settings = Settings( /usr/lib/python3/dist-packages/pydantic_settings/main.py:229: in __init__ else __pydantic_self__.__class__._settings_init_sources( /usr/lib/python3/dist-packages/pydantic_settings/main.py:397: in _settings_init_sources default_settings = DefaultSettingsSource( /usr/lib/python3/dist-packages/pydantic_settings/sources/base.py:287: in __init__ _warn_if_field_info_incomplete(field_info, field_name, self._init_state) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ field_info = FieldInfo(annotation=ForwardRef('Callable[[FastMCP[LifespanResultT]], AbstractAsyncContextManager[LifespanResultT]] | None', is_class=True), required=True) field_name = 'lifespan', init_state = {'field_info_ids': {140456318704880}} def _warn_if_field_info_incomplete(field_info: FieldInfo, field_name: str, init_state: InitState) -> None:  """Warn if the field is incomplete, i.e. its annotation contains unresolved forward references.   An incomplete `FieldInfo` instance is unsafe to inspect — any of its attributes (annotation,  aliases, metadata, default) may rely on the unresolved annotation, so settings sources may  silently fail to resolve the field's value. Each instance is only warned about once per  `init_state`, so that a field accessed by multiple sources during a single settings  resolution doesn't emit duplicate warnings.  """ if getattr(field_info, '_complete', True): return warned_ids = init_state.setdefault('field_info_ids', set()) if id(field_info) in warned_ids: return warned_ids.add(id(field_info)) > warnings.warn( f'Field {field_name!r} has an incomplete definition: its annotation contains an unresolved ' 'forward reference, so settings sources may fail to correctly resolve its value. ' 'Call `model_rebuild()` on the model where the field is defined, once all the referenced ' 'types are defined.', IncompleteFieldDefinitionWarning, ) E pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifespan' has an incomplete definition: its annotation contains an unresolved forward reference, so settings sources may fail to correctly resolve its value. Call `model_rebuild()` on the model where the field is defined, once all the referenced types are defined. /usr/lib/python3/dist-packages/pydantic_settings/sources/utils.py:47: IncompleteFieldDefinitionWarning ____________ TestServerPrompts.test_get_prompt_without_description _____________ [gw0] linux -- Python 3.14.7 /usr/bin/python3.14 self = @pytest.mark.anyio async def test_get_prompt_without_description(self):  """Test getting a prompt without description returns empty string.""" > mcp = FastMCP() ^^^^^^^^^ tests/server/fastmcp/test_server.py:1400: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ mcp/server/fastmcp/server.py:185: in __init__ self.settings = Settings( /usr/lib/python3/dist-packages/pydantic_settings/main.py:229: in __init__ else __pydantic_self__.__class__._settings_init_sources( /usr/lib/python3/dist-packages/pydantic_settings/main.py:397: in _settings_init_sources default_settings = DefaultSettingsSource( /usr/lib/python3/dist-packages/pydantic_settings/sources/base.py:287: in __init__ _warn_if_field_info_incomplete(field_info, field_name, self._init_state) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ field_info = FieldInfo(annotation=ForwardRef('Callable[[FastMCP[LifespanResultT]], AbstractAsyncContextManager[LifespanResultT]] | None', is_class=True), required=True) field_name = 'lifespan', init_state = {'field_info_ids': {140456318704880}} def _warn_if_field_info_incomplete(field_info: FieldInfo, field_name: str, init_state: InitState) -> None:  """Warn if the field is incomplete, i.e. its annotation contains unresolved forward references.   An incomplete `FieldInfo` instance is unsafe to inspect — any of its attributes (annotation,  aliases, metadata, default) may rely on the unresolved annotation, so settings sources may  silently fail to resolve the field's value. Each instance is only warned about once per  `init_state`, so that a field accessed by multiple sources during a single settings  resolution doesn't emit duplicate warnings.  """ if getattr(field_info, '_complete', True): return warned_ids = init_state.setdefault('field_info_ids', set()) if id(field_info) in warned_ids: return warned_ids.add(id(field_info)) > warnings.warn( f'Field {field_name!r} has an incomplete definition: its annotation contains an unresolved ' 'forward reference, so settings sources may fail to correctly resolve its value. ' 'Call `model_rebuild()` on the model where the field is defined, once all the referenced ' 'types are defined.', IncompleteFieldDefinitionWarning, ) E pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifespan' has an incomplete definition: its annotation contains an unresolved forward reference, so settings sources may fail to correctly resolve its value. Call `model_rebuild()` on the model where the field is defined, once all the referenced types are defined. /usr/lib/python3/dist-packages/pydantic_settings/sources/utils.py:47: IncompleteFieldDefinitionWarning _________ TestServerPrompts.test_get_prompt_with_docstring_description _________ [gw0] linux -- Python 3.14.7 /usr/bin/python3.14 self = @pytest.mark.anyio async def test_get_prompt_with_docstring_description(self):  """Test prompt uses docstring as description when not explicitly provided.""" > mcp = FastMCP() ^^^^^^^^^ tests/server/fastmcp/test_server.py:1413: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ mcp/server/fastmcp/server.py:185: in __init__ self.settings = Settings( /usr/lib/python3/dist-packages/pydantic_settings/main.py:229: in __init__ else __pydantic_self__.__class__._settings_init_sources( /usr/lib/python3/dist-packages/pydantic_settings/main.py:397: in _settings_init_sources default_settings = DefaultSettingsSource( /usr/lib/python3/dist-packages/pydantic_settings/sources/base.py:287: in __init__ _warn_if_field_info_incomplete(field_info, field_name, self._init_state) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ field_info = FieldInfo(annotation=ForwardRef('Callable[[FastMCP[LifespanResultT]], AbstractAsyncContextManager[LifespanResultT]] | None', is_class=True), required=True) field_name = 'lifespan', init_state = {'field_info_ids': {140456318704880}} def _warn_if_field_info_incomplete(field_info: FieldInfo, field_name: str, init_state: InitState) -> None:  """Warn if the field is incomplete, i.e. its annotation contains unresolved forward references.   An incomplete `FieldInfo` instance is unsafe to inspect — any of its attributes (annotation,  aliases, metadata, default) may rely on the unresolved annotation, so settings sources may  silently fail to resolve the field's value. Each instance is only warned about once per  `init_state`, so that a field accessed by multiple sources during a single settings  resolution doesn't emit duplicate warnings.  """ if getattr(field_info, '_complete', True): return warned_ids = init_state.setdefault('field_info_ids', set()) if id(field_info) in warned_ids: return warned_ids.add(id(field_info)) > warnings.warn( f'Field {field_name!r} has an incomplete definition: its annotation contains an unresolved ' 'forward reference, so settings sources may fail to correctly resolve its value. ' 'Call `model_rebuild()` on the model where the field is defined, once all the referenced ' 'types are defined.', IncompleteFieldDefinitionWarning, ) E pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifespan' has an incomplete definition: its annotation contains an unresolved forward reference, so settings sources may fail to correctly resolve its value. Call `model_rebuild()` on the model where the field is defined, once all the referenced types are defined. /usr/lib/python3/dist-packages/pydantic_settings/sources/utils.py:47: IncompleteFieldDefinitionWarning _______________ TestServerPrompts.test_get_prompt_with_resource ________________ [gw0] linux -- Python 3.14.7 /usr/bin/python3.14 self = @pytest.mark.anyio async def test_get_prompt_with_resource(self):  """Test getting a prompt that returns resource content.""" > mcp = FastMCP() ^^^^^^^^^ tests/server/fastmcp/test_server.py:1427: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ mcp/server/fastmcp/server.py:185: in __init__ self.settings = Settings( /usr/lib/python3/dist-packages/pydantic_settings/main.py:229: in __init__ else __pydantic_self__.__class__._settings_init_sources( /usr/lib/python3/dist-packages/pydantic_settings/main.py:397: in _settings_init_sources default_settings = DefaultSettingsSource( /usr/lib/python3/dist-packages/pydantic_settings/sources/base.py:287: in __init__ _warn_if_field_info_incomplete(field_info, field_name, self._init_state) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ field_info = FieldInfo(annotation=ForwardRef('Callable[[FastMCP[LifespanResultT]], AbstractAsyncContextManager[LifespanResultT]] | None', is_class=True), required=True) field_name = 'lifespan', init_state = {'field_info_ids': {140456318704880}} def _warn_if_field_info_incomplete(field_info: FieldInfo, field_name: str, init_state: InitState) -> None:  """Warn if the field is incomplete, i.e. its annotation contains unresolved forward references.   An incomplete `FieldInfo` instance is unsafe to inspect — any of its attributes (annotation,  aliases, metadata, default) may rely on the unresolved annotation, so settings sources may  silently fail to resolve the field's value. Each instance is only warned about once per  `init_state`, so that a field accessed by multiple sources during a single settings  resolution doesn't emit duplicate warnings.  """ if getattr(field_info, '_complete', True): return warned_ids = init_state.setdefault('field_info_ids', set()) if id(field_info) in warned_ids: return warned_ids.add(id(field_info)) > warnings.warn( f'Field {field_name!r} has an incomplete definition: its annotation contains an unresolved ' 'forward reference, so settings sources may fail to correctly resolve its value. ' 'Call `model_rebuild()` on the model where the field is defined, once all the referenced ' 'types are defined.', IncompleteFieldDefinitionWarning, ) E pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifespan' has an incomplete definition: its annotation contains an unresolved forward reference, so settings sources may fail to correctly resolve its value. Call `model_rebuild()` on the model where the field is defined, once all the referenced types are defined. /usr/lib/python3/dist-packages/pydantic_settings/sources/utils.py:47: IncompleteFieldDefinitionWarning __________________ TestServerPrompts.test_get_unknown_prompt ___________________ [gw0] linux -- Python 3.14.7 /usr/bin/python3.14 self = @pytest.mark.anyio async def test_get_unknown_prompt(self):  """Test error when getting unknown prompt.""" > mcp = FastMCP() ^^^^^^^^^ tests/server/fastmcp/test_server.py:1457: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ mcp/server/fastmcp/server.py:185: in __init__ self.settings = Settings( /usr/lib/python3/dist-packages/pydantic_settings/main.py:229: in __init__ else __pydantic_self__.__class__._settings_init_sources( /usr/lib/python3/dist-packages/pydantic_settings/main.py:397: in _settings_init_sources default_settings = DefaultSettingsSource( /usr/lib/python3/dist-packages/pydantic_settings/sources/base.py:287: in __init__ _warn_if_field_info_incomplete(field_info, field_name, self._init_state) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ field_info = FieldInfo(annotation=ForwardRef('Callable[[FastMCP[LifespanResultT]], AbstractAsyncContextManager[LifespanResultT]] | None', is_class=True), required=True) field_name = 'lifespan', init_state = {'field_info_ids': {140456318704880}} def _warn_if_field_info_incomplete(field_info: FieldInfo, field_name: str, init_state: InitState) -> None:  """Warn if the field is incomplete, i.e. its annotation contains unresolved forward references.   An incomplete `FieldInfo` instance is unsafe to inspect — any of its attributes (annotation,  aliases, metadata, default) may rely on the unresolved annotation, so settings sources may  silently fail to resolve the field's value. Each instance is only warned about once per  `init_state`, so that a field accessed by multiple sources during a single settings  resolution doesn't emit duplicate warnings.  """ if getattr(field_info, '_complete', True): return warned_ids = init_state.setdefault('field_info_ids', set()) if id(field_info) in warned_ids: return warned_ids.add(id(field_info)) > warnings.warn( f'Field {field_name!r} has an incomplete definition: its annotation contains an unresolved ' 'forward reference, so settings sources may fail to correctly resolve its value. ' 'Call `model_rebuild()` on the model where the field is defined, once all the referenced ' 'types are defined.', IncompleteFieldDefinitionWarning, ) E pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifespan' has an incomplete definition: its annotation contains an unresolved forward reference, so settings sources may fail to correctly resolve its value. Call `model_rebuild()` on the model where the field is defined, once all the referenced types are defined. /usr/lib/python3/dist-packages/pydantic_settings/sources/utils.py:47: IncompleteFieldDefinitionWarning ________________ TestServerPrompts.test_get_prompt_missing_args ________________ [gw0] linux -- Python 3.14.7 /usr/bin/python3.14 self = @pytest.mark.anyio async def test_get_prompt_missing_args(self):  """Test error when required arguments are missing.""" > mcp = FastMCP() ^^^^^^^^^ tests/server/fastmcp/test_server.py:1465: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ mcp/server/fastmcp/server.py:185: in __init__ self.settings = Settings( /usr/lib/python3/dist-packages/pydantic_settings/main.py:229: in __init__ else __pydantic_self__.__class__._settings_init_sources( /usr/lib/python3/dist-packages/pydantic_settings/main.py:397: in _settings_init_sources default_settings = DefaultSettingsSource( /usr/lib/python3/dist-packages/pydantic_settings/sources/base.py:287: in __init__ _warn_if_field_info_incomplete(field_info, field_name, self._init_state) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ field_info = FieldInfo(annotation=ForwardRef('Callable[[FastMCP[LifespanResultT]], AbstractAsyncContextManager[LifespanResultT]] | None', is_class=True), required=True) field_name = 'lifespan', init_state = {'field_info_ids': {140456318704880}} def _warn_if_field_info_incomplete(field_info: FieldInfo, field_name: str, init_state: InitState) -> None:  """Warn if the field is incomplete, i.e. its annotation contains unresolved forward references.   An incomplete `FieldInfo` instance is unsafe to inspect — any of its attributes (annotation,  aliases, metadata, default) may rely on the unresolved annotation, so settings sources may  silently fail to resolve the field's value. Each instance is only warned about once per  `init_state`, so that a field accessed by multiple sources during a single settings  resolution doesn't emit duplicate warnings.  """ if getattr(field_info, '_complete', True): return warned_ids = init_state.setdefault('field_info_ids', set()) if id(field_info) in warned_ids: return warned_ids.add(id(field_info)) > warnings.warn( f'Field {field_name!r} has an incomplete definition: its annotation contains an unresolved ' 'forward reference, so settings sources may fail to correctly resolve its value. ' 'Call `model_rebuild()` on the model where the field is defined, once all the referenced ' 'types are defined.', IncompleteFieldDefinitionWarning, ) E pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifespan' has an incomplete definition: its annotation contains an unresolved forward reference, so settings sources may fail to correctly resolve its value. Call `model_rebuild()` on the model where the field is defined, once all the referenced types are defined. /usr/lib/python3/dist-packages/pydantic_settings/sources/utils.py:47: IncompleteFieldDefinitionWarning _______________________ test_streamable_http_no_redirect _______________________ [gw0] linux -- Python 3.14.7 /usr/bin/python3.14 def test_streamable_http_no_redirect() -> None:  """Test that streamable HTTP routes are correctly configured.""" > mcp = FastMCP() ^^^^^^^^^ tests/server/fastmcp/test_server.py:1478: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ mcp/server/fastmcp/server.py:185: in __init__ self.settings = Settings( /usr/lib/python3/dist-packages/pydantic_settings/main.py:229: in __init__ else __pydantic_self__.__class__._settings_init_sources( /usr/lib/python3/dist-packages/pydantic_settings/main.py:397: in _settings_init_sources default_settings = DefaultSettingsSource( /usr/lib/python3/dist-packages/pydantic_settings/sources/base.py:287: in __init__ _warn_if_field_info_incomplete(field_info, field_name, self._init_state) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ field_info = FieldInfo(annotation=ForwardRef('Callable[[FastMCP[LifespanResultT]], AbstractAsyncContextManager[LifespanResultT]] | None', is_class=True), required=True) field_name = 'lifespan', init_state = {'field_info_ids': {140456318704880}} def _warn_if_field_info_incomplete(field_info: FieldInfo, field_name: str, init_state: InitState) -> None:  """Warn if the field is incomplete, i.e. its annotation contains unresolved forward references.   An incomplete `FieldInfo` instance is unsafe to inspect — any of its attributes (annotation,  aliases, metadata, default) may rely on the unresolved annotation, so settings sources may  silently fail to resolve the field's value. Each instance is only warned about once per  `init_state`, so that a field accessed by multiple sources during a single settings  resolution doesn't emit duplicate warnings.  """ if getattr(field_info, '_complete', True): return warned_ids = init_state.setdefault('field_info_ids', set()) if id(field_info) in warned_ids: return warned_ids.add(id(field_info)) > warnings.warn( f'Field {field_name!r} has an incomplete definition: its annotation contains an unresolved ' 'forward reference, so settings sources may fail to correctly resolve its value. ' 'Call `model_rebuild()` on the model where the field is defined, once all the referenced ' 'types are defined.', IncompleteFieldDefinitionWarning, ) E pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifespan' has an incomplete definition: its annotation contains an unresolved forward reference, so settings sources may fail to correctly resolve its value. Call `model_rebuild()` on the model where the field is defined, once all the referenced types are defined. /usr/lib/python3/dist-packages/pydantic_settings/sources/utils.py:47: IncompleteFieldDefinitionWarning __________________________ test_tool_title_precedence __________________________ [gw0] linux -- Python 3.14.7 /usr/bin/python3.14 @pytest.mark.anyio async def test_tool_title_precedence():  """Test that tool title precedence works correctly: title > annotations.title > name.""" # Create server with various tool configurations > mcp = FastMCP(name="TitleTestServer") ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ tests/server/fastmcp/test_title.py:17: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ mcp/server/fastmcp/server.py:185: in __init__ self.settings = Settings( /usr/lib/python3/dist-packages/pydantic_settings/main.py:229: in __init__ else __pydantic_self__.__class__._settings_init_sources( /usr/lib/python3/dist-packages/pydantic_settings/main.py:397: in _settings_init_sources default_settings = DefaultSettingsSource( /usr/lib/python3/dist-packages/pydantic_settings/sources/base.py:287: in __init__ _warn_if_field_info_incomplete(field_info, field_name, self._init_state) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ field_info = FieldInfo(annotation=ForwardRef('Callable[[FastMCP[LifespanResultT]], AbstractAsyncContextManager[LifespanResultT]] | None', is_class=True), required=True) field_name = 'lifespan', init_state = {'field_info_ids': {140456318704880}} def _warn_if_field_info_incomplete(field_info: FieldInfo, field_name: str, init_state: InitState) -> None:  """Warn if the field is incomplete, i.e. its annotation contains unresolved forward references.   An incomplete `FieldInfo` instance is unsafe to inspect — any of its attributes (annotation,  aliases, metadata, default) may rely on the unresolved annotation, so settings sources may  silently fail to resolve the field's value. Each instance is only warned about once per  `init_state`, so that a field accessed by multiple sources during a single settings  resolution doesn't emit duplicate warnings.  """ if getattr(field_info, '_complete', True): return warned_ids = init_state.setdefault('field_info_ids', set()) if id(field_info) in warned_ids: return warned_ids.add(id(field_info)) > warnings.warn( f'Field {field_name!r} has an incomplete definition: its annotation contains an unresolved ' 'forward reference, so settings sources may fail to correctly resolve its value. ' 'Call `model_rebuild()` on the model where the field is defined, once all the referenced ' 'types are defined.', IncompleteFieldDefinitionWarning, ) E pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifespan' has an incomplete definition: its annotation contains an unresolved forward reference, so settings sources may fail to correctly resolve its value. Call `model_rebuild()` on the model where the field is defined, once all the referenced types are defined. /usr/lib/python3/dist-packages/pydantic_settings/sources/utils.py:47: IncompleteFieldDefinitionWarning ______________________________ test_prompt_title _______________________________ [gw0] linux -- Python 3.14.7 /usr/bin/python3.14 @pytest.mark.anyio async def test_prompt_title():  """Test that prompt titles work correctly.""" > mcp = FastMCP(name="PromptTitleServer") ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ tests/server/fastmcp/test_title.py:72: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ mcp/server/fastmcp/server.py:185: in __init__ self.settings = Settings( /usr/lib/python3/dist-packages/pydantic_settings/main.py:229: in __init__ else __pydantic_self__.__class__._settings_init_sources( /usr/lib/python3/dist-packages/pydantic_settings/main.py:397: in _settings_init_sources default_settings = DefaultSettingsSource( /usr/lib/python3/dist-packages/pydantic_settings/sources/base.py:287: in __init__ _warn_if_field_info_incomplete(field_info, field_name, self._init_state) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ field_info = FieldInfo(annotation=ForwardRef('Callable[[FastMCP[LifespanResultT]], AbstractAsyncContextManager[LifespanResultT]] | None', is_class=True), required=True) field_name = 'lifespan', init_state = {'field_info_ids': {140456318704880}} def _warn_if_field_info_incomplete(field_info: FieldInfo, field_name: str, init_state: InitState) -> None:  """Warn if the field is incomplete, i.e. its annotation contains unresolved forward references.   An incomplete `FieldInfo` instance is unsafe to inspect — any of its attributes (annotation,  aliases, metadata, default) may rely on the unresolved annotation, so settings sources may  silently fail to resolve the field's value. Each instance is only warned about once per  `init_state`, so that a field accessed by multiple sources during a single settings  resolution doesn't emit duplicate warnings.  """ if getattr(field_info, '_complete', True): return warned_ids = init_state.setdefault('field_info_ids', set()) if id(field_info) in warned_ids: return warned_ids.add(id(field_info)) > warnings.warn( f'Field {field_name!r} has an incomplete definition: its annotation contains an unresolved ' 'forward reference, so settings sources may fail to correctly resolve its value. ' 'Call `model_rebuild()` on the model where the field is defined, once all the referenced ' 'types are defined.', IncompleteFieldDefinitionWarning, ) E pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifespan' has an incomplete definition: its annotation contains an unresolved forward reference, so settings sources may fail to correctly resolve its value. Call `model_rebuild()` on the model where the field is defined, once all the referenced types are defined. /usr/lib/python3/dist-packages/pydantic_settings/sources/utils.py:47: IncompleteFieldDefinitionWarning _____________________________ test_resource_title ______________________________ [gw0] linux -- Python 3.14.7 /usr/bin/python3.14 @pytest.mark.anyio async def test_resource_title():  """Test that resource titles work correctly.""" > mcp = FastMCP(name="ResourceTitleServer") ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ tests/server/fastmcp/test_title.py:107: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ mcp/server/fastmcp/server.py:185: in __init__ self.settings = Settings( /usr/lib/python3/dist-packages/pydantic_settings/main.py:229: in __init__ else __pydantic_self__.__class__._settings_init_sources( /usr/lib/python3/dist-packages/pydantic_settings/main.py:397: in _settings_init_sources default_settings = DefaultSettingsSource( /usr/lib/python3/dist-packages/pydantic_settings/sources/base.py:287: in __init__ _warn_if_field_info_incomplete(field_info, field_name, self._init_state) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ field_info = FieldInfo(annotation=ForwardRef('Callable[[FastMCP[LifespanResultT]], AbstractAsyncContextManager[LifespanResultT]] | None', is_class=True), required=True) field_name = 'lifespan', init_state = {'field_info_ids': {140456318704880}} def _warn_if_field_info_incomplete(field_info: FieldInfo, field_name: str, init_state: InitState) -> None:  """Warn if the field is incomplete, i.e. its annotation contains unresolved forward references.   An incomplete `FieldInfo` instance is unsafe to inspect — any of its attributes (annotation,  aliases, metadata, default) may rely on the unresolved annotation, so settings sources may  silently fail to resolve the field's value. Each instance is only warned about once per  `init_state`, so that a field accessed by multiple sources during a single settings  resolution doesn't emit duplicate warnings.  """ if getattr(field_info, '_complete', True): return warned_ids = init_state.setdefault('field_info_ids', set()) if id(field_info) in warned_ids: return warned_ids.add(id(field_info)) > warnings.warn( f'Field {field_name!r} has an incomplete definition: its annotation contains an unresolved ' 'forward reference, so settings sources may fail to correctly resolve its value. ' 'Call `model_rebuild()` on the model where the field is defined, once all the referenced ' 'types are defined.', IncompleteFieldDefinitionWarning, ) E pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifespan' has an incomplete definition: its annotation contains an unresolved forward reference, so settings sources may fail to correctly resolve its value. Call `model_rebuild()` on the model where the field is defined, once all the referenced types are defined. /usr/lib/python3/dist-packages/pydantic_settings/sources/utils.py:47: IncompleteFieldDefinitionWarning __________________ TestContextHandling.test_context_injection __________________ [gw0] linux -- Python 3.14.7 /usr/bin/python3.14 self = @pytest.mark.anyio async def test_context_injection(self):  """Test that context is properly injected during tool execution."""  def tool_with_context(x: int, ctx: Context[ServerSessionT, None]) -> str: assert isinstance(ctx, Context) return str(x)  manager = ToolManager() manager.add_tool(tool_with_context)  > mcp = FastMCP() ^^^^^^^^^ tests/server/fastmcp/test_tool_manager.py:369: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ mcp/server/fastmcp/server.py:185: in __init__ self.settings = Settings( /usr/lib/python3/dist-packages/pydantic_settings/main.py:229: in __init__ else __pydantic_self__.__class__._settings_init_sources( /usr/lib/python3/dist-packages/pydantic_settings/main.py:397: in _settings_init_sources default_settings = DefaultSettingsSource( /usr/lib/python3/dist-packages/pydantic_settings/sources/base.py:287: in __init__ _warn_if_field_info_incomplete(field_info, field_name, self._init_state) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ field_info = FieldInfo(annotation=ForwardRef('Callable[[FastMCP[LifespanResultT]], AbstractAsyncContextManager[LifespanResultT]] | None', is_class=True), required=True) field_name = 'lifespan', init_state = {'field_info_ids': {140456318704880}} def _warn_if_field_info_incomplete(field_info: FieldInfo, field_name: str, init_state: InitState) -> None:  """Warn if the field is incomplete, i.e. its annotation contains unresolved forward references.   An incomplete `FieldInfo` instance is unsafe to inspect — any of its attributes (annotation,  aliases, metadata, default) may rely on the unresolved annotation, so settings sources may  silently fail to resolve the field's value. Each instance is only warned about once per  `init_state`, so that a field accessed by multiple sources during a single settings  resolution doesn't emit duplicate warnings.  """ if getattr(field_info, '_complete', True): return warned_ids = init_state.setdefault('field_info_ids', set()) if id(field_info) in warned_ids: return warned_ids.add(id(field_info)) > warnings.warn( f'Field {field_name!r} has an incomplete definition: its annotation contains an unresolved ' 'forward reference, so settings sources may fail to correctly resolve its value. ' 'Call `model_rebuild()` on the model where the field is defined, once all the referenced ' 'types are defined.', IncompleteFieldDefinitionWarning, ) E pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifespan' has an incomplete definition: its annotation contains an unresolved forward reference, so settings sources may fail to correctly resolve its value. Call `model_rebuild()` on the model where the field is defined, once all the referenced types are defined. /usr/lib/python3/dist-packages/pydantic_settings/sources/utils.py:47: IncompleteFieldDefinitionWarning _______________ TestContextHandling.test_context_injection_async _______________ [gw0] linux -- Python 3.14.7 /usr/bin/python3.14 self = @pytest.mark.anyio async def test_context_injection_async(self):  """Test that context is properly injected in async tools."""  async def async_tool(x: int, ctx: Context[ServerSessionT, None]) -> str: # pragma: no cover assert isinstance(ctx, Context) return str(x)  manager = ToolManager() manager.add_tool(async_tool)  > mcp = FastMCP() ^^^^^^^^^ tests/server/fastmcp/test_tool_manager.py:385: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ mcp/server/fastmcp/server.py:185: in __init__ self.settings = Settings( /usr/lib/python3/dist-packages/pydantic_settings/main.py:229: in __init__ else __pydantic_self__.__class__._settings_init_sources( /usr/lib/python3/dist-packages/pydantic_settings/main.py:397: in _settings_init_sources default_settings = DefaultSettingsSource( /usr/lib/python3/dist-packages/pydantic_settings/sources/base.py:287: in __init__ _warn_if_field_info_incomplete(field_info, field_name, self._init_state) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ field_info = FieldInfo(annotation=ForwardRef('Callable[[FastMCP[LifespanResultT]], AbstractAsyncContextManager[LifespanResultT]] | None', is_class=True), required=True) field_name = 'lifespan', init_state = {'field_info_ids': {140456318704880}} def _warn_if_field_info_incomplete(field_info: FieldInfo, field_name: str, init_state: InitState) -> None:  """Warn if the field is incomplete, i.e. its annotation contains unresolved forward references.   An incomplete `FieldInfo` instance is unsafe to inspect — any of its attributes (annotation,  aliases, metadata, default) may rely on the unresolved annotation, so settings sources may  silently fail to resolve the field's value. Each instance is only warned about once per  `init_state`, so that a field accessed by multiple sources during a single settings  resolution doesn't emit duplicate warnings.  """ if getattr(field_info, '_complete', True): return warned_ids = init_state.setdefault('field_info_ids', set()) if id(field_info) in warned_ids: return warned_ids.add(id(field_info)) > warnings.warn( f'Field {field_name!r} has an incomplete definition: its annotation contains an unresolved ' 'forward reference, so settings sources may fail to correctly resolve its value. ' 'Call `model_rebuild()` on the model where the field is defined, once all the referenced ' 'types are defined.', IncompleteFieldDefinitionWarning, ) E pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifespan' has an incomplete definition: its annotation contains an unresolved forward reference, so settings sources may fail to correctly resolve its value. Call `model_rebuild()` on the model where the field is defined, once all the referenced types are defined. /usr/lib/python3/dist-packages/pydantic_settings/sources/utils.py:47: IncompleteFieldDefinitionWarning _______________ TestContextHandling.test_context_error_handling ________________ [gw0] linux -- Python 3.14.7 /usr/bin/python3.14 self = @pytest.mark.anyio async def test_context_error_handling(self):  """Test error handling when context injection fails."""  def tool_with_context(x: int, ctx: Context[ServerSessionT, None]) -> str: raise ValueError("Test error")  manager = ToolManager() manager.add_tool(tool_with_context)  > mcp = FastMCP() ^^^^^^^^^ tests/server/fastmcp/test_tool_manager.py:413: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ mcp/server/fastmcp/server.py:185: in __init__ self.settings = Settings( /usr/lib/python3/dist-packages/pydantic_settings/main.py:229: in __init__ else __pydantic_self__.__class__._settings_init_sources( /usr/lib/python3/dist-packages/pydantic_settings/main.py:397: in _settings_init_sources default_settings = DefaultSettingsSource( /usr/lib/python3/dist-packages/pydantic_settings/sources/base.py:287: in __init__ _warn_if_field_info_incomplete(field_info, field_name, self._init_state) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ field_info = FieldInfo(annotation=ForwardRef('Callable[[FastMCP[LifespanResultT]], AbstractAsyncContextManager[LifespanResultT]] | None', is_class=True), required=True) field_name = 'lifespan', init_state = {'field_info_ids': {140456318704880}} def _warn_if_field_info_incomplete(field_info: FieldInfo, field_name: str, init_state: InitState) -> None:  """Warn if the field is incomplete, i.e. its annotation contains unresolved forward references.   An incomplete `FieldInfo` instance is unsafe to inspect — any of its attributes (annotation,  aliases, metadata, default) may rely on the unresolved annotation, so settings sources may  silently fail to resolve the field's value. Each instance is only warned about once per  `init_state`, so that a field accessed by multiple sources during a single settings  resolution doesn't emit duplicate warnings.  """ if getattr(field_info, '_complete', True): return warned_ids = init_state.setdefault('field_info_ids', set()) if id(field_info) in warned_ids: return warned_ids.add(id(field_info)) > warnings.warn( f'Field {field_name!r} has an incomplete definition: its annotation contains an unresolved ' 'forward reference, so settings sources may fail to correctly resolve its value. ' 'Call `model_rebuild()` on the model where the field is defined, once all the referenced ' 'types are defined.', IncompleteFieldDefinitionWarning, ) E pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifespan' has an incomplete definition: its annotation contains an unresolved forward reference, so settings sources may fail to correctly resolve its value. Call `model_rebuild()` on the model where the field is defined, once all the referenced types are defined. /usr/lib/python3/dist-packages/pydantic_settings/sources/utils.py:47: IncompleteFieldDefinitionWarning _____________ TestToolAnnotations.test_tool_annotations_in_fastmcp _____________ [gw0] linux -- Python 3.14.7 /usr/bin/python3.14 self = @pytest.mark.anyio async def test_tool_annotations_in_fastmcp(self):  """Test that tool annotations are included in MCPTool conversion."""  > app = FastMCP() ^^^^^^^^^ tests/server/fastmcp/test_tool_manager.py:445: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ mcp/server/fastmcp/server.py:185: in __init__ self.settings = Settings( /usr/lib/python3/dist-packages/pydantic_settings/main.py:229: in __init__ else __pydantic_self__.__class__._settings_init_sources( /usr/lib/python3/dist-packages/pydantic_settings/main.py:397: in _settings_init_sources default_settings = DefaultSettingsSource( /usr/lib/python3/dist-packages/pydantic_settings/sources/base.py:287: in __init__ _warn_if_field_info_incomplete(field_info, field_name, self._init_state) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ field_info = FieldInfo(annotation=ForwardRef('Callable[[FastMCP[LifespanResultT]], AbstractAsyncContextManager[LifespanResultT]] | None', is_class=True), required=True) field_name = 'lifespan', init_state = {'field_info_ids': {140456318704880}} def _warn_if_field_info_incomplete(field_info: FieldInfo, field_name: str, init_state: InitState) -> None:  """Warn if the field is incomplete, i.e. its annotation contains unresolved forward references.   An incomplete `FieldInfo` instance is unsafe to inspect — any of its attributes (annotation,  aliases, metadata, default) may rely on the unresolved annotation, so settings sources may  silently fail to resolve the field's value. Each instance is only warned about once per  `init_state`, so that a field accessed by multiple sources during a single settings  resolution doesn't emit duplicate warnings.  """ if getattr(field_info, '_complete', True): return warned_ids = init_state.setdefault('field_info_ids', set()) if id(field_info) in warned_ids: return warned_ids.add(id(field_info)) > warnings.warn( f'Field {field_name!r} has an incomplete definition: its annotation contains an unresolved ' 'forward reference, so settings sources may fail to correctly resolve its value. ' 'Call `model_rebuild()` on the model where the field is defined, once all the referenced ' 'types are defined.', IncompleteFieldDefinitionWarning, ) E pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifespan' has an incomplete definition: its annotation contains an unresolved forward reference, so settings sources may fail to correctly resolve its value. Call `model_rebuild()` on the model where the field is defined, once all the referenced types are defined. /usr/lib/python3/dist-packages/pydantic_settings/sources/utils.py:47: IncompleteFieldDefinitionWarning _____________ TestToolMetadata.test_metadata_in_fastmcp_decorator ______________ [gw0] linux -- Python 3.14.7 /usr/bin/python3.14 self = @pytest.mark.anyio async def test_metadata_in_fastmcp_decorator(self):  """Test that metadata is correctly added via FastMCP.tool decorator."""  > app = FastMCP() ^^^^^^^^^ tests/server/fastmcp/test_tool_manager.py:676: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ mcp/server/fastmcp/server.py:185: in __init__ self.settings = Settings( /usr/lib/python3/dist-packages/pydantic_settings/main.py:229: in __init__ else __pydantic_self__.__class__._settings_init_sources( /usr/lib/python3/dist-packages/pydantic_settings/main.py:397: in _settings_init_sources default_settings = DefaultSettingsSource( /usr/lib/python3/dist-packages/pydantic_settings/sources/base.py:287: in __init__ _warn_if_field_info_incomplete(field_info, field_name, self._init_state) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ field_info = FieldInfo(annotation=ForwardRef('Callable[[FastMCP[LifespanResultT]], AbstractAsyncContextManager[LifespanResultT]] | None', is_class=True), required=True) field_name = 'lifespan', init_state = {'field_info_ids': {140456318704880}} def _warn_if_field_info_incomplete(field_info: FieldInfo, field_name: str, init_state: InitState) -> None:  """Warn if the field is incomplete, i.e. its annotation contains unresolved forward references.   An incomplete `FieldInfo` instance is unsafe to inspect — any of its attributes (annotation,  aliases, metadata, default) may rely on the unresolved annotation, so settings sources may  silently fail to resolve the field's value. Each instance is only warned about once per  `init_state`, so that a field accessed by multiple sources during a single settings  resolution doesn't emit duplicate warnings.  """ if getattr(field_info, '_complete', True): return warned_ids = init_state.setdefault('field_info_ids', set()) if id(field_info) in warned_ids: return warned_ids.add(id(field_info)) > warnings.warn( f'Field {field_name!r} has an incomplete definition: its annotation contains an unresolved ' 'forward reference, so settings sources may fail to correctly resolve its value. ' 'Call `model_rebuild()` on the model where the field is defined, once all the referenced ' 'types are defined.', IncompleteFieldDefinitionWarning, ) E pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifespan' has an incomplete definition: its annotation contains an unresolved forward reference, so settings sources may fail to correctly resolve its value. Call `model_rebuild()` on the model where the field is defined, once all the referenced types are defined. /usr/lib/python3/dist-packages/pydantic_settings/sources/utils.py:47: IncompleteFieldDefinitionWarning _________________ TestToolMetadata.test_metadata_in_list_tools _________________ [gw0] linux -- Python 3.14.7 /usr/bin/python3.14 self = @pytest.mark.anyio async def test_metadata_in_list_tools(self):  """Test that metadata is included in MCPTool when listing tools."""  > app = FastMCP() ^^^^^^^^^ tests/server/fastmcp/test_tool_manager.py:697: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ mcp/server/fastmcp/server.py:185: in __init__ self.settings = Settings( /usr/lib/python3/dist-packages/pydantic_settings/main.py:229: in __init__ else __pydantic_self__.__class__._settings_init_sources( /usr/lib/python3/dist-packages/pydantic_settings/main.py:397: in _settings_init_sources default_settings = DefaultSettingsSource( /usr/lib/python3/dist-packages/pydantic_settings/sources/base.py:287: in __init__ _warn_if_field_info_incomplete(field_info, field_name, self._init_state) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ field_info = FieldInfo(annotation=ForwardRef('Callable[[FastMCP[LifespanResultT]], AbstractAsyncContextManager[LifespanResultT]] | None', is_class=True), required=True) field_name = 'lifespan', init_state = {'field_info_ids': {140456318704880}} def _warn_if_field_info_incomplete(field_info: FieldInfo, field_name: str, init_state: InitState) -> None:  """Warn if the field is incomplete, i.e. its annotation contains unresolved forward references.   An incomplete `FieldInfo` instance is unsafe to inspect — any of its attributes (annotation,  aliases, metadata, default) may rely on the unresolved annotation, so settings sources may  silently fail to resolve the field's value. Each instance is only warned about once per  `init_state`, so that a field accessed by multiple sources during a single settings  resolution doesn't emit duplicate warnings.  """ if getattr(field_info, '_complete', True): return warned_ids = init_state.setdefault('field_info_ids', set()) if id(field_info) in warned_ids: return warned_ids.add(id(field_info)) > warnings.warn( f'Field {field_name!r} has an incomplete definition: its annotation contains an unresolved ' 'forward reference, so settings sources may fail to correctly resolve its value. ' 'Call `model_rebuild()` on the model where the field is defined, once all the referenced ' 'types are defined.', IncompleteFieldDefinitionWarning, ) E pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifespan' has an incomplete definition: its annotation contains an unresolved forward reference, so settings sources may fail to correctly resolve its value. Call `model_rebuild()` on the model where the field is defined, once all the referenced types are defined. /usr/lib/python3/dist-packages/pydantic_settings/sources/utils.py:47: IncompleteFieldDefinitionWarning _________ TestToolMetadata.test_multiple_tools_with_different_metadata _________ [gw0] linux -- Python 3.14.7 /usr/bin/python3.14 self = @pytest.mark.anyio async def test_multiple_tools_with_different_metadata(self):  """Test multiple tools with different metadata values."""  > app = FastMCP() ^^^^^^^^^ tests/server/fastmcp/test_tool_manager.py:718: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ mcp/server/fastmcp/server.py:185: in __init__ self.settings = Settings( /usr/lib/python3/dist-packages/pydantic_settings/main.py:229: in __init__ else __pydantic_self__.__class__._settings_init_sources( /usr/lib/python3/dist-packages/pydantic_settings/main.py:397: in _settings_init_sources default_settings = DefaultSettingsSource( /usr/lib/python3/dist-packages/pydantic_settings/sources/base.py:287: in __init__ _warn_if_field_info_incomplete(field_info, field_name, self._init_state) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ field_info = FieldInfo(annotation=ForwardRef('Callable[[FastMCP[LifespanResultT]], AbstractAsyncContextManager[LifespanResultT]] | None', is_class=True), required=True) field_name = 'lifespan', init_state = {'field_info_ids': {140456318704880}} def _warn_if_field_info_incomplete(field_info: FieldInfo, field_name: str, init_state: InitState) -> None:  """Warn if the field is incomplete, i.e. its annotation contains unresolved forward references.   An incomplete `FieldInfo` instance is unsafe to inspect — any of its attributes (annotation,  aliases, metadata, default) may rely on the unresolved annotation, so settings sources may  silently fail to resolve the field's value. Each instance is only warned about once per  `init_state`, so that a field accessed by multiple sources during a single settings  resolution doesn't emit duplicate warnings.  """ if getattr(field_info, '_complete', True): return warned_ids = init_state.setdefault('field_info_ids', set()) if id(field_info) in warned_ids: return warned_ids.add(id(field_info)) > warnings.warn( f'Field {field_name!r} has an incomplete definition: its annotation contains an unresolved ' 'forward reference, so settings sources may fail to correctly resolve its value. ' 'Call `model_rebuild()` on the model where the field is defined, once all the referenced ' 'types are defined.', IncompleteFieldDefinitionWarning, ) E pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifespan' has an incomplete definition: its annotation contains an unresolved forward reference, so settings sources may fail to correctly resolve its value. Call `model_rebuild()` on the model where the field is defined, once all the referenced types are defined. /usr/lib/python3/dist-packages/pydantic_settings/sources/utils.py:47: IncompleteFieldDefinitionWarning _______________ TestToolMetadata.test_metadata_with_annotations ________________ [gw0] linux -- Python 3.14.7 /usr/bin/python3.14 self = @pytest.mark.anyio async def test_metadata_with_annotations(self):  """Test that metadata and annotations can coexist."""  > app = FastMCP() ^^^^^^^^^ tests/server/fastmcp/test_tool_manager.py:794: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ mcp/server/fastmcp/server.py:185: in __init__ self.settings = Settings( /usr/lib/python3/dist-packages/pydantic_settings/main.py:229: in __init__ else __pydantic_self__.__class__._settings_init_sources( /usr/lib/python3/dist-packages/pydantic_settings/main.py:397: in _settings_init_sources default_settings = DefaultSettingsSource( /usr/lib/python3/dist-packages/pydantic_settings/sources/base.py:287: in __init__ _warn_if_field_info_incomplete(field_info, field_name, self._init_state) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ field_info = FieldInfo(annotation=ForwardRef('Callable[[FastMCP[LifespanResultT]], AbstractAsyncContextManager[LifespanResultT]] | None', is_class=True), required=True) field_name = 'lifespan', init_state = {'field_info_ids': {140456318704880}} def _warn_if_field_info_incomplete(field_info: FieldInfo, field_name: str, init_state: InitState) -> None:  """Warn if the field is incomplete, i.e. its annotation contains unresolved forward references.   An incomplete `FieldInfo` instance is unsafe to inspect — any of its attributes (annotation,  aliases, metadata, default) may rely on the unresolved annotation, so settings sources may  silently fail to resolve the field's value. Each instance is only warned about once per  `init_state`, so that a field accessed by multiple sources during a single settings  resolution doesn't emit duplicate warnings.  """ if getattr(field_info, '_complete', True): return warned_ids = init_state.setdefault('field_info_ids', set()) if id(field_info) in warned_ids: return warned_ids.add(id(field_info)) > warnings.warn( f'Field {field_name!r} has an incomplete definition: its annotation contains an unresolved ' 'forward reference, so settings sources may fail to correctly resolve its value. ' 'Call `model_rebuild()` on the model where the field is defined, once all the referenced ' 'types are defined.', IncompleteFieldDefinitionWarning, ) E pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifespan' has an incomplete definition: its annotation contains an unresolved forward reference, so settings sources may fail to correctly resolve its value. Call `model_rebuild()` on the model where the field is defined, once all the referenced types are defined. /usr/lib/python3/dist-packages/pydantic_settings/sources/utils.py:47: IncompleteFieldDefinitionWarning _________________________ test_url_elicitation_accept __________________________ [gw0] linux -- Python 3.14.7 /usr/bin/python3.14 @pytest.mark.anyio async def test_url_elicitation_accept():  """Test URL mode elicitation with user acceptance.""" > mcp = FastMCP(name="URLElicitationServer") ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ tests/server/fastmcp/test_url_elicitation.py:19: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ mcp/server/fastmcp/server.py:185: in __init__ self.settings = Settings( /usr/lib/python3/dist-packages/pydantic_settings/main.py:229: in __init__ else __pydantic_self__.__class__._settings_init_sources( /usr/lib/python3/dist-packages/pydantic_settings/main.py:397: in _settings_init_sources default_settings = DefaultSettingsSource( /usr/lib/python3/dist-packages/pydantic_settings/sources/base.py:287: in __init__ _warn_if_field_info_incomplete(field_info, field_name, self._init_state) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ field_info = FieldInfo(annotation=ForwardRef('Callable[[FastMCP[LifespanResultT]], AbstractAsyncContextManager[LifespanResultT]] | None', is_class=True), required=True) field_name = 'lifespan', init_state = {'field_info_ids': {140456318704880}} def _warn_if_field_info_incomplete(field_info: FieldInfo, field_name: str, init_state: InitState) -> None:  """Warn if the field is incomplete, i.e. its annotation contains unresolved forward references.   An incomplete `FieldInfo` instance is unsafe to inspect — any of its attributes (annotation,  aliases, metadata, default) may rely on the unresolved annotation, so settings sources may  silently fail to resolve the field's value. Each instance is only warned about once per  `init_state`, so that a field accessed by multiple sources during a single settings  resolution doesn't emit duplicate warnings.  """ if getattr(field_info, '_complete', True): return warned_ids = init_state.setdefault('field_info_ids', set()) if id(field_info) in warned_ids: return warned_ids.add(id(field_info)) > warnings.warn( f'Field {field_name!r} has an incomplete definition: its annotation contains an unresolved ' 'forward reference, so settings sources may fail to correctly resolve its value. ' 'Call `model_rebuild()` on the model where the field is defined, once all the referenced ' 'types are defined.', IncompleteFieldDefinitionWarning, ) E pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifespan' has an incomplete definition: its annotation contains an unresolved forward reference, so settings sources may fail to correctly resolve its value. Call `model_rebuild()` on the model where the field is defined, once all the referenced types are defined. /usr/lib/python3/dist-packages/pydantic_settings/sources/utils.py:47: IncompleteFieldDefinitionWarning _________________________ test_url_elicitation_decline _________________________ [gw0] linux -- Python 3.14.7 /usr/bin/python3.14 @pytest.mark.anyio async def test_url_elicitation_decline():  """Test URL mode elicitation with user declining.""" > mcp = FastMCP(name="URLElicitationDeclineServer") ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ tests/server/fastmcp/test_url_elicitation.py:53: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ mcp/server/fastmcp/server.py:185: in __init__ self.settings = Settings( /usr/lib/python3/dist-packages/pydantic_settings/main.py:229: in __init__ else __pydantic_self__.__class__._settings_init_sources( /usr/lib/python3/dist-packages/pydantic_settings/main.py:397: in _settings_init_sources default_settings = DefaultSettingsSource( /usr/lib/python3/dist-packages/pydantic_settings/sources/base.py:287: in __init__ _warn_if_field_info_incomplete(field_info, field_name, self._init_state) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ field_info = FieldInfo(annotation=ForwardRef('Callable[[FastMCP[LifespanResultT]], AbstractAsyncContextManager[LifespanResultT]] | None', is_class=True), required=True) field_name = 'lifespan', init_state = {'field_info_ids': {140456318704880}} def _warn_if_field_info_incomplete(field_info: FieldInfo, field_name: str, init_state: InitState) -> None:  """Warn if the field is incomplete, i.e. its annotation contains unresolved forward references.   An incomplete `FieldInfo` instance is unsafe to inspect — any of its attributes (annotation,  aliases, metadata, default) may rely on the unresolved annotation, so settings sources may  silently fail to resolve the field's value. Each instance is only warned about once per  `init_state`, so that a field accessed by multiple sources during a single settings  resolution doesn't emit duplicate warnings.  """ if getattr(field_info, '_complete', True): return warned_ids = init_state.setdefault('field_info_ids', set()) if id(field_info) in warned_ids: return warned_ids.add(id(field_info)) > warnings.warn( f'Field {field_name!r} has an incomplete definition: its annotation contains an unresolved ' 'forward reference, so settings sources may fail to correctly resolve its value. ' 'Call `model_rebuild()` on the model where the field is defined, once all the referenced ' 'types are defined.', IncompleteFieldDefinitionWarning, ) E pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifespan' has an incomplete definition: its annotation contains an unresolved forward reference, so settings sources may fail to correctly resolve its value. Call `model_rebuild()` on the model where the field is defined, once all the referenced types are defined. /usr/lib/python3/dist-packages/pydantic_settings/sources/utils.py:47: IncompleteFieldDefinitionWarning _________________________ test_url_elicitation_cancel __________________________ [gw0] linux -- Python 3.14.7 /usr/bin/python3.14 @pytest.mark.anyio async def test_url_elicitation_cancel():  """Test URL mode elicitation with user cancelling.""" > mcp = FastMCP(name="URLElicitationCancelServer") ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ tests/server/fastmcp/test_url_elicitation.py:83: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ mcp/server/fastmcp/server.py:185: in __init__ self.settings = Settings( /usr/lib/python3/dist-packages/pydantic_settings/main.py:229: in __init__ else __pydantic_self__.__class__._settings_init_sources( /usr/lib/python3/dist-packages/pydantic_settings/main.py:397: in _settings_init_sources default_settings = DefaultSettingsSource( /usr/lib/python3/dist-packages/pydantic_settings/sources/base.py:287: in __init__ _warn_if_field_info_incomplete(field_info, field_name, self._init_state) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ field_info = FieldInfo(annotation=ForwardRef('Callable[[FastMCP[LifespanResultT]], AbstractAsyncContextManager[LifespanResultT]] | None', is_class=True), required=True) field_name = 'lifespan', init_state = {'field_info_ids': {140456318704880}} def _warn_if_field_info_incomplete(field_info: FieldInfo, field_name: str, init_state: InitState) -> None:  """Warn if the field is incomplete, i.e. its annotation contains unresolved forward references.   An incomplete `FieldInfo` instance is unsafe to inspect — any of its attributes (annotation,  aliases, metadata, default) may rely on the unresolved annotation, so settings sources may  silently fail to resolve the field's value. Each instance is only warned about once per  `init_state`, so that a field accessed by multiple sources during a single settings  resolution doesn't emit duplicate warnings.  """ if getattr(field_info, '_complete', True): return warned_ids = init_state.setdefault('field_info_ids', set()) if id(field_info) in warned_ids: return warned_ids.add(id(field_info)) > warnings.warn( f'Field {field_name!r} has an incomplete definition: its annotation contains an unresolved ' 'forward reference, so settings sources may fail to correctly resolve its value. ' 'Call `model_rebuild()` on the model where the field is defined, once all the referenced ' 'types are defined.', IncompleteFieldDefinitionWarning, ) E pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifespan' has an incomplete definition: its annotation contains an unresolved forward reference, so settings sources may fail to correctly resolve its value. Call `model_rebuild()` on the model where the field is defined, once all the referenced types are defined. /usr/lib/python3/dist-packages/pydantic_settings/sources/utils.py:47: IncompleteFieldDefinitionWarning _____________________ test_url_elicitation_helper_function _____________________ [gw0] linux -- Python 3.14.7 /usr/bin/python3.14 @pytest.mark.anyio async def test_url_elicitation_helper_function():  """Test the elicit_url helper function.""" from mcp.server.elicitation import elicit_url  > mcp = FastMCP(name="URLElicitationHelperServer") ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ tests/server/fastmcp/test_url_elicitation.py:115: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ mcp/server/fastmcp/server.py:185: in __init__ self.settings = Settings( /usr/lib/python3/dist-packages/pydantic_settings/main.py:229: in __init__ else __pydantic_self__.__class__._settings_init_sources( /usr/lib/python3/dist-packages/pydantic_settings/main.py:397: in _settings_init_sources default_settings = DefaultSettingsSource( /usr/lib/python3/dist-packages/pydantic_settings/sources/base.py:287: in __init__ _warn_if_field_info_incomplete(field_info, field_name, self._init_state) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ field_info = FieldInfo(annotation=ForwardRef('Callable[[FastMCP[LifespanResultT]], AbstractAsyncContextManager[LifespanResultT]] | None', is_class=True), required=True) field_name = 'lifespan', init_state = {'field_info_ids': {140456318704880}} def _warn_if_field_info_incomplete(field_info: FieldInfo, field_name: str, init_state: InitState) -> None:  """Warn if the field is incomplete, i.e. its annotation contains unresolved forward references.   An incomplete `FieldInfo` instance is unsafe to inspect — any of its attributes (annotation,  aliases, metadata, default) may rely on the unresolved annotation, so settings sources may  silently fail to resolve the field's value. Each instance is only warned about once per  `init_state`, so that a field accessed by multiple sources during a single settings  resolution doesn't emit duplicate warnings.  """ if getattr(field_info, '_complete', True): return warned_ids = init_state.setdefault('field_info_ids', set()) if id(field_info) in warned_ids: return warned_ids.add(id(field_info)) > warnings.warn( f'Field {field_name!r} has an incomplete definition: its annotation contains an unresolved ' 'forward reference, so settings sources may fail to correctly resolve its value. ' 'Call `model_rebuild()` on the model where the field is defined, once all the referenced ' 'types are defined.', IncompleteFieldDefinitionWarning, ) E pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifespan' has an incomplete definition: its annotation contains an unresolved forward reference, so settings sources may fail to correctly resolve its value. Call `model_rebuild()` on the model where the field is defined, once all the referenced types are defined. /usr/lib/python3/dist-packages/pydantic_settings/sources/utils.py:47: IncompleteFieldDefinitionWarning _______________________ test_url_no_content_in_response ________________________ [gw0] linux -- Python 3.14.7 /usr/bin/python3.14 @pytest.mark.anyio async def test_url_no_content_in_response():  """Test that URL mode elicitation responses don't include content field.""" > mcp = FastMCP(name="URLContentCheckServer") ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ tests/server/fastmcp/test_url_elicitation.py:145: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ mcp/server/fastmcp/server.py:185: in __init__ self.settings = Settings( /usr/lib/python3/dist-packages/pydantic_settings/main.py:229: in __init__ else __pydantic_self__.__class__._settings_init_sources( /usr/lib/python3/dist-packages/pydantic_settings/main.py:397: in _settings_init_sources default_settings = DefaultSettingsSource( /usr/lib/python3/dist-packages/pydantic_settings/sources/base.py:287: in __init__ _warn_if_field_info_incomplete(field_info, field_name, self._init_state) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ field_info = FieldInfo(annotation=ForwardRef('Callable[[FastMCP[LifespanResultT]], AbstractAsyncContextManager[LifespanResultT]] | None', is_class=True), required=True) field_name = 'lifespan', init_state = {'field_info_ids': {140456318704880}} def _warn_if_field_info_incomplete(field_info: FieldInfo, field_name: str, init_state: InitState) -> None:  """Warn if the field is incomplete, i.e. its annotation contains unresolved forward references.   An incomplete `FieldInfo` instance is unsafe to inspect — any of its attributes (annotation,  aliases, metadata, default) may rely on the unresolved annotation, so settings sources may  silently fail to resolve the field's value. Each instance is only warned about once per  `init_state`, so that a field accessed by multiple sources during a single settings  resolution doesn't emit duplicate warnings.  """ if getattr(field_info, '_complete', True): return warned_ids = init_state.setdefault('field_info_ids', set()) if id(field_info) in warned_ids: return warned_ids.add(id(field_info)) > warnings.warn( f'Field {field_name!r} has an incomplete definition: its annotation contains an unresolved ' 'forward reference, so settings sources may fail to correctly resolve its value. ' 'Call `model_rebuild()` on the model where the field is defined, once all the referenced ' 'types are defined.', IncompleteFieldDefinitionWarning, ) E pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifespan' has an incomplete definition: its annotation contains an unresolved forward reference, so settings sources may fail to correctly resolve its value. Call `model_rebuild()` on the model where the field is defined, once all the referenced types are defined. /usr/lib/python3/dist-packages/pydantic_settings/sources/utils.py:47: IncompleteFieldDefinitionWarning __________________________ test_form_mode_still_works __________________________ [gw0] linux -- Python 3.14.7 /usr/bin/python3.14 @pytest.mark.anyio async def test_form_mode_still_works():  """Ensure form mode elicitation still works after SEP 1036.""" from pydantic import BaseModel, Field  > mcp = FastMCP(name="FormModeBackwardCompatServer") ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ tests/server/fastmcp/test_url_elicitation.py:185: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ mcp/server/fastmcp/server.py:185: in __init__ self.settings = Settings( /usr/lib/python3/dist-packages/pydantic_settings/main.py:229: in __init__ else __pydantic_self__.__class__._settings_init_sources( /usr/lib/python3/dist-packages/pydantic_settings/main.py:397: in _settings_init_sources default_settings = DefaultSettingsSource( /usr/lib/python3/dist-packages/pydantic_settings/sources/base.py:287: in __init__ _warn_if_field_info_incomplete(field_info, field_name, self._init_state) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ field_info = FieldInfo(annotation=ForwardRef('Callable[[FastMCP[LifespanResultT]], AbstractAsyncContextManager[LifespanResultT]] | None', is_class=True), required=True) field_name = 'lifespan', init_state = {'field_info_ids': {140456318704880}} def _warn_if_field_info_incomplete(field_info: FieldInfo, field_name: str, init_state: InitState) -> None:  """Warn if the field is incomplete, i.e. its annotation contains unresolved forward references.   An incomplete `FieldInfo` instance is unsafe to inspect — any of its attributes (annotation,  aliases, metadata, default) may rely on the unresolved annotation, so settings sources may  silently fail to resolve the field's value. Each instance is only warned about once per  `init_state`, so that a field accessed by multiple sources during a single settings  resolution doesn't emit duplicate warnings.  """ if getattr(field_info, '_complete', True): return warned_ids = init_state.setdefault('field_info_ids', set()) if id(field_info) in warned_ids: return warned_ids.add(id(field_info)) > warnings.warn( f'Field {field_name!r} has an incomplete definition: its annotation contains an unresolved ' 'forward reference, so settings sources may fail to correctly resolve its value. ' 'Call `model_rebuild()` on the model where the field is defined, once all the referenced ' 'types are defined.', IncompleteFieldDefinitionWarning, ) E pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifespan' has an incomplete definition: its annotation contains an unresolved forward reference, so settings sources may fail to correctly resolve its value. Call `model_rebuild()` on the model where the field is defined, once all the referenced types are defined. /usr/lib/python3/dist-packages/pydantic_settings/sources/utils.py:47: IncompleteFieldDefinitionWarning ______________________ test_elicit_complete_notification _______________________ [gw0] linux -- Python 3.14.7 /usr/bin/python3.14 @pytest.mark.anyio async def test_elicit_complete_notification():  """Test that elicitation completion notifications can be sent and received.""" > mcp = FastMCP(name="ElicitCompleteServer") ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ tests/server/fastmcp/test_url_elicitation.py:220: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ mcp/server/fastmcp/server.py:185: in __init__ self.settings = Settings( /usr/lib/python3/dist-packages/pydantic_settings/main.py:229: in __init__ else __pydantic_self__.__class__._settings_init_sources( /usr/lib/python3/dist-packages/pydantic_settings/main.py:397: in _settings_init_sources default_settings = DefaultSettingsSource( /usr/lib/python3/dist-packages/pydantic_settings/sources/base.py:287: in __init__ _warn_if_field_info_incomplete(field_info, field_name, self._init_state) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ field_info = FieldInfo(annotation=ForwardRef('Callable[[FastMCP[LifespanResultT]], AbstractAsyncContextManager[LifespanResultT]] | None', is_class=True), required=True) field_name = 'lifespan', init_state = {'field_info_ids': {140456318704880}} def _warn_if_field_info_incomplete(field_info: FieldInfo, field_name: str, init_state: InitState) -> None:  """Warn if the field is incomplete, i.e. its annotation contains unresolved forward references.   An incomplete `FieldInfo` instance is unsafe to inspect — any of its attributes (annotation,  aliases, metadata, default) may rely on the unresolved annotation, so settings sources may  silently fail to resolve the field's value. Each instance is only warned about once per  `init_state`, so that a field accessed by multiple sources during a single settings  resolution doesn't emit duplicate warnings.  """ if getattr(field_info, '_complete', True): return warned_ids = init_state.setdefault('field_info_ids', set()) if id(field_info) in warned_ids: return warned_ids.add(id(field_info)) > warnings.warn( f'Field {field_name!r} has an incomplete definition: its annotation contains an unresolved ' 'forward reference, so settings sources may fail to correctly resolve its value. ' 'Call `model_rebuild()` on the model where the field is defined, once all the referenced ' 'types are defined.', IncompleteFieldDefinitionWarning, ) E pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifespan' has an incomplete definition: its annotation contains an unresolved forward reference, so settings sources may fail to correctly resolve its value. Call `model_rebuild()` on the model where the field is defined, once all the referenced types are defined. /usr/lib/python3/dist-packages/pydantic_settings/sources/utils.py:47: IncompleteFieldDefinitionWarning ________________________ test_elicit_url_typed_results _________________________ [gw0] linux -- Python 3.14.7 /usr/bin/python3.14 @pytest.mark.anyio async def test_elicit_url_typed_results():  """Test that elicit_url returns properly typed result objects.""" from mcp.server.elicitation import elicit_url  > mcp = FastMCP(name="TypedResultsServer") ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ tests/server/fastmcp/test_url_elicitation.py:272: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ mcp/server/fastmcp/server.py:185: in __init__ self.settings = Settings( /usr/lib/python3/dist-packages/pydantic_settings/main.py:229: in __init__ else __pydantic_self__.__class__._settings_init_sources( /usr/lib/python3/dist-packages/pydantic_settings/main.py:397: in _settings_init_sources default_settings = DefaultSettingsSource( /usr/lib/python3/dist-packages/pydantic_settings/sources/base.py:287: in __init__ _warn_if_field_info_incomplete(field_info, field_name, self._init_state) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ field_info = FieldInfo(annotation=ForwardRef('Callable[[FastMCP[LifespanResultT]], AbstractAsyncContextManager[LifespanResultT]] | None', is_class=True), required=True) field_name = 'lifespan', init_state = {'field_info_ids': {140456318704880}} def _warn_if_field_info_incomplete(field_info: FieldInfo, field_name: str, init_state: InitState) -> None:  """Warn if the field is incomplete, i.e. its annotation contains unresolved forward references.   An incomplete `FieldInfo` instance is unsafe to inspect — any of its attributes (annotation,  aliases, metadata, default) may rely on the unresolved annotation, so settings sources may  silently fail to resolve the field's value. Each instance is only warned about once per  `init_state`, so that a field accessed by multiple sources during a single settings  resolution doesn't emit duplicate warnings.  """ if getattr(field_info, '_complete', True): return warned_ids = init_state.setdefault('field_info_ids', set()) if id(field_info) in warned_ids: return warned_ids.add(id(field_info)) > warnings.warn( f'Field {field_name!r} has an incomplete definition: its annotation contains an unresolved ' 'forward reference, so settings sources may fail to correctly resolve its value. ' 'Call `model_rebuild()` on the model where the field is defined, once all the referenced ' 'types are defined.', IncompleteFieldDefinitionWarning, ) E pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifespan' has an incomplete definition: its annotation contains an unresolved forward reference, so settings sources may fail to correctly resolve its value. Call `model_rebuild()` on the model where the field is defined, once all the referenced types are defined. /usr/lib/python3/dist-packages/pydantic_settings/sources/utils.py:47: IncompleteFieldDefinitionWarning ________________________ test_deprecated_elicit_method _________________________ [gw0] linux -- Python 3.14.7 /usr/bin/python3.14 @pytest.mark.anyio async def test_deprecated_elicit_method():  """Test the deprecated elicit() method for backward compatibility.""" from pydantic import BaseModel, Field  > mcp = FastMCP(name="DeprecatedElicitServer") ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ tests/server/fastmcp/test_url_elicitation.py:334: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ mcp/server/fastmcp/server.py:185: in __init__ self.settings = Settings( /usr/lib/python3/dist-packages/pydantic_settings/main.py:229: in __init__ else __pydantic_self__.__class__._settings_init_sources( /usr/lib/python3/dist-packages/pydantic_settings/main.py:397: in _settings_init_sources default_settings = DefaultSettingsSource( /usr/lib/python3/dist-packages/pydantic_settings/sources/base.py:287: in __init__ _warn_if_field_info_incomplete(field_info, field_name, self._init_state) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ field_info = FieldInfo(annotation=ForwardRef('Callable[[FastMCP[LifespanResultT]], AbstractAsyncContextManager[LifespanResultT]] | None', is_class=True), required=True) field_name = 'lifespan', init_state = {'field_info_ids': {140456318704880}} def _warn_if_field_info_incomplete(field_info: FieldInfo, field_name: str, init_state: InitState) -> None:  """Warn if the field is incomplete, i.e. its annotation contains unresolved forward references.   An incomplete `FieldInfo` instance is unsafe to inspect — any of its attributes (annotation,  aliases, metadata, default) may rely on the unresolved annotation, so settings sources may  silently fail to resolve the field's value. Each instance is only warned about once per  `init_state`, so that a field accessed by multiple sources during a single settings  resolution doesn't emit duplicate warnings.  """ if getattr(field_info, '_complete', True): return warned_ids = init_state.setdefault('field_info_ids', set()) if id(field_info) in warned_ids: return warned_ids.add(id(field_info)) > warnings.warn( f'Field {field_name!r} has an incomplete definition: its annotation contains an unresolved ' 'forward reference, so settings sources may fail to correctly resolve its value. ' 'Call `model_rebuild()` on the model where the field is defined, once all the referenced ' 'types are defined.', IncompleteFieldDefinitionWarning, ) E pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifespan' has an incomplete definition: its annotation contains an unresolved forward reference, so settings sources may fail to correctly resolve its value. Call `model_rebuild()` on the model where the field is defined, once all the referenced types are defined. /usr/lib/python3/dist-packages/pydantic_settings/sources/utils.py:47: IncompleteFieldDefinitionWarning ____________________ test_ctx_elicit_url_convenience_method ____________________ [gw0] linux -- Python 3.14.7 /usr/bin/python3.14 @pytest.mark.anyio async def test_ctx_elicit_url_convenience_method():  """Test the ctx.elicit_url() convenience method (vs ctx.session.elicit_url()).""" > mcp = FastMCP(name="CtxElicitUrlServer") ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ tests/server/fastmcp/test_url_elicitation.py:371: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ mcp/server/fastmcp/server.py:185: in __init__ self.settings = Settings( /usr/lib/python3/dist-packages/pydantic_settings/main.py:229: in __init__ else __pydantic_self__.__class__._settings_init_sources( /usr/lib/python3/dist-packages/pydantic_settings/main.py:397: in _settings_init_sources default_settings = DefaultSettingsSource( /usr/lib/python3/dist-packages/pydantic_settings/sources/base.py:287: in __init__ _warn_if_field_info_incomplete(field_info, field_name, self._init_state) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ field_info = FieldInfo(annotation=ForwardRef('Callable[[FastMCP[LifespanResultT]], AbstractAsyncContextManager[LifespanResultT]] | None', is_class=True), required=True) field_name = 'lifespan', init_state = {'field_info_ids': {140456318704880}} def _warn_if_field_info_incomplete(field_info: FieldInfo, field_name: str, init_state: InitState) -> None:  """Warn if the field is incomplete, i.e. its annotation contains unresolved forward references.   An incomplete `FieldInfo` instance is unsafe to inspect — any of its attributes (annotation,  aliases, metadata, default) may rely on the unresolved annotation, so settings sources may  silently fail to resolve the field's value. Each instance is only warned about once per  `init_state`, so that a field accessed by multiple sources during a single settings  resolution doesn't emit duplicate warnings.  """ if getattr(field_info, '_complete', True): return warned_ids = init_state.setdefault('field_info_ids', set()) if id(field_info) in warned_ids: return warned_ids.add(id(field_info)) > warnings.warn( f'Field {field_name!r} has an incomplete definition: its annotation contains an unresolved ' 'forward reference, so settings sources may fail to correctly resolve its value. ' 'Call `model_rebuild()` on the model where the field is defined, once all the referenced ' 'types are defined.', IncompleteFieldDefinitionWarning, ) E pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifespan' has an incomplete definition: its annotation contains an unresolved forward reference, so settings sources may fail to correctly resolve its value. Call `model_rebuild()` on the model where the field is defined, once all the referenced types are defined. /usr/lib/python3/dist-packages/pydantic_settings/sources/utils.py:47: IncompleteFieldDefinitionWarning _________________ test_url_elicitation_error_thrown_from_tool __________________ [gw0] linux -- Python 3.14.7 /usr/bin/python3.14 @pytest.mark.anyio async def test_url_elicitation_error_thrown_from_tool():  """Test that UrlElicitationRequiredError raised from a tool is received as McpError by client.""" > mcp = FastMCP(name="UrlElicitationErrorServer") ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ tests/server/fastmcp/test_url_elicitation_error_throw.py:15: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ mcp/server/fastmcp/server.py:185: in __init__ self.settings = Settings( /usr/lib/python3/dist-packages/pydantic_settings/main.py:229: in __init__ else __pydantic_self__.__class__._settings_init_sources( /usr/lib/python3/dist-packages/pydantic_settings/main.py:397: in _settings_init_sources default_settings = DefaultSettingsSource( /usr/lib/python3/dist-packages/pydantic_settings/sources/base.py:287: in __init__ _warn_if_field_info_incomplete(field_info, field_name, self._init_state) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ field_info = FieldInfo(annotation=ForwardRef('Callable[[FastMCP[LifespanResultT]], AbstractAsyncContextManager[LifespanResultT]] | None', is_class=True), required=True) field_name = 'lifespan', init_state = {'field_info_ids': {140456318704880}} def _warn_if_field_info_incomplete(field_info: FieldInfo, field_name: str, init_state: InitState) -> None:  """Warn if the field is incomplete, i.e. its annotation contains unresolved forward references.   An incomplete `FieldInfo` instance is unsafe to inspect — any of its attributes (annotation,  aliases, metadata, default) may rely on the unresolved annotation, so settings sources may  silently fail to resolve the field's value. Each instance is only warned about once per  `init_state`, so that a field accessed by multiple sources during a single settings  resolution doesn't emit duplicate warnings.  """ if getattr(field_info, '_complete', True): return warned_ids = init_state.setdefault('field_info_ids', set()) if id(field_info) in warned_ids: return warned_ids.add(id(field_info)) > warnings.warn( f'Field {field_name!r} has an incomplete definition: its annotation contains an unresolved ' 'forward reference, so settings sources may fail to correctly resolve its value. ' 'Call `model_rebuild()` on the model where the field is defined, once all the referenced ' 'types are defined.', IncompleteFieldDefinitionWarning, ) E pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifespan' has an incomplete definition: its annotation contains an unresolved forward reference, so settings sources may fail to correctly resolve its value. Call `model_rebuild()` on the model where the field is defined, once all the referenced types are defined. /usr/lib/python3/dist-packages/pydantic_settings/sources/utils.py:47: IncompleteFieldDefinitionWarning ____________________ test_url_elicitation_error_from_error _____________________ [gw0] linux -- Python 3.14.7 /usr/bin/python3.14 @pytest.mark.anyio async def test_url_elicitation_error_from_error():  """Test that client can reconstruct UrlElicitationRequiredError from McpError.""" > mcp = FastMCP(name="UrlElicitationErrorServer") ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ tests/server/fastmcp/test_url_elicitation_error_throw.py:56: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ mcp/server/fastmcp/server.py:185: in __init__ self.settings = Settings( /usr/lib/python3/dist-packages/pydantic_settings/main.py:229: in __init__ else __pydantic_self__.__class__._settings_init_sources( /usr/lib/python3/dist-packages/pydantic_settings/main.py:397: in _settings_init_sources default_settings = DefaultSettingsSource( /usr/lib/python3/dist-packages/pydantic_settings/sources/base.py:287: in __init__ _warn_if_field_info_incomplete(field_info, field_name, self._init_state) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ field_info = FieldInfo(annotation=ForwardRef('Callable[[FastMCP[LifespanResultT]], AbstractAsyncContextManager[LifespanResultT]] | None', is_class=True), required=True) field_name = 'lifespan', init_state = {'field_info_ids': {140456318704880}} def _warn_if_field_info_incomplete(field_info: FieldInfo, field_name: str, init_state: InitState) -> None:  """Warn if the field is incomplete, i.e. its annotation contains unresolved forward references.   An incomplete `FieldInfo` instance is unsafe to inspect — any of its attributes (annotation,  aliases, metadata, default) may rely on the unresolved annotation, so settings sources may  silently fail to resolve the field's value. Each instance is only warned about once per  `init_state`, so that a field accessed by multiple sources during a single settings  resolution doesn't emit duplicate warnings.  """ if getattr(field_info, '_complete', True): return warned_ids = init_state.setdefault('field_info_ids', set()) if id(field_info) in warned_ids: return warned_ids.add(id(field_info)) > warnings.warn( f'Field {field_name!r} has an incomplete definition: its annotation contains an unresolved ' 'forward reference, so settings sources may fail to correctly resolve its value. ' 'Call `model_rebuild()` on the model where the field is defined, once all the referenced ' 'types are defined.', IncompleteFieldDefinitionWarning, ) E pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifespan' has an incomplete definition: its annotation contains an unresolved forward reference, so settings sources may fail to correctly resolve its value. Call `model_rebuild()` on the model where the field is defined, once all the referenced types are defined. /usr/lib/python3/dist-packages/pydantic_settings/sources/utils.py:47: IncompleteFieldDefinitionWarning _______________ test_normal_exceptions_still_return_error_result _______________ [gw0] linux -- Python 3.14.7 /usr/bin/python3.14 @pytest.mark.anyio async def test_normal_exceptions_still_return_error_result():  """Test that normal exceptions still return CallToolResult with isError=True.""" > mcp = FastMCP(name="NormalErrorServer") ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ tests/server/fastmcp/test_url_elicitation_error_throw.py:99: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ mcp/server/fastmcp/server.py:185: in __init__ self.settings = Settings( /usr/lib/python3/dist-packages/pydantic_settings/main.py:229: in __init__ else __pydantic_self__.__class__._settings_init_sources( /usr/lib/python3/dist-packages/pydantic_settings/main.py:397: in _settings_init_sources default_settings = DefaultSettingsSource( /usr/lib/python3/dist-packages/pydantic_settings/sources/base.py:287: in __init__ _warn_if_field_info_incomplete(field_info, field_name, self._init_state) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ field_info = FieldInfo(annotation=ForwardRef('Callable[[FastMCP[LifespanResultT]], AbstractAsyncContextManager[LifespanResultT]] | None', is_class=True), required=True) field_name = 'lifespan', init_state = {'field_info_ids': {140456318704880}} def _warn_if_field_info_incomplete(field_info: FieldInfo, field_name: str, init_state: InitState) -> None:  """Warn if the field is incomplete, i.e. its annotation contains unresolved forward references.   An incomplete `FieldInfo` instance is unsafe to inspect — any of its attributes (annotation,  aliases, metadata, default) may rely on the unresolved annotation, so settings sources may  silently fail to resolve the field's value. Each instance is only warned about once per  `init_state`, so that a field accessed by multiple sources during a single settings  resolution doesn't emit duplicate warnings.  """ if getattr(field_info, '_complete', True): return warned_ids = init_state.setdefault('field_info_ids', set()) if id(field_info) in warned_ids: return warned_ids.add(id(field_info)) > warnings.warn( f'Field {field_name!r} has an incomplete definition: its annotation contains an unresolved ' 'forward reference, so settings sources may fail to correctly resolve its value. ' 'Call `model_rebuild()` on the model where the field is defined, once all the referenced ' 'types are defined.', IncompleteFieldDefinitionWarning, ) E pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifespan' has an incomplete definition: its annotation contains an unresolved forward reference, so settings sources may fail to correctly resolve its value. Call `model_rebuild()` on the model where the field is defined, once all the referenced types are defined. /usr/lib/python3/dist-packages/pydantic_settings/sources/utils.py:47: IncompleteFieldDefinitionWarning _________________________ test_fastmcp_server_lifespan _________________________ [gw0] linux -- Python 3.14.7 /usr/bin/python3.14 @pytest.mark.anyio async def test_fastmcp_server_lifespan():  """Test that lifespan works in FastMCP server."""  @asynccontextmanager async def test_lifespan(server: FastMCP) -> AsyncIterator[dict[str, bool]]:  """Test lifespan context that tracks startup/shutdown.""" context = {"started": False, "shutdown": False} try: context["started"] = True yield context finally: context["shutdown"] = True  > server = FastMCP("test", lifespan=test_lifespan) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ tests/server/test_lifespan.py:149: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ mcp/server/fastmcp/server.py:185: in __init__ self.settings = Settings( /usr/lib/python3/dist-packages/pydantic_settings/main.py:229: in __init__ else __pydantic_self__.__class__._settings_init_sources( /usr/lib/python3/dist-packages/pydantic_settings/main.py:397: in _settings_init_sources default_settings = DefaultSettingsSource( /usr/lib/python3/dist-packages/pydantic_settings/sources/base.py:287: in __init__ _warn_if_field_info_incomplete(field_info, field_name, self._init_state) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ field_info = FieldInfo(annotation=ForwardRef('Callable[[FastMCP[LifespanResultT]], AbstractAsyncContextManager[LifespanResultT]] | None', is_class=True), required=True) field_name = 'lifespan', init_state = {'field_info_ids': {140456318704880}} def _warn_if_field_info_incomplete(field_info: FieldInfo, field_name: str, init_state: InitState) -> None:  """Warn if the field is incomplete, i.e. its annotation contains unresolved forward references.   An incomplete `FieldInfo` instance is unsafe to inspect — any of its attributes (annotation,  aliases, metadata, default) may rely on the unresolved annotation, so settings sources may  silently fail to resolve the field's value. Each instance is only warned about once per  `init_state`, so that a field accessed by multiple sources during a single settings  resolution doesn't emit duplicate warnings.  """ if getattr(field_info, '_complete', True): return warned_ids = init_state.setdefault('field_info_ids', set()) if id(field_info) in warned_ids: return warned_ids.add(id(field_info)) > warnings.warn( f'Field {field_name!r} has an incomplete definition: its annotation contains an unresolved ' 'forward reference, so settings sources may fail to correctly resolve its value. ' 'Call `model_rebuild()` on the model where the field is defined, once all the referenced ' 'types are defined.', IncompleteFieldDefinitionWarning, ) E pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifespan' has an incomplete definition: its annotation contains an unresolved forward reference, so settings sources may fail to correctly resolve its value. Call `model_rebuild()` on the model where the field is defined, once all the referenced types are defined. /usr/lib/python3/dist-packages/pydantic_settings/sources/utils.py:47: IncompleteFieldDefinitionWarning =========================== short test summary info ============================ FAILED tests/client/test_list_roots_callback.py::test_list_roots_callback - pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifes... FAILED tests/client/test_logging_callback.py::test_logging_callback - pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifes... FAILED tests/client/test_sampling_callback.py::test_sampling_callback - pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifes... FAILED tests/client/test_sampling_callback.py::test_create_message_backwards_compat_single_content - pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifes... FAILED tests/issues/test_100_tool_listing.py::test_list_tools_returns_all_tools - pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifes... FAILED tests/issues/test_129_resource_templates.py::test_resource_templates - pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifes... FAILED tests/issues/test_1338_icons_and_metadata.py::test_icons_and_website_url - pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifes... FAILED tests/issues/test_1338_icons_and_metadata.py::test_multiple_icons - pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifes... FAILED tests/issues/test_1338_icons_and_metadata.py::test_no_icons_or_website - pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifes... FAILED tests/issues/test_141_resource_templates.py::test_resource_template_edge_cases - pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifes... FAILED tests/issues/test_141_resource_templates.py::test_resource_template_client_interaction - pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifes... FAILED tests/issues/test_152_resource_mime_type.py::test_fastmcp_resource_mime_type - pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifes... FAILED tests/issues/test_1754_mime_type_parameters.py::test_mime_type_with_parameters - pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifes... FAILED tests/issues/test_1754_mime_type_parameters.py::test_mime_type_with_parameters_and_space - pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifes... FAILED tests/issues/test_1754_mime_type_parameters.py::test_mime_type_with_multiple_parameters - pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifes... FAILED tests/issues/test_1754_mime_type_parameters.py::test_mime_type_preserved_in_read_resource - pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifes... FAILED tests/issues/test_188_concurrency.py::test_messages_are_executed_concurrently_tools - pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifes... FAILED tests/issues/test_188_concurrency.py::test_messages_are_executed_concurrently_tools_and_resources - pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifes... FAILED tests/server/fastmcp/resources/test_resource_template.py::TestResourceTemplateAnnotations::test_template_annotations_in_fastmcp - pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifes... FAILED tests/server/fastmcp/resources/test_resources.py::TestResourceAnnotations::test_resource_annotations_in_fastmcp - pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifes... FAILED tests/server/fastmcp/resources/test_resources.py::TestResourceAnnotations::test_resource_annotations_with_both_audiences - pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifes... FAILED tests/server/fastmcp/test_elicitation.py::test_stdio_elicitation - pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifes... FAILED tests/server/fastmcp/test_elicitation.py::test_stdio_elicitation_decline - pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifes... FAILED tests/server/fastmcp/test_elicitation.py::test_elicitation_schema_validation - pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifes... FAILED tests/server/fastmcp/test_elicitation.py::test_elicitation_with_optional_fields - pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifes... FAILED tests/server/fastmcp/test_elicitation.py::test_elicitation_with_default_values - pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifes... FAILED tests/server/fastmcp/test_elicitation.py::test_elicitation_with_enum_titles - pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifes... FAILED tests/server/fastmcp/test_parameter_descriptions.py::test_parameter_descriptions - pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifes... FAILED tests/server/fastmcp/test_server.py::TestServer::test_create_server - pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifes... FAILED tests/server/fastmcp/test_server.py::TestServer::test_normalize_path - pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifes... FAILED tests/server/fastmcp/test_server.py::TestServer::test_sse_app_with_mount_path - pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifes... FAILED tests/server/fastmcp/test_server.py::TestServer::test_starlette_routes_with_mount_path - pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifes... FAILED tests/server/fastmcp/test_server.py::TestServer::test_non_ascii_description - pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifes... FAILED tests/server/fastmcp/test_server.py::TestServer::test_add_tool_decorator - pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifes... FAILED tests/server/fastmcp/test_server.py::TestServer::test_add_tool_decorator_incorrect_usage - pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifes... FAILED tests/server/fastmcp/test_server.py::TestServer::test_add_resource_decorator - pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifes... FAILED tests/server/fastmcp/test_server.py::TestServer::test_add_resource_decorator_incorrect_usage - pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifes... FAILED tests/server/fastmcp/test_server.py::TestDnsRebindingProtection::test_auto_enabled_for_127_0_0_1 - pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifes... FAILED tests/server/fastmcp/test_server.py::TestDnsRebindingProtection::test_auto_enabled_for_localhost - pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifes... FAILED tests/server/fastmcp/test_server.py::TestDnsRebindingProtection::test_auto_enabled_for_ipv6_localhost - pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifes... FAILED tests/server/fastmcp/test_server.py::TestDnsRebindingProtection::test_not_auto_enabled_for_other_hosts - pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifes... FAILED tests/server/fastmcp/test_server.py::TestDnsRebindingProtection::test_explicit_settings_not_overridden - pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifes... FAILED tests/server/fastmcp/test_server.py::TestServerTools::test_add_tool - pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifes... FAILED tests/server/fastmcp/test_server.py::TestServerTools::test_list_tools - pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifes... FAILED tests/server/fastmcp/test_server.py::TestServerTools::test_call_tool - pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifes... FAILED tests/server/fastmcp/test_server.py::TestServerTools::test_tool_exception_handling - pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifes... FAILED tests/server/fastmcp/test_server.py::TestServerTools::test_tool_error_handling - pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifes... FAILED tests/server/fastmcp/test_server.py::TestServerTools::test_tool_error_details - pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifes... FAILED tests/server/fastmcp/test_server.py::TestServerTools::test_tool_return_value_conversion - pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifes... FAILED tests/server/fastmcp/test_server.py::TestServerTools::test_tool_image_helper - pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifes... FAILED tests/server/fastmcp/test_server.py::TestServerTools::test_tool_audio_helper - pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifes... FAILED tests/server/fastmcp/test_server.py::TestServerTools::test_tool_audio_suffix_detection[test.wav-audio/wav] - pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifes... FAILED tests/server/fastmcp/test_server.py::TestServerTools::test_tool_audio_suffix_detection[test.mp3-audio/mpeg] - pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifes... FAILED tests/server/fastmcp/test_server.py::TestServerTools::test_tool_audio_suffix_detection[test.ogg-audio/ogg] - pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifes... FAILED tests/server/fastmcp/test_server.py::TestServerTools::test_tool_audio_suffix_detection[test.flac-audio/flac] - pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifes... FAILED tests/server/fastmcp/test_server.py::TestServerTools::test_tool_audio_suffix_detection[test.aac-audio/aac] - pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifes... FAILED tests/server/fastmcp/test_server.py::TestServerTools::test_tool_audio_suffix_detection[test.m4a-audio/mp4] - pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifes... FAILED tests/server/fastmcp/test_server.py::TestServerTools::test_tool_audio_suffix_detection[test.unknown-application/octet-stream] - pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifes... FAILED tests/server/fastmcp/test_server.py::TestServerTools::test_tool_mixed_content - pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifes... FAILED tests/server/fastmcp/test_server.py::TestServerTools::test_tool_mixed_list_with_audio_and_image - pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifes... FAILED tests/server/fastmcp/test_server.py::TestServerTools::test_tool_structured_output_basemodel - pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifes... FAILED tests/server/fastmcp/test_server.py::TestServerTools::test_tool_structured_output_primitive - pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifes... FAILED tests/server/fastmcp/test_server.py::TestServerTools::test_tool_structured_output_list - pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifes... FAILED tests/server/fastmcp/test_server.py::TestServerTools::test_tool_structured_output_server_side_validation_error - pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifes... FAILED tests/server/fastmcp/test_server.py::TestServerTools::test_tool_structured_output_dict_str_any - pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifes... FAILED tests/server/fastmcp/test_server.py::TestServerTools::test_tool_structured_output_dict_str_typed - pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifes... FAILED tests/server/fastmcp/test_server.py::TestServerTools::test_remove_tool - pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifes... FAILED tests/server/fastmcp/test_server.py::TestServerTools::test_remove_nonexistent_tool - pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifes... FAILED tests/server/fastmcp/test_server.py::TestServerTools::test_remove_tool_and_list - pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifes... FAILED tests/server/fastmcp/test_server.py::TestServerTools::test_remove_tool_and_call - pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifes... FAILED tests/server/fastmcp/test_server.py::TestServerResources::test_text_resource - pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifes... FAILED tests/server/fastmcp/test_server.py::TestServerResources::test_binary_resource - pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifes... FAILED tests/server/fastmcp/test_server.py::TestServerResources::test_file_resource_text - pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifes... FAILED tests/server/fastmcp/test_server.py::TestServerResources::test_file_resource_binary - pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifes... FAILED tests/server/fastmcp/test_server.py::TestServerResources::test_function_resource - pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifes... FAILED tests/server/fastmcp/test_server.py::TestServerResourceTemplates::test_resource_with_params - pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifes... FAILED tests/server/fastmcp/test_server.py::TestServerResourceTemplates::test_resource_with_uri_params - pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifes... FAILED tests/server/fastmcp/test_server.py::TestServerResourceTemplates::test_resource_with_untyped_params - pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifes... FAILED tests/server/fastmcp/test_server.py::TestServerResourceTemplates::test_resource_matching_params - pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifes... FAILED tests/server/fastmcp/test_server.py::TestServerResourceTemplates::test_resource_mismatched_params - pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifes... FAILED tests/server/fastmcp/test_server.py::TestServerResourceTemplates::test_resource_multiple_params - pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifes... FAILED tests/server/fastmcp/test_server.py::TestServerResourceTemplates::test_resource_multiple_mismatched_params - pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifes... FAILED tests/server/fastmcp/test_server.py::TestServerResourceTemplates::test_template_to_resource_conversion - pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifes... FAILED tests/server/fastmcp/test_server.py::TestServerResourceTemplates::test_resource_template_includes_mime_type - pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifes... FAILED tests/server/fastmcp/test_server.py::TestServerResourceMetadata::test_resource_decorator_with_metadata - pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifes... FAILED tests/server/fastmcp/test_server.py::TestServerResourceMetadata::test_resource_template_decorator_with_metadata - pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifes... FAILED tests/server/fastmcp/test_server.py::TestServerResourceMetadata::test_read_resource_returns_meta - pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifes... FAILED tests/server/fastmcp/test_server.py::TestContextInjection::test_context_detection - pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifes... FAILED tests/server/fastmcp/test_server.py::TestContextInjection::test_context_injection - pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifes... FAILED tests/server/fastmcp/test_server.py::TestContextInjection::test_async_context - pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifes... FAILED tests/server/fastmcp/test_server.py::TestContextInjection::test_context_logging - pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifes... FAILED tests/server/fastmcp/test_server.py::TestContextInjection::test_optional_context - pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifes... FAILED tests/server/fastmcp/test_server.py::TestContextInjection::test_context_resource_access - pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifes... FAILED tests/server/fastmcp/test_server.py::TestContextInjection::test_resource_with_context - pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifes... FAILED tests/server/fastmcp/test_server.py::TestContextInjection::test_resource_without_context - pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifes... FAILED tests/server/fastmcp/test_server.py::TestContextInjection::test_resource_context_custom_name - pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifes... FAILED tests/server/fastmcp/test_server.py::TestContextInjection::test_prompt_with_context - pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifes... FAILED tests/server/fastmcp/test_server.py::TestContextInjection::test_prompt_without_context - pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifes... FAILED tests/server/fastmcp/test_server.py::TestServerPrompts::test_prompt_decorator - pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifes... FAILED tests/server/fastmcp/test_server.py::TestServerPrompts::test_prompt_decorator_with_name - pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifes... FAILED tests/server/fastmcp/test_server.py::TestServerPrompts::test_prompt_decorator_with_description - pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifes... FAILED tests/server/fastmcp/test_server.py::TestServerPrompts::test_prompt_decorator_error - pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifes... FAILED tests/server/fastmcp/test_server.py::TestServerPrompts::test_list_prompts - pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifes... FAILED tests/server/fastmcp/test_server.py::TestServerPrompts::test_get_prompt - pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifes... FAILED tests/server/fastmcp/test_server.py::TestServerPrompts::test_get_prompt_with_description - pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifes... FAILED tests/server/fastmcp/test_server.py::TestServerPrompts::test_get_prompt_without_description - pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifes... FAILED tests/server/fastmcp/test_server.py::TestServerPrompts::test_get_prompt_with_docstring_description - pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifes... FAILED tests/server/fastmcp/test_server.py::TestServerPrompts::test_get_prompt_with_resource - pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifes... FAILED tests/server/fastmcp/test_server.py::TestServerPrompts::test_get_unknown_prompt - pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifes... FAILED tests/server/fastmcp/test_server.py::TestServerPrompts::test_get_prompt_missing_args - pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifes... FAILED tests/server/fastmcp/test_server.py::test_streamable_http_no_redirect - pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifes... FAILED tests/server/fastmcp/test_title.py::test_tool_title_precedence - pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifes... FAILED tests/server/fastmcp/test_title.py::test_prompt_title - pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifes... FAILED tests/server/fastmcp/test_title.py::test_resource_title - pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifes... FAILED tests/server/fastmcp/test_tool_manager.py::TestContextHandling::test_context_injection - pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifes... FAILED tests/server/fastmcp/test_tool_manager.py::TestContextHandling::test_context_injection_async - pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifes... FAILED tests/server/fastmcp/test_tool_manager.py::TestContextHandling::test_context_error_handling - pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifes... FAILED tests/server/fastmcp/test_tool_manager.py::TestToolAnnotations::test_tool_annotations_in_fastmcp - pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifes... FAILED tests/server/fastmcp/test_tool_manager.py::TestToolMetadata::test_metadata_in_fastmcp_decorator - pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifes... FAILED tests/server/fastmcp/test_tool_manager.py::TestToolMetadata::test_metadata_in_list_tools - pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifes... FAILED tests/server/fastmcp/test_tool_manager.py::TestToolMetadata::test_multiple_tools_with_different_metadata - pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifes... FAILED tests/server/fastmcp/test_tool_manager.py::TestToolMetadata::test_metadata_with_annotations - pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifes... FAILED tests/server/fastmcp/test_url_elicitation.py::test_url_elicitation_accept - pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifes... FAILED tests/server/fastmcp/test_url_elicitation.py::test_url_elicitation_decline - pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifes... FAILED tests/server/fastmcp/test_url_elicitation.py::test_url_elicitation_cancel - pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifes... FAILED tests/server/fastmcp/test_url_elicitation.py::test_url_elicitation_helper_function - pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifes... FAILED tests/server/fastmcp/test_url_elicitation.py::test_url_no_content_in_response - pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifes... FAILED tests/server/fastmcp/test_url_elicitation.py::test_form_mode_still_works - pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifes... FAILED tests/server/fastmcp/test_url_elicitation.py::test_elicit_complete_notification - pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifes... FAILED tests/server/fastmcp/test_url_elicitation.py::test_elicit_url_typed_results - pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifes... FAILED tests/server/fastmcp/test_url_elicitation.py::test_deprecated_elicit_method - pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifes... FAILED tests/server/fastmcp/test_url_elicitation.py::test_ctx_elicit_url_convenience_method - pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifes... FAILED tests/server/fastmcp/test_url_elicitation_error_throw.py::test_url_elicitation_error_thrown_from_tool - pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifes... FAILED tests/server/fastmcp/test_url_elicitation_error_throw.py::test_url_elicitation_error_from_error - pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifes... FAILED tests/server/fastmcp/test_url_elicitation_error_throw.py::test_normal_exceptions_still_return_error_result - pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifes... FAILED tests/server/test_lifespan.py::test_fastmcp_server_lifespan - pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifes... ERROR tests/issues/test_355_type_error.py - pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifes... ERROR tests/issues/test_355_type_error.py - pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifes... ERROR tests/client/test_list_methods_cursor.py::test_list_methods_cursor_parameter[list_tools-tools/list] - pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifes... ERROR tests/client/test_list_methods_cursor.py::test_list_methods_cursor_parameter[list_resources-resources/list] - pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifes... ERROR tests/client/test_list_methods_cursor.py::test_list_methods_cursor_parameter[list_prompts-prompts/list] - pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifes... ERROR tests/client/test_list_methods_cursor.py::test_list_methods_cursor_parameter[list_resource_templates-resources/templates/list] - pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifes... ERROR tests/client/test_list_methods_cursor.py::test_list_methods_params_parameter[list_tools-tools/list] - pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifes... ERROR tests/client/test_list_methods_cursor.py::test_list_methods_params_parameter[list_resources-resources/list] - pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifes... ERROR tests/client/test_list_methods_cursor.py::test_list_methods_params_parameter[list_prompts-prompts/list] - pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifes... ERROR tests/client/test_list_methods_cursor.py::test_list_methods_params_parameter[list_resource_templates-resources/templates/list] - pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifes... ERROR tests/client/test_list_methods_cursor.py::test_list_methods_raises_error_when_both_cursor_and_params_provided[list_tools] - pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifes... ERROR tests/client/test_list_methods_cursor.py::test_list_methods_raises_error_when_both_cursor_and_params_provided[list_resources] - pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifes... ERROR tests/client/test_list_methods_cursor.py::test_list_methods_raises_error_when_both_cursor_and_params_provided[list_prompts] - pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifes... ERROR tests/client/test_list_methods_cursor.py::test_list_methods_raises_error_when_both_cursor_and_params_provided[list_resource_templates] - pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifes... ERROR tests/server/fastmcp/servers/test_file_server.py::test_list_resources - pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifes... ERROR tests/server/fastmcp/servers/test_file_server.py::test_read_resource_dir - pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifes... ERROR tests/server/fastmcp/servers/test_file_server.py::test_read_resource_file - pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifes... ERROR tests/server/fastmcp/servers/test_file_server.py::test_delete_file - pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifes... ERROR tests/server/fastmcp/servers/test_file_server.py::test_delete_file_and_check_resources - pydantic_settings.exceptions.IncompleteFieldDefinitionWarning: Field 'lifes... ===== 136 failed, 958 passed, 121 skipped, 1 xfailed, 19 errors in 42.05s ====== E: pybuild pybuild:485: test: plugin pyproject failed with: exit code=1: cd /<>/.pybuild/cpython3_3.14/build; python3.14 -m pytest tests dh_auto_test: error: pybuild --test --test-pytest -i python{version} -p 3.14 --parallel=2 returned exit code 13 make: *** [debian/rules:4: binary] Error 25 dpkg-buildpackage: error: debian/rules binary subprocess failed with exit status 2 -------------------------------------------------------------------------------- Build finished at 2026-08-27T19:30:56Z Finished -------- +------------------------------------------------------------------------------+ | Cleanup Thu, 27 Aug 2026 19:30:56 +0000 | +------------------------------------------------------------------------------+ Purging /<> Not cleaning session: cloned chroot in use E: Build failure (dpkg-buildpackage died with exit 2) +------------------------------------------------------------------------------+ | Summary Thu, 27 Aug 2026 19:30:57 +0000 | +------------------------------------------------------------------------------+ Build Architecture: amd64 Build Type: binary Build-Space: 14092 Build-Time: 44 Distribution: sid-unshare Fail-Stage: build Host Architecture: amd64 Install-Time: 22 Job: python-mcp_1.28.1-1 Machine Architecture: amd64 Package: python-mcp Package-Time: 80 Source-Version: 1.28.1-1 Space: 14092 Status: attempted Version: 1.28.1-1 -------------------------------------------------------------------------------- Finished at 2026-08-27T19:30:56Z Build needed 00:01:20, 14092k disk space