Repository navigation
Expand file tree
/
Copy pathpython-todo-api-validation.json
More file actions
57 lines (57 loc) · 13.8 KB
/
Copy pathpython-todo-api-validation.json
File metadata and controls
57 lines (57 loc) · 13.8 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
{
"status": "PASS",
"timestamp_utc": "2026-09-20T04:00:11.580468+00:00",
"scope": "The four complete FastAPI in-memory TODO source blocks and their 12 pytest cases on Python 3.12 and 3.14; excludes uvicorn interaction, databases, multi-worker storage, Redis, authentication, and deployment.",
"document": "10-python-discovery/projects/01-todo-api.md",
"document_sha256": "f2d54ba8d382561d4e6de3b9f6c42750a4600f47c97b1296b1dc66026b60886d",
"files": {
"schemas.py": "1304971a7e850d5ce95521c463eb0e47eeacac37a30db25761e2361cb3a56239",
"store.py": "a4c979348d3863618cbb9dafcb6d54a02c76ff423b5e2ef0e046f69e86cd4899",
"main.py": "fc624b3855422f7576519c6f6a85c10473884fdbef207c572813650ddee35a67",
"tests/test_api.py": "18fc4901e88be932f5128d718f71ffa028b9e9a1be387408c9dbaea6d1e2ab32"
},
"results": [
{
"image": "python:3.12-alpine",
"command": [
"docker",
"run",
"--rm",
"--network",
"bridge",
"-v",
"/tmp/dev-quest-python-todo-h7t7mh_e:/work:ro",
"-w",
"/work",
"python:3.12-alpine",
"sh",
"-lc",
"pip install --no-cache-dir fastapi==0.141.1 pydantic==2.13.5 pytest==9.1.1 httpx==0.28.1 && python -m pytest -q"
],
"stdout": "Collecting fastapi==0.141.1\n Downloading fastapi-0.141.1-py3-none-any.whl.metadata (27 kB)\nCollecting pydantic==2.13.5\n Downloading pydantic-2.13.5-py3-none-any.whl.metadata (110 kB)\nCollecting pytest==9.1.1\n Downloading pytest-9.1.1-py3-none-any.whl.metadata (7.6 kB)\nCollecting httpx==0.28.1\n Downloading httpx-0.28.1-py3-none-any.whl.metadata (7.1 kB)\nCollecting starlette>=0.46.0 (from fastapi==0.141.1)\n Downloading starlette-1.6.0-py3-none-any.whl.metadata (6.4 kB)\nCollecting typing-extensions>=4.8.0 (from fastapi==0.141.1)\n Downloading typing_extensions-4.16.0-py3-none-any.whl.metadata (3.3 kB)\nCollecting typing-inspection>=0.4.2 (from fastapi==0.141.1)\n Downloading typing_inspection-0.4.4-py3-none-any.whl.metadata (2.6 kB)\nCollecting annotated-doc>=0.0.2 (from fastapi==0.141.1)\n Downloading annotated_doc-0.0.5-py3-none-any.whl.metadata (6.5 kB)\nCollecting annotated-types>=0.6.0 (from pydantic==2.13.5)\n Downloading annotated_types-0.8.0-py3-none-any.whl.metadata (15 kB)\nCollecting pydantic-core==2.46.5 (from pydantic==2.13.5)\n Downloading pydantic_core-2.46.5-cp312-cp312-musllinux_1_1_x86_64.whl.metadata (6.6 kB)\nCollecting iniconfig>=1.0.1 (from pytest==9.1.1)\n Downloading iniconfig-2.3.0-py3-none-any.whl.metadata (2.5 kB)\nCollecting packaging>=22 (from pytest==9.1.1)\n Downloading packaging-26.3-py3-none-any.whl.metadata (3.5 kB)\nCollecting pluggy<2,>=1.5 (from pytest==9.1.1)\n Downloading pluggy-1.6.0-py3-none-any.whl.metadata (4.8 kB)\nCollecting pygments>=2.7.2 (from pytest==9.1.1)\n Downloading pygments-2.21.0-py3-none-any.whl.metadata (2.5 kB)\nCollecting anyio (from httpx==0.28.1)\n Downloading anyio-4.15.1-py3-none-any.whl.metadata (4.7 kB)\nCollecting certifi (from httpx==0.28.1)\n Downloading certifi-2026.7.22-py3-none-any.whl.metadata (2.5 kB)\nCollecting httpcore==1.* (from httpx==0.28.1)\n Downloading httpcore-1.0.9-py3-none-any.whl.metadata (21 kB)\nCollecting idna (from httpx==0.28.1)\n Downloading idna-3.20-py3-none-any.whl.metadata (7.2 kB)\nCollecting h11>=0.16 (from httpcore==1.*->httpx==0.28.1)\n Downloading h11-0.16.0-py3-none-any.whl.metadata (8.3 kB)\nDownloading fastapi-0.141.1-py3-none-any.whl (131 kB)\nDownloading pydantic-2.13.5-py3-none-any.whl (472 kB)\nDownloading pytest-9.1.1-py3-none-any.whl (386 kB)\nDownloading httpx-0.28.1-py3-none-any.whl (73 kB)\nDownloading httpcore-1.0.9-py3-none-any.whl (78 kB)\nDownloading pydantic_core-2.46.5-cp312-cp312-musllinux_1_1_x86_64.whl (2.3 MB)\n ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 2.3/2.3 MB 2.7 MB/s eta 0:00:00\nDownloading annotated_doc-0.0.5-py3-none-any.whl (5.3 kB)\nDownloading annotated_types-0.8.0-py3-none-any.whl (13 kB)\nDownloading iniconfig-2.3.0-py3-none-any.whl (7.5 kB)\nDownloading packaging-26.3-py3-none-any.whl (129 kB)\nDownloading pluggy-1.6.0-py3-none-any.whl (20 kB)\nDownloading pygments-2.21.0-py3-none-any.whl (1.3 MB)\n ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 1.3/1.3 MB 2.2 MB/s eta 0:00:00\nDownloading starlette-1.6.0-py3-none-any.whl (75 kB)\nDownloading anyio-4.15.1-py3-none-any.whl (132 kB)\nDownloading idna-3.20-py3-none-any.whl (69 kB)\nDownloading typing_extensions-4.16.0-py3-none-any.whl (45 kB)\nDownloading typing_inspection-0.4.4-py3-none-any.whl (14 kB)\nDownloading certifi-2026.7.22-py3-none-any.whl (136 kB)\nDownloading h11-0.16.0-py3-none-any.whl (37 kB)\nInstalling collected packages: typing-extensions, pygments, pluggy, packaging, iniconfig, idna, h11, certifi, annotated-types, annotated-doc, typing-inspection, pytest, pydantic-core, httpcore, anyio, starlette, pydantic, httpx, fastapi\nSuccessfully installed annotated-doc-0.0.5 annotated-types-0.8.0 anyio-4.15.1 certifi-2026.7.22 fastapi-0.141.1 h11-0.16.0 httpcore-1.0.9 httpx-0.28.1 idna-3.20 iniconfig-2.3.0 packaging-26.3 pluggy-1.6.0 pydantic-2.13.5 pydantic-core-2.46.5 pygments-2.21.0 pytest-9.1.1 starlette-1.6.0 typing-extensions-4.16.0 typing-inspection-0.4.4\n............ [100%]\n=============================== warnings summary ===============================\n../usr/local/lib/python3.12/site-packages/fastapi/testclient.py:1\n /usr/local/lib/python3.12/site-packages/fastapi/testclient.py:1: StarletteDeprecationWarning: Using `httpx` with `starlette.testclient` is deprecated; install `httpx2` instead.\n from starlette.testclient import TestClient as TestClient # noqa\n\n../usr/local/lib/python3.12/site-packages/starlette/testclient.py:53\n /usr/local/lib/python3.12/site-packages/starlette/testclient.py:53: DeprecationWarning: The anyio.abc.BlockingPortal alias is deprecated, use anyio.from_thread.BlockingPortal instead.\n _PortalFactoryType = Callable[[], AbstractContextManager[anyio.abc.BlockingPortal]]\n\n../usr/local/lib/python3.12/site-packages/_pytest/cacheprovider.py:469\n /usr/local/lib/python3.12/site-packages/_pytest/cacheprovider.py:469: PytestCacheWarning: could not create cache path /work/.pytest_cache/v/cache/nodeids: [Errno 30] Read-only file system: '/work/pytest-cache-files-e7dhiumi'\n config.cache.set(\"cache/nodeids\", sorted(self.cached_nodeids))\n\n-- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html\n12 passed, 3 warnings in 0.29s\n",
"stderr": "Unable to find image 'python:3.12-alpine' locally\n3.12-alpine: Pulling from library/python\n6eec1681053c: Pulling fs layer\ndfd5c69ca31c: Pulling fs layer\n7abff04c4f31: Pulling fs layer\n2dc203cb9706: Download complete\nc5867eb1dccc: Download complete\n6eec1681053c: Download complete\ndfd5c69ca31c: Download complete\ndfd5c69ca31c: Pull complete\n7abff04c4f31: Download complete\n7abff04c4f31: Pull complete\n6eec1681053c: Pull complete\nDigest: sha256:c4634f578a412db396771b61b064c6e546c9d6414c7fb5b1b05d5871f1885f7b\nStatus: Downloaded newer image for python:3.12-alpine\nWARNING: Running pip as the 'root' user can result in broken permissions and conflicting behaviour with the system package manager, possibly rendering your system unusable. It is recommended to use a virtual environment instead: https://pip.pypa.io/warnings/venv. Use the --root-user-action option if you know what you are doing and want to suppress this warning.\n\n[notice] A new release of pip is available: 25.0.1 -> 26.2.1\n[notice] To update, run: pip install --upgrade pip\n",
"returncode": 0
},
{
"image": "python:3.14-alpine",
"command": [
"docker",
"run",
"--rm",
"--network",
"bridge",
"-v",
"/tmp/dev-quest-python-todo-h7t7mh_e:/work:ro",
"-w",
"/work",
"python:3.14-alpine",
"sh",
"-lc",
"pip install --no-cache-dir fastapi==0.141.1 pydantic==2.13.5 pytest==9.1.1 httpx==0.28.1 && python -m pytest -q"
],
"stdout": "Collecting fastapi==0.141.1\n Downloading fastapi-0.141.1-py3-none-any.whl.metadata (27 kB)\nCollecting pydantic==2.13.5\n Downloading pydantic-2.13.5-py3-none-any.whl.metadata (110 kB)\nCollecting pytest==9.1.1\n Downloading pytest-9.1.1-py3-none-any.whl.metadata (7.6 kB)\nCollecting httpx==0.28.1\n Downloading httpx-0.28.1-py3-none-any.whl.metadata (7.1 kB)\nCollecting starlette>=0.46.0 (from fastapi==0.141.1)\n Downloading starlette-1.6.0-py3-none-any.whl.metadata (6.4 kB)\nCollecting typing-extensions>=4.8.0 (from fastapi==0.141.1)\n Downloading typing_extensions-4.16.0-py3-none-any.whl.metadata (3.3 kB)\nCollecting typing-inspection>=0.4.2 (from fastapi==0.141.1)\n Downloading typing_inspection-0.4.4-py3-none-any.whl.metadata (2.6 kB)\nCollecting annotated-doc>=0.0.2 (from fastapi==0.141.1)\n Downloading annotated_doc-0.0.5-py3-none-any.whl.metadata (6.5 kB)\nCollecting annotated-types>=0.6.0 (from pydantic==2.13.5)\n Downloading annotated_types-0.8.0-py3-none-any.whl.metadata (15 kB)\nCollecting pydantic-core==2.46.5 (from pydantic==2.13.5)\n Downloading pydantic_core-2.46.5-cp314-cp314-musllinux_1_1_x86_64.whl.metadata (6.6 kB)\nCollecting iniconfig>=1.0.1 (from pytest==9.1.1)\n Downloading iniconfig-2.3.0-py3-none-any.whl.metadata (2.5 kB)\nCollecting packaging>=22 (from pytest==9.1.1)\n Downloading packaging-26.3-py3-none-any.whl.metadata (3.5 kB)\nCollecting pluggy<2,>=1.5 (from pytest==9.1.1)\n Downloading pluggy-1.6.0-py3-none-any.whl.metadata (4.8 kB)\nCollecting pygments>=2.7.2 (from pytest==9.1.1)\n Downloading pygments-2.21.0-py3-none-any.whl.metadata (2.5 kB)\nCollecting anyio (from httpx==0.28.1)\n Downloading anyio-4.15.1-py3-none-any.whl.metadata (4.7 kB)\nCollecting certifi (from httpx==0.28.1)\n Downloading certifi-2026.7.22-py3-none-any.whl.metadata (2.5 kB)\nCollecting httpcore==1.* (from httpx==0.28.1)\n Downloading httpcore-1.0.9-py3-none-any.whl.metadata (21 kB)\nCollecting idna (from httpx==0.28.1)\n Downloading idna-3.20-py3-none-any.whl.metadata (7.2 kB)\nCollecting h11>=0.16 (from httpcore==1.*->httpx==0.28.1)\n Downloading h11-0.16.0-py3-none-any.whl.metadata (8.3 kB)\nDownloading fastapi-0.141.1-py3-none-any.whl (131 kB)\nDownloading pydantic-2.13.5-py3-none-any.whl (472 kB)\nDownloading pytest-9.1.1-py3-none-any.whl (386 kB)\nDownloading httpx-0.28.1-py3-none-any.whl (73 kB)\nDownloading pydantic_core-2.46.5-cp314-cp314-musllinux_1_1_x86_64.whl (2.3 MB)\n ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 2.3/2.3 MB 2.9 MB/s 0:00:00\nDownloading httpcore-1.0.9-py3-none-any.whl (78 kB)\nDownloading pluggy-1.6.0-py3-none-any.whl (20 kB)\nDownloading annotated_doc-0.0.5-py3-none-any.whl (5.3 kB)\nDownloading annotated_types-0.8.0-py3-none-any.whl (13 kB)\nDownloading h11-0.16.0-py3-none-any.whl (37 kB)\nDownloading iniconfig-2.3.0-py3-none-any.whl (7.5 kB)\nDownloading packaging-26.3-py3-none-any.whl (129 kB)\nDownloading pygments-2.21.0-py3-none-any.whl (1.3 MB)\n ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 1.3/1.3 MB 10.1 MB/s 0:00:00\nDownloading starlette-1.6.0-py3-none-any.whl (75 kB)\nDownloading anyio-4.15.1-py3-none-any.whl (132 kB)\nDownloading idna-3.20-py3-none-any.whl (69 kB)\nDownloading typing_extensions-4.16.0-py3-none-any.whl (45 kB)\nDownloading typing_inspection-0.4.4-py3-none-any.whl (14 kB)\nDownloading certifi-2026.7.22-py3-none-any.whl (136 kB)\nInstalling collected packages: typing-extensions, pygments, pluggy, packaging, iniconfig, idna, h11, certifi, annotated-types, annotated-doc, typing-inspection, pytest, pydantic-core, httpcore, anyio, starlette, pydantic, httpx, fastapi\n\nSuccessfully installed annotated-doc-0.0.5 annotated-types-0.8.0 anyio-4.15.1 certifi-2026.7.22 fastapi-0.141.1 h11-0.16.0 httpcore-1.0.9 httpx-0.28.1 idna-3.20 iniconfig-2.3.0 packaging-26.3 pluggy-1.6.0 pydantic-2.13.5 pydantic-core-2.46.5 pygments-2.21.0 pytest-9.1.1 starlette-1.6.0 typing-extensions-4.16.0 typing-inspection-0.4.4\n............ [100%]\n=============================== warnings summary ===============================\n../usr/local/lib/python3.14/site-packages/fastapi/testclient.py:1\n /usr/local/lib/python3.14/site-packages/fastapi/testclient.py:1: StarletteDeprecationWarning: Using `httpx` with `starlette.testclient` is deprecated; install `httpx2` instead.\n from starlette.testclient import TestClient as TestClient # noqa\n\n../usr/local/lib/python3.14/site-packages/starlette/testclient.py:53\n /usr/local/lib/python3.14/site-packages/starlette/testclient.py:53: DeprecationWarning: The anyio.abc.BlockingPortal alias is deprecated, use anyio.from_thread.BlockingPortal instead.\n _PortalFactoryType = Callable[[], AbstractContextManager[anyio.abc.BlockingPortal]]\n\n../usr/local/lib/python3.14/site-packages/_pytest/cacheprovider.py:469\n /usr/local/lib/python3.14/site-packages/_pytest/cacheprovider.py:469: PytestCacheWarning: could not create cache path /work/.pytest_cache/v/cache/nodeids: [Errno 30] Read-only file system: '/work/pytest-cache-files-flu21afl'\n config.cache.set(\"cache/nodeids\", sorted(self.cached_nodeids))\n\n-- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html\n12 passed, 3 warnings in 0.27s\n",
"stderr": "WARNING: Running pip as the 'root' user can result in broken permissions and conflicting behaviour with the system package manager, possibly rendering your system unusable. It is recommended to use a virtual environment instead: https://pip.pypa.io/warnings/venv. Use the --root-user-action option if you know what you are doing and want to suppress this warning.\n",
"returncode": 0
}
]
}