Home / File/ test_ws_dependencies.py — fastapi Source File

test_ws_dependencies.py — fastapi Source File

Architecture documentation for test_ws_dependencies.py, a python file in the fastapi codebase. 4 imports, 0 dependents.

File python FastAPI Routing 4 imports 8 functions

Entity Profile

Dependency Diagram

graph LR
  7df0a54a_bb86_53af_0022_6796d94b79ca["test_ws_dependencies.py"]
  c1ef60e8_e635_2e82_29e5_a79e03e975d6["json"]
  7df0a54a_bb86_53af_0022_6796d94b79ca --> c1ef60e8_e635_2e82_29e5_a79e03e975d6
  0dda2280_3359_8460_301c_e98c77e78185["typing"]
  7df0a54a_bb86_53af_0022_6796d94b79ca --> 0dda2280_3359_8460_301c_e98c77e78185
  534f6e44_61b8_3c38_8b89_6934a6df9802["__init__.py"]
  7df0a54a_bb86_53af_0022_6796d94b79ca --> 534f6e44_61b8_3c38_8b89_6934a6df9802
  a7c04dee_ee23_5891_b185_47ff6bed036d["testclient.py"]
  7df0a54a_bb86_53af_0022_6796d94b79ca --> a7c04dee_ee23_5891_b185_47ff6bed036d
  style 7df0a54a_bb86_53af_0022_6796d94b79ca fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

import json
from typing import Annotated

from fastapi import APIRouter, Depends, FastAPI, WebSocket
from fastapi.testclient import TestClient


def dependency_list() -> list[str]:
    return []


DepList = Annotated[list[str], Depends(dependency_list)]


def create_dependency(name: str):
    def fun(deps: DepList):
        deps.append(name)

    return Depends(fun)


router = APIRouter(dependencies=[create_dependency("router")])
prefix_router = APIRouter(dependencies=[create_dependency("prefix_router")])
app = FastAPI(dependencies=[create_dependency("app")])


@app.websocket("/", dependencies=[create_dependency("index")])
async def index(websocket: WebSocket, deps: DepList):
    await websocket.accept()
    await websocket.send_text(json.dumps(deps))
    await websocket.close()


@router.websocket("/router", dependencies=[create_dependency("routerindex")])
async def routerindex(websocket: WebSocket, deps: DepList):
    await websocket.accept()
    await websocket.send_text(json.dumps(deps))
    await websocket.close()


@prefix_router.websocket("/", dependencies=[create_dependency("routerprefixindex")])
async def routerprefixindex(websocket: WebSocket, deps: DepList):
    await websocket.accept()
    await websocket.send_text(json.dumps(deps))
    await websocket.close()


app.include_router(router, dependencies=[create_dependency("router2")])
app.include_router(
    prefix_router, prefix="/prefix", dependencies=[create_dependency("prefix_router2")]
)


def test_index():
    client = TestClient(app)
    with client.websocket_connect("/") as websocket:
        data = json.loads(websocket.receive_text())
        assert data == ["app", "index"]


def test_routerindex():
    client = TestClient(app)
    with client.websocket_connect("/router") as websocket:
        data = json.loads(websocket.receive_text())
        assert data == ["app", "router2", "router", "routerindex"]


def test_routerprefixindex():
    client = TestClient(app)
    with client.websocket_connect("/prefix/") as websocket:
        data = json.loads(websocket.receive_text())
        assert data == ["app", "prefix_router2", "prefix_router", "routerprefixindex"]

Domain

Subdomains

Dependencies

Frequently Asked Questions

What does test_ws_dependencies.py do?
test_ws_dependencies.py is a source file in the fastapi codebase, written in python. It belongs to the FastAPI domain, Routing subdomain.
What functions are defined in test_ws_dependencies.py?
test_ws_dependencies.py defines 8 function(s): create_dependency, dependency_list, index, routerindex, routerprefixindex, test_index, test_routerindex, test_routerprefixindex.
What does test_ws_dependencies.py depend on?
test_ws_dependencies.py imports 4 module(s): __init__.py, json, testclient.py, typing.
Where is test_ws_dependencies.py in the architecture?
test_ws_dependencies.py is located at tests/test_ws_dependencies.py (domain: FastAPI, subdomain: Routing, directory: tests).

Analyze Your Own Codebase

Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.

Try Supermodel Free