We also encountered this
The only difference with pip vs poetry was the versions of fastapi and startlette
On Ray 2.1.0, Python 3.9, for some reason, poetry chooses
starlette 0.21.0
fastapi 0.1.17
Whereas pip chooses
starlette 0.20.4
fastapi 0.86.0
Explicitly adding fastapi as a dependency fixes this issue:
.venv ❯ poetry add fastapi
Using version ^0.86.0 for fastapi
Updating dependencies
Resolving dependencies... (1.2s)
Writing lock file
Package operations: 0 installs, 2 updates, 0 removals
• Updating starlette (0.21.0 -> 0.20.4)
• Updating fastapi (0.1.17 -> 0.86.0)
To dig into why poetry chooses these versions, these are the things selecting fastapi in the lockfile, so I can’t immediately see why an older version of fastapi was resolved:
fastapi = {version = "*", optional = true, markers = "extra == \"serve\""}
starlette = {version = "*", optional = true, markers = "extra == \"serve\""}
Removing fastapi from dependencies and running poetry update
will again downgrade fastapi, so the resolution is consistent.
The interesting part of the verbose resolution logs being:
Source (PyPI): 120 packages found for starlette *
1: fact: starlette (0.21.0) depends on anyio (>=3.4.0,<5)
1: fact: starlette (0.21.0) depends on typing-extensions (>=3.10.0)
1: selecting starlette (0.21.0)
Source (PyPI): 150 packages found for fastapi *
1: fact: fastapi (0.86.0) depends on pydantic (>=1.6.2,<1.7 || >1.7,<1.7.1 || >1.7.1,<1.7.2 || >1.7.2,<1.7.3 || >1.7.3,<1.8 || >1.8,<1.8.1 || >1.8.1,<2.0.0)
1: fact: fastapi (0.86.0) depends on starlette (0.20.4)
1: derived: not fastapi (==0.86.0)
1: fact: fastapi (0.85.2) depends on pydantic (>=1.6.2,<1.7 || >1.7,<1.7.1 || >1.7.1,<1.7.2 || >1.7.2,<1.7.3 || >1.7.3,<1.8 || >1.8,<1.8.1 || >1.8.1,<2.0.0)
1: fact: fastapi (0.85.2) depends on starlette (0.20.4)
1: derived: not fastapi (==0.85.2)
1: fact: fastapi (0.85.1) depends on pydantic (>=1.6.2,<1.7 || >1.7,<1.7.1 || >1.7.1,<1.7.2 || >1.7.2,<1.7.3 || >1.7.3,<1.8 || >1.8,<1.8.1 || >1.8.1,<2.0.0)
1: fact: fastapi (0.85.1) depends on starlette (0.20.4)
1: derived: not fastapi (==0.85.1)
1: fact: fastapi (0.85.0) depends on pydantic (>=1.6.2,<1.7 || >1.7,<1.7.1 || >1.7.1,<1.7.2 || >1.7.2,<1.7.3 || >1.7.3,<1.8 || >1.8,<1.8.1 || >1.8.1,<2.0.0)
1: fact: fastapi (0.85.0) depends on starlette (0.20.4)
1: derived: not fastapi (==0.85.0)
1: fact: fastapi (0.84.0) depends on pydantic (>=1.6.2,<1.7 || >1.7,<1.7.1 || >1.7.1,<1.7.2 || >1.7.2,<1.7.3 || >1.7.3,<1.8 || >1.8,<1.8.1 || >1.8.1,<2.0.0)
1: fact: fastapi (0.84.0) depends on starlette (0.19.1)
1: derived: not fastapi (==0.84.0)
1: fact: fastapi (0.83.0) depends on starlette (0.19.1)
1: fact: fastapi (0.83.0) depends on pydantic (>=1.6.2,<1.7 || >1.7,<1.7.1 || >1.7.1,<1.7.2 || >1.7.2,<1.7.3 || >1.7.3,<1.8 || >1.8,<1.8.1 || >1.8.1,<2.0.0)
1: derived: not fastapi (==0.83.0)
1: fact: fastapi (0.82.0) depends on starlette (0.19.1)
1: fact: fastapi (0.82.0) depends on pydantic (>=1.6.2,<1.7 || >1.7,<1.7.1 || >1.7.1,<1.7.2 || >1.7.2,<1.7.3 || >1.7.3,<1.8 || >1.8,<1.8.1 || >1.8.1,<2.0.0)
1: derived: not fastapi (==0.82.0)
1: fact: fastapi (0.81.0) depends on starlette (0.19.1)
1: fact: fastapi (0.81.0) depends on pydantic (>=1.6.2,<1.7 || >1.7,<1.7.1 || >1.7.1,<1.7.2 || >1.7.2,<1.7.3 || >1.7.3,<1.8 || >1.8,<1.8.1 || >1.8.1,<2.0.0)
1: derived: not fastapi (==0.81.0)
1: fact: fastapi (0.80.0) depends on starlette (0.19.1)
1: fact: fastapi (0.80.0) depends on pydantic (>=1.6.2,<1.7 || >1.7,<1.7.1 || >1.7.1,<1.7.2 || >1.7.2,<1.7.3 || >1.7.3,<1.8 || >1.8,<1.8.1 || >1.8.1,<2.0.0)
1: derived: not fastapi (==0.80.0)
1: fact: fastapi (0.79.1) depends on starlette (0.19.1)
1: fact: fastapi (0.79.1) depends on pydantic (>=1.6.2,<1.7 || >1.7,<1.7.1 || >1.7.1,<1.7.2 || >1.7.2,<1.7.3 || >1.7.3,<1.8 || >1.8,<1.8.1 || >1.8.1,<2.0.0)
1: derived: not fastapi (==0.79.1)
1: fact: fastapi (0.79.0) depends on starlette (0.19.1)
1: fact: fastapi (0.79.0) depends on pydantic (>=1.6.2,<1.7 || >1.7,<1.7.1 || >1.7.1,<1.7.2 || >1.7.2,<1.7.3 || >1.7.3,<1.8 || >1.8,<1.8.1 || >1.8.1,<2.0.0)
1: derived: not fastapi (==0.79.0)
1: fact: fastapi (0.78.0) depends on starlette (0.19.1)
1: fact: fastapi (0.78.0) depends on pydantic (>=1.6.2,<1.7 || >1.7,<1.7.1 || >1.7.1,<1.7.2 || >1.7.2,<1.7.3 || >1.7.3,<1.8 || >1.8,<1.8.1 || >1.8.1,<2.0.0)
1: derived: not fastapi (==0.78.0)
1: fact: fastapi (0.77.1) depends on starlette (0.19.1)
1: fact: fastapi (0.77.1) depends on pydantic (>=1.6.2,<1.7 || >1.7,<1.7.1 || >1.7.1,<1.7.2 || >1.7.2,<1.7.3 || >1.7.3,<1.8 || >1.8,<1.8.1 || >1.8.1,<2.0.0)
1: derived: not fastapi (==0.77.1)
1: fact: fastapi (0.77.0) depends on starlette (0.19.0)
1: fact: fastapi (0.77.0) depends on pydantic (>=1.6.2,<1.7 || >1.7,<1.7.1 || >1.7.1,<1.7.2 || >1.7.2,<1.7.3 || >1.7.3,<1.8 || >1.8,<1.8.1 || >1.8.1,<2.0.0)
1: derived: not fastapi (==0.77.0)
1: fact: fastapi (0.76.0) depends on starlette (0.18.0)
1: fact: fastapi (0.76.0) depends on pydantic (>=1.6.2,<1.7 || >1.7,<1.7.1 || >1.7.1,<1.7.2 || >1.7.2,<1.7.3 || >1.7.3,<1.8 || >1.8,<1.8.1 || >1.8.1,<2.0.0)
1: derived: not fastapi (==0.76.0)
1: fact: fastapi (0.75.2) depends on starlette (0.17.1)
1: fact: fastapi (0.75.2) depends on pydantic (>=1.6.2,<1.7 || >1.7,<1.7.1 || >1.7.1,<1.7.2 || >1.7.2,<1.7.3 || >1.7.3,<1.8 || >1.8,<1.8.1 || >1.8.1,<2.0.0)
1: derived: not fastapi (==0.75.2)
1: fact: fastapi (0.75.1) depends on starlette (0.17.1)
1: fact: fastapi (0.75.1) depends on pydantic (>=1.6.2,<1.7 || >1.7,<1.7.1 || >1.7.1,<1.7.2 || >1.7.2,<1.7.3 || >1.7.3,<1.8 || >1.8,<1.8.1 || >1.8.1,<2.0.0)
1: derived: not fastapi (==0.75.1)
1: fact: fastapi (0.75.0) depends on starlette (0.17.1)
1: fact: fastapi (0.75.0) depends on pydantic (>=1.6.2,<1.7 || >1.7,<1.7.1 || >1.7.1,<1.7.2 || >1.7.2,<1.7.3 || >1.7.3,<1.8 || >1.8,<1.8.1 || >1.8.1,<2.0.0)
1: derived: not fastapi (==0.75.0)
1: fact: fastapi (0.74.1) depends on starlette (0.17.1)
1: fact: fastapi (0.74.1) depends on pydantic (>=1.6.2,<1.7 || >1.7,<1.7.1 || >1.7.1,<1.7.2 || >1.7.2,<1.7.3 || >1.7.3,<1.8 || >1.8,<1.8.1 || >1.8.1,<2.0.0)
1: derived: not fastapi (==0.74.1)
1: fact: fastapi (0.74.0) depends on starlette (0.17.1)
1: fact: fastapi (0.74.0) depends on pydantic (>=1.6.2,<1.7 || >1.7,<1.7.1 || >1.7.1,<1.7.2 || >1.7.2,<1.7.3 || >1.7.3,<1.8 || >1.8,<1.8.1 || >1.8.1,<2.0.0)
1: derived: not fastapi (==0.74.0)
1: fact: fastapi (0.73.0) depends on starlette (0.17.1)
1: fact: fastapi (0.73.0) depends on pydantic (>=1.6.2,<1.7 || >1.7,<1.7.1 || >1.7.1,<1.7.2 || >1.7.2,<1.7.3 || >1.7.3,<1.8 || >1.8,<1.8.1 || >1.8.1,<2.0.0)
1: derived: not fastapi (==0.73.0)
1: fact: fastapi (0.72.0) depends on starlette (0.17.1)
1: fact: fastapi (0.72.0) depends on pydantic (>=1.6.2,<1.7 || >1.7,<1.7.1 || >1.7.1,<1.7.2 || >1.7.2,<1.7.3 || >1.7.3,<1.8 || >1.8,<1.8.1 || >1.8.1,<2.0.0)
1: derived: not fastapi (==0.72.0)
1: fact: fastapi (0.71.0) depends on starlette (0.17.1)
1: fact: fastapi (0.71.0) depends on pydantic (>=1.6.2,<1.7 || >1.7,<1.7.1 || >1.7.1,<1.7.2 || >1.7.2,<1.7.3 || >1.7.3,<1.8 || >1.8,<1.8.1 || >1.8.1,<2.0.0)
1: derived: not fastapi (==0.71.0)
1: fact: fastapi (0.70.1) depends on starlette (0.16.0)
1: fact: fastapi (0.70.1) depends on pydantic (>=1.6.2,<1.7 || >1.7,<1.7.1 || >1.7.1,<1.7.2 || >1.7.2,<1.7.3 || >1.7.3,<1.8 || >1.8,<1.8.1 || >1.8.1,<2.0.0)
1: derived: not fastapi (==0.70.1)
1: fact: fastapi (0.70.0) depends on starlette (0.16.0)
1: fact: fastapi (0.70.0) depends on pydantic (>=1.6.2,<1.7 || >1.7,<1.7.1 || >1.7.1,<1.7.2 || >1.7.2,<1.7.3 || >1.7.3,<1.8 || >1.8,<1.8.1 || >1.8.1,<2.0.0)
1: derived: not fastapi (==0.70.0)
1: fact: fastapi (0.69.0) depends on starlette (0.15.0)
1: fact: fastapi (0.69.0) depends on pydantic (>=1.6.2,<1.7 || >1.7,<1.7.1 || >1.7.1,<1.7.2 || >1.7.2,<1.7.3 || >1.7.3,<1.8 || >1.8,<1.8.1 || >1.8.1,<2.0.0)
1: derived: not fastapi (==0.69.0)
1: fact: fastapi (0.68.2) depends on starlette (0.14.2)
1: fact: fastapi (0.68.2) depends on pydantic (>=1.6.2,<1.7 || >1.7,<1.7.1 || >1.7.1,<1.7.2 || >1.7.2,<1.7.3 || >1.7.3,<1.8 || >1.8,<1.8.1 || >1.8.1,<2.0.0)
1: derived: not fastapi (==0.68.2)
1: fact: fastapi (0.68.1) depends on starlette (0.14.2)
1: fact: fastapi (0.68.1) depends on pydantic (>=1.6.2,<1.7 || >1.7,<1.7.1 || >1.7.1,<1.7.2 || >1.7.2,<1.7.3 || >1.7.3,<1.8 || >1.8,<1.8.1 || >1.8.1,<2.0.0)
1: derived: not fastapi (==0.68.1)
1: fact: fastapi (0.68.0) depends on starlette (0.14.2)
1: fact: fastapi (0.68.0) depends on pydantic (>=1.6.2,<1.7 || >1.7,<1.7.1 || >1.7.1,<1.7.2 || >1.7.2,<1.7.3 || >1.7.3,<1.8 || >1.8,<1.8.1 || >1.8.1,<2.0.0)
1: derived: not fastapi (==0.68.0)
1: fact: fastapi (0.67.0) depends on starlette (0.14.2)
1: fact: fastapi (0.67.0) depends on pydantic (>=1.6.2,<1.7 || >1.7,<1.7.1 || >1.7.1,<1.7.2 || >1.7.2,<1.7.3 || >1.7.3,<1.8 || >1.8,<1.8.1 || >1.8.1,<2.0.0)
1: derived: not fastapi (==0.67.0)
1: fact: fastapi (0.66.1) depends on starlette (0.14.2)
1: fact: fastapi (0.66.1) depends on pydantic (>=1.6.2,<1.7 || >1.7,<1.7.1 || >1.7.1,<1.7.2 || >1.7.2,<1.7.3 || >1.7.3,<1.8 || >1.8,<1.8.1 || >1.8.1,<2.0.0)
1: derived: not fastapi (==0.66.1)
1: fact: fastapi (0.66.0) depends on starlette (0.14.2)
1: fact: fastapi (0.66.0) depends on pydantic (>=1.6.2,<1.7 || >1.7,<1.7.1 || >1.7.1,<1.7.2 || >1.7.2,<1.7.3 || >1.7.3,<1.8 || >1.8,<1.8.1 || >1.8.1,<2.0.0)
1: derived: not fastapi (==0.66.0)
1: fact: fastapi (0.65.3) depends on starlette (0.14.2)
1: fact: fastapi (0.65.3) depends on pydantic (>=1.6.2,<1.7 || >1.7,<1.7.1 || >1.7.1,<1.7.2 || >1.7.2,<1.7.3 || >1.7.3,<1.8 || >1.8,<1.8.1 || >1.8.1,<2.0.0)
1: derived: not fastapi (==0.65.3)
1: fact: fastapi (0.65.2) depends on starlette (0.14.2)
1: fact: fastapi (0.65.2) depends on pydantic (>=1.6.2,<1.7 || >1.7,<1.7.1 || >1.7.1,<1.7.2 || >1.7.2,<1.7.3 || >1.7.3,<1.8 || >1.8,<1.8.1 || >1.8.1,<2.0.0)
1: derived: not fastapi (==0.65.2)
1: fact: fastapi (0.65.1) depends on starlette (0.14.2)
1: fact: fastapi (0.65.1) depends on pydantic (>=1.6.2,<1.7 || >1.7,<1.7.1 || >1.7.1,<1.7.2 || >1.7.2,<1.7.3 || >1.7.3,<1.8 || >1.8,<1.8.1 || >1.8.1,<2.0.0)
1: derived: not fastapi (==0.65.1)
1: fact: fastapi (0.65.0) depends on starlette (0.14.2)
1: fact: fastapi (0.65.0) depends on pydantic (>=1.0.0,<2.0.0)
1: derived: not fastapi (==0.65.0)
1: fact: fastapi (0.64.0) depends on starlette (0.13.6)
1: fact: fastapi (0.64.0) depends on pydantic (>=1.0.0,<2.0.0)
1: derived: not fastapi (==0.64.0)
1: fact: fastapi (0.63.0) depends on starlette (0.13.6)
1: fact: fastapi (0.63.0) depends on pydantic (>=1.0.0,<2.0.0)
1: derived: not fastapi (==0.63.0)
1: fact: fastapi (0.62.0) depends on starlette (0.13.6)
1: fact: fastapi (0.62.0) depends on pydantic (>=1.0.0,<2.0.0)
1: derived: not fastapi (==0.62.0)
1: fact: fastapi (0.61.2) depends on starlette (0.13.6)
1: fact: fastapi (0.61.2) depends on pydantic (>=1.0.0,<2.0.0)
1: derived: not fastapi (==0.61.2)
1: fact: fastapi (0.61.1) depends on starlette (0.13.6)
1: fact: fastapi (0.61.1) depends on pydantic (>=1.0.0,<2.0.0)
1: derived: not fastapi (==0.61.1)
1: fact: fastapi (0.61.0) depends on starlette (0.13.6)
1: fact: fastapi (0.61.0) depends on pydantic (>=1.0.0,<2.0.0)
1: derived: not fastapi (==0.61.0)
1: fact: fastapi (0.60.2) depends on starlette (0.13.6)
1: fact: fastapi (0.60.2) depends on pydantic (>=0.32.2,<2.0.0)
1: derived: not fastapi (==0.60.2)
1: fact: fastapi (0.60.1) depends on starlette (0.13.6)
1: fact: fastapi (0.60.1) depends on pydantic (>=0.32.2,<2.0.0)
1: derived: not fastapi (==0.60.1)
1: fact: fastapi (0.60.0) depends on starlette (0.13.4)
1: fact: fastapi (0.60.0) depends on pydantic (>=0.32.2,<2.0.0)
1: derived: not fastapi (==0.60.0)
1: fact: fastapi (0.59.0) depends on starlette (0.13.4)
1: fact: fastapi (0.59.0) depends on pydantic (>=0.32.2,<2.0.0)
1: derived: not fastapi (==0.59.0)
1: fact: fastapi (0.58.1) depends on starlette (0.13.4)
1: fact: fastapi (0.58.1) depends on pydantic (>=0.32.2,<2.0.0)
1: derived: not fastapi (==0.58.1)
1: fact: fastapi (0.58.0) depends on starlette (0.13.4)
1: fact: fastapi (0.58.0) depends on pydantic (>=0.32.2,<2.0.0)
1: derived: not fastapi (==0.58.0)
1: fact: fastapi (0.57.0) depends on starlette (0.13.4)
1: fact: fastapi (0.57.0) depends on pydantic (>=0.32.2,<2.0.0)
1: derived: not fastapi (==0.57.0)
1: fact: fastapi (0.56.1) depends on starlette (0.13.2)
1: fact: fastapi (0.56.1) depends on pydantic (>=0.32.2,<2.0.0)
1: derived: not fastapi (==0.56.1)
1: fact: fastapi (0.56.0) depends on starlette (0.13.2)
1: fact: fastapi (0.56.0) depends on pydantic (>=0.32.2,<2.0.0)
1: derived: not fastapi (==0.56.0)
1: fact: fastapi (0.55.1) depends on starlette (0.13.2)
1: fact: fastapi (0.55.1) depends on pydantic (>=0.32.2,<2.0.0)
1: derived: not fastapi (==0.55.1)
1: fact: fastapi (0.55.0) depends on starlette (0.13.2)
1: fact: fastapi (0.55.0) depends on pydantic (>=0.32.2,<2.0.0)
1: derived: not fastapi (==0.55.0)
1: fact: fastapi (0.54.2) depends on starlette (0.13.2)
1: fact: fastapi (0.54.2) depends on pydantic (>=0.32.2,<2.0.0)
1: derived: not fastapi (==0.54.2)
1: fact: fastapi (0.54.1) depends on starlette (0.13.2)
1: fact: fastapi (0.54.1) depends on pydantic (>=0.32.2,<2.0.0)
1: derived: not fastapi (==0.54.1)
1: fact: fastapi (0.54.0) depends on starlette (0.13.2)
1: fact: fastapi (0.54.0) depends on pydantic (>=0.32.2,<2.0.0)
1: derived: not fastapi (==0.54.0)
1: fact: fastapi (0.53.2) depends on starlette (0.13.2)
1: fact: fastapi (0.53.2) depends on pydantic (>=0.32.2,<2.0.0)
1: derived: not fastapi (==0.53.2)
1: fact: fastapi (0.53.1) depends on starlette (0.13.2)
1: fact: fastapi (0.53.1) depends on pydantic (>=0.32.2,<2.0.0)
1: derived: not fastapi (==0.53.1)
1: fact: fastapi (0.53.0) depends on starlette (0.13.2)
1: fact: fastapi (0.53.0) depends on pydantic (>=0.32.2,<2.0.0)
1: derived: not fastapi (==0.53.0)
1: fact: fastapi (0.52.0) depends on starlette (0.13.2)
1: fact: fastapi (0.52.0) depends on pydantic (>=0.32.2,<2.0.0)
1: derived: not fastapi (==0.52.0)
1: fact: fastapi (0.51.0) depends on starlette (0.13.2)
1: fact: fastapi (0.51.0) depends on pydantic (>=0.32.2,<2.0.0)
1: derived: not fastapi (==0.51.0)
1: fact: fastapi (0.50.0) depends on starlette (0.13.2)
1: fact: fastapi (0.50.0) depends on pydantic (>=0.32.2,<2.0.0)
1: derived: not fastapi (==0.50.0)
1: fact: fastapi (0.49.2) depends on starlette (0.12.9)
1: fact: fastapi (0.49.2) depends on pydantic (>=0.32.2,<2.0.0)
1: derived: not fastapi (==0.49.2)
1: fact: fastapi (0.49.1) depends on starlette (0.12.9)
1: fact: fastapi (0.49.1) depends on pydantic (>=0.32.2,<2.0.0)
1: derived: not fastapi (==0.49.1)
1: fact: fastapi (0.49.0) depends on starlette (0.12.9)
1: fact: fastapi (0.49.0) depends on pydantic (>=0.32.2,<2.0.0)
1: derived: not fastapi (==0.49.0)
1: fact: fastapi (0.48.0) depends on starlette (0.12.9)
1: fact: fastapi (0.48.0) depends on pydantic (>=0.32.2,<2.0.0)
1: derived: not fastapi (==0.48.0)
1: fact: fastapi (0.47.1) depends on starlette (0.12.9)
1: fact: fastapi (0.47.1) depends on pydantic (>=0.32.2,<2.0.0)
1: derived: not fastapi (==0.47.1)
1: fact: fastapi (0.47.0) depends on starlette (0.12.9)
1: fact: fastapi (0.47.0) depends on pydantic (>=0.32.2,<2.0.0)
1: derived: not fastapi (==0.47.0)
1: fact: fastapi (0.46.0) depends on starlette (0.12.9)
1: fact: fastapi (0.46.0) depends on pydantic (>=0.32.2,<2.0.0)
1: derived: not fastapi (==0.46.0)
1: fact: fastapi (0.45.0) depends on starlette (0.12.9)
1: fact: fastapi (0.45.0) depends on pydantic (>=0.32.2,<2.0.0)
1: derived: not fastapi (==0.45.0)
1: fact: fastapi (0.44.1) depends on starlette (0.12.9)
1: fact: fastapi (0.44.1) depends on pydantic (>=0.32.2,<2.0.0)
1: derived: not fastapi (==0.44.1)
1: fact: fastapi (0.44.0) depends on starlette (0.12.9)
1: fact: fastapi (0.44.0) depends on pydantic (>=0.32.2,<2.0.0)
1: derived: not fastapi (==0.44.0)
1: fact: fastapi (0.43.0) depends on starlette (0.12.9)
1: fact: fastapi (0.43.0) depends on pydantic (0.32.2)
1: derived: not fastapi (==0.43.0)
1: fact: fastapi (0.42.0) depends on starlette (0.12.9)
1: fact: fastapi (0.42.0) depends on pydantic (0.32.2)
1: derived: not fastapi (==0.42.0)
1: fact: fastapi (0.41.0) depends on starlette (0.12.9)
1: fact: fastapi (0.41.0) depends on pydantic (0.32.2)
1: derived: not fastapi (==0.41.0)
1: fact: fastapi (0.40.0) depends on starlette (>=0.11.1,<=0.12.8)
1: fact: fastapi (0.40.0) depends on pydantic (0.32.2)
1: derived: not fastapi (==0.40.0)
1: fact: fastapi (0.39.0) depends on starlette (>=0.11.1,<=0.12.8)
1: fact: fastapi (0.39.0) depends on pydantic (0.32.2)
1: derived: not fastapi (==0.39.0)
1: fact: fastapi (0.38.1) depends on starlette (>=0.11.1,<=0.12.8)
1: fact: fastapi (0.38.1) depends on pydantic (0.32.2)
1: derived: not fastapi (==0.38.1)
1: fact: fastapi (0.38.0) depends on starlette (>=0.11.1,<=0.12.8)
1: fact: fastapi (0.38.0) depends on pydantic (0.32.2)
1: derived: not fastapi (==0.38.0)
1: fact: fastapi (0.37.0) depends on starlette (>=0.11.1,<=0.12.7)
1: fact: fastapi (0.37.0) depends on pydantic (0.30)
1: derived: not fastapi (==0.37.0)
1: fact: fastapi (0.36.0) depends on starlette (>=0.11.1,<=0.12.7)
1: fact: fastapi (0.36.0) depends on pydantic (0.30)
1: derived: not fastapi (==0.36.0)
1: fact: fastapi (0.35.0) depends on starlette (>=0.11.1,<=0.12.7)
1: fact: fastapi (0.35.0) depends on pydantic (0.30)
1: derived: not fastapi (==0.35.0)
1: fact: fastapi (0.34.0) depends on starlette (>=0.11.1,<=0.12.7)
1: fact: fastapi (0.34.0) depends on pydantic (0.30)
1: derived: not fastapi (==0.34.0)
1: fact: fastapi (0.33.0) depends on starlette (>=0.11.1,<=0.12.0)
1: fact: fastapi (0.33.0) depends on pydantic (0.30)
1: derived: not fastapi (==0.33.0)
1: fact: fastapi (0.32.0) depends on starlette (>=0.11.1,<=0.12.0)
1: fact: fastapi (0.32.0) depends on pydantic (>=0.28,<=0.29.0)
1: derived: not fastapi (==0.32.0)
1: fact: fastapi (0.31.0) depends on starlette (>=0.11.1,<=0.12.0)
1: fact: fastapi (0.31.0) depends on pydantic (>=0.28,<=0.29.0)
1: derived: not fastapi (==0.31.0)
1: fact: fastapi (0.30.1) depends on starlette (>=0.11.1,<=0.12.0)
1: fact: fastapi (0.30.1) depends on pydantic (0.28)
1: derived: not fastapi (==0.30.1)
1: fact: fastapi (0.30.0) depends on starlette (>=0.11.1,<=0.12.0)
1: fact: fastapi (0.30.0) depends on pydantic (0.28)
1: derived: not fastapi (==0.30.0)
1: fact: fastapi (0.29.1) depends on starlette (>=0.11.1,<=0.12.0)
1: fact: fastapi (0.29.1) depends on pydantic (0.26)
1: derived: not fastapi (==0.29.1)
1: fact: fastapi (0.29.0) depends on starlette (>=0.11.1,<=0.12.0)
1: fact: fastapi (0.29.0) depends on pydantic (0.26)
1: derived: not fastapi (==0.29.0)
1: fact: fastapi (0.28.0) depends on starlette (>=0.11.1,<=0.12.0)
1: fact: fastapi (0.28.0) depends on pydantic (0.26)
1: derived: not fastapi (==0.28.0)
1: fact: fastapi (0.27.2) depends on starlette (>=0.11.1,<=0.12.0)
1: fact: fastapi (0.27.2) depends on pydantic (0.26)
1: derived: not fastapi (==0.27.2)
1: fact: fastapi (0.27.1) depends on starlette (>=0.11.1,<=0.12.0)
1: fact: fastapi (0.27.1) depends on pydantic (0.26)
1: derived: not fastapi (==0.27.1)
1: fact: fastapi (0.27.0) depends on starlette (>=0.11.1,<=0.12.0)
1: fact: fastapi (0.27.0) depends on pydantic (0.26)
1: derived: not fastapi (==0.27.0)
1: fact: fastapi (0.26.0) depends on starlette (>=0.11.1,<=0.12.0)
1: fact: fastapi (0.26.0) depends on pydantic (>=0.17,<=0.26.0)
1: derived: not fastapi (==0.26.0)
1: fact: fastapi (0.25.0) depends on starlette (>=0.11.1,<=0.12.0)
1: fact: fastapi (0.25.0) depends on pydantic (>=0.17,<=0.26.0)
1: derived: not fastapi (==0.25.0)
1: fact: fastapi (0.24.0) depends on starlette (>=0.11.1,<=0.12.0)
1: fact: fastapi (0.24.0) depends on pydantic (>=0.17,<=0.26.0)
1: derived: not fastapi (==0.24.0)
1: fact: fastapi (0.23.0) depends on starlette (>=0.11.1,<=0.12.0)
1: fact: fastapi (0.23.0) depends on pydantic (>=0.17,<=0.25.0)
1: derived: not fastapi (==0.23.0)
1: fact: fastapi (0.22.0) depends on starlette (0.11.1)
1: fact: fastapi (0.22.0) depends on pydantic (>=0.17,<=0.25.0)
1: derived: not fastapi (==0.22.0)
1: fact: fastapi (0.21.0) depends on starlette (0.11.1)
1: fact: fastapi (0.21.0) depends on pydantic (>=0.17,<=0.25.0)
1: derived: not fastapi (==0.21.0)
1: fact: fastapi (0.20.1) depends on starlette (0.11.1)
1: fact: fastapi (0.20.1) depends on pydantic (>=0.17,<=0.23.0)
1: derived: not fastapi (==0.20.1)
1: fact: fastapi (0.20.0) depends on starlette (0.11.1)
1: fact: fastapi (0.20.0) depends on pydantic (>=0.17,<=0.23.0)
1: derived: not fastapi (==0.20.0)
1: fact: fastapi (0.19.0) depends on starlette (0.11.1)
1: fact: fastapi (0.19.0) depends on pydantic (>=0.17,<=0.23.0)
1: derived: not fastapi (==0.19.0)
1: fact: fastapi (0.18.0) depends on starlette (0.11.1)
1: fact: fastapi (0.18.0) depends on pydantic (>=0.17,<=0.23.0)
1: derived: not fastapi (==0.18.0)
1: fact: fastapi (0.17.0) depends on starlette (0.11.1)
1: fact: fastapi (0.17.0) depends on pydantic (>=0.17,<=0.23.0)
1: derived: not fastapi (==0.17.0)
1: fact: fastapi (0.16.0) depends on starlette (0.11.1)
1: fact: fastapi (0.16.0) depends on pydantic (>=0.17,<=0.23.0)
1: derived: not fastapi (==0.16.0)
1: fact: fastapi (0.15.0) depends on starlette (0.11.1)
1: fact: fastapi (0.15.0) depends on pydantic (>=0.17,<=0.21.0)
1: derived: not fastapi (==0.15.0)
1: fact: fastapi (0.14.0) depends on starlette (0.11.1)
1: fact: fastapi (0.14.0) depends on pydantic (>=0.17,<=0.21.0)
1: derived: not fastapi (==0.14.0)
1: fact: fastapi (0.13.0) depends on starlette (0.11.1)
1: fact: fastapi (0.13.0) depends on pydantic (>=0.17,<=0.21.0)
1: derived: not fastapi (==0.13.0)
1: fact: fastapi (0.12.1) depends on starlette (0.11.1)
1: fact: fastapi (0.12.1) depends on pydantic (>=0.17,<=0.21.0)
1: derived: not fastapi (==0.12.1)
1: fact: fastapi (0.12.0) depends on starlette (0.11.1)
1: fact: fastapi (0.12.0) depends on pydantic (>=0.17,<=0.21.0)
1: derived: not fastapi (==0.12.0)
1: fact: fastapi (0.11.0) depends on starlette (0.11.1)
1: fact: fastapi (0.11.0) depends on pydantic (>=0.17,<=0.21.0)
1: derived: not fastapi (==0.11.0)
1: fact: fastapi (0.10.2) depends on starlette (0.11.1)
1: fact: fastapi (0.10.2) depends on pydantic (>=0.17,<=0.21.0)
1: derived: not fastapi (==0.10.2)
1: fact: fastapi (0.10.1) depends on starlette (0.11.1)
1: fact: fastapi (0.10.1) depends on pydantic (>=0.17,<=0.21.0)
1: derived: not fastapi (==0.10.1)
1: fact: fastapi (0.10.0) depends on starlette (0.11.1)
1: fact: fastapi (0.10.0) depends on pydantic (>=0.17,<=0.21.0)
1: derived: not fastapi (==0.10.0)
1: fact: fastapi (0.9.1) depends on starlette (0.11.1)
1: fact: fastapi (0.9.1) depends on pydantic (>=0.17,<=0.21.0)
1: derived: not fastapi (==0.9.1)
1: fact: fastapi (0.9.0) depends on starlette (0.11.1)
1: fact: fastapi (0.9.0) depends on pydantic (>=0.17,<=0.21.0)
1: derived: not fastapi (==0.9.0)
1: fact: fastapi (0.8.0) depends on starlette (0.11.1)
1: fact: fastapi (0.8.0) depends on pydantic (>=0.17,<=0.18.2)
1: derived: not fastapi (==0.8.0)
1: fact: fastapi (0.7.1) depends on starlette (0.11.1)
1: fact: fastapi (0.7.1) depends on pydantic (>=0.17,<=0.18.2)
1: derived: not fastapi (==0.7.1)
1: fact: fastapi (0.7.0) depends on starlette (0.11.1)
1: fact: fastapi (0.7.0) depends on pydantic (>=0.17,<=0.18.2)
1: derived: not fastapi (==0.7.0)
1: fact: fastapi (0.6.4) depends on starlette (0.11.1)
1: fact: fastapi (0.6.4) depends on pydantic (>=0.17,<=0.18.2)
1: derived: not fastapi (==0.6.4)
1: fact: fastapi (0.6.3) depends on starlette (0.11.1)
1: fact: fastapi (0.6.3) depends on pydantic (>=0.17,<=0.18.2)
1: derived: not fastapi (==0.6.3)
1: fact: fastapi (0.6.2) depends on starlette (0.11.1)
1: fact: fastapi (0.6.2) depends on pydantic (>=0.17,<=0.18.2)
1: derived: not fastapi (==0.6.2)
1: fact: fastapi (0.6.1) depends on starlette (0.11.1)
1: fact: fastapi (0.6.1) depends on pydantic (>=0.17,<=0.18.2)
1: derived: not fastapi (==0.6.1)
1: fact: fastapi (0.6.0) depends on starlette (0.11.1)
1: fact: fastapi (0.6.0) depends on pydantic (>=0.17,<=0.18.2)
1: derived: not fastapi (==0.6.0)
1: fact: fastapi (0.5.1) depends on starlette (>=0.9.11,<=0.10.1)
1: fact: fastapi (0.5.1) depends on pydantic (>=0.17,<=0.18.2)
1: derived: not fastapi (==0.5.1)
1: fact: fastapi (0.5.0) depends on starlette (>=0.9.11,<=0.10.1)
1: fact: fastapi (0.5.0) depends on pydantic (>=0.17,<=0.18.2)
1: derived: not fastapi (==0.5.0)
1: fact: fastapi (0.4.0) depends on starlette (>=0.9.11,<=0.10.1)
1: fact: fastapi (0.4.0) depends on pydantic (>=0.17,<=0.18.2)
1: derived: not fastapi (==0.4.0)
1: fact: fastapi (0.3.0) depends on starlette (>=0.9.11,<=0.10.1)
1: fact: fastapi (0.3.0) depends on pydantic (>=0.17,<=0.18.2)
1: derived: not fastapi (==0.3.0)
1: fact: fastapi (0.2.1) depends on starlette (>=0.9.11,<=0.10.1)
1: fact: fastapi (0.2.1) depends on pydantic (>=0.17,<=0.18.2)
1: derived: not fastapi (==0.2.1)
1: fact: fastapi (0.2.0) depends on starlette (>=0.9.11,<=0.10.1)
1: fact: fastapi (0.2.0) depends on pydantic (>=0.17,<=0.18.2)
1: derived: not fastapi (==0.2.0)
1: fact: fastapi (0.1.19) depends on starlette (>=0.9.11,<=0.10.1)
1: fact: fastapi (0.1.19) depends on pydantic (>=0.17,<=0.18.2)
1: derived: not fastapi (==0.1.19)
1: fact: fastapi (0.1.18) depends on starlette (>=0.9.7,<0.9.11)
1: fact: fastapi (0.1.18) depends on pydantic (>=0.17,<=0.18.2)
1: derived: not fastapi (==0.1.18)
1: fact: fastapi (0.1.17) depends on starlette (>=0.9.7)
1: fact: fastapi (0.1.17) depends on pydantic (>=0.17)
1: selecting fastapi (0.1.17)
i.e. poetry selects starlette 0.21.0, which is only allowed by fastapi version 0.1.17 which has an unpinned range for starlette.