es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Cómo proporcionar un directorio de origen en la directiva [tool.django-stubs] de un archivo pyproject.tom?

Estoy utilizando un directorio src como directorio de origen raíz en mis proyectos de Django.

Estoy intentando realizar acciones previas a la confirmación en esos proyectos de Django, con mypy y django-stubs.

¿Hay alguna forma de especificar en pyproject.toml que la raíz del origen se encuentra en src/?

Por ahora, he realizado lo siguiente:


[tool.django-stubs]
django_version = "3.2"
django_apps = ["account", "seniors", "seniors_app"]
django_settings_module = "seniors.settings.dev"
ignore_missing_settings = true
ignore_missing_model_attributes = true

sh
pre-commit run --all
...
ModuleNotFoundError: No hay ningún módulo llamado 'seniors'

Cuando coloco django_settings_module = "src.seniors.settings.dev", luego tengo algunos errores al importar los otros módulos (account…)

¿Tienes alguna idea? ¡Seguramente no deseo cambiar la estructura de mi proyecto!

¡Gracias!

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Sí, puedes especificar la ruta de origen como src/ en tu archivo pyproject.toml. Para hacer esto, necesitas agregar la siguiente entrada en la sección [tool]:

    [tool.black]
    line-length = 88
    
    [tool.isort]
    profile = "black"
    
    [tool.django-stubs]
    django_version = "3.2"
    django_apps = ["account", "seniors", "seniors_app"]
    django_settings_module = "seniors.settings.dev"
    ignore_missing_settings = true
    ignore_missing_model_attributes = true
    
    [tool.mypy]
    python_version = 3.9
    plugins = ["mypy_django_plugin.main"]
    
    [mypy]
    python_version = 3.9
    strict_optional = True
    warn_unused_ignores = True
    warn_unused_configs = True
    show_error_codes = True
    ignore_missing_imports = True
    
    [tool.flake8]
    max_line_length = 88
    
    [tool.pre_commit]
    version = "pre-commit==2.15.0"
    description = "Ganchos pre-commit para proyectos Python."
    skip = "multilint,sublinter"
    
    [build-system]
    requires = ["setuptools>=42", "wheel"]
    build-backend = "setuptools.build_meta"
    
    [tool.poetry]
    name = "my_project"
    version = "0.1.0"
    description = ""
    authors = ["My Name <myname@example.com>"]
    license = ""
    readme = ""
    homepage = ""
    repository = ""
    
    [tool.black]
    line-length = 88
    
    [tool.isort]
    profile = "black"
    
    [tool.django-stubs]
    django_version = "3.2"
    django_apps = ["account", "seniors", "seniors_app"]
    django_settings_module = "src.seniors.settings.dev" # cambiar aquí
    ignore_missing_settings = true
    ignore_missing_model_attributes = true
    
    [tool.mypy]
    python_version = 3.9
    plugins = ["mypy_django_plugin.main"]
    
    [mypy]
    python_version = 3.9
    strict_optional = True
    warn_unused_ignores = True
    warn_unused_configs = True
    show_error_codes = True
    ignore_missing_imports = True
    
    [tool.flake8]
    max_line_length = 88
    
    [tool.pre_commit]
    version = "pre-commit==2.15.0"
    description = "Ganchos pre-commit para proyectos Python."
    skip = "multilint,sublinter"
    
    [build-system]
    requires = ["setuptools>=42", "wheel"]
    build-backend = "setuptools.build_meta"
    
    [tool.poetry]
    name = "my_project"
    version = "0.1.0"
    description = ""
    authors = ["My Name <myname@example.com>"]
    license = ""
    readme = ""
    homepage = ""
    repository = ""
    

    Luego, cuando ejecutes el gancho pre-commit como pre-commit run, realizará las acciones en el proyecto ubicado en el directorio src/./myname@example.com/myname@example.com

Comments are closed.