Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[BUG] old_first_parameter = old_parameters[0] IndexError: list index out of range #337

Open
david-a-rivera opened this issue Sep 9, 2024 · 1 comment
Labels
bug Something isn't working

Comments

@david-a-rivera
Copy link

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.

@david-a-rivera david-a-rivera added the bug Something isn't working label Sep 9, 2024
@yuval9313
Copy link
Collaborator

Interesting, I'll look over it soon

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

No branches or pull requests

2 participants