-
Notifications
You must be signed in to change notification settings - Fork 181
Description
INFO Using path rest_app\main.py
INFO Resolved absolute path C:\Repo\RulesQuestioner\rest_app\main.py
INFO Searching for package file structure from directories with init.py files
INFO Importing from C:\Repo\RulesQuestioner
╭─ Python package file structure ─╮
│ │
│ 📁 rest_app │
│ ├── 🐍 init.py │
│ └── 🐍 main.py │
│ │
╰─────────────────────────────────╯
INFO Importing module rest_app.main
╭──────────────────────────────────────── Traceback (most recent call last) ────────────────────────────────────────╮
│ C:\Users\david\AppData\Local\pypoetry\Cache\virtualenvs\rulesquestioner-c3d_aRDX-py3.11\Lib\site-packages\fastapi │
│ _cli\cli.py:174 in dev │
│ │
│ 171 │ │
│ 172 │ Otherwise, it uses the first [bold]FastAPI[/bold] app found in the imported module o │
│ 173 │ """ │
│ ❱ 174 │ _run( │
│ 175 │ │ path=path, │
│ 176 │ │ host=host, │
│ 177 │ │ port=port, │
│ │
│ ╭──────────────────── locals ─────────────────────╮ │
│ │ app = None │ │
│ │ host = '127.0.0.1' │ │
│ │ path = WindowsPath('rest_app/main.py') │ │
│ │ port = 8002 │ │
│ │ proxy_headers = True │ │
│ │ reload = True │ │
│ │ root_path = '' │ │
│ ╰─────────────────────────────────────────────────╯ │
│ │
│ C:\Users\david\AppData\Local\pypoetry\Cache\virtualenvs\rulesquestioner-c3d_aRDX-py3.11\Lib\site-packages\fastapi │
│ _cli\cli.py:65 in _run │
│ │
│ 62 │ proxy_headers: bool = False, │
│ 63 ) -> None: │
│ 64 │ try: │
│ ❱ 65 │ │ use_uvicorn_app = get_import_string(path=path, app_name=app) │
│ 66 │ except FastAPICLIException as e: │
│ 67 │ │ logger.error(str(e)) │
│ 68 │ │ raise typer.Exit(code=1) from None │
│ │
│ ╭──────────────────── locals ─────────────────────╮ │
│ │ app = None │ │
│ │ command = 'dev' │ │
│ │ host = '127.0.0.1' │ │
│ │ path = WindowsPath('rest_app/main.py') │ │
│ │ port = 8002 │ │
│ │ proxy_headers = True │ │
│ │ reload = True │ │
│ │ root_path = '' │ │
│ │ workers = None │ │
│ ╰─────────────────────────────────────────────────╯ │
│ │
│ C:\Users\david\AppData\Local\pypoetry\Cache\virtualenvs\rulesquestioner-c3d_aRDX-py3.11\Lib\site-packages\fastapi │
│ _cli\discover.py:150 in get_import_string │
│ │
│ 147 │ │ raise FastAPICLIException(f"Path does not exist {path}") │
│ 148 │ mod_data = get_module_data_from_path(path) │
│ 149 │ sys.path.insert(0, str(mod_data.extra_sys_path)) │
│ ❱ 150 │ use_app_name = get_app_name(mod_data=mod_data, app_name=app_name) │
│ 151 │ import_example = Syntax( │
│ 152 │ │ f"from {mod_data.module_import_str} import {use_app_name}", "python" │
│ 153 │ ) │
│ │
│ ╭─────────────────────────────── locals ───────────────────────────────╮ │
│ │ app_name = None │ │
│ │ mod_data = ModuleData( │ │
│ │ │ module_import_str='rest_app.main', │ │
│ │ │ extra_sys_path=WindowsPath('C:/Repo/RulesQuestioner') │ │
│ │ ) │ │
│ │ path = WindowsPath('rest_app/main.py') │ │
│ ╰──────────────────────────────────────────────────────────────────────╯ │
│ │
│ C:\Users\david\AppData\Local\pypoetry\Cache\virtualenvs\rulesquestioner-c3d_aRDX-py3.11\Lib\site-packages\fastapi │
│ cli\discover.py:103 in get_app_name │
│ │
│ 100 │
│ 101 def get_app_name(*, mod_data: ModuleData, app_name: Union[str, None] = None) -> str: │
│ 102 │ try: │
│ ❱ 103 │ │ mod = importlib.import_module(mod_data.module_import_str) │
│ 104 │ except (ImportError, ValueError) as e: │
│ 105 │ │ logger.error(f"Import error: {e}") │
│ 106 │ │ logger.warning( │
│ │
│ ╭─────────────────────────────── locals ───────────────────────────────╮ │
│ │ app_name = None │ │
│ │ mod_data = ModuleData( │ │
│ │ │ module_import_str='rest_app.main', │ │
│ │ │ extra_sys_path=WindowsPath('C:/Repo/RulesQuestioner') │ │
│ │ ) │ │
│ ╰──────────────────────────────────────────────────────────────────────╯ │
│ │
│ C:\Users\david\AppData\Local\Programs\Python\Python311\Lib\importlib_init.py:126 in import_module │
│ │
│ 123 │ │ │ if character != '.': │
│ 124 │ │ │ │ break │
│ 125 │ │ │ level += 1 │
│ ❱ 126 │ return _bootstrap._gcd_import(name[level:], package, level) │
│ 127 │
│ 128 │
│ 129 _RELOADING = {} │
│ │
│ ╭───────── locals ──────────╮ │
│ │ level = 0 │ │
│ │ name = 'rest_app.main' │ │
│ │ package = None │ │
│ ╰───────────────────────────╯ │
│ in _gcd_import:1206 │
│ ╭───────── locals ──────────╮ │
│ │ level = 0 │ │
│ │ name = 'rest_app.main' │ │
│ │ package = None │ │
│ ╰───────────────────────────╯ │
│ in find_and_load:1178 │
│ ╭──────────────────────── locals ────────────────────────╮ │
│ │ import = <function _gcd_import at 0x0000025201813D80> │ │
│ │ module = <object object at 0x0000025201844050> │ │
│ │ name = 'rest_app.main' │ │
│ ╰────────────────────────────────────────────────────────╯ │
│ in find_and_load_unlocked:1149 │
│ ╭─────────────────────────────────────────────────── locals ────────────────────────────────────────────────────╮ │
│ │ child = 'main' │ │
│ │ import = <function _gcd_import at 0x0000025201813D80> │ │
│ │ name = 'rest_app.main' │ │
│ │ parent = 'rest_app' │ │
│ │ parent_module = <module 'rest_app' from 'C:\Repo\RulesQuestioner\rest_app\init.py'> │ │
│ │ parent_spec = ModuleSpec(name='rest_app', loader=<_frozen_importlib_external.SourceFileLoader object at │ │
│ │ 0x0000025206779990>, origin='C:\Repo\RulesQuestioner\rest_app\init.py', │ │
│ │ submodule_search_locations=['C:\Repo\RulesQuestioner\rest_app']) │ │
│ │ path = ['C:\Repo\RulesQuestioner\rest_app'] │ │
│ │ spec = ModuleSpec(name='rest_app.main', loader=<_frozen_importlib_external.SourceFileLoader object │ │
│ │ at 0x0000025206779F90>, origin='C:\Repo\RulesQuestioner\rest_app\main.py') │ │
│ ╰───────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ │
│ in _load_unlocked:690 │
│ ╭─────────────────────────────────────────────────── locals ────────────────────────────────────────────────────╮ │
│ │ module = <module 'rest_app.main' from 'C:\Repo\RulesQuestioner\rest_app\main.py'> │ │
│ │ spec = ModuleSpec(name='rest_app.main', loader=<_frozen_importlib_external.SourceFileLoader object at │ │
│ │ 0x0000025206779F90>, origin='C:\Repo\RulesQuestioner\rest_app\main.py') │ │
│ ╰───────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ │
│ in exec_module:940 │
│ ╭─────────────────────────────────────────────────── locals ────────────────────────────────────────────────────╮ │
│ │ code = <code object at 0x0000025204A911D0, file "C:\Repo\RulesQuestioner\rest_app\main.py", line │ │
│ │ 1> │ │
│ │ module = <module 'rest_app.main' from 'C:\Repo\RulesQuestioner\rest_app\main.py'> │ │
│ │ self = <_frozen_importlib_external.SourceFileLoader object at 0x0000025206779F90> │ │
│ ╰───────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ │
│ in _call_with_frames_removed:241 │
│ ╭─────────────────────────────────────────────────── locals ────────────────────────────────────────────────────╮ │
│ │ args = ( │ │
│ │ │ <code object at 0x0000025204A911D0, file "C:\Repo\RulesQuestioner\rest_app\main.py", line │ │
│ │ 1>, │ │
│ │ │ { │ │
│ │ │ │ 'name': 'rest_app.main', │ │
│ │ │ │ 'doc': None, │ │
│ │ │ │ 'package': 'rest_app', │ │
│ │ │ │ 'loader': <_frozen_importlib_external.SourceFileLoader object at 0x0000025206779F90>, │ │
│ │ │ │ 'spec': ModuleSpec(name='rest_app.main', │ │
│ │ loader=<_frozen_importlib_external.SourceFileLoader object at 0x0000025206779F90>, │ │
│ │ origin='C:\Repo\RulesQuestioner\rest_app\main.py'), │ │
│ │ │ │ 'file': 'C:\Repo\RulesQuestioner\rest_app\main.py', │ │
│ │ │ │ 'cached': 'C:\Repo\RulesQuestioner\rest_app\pycache\main.cpython-311.pyc', │ │
│ │ │ │ 'builtins': { │ │
│ │ │ │ │ 'name': 'builtins', │ │
│ │ │ │ │ 'doc': 'Built-in functions, exceptions, and other objects.\n\nNoteworthy: None is the │ │
│ │ nil'+46, │ │ │ │ │ │ │ '__package__': '', │ │ │ │ │ │ │ '__loader__': <class '_frozen_importlib.BuiltinImporter'>, │ │ │ │ │ │ │ '__spec__': ModuleSpec(name='builtins', loader=<class │ │ │ │ '_frozen_importlib.BuiltinImporter'>, origin='built-in'), │ │ │ │ │ │ │ '__build_class__': <built-in function __build_class__>, │ │ │ │ │ │ │ '__import__': <built-in function __import__>, │ │ │ │ │ │ │ 'abs': <built-in function abs>, │ │ │ │ │ │ │ 'all': <built-in function all>, │ │ │ │ │ │ │ 'any': <built-in function any>, │ │ │ │ │ │ │ ... +148 │ │ │ │ │ │ }, │ │ │ │ │ │ 'Depends': <function Depends at 0x0000025206554900>, │ │ │ │ │ │ 'FastAPI': <class 'fastapi.applications.FastAPI'>, │ │ │ │ │ │ ... +2 │ │ │ │ │ } │ │ │ │ ) │ │ │ │ f = <built-in function exec> │ │ │ │ kwds = {} │ │ │ ╰───────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ │ │ │ │ C:\Repo\RulesQuestioner\rest_app\main.py:4 in <module> │ │ │ │ 1 │ │ 2 from fastapi import Depends, FastAPI │ │ 3 from dependency_injector.wiring import Provide, inject │ │ ❱ 4 from .containers import Application │ │ 5 from .endpoints import document_endpoints │ │ 6 │ │ 7 app = FastAPI() │ │ │ │ ╭──────────────────────── locals ────────────────────────╮ │ │ │ Depends = <function Depends at 0x0000025206554900> │ │ │ │ FastAPI = <class 'fastapi.applications.FastAPI'> │ │ │ │ inject = <function inject at 0x00000252068556C0> │ │ │ │ Provide = <class 'dependency_injector.wiring.Provide'> │ │ │ ╰────────────────────────────────────────────────────────╯ │ │ │ │ C:\Repo\RulesQuestioner\rest_app\containers.py:5 in <module> │ │ │ │ 2 from dependency_injector import containers, providers │ │ 3 from fastapi import APIRouter │ │ 4 from . import services │ │ ❱ 5 from .endpoints import document_endpoints │ │ 6 │ │ 7 class Core(containers.DeclarativeContainer): │ │ 8 │ config = providers.Configuration() │ │ │ │ ╭─────────────────────────────────────────────────── locals ────────────────────────────────────────────────────╮ │ │ │ APIRouter = <class 'fastapi.routing.APIRouter'> │ │ │ │ containers = <module 'dependency_injector.containers' from │ │ │ │ 'C:\\Users\\david\\AppData\\Local\\pypoetry\\Cache\\virtualenvs\\rulesquestioner-c3d_aRDX-py3.1… │ │ │ │ logging = <module 'logging' from │ │ │ │ 'C:\\Users\\david\\AppData\\Local\\Programs\\Python\\Python311\\Lib\\logging\\__init__.py'> │ │ │ │ providers = <module 'dependency_injector.providers' from │ │ │ │ 'C:\\Users\\david\\AppData\\Local\\pypoetry\\Cache\\virtualenvs\\rulesquestioner-c3d_aRDX-py3.1… │ │ │ │ services = <module 'rest_app.services' from 'C:\\Repo\\RulesQuestioner\\rest_app\\services\\__init__.py'> │ │ │ ╰───────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ │ │ │ │ C:\Repo\RulesQuestioner\rest_app\endpoints\document_endpoints.py:7 in <module> │ │ │ │ 4 │ │ 5 router = InferringRouter() │ │ 6 │ │ ❱ 7 @cbv(router) │ │ 8 class DocumentEndpoints(BaseEndpoint): │ │ 9 │ def __init__(self) -> None: │ │ 10 │ │ super().__init__() │ │ │ │ ╭────────────────────────────────── locals ──────────────────────────────────╮ │ │ │ BaseEndpoint = <class 'rest_app.endpoints.base_endpoint.BaseEndpoint'> │ │ │ │ cbv = <function cbv at 0x00000252068862A0> │ │ │ │ InferringRouter = <class 'fastapi.routing.APIRouter'> │ │ │ │ router = <fastapi.routing.APIRouter object at 0x000002520686CDD0> │ │ │ ╰────────────────────────────────────────────────────────────────────────────╯ │ │ │ │ C:\Users\david\AppData\Local\pypoetry\Cache\virtualenvs\rulesquestioner-c3d_aRDX-py3.11\Lib\site-packages\fastapi │ │ _restful\cbv.py:46 in decorator │ │ │ │ 43 │ │ │ 44 │ def decorator(cls: Type[T]) -> Type[T]: │ │ 45 │ │ # Define cls as cbv class exclusively when using the decorator │ │ ❱ 46 │ │ return _cbv(router, cls, *urls) │ │ 47 │ │ │ 48 │ return decorator │ │ 49 │ │ │ │ ╭────────────────────────────────── locals ──────────────────────────────────╮ │ │ │ cls = <class 'rest_app.endpoints.document_endpoints.DocumentEndpoints'> │ │ │ │ router = <fastapi.routing.APIRouter object at 0x000002520686CDD0> │ │ │ │ urls = () │ │ │ ╰────────────────────────────────────────────────────────────────────────────╯ │ │ │ │ C:\Users\david\AppData\Local\pypoetry\Cache\virtualenvs\rulesquestioner-c3d_aRDX-py3.11\Lib\site-packages\fastapi │ │ _restful\cbv.py:57 in _cbv │ │ │ │ 54 │ function calls that will properly inject an instance of cls`. │
│ 55 │ """ │
│ 56 │ _init_cbv(cls, instance) │
│ ❱ 57 │ _register_endpoints(router, cls, *urls) │
│ 58 │ return cls │
│ 59 │
│ 60 │
│ │
│ ╭─────────────────────────────────── locals ───────────────────────────────────╮ │
│ │ cls = <class 'rest_app.endpoints.document_endpoints.DocumentEndpoints'> │ │
│ │ instance = None │ │
│ │ router = <fastapi.routing.APIRouter object at 0x000002520686CDD0> │ │
│ │ urls = () │ │
│ ╰──────────────────────────────────────────────────────────────────────────────╯ │
│ │
│ C:\Users\david\AppData\Local\pypoetry\Cache\virtualenvs\rulesquestioner-c3d_aRDX-py3.11\Lib\site-packages\fastapi │
│ _restful\cbv.py:131 in _register_endpoints │
│ │
│ 128 │ for route in cbv_routes: │
│ 129 │ │ router.routes.remove(route) │
│ 130 │ │ route.path = route.path[prefix_length:] │
│ ❱ 131 │ │ _update_cbv_route_endpoint_signature(cls, route) │
│ 132 │ │ route.name = cls.name + "." + route.name │
│ 133 │ │ cbv_router.routes.append(route) │
│ 134 │ router.include_router(cbv_router) │
│ │
│ ╭─────────────────────────────────────────────────── locals ────────────────────────────────────────────────────╮ │
│ │ cbv_router = <fastapi.routing.APIRouter object at 0x00000252063A8110> │ │
│ │ cbv_routes = [APIRoute(path='/documents', name='get_hello_world', methods=['GET'])] │ │
│ │ cls = <class 'rest_app.endpoints.document_endpoints.DocumentEndpoints'> │ │
│ │ function_members = [ │ │
│ │ │ ( │ │
│ │ │ │ 'init', │ │
│ │ │ │ <function _init_cbv..new_init at 0x0000025206885E40> │ │
│ │ │ ), │ │
│ │ │ ( │ │
│ │ │ │ 'get_hello_world', │ │
│ │ │ │ <function DocumentEndpoints.get_hello_world at 0x00000252068A8EA0> │ │
│ │ │ ) │ │
│ │ ] │ │
│ │ functions_set = { │ │
│ │ │ <function DocumentEndpoints.get_hello_world at 0x00000252068A8EA0>, │ │
│ │ │ <function _init_cbv..new_init at 0x0000025206885E40> │ │
│ │ } │ │
│ │ prefix_length = 0 │ │
│ │ route = APIRoute(path='/documents', name='get_hello_world', methods=['GET']) │ │
│ │ route_methods = {'GET'} │ │
│ │ router = <fastapi.routing.APIRouter object at 0x000002520686CDD0> │ │
│ │ router_roles = [('/documents', ('GET',))] │ │
│ │ urls = () │ │
│ ╰───────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ │
│ │
│ C:\Users\david\AppData\Local\pypoetry\Cache\virtualenvs\rulesquestioner-c3d_aRDX-py3.11\Lib\site-packages\fastapi │
│ _restful\cbv.py:170 in _update_cbv_route_endpoint_signature │
│ │
│ 167 │ old_endpoint = route.endpoint │
│ 168 │ old_signature = inspect.signature(old_endpoint) │
│ 169 │ old_parameters: List[inspect.Parameter] = list(old_signature.parameters.values()) │
│ ❱ 170 │ old_first_parameter = old_parameters[0] │
│ 171 │ new_first_parameter = old_first_parameter.replace(default=Depends(cls)) │
│ 172 │ new_parameters = [new_first_parameter] + [ │
│ 173 │ │ parameter.replace(kind=inspect.Parameter.KEYWORD_ONLY) for parameter in old_para ││ ││ ╭─────────────────────────────────────── locals ────────────────────────────────────────╮ ││ │ cls = <class 'rest_app.endpoints.document_endpoints.DocumentEndpoints'> │ ││ │ old_endpoint = <function DocumentEndpoints.get_hello_world at 0x00000252068A8EA0> │ ││ │ old_parameters = [] │ ││ │ old_signature = <Signature ()> │ ││ │ route = APIRoute(path='/documents', name='get_hello_world', methods=['GET']) │ ││ ╰───────────────────────────────────────────────────────────────────────────────────────╯ │╰───────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯IndexError: list index out of range
This issue was reported before and was given an unhelpful response about this repo being dead. The issue is still happening over 2 years later.