# TypeError: 'Timeout' object is not awaitable

- **ID:** `python/asyncio-timeout-context-manager-required`
- **Domain:** python
- **Category:** type_error
- **Verification:** ai_generated
- **Fix Rate:** 80%

## Root Cause

In Python 3.11+, asyncio.timeout() returns an async context manager, not an awaitable. Code written for asyncio.wait_for or older patterns mistakenly awaits it.

## Version Compatibility

| Version | Status | Introduced | Deprecated |
|---------|--------|------------|------------|
| 3.11 | active | — | — |
| 3.12 | active | — | — |

## Workarounds

1. **** (95% success)
   ```
   async with asyncio.timeout(5):
    data = await fetch()
   ```
2. **** (88% success)
   ```
   try:
    async with asyncio.timeout(5):
        return await fetch()
except AttributeError:
    return await asyncio.wait_for(fetch(), timeout=5)
   ```
3. **** (90% success)
   ```
   import time
loop = asyncio.get_running_loop()
deadline = loop.time() + 5
async with asyncio.timeout_at(deadline):
    await fetch()
   ```

## Dead Ends

- **** — Timeout is not callable; raises TypeError: 'Timeout' object is not callable. (90% fail)
- **** — wait_for expects an awaitable; Timeout is a context manager, not awaitable. (85% fail)
