[run]
source = .
omit =
    */venv/*
    */tests/*
    */test_*
    */migrations/*
    */apps.py
    */admin.py
    manage.py
    setup.py
    crm/wsgi.py
    crm/asgi.py
    crm/test_settings.py
    crm/server_settings.py
    # Management commands (require DB/infra, tested manually)
    */management/commands/*
    # Celery async tasks (require broker, tested via integration)
    accounts/tasks.py
    cases/tasks.py
    common/tasks.py
    contacts/tasks.py
    leads/tasks.py
    opportunity/tasks.py
    tasks/celery_tasks.py
    invoices/tasks.py
    # Celery task tests (not API tests, require broker)
    */tests_celery_tasks.py
    # Seed data / fixtures
    invoices/seed.py
    # Legacy test file (broken imports, kept for reference)
    invoices/tests_legacy.py
    # PDF generation (requires system libs, tested via integration)
    invoices/pdf.py
    # Workflow and service helpers
    leads/services.py
    leads/workflow.py
    opportunity/workflow.py
    # Swagger param definitions (no logic)
    */swagger_params.py
    # Status constants
    common/status.py

[report]
exclude_lines =
    pragma: no cover
    def __unicode__
    def __repr__
    def __str__
    if self\.debug
    raise AssertionError
    raise NotImplementedError
    if 0:
    if __name__ == .__main__.:
    except Exception as e:
    except Exception:

show_missing = True
fail_under = 50
