Прямая ссылка должна быть выражением - получено 'postgresql

Я получаю эту ошибку

Forward reference must be an expression -- got 'postgresql

Вот полный журнал

Traceback (most recent call last):

  File "/usr/local/lib/python3.9/typing.py", line 528, in __init__

    code = compile(arg, '<string>', 'eval')

  File "<string>", line 1

    postgresql+asyncpg://postgres:postgres@db:5432/blog

                      ^

SyntaxError: invalid syntax


During handling of the above exception, another exception occurred:


Traceback (most recent call last):

  File "/code/asgi.py", line 3, in <module>

    from api.app import create_app

  File "/code/api/app.py", line 2, in <module>

    from api.database import create_db_and_tables

  File "/code/api/database.py", line 3, in <module>

    from api.config import settings

  File "/code/api/config.py", line 8, in <module>

    class Settings(BaseSettings):

  File "/usr/local/lib/python3.9/site-packages/pydantic/main.py", line 179, in __new__

    annotations = resolve_annotations(namespace.get('__annotations__', {}), namespace.get('__module__', None))

  File "/usr/local/lib/python3.9/site-packages/pydantic/typing.py", line 395, in resolve_annotations

    value = ForwardRef(value, is_argument=False, is_class=True)

  File "/usr/local/lib/python3.9/typing.py", line 530, in __init__

    raise SyntaxError(f"Forward reference must be an expression -- got {arg!r}")

SyntaxError: Forward reference must be an expression -- got 'postgresql+asyncpg://postgres:postgres@db:5432/blog'

Вот как я его использую

class Settings(BaseSettings):
    PROJECT_NAME: str = f"SQLModel API - {os.getenv('ENV', 'development').capitalize()}"
    DESCRIPTION: str = "A FastAPI + SQLModel production-ready API"
    ENV: str = os.getenv('ENV', 'development')
    VERSION: str = "1"
    SECRET_KEY: str = secrets.token_urlsafe(32)
    # DATABASE_URI: Optional[PostgresDsn] = None
    DATABASE_URI: os.environ.get("DATABASE_URL")  # sql

Где переменная env устанавливается вот так в dockerfile:

services:
  web:
    build:
      context: .
      dockerfile: "Dockerfile"
    command: python asgi.py
    volumes:
      - .:/code
    ports:
      - 8004:8000
    environment:
      - DATABASE_URL=postgresql+asyncpg://postgres:postgres@db:5432/blog
    depends_on:
    ```

Изменить -> DATABASE_URI: os.environ.get("DATABASE_URL") на -> DATABASE_URI:str = os.environ.get("DATABASE_URL")

Вернуться на верх