From b03ebab7474a68b7df4f1b673f7e82b1dd21dfd5 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 13 Feb 2026 09:12:11 +0000 Subject: [PATCH] chore: apply ruff formatting and fix whitespace issues Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com> --- .deepsource.toml | 2 +- .env.demo | 4 +- .github/dependabot.yml | 3 +- .../documentation.instructions.md | 4 +- .github/instructions/frontend.instructions.md | 10 +- .../python-backend.instructions.md | 8 +- .github/instructions/testing.instructions.md | 22 +- .github/workflows/release.yml | 16 +- .readthedocs.yaml | 2 +- .vscode/settings.json | 2 +- AGENTIC_CODING.md | 38 ++-- CONTRIBUTING.md | 2 +- Dockerfile | 2 - MILESTONES.md | 30 +-- NOTICE | 8 +- OAUTH_IMPLEMENTATION_SUMMARY.md | 14 +- README.md | 44 ++-- ROADMAP.md | 2 +- SECURITY_AUDIT.md | 72 +++---- TODO.md | 4 +- TODO_TESTS.md | 36 ++-- WEBDAV_TESTING_SUMMARY.md | 2 +- app/tasks/upload_with_rclone.py | 2 +- browser-extension/IMPLEMENTATION_SUMMARY.md | 12 +- browser-extension/INSTALLATION.txt | 14 +- browser-extension/README.md | 2 +- browser-extension/VISUAL_GUIDE.md | 4 +- browser-extension/popup/popup.js | 32 +-- browser-extension/scripts/background.js | 24 +-- browser-extension/scripts/content.js | 2 +- browser-extension/test.html | 22 +- coverage.json | 2 +- docs/API.md | 8 +- docs/AuthenticationSetup.md | 2 +- docs/BuildMetadata.md | 4 +- docs/ConfigurationGuide.md | 2 +- docs/ConfigurationMaster.md | 2 +- docs/DeploymentGuide.md | 8 +- docs/DropboxSetup.md | 10 +- docs/FileDetailPageLayout.md | 1 - docs/FileProcessingStatusArchitecture.md | 6 +- docs/OAuth_Testing_CI_CD.md | 70 +++---- docs/OneDriveSetup.md | 10 +- docs/RateLimitingStrategy.md | 2 +- docs/SettingsManagement.md | 6 +- docs/StorageArchitecture.md | 2 +- docs/archive/ANALYSIS_SUMMARY.md | 8 +- docs/archive/FILENAME_FIX_SUMMARY.md | 2 +- docs/archive/FRAMEWORK_ANALYSIS.md | 2 +- docs/archive/IMPLEMENTATION_CHECKLIST.md | 2 +- docs/archive/SETTINGS_IMPLEMENTATION.md | 2 +- .../PATH_TRAVERSAL_AUDIT_2026-02-10.md | 24 +-- frontend/static/images/default-avatar.svg | 2 +- frontend/static/js/common.js | 16 +- frontend/static/js/fontawesome-loader.js | 2 +- frontend/static/js/upload.js | 62 +++--- frontend/static/licenses/lgpl.txt | 20 +- frontend/static/logo.svg | 2 +- frontend/static/styles.css | 2 +- frontend/templates/about.html | 8 +- frontend/templates/attribution.html | 12 +- frontend/templates/base.html | 42 ++-- frontend/templates/dropbox.html | 68 +++---- frontend/templates/dropbox_callback.html | 56 ++--- .../templates/dropbox_callback_error.html | 4 +- frontend/templates/env_debug.html | 2 +- frontend/templates/file_detail.html | 192 +++++++++--------- frontend/templates/files copy.html | 10 +- frontend/templates/files.html | 120 +++++------ frontend/templates/google_drive.html | 178 ++++++++-------- frontend/templates/google_drive_callback.html | 114 +++++------ .../google_drive_callback_error.html | 4 +- frontend/templates/imprint.html | 4 +- frontend/templates/license.html | 16 +- frontend/templates/login.html | 18 +- frontend/templates/onedrive.html | 78 +++---- frontend/templates/onedrive_callback.html | 60 +++--- .../templates/onedrive_callback_error.html | 4 +- frontend/templates/settings.html | 26 +-- frontend/templates/setup_wizard.html | 28 +-- frontend/templates/status_dashboard.html | 114 +++++------ frontend/templates/upload.html | 12 +- migrations/README | 2 +- .../versions/001_file_processing_steps.py | 2 +- migrations/versions/002_add_file_paths.py | 2 +- .../versions/003_add_deduplication_support.py | 12 +- pyproject.toml | 4 +- requirements-dev.txt | 2 +- requirements.txt | 2 +- scripts/generate_build_metadata.sh | 6 +- tests/README_INTEGRATION_TESTS.md | 28 +-- tests/README_OAUTH_TESTING.md | 2 +- tests/test_external_integrations.py | 12 +- tests/test_file_splitting.py | 6 +- tests/test_security_headers.py | 6 +- tests/test_upload_webdav_integration.py | 6 +- 96 files changed, 991 insertions(+), 993 deletions(-) diff --git a/.deepsource.toml b/.deepsource.toml index d244e191..68672d87 100644 --- a/.deepsource.toml +++ b/.deepsource.toml @@ -7,4 +7,4 @@ name = "python" runtime_version = "3.x.x" [[analyzers]] -name = "javascript" \ No newline at end of file +name = "javascript" diff --git a/.env.demo b/.env.demo index e0bb72e1..d71fdf10 100644 --- a/.env.demo +++ b/.env.demo @@ -150,7 +150,7 @@ PAPERLESS_NGX_API_TOKEN= # Optional: JSON mapping of metadata fields to Paperless custom field names # This allows you to map multiple extracted metadata fields to custom fields in Paperless # The mapping format is: {"metadata_field_name": "PaperlessCustomFieldName", ...} -# Available metadata fields: absender, empfaenger, correspondent, document_type, language, +# Available metadata fields: absender, empfaenger, correspondent, document_type, language, # kommunikationsart, kommunikationskategorie, reference_number, etc. # Example: PAPERLESS_CUSTOM_FIELDS_MAPPING={"absender": "Sender", "empfaenger": "Recipient", "language": "Language", "correspondent": "Correspondent"} # PAPERLESS_CUSTOM_FIELDS_MAPPING= @@ -238,4 +238,4 @@ NOTIFY_ON_FILE_PROCESSED=True # Uptime Kuma UPTIME_KUMA_URL=https://status.example.com/api/push/abcdef123456?status=up -UPTIME_KUMA_PING_INTERVAL=5 \ No newline at end of file +UPTIME_KUMA_PING_INTERVAL=5 diff --git a/.github/dependabot.yml b/.github/dependabot.yml index e5d9a54e..400c1595 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -10,10 +10,9 @@ updates: schedule: interval: "weekly" open-pull-requests-limit: 10 - + - package-ecosystem: "npm" directory: "/frontend/static" schedule: interval: "monthly" open-pull-requests-limit: 5 - diff --git a/.github/instructions/documentation.instructions.md b/.github/instructions/documentation.instructions.md index d815a50d..8dffcbcd 100644 --- a/.github/instructions/documentation.instructions.md +++ b/.github/instructions/documentation.instructions.md @@ -177,8 +177,8 @@ Example: ```markdown ### OPENAI_API_KEY -**Type:** String -**Required:** Yes +**Type:** String +**Required:** Yes **Default:** None Your OpenAI API key for metadata extraction. diff --git a/.github/instructions/frontend.instructions.md b/.github/instructions/frontend.instructions.md index bc48770f..0ba794ab 100644 --- a/.github/instructions/frontend.instructions.md +++ b/.github/instructions/frontend.instructions.md @@ -22,13 +22,13 @@ These instructions apply to all files in the `frontend/` directory (templates, C {% block content %}

{{ page_title }}

- + {% if error_message %}
{{ error_message }}
{% endif %} - +
@@ -72,9 +72,9 @@ These instructions apply to all files in the `frontend/` directory (templates, C - DocumentMetadata: """ Process a document and extract metadata. - + Args: file_path: Path to the document file user_id: ID of the user uploading the document metadata: Optional additional metadata - + Returns: DocumentMetadata object with extracted information - + Raises: FileNotFoundError: If file doesn't exist ProcessingError: If processing fails @@ -150,7 +150,7 @@ from pydantic_settings import BaseSettings class Settings(BaseSettings): openai_api_key: str max_file_size: int = 10485760 # 10MB default - + class Config: env_file = ".env" ``` diff --git a/.github/instructions/testing.instructions.md b/.github/instructions/testing.instructions.md index 37b3961b..ee9f78db 100644 --- a/.github/instructions/testing.instructions.md +++ b/.github/instructions/testing.instructions.md @@ -68,9 +68,9 @@ def db_session(): Base.metadata.create_all(engine) Session = sessionmaker(bind=engine) session = Session() - + yield session - + session.close() Base.metadata.drop_all(engine) @@ -99,7 +99,7 @@ def test_upload_document(): "/api/documents/upload", files={"file": ("test.pdf", f, "application/pdf")} ) - + assert response.status_code == 201 assert "id" in response.json() ``` @@ -131,12 +131,12 @@ def test_openai_metadata_extraction(mocker): "amount": 100.00, "date": "2024-01-01" } - + mocker.patch( "app.utils.openai_client.extract_metadata", return_value=mock_response ) - + result = extract_document_metadata("test.pdf") assert result["document_type"] == "invoice" @@ -144,12 +144,12 @@ def test_openai_metadata_extraction(mocker): def test_azure_ocr_processing(mocker): """Test OCR with mocked Azure service.""" mock_text = "Sample extracted text" - + mocker.patch( "app.utils.azure_client.extract_text", return_value=mock_text ) - + result = perform_ocr("test.pdf") assert result == mock_text ``` @@ -160,7 +160,7 @@ def test_azure_ocr_processing(mocker): def test_create_document(db_session): """Test document creation in database.""" from app.models import Document - + doc = Document( filename="test.pdf", user_id=1, @@ -168,7 +168,7 @@ def test_create_document(db_session): ) db_session.add(doc) db_session.commit() - + assert doc.id is not None assert doc.filename == "test.pdf" ``` @@ -189,10 +189,10 @@ def test_document_validation(): "filename": "", # Empty filename "size": -1 # Invalid size } - + # Act result = validate_document(invalid_document) - + # Assert assert result.is_valid is False assert "filename" in result.errors diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index b103cfec..1f7423c9 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -17,30 +17,30 @@ jobs: name: Semantic Release runs-on: ubuntu-latest if: github.repository == 'christianlouis/DocuElevate' - + steps: - name: Checkout Code uses: actions/checkout@v4 with: fetch-depth: 0 token: ${{ secrets.GITHUB_TOKEN }} - + - name: Set up Python uses: actions/setup-python@v5 with: python-version: '3.11' cache: 'pip' - + - name: Install dependencies run: | python -m pip install --upgrade pip pip install python-semantic-release - + - name: Configure Git run: | git config --global user.name "github-actions[bot]" git config --global user.email "github-actions[bot]@users.noreply.github.com" - + - name: Run Semantic Release env: GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} @@ -48,7 +48,7 @@ jobs: semantic-release version --print semantic-release version semantic-release publish - + - name: Update build metadata files if changed run: | for f in VERSION BUILD_DATE GIT_SHA RUNTIME_INFO; do @@ -60,7 +60,7 @@ jobs: git commit -m "chore(release): update build metadata files [skip ci]" git push fi - + - name: Trigger Docker Build on Tag if: startsWith(github.ref, 'refs/tags/') uses: actions/github-script@v7 @@ -70,4 +70,4 @@ jobs: const ref = context.ref; const tag = ref.replace('refs/tags/', ''); console.log(`New tag created: ${tag}`); - console.log('Docker build will be triggered automatically by the docker-build workflow'); \ No newline at end of file + console.log('Docker build will be triggered automatically by the docker-build workflow'); diff --git a/.readthedocs.yaml b/.readthedocs.yaml index fbbbcd5e..46625ad2 100644 --- a/.readthedocs.yaml +++ b/.readthedocs.yaml @@ -19,4 +19,4 @@ mkdocs: # See https://docs.readthedocs.io/en/stable/guides/reproducible-builds.html python: install: - - requirements: docs/requirements.txt \ No newline at end of file + - requirements: docs/requirements.txt diff --git a/.vscode/settings.json b/.vscode/settings.json index 9b388533..a3a18383 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -4,4 +4,4 @@ ], "python.testing.unittestEnabled": false, "python.testing.pytestEnabled": true -} \ No newline at end of file +} diff --git a/AGENTIC_CODING.md b/AGENTIC_CODING.md index e4b33e8c..d3665060 100644 --- a/AGENTIC_CODING.md +++ b/AGENTIC_CODING.md @@ -1,6 +1,6 @@ # Agentic Coding Guide for DocuElevate -**Version:** 1.0 +**Version:** 1.0 **Last Updated:** 2026-02-06 This guide helps AI coding agents work effectively with the DocuElevate codebase. It provides context, conventions, and best practices for autonomous code contributions. @@ -80,14 +80,14 @@ DocuElevate/ def process_document(file_path: str, metadata: Dict[str, Any]) -> DocumentMetadata: """ Process a document and extract metadata. - + Args: file_path: Absolute path to the document file metadata: Additional metadata to include - + Returns: DocumentMetadata object with extracted information - + Raises: FileNotFoundError: If file doesn't exist ProcessingError: If processing fails @@ -225,7 +225,7 @@ logger = logging.getLogger(__name__) def my_background_task(self, param: str): """ Description of what this task does. - + Args: param: Description of parameter """ @@ -247,7 +247,7 @@ def my_background_task(self, param: str): ```python class MyModel(Base): __tablename__ = "my_table" - + id = Column(Integer, primary_key=True, index=True) name = Column(String, nullable=False) created_at = Column(DateTime, default=datetime.utcnow) @@ -275,20 +275,20 @@ logger = logging.getLogger(__name__) def upload_to_my_provider(file_path: str, metadata: dict) -> str: """ Upload file to My Provider. - + Args: file_path: Local path to file metadata: Document metadata - + Returns: URL or ID of uploaded file - + Raises: ProviderError: If upload fails """ if not settings.my_provider_api_key: raise ValueError("MY_PROVIDER_API_KEY not configured") - + # Implementation pass ``` @@ -342,11 +342,11 @@ def validate_file_path(file_path: str, base_dir: str = "/workdir") -> Path: try: path = Path(file_path).resolve() base = Path(base_dir).resolve() - + # Ensure path is within base directory if not path.is_relative_to(base): raise ValueError("Path outside allowed directory") - + return path except Exception as e: raise HTTPException( @@ -467,23 +467,23 @@ def process_large_batch(self, file_ids: List[int]): def complex_function(param1: str, param2: int = 10) -> Dict[str, Any]: """ One-line summary of what the function does. - + More detailed explanation if needed. Can span multiple lines and include examples. - + Args: param1: Description of param1 param2: Description of param2, defaults to 10 - + Returns: Dictionary containing: - key1: Description - key2: Description - + Raises: ValueError: If param1 is empty FileNotFoundError: If file doesn't exist - + Examples: >>> result = complex_function("test", 5) >>> print(result['key1']) @@ -650,7 +650,7 @@ DocuElevate uses `python-semantic-release` for automated version management. #### How It Works 1. **PR merges to main** with conventional commits -2. **semantic-release analyzes** commit messages +2. **semantic-release analyzes** commit messages 3. **Automatic updates**: - Bumps `VERSION` file - Updates `CHANGELOG.md` @@ -669,7 +669,7 @@ DocuElevate uses `python-semantic-release` for automated version management. ### Pull Requests 1. Create PR with descriptive title (conventional format if single change) 2. Fill out PR template -3. Link related issues +3. Link related issues 4. Ensure CI passes 5. Request reviews 6. Address feedback diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 01fcf296..c92cb148 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -346,4 +346,4 @@ DocuElevate/ - **GitHub Discussions:** Questions and community support - **Documentation:** Check `docs/` directory for guides -Thank you for contributing to DocuElevate! \ No newline at end of file +Thank you for contributing to DocuElevate! diff --git a/Dockerfile b/Dockerfile index fcbcc732..f2b98dae 100644 --- a/Dockerfile +++ b/Dockerfile @@ -42,5 +42,3 @@ EXPOSE 8000 # Default command CMD ["uvicorn", "app.main:app", "--host", "0.0.0.0", "--port", "8000"] - - diff --git a/MILESTONES.md b/MILESTONES.md index 71dfd4a9..f80a04f1 100644 --- a/MILESTONES.md +++ b/MILESTONES.md @@ -57,8 +57,8 @@ As of February 2026, DocuElevate uses **automated semantic versioning**: ## Completed Milestones ### v0.5.0 - Settings Management & Configuration (February 2026) -**Release Date:** February 8, 2026 -**Status:** ✅ Released +**Release Date:** February 8, 2026 +**Status:** ✅ Released **Theme:** Configuration Management, Security, User Experience #### Goals @@ -90,8 +90,8 @@ As of February 2026, DocuElevate uses **automated semantic versioning**: --- ### v0.3.3 - Drag-and-Drop Upload (February 2026) -**Release Date:** February 8, 2026 -**Status:** ✅ Released +**Release Date:** February 8, 2026 +**Status:** ✅ Released **Theme:** User Experience Enhancement #### Goals @@ -108,8 +108,8 @@ As of February 2026, DocuElevate uses **automated semantic versioning**: --- ### v0.3.2 - Security & Testing Hardening (February 2026) -**Release Date:** February 6, 2026 -**Status:** ✅ Released +**Release Date:** February 6, 2026 +**Status:** ✅ Released **Theme:** Security, Quality, Testing #### Goals @@ -131,8 +131,8 @@ As of February 2026, DocuElevate uses **automated semantic versioning**: ## Upcoming Milestones ### v0.6.0 - Enhanced Search & UI Improvements (April 2026) -**Target Date:** April 1, 2026 -**Status:** 📋 Planned +**Target Date:** April 1, 2026 +**Status:** 📋 Planned **Theme:** User Experience, Search, Performance #### Goals @@ -163,8 +163,8 @@ As of February 2026, DocuElevate uses **automated semantic versioning**: --- ### v0.4.5 - Workflow Automation (June 2026) -**Target Date:** June 1, 2026 -**Status:** 📋 Planned +**Target Date:** June 1, 2026 +**Status:** 📋 Planned **Theme:** Automation, Integration, Webhooks #### Goals @@ -185,8 +185,8 @@ As of February 2026, DocuElevate uses **automated semantic versioning**: --- ### v0.7.0 - Advanced AI & Multi-language (August 2026) -**Target Date:** August 1, 2026 -**Status:** 📋 Planned +**Target Date:** August 1, 2026 +**Status:** 📋 Planned **Theme:** AI Enhancement, Internationalization #### Goals @@ -208,8 +208,8 @@ As of February 2026, DocuElevate uses **automated semantic versioning**: --- ### v1.0.0 - Enterprise Edition (November 2026) -**Target Date:** November 1, 2026 -**Status:** 📋 Planned +**Target Date:** November 1, 2026 +**Status:** 📋 Planned **Theme:** Enterprise Features, Scalability, Multi-tenancy This is our first major release, marking production-ready enterprise capabilities. @@ -322,4 +322,4 @@ Starting with v0.6.0, releases are fully automated using `python-semantic-releas --- -*This milestone document is updated regularly. For real-time status, check our [GitHub Projects](https://github.com/christianlouis/DocuElevate/projects) board.* \ No newline at end of file +*This milestone document is updated regularly. For real-time status, check our [GitHub Projects](https://github.com/christianlouis/DocuElevate/projects) board.* diff --git a/NOTICE b/NOTICE index 8ce08359..5114b033 100644 --- a/NOTICE +++ b/NOTICE @@ -9,15 +9,15 @@ This software includes third-party components with their own licenses: SPECIAL NOTICE REGARDING LGPL SOFTWARE: -------------------------------------------------------------------------------- -DocuElevate incorporates Paramiko, which is licensed under the GNU Lesser General +DocuElevate incorporates Paramiko, which is licensed under the GNU Lesser General Public License (LGPL) version 2.1. In accordance with the LGPL: 1. The complete source code for Paramiko can be obtained from: https://github.com/paramiko/paramiko -2. This software is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License +2. This software is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. 3. A copy of the GNU Lesser General Public License version 2.1 can be found at: diff --git a/OAUTH_IMPLEMENTATION_SUMMARY.md b/OAUTH_IMPLEMENTATION_SUMMARY.md index 9551e244..da8aaa2c 100644 --- a/OAUTH_IMPLEMENTATION_SUMMARY.md +++ b/OAUTH_IMPLEMENTATION_SUMMARY.md @@ -50,7 +50,7 @@ pytest tests/test_oauth_integration_flows.py -v ```bash # Auto-detects and uses real OAuth credentials export AUTHENTIK_CLIENT_ID="your-client-id" -export AUTHENTIK_CLIENT_SECRET="your-client-secret" +export AUTHENTIK_CLIENT_SECRET="your-client-secret" export AUTHENTIK_CONFIG_URL="https://auth.example.com/.well-known/openid-configuration" pytest tests/test_oauth_integration_flows.py -v -m requires_external ``` @@ -128,7 +128,7 @@ async def test_oauth_callback(mock_authorize, oauth_enabled_app, test_user_info) "access_token": "test-token", "userinfo": test_user_info, } - + response = oauth_enabled_app.get("/oauth-callback?code=test-code") assert response.status_code == 302 ``` @@ -185,11 +185,11 @@ jobs: ## Technical Details -**Container**: `ghcr.io/navikt/mock-oauth2-server:2.1.1` -**Framework**: Testcontainers Python 4.14.1+ -**Test Framework**: pytest with async support -**Languages**: Python 3.12+ -**Dependencies**: testcontainers, requests, docker +**Container**: `ghcr.io/navikt/mock-oauth2-server:2.1.1` +**Framework**: Testcontainers Python 4.14.1+ +**Test Framework**: pytest with async support +**Languages**: Python 3.12+ +**Dependencies**: testcontainers, requests, docker ## Files Created/Modified diff --git a/README.md b/README.md index 092be36e..6419218a 100644 --- a/README.md +++ b/README.md @@ -32,12 +32,12 @@ DocuElevate automates the handling, extraction, and processing of documents using a variety of services, including: -- **OpenAI** for metadata extraction and text refinement. -- **Dropbox**, **Nextcloud**, and **Google Drive** for file storage and uploads. -- **Paperless NGX** for document indexing and management. -- **Azure Document Intelligence** for OCR on PDFs. -- **Gotenberg** for file-to-PDF conversions. -- **Authentik** for authentication and user management. +- **OpenAI** for metadata extraction and text refinement. +- **Dropbox**, **Nextcloud**, and **Google Drive** for file storage and uploads. +- **Paperless NGX** for document indexing and management. +- **Azure Document Intelligence** for OCR on PDFs. +- **Gotenberg** for file-to-PDF conversions. +- **Authentik** for authentication and user management. It is designed for flexibility and configurability through environment variables, making it easily customizable for different workflows. The system can fetch documents from multiple IMAP mailboxes, process them (OCR, metadata extraction, PDF conversion), and store them in the desired destinations. @@ -59,7 +59,7 @@ The project includes a **UI** for uploading and managing files, and an API docum
DocuElevate Upload Interface

Upload interface for adding new documents

- + DocuElevate Files View

Files view with processed documents and metadata

@@ -100,28 +100,28 @@ Users can choose to send documents to any combination of these destinations thro ## Features -- **Intuitive File Upload**: +- **Intuitive File Upload**: - Drag-and-drop file upload on both Upload and Files pages—upload anywhere on the Files page - Real-time upload progress with validation - Support for PDF, Office documents, images, and more (up to 500MB per file) -- **Browser Extension**: +- **Browser Extension**: - Send files directly from your browser to DocuElevate with one click - Compatible with Chrome, Firefox, Edge, and other Chromium-based browsers - Context menu integration for quick access - See [Browser Extension Guide](docs/BrowserExtension.md) for installation and usage -- **Document Upload & Storage**: +- **Document Upload & Storage**: - Manual uploads (via API or UI) to Dropbox, Nextcloud, Google Drive, or Paperless -- **OCR Processing (Azure)**: - - Extract text from scanned PDFs using Azure Document Intelligence -- **Metadata Extraction (OpenAI)**: - - Use GPT to classify, label, or otherwise enrich the text with structured metadata -- **PDF Conversion (Gotenberg)**: - - Convert non-PDF attachments (e.g., Word docs, images) into PDFs -- **Document Management (Paperless NGX)**: - - Store processed documents and metadata in a Paperless NGX instance -- **IMAP Integration**: - - Fetch documents from multiple mailboxes (including Gmail) and automatically enqueue them for processing -- **Authentication**: +- **OCR Processing (Azure)**: + - Extract text from scanned PDFs using Azure Document Intelligence +- **Metadata Extraction (OpenAI)**: + - Use GPT to classify, label, or otherwise enrich the text with structured metadata +- **PDF Conversion (Gotenberg)**: + - Convert non-PDF attachments (e.g., Word docs, images) into PDFs +- **Document Management (Paperless NGX)**: + - Store processed documents and metadata in a Paperless NGX instance +- **IMAP Integration**: + - Fetch documents from multiple mailboxes (including Gmail) and automatically enqueue them for processing +- **Authentication**: - Secure access to the system using **Authentik** for OAuth2-based login ## Frameworks Used @@ -235,4 +235,4 @@ For a comprehensive list of all dependencies and their licenses, run: ``` pip install pip-licenses pip-licenses -``` \ No newline at end of file +``` diff --git a/ROADMAP.md b/ROADMAP.md index 5b1de5e7..5b9120a9 100644 --- a/ROADMAP.md +++ b/ROADMAP.md @@ -1,6 +1,6 @@ # DocuElevate Roadmap -**Last Updated:** 2026-02-08 +**Last Updated:** 2026-02-08 **Version:** 1.0 ## Vision diff --git a/SECURITY_AUDIT.md b/SECURITY_AUDIT.md index 36b9d271..f44c0a97 100644 --- a/SECURITY_AUDIT.md +++ b/SECURITY_AUDIT.md @@ -1,6 +1,6 @@ # Security Audit Report -**Date:** 2026-02-12 +**Date:** 2026-02-12 **Status:** Bandit Security Scan Completed - All Critical/High/Medium Issues Resolved ## Executive Summary @@ -11,8 +11,8 @@ This document tracks security vulnerabilities found in DocuElevate and their rem ### CVE-2023-36464: PyPDF2/pypdf Infinite Loop Vulnerability ✅ FIXED (2026-02-12) -**Severity:** Moderate (CVSS: 5.5) -**CVE:** [CVE-2023-36464](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2023-36464) +**Severity:** Moderate (CVSS: 5.5) +**CVE:** [CVE-2023-36464](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2023-36464) **Advisory:** [GHSA-4vvm-4w3v-6mr8](https://github.com/advisories/GHSA-4vvm-4w3v-6mr8) **Issue:** Certain versions of PyPDF2 (>=2.2.0, <=3.0.1) and pypdf (prior to 3.9.0) contain a vulnerability where specially crafted PDF files can trigger an infinite loop in `__parse_content_stream`, causing 100% CPU usage and potential denial of service. @@ -57,8 +57,8 @@ This document tracks security vulnerabilities found in DocuElevate and their rem ### Fixed Issues from Bandit Scan #### 1. B324: Weak MD5 Hash Usage (HIGH SEVERITY) ✅ FIXED -**Occurrences:** 2 -**Locations:** +**Occurrences:** 2 +**Locations:** - `app/api/user.py:26` - Gravatar URL generation - `app/auth.py:65` - Gravatar URL generation @@ -72,7 +72,7 @@ This document tracks security vulnerabilities found in DocuElevate and their rem ``` #### 2. B402/B321: Insecure FTP Protocol (HIGH SEVERITY) ✅ DOCUMENTED -**Occurrences:** 3 +**Occurrences:** 3 **Location:** `app/tasks/upload_to_ftp.py` **Issue:** FTP is an insecure protocol vulnerable to eavesdropping and MITM attacks. @@ -88,7 +88,7 @@ This document tracks security vulnerabilities found in DocuElevate and their rem **Security Note:** For production environments, set `ftp_allow_plaintext=False` to prevent fallback to unencrypted FTP. #### 3. B507: SSH Host Key Verification Disabled (HIGH SEVERITY) ✅ FIXED -**Occurrences:** 1 +**Occurrences:** 1 **Location:** `app/tasks/upload_to_sftp.py:47` **Issue:** Using `paramiko.AutoAddPolicy()` automatically trusts unknown SSH host keys, making connections vulnerable to MITM attacks. @@ -103,7 +103,7 @@ This document tracks security vulnerabilities found in DocuElevate and their rem **Security Note:** The default value is now `False` (secure). For development/testing environments where host keys cannot be pre-configured, set `SFTP_DISABLE_HOST_KEY_VERIFICATION=True` (not recommended for production). #### 4. B113: Missing Timeout on HTTP Requests (MEDIUM SEVERITY) ✅ FIXED -**Occurrences:** 15 +**Occurrences:** 15 **Locations:** - `app/api/dropbox.py` (4 requests calls) - `app/api/google_drive.py` (1 request call) @@ -142,8 +142,8 @@ This document tracks security vulnerabilities found in DocuElevate and their rem ## Critical Vulnerabilities (Fixed) ✅ ### 1. Outdated Authlib with Known Vulnerabilities -**Status:** ✅ FIXED -**Severity:** HIGH +**Status:** ✅ FIXED +**Severity:** HIGH **Description:** Authlib version 1.3.2 had two critical vulnerabilities: - CVE: Denial of Service via Oversized JOSE Segments - CVE: JWS/JWT accepts unknown crit headers (RFC violation → possible authz bypass) @@ -151,18 +151,18 @@ This document tracks security vulnerabilities found in DocuElevate and their rem **Fix:** Updated `requirements.txt` to require `authlib>=1.6.5` ### 2. Starlette DoS Vulnerability -**Status:** ✅ FIXED -**Severity:** MEDIUM +**Status:** ✅ FIXED +**Severity:** MEDIUM **Description:** Starlette 0.41.3 vulnerable to O(n^2) DoS via Range header merging in `FileResponse` **Fix:** Updated `requirements.txt` to require `starlette>=0.49.1` ### 3. Weak SESSION_SECRET Default -**Status:** ✅ FIXED -**Severity:** HIGH +**Status:** ✅ FIXED +**Severity:** HIGH **Description:** Default SESSION_SECRET value in `app/main.py` was a predictable string that could be exploited if not overridden -**Fix:** +**Fix:** - Enhanced validation in `app/main.py` to raise error if auth is enabled without proper secret - Updated default to be clearly marked as insecure for development only - Added generation instructions in error message @@ -170,8 +170,8 @@ This document tracks security vulnerabilities found in DocuElevate and their rem ## Medium Risk Issues (Fixed) ✅ ### 4. Insufficient .gitignore Protection -**Status:** ✅ FIXED -**Severity:** MEDIUM +**Status:** ✅ FIXED +**Severity:** MEDIUM **Description:** .gitignore didn't adequately protect against accidentally committing sensitive files (credentials, private keys, secrets) **Fix:** Enhanced `.gitignore` with comprehensive patterns for: @@ -182,8 +182,8 @@ This document tracks security vulnerabilities found in DocuElevate and their rem - Explicit exclusion of patterns where needed ### 5. File Upload Size Limits -**Status:** ✅ FIXED -**Severity:** MEDIUM +**Status:** ✅ FIXED +**Severity:** MEDIUM **Description:** No configurable limits on file upload sizes could lead to resource exhaustion attacks and DoS. **Fix:** Implemented configurable file upload size limits with the following features: @@ -329,7 +329,7 @@ For security issues, please follow the guidelines in [SECURITY.md](SECURITY.md). ## Path Traversal Vulnerability Audit (2026-02-10) -**Status:** ✅ ALL ISSUES FIXED +**Status:** ✅ ALL ISSUES FIXED **Scope:** Comprehensive review of all file path operations for path traversal vulnerabilities ### Executive Summary @@ -338,11 +338,11 @@ A thorough security audit was conducted on all file path operations in DocuEleva ### Critical Vulnerability: Path Traversal via GPT Metadata Filename -**Status:** ✅ FIXED -**Severity:** CRITICAL +**Status:** ✅ FIXED +**Severity:** CRITICAL **Location:** `app/tasks/embed_metadata_into_pdf.py` (line 144) -**Description:** +**Description:** The `metadata["filename"]` extracted by GPT was used directly in file path operations without sanitization. A malicious document could be crafted to make GPT return metadata containing path traversal sequences (e.g., `../../etc/passwd`, `..\\windows\\system32`), allowing file writes outside the intended `processed/` directory. **Attack Vector:** @@ -376,11 +376,11 @@ suggested_filename = os.path.splitext(suggested_filename)[0] ### Medium Vulnerability: Insecure Path Validation Using String Prefix Check -**Status:** ✅ FIXED -**Severity:** MEDIUM +**Status:** ✅ FIXED +**Severity:** MEDIUM **Location:** `app/tasks/embed_metadata_into_pdf.py` (line 188-193) -**Description:** +**Description:** The code used string-based `startswith()` check to validate if a file was within the workdir/tmp directory before deletion. This is vulnerable to: - Partial directory name matches (e.g., `/workdir/tmp2/` would pass if workdir is `/workdir/tmp`) - Symlink attacks (symlinks are not resolved before checking) @@ -403,7 +403,7 @@ workdir_tmp_path = Path(settings.workdir) / TMP_SUBDIR try: original_file_path = Path(original_file).resolve() workdir_tmp_resolved = workdir_tmp_path.resolve() - + # Check if file is within workdir/tmp and exists if original_file_path.is_relative_to(workdir_tmp_resolved) and original_file_path.exists(): original_file_path.unlink() @@ -420,11 +420,11 @@ except (ValueError, OSError) as e: ### Medium Issue: Insufficient Validation of GPT-Extracted Filenames -**Status:** ✅ FIXED -**Severity:** MEDIUM +**Status:** ✅ FIXED +**Severity:** MEDIUM **Location:** `app/tasks/extract_metadata_with_gpt.py` (after line 124) -**Description:** +**Description:** While the GPT prompt requested filenames in a specific format (YYYY-MM-DD_DescriptiveTitle with only letters, numbers, periods, underscores), there was no validation to enforce this constraint. GPT may not always comply with the format specification, potentially returning: - Filenames with path separators - Filenames with path traversal patterns @@ -449,7 +449,7 @@ if filename: metadata["filename"] = "" ``` -**Defense in Depth:** +**Defense in Depth:** This validation provides an additional layer of security before the filename reaches `embed_metadata_into_pdf.py`, where it is also sanitized. ### Security-Positive Findings @@ -502,11 +502,11 @@ def resolve_file_path(base_dir, file_path): """Safely resolve file path within base directory.""" base = Path(base_dir).resolve() target = (base / file_path).resolve() - + # Ensure target is within base directory if not target.is_relative_to(base): raise ValueError("Path traversal attempt detected") - + return target ``` @@ -610,7 +610,7 @@ All identified path traversal vulnerabilities have been remediated with defense- ## Security Headers Implementation (2026-02-10) -**Status:** ✅ COMPLETED +**Status:** ✅ COMPLETED **Scope:** HTTP security headers middleware for browser-side security ### Executive Summary @@ -654,7 +654,7 @@ SECURITY_HEADER_CSP_VALUE="default-src 'self'; script-src 'self' 'unsafe-inline' - Mitigates XSS attack vectors - Customizable per deployment needs -**Trade-offs:** +**Trade-offs:** - Default policy includes `'unsafe-inline'` for compatibility with Tailwind CSS and inline JavaScript - Stricter policies can be configured using nonces or hashes @@ -832,4 +832,4 @@ Security headers implementation is complete and production-ready. The middleware --- -**Next Audit Due:** 2026-05-07 (Quarterly) \ No newline at end of file +**Next Audit Due:** 2026-05-07 (Quarterly) diff --git a/TODO.md b/TODO.md index cbea172b..9487e88c 100644 --- a/TODO.md +++ b/TODO.md @@ -1,6 +1,6 @@ # DocuElevate TODO List -**Last Updated:** 2026-02-08 +**Last Updated:** 2026-02-08 **Current Version:** v0.5.0 This document tracks actionable tasks for the current development cycle. For long-term planning, see [ROADMAP.md](ROADMAP.md) and [MILESTONES.md](MILESTONES.md). @@ -10,7 +10,7 @@ This document tracks actionable tasks for the current development cycle. For lon ## ⚠️ Important Note on Versioning As of this update, DocuElevate uses **automated semantic versioning** via `python-semantic-release`: -- **DO NOT** manually edit `VERSION` or `CHANGELOG.md` +- **DO NOT** manually edit `VERSION` or `CHANGELOG.md` - Version bumps are automated based on conventional commit messages - See [CONTRIBUTING.md](CONTRIBUTING.md) for commit message format diff --git a/TODO_TESTS.md b/TODO_TESTS.md index 3ad1a973..d9178c29 100644 --- a/TODO_TESTS.md +++ b/TODO_TESTS.md @@ -4,10 +4,10 @@ This document tracks test coverage improvements for DocuElevate. The goal is to ## Current Status -**Initial Coverage**: 45.09% -**Current Coverage**: 48.17% -**Progress**: +3.08% -**Target Coverage**: 60%+ (Phase 1), then 70%, 80% +**Initial Coverage**: 45.09% +**Current Coverage**: 48.17% +**Progress**: +3.08% +**Target Coverage**: 60%+ (Phase 1), then 70%, 80% **Remaining to target**: ~12% ## Completed Tests @@ -21,22 +21,22 @@ This document tracks test coverage improvements for DocuElevate. The goal is to - Test is_encrypted function - Test is_encryption_available - Mock cryptography library for error cases - + - [x] `app/celery_worker.py` (0% → 90.62%) ✅ - Basic module structure tests (removed tests requiring Redis) - + - [x] `app/tasks/uptime_kuma_tasks.py` (0% → 100%) ✅ - Test ping_uptime_kuma with valid URL - Test skipping when URL not configured - Test error handling for failed requests - + - [x] `app/utils/` package (exports via __init__.py) ✅ - Package exports tested in test_reexports.py - Individual module coverage from actual usage - + - [x] `app/frontend.py` (0% → 100%) ✅ - Simple re-export module, test imports work - + - [x] `app/utils/config_validator.py` (0% → Still 0%) ⚠️ - Re-export module, coverage is from actual usage @@ -46,11 +46,11 @@ This document tracks test coverage improvements for DocuElevate. The goal is to - Test get_unique_filename - Test extract_remote_path - Test filename validation functions - + - [x] `app/utils/logging.py` (42.86% → 100%) ✅ - Test log_task_progress function - Test various log message formats - + - [x] `app/utils/oauth_helper.py` (17.50% → 100%) ✅ - Test OAuth token exchange - Test error handling @@ -80,17 +80,17 @@ This document tracks test coverage improvements for DocuElevate. The goal is to - Test Azure connection - Test credential validation - Mock Azure API responses - + - [ ] `app/api/dropbox.py` (16.94% → 50%+) - Test OAuth flow (mocked) - Test token validation - Test connection testing - + - [ ] `app/api/google_drive.py` (12.94% → 50%+) - Test OAuth flow (mocked) - Test token validation - Test drive connection - + - [ ] `app/api/onedrive.py` (13.83% → 50%+) - Test OAuth flow (mocked) - Test token validation @@ -101,7 +101,7 @@ This document tracks test coverage improvements for DocuElevate. The goal is to - Test PDF conversion with various formats - Test Gotenberg integration (mocked) - Test error handling - + - [ ] `app/tasks/embed_metadata_into_pdf.py` (19.05% → 50%+) - Test metadata embedding - Test PDF manipulation @@ -124,18 +124,18 @@ These require complex external service mocking: - Test credential validation for each provider - Test failure state management - Test notification system - + - [ ] `app/tasks/imap_tasks.py` (0%) - Requires IMAP server mocking - Test email fetching - Test email parsing - Test lock management with Redis - + - [ ] `app/tasks/upload_with_rclone.py` (0%) - Test rclone command execution - Test configuration management - Test error handling - + - [ ] `app/tasks/extract_metadata_with_gpt.py` (28.79%) - Test GPT metadata extraction - Mock OpenAI API responses diff --git a/WEBDAV_TESTING_SUMMARY.md b/WEBDAV_TESTING_SUMMARY.md index 2947b31c..4b9d5862 100644 --- a/WEBDAV_TESTING_SUMMARY.md +++ b/WEBDAV_TESTING_SUMMARY.md @@ -185,7 +185,7 @@ pytest tests/test_upload_webdav*.py -v - **Docker:** Must be installed and running - **Memory:** ~100MB per container, ~1GB total for full stack - **Disk:** ~2GB for all Docker images -- **Time:** +- **Time:** - First run: ~5-10 minutes (image pulls) - Subsequent runs: ~10-60 seconds per test diff --git a/app/tasks/upload_with_rclone.py b/app/tasks/upload_with_rclone.py index 1269713e..59b83f71 100644 --- a/app/tasks/upload_with_rclone.py +++ b/app/tasks/upload_with_rclone.py @@ -72,7 +72,7 @@ def upload_with_rclone(self, file_path: str, destination: str): # Try to get a public link if possible try: link_cmd = ["rclone", "link", "--config", rclone_config_path, f"{destination}/{filename}"] - link_result = subprocess.run(link_cmd, capture_output=True, text=True) + link_result = subprocess.run(link_cmd, capture_output=True, text=True, check=False) public_url = link_result.stdout.strip() if link_result.returncode == 0 else None except (subprocess.SubprocessError, OSError) as e: logger.warning(f"[{task_id}] Failed to get public link for {filename}: {str(e)}") diff --git a/browser-extension/IMPLEMENTATION_SUMMARY.md b/browser-extension/IMPLEMENTATION_SUMMARY.md index 3eeac91b..58bc66c3 100644 --- a/browser-extension/IMPLEMENTATION_SUMMARY.md +++ b/browser-extension/IMPLEMENTATION_SUMMARY.md @@ -6,8 +6,8 @@ Successfully implemented a complete, production-ready browser extension for Docu ## Implementation Date -Feature branch: `copilot/add-browser-plugin-for-docuelevate` -Commits: 7 commits implementing the complete feature +Feature branch: `copilot/add-browser-plugin-for-docuelevate` +Commits: 7 commits implementing the complete feature Status: ✅ **COMPLETE AND PRODUCTION-READY** ## Requirements Met @@ -16,7 +16,7 @@ All requirements from the original issue have been fully satisfied: ### ✅ Functional Requirements - [x] Capture file URLs from user's browser -- [x] Send URLs to DocuElevate API endpoint +- [x] Send URLs to DocuElevate API endpoint - [x] Support for Chrome, Firefox, Edge, and Chromium-based browsers - [x] Simple user interaction (one-click + context menu) - [x] Display status/feedback in plugin UI (success, error) @@ -362,7 +362,7 @@ The browser extension implementation is **complete and production-ready**. All r --- -**Implementation Team**: GitHub Copilot -**Review Status**: All code review feedback addressed -**Documentation Status**: Complete +**Implementation Team**: GitHub Copilot +**Review Status**: All code review feedback addressed +**Documentation Status**: Complete **Production Readiness**: ✅ READY diff --git a/browser-extension/INSTALLATION.txt b/browser-extension/INSTALLATION.txt index d3b86fa2..e2346812 100644 --- a/browser-extension/INSTALLATION.txt +++ b/browser-extension/INSTALLATION.txt @@ -12,13 +12,13 @@ For Chrome / Edge / Chromium-based browsers: 2. Navigate to extensions page: • Chrome: chrome://extensions/ • Edge: edge://extensions/ - + 3. Enable "Developer mode" (toggle in top right) - + 4. Click "Load unpacked" - + 5. Select the browser-extension folder - + 6. Extension is now installed! 🎉 For Firefox: @@ -34,10 +34,10 @@ For Firefox: 1. Click the DocuElevate icon in toolbar 2. Enter your server URL: https://your-docuelevate-server.com - + 3. (Optional) Add session cookie if auth enabled: session=your_session_value - + 4. Click "Save Configuration" 5. Ready to use! 🚀 @@ -95,7 +95,7 @@ Complete guides available: Problem: Extension not appearing → Check developer mode is enabled → Reload the extension - + Problem: Can't connect to server → Verify server URL is correct → Check server is running diff --git a/browser-extension/README.md b/browser-extension/README.md index 584a9385..c454b01b 100644 --- a/browser-extension/README.md +++ b/browser-extension/README.md @@ -127,7 +127,7 @@ The extension can send any URL, but DocuElevate will only process supported file **Cause**: The URL doesn't point to a supported file type. -**Solution**: +**Solution**: - Verify the URL ends with a supported file extension - Check that the Content-Type header is set correctly by the server diff --git a/browser-extension/VISUAL_GUIDE.md b/browser-extension/VISUAL_GUIDE.md index e7b8444d..06e248f9 100644 --- a/browser-extension/VISUAL_GUIDE.md +++ b/browser-extension/VISUAL_GUIDE.md @@ -41,7 +41,7 @@ When you first install the extension, you'll see the configuration screen: └─────────────────────────────────────────┘ ``` -**Dimensions**: 400px wide, ~300px height +**Dimensions**: 400px wide, ~300px height **Colors**: Green buttons (#4CAF50), clean white background ### Send File View (Main Interface) @@ -180,7 +180,7 @@ After sending a file via context menu, a system notification appears: └─────────────────────────────────────────┘ ``` -**Notification Type**: Browser native notification +**Notification Type**: Browser native notification **Duration**: Auto-dismiss after 5-10 seconds ## Chrome Extensions Page diff --git a/browser-extension/popup/popup.js b/browser-extension/popup/popup.js index fa76ca84..900006b4 100644 --- a/browser-extension/popup/popup.js +++ b/browser-extension/popup/popup.js @@ -19,20 +19,20 @@ const showConfigBtn = document.getElementById('show-config'); document.addEventListener('DOMContentLoaded', async () => { // Load saved configuration const config = await loadConfig(); - + if (config.serverUrl) { serverUrlInput.value = config.serverUrl; } - + if (config.sessionCookie) { sessionCookieInput.value = config.sessionCookie; } - + // Get current tab URL const tabs = await chrome.tabs.query({ active: true, currentWindow: true }); const currentUrl = tabs[0]?.url || ''; currentUrlDisplay.textContent = currentUrl; - + // Show appropriate section if (config.serverUrl) { showSendSection(); @@ -44,12 +44,12 @@ document.addEventListener('DOMContentLoaded', async () => { // Save configuration saveConfigBtn.addEventListener('click', async () => { const serverUrl = serverUrlInput.value.trim(); - + if (!serverUrl) { showStatus('Please enter a server URL', 'error'); return; } - + // Validate URL format try { new URL(serverUrl); @@ -57,15 +57,15 @@ saveConfigBtn.addEventListener('click', async () => { showStatus('Invalid server URL format', 'error'); return; } - + const config = { serverUrl: serverUrl, sessionCookie: sessionCookieInput.value.trim() }; - + await saveConfig(config); showStatus('Configuration saved successfully!', 'success'); - + setTimeout(() => { showSendSection(); }, 1000); @@ -76,39 +76,39 @@ sendFileBtn.addEventListener('click', async () => { const config = await loadConfig(); const tabs = await chrome.tabs.query({ active: true, currentWindow: true }); const currentUrl = tabs[0]?.url || ''; - + if (!currentUrl) { showStatus('No URL found in current tab', 'error'); return; } - + // Disable button and show loading sendFileBtn.disabled = true; sendFileBtn.classList.add('loading'); showStatus('Sending file to DocuElevate...', 'info'); - + try { const payload = { url: currentUrl, filename: filenameInput.value.trim() || null }; - + const headers = { 'Content-Type': 'application/json' }; - + // Add session cookie if provided if (config.sessionCookie) { headers['Cookie'] = config.sessionCookie; } - + const response = await fetch(`${config.serverUrl}/api/process-url`, { method: 'POST', headers: headers, body: JSON.stringify(payload), credentials: 'include' }); - + if (response.ok) { const result = await response.json(); showStatus( diff --git a/browser-extension/scripts/background.js b/browser-extension/scripts/background.js index 8fc110da..0a1fc1fc 100644 --- a/browser-extension/scripts/background.js +++ b/browser-extension/scripts/background.js @@ -9,7 +9,7 @@ chrome.runtime.onInstalled.addListener((details) => { } else if (details.reason === 'update') { console.log('DocuElevate extension updated'); } - + // Create context menu item chrome.contextMenus.create({ id: 'send-to-docuelevate', @@ -31,36 +31,36 @@ chrome.runtime.onMessage.addListener((message, sender, sendResponse) => { // Handle sending URL to DocuElevate async function handleSendUrl(data) { const { url, filename, serverUrl, sessionCookie } = data; - + if (!url || !serverUrl) { throw new Error('URL and server URL are required'); } - + const headers = { 'Content-Type': 'application/json' }; - + if (sessionCookie) { headers['Cookie'] = sessionCookie; } - + const payload = { url: url, filename: filename || null }; - + const response = await fetch(`${serverUrl}/api/process-url`, { method: 'POST', headers: headers, body: JSON.stringify(payload), credentials: 'include' }); - + if (!response.ok) { const errorData = await response.json().catch(() => ({ detail: 'Unknown error' })); throw new Error(errorData.detail || `HTTP ${response.status}`); } - + return await response.json(); } @@ -69,18 +69,18 @@ chrome.contextMenus.onClicked.addListener(async (info, tab) => { if (info.menuItemId === 'send-to-docuelevate') { // Get the URL to send (link URL or page URL) const targetUrl = info.linkUrl || info.pageUrl; - + // Load configuration const config = await new Promise((resolve) => { chrome.storage.sync.get(['serverUrl', 'sessionCookie'], resolve); }); - + if (!config.serverUrl) { // Open popup to configure chrome.action.openPopup(); return; } - + // Send the URL try { const result = await handleSendUrl({ @@ -88,7 +88,7 @@ chrome.contextMenus.onClicked.addListener(async (info, tab) => { serverUrl: config.serverUrl, sessionCookie: config.sessionCookie }); - + // Show success notification chrome.notifications.create({ type: 'basic', diff --git a/browser-extension/scripts/content.js b/browser-extension/scripts/content.js index ad8add6b..8a56f6de 100644 --- a/browser-extension/scripts/content.js +++ b/browser-extension/scripts/content.js @@ -24,7 +24,7 @@ function isDirectFileUrl(url) { '.txt', '.csv', '.rtf', '.jpg', '.jpeg', '.png', '.gif', '.bmp', '.tiff', '.webp', '.svg' ]; - + const urlLower = url.toLowerCase(); return fileExtensions.some(ext => urlLower.endsWith(ext)); } diff --git a/browser-extension/test.html b/browser-extension/test.html index 9fd92083..96efd4aa 100644 --- a/browser-extension/test.html +++ b/browser-extension/test.html @@ -52,7 +52,7 @@

🧪 DocuElevate Browser Extension Test Page

- +

How to Test

    @@ -66,18 +66,18 @@

    📄 Sample Document Links

    These links point to sample documents that can be processed by DocuElevate:

    - - 📕 Sample PDF Document (dummy.pdf) - - 📗 Example PDF File (file-sample_150kB.pdf) - - 📘 Learning Container Sample PDF @@ -86,13 +86,13 @@

    🖼️ Sample Image Links

    These links point to sample images that can be processed:

    - - 🖼️ Placeholder Image (PNG, 800x600) - - 📷 Placeholder Image (JPG, 1024x768) diff --git a/coverage.json b/coverage.json index c9efa164..80b9d307 100644 --- a/coverage.json +++ b/coverage.json @@ -1 +1 @@ -{"meta": {"format": 3, "version": "7.13.4", "timestamp": "2026-02-12T09:26:29.397216", "branch_coverage": true, "show_contexts": false}, "files": {"app/__init__.py": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": [], "functions": {"": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}}, "app/api/__init__.py": {"executed_lines": [5, 7, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 22, 25, 28, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42], "summary": {"covered_lines": 28, "num_statements": 28, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": [], "functions": {"": {"executed_lines": [5, 7, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 22, 25, 28, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42], "summary": {"covered_lines": 28, "num_statements": 28, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [5, 7, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 22, 25, 28, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42], "summary": {"covered_lines": 28, "num_statements": 28, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}}, "app/api/azure.py": {"executed_lines": [5, 7, 8, 11, 12, 14, 15, 18, 20, 23, 24, 25, 30, 31, 34, 48, 50, 55, 91, 98, 99, 100], "summary": {"covered_lines": 22, "num_statements": 52, "percent_covered": 37.096774193548384, "percent_covered_display": "37.10", "missing_lines": 30, "excluded_lines": 0, "percent_statements_covered": 42.30769230769231, "percent_statements_covered_display": "42.31", "num_branches": 10, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 9, "percent_branches_covered": 10.0, "percent_branches_covered_display": "10.00"}, "missing_lines": [35, 36, 37, 38, 39, 40, 42, 58, 61, 62, 63, 64, 65, 71, 73, 74, 81, 83, 84, 92, 93, 105, 106, 107, 108, 109, 110, 112, 113, 114], "excluded_lines": [], "executed_branches": [[34, 48]], "missing_branches": [[34, 35], [37, 38], [37, 39], [39, 40], [39, 42], [63, 64], [63, 73], [64, 63], [64, 65]], "functions": {"test_azure_connection": {"executed_lines": [30, 31, 34, 48, 50, 55, 91, 98, 99, 100], "summary": {"covered_lines": 10, "num_statements": 40, "percent_covered": 22.0, "percent_covered_display": "22.00", "missing_lines": 30, "excluded_lines": 0, "percent_statements_covered": 25.0, "percent_statements_covered_display": "25.00", "num_branches": 10, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 9, "percent_branches_covered": 10.0, "percent_branches_covered_display": "10.00"}, "missing_lines": [35, 36, 37, 38, 39, 40, 42, 58, 61, 62, 63, 64, 65, 71, 73, 74, 81, 83, 84, 92, 93, 105, 106, 107, 108, 109, 110, 112, 113, 114], "excluded_lines": [], "start_line": 25, "executed_branches": [[34, 48]], "missing_branches": [[34, 35], [37, 38], [37, 39], [39, 40], [39, 42], [63, 64], [63, 73], [64, 63], [64, 65]]}, "": {"executed_lines": [5, 7, 8, 11, 12, 14, 15, 18, 20, 23, 24, 25], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [5, 7, 8, 11, 12, 14, 15, 18, 20, 23, 24, 25, 30, 31, 34, 48, 50, 55, 91, 98, 99, 100], "summary": {"covered_lines": 22, "num_statements": 52, "percent_covered": 37.096774193548384, "percent_covered_display": "37.10", "missing_lines": 30, "excluded_lines": 0, "percent_statements_covered": 42.30769230769231, "percent_statements_covered_display": "42.31", "num_branches": 10, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 9, "percent_branches_covered": 10.0, "percent_branches_covered_display": "10.00"}, "missing_lines": [35, 36, 37, 38, 39, 40, 42, 58, 61, 62, 63, 64, 65, 71, 73, 74, 81, 83, 84, 92, 93, 105, 106, 107, 108, 109, 110, 112, 113, 114], "excluded_lines": [], "start_line": 1, "executed_branches": [[34, 48]], "missing_branches": [[34, 35], [37, 38], [37, 39], [39, 40], [39, 42], [63, 64], [63, 73], [64, 63], [64, 65]]}}}, "app/api/common.py": {"executed_lines": [5, 6, 7, 9, 11, 14, 17, 37, 40, 41, 43, 46, 48, 51, 55, 56, 57, 59, 60, 64], "summary": {"covered_lines": 20, "num_statements": 20, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "executed_branches": [[40, 41], [40, 43], [46, 48], [46, 51]], "missing_branches": [], "functions": {"resolve_file_path": {"executed_lines": [37, 40, 41, 43, 46, 48, 51, 55, 56, 57, 59, 60, 64], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 17, "executed_branches": [[40, 41], [40, 43], [46, 48], [46, 51]], "missing_branches": []}, "": {"executed_lines": [5, 6, 7, 9, 11, 14, 17], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [5, 6, 7, 9, 11, 14, 17, 37, 40, 41, 43, 46, 48, 51, 55, 56, 57, 59, 60, 64], "summary": {"covered_lines": 20, "num_statements": 20, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [[40, 41], [40, 43], [46, 48], [46, 51]], "missing_branches": []}}}, "app/api/diagnostic.py": {"executed_lines": [5, 6, 8, 10, 11, 14, 16, 18, 21, 22, 23, 28, 31, 34, 54, 61, 62, 63, 65, 67, 68, 71, 73, 74, 75, 76], "summary": {"covered_lines": 26, "num_statements": 36, "percent_covered": 67.5, "percent_covered_display": "67.50", "missing_lines": 10, "excluded_lines": 0, "percent_statements_covered": 72.22222222222223, "percent_statements_covered_display": "72.22", "num_branches": 4, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 3, "percent_branches_covered": 25.0, "percent_branches_covered_display": "25.00"}, "missing_lines": [82, 83, 93, 94, 95, 101, 102, 107, 108, 109], "excluded_lines": [], "executed_branches": [[75, 76]], "missing_branches": [[75, 82], [93, 94], [93, 101]], "functions": {"diagnostic_settings": {"executed_lines": [28, 31, 34, 54], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 23, "executed_branches": [], "missing_branches": []}, "test_notification": {"executed_lines": [65, 67, 68, 71, 73, 74, 75, 76], "summary": {"covered_lines": 8, "num_statements": 18, "percent_covered": 40.90909090909091, "percent_covered_display": "40.91", "missing_lines": 10, "excluded_lines": 0, "percent_statements_covered": 44.44444444444444, "percent_statements_covered_display": "44.44", "num_branches": 4, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 3, "percent_branches_covered": 25.0, "percent_branches_covered_display": "25.00"}, "missing_lines": [82, 83, 93, 94, 95, 101, 102, 107, 108, 109], "excluded_lines": [], "start_line": 63, "executed_branches": [[75, 76]], "missing_branches": [[75, 82], [93, 94], [93, 101]]}, "": {"executed_lines": [5, 6, 8, 10, 11, 14, 16, 18, 21, 22, 23, 61, 62, 63], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [5, 6, 8, 10, 11, 14, 16, 18, 21, 22, 23, 28, 31, 34, 54, 61, 62, 63, 65, 67, 68, 71, 73, 74, 75, 76], "summary": {"covered_lines": 26, "num_statements": 36, "percent_covered": 67.5, "percent_covered_display": "67.50", "missing_lines": 10, "excluded_lines": 0, "percent_statements_covered": 72.22222222222223, "percent_statements_covered_display": "72.22", "num_branches": 4, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 3, "percent_branches_covered": 25.0, "percent_branches_covered_display": "25.00"}, "missing_lines": [82, 83, 93, 94, 95, 101, 102, 107, 108, 109], "excluded_lines": [], "start_line": 1, "executed_branches": [[75, 76]], "missing_branches": [[75, 82], [93, 94], [93, 101]]}}}, "app/api/dropbox.py": {"executed_lines": [5, 6, 7, 9, 10, 12, 13, 14, 17, 19, 22, 23, 24, 58, 59, 60, 101, 102, 103, 107, 108, 110, 111, 112, 182, 183, 184], "summary": {"covered_lines": 27, "num_statements": 125, "percent_covered": 16.374269005847953, "percent_covered_display": "16.37", "missing_lines": 98, "excluded_lines": 0, "percent_statements_covered": 21.6, "percent_statements_covered_display": "21.60", "num_branches": 46, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 45, "percent_branches_covered": 2.1739130434782608, "percent_branches_covered_display": "2.17"}, "missing_lines": [37, 39, 48, 51, 70, 71, 74, 75, 76, 78, 79, 80, 82, 83, 84, 86, 87, 88, 92, 94, 95, 96, 115, 116, 123, 124, 127, 128, 135, 137, 138, 139, 141, 142, 145, 146, 152, 153, 154, 160, 161, 162, 165, 167, 169, 177, 178, 179, 194, 196, 198, 199, 200, 204, 207, 208, 211, 216, 217, 218, 219, 220, 221, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 241, 242, 243, 246, 247, 250, 251, 252, 253, 254, 255, 256, 257, 259, 261, 263, 264, 265, 266, 267], "excluded_lines": [], "executed_branches": [[110, 111]], "missing_branches": [[74, 75], [74, 78], [78, 79], [78, 82], [82, 83], [82, 86], [86, 87], [86, 92], [110, 115], [123, 124], [123, 152], [137, 138], [137, 141], [152, 153], [152, 160], [198, 199], [198, 204], [216, 217], [216, 218], [218, 219], [218, 220], [220, 221], [220, 224], [226, 227], [226, 241], [229, 230], [229, 237], [230, 229], [230, 231], [231, 232], [231, 233], [237, 226], [237, 238], [241, 242], [241, 246], [242, 241], [242, 243], [250, 251], [250, 252], [252, 253], [252, 254], [254, 255], [254, 256], [256, 257], [256, 259]], "functions": {"exchange_dropbox_token": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [37, 39, 48, 51], "excluded_lines": [], "start_line": 24, "executed_branches": [], "missing_branches": []}, "update_dropbox_settings": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 18, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 18, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00", "num_branches": 8, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 8, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0.00"}, "missing_lines": [70, 71, 74, 75, 76, 78, 79, 80, 82, 83, 84, 86, 87, 88, 92, 94, 95, 96], "excluded_lines": [], "start_line": 60, "executed_branches": [], "missing_branches": [[74, 75], [74, 78], [78, 79], [78, 82], [82, 83], [82, 86], [86, 87], [86, 92]]}, "test_dropbox_token": {"executed_lines": [107, 108, 110, 111, 112], "summary": {"covered_lines": 5, "num_statements": 31, "percent_covered": 15.384615384615385, "percent_covered_display": "15.38", "missing_lines": 26, "excluded_lines": 0, "percent_statements_covered": 16.129032258064516, "percent_statements_covered_display": "16.13", "num_branches": 8, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 7, "percent_branches_covered": 12.5, "percent_branches_covered_display": "12.50"}, "missing_lines": [115, 116, 123, 124, 127, 128, 135, 137, 138, 139, 141, 142, 145, 146, 152, 153, 154, 160, 161, 162, 165, 167, 169, 177, 178, 179], "excluded_lines": [], "start_line": 103, "executed_branches": [[110, 111]], "missing_branches": [[110, 115], [123, 124], [123, 152], [137, 138], [137, 141], [152, 153], [152, 160]]}, "save_dropbox_settings": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 50, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 50, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00", "num_branches": 30, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 30, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0.00"}, "missing_lines": [194, 196, 198, 199, 200, 204, 207, 208, 211, 216, 217, 218, 219, 220, 221, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 241, 242, 243, 246, 247, 250, 251, 252, 253, 254, 255, 256, 257, 259, 261, 263, 264, 265, 266, 267], "excluded_lines": [], "start_line": 184, "executed_branches": [], "missing_branches": [[198, 199], [198, 204], [216, 217], [216, 218], [218, 219], [218, 220], [220, 221], [220, 224], [226, 227], [226, 241], [229, 230], [229, 237], [230, 229], [230, 231], [231, 232], [231, 233], [237, 226], [237, 238], [241, 242], [241, 246], [242, 241], [242, 243], [250, 251], [250, 252], [252, 253], [252, 254], [254, 255], [254, 256], [256, 257], [256, 259]]}, "": {"executed_lines": [5, 6, 7, 9, 10, 12, 13, 14, 17, 19, 22, 23, 24, 58, 59, 60, 101, 102, 103, 182, 183, 184], "summary": {"covered_lines": 22, "num_statements": 22, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [5, 6, 7, 9, 10, 12, 13, 14, 17, 19, 22, 23, 24, 58, 59, 60, 101, 102, 103, 107, 108, 110, 111, 112, 182, 183, 184], "summary": {"covered_lines": 27, "num_statements": 125, "percent_covered": 16.374269005847953, "percent_covered_display": "16.37", "missing_lines": 98, "excluded_lines": 0, "percent_statements_covered": 21.6, "percent_statements_covered_display": "21.60", "num_branches": 46, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 45, "percent_branches_covered": 2.1739130434782608, "percent_branches_covered_display": "2.17"}, "missing_lines": [37, 39, 48, 51, 70, 71, 74, 75, 76, 78, 79, 80, 82, 83, 84, 86, 87, 88, 92, 94, 95, 96, 115, 116, 123, 124, 127, 128, 135, 137, 138, 139, 141, 142, 145, 146, 152, 153, 154, 160, 161, 162, 165, 167, 169, 177, 178, 179, 194, 196, 198, 199, 200, 204, 207, 208, 211, 216, 217, 218, 219, 220, 221, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 241, 242, 243, 246, 247, 250, 251, 252, 253, 254, 255, 256, 257, 259, 261, 263, 264, 265, 266, 267], "excluded_lines": [], "start_line": 1, "executed_branches": [[110, 111]], "missing_branches": [[74, 75], [74, 78], [78, 79], [78, 82], [82, 83], [82, 86], [86, 87], [86, 92], [110, 115], [123, 124], [123, 152], [137, 138], [137, 141], [152, 153], [152, 160], [198, 199], [198, 204], [216, 217], [216, 218], [218, 219], [218, 220], [220, 221], [220, 224], [226, 227], [226, 241], [229, 230], [229, 237], [230, 229], [230, 231], [231, 232], [231, 233], [237, 226], [237, 238], [241, 242], [241, 246], [242, 241], [242, 243], [250, 251], [250, 252], [252, 253], [252, 254], [254, 255], [254, 256], [256, 257], [256, 259]]}}}, "app/api/files.py": {"executed_lines": [5, 6, 7, 8, 9, 11, 12, 13, 15, 16, 17, 18, 19, 20, 21, 22, 23, 26, 28, 30, 33, 40, 41, 42, 80, 83, 84, 87, 88, 91, 94, 97, 105, 106, 108, 111, 112, 115, 116, 119, 120, 121, 137, 139, 145, 150, 152, 155, 156, 157, 162, 164, 165, 168, 173, 174, 175, 187, 190, 192, 208, 209, 210, 216, 217, 219, 221, 223, 224, 227, 230, 231, 233, 235, 236, 237, 238, 239, 240, 243, 244, 245, 251, 254, 256, 258, 259, 261, 262, 265, 268, 269, 271, 273, 279, 280, 287, 288, 289, 293, 295, 297, 298, 300, 301, 302, 304, 305, 307, 308, 315, 318, 319, 320, 324, 333, 341, 342, 348, 349, 350, 360, 362, 364, 365, 368, 369, 372, 376, 380, 388, 389, 395, 396, 397, 457, 467, 469, 470, 471, 472, 473, 474, 477, 495, 497, 499, 501, 504, 505, 508, 509, 510, 511, 512, 513, 515, 519, 520, 521, 522, 523, 528, 532, 533, 534, 538, 540, 549, 550, 551, 573, 575, 577, 578, 581, 588, 589, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 603, 616, 617, 618, 624, 625, 628, 629, 635, 636, 637, 641, 642, 658, 659, 665, 666, 667, 683, 685, 687, 689, 690, 692, 694, 697, 699, 701, 702, 705, 706, 712, 713, 714, 718, 719, 721, 724, 730, 731, 737, 738, 739, 809, 810, 811, 813, 817, 819, 822, 824, 825, 826, 828, 831, 833, 834, 835, 836, 837, 838, 841, 844, 845, 846, 848, 849, 856, 871, 883, 884, 887, 890, 892, 894, 896, 898, 899, 903, 904, 907, 908, 909, 910, 911, 912, 915, 917, 925, 926, 928, 929, 931, 933, 934, 935, 939, 940, 941, 946, 947, 950, 951, 953], "summary": {"covered_lines": 292, "num_statements": 375, "percent_covered": 76.70103092783505, "percent_covered_display": "76.70", "missing_lines": 83, "excluded_lines": 0, "percent_statements_covered": 77.86666666666666, "percent_statements_covered_display": "77.87", "num_branches": 110, "num_partial_branches": 10, "covered_branches": 80, "missing_branches": 30, "percent_branches_covered": 72.72727272727273, "percent_branches_covered_display": "72.73"}, "missing_lines": [35, 37, 252, 281, 282, 283, 284, 329, 330, 331, 343, 344, 345, 390, 391, 392, 411, 413, 415, 416, 419, 420, 421, 422, 423, 424, 425, 427, 432, 436, 441, 450, 451, 452, 453, 454, 500, 516, 529, 536, 638, 639, 645, 646, 648, 650, 660, 661, 662, 695, 715, 716, 732, 733, 734, 755, 757, 759, 761, 762, 764, 766, 767, 769, 771, 773, 774, 777, 778, 784, 785, 786, 787, 788, 790, 791, 793, 796, 802, 803, 804, 805, 806], "excluded_lines": [], "executed_branches": [[83, 84], [83, 87], [87, 88], [87, 91], [105, 106], [105, 108], [120, 121], [120, 137], [164, 165], [164, 168], [174, 175], [174, 187], [216, 217], [216, 219], [223, 224], [223, 227], [251, 254], [258, 259], [258, 261], [268, 269], [268, 271], [297, 298], [297, 300], [304, 305], [304, 333], [307, 308], [307, 318], [364, 365], [364, 368], [368, 369], [368, 372], [472, 473], [472, 474], [497, 499], [497, 504], [499, 501], [504, 505], [504, 512], [508, 509], [508, 510], [512, 513], [512, 522], [515, 519], [522, 523], [528, 532], [577, 578], [577, 581], [588, 589], [588, 592], [616, 617], [616, 624], [636, 637], [636, 641], [637, 636], [641, 642], [689, 690], [689, 692], [692, 694], [692, 699], [694, 697], [699, 701], [699, 721], [713, 714], [713, 718], [714, 713], [718, 719], [824, 825], [824, 828], [846, 848], [846, 856], [894, 896], [894, 931], [908, 909], [908, 915], [931, 933], [931, 935], [935, 939], [935, 941], [941, 946], [941, 950]], "missing_branches": [[251, 252], [415, 416], [415, 419], [420, 421], [420, 423], [423, 424], [423, 427], [499, 500], [515, 516], [522, 536], [528, 529], [637, 638], [641, 645], [694, 695], [714, 715], [718, 724], [761, 762], [761, 764], [764, 766], [764, 771], [766, 767], [766, 769], [771, 773], [771, 793], [785, 786], [785, 790], [786, 785], [786, 787], [790, 791], [790, 796]], "functions": {"get_limiter": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [35, 37], "excluded_lines": [], "start_line": 33, "executed_branches": [], "missing_branches": []}, "list_files_api": {"executed_lines": [80, 83, 84, 87, 88, 91, 94, 97, 105, 106, 108, 111, 112, 115, 116, 119, 120, 121, 137, 139], "summary": {"covered_lines": 20, "num_statements": 20, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 8, "num_partial_branches": 0, "covered_branches": 8, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 42, "executed_branches": [[83, 84], [83, 87], [87, 88], [87, 91], [105, 106], [105, 108], [120, 121], [120, 137]], "missing_branches": []}, "_get_file_processing_status": {"executed_lines": [150, 152], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 145, "executed_branches": [], "missing_branches": []}, "get_file_details": {"executed_lines": [162, 164, 165, 168, 173, 174, 175, 187, 190, 192], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 157, "executed_branches": [[164, 165], [164, 168], [174, 175], [174, 187]], "missing_branches": []}, "delete_file_record": {"executed_lines": [216, 217, 219, 221, 223, 224, 227, 230, 231, 233, 235, 236, 237, 238, 239, 240], "summary": {"covered_lines": 16, "num_statements": 16, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 210, "executed_branches": [[216, 217], [216, 219], [223, 224], [223, 227]], "missing_branches": []}, "bulk_delete_files": {"executed_lines": [251, 254, 256, 258, 259, 261, 262, 265, 268, 269, 271, 273, 279, 280], "summary": {"covered_lines": 14, "num_statements": 19, "percent_covered": 76.0, "percent_covered_display": "76.00", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 73.6842105263158, "percent_statements_covered_display": "73.68", "num_branches": 6, "num_partial_branches": 1, "covered_branches": 5, "missing_branches": 1, "percent_branches_covered": 83.33333333333333, "percent_branches_covered_display": "83.33"}, "missing_lines": [252, 281, 282, 283, 284], "excluded_lines": [], "start_line": 245, "executed_branches": [[251, 254], [258, 259], [258, 261], [268, 269], [268, 271]], "missing_branches": [[251, 252]]}, "bulk_reprocess_files": {"executed_lines": [293, 295, 297, 298, 300, 301, 302, 304, 305, 307, 308, 315, 318, 319, 320, 324, 333, 341, 342], "summary": {"covered_lines": 19, "num_statements": 25, "percent_covered": 80.64516129032258, "percent_covered_display": "80.65", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 76.0, "percent_statements_covered_display": "76.00", "num_branches": 6, "num_partial_branches": 0, "covered_branches": 6, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [329, 330, 331, 343, 344, 345], "excluded_lines": [], "start_line": 289, "executed_branches": [[297, 298], [297, 300], [304, 305], [304, 333], [307, 308], [307, 318]], "missing_branches": []}, "reprocess_single_file": {"executed_lines": [360, 362, 364, 365, 368, 369, 372, 376, 380, 388, 389], "summary": {"covered_lines": 11, "num_statements": 14, "percent_covered": 83.33333333333333, "percent_covered_display": "83.33", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 78.57142857142857, "percent_statements_covered_display": "78.57", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [390, 391, 392], "excluded_lines": [], "start_line": 350, "executed_branches": [[364, 365], [364, 368], [368, 369], [368, 372]], "missing_branches": []}, "reprocess_with_cloud_ocr": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 20, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 20, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00", "num_branches": 6, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 6, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0.00"}, "missing_lines": [411, 413, 415, 416, 419, 420, 421, 422, 423, 424, 425, 427, 432, 436, 441, 450, 451, 452, 453, 454], "excluded_lines": [], "start_line": 397, "executed_branches": [], "missing_branches": [[415, 416], [415, 419], [420, 421], [420, 423], [423, 424], [423, 427]]}, "_extract_text_from_pdf": {"executed_lines": [467, 469, 470, 471, 472, 473, 474], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 457, "executed_branches": [[472, 473], [472, 474]], "missing_branches": []}, "_retry_pipeline_step": {"executed_lines": [495, 497, 499, 501, 504, 505, 508, 509, 510, 511, 512, 513, 515, 519, 520, 521, 522, 523, 528, 532, 533, 534, 538, 540], "summary": {"covered_lines": 24, "num_statements": 28, "percent_covered": 81.81818181818181, "percent_covered_display": "81.82", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 85.71428571428571, "percent_statements_covered_display": "85.71", "num_branches": 16, "num_partial_branches": 4, "covered_branches": 12, "missing_branches": 4, "percent_branches_covered": 75.0, "percent_branches_covered_display": "75.00"}, "missing_lines": [500, 516, 529, 536], "excluded_lines": [], "start_line": 477, "executed_branches": [[497, 499], [497, 504], [499, 501], [504, 505], [504, 512], [508, 509], [508, 510], [512, 513], [512, 522], [515, 519], [522, 523], [528, 532]], "missing_branches": [[499, 500], [515, 516], [522, 536], [528, 529]]}, "retry_subtask": {"executed_lines": [573, 575, 577, 578, 581, 588, 589, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 603, 616, 617, 618, 624, 625, 628, 629, 635, 636, 637, 641, 642, 658, 659], "summary": {"covered_lines": 32, "num_statements": 41, "percent_covered": 79.24528301886792, "percent_covered_display": "79.25", "missing_lines": 9, "excluded_lines": 0, "percent_statements_covered": 78.04878048780488, "percent_statements_covered_display": "78.05", "num_branches": 12, "num_partial_branches": 2, "covered_branches": 10, "missing_branches": 2, "percent_branches_covered": 83.33333333333333, "percent_branches_covered_display": "83.33"}, "missing_lines": [638, 639, 645, 646, 648, 650, 660, 661, 662], "excluded_lines": [], "start_line": 551, "executed_branches": [[577, 578], [577, 581], [588, 589], [588, 592], [616, 617], [616, 624], [636, 637], [636, 641], [637, 636], [641, 642]], "missing_branches": [[637, 638], [641, 645]]}, "get_file_preview": {"executed_lines": [683, 685, 687, 689, 690, 692, 694, 697, 699, 701, 702, 705, 706, 712, 713, 714, 718, 719, 721, 724, 730, 731], "summary": {"covered_lines": 22, "num_statements": 28, "percent_covered": 78.57142857142857, "percent_covered_display": "78.57", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 78.57142857142857, "percent_statements_covered_display": "78.57", "num_branches": 14, "num_partial_branches": 3, "covered_branches": 11, "missing_branches": 3, "percent_branches_covered": 78.57142857142857, "percent_branches_covered_display": "78.57"}, "missing_lines": [695, 715, 716, 732, 733, 734], "excluded_lines": [], "start_line": 667, "executed_branches": [[689, 690], [689, 692], [692, 694], [692, 699], [694, 697], [699, 701], [699, 721], [713, 714], [713, 718], [714, 713], [718, 719]], "missing_branches": [[694, 695], [714, 715], [718, 724]]}, "download_file": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 28, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 28, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00", "num_branches": 14, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 14, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0.00"}, "missing_lines": [755, 757, 759, 761, 762, 764, 766, 767, 769, 771, 773, 774, 777, 778, 784, 785, 786, 787, 788, 790, 791, 793, 796, 802, 803, 804, 805, 806], "excluded_lines": [], "start_line": 739, "executed_branches": [], "missing_branches": [[761, 762], [761, 764], [764, 766], [764, 771], [766, 767], [766, 769], [771, 773], [771, 793], [785, 786], [785, 790], [786, 785], [786, 787], [790, 791], [790, 796]]}, "ui_upload": {"executed_lines": [813, 817, 819, 822, 824, 825, 826, 828, 831, 833, 834, 835, 836, 837, 838, 841, 844, 845, 846, 848, 849, 856, 871, 883, 884, 887, 890, 892, 894, 896, 898, 899, 903, 904, 907, 908, 909, 910, 911, 912, 915, 917, 925, 926, 928, 929, 931, 933, 934, 935, 939, 940, 941, 946, 947, 950, 951, 953], "summary": {"covered_lines": 58, "num_statements": 58, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 14, "num_partial_branches": 0, "covered_branches": 14, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 811, "executed_branches": [[824, 825], [824, 828], [846, 848], [846, 856], [894, 896], [894, 931], [908, 909], [908, 915], [931, 933], [931, 935], [935, 939], [935, 941], [941, 946], [941, 950]], "missing_branches": []}, "": {"executed_lines": [5, 6, 7, 8, 9, 11, 12, 13, 15, 16, 17, 18, 19, 20, 21, 22, 23, 26, 28, 30, 33, 40, 41, 42, 145, 155, 156, 157, 208, 209, 210, 243, 244, 245, 287, 288, 289, 348, 349, 350, 395, 396, 397, 457, 477, 549, 550, 551, 665, 666, 667, 737, 738, 739, 809, 810, 811], "summary": {"covered_lines": 57, "num_statements": 57, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [5, 6, 7, 8, 9, 11, 12, 13, 15, 16, 17, 18, 19, 20, 21, 22, 23, 26, 28, 30, 33, 40, 41, 42, 80, 83, 84, 87, 88, 91, 94, 97, 105, 106, 108, 111, 112, 115, 116, 119, 120, 121, 137, 139, 145, 150, 152, 155, 156, 157, 162, 164, 165, 168, 173, 174, 175, 187, 190, 192, 208, 209, 210, 216, 217, 219, 221, 223, 224, 227, 230, 231, 233, 235, 236, 237, 238, 239, 240, 243, 244, 245, 251, 254, 256, 258, 259, 261, 262, 265, 268, 269, 271, 273, 279, 280, 287, 288, 289, 293, 295, 297, 298, 300, 301, 302, 304, 305, 307, 308, 315, 318, 319, 320, 324, 333, 341, 342, 348, 349, 350, 360, 362, 364, 365, 368, 369, 372, 376, 380, 388, 389, 395, 396, 397, 457, 467, 469, 470, 471, 472, 473, 474, 477, 495, 497, 499, 501, 504, 505, 508, 509, 510, 511, 512, 513, 515, 519, 520, 521, 522, 523, 528, 532, 533, 534, 538, 540, 549, 550, 551, 573, 575, 577, 578, 581, 588, 589, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 603, 616, 617, 618, 624, 625, 628, 629, 635, 636, 637, 641, 642, 658, 659, 665, 666, 667, 683, 685, 687, 689, 690, 692, 694, 697, 699, 701, 702, 705, 706, 712, 713, 714, 718, 719, 721, 724, 730, 731, 737, 738, 739, 809, 810, 811, 813, 817, 819, 822, 824, 825, 826, 828, 831, 833, 834, 835, 836, 837, 838, 841, 844, 845, 846, 848, 849, 856, 871, 883, 884, 887, 890, 892, 894, 896, 898, 899, 903, 904, 907, 908, 909, 910, 911, 912, 915, 917, 925, 926, 928, 929, 931, 933, 934, 935, 939, 940, 941, 946, 947, 950, 951, 953], "summary": {"covered_lines": 292, "num_statements": 375, "percent_covered": 76.70103092783505, "percent_covered_display": "76.70", "missing_lines": 83, "excluded_lines": 0, "percent_statements_covered": 77.86666666666666, "percent_statements_covered_display": "77.87", "num_branches": 110, "num_partial_branches": 10, "covered_branches": 80, "missing_branches": 30, "percent_branches_covered": 72.72727272727273, "percent_branches_covered_display": "72.73"}, "missing_lines": [35, 37, 252, 281, 282, 283, 284, 329, 330, 331, 343, 344, 345, 390, 391, 392, 411, 413, 415, 416, 419, 420, 421, 422, 423, 424, 425, 427, 432, 436, 441, 450, 451, 452, 453, 454, 500, 516, 529, 536, 638, 639, 645, 646, 648, 650, 660, 661, 662, 695, 715, 716, 732, 733, 734, 755, 757, 759, 761, 762, 764, 766, 767, 769, 771, 773, 774, 777, 778, 784, 785, 786, 787, 788, 790, 791, 793, 796, 802, 803, 804, 805, 806], "excluded_lines": [], "start_line": 1, "executed_branches": [[83, 84], [83, 87], [87, 88], [87, 91], [105, 106], [105, 108], [120, 121], [120, 137], [164, 165], [164, 168], [174, 175], [174, 187], [216, 217], [216, 219], [223, 224], [223, 227], [251, 254], [258, 259], [258, 261], [268, 269], [268, 271], [297, 298], [297, 300], [304, 305], [304, 333], [307, 308], [307, 318], [364, 365], [364, 368], [368, 369], [368, 372], [472, 473], [472, 474], [497, 499], [497, 504], [499, 501], [504, 505], [504, 512], [508, 509], [508, 510], [512, 513], [512, 522], [515, 519], [522, 523], [528, 532], [577, 578], [577, 581], [588, 589], [588, 592], [616, 617], [616, 624], [636, 637], [636, 641], [637, 636], [641, 642], [689, 690], [689, 692], [692, 694], [692, 699], [694, 697], [699, 701], [699, 721], [713, 714], [713, 718], [714, 713], [718, 719], [824, 825], [824, 828], [846, 848], [846, 856], [894, 896], [894, 931], [908, 909], [908, 915], [931, 933], [931, 935], [935, 939], [935, 941], [941, 946], [941, 950]], "missing_branches": [[251, 252], [415, 416], [415, 419], [420, 421], [420, 423], [423, 424], [423, 427], [499, 500], [515, 516], [522, 536], [528, 529], [637, 638], [641, 645], [694, 695], [714, 715], [718, 724], [761, 762], [761, 764], [764, 766], [764, 771], [766, 767], [766, 769], [771, 773], [771, 793], [785, 786], [785, 790], [786, 785], [786, 787], [790, 791], [790, 796]]}}}, "app/api/google_drive.py": {"executed_lines": [5, 6, 7, 8, 10, 12, 13, 14, 17, 19, 22, 23, 24, 58, 59, 60, 108, 109, 110, 115, 116, 118, 121, 189, 190, 191, 224, 225, 226, 307, 309, 310, 312, 313, 314, 316, 317, 318, 319, 320, 321, 322, 324, 327, 328, 329], "summary": {"covered_lines": 46, "num_statements": 201, "percent_covered": 20.363636363636363, "percent_covered_display": "20.36", "missing_lines": 155, "excluded_lines": 0, "percent_statements_covered": 22.885572139303484, "percent_statements_covered_display": "22.89", "num_branches": 74, "num_partial_branches": 2, "covered_branches": 10, "missing_branches": 64, "percent_branches_covered": 13.513513513513514, "percent_branches_covered_display": "13.51"}, "missing_lines": [37, 39, 48, 51, 71, 72, 75, 78, 79, 80, 82, 83, 84, 86, 87, 88, 90, 91, 92, 95, 96, 98, 100, 101, 102, 122, 127, 128, 130, 132, 135, 136, 138, 147, 148, 151, 152, 153, 154, 155, 156, 163, 164, 166, 168, 175, 176, 177, 180, 181, 186, 193, 194, 195, 198, 199, 201, 202, 204, 206, 208, 214, 215, 216, 217, 219, 220, 221, 232, 233, 236, 237, 238, 243, 248, 249, 251, 253, 254, 256, 265, 266, 269, 270, 271, 272, 273, 274, 281, 283, 289, 290, 291, 294, 295, 300, 302, 303, 304, 340, 342, 345, 348, 351, 352, 353, 354, 355, 356, 357, 360, 361, 364, 365, 366, 369, 370, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 390, 391, 392, 395, 396, 398, 399, 400, 402, 407, 408, 409, 410, 411, 412, 413, 414, 417, 419, 421, 427, 428, 429], "excluded_lines": [], "executed_branches": [[121, 189], [189, 190], [309, 310], [309, 312], [317, 318], [317, 319], [319, 320], [319, 321], [321, 322], [321, 324]], "missing_branches": [[78, 79], [78, 82], [82, 83], [82, 86], [86, 87], [86, 90], [90, 91], [90, 95], [121, 122], [122, 127], [122, 130], [147, 148], [147, 151], [152, 153], [152, 163], [180, 181], [180, 186], [189, 193], [201, 202], [201, 204], [236, 237], [236, 243], [243, 248], [243, 251], [265, 266], [265, 269], [270, 271], [270, 281], [294, 295], [294, 300], [351, 352], [351, 360], [352, 353], [352, 354], [354, 355], [354, 356], [356, 357], [356, 360], [360, 361], [360, 364], [364, 365], [364, 402], [375, 376], [375, 390], [378, 379], [378, 386], [379, 378], [379, 380], [380, 381], [380, 382], [386, 375], [386, 387], [390, 391], [390, 395], [391, 390], [391, 392], [407, 408], [407, 409], [409, 410], [409, 411], [411, 412], [411, 413], [413, 414], [413, 417]], "functions": {"exchange_google_drive_token": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [37, 39, 48, 51], "excluded_lines": [], "start_line": 24, "executed_branches": [], "missing_branches": []}, "update_google_drive_settings": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 21, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 21, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00", "num_branches": 8, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 8, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0.00"}, "missing_lines": [71, 72, 75, 78, 79, 80, 82, 83, 84, 86, 87, 88, 90, 91, 92, 95, 96, 98, 100, 101, 102], "excluded_lines": [], "start_line": 60, "executed_branches": [], "missing_branches": [[78, 79], [78, 82], [82, 83], [82, 86], [86, 87], [86, 90], [90, 91], [90, 95]]}, "test_google_drive_token": {"executed_lines": [115, 116, 118, 121, 189, 190, 191], "summary": {"covered_lines": 7, "num_statements": 50, "percent_covered": 14.0625, "percent_covered_display": "14.06", "missing_lines": 43, "excluded_lines": 0, "percent_statements_covered": 14.0, "percent_statements_covered_display": "14.00", "num_branches": 14, "num_partial_branches": 2, "covered_branches": 2, "missing_branches": 12, "percent_branches_covered": 14.285714285714286, "percent_branches_covered_display": "14.29"}, "missing_lines": [122, 127, 128, 130, 132, 135, 136, 138, 147, 148, 151, 152, 153, 154, 155, 156, 163, 164, 166, 168, 175, 176, 177, 180, 181, 186, 193, 194, 195, 198, 199, 201, 202, 204, 206, 208, 214, 215, 216, 217, 219, 220, 221], "excluded_lines": [], "start_line": 110, "executed_branches": [[121, 189], [189, 190]], "missing_branches": [[121, 122], [122, 127], [122, 130], [147, 148], [147, 151], [152, 153], [152, 163], [180, 181], [180, 186], [189, 193], [201, 202], [201, 204]]}, "get_google_drive_token_info": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 31, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 31, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00", "num_branches": 10, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 10, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0.00"}, "missing_lines": [232, 233, 236, 237, 238, 243, 248, 249, 251, 253, 254, 256, 265, 266, 269, 270, 271, 272, 273, 274, 281, 283, 289, 290, 291, 294, 295, 300, 302, 303, 304], "excluded_lines": [], "start_line": 226, "executed_branches": [], "missing_branches": [[236, 237], [236, 243], [243, 248], [243, 251], [265, 266], [265, 269], [270, 271], [270, 281], [294, 295], [294, 300]]}, "format_time_remaining": {"executed_lines": [309, 310, 312, 313, 314, 316, 317, 318, 319, 320, 321, 322, 324], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 8, "num_partial_branches": 0, "covered_branches": 8, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 307, "executed_branches": [[309, 310], [309, 312], [317, 318], [317, 319], [319, 320], [319, 321], [321, 322], [321, 324]], "missing_branches": []}, "save_dropbox_settings": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 56, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 56, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00", "num_branches": 34, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 34, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0.00"}, "missing_lines": [340, 342, 345, 348, 351, 352, 353, 354, 355, 356, 357, 360, 361, 364, 365, 366, 369, 370, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 390, 391, 392, 395, 396, 398, 399, 400, 402, 407, 408, 409, 410, 411, 412, 413, 414, 417, 419, 421, 427, 428, 429], "excluded_lines": [], "start_line": 329, "executed_branches": [], "missing_branches": [[351, 352], [351, 360], [352, 353], [352, 354], [354, 355], [354, 356], [356, 357], [356, 360], [360, 361], [360, 364], [364, 365], [364, 402], [375, 376], [375, 390], [378, 379], [378, 386], [379, 378], [379, 380], [380, 381], [380, 382], [386, 375], [386, 387], [390, 391], [390, 395], [391, 390], [391, 392], [407, 408], [407, 409], [409, 410], [409, 411], [411, 412], [411, 413], [413, 414], [413, 417]]}, "": {"executed_lines": [5, 6, 7, 8, 10, 12, 13, 14, 17, 19, 22, 23, 24, 58, 59, 60, 108, 109, 110, 224, 225, 226, 307, 327, 328, 329], "summary": {"covered_lines": 26, "num_statements": 26, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [5, 6, 7, 8, 10, 12, 13, 14, 17, 19, 22, 23, 24, 58, 59, 60, 108, 109, 110, 115, 116, 118, 121, 189, 190, 191, 224, 225, 226, 307, 309, 310, 312, 313, 314, 316, 317, 318, 319, 320, 321, 322, 324, 327, 328, 329], "summary": {"covered_lines": 46, "num_statements": 201, "percent_covered": 20.363636363636363, "percent_covered_display": "20.36", "missing_lines": 155, "excluded_lines": 0, "percent_statements_covered": 22.885572139303484, "percent_statements_covered_display": "22.89", "num_branches": 74, "num_partial_branches": 2, "covered_branches": 10, "missing_branches": 64, "percent_branches_covered": 13.513513513513514, "percent_branches_covered_display": "13.51"}, "missing_lines": [37, 39, 48, 51, 71, 72, 75, 78, 79, 80, 82, 83, 84, 86, 87, 88, 90, 91, 92, 95, 96, 98, 100, 101, 102, 122, 127, 128, 130, 132, 135, 136, 138, 147, 148, 151, 152, 153, 154, 155, 156, 163, 164, 166, 168, 175, 176, 177, 180, 181, 186, 193, 194, 195, 198, 199, 201, 202, 204, 206, 208, 214, 215, 216, 217, 219, 220, 221, 232, 233, 236, 237, 238, 243, 248, 249, 251, 253, 254, 256, 265, 266, 269, 270, 271, 272, 273, 274, 281, 283, 289, 290, 291, 294, 295, 300, 302, 303, 304, 340, 342, 345, 348, 351, 352, 353, 354, 355, 356, 357, 360, 361, 364, 365, 366, 369, 370, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 390, 391, 392, 395, 396, 398, 399, 400, 402, 407, 408, 409, 410, 411, 412, 413, 414, 417, 419, 421, 427, 428, 429], "excluded_lines": [], "start_line": 1, "executed_branches": [[121, 189], [189, 190], [309, 310], [309, 312], [317, 318], [317, 319], [319, 320], [319, 321], [321, 322], [321, 324]], "missing_branches": [[78, 79], [78, 82], [82, 83], [82, 86], [86, 87], [86, 90], [90, 91], [90, 95], [121, 122], [122, 127], [122, 130], [147, 148], [147, 151], [152, 153], [152, 163], [180, 181], [180, 186], [189, 193], [201, 202], [201, 204], [236, 237], [236, 243], [243, 248], [243, 251], [265, 266], [265, 269], [270, 271], [270, 281], [294, 295], [294, 300], [351, 352], [351, 360], [352, 353], [352, 354], [354, 355], [354, 356], [356, 357], [356, 360], [360, 361], [360, 364], [364, 365], [364, 402], [375, 376], [375, 390], [378, 379], [378, 386], [379, 378], [379, 380], [380, 381], [380, 382], [386, 375], [386, 387], [390, 391], [390, 395], [391, 390], [391, 392], [407, 408], [407, 409], [409, 410], [409, 411], [411, 412], [411, 413], [413, 414], [413, 417]]}}}, "app/api/logs.py": {"executed_lines": [5, 6, 8, 9, 10, 12, 13, 14, 17, 19, 21, 24, 25, 26, 56, 59, 61, 62, 65, 68, 69, 70, 81, 84, 85, 86, 94, 95, 96, 99, 102, 103, 104, 115, 128, 129, 130, 136, 138, 139, 142, 143, 144, 155], "summary": {"covered_lines": 44, "num_statements": 45, "percent_covered": 96.61016949152543, "percent_covered_display": "96.61", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 97.77777777777777, "percent_statements_covered_display": "97.78", "num_branches": 14, "num_partial_branches": 1, "covered_branches": 13, "missing_branches": 1, "percent_branches_covered": 92.85714285714286, "percent_branches_covered_display": "92.86"}, "missing_lines": [60], "excluded_lines": [], "executed_branches": [[59, 61], [61, 62], [61, 65], [69, 70], [69, 81], [95, 96], [95, 99], [103, 104], [103, 115], [138, 139], [138, 142], [143, 144], [143, 155]], "missing_branches": [[59, 60]], "functions": {"list_processing_logs": {"executed_lines": [56, 59, 61, 62, 65, 68, 69, 70, 81], "summary": {"covered_lines": 9, "num_statements": 10, "percent_covered": 87.5, "percent_covered_display": "87.50", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 90.0, "percent_statements_covered_display": "90.00", "num_branches": 6, "num_partial_branches": 1, "covered_branches": 5, "missing_branches": 1, "percent_branches_covered": 83.33333333333333, "percent_branches_covered_display": "83.33"}, "missing_lines": [60], "excluded_lines": [], "start_line": 26, "executed_branches": [[59, 61], [61, 62], [61, 65], [69, 70], [69, 81]], "missing_branches": [[59, 60]]}, "get_file_processing_logs": {"executed_lines": [94, 95, 96, 99, 102, 103, 104, 115], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 86, "executed_branches": [[95, 96], [95, 99], [103, 104], [103, 115]], "missing_branches": []}, "get_task_processing_logs": {"executed_lines": [136, 138, 139, 142, 143, 144, 155], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 130, "executed_branches": [[138, 139], [138, 142], [143, 144], [143, 155]], "missing_branches": []}, "": {"executed_lines": [5, 6, 8, 9, 10, 12, 13, 14, 17, 19, 21, 24, 25, 26, 84, 85, 86, 128, 129, 130], "summary": {"covered_lines": 20, "num_statements": 20, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [5, 6, 8, 9, 10, 12, 13, 14, 17, 19, 21, 24, 25, 26, 56, 59, 61, 62, 65, 68, 69, 70, 81, 84, 85, 86, 94, 95, 96, 99, 102, 103, 104, 115, 128, 129, 130, 136, 138, 139, 142, 143, 144, 155], "summary": {"covered_lines": 44, "num_statements": 45, "percent_covered": 96.61016949152543, "percent_covered_display": "96.61", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 97.77777777777777, "percent_statements_covered_display": "97.78", "num_branches": 14, "num_partial_branches": 1, "covered_branches": 13, "missing_branches": 1, "percent_branches_covered": 92.85714285714286, "percent_branches_covered_display": "92.86"}, "missing_lines": [60], "excluded_lines": [], "start_line": 1, "executed_branches": [[59, 61], [61, 62], [61, 65], [69, 70], [69, 81], [95, 96], [95, 99], [103, 104], [103, 115], [138, 139], [138, 142], [143, 144], [143, 155]], "missing_branches": [[59, 60]]}}}, "app/api/onedrive.py": {"executed_lines": [5, 6, 7, 8, 10, 11, 13, 14, 15, 18, 20, 23, 24, 25, 56, 57, 58, 62, 63, 65, 70, 71, 177, 179, 180, 182, 183, 184, 186, 187, 188, 189, 190, 191, 192, 194, 197, 198, 199, 292, 293, 294, 348, 349, 350], "summary": {"covered_lines": 45, "num_statements": 189, "percent_covered": 21.011673151750973, "percent_covered_display": "21.01", "missing_lines": 144, "excluded_lines": 0, "percent_statements_covered": 23.80952380952381, "percent_statements_covered_display": "23.81", "num_branches": 68, "num_partial_branches": 1, "covered_branches": 9, "missing_branches": 59, "percent_branches_covered": 13.235294117647058, "percent_branches_covered_display": "13.24"}, "missing_lines": [38, 40, 50, 53, 74, 75, 77, 85, 87, 88, 89, 91, 92, 93, 96, 97, 98, 101, 104, 105, 106, 107, 108, 110, 111, 113, 114, 115, 116, 118, 120, 121, 123, 124, 126, 128, 129, 132, 133, 135, 137, 138, 139, 145, 146, 147, 150, 151, 154, 155, 162, 164, 172, 173, 174, 210, 212, 214, 215, 216, 220, 223, 224, 227, 232, 233, 234, 235, 236, 237, 238, 239, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 259, 260, 261, 264, 265, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 279, 281, 283, 284, 285, 286, 287, 305, 306, 309, 310, 311, 313, 314, 315, 317, 318, 319, 321, 322, 323, 325, 326, 327, 330, 331, 333, 334, 335, 336, 337, 339, 341, 342, 343, 354, 356, 365, 375, 376, 377, 378], "excluded_lines": [], "executed_branches": [[65, 70], [179, 180], [179, 182], [187, 188], [187, 189], [189, 190], [189, 191], [191, 192], [191, 194]], "missing_branches": [[65, 74], [87, 88], [87, 91], [97, 98], [97, 132], [106, 107], [106, 132], [113, 114], [113, 120], [114, 115], [114, 118], [120, 121], [120, 123], [137, 138], [137, 145], [214, 215], [214, 220], [232, 233], [232, 234], [234, 235], [234, 236], [236, 237], [236, 238], [238, 239], [238, 242], [244, 245], [244, 259], [247, 248], [247, 255], [248, 247], [248, 249], [249, 250], [249, 251], [255, 244], [255, 256], [259, 260], [259, 264], [260, 259], [260, 261], [268, 269], [268, 270], [270, 271], [270, 272], [272, 273], [272, 274], [274, 275], [274, 276], [276, 277], [276, 279], [309, 310], [309, 313], [313, 314], [313, 317], [317, 318], [317, 321], [321, 322], [321, 325], [325, 326], [325, 330]], "functions": {"exchange_onedrive_token": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [38, 40, 50, 53], "excluded_lines": [], "start_line": 25, "executed_branches": [], "missing_branches": []}, "test_onedrive_token": {"executed_lines": [62, 63, 65, 70, 71], "summary": {"covered_lines": 5, "num_statements": 56, "percent_covered": 8.333333333333334, "percent_covered_display": "8.33", "missing_lines": 51, "excluded_lines": 0, "percent_statements_covered": 8.928571428571429, "percent_statements_covered_display": "8.93", "num_branches": 16, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 15, "percent_branches_covered": 6.25, "percent_branches_covered_display": "6.25"}, "missing_lines": [74, 75, 77, 85, 87, 88, 89, 91, 92, 93, 96, 97, 98, 101, 104, 105, 106, 107, 108, 110, 111, 113, 114, 115, 116, 118, 120, 121, 123, 124, 126, 128, 129, 132, 133, 135, 137, 138, 139, 145, 146, 147, 150, 151, 154, 155, 162, 164, 172, 173, 174], "excluded_lines": [], "start_line": 58, "executed_branches": [[65, 70]], "missing_branches": [[65, 74], [87, 88], [87, 91], [97, 98], [97, 132], [106, 107], [106, 132], [113, 114], [113, 120], [114, 115], [114, 118], [120, 121], [120, 123], [137, 138], [137, 145]]}, "format_time_remaining": {"executed_lines": [179, 180, 182, 183, 184, 186, 187, 188, 189, 190, 191, 192, 194], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 8, "num_partial_branches": 0, "covered_branches": 8, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 177, "executed_branches": [[179, 180], [179, 182], [187, 188], [187, 189], [189, 190], [189, 191], [191, 192], [191, 194]], "missing_branches": []}, "save_onedrive_settings": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 54, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 54, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00", "num_branches": 34, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 34, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0.00"}, "missing_lines": [210, 212, 214, 215, 216, 220, 223, 224, 227, 232, 233, 234, 235, 236, 237, 238, 239, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 259, 260, 261, 264, 265, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 279, 281, 283, 284, 285, 286, 287], "excluded_lines": [], "start_line": 199, "executed_branches": [], "missing_branches": [[214, 215], [214, 220], [232, 233], [232, 234], [234, 235], [234, 236], [236, 237], [236, 238], [238, 239], [238, 242], [244, 245], [244, 259], [247, 248], [247, 255], [248, 247], [248, 249], [249, 250], [249, 251], [255, 244], [255, 256], [259, 260], [259, 264], [260, 259], [260, 261], [268, 269], [268, 270], [270, 271], [270, 272], [272, 273], [272, 274], [274, 275], [274, 276], [276, 277], [276, 279]]}, "update_onedrive_settings": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 28, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 28, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00", "num_branches": 10, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 10, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0.00"}, "missing_lines": [305, 306, 309, 310, 311, 313, 314, 315, 317, 318, 319, 321, 322, 323, 325, 326, 327, 330, 331, 333, 334, 335, 336, 337, 339, 341, 342, 343], "excluded_lines": [], "start_line": 294, "executed_branches": [], "missing_branches": [[309, 310], [309, 313], [313, 314], [313, 317], [317, 318], [317, 321], [321, 322], [321, 325], [325, 326], [325, 330]]}, "get_onedrive_full_config": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 7, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 7, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [354, 356, 365, 375, 376, 377, 378], "excluded_lines": [], "start_line": 350, "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [5, 6, 7, 8, 10, 11, 13, 14, 15, 18, 20, 23, 24, 25, 56, 57, 58, 177, 197, 198, 199, 292, 293, 294, 348, 349, 350], "summary": {"covered_lines": 27, "num_statements": 27, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [5, 6, 7, 8, 10, 11, 13, 14, 15, 18, 20, 23, 24, 25, 56, 57, 58, 62, 63, 65, 70, 71, 177, 179, 180, 182, 183, 184, 186, 187, 188, 189, 190, 191, 192, 194, 197, 198, 199, 292, 293, 294, 348, 349, 350], "summary": {"covered_lines": 45, "num_statements": 189, "percent_covered": 21.011673151750973, "percent_covered_display": "21.01", "missing_lines": 144, "excluded_lines": 0, "percent_statements_covered": 23.80952380952381, "percent_statements_covered_display": "23.81", "num_branches": 68, "num_partial_branches": 1, "covered_branches": 9, "missing_branches": 59, "percent_branches_covered": 13.235294117647058, "percent_branches_covered_display": "13.24"}, "missing_lines": [38, 40, 50, 53, 74, 75, 77, 85, 87, 88, 89, 91, 92, 93, 96, 97, 98, 101, 104, 105, 106, 107, 108, 110, 111, 113, 114, 115, 116, 118, 120, 121, 123, 124, 126, 128, 129, 132, 133, 135, 137, 138, 139, 145, 146, 147, 150, 151, 154, 155, 162, 164, 172, 173, 174, 210, 212, 214, 215, 216, 220, 223, 224, 227, 232, 233, 234, 235, 236, 237, 238, 239, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 259, 260, 261, 264, 265, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 279, 281, 283, 284, 285, 286, 287, 305, 306, 309, 310, 311, 313, 314, 315, 317, 318, 319, 321, 322, 323, 325, 326, 327, 330, 331, 333, 334, 335, 336, 337, 339, 341, 342, 343, 354, 356, 365, 375, 376, 377, 378], "excluded_lines": [], "start_line": 1, "executed_branches": [[65, 70], [179, 180], [179, 182], [187, 188], [187, 189], [189, 190], [189, 191], [191, 192], [191, 194]], "missing_branches": [[65, 74], [87, 88], [87, 91], [97, 98], [97, 132], [106, 107], [106, 132], [113, 114], [113, 120], [114, 115], [114, 118], [120, 121], [120, 123], [137, 138], [137, 145], [214, 215], [214, 220], [232, 233], [232, 234], [234, 235], [234, 236], [236, 237], [236, 238], [238, 239], [238, 242], [244, 245], [244, 259], [247, 248], [247, 255], [248, 247], [248, 249], [249, 250], [249, 251], [255, 244], [255, 256], [259, 260], [259, 264], [260, 259], [260, 261], [268, 269], [268, 270], [270, 271], [270, 272], [272, 273], [272, 274], [274, 275], [274, 276], [276, 277], [276, 279], [309, 310], [309, 313], [313, 314], [313, 317], [317, 318], [317, 321], [321, 322], [321, 325], [325, 326], [325, 330]]}}}, "app/api/openai.py": {"executed_lines": [5, 7, 9, 10, 13, 15, 18, 19, 20, 24, 25, 27, 30, 35, 38, 40, 49, 50, 51, 54, 56], "summary": {"covered_lines": 21, "num_statements": 31, "percent_covered": 66.66666666666667, "percent_covered_display": "66.67", "missing_lines": 10, "excluded_lines": 0, "percent_statements_covered": 67.74193548387096, "percent_statements_covered_display": "67.74", "num_branches": 2, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 1, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50.00"}, "missing_lines": [31, 32, 43, 44, 62, 63, 64, 65, 66, 67], "excluded_lines": [], "executed_branches": [[30, 35]], "missing_branches": [[30, 31]], "functions": {"test_openai_connection": {"executed_lines": [24, 25, 27, 30, 35, 38, 40, 49, 50, 51, 54, 56], "summary": {"covered_lines": 12, "num_statements": 22, "percent_covered": 54.166666666666664, "percent_covered_display": "54.17", "missing_lines": 10, "excluded_lines": 0, "percent_statements_covered": 54.54545454545455, "percent_statements_covered_display": "54.55", "num_branches": 2, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 1, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50.00"}, "missing_lines": [31, 32, 43, 44, 62, 63, 64, 65, 66, 67], "excluded_lines": [], "start_line": 20, "executed_branches": [[30, 35]], "missing_branches": [[30, 31]]}, "": {"executed_lines": [5, 7, 9, 10, 13, 15, 18, 19, 20], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [5, 7, 9, 10, 13, 15, 18, 19, 20, 24, 25, 27, 30, 35, 38, 40, 49, 50, 51, 54, 56], "summary": {"covered_lines": 21, "num_statements": 31, "percent_covered": 66.66666666666667, "percent_covered_display": "66.67", "missing_lines": 10, "excluded_lines": 0, "percent_statements_covered": 67.74193548387096, "percent_statements_covered_display": "67.74", "num_branches": 2, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 1, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50.00"}, "missing_lines": [31, 32, 43, 44, 62, 63, 64, 65, 66, 67], "excluded_lines": [], "start_line": 1, "executed_branches": [[30, 35]], "missing_branches": [[30, 31]]}}}, "app/api/process.py": {"executed_lines": [5, 6, 8, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 22, 24, 27, 28, 29, 31, 33, 34, 40, 41, 42, 44, 45, 46, 51, 52, 53, 55, 56, 57, 62, 63, 64, 66, 67, 68, 73, 74, 75, 77, 78, 79, 84, 85, 86, 88, 89, 90, 95, 96, 97, 99, 101, 102, 108, 109, 110, 117, 118, 119, 121, 122, 123, 124, 126, 127, 129, 130, 133, 135, 136, 142, 143, 145, 149, 150, 151, 154, 156, 158, 159, 160, 161, 163], "summary": {"covered_lines": 87, "num_statements": 101, "percent_covered": 83.20610687022901, "percent_covered_display": "83.21", "missing_lines": 14, "excluded_lines": 0, "percent_statements_covered": 86.13861386138613, "percent_statements_covered_display": "86.14", "num_branches": 30, "num_partial_branches": 8, "covered_branches": 22, "missing_branches": 8, "percent_branches_covered": 73.33333333333333, "percent_branches_covered_display": "73.33"}, "missing_lines": [36, 37, 47, 48, 58, 59, 69, 70, 80, 81, 91, 92, 104, 105], "excluded_lines": [], "executed_branches": [[33, 34], [45, 46], [56, 57], [67, 68], [78, 79], [89, 90], [101, 102], [118, 119], [118, 121], [122, 123], [122, 126], [123, 124], [126, 127], [126, 129], [135, 136], [135, 142], [142, 143], [142, 158], [145, 149], [145, 154], [159, 160], [159, 163]], "missing_branches": [[33, 36], [45, 47], [56, 58], [67, 69], [78, 80], [89, 91], [101, 104], [123, 122]], "functions": {"process": {"executed_lines": [31, 33, 34], "summary": {"covered_lines": 3, "num_statements": 5, "percent_covered": 57.142857142857146, "percent_covered_display": "57.14", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 60.0, "percent_statements_covered_display": "60.00", "num_branches": 2, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 1, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50.00"}, "missing_lines": [36, 37], "excluded_lines": [], "start_line": 29, "executed_branches": [[33, 34]], "missing_branches": [[33, 36]]}, "send_to_dropbox_endpoint": {"executed_lines": [44, 45, 46], "summary": {"covered_lines": 3, "num_statements": 5, "percent_covered": 57.142857142857146, "percent_covered_display": "57.14", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 60.0, "percent_statements_covered_display": "60.00", "num_branches": 2, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 1, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50.00"}, "missing_lines": [47, 48], "excluded_lines": [], "start_line": 42, "executed_branches": [[45, 46]], "missing_branches": [[45, 47]]}, "send_to_paperless_endpoint": {"executed_lines": [55, 56, 57], "summary": {"covered_lines": 3, "num_statements": 5, "percent_covered": 57.142857142857146, "percent_covered_display": "57.14", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 60.0, "percent_statements_covered_display": "60.00", "num_branches": 2, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 1, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50.00"}, "missing_lines": [58, 59], "excluded_lines": [], "start_line": 53, "executed_branches": [[56, 57]], "missing_branches": [[56, 58]]}, "send_to_nextcloud_endpoint": {"executed_lines": [66, 67, 68], "summary": {"covered_lines": 3, "num_statements": 5, "percent_covered": 57.142857142857146, "percent_covered_display": "57.14", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 60.0, "percent_statements_covered_display": "60.00", "num_branches": 2, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 1, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50.00"}, "missing_lines": [69, 70], "excluded_lines": [], "start_line": 64, "executed_branches": [[67, 68]], "missing_branches": [[67, 69]]}, "send_to_google_drive_endpoint": {"executed_lines": [77, 78, 79], "summary": {"covered_lines": 3, "num_statements": 5, "percent_covered": 57.142857142857146, "percent_covered_display": "57.14", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 60.0, "percent_statements_covered_display": "60.00", "num_branches": 2, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 1, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50.00"}, "missing_lines": [80, 81], "excluded_lines": [], "start_line": 75, "executed_branches": [[78, 79]], "missing_branches": [[78, 80]]}, "send_to_onedrive_endpoint": {"executed_lines": [88, 89, 90], "summary": {"covered_lines": 3, "num_statements": 5, "percent_covered": 57.142857142857146, "percent_covered_display": "57.14", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 60.0, "percent_statements_covered_display": "60.00", "num_branches": 2, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 1, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50.00"}, "missing_lines": [91, 92], "excluded_lines": [], "start_line": 86, "executed_branches": [[89, 90]], "missing_branches": [[89, 91]]}, "send_to_all_destinations_endpoint": {"executed_lines": [99, 101, 102], "summary": {"covered_lines": 3, "num_statements": 5, "percent_covered": 57.142857142857146, "percent_covered_display": "57.14", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 60.0, "percent_statements_covered_display": "60.00", "num_branches": 2, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 1, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50.00"}, "missing_lines": [104, 105], "excluded_lines": [], "start_line": 97, "executed_branches": [[101, 102]], "missing_branches": [[101, 104]]}, "process_all_pdfs_in_workdir": {"executed_lines": [117, 118, 119, 121, 122, 123, 124, 126, 127, 129, 130, 133, 135, 136, 142, 143, 145, 149, 150, 151, 154, 156, 158, 159, 160, 161, 163], "summary": {"covered_lines": 27, "num_statements": 27, "percent_covered": 97.67441860465117, "percent_covered_display": "97.67", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 16, "num_partial_branches": 1, "covered_branches": 15, "missing_branches": 1, "percent_branches_covered": 93.75, "percent_branches_covered_display": "93.75"}, "missing_lines": [], "excluded_lines": [], "start_line": 110, "executed_branches": [[118, 119], [118, 121], [122, 123], [122, 126], [123, 124], [126, 127], [126, 129], [135, 136], [135, 142], [142, 143], [142, 158], [145, 149], [145, 154], [159, 160], [159, 163]], "missing_branches": [[123, 122]]}, "": {"executed_lines": [5, 6, 8, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 22, 24, 27, 28, 29, 40, 41, 42, 51, 52, 53, 62, 63, 64, 73, 74, 75, 84, 85, 86, 95, 96, 97, 108, 109, 110], "summary": {"covered_lines": 39, "num_statements": 39, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [5, 6, 8, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 22, 24, 27, 28, 29, 31, 33, 34, 40, 41, 42, 44, 45, 46, 51, 52, 53, 55, 56, 57, 62, 63, 64, 66, 67, 68, 73, 74, 75, 77, 78, 79, 84, 85, 86, 88, 89, 90, 95, 96, 97, 99, 101, 102, 108, 109, 110, 117, 118, 119, 121, 122, 123, 124, 126, 127, 129, 130, 133, 135, 136, 142, 143, 145, 149, 150, 151, 154, 156, 158, 159, 160, 161, 163], "summary": {"covered_lines": 87, "num_statements": 101, "percent_covered": 83.20610687022901, "percent_covered_display": "83.21", "missing_lines": 14, "excluded_lines": 0, "percent_statements_covered": 86.13861386138613, "percent_statements_covered_display": "86.14", "num_branches": 30, "num_partial_branches": 8, "covered_branches": 22, "missing_branches": 8, "percent_branches_covered": 73.33333333333333, "percent_branches_covered_display": "73.33"}, "missing_lines": [36, 37, 47, 48, 58, 59, 69, 70, 80, 81, 91, 92, 104, 105], "excluded_lines": [], "start_line": 1, "executed_branches": [[33, 34], [45, 46], [56, 57], [67, 68], [78, 79], [89, 90], [101, 102], [118, 119], [118, 121], [122, 123], [122, 126], [123, 124], [126, 127], [126, 129], [135, 136], [135, 142], [142, 143], [142, 158], [145, 149], [145, 154], [159, 160], [159, 163]], "missing_branches": [[33, 36], [45, 47], [56, 58], [67, 69], [78, 80], [89, 91], [101, 104], [123, 122]]}}}, "app/api/settings.py": {"executed_lines": [5, 6, 8, 9, 10, 12, 13, 14, 24, 25, 28, 36, 37, 38, 39, 42, 43, 46, 49, 50, 53, 56, 57, 58, 61, 64, 65, 66, 69, 70, 95, 96, 116, 117, 162, 163, 186, 187], "summary": {"covered_lines": 38, "num_statements": 101, "percent_covered": 32.520325203252035, "percent_covered_display": "32.52", "missing_lines": 63, "excluded_lines": 0, "percent_statements_covered": 37.62376237623762, "percent_statements_covered_display": "37.62", "num_branches": 22, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 20, "percent_branches_covered": 9.090909090909092, "percent_branches_covered_display": "9.09"}, "missing_lines": [75, 77, 78, 79, 80, 81, 84, 87, 89, 90, 91, 92, 101, 103, 106, 108, 109, 110, 111, 128, 130, 131, 132, 133, 136, 137, 138, 143, 144, 146, 153, 154, 155, 156, 157, 168, 169, 170, 171, 173, 177, 178, 179, 180, 181, 192, 193, 195, 196, 198, 199, 200, 201, 202, 205, 206, 207, 209, 210, 211, 212, 214, 216], "excluded_lines": [], "executed_branches": [[37, 38], [37, 39]], "missing_branches": [[78, 79], [78, 84], [79, 78], [79, 80], [130, 131], [130, 136], [132, 133], [132, 136], [137, 138], [137, 143], [170, 171], [170, 173], [195, 196], [195, 214], [198, 199], [198, 205], [200, 201], [200, 205], [206, 207], [206, 209]], "functions": {"require_admin": {"executed_lines": [36, 37, 38, 39], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 28, "executed_branches": [[37, 38], [37, 39]], "missing_branches": []}, "get_settings": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 12, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 12, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 4, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0.00"}, "missing_lines": [75, 77, 78, 79, 80, 81, 84, 87, 89, 90, 91, 92], "excluded_lines": [], "start_line": 70, "executed_branches": [], "missing_branches": [[78, 79], [78, 84], [79, 78], [79, 80]]}, "get_setting": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 7, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 7, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [101, 103, 106, 108, 109, 110, 111], "excluded_lines": [], "start_line": 96, "executed_branches": [], "missing_branches": []}, "update_setting": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 16, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 16, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00", "num_branches": 6, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 6, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0.00"}, "missing_lines": [128, 130, 131, 132, 133, 136, 137, 138, 143, 144, 146, 153, 154, 155, 156, 157], "excluded_lines": [], "start_line": 117, "executed_branches": [], "missing_branches": [[130, 131], [130, 136], [132, 133], [132, 136], [137, 138], [137, 143]]}, "delete_setting": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 10, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 10, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 2, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0.00"}, "missing_lines": [168, 169, 170, 171, 173, 177, 178, 179, 180, 181], "excluded_lines": [], "start_line": 163, "executed_branches": [], "missing_branches": [[170, 171], [170, 173]]}, "bulk_update_settings": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 18, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 18, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00", "num_branches": 8, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 8, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0.00"}, "missing_lines": [192, 193, 195, 196, 198, 199, 200, 201, 202, 205, 206, 207, 209, 210, 211, 212, 214, 216], "excluded_lines": [], "start_line": 187, "executed_branches": [], "missing_branches": [[195, 196], [195, 214], [198, 199], [198, 205], [200, 201], [200, 205], [206, 207], [206, 209]]}, "": {"executed_lines": [5, 6, 8, 9, 10, 12, 13, 14, 24, 25, 28, 42, 43, 46, 49, 50, 53, 56, 57, 58, 61, 64, 65, 66, 69, 70, 95, 96, 116, 117, 162, 163, 186, 187], "summary": {"covered_lines": 34, "num_statements": 34, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"SettingUpdate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 46, "executed_branches": [], "missing_branches": []}, "SettingResponse": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 53, "executed_branches": [], "missing_branches": []}, "SettingsListResponse": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 61, "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [5, 6, 8, 9, 10, 12, 13, 14, 24, 25, 28, 36, 37, 38, 39, 42, 43, 46, 49, 50, 53, 56, 57, 58, 61, 64, 65, 66, 69, 70, 95, 96, 116, 117, 162, 163, 186, 187], "summary": {"covered_lines": 38, "num_statements": 101, "percent_covered": 32.520325203252035, "percent_covered_display": "32.52", "missing_lines": 63, "excluded_lines": 0, "percent_statements_covered": 37.62376237623762, "percent_statements_covered_display": "37.62", "num_branches": 22, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 20, "percent_branches_covered": 9.090909090909092, "percent_branches_covered_display": "9.09"}, "missing_lines": [75, 77, 78, 79, 80, 81, 84, 87, 89, 90, 91, 92, 101, 103, 106, 108, 109, 110, 111, 128, 130, 131, 132, 133, 136, 137, 138, 143, 144, 146, 153, 154, 155, 156, 157, 168, 169, 170, 171, 173, 177, 178, 179, 180, 181, 192, 193, 195, 196, 198, 199, 200, 201, 202, 205, 206, 207, 209, 210, 211, 212, 214, 216], "excluded_lines": [], "start_line": 1, "executed_branches": [[37, 38], [37, 39]], "missing_branches": [[78, 79], [78, 84], [79, 78], [79, 80], [130, 131], [130, 136], [132, 133], [132, 136], [137, 138], [137, 143], [170, 171], [170, 173], [195, 196], [195, 214], [198, 199], [198, 205], [200, 201], [200, 205], [206, 207], [206, 209]]}}}, "app/api/url_upload.py": {"executed_lines": [5, 6, 7, 8, 9, 10, 11, 13, 14, 15, 17, 18, 19, 20, 23, 25, 28, 31, 32, 34, 35, 37, 38, 40, 43, 48, 50, 51, 52, 54, 55, 58, 59, 60, 61, 63, 64, 66, 70, 71, 74, 81, 84, 88, 92, 93, 99, 104, 108, 120, 134, 146, 148, 149, 150, 153, 154, 155, 156, 159, 162, 163, 164, 184, 187, 190, 191, 194, 195, 196, 199, 200, 206, 207, 208, 211, 220, 223, 224, 225, 232, 233, 234, 235, 236, 237, 243, 244, 245, 246, 250, 253, 254, 256, 257, 258, 259, 260, 263, 265, 266, 267, 272, 275, 277, 285, 286, 287, 289, 290, 291, 293, 294, 295, 297, 301, 303], "summary": {"covered_lines": 117, "num_statements": 137, "percent_covered": 80.11049723756906, "percent_covered_display": "80.11", "missing_lines": 20, "excluded_lines": 0, "percent_statements_covered": 85.4014598540146, "percent_statements_covered_display": "85.40", "num_branches": 44, "num_partial_branches": 12, "covered_branches": 28, "missing_branches": 16, "percent_branches_covered": 63.63636363636363, "percent_branches_covered_display": "63.64"}, "missing_lines": [39, 65, 85, 89, 105, 157, 201, 248, 298, 299, 305, 306, 308, 309, 310, 312, 313, 315, 316, 317], "excluded_lines": [], "executed_branches": [[38, 40], [59, 60], [63, 64], [84, 88], [88, 92], [92, 93], [92, 99], [104, -74], [146, 148], [149, 150], [149, 153], [154, 155], [156, 159], [190, 191], [190, 194], [200, 206], [224, 225], [224, 232], [233, 234], [233, 243], [236, 237], [236, 243], [244, 245], [257, 258], [257, 272], [258, 259], [263, 257], [263, 265]], "missing_branches": [[38, 39], [59, 65], [63, 59], [84, 85], [88, 89], [104, 105], [146, 153], [154, 159], [156, 157], [200, 201], [244, 248], [258, 257], [308, 309], [308, 310], [315, 316], [315, 317]], "functions": {"URLUploadRequest.validate_url_scheme": {"executed_lines": [37, 38, 40], "summary": {"covered_lines": 3, "num_statements": 4, "percent_covered": 66.66666666666667, "percent_covered_display": "66.67", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 75.0, "percent_statements_covered_display": "75.00", "num_branches": 2, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 1, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50.00"}, "missing_lines": [39], "excluded_lines": [], "start_line": 35, "executed_branches": [[38, 40]], "missing_branches": [[38, 39]]}, "is_private_ip": {"executed_lines": [48, 50, 51, 52, 54, 55, 58, 59, 60, 61, 63, 64, 66, 70, 71], "summary": {"covered_lines": 15, "num_statements": 16, "percent_covered": 85.0, "percent_covered_display": "85.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 93.75, "percent_statements_covered_display": "93.75", "num_branches": 4, "num_partial_branches": 2, "covered_branches": 2, "missing_branches": 2, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50.00"}, "missing_lines": [65], "excluded_lines": [], "start_line": 43, "executed_branches": [[59, 60], [63, 64]], "missing_branches": [[59, 65], [63, 59]]}, "validate_url_safety": {"executed_lines": [81, 84, 88, 92, 93, 99, 104], "summary": {"covered_lines": 7, "num_statements": 10, "percent_covered": 66.66666666666667, "percent_covered_display": "66.67", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 70.0, "percent_statements_covered_display": "70.00", "num_branches": 8, "num_partial_branches": 3, "covered_branches": 5, "missing_branches": 3, "percent_branches_covered": 62.5, "percent_branches_covered_display": "62.50"}, "missing_lines": [85, 89, 105], "excluded_lines": [], "start_line": 74, "executed_branches": [[84, 88], [88, 92], [92, 93], [92, 99], [104, -74]], "missing_branches": [[84, 85], [88, 89], [104, 105]]}, "validate_file_type": {"executed_lines": [120, 134, 146, 148, 149, 150, 153, 154, 155, 156, 159], "summary": {"covered_lines": 11, "num_statements": 12, "percent_covered": 80.0, "percent_covered_display": "80.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 91.66666666666667, "percent_statements_covered_display": "91.67", "num_branches": 8, "num_partial_branches": 3, "covered_branches": 5, "missing_branches": 3, "percent_branches_covered": 62.5, "percent_branches_covered_display": "62.50"}, "missing_lines": [157], "excluded_lines": [], "start_line": 108, "executed_branches": [[146, 148], [149, 150], [149, 153], [154, 155], [156, 159]], "missing_branches": [[146, 153], [154, 159], [156, 157]]}, "process_url": {"executed_lines": [184, 187, 190, 191, 194, 195, 196, 199, 200, 206, 207, 208, 211, 220, 223, 224, 225, 232, 233, 234, 235, 236, 237, 243, 244, 245, 246, 250, 253, 254, 256, 257, 258, 259, 260, 263, 265, 266, 267, 272, 275, 277, 285, 286, 287, 289, 290, 291, 293, 294, 295, 297, 301, 303], "summary": {"covered_lines": 54, "num_statements": 68, "percent_covered": 76.66666666666667, "percent_covered_display": "76.67", "missing_lines": 14, "excluded_lines": 0, "percent_statements_covered": 79.41176470588235, "percent_statements_covered_display": "79.41", "num_branches": 22, "num_partial_branches": 3, "covered_branches": 15, "missing_branches": 7, "percent_branches_covered": 68.18181818181819, "percent_branches_covered_display": "68.18"}, "missing_lines": [201, 248, 298, 299, 305, 306, 308, 309, 310, 312, 313, 315, 316, 317], "excluded_lines": [], "start_line": 164, "executed_branches": [[190, 191], [190, 194], [200, 206], [224, 225], [224, 232], [233, 234], [233, 243], [236, 237], [236, 243], [244, 245], [257, 258], [257, 272], [258, 259], [263, 257], [263, 265]], "missing_branches": [[200, 201], [244, 248], [258, 257], [308, 309], [308, 310], [315, 316], [315, 317]]}, "": {"executed_lines": [5, 6, 7, 8, 9, 10, 11, 13, 14, 15, 17, 18, 19, 20, 23, 25, 28, 31, 32, 34, 35, 43, 74, 108, 162, 163, 164], "summary": {"covered_lines": 27, "num_statements": 27, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"URLUploadRequest": {"executed_lines": [37, 38, 40], "summary": {"covered_lines": 3, "num_statements": 4, "percent_covered": 66.66666666666667, "percent_covered_display": "66.67", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 75.0, "percent_statements_covered_display": "75.00", "num_branches": 2, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 1, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50.00"}, "missing_lines": [39], "excluded_lines": [], "start_line": 28, "executed_branches": [[38, 40]], "missing_branches": [[38, 39]]}, "": {"executed_lines": [5, 6, 7, 8, 9, 10, 11, 13, 14, 15, 17, 18, 19, 20, 23, 25, 28, 31, 32, 34, 35, 43, 48, 50, 51, 52, 54, 55, 58, 59, 60, 61, 63, 64, 66, 70, 71, 74, 81, 84, 88, 92, 93, 99, 104, 108, 120, 134, 146, 148, 149, 150, 153, 154, 155, 156, 159, 162, 163, 164, 184, 187, 190, 191, 194, 195, 196, 199, 200, 206, 207, 208, 211, 220, 223, 224, 225, 232, 233, 234, 235, 236, 237, 243, 244, 245, 246, 250, 253, 254, 256, 257, 258, 259, 260, 263, 265, 266, 267, 272, 275, 277, 285, 286, 287, 289, 290, 291, 293, 294, 295, 297, 301, 303], "summary": {"covered_lines": 114, "num_statements": 133, "percent_covered": 80.57142857142857, "percent_covered_display": "80.57", "missing_lines": 19, "excluded_lines": 0, "percent_statements_covered": 85.71428571428571, "percent_statements_covered_display": "85.71", "num_branches": 42, "num_partial_branches": 11, "covered_branches": 27, "missing_branches": 15, "percent_branches_covered": 64.28571428571429, "percent_branches_covered_display": "64.29"}, "missing_lines": [65, 85, 89, 105, 157, 201, 248, 298, 299, 305, 306, 308, 309, 310, 312, 313, 315, 316, 317], "excluded_lines": [], "start_line": 1, "executed_branches": [[59, 60], [63, 64], [84, 88], [88, 92], [92, 93], [92, 99], [104, -74], [146, 148], [149, 150], [149, 153], [154, 155], [156, 159], [190, 191], [190, 194], [200, 206], [224, 225], [224, 232], [233, 234], [233, 243], [236, 237], [236, 243], [244, 245], [257, 258], [257, 272], [258, 259], [263, 257], [263, 265]], "missing_branches": [[59, 65], [63, 59], [84, 85], [88, 89], [104, 105], [146, 153], [154, 159], [156, 157], [200, 201], [244, 248], [258, 257], [308, 309], [308, 310], [315, 316], [315, 317]]}}}, "app/api/user.py": {"executed_lines": [5, 6, 8, 11, 13, 16, 20, 21, 22, 24, 25, 26, 30, 31, 34, 35, 37, 41, 42, 43, 46, 47], "summary": {"covered_lines": 22, "num_statements": 23, "percent_covered": 96.29629629629629, "percent_covered_display": "96.30", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 95.65217391304348, "percent_statements_covered_display": "95.65", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [48], "excluded_lines": [], "executed_branches": [[21, 22], [21, 24], [25, 26], [25, 30]], "missing_branches": [], "functions": {"whoami_handler": {"executed_lines": [20, 21, 22, 24, 25, 26, 30, 31, 34, 35, 37], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 16, "executed_branches": [[21, 22], [21, 24], [25, 26], [25, 30]], "missing_branches": []}, "whoami": {"executed_lines": [43], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 42, "executed_branches": [], "missing_branches": []}, "auth_whoami": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [48], "excluded_lines": [], "start_line": 47, "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [5, 6, 8, 11, 13, 16, 41, 42, 46, 47], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [5, 6, 8, 11, 13, 16, 20, 21, 22, 24, 25, 26, 30, 31, 34, 35, 37, 41, 42, 43, 46, 47], "summary": {"covered_lines": 22, "num_statements": 23, "percent_covered": 96.29629629629629, "percent_covered_display": "96.30", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 95.65217391304348, "percent_statements_covered_display": "95.65", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [48], "excluded_lines": [], "start_line": 1, "executed_branches": [[21, 22], [21, 24], [25, 26], [25, 30]], "missing_branches": []}}}, "app/auth.py": {"executed_lines": [1, 2, 3, 4, 6, 7, 8, 9, 11, 13, 15, 18, 19, 22, 23, 25, 36, 39, 40, 43, 44, 45, 47, 48, 49, 50, 51, 53, 54, 56, 58, 61, 63, 65, 66, 69, 170, 171, 172, 174, 175, 178, 179, 180, 182, 183], "summary": {"covered_lines": 46, "num_statements": 95, "percent_covered": 46.95652173913044, "percent_covered_display": "46.96", "missing_lines": 49, "excluded_lines": 0, "percent_statements_covered": 48.421052631578945, "percent_statements_covered_display": "48.42", "num_branches": 20, "num_partial_branches": 2, "covered_branches": 8, "missing_branches": 12, "percent_branches_covered": 40.0, "percent_branches_covered_display": "40.00"}, "missing_lines": [26, 33, 34, 71, 72, 74, 86, 87, 89, 90, 92, 93, 95, 96, 98, 99, 100, 101, 102, 107, 110, 111, 116, 117, 119, 120, 121, 124, 126, 129, 132, 133, 134, 135, 136, 140, 141, 143, 144, 145, 147, 149, 158, 159, 161, 163, 164, 166, 167], "excluded_lines": [], "executed_branches": [[25, 36], [44, 45], [44, 47], [49, 50], [49, 53], [53, 54], [53, 56], [69, 170]], "missing_branches": [[25, 26], [69, 71], [89, 90], [89, 92], [101, 102], [101, 107], [110, 111], [110, 116], [117, 119], [117, 124], [147, 149], [147, 161]], "functions": {"get_current_user": {"executed_lines": [40], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 39, "executed_branches": [], "missing_branches": []}, "require_login": {"executed_lines": [44, 45, 47, 48, 58], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 43, "executed_branches": [[44, 45], [44, 47]], "missing_branches": []}, "require_login.wrapper": {"executed_lines": [49, 50, 51, 53, 54, 56], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 48, "executed_branches": [[49, 50], [49, 53], [53, 54], [53, 56]], "missing_branches": []}, "get_gravatar_url": {"executed_lines": [63, 65, 66], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 61, "executed_branches": [], "missing_branches": []}, "login": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [74], "excluded_lines": [], "start_line": 72, "executed_branches": [], "missing_branches": []}, "oauth_login": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 2, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0.00"}, "missing_lines": [89, 90, 92, 93], "excluded_lines": [], "start_line": 87, "executed_branches": [], "missing_branches": [[89, 90], [89, 92]]}, "oauth_callback": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 21, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 21, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00", "num_branches": 6, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 6, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0.00"}, "missing_lines": [98, 99, 100, 101, 102, 107, 110, 111, 116, 117, 119, 120, 121, 124, 126, 129, 132, 133, 134, 135, 136], "excluded_lines": [], "start_line": 96, "executed_branches": [], "missing_branches": [[101, 102], [101, 107], [110, 111], [110, 116], [117, 119], [117, 124]]}, "auth": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 8, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 8, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 2, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0.00"}, "missing_lines": [143, 144, 145, 147, 149, 158, 159, 161], "excluded_lines": [], "start_line": 141, "executed_branches": [], "missing_branches": [[147, 149], [147, 161]]}, "logout": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [166, 167], "excluded_lines": [], "start_line": 164, "executed_branches": [], "missing_branches": []}, "whoami": {"executed_lines": [174, 175], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 172, "executed_branches": [], "missing_branches": []}, "private_page": {"executed_lines": [182, 183], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 180, "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [1, 2, 3, 4, 6, 7, 8, 9, 11, 13, 15, 18, 19, 22, 23, 25, 36, 39, 43, 61, 69, 170, 171, 172, 178, 179, 180], "summary": {"covered_lines": 27, "num_statements": 40, "percent_covered": 65.9090909090909, "percent_covered_display": "65.91", "missing_lines": 13, "excluded_lines": 0, "percent_statements_covered": 67.5, "percent_statements_covered_display": "67.50", "num_branches": 4, "num_partial_branches": 2, "covered_branches": 2, "missing_branches": 2, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50.00"}, "missing_lines": [26, 33, 34, 71, 72, 86, 87, 95, 96, 140, 141, 163, 164], "excluded_lines": [], "start_line": 1, "executed_branches": [[25, 36], [69, 170]], "missing_branches": [[25, 26], [69, 71]]}}, "classes": {"": {"executed_lines": [1, 2, 3, 4, 6, 7, 8, 9, 11, 13, 15, 18, 19, 22, 23, 25, 36, 39, 40, 43, 44, 45, 47, 48, 49, 50, 51, 53, 54, 56, 58, 61, 63, 65, 66, 69, 170, 171, 172, 174, 175, 178, 179, 180, 182, 183], "summary": {"covered_lines": 46, "num_statements": 95, "percent_covered": 46.95652173913044, "percent_covered_display": "46.96", "missing_lines": 49, "excluded_lines": 0, "percent_statements_covered": 48.421052631578945, "percent_statements_covered_display": "48.42", "num_branches": 20, "num_partial_branches": 2, "covered_branches": 8, "missing_branches": 12, "percent_branches_covered": 40.0, "percent_branches_covered_display": "40.00"}, "missing_lines": [26, 33, 34, 71, 72, 74, 86, 87, 89, 90, 92, 93, 95, 96, 98, 99, 100, 101, 102, 107, 110, 111, 116, 117, 119, 120, 121, 124, 126, 129, 132, 133, 134, 135, 136, 140, 141, 143, 144, 145, 147, 149, 158, 159, 161, 163, 164, 166, 167], "excluded_lines": [], "start_line": 1, "executed_branches": [[25, 36], [44, 45], [44, 47], [49, 50], [49, 53], [53, 54], [53, 56], [69, 170]], "missing_branches": [[25, 26], [69, 71], [89, 90], [89, 92], [101, 102], [101, 107], [110, 111], [110, 116], [117, 119], [117, 124], [147, 149], [147, 161]]}}}, "app/celery_app.py": {"executed_lines": [3, 4, 6, 8, 16, 19, 20, 25, 26, 30, 31, 33, 35], "summary": {"covered_lines": 13, "num_statements": 16, "percent_covered": 77.77777777777777, "percent_covered_display": "77.78", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 81.25, "percent_statements_covered_display": "81.25", "num_branches": 2, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 1, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50.00"}, "missing_lines": [42, 43, 45], "excluded_lines": [], "executed_branches": [[30, 31]], "missing_branches": [[30, -25]], "functions": {"task_failure_handler": {"executed_lines": [30, 31, 33, 35], "summary": {"covered_lines": 4, "num_statements": 7, "percent_covered": 55.55555555555556, "percent_covered_display": "55.56", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 57.142857142857146, "percent_statements_covered_display": "57.14", "num_branches": 2, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 1, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50.00"}, "missing_lines": [42, 43, 45], "excluded_lines": [], "start_line": 26, "executed_branches": [[30, 31]], "missing_branches": [[30, -25]]}, "": {"executed_lines": [3, 4, 6, 8, 16, 19, 20, 25, 26], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [3, 4, 6, 8, 16, 19, 20, 25, 26, 30, 31, 33, 35], "summary": {"covered_lines": 13, "num_statements": 16, "percent_covered": 77.77777777777777, "percent_covered_display": "77.78", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 81.25, "percent_statements_covered_display": "81.25", "num_branches": 2, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 1, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50.00"}, "missing_lines": [42, 43, 45], "excluded_lines": [], "start_line": 1, "executed_branches": [[30, 31]], "missing_branches": [[30, -25]]}}}, "app/celery_worker.py": {"executed_lines": [3, 6, 9, 10, 11, 12, 13, 14, 15, 16, 19, 20, 21, 22, 23, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 38, 43, 44, 49], "summary": {"covered_lines": 30, "num_statements": 33, "percent_covered": 90.9090909090909, "percent_covered_display": "90.91", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 90.9090909090909, "percent_statements_covered_display": "90.91", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [45, 51, 92], "excluded_lines": [], "executed_branches": [], "missing_branches": [], "functions": {"test_task": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [45], "excluded_lines": [], "start_line": 44, "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [3, 6, 9, 10, 11, 12, 13, 14, 15, 16, 19, 20, 21, 22, 23, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 38, 43, 44, 49], "summary": {"covered_lines": 30, "num_statements": 32, "percent_covered": 93.75, "percent_covered_display": "93.75", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 93.75, "percent_statements_covered_display": "93.75", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [51, 92], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [3, 6, 9, 10, 11, 12, 13, 14, 15, 16, 19, 20, 21, 22, 23, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 38, 43, 44, 49], "summary": {"covered_lines": 30, "num_statements": 33, "percent_covered": 90.9090909090909, "percent_covered_display": "90.91", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 90.9090909090909, "percent_statements_covered_display": "90.91", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [45, 51, 92], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}}, "app/config.py": {"executed_lines": [3, 4, 6, 7, 10, 11, 12, 13, 14, 15, 16, 17, 20, 21, 22, 23, 26, 27, 28, 29, 32, 33, 34, 38, 40, 41, 42, 43, 44, 47, 48, 49, 50, 51, 54, 55, 56, 57, 60, 61, 62, 63, 64, 65, 66, 69, 70, 71, 72, 73, 74, 75, 78, 79, 80, 83, 84, 85, 86, 89, 90, 91, 92, 93, 96, 97, 98, 99, 100, 101, 102, 105, 106, 107, 108, 109, 110, 111, 114, 117, 118, 119, 120, 121, 122, 123, 126, 127, 128, 129, 130, 133, 134, 135, 136, 137, 138, 139, 142, 143, 146, 149, 152, 155, 160, 163, 164, 167, 168, 169, 174, 178, 187, 194, 203, 214, 220, 223, 229, 230, 239, 240, 245, 251, 255, 259, 263, 268, 269, 271, 272, 273, 277, 279, 280, 282, 283, 284, 285, 286, 289, 290, 292, 293, 294, 297, 298, 299, 300, 306, 307, 309, 310, 311, 314, 315, 316, 317, 320, 322, 323, 326, 327, 328, 331, 332, 333, 334, 337, 339, 340, 342, 343, 344, 345, 350, 351, 355, 356, 374], "summary": {"covered_lines": 180, "num_statements": 195, "percent_covered": 86.8995633187773, "percent_covered_display": "86.90", "missing_lines": 15, "excluded_lines": 0, "percent_statements_covered": 92.3076923076923, "percent_statements_covered_display": "92.31", "num_branches": 34, "num_partial_branches": 3, "covered_branches": 19, "missing_branches": 15, "percent_branches_covered": 55.88235294117647, "percent_branches_covered_display": "55.88"}, "missing_lines": [274, 275, 276, 303, 348, 358, 359, 362, 363, 366, 367, 368, 369, 370, 371], "excluded_lines": [], "executed_branches": [[271, 272], [271, 277], [272, 273], [282, 283], [282, 284], [284, 285], [284, 286], [293, 294], [293, 297], [298, 299], [310, 311], [310, 314], [315, 316], [315, 320], [327, 328], [327, 331], [332, 333], [332, 337], [343, 344]], "missing_branches": [[272, 274], [274, 275], [274, 276], [298, 303], [343, 348], [358, 359], [358, 366], [359, 362], [359, 363], [366, 367], [366, 371], [367, 368], [367, 369], [369, 370], [369, 371]], "functions": {"Settings.parse_notification_urls": {"executed_lines": [271, 272, 273, 277], "summary": {"covered_lines": 4, "num_statements": 7, "percent_covered": 53.84615384615385, "percent_covered_display": "53.85", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 57.142857142857146, "percent_statements_covered_display": "57.14", "num_branches": 6, "num_partial_branches": 1, "covered_branches": 3, "missing_branches": 3, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50.00"}, "missing_lines": [274, 275, 276], "excluded_lines": [], "start_line": 269, "executed_branches": [[271, 272], [271, 277], [272, 273]], "missing_branches": [[272, 274], [274, 275], [274, 276]]}, "Settings.validate_session_secret": {"executed_lines": [282, 283, 284, 285, 286], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 280, "executed_branches": [[282, 283], [282, 284], [284, 285], [284, 286]], "missing_branches": []}, "Settings.build_date": {"executed_lines": [292, 293, 294, 297, 298, 299, 300], "summary": {"covered_lines": 7, "num_statements": 8, "percent_covered": 83.33333333333333, "percent_covered_display": "83.33", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 87.5, "percent_statements_covered_display": "87.50", "num_branches": 4, "num_partial_branches": 1, "covered_branches": 3, "missing_branches": 1, "percent_branches_covered": 75.0, "percent_branches_covered_display": "75.00"}, "missing_lines": [303], "excluded_lines": [], "start_line": 290, "executed_branches": [[293, 294], [293, 297], [298, 299]], "missing_branches": [[298, 303]]}, "Settings.version": {"executed_lines": [309, 310, 311, 314, 315, 316, 317, 320], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 307, "executed_branches": [[310, 311], [310, 314], [315, 316], [315, 320]], "missing_branches": []}, "Settings.git_sha": {"executed_lines": [326, 327, 328, 331, 332, 333, 334, 337], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 323, "executed_branches": [[327, 328], [327, 331], [332, 333], [332, 337]], "missing_branches": []}, "Settings.runtime_info": {"executed_lines": [342, 343, 344, 345], "summary": {"covered_lines": 4, "num_statements": 5, "percent_covered": 71.42857142857143, "percent_covered_display": "71.43", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 80.0, "percent_statements_covered_display": "80.00", "num_branches": 2, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 1, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50.00"}, "missing_lines": [348], "excluded_lines": [], "start_line": 340, "executed_branches": [[343, 344]], "missing_branches": [[343, 348]]}, "Settings.Config.parse_env_var": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 10, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 10, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00", "num_branches": 10, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 10, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0.00"}, "missing_lines": [358, 359, 362, 363, 366, 367, 368, 369, 370, 371], "excluded_lines": [], "start_line": 356, "executed_branches": [], "missing_branches": [[358, 359], [358, 366], [359, 362], [359, 363], [366, 367], [366, 371], [367, 368], [367, 369], [369, 370], [369, 371]]}, "": {"executed_lines": [3, 4, 6, 7, 10, 11, 12, 13, 14, 15, 16, 17, 20, 21, 22, 23, 26, 27, 28, 29, 32, 33, 34, 38, 40, 41, 42, 43, 44, 47, 48, 49, 50, 51, 54, 55, 56, 57, 60, 61, 62, 63, 64, 65, 66, 69, 70, 71, 72, 73, 74, 75, 78, 79, 80, 83, 84, 85, 86, 89, 90, 91, 92, 93, 96, 97, 98, 99, 100, 101, 102, 105, 106, 107, 108, 109, 110, 111, 114, 117, 118, 119, 120, 121, 122, 123, 126, 127, 128, 129, 130, 133, 134, 135, 136, 137, 138, 139, 142, 143, 146, 149, 152, 155, 160, 163, 164, 167, 168, 169, 174, 178, 187, 194, 203, 214, 220, 223, 229, 230, 239, 240, 245, 251, 255, 259, 263, 268, 269, 279, 280, 289, 290, 306, 307, 322, 323, 339, 340, 350, 351, 355, 356, 374], "summary": {"covered_lines": 144, "num_statements": 144, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"Settings": {"executed_lines": [271, 272, 273, 277, 282, 283, 284, 285, 286, 292, 293, 294, 297, 298, 299, 300, 309, 310, 311, 314, 315, 316, 317, 320, 326, 327, 328, 331, 332, 333, 334, 337, 342, 343, 344, 345], "summary": {"covered_lines": 36, "num_statements": 41, "percent_covered": 84.61538461538461, "percent_covered_display": "84.62", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 87.8048780487805, "percent_statements_covered_display": "87.80", "num_branches": 24, "num_partial_branches": 3, "covered_branches": 19, "missing_branches": 5, "percent_branches_covered": 79.16666666666667, "percent_branches_covered_display": "79.17"}, "missing_lines": [274, 275, 276, 303, 348], "excluded_lines": [], "start_line": 10, "executed_branches": [[271, 272], [271, 277], [272, 273], [282, 283], [282, 284], [284, 285], [284, 286], [293, 294], [293, 297], [298, 299], [310, 311], [310, 314], [315, 316], [315, 320], [327, 328], [327, 331], [332, 333], [332, 337], [343, 344]], "missing_branches": [[272, 274], [274, 275], [274, 276], [298, 303], [343, 348]]}, "Settings.Config": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 10, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 10, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00", "num_branches": 10, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 10, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0.00"}, "missing_lines": [358, 359, 362, 363, 366, 367, 368, 369, 370, 371], "excluded_lines": [], "start_line": 350, "executed_branches": [], "missing_branches": [[358, 359], [358, 366], [359, 362], [359, 363], [366, 367], [366, 371], [367, 368], [367, 369], [369, 370], [369, 371]]}, "": {"executed_lines": [3, 4, 6, 7, 10, 11, 12, 13, 14, 15, 16, 17, 20, 21, 22, 23, 26, 27, 28, 29, 32, 33, 34, 38, 40, 41, 42, 43, 44, 47, 48, 49, 50, 51, 54, 55, 56, 57, 60, 61, 62, 63, 64, 65, 66, 69, 70, 71, 72, 73, 74, 75, 78, 79, 80, 83, 84, 85, 86, 89, 90, 91, 92, 93, 96, 97, 98, 99, 100, 101, 102, 105, 106, 107, 108, 109, 110, 111, 114, 117, 118, 119, 120, 121, 122, 123, 126, 127, 128, 129, 130, 133, 134, 135, 136, 137, 138, 139, 142, 143, 146, 149, 152, 155, 160, 163, 164, 167, 168, 169, 174, 178, 187, 194, 203, 214, 220, 223, 229, 230, 239, 240, 245, 251, 255, 259, 263, 268, 269, 279, 280, 289, 290, 306, 307, 322, 323, 339, 340, 350, 351, 355, 356, 374], "summary": {"covered_lines": 144, "num_statements": 144, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}}, "app/database.py": {"executed_lines": [3, 4, 6, 7, 8, 9, 11, 13, 15, 18, 19, 20, 23, 30, 31, 33, 35, 37, 38, 39, 40, 43, 44, 45, 48, 49, 50, 53, 59, 64, 66, 69, 70, 71, 72, 73, 74, 75, 78, 79, 80, 86, 93, 99, 106, 107, 108, 111, 121, 126, 127, 128, 130], "summary": {"covered_lines": 53, "num_statements": 79, "percent_covered": 65.71428571428571, "percent_covered_display": "65.71", "missing_lines": 26, "excluded_lines": 0, "percent_statements_covered": 67.0886075949367, "percent_statements_covered_display": "67.09", "num_branches": 26, "num_partial_branches": 8, "covered_branches": 16, "missing_branches": 10, "percent_branches_covered": 61.53846153846154, "percent_branches_covered_display": "61.54"}, "missing_lines": [54, 55, 56, 81, 82, 83, 84, 87, 88, 89, 90, 94, 95, 96, 97, 100, 101, 102, 103, 112, 113, 114, 115, 116, 117, 118], "excluded_lines": [], "executed_branches": [[31, 33], [31, 48], [35, 37], [35, 48], [38, 39], [43, 44], [69, 70], [71, 72], [71, 78], [78, -59], [78, 79], [80, 86], [86, 93], [93, 99], [99, 106], [111, -59]], "missing_branches": [[38, 43], [43, 48], [69, 78], [80, 81], [86, 87], [93, 94], [99, 100], [111, 112], [114, 115], [114, 116]], "functions": {"init_db": {"executed_lines": [30, 31, 33, 35, 37, 38, 39, 40, 43, 44, 45, 48, 49, 50, 53], "summary": {"covered_lines": 15, "num_statements": 18, "percent_covered": 80.76923076923077, "percent_covered_display": "80.77", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 83.33333333333333, "percent_statements_covered_display": "83.33", "num_branches": 8, "num_partial_branches": 2, "covered_branches": 6, "missing_branches": 2, "percent_branches_covered": 75.0, "percent_branches_covered_display": "75.00"}, "missing_lines": [54, 55, 56], "excluded_lines": [], "start_line": 23, "executed_branches": [[31, 33], [31, 48], [35, 37], [35, 48], [38, 39], [43, 44]], "missing_branches": [[38, 43], [43, 48]]}, "_run_schema_migrations": {"executed_lines": [64, 66, 69, 70, 71, 72, 73, 74, 75, 78, 79, 80, 86, 93, 99, 106, 107, 108, 111], "summary": {"covered_lines": 19, "num_statements": 42, "percent_covered": 48.333333333333336, "percent_covered_display": "48.33", "missing_lines": 23, "excluded_lines": 0, "percent_statements_covered": 45.23809523809524, "percent_statements_covered_display": "45.24", "num_branches": 18, "num_partial_branches": 6, "covered_branches": 10, "missing_branches": 8, "percent_branches_covered": 55.55555555555556, "percent_branches_covered_display": "55.56"}, "missing_lines": [81, 82, 83, 84, 87, 88, 89, 90, 94, 95, 96, 97, 100, 101, 102, 103, 112, 113, 114, 115, 116, 117, 118], "excluded_lines": [], "start_line": 59, "executed_branches": [[69, 70], [71, 72], [71, 78], [78, -59], [78, 79], [80, 86], [86, 93], [93, 99], [99, 106], [111, -59]], "missing_branches": [[69, 78], [80, 81], [86, 87], [93, 94], [99, 100], [111, 112], [114, 115], [114, 116]]}, "get_db": {"executed_lines": [126, 127, 128, 130], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 121, "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [3, 4, 6, 7, 8, 9, 11, 13, 15, 18, 19, 20, 23, 59, 121], "summary": {"covered_lines": 15, "num_statements": 15, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [3, 4, 6, 7, 8, 9, 11, 13, 15, 18, 19, 20, 23, 30, 31, 33, 35, 37, 38, 39, 40, 43, 44, 45, 48, 49, 50, 53, 59, 64, 66, 69, 70, 71, 72, 73, 74, 75, 78, 79, 80, 86, 93, 99, 106, 107, 108, 111, 121, 126, 127, 128, 130], "summary": {"covered_lines": 53, "num_statements": 79, "percent_covered": 65.71428571428571, "percent_covered_display": "65.71", "missing_lines": 26, "excluded_lines": 0, "percent_statements_covered": 67.0886075949367, "percent_statements_covered_display": "67.09", "num_branches": 26, "num_partial_branches": 8, "covered_branches": 16, "missing_branches": 10, "percent_branches_covered": 61.53846153846154, "percent_branches_covered_display": "61.54"}, "missing_lines": [54, 55, 56, 81, 82, 83, 84, 87, 88, 89, 90, 94, 95, 96, 97, 100, 101, 102, 103, 112, 113, 114, 115, 116, 117, 118], "excluded_lines": [], "start_line": 1, "executed_branches": [[31, 33], [31, 48], [35, 37], [35, 48], [38, 39], [43, 44], [69, 70], [71, 72], [71, 78], [78, -59], [78, 79], [80, 86], [86, 93], [93, 99], [99, 106], [111, -59]], "missing_branches": [[38, 43], [43, 48], [69, 78], [80, 81], [86, 87], [93, 94], [99, 100], [111, 112], [114, 115], [114, 116]]}}}, "app/frontend.py": {"executed_lines": [7], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": [], "functions": {"": {"executed_lines": [7], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [7], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}}, "app/main.py": {"executed_lines": [2, 3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 17, 18, 19, 20, 21, 22, 23, 24, 27, 30, 33, 36, 41, 46, 47, 53, 56, 57, 59, 60, 61, 62, 66, 69, 71, 74, 77, 80, 81, 85, 88, 91, 94, 97, 100, 103, 106, 107, 108, 116, 119, 122, 125, 128, 129, 130, 136, 137, 143, 144, 147, 150, 151, 162, 163, 169, 170, 181, 182, 187, 188, 189, 190], "summary": {"covered_lines": 76, "num_statements": 85, "percent_covered": 85.56701030927834, "percent_covered_display": "85.57", "missing_lines": 9, "excluded_lines": 0, "percent_statements_covered": 89.41176470588235, "percent_statements_covered_display": "89.41", "num_branches": 12, "num_partial_branches": 5, "covered_branches": 7, "missing_branches": 5, "percent_branches_covered": 58.333333333333336, "percent_branches_covered_display": "58.33"}, "missing_lines": [37, 63, 64, 83, 132, 155, 175, 176, 183], "excluded_lines": [], "executed_branches": [[36, 41], [80, 81], [129, 130], [143, 144], [143, 147], [150, 151], [169, 170]], "missing_branches": [[36, 37], [80, 83], [129, 132], [150, 155], [169, 175]], "functions": {"lifespan": {"executed_lines": [53, 56, 57, 59, 60, 61, 62, 66, 69, 71, 74, 77, 80, 81, 85, 88, 91, 94, 97, 100], "summary": {"covered_lines": 20, "num_statements": 23, "percent_covered": 84.0, "percent_covered_display": "84.00", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 86.95652173913044, "percent_statements_covered_display": "86.96", "num_branches": 2, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 1, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50.00"}, "missing_lines": [63, 64, 83], "excluded_lines": [], "start_line": 47, "executed_branches": [[80, 81]], "missing_branches": [[80, 83]]}, "http_exception_handler": {"executed_lines": [143, 144, 147, 150, 151], "summary": {"covered_lines": 5, "num_statements": 6, "percent_covered": 80.0, "percent_covered_display": "80.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 83.33333333333333, "percent_statements_covered_display": "83.33", "num_branches": 4, "num_partial_branches": 1, "covered_branches": 3, "missing_branches": 1, "percent_branches_covered": 75.0, "percent_branches_covered_display": "75.00"}, "missing_lines": [155], "excluded_lines": [], "start_line": 137, "executed_branches": [[143, 144], [143, 147], [150, 151]], "missing_branches": [[150, 155]]}, "custom_500_handler": {"executed_lines": [169, 170], "summary": {"covered_lines": 2, "num_statements": 4, "percent_covered": 50.0, "percent_covered_display": "50.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 50.0, "percent_statements_covered_display": "50.00", "num_branches": 2, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 1, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50.00"}, "missing_lines": [175, 176], "excluded_lines": [], "start_line": 163, "executed_branches": [[169, 170]], "missing_branches": [[169, 175]]}, "test_500": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [183], "excluded_lines": [], "start_line": 182, "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [2, 3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 17, 18, 19, 20, 21, 22, 23, 24, 27, 30, 33, 36, 41, 46, 47, 103, 106, 107, 108, 116, 119, 122, 125, 128, 129, 130, 136, 137, 162, 163, 181, 182, 187, 188, 189, 190], "summary": {"covered_lines": 49, "num_statements": 51, "percent_covered": 92.72727272727273, "percent_covered_display": "92.73", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 96.07843137254902, "percent_statements_covered_display": "96.08", "num_branches": 4, "num_partial_branches": 2, "covered_branches": 2, "missing_branches": 2, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50.00"}, "missing_lines": [37, 132], "excluded_lines": [], "start_line": 1, "executed_branches": [[36, 41], [129, 130]], "missing_branches": [[36, 37], [129, 132]]}}, "classes": {"": {"executed_lines": [2, 3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 17, 18, 19, 20, 21, 22, 23, 24, 27, 30, 33, 36, 41, 46, 47, 53, 56, 57, 59, 60, 61, 62, 66, 69, 71, 74, 77, 80, 81, 85, 88, 91, 94, 97, 100, 103, 106, 107, 108, 116, 119, 122, 125, 128, 129, 130, 136, 137, 143, 144, 147, 150, 151, 162, 163, 169, 170, 181, 182, 187, 188, 189, 190], "summary": {"covered_lines": 76, "num_statements": 85, "percent_covered": 85.56701030927834, "percent_covered_display": "85.57", "missing_lines": 9, "excluded_lines": 0, "percent_statements_covered": 89.41176470588235, "percent_statements_covered_display": "89.41", "num_branches": 12, "num_partial_branches": 5, "covered_branches": 7, "missing_branches": 5, "percent_branches_covered": 58.333333333333336, "percent_branches_covered_display": "58.33"}, "missing_lines": [37, 63, 64, 83, 132, 155, 175, 176, 183], "excluded_lines": [], "start_line": 1, "executed_branches": [[36, 41], [80, 81], [129, 130], [143, 144], [143, 147], [150, 151], [169, 170]], "missing_branches": [[36, 37], [80, 83], [129, 132], [150, 155], [169, 175]]}}}, "app/middleware/__init__.py": {"executed_lines": [3, 5], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": [], "functions": {"": {"executed_lines": [3, 5], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [3, 5], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}}, "app/middleware/rate_limit.py": {"executed_lines": [19, 20, 22, 23, 24, 26, 29, 44, 45, 47, 48, 49, 50, 51, 54, 55, 56, 59, 70, 71, 73, 80, 82, 83, 85, 92, 100, 101, 104, 114], "summary": {"covered_lines": 30, "num_statements": 30, "percent_covered": 95.0, "percent_covered_display": "95.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 10, "num_partial_branches": 2, "covered_branches": 8, "missing_branches": 2, "percent_branches_covered": 80.0, "percent_branches_covered_display": "80.00"}, "missing_lines": [], "excluded_lines": [], "executed_branches": [[44, 45], [44, 54], [47, 48], [49, 50], [70, 71], [70, 80], [82, 83], [82, 85]], "missing_branches": [[47, 54], [49, 54]], "functions": {"get_identifier": {"executed_lines": [44, 45, 47, 48, 49, 50, 51, 54, 55, 56], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 87.5, "percent_covered_display": "87.50", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 6, "num_partial_branches": 2, "covered_branches": 4, "missing_branches": 2, "percent_branches_covered": 66.66666666666667, "percent_branches_covered_display": "66.67"}, "missing_lines": [], "excluded_lines": [], "start_line": 29, "executed_branches": [[44, 45], [44, 54], [47, 48], [49, 50]], "missing_branches": [[47, 54], [49, 54]]}, "create_limiter": {"executed_lines": [70, 71, 73, 80, 82, 83, 85, 92, 100, 101], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 59, "executed_branches": [[70, 71], [70, 80], [82, 83], [82, 85]], "missing_branches": []}, "get_rate_limit_exceeded_handler": {"executed_lines": [114], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 104, "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [19, 20, 22, 23, 24, 26, 29, 59, 104], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [19, 20, 22, 23, 24, 26, 29, 44, 45, 47, 48, 49, 50, 51, 54, 55, 56, 59, 70, 71, 73, 80, 82, 83, 85, 92, 100, 101, 104, 114], "summary": {"covered_lines": 30, "num_statements": 30, "percent_covered": 95.0, "percent_covered_display": "95.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 10, "num_partial_branches": 2, "covered_branches": 8, "missing_branches": 2, "percent_branches_covered": 80.0, "percent_branches_covered_display": "80.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [[44, 45], [44, 54], [47, 48], [49, 50], [70, 71], [70, 80], [82, 83], [82, 85]], "missing_branches": [[47, 54], [49, 54]]}}}, "app/middleware/rate_limit_decorators.py": {"executed_lines": [11, 14, 17, 18, 20, 21, 24, 41, 42, 44, 46, 49, 63, 64, 66, 68], "summary": {"covered_lines": 16, "num_statements": 16, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "executed_branches": [[17, 18], [17, 21]], "missing_branches": [], "functions": {"get_limiter": {"executed_lines": [17, 18, 20, 21], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 14, "executed_branches": [[17, 18], [17, 21]], "missing_branches": []}, "limit": {"executed_lines": [41, 46], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 24, "executed_branches": [], "missing_branches": []}, "limit.decorator": {"executed_lines": [42, 44], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 41, "executed_branches": [], "missing_branches": []}, "exempt": {"executed_lines": [63, 68], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 49, "executed_branches": [], "missing_branches": []}, "exempt.decorator": {"executed_lines": [64, 66], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 63, "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [11, 14, 24, 49], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [11, 14, 17, 18, 20, 21, 24, 41, 42, 44, 46, 49, 63, 64, 66, 68], "summary": {"covered_lines": 16, "num_statements": 16, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [[17, 18], [17, 21]], "missing_branches": []}}}, "app/middleware/security_headers.py": {"executed_lines": [14, 15, 17, 18, 20, 23, 36, 44, 45, 46, 48, 57, 59, 71, 74, 77, 79], "summary": {"covered_lines": 17, "num_statements": 35, "percent_covered": 40.42553191489362, "percent_covered_display": "40.43", "missing_lines": 18, "excluded_lines": 0, "percent_statements_covered": 48.57142857142857, "percent_statements_covered_display": "48.57", "num_branches": 12, "num_partial_branches": 2, "covered_branches": 2, "missing_branches": 10, "percent_branches_covered": 16.666666666666668, "percent_branches_covered_display": "16.67"}, "missing_lines": [49, 50, 75, 91, 92, 93, 94, 99, 100, 101, 102, 107, 108, 109, 110, 115, 116, 117], "excluded_lines": [], "executed_branches": [[48, 57], [74, 77]], "missing_branches": [[48, 49], [74, 75], [91, 92], [91, 99], [99, 100], [99, 107], [107, 108], [107, 115], [115, -79], [115, 116]], "functions": {"SecurityHeadersMiddleware.__init__": {"executed_lines": [44, 45, 46, 48, 57], "summary": {"covered_lines": 5, "num_statements": 7, "percent_covered": 66.66666666666667, "percent_covered_display": "66.67", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 71.42857142857143, "percent_statements_covered_display": "71.43", "num_branches": 2, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 1, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50.00"}, "missing_lines": [49, 50], "excluded_lines": [], "start_line": 36, "executed_branches": [[48, 57]], "missing_branches": [[48, 49]]}, "SecurityHeadersMiddleware.dispatch": {"executed_lines": [71, 74, 77], "summary": {"covered_lines": 3, "num_statements": 4, "percent_covered": 66.66666666666667, "percent_covered_display": "66.67", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 75.0, "percent_statements_covered_display": "75.00", "num_branches": 2, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 1, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50.00"}, "missing_lines": [75], "excluded_lines": [], "start_line": 59, "executed_branches": [[74, 77]], "missing_branches": [[74, 75]]}, "SecurityHeadersMiddleware._add_security_headers": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 15, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 15, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00", "num_branches": 8, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 8, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0.00"}, "missing_lines": [91, 92, 93, 94, 99, 100, 101, 102, 107, 108, 109, 110, 115, 116, 117], "excluded_lines": [], "start_line": 79, "executed_branches": [], "missing_branches": [[91, 92], [91, 99], [99, 100], [99, 107], [107, 108], [107, 115], [115, -79], [115, 116]]}, "": {"executed_lines": [14, 15, 17, 18, 20, 23, 36, 59, 79], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"SecurityHeadersMiddleware": {"executed_lines": [44, 45, 46, 48, 57, 71, 74, 77], "summary": {"covered_lines": 8, "num_statements": 26, "percent_covered": 26.31578947368421, "percent_covered_display": "26.32", "missing_lines": 18, "excluded_lines": 0, "percent_statements_covered": 30.76923076923077, "percent_statements_covered_display": "30.77", "num_branches": 12, "num_partial_branches": 2, "covered_branches": 2, "missing_branches": 10, "percent_branches_covered": 16.666666666666668, "percent_branches_covered_display": "16.67"}, "missing_lines": [49, 50, 75, 91, 92, 93, 94, 99, 100, 101, 102, 107, 108, 109, 110, 115, 116, 117], "excluded_lines": [], "start_line": 23, "executed_branches": [[48, 57], [74, 77]], "missing_branches": [[48, 49], [74, 75], [91, 92], [91, 99], [99, 100], [99, 107], [107, 108], [107, 115], [115, -79], [115, 116]]}, "": {"executed_lines": [14, 15, 17, 18, 20, 23, 36, 59, 79], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}}, "app/models.py": {"executed_lines": [3, 5, 8, 9, 11, 12, 13, 14, 15, 16, 19, 20, 22, 26, 29, 32, 36, 40, 43, 46, 50, 53, 56, 59, 65, 67, 68, 69, 70, 71, 72, 73, 74, 75, 77, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 92, 95, 97, 98, 99, 100, 101], "summary": {"covered_lines": 52, "num_statements": 52, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": [], "functions": {"": {"executed_lines": [3, 5, 8, 9, 11, 12, 13, 14, 15, 16, 19, 20, 22, 26, 29, 32, 36, 40, 43, 46, 50, 53, 56, 59, 65, 67, 68, 69, 70, 71, 72, 73, 74, 75, 77, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 92, 95, 97, 98, 99, 100, 101], "summary": {"covered_lines": 52, "num_statements": 52, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"DocumentMetadata": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 8, "executed_branches": [], "missing_branches": []}, "FileRecord": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 19, "executed_branches": [], "missing_branches": []}, "FileProcessingStep": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 59, "executed_branches": [], "missing_branches": []}, "ProcessingLog": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 80, "executed_branches": [], "missing_branches": []}, "ApplicationSettings": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 92, "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [3, 5, 8, 9, 11, 12, 13, 14, 15, 16, 19, 20, 22, 26, 29, 32, 36, 40, 43, 46, 50, 53, 56, 59, 65, 67, 68, 69, 70, 71, 72, 73, 74, 75, 77, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 92, 95, 97, 98, 99, 100, 101], "summary": {"covered_lines": 52, "num_statements": 52, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}}, "app/tasks/__init__.py": {"executed_lines": [2, 3], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": [], "functions": {"": {"executed_lines": [2, 3], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [2, 3], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}}, "app/tasks/check_credentials.py": {"executed_lines": [1, 2, 3, 4, 5, 6, 8, 9, 10, 11, 14, 15, 16, 19, 20, 24, 27, 28, 29, 30, 31, 32, 34, 35, 37, 38, 41, 44, 47, 49, 50, 51, 52, 57, 60, 62, 63, 64, 70, 72, 73, 74, 78, 81, 82, 83, 84, 85, 88, 90, 91, 92, 93, 94, 97, 99, 100, 101, 102, 103, 106, 108, 109, 110, 111, 112, 115, 117, 118, 119, 120, 121, 124, 125], "summary": {"covered_lines": 74, "num_statements": 134, "percent_covered": 54.32098765432099, "percent_covered_display": "54.32", "missing_lines": 60, "excluded_lines": 0, "percent_statements_covered": 55.223880597014926, "percent_statements_covered_display": "55.22", "num_branches": 28, "num_partial_branches": 0, "covered_branches": 14, "missing_branches": 14, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50.00"}, "missing_lines": [53, 54, 65, 66, 127, 130, 133, 136, 137, 140, 174, 175, 177, 178, 179, 182, 183, 184, 185, 187, 188, 190, 192, 195, 196, 199, 201, 202, 205, 206, 210, 211, 212, 213, 214, 219, 225, 227, 230, 231, 234, 235, 237, 239, 240, 241, 242, 245, 246, 249, 250, 251, 252, 255, 258, 261, 264, 265, 268, 273], "excluded_lines": [], "executed_branches": [[50, 51], [50, 57], [72, 73], [72, 74], [83, 84], [83, 85], [92, 93], [92, 94], [101, 102], [101, 103], [110, 111], [110, 112], [119, 120], [119, 121]], "missing_branches": [[177, 178], [177, 261], [182, 183], [182, 190], [201, 202], [201, 227], [210, 211], [210, 219], [230, 231], [230, 235], [235, 177], [235, 237], [249, 250], [249, 255]], "functions": {"MockRequest.__init__": {"executed_lines": [28, 29, 30, 31, 32], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 27, "executed_branches": [], "missing_branches": []}, "MockRequest.json": {"executed_lines": [35], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 34, "executed_branches": [], "missing_branches": []}, "MockRequest.form": {"executed_lines": [38], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 37, "executed_branches": [], "missing_branches": []}, "get_failure_state": {"executed_lines": [49, 50, 51, 52, 57], "summary": {"covered_lines": 5, "num_statements": 7, "percent_covered": 77.77777777777777, "percent_covered_display": "77.78", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 71.42857142857143, "percent_statements_covered_display": "71.43", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [53, 54], "excluded_lines": [], "start_line": 47, "executed_branches": [[50, 51], [50, 57]], "missing_branches": []}, "save_failure_state": {"executed_lines": [62, 63, 64], "summary": {"covered_lines": 3, "num_statements": 5, "percent_covered": 60.0, "percent_covered_display": "60.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 60.0, "percent_statements_covered_display": "60.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [65, 66], "excluded_lines": [], "start_line": 60, "executed_branches": [], "missing_branches": []}, "unwrap_decorated_function": {"executed_lines": [72, 73, 74], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 70, "executed_branches": [[72, 73], [72, 74]], "missing_branches": []}, "sync_test_openai_connection": {"executed_lines": [81, 82, 83, 84, 85], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 78, "executed_branches": [[83, 84], [83, 85]], "missing_branches": []}, "sync_test_azure_connection": {"executed_lines": [90, 91, 92, 93, 94], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 88, "executed_branches": [[92, 93], [92, 94]], "missing_branches": []}, "sync_test_dropbox_token": {"executed_lines": [99, 100, 101, 102, 103], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 97, "executed_branches": [[101, 102], [101, 103]], "missing_branches": []}, "sync_test_google_drive_token": {"executed_lines": [108, 109, 110, 111, 112], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 106, "executed_branches": [[110, 111], [110, 112]], "missing_branches": []}, "sync_test_onedrive_token": {"executed_lines": [117, 118, 119, 120, 121], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 115, "executed_branches": [[119, 120], [119, 121]], "missing_branches": []}, "check_credentials": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 56, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 56, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00", "num_branches": 14, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 14, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0.00"}, "missing_lines": [127, 130, 133, 136, 137, 140, 174, 175, 177, 178, 179, 182, 183, 184, 185, 187, 188, 190, 192, 195, 196, 199, 201, 202, 205, 206, 210, 211, 212, 213, 214, 219, 225, 227, 230, 231, 234, 235, 237, 239, 240, 241, 242, 245, 246, 249, 250, 251, 252, 255, 258, 261, 264, 265, 268, 273], "excluded_lines": [], "start_line": 125, "executed_branches": [], "missing_branches": [[177, 178], [177, 261], [182, 183], [182, 190], [201, 202], [201, 227], [210, 211], [210, 219], [230, 231], [230, 235], [235, 177], [235, 237], [249, 250], [249, 255]]}, "": {"executed_lines": [1, 2, 3, 4, 5, 6, 8, 9, 10, 11, 14, 15, 16, 19, 20, 24, 27, 34, 37, 41, 44, 47, 60, 70, 78, 88, 97, 106, 115, 124, 125], "summary": {"covered_lines": 31, "num_statements": 31, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"MockRequest": {"executed_lines": [28, 29, 30, 31, 32, 35, 38], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 24, "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [1, 2, 3, 4, 5, 6, 8, 9, 10, 11, 14, 15, 16, 19, 20, 24, 27, 34, 37, 41, 44, 47, 49, 50, 51, 52, 57, 60, 62, 63, 64, 70, 72, 73, 74, 78, 81, 82, 83, 84, 85, 88, 90, 91, 92, 93, 94, 97, 99, 100, 101, 102, 103, 106, 108, 109, 110, 111, 112, 115, 117, 118, 119, 120, 121, 124, 125], "summary": {"covered_lines": 67, "num_statements": 127, "percent_covered": 52.25806451612903, "percent_covered_display": "52.26", "missing_lines": 60, "excluded_lines": 0, "percent_statements_covered": 52.75590551181102, "percent_statements_covered_display": "52.76", "num_branches": 28, "num_partial_branches": 0, "covered_branches": 14, "missing_branches": 14, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50.00"}, "missing_lines": [53, 54, 65, 66, 127, 130, 133, 136, 137, 140, 174, 175, 177, 178, 179, 182, 183, 184, 185, 187, 188, 190, 192, 195, 196, 199, 201, 202, 205, 206, 210, 211, 212, 213, 214, 219, 225, 227, 230, 231, 234, 235, 237, 239, 240, 241, 242, 245, 246, 249, 250, 251, 252, 255, 258, 261, 264, 265, 268, 273], "excluded_lines": [], "start_line": 1, "executed_branches": [[50, 51], [50, 57], [72, 73], [72, 74], [83, 84], [83, 85], [92, 93], [92, 94], [101, 102], [101, 103], [110, 111], [110, 112], [119, 120], [119, 121]], "missing_branches": [[177, 178], [177, 261], [182, 183], [182, 190], [201, 202], [201, 227], [210, 211], [210, 219], [230, 231], [230, 235], [235, 177], [235, 237], [249, 250], [249, 255]]}}}, "app/tasks/convert_to_pdf.py": {"executed_lines": [2, 3, 4, 5, 7, 8, 9, 10, 12, 13, 14, 16, 19, 29, 30, 31, 32, 33, 34, 36, 37, 38, 40, 43, 54, 55, 56, 58, 59, 60, 61, 63, 66, 78, 79, 80, 82, 83, 84, 85, 87, 88, 90, 91, 92, 93, 94, 95, 97, 98, 101, 104, 116, 117, 119, 120, 121, 123, 126, 127, 137, 138, 139, 141, 142, 143, 144, 145, 148, 149, 150, 151, 152, 163, 164, 165, 168, 169, 170, 173, 205, 207, 210, 217, 218, 221, 230, 231, 234, 237, 250, 252, 256, 257, 277, 278, 279, 281, 282, 287, 297, 298, 306, 311, 312, 313, 316, 318, 320, 321, 322, 324, 325, 326, 331, 333, 334, 335, 339, 341, 342, 347, 348, 349, 350, 351, 352, 353], "summary": {"covered_lines": 128, "num_statements": 136, "percent_covered": 90.55555555555556, "percent_covered_display": "90.56", "missing_lines": 8, "excluded_lines": 0, "percent_statements_covered": 94.11764705882354, "percent_statements_covered_display": "94.12", "num_branches": 44, "num_partial_branches": 9, "covered_branches": 35, "missing_branches": 9, "percent_branches_covered": 79.54545454545455, "percent_branches_covered_display": "79.55"}, "missing_lines": [99, 302, 303, 304, 307, 308, 309, 337], "excluded_lines": [], "executed_branches": [[31, 32], [37, 38], [37, 40], [55, 56], [55, 58], [58, 59], [58, 63], [60, 61], [79, 80], [79, 82], [82, 83], [82, 87], [84, 85], [87, 88], [87, 90], [92, 93], [98, 101], [116, 117], [116, 119], [120, 121], [120, 123], [142, 143], [142, 148], [151, 152], [151, 165], [210, 217], [210, 230], [230, 231], [230, 250], [250, 252], [297, 298], [306, 311], [318, 320], [318, 341], [331, 333]], "missing_branches": [[31, 36], [60, 63], [84, 87], [92, 97], [98, 99], [250, 302], [297, 306], [306, 307], [331, 337]], "functions": {"_detect_mime_type_from_magic": {"executed_lines": [29, 30, 31, 32, 33, 34, 36, 37, 38, 40], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 92.85714285714286, "percent_covered_display": "92.86", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 4, "num_partial_branches": 1, "covered_branches": 3, "missing_branches": 1, "percent_branches_covered": 75.0, "percent_branches_covered_display": "75.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 19, "executed_branches": [[31, 32], [37, 38], [37, 40]], "missing_branches": [[31, 36]]}, "_detect_mime_type": {"executed_lines": [54, 55, 56, 58, 59, 60, 61, 63], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 92.85714285714286, "percent_covered_display": "92.86", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 6, "num_partial_branches": 1, "covered_branches": 5, "missing_branches": 1, "percent_branches_covered": 83.33333333333333, "percent_branches_covered_display": "83.33"}, "missing_lines": [], "excluded_lines": [], "start_line": 43, "executed_branches": [[55, 56], [55, 58], [58, 59], [58, 63], [60, 61]], "missing_branches": [[60, 63]]}, "_detect_extension": {"executed_lines": [78, 79, 80, 82, 83, 84, 85, 87, 88, 90, 91, 92, 93, 94, 95, 97, 98, 101], "summary": {"covered_lines": 18, "num_statements": 19, "percent_covered": 87.09677419354838, "percent_covered_display": "87.10", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 94.73684210526316, "percent_statements_covered_display": "94.74", "num_branches": 12, "num_partial_branches": 3, "covered_branches": 9, "missing_branches": 3, "percent_branches_covered": 75.0, "percent_branches_covered_display": "75.00"}, "missing_lines": [99], "excluded_lines": [], "start_line": 66, "executed_branches": [[79, 80], [79, 82], [82, 83], [82, 87], [84, 85], [87, 88], [87, 90], [92, 93], [98, 101]], "missing_branches": [[84, 87], [92, 97], [98, 99]]}, "_build_filename": {"executed_lines": [116, 117, 119, 120, 121, 123], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 104, "executed_branches": [[116, 117], [116, 119], [120, 121], [120, 123]], "missing_branches": []}, "convert_to_pdf": {"executed_lines": [137, 138, 139, 141, 142, 143, 144, 145, 148, 149, 150, 151, 152, 163, 164, 165, 168, 169, 170, 173, 205, 207, 210, 217, 218, 221, 230, 231, 234, 237, 250, 252, 256, 257, 277, 278, 279, 281, 282, 287, 297, 298, 306, 311, 312, 313, 316, 318, 320, 321, 322, 324, 325, 326, 331, 333, 334, 335, 339, 341, 342, 347, 348, 349, 350, 351, 352, 353], "summary": {"covered_lines": 68, "num_statements": 75, "percent_covered": 88.17204301075269, "percent_covered_display": "88.17", "missing_lines": 7, "excluded_lines": 0, "percent_statements_covered": 90.66666666666667, "percent_statements_covered_display": "90.67", "num_branches": 18, "num_partial_branches": 4, "covered_branches": 14, "missing_branches": 4, "percent_branches_covered": 77.77777777777777, "percent_branches_covered_display": "77.78"}, "missing_lines": [302, 303, 304, 307, 308, 309, 337], "excluded_lines": [], "start_line": 127, "executed_branches": [[142, 143], [142, 148], [151, 152], [151, 165], [210, 217], [210, 230], [230, 231], [230, 250], [250, 252], [297, 298], [306, 311], [318, 320], [318, 341], [331, 333]], "missing_branches": [[250, 302], [297, 306], [306, 307], [331, 337]]}, "": {"executed_lines": [2, 3, 4, 5, 7, 8, 9, 10, 12, 13, 14, 16, 19, 43, 66, 104, 126, 127], "summary": {"covered_lines": 18, "num_statements": 18, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [2, 3, 4, 5, 7, 8, 9, 10, 12, 13, 14, 16, 19, 29, 30, 31, 32, 33, 34, 36, 37, 38, 40, 43, 54, 55, 56, 58, 59, 60, 61, 63, 66, 78, 79, 80, 82, 83, 84, 85, 87, 88, 90, 91, 92, 93, 94, 95, 97, 98, 101, 104, 116, 117, 119, 120, 121, 123, 126, 127, 137, 138, 139, 141, 142, 143, 144, 145, 148, 149, 150, 151, 152, 163, 164, 165, 168, 169, 170, 173, 205, 207, 210, 217, 218, 221, 230, 231, 234, 237, 250, 252, 256, 257, 277, 278, 279, 281, 282, 287, 297, 298, 306, 311, 312, 313, 316, 318, 320, 321, 322, 324, 325, 326, 331, 333, 334, 335, 339, 341, 342, 347, 348, 349, 350, 351, 352, 353], "summary": {"covered_lines": 128, "num_statements": 136, "percent_covered": 90.55555555555556, "percent_covered_display": "90.56", "missing_lines": 8, "excluded_lines": 0, "percent_statements_covered": 94.11764705882354, "percent_statements_covered_display": "94.12", "num_branches": 44, "num_partial_branches": 9, "covered_branches": 35, "missing_branches": 9, "percent_branches_covered": 79.54545454545455, "percent_branches_covered_display": "79.55"}, "missing_lines": [99, 302, 303, 304, 307, 308, 309, 337], "excluded_lines": [], "start_line": 1, "executed_branches": [[31, 32], [37, 38], [37, 40], [55, 56], [55, 58], [58, 59], [58, 63], [60, 61], [79, 80], [79, 82], [82, 83], [82, 87], [84, 85], [87, 88], [87, 90], [92, 93], [98, 101], [116, 117], [116, 119], [120, 121], [120, 123], [142, 143], [142, 148], [151, 152], [151, 165], [210, 217], [210, 230], [230, 231], [230, 250], [250, 252], [297, 298], [306, 311], [318, 320], [318, 341], [331, 333]], "missing_branches": [[31, 36], [60, 63], [84, 87], [92, 97], [98, 99], [250, 302], [297, 306], [306, 307], [331, 337]]}}}, "app/tasks/embed_metadata_into_pdf.py": {"executed_lines": [3, 4, 5, 6, 7, 8, 10, 13, 14, 15, 16, 17, 18, 19, 20, 22, 29, 30, 33, 50, 51, 54, 55, 56, 57, 58, 60, 61, 62, 65, 66, 80, 81, 82, 91, 98, 119, 121, 122, 123, 124, 127, 129, 130, 131, 134, 135, 136, 139, 143, 153, 154, 156, 157, 161, 163, 165, 167, 168, 170, 172, 173, 181, 183, 185, 190, 191, 192, 193, 194, 195, 197, 198, 199, 203, 204, 205, 250, 251, 252, 264, 265, 266, 267, 270], "summary": {"covered_lines": 85, "num_statements": 117, "percent_covered": 68.79432624113475, "percent_covered_display": "68.79", "missing_lines": 32, "excluded_lines": 0, "percent_statements_covered": 72.64957264957265, "percent_statements_covered_display": "72.65", "num_branches": 24, "num_partial_branches": 6, "covered_branches": 12, "missing_branches": 12, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50.00"}, "missing_lines": [92, 93, 94, 95, 99, 100, 101, 103, 104, 116, 140, 184, 208, 209, 214, 215, 229, 233, 234, 235, 236, 239, 240, 241, 242, 243, 244, 245, 246, 248, 268, 269], "excluded_lines": [], "executed_branches": [[55, 56], [55, 57], [57, 58], [57, 60], [91, 98], [98, 119], [139, 143], [183, 185], [192, 193], [194, 195], [264, 265], [264, 270]], "missing_branches": [[91, 92], [94, 95], [94, 98], [98, 99], [100, 101], [100, 103], [139, 140], [183, 184], [192, 203], [194, 203], [239, 240], [239, 248]], "functions": {"persist_metadata": {"executed_lines": [50, 51, 54, 55, 56, 57, 58, 60, 61, 62], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 33, "executed_branches": [[55, 56], [55, 57], [57, 58], [57, 60]], "missing_branches": []}, "embed_metadata_into_pdf": {"executed_lines": [80, 81, 82, 91, 98, 119, 121, 122, 123, 124, 127, 129, 130, 131, 134, 135, 136, 139, 143, 153, 154, 156, 157, 161, 163, 165, 167, 168, 170, 172, 173, 181, 183, 185, 190, 191, 192, 193, 194, 195, 197, 198, 199, 203, 204, 205, 250, 251, 252, 264, 265, 266, 267, 270], "summary": {"covered_lines": 54, "num_statements": 86, "percent_covered": 58.490566037735846, "percent_covered_display": "58.49", "missing_lines": 32, "excluded_lines": 0, "percent_statements_covered": 62.7906976744186, "percent_statements_covered_display": "62.79", "num_branches": 20, "num_partial_branches": 6, "covered_branches": 8, "missing_branches": 12, "percent_branches_covered": 40.0, "percent_branches_covered_display": "40.00"}, "missing_lines": [92, 93, 94, 95, 99, 100, 101, 103, 104, 116, 140, 184, 208, 209, 214, 215, 229, 233, 234, 235, 236, 239, 240, 241, 242, 243, 244, 245, 246, 248, 268, 269], "excluded_lines": [], "start_line": 66, "executed_branches": [[91, 98], [98, 119], [139, 143], [183, 185], [192, 193], [194, 195], [264, 265], [264, 270]], "missing_branches": [[91, 92], [94, 95], [94, 98], [98, 99], [100, 101], [100, 103], [139, 140], [183, 184], [192, 203], [194, 203], [239, 240], [239, 248]]}, "": {"executed_lines": [3, 4, 5, 6, 7, 8, 10, 13, 14, 15, 16, 17, 18, 19, 20, 22, 29, 30, 33, 65, 66], "summary": {"covered_lines": 21, "num_statements": 21, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [3, 4, 5, 6, 7, 8, 10, 13, 14, 15, 16, 17, 18, 19, 20, 22, 29, 30, 33, 50, 51, 54, 55, 56, 57, 58, 60, 61, 62, 65, 66, 80, 81, 82, 91, 98, 119, 121, 122, 123, 124, 127, 129, 130, 131, 134, 135, 136, 139, 143, 153, 154, 156, 157, 161, 163, 165, 167, 168, 170, 172, 173, 181, 183, 185, 190, 191, 192, 193, 194, 195, 197, 198, 199, 203, 204, 205, 250, 251, 252, 264, 265, 266, 267, 270], "summary": {"covered_lines": 85, "num_statements": 117, "percent_covered": 68.79432624113475, "percent_covered_display": "68.79", "missing_lines": 32, "excluded_lines": 0, "percent_statements_covered": 72.64957264957265, "percent_statements_covered_display": "72.65", "num_branches": 24, "num_partial_branches": 6, "covered_branches": 12, "missing_branches": 12, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50.00"}, "missing_lines": [92, 93, 94, 95, 99, 100, 101, 103, 104, 116, 140, 184, 208, 209, 214, 215, 229, 233, 234, 235, 236, 239, 240, 241, 242, 243, 244, 245, 246, 248, 268, 269], "excluded_lines": [], "start_line": 1, "executed_branches": [[55, 56], [55, 57], [57, 58], [57, 60], [91, 98], [98, 119], [139, 143], [183, 185], [192, 193], [194, 195], [264, 265], [264, 270]], "missing_branches": [[91, 92], [94, 95], [94, 98], [98, 99], [100, 101], [100, 103], [139, 140], [183, 184], [192, 203], [194, 203], [239, 240], [239, 248]]}}}, "app/tasks/extract_metadata_with_gpt.py": {"executed_lines": [3, 4, 5, 6, 8, 11, 12, 13, 14, 15, 16, 17, 19, 22, 23, 24, 30, 36, 37, 38, 39, 41, 42, 43, 44, 45, 48, 49], "summary": {"covered_lines": 28, "num_statements": 71, "percent_covered": 36.7816091954023, "percent_covered_display": "36.78", "missing_lines": 43, "excluded_lines": 0, "percent_statements_covered": 39.436619718309856, "percent_statements_covered_display": "39.44", "num_branches": 16, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 12, "percent_branches_covered": 25.0, "percent_branches_covered_display": "25.00"}, "missing_lines": [25, 26, 27, 51, 52, 53, 58, 59, 60, 61, 62, 63, 64, 65, 67, 100, 101, 102, 103, 112, 113, 114, 123, 124, 125, 126, 134, 136, 141, 142, 149, 150, 152, 154, 155, 166, 167, 170, 172, 174, 175, 176, 184], "excluded_lines": [], "executed_branches": [[38, 39], [38, 41], [43, 44], [43, 45]], "missing_branches": [[58, 59], [58, 67], [61, 62], [61, 67], [64, 65], [64, 67], [124, 125], [124, 136], [142, 149], [142, 154], [149, 150], [149, 154]], "functions": {"extract_json_from_text": {"executed_lines": [36, 37, 38, 39, 41, 42, 43, 44, 45], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 30, "executed_branches": [[38, 39], [38, 41], [43, 44], [43, 45]], "missing_branches": []}, "extract_metadata_with_gpt": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 40, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 40, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00", "num_branches": 12, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 12, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0.00"}, "missing_lines": [51, 52, 53, 58, 59, 60, 61, 62, 63, 64, 65, 67, 100, 101, 102, 103, 112, 113, 114, 123, 124, 125, 126, 134, 136, 141, 142, 149, 150, 152, 154, 155, 166, 167, 170, 172, 174, 175, 176, 184], "excluded_lines": [], "start_line": 49, "executed_branches": [], "missing_branches": [[58, 59], [58, 67], [61, 62], [61, 67], [64, 65], [64, 67], [124, 125], [124, 136], [142, 149], [142, 154], [149, 150], [149, 154]]}, "": {"executed_lines": [3, 4, 5, 6, 8, 11, 12, 13, 14, 15, 16, 17, 19, 22, 23, 24, 30, 48, 49], "summary": {"covered_lines": 19, "num_statements": 22, "percent_covered": 86.36363636363636, "percent_covered_display": "86.36", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 86.36363636363636, "percent_statements_covered_display": "86.36", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [25, 26, 27], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [3, 4, 5, 6, 8, 11, 12, 13, 14, 15, 16, 17, 19, 22, 23, 24, 30, 36, 37, 38, 39, 41, 42, 43, 44, 45, 48, 49], "summary": {"covered_lines": 28, "num_statements": 71, "percent_covered": 36.7816091954023, "percent_covered_display": "36.78", "missing_lines": 43, "excluded_lines": 0, "percent_statements_covered": 39.436619718309856, "percent_statements_covered_display": "39.44", "num_branches": 16, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 12, "percent_branches_covered": 25.0, "percent_branches_covered_display": "25.00"}, "missing_lines": [25, 26, 27, 51, 52, 53, 58, 59, 60, 61, 62, 63, 64, 65, 67, 100, 101, 102, 103, 112, 113, 114, 123, 124, 125, 126, 134, 136, 141, 142, 149, 150, 152, 154, 155, 166, 167, 170, 172, 174, 175, 176, 184], "excluded_lines": [], "start_line": 1, "executed_branches": [[38, 39], [38, 41], [43, 44], [43, 45]], "missing_branches": [[58, 59], [58, 67], [61, 62], [61, 67], [64, 65], [64, 67], [124, 125], [124, 136], [142, 149], [142, 154], [149, 150], [149, 154]]}}}, "app/tasks/finalize_document_storage.py": {"executed_lines": [3, 4, 7, 8, 9, 10, 11, 14, 17, 20, 22, 25, 26], "summary": {"covered_lines": 13, "num_statements": 42, "percent_covered": 26.0, "percent_covered_display": "26.00", "missing_lines": 29, "excluded_lines": 0, "percent_statements_covered": 30.952380952380953, "percent_statements_covered_display": "30.95", "num_branches": 8, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 8, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0.00"}, "missing_lines": [32, 33, 36, 45, 46, 48, 49, 50, 51, 55, 56, 57, 59, 60, 62, 63, 64, 65, 66, 70, 71, 77, 82, 84, 85, 87, 90, 91, 93], "excluded_lines": [], "executed_branches": [], "missing_branches": [[45, 46], [45, 55], [50, 51], [50, 55], [59, 60], [59, 70], [60, 59], [60, 62]], "functions": {"finalize_document_storage": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 29, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 29, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00", "num_branches": 8, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 8, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0.00"}, "missing_lines": [32, 33, 36, 45, 46, 48, 49, 50, 51, 55, 56, 57, 59, 60, 62, 63, 64, 65, 66, 70, 71, 77, 82, 84, 85, 87, 90, 91, 93], "excluded_lines": [], "start_line": 26, "executed_branches": [], "missing_branches": [[45, 46], [45, 55], [50, 51], [50, 55], [59, 60], [59, 70], [60, 59], [60, 62]]}, "": {"executed_lines": [3, 4, 7, 8, 9, 10, 11, 14, 17, 20, 22, 25, 26], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [3, 4, 7, 8, 9, 10, 11, 14, 17, 20, 22, 25, 26], "summary": {"covered_lines": 13, "num_statements": 42, "percent_covered": 26.0, "percent_covered_display": "26.00", "missing_lines": 29, "excluded_lines": 0, "percent_statements_covered": 30.952380952380953, "percent_statements_covered_display": "30.95", "num_branches": 8, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 8, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0.00"}, "missing_lines": [32, 33, 36, 45, 46, 48, 49, 50, 51, 55, 56, 57, 59, 60, 62, 63, 64, 65, 66, 70, 71, 77, 82, 84, 85, 87, 90, 91, 93], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": [[45, 46], [45, 55], [50, 51], [50, 55], [59, 60], [59, 70], [60, 59], [60, 62]]}}}, "app/tasks/imap_tasks.py": {"executed_lines": [2, 3, 4, 5, 6, 7, 8, 10, 11, 13, 14, 15, 17, 20, 22, 23, 26, 29, 40, 46, 48, 49, 50, 51, 52, 53, 57, 60, 62, 63, 66, 68, 69, 70, 71, 72, 73, 74, 75, 78, 79, 120, 130, 131, 132, 134, 135, 146, 244, 271, 285, 286, 287, 288, 290, 291, 292, 295, 297, 299, 300, 301, 303, 304, 305, 308, 309, 310, 311, 313, 314, 316, 317, 320, 325, 327, 330, 331, 332, 333, 334, 335, 336, 337, 340, 342, 343, 344, 345, 346, 349, 351, 352, 353, 354, 355, 358, 364, 371, 372, 373, 374, 376, 377, 381, 384, 386, 387, 388, 389, 390, 393, 398, 399, 400, 402, 403, 404, 405, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416], "summary": {"covered_lines": 129, "num_statements": 215, "percent_covered": 57.491289198606275, "percent_covered_display": "57.49", "missing_lines": 86, "excluded_lines": 0, "percent_statements_covered": 60.0, "percent_statements_covered_display": "60.00", "num_branches": 72, "num_partial_branches": 6, "covered_branches": 36, "missing_branches": 36, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50.00"}, "missing_lines": [31, 32, 33, 34, 35, 36, 37, 42, 43, 54, 55, 56, 85, 86, 87, 89, 90, 93, 104, 114, 117, 157, 158, 160, 161, 162, 164, 165, 167, 168, 169, 170, 172, 173, 175, 176, 179, 180, 181, 183, 184, 185, 186, 187, 189, 190, 192, 193, 194, 195, 196, 198, 199, 200, 202, 203, 204, 206, 207, 208, 211, 212, 213, 214, 218, 220, 221, 222, 224, 225, 227, 228, 229, 231, 233, 234, 236, 237, 238, 240, 241, 328, 378, 379, 380, 406], "excluded_lines": [], "executed_branches": [[48, 49], [48, 57], [70, 71], [70, 75], [73, 70], [73, 74], [130, 131], [130, 134], [286, 287], [286, 317], [287, 288], [287, 290], [291, 292], [291, 295], [299, 300], [299, 303], [308, 309], [308, 311], [311, 313], [327, 330], [331, 332], [333, 334], [333, 337], [371, 372], [371, 376], [373, 371], [373, 374], [377, 381], [387, 388], [387, 390], [405, 407], [408, 409], [408, 414], [410, 411], [414, 403], [414, 415]], "missing_branches": [[32, 33], [32, 36], [85, 86], [85, 89], [165, 167], [165, 179], [168, 169], [168, 172], [183, 184], [183, 189], [192, 193], [192, 233], [194, 195], [194, 198], [202, 203], [202, 206], [206, 207], [206, 211], [211, 212], [211, 218], [212, 213], [212, 218], [220, 221], [220, 224], [227, 228], [227, 231], [233, 234], [233, 236], [311, 316], [327, 328], [331, 337], [377, 378], [379, 380], [379, 381], [405, 406], [410, 414]], "functions": {"acquire_lock": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 7, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 7, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 2, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0.00"}, "missing_lines": [31, 32, 33, 34, 35, 36, 37], "excluded_lines": [], "start_line": 29, "executed_branches": [], "missing_branches": [[32, 33], [32, 36]]}, "release_lock": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [42, 43], "excluded_lines": [], "start_line": 40, "executed_branches": [], "missing_branches": []}, "load_processed_emails": {"executed_lines": [48, 49, 50, 51, 52, 53, 57], "summary": {"covered_lines": 7, "num_statements": 10, "percent_covered": 75.0, "percent_covered_display": "75.00", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 70.0, "percent_statements_covered_display": "70.00", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [54, 55, 56], "excluded_lines": [], "start_line": 46, "executed_branches": [[48, 49], [48, 57]], "missing_branches": []}, "save_processed_emails": {"executed_lines": [62, 63], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 60, "executed_branches": [], "missing_branches": []}, "cleanup_old_entries": {"executed_lines": [68, 69, 70, 71, 72, 73, 74, 75], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 66, "executed_branches": [[70, 71], [70, 75], [73, 70], [73, 74]], "missing_branches": []}, "pull_all_inboxes": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 9, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 9, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 2, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0.00"}, "missing_lines": [85, 86, 87, 89, 90, 93, 104, 114, 117], "excluded_lines": [], "start_line": 79, "executed_branches": [], "missing_branches": [[85, 86], [85, 89]]}, "check_and_pull_mailbox": {"executed_lines": [130, 131, 132, 134, 135], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 120, "executed_branches": [[130, 131], [130, 134]], "missing_branches": []}, "pull_inbox": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 60, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 60, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00", "num_branches": 24, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 24, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0.00"}, "missing_lines": [157, 158, 160, 161, 162, 164, 165, 167, 168, 169, 170, 172, 173, 175, 176, 179, 180, 181, 183, 184, 185, 186, 187, 189, 190, 192, 193, 194, 195, 196, 198, 199, 200, 202, 203, 204, 206, 207, 208, 211, 212, 213, 214, 218, 220, 221, 222, 224, 225, 227, 228, 229, 231, 233, 234, 236, 237, 238, 240, 241], "excluded_lines": [], "start_line": 146, "executed_branches": [], "missing_branches": [[165, 167], [165, 179], [168, 169], [168, 172], [183, 184], [183, 189], [192, 193], [192, 233], [194, 195], [194, 198], [202, 203], [202, 206], [206, 207], [206, 211], [211, 212], [211, 218], [212, 213], [212, 218], [220, 221], [220, 224], [227, 228], [227, 231], [233, 234], [233, 236]]}, "fetch_attachments_and_enqueue": {"executed_lines": [271, 285, 286, 287, 288, 290, 291, 292, 295, 297, 299, 300, 301, 303, 304, 305, 308, 309, 310, 311, 313, 314, 316, 317], "summary": {"covered_lines": 24, "num_statements": 24, "percent_covered": 97.22222222222223, "percent_covered_display": "97.22", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 12, "num_partial_branches": 1, "covered_branches": 11, "missing_branches": 1, "percent_branches_covered": 91.66666666666667, "percent_branches_covered_display": "91.67"}, "missing_lines": [], "excluded_lines": [], "start_line": 244, "executed_branches": [[286, 287], [286, 317], [287, 288], [287, 290], [291, 292], [291, 295], [299, 300], [299, 303], [308, 309], [308, 311], [311, 313]], "missing_branches": [[311, 316]]}, "email_already_has_label": {"executed_lines": [325, 327, 330, 331, 332, 333, 334, 335, 336, 337], "summary": {"covered_lines": 10, "num_statements": 11, "percent_covered": 82.3529411764706, "percent_covered_display": "82.35", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 90.9090909090909, "percent_statements_covered_display": "90.91", "num_branches": 6, "num_partial_branches": 2, "covered_branches": 4, "missing_branches": 2, "percent_branches_covered": 66.66666666666667, "percent_branches_covered_display": "66.67"}, "missing_lines": [328], "excluded_lines": [], "start_line": 320, "executed_branches": [[327, 330], [331, 332], [333, 334], [333, 337]], "missing_branches": [[327, 328], [331, 337]]}, "mark_as_processed_with_star": {"executed_lines": [342, 343, 344, 345, 346], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 340, "executed_branches": [], "missing_branches": []}, "mark_as_processed_with_label": {"executed_lines": [351, 352, 353, 354, 355], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 349, "executed_branches": [], "missing_branches": []}, "find_all_mail_folder": {"executed_lines": [364, 371, 372, 373, 374, 376, 377, 381], "summary": {"covered_lines": 8, "num_statements": 11, "percent_covered": 68.42105263157895, "percent_covered_display": "68.42", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 72.72727272727273, "percent_statements_covered_display": "72.73", "num_branches": 8, "num_partial_branches": 1, "covered_branches": 5, "missing_branches": 3, "percent_branches_covered": 62.5, "percent_branches_covered_display": "62.50"}, "missing_lines": [378, 379, 380], "excluded_lines": [], "start_line": 358, "executed_branches": [[371, 372], [371, 376], [373, 371], [373, 374], [377, 381]], "missing_branches": [[377, 378], [379, 380], [379, 381]]}, "get_capabilities": {"executed_lines": [386, 387, 388, 389, 390], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 384, "executed_branches": [[387, 388], [387, 390]], "missing_branches": []}, "find_all_mail_xlist": {"executed_lines": [398, 399, 400, 402, 403, 404, 405, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416], "summary": {"covered_lines": 17, "num_statements": 18, "percent_covered": 88.46153846153847, "percent_covered_display": "88.46", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 94.44444444444444, "percent_statements_covered_display": "94.44", "num_branches": 8, "num_partial_branches": 2, "covered_branches": 6, "missing_branches": 2, "percent_branches_covered": 75.0, "percent_branches_covered_display": "75.00"}, "missing_lines": [406], "excluded_lines": [], "start_line": 393, "executed_branches": [[405, 407], [408, 409], [408, 414], [410, 411], [414, 403], [414, 415]], "missing_branches": [[405, 406], [410, 414]]}, "": {"executed_lines": [2, 3, 4, 5, 6, 7, 8, 10, 11, 13, 14, 15, 17, 20, 22, 23, 26, 29, 40, 46, 60, 66, 78, 79, 120, 146, 244, 320, 340, 349, 358, 384, 393], "summary": {"covered_lines": 33, "num_statements": 33, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [2, 3, 4, 5, 6, 7, 8, 10, 11, 13, 14, 15, 17, 20, 22, 23, 26, 29, 40, 46, 48, 49, 50, 51, 52, 53, 57, 60, 62, 63, 66, 68, 69, 70, 71, 72, 73, 74, 75, 78, 79, 120, 130, 131, 132, 134, 135, 146, 244, 271, 285, 286, 287, 288, 290, 291, 292, 295, 297, 299, 300, 301, 303, 304, 305, 308, 309, 310, 311, 313, 314, 316, 317, 320, 325, 327, 330, 331, 332, 333, 334, 335, 336, 337, 340, 342, 343, 344, 345, 346, 349, 351, 352, 353, 354, 355, 358, 364, 371, 372, 373, 374, 376, 377, 381, 384, 386, 387, 388, 389, 390, 393, 398, 399, 400, 402, 403, 404, 405, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416], "summary": {"covered_lines": 129, "num_statements": 215, "percent_covered": 57.491289198606275, "percent_covered_display": "57.49", "missing_lines": 86, "excluded_lines": 0, "percent_statements_covered": 60.0, "percent_statements_covered_display": "60.00", "num_branches": 72, "num_partial_branches": 6, "covered_branches": 36, "missing_branches": 36, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50.00"}, "missing_lines": [31, 32, 33, 34, 35, 36, 37, 42, 43, 54, 55, 56, 85, 86, 87, 89, 90, 93, 104, 114, 117, 157, 158, 160, 161, 162, 164, 165, 167, 168, 169, 170, 172, 173, 175, 176, 179, 180, 181, 183, 184, 185, 186, 187, 189, 190, 192, 193, 194, 195, 196, 198, 199, 200, 202, 203, 204, 206, 207, 208, 211, 212, 213, 214, 218, 220, 221, 222, 224, 225, 227, 228, 229, 231, 233, 234, 236, 237, 238, 240, 241, 328, 378, 379, 380, 406], "excluded_lines": [], "start_line": 1, "executed_branches": [[48, 49], [48, 57], [70, 71], [70, 75], [73, 70], [73, 74], [130, 131], [130, 134], [286, 287], [286, 317], [287, 288], [287, 290], [291, 292], [291, 295], [299, 300], [299, 303], [308, 309], [308, 311], [311, 313], [327, 330], [331, 332], [333, 334], [333, 337], [371, 372], [371, 376], [373, 371], [373, 374], [377, 381], [387, 388], [387, 390], [405, 407], [408, 409], [408, 414], [410, 411], [414, 403], [414, 415]], "missing_branches": [[32, 33], [32, 36], [85, 86], [85, 89], [165, 167], [165, 179], [168, 169], [168, 172], [183, 184], [183, 189], [192, 193], [192, 233], [194, 195], [194, 198], [202, 203], [202, 206], [206, 207], [206, 211], [211, 212], [211, 218], [212, 213], [212, 218], [220, 221], [220, 224], [227, 228], [227, 231], [233, 234], [233, 236], [311, 316], [327, 328], [331, 337], [377, 378], [379, 380], [379, 381], [405, 406], [410, 414]]}}}, "app/tasks/monitor_stalled_steps.py": {"executed_lines": [8, 9, 11, 12, 13, 15, 18, 19, 34, 35, 36, 38, 39, 45, 47, 49, 50, 51], "summary": {"covered_lines": 18, "num_statements": 18, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "executed_branches": [[38, 39], [38, 45]], "missing_branches": [], "functions": {"monitor_stalled_steps": {"executed_lines": [34, 35, 36, 38, 39, 45, 47, 49, 50, 51], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 19, "executed_branches": [[38, 39], [38, 45]], "missing_branches": []}, "": {"executed_lines": [8, 9, 11, 12, 13, 15, 18, 19], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [8, 9, 11, 12, 13, 15, 18, 19, 34, 35, 36, 38, 39, 45, 47, 49, 50, 51], "summary": {"covered_lines": 18, "num_statements": 18, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [[38, 39], [38, 45]], "missing_branches": []}}}, "app/tasks/process_document.py": {"executed_lines": [3, 4, 5, 6, 7, 9, 10, 12, 13, 14, 15, 16, 17, 20, 21, 23, 26, 27, 51, 52, 53, 60, 72, 73, 74, 75, 81, 82, 83, 84, 85, 88, 91, 92, 100, 103, 104, 105, 106, 107, 108, 109, 110, 117, 121, 127, 128, 134, 135, 136, 145, 146, 147, 149, 150, 164, 177, 185, 186, 187, 193, 194, 202, 203, 204, 205, 206, 215, 216, 217, 221, 223, 224, 227, 228, 230, 231, 238, 239, 248, 251, 252, 261, 262, 263, 265, 266, 274, 275, 284, 285, 288, 292, 293, 294, 302, 309, 316, 317, 320, 321, 343, 344, 351, 352, 353, 354, 355, 356, 357, 358, 380, 381, 382, 391, 392, 399, 400, 401, 402, 403, 405, 406, 415, 424, 425, 432, 433, 440, 441, 450, 458, 465, 466], "summary": {"covered_lines": 134, "num_statements": 149, "percent_covered": 88.10810810810811, "percent_covered_display": "88.11", "missing_lines": 15, "excluded_lines": 0, "percent_statements_covered": 89.93288590604027, "percent_statements_covered_display": "89.93", "num_branches": 36, "num_partial_branches": 7, "covered_branches": 29, "missing_branches": 7, "percent_branches_covered": 80.55555555555556, "percent_branches_covered_display": "80.56"}, "missing_lines": [61, 62, 69, 77, 78, 86, 322, 323, 330, 337, 341, 359, 360, 361, 369], "excluded_lines": [], "executed_branches": [[60, 72], [72, 73], [81, 82], [81, 83], [85, 88], [91, 92], [103, 104], [103, 121], [105, 106], [105, 109], [127, 128], [127, 134], [134, 135], [134, 185], [149, 150], [186, 187], [221, 223], [221, 251], [292, 293], [292, 320], [321, 343], [355, 356], [355, 380], [356, 355], [356, 357], [380, 381], [380, 440], [402, 403], [402, 405]], "missing_branches": [[60, 61], [72, 77], [85, 86], [91, 100], [149, 164], [186, 193], [321, 322]], "functions": {"process_document": {"executed_lines": [51, 52, 53, 60, 72, 73, 74, 75, 81, 82, 83, 84, 85, 88, 91, 92, 100, 103, 104, 105, 106, 107, 108, 109, 110, 117, 121, 127, 128, 134, 135, 136, 145, 146, 147, 149, 150, 164, 177, 185, 186, 187, 193, 194, 202, 203, 204, 205, 206, 215, 216, 217, 221, 223, 224, 227, 228, 230, 231, 238, 239, 248, 251, 252, 261, 262, 263, 265, 266, 274, 275, 284, 285, 288, 292, 293, 294, 302, 309, 316, 317, 320, 321, 343, 344, 351, 352, 353, 354, 355, 356, 357, 358, 380, 381, 382, 391, 392, 399, 400, 401, 402, 403, 405, 406, 415, 424, 425, 432, 433, 440, 441, 450, 458, 465, 466], "summary": {"covered_lines": 116, "num_statements": 131, "percent_covered": 86.82634730538922, "percent_covered_display": "86.83", "missing_lines": 15, "excluded_lines": 0, "percent_statements_covered": 88.54961832061069, "percent_statements_covered_display": "88.55", "num_branches": 36, "num_partial_branches": 7, "covered_branches": 29, "missing_branches": 7, "percent_branches_covered": 80.55555555555556, "percent_branches_covered_display": "80.56"}, "missing_lines": [61, 62, 69, 77, 78, 86, 322, 323, 330, 337, 341, 359, 360, 361, 369], "excluded_lines": [], "start_line": 27, "executed_branches": [[60, 72], [72, 73], [81, 82], [81, 83], [85, 88], [91, 92], [103, 104], [103, 121], [105, 106], [105, 109], [127, 128], [127, 134], [134, 135], [134, 185], [149, 150], [186, 187], [221, 223], [221, 251], [292, 293], [292, 320], [321, 343], [355, 356], [355, 380], [356, 355], [356, 357], [380, 381], [380, 440], [402, 403], [402, 405]], "missing_branches": [[60, 61], [72, 77], [85, 86], [91, 100], [149, 164], [186, 193], [321, 322]]}, "": {"executed_lines": [3, 4, 5, 6, 7, 9, 10, 12, 13, 14, 15, 16, 17, 20, 21, 23, 26, 27], "summary": {"covered_lines": 18, "num_statements": 18, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [3, 4, 5, 6, 7, 9, 10, 12, 13, 14, 15, 16, 17, 20, 21, 23, 26, 27, 51, 52, 53, 60, 72, 73, 74, 75, 81, 82, 83, 84, 85, 88, 91, 92, 100, 103, 104, 105, 106, 107, 108, 109, 110, 117, 121, 127, 128, 134, 135, 136, 145, 146, 147, 149, 150, 164, 177, 185, 186, 187, 193, 194, 202, 203, 204, 205, 206, 215, 216, 217, 221, 223, 224, 227, 228, 230, 231, 238, 239, 248, 251, 252, 261, 262, 263, 265, 266, 274, 275, 284, 285, 288, 292, 293, 294, 302, 309, 316, 317, 320, 321, 343, 344, 351, 352, 353, 354, 355, 356, 357, 358, 380, 381, 382, 391, 392, 399, 400, 401, 402, 403, 405, 406, 415, 424, 425, 432, 433, 440, 441, 450, 458, 465, 466], "summary": {"covered_lines": 134, "num_statements": 149, "percent_covered": 88.10810810810811, "percent_covered_display": "88.11", "missing_lines": 15, "excluded_lines": 0, "percent_statements_covered": 89.93288590604027, "percent_statements_covered_display": "89.93", "num_branches": 36, "num_partial_branches": 7, "covered_branches": 29, "missing_branches": 7, "percent_branches_covered": 80.55555555555556, "percent_branches_covered_display": "80.56"}, "missing_lines": [61, 62, 69, 77, 78, 86, 322, 323, 330, 337, 341, 359, 360, 361, 369], "excluded_lines": [], "start_line": 1, "executed_branches": [[60, 72], [72, 73], [81, 82], [81, 83], [85, 88], [91, 92], [103, 104], [103, 121], [105, 106], [105, 109], [127, 128], [127, 134], [134, 135], [134, 185], [149, 150], [186, 187], [221, 223], [221, 251], [292, 293], [292, 320], [321, 343], [355, 356], [355, 380], [356, 355], [356, 357], [380, 381], [380, 440], [402, 403], [402, 405]], "missing_branches": [[60, 61], [72, 77], [85, 86], [91, 100], [149, 164], [186, 193], [321, 322]]}}}, "app/tasks/process_with_azure_document_intelligence.py": {"executed_lines": [1, 2, 4, 5, 6, 7, 8, 10, 11, 12, 13, 14, 16, 19, 20, 23, 32, 38, 40, 41, 42, 43, 44, 45, 46, 49, 61, 62, 63, 65, 66, 67, 69, 70, 71, 72, 73, 75, 77, 79, 81, 84, 85, 102, 103, 110, 111, 112, 113, 116, 117, 118, 121, 122, 130, 134, 135, 136, 137, 138, 139, 147, 148, 149, 153, 161, 162, 171, 172, 175, 176, 179, 182, 183, 184, 185, 186, 189, 190, 192, 202, 204, 213, 214, 215, 216, 224], "summary": {"covered_lines": 87, "num_statements": 93, "percent_covered": 93.69369369369369, "percent_covered_display": "93.69", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 93.54838709677419, "percent_statements_covered_display": "93.55", "num_branches": 18, "num_partial_branches": 1, "covered_branches": 17, "missing_branches": 1, "percent_branches_covered": 94.44444444444444, "percent_branches_covered_display": "94.44"}, "missing_lines": [24, 25, 26, 27, 28, 29], "excluded_lines": [], "executed_branches": [[65, 66], [65, 69], [69, 70], [69, 81], [70, 71], [70, 79], [72, 73], [72, 77], [112, 113], [112, 116], [117, 118], [117, 134], [134, 135], [136, 137], [136, 148], [148, 149], [148, 153]], "missing_branches": [[134, 153]], "functions": {"get_pdf_page_count": {"executed_lines": [40, 41, 42, 43, 44, 45, 46], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 38, "executed_branches": [], "missing_branches": []}, "check_page_rotation": {"executed_lines": [61, 62, 63, 65, 66, 67, 69, 70, 71, 72, 73, 75, 77, 79, 81], "summary": {"covered_lines": 15, "num_statements": 15, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 8, "num_partial_branches": 0, "covered_branches": 8, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 49, "executed_branches": [[65, 66], [65, 69], [69, 70], [69, 81], [70, 71], [70, 79], [72, 73], [72, 77]], "missing_branches": []}, "process_with_azure_document_intelligence": {"executed_lines": [102, 103, 110, 111, 112, 113, 116, 117, 118, 121, 122, 130, 134, 135, 136, 137, 138, 139, 147, 148, 149, 153, 161, 162, 171, 172, 175, 176, 179, 182, 183, 184, 185, 186, 189, 190, 192, 202, 204, 213, 214, 215, 216, 224], "summary": {"covered_lines": 44, "num_statements": 44, "percent_covered": 98.14814814814815, "percent_covered_display": "98.15", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 10, "num_partial_branches": 1, "covered_branches": 9, "missing_branches": 1, "percent_branches_covered": 90.0, "percent_branches_covered_display": "90.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 85, "executed_branches": [[112, 113], [112, 116], [117, 118], [117, 134], [134, 135], [136, 137], [136, 148], [148, 149], [148, 153]], "missing_branches": [[134, 153]]}, "": {"executed_lines": [1, 2, 4, 5, 6, 7, 8, 10, 11, 12, 13, 14, 16, 19, 20, 23, 32, 38, 49, 84, 85], "summary": {"covered_lines": 21, "num_statements": 27, "percent_covered": 77.77777777777777, "percent_covered_display": "77.78", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 77.77777777777777, "percent_statements_covered_display": "77.78", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [24, 25, 26, 27, 28, 29], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [1, 2, 4, 5, 6, 7, 8, 10, 11, 12, 13, 14, 16, 19, 20, 23, 32, 38, 40, 41, 42, 43, 44, 45, 46, 49, 61, 62, 63, 65, 66, 67, 69, 70, 71, 72, 73, 75, 77, 79, 81, 84, 85, 102, 103, 110, 111, 112, 113, 116, 117, 118, 121, 122, 130, 134, 135, 136, 137, 138, 139, 147, 148, 149, 153, 161, 162, 171, 172, 175, 176, 179, 182, 183, 184, 185, 186, 189, 190, 192, 202, 204, 213, 214, 215, 216, 224], "summary": {"covered_lines": 87, "num_statements": 93, "percent_covered": 93.69369369369369, "percent_covered_display": "93.69", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 93.54838709677419, "percent_statements_covered_display": "93.55", "num_branches": 18, "num_partial_branches": 1, "covered_branches": 17, "missing_branches": 1, "percent_branches_covered": 94.44444444444444, "percent_branches_covered_display": "94.44"}, "missing_lines": [24, 25, 26, 27, 28, 29], "excluded_lines": [], "start_line": 1, "executed_branches": [[65, 66], [65, 69], [69, 70], [69, 81], [70, 71], [70, 79], [72, 73], [72, 77], [112, 113], [112, 116], [117, 118], [117, 134], [134, 135], [136, 137], [136, 148], [148, 149], [148, 153]], "missing_branches": [[134, 153]]}}}, "app/tasks/refine_text_with_gpt.py": {"executed_lines": [3, 5, 8, 9, 10, 11, 13, 16, 19, 20, 22, 23, 24, 26, 27, 29, 43, 45, 46, 55, 57, 59, 60, 62, 63, 64, 65, 72], "summary": {"covered_lines": 28, "num_statements": 28, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": [], "functions": {"refine_text_with_gpt": {"executed_lines": [22, 23, 24, 26, 27, 29, 43, 45, 46, 55, 57, 59, 60, 62, 63, 64, 65, 72], "summary": {"covered_lines": 18, "num_statements": 18, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 20, "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [3, 5, 8, 9, 10, 11, 13, 16, 19, 20], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [3, 5, 8, 9, 10, 11, 13, 16, 19, 20, 22, 23, 24, 26, 27, 29, 43, 45, 46, 55, 57, 59, 60, 62, 63, 64, 65, 72], "summary": {"covered_lines": 28, "num_statements": 28, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}}, "app/tasks/retry_config.py": {"executed_lines": [3, 6, 7, 8, 9], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": [], "functions": {"": {"executed_lines": [3, 6, 7, 8, 9], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"BaseTaskWithRetry": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 6, "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [3, 6, 7, 8, 9], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}}, "app/tasks/rotate_pdf_pages.py": {"executed_lines": [1, 2, 3, 5, 7, 8, 9, 10, 11, 13, 16, 27, 28, 32, 33, 36, 37, 39, 40, 41, 45, 47, 48, 49, 52, 53, 63, 64, 65, 72, 73, 74, 77, 78, 79, 86, 87, 90, 91, 92, 93, 97, 98, 101, 108, 109, 111, 112, 119, 122, 123, 124, 127, 128, 131, 132, 133, 135, 137, 138, 142, 149, 152, 153, 155, 156, 166, 168, 177, 184, 185, 186, 195, 196], "summary": {"covered_lines": 74, "num_statements": 79, "percent_covered": 91.2621359223301, "percent_covered_display": "91.26", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 93.67088607594937, "percent_statements_covered_display": "93.67", "num_branches": 24, "num_partial_branches": 4, "covered_branches": 20, "missing_branches": 4, "percent_branches_covered": 83.33333333333333, "percent_branches_covered_display": "83.33"}, "missing_lines": [29, 94, 95, 144, 160], "excluded_lines": [], "executed_branches": [[28, 32], [32, 33], [32, 36], [36, 37], [36, 45], [37, 36], [37, 39], [73, 74], [73, 77], [77, 78], [77, 90], [91, 92], [91, 97], [97, 98], [97, 111], [127, 128], [127, 152], [131, 132], [135, 137], [155, 156]], "missing_branches": [[28, 29], [131, 149], [135, 144], [155, 160]], "functions": {"determine_rotation_angle": {"executed_lines": [27, 28, 32, 33, 36, 37, 39, 40, 41, 45, 47, 48, 49], "summary": {"covered_lines": 13, "num_statements": 14, "percent_covered": 90.9090909090909, "percent_covered_display": "90.91", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 92.85714285714286, "percent_statements_covered_display": "92.86", "num_branches": 8, "num_partial_branches": 1, "covered_branches": 7, "missing_branches": 1, "percent_branches_covered": 87.5, "percent_branches_covered_display": "87.50"}, "missing_lines": [29], "excluded_lines": [], "start_line": 16, "executed_branches": [[28, 32], [32, 33], [32, 36], [36, 37], [36, 45], [37, 36], [37, 39]], "missing_branches": [[28, 29]]}, "rotate_pdf_pages": {"executed_lines": [63, 64, 65, 72, 73, 74, 77, 78, 79, 86, 87, 90, 91, 92, 93, 97, 98, 101, 108, 109, 111, 112, 119, 122, 123, 124, 127, 128, 131, 132, 133, 135, 137, 138, 142, 149, 152, 153, 155, 156, 166, 168, 177, 184, 185, 186, 195, 196], "summary": {"covered_lines": 48, "num_statements": 52, "percent_covered": 89.70588235294117, "percent_covered_display": "89.71", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 92.3076923076923, "percent_statements_covered_display": "92.31", "num_branches": 16, "num_partial_branches": 3, "covered_branches": 13, "missing_branches": 3, "percent_branches_covered": 81.25, "percent_branches_covered_display": "81.25"}, "missing_lines": [94, 95, 144, 160], "excluded_lines": [], "start_line": 53, "executed_branches": [[73, 74], [73, 77], [77, 78], [77, 90], [91, 92], [91, 97], [97, 98], [97, 111], [127, 128], [127, 152], [131, 132], [135, 137], [155, 156]], "missing_branches": [[131, 149], [135, 144], [155, 160]]}, "": {"executed_lines": [1, 2, 3, 5, 7, 8, 9, 10, 11, 13, 16, 52, 53], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [1, 2, 3, 5, 7, 8, 9, 10, 11, 13, 16, 27, 28, 32, 33, 36, 37, 39, 40, 41, 45, 47, 48, 49, 52, 53, 63, 64, 65, 72, 73, 74, 77, 78, 79, 86, 87, 90, 91, 92, 93, 97, 98, 101, 108, 109, 111, 112, 119, 122, 123, 124, 127, 128, 131, 132, 133, 135, 137, 138, 142, 149, 152, 153, 155, 156, 166, 168, 177, 184, 185, 186, 195, 196], "summary": {"covered_lines": 74, "num_statements": 79, "percent_covered": 91.2621359223301, "percent_covered_display": "91.26", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 93.67088607594937, "percent_statements_covered_display": "93.67", "num_branches": 24, "num_partial_branches": 4, "covered_branches": 20, "missing_branches": 4, "percent_branches_covered": 83.33333333333333, "percent_branches_covered_display": "83.33"}, "missing_lines": [29, 94, 95, 144, 160], "excluded_lines": [], "start_line": 1, "executed_branches": [[28, 32], [32, 33], [32, 36], [36, 37], [36, 45], [37, 36], [37, 39], [73, 74], [73, 77], [77, 78], [77, 90], [91, 92], [91, 97], [97, 98], [97, 111], [127, 128], [127, 152], [131, 132], [135, 137], [155, 156]], "missing_branches": [[28, 29], [131, 149], [135, 144], [155, 160]]}}}, "app/tasks/send_to_all.py": {"executed_lines": [3, 4, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 24, 27, 28, 31, 32, 35, 36, 39, 41, 42, 53, 54, 57, 58, 61, 62, 65, 66, 71, 72, 75, 79, 108, 109, 119, 121, 126, 127, 136, 148, 151, 205, 206, 207, 208, 209, 215, 216, 217, 220, 221, 222, 223, 225, 226, 227, 233, 234, 235, 238, 239, 240, 241, 242, 245, 246, 247, 248, 250, 251, 253], "summary": {"covered_lines": 80, "num_statements": 102, "percent_covered": 73.77049180327869, "percent_covered_display": "73.77", "missing_lines": 22, "excluded_lines": 0, "percent_statements_covered": 78.43137254901961, "percent_statements_covered_display": "78.43", "num_branches": 20, "num_partial_branches": 4, "covered_branches": 10, "missing_branches": 10, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50.00"}, "missing_lines": [50, 76, 85, 87, 100, 101, 102, 103, 105, 122, 123, 124, 137, 140, 145, 146, 210, 211, 212, 228, 229, 230], "excluded_lines": [], "executed_branches": [[41, 42], [121, 126], [136, 148], [206, 207], [216, 217], [216, 250], [221, 222], [221, 225], [233, 216], [233, 234]], "missing_branches": [[41, 50], [101, 102], [101, 105], [102, 101], [102, 103], [121, 122], [136, 137], [145, 146], [145, 148], [206, 215]], "functions": {"_should_upload_to_dropbox": {"executed_lines": [28], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 27, "executed_branches": [], "missing_branches": []}, "_should_upload_to_nextcloud": {"executed_lines": [32], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 31, "executed_branches": [], "missing_branches": []}, "_should_upload_to_paperless": {"executed_lines": [36], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 35, "executed_branches": [], "missing_branches": []}, "_should_upload_to_google_drive": {"executed_lines": [41, 42], "summary": {"covered_lines": 2, "num_statements": 3, "percent_covered": 60.0, "percent_covered_display": "60.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 66.66666666666667, "percent_statements_covered_display": "66.67", "num_branches": 2, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 1, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50.00"}, "missing_lines": [50], "excluded_lines": [], "start_line": 39, "executed_branches": [[41, 42]], "missing_branches": [[41, 50]]}, "_should_upload_to_webdav": {"executed_lines": [54], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 53, "executed_branches": [], "missing_branches": []}, "_should_upload_to_ftp": {"executed_lines": [58], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 57, "executed_branches": [], "missing_branches": []}, "_should_upload_to_sftp": {"executed_lines": [62], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 61, "executed_branches": [], "missing_branches": []}, "_should_upload_to_email": {"executed_lines": [66], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 65, "executed_branches": [], "missing_branches": []}, "_should_upload_to_onedrive": {"executed_lines": [72], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 71, "executed_branches": [], "missing_branches": []}, "_should_upload_to_s3": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [76], "excluded_lines": [], "start_line": 75, "executed_branches": [], "missing_branches": []}, "get_configured_services_from_validator": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 7, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 7, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 4, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0.00"}, "missing_lines": [85, 87, 100, 101, 102, 103, 105], "excluded_lines": [], "start_line": 79, "executed_branches": [], "missing_branches": [[101, 102], [101, 105], [102, 101], [102, 103]]}, "send_to_all_destinations": {"executed_lines": [119, 121, 126, 127, 136, 148, 151, 205, 206, 207, 208, 209, 215, 216, 217, 220, 221, 222, 223, 225, 226, 227, 233, 234, 235, 238, 239, 240, 241, 242, 245, 246, 247, 248, 250, 251, 253], "summary": {"covered_lines": 37, "num_statements": 50, "percent_covered": 71.875, "percent_covered_display": "71.88", "missing_lines": 13, "excluded_lines": 0, "percent_statements_covered": 74.0, "percent_statements_covered_display": "74.00", "num_branches": 14, "num_partial_branches": 3, "covered_branches": 9, "missing_branches": 5, "percent_branches_covered": 64.28571428571429, "percent_branches_covered_display": "64.29"}, "missing_lines": [122, 123, 124, 137, 140, 145, 146, 210, 211, 212, 228, 229, 230], "excluded_lines": [], "start_line": 109, "executed_branches": [[121, 126], [136, 148], [206, 207], [216, 217], [216, 250], [221, 222], [221, 225], [233, 216], [233, 234]], "missing_branches": [[121, 122], [136, 137], [145, 146], [145, 148], [206, 215]]}, "": {"executed_lines": [3, 4, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 24, 27, 31, 35, 39, 53, 57, 61, 65, 71, 75, 79, 108, 109], "summary": {"covered_lines": 33, "num_statements": 33, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [3, 4, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 24, 27, 28, 31, 32, 35, 36, 39, 41, 42, 53, 54, 57, 58, 61, 62, 65, 66, 71, 72, 75, 79, 108, 109, 119, 121, 126, 127, 136, 148, 151, 205, 206, 207, 208, 209, 215, 216, 217, 220, 221, 222, 223, 225, 226, 227, 233, 234, 235, 238, 239, 240, 241, 242, 245, 246, 247, 248, 250, 251, 253], "summary": {"covered_lines": 80, "num_statements": 102, "percent_covered": 73.77049180327869, "percent_covered_display": "73.77", "missing_lines": 22, "excluded_lines": 0, "percent_statements_covered": 78.43137254901961, "percent_statements_covered_display": "78.43", "num_branches": 20, "num_partial_branches": 4, "covered_branches": 10, "missing_branches": 10, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50.00"}, "missing_lines": [50, 76, 85, 87, 100, 101, 102, 103, 105, 122, 123, 124, 137, 140, 145, 146, 210, 211, 212, 228, 229, 230], "excluded_lines": [], "start_line": 1, "executed_branches": [[41, 42], [121, 126], [136, 148], [206, 207], [216, 217], [216, 250], [221, 222], [221, 225], [233, 216], [233, 234]], "missing_branches": [[41, 50], [101, 102], [101, 105], [102, 101], [102, 103], [121, 122], [136, 137], [145, 146], [145, 148], [206, 215]]}}}, "app/tasks/upload_to_dropbox.py": {"executed_lines": [3, 4, 6, 7, 8, 10, 11, 12, 13, 14, 16, 19, 21, 23, 24, 26, 27, 29, 30, 32, 33, 34, 39, 43, 44, 65, 105, 106], "summary": {"covered_lines": 28, "num_statements": 119, "percent_covered": 22.448979591836736, "percent_covered_display": "22.45", "missing_lines": 91, "excluded_lines": 0, "percent_statements_covered": 23.529411764705884, "percent_statements_covered_display": "23.53", "num_branches": 28, "num_partial_branches": 5, "covered_branches": 5, "missing_branches": 23, "percent_branches_covered": 17.857142857142858, "percent_branches_covered_display": "17.86"}, "missing_lines": [36, 46, 47, 48, 55, 57, 58, 60, 61, 62, 76, 77, 78, 81, 82, 84, 85, 88, 89, 92, 93, 94, 96, 97, 98, 100, 101, 102, 114, 115, 116, 124, 125, 126, 127, 128, 131, 139, 140, 141, 143, 145, 147, 150, 151, 154, 155, 156, 157, 158, 159, 160, 161, 164, 165, 168, 171, 172, 173, 175, 176, 177, 178, 179, 182, 183, 186, 187, 189, 196, 197, 200, 201, 203, 204, 207, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223], "excluded_lines": [], "executed_branches": [[23, 24], [26, 27], [29, 30], [32, 33], [43, 44]], "missing_branches": [[23, 26], [26, 29], [29, 32], [32, 36], [43, 46], [57, 58], [57, 60], [81, 82], [81, 84], [84, 85], [84, 88], [124, 125], [124, 131], [131, 139], [131, 143], [159, 160], [159, 161], [176, 177], [176, 200], [186, 187], [186, 203], [187, 189], [187, 196]], "functions": {"_validate_dropbox_settings": {"executed_lines": [21, 23, 24, 26, 27, 29, 30, 32, 33, 34], "summary": {"covered_lines": 10, "num_statements": 11, "percent_covered": 73.6842105263158, "percent_covered_display": "73.68", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 90.9090909090909, "percent_statements_covered_display": "90.91", "num_branches": 8, "num_partial_branches": 4, "covered_branches": 4, "missing_branches": 4, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50.00"}, "missing_lines": [36], "excluded_lines": [], "start_line": 19, "executed_branches": [[23, 24], [26, 27], [29, 30], [32, 33]], "missing_branches": [[23, 26], [26, 29], [29, 32], [32, 36]]}, "get_dropbox_access_token": {"executed_lines": [43, 44], "summary": {"covered_lines": 2, "num_statements": 11, "percent_covered": 20.0, "percent_covered_display": "20.00", "missing_lines": 9, "excluded_lines": 0, "percent_statements_covered": 18.181818181818183, "percent_statements_covered_display": "18.18", "num_branches": 4, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 3, "percent_branches_covered": 25.0, "percent_branches_covered_display": "25.00"}, "missing_lines": [46, 47, 48, 55, 57, 58, 60, 61, 62], "excluded_lines": [], "start_line": 39, "executed_branches": [[43, 44]], "missing_branches": [[43, 46], [57, 58], [57, 60]]}, "get_dropbox_client": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 18, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 18, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 4, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0.00"}, "missing_lines": [76, 77, 78, 81, 82, 84, 85, 88, 89, 92, 93, 94, 96, 97, 98, 100, 101, 102], "excluded_lines": [], "start_line": 65, "executed_branches": [], "missing_branches": [[81, 82], [81, 84], [84, 85], [84, 88]]}, "upload_to_dropbox": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 56, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 56, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00", "num_branches": 10, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 10, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0.00"}, "missing_lines": [114, 115, 116, 124, 125, 126, 127, 128, 131, 139, 140, 141, 143, 145, 147, 150, 151, 154, 164, 165, 168, 171, 172, 173, 175, 176, 177, 178, 179, 182, 183, 186, 187, 189, 196, 197, 200, 201, 203, 204, 207, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223], "excluded_lines": [], "start_line": 106, "executed_branches": [], "missing_branches": [[124, 125], [124, 131], [131, 139], [131, 143], [176, 177], [176, 200], [186, 187], [186, 203], [187, 189], [187, 196]]}, "upload_to_dropbox.check_exists_in_dropbox": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 7, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 7, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 2, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0.00"}, "missing_lines": [155, 156, 157, 158, 159, 160, 161], "excluded_lines": [], "start_line": 154, "executed_branches": [], "missing_branches": [[159, 160], [159, 161]]}, "": {"executed_lines": [3, 4, 6, 7, 8, 10, 11, 12, 13, 14, 16, 19, 39, 65, 105, 106], "summary": {"covered_lines": 16, "num_statements": 16, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [3, 4, 6, 7, 8, 10, 11, 12, 13, 14, 16, 19, 21, 23, 24, 26, 27, 29, 30, 32, 33, 34, 39, 43, 44, 65, 105, 106], "summary": {"covered_lines": 28, "num_statements": 119, "percent_covered": 22.448979591836736, "percent_covered_display": "22.45", "missing_lines": 91, "excluded_lines": 0, "percent_statements_covered": 23.529411764705884, "percent_statements_covered_display": "23.53", "num_branches": 28, "num_partial_branches": 5, "covered_branches": 5, "missing_branches": 23, "percent_branches_covered": 17.857142857142858, "percent_branches_covered_display": "17.86"}, "missing_lines": [36, 46, 47, 48, 55, 57, 58, 60, 61, 62, 76, 77, 78, 81, 82, 84, 85, 88, 89, 92, 93, 94, 96, 97, 98, 100, 101, 102, 114, 115, 116, 124, 125, 126, 127, 128, 131, 139, 140, 141, 143, 145, 147, 150, 151, 154, 155, 156, 157, 158, 159, 160, 161, 164, 165, 168, 171, 172, 173, 175, 176, 177, 178, 179, 182, 183, 186, 187, 189, 196, 197, 200, 201, 203, 204, 207, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223], "excluded_lines": [], "start_line": 1, "executed_branches": [[23, 24], [26, 27], [29, 30], [32, 33], [43, 44]], "missing_branches": [[23, 26], [26, 29], [29, 32], [32, 36], [43, 46], [57, 58], [57, 60], [81, 82], [81, 84], [84, 85], [84, 88], [124, 125], [124, 131], [131, 139], [131, 143], [159, 160], [159, 161], [176, 177], [176, 200], [186, 187], [186, 203], [187, 189], [187, 196]]}}}, "app/tasks/upload_to_email.py": {"executed_lines": [3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 14, 16, 17, 18, 19, 21, 24, 59, 86, 122, 135, 166, 167, 190, 191, 192, 196, 203, 206, 213, 219, 220, 226, 229, 230, 231, 233, 235, 236, 237, 238, 241, 242, 245, 248, 251, 264, 265, 268, 269, 270, 271, 274, 275, 280, 281, 283], "summary": {"covered_lines": 57, "num_statements": 158, "percent_covered": 32.97872340425532, "percent_covered_display": "32.98", "missing_lines": 101, "excluded_lines": 0, "percent_statements_covered": 36.075949367088604, "percent_statements_covered_display": "36.08", "num_branches": 30, "num_partial_branches": 5, "covered_branches": 5, "missing_branches": 25, "percent_branches_covered": 16.666666666666668, "percent_branches_covered_display": "16.67"}, "missing_lines": [31, 32, 33, 34, 37, 38, 39, 40, 41, 42, 45, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 67, 70, 71, 72, 73, 74, 75, 76, 77, 78, 83, 88, 90, 91, 92, 95, 96, 98, 99, 101, 102, 103, 106, 107, 108, 109, 110, 111, 112, 114, 115, 117, 118, 119, 124, 125, 126, 127, 128, 129, 130, 131, 132, 137, 139, 142, 144, 145, 148, 149, 152, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 197, 198, 199, 200, 207, 208, 209, 210, 221, 222, 223, 276, 277, 278, 292, 293, 294, 295, 296], "excluded_lines": [], "executed_branches": [[196, 203], [206, 213], [220, 226], [230, 231], [275, 280]], "missing_branches": [[33, 34], [33, 45], [71, 72], [71, 83], [91, 92], [91, 95], [98, 99], [98, 101], [101, 102], [101, 114], [124, 125], [124, 130], [125, 126], [125, 129], [130, 131], [130, 132], [144, 145], [144, 148], [148, 149], [148, 152], [196, 197], [206, 207], [220, 221], [230, 233], [275, 276]], "functions": {"get_email_template": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 21, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 21, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 2, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0.00"}, "missing_lines": [31, 32, 33, 34, 37, 38, 39, 40, 41, 42, 45, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56], "excluded_lines": [], "start_line": 24, "executed_branches": [], "missing_branches": [[33, 34], [33, 45]]}, "extract_metadata_from_file": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 11, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 11, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 2, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0.00"}, "missing_lines": [67, 70, 71, 72, 73, 74, 75, 76, 77, 78, 83], "excluded_lines": [], "start_line": 59, "executed_branches": [], "missing_branches": [[71, 72], [71, 83]]}, "attach_logo": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 23, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 23, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00", "num_branches": 6, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 6, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0.00"}, "missing_lines": [88, 90, 91, 92, 95, 96, 98, 99, 101, 102, 103, 106, 107, 108, 109, 110, 111, 112, 114, 115, 117, 118, 119], "excluded_lines": [], "start_line": 86, "executed_branches": [], "missing_branches": [[91, 92], [91, 95], [98, 99], [98, 101], [101, 102], [101, 114]]}, "_prepare_recipients": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 9, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 9, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00", "num_branches": 6, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 6, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0.00"}, "missing_lines": [124, 125, 126, 127, 128, 129, 130, 131, 132], "excluded_lines": [], "start_line": 122, "executed_branches": [], "missing_branches": [[124, 125], [124, 130], [125, 126], [125, 129], [130, 131], [130, 132]]}, "_send_email_with_smtp": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 18, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 18, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 4, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0.00"}, "missing_lines": [137, 139, 142, 144, 145, 148, 149, 152, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163], "excluded_lines": [], "start_line": 135, "executed_branches": [], "missing_branches": [[144, 145], [144, 148], [148, 149], [148, 152]]}, "upload_to_email": {"executed_lines": [190, 191, 192, 196, 203, 206, 213, 219, 220, 226, 229, 230, 231, 233, 235, 236, 237, 238, 241, 242, 245, 248, 251, 264, 265, 268, 269, 270, 271, 274, 275, 280, 281, 283], "summary": {"covered_lines": 34, "num_statements": 53, "percent_covered": 61.904761904761905, "percent_covered_display": "61.90", "missing_lines": 19, "excluded_lines": 0, "percent_statements_covered": 64.15094339622641, "percent_statements_covered_display": "64.15", "num_branches": 10, "num_partial_branches": 5, "covered_branches": 5, "missing_branches": 5, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50.00"}, "missing_lines": [197, 198, 199, 200, 207, 208, 209, 210, 221, 222, 223, 276, 277, 278, 292, 293, 294, 295, 296], "excluded_lines": [], "start_line": 167, "executed_branches": [[196, 203], [206, 213], [220, 226], [230, 231], [275, 280]], "missing_branches": [[196, 197], [206, 207], [220, 221], [230, 233], [275, 276]]}, "": {"executed_lines": [3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 14, 16, 17, 18, 19, 21, 24, 59, 86, 122, 135, 166, 167], "summary": {"covered_lines": 23, "num_statements": 23, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 14, 16, 17, 18, 19, 21, 24, 59, 86, 122, 135, 166, 167, 190, 191, 192, 196, 203, 206, 213, 219, 220, 226, 229, 230, 231, 233, 235, 236, 237, 238, 241, 242, 245, 248, 251, 264, 265, 268, 269, 270, 271, 274, 275, 280, 281, 283], "summary": {"covered_lines": 57, "num_statements": 158, "percent_covered": 32.97872340425532, "percent_covered_display": "32.98", "missing_lines": 101, "excluded_lines": 0, "percent_statements_covered": 36.075949367088604, "percent_statements_covered_display": "36.08", "num_branches": 30, "num_partial_branches": 5, "covered_branches": 5, "missing_branches": 25, "percent_branches_covered": 16.666666666666668, "percent_branches_covered_display": "16.67"}, "missing_lines": [31, 32, 33, 34, 37, 38, 39, 40, 41, 42, 45, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 67, 70, 71, 72, 73, 74, 75, 76, 77, 78, 83, 88, 90, 91, 92, 95, 96, 98, 99, 101, 102, 103, 106, 107, 108, 109, 110, 111, 112, 114, 115, 117, 118, 119, 124, 125, 126, 127, 128, 129, 130, 131, 132, 137, 139, 142, 144, 145, 148, 149, 152, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 197, 198, 199, 200, 207, 208, 209, 210, 221, 222, 223, 276, 277, 278, 292, 293, 294, 295, 296], "excluded_lines": [], "start_line": 1, "executed_branches": [[196, 203], [206, 213], [220, 226], [230, 231], [275, 280]], "missing_branches": [[33, 34], [33, 45], [71, 72], [71, 83], [91, 92], [91, 95], [98, 99], [98, 101], [101, 102], [101, 114], [124, 125], [124, 130], [125, 126], [125, 129], [130, 131], [130, 132], [144, 145], [144, 148], [148, 149], [148, 152], [196, 197], [206, 207], [220, 221], [230, 233], [275, 276]]}}}, "app/tasks/upload_to_ftp.py": {"executed_lines": [5, 6, 7, 9, 10, 11, 12, 14, 17, 18, 30, 31, 32, 36, 37, 38, 39, 40, 43, 46, 52, 54, 55, 57, 84, 90, 91, 92, 95, 98, 99, 101, 103, 107, 108, 127, 128, 131, 133, 134, 135], "summary": {"covered_lines": 41, "num_statements": 85, "percent_covered": 47.57281553398058, "percent_covered_display": "47.57", "missing_lines": 44, "excluded_lines": 0, "percent_statements_covered": 48.23529411764706, "percent_statements_covered_display": "48.24", "num_branches": 18, "num_partial_branches": 4, "covered_branches": 8, "missing_branches": 10, "percent_branches_covered": 44.44444444444444, "percent_branches_covered_display": "44.44"}, "missing_lines": [47, 48, 49, 50, 58, 59, 60, 61, 64, 67, 68, 69, 70, 71, 72, 73, 75, 77, 78, 81, 85, 86, 87, 104, 109, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 143, 144, 145, 146, 147], "excluded_lines": [], "executed_branches": [[36, 37], [36, 43], [46, 52], [57, 84], [84, 90], [98, 99], [98, 127], [103, 107]], "missing_branches": [[46, 47], [57, 58], [70, 71], [70, 75], [84, 85], [103, 104], [113, 114], [113, 127], [114, 113], [114, 115]], "functions": {"upload_to_ftp": {"executed_lines": [30, 31, 32, 36, 37, 38, 39, 40, 43, 46, 52, 54, 55, 57, 84, 90, 91, 92, 95, 98, 99, 101, 103, 107, 108, 127, 128, 131, 133, 134, 135], "summary": {"covered_lines": 31, "num_statements": 75, "percent_covered": 41.935483870967744, "percent_covered_display": "41.94", "missing_lines": 44, "excluded_lines": 0, "percent_statements_covered": 41.333333333333336, "percent_statements_covered_display": "41.33", "num_branches": 18, "num_partial_branches": 4, "covered_branches": 8, "missing_branches": 10, "percent_branches_covered": 44.44444444444444, "percent_branches_covered_display": "44.44"}, "missing_lines": [47, 48, 49, 50, 58, 59, 60, 61, 64, 67, 68, 69, 70, 71, 72, 73, 75, 77, 78, 81, 85, 86, 87, 104, 109, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 143, 144, 145, 146, 147], "excluded_lines": [], "start_line": 18, "executed_branches": [[36, 37], [36, 43], [46, 52], [57, 84], [84, 90], [98, 99], [98, 127], [103, 107]], "missing_branches": [[46, 47], [57, 58], [70, 71], [70, 75], [84, 85], [103, 104], [113, 114], [113, 127], [114, 113], [114, 115]]}, "": {"executed_lines": [5, 6, 7, 9, 10, 11, 12, 14, 17, 18], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [5, 6, 7, 9, 10, 11, 12, 14, 17, 18, 30, 31, 32, 36, 37, 38, 39, 40, 43, 46, 52, 54, 55, 57, 84, 90, 91, 92, 95, 98, 99, 101, 103, 107, 108, 127, 128, 131, 133, 134, 135], "summary": {"covered_lines": 41, "num_statements": 85, "percent_covered": 47.57281553398058, "percent_covered_display": "47.57", "missing_lines": 44, "excluded_lines": 0, "percent_statements_covered": 48.23529411764706, "percent_statements_covered_display": "48.24", "num_branches": 18, "num_partial_branches": 4, "covered_branches": 8, "missing_branches": 10, "percent_branches_covered": 44.44444444444444, "percent_branches_covered_display": "44.44"}, "missing_lines": [47, 48, 49, 50, 58, 59, 60, 61, 64, 67, 68, 69, 70, 71, 72, 73, 75, 77, 78, 81, 85, 86, 87, 104, 109, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 143, 144, 145, 146, 147], "excluded_lines": [], "start_line": 1, "executed_branches": [[36, 37], [36, 43], [46, 52], [57, 84], [84, 90], [98, 99], [98, 127], [103, 107]], "missing_branches": [[46, 47], [57, 58], [70, 71], [70, 75], [84, 85], [103, 104], [113, 114], [113, 127], [114, 113], [114, 115]]}}}, "app/tasks/upload_to_google_drive.py": {"executed_lines": [5, 6, 7, 9, 10, 11, 12, 13, 14, 16, 17, 18, 19, 21, 24, 65, 98, 119, 152, 153, 162, 163, 164, 172, 179, 182, 183, 184, 186, 188, 189, 196, 201, 202, 205, 238, 240, 249, 250, 252, 253, 254, 258, 266, 269], "summary": {"covered_lines": 45, "num_statements": 125, "percent_covered": 32.48407643312102, "percent_covered_display": "32.48", "missing_lines": 80, "excluded_lines": 0, "percent_statements_covered": 36.0, "percent_statements_covered_display": "36.00", "num_branches": 32, "num_partial_branches": 6, "covered_branches": 6, "missing_branches": 26, "percent_branches_covered": 18.75, "percent_branches_covered_display": "18.75"}, "missing_lines": [29, 31, 36, 37, 40, 51, 54, 55, 57, 58, 59, 60, 61, 62, 70, 72, 73, 76, 77, 78, 80, 81, 86, 87, 90, 91, 93, 94, 95, 106, 107, 108, 109, 110, 111, 112, 113, 114, 116, 126, 129, 130, 131, 134, 135, 139, 142, 143, 146, 147, 149, 173, 174, 175, 176, 190, 191, 192, 193, 207, 211, 212, 214, 215, 218, 219, 220, 221, 222, 225, 228, 232, 233, 235, 267, 271, 272, 273, 274, 275], "excluded_lines": [], "executed_branches": [[172, 179], [183, 184], [189, 196], [201, 202], [205, 238], [266, 269]], "missing_branches": [[31, 36], [31, 40], [72, 73], [72, 76], [76, 77], [76, 80], [86, 87], [86, 90], [107, 108], [107, 116], [134, 135], [134, 139], [142, 143], [142, 146], [146, 147], [146, 149], [172, 173], [183, 186], [189, 190], [201, 205], [205, 207], [212, 214], [212, 225], [214, 215], [214, 218], [266, 267]], "functions": {"get_drive_service_oauth": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 14, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 14, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 2, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0.00"}, "missing_lines": [29, 31, 36, 37, 40, 51, 54, 55, 57, 58, 59, 60, 61, 62], "excluded_lines": [], "start_line": 24, "executed_branches": [], "missing_branches": [[31, 36], [31, 40]]}, "get_google_drive_service": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 15, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 15, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00", "num_branches": 6, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 6, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0.00"}, "missing_lines": [70, 72, 73, 76, 77, 78, 80, 81, 86, 87, 90, 91, 93, 94, 95], "excluded_lines": [], "start_line": 65, "executed_branches": [], "missing_branches": [[72, 73], [72, 76], [76, 77], [76, 80], [86, 87], [86, 90]]}, "extract_metadata_from_file": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 10, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 10, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 2, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0.00"}, "missing_lines": [106, 107, 108, 109, 110, 111, 112, 113, 114, 116], "excluded_lines": [], "start_line": 98, "executed_branches": [], "missing_branches": [[107, 108], [107, 116]]}, "truncate_property_value": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 12, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 12, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00", "num_branches": 6, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 6, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0.00"}, "missing_lines": [126, 129, 130, 131, 134, 135, 139, 142, 143, 146, 147, 149], "excluded_lines": [], "start_line": 119, "executed_branches": [], "missing_branches": [[134, 135], [134, 139], [142, 143], [142, 146], [146, 147], [146, 149]]}, "upload_to_google_drive": {"executed_lines": [162, 163, 164, 172, 179, 182, 183, 184, 186, 188, 189, 196, 201, 202, 205, 238, 240, 249, 250, 252, 253, 254, 258, 266, 269], "summary": {"covered_lines": 25, "num_statements": 54, "percent_covered": 44.285714285714285, "percent_covered_display": "44.29", "missing_lines": 29, "excluded_lines": 0, "percent_statements_covered": 46.2962962962963, "percent_statements_covered_display": "46.30", "num_branches": 16, "num_partial_branches": 6, "covered_branches": 6, "missing_branches": 10, "percent_branches_covered": 37.5, "percent_branches_covered_display": "37.50"}, "missing_lines": [173, 174, 175, 176, 190, 191, 192, 193, 207, 211, 212, 214, 215, 218, 219, 220, 221, 222, 225, 228, 232, 233, 235, 267, 271, 272, 273, 274, 275], "excluded_lines": [], "start_line": 153, "executed_branches": [[172, 179], [183, 184], [189, 196], [201, 202], [205, 238], [266, 269]], "missing_branches": [[172, 173], [183, 186], [189, 190], [201, 205], [205, 207], [212, 214], [212, 225], [214, 215], [214, 218], [266, 267]]}, "": {"executed_lines": [5, 6, 7, 9, 10, 11, 12, 13, 14, 16, 17, 18, 19, 21, 24, 65, 98, 119, 152, 153], "summary": {"covered_lines": 20, "num_statements": 20, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [5, 6, 7, 9, 10, 11, 12, 13, 14, 16, 17, 18, 19, 21, 24, 65, 98, 119, 152, 153, 162, 163, 164, 172, 179, 182, 183, 184, 186, 188, 189, 196, 201, 202, 205, 238, 240, 249, 250, 252, 253, 254, 258, 266, 269], "summary": {"covered_lines": 45, "num_statements": 125, "percent_covered": 32.48407643312102, "percent_covered_display": "32.48", "missing_lines": 80, "excluded_lines": 0, "percent_statements_covered": 36.0, "percent_statements_covered_display": "36.00", "num_branches": 32, "num_partial_branches": 6, "covered_branches": 6, "missing_branches": 26, "percent_branches_covered": 18.75, "percent_branches_covered_display": "18.75"}, "missing_lines": [29, 31, 36, 37, 40, 51, 54, 55, 57, 58, 59, 60, 61, 62, 70, 72, 73, 76, 77, 78, 80, 81, 86, 87, 90, 91, 93, 94, 95, 106, 107, 108, 109, 110, 111, 112, 113, 114, 116, 126, 129, 130, 131, 134, 135, 139, 142, 143, 146, 147, 149, 173, 174, 175, 176, 190, 191, 192, 193, 207, 211, 212, 214, 215, 218, 219, 220, 221, 222, 225, 228, 232, 233, 235, 267, 271, 272, 273, 274, 275], "excluded_lines": [], "start_line": 1, "executed_branches": [[172, 179], [183, 184], [189, 196], [201, 202], [205, 238], [266, 269]], "missing_branches": [[31, 36], [31, 40], [72, 73], [72, 76], [76, 77], [76, 80], [86, 87], [86, 90], [107, 108], [107, 116], [134, 135], [134, 139], [142, 143], [142, 146], [146, 147], [146, 149], [172, 173], [183, 186], [189, 190], [201, 205], [205, 207], [212, 214], [212, 225], [214, 215], [214, 218], [266, 267]]}}}, "app/tasks/upload_to_nextcloud.py": {"executed_lines": [3, 4, 6, 7, 9, 10, 11, 12, 13, 15, 18, 19, 27, 28, 29, 37, 45, 50, 51, 52], "summary": {"covered_lines": 20, "num_statements": 79, "percent_covered": 22.22222222222222, "percent_covered_display": "22.22", "missing_lines": 59, "excluded_lines": 0, "percent_statements_covered": 25.31645569620253, "percent_statements_covered_display": "25.32", "num_branches": 20, "num_partial_branches": 2, "covered_branches": 2, "missing_branches": 18, "percent_branches_covered": 10.0, "percent_branches_covered_display": "10.00"}, "missing_lines": [38, 39, 40, 41, 54, 56, 58, 59, 60, 63, 64, 65, 68, 69, 70, 71, 74, 75, 76, 77, 85, 86, 88, 91, 92, 95, 96, 97, 98, 101, 102, 103, 104, 105, 106, 107, 108, 110, 111, 112, 113, 115, 123, 124, 125, 126, 134, 135, 136, 139, 146, 147, 148, 149, 151, 152, 153, 154, 155], "excluded_lines": [], "executed_branches": [[37, 45], [45, 50]], "missing_branches": [[37, 38], [45, 54], [59, 60], [59, 63], [69, 70], [69, 71], [96, 97], [96, 98], [102, 103], [102, 123], [104, 105], [104, 123], [105, 106], [105, 107], [111, 112], [111, 113], [134, 135], [134, 146]], "functions": {"upload_to_nextcloud": {"executed_lines": [27, 28, 29, 37, 45, 50, 51, 52], "summary": {"covered_lines": 8, "num_statements": 61, "percent_covered": 12.345679012345679, "percent_covered_display": "12.35", "missing_lines": 53, "excluded_lines": 0, "percent_statements_covered": 13.114754098360656, "percent_statements_covered_display": "13.11", "num_branches": 20, "num_partial_branches": 2, "covered_branches": 2, "missing_branches": 18, "percent_branches_covered": 10.0, "percent_branches_covered_display": "10.00"}, "missing_lines": [38, 39, 40, 41, 54, 56, 58, 59, 60, 63, 64, 65, 68, 69, 70, 71, 74, 91, 92, 95, 96, 97, 98, 101, 102, 103, 104, 105, 106, 107, 108, 110, 111, 112, 113, 115, 123, 124, 125, 126, 134, 135, 136, 139, 146, 147, 148, 149, 151, 152, 153, 154, 155], "excluded_lines": [], "start_line": 19, "executed_branches": [[37, 45], [45, 50]], "missing_branches": [[37, 38], [45, 54], [59, 60], [59, 63], [69, 70], [69, 71], [96, 97], [96, 98], [102, 103], [102, 123], [104, 105], [104, 123], [105, 106], [105, 107], [111, 112], [111, 113], [134, 135], [134, 146]]}, "upload_to_nextcloud.check_exists_in_nextcloud": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 6, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [75, 76, 77, 85, 86, 88], "excluded_lines": [], "start_line": 74, "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [3, 4, 6, 7, 9, 10, 11, 12, 13, 15, 18, 19], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [3, 4, 6, 7, 9, 10, 11, 12, 13, 15, 18, 19, 27, 28, 29, 37, 45, 50, 51, 52], "summary": {"covered_lines": 20, "num_statements": 79, "percent_covered": 22.22222222222222, "percent_covered_display": "22.22", "missing_lines": 59, "excluded_lines": 0, "percent_statements_covered": 25.31645569620253, "percent_statements_covered_display": "25.32", "num_branches": 20, "num_partial_branches": 2, "covered_branches": 2, "missing_branches": 18, "percent_branches_covered": 10.0, "percent_branches_covered_display": "10.00"}, "missing_lines": [38, 39, 40, 41, 54, 56, 58, 59, 60, 63, 64, 65, 68, 69, 70, 71, 74, 75, 76, 77, 85, 86, 88, 91, 92, 95, 96, 97, 98, 101, 102, 103, 104, 105, 106, 107, 108, 110, 111, 112, 113, 115, 123, 124, 125, 126, 134, 135, 136, 139, 146, 147, 148, 149, 151, 152, 153, 154, 155], "excluded_lines": [], "start_line": 1, "executed_branches": [[37, 45], [45, 50]], "missing_branches": [[37, 38], [45, 54], [59, 60], [59, 63], [69, 70], [69, 71], [96, 97], [96, 98], [102, 103], [102, 123], [104, 105], [104, 123], [105, 106], [105, 107], [111, 112], [111, 113], [134, 135], [134, 146]]}}}, "app/tasks/upload_to_onedrive.py": {"executed_lines": [3, 4, 5, 6, 8, 9, 11, 12, 13, 14, 16, 19, 100, 146, 212, 213, 221, 222, 223, 231, 232, 233, 234, 235, 238, 241, 247, 249, 252, 255, 258, 259, 260, 261, 265], "summary": {"covered_lines": 35, "num_statements": 133, "percent_covered": 22.75449101796407, "percent_covered_display": "22.75", "missing_lines": 98, "excluded_lines": 0, "percent_statements_covered": 26.31578947368421, "percent_statements_covered_display": "26.32", "num_branches": 34, "num_partial_branches": 1, "covered_branches": 3, "missing_branches": 31, "percent_branches_covered": 8.823529411764707, "percent_branches_covered_display": "8.82"}, "missing_lines": [26, 27, 30, 31, 34, 37, 39, 46, 47, 51, 52, 53, 56, 57, 58, 60, 61, 62, 64, 67, 68, 69, 72, 73, 75, 78, 79, 80, 87, 89, 90, 91, 92, 94, 97, 103, 106, 108, 111, 112, 115, 116, 119, 120, 122, 125, 127, 129, 131, 133, 134, 135, 136, 138, 139, 140, 141, 142, 143, 152, 155, 158, 160, 161, 162, 163, 164, 167, 168, 171, 174, 177, 178, 180, 181, 182, 187, 189, 191, 192, 193, 194, 195, 196, 197, 199, 200, 205, 209, 242, 243, 244, 245, 272, 273, 274, 275, 276], "excluded_lines": [], "executed_branches": [[231, 232], [231, 238], [241, 247]], "missing_branches": [[26, 27], [26, 30], [37, 39], [37, 78], [51, 52], [51, 67], [60, 61], [60, 64], [67, 68], [67, 75], [78, 79], [78, 97], [89, 90], [89, 94], [106, 108], [106, 119], [133, 134], [133, 138], [163, 164], [163, 167], [180, 181], [180, 199], [187, 189], [187, 191], [192, 180], [192, 193], [196, 180], [196, 197], [199, 200], [199, 205], [241, 242]], "functions": {"get_onedrive_token": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 35, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 35, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00", "num_branches": 14, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 14, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0.00"}, "missing_lines": [26, 27, 30, 31, 34, 37, 39, 46, 47, 51, 52, 53, 56, 57, 58, 60, 61, 62, 64, 67, 68, 69, 72, 73, 75, 78, 79, 80, 87, 89, 90, 91, 92, 94, 97], "excluded_lines": [], "start_line": 19, "executed_branches": [], "missing_branches": [[26, 27], [26, 30], [37, 39], [37, 78], [51, 52], [51, 67], [60, 61], [60, 64], [67, 68], [67, 75], [78, 79], [78, 97], [89, 90], [89, 94]]}, "create_upload_session": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 24, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 24, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 4, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0.00"}, "missing_lines": [103, 106, 108, 111, 112, 115, 116, 119, 120, 122, 125, 127, 129, 131, 133, 134, 135, 136, 138, 139, 140, 141, 142, 143], "excluded_lines": [], "start_line": 100, "executed_branches": [], "missing_branches": [[106, 108], [106, 119], [133, 134], [133, 138]]}, "upload_large_file": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 30, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 30, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00", "num_branches": 12, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 12, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0.00"}, "missing_lines": [152, 155, 158, 160, 161, 162, 163, 164, 167, 168, 171, 174, 177, 178, 180, 181, 182, 187, 189, 191, 192, 193, 194, 195, 196, 197, 199, 200, 205, 209], "excluded_lines": [], "start_line": 146, "executed_branches": [], "missing_branches": [[163, 164], [163, 167], [180, 181], [180, 199], [187, 189], [187, 191], [192, 180], [192, 193], [196, 180], [196, 197], [199, 200], [199, 205]]}, "upload_to_onedrive": {"executed_lines": [221, 222, 223, 231, 232, 233, 234, 235, 238, 241, 247, 249, 252, 255, 258, 259, 260, 261, 265], "summary": {"covered_lines": 19, "num_statements": 28, "percent_covered": 68.75, "percent_covered_display": "68.75", "missing_lines": 9, "excluded_lines": 0, "percent_statements_covered": 67.85714285714286, "percent_statements_covered_display": "67.86", "num_branches": 4, "num_partial_branches": 1, "covered_branches": 3, "missing_branches": 1, "percent_branches_covered": 75.0, "percent_branches_covered_display": "75.00"}, "missing_lines": [242, 243, 244, 245, 272, 273, 274, 275, 276], "excluded_lines": [], "start_line": 213, "executed_branches": [[231, 232], [231, 238], [241, 247]], "missing_branches": [[241, 242]]}, "": {"executed_lines": [3, 4, 5, 6, 8, 9, 11, 12, 13, 14, 16, 19, 100, 146, 212, 213], "summary": {"covered_lines": 16, "num_statements": 16, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [3, 4, 5, 6, 8, 9, 11, 12, 13, 14, 16, 19, 100, 146, 212, 213, 221, 222, 223, 231, 232, 233, 234, 235, 238, 241, 247, 249, 252, 255, 258, 259, 260, 261, 265], "summary": {"covered_lines": 35, "num_statements": 133, "percent_covered": 22.75449101796407, "percent_covered_display": "22.75", "missing_lines": 98, "excluded_lines": 0, "percent_statements_covered": 26.31578947368421, "percent_statements_covered_display": "26.32", "num_branches": 34, "num_partial_branches": 1, "covered_branches": 3, "missing_branches": 31, "percent_branches_covered": 8.823529411764707, "percent_branches_covered_display": "8.82"}, "missing_lines": [26, 27, 30, 31, 34, 37, 39, 46, 47, 51, 52, 53, 56, 57, 58, 60, 61, 62, 64, 67, 68, 69, 72, 73, 75, 78, 79, 80, 87, 89, 90, 91, 92, 94, 97, 103, 106, 108, 111, 112, 115, 116, 119, 120, 122, 125, 127, 129, 131, 133, 134, 135, 136, 138, 139, 140, 141, 142, 143, 152, 155, 158, 160, 161, 162, 163, 164, 167, 168, 171, 174, 177, 178, 180, 181, 182, 187, 189, 191, 192, 193, 194, 195, 196, 197, 199, 200, 205, 209, 242, 243, 244, 245, 272, 273, 274, 275, 276], "excluded_lines": [], "start_line": 1, "executed_branches": [[231, 232], [231, 238], [241, 247]], "missing_branches": [[26, 27], [26, 30], [37, 39], [37, 78], [51, 52], [51, 67], [60, 61], [60, 64], [67, 68], [67, 75], [78, 79], [78, 97], [89, 90], [89, 94], [106, 108], [106, 119], [133, 134], [133, 138], [163, 164], [163, 167], [180, 181], [180, 199], [187, 189], [187, 191], [192, 180], [192, 193], [196, 180], [196, 197], [199, 200], [199, 205], [241, 242]]}}}, "app/tasks/upload_to_paperless.py": {"executed_lines": [3, 4, 5, 6, 7, 9, 11, 12, 13, 14, 16, 18, 19, 21, 24, 29, 40, 59, 75, 124, 156, 202, 203], "summary": {"covered_lines": 23, "num_statements": 191, "percent_covered": 9.31174089068826, "percent_covered_display": "9.31", "missing_lines": 168, "excluded_lines": 0, "percent_statements_covered": 12.041884816753926, "percent_statements_covered_display": "12.04", "num_branches": 56, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 56, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0.00"}, "missing_lines": [26, 34, 35, 36, 37, 50, 51, 52, 54, 55, 56, 69, 70, 71, 72, 84, 85, 87, 88, 89, 92, 93, 94, 95, 96, 97, 98, 100, 101, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 118, 119, 121, 137, 138, 139, 140, 141, 144, 146, 147, 148, 150, 151, 152, 153, 165, 166, 169, 170, 171, 172, 173, 174, 175, 176, 179, 180, 181, 183, 184, 185, 188, 189, 191, 192, 193, 194, 195, 196, 197, 199, 211, 212, 213, 221, 222, 223, 224, 225, 228, 231, 232, 233, 234, 235, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 249, 252, 253, 254, 255, 256, 259, 261, 262, 263, 266, 267, 268, 269, 270, 276, 287, 289, 290, 291, 294, 295, 296, 297, 298, 299, 307, 314, 315, 320, 323, 324, 326, 327, 330, 331, 333, 334, 335, 336, 337, 338, 339, 340, 343, 345, 346, 347, 350, 351, 352, 354, 355, 356, 363, 364, 365, 368, 370], "excluded_lines": [], "executed_branches": [], "missing_branches": [[35, 36], [35, 37], [50, 51], [50, 52], [54, 55], [54, 56], [69, 70], [69, 71], [87, 88], [87, 121], [100, 101], [100, 103], [103, 104], [103, 118], [106, 107], [106, 111], [108, 109], [108, 110], [111, 112], [111, 118], [113, 114], [113, 116], [146, 147], [146, 150], [147, 146], [147, 148], [165, 166], [165, 169], [170, 171], [170, 183], [172, 170], [172, 173], [183, 184], [183, 188], [221, 222], [221, 228], [231, 232], [231, 238], [240, 241], [240, 249], [297, 298], [297, 314], [323, 324], [323, 343], [330, 331], [330, 343], [331, 330], [331, 333], [334, 330], [334, 335], [343, 345], [343, 350], [345, 346], [345, 350], [350, 351], [350, 368]], "functions": {"_get_headers": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [26], "excluded_lines": [], "start_line": 24, "executed_branches": [], "missing_branches": []}, "_paperless_api_url": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 2, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0.00"}, "missing_lines": [34, 35, 36, 37], "excluded_lines": [], "start_line": 29, "executed_branches": [], "missing_branches": [[35, 36], [35, 37]]}, "normalize_metadata_value": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 6, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 4, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0.00"}, "missing_lines": [50, 51, 52, 54, 55, 56], "excluded_lines": [], "start_line": 40, "executed_branches": [], "missing_branches": [[50, 51], [50, 52], [54, 55], [54, 56]]}, "_is_duplicate_error": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 2, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0.00"}, "missing_lines": [69, 70, 71, 72], "excluded_lines": [], "start_line": 59, "executed_branches": [], "missing_branches": [[69, 70], [69, 71]]}, "poll_task_for_document_id": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 31, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 31, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00", "num_branches": 14, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 14, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0.00"}, "missing_lines": [84, 85, 87, 88, 89, 92, 93, 94, 95, 96, 97, 98, 100, 101, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 118, 119, 121], "excluded_lines": [], "start_line": 75, "executed_branches": [], "missing_branches": [[87, 88], [87, 121], [100, 101], [100, 103], [103, 104], [103, 118], [106, 107], [106, 111], [108, 109], [108, 110], [111, 112], [111, 118], [113, 114], [113, 116]]}, "get_custom_field_id": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 13, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 13, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 4, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0.00"}, "missing_lines": [137, 138, 139, 140, 141, 144, 146, 147, 148, 150, 151, 152, 153], "excluded_lines": [], "start_line": 124, "executed_branches": [], "missing_branches": [[146, 147], [146, 150], [147, 146], [147, 148]]}, "set_document_custom_fields": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 26, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 26, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00", "num_branches": 8, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 8, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0.00"}, "missing_lines": [165, 166, 169, 170, 171, 172, 173, 174, 175, 176, 179, 180, 181, 183, 184, 185, 188, 189, 191, 192, 193, 194, 195, 196, 197, 199], "excluded_lines": [], "start_line": 156, "executed_branches": [], "missing_branches": [[165, 166], [165, 169], [170, 171], [170, 183], [172, 170], [172, 173], [183, 184], [183, 188]]}, "upload_to_paperless": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 83, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 83, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00", "num_branches": 22, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 22, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0.00"}, "missing_lines": [211, 212, 213, 221, 222, 223, 224, 225, 228, 231, 232, 233, 234, 235, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 249, 252, 253, 254, 255, 256, 259, 261, 262, 263, 266, 267, 268, 269, 270, 276, 287, 289, 290, 291, 294, 295, 296, 297, 298, 299, 307, 314, 315, 320, 323, 324, 326, 327, 330, 331, 333, 334, 335, 336, 337, 338, 339, 340, 343, 345, 346, 347, 350, 351, 352, 354, 355, 356, 363, 364, 365, 368, 370], "excluded_lines": [], "start_line": 203, "executed_branches": [], "missing_branches": [[221, 222], [221, 228], [231, 232], [231, 238], [240, 241], [240, 249], [297, 298], [297, 314], [323, 324], [323, 343], [330, 331], [330, 343], [331, 330], [331, 333], [334, 330], [334, 335], [343, 345], [343, 350], [345, 346], [345, 350], [350, 351], [350, 368]]}, "": {"executed_lines": [3, 4, 5, 6, 7, 9, 11, 12, 13, 14, 16, 18, 19, 21, 24, 29, 40, 59, 75, 124, 156, 202, 203], "summary": {"covered_lines": 23, "num_statements": 23, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [3, 4, 5, 6, 7, 9, 11, 12, 13, 14, 16, 18, 19, 21, 24, 29, 40, 59, 75, 124, 156, 202, 203], "summary": {"covered_lines": 23, "num_statements": 191, "percent_covered": 9.31174089068826, "percent_covered_display": "9.31", "missing_lines": 168, "excluded_lines": 0, "percent_statements_covered": 12.041884816753926, "percent_statements_covered_display": "12.04", "num_branches": 56, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 56, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0.00"}, "missing_lines": [26, 34, 35, 36, 37, 50, 51, 52, 54, 55, 56, 69, 70, 71, 72, 84, 85, 87, 88, 89, 92, 93, 94, 95, 96, 97, 98, 100, 101, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 118, 119, 121, 137, 138, 139, 140, 141, 144, 146, 147, 148, 150, 151, 152, 153, 165, 166, 169, 170, 171, 172, 173, 174, 175, 176, 179, 180, 181, 183, 184, 185, 188, 189, 191, 192, 193, 194, 195, 196, 197, 199, 211, 212, 213, 221, 222, 223, 224, 225, 228, 231, 232, 233, 234, 235, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 249, 252, 253, 254, 255, 256, 259, 261, 262, 263, 266, 267, 268, 269, 270, 276, 287, 289, 290, 291, 294, 295, 296, 297, 298, 299, 307, 314, 315, 320, 323, 324, 326, 327, 330, 331, 333, 334, 335, 336, 337, 338, 339, 340, 343, 345, 346, 347, 350, 351, 352, 354, 355, 356, 363, 364, 365, 368, 370], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": [[35, 36], [35, 37], [50, 51], [50, 52], [54, 55], [54, 56], [69, 70], [69, 71], [87, 88], [87, 121], [100, 101], [100, 103], [103, 104], [103, 118], [106, 107], [106, 111], [108, 109], [108, 110], [111, 112], [111, 118], [113, 114], [113, 116], [146, 147], [146, 150], [147, 146], [147, 148], [165, 166], [165, 169], [170, 171], [170, 183], [172, 170], [172, 173], [183, 184], [183, 188], [221, 222], [221, 228], [231, 232], [231, 238], [240, 241], [240, 249], [297, 298], [297, 314], [323, 324], [323, 343], [330, 331], [330, 343], [331, 330], [331, 333], [334, 330], [334, 335], [343, 345], [343, 350], [345, 346], [345, 350], [350, 351], [350, 368]]}}}, "app/tasks/upload_to_s3.py": {"executed_lines": [3, 4, 6, 7, 9, 10, 11, 12, 14, 17, 18, 26, 27, 28, 32, 33, 34, 35, 36, 39, 42, 48, 54, 56, 64, 66, 67, 68, 69, 74, 77, 81, 85, 87, 90, 91], "summary": {"covered_lines": 36, "num_statements": 56, "percent_covered": 63.23529411764706, "percent_covered_display": "63.24", "missing_lines": 20, "excluded_lines": 0, "percent_statements_covered": 64.28571428571429, "percent_statements_covered_display": "64.29", "num_branches": 12, "num_partial_branches": 5, "covered_branches": 7, "missing_branches": 5, "percent_branches_covered": 58.333333333333336, "percent_branches_covered_display": "58.33"}, "missing_lines": [43, 44, 45, 46, 49, 50, 51, 52, 71, 78, 99, 100, 101, 102, 103, 105, 106, 107, 108, 109], "excluded_lines": [], "executed_branches": [[32, 33], [32, 39], [42, 48], [48, 54], [64, 66], [67, 68], [77, 81]], "missing_branches": [[42, 43], [48, 49], [64, 71], [67, 69], [77, 78]], "functions": {"upload_to_s3": {"executed_lines": [26, 27, 28, 32, 33, 34, 35, 36, 39, 42, 48, 54, 56, 64, 66, 67, 68, 69, 74, 77, 81, 85, 87, 90, 91], "summary": {"covered_lines": 25, "num_statements": 45, "percent_covered": 56.14035087719298, "percent_covered_display": "56.14", "missing_lines": 20, "excluded_lines": 0, "percent_statements_covered": 55.55555555555556, "percent_statements_covered_display": "55.56", "num_branches": 12, "num_partial_branches": 5, "covered_branches": 7, "missing_branches": 5, "percent_branches_covered": 58.333333333333336, "percent_branches_covered_display": "58.33"}, "missing_lines": [43, 44, 45, 46, 49, 50, 51, 52, 71, 78, 99, 100, 101, 102, 103, 105, 106, 107, 108, 109], "excluded_lines": [], "start_line": 18, "executed_branches": [[32, 33], [32, 39], [42, 48], [48, 54], [64, 66], [67, 68], [77, 81]], "missing_branches": [[42, 43], [48, 49], [64, 71], [67, 69], [77, 78]]}, "": {"executed_lines": [3, 4, 6, 7, 9, 10, 11, 12, 14, 17, 18], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [3, 4, 6, 7, 9, 10, 11, 12, 14, 17, 18, 26, 27, 28, 32, 33, 34, 35, 36, 39, 42, 48, 54, 56, 64, 66, 67, 68, 69, 74, 77, 81, 85, 87, 90, 91], "summary": {"covered_lines": 36, "num_statements": 56, "percent_covered": 63.23529411764706, "percent_covered_display": "63.24", "missing_lines": 20, "excluded_lines": 0, "percent_statements_covered": 64.28571428571429, "percent_statements_covered_display": "64.29", "num_branches": 12, "num_partial_branches": 5, "covered_branches": 7, "missing_branches": 5, "percent_branches_covered": 58.333333333333336, "percent_branches_covered_display": "58.33"}, "missing_lines": [43, 44, 45, 46, 49, 50, 51, 52, 71, 78, 99, 100, 101, 102, 103, 105, 106, 107, 108, 109], "excluded_lines": [], "start_line": 1, "executed_branches": [[32, 33], [32, 39], [42, 48], [48, 54], [64, 66], [67, 68], [77, 81]], "missing_branches": [[42, 43], [48, 49], [64, 71], [67, 69], [77, 78]]}}}, "app/tasks/upload_to_sftp.py": {"executed_lines": [3, 4, 6, 8, 9, 10, 11, 12, 14, 17, 18, 26, 27, 28, 32, 33, 34, 35, 36, 38, 44, 45, 48, 53, 54, 59, 65, 67, 74, 75, 77, 78, 79, 80, 81, 91, 92, 95, 98, 99, 102, 106, 114, 117, 118, 119, 121, 122, 123, 124, 125, 126, 127, 135, 136, 137, 138, 141, 142, 144], "summary": {"covered_lines": 60, "num_statements": 94, "percent_covered": 62.06896551724138, "percent_covered_display": "62.07", "missing_lines": 34, "excluded_lines": 0, "percent_statements_covered": 63.829787234042556, "percent_statements_covered_display": "63.83", "num_branches": 22, "num_partial_branches": 6, "covered_branches": 12, "missing_branches": 10, "percent_branches_covered": 54.54545454545455, "percent_branches_covered_display": "54.55"}, "missing_lines": [39, 40, 41, 42, 62, 63, 82, 83, 84, 86, 87, 88, 103, 107, 108, 109, 110, 111, 128, 129, 130, 131, 132, 146, 148, 149, 150, 151, 152, 153, 155, 156, 157, 158], "excluded_lines": [], "executed_branches": [[32, 33], [32, 38], [38, 44], [53, 54], [77, 78], [80, 81], [102, 106], [118, 119], [122, 123], [122, 135], [123, 124], [123, 125]], "missing_branches": [[38, 39], [53, 62], [77, 82], [80, 91], [82, 83], [82, 86], [102, 103], [118, 135], [149, 150], [149, 151]], "functions": {"upload_to_sftp": {"executed_lines": [26, 27, 28, 32, 33, 34, 35, 36, 38, 44, 45, 48, 53, 54, 59, 65, 67, 74, 75, 77, 78, 79, 80, 81, 91, 92, 95, 98, 99, 102, 106, 114, 117, 118, 119, 121, 122, 123, 124, 125, 126, 127, 135, 136, 137, 138, 141, 142, 144], "summary": {"covered_lines": 49, "num_statements": 78, "percent_covered": 61.0, "percent_covered_display": "61.00", "missing_lines": 29, "excluded_lines": 0, "percent_statements_covered": 62.82051282051282, "percent_statements_covered_display": "62.82", "num_branches": 22, "num_partial_branches": 6, "covered_branches": 12, "missing_branches": 10, "percent_branches_covered": 54.54545454545455, "percent_branches_covered_display": "54.55"}, "missing_lines": [39, 40, 41, 42, 62, 63, 82, 83, 84, 86, 87, 88, 103, 128, 129, 130, 131, 132, 146, 148, 149, 150, 151, 152, 153, 155, 156, 157, 158], "excluded_lines": [], "start_line": 18, "executed_branches": [[32, 33], [32, 38], [38, 44], [53, 54], [77, 78], [80, 81], [102, 106], [118, 119], [122, 123], [122, 135], [123, 124], [123, 125]], "missing_branches": [[38, 39], [53, 62], [77, 82], [80, 91], [82, 83], [82, 86], [102, 103], [118, 135], [149, 150], [149, 151]]}, "upload_to_sftp.check_exists_in_sftp": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 5, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [107, 108, 109, 110, 111], "excluded_lines": [], "start_line": 106, "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [3, 4, 6, 8, 9, 10, 11, 12, 14, 17, 18], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [3, 4, 6, 8, 9, 10, 11, 12, 14, 17, 18, 26, 27, 28, 32, 33, 34, 35, 36, 38, 44, 45, 48, 53, 54, 59, 65, 67, 74, 75, 77, 78, 79, 80, 81, 91, 92, 95, 98, 99, 102, 106, 114, 117, 118, 119, 121, 122, 123, 124, 125, 126, 127, 135, 136, 137, 138, 141, 142, 144], "summary": {"covered_lines": 60, "num_statements": 94, "percent_covered": 62.06896551724138, "percent_covered_display": "62.07", "missing_lines": 34, "excluded_lines": 0, "percent_statements_covered": 63.829787234042556, "percent_statements_covered_display": "63.83", "num_branches": 22, "num_partial_branches": 6, "covered_branches": 12, "missing_branches": 10, "percent_branches_covered": 54.54545454545455, "percent_branches_covered_display": "54.55"}, "missing_lines": [39, 40, 41, 42, 62, 63, 82, 83, 84, 86, 87, 88, 103, 107, 108, 109, 110, 111, 128, 129, 130, 131, 132, 146, 148, 149, 150, 151, 152, 153, 155, 156, 157, 158], "excluded_lines": [], "start_line": 1, "executed_branches": [[32, 33], [32, 38], [38, 44], [53, 54], [77, 78], [80, 81], [102, 106], [118, 119], [122, 123], [122, 135], [123, 124], [123, 125]], "missing_branches": [[38, 39], [53, 62], [77, 82], [80, 91], [82, 83], [82, 86], [102, 103], [118, 135], [149, 150], [149, 151]]}}}, "app/tasks/upload_to_webdav.py": {"executed_lines": [3, 4, 5, 7, 9, 10, 11, 12, 14, 17, 18, 26, 27, 28, 36, 37, 38, 39, 40, 43, 46, 47, 48, 49, 50, 53, 55, 56, 59, 61, 62, 65, 68, 69, 70, 79, 80, 81, 84, 86, 87, 88, 89, 91, 92, 93, 94, 95], "summary": {"covered_lines": 48, "num_statements": 48, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 10, "num_partial_branches": 0, "covered_branches": 10, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "executed_branches": [[36, 37], [36, 43], [46, 47], [46, 53], [55, 56], [55, 59], [61, 62], [61, 65], [79, 80], [79, 86]], "missing_branches": [], "functions": {"upload_to_webdav": {"executed_lines": [26, 27, 28, 36, 37, 38, 39, 40, 43, 46, 47, 48, 49, 50, 53, 55, 56, 59, 61, 62, 65, 68, 69, 70, 79, 80, 81, 84, 86, 87, 88, 89, 91, 92, 93, 94, 95], "summary": {"covered_lines": 37, "num_statements": 37, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 10, "num_partial_branches": 0, "covered_branches": 10, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 18, "executed_branches": [[36, 37], [36, 43], [46, 47], [46, 53], [55, 56], [55, 59], [61, 62], [61, 65], [79, 80], [79, 86]], "missing_branches": []}, "": {"executed_lines": [3, 4, 5, 7, 9, 10, 11, 12, 14, 17, 18], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [3, 4, 5, 7, 9, 10, 11, 12, 14, 17, 18, 26, 27, 28, 36, 37, 38, 39, 40, 43, 46, 47, 48, 49, 50, 53, 55, 56, 59, 61, 62, 65, 68, 69, 70, 79, 80, 81, 84, 86, 87, 88, 89, 91, 92, 93, 94, 95], "summary": {"covered_lines": 48, "num_statements": 48, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 10, "num_partial_branches": 0, "covered_branches": 10, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [[36, 37], [36, 43], [46, 47], [46, 53], [55, 56], [55, 59], [61, 62], [61, 65], [79, 80], [79, 86]], "missing_branches": []}}}, "app/tasks/upload_with_rclone.py": {"executed_lines": [3, 4, 5, 7, 8, 9, 10, 12, 15, 16, 25, 27, 28, 31, 33, 36, 37, 40, 44, 45, 48, 49, 50, 51, 52, 110, 111], "summary": {"covered_lines": 27, "num_statements": 98, "percent_covered": 27.868852459016395, "percent_covered_display": "27.87", "missing_lines": 71, "excluded_lines": 0, "percent_statements_covered": 27.551020408163264, "percent_statements_covered_display": "27.55", "num_branches": 24, "num_partial_branches": 1, "covered_branches": 7, "missing_branches": 17, "percent_branches_covered": 29.166666666666668, "percent_branches_covered_display": "29.17"}, "missing_lines": [54, 56, 58, 60, 63, 65, 68, 71, 73, 74, 75, 76, 77, 78, 79, 81, 82, 89, 91, 92, 93, 95, 96, 97, 98, 101, 103, 104, 105, 106, 107, 116, 118, 119, 122, 124, 129, 130, 131, 132, 133, 136, 137, 138, 140, 142, 145, 146, 147, 148, 149, 150, 153, 156, 157, 158, 159, 160, 162, 163, 164, 166, 172, 174, 175, 176, 178, 179, 180, 181, 188], "excluded_lines": [], "executed_branches": [[27, 28], [27, 31], [36, 37], [36, 40], [44, 45], [44, 48], [49, 50]], "missing_branches": [[49, 54], [71, 73], [71, 91], [118, 119], [118, 122], [130, 131], [130, 136], [140, 142], [140, 174], [146, 147], [146, 156], [149, 150], [149, 153], [157, 158], [157, 166], [159, 160], [159, 162]], "functions": {"upload_with_rclone": {"executed_lines": [25, 27, 28, 31, 33, 36, 37, 40, 44, 45, 48, 49, 50, 51, 52], "summary": {"covered_lines": 15, "num_statements": 46, "percent_covered": 39.285714285714285, "percent_covered_display": "39.29", "missing_lines": 31, "excluded_lines": 0, "percent_statements_covered": 32.608695652173914, "percent_statements_covered_display": "32.61", "num_branches": 10, "num_partial_branches": 1, "covered_branches": 7, "missing_branches": 3, "percent_branches_covered": 70.0, "percent_branches_covered_display": "70.00"}, "missing_lines": [54, 56, 58, 60, 63, 65, 68, 71, 73, 74, 75, 76, 77, 78, 79, 81, 82, 89, 91, 92, 93, 95, 96, 97, 98, 101, 103, 104, 105, 106, 107], "excluded_lines": [], "start_line": 16, "executed_branches": [[27, 28], [27, 31], [36, 37], [36, 40], [44, 45], [44, 48], [49, 50]], "missing_branches": [[49, 54], [71, 73], [71, 91]]}, "send_to_all_rclone_destinations": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 40, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 40, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00", "num_branches": 14, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 14, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0.00"}, "missing_lines": [116, 118, 119, 122, 124, 129, 130, 131, 132, 133, 136, 137, 138, 140, 142, 145, 146, 147, 148, 149, 150, 153, 156, 157, 158, 159, 160, 162, 163, 164, 166, 172, 174, 175, 176, 178, 179, 180, 181, 188], "excluded_lines": [], "start_line": 111, "executed_branches": [], "missing_branches": [[118, 119], [118, 122], [130, 131], [130, 136], [140, 142], [140, 174], [146, 147], [146, 156], [149, 150], [149, 153], [157, 158], [157, 166], [159, 160], [159, 162]]}, "": {"executed_lines": [3, 4, 5, 7, 8, 9, 10, 12, 15, 16, 110, 111], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [3, 4, 5, 7, 8, 9, 10, 12, 15, 16, 25, 27, 28, 31, 33, 36, 37, 40, 44, 45, 48, 49, 50, 51, 52, 110, 111], "summary": {"covered_lines": 27, "num_statements": 98, "percent_covered": 27.868852459016395, "percent_covered_display": "27.87", "missing_lines": 71, "excluded_lines": 0, "percent_statements_covered": 27.551020408163264, "percent_statements_covered_display": "27.55", "num_branches": 24, "num_partial_branches": 1, "covered_branches": 7, "missing_branches": 17, "percent_branches_covered": 29.166666666666668, "percent_branches_covered_display": "29.17"}, "missing_lines": [54, 56, 58, 60, 63, 65, 68, 71, 73, 74, 75, 76, 77, 78, 79, 81, 82, 89, 91, 92, 93, 95, 96, 97, 98, 101, 103, 104, 105, 106, 107, 116, 118, 119, 122, 124, 129, 130, 131, 132, 133, 136, 137, 138, 140, 142, 145, 146, 147, 148, 149, 150, 153, 156, 157, 158, 159, 160, 162, 163, 164, 166, 172, 174, 175, 176, 178, 179, 180, 181, 188], "excluded_lines": [], "start_line": 1, "executed_branches": [[27, 28], [27, 31], [36, 37], [36, 40], [44, 45], [44, 48], [49, 50]], "missing_branches": [[49, 54], [71, 73], [71, 91], [118, 119], [118, 122], [130, 131], [130, 136], [140, 142], [140, 174], [146, 147], [146, 156], [149, 150], [149, 153], [157, 158], [157, 166], [159, 160], [159, 162]]}}}, "app/tasks/uptime_kuma_tasks.py": {"executed_lines": [3, 5, 6, 8, 10, 13, 14, 20, 21, 22, 24, 25, 26, 27, 28, 29, 30, 31, 32], "summary": {"covered_lines": 19, "num_statements": 19, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "executed_branches": [[20, 21], [20, 24]], "missing_branches": [], "functions": {"ping_uptime_kuma": {"executed_lines": [20, 21, 22, 24, 25, 26, 27, 28, 29, 30, 31, 32], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 14, "executed_branches": [[20, 21], [20, 24]], "missing_branches": []}, "": {"executed_lines": [3, 5, 6, 8, 10, 13, 14], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [3, 5, 6, 8, 10, 13, 14, 20, 21, 22, 24, 25, 26, 27, 28, 29, 30, 31, 32], "summary": {"covered_lines": 19, "num_statements": 19, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [[20, 21], [20, 24]], "missing_branches": []}}}, "app/utils/__init__.py": {"executed_lines": [6, 7, 8, 11], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": [], "functions": {"": {"executed_lines": [6, 7, 8, 11], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [6, 7, 8, 11], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}}, "app/utils/config_loader.py": {"executed_lines": [10, 11, 13, 15, 17, 20, 31, 32, 34, 35, 36, 39, 40, 41, 42, 45, 47, 48, 50, 53, 54, 55, 57, 58, 68, 79, 80, 83, 84, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 106, 107, 111, 114], "summary": {"covered_lines": 48, "num_statements": 66, "percent_covered": 74.44444444444444, "percent_covered_display": "74.44", "missing_lines": 18, "excluded_lines": 0, "percent_statements_covered": 72.72727272727273, "percent_statements_covered_display": "72.73", "num_branches": 24, "num_partial_branches": 5, "covered_branches": 19, "missing_branches": 5, "percent_branches_covered": 79.16666666666667, "percent_branches_covered_display": "79.17"}, "missing_lines": [60, 62, 63, 65, 86, 87, 108, 127, 128, 130, 131, 132, 133, 134, 136, 137, 138, 139], "excluded_lines": [], "executed_branches": [[34, 35], [34, 39], [40, 41], [40, 57], [45, 47], [48, 50], [57, 58], [79, 80], [79, 83], [84, 90], [90, 91], [90, 92], [92, 93], [92, 98], [98, 99], [98, 104], [104, 106], [104, 111], [106, 107]], "missing_branches": [[45, 40], [48, 40], [57, 60], [84, 86], [106, 108]], "functions": {"load_settings_from_db": {"executed_lines": [31, 32, 34, 35, 36, 39, 40, 41, 42, 45, 47, 48, 50, 53, 54, 55, 57, 58], "summary": {"covered_lines": 18, "num_statements": 22, "percent_covered": 78.125, "percent_covered_display": "78.12", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 81.81818181818181, "percent_statements_covered_display": "81.82", "num_branches": 10, "num_partial_branches": 3, "covered_branches": 7, "missing_branches": 3, "percent_branches_covered": 70.0, "percent_branches_covered_display": "70.00"}, "missing_lines": [60, 62, 63, 65], "excluded_lines": [], "start_line": 20, "executed_branches": [[34, 35], [34, 39], [40, 41], [40, 57], [45, 47], [48, 50], [57, 58]], "missing_branches": [[45, 40], [48, 40], [57, 60]]}, "convert_setting_value": {"executed_lines": [79, 80, 83, 84, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 106, 107, 111], "summary": {"covered_lines": 22, "num_statements": 25, "percent_covered": 87.17948717948718, "percent_covered_display": "87.18", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 88.0, "percent_statements_covered_display": "88.00", "num_branches": 14, "num_partial_branches": 2, "covered_branches": 12, "missing_branches": 2, "percent_branches_covered": 85.71428571428571, "percent_branches_covered_display": "85.71"}, "missing_lines": [86, 87, 108], "excluded_lines": [], "start_line": 68, "executed_branches": [[79, 80], [79, 83], [84, 90], [90, 91], [90, 92], [92, 93], [92, 98], [98, 99], [98, 104], [104, 106], [104, 111], [106, 107]], "missing_branches": [[84, 86], [106, 108]]}, "reload_settings_from_db": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 11, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 11, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [127, 128, 130, 131, 132, 133, 134, 136, 137, 138, 139], "excluded_lines": [], "start_line": 114, "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [10, 11, 13, 15, 17, 20, 68, 114], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [10, 11, 13, 15, 17, 20, 31, 32, 34, 35, 36, 39, 40, 41, 42, 45, 47, 48, 50, 53, 54, 55, 57, 58, 68, 79, 80, 83, 84, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 106, 107, 111, 114], "summary": {"covered_lines": 48, "num_statements": 66, "percent_covered": 74.44444444444444, "percent_covered_display": "74.44", "missing_lines": 18, "excluded_lines": 0, "percent_statements_covered": 72.72727272727273, "percent_statements_covered_display": "72.73", "num_branches": 24, "num_partial_branches": 5, "covered_branches": 19, "missing_branches": 5, "percent_branches_covered": 79.16666666666667, "percent_branches_covered_display": "79.17"}, "missing_lines": [60, 62, 63, 65, 86, 87, 108, 127, 128, 130, 131, 132, 133, 134, 136, 137, 138, 139], "excluded_lines": [], "start_line": 1, "executed_branches": [[34, 35], [34, 39], [40, 41], [40, 57], [45, 47], [48, 50], [57, 58], [79, 80], [79, 83], [84, 90], [90, 91], [90, 92], [92, 93], [92, 98], [98, 99], [98, 104], [104, 106], [104, 111], [106, 107]], "missing_branches": [[45, 40], [48, 40], [57, 60], [84, 86], [106, 108]]}}}, "app/utils/config_validator.py": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 5, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [7, 8, 9, 12, 19], "excluded_lines": [], "executed_branches": [], "missing_branches": [], "functions": {"": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 5, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [7, 8, 9, 12, 19], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 5, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [7, 8, 9, 12, 19], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}}, "app/utils/config_validator/__init__.py": {"executed_lines": [5, 6, 7, 8, 16], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": [], "functions": {"": {"executed_lines": [5, 6, 7, 8, 16], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [5, 6, 7, 8, 16], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}}, "app/utils/config_validator/masking.py": {"executed_lines": [6, 11, 12, 13], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "executed_branches": [[11, 12], [11, 13]], "missing_branches": [], "functions": {"mask_sensitive_value": {"executed_lines": [11, 12, 13], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 6, "executed_branches": [[11, 12], [11, 13]], "missing_branches": []}, "": {"executed_lines": [6], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [6, 11, 12, 13], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [[11, 12], [11, 13]], "missing_branches": []}}}, "app/utils/config_validator/providers.py": {"executed_lines": [5, 6, 9, 13, 16, 17, 23, 25, 39, 61, 76, 90, 109, 129, 151, 157, 160, 162, 164, 190, 192, 193, 196, 216, 236, 251, 273, 295, 308, 327], "summary": {"covered_lines": 30, "num_statements": 31, "percent_covered": 93.93939393939394, "percent_covered_display": "93.94", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 96.7741935483871, "percent_statements_covered_display": "96.77", "num_branches": 2, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 1, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50.00"}, "missing_lines": [194], "excluded_lines": [], "executed_branches": [[193, 196]], "missing_branches": [[193, 194]], "functions": {"get_provider_status": {"executed_lines": [13, 16, 17, 23, 25, 39, 61, 76, 90, 109, 129, 151, 157, 160, 162, 164, 190, 192, 193, 196, 216, 236, 251, 273, 295, 308, 327], "summary": {"covered_lines": 27, "num_statements": 28, "percent_covered": 93.33333333333333, "percent_covered_display": "93.33", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 96.42857142857143, "percent_statements_covered_display": "96.43", "num_branches": 2, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 1, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50.00"}, "missing_lines": [194], "excluded_lines": [], "start_line": 9, "executed_branches": [[193, 196]], "missing_branches": [[193, 194]]}, "": {"executed_lines": [5, 6, 9], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [5, 6, 9, 13, 16, 17, 23, 25, 39, 61, 76, 90, 109, 129, 151, 157, 160, 162, 164, 190, 192, 193, 196, 216, 236, 251, 273, 295, 308, 327], "summary": {"covered_lines": 30, "num_statements": 31, "percent_covered": 93.93939393939394, "percent_covered_display": "93.94", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 96.7741935483871, "percent_statements_covered_display": "96.77", "num_branches": 2, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 1, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50.00"}, "missing_lines": [194], "excluded_lines": [], "start_line": 1, "executed_branches": [[193, 196]], "missing_branches": [[193, 194]]}}}, "app/utils/config_validator/settings_display.py": {"executed_lines": [5, 7, 8, 10, 13, 15, 16, 17, 18, 20, 26, 27, 28, 29, 30, 36, 43, 56, 57, 60, 69, 77, 188, 199, 201, 202, 203, 205, 206, 207, 210, 211, 212, 213, 214, 217, 229, 232, 235, 236, 240, 241, 242, 246, 247, 248, 250, 252, 253, 255], "summary": {"covered_lines": 50, "num_statements": 59, "percent_covered": 83.87096774193549, "percent_covered_display": "83.87", "missing_lines": 9, "excluded_lines": 0, "percent_statements_covered": 84.7457627118644, "percent_statements_covered_display": "84.75", "num_branches": 34, "num_partial_branches": 4, "covered_branches": 28, "missing_branches": 6, "percent_branches_covered": 82.3529411764706, "percent_branches_covered_display": "82.35"}, "missing_lines": [44, 45, 47, 48, 49, 51, 52, 53, 54], "excluded_lines": [], "executed_branches": [[16, 17], [16, 57], [17, 16], [17, 18], [20, 26], [20, 43], [26, 27], [26, 43], [27, 28], [27, 36], [43, 56], [202, 203], [202, 205], [206, 207], [210, 211], [210, 255], [212, 213], [212, 252], [213, 214], [232, 235], [232, 240], [240, 241], [240, 246], [241, 242], [241, 246], [247, 248], [247, 250], [252, 253]], "missing_branches": [[43, 44], [47, 48], [47, 51], [206, 210], [213, 212], [252, 210]], "functions": {"dump_all_settings": {"executed_lines": [15, 16, 17, 18, 20, 26, 27, 28, 29, 30, 36, 43, 56, 57], "summary": {"covered_lines": 14, "num_statements": 23, "percent_covered": 67.56756756756756, "percent_covered_display": "67.57", "missing_lines": 9, "excluded_lines": 0, "percent_statements_covered": 60.869565217391305, "percent_statements_covered_display": "60.87", "num_branches": 14, "num_partial_branches": 1, "covered_branches": 11, "missing_branches": 3, "percent_branches_covered": 78.57142857142857, "percent_branches_covered_display": "78.57"}, "missing_lines": [44, 45, 47, 48, 49, 51, 52, 53, 54], "excluded_lines": [], "start_line": 13, "executed_branches": [[16, 17], [16, 57], [17, 16], [17, 18], [20, 26], [20, 43], [26, 27], [26, 43], [27, 28], [27, 36], [43, 56]], "missing_branches": [[43, 44], [47, 48], [47, 51]]}, "get_settings_for_display": {"executed_lines": [69, 77, 188, 199, 201, 202, 203, 205, 206, 207, 210, 211, 212, 213, 214, 217, 229, 232, 235, 236, 240, 241, 242, 246, 247, 248, 250, 252, 253, 255], "summary": {"covered_lines": 30, "num_statements": 30, "percent_covered": 94.0, "percent_covered_display": "94.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 20, "num_partial_branches": 3, "covered_branches": 17, "missing_branches": 3, "percent_branches_covered": 85.0, "percent_branches_covered_display": "85.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 60, "executed_branches": [[202, 203], [202, 205], [206, 207], [210, 211], [210, 255], [212, 213], [212, 252], [213, 214], [232, 235], [232, 240], [240, 241], [240, 246], [241, 242], [241, 246], [247, 248], [247, 250], [252, 253]], "missing_branches": [[206, 210], [213, 212], [252, 210]]}, "": {"executed_lines": [5, 7, 8, 10, 13, 60], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [5, 7, 8, 10, 13, 15, 16, 17, 18, 20, 26, 27, 28, 29, 30, 36, 43, 56, 57, 60, 69, 77, 188, 199, 201, 202, 203, 205, 206, 207, 210, 211, 212, 213, 214, 217, 229, 232, 235, 236, 240, 241, 242, 246, 247, 248, 250, 252, 253, 255], "summary": {"covered_lines": 50, "num_statements": 59, "percent_covered": 83.87096774193549, "percent_covered_display": "83.87", "missing_lines": 9, "excluded_lines": 0, "percent_statements_covered": 84.7457627118644, "percent_statements_covered_display": "84.75", "num_branches": 34, "num_partial_branches": 4, "covered_branches": 28, "missing_branches": 6, "percent_branches_covered": 82.3529411764706, "percent_branches_covered_display": "82.35"}, "missing_lines": [44, 45, 47, 48, 49, 51, 52, 53, 54], "excluded_lines": [], "start_line": 1, "executed_branches": [[16, 17], [16, 57], [17, 16], [17, 18], [20, 26], [20, 43], [26, 27], [26, 43], [27, 28], [27, 36], [43, 56], [202, 203], [202, 205], [206, 207], [210, 211], [210, 255], [212, 213], [212, 252], [213, 214], [232, 235], [232, 240], [240, 241], [240, 246], [241, 242], [241, 246], [247, 248], [247, 250], [252, 253]], "missing_branches": [[43, 44], [47, 48], [47, 51], [206, 210], [213, 212], [252, 210]]}}}, "app/utils/config_validator/validators.py": {"executed_lines": [3, 4, 5, 7, 9, 12, 14, 17, 18, 19, 23, 31, 32, 33, 34, 36, 39, 41, 44, 69, 72, 74, 77, 78, 83, 84, 87, 88, 93, 94, 97, 98, 99, 101, 102, 105, 106, 108, 111, 112, 113, 114, 115, 116, 119, 120, 121, 122, 123, 124, 127, 128, 129, 130, 131, 132, 133, 134, 137, 138, 139, 140, 141, 142, 143, 144, 147, 148, 149, 150, 151, 152, 155, 156, 157, 158, 159, 160, 163, 164, 169, 170, 173, 174, 175, 176, 178, 181, 183, 186, 187, 205, 208, 210, 213, 215, 217, 220, 224, 225, 228, 231, 232, 233, 238, 239, 240, 241, 246, 247, 248, 253], "summary": {"covered_lines": 112, "num_statements": 145, "percent_covered": 65.19823788546256, "percent_covered_display": "65.20", "missing_lines": 33, "excluded_lines": 0, "percent_statements_covered": 77.24137931034483, "percent_statements_covered_display": "77.24", "num_branches": 82, "num_partial_branches": 34, "covered_branches": 36, "missing_branches": 46, "percent_branches_covered": 43.90243902439025, "percent_branches_covered_display": "43.90"}, "missing_lines": [20, 24, 26, 27, 28, 46, 47, 48, 49, 52, 56, 62, 63, 66, 67, 103, 189, 191, 193, 195, 196, 197, 198, 199, 200, 202, 203, 206, 221, 226, 235, 243, 250], "excluded_lines": [], "executed_branches": [[17, 18], [19, 23], [23, 31], [31, 32], [33, 34], [44, 69], [78, 83], [88, 93], [98, 99], [102, 105], [105, 106], [112, 113], [114, 115], [120, 121], [122, 123], [128, 129], [130, 131], [132, 133], [138, 139], [140, 141], [142, 143], [148, 149], [150, 151], [156, 157], [158, 159], [164, 169], [174, 175], [186, 187], [205, 208], [220, 224], [225, 228], [232, 233], [239, 240], [239, 246], [240, 241], [247, 248]], "missing_branches": [[17, 19], [19, 20], [23, 24], [31, 33], [33, 36], [44, 46], [46, 47], [46, 48], [48, 49], [48, 52], [62, 63], [62, 66], [66, 67], [66, 69], [78, 84], [88, 94], [98, 101], [102, 103], [105, 108], [112, 114], [114, 116], [120, 122], [122, 124], [128, 130], [130, 132], [132, 134], [138, 140], [140, 142], [142, 144], [148, 150], [150, 152], [156, 158], [158, 160], [164, 170], [174, 176], [186, 189], [195, 196], [195, 205], [197, 195], [197, 198], [205, 206], [220, 221], [225, 226], [232, 235], [240, 243], [247, 250]], "functions": {"validate_email_config": {"executed_lines": [14, 17, 18, 19, 23, 31, 32, 33, 34, 36], "summary": {"covered_lines": 10, "num_statements": 15, "percent_covered": 60.0, "percent_covered_display": "60.00", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 66.66666666666667, "percent_statements_covered_display": "66.67", "num_branches": 10, "num_partial_branches": 5, "covered_branches": 5, "missing_branches": 5, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50.00"}, "missing_lines": [20, 24, 26, 27, 28], "excluded_lines": [], "start_line": 12, "executed_branches": [[17, 18], [19, 23], [23, 31], [31, 32], [33, 34]], "missing_branches": [[17, 19], [19, 20], [23, 24], [31, 33], [33, 36]]}, "validate_auth_config": {"executed_lines": [41, 44, 69], "summary": {"covered_lines": 3, "num_statements": 13, "percent_covered": 17.391304347826086, "percent_covered_display": "17.39", "missing_lines": 10, "excluded_lines": 0, "percent_statements_covered": 23.076923076923077, "percent_statements_covered_display": "23.08", "num_branches": 10, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 9, "percent_branches_covered": 10.0, "percent_branches_covered_display": "10.00"}, "missing_lines": [46, 47, 48, 49, 52, 56, 62, 63, 66, 67], "excluded_lines": [], "start_line": 39, "executed_branches": [[44, 69]], "missing_branches": [[44, 46], [46, 47], [46, 48], [48, 49], [48, 52], [62, 63], [62, 66], [66, 67], [66, 69]]}, "validate_storage_configs": {"executed_lines": [74, 77, 78, 83, 84, 87, 88, 93, 94, 97, 98, 99, 101, 102, 105, 106, 108, 111, 112, 113, 114, 115, 116, 119, 120, 121, 122, 123, 124, 127, 128, 129, 130, 131, 132, 133, 134, 137, 138, 139, 140, 141, 142, 143, 144, 147, 148, 149, 150, 151, 152, 155, 156, 157, 158, 159, 160, 163, 164, 169, 170, 173, 174, 175, 176, 178], "summary": {"covered_lines": 66, "num_statements": 67, "percent_covered": 79.81651376146789, "percent_covered_display": "79.82", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 98.50746268656717, "percent_statements_covered_display": "98.51", "num_branches": 42, "num_partial_branches": 21, "covered_branches": 21, "missing_branches": 21, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50.00"}, "missing_lines": [103], "excluded_lines": [], "start_line": 72, "executed_branches": [[78, 83], [88, 93], [98, 99], [102, 105], [105, 106], [112, 113], [114, 115], [120, 121], [122, 123], [128, 129], [130, 131], [132, 133], [138, 139], [140, 141], [142, 143], [148, 149], [150, 151], [156, 157], [158, 159], [164, 169], [174, 175]], "missing_branches": [[78, 84], [88, 94], [98, 101], [102, 103], [105, 108], [112, 114], [114, 116], [120, 122], [122, 124], [128, 130], [130, 132], [132, 134], [138, 140], [140, 142], [142, 144], [148, 150], [150, 152], [156, 158], [158, 160], [164, 170], [174, 176]]}, "validate_notification_config": {"executed_lines": [183, 186, 187, 205, 208, 210], "summary": {"covered_lines": 6, "num_statements": 18, "percent_covered": 30.76923076923077, "percent_covered_display": "30.77", "missing_lines": 12, "excluded_lines": 0, "percent_statements_covered": 33.333333333333336, "percent_statements_covered_display": "33.33", "num_branches": 8, "num_partial_branches": 2, "covered_branches": 2, "missing_branches": 6, "percent_branches_covered": 25.0, "percent_branches_covered_display": "25.00"}, "missing_lines": [189, 191, 193, 195, 196, 197, 198, 199, 200, 202, 203, 206], "excluded_lines": [], "start_line": 181, "executed_branches": [[186, 187], [205, 208]], "missing_branches": [[186, 189], [195, 196], [195, 205], [197, 195], [197, 198], [205, 206]]}, "check_all_configs": {"executed_lines": [215, 217, 220, 224, 225, 228, 231, 232, 233, 238, 239, 240, 241, 246, 247, 248, 253], "summary": {"covered_lines": 17, "num_statements": 22, "percent_covered": 70.58823529411765, "percent_covered_display": "70.59", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 77.27272727272727, "percent_statements_covered_display": "77.27", "num_branches": 12, "num_partial_branches": 5, "covered_branches": 7, "missing_branches": 5, "percent_branches_covered": 58.333333333333336, "percent_branches_covered_display": "58.33"}, "missing_lines": [221, 226, 235, 243, 250], "excluded_lines": [], "start_line": 213, "executed_branches": [[220, 224], [225, 228], [232, 233], [239, 240], [239, 246], [240, 241], [247, 248]], "missing_branches": [[220, 221], [225, 226], [232, 235], [240, 243], [247, 250]]}, "": {"executed_lines": [3, 4, 5, 7, 9, 12, 39, 72, 181, 213], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [3, 4, 5, 7, 9, 12, 14, 17, 18, 19, 23, 31, 32, 33, 34, 36, 39, 41, 44, 69, 72, 74, 77, 78, 83, 84, 87, 88, 93, 94, 97, 98, 99, 101, 102, 105, 106, 108, 111, 112, 113, 114, 115, 116, 119, 120, 121, 122, 123, 124, 127, 128, 129, 130, 131, 132, 133, 134, 137, 138, 139, 140, 141, 142, 143, 144, 147, 148, 149, 150, 151, 152, 155, 156, 157, 158, 159, 160, 163, 164, 169, 170, 173, 174, 175, 176, 178, 181, 183, 186, 187, 205, 208, 210, 213, 215, 217, 220, 224, 225, 228, 231, 232, 233, 238, 239, 240, 241, 246, 247, 248, 253], "summary": {"covered_lines": 112, "num_statements": 145, "percent_covered": 65.19823788546256, "percent_covered_display": "65.20", "missing_lines": 33, "excluded_lines": 0, "percent_statements_covered": 77.24137931034483, "percent_statements_covered_display": "77.24", "num_branches": 82, "num_partial_branches": 34, "covered_branches": 36, "missing_branches": 46, "percent_branches_covered": 43.90243902439025, "percent_branches_covered_display": "43.90"}, "missing_lines": [20, 24, 26, 27, 28, 46, 47, 48, 49, 52, 56, 62, 63, 66, 67, 103, 189, 191, 193, 195, 196, 197, 198, 199, 200, 202, 203, 206, 221, 226, 235, 243, 250], "excluded_lines": [], "start_line": 1, "executed_branches": [[17, 18], [19, 23], [23, 31], [31, 32], [33, 34], [44, 69], [78, 83], [88, 93], [98, 99], [102, 105], [105, 106], [112, 113], [114, 115], [120, 121], [122, 123], [128, 129], [130, 131], [132, 133], [138, 139], [140, 141], [142, 143], [148, 149], [150, 151], [156, 157], [158, 159], [164, 169], [174, 175], [186, 187], [205, 208], [220, 224], [225, 228], [232, 233], [239, 240], [239, 246], [240, 241], [247, 248]], "missing_branches": [[17, 19], [19, 20], [23, 24], [31, 33], [33, 36], [44, 46], [46, 47], [46, 48], [48, 49], [48, 52], [62, 63], [62, 66], [66, 67], [66, 69], [78, 84], [88, 94], [98, 101], [102, 103], [105, 108], [112, 114], [114, 116], [120, 122], [122, 124], [128, 130], [130, 132], [132, 134], [138, 140], [140, 142], [142, 144], [148, 150], [150, 152], [156, 158], [158, 160], [164, 170], [174, 176], [186, 189], [195, 196], [195, 205], [197, 195], [197, 198], [205, 206], [220, 221], [225, 226], [232, 235], [240, 243], [247, 250]]}}}, "app/utils/encryption.py": {"executed_lines": [8, 9, 10, 11, 13, 16, 19, 33, 34, 35, 37, 41, 44, 45, 47, 48, 61, 64, 74, 75, 77, 79, 81, 82, 84, 85, 87, 88, 89, 91, 94, 104, 105, 108, 110, 112, 114, 115, 116, 118, 120, 121, 122, 123, 124, 125, 128, 138, 141, 148], "summary": {"covered_lines": 50, "num_statements": 56, "percent_covered": 91.17647058823529, "percent_covered_display": "91.18", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 89.28571428571429, "percent_statements_covered_display": "89.29", "num_branches": 12, "num_partial_branches": 0, "covered_branches": 12, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [50, 51, 56, 57, 58, 59], "excluded_lines": [], "executed_branches": [[33, 34], [33, 61], [74, 75], [74, 77], [79, 81], [79, 84], [104, 105], [104, 108], [108, 110], [108, 112], [114, 115], [114, 118]], "missing_branches": [], "functions": {"_get_cipher_suite": {"executed_lines": [33, 34, 35, 37, 41, 44, 45, 47, 48, 61], "summary": {"covered_lines": 10, "num_statements": 16, "percent_covered": 66.66666666666667, "percent_covered_display": "66.67", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 62.5, "percent_statements_covered_display": "62.50", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [50, 51, 56, 57, 58, 59], "excluded_lines": [], "start_line": 19, "executed_branches": [[33, 34], [33, 61]], "missing_branches": []}, "encrypt_value": {"executed_lines": [74, 75, 77, 79, 81, 82, 84, 85, 87, 88, 89, 91], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 64, "executed_branches": [[74, 75], [74, 77], [79, 81], [79, 84]], "missing_branches": []}, "decrypt_value": {"executed_lines": [104, 105, 108, 110, 112, 114, 115, 116, 118, 120, 121, 122, 123, 124, 125], "summary": {"covered_lines": 15, "num_statements": 15, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 6, "num_partial_branches": 0, "covered_branches": 6, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 94, "executed_branches": [[104, 105], [104, 108], [108, 110], [108, 112], [114, 115], [114, 118]], "missing_branches": []}, "is_encrypted": {"executed_lines": [138], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 128, "executed_branches": [], "missing_branches": []}, "is_encryption_available": {"executed_lines": [148], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 141, "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [8, 9, 10, 11, 13, 16, 19, 64, 94, 128, 141], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [8, 9, 10, 11, 13, 16, 19, 33, 34, 35, 37, 41, 44, 45, 47, 48, 61, 64, 74, 75, 77, 79, 81, 82, 84, 85, 87, 88, 89, 91, 94, 104, 105, 108, 110, 112, 114, 115, 116, 118, 120, 121, 122, 123, 124, 125, 128, 138, 141, 148], "summary": {"covered_lines": 50, "num_statements": 56, "percent_covered": 91.17647058823529, "percent_covered_display": "91.18", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 89.28571428571429, "percent_statements_covered_display": "89.29", "num_branches": 12, "num_partial_branches": 0, "covered_branches": 12, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [50, 51, 56, 57, 58, 59], "excluded_lines": [], "start_line": 1, "executed_branches": [[33, 34], [33, 61], [74, 75], [74, 77], [79, 81], [79, 84], [104, 105], [104, 108], [108, 110], [108, 112], [114, 115], [114, 118]], "missing_branches": []}}}, "app/utils/file_operations.py": {"executed_lines": [1, 4, 9, 10, 11, 12, 13, 14, 15, 16], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "executed_branches": [[13, 14], [13, 15]], "missing_branches": [], "functions": {"hash_file": {"executed_lines": [9, 10, 11, 12, 13, 14, 15, 16], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 4, "executed_branches": [[13, 14], [13, 15]], "missing_branches": []}, "": {"executed_lines": [1, 4], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [1, 4, 9, 10, 11, 12, 13, 14, 15, 16], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [[13, 14], [13, 15]], "missing_branches": []}}}, "app/utils/file_queries.py": {"executed_lines": [8, 10, 11, 13, 16, 50, 51, 55, 57, 80, 81, 84, 86, 88, 89, 90, 92, 93, 94, 96, 97, 98, 101, 104, 107, 116, 119, 123], "summary": {"covered_lines": 28, "num_statements": 29, "percent_covered": 93.02325581395348, "percent_covered_display": "93.02", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 96.55172413793103, "percent_statements_covered_display": "96.55", "num_branches": 14, "num_partial_branches": 2, "covered_branches": 12, "missing_branches": 2, "percent_branches_covered": 85.71428571428571, "percent_branches_covered_display": "85.71"}, "missing_lines": [121], "excluded_lines": [], "executed_branches": [[50, 51], [50, 55], [80, 81], [86, 88], [86, 90], [90, 92], [90, 94], [94, 96], [94, 98], [98, 101], [98, 119], [119, 123]], "missing_branches": [[80, 84], [119, 121]], "functions": {"apply_status_filter": {"executed_lines": [50, 51, 55, 57, 80, 81, 84, 86, 88, 89, 90, 92, 93, 94, 96, 97, 98, 101, 104, 107, 116, 119, 123], "summary": {"covered_lines": 23, "num_statements": 24, "percent_covered": 92.10526315789474, "percent_covered_display": "92.11", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 95.83333333333333, "percent_statements_covered_display": "95.83", "num_branches": 14, "num_partial_branches": 2, "covered_branches": 12, "missing_branches": 2, "percent_branches_covered": 85.71428571428571, "percent_branches_covered_display": "85.71"}, "missing_lines": [121], "excluded_lines": [], "start_line": 16, "executed_branches": [[50, 51], [50, 55], [80, 81], [86, 88], [86, 90], [90, 92], [90, 94], [94, 96], [94, 98], [98, 101], [98, 119], [119, 123]], "missing_branches": [[80, 84], [119, 121]]}, "": {"executed_lines": [8, 10, 11, 13, 16], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [8, 10, 11, 13, 16, 50, 51, 55, 57, 80, 81, 84, 86, 88, 89, 90, 92, 93, 94, 96, 97, 98, 101, 104, 107, 116, 119, 123], "summary": {"covered_lines": 28, "num_statements": 29, "percent_covered": 93.02325581395348, "percent_covered_display": "93.02", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 96.55172413793103, "percent_statements_covered_display": "96.55", "num_branches": 14, "num_partial_branches": 2, "covered_branches": 12, "missing_branches": 2, "percent_branches_covered": 85.71428571428571, "percent_branches_covered_display": "85.71"}, "missing_lines": [121], "excluded_lines": [], "start_line": 1, "executed_branches": [[50, 51], [50, 55], [80, 81], [86, 88], [86, 90], [90, 92], [90, 94], [94, 96], [94, 98], [98, 101], [98, 119], [119, 123]], "missing_branches": [[80, 84], [119, 121]]}}}, "app/utils/file_splitting.py": {"executed_lines": [8, 9, 10, 11, 13, 15, 18, 53, 54, 57, 58, 59, 62, 63, 64, 65, 66, 67, 69, 74, 76, 77, 78, 79, 81, 83, 85, 86, 87, 90, 91, 92, 93, 95, 99, 119, 139, 140, 141, 142, 143, 144, 146, 147, 150, 161, 162, 164, 165, 167, 168], "summary": {"covered_lines": 51, "num_statements": 73, "percent_covered": 69.89247311827957, "percent_covered_display": "69.89", "missing_lines": 22, "excluded_lines": 0, "percent_statements_covered": 69.86301369863014, "percent_statements_covered_display": "69.86", "num_branches": 20, "num_partial_branches": 4, "covered_branches": 14, "missing_branches": 6, "percent_branches_covered": 70.0, "percent_branches_covered_display": "70.00"}, "missing_lines": [70, 71, 102, 103, 104, 107, 108, 109, 111, 112, 115, 116, 117, 118, 122, 127, 128, 129, 130, 133, 134, 135], "excluded_lines": [], "executed_branches": [[53, 54], [53, 57], [57, 58], [57, 59], [69, 74], [83, 85], [83, 139], [99, 119], [119, 83], [139, 140], [161, 162], [161, 164], [164, 165], [164, 167]], "missing_branches": [[69, 70], [99, 102], [103, 104], [103, 107], [119, 122], [139, 146]], "functions": {"split_pdf_by_size": {"executed_lines": [53, 54, 57, 58, 59, 62, 63, 64, 65, 66, 67, 69, 74, 76, 77, 78, 79, 81, 83, 85, 86, 87, 90, 91, 92, 93, 95, 99, 119, 139, 140, 141, 142, 143, 144, 146, 147], "summary": {"covered_lines": 37, "num_statements": 59, "percent_covered": 62.666666666666664, "percent_covered_display": "62.67", "missing_lines": 22, "excluded_lines": 0, "percent_statements_covered": 62.71186440677966, "percent_statements_covered_display": "62.71", "num_branches": 16, "num_partial_branches": 4, "covered_branches": 10, "missing_branches": 6, "percent_branches_covered": 62.5, "percent_branches_covered_display": "62.50"}, "missing_lines": [70, 71, 102, 103, 104, 107, 108, 109, 111, 112, 115, 116, 117, 118, 122, 127, 128, 129, 130, 133, 134, 135], "excluded_lines": [], "start_line": 18, "executed_branches": [[53, 54], [53, 57], [57, 58], [57, 59], [69, 74], [83, 85], [83, 139], [99, 119], [119, 83], [139, 140]], "missing_branches": [[69, 70], [99, 102], [103, 104], [103, 107], [119, 122], [139, 146]]}, "should_split_file": {"executed_lines": [161, 162, 164, 165, 167, 168], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 150, "executed_branches": [[161, 162], [161, 164], [164, 165], [164, 167]], "missing_branches": []}, "": {"executed_lines": [8, 9, 10, 11, 13, 15, 18, 150], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [8, 9, 10, 11, 13, 15, 18, 53, 54, 57, 58, 59, 62, 63, 64, 65, 66, 67, 69, 74, 76, 77, 78, 79, 81, 83, 85, 86, 87, 90, 91, 92, 93, 95, 99, 119, 139, 140, 141, 142, 143, 144, 146, 147, 150, 161, 162, 164, 165, 167, 168], "summary": {"covered_lines": 51, "num_statements": 73, "percent_covered": 69.89247311827957, "percent_covered_display": "69.89", "missing_lines": 22, "excluded_lines": 0, "percent_statements_covered": 69.86301369863014, "percent_statements_covered_display": "69.86", "num_branches": 20, "num_partial_branches": 4, "covered_branches": 14, "missing_branches": 6, "percent_branches_covered": 70.0, "percent_branches_covered_display": "70.00"}, "missing_lines": [70, 71, 102, 103, 104, 107, 108, 109, 111, 112, 115, 116, 117, 118, 122, 127, 128, 129, 130, 133, 134, 135], "excluded_lines": [], "start_line": 1, "executed_branches": [[53, 54], [53, 57], [57, 58], [57, 59], [69, 74], [83, 85], [83, 139], [99, 119], [119, 83], [139, 140], [161, 162], [161, 164], [164, 165], [164, 167]], "missing_branches": [[69, 70], [99, 102], [103, 104], [103, 107], [119, 122], [139, 146]]}}}, "app/utils/file_status.py": {"executed_lines": [5, 7, 9, 10, 13, 26, 27, 36, 39, 46, 54, 74, 80, 82, 105, 106, 109, 116, 117, 118, 119, 120, 123, 124, 125, 133, 134, 135, 138, 139, 140, 141, 142, 144, 147, 148, 149, 150, 151, 152, 157, 159, 166, 169], "summary": {"covered_lines": 44, "num_statements": 65, "percent_covered": 60.824742268041234, "percent_covered_display": "60.82", "missing_lines": 21, "excluded_lines": 0, "percent_statements_covered": 67.6923076923077, "percent_statements_covered_display": "67.69", "num_branches": 32, "num_partial_branches": 5, "covered_branches": 15, "missing_branches": 17, "percent_branches_covered": 46.875, "percent_branches_covered_display": "46.88"}, "missing_lines": [28, 126, 132, 154, 182, 183, 187, 188, 189, 190, 193, 196, 199, 202, 203, 204, 205, 206, 207, 209, 211], "excluded_lines": [], "executed_branches": [[27, 36], [105, 106], [117, 118], [117, 123], [118, 119], [124, 125], [124, 166], [125, 133], [134, 135], [134, 138], [147, 148], [147, 149], [149, 150], [149, 151], [151, 152]], "missing_branches": [[27, 28], [105, 109], [118, 120], [125, 126], [151, 154], [182, 183], [182, 187], [188, 189], [188, 193], [189, 188], [189, 190], [202, 203], [202, 204], [204, 205], [204, 206], [206, 207], [206, 209]], "functions": {"get_file_processing_status": {"executed_lines": [26, 27, 36, 39, 46], "summary": {"covered_lines": 5, "num_statements": 6, "percent_covered": 75.0, "percent_covered_display": "75.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 83.33333333333333, "percent_statements_covered_display": "83.33", "num_branches": 2, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 1, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50.00"}, "missing_lines": [28], "excluded_lines": [], "start_line": 13, "executed_branches": [[27, 36]], "missing_branches": [[27, 28]]}, "get_files_processing_status": {"executed_lines": [74, 80, 82, 105, 106, 109, 116, 117, 118, 119, 120, 123, 124, 125, 133, 134, 135, 138, 139, 140, 141, 142, 144, 147, 148, 149, 150, 151, 152, 157, 159, 166], "summary": {"covered_lines": 32, "num_statements": 35, "percent_covered": 86.79245283018868, "percent_covered_display": "86.79", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 91.42857142857143, "percent_statements_covered_display": "91.43", "num_branches": 18, "num_partial_branches": 4, "covered_branches": 14, "missing_branches": 4, "percent_branches_covered": 77.77777777777777, "percent_branches_covered_display": "77.78"}, "missing_lines": [126, 132, 154], "excluded_lines": [], "start_line": 54, "executed_branches": [[105, 106], [117, 118], [117, 123], [118, 119], [124, 125], [124, 166], [125, 133], [134, 135], [134, 138], [147, 148], [147, 149], [149, 150], [149, 151], [151, 152]], "missing_branches": [[105, 109], [118, 120], [125, 126], [151, 154]]}, "_compute_status_from_logs": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 17, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 17, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00", "num_branches": 12, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 12, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0.00"}, "missing_lines": [182, 183, 187, 188, 189, 190, 193, 196, 199, 202, 203, 204, 205, 206, 207, 209, 211], "excluded_lines": [], "start_line": 169, "executed_branches": [], "missing_branches": [[182, 183], [182, 187], [188, 189], [188, 193], [189, 188], [189, 190], [202, 203], [202, 204], [204, 205], [204, 206], [206, 207], [206, 209]]}, "": {"executed_lines": [5, 7, 9, 10, 13, 54, 169], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [5, 7, 9, 10, 13, 26, 27, 36, 39, 46, 54, 74, 80, 82, 105, 106, 109, 116, 117, 118, 119, 120, 123, 124, 125, 133, 134, 135, 138, 139, 140, 141, 142, 144, 147, 148, 149, 150, 151, 152, 157, 159, 166, 169], "summary": {"covered_lines": 44, "num_statements": 65, "percent_covered": 60.824742268041234, "percent_covered_display": "60.82", "missing_lines": 21, "excluded_lines": 0, "percent_statements_covered": 67.6923076923077, "percent_statements_covered_display": "67.69", "num_branches": 32, "num_partial_branches": 5, "covered_branches": 15, "missing_branches": 17, "percent_branches_covered": 46.875, "percent_branches_covered_display": "46.88"}, "missing_lines": [28, 126, 132, 154, 182, 183, 187, 188, 189, 190, 193, 196, 199, 202, 203, 204, 205, 206, 207, 209, 211], "excluded_lines": [], "start_line": 1, "executed_branches": [[27, 36], [105, 106], [117, 118], [117, 123], [118, 119], [124, 125], [124, 166], [125, 133], [134, 135], [134, 138], [147, 148], [147, 149], [149, 150], [149, 151], [151, 152]], "missing_branches": [[27, 28], [105, 109], [118, 120], [125, 126], [151, 154], [182, 183], [182, 187], [188, 189], [188, 193], [189, 188], [189, 190], [202, 203], [202, 204], [204, 205], [204, 206], [206, 207], [206, 209]]}}}, "app/utils/filename_utils.py": {"executed_lines": [1, 2, 3, 4, 5, 6, 8, 11, 24, 25, 27, 28, 29, 30, 33, 34, 37, 38, 39, 41, 42, 43, 46, 47, 48, 50, 51, 52, 72, 96, 97, 98, 101, 102, 104, 105, 106, 107, 108, 111, 123, 141, 145, 149, 152, 153, 156, 159, 160, 162, 165, 173, 174, 177, 178, 181, 184, 185, 187, 188, 191, 192, 194, 196, 198, 201, 203], "summary": {"covered_lines": 67, "num_statements": 84, "percent_covered": 79.46428571428571, "percent_covered_display": "79.46", "missing_lines": 17, "excluded_lines": 0, "percent_statements_covered": 79.76190476190476, "percent_statements_covered_display": "79.76", "num_branches": 28, "num_partial_branches": 2, "covered_branches": 22, "missing_branches": 6, "percent_branches_covered": 78.57142857142857, "percent_branches_covered_display": "78.57"}, "missing_lines": [55, 56, 57, 58, 59, 60, 61, 62, 65, 66, 67, 69, 113, 114, 115, 116, 120], "excluded_lines": [], "executed_branches": [[24, 25], [24, 27], [33, 34], [33, 37], [41, 42], [41, 46], [50, 51], [97, 98], [97, 101], [106, 107], [106, 108], [111, 102], [159, 160], [159, 162], [177, 178], [177, 181], [185, 187], [185, 191], [191, 192], [191, 198], [192, 194], [192, 196]], "missing_branches": [[50, 55], [56, 57], [56, 65], [59, 60], [59, 62], [111, 113]], "functions": {"get_unique_filename": {"executed_lines": [24, 25, 27, 28, 29, 30, 33, 34, 37, 38, 39, 41, 42, 43, 46, 47, 48, 50, 51, 52], "summary": {"covered_lines": 20, "num_statements": 32, "percent_covered": 61.36363636363637, "percent_covered_display": "61.36", "missing_lines": 12, "excluded_lines": 0, "percent_statements_covered": 62.5, "percent_statements_covered_display": "62.50", "num_branches": 12, "num_partial_branches": 1, "covered_branches": 7, "missing_branches": 5, "percent_branches_covered": 58.333333333333336, "percent_branches_covered_display": "58.33"}, "missing_lines": [55, 56, 57, 58, 59, 60, 61, 62, 65, 66, 67, 69], "excluded_lines": [], "start_line": 11, "executed_branches": [[24, 25], [24, 27], [33, 34], [33, 37], [41, 42], [41, 46], [50, 51]], "missing_branches": [[50, 55], [56, 57], [56, 65], [59, 60], [59, 62]]}, "get_unique_filepath_with_counter": {"executed_lines": [96, 97, 98, 101, 102, 104, 105, 106, 107, 108, 111], "summary": {"covered_lines": 11, "num_statements": 16, "percent_covered": 72.72727272727273, "percent_covered_display": "72.73", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 68.75, "percent_statements_covered_display": "68.75", "num_branches": 6, "num_partial_branches": 1, "covered_branches": 5, "missing_branches": 1, "percent_branches_covered": 83.33333333333333, "percent_branches_covered_display": "83.33"}, "missing_lines": [113, 114, 115, 116, 120], "excluded_lines": [], "start_line": 72, "executed_branches": [[97, 98], [97, 101], [106, 107], [106, 108], [111, 102]], "missing_branches": [[111, 113]]}, "sanitize_filename": {"executed_lines": [141, 145, 149, 152, 153, 156, 159, 160, 162], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 123, "executed_branches": [[159, 160], [159, 162]], "missing_branches": []}, "extract_remote_path": {"executed_lines": [173, 174, 177, 178, 181, 184, 185, 187, 188, 191, 192, 194, 196, 198, 201, 203], "summary": {"covered_lines": 16, "num_statements": 16, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 8, "num_partial_branches": 0, "covered_branches": 8, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 165, "executed_branches": [[177, 178], [177, 181], [185, 187], [185, 191], [191, 192], [191, 198], [192, 194], [192, 196]], "missing_branches": []}, "": {"executed_lines": [1, 2, 3, 4, 5, 6, 8, 11, 72, 123, 165], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [1, 2, 3, 4, 5, 6, 8, 11, 24, 25, 27, 28, 29, 30, 33, 34, 37, 38, 39, 41, 42, 43, 46, 47, 48, 50, 51, 52, 72, 96, 97, 98, 101, 102, 104, 105, 106, 107, 108, 111, 123, 141, 145, 149, 152, 153, 156, 159, 160, 162, 165, 173, 174, 177, 178, 181, 184, 185, 187, 188, 191, 192, 194, 196, 198, 201, 203], "summary": {"covered_lines": 67, "num_statements": 84, "percent_covered": 79.46428571428571, "percent_covered_display": "79.46", "missing_lines": 17, "excluded_lines": 0, "percent_statements_covered": 79.76190476190476, "percent_statements_covered_display": "79.76", "num_branches": 28, "num_partial_branches": 2, "covered_branches": 22, "missing_branches": 6, "percent_branches_covered": 78.57142857142857, "percent_branches_covered_display": "78.57"}, "missing_lines": [55, 56, 57, 58, 59, 60, 61, 62, 65, 66, 67, 69, 113, 114, 115, 116, 120], "excluded_lines": [], "start_line": 1, "executed_branches": [[24, 25], [24, 27], [33, 34], [33, 37], [41, 42], [41, 46], [50, 51], [97, 98], [97, 101], [106, 107], [106, 108], [111, 102], [159, 160], [159, 162], [177, 178], [177, 181], [185, 187], [185, 191], [191, 192], [191, 198], [192, 194], [192, 196]], "missing_branches": [[50, 55], [56, 57], [56, 65], [59, 60], [59, 62], [111, 113]]}}}, "app/utils/logging.py": {"executed_lines": [1, 2, 3, 4, 6, 7, 10, 19, 20, 21, 22, 24, 26, 27, 29, 30, 31, 32, 33, 34, 35, 39, 41, 42, 43, 47, 48, 49, 52, 55, 56, 58, 59, 60, 63, 82, 83, 84, 85, 88, 90, 98, 101, 103, 109, 111, 124, 125, 127, 128, 129, 132], "summary": {"covered_lines": 52, "num_statements": 59, "percent_covered": 85.18518518518519, "percent_covered_display": "85.19", "missing_lines": 7, "excluded_lines": 0, "percent_statements_covered": 88.13559322033899, "percent_statements_covered_display": "88.14", "num_branches": 22, "num_partial_branches": 5, "covered_branches": 17, "missing_branches": 5, "percent_branches_covered": 77.27272727272727, "percent_branches_covered_display": "77.27"}, "missing_lines": [36, 37, 86, 113, 121, 126, 130], "excluded_lines": [], "executed_branches": [[29, -24], [29, 30], [33, -24], [33, 34], [55, -52], [55, 56], [58, 59], [82, 83], [82, 88], [85, 88], [101, 103], [101, 132], [111, 124], [125, 127], [127, 128], [127, 129], [129, 132]], "missing_branches": [[58, 60], [85, 86], [111, 113], [125, 126], [129, 130]], "functions": {"TaskLogCollector.__init__": {"executed_lines": [20, 21, 22], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 19, "executed_branches": [], "missing_branches": []}, "TaskLogCollector.emit": {"executed_lines": [26, 27, 29, 30, 31, 32, 33, 34, 35], "summary": {"covered_lines": 9, "num_statements": 11, "percent_covered": 86.66666666666667, "percent_covered_display": "86.67", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 81.81818181818181, "percent_statements_covered_display": "81.82", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [36, 37], "excluded_lines": [], "start_line": 24, "executed_branches": [[29, -24], [29, 30], [33, -24], [33, 34]], "missing_branches": []}, "TaskLogCollector.drain": {"executed_lines": [41, 42, 43], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 39, "executed_branches": [], "missing_branches": []}, "_ensure_collector_installed": {"executed_lines": [55, 56, 58, 59, 60], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 88.88888888888889, "percent_covered_display": "88.89", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 4, "num_partial_branches": 1, "covered_branches": 3, "missing_branches": 1, "percent_branches_covered": 75.0, "percent_branches_covered_display": "75.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 52, "executed_branches": [[55, -52], [55, 56], [58, 59]], "missing_branches": [[58, 60]]}, "log_task_progress": {"executed_lines": [82, 83, 84, 85, 88, 90, 98, 101, 103, 109, 111, 124, 125, 127, 128, 129, 132], "summary": {"covered_lines": 17, "num_statements": 22, "percent_covered": 75.0, "percent_covered_display": "75.00", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 77.27272727272727, "percent_statements_covered_display": "77.27", "num_branches": 14, "num_partial_branches": 4, "covered_branches": 10, "missing_branches": 4, "percent_branches_covered": 71.42857142857143, "percent_branches_covered_display": "71.43"}, "missing_lines": [86, 113, 121, 126, 130], "excluded_lines": [], "start_line": 63, "executed_branches": [[82, 83], [82, 88], [85, 88], [101, 103], [101, 132], [111, 124], [125, 127], [127, 128], [127, 129], [129, 132]], "missing_branches": [[85, 86], [111, 113], [125, 126], [129, 130]]}, "": {"executed_lines": [1, 2, 3, 4, 6, 7, 10, 19, 24, 39, 47, 48, 49, 52, 63], "summary": {"covered_lines": 15, "num_statements": 15, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"TaskLogCollector": {"executed_lines": [20, 21, 22, 26, 27, 29, 30, 31, 32, 33, 34, 35, 41, 42, 43], "summary": {"covered_lines": 15, "num_statements": 17, "percent_covered": 90.47619047619048, "percent_covered_display": "90.48", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 88.23529411764706, "percent_statements_covered_display": "88.24", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [36, 37], "excluded_lines": [], "start_line": 10, "executed_branches": [[29, -24], [29, 30], [33, -24], [33, 34]], "missing_branches": []}, "": {"executed_lines": [1, 2, 3, 4, 6, 7, 10, 19, 24, 39, 47, 48, 49, 52, 55, 56, 58, 59, 60, 63, 82, 83, 84, 85, 88, 90, 98, 101, 103, 109, 111, 124, 125, 127, 128, 129, 132], "summary": {"covered_lines": 37, "num_statements": 42, "percent_covered": 83.33333333333333, "percent_covered_display": "83.33", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 88.0952380952381, "percent_statements_covered_display": "88.10", "num_branches": 18, "num_partial_branches": 5, "covered_branches": 13, "missing_branches": 5, "percent_branches_covered": 72.22222222222223, "percent_branches_covered_display": "72.22"}, "missing_lines": [86, 113, 121, 126, 130], "excluded_lines": [], "start_line": 1, "executed_branches": [[55, -52], [55, 56], [58, 59], [82, 83], [82, 88], [85, 88], [101, 103], [101, 132], [111, 124], [125, 127], [127, 128], [127, 129], [129, 132]], "missing_branches": [[58, 60], [85, 86], [111, 113], [125, 126], [129, 130]]}}}, "app/utils/migrate_logs_to_steps.py": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 115, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 115, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00", "num_branches": 48, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 48, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0.00"}, "missing_lines": [8, 9, 11, 13, 15, 18, 40, 42, 44, 51, 52, 53, 56, 59, 60, 66, 68, 73, 76, 77, 78, 79, 80, 82, 83, 86, 87, 95, 96, 98, 99, 100, 107, 108, 110, 111, 112, 113, 115, 118, 139, 141, 142, 143, 146, 147, 155, 157, 158, 159, 161, 163, 165, 166, 167, 168, 170, 172, 173, 174, 175, 176, 178, 180, 181, 186, 189, 209, 220, 221, 223, 224, 226, 228, 229, 232, 233, 234, 238, 239, 241, 242, 243, 245, 246, 247, 248, 250, 257, 260, 278, 281, 285, 286, 287, 288, 290, 291, 294, 295, 298, 301, 302, 303, 304, 305, 308, 309, 311, 312, 315, 318, 319, 320, 323], "excluded_lines": [], "executed_branches": [], "missing_branches": [[51, 52], [51, 56], [59, 60], [59, 98], [66, 68], [66, 86], [68, 73], [68, 82], [98, 99], [98, 107], [141, 142], [141, 186], [146, 147], [146, 155], [155, 157], [155, 161], [157, 158], [157, 159], [161, 163], [161, 170], [163, 165], [163, 166], [170, 172], [170, 178], [172, 173], [172, 174], [178, 141], [178, 180], [180, 141], [180, 181], [232, 233], [232, 250], [238, 232], [238, 239], [241, 242], [241, 245], [285, 286], [285, 290], [301, 302], [301, 318], [302, 303], [302, 308], [311, 301], [311, 312], [318, 319], [318, 323], [319, 318], [319, 320]], "functions": {"migrate_logs_to_steps": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 33, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 33, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00", "num_branches": 10, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 10, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0.00"}, "missing_lines": [40, 42, 44, 51, 52, 53, 56, 59, 60, 66, 68, 73, 76, 77, 78, 79, 80, 82, 83, 86, 87, 95, 96, 98, 99, 100, 107, 108, 110, 111, 112, 113, 115], "excluded_lines": [], "start_line": 18, "executed_branches": [], "missing_branches": [[51, 52], [51, 56], [59, 60], [59, 98], [66, 68], [66, 86], [68, 73], [68, 82], [98, 99], [98, 107]]}, "_parse_logs_to_step_states": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 26, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 26, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00", "num_branches": 20, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 20, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0.00"}, "missing_lines": [139, 141, 142, 143, 146, 147, 155, 157, 158, 159, 161, 163, 165, 166, 167, 168, 170, 172, 173, 174, 175, 176, 178, 180, 181, 186], "excluded_lines": [], "start_line": 118, "executed_branches": [], "missing_branches": [[141, 142], [141, 186], [146, 147], [146, 155], [155, 157], [155, 161], [157, 158], [157, 159], [161, 163], [161, 170], [163, 165], [163, 166], [170, 172], [170, 178], [172, 173], [172, 174], [178, 141], [178, 180], [180, 141], [180, 181]]}, "migrate_all_files": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 22, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 22, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00", "num_branches": 6, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 6, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0.00"}, "missing_lines": [209, 220, 221, 223, 224, 226, 228, 229, 232, 233, 234, 238, 239, 241, 242, 243, 245, 246, 247, 248, 250, 257], "excluded_lines": [], "start_line": 189, "executed_branches": [], "missing_branches": [[232, 233], [232, 250], [238, 232], [238, 239], [241, 242], [241, 245]]}, "verify_migration": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 25, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 25, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00", "num_branches": 12, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 12, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0.00"}, "missing_lines": [278, 281, 285, 286, 287, 288, 290, 291, 294, 295, 298, 301, 302, 303, 304, 305, 308, 309, 311, 312, 315, 318, 319, 320, 323], "excluded_lines": [], "start_line": 260, "executed_branches": [], "missing_branches": [[285, 286], [285, 290], [301, 302], [301, 318], [302, 303], [302, 308], [311, 301], [311, 312], [318, 319], [318, 323], [319, 318], [319, 320]]}, "": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 9, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 9, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [8, 9, 11, 13, 15, 18, 118, 189, 260], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 115, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 115, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00", "num_branches": 48, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 48, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0.00"}, "missing_lines": [8, 9, 11, 13, 15, 18, 40, 42, 44, 51, 52, 53, 56, 59, 60, 66, 68, 73, 76, 77, 78, 79, 80, 82, 83, 86, 87, 95, 96, 98, 99, 100, 107, 108, 110, 111, 112, 113, 115, 118, 139, 141, 142, 143, 146, 147, 155, 157, 158, 159, 161, 163, 165, 166, 167, 168, 170, 172, 173, 174, 175, 176, 178, 180, 181, 186, 189, 209, 220, 221, 223, 224, 226, 228, 229, 232, 233, 234, 238, 239, 241, 242, 243, 245, 246, 247, 248, 250, 257, 260, 278, 281, 285, 286, 287, 288, 290, 291, 294, 295, 298, 301, 302, 303, 304, 305, 308, 309, 311, 312, 315, 318, 319, 320, 323], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": [[51, 52], [51, 56], [59, 60], [59, 98], [66, 68], [66, 86], [68, 73], [68, 82], [98, 99], [98, 107], [141, 142], [141, 186], [146, 147], [146, 155], [155, 157], [155, 161], [157, 158], [157, 159], [161, 163], [161, 170], [163, 165], [163, 166], [170, 172], [170, 178], [172, 173], [172, 174], [178, 141], [178, 180], [180, 141], [180, 181], [232, 233], [232, 250], [238, 232], [238, 239], [241, 242], [241, 245], [285, 286], [285, 290], [301, 302], [301, 318], [302, 303], [302, 308], [311, 301], [311, 312], [318, 319], [318, 323], [319, 318], [319, 320]]}}}, "app/utils/notification.py": {"executed_lines": [1, 2, 4, 6, 8, 11, 14, 18, 19, 22, 23, 24, 25, 26, 27, 28, 30, 32, 35, 38, 41, 42, 43, 44, 45, 48, 70, 71, 72, 121, 123, 124, 126, 127, 134, 139, 141, 142, 144, 145, 151, 156, 158, 159, 161, 162, 163, 166, 168, 169, 171, 172, 173, 176, 178, 179, 182, 183, 186, 187, 188, 191, 193, 194, 204], "summary": {"covered_lines": 65, "num_statements": 97, "percent_covered": 63.565891472868216, "percent_covered_display": "63.57", "missing_lines": 32, "excluded_lines": 0, "percent_statements_covered": 67.01030927835052, "percent_statements_covered_display": "67.01", "num_branches": 32, "num_partial_branches": 1, "covered_branches": 17, "missing_branches": 15, "percent_branches_covered": 53.125, "percent_branches_covered_display": "53.12"}, "missing_lines": [74, 75, 78, 79, 80, 81, 82, 83, 84, 87, 88, 89, 91, 92, 94, 95, 96, 97, 99, 100, 101, 103, 104, 105, 107, 109, 110, 112, 114, 116, 117, 118], "excluded_lines": [], "executed_branches": [[18, 19], [18, 32], [22, 23], [22, 30], [23, 24], [23, 32], [70, 71], [123, 124], [123, 126], [141, 142], [141, 144], [158, 159], [158, 161], [168, 169], [168, 171], [178, 179], [178, 182]], "missing_branches": [[70, 74], [79, 80], [79, 81], [81, 82], [81, 83], [83, 84], [83, 87], [87, 88], [87, 91], [94, 95], [94, 107], [99, 100], [99, 103], [109, 110], [109, 112]], "functions": {"init_apprise": {"executed_lines": [18, 19, 22, 23, 24, 25, 26, 27, 28, 30, 32], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 6, "num_partial_branches": 0, "covered_branches": 6, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 14, "executed_branches": [[18, 19], [18, 32], [22, 23], [22, 30], [23, 24], [23, 32]], "missing_branches": []}, "_mask_sensitive_url": {"executed_lines": [38, 41, 42, 43, 44, 45], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 35, "executed_branches": [], "missing_branches": []}, "send_notification": {"executed_lines": [70, 71, 72], "summary": {"covered_lines": 3, "num_statements": 35, "percent_covered": 7.8431372549019605, "percent_covered_display": "7.84", "missing_lines": 32, "excluded_lines": 0, "percent_statements_covered": 8.571428571428571, "percent_statements_covered_display": "8.57", "num_branches": 16, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 15, "percent_branches_covered": 6.25, "percent_branches_covered_display": "6.25"}, "missing_lines": [74, 75, 78, 79, 80, 81, 82, 83, 84, 87, 88, 89, 91, 92, 94, 95, 96, 97, 99, 100, 101, 103, 104, 105, 107, 109, 110, 112, 114, 116, 117, 118], "excluded_lines": [], "start_line": 48, "executed_branches": [[70, 71]], "missing_branches": [[70, 74], [79, 80], [79, 81], [81, 82], [81, 83], [83, 84], [83, 87], [87, 88], [87, 91], [94, 95], [94, 107], [99, 100], [99, 103], [109, 110], [109, 112]]}, "notify_celery_failure": {"executed_lines": [123, 124, 126, 127, 134], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 121, "executed_branches": [[123, 124], [123, 126]], "missing_branches": []}, "notify_credential_failure": {"executed_lines": [141, 142, 144, 145, 151], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 139, "executed_branches": [[141, 142], [141, 144]], "missing_branches": []}, "notify_startup": {"executed_lines": [158, 159, 161, 162, 163], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 156, "executed_branches": [[158, 159], [158, 161]], "missing_branches": []}, "notify_shutdown": {"executed_lines": [168, 169, 171, 172, 173], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 166, "executed_branches": [[168, 169], [168, 171]], "missing_branches": []}, "notify_file_processed": {"executed_lines": [178, 179, 182, 183, 186, 187, 188, 191, 193, 194, 204], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 176, "executed_branches": [[178, 179], [178, 182]], "missing_branches": []}, "": {"executed_lines": [1, 2, 4, 6, 8, 11, 14, 35, 48, 121, 139, 156, 166, 176], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [1, 2, 4, 6, 8, 11, 14, 18, 19, 22, 23, 24, 25, 26, 27, 28, 30, 32, 35, 38, 41, 42, 43, 44, 45, 48, 70, 71, 72, 121, 123, 124, 126, 127, 134, 139, 141, 142, 144, 145, 151, 156, 158, 159, 161, 162, 163, 166, 168, 169, 171, 172, 173, 176, 178, 179, 182, 183, 186, 187, 188, 191, 193, 194, 204], "summary": {"covered_lines": 65, "num_statements": 97, "percent_covered": 63.565891472868216, "percent_covered_display": "63.57", "missing_lines": 32, "excluded_lines": 0, "percent_statements_covered": 67.01030927835052, "percent_statements_covered_display": "67.01", "num_branches": 32, "num_partial_branches": 1, "covered_branches": 17, "missing_branches": 15, "percent_branches_covered": 53.125, "percent_branches_covered_display": "53.12"}, "missing_lines": [74, 75, 78, 79, 80, 81, 82, 83, 84, 87, 88, 89, 91, 92, 94, 95, 96, 97, 99, 100, 101, 103, 104, 105, 107, 109, 110, 112, 114, 116, 117, 118], "excluded_lines": [], "start_line": 1, "executed_branches": [[18, 19], [18, 32], [22, 23], [22, 30], [23, 24], [23, 32], [70, 71], [123, 124], [123, 126], [141, 142], [141, 144], [158, 159], [158, 161], [168, 169], [168, 171], [178, 179], [178, 182]], "missing_branches": [[70, 74], [79, 80], [79, 81], [81, 82], [81, 83], [83, 84], [83, 87], [87, 88], [87, 91], [94, 95], [94, 107], [99, 100], [99, 103], [109, 110], [109, 112]]}}}, "app/utils/oauth_helper.py": {"executed_lines": [6, 7, 9, 10, 12, 14, 17, 38, 39, 41, 42, 45, 50, 53, 54, 57, 59, 61, 62, 64, 65, 66, 67, 68, 69, 71, 76, 79, 80, 81, 87, 89, 91, 93, 94, 95, 96, 100, 101, 102], "summary": {"covered_lines": 40, "num_statements": 40, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 6, "num_partial_branches": 0, "covered_branches": 6, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "executed_branches": [[38, 39], [38, 41], [59, 61], [59, 76], [79, 80], [79, 87]], "missing_branches": [], "functions": {"exchange_oauth_token": {"executed_lines": [38, 39, 41, 42, 45, 50, 53, 54, 57, 59, 61, 62, 64, 65, 66, 67, 68, 69, 71, 76, 79, 80, 81, 87, 89, 91, 93, 94, 95, 96, 100, 101, 102], "summary": {"covered_lines": 33, "num_statements": 33, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 6, "num_partial_branches": 0, "covered_branches": 6, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 17, "executed_branches": [[38, 39], [38, 41], [59, 61], [59, 76], [79, 80], [79, 87]], "missing_branches": []}, "": {"executed_lines": [6, 7, 9, 10, 12, 14, 17], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [6, 7, 9, 10, 12, 14, 17, 38, 39, 41, 42, 45, 50, 53, 54, 57, 59, 61, 62, 64, 65, 66, 67, 68, 69, 71, 76, 79, 80, 81, 87, 89, 91, 93, 94, 95, 96, 100, 101, 102], "summary": {"covered_lines": 40, "num_statements": 40, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 6, "num_partial_branches": 0, "covered_branches": 6, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [[38, 39], [38, 41], [59, 61], [59, 76], [79, 80], [79, 87]], "missing_branches": []}}}, "app/utils/settings_service.py": {"executed_lines": [10, 11, 13, 14, 16, 18, 21, 860, 873, 874, 875, 876, 879, 880, 885, 891, 905, 907, 908, 910, 911, 913, 914, 915, 919, 920, 921, 923, 924, 925, 926, 927, 934, 946, 947, 948, 950, 952, 953, 958, 960, 966, 977, 978, 979, 980, 981, 982, 983, 984, 991, 1001, 1014, 1021, 1022, 1023, 1024, 1025, 1026, 1027, 1030, 1041, 1042, 1045, 1049, 1050, 1051, 1053, 1060, 1061, 1063], "summary": {"covered_lines": 71, "num_statements": 95, "percent_covered": 76.8, "percent_covered_display": "76.80", "missing_lines": 24, "excluded_lines": 0, "percent_statements_covered": 74.73684210526316, "percent_statements_covered_display": "74.74", "num_branches": 30, "num_partial_branches": 5, "covered_branches": 25, "missing_branches": 5, "percent_branches_covered": 83.33333333333333, "percent_branches_covered_display": "83.33"}, "missing_lines": [881, 883, 886, 887, 888, 917, 928, 929, 930, 931, 954, 956, 961, 962, 963, 985, 986, 987, 988, 1046, 1054, 1055, 1056, 1057], "excluded_lines": [], "executed_branches": [[875, 876], [875, 879], [880, 885], [910, 911], [910, 919], [913, 914], [920, 921], [920, 923], [950, 952], [950, 960], [953, 958], [979, 980], [979, 984], [1022, 1023], [1022, 1027], [1024, 1025], [1024, 1026], [1045, 1049], [1049, 1050], [1049, 1053], [1050, 1051], [1050, 1060], [1053, 1060], [1060, 1061], [1060, 1063]], "missing_branches": [[880, 881], [913, 917], [953, 954], [1045, 1046], [1053, 1054]], "functions": {"get_setting_from_db": {"executed_lines": [873, 874, 875, 876, 879, 880, 885], "summary": {"covered_lines": 7, "num_statements": 12, "percent_covered": 62.5, "percent_covered_display": "62.50", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 58.333333333333336, "percent_statements_covered_display": "58.33", "num_branches": 4, "num_partial_branches": 1, "covered_branches": 3, "missing_branches": 1, "percent_branches_covered": 75.0, "percent_branches_covered_display": "75.00"}, "missing_lines": [881, 883, 886, 887, 888], "excluded_lines": [], "start_line": 860, "executed_branches": [[875, 876], [875, 879], [880, 885]], "missing_branches": [[880, 881]]}, "save_setting_to_db": {"executed_lines": [905, 907, 908, 910, 911, 913, 914, 915, 919, 920, 921, 923, 924, 925, 926, 927], "summary": {"covered_lines": 16, "num_statements": 21, "percent_covered": 77.77777777777777, "percent_covered_display": "77.78", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 76.19047619047619, "percent_statements_covered_display": "76.19", "num_branches": 6, "num_partial_branches": 1, "covered_branches": 5, "missing_branches": 1, "percent_branches_covered": 83.33333333333333, "percent_branches_covered_display": "83.33"}, "missing_lines": [917, 928, 929, 930, 931], "excluded_lines": [], "start_line": 891, "executed_branches": [[910, 911], [910, 919], [913, 914], [920, 921], [920, 923]], "missing_branches": [[913, 917]]}, "get_all_settings_from_db": {"executed_lines": [946, 947, 948, 950, 952, 953, 958, 960], "summary": {"covered_lines": 8, "num_statements": 13, "percent_covered": 64.70588235294117, "percent_covered_display": "64.71", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 61.53846153846154, "percent_statements_covered_display": "61.54", "num_branches": 4, "num_partial_branches": 1, "covered_branches": 3, "missing_branches": 1, "percent_branches_covered": 75.0, "percent_branches_covered_display": "75.00"}, "missing_lines": [954, 956, 961, 962, 963], "excluded_lines": [], "start_line": 934, "executed_branches": [[950, 952], [950, 960], [953, 958]], "missing_branches": [[953, 954]]}, "delete_setting_from_db": {"executed_lines": [977, 978, 979, 980, 981, 982, 983, 984], "summary": {"covered_lines": 8, "num_statements": 12, "percent_covered": 71.42857142857143, "percent_covered_display": "71.43", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 66.66666666666667, "percent_statements_covered_display": "66.67", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [985, 986, 987, 988], "excluded_lines": [], "start_line": 966, "executed_branches": [[979, 980], [979, 984]], "missing_branches": []}, "get_setting_metadata": {"executed_lines": [1001], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 991, "executed_branches": [], "missing_branches": []}, "get_settings_by_category": {"executed_lines": [1021, 1022, 1023, 1024, 1025, 1026, 1027], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1014, "executed_branches": [[1022, 1023], [1022, 1027], [1024, 1025], [1024, 1026]], "missing_branches": []}, "validate_setting_value": {"executed_lines": [1041, 1042, 1045, 1049, 1050, 1051, 1053, 1060, 1061, 1063], "summary": {"covered_lines": 10, "num_statements": 15, "percent_covered": 72.0, "percent_covered_display": "72.00", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 66.66666666666667, "percent_statements_covered_display": "66.67", "num_branches": 10, "num_partial_branches": 2, "covered_branches": 8, "missing_branches": 2, "percent_branches_covered": 80.0, "percent_branches_covered_display": "80.00"}, "missing_lines": [1046, 1054, 1055, 1056, 1057], "excluded_lines": [], "start_line": 1030, "executed_branches": [[1045, 1049], [1049, 1050], [1049, 1053], [1050, 1051], [1050, 1060], [1053, 1060], [1060, 1061], [1060, 1063]], "missing_branches": [[1045, 1046], [1053, 1054]]}, "": {"executed_lines": [10, 11, 13, 14, 16, 18, 21, 860, 891, 934, 966, 991, 1014, 1030], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [10, 11, 13, 14, 16, 18, 21, 860, 873, 874, 875, 876, 879, 880, 885, 891, 905, 907, 908, 910, 911, 913, 914, 915, 919, 920, 921, 923, 924, 925, 926, 927, 934, 946, 947, 948, 950, 952, 953, 958, 960, 966, 977, 978, 979, 980, 981, 982, 983, 984, 991, 1001, 1014, 1021, 1022, 1023, 1024, 1025, 1026, 1027, 1030, 1041, 1042, 1045, 1049, 1050, 1051, 1053, 1060, 1061, 1063], "summary": {"covered_lines": 71, "num_statements": 95, "percent_covered": 76.8, "percent_covered_display": "76.80", "missing_lines": 24, "excluded_lines": 0, "percent_statements_covered": 74.73684210526316, "percent_statements_covered_display": "74.74", "num_branches": 30, "num_partial_branches": 5, "covered_branches": 25, "missing_branches": 5, "percent_branches_covered": 83.33333333333333, "percent_branches_covered_display": "83.33"}, "missing_lines": [881, 883, 886, 887, 888, 917, 928, 929, 930, 931, 954, 956, 961, 962, 963, 985, 986, 987, 988, 1046, 1054, 1055, 1056, 1057], "excluded_lines": [], "start_line": 1, "executed_branches": [[875, 876], [875, 879], [880, 885], [910, 911], [910, 919], [913, 914], [920, 921], [920, 923], [950, 952], [950, 960], [953, 958], [979, 980], [979, 984], [1022, 1023], [1022, 1027], [1024, 1025], [1024, 1026], [1045, 1049], [1049, 1050], [1049, 1053], [1050, 1051], [1050, 1060], [1053, 1060], [1060, 1061], [1060, 1063]], "missing_branches": [[880, 881], [913, 917], [953, 954], [1045, 1046], [1053, 1054]]}}}, "app/utils/setup_wizard.py": {"executed_lines": [7, 8, 10, 12, 15, 22, 136, 145, 147, 154, 155, 156, 157, 158, 161, 163, 164, 166, 169, 176, 178, 179, 180, 183, 193, 194, 196, 199, 206, 208, 209, 210, 211, 212, 214], "summary": {"covered_lines": 35, "num_statements": 35, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 12, "num_partial_branches": 0, "covered_branches": 12, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "executed_branches": [[154, 155], [154, 161], [156, 154], [156, 157], [178, 179], [178, 196], [193, 178], [193, 194], [208, 209], [208, 214], [210, 211], [210, 212]], "missing_branches": [], "functions": {"get_required_settings": {"executed_lines": [22], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 15, "executed_branches": [], "missing_branches": []}, "is_setup_required": {"executed_lines": [145, 147, 154, 155, 156, 157, 158, 161, 163, 164, 166], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 136, "executed_branches": [[154, 155], [154, 161], [156, 154], [156, 157]], "missing_branches": []}, "get_missing_required_settings": {"executed_lines": [176, 178, 179, 180, 183, 193, 194, 196], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 169, "executed_branches": [[178, 179], [178, 196], [193, 178], [193, 194]], "missing_branches": []}, "get_wizard_steps": {"executed_lines": [206, 208, 209, 210, 211, 212, 214], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 199, "executed_branches": [[208, 209], [208, 214], [210, 211], [210, 212]], "missing_branches": []}, "": {"executed_lines": [7, 8, 10, 12, 15, 136, 169, 199], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [7, 8, 10, 12, 15, 22, 136, 145, 147, 154, 155, 156, 157, 158, 161, 163, 164, 166, 169, 176, 178, 179, 180, 183, 193, 194, 196, 199, 206, 208, 209, 210, 211, 212, 214], "summary": {"covered_lines": 35, "num_statements": 35, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 12, "num_partial_branches": 0, "covered_branches": 12, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [[154, 155], [154, 161], [156, 154], [156, 157], [178, 179], [178, 196], [193, 178], [193, 194], [208, 209], [208, 214], [210, 211], [210, 212]], "missing_branches": []}}}, "app/utils/step_manager.py": {"executed_lines": [8, 9, 11, 13, 14, 18, 28, 33, 34, 35, 36, 39, 49, 50, 51, 53, 56, 65, 67, 68, 70, 75, 76, 77, 79, 82, 103, 109, 111, 119, 122, 123, 124, 125, 126, 127, 128, 130, 133, 153, 155, 156, 157, 164, 167, 190, 191, 204, 216, 217, 219, 222, 228, 229, 238, 239, 240, 241, 242, 244, 247, 248, 249, 250, 251, 252, 254, 256, 267, 289, 301, 302, 304, 306, 307, 309, 310, 312, 314, 315, 316, 319, 322, 324, 328, 329, 330, 331, 332, 333, 334, 335, 337], "summary": {"covered_lines": 93, "num_statements": 95, "percent_covered": 93.00699300699301, "percent_covered_display": "93.01", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 97.89473684210526, "percent_statements_covered_display": "97.89", "num_branches": 48, "num_partial_branches": 8, "covered_branches": 40, "missing_branches": 8, "percent_branches_covered": 83.33333333333333, "percent_branches_covered_display": "83.33"}, "missing_lines": [192, 326], "excluded_lines": [], "executed_branches": [[34, 35], [49, 50], [49, 53], [65, 67], [65, 79], [67, 65], [67, 68], [75, 76], [109, 111], [109, 122], [123, 124], [123, 125], [125, 126], [125, 127], [127, 128], [127, 130], [156, 157], [156, 164], [191, 204], [216, 217], [228, 229], [228, 238], [247, 248], [247, 249], [249, 250], [249, 251], [251, 252], [251, 254], [301, 302], [312, 314], [312, 337], [315, 316], [315, 319], [324, 328], [328, 329], [328, 332], [329, 330], [332, 312], [332, 333], [333, 334]], "missing_branches": [[34, 36], [75, 67], [191, 192], [216, 219], [301, 304], [324, 326], [329, 331], [333, 335]], "functions": {"initialize_file_steps": {"executed_lines": [49, 50, 51, 53], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 39, "executed_branches": [[49, 50], [49, 53]], "missing_branches": []}, "add_upload_steps": {"executed_lines": [65, 67, 68, 70, 75, 76, 77, 79], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 92.85714285714286, "percent_covered_display": "92.86", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 6, "num_partial_branches": 1, "covered_branches": 5, "missing_branches": 1, "percent_branches_covered": 83.33333333333333, "percent_branches_covered_display": "83.33"}, "missing_lines": [], "excluded_lines": [], "start_line": 56, "executed_branches": [[65, 67], [65, 79], [67, 65], [67, 68], [75, 76]], "missing_branches": [[75, 67]]}, "update_step_status": {"executed_lines": [103, 109, 111, 119, 122, 123, 124, 125, 126, 127, 128, 130], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 8, "num_partial_branches": 0, "covered_branches": 8, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 82, "executed_branches": [[109, 111], [109, 122], [123, 124], [123, 125], [125, 126], [125, 127], [127, 128], [127, 130]], "missing_branches": []}, "get_file_step_status": {"executed_lines": [153, 155, 156, 157, 164], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 133, "executed_branches": [[156, 157], [156, 164]], "missing_branches": []}, "get_file_overall_status": {"executed_lines": [190, 191, 204, 216, 217, 219, 222, 228, 229, 238, 239, 240, 241, 242, 244, 247, 248, 249, 250, 251, 252, 254, 256], "summary": {"covered_lines": 23, "num_statements": 24, "percent_covered": 91.66666666666667, "percent_covered_display": "91.67", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 95.83333333333333, "percent_statements_covered_display": "95.83", "num_branches": 12, "num_partial_branches": 2, "covered_branches": 10, "missing_branches": 2, "percent_branches_covered": 83.33333333333333, "percent_branches_covered_display": "83.33"}, "missing_lines": [192], "excluded_lines": [], "start_line": 167, "executed_branches": [[191, 204], [216, 217], [228, 229], [228, 238], [247, 248], [247, 249], [249, 250], [249, 251], [251, 252], [251, 254]], "missing_branches": [[191, 192], [216, 219]]}, "get_step_summary": {"executed_lines": [289, 301, 302, 304, 306, 307, 309, 310, 312, 314, 315, 316, 319, 322, 324, 328, 329, 330, 331, 332, 333, 334, 335, 337], "summary": {"covered_lines": 24, "num_statements": 25, "percent_covered": 87.8048780487805, "percent_covered_display": "87.80", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 96.0, "percent_statements_covered_display": "96.00", "num_branches": 16, "num_partial_branches": 4, "covered_branches": 12, "missing_branches": 4, "percent_branches_covered": 75.0, "percent_branches_covered_display": "75.00"}, "missing_lines": [326], "excluded_lines": [], "start_line": 267, "executed_branches": [[301, 302], [312, 314], [312, 337], [315, 316], [315, 319], [324, 328], [328, 329], [328, 332], [329, 330], [332, 312], [332, 333], [333, 334]], "missing_branches": [[301, 304], [324, 326], [329, 331], [333, 335]]}, "": {"executed_lines": [8, 9, 11, 13, 14, 18, 28, 33, 34, 35, 36, 39, 56, 82, 133, 167, 267], "summary": {"covered_lines": 17, "num_statements": 17, "percent_covered": 94.73684210526316, "percent_covered_display": "94.74", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 2, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 1, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [[34, 35]], "missing_branches": [[34, 36]]}}, "classes": {"": {"executed_lines": [8, 9, 11, 13, 14, 18, 28, 33, 34, 35, 36, 39, 49, 50, 51, 53, 56, 65, 67, 68, 70, 75, 76, 77, 79, 82, 103, 109, 111, 119, 122, 123, 124, 125, 126, 127, 128, 130, 133, 153, 155, 156, 157, 164, 167, 190, 191, 204, 216, 217, 219, 222, 228, 229, 238, 239, 240, 241, 242, 244, 247, 248, 249, 250, 251, 252, 254, 256, 267, 289, 301, 302, 304, 306, 307, 309, 310, 312, 314, 315, 316, 319, 322, 324, 328, 329, 330, 331, 332, 333, 334, 335, 337], "summary": {"covered_lines": 93, "num_statements": 95, "percent_covered": 93.00699300699301, "percent_covered_display": "93.01", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 97.89473684210526, "percent_statements_covered_display": "97.89", "num_branches": 48, "num_partial_branches": 8, "covered_branches": 40, "missing_branches": 8, "percent_branches_covered": 83.33333333333333, "percent_branches_covered_display": "83.33"}, "missing_lines": [192, 326], "excluded_lines": [], "start_line": 1, "executed_branches": [[34, 35], [49, 50], [49, 53], [65, 67], [65, 79], [67, 65], [67, 68], [75, 76], [109, 111], [109, 122], [123, 124], [123, 125], [125, 126], [125, 127], [127, 128], [127, 130], [156, 157], [156, 164], [191, 204], [216, 217], [228, 229], [228, 238], [247, 248], [247, 249], [249, 250], [249, 251], [251, 252], [251, 254], [301, 302], [312, 314], [312, 337], [315, 316], [315, 319], [324, 328], [328, 329], [328, 332], [329, 330], [332, 312], [332, 333], [333, 334]], "missing_branches": [[34, 36], [75, 67], [191, 192], [216, 219], [301, 304], [324, 326], [329, 331], [333, 335]]}}}, "app/utils/step_timeout.py": {"executed_lines": [8, 9, 10, 12, 14, 15, 17, 20, 23, 31, 34, 54, 55, 57, 58, 61, 67, 68, 70, 72, 75, 79, 80, 95, 96, 99, 110, 111], "summary": {"covered_lines": 28, "num_statements": 34, "percent_covered": 80.95238095238095, "percent_covered_display": "80.95", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 82.3529411764706, "percent_statements_covered_display": "82.35", "num_branches": 8, "num_partial_branches": 2, "covered_branches": 6, "missing_branches": 2, "percent_branches_covered": 75.0, "percent_branches_covered_display": "75.00"}, "missing_lines": [73, 81, 82, 83, 88, 90], "excluded_lines": [], "executed_branches": [[54, 55], [54, 57], [67, 68], [67, 70], [72, 75], [80, 95]], "missing_branches": [[72, 73], [80, 81]], "functions": {"get_step_timeout": {"executed_lines": [31], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 23, "executed_branches": [], "missing_branches": []}, "mark_stalled_steps_as_failed": {"executed_lines": [54, 55, 57, 58, 61, 67, 68, 70, 72, 75, 79, 80, 95, 96], "summary": {"covered_lines": 14, "num_statements": 20, "percent_covered": 71.42857142857143, "percent_covered_display": "71.43", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 70.0, "percent_statements_covered_display": "70.00", "num_branches": 8, "num_partial_branches": 2, "covered_branches": 6, "missing_branches": 2, "percent_branches_covered": 75.0, "percent_branches_covered_display": "75.00"}, "missing_lines": [73, 81, 82, 83, 88, 90], "excluded_lines": [], "start_line": 34, "executed_branches": [[54, 55], [54, 57], [67, 68], [67, 70], [72, 75], [80, 95]], "missing_branches": [[72, 73], [80, 81]]}, "check_and_recover_stalled_file": {"executed_lines": [110, 111], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 99, "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [8, 9, 10, 12, 14, 15, 17, 20, 23, 34, 99], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [8, 9, 10, 12, 14, 15, 17, 20, 23, 31, 34, 54, 55, 57, 58, 61, 67, 68, 70, 72, 75, 79, 80, 95, 96, 99, 110, 111], "summary": {"covered_lines": 28, "num_statements": 34, "percent_covered": 80.95238095238095, "percent_covered_display": "80.95", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 82.3529411764706, "percent_statements_covered_display": "82.35", "num_branches": 8, "num_partial_branches": 2, "covered_branches": 6, "missing_branches": 2, "percent_branches_covered": 75.0, "percent_branches_covered_display": "75.00"}, "missing_lines": [73, 81, 82, 83, 88, 90], "excluded_lines": [], "start_line": 1, "executed_branches": [[54, 55], [54, 57], [67, 68], [67, 70], [72, 75], [80, 95]], "missing_branches": [[72, 73], [80, 81]]}}}, "app/views/__init__.py": {"executed_lines": [5, 7, 10, 11, 12, 13, 14, 15, 16, 19, 20, 21, 22, 23, 24, 25, 26, 27], "summary": {"covered_lines": 18, "num_statements": 18, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": [], "functions": {"": {"executed_lines": [5, 7, 10, 11, 12, 13, 14, 15, 16, 19, 20, 21, 22, 23, 24, 25, 26, 27], "summary": {"covered_lines": 18, "num_statements": 18, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [5, 7, 10, 11, 12, 13, 14, 15, 16, 19, 20, 21, 22, 23, 24, 25, 26, 27], "summary": {"covered_lines": 18, "num_statements": 18, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}}, "app/views/base.py": {"executed_lines": [5, 6, 8, 9, 10, 12, 13, 14, 17, 18, 21, 22, 25, 28, 31, 32, 35, 38, 41], "summary": {"covered_lines": 19, "num_statements": 21, "percent_covered": 80.0, "percent_covered_display": "80.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 90.47619047619048, "percent_statements_covered_display": "90.48", "num_branches": 4, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 3, "percent_branches_covered": 25.0, "percent_branches_covered_display": "25.00"}, "missing_lines": [33, 34], "excluded_lines": [], "executed_branches": [[31, 32]], "missing_branches": [[31, 33], [33, 34], [33, 35]], "functions": {"template_response_with_version": {"executed_lines": [31, 32, 35], "summary": {"covered_lines": 3, "num_statements": 5, "percent_covered": 44.44444444444444, "percent_covered_display": "44.44", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 60.0, "percent_statements_covered_display": "60.00", "num_branches": 4, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 3, "percent_branches_covered": 25.0, "percent_branches_covered_display": "25.00"}, "missing_lines": [33, 34], "excluded_lines": [], "start_line": 28, "executed_branches": [[31, 32]], "missing_branches": [[31, 33], [33, 34], [33, 35]]}, "": {"executed_lines": [5, 6, 8, 9, 10, 12, 13, 14, 17, 18, 21, 22, 25, 28, 38, 41], "summary": {"covered_lines": 16, "num_statements": 16, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [5, 6, 8, 9, 10, 12, 13, 14, 17, 18, 21, 22, 25, 28, 31, 32, 35, 38, 41], "summary": {"covered_lines": 19, "num_statements": 21, "percent_covered": 80.0, "percent_covered_display": "80.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 90.47619047619048, "percent_statements_covered_display": "90.48", "num_branches": 4, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 3, "percent_branches_covered": 25.0, "percent_branches_covered_display": "25.00"}, "missing_lines": [33, 34], "excluded_lines": [], "start_line": 1, "executed_branches": [[31, 32]], "missing_branches": [[31, 33], [33, 34], [33, 35]]}}}, "app/views/dropbox.py": {"executed_lines": [5, 7, 9, 12, 13, 14, 20, 22, 35, 36, 37, 42, 43, 45, 46, 53], "summary": {"covered_lines": 16, "num_statements": 16, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "executed_branches": [[42, 43], [42, 45], [45, 46], [45, 53]], "missing_branches": [], "functions": {"dropbox_setup_page": {"executed_lines": [20, 22], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 14, "executed_branches": [], "missing_branches": []}, "dropbox_callback": {"executed_lines": [42, 43, 45, 46, 53], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 37, "executed_branches": [[42, 43], [42, 45], [45, 46], [45, 53]], "missing_branches": []}, "": {"executed_lines": [5, 7, 9, 12, 13, 14, 35, 36, 37], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [5, 7, 9, 12, 13, 14, 20, 22, 35, 36, 37, 42, 43, 45, 46, 53], "summary": {"covered_lines": 16, "num_statements": 16, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [[42, 43], [42, 45], [45, 46], [45, 53]], "missing_branches": []}}}, "app/views/files.py": {"executed_lines": [5, 7, 8, 10, 11, 12, 14, 17, 18, 19, 33, 35, 37, 40, 43, 47, 51, 54, 57, 65, 68, 71, 72, 75, 76, 79, 80, 81, 82, 85, 88, 89, 92, 94, 128, 129, 130, 134, 135, 136, 138, 141, 143, 144, 149, 157, 158, 159, 162, 163, 164, 167, 168, 170, 171, 172, 173, 174, 175, 180, 183, 184, 186, 191, 209, 217, 236, 238, 245, 269, 270, 272, 273, 276, 278, 279, 280, 281, 286, 287, 288, 293, 294, 295, 298, 299, 300, 301, 302, 303, 305, 306, 307, 308, 310, 322, 323, 324, 325, 326, 328, 339, 341, 343, 346, 355, 358, 359, 360, 361, 374, 376, 377, 380, 381, 383, 384, 385, 388, 392, 394, 396, 397, 398, 400, 401, 404, 405, 406, 409, 410, 411, 413, 421, 422, 423, 427, 429, 430, 432, 434, 435, 438, 439, 441, 448, 449, 450, 454, 456, 457, 459, 461, 462, 465, 466, 468, 475, 476, 477, 515, 516, 517], "summary": {"covered_lines": 163, "num_statements": 224, "percent_covered": 69.48051948051948, "percent_covered_display": "69.48", "missing_lines": 61, "excluded_lines": 0, "percent_statements_covered": 72.76785714285714, "percent_statements_covered_display": "72.77", "num_branches": 84, "num_partial_branches": 15, "covered_branches": 51, "missing_branches": 33, "percent_branches_covered": 60.714285714285715, "percent_branches_covered_display": "60.71"}, "missing_lines": [44, 48, 66, 113, 115, 117, 176, 177, 187, 189, 204, 205, 206, 239, 241, 242, 389, 436, 463, 481, 483, 484, 486, 488, 489, 490, 492, 493, 495, 497, 499, 500, 501, 502, 504, 505, 507, 508, 509, 510, 521, 523, 524, 526, 528, 529, 530, 532, 533, 535, 537, 539, 540, 541, 542, 544, 545, 547, 548, 549, 550], "excluded_lines": [], "executed_branches": [[43, 47], [47, 51], [65, 68], [80, 81], [80, 85], [143, 144], [143, 149], [158, 159], [158, 162], [163, 164], [163, 167], [168, 170], [168, 180], [171, 172], [171, 180], [238, 245], [272, 273], [272, 293], [276, 278], [276, 286], [279, 280], [286, 287], [294, 295], [294, 343], [298, 299], [298, 305], [322, 323], [322, 341], [324, 325], [324, 339], [359, 360], [383, 384], [383, 404], [388, 392], [394, 396], [394, 398], [396, 397], [398, 400], [400, 401], [404, 405], [404, 409], [405, 406], [409, 410], [409, 413], [410, 411], [435, 438], [438, 439], [438, 441], [462, 465], [465, 466], [465, 468]], "missing_branches": [[43, 44], [47, 48], [65, 66], [238, 239], [241, 242], [241, 245], [279, 281], [286, 288], [359, 361], [388, 389], [396, 383], [398, 383], [400, 383], [405, 404], [410, 409], [435, 436], [462, 463], [489, 490], [489, 492], [492, 493], [492, 495], [501, 502], [501, 504], [504, 505], [504, 507], [529, 530], [529, 532], [532, 533], [532, 535], [541, 542], [541, 544], [544, 545], [544, 547]], "functions": {"files_page": {"executed_lines": [33, 35, 37, 40, 43, 47, 51, 54, 57, 65, 68, 71, 72, 75, 76, 79, 80, 81, 82, 85, 88, 89, 92, 94], "summary": {"covered_lines": 24, "num_statements": 30, "percent_covered": 76.3157894736842, "percent_covered_display": "76.32", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 80.0, "percent_statements_covered_display": "80.00", "num_branches": 8, "num_partial_branches": 3, "covered_branches": 5, "missing_branches": 3, "percent_branches_covered": 62.5, "percent_branches_covered_display": "62.50"}, "missing_lines": [44, 48, 66, 113, 115, 117], "excluded_lines": [], "start_line": 19, "executed_branches": [[43, 47], [47, 51], [65, 68], [80, 81], [80, 85]], "missing_branches": [[43, 44], [47, 48], [65, 66]]}, "file_detail_page": {"executed_lines": [134, 135, 136, 138, 141, 143, 144, 149, 157, 158, 159, 162, 163, 164, 167, 168, 170, 171, 172, 173, 174, 175, 180, 183, 184, 186, 191], "summary": {"covered_lines": 27, "num_statements": 34, "percent_covered": 84.0909090909091, "percent_covered_display": "84.09", "missing_lines": 7, "excluded_lines": 0, "percent_statements_covered": 79.41176470588235, "percent_statements_covered_display": "79.41", "num_branches": 10, "num_partial_branches": 0, "covered_branches": 10, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [176, 177, 187, 189, 204, 205, 206], "excluded_lines": [], "start_line": 130, "executed_branches": [[143, 144], [143, 149], [158, 159], [158, 162], [163, 164], [163, 167], [168, 170], [168, 180], [171, 172], [171, 180]], "missing_branches": []}, "_compute_processing_flow": {"executed_lines": [217, 236, 238, 245, 269, 270, 272, 273, 276, 278, 279, 280, 281, 286, 287, 288, 293, 294, 295, 298, 299, 300, 301, 302, 303, 305, 306, 307, 308, 310, 322, 323, 324, 325, 326, 328, 339, 341, 343], "summary": {"covered_lines": 39, "num_statements": 42, "percent_covered": 87.09677419354838, "percent_covered_display": "87.10", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 92.85714285714286, "percent_statements_covered_display": "92.86", "num_branches": 20, "num_partial_branches": 3, "covered_branches": 15, "missing_branches": 5, "percent_branches_covered": 75.0, "percent_branches_covered_display": "75.00"}, "missing_lines": [239, 241, 242], "excluded_lines": [], "start_line": 209, "executed_branches": [[238, 245], [272, 273], [272, 293], [276, 278], [276, 286], [279, 280], [286, 287], [294, 295], [294, 343], [298, 299], [298, 305], [322, 323], [322, 341], [324, 325], [324, 339]], "missing_branches": [[238, 239], [241, 242], [241, 245], [279, 281], [286, 288]]}, "_compute_step_summary": {"executed_lines": [355, 358, 359, 360, 361, 374, 376, 377, 380, 381, 383, 384, 385, 388, 392, 394, 396, 397, 398, 400, 401, 404, 405, 406, 409, 410, 411, 413], "summary": {"covered_lines": 28, "num_statements": 29, "percent_covered": 84.31372549019608, "percent_covered_display": "84.31", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 96.55172413793103, "percent_statements_covered_display": "96.55", "num_branches": 22, "num_partial_branches": 7, "covered_branches": 15, "missing_branches": 7, "percent_branches_covered": 68.18181818181819, "percent_branches_covered_display": "68.18"}, "missing_lines": [389], "excluded_lines": [], "start_line": 346, "executed_branches": [[359, 360], [383, 384], [383, 404], [388, 392], [394, 396], [394, 398], [396, 397], [398, 400], [400, 401], [404, 405], [404, 409], [405, 406], [409, 410], [409, 413], [410, 411]], "missing_branches": [[359, 361], [388, 389], [396, 383], [398, 383], [400, 383], [405, 404], [410, 409]]}, "preview_original_file": {"executed_lines": [427, 429, 430, 432, 434, 435, 438, 439, 441], "summary": {"covered_lines": 9, "num_statements": 10, "percent_covered": 85.71428571428571, "percent_covered_display": "85.71", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 90.0, "percent_statements_covered_display": "90.00", "num_branches": 4, "num_partial_branches": 1, "covered_branches": 3, "missing_branches": 1, "percent_branches_covered": 75.0, "percent_branches_covered_display": "75.00"}, "missing_lines": [436], "excluded_lines": [], "start_line": 423, "executed_branches": [[435, 438], [438, 439], [438, 441]], "missing_branches": [[435, 436]]}, "preview_processed_file": {"executed_lines": [454, 456, 457, 459, 461, 462, 465, 466, 468], "summary": {"covered_lines": 9, "num_statements": 10, "percent_covered": 85.71428571428571, "percent_covered_display": "85.71", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 90.0, "percent_statements_covered_display": "90.00", "num_branches": 4, "num_partial_branches": 1, "covered_branches": 3, "missing_branches": 1, "percent_branches_covered": 75.0, "percent_branches_covered_display": "75.00"}, "missing_lines": [463], "excluded_lines": [], "start_line": 450, "executed_branches": [[462, 465], [465, 466], [465, 468]], "missing_branches": [[462, 463]]}, "get_original_text": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 21, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 21, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00", "num_branches": 8, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 8, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0.00"}, "missing_lines": [481, 483, 484, 486, 488, 489, 490, 492, 493, 495, 497, 499, 500, 501, 502, 504, 505, 507, 508, 509, 510], "excluded_lines": [], "start_line": 477, "executed_branches": [], "missing_branches": [[489, 490], [489, 492], [492, 493], [492, 495], [501, 502], [501, 504], [504, 505], [504, 507]]}, "get_processed_text": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 21, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 21, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00", "num_branches": 8, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 8, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0.00"}, "missing_lines": [521, 523, 524, 526, 528, 529, 530, 532, 533, 535, 537, 539, 540, 541, 542, 544, 545, 547, 548, 549, 550], "excluded_lines": [], "start_line": 517, "executed_branches": [], "missing_branches": [[529, 530], [529, 532], [532, 533], [532, 535], [541, 542], [541, 544], [544, 545], [544, 547]]}, "": {"executed_lines": [5, 7, 8, 10, 11, 12, 14, 17, 18, 19, 128, 129, 130, 209, 346, 421, 422, 423, 448, 449, 450, 475, 476, 477, 515, 516, 517], "summary": {"covered_lines": 27, "num_statements": 27, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [5, 7, 8, 10, 11, 12, 14, 17, 18, 19, 33, 35, 37, 40, 43, 47, 51, 54, 57, 65, 68, 71, 72, 75, 76, 79, 80, 81, 82, 85, 88, 89, 92, 94, 128, 129, 130, 134, 135, 136, 138, 141, 143, 144, 149, 157, 158, 159, 162, 163, 164, 167, 168, 170, 171, 172, 173, 174, 175, 180, 183, 184, 186, 191, 209, 217, 236, 238, 245, 269, 270, 272, 273, 276, 278, 279, 280, 281, 286, 287, 288, 293, 294, 295, 298, 299, 300, 301, 302, 303, 305, 306, 307, 308, 310, 322, 323, 324, 325, 326, 328, 339, 341, 343, 346, 355, 358, 359, 360, 361, 374, 376, 377, 380, 381, 383, 384, 385, 388, 392, 394, 396, 397, 398, 400, 401, 404, 405, 406, 409, 410, 411, 413, 421, 422, 423, 427, 429, 430, 432, 434, 435, 438, 439, 441, 448, 449, 450, 454, 456, 457, 459, 461, 462, 465, 466, 468, 475, 476, 477, 515, 516, 517], "summary": {"covered_lines": 163, "num_statements": 224, "percent_covered": 69.48051948051948, "percent_covered_display": "69.48", "missing_lines": 61, "excluded_lines": 0, "percent_statements_covered": 72.76785714285714, "percent_statements_covered_display": "72.77", "num_branches": 84, "num_partial_branches": 15, "covered_branches": 51, "missing_branches": 33, "percent_branches_covered": 60.714285714285715, "percent_branches_covered_display": "60.71"}, "missing_lines": [44, 48, 66, 113, 115, 117, 176, 177, 187, 189, 204, 205, 206, 239, 241, 242, 389, 436, 463, 481, 483, 484, 486, 488, 489, 490, 492, 493, 495, 497, 499, 500, 501, 502, 504, 505, 507, 508, 509, 510, 521, 523, 524, 526, 528, 529, 530, 532, 533, 535, 537, 539, 540, 541, 542, 544, 545, 547, 548, 549, 550], "excluded_lines": [], "start_line": 1, "executed_branches": [[43, 47], [47, 51], [65, 68], [80, 81], [80, 85], [143, 144], [143, 149], [158, 159], [158, 162], [163, 164], [163, 167], [168, 170], [168, 180], [171, 172], [171, 180], [238, 245], [272, 273], [272, 293], [276, 278], [276, 286], [279, 280], [286, 287], [294, 295], [294, 343], [298, 299], [298, 305], [322, 323], [322, 341], [324, 325], [324, 339], [359, 360], [383, 384], [383, 404], [388, 392], [394, 396], [394, 398], [396, 397], [398, 400], [400, 401], [404, 405], [404, 409], [405, 406], [409, 410], [409, 413], [410, 411], [435, 438], [438, 439], [438, 441], [462, 465], [465, 466], [465, 468]], "missing_branches": [[43, 44], [47, 48], [65, 66], [238, 239], [241, 242], [241, 245], [279, 281], [286, 288], [359, 361], [388, 389], [396, 383], [398, 383], [400, 383], [405, 404], [410, 409], [435, 436], [462, 463], [489, 490], [489, 492], [492, 493], [492, 495], [501, 502], [501, 504], [504, 505], [504, 507], [529, 530], [529, 532], [532, 533], [532, 535], [541, 542], [541, 544], [544, 545], [544, 547]]}}}, "app/views/general.py": {"executed_lines": [5, 6, 8, 9, 10, 12, 13, 15, 18, 19, 26, 27, 30, 33, 35, 36, 37, 40, 43, 46, 47, 55, 56, 58, 60, 66, 72, 75, 76, 78, 81, 82, 85, 86, 89, 90, 92, 95, 96, 97, 99, 102, 103, 105, 106, 109, 112, 113, 116, 122, 125, 126, 127, 128, 129, 134, 145, 148, 149, 151, 152, 155, 156, 158, 159], "summary": {"covered_lines": 65, "num_statements": 71, "percent_covered": 88.60759493670886, "percent_covered_display": "88.61", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 91.54929577464789, "percent_statements_covered_display": "91.55", "num_branches": 8, "num_partial_branches": 3, "covered_branches": 5, "missing_branches": 3, "percent_branches_covered": 62.5, "percent_branches_covered_display": "62.50"}, "missing_lines": [61, 63, 108, 130, 131, 135], "excluded_lines": [], "executed_branches": [[35, 36], [35, 40], [106, 109], [125, 126], [134, 145]], "missing_branches": [[106, 108], [125, 134], [134, 135]], "functions": {"serve_index": {"executed_lines": [26, 27, 30, 33, 35, 36, 37, 40, 43, 46, 47, 55, 56, 58, 60, 66, 72], "summary": {"covered_lines": 17, "num_statements": 19, "percent_covered": 90.47619047619048, "percent_covered_display": "90.48", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 89.47368421052632, "percent_statements_covered_display": "89.47", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [61, 63], "excluded_lines": [], "start_line": 19, "executed_branches": [[35, 36], [35, 40]], "missing_branches": []}, "serve_about": {"executed_lines": [78], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 76, "executed_branches": [], "missing_branches": []}, "serve_privacy": {"executed_lines": [85, 86], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 82, "executed_branches": [], "missing_branches": []}, "serve_imprint": {"executed_lines": [92], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 90, "executed_branches": [], "missing_branches": []}, "serve_upload": {"executed_lines": [99], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 97, "executed_branches": [], "missing_branches": []}, "favicon": {"executed_lines": [105, 106, 109], "summary": {"covered_lines": 3, "num_statements": 4, "percent_covered": 66.66666666666667, "percent_covered_display": "66.67", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 75.0, "percent_statements_covered_display": "75.00", "num_branches": 2, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 1, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50.00"}, "missing_lines": [108], "excluded_lines": [], "start_line": 103, "executed_branches": [[106, 109]], "missing_branches": [[106, 108]]}, "serve_license": {"executed_lines": [116, 122, 125, 126, 127, 128, 129, 134, 145], "summary": {"covered_lines": 9, "num_statements": 12, "percent_covered": 68.75, "percent_covered_display": "68.75", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 75.0, "percent_statements_covered_display": "75.00", "num_branches": 4, "num_partial_branches": 2, "covered_branches": 2, "missing_branches": 2, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50.00"}, "missing_lines": [130, 131, 135], "excluded_lines": [], "start_line": 113, "executed_branches": [[125, 126], [134, 145]], "missing_branches": [[125, 134], [134, 135]]}, "serve_cookies": {"executed_lines": [151, 152], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 149, "executed_branches": [], "missing_branches": []}, "serve_terms": {"executed_lines": [158, 159], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 156, "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [5, 6, 8, 9, 10, 12, 13, 15, 18, 19, 75, 76, 81, 82, 89, 90, 95, 96, 97, 102, 103, 112, 113, 148, 149, 155, 156], "summary": {"covered_lines": 27, "num_statements": 27, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [5, 6, 8, 9, 10, 12, 13, 15, 18, 19, 26, 27, 30, 33, 35, 36, 37, 40, 43, 46, 47, 55, 56, 58, 60, 66, 72, 75, 76, 78, 81, 82, 85, 86, 89, 90, 92, 95, 96, 97, 99, 102, 103, 105, 106, 109, 112, 113, 116, 122, 125, 126, 127, 128, 129, 134, 145, 148, 149, 151, 152, 155, 156, 158, 159], "summary": {"covered_lines": 65, "num_statements": 71, "percent_covered": 88.60759493670886, "percent_covered_display": "88.61", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 91.54929577464789, "percent_statements_covered_display": "91.55", "num_branches": 8, "num_partial_branches": 3, "covered_branches": 5, "missing_branches": 3, "percent_branches_covered": 62.5, "percent_branches_covered_display": "62.50"}, "missing_lines": [61, 63, 108, 130, 131, 135], "excluded_lines": [], "start_line": 1, "executed_branches": [[35, 36], [35, 40], [106, 109], [125, 126], [134, 145]], "missing_branches": [[106, 108], [125, 134], [134, 135]]}}}, "app/views/google_drive.py": {"executed_lines": [5, 7, 8, 10, 12, 15, 16, 17, 23, 26, 31, 34, 36, 39, 42, 62, 63, 64, 69, 70, 72, 73, 79, 82, 83, 84], "summary": {"covered_lines": 26, "num_statements": 33, "percent_covered": 75.60975609756098, "percent_covered_display": "75.61", "missing_lines": 7, "excluded_lines": 0, "percent_statements_covered": 78.78787878787878, "percent_statements_covered_display": "78.79", "num_branches": 8, "num_partial_branches": 1, "covered_branches": 5, "missing_branches": 3, "percent_branches_covered": 62.5, "percent_branches_covered_display": "62.50"}, "missing_lines": [37, 88, 89, 93, 95, 97, 107], "excluded_lines": [], "executed_branches": [[36, 39], [69, 70], [69, 72], [72, 73], [72, 79]], "missing_branches": [[36, 37], [88, 89], [88, 93]], "functions": {"google_drive_setup_page": {"executed_lines": [23, 26, 31, 34, 36, 39, 42], "summary": {"covered_lines": 7, "num_statements": 8, "percent_covered": 80.0, "percent_covered_display": "80.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 87.5, "percent_statements_covered_display": "87.50", "num_branches": 2, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 1, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50.00"}, "missing_lines": [37], "excluded_lines": [], "start_line": 17, "executed_branches": [[36, 39]], "missing_branches": [[36, 37]]}, "google_drive_callback": {"executed_lines": [69, 70, 72, 73, 79], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 64, "executed_branches": [[69, 70], [69, 72], [72, 73], [72, 79]], "missing_branches": []}, "google_drive_auth_start": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 6, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 2, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0.00"}, "missing_lines": [88, 89, 93, 95, 97, 107], "excluded_lines": [], "start_line": 84, "executed_branches": [], "missing_branches": [[88, 89], [88, 93]]}, "": {"executed_lines": [5, 7, 8, 10, 12, 15, 16, 17, 62, 63, 64, 82, 83, 84], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [5, 7, 8, 10, 12, 15, 16, 17, 23, 26, 31, 34, 36, 39, 42, 62, 63, 64, 69, 70, 72, 73, 79, 82, 83, 84], "summary": {"covered_lines": 26, "num_statements": 33, "percent_covered": 75.60975609756098, "percent_covered_display": "75.61", "missing_lines": 7, "excluded_lines": 0, "percent_statements_covered": 78.78787878787878, "percent_statements_covered_display": "78.79", "num_branches": 8, "num_partial_branches": 1, "covered_branches": 5, "missing_branches": 3, "percent_branches_covered": 62.5, "percent_branches_covered_display": "62.50"}, "missing_lines": [37, 88, 89, 93, 95, 97, 107], "excluded_lines": [], "start_line": 1, "executed_branches": [[36, 39], [69, 70], [69, 72], [72, 73], [72, 79]], "missing_branches": [[36, 37], [88, 89], [88, 93]]}}}, "app/views/license_routes.py": {"executed_lines": [1, 3, 4, 6, 8, 11, 12, 24, 25], "summary": {"covered_lines": 9, "num_statements": 15, "percent_covered": 52.94117647058823, "percent_covered_display": "52.94", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 60.0, "percent_statements_covered_display": "60.00", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 2, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0.00"}, "missing_lines": [16, 17, 18, 20, 21, 29], "excluded_lines": [], "executed_branches": [], "missing_branches": [[17, 18], [17, 20]], "functions": {"get_lgpl_license": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 5, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 2, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0.00"}, "missing_lines": [16, 17, 18, 20, 21], "excluded_lines": [], "start_line": 12, "executed_branches": [], "missing_branches": [[17, 18], [17, 20]]}, "serve_attribution": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [29], "excluded_lines": [], "start_line": 25, "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [1, 3, 4, 6, 8, 11, 12, 24, 25], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [1, 3, 4, 6, 8, 11, 12, 24, 25], "summary": {"covered_lines": 9, "num_statements": 15, "percent_covered": 52.94117647058823, "percent_covered_display": "52.94", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 60.0, "percent_statements_covered_display": "60.00", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 2, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0.00"}, "missing_lines": [16, 17, 18, 20, 21, 29], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": [[17, 18], [17, 20]]}}}, "app/views/onedrive.py": {"executed_lines": [5, 7, 9, 12, 13, 14, 20, 25, 42, 43, 44, 49, 50, 52, 53, 59], "summary": {"covered_lines": 16, "num_statements": 16, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "executed_branches": [[49, 50], [49, 52], [52, 53], [52, 59]], "missing_branches": [], "functions": {"onedrive_setup_page": {"executed_lines": [20, 25], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 14, "executed_branches": [], "missing_branches": []}, "onedrive_callback": {"executed_lines": [49, 50, 52, 53, 59], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 44, "executed_branches": [[49, 50], [49, 52], [52, 53], [52, 59]], "missing_branches": []}, "": {"executed_lines": [5, 7, 9, 12, 13, 14, 42, 43, 44], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [5, 7, 9, 12, 13, 14, 20, 25, 42, 43, 44, 49, 50, 52, 53, 59], "summary": {"covered_lines": 16, "num_statements": 16, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [[49, 50], [49, 52], [52, 53], [52, 59]], "missing_branches": []}}}, "app/views/settings.py": {"executed_lines": [5, 6, 7, 8, 10, 11, 12, 14, 15, 16, 18, 19, 22, 31, 32, 33, 34, 35, 36, 39, 40, 44, 47, 48, 49, 50], "summary": {"covered_lines": 26, "num_statements": 56, "percent_covered": 41.42857142857143, "percent_covered_display": "41.43", "missing_lines": 30, "excluded_lines": 0, "percent_statements_covered": 46.42857142857143, "percent_statements_covered_display": "46.43", "num_branches": 14, "num_partial_branches": 1, "covered_branches": 3, "missing_branches": 11, "percent_branches_covered": 21.428571428571427, "percent_branches_covered_display": "21.43"}, "missing_lines": [42, 58, 60, 62, 65, 68, 69, 70, 71, 73, 77, 78, 79, 80, 82, 83, 84, 85, 88, 89, 90, 93, 96, 97, 98, 100, 111, 114, 115, 116], "excluded_lines": [], "executed_branches": [[34, 35], [34, 39], [39, 40]], "missing_branches": [[39, 42], [69, 70], [69, 111], [71, 69], [71, 73], [77, 78], [77, 82], [82, 83], [82, 88], [97, 98], [97, 100]], "functions": {"require_admin_access": {"executed_lines": [31, 32, 44], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 22, "executed_branches": [], "missing_branches": []}, "require_admin_access.wrapper": {"executed_lines": [33, 34, 35, 36, 39, 40], "summary": {"covered_lines": 6, "num_statements": 7, "percent_covered": 81.81818181818181, "percent_covered_display": "81.82", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 85.71428571428571, "percent_statements_covered_display": "85.71", "num_branches": 4, "num_partial_branches": 1, "covered_branches": 3, "missing_branches": 1, "percent_branches_covered": 75.0, "percent_branches_covered_display": "75.00"}, "missing_lines": [42], "excluded_lines": [], "start_line": 32, "executed_branches": [[34, 35], [34, 39], [39, 40]], "missing_branches": [[39, 42]]}, "settings_page": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 29, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 29, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00", "num_branches": 10, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 10, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0.00"}, "missing_lines": [58, 60, 62, 65, 68, 69, 70, 71, 73, 77, 78, 79, 80, 82, 83, 84, 85, 88, 89, 90, 93, 96, 97, 98, 100, 111, 114, 115, 116], "excluded_lines": [], "start_line": 50, "executed_branches": [], "missing_branches": [[69, 70], [69, 111], [71, 69], [71, 73], [77, 78], [77, 82], [82, 83], [82, 88], [97, 98], [97, 100]]}, "": {"executed_lines": [5, 6, 7, 8, 10, 11, 12, 14, 15, 16, 18, 19, 22, 47, 48, 49, 50], "summary": {"covered_lines": 17, "num_statements": 17, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [5, 6, 7, 8, 10, 11, 12, 14, 15, 16, 18, 19, 22, 31, 32, 33, 34, 35, 36, 39, 40, 44, 47, 48, 49, 50], "summary": {"covered_lines": 26, "num_statements": 56, "percent_covered": 41.42857142857143, "percent_covered_display": "41.43", "missing_lines": 30, "excluded_lines": 0, "percent_statements_covered": 46.42857142857143, "percent_statements_covered_display": "46.43", "num_branches": 14, "num_partial_branches": 1, "covered_branches": 3, "missing_branches": 11, "percent_branches_covered": 21.428571428571427, "percent_branches_covered_display": "21.43"}, "missing_lines": [42, 58, 60, 62, 65, 68, 69, 70, 71, 73, 77, 78, 79, 80, 82, 83, 84, 85, 88, 89, 90, 93, 96, 97, 98, 100, 111, 114, 115, 116], "excluded_lines": [], "start_line": 1, "executed_branches": [[34, 35], [34, 39], [39, 40]], "missing_branches": [[39, 42], [69, 70], [69, 111], [71, 69], [71, 73], [77, 78], [77, 82], [82, 83], [82, 88], [97, 98], [97, 100]]}}}, "app/views/status.py": {"executed_lines": [5, 6, 7, 9, 11, 13, 14, 17, 18, 19, 23, 26, 29, 32, 33, 35, 63, 66, 67, 68, 75, 77, 92, 93, 94, 100, 103, 105, 107], "summary": {"covered_lines": 29, "num_statements": 52, "percent_covered": 51.724137931034484, "percent_covered_display": "51.72", "missing_lines": 23, "excluded_lines": 0, "percent_statements_covered": 55.76923076923077, "percent_statements_covered_display": "55.77", "num_branches": 6, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 5, "percent_branches_covered": 16.666666666666668, "percent_branches_covered_display": "16.67"}, "missing_lines": [37, 40, 41, 42, 43, 44, 45, 46, 47, 48, 51, 52, 53, 54, 55, 58, 59, 60, 61, 69, 70, 71, 72], "excluded_lines": [], "executed_branches": [[35, 63]], "missing_branches": [[35, 37], [42, 43], [42, 51], [43, 42], [43, 44]], "functions": {"status_dashboard": {"executed_lines": [23, 26, 29, 32, 33, 35, 63, 66, 67, 68, 75, 77], "summary": {"covered_lines": 12, "num_statements": 35, "percent_covered": 31.70731707317073, "percent_covered_display": "31.71", "missing_lines": 23, "excluded_lines": 0, "percent_statements_covered": 34.285714285714285, "percent_statements_covered_display": "34.29", "num_branches": 6, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 5, "percent_branches_covered": 16.666666666666668, "percent_branches_covered_display": "16.67"}, "missing_lines": [37, 40, 41, 42, 43, 44, 45, 46, 47, 48, 51, 52, 53, 54, 55, 58, 59, 60, 61, 69, 70, 71, 72], "excluded_lines": [], "start_line": 19, "executed_branches": [[35, 63]], "missing_branches": [[35, 37], [42, 43], [42, 51], [43, 42], [43, 44]]}, "env_debug": {"executed_lines": [100, 103, 105, 107], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 94, "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [5, 6, 7, 9, 11, 13, 14, 17, 18, 19, 92, 93, 94], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [5, 6, 7, 9, 11, 13, 14, 17, 18, 19, 23, 26, 29, 32, 33, 35, 63, 66, 67, 68, 75, 77, 92, 93, 94, 100, 103, 105, 107], "summary": {"covered_lines": 29, "num_statements": 52, "percent_covered": 51.724137931034484, "percent_covered_display": "51.72", "missing_lines": 23, "excluded_lines": 0, "percent_statements_covered": 55.76923076923077, "percent_statements_covered_display": "55.77", "num_branches": 6, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 5, "percent_branches_covered": 16.666666666666668, "percent_branches_covered_display": "16.67"}, "missing_lines": [37, 40, 41, 42, 43, 44, 45, 46, 47, 48, 51, 52, 53, 54, 55, 58, 59, 60, 61, 69, 70, 71, 72], "excluded_lines": [], "start_line": 1, "executed_branches": [[35, 63]], "missing_branches": [[35, 37], [42, 43], [42, 51], [43, 42], [43, 44]]}}}, "app/views/wizard.py": {"executed_lines": [5, 6, 8, 9, 10, 12, 13, 14, 16, 17, 20, 21, 29, 30, 33, 34, 35, 36, 39, 42, 44, 57, 58, 62, 64, 67, 68, 71, 72, 73, 74, 77, 79, 80, 81, 84, 85, 86, 88, 91, 92, 94, 96, 99, 106, 107, 113, 114, 115, 117, 118, 119, 121], "summary": {"covered_lines": 53, "num_statements": 59, "percent_covered": 90.41095890410959, "percent_covered_display": "90.41", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 89.83050847457628, "percent_statements_covered_display": "89.83", "num_branches": 14, "num_partial_branches": 1, "covered_branches": 13, "missing_branches": 1, "percent_branches_covered": 92.85714285714286, "percent_branches_covered_display": "92.86"}, "missing_lines": [101, 102, 103, 122, 123, 124], "excluded_lines": [], "executed_branches": [[33, 34], [33, 35], [35, 36], [35, 39], [72, 73], [72, 88], [77, 72], [77, 79], [79, 80], [79, 84], [84, 85], [94, 96], [94, 99]], "missing_branches": [[84, 72]], "functions": {"setup_wizard": {"executed_lines": [29, 30, 33, 34, 35, 36, 39, 42, 44], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 21, "executed_branches": [[33, 34], [33, 35], [35, 36], [35, 39]], "missing_branches": []}, "setup_wizard_save": {"executed_lines": [62, 64, 67, 68, 71, 72, 73, 74, 77, 79, 80, 81, 84, 85, 86, 88, 91, 92, 94, 96, 99], "summary": {"covered_lines": 21, "num_statements": 24, "percent_covered": 88.23529411764706, "percent_covered_display": "88.24", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 87.5, "percent_statements_covered_display": "87.50", "num_branches": 10, "num_partial_branches": 1, "covered_branches": 9, "missing_branches": 1, "percent_branches_covered": 90.0, "percent_branches_covered_display": "90.00"}, "missing_lines": [101, 102, 103], "excluded_lines": [], "start_line": 58, "executed_branches": [[72, 73], [72, 88], [77, 72], [77, 79], [79, 80], [79, 84], [84, 85], [94, 96], [94, 99]], "missing_branches": [[84, 72]]}, "setup_wizard_skip": {"executed_lines": [113, 114, 115, 117, 118, 119, 121], "summary": {"covered_lines": 7, "num_statements": 10, "percent_covered": 70.0, "percent_covered_display": "70.00", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 70.0, "percent_statements_covered_display": "70.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [122, 123, 124], "excluded_lines": [], "start_line": 107, "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [5, 6, 8, 9, 10, 12, 13, 14, 16, 17, 20, 21, 57, 58, 106, 107], "summary": {"covered_lines": 16, "num_statements": 16, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [5, 6, 8, 9, 10, 12, 13, 14, 16, 17, 20, 21, 29, 30, 33, 34, 35, 36, 39, 42, 44, 57, 58, 62, 64, 67, 68, 71, 72, 73, 74, 77, 79, 80, 81, 84, 85, 86, 88, 91, 92, 94, 96, 99, 106, 107, 113, 114, 115, 117, 118, 119, 121], "summary": {"covered_lines": 53, "num_statements": 59, "percent_covered": 90.41095890410959, "percent_covered_display": "90.41", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 89.83050847457628, "percent_statements_covered_display": "89.83", "num_branches": 14, "num_partial_branches": 1, "covered_branches": 13, "missing_branches": 1, "percent_branches_covered": 92.85714285714286, "percent_branches_covered_display": "92.86"}, "missing_lines": [101, 102, 103, 122, 123, 124], "excluded_lines": [], "start_line": 1, "executed_branches": [[33, 34], [33, 35], [35, 36], [35, 39], [72, 73], [72, 88], [77, 72], [77, 79], [79, 80], [79, 84], [84, 85], [94, 96], [94, 99]], "missing_branches": [[84, 72]]}}}}, "totals": {"covered_lines": 4002, "num_statements": 6286, "percent_covered": 60.58339566192969, "percent_covered_display": "60.58", "missing_lines": 2284, "excluded_lines": 0, "percent_statements_covered": 63.66528794145721, "percent_statements_covered_display": "63.67", "num_branches": 1736, "num_partial_branches": 234, "covered_branches": 858, "missing_branches": 878, "percent_branches_covered": 49.423963133640555, "percent_branches_covered_display": "49.42"}} \ No newline at end of file +{"meta": {"format": 3, "version": "7.13.4", "timestamp": "2026-02-12T09:26:29.397216", "branch_coverage": true, "show_contexts": false}, "files": {"app/__init__.py": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": [], "functions": {"": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}}, "app/api/__init__.py": {"executed_lines": [5, 7, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 22, 25, 28, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42], "summary": {"covered_lines": 28, "num_statements": 28, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": [], "functions": {"": {"executed_lines": [5, 7, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 22, 25, 28, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42], "summary": {"covered_lines": 28, "num_statements": 28, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [5, 7, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 22, 25, 28, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42], "summary": {"covered_lines": 28, "num_statements": 28, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}}, "app/api/azure.py": {"executed_lines": [5, 7, 8, 11, 12, 14, 15, 18, 20, 23, 24, 25, 30, 31, 34, 48, 50, 55, 91, 98, 99, 100], "summary": {"covered_lines": 22, "num_statements": 52, "percent_covered": 37.096774193548384, "percent_covered_display": "37.10", "missing_lines": 30, "excluded_lines": 0, "percent_statements_covered": 42.30769230769231, "percent_statements_covered_display": "42.31", "num_branches": 10, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 9, "percent_branches_covered": 10.0, "percent_branches_covered_display": "10.00"}, "missing_lines": [35, 36, 37, 38, 39, 40, 42, 58, 61, 62, 63, 64, 65, 71, 73, 74, 81, 83, 84, 92, 93, 105, 106, 107, 108, 109, 110, 112, 113, 114], "excluded_lines": [], "executed_branches": [[34, 48]], "missing_branches": [[34, 35], [37, 38], [37, 39], [39, 40], [39, 42], [63, 64], [63, 73], [64, 63], [64, 65]], "functions": {"test_azure_connection": {"executed_lines": [30, 31, 34, 48, 50, 55, 91, 98, 99, 100], "summary": {"covered_lines": 10, "num_statements": 40, "percent_covered": 22.0, "percent_covered_display": "22.00", "missing_lines": 30, "excluded_lines": 0, "percent_statements_covered": 25.0, "percent_statements_covered_display": "25.00", "num_branches": 10, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 9, "percent_branches_covered": 10.0, "percent_branches_covered_display": "10.00"}, "missing_lines": [35, 36, 37, 38, 39, 40, 42, 58, 61, 62, 63, 64, 65, 71, 73, 74, 81, 83, 84, 92, 93, 105, 106, 107, 108, 109, 110, 112, 113, 114], "excluded_lines": [], "start_line": 25, "executed_branches": [[34, 48]], "missing_branches": [[34, 35], [37, 38], [37, 39], [39, 40], [39, 42], [63, 64], [63, 73], [64, 63], [64, 65]]}, "": {"executed_lines": [5, 7, 8, 11, 12, 14, 15, 18, 20, 23, 24, 25], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [5, 7, 8, 11, 12, 14, 15, 18, 20, 23, 24, 25, 30, 31, 34, 48, 50, 55, 91, 98, 99, 100], "summary": {"covered_lines": 22, "num_statements": 52, "percent_covered": 37.096774193548384, "percent_covered_display": "37.10", "missing_lines": 30, "excluded_lines": 0, "percent_statements_covered": 42.30769230769231, "percent_statements_covered_display": "42.31", "num_branches": 10, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 9, "percent_branches_covered": 10.0, "percent_branches_covered_display": "10.00"}, "missing_lines": [35, 36, 37, 38, 39, 40, 42, 58, 61, 62, 63, 64, 65, 71, 73, 74, 81, 83, 84, 92, 93, 105, 106, 107, 108, 109, 110, 112, 113, 114], "excluded_lines": [], "start_line": 1, "executed_branches": [[34, 48]], "missing_branches": [[34, 35], [37, 38], [37, 39], [39, 40], [39, 42], [63, 64], [63, 73], [64, 63], [64, 65]]}}}, "app/api/common.py": {"executed_lines": [5, 6, 7, 9, 11, 14, 17, 37, 40, 41, 43, 46, 48, 51, 55, 56, 57, 59, 60, 64], "summary": {"covered_lines": 20, "num_statements": 20, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "executed_branches": [[40, 41], [40, 43], [46, 48], [46, 51]], "missing_branches": [], "functions": {"resolve_file_path": {"executed_lines": [37, 40, 41, 43, 46, 48, 51, 55, 56, 57, 59, 60, 64], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 17, "executed_branches": [[40, 41], [40, 43], [46, 48], [46, 51]], "missing_branches": []}, "": {"executed_lines": [5, 6, 7, 9, 11, 14, 17], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [5, 6, 7, 9, 11, 14, 17, 37, 40, 41, 43, 46, 48, 51, 55, 56, 57, 59, 60, 64], "summary": {"covered_lines": 20, "num_statements": 20, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [[40, 41], [40, 43], [46, 48], [46, 51]], "missing_branches": []}}}, "app/api/diagnostic.py": {"executed_lines": [5, 6, 8, 10, 11, 14, 16, 18, 21, 22, 23, 28, 31, 34, 54, 61, 62, 63, 65, 67, 68, 71, 73, 74, 75, 76], "summary": {"covered_lines": 26, "num_statements": 36, "percent_covered": 67.5, "percent_covered_display": "67.50", "missing_lines": 10, "excluded_lines": 0, "percent_statements_covered": 72.22222222222223, "percent_statements_covered_display": "72.22", "num_branches": 4, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 3, "percent_branches_covered": 25.0, "percent_branches_covered_display": "25.00"}, "missing_lines": [82, 83, 93, 94, 95, 101, 102, 107, 108, 109], "excluded_lines": [], "executed_branches": [[75, 76]], "missing_branches": [[75, 82], [93, 94], [93, 101]], "functions": {"diagnostic_settings": {"executed_lines": [28, 31, 34, 54], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 23, "executed_branches": [], "missing_branches": []}, "test_notification": {"executed_lines": [65, 67, 68, 71, 73, 74, 75, 76], "summary": {"covered_lines": 8, "num_statements": 18, "percent_covered": 40.90909090909091, "percent_covered_display": "40.91", "missing_lines": 10, "excluded_lines": 0, "percent_statements_covered": 44.44444444444444, "percent_statements_covered_display": "44.44", "num_branches": 4, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 3, "percent_branches_covered": 25.0, "percent_branches_covered_display": "25.00"}, "missing_lines": [82, 83, 93, 94, 95, 101, 102, 107, 108, 109], "excluded_lines": [], "start_line": 63, "executed_branches": [[75, 76]], "missing_branches": [[75, 82], [93, 94], [93, 101]]}, "": {"executed_lines": [5, 6, 8, 10, 11, 14, 16, 18, 21, 22, 23, 61, 62, 63], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [5, 6, 8, 10, 11, 14, 16, 18, 21, 22, 23, 28, 31, 34, 54, 61, 62, 63, 65, 67, 68, 71, 73, 74, 75, 76], "summary": {"covered_lines": 26, "num_statements": 36, "percent_covered": 67.5, "percent_covered_display": "67.50", "missing_lines": 10, "excluded_lines": 0, "percent_statements_covered": 72.22222222222223, "percent_statements_covered_display": "72.22", "num_branches": 4, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 3, "percent_branches_covered": 25.0, "percent_branches_covered_display": "25.00"}, "missing_lines": [82, 83, 93, 94, 95, 101, 102, 107, 108, 109], "excluded_lines": [], "start_line": 1, "executed_branches": [[75, 76]], "missing_branches": [[75, 82], [93, 94], [93, 101]]}}}, "app/api/dropbox.py": {"executed_lines": [5, 6, 7, 9, 10, 12, 13, 14, 17, 19, 22, 23, 24, 58, 59, 60, 101, 102, 103, 107, 108, 110, 111, 112, 182, 183, 184], "summary": {"covered_lines": 27, "num_statements": 125, "percent_covered": 16.374269005847953, "percent_covered_display": "16.37", "missing_lines": 98, "excluded_lines": 0, "percent_statements_covered": 21.6, "percent_statements_covered_display": "21.60", "num_branches": 46, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 45, "percent_branches_covered": 2.1739130434782608, "percent_branches_covered_display": "2.17"}, "missing_lines": [37, 39, 48, 51, 70, 71, 74, 75, 76, 78, 79, 80, 82, 83, 84, 86, 87, 88, 92, 94, 95, 96, 115, 116, 123, 124, 127, 128, 135, 137, 138, 139, 141, 142, 145, 146, 152, 153, 154, 160, 161, 162, 165, 167, 169, 177, 178, 179, 194, 196, 198, 199, 200, 204, 207, 208, 211, 216, 217, 218, 219, 220, 221, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 241, 242, 243, 246, 247, 250, 251, 252, 253, 254, 255, 256, 257, 259, 261, 263, 264, 265, 266, 267], "excluded_lines": [], "executed_branches": [[110, 111]], "missing_branches": [[74, 75], [74, 78], [78, 79], [78, 82], [82, 83], [82, 86], [86, 87], [86, 92], [110, 115], [123, 124], [123, 152], [137, 138], [137, 141], [152, 153], [152, 160], [198, 199], [198, 204], [216, 217], [216, 218], [218, 219], [218, 220], [220, 221], [220, 224], [226, 227], [226, 241], [229, 230], [229, 237], [230, 229], [230, 231], [231, 232], [231, 233], [237, 226], [237, 238], [241, 242], [241, 246], [242, 241], [242, 243], [250, 251], [250, 252], [252, 253], [252, 254], [254, 255], [254, 256], [256, 257], [256, 259]], "functions": {"exchange_dropbox_token": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [37, 39, 48, 51], "excluded_lines": [], "start_line": 24, "executed_branches": [], "missing_branches": []}, "update_dropbox_settings": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 18, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 18, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00", "num_branches": 8, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 8, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0.00"}, "missing_lines": [70, 71, 74, 75, 76, 78, 79, 80, 82, 83, 84, 86, 87, 88, 92, 94, 95, 96], "excluded_lines": [], "start_line": 60, "executed_branches": [], "missing_branches": [[74, 75], [74, 78], [78, 79], [78, 82], [82, 83], [82, 86], [86, 87], [86, 92]]}, "test_dropbox_token": {"executed_lines": [107, 108, 110, 111, 112], "summary": {"covered_lines": 5, "num_statements": 31, "percent_covered": 15.384615384615385, "percent_covered_display": "15.38", "missing_lines": 26, "excluded_lines": 0, "percent_statements_covered": 16.129032258064516, "percent_statements_covered_display": "16.13", "num_branches": 8, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 7, "percent_branches_covered": 12.5, "percent_branches_covered_display": "12.50"}, "missing_lines": [115, 116, 123, 124, 127, 128, 135, 137, 138, 139, 141, 142, 145, 146, 152, 153, 154, 160, 161, 162, 165, 167, 169, 177, 178, 179], "excluded_lines": [], "start_line": 103, "executed_branches": [[110, 111]], "missing_branches": [[110, 115], [123, 124], [123, 152], [137, 138], [137, 141], [152, 153], [152, 160]]}, "save_dropbox_settings": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 50, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 50, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00", "num_branches": 30, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 30, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0.00"}, "missing_lines": [194, 196, 198, 199, 200, 204, 207, 208, 211, 216, 217, 218, 219, 220, 221, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 241, 242, 243, 246, 247, 250, 251, 252, 253, 254, 255, 256, 257, 259, 261, 263, 264, 265, 266, 267], "excluded_lines": [], "start_line": 184, "executed_branches": [], "missing_branches": [[198, 199], [198, 204], [216, 217], [216, 218], [218, 219], [218, 220], [220, 221], [220, 224], [226, 227], [226, 241], [229, 230], [229, 237], [230, 229], [230, 231], [231, 232], [231, 233], [237, 226], [237, 238], [241, 242], [241, 246], [242, 241], [242, 243], [250, 251], [250, 252], [252, 253], [252, 254], [254, 255], [254, 256], [256, 257], [256, 259]]}, "": {"executed_lines": [5, 6, 7, 9, 10, 12, 13, 14, 17, 19, 22, 23, 24, 58, 59, 60, 101, 102, 103, 182, 183, 184], "summary": {"covered_lines": 22, "num_statements": 22, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [5, 6, 7, 9, 10, 12, 13, 14, 17, 19, 22, 23, 24, 58, 59, 60, 101, 102, 103, 107, 108, 110, 111, 112, 182, 183, 184], "summary": {"covered_lines": 27, "num_statements": 125, "percent_covered": 16.374269005847953, "percent_covered_display": "16.37", "missing_lines": 98, "excluded_lines": 0, "percent_statements_covered": 21.6, "percent_statements_covered_display": "21.60", "num_branches": 46, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 45, "percent_branches_covered": 2.1739130434782608, "percent_branches_covered_display": "2.17"}, "missing_lines": [37, 39, 48, 51, 70, 71, 74, 75, 76, 78, 79, 80, 82, 83, 84, 86, 87, 88, 92, 94, 95, 96, 115, 116, 123, 124, 127, 128, 135, 137, 138, 139, 141, 142, 145, 146, 152, 153, 154, 160, 161, 162, 165, 167, 169, 177, 178, 179, 194, 196, 198, 199, 200, 204, 207, 208, 211, 216, 217, 218, 219, 220, 221, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 241, 242, 243, 246, 247, 250, 251, 252, 253, 254, 255, 256, 257, 259, 261, 263, 264, 265, 266, 267], "excluded_lines": [], "start_line": 1, "executed_branches": [[110, 111]], "missing_branches": [[74, 75], [74, 78], [78, 79], [78, 82], [82, 83], [82, 86], [86, 87], [86, 92], [110, 115], [123, 124], [123, 152], [137, 138], [137, 141], [152, 153], [152, 160], [198, 199], [198, 204], [216, 217], [216, 218], [218, 219], [218, 220], [220, 221], [220, 224], [226, 227], [226, 241], [229, 230], [229, 237], [230, 229], [230, 231], [231, 232], [231, 233], [237, 226], [237, 238], [241, 242], [241, 246], [242, 241], [242, 243], [250, 251], [250, 252], [252, 253], [252, 254], [254, 255], [254, 256], [256, 257], [256, 259]]}}}, "app/api/files.py": {"executed_lines": [5, 6, 7, 8, 9, 11, 12, 13, 15, 16, 17, 18, 19, 20, 21, 22, 23, 26, 28, 30, 33, 40, 41, 42, 80, 83, 84, 87, 88, 91, 94, 97, 105, 106, 108, 111, 112, 115, 116, 119, 120, 121, 137, 139, 145, 150, 152, 155, 156, 157, 162, 164, 165, 168, 173, 174, 175, 187, 190, 192, 208, 209, 210, 216, 217, 219, 221, 223, 224, 227, 230, 231, 233, 235, 236, 237, 238, 239, 240, 243, 244, 245, 251, 254, 256, 258, 259, 261, 262, 265, 268, 269, 271, 273, 279, 280, 287, 288, 289, 293, 295, 297, 298, 300, 301, 302, 304, 305, 307, 308, 315, 318, 319, 320, 324, 333, 341, 342, 348, 349, 350, 360, 362, 364, 365, 368, 369, 372, 376, 380, 388, 389, 395, 396, 397, 457, 467, 469, 470, 471, 472, 473, 474, 477, 495, 497, 499, 501, 504, 505, 508, 509, 510, 511, 512, 513, 515, 519, 520, 521, 522, 523, 528, 532, 533, 534, 538, 540, 549, 550, 551, 573, 575, 577, 578, 581, 588, 589, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 603, 616, 617, 618, 624, 625, 628, 629, 635, 636, 637, 641, 642, 658, 659, 665, 666, 667, 683, 685, 687, 689, 690, 692, 694, 697, 699, 701, 702, 705, 706, 712, 713, 714, 718, 719, 721, 724, 730, 731, 737, 738, 739, 809, 810, 811, 813, 817, 819, 822, 824, 825, 826, 828, 831, 833, 834, 835, 836, 837, 838, 841, 844, 845, 846, 848, 849, 856, 871, 883, 884, 887, 890, 892, 894, 896, 898, 899, 903, 904, 907, 908, 909, 910, 911, 912, 915, 917, 925, 926, 928, 929, 931, 933, 934, 935, 939, 940, 941, 946, 947, 950, 951, 953], "summary": {"covered_lines": 292, "num_statements": 375, "percent_covered": 76.70103092783505, "percent_covered_display": "76.70", "missing_lines": 83, "excluded_lines": 0, "percent_statements_covered": 77.86666666666666, "percent_statements_covered_display": "77.87", "num_branches": 110, "num_partial_branches": 10, "covered_branches": 80, "missing_branches": 30, "percent_branches_covered": 72.72727272727273, "percent_branches_covered_display": "72.73"}, "missing_lines": [35, 37, 252, 281, 282, 283, 284, 329, 330, 331, 343, 344, 345, 390, 391, 392, 411, 413, 415, 416, 419, 420, 421, 422, 423, 424, 425, 427, 432, 436, 441, 450, 451, 452, 453, 454, 500, 516, 529, 536, 638, 639, 645, 646, 648, 650, 660, 661, 662, 695, 715, 716, 732, 733, 734, 755, 757, 759, 761, 762, 764, 766, 767, 769, 771, 773, 774, 777, 778, 784, 785, 786, 787, 788, 790, 791, 793, 796, 802, 803, 804, 805, 806], "excluded_lines": [], "executed_branches": [[83, 84], [83, 87], [87, 88], [87, 91], [105, 106], [105, 108], [120, 121], [120, 137], [164, 165], [164, 168], [174, 175], [174, 187], [216, 217], [216, 219], [223, 224], [223, 227], [251, 254], [258, 259], [258, 261], [268, 269], [268, 271], [297, 298], [297, 300], [304, 305], [304, 333], [307, 308], [307, 318], [364, 365], [364, 368], [368, 369], [368, 372], [472, 473], [472, 474], [497, 499], [497, 504], [499, 501], [504, 505], [504, 512], [508, 509], [508, 510], [512, 513], [512, 522], [515, 519], [522, 523], [528, 532], [577, 578], [577, 581], [588, 589], [588, 592], [616, 617], [616, 624], [636, 637], [636, 641], [637, 636], [641, 642], [689, 690], [689, 692], [692, 694], [692, 699], [694, 697], [699, 701], [699, 721], [713, 714], [713, 718], [714, 713], [718, 719], [824, 825], [824, 828], [846, 848], [846, 856], [894, 896], [894, 931], [908, 909], [908, 915], [931, 933], [931, 935], [935, 939], [935, 941], [941, 946], [941, 950]], "missing_branches": [[251, 252], [415, 416], [415, 419], [420, 421], [420, 423], [423, 424], [423, 427], [499, 500], [515, 516], [522, 536], [528, 529], [637, 638], [641, 645], [694, 695], [714, 715], [718, 724], [761, 762], [761, 764], [764, 766], [764, 771], [766, 767], [766, 769], [771, 773], [771, 793], [785, 786], [785, 790], [786, 785], [786, 787], [790, 791], [790, 796]], "functions": {"get_limiter": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [35, 37], "excluded_lines": [], "start_line": 33, "executed_branches": [], "missing_branches": []}, "list_files_api": {"executed_lines": [80, 83, 84, 87, 88, 91, 94, 97, 105, 106, 108, 111, 112, 115, 116, 119, 120, 121, 137, 139], "summary": {"covered_lines": 20, "num_statements": 20, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 8, "num_partial_branches": 0, "covered_branches": 8, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 42, "executed_branches": [[83, 84], [83, 87], [87, 88], [87, 91], [105, 106], [105, 108], [120, 121], [120, 137]], "missing_branches": []}, "_get_file_processing_status": {"executed_lines": [150, 152], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 145, "executed_branches": [], "missing_branches": []}, "get_file_details": {"executed_lines": [162, 164, 165, 168, 173, 174, 175, 187, 190, 192], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 157, "executed_branches": [[164, 165], [164, 168], [174, 175], [174, 187]], "missing_branches": []}, "delete_file_record": {"executed_lines": [216, 217, 219, 221, 223, 224, 227, 230, 231, 233, 235, 236, 237, 238, 239, 240], "summary": {"covered_lines": 16, "num_statements": 16, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 210, "executed_branches": [[216, 217], [216, 219], [223, 224], [223, 227]], "missing_branches": []}, "bulk_delete_files": {"executed_lines": [251, 254, 256, 258, 259, 261, 262, 265, 268, 269, 271, 273, 279, 280], "summary": {"covered_lines": 14, "num_statements": 19, "percent_covered": 76.0, "percent_covered_display": "76.00", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 73.6842105263158, "percent_statements_covered_display": "73.68", "num_branches": 6, "num_partial_branches": 1, "covered_branches": 5, "missing_branches": 1, "percent_branches_covered": 83.33333333333333, "percent_branches_covered_display": "83.33"}, "missing_lines": [252, 281, 282, 283, 284], "excluded_lines": [], "start_line": 245, "executed_branches": [[251, 254], [258, 259], [258, 261], [268, 269], [268, 271]], "missing_branches": [[251, 252]]}, "bulk_reprocess_files": {"executed_lines": [293, 295, 297, 298, 300, 301, 302, 304, 305, 307, 308, 315, 318, 319, 320, 324, 333, 341, 342], "summary": {"covered_lines": 19, "num_statements": 25, "percent_covered": 80.64516129032258, "percent_covered_display": "80.65", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 76.0, "percent_statements_covered_display": "76.00", "num_branches": 6, "num_partial_branches": 0, "covered_branches": 6, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [329, 330, 331, 343, 344, 345], "excluded_lines": [], "start_line": 289, "executed_branches": [[297, 298], [297, 300], [304, 305], [304, 333], [307, 308], [307, 318]], "missing_branches": []}, "reprocess_single_file": {"executed_lines": [360, 362, 364, 365, 368, 369, 372, 376, 380, 388, 389], "summary": {"covered_lines": 11, "num_statements": 14, "percent_covered": 83.33333333333333, "percent_covered_display": "83.33", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 78.57142857142857, "percent_statements_covered_display": "78.57", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [390, 391, 392], "excluded_lines": [], "start_line": 350, "executed_branches": [[364, 365], [364, 368], [368, 369], [368, 372]], "missing_branches": []}, "reprocess_with_cloud_ocr": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 20, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 20, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00", "num_branches": 6, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 6, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0.00"}, "missing_lines": [411, 413, 415, 416, 419, 420, 421, 422, 423, 424, 425, 427, 432, 436, 441, 450, 451, 452, 453, 454], "excluded_lines": [], "start_line": 397, "executed_branches": [], "missing_branches": [[415, 416], [415, 419], [420, 421], [420, 423], [423, 424], [423, 427]]}, "_extract_text_from_pdf": {"executed_lines": [467, 469, 470, 471, 472, 473, 474], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 457, "executed_branches": [[472, 473], [472, 474]], "missing_branches": []}, "_retry_pipeline_step": {"executed_lines": [495, 497, 499, 501, 504, 505, 508, 509, 510, 511, 512, 513, 515, 519, 520, 521, 522, 523, 528, 532, 533, 534, 538, 540], "summary": {"covered_lines": 24, "num_statements": 28, "percent_covered": 81.81818181818181, "percent_covered_display": "81.82", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 85.71428571428571, "percent_statements_covered_display": "85.71", "num_branches": 16, "num_partial_branches": 4, "covered_branches": 12, "missing_branches": 4, "percent_branches_covered": 75.0, "percent_branches_covered_display": "75.00"}, "missing_lines": [500, 516, 529, 536], "excluded_lines": [], "start_line": 477, "executed_branches": [[497, 499], [497, 504], [499, 501], [504, 505], [504, 512], [508, 509], [508, 510], [512, 513], [512, 522], [515, 519], [522, 523], [528, 532]], "missing_branches": [[499, 500], [515, 516], [522, 536], [528, 529]]}, "retry_subtask": {"executed_lines": [573, 575, 577, 578, 581, 588, 589, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 603, 616, 617, 618, 624, 625, 628, 629, 635, 636, 637, 641, 642, 658, 659], "summary": {"covered_lines": 32, "num_statements": 41, "percent_covered": 79.24528301886792, "percent_covered_display": "79.25", "missing_lines": 9, "excluded_lines": 0, "percent_statements_covered": 78.04878048780488, "percent_statements_covered_display": "78.05", "num_branches": 12, "num_partial_branches": 2, "covered_branches": 10, "missing_branches": 2, "percent_branches_covered": 83.33333333333333, "percent_branches_covered_display": "83.33"}, "missing_lines": [638, 639, 645, 646, 648, 650, 660, 661, 662], "excluded_lines": [], "start_line": 551, "executed_branches": [[577, 578], [577, 581], [588, 589], [588, 592], [616, 617], [616, 624], [636, 637], [636, 641], [637, 636], [641, 642]], "missing_branches": [[637, 638], [641, 645]]}, "get_file_preview": {"executed_lines": [683, 685, 687, 689, 690, 692, 694, 697, 699, 701, 702, 705, 706, 712, 713, 714, 718, 719, 721, 724, 730, 731], "summary": {"covered_lines": 22, "num_statements": 28, "percent_covered": 78.57142857142857, "percent_covered_display": "78.57", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 78.57142857142857, "percent_statements_covered_display": "78.57", "num_branches": 14, "num_partial_branches": 3, "covered_branches": 11, "missing_branches": 3, "percent_branches_covered": 78.57142857142857, "percent_branches_covered_display": "78.57"}, "missing_lines": [695, 715, 716, 732, 733, 734], "excluded_lines": [], "start_line": 667, "executed_branches": [[689, 690], [689, 692], [692, 694], [692, 699], [694, 697], [699, 701], [699, 721], [713, 714], [713, 718], [714, 713], [718, 719]], "missing_branches": [[694, 695], [714, 715], [718, 724]]}, "download_file": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 28, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 28, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00", "num_branches": 14, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 14, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0.00"}, "missing_lines": [755, 757, 759, 761, 762, 764, 766, 767, 769, 771, 773, 774, 777, 778, 784, 785, 786, 787, 788, 790, 791, 793, 796, 802, 803, 804, 805, 806], "excluded_lines": [], "start_line": 739, "executed_branches": [], "missing_branches": [[761, 762], [761, 764], [764, 766], [764, 771], [766, 767], [766, 769], [771, 773], [771, 793], [785, 786], [785, 790], [786, 785], [786, 787], [790, 791], [790, 796]]}, "ui_upload": {"executed_lines": [813, 817, 819, 822, 824, 825, 826, 828, 831, 833, 834, 835, 836, 837, 838, 841, 844, 845, 846, 848, 849, 856, 871, 883, 884, 887, 890, 892, 894, 896, 898, 899, 903, 904, 907, 908, 909, 910, 911, 912, 915, 917, 925, 926, 928, 929, 931, 933, 934, 935, 939, 940, 941, 946, 947, 950, 951, 953], "summary": {"covered_lines": 58, "num_statements": 58, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 14, "num_partial_branches": 0, "covered_branches": 14, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 811, "executed_branches": [[824, 825], [824, 828], [846, 848], [846, 856], [894, 896], [894, 931], [908, 909], [908, 915], [931, 933], [931, 935], [935, 939], [935, 941], [941, 946], [941, 950]], "missing_branches": []}, "": {"executed_lines": [5, 6, 7, 8, 9, 11, 12, 13, 15, 16, 17, 18, 19, 20, 21, 22, 23, 26, 28, 30, 33, 40, 41, 42, 145, 155, 156, 157, 208, 209, 210, 243, 244, 245, 287, 288, 289, 348, 349, 350, 395, 396, 397, 457, 477, 549, 550, 551, 665, 666, 667, 737, 738, 739, 809, 810, 811], "summary": {"covered_lines": 57, "num_statements": 57, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [5, 6, 7, 8, 9, 11, 12, 13, 15, 16, 17, 18, 19, 20, 21, 22, 23, 26, 28, 30, 33, 40, 41, 42, 80, 83, 84, 87, 88, 91, 94, 97, 105, 106, 108, 111, 112, 115, 116, 119, 120, 121, 137, 139, 145, 150, 152, 155, 156, 157, 162, 164, 165, 168, 173, 174, 175, 187, 190, 192, 208, 209, 210, 216, 217, 219, 221, 223, 224, 227, 230, 231, 233, 235, 236, 237, 238, 239, 240, 243, 244, 245, 251, 254, 256, 258, 259, 261, 262, 265, 268, 269, 271, 273, 279, 280, 287, 288, 289, 293, 295, 297, 298, 300, 301, 302, 304, 305, 307, 308, 315, 318, 319, 320, 324, 333, 341, 342, 348, 349, 350, 360, 362, 364, 365, 368, 369, 372, 376, 380, 388, 389, 395, 396, 397, 457, 467, 469, 470, 471, 472, 473, 474, 477, 495, 497, 499, 501, 504, 505, 508, 509, 510, 511, 512, 513, 515, 519, 520, 521, 522, 523, 528, 532, 533, 534, 538, 540, 549, 550, 551, 573, 575, 577, 578, 581, 588, 589, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 603, 616, 617, 618, 624, 625, 628, 629, 635, 636, 637, 641, 642, 658, 659, 665, 666, 667, 683, 685, 687, 689, 690, 692, 694, 697, 699, 701, 702, 705, 706, 712, 713, 714, 718, 719, 721, 724, 730, 731, 737, 738, 739, 809, 810, 811, 813, 817, 819, 822, 824, 825, 826, 828, 831, 833, 834, 835, 836, 837, 838, 841, 844, 845, 846, 848, 849, 856, 871, 883, 884, 887, 890, 892, 894, 896, 898, 899, 903, 904, 907, 908, 909, 910, 911, 912, 915, 917, 925, 926, 928, 929, 931, 933, 934, 935, 939, 940, 941, 946, 947, 950, 951, 953], "summary": {"covered_lines": 292, "num_statements": 375, "percent_covered": 76.70103092783505, "percent_covered_display": "76.70", "missing_lines": 83, "excluded_lines": 0, "percent_statements_covered": 77.86666666666666, "percent_statements_covered_display": "77.87", "num_branches": 110, "num_partial_branches": 10, "covered_branches": 80, "missing_branches": 30, "percent_branches_covered": 72.72727272727273, "percent_branches_covered_display": "72.73"}, "missing_lines": [35, 37, 252, 281, 282, 283, 284, 329, 330, 331, 343, 344, 345, 390, 391, 392, 411, 413, 415, 416, 419, 420, 421, 422, 423, 424, 425, 427, 432, 436, 441, 450, 451, 452, 453, 454, 500, 516, 529, 536, 638, 639, 645, 646, 648, 650, 660, 661, 662, 695, 715, 716, 732, 733, 734, 755, 757, 759, 761, 762, 764, 766, 767, 769, 771, 773, 774, 777, 778, 784, 785, 786, 787, 788, 790, 791, 793, 796, 802, 803, 804, 805, 806], "excluded_lines": [], "start_line": 1, "executed_branches": [[83, 84], [83, 87], [87, 88], [87, 91], [105, 106], [105, 108], [120, 121], [120, 137], [164, 165], [164, 168], [174, 175], [174, 187], [216, 217], [216, 219], [223, 224], [223, 227], [251, 254], [258, 259], [258, 261], [268, 269], [268, 271], [297, 298], [297, 300], [304, 305], [304, 333], [307, 308], [307, 318], [364, 365], [364, 368], [368, 369], [368, 372], [472, 473], [472, 474], [497, 499], [497, 504], [499, 501], [504, 505], [504, 512], [508, 509], [508, 510], [512, 513], [512, 522], [515, 519], [522, 523], [528, 532], [577, 578], [577, 581], [588, 589], [588, 592], [616, 617], [616, 624], [636, 637], [636, 641], [637, 636], [641, 642], [689, 690], [689, 692], [692, 694], [692, 699], [694, 697], [699, 701], [699, 721], [713, 714], [713, 718], [714, 713], [718, 719], [824, 825], [824, 828], [846, 848], [846, 856], [894, 896], [894, 931], [908, 909], [908, 915], [931, 933], [931, 935], [935, 939], [935, 941], [941, 946], [941, 950]], "missing_branches": [[251, 252], [415, 416], [415, 419], [420, 421], [420, 423], [423, 424], [423, 427], [499, 500], [515, 516], [522, 536], [528, 529], [637, 638], [641, 645], [694, 695], [714, 715], [718, 724], [761, 762], [761, 764], [764, 766], [764, 771], [766, 767], [766, 769], [771, 773], [771, 793], [785, 786], [785, 790], [786, 785], [786, 787], [790, 791], [790, 796]]}}}, "app/api/google_drive.py": {"executed_lines": [5, 6, 7, 8, 10, 12, 13, 14, 17, 19, 22, 23, 24, 58, 59, 60, 108, 109, 110, 115, 116, 118, 121, 189, 190, 191, 224, 225, 226, 307, 309, 310, 312, 313, 314, 316, 317, 318, 319, 320, 321, 322, 324, 327, 328, 329], "summary": {"covered_lines": 46, "num_statements": 201, "percent_covered": 20.363636363636363, "percent_covered_display": "20.36", "missing_lines": 155, "excluded_lines": 0, "percent_statements_covered": 22.885572139303484, "percent_statements_covered_display": "22.89", "num_branches": 74, "num_partial_branches": 2, "covered_branches": 10, "missing_branches": 64, "percent_branches_covered": 13.513513513513514, "percent_branches_covered_display": "13.51"}, "missing_lines": [37, 39, 48, 51, 71, 72, 75, 78, 79, 80, 82, 83, 84, 86, 87, 88, 90, 91, 92, 95, 96, 98, 100, 101, 102, 122, 127, 128, 130, 132, 135, 136, 138, 147, 148, 151, 152, 153, 154, 155, 156, 163, 164, 166, 168, 175, 176, 177, 180, 181, 186, 193, 194, 195, 198, 199, 201, 202, 204, 206, 208, 214, 215, 216, 217, 219, 220, 221, 232, 233, 236, 237, 238, 243, 248, 249, 251, 253, 254, 256, 265, 266, 269, 270, 271, 272, 273, 274, 281, 283, 289, 290, 291, 294, 295, 300, 302, 303, 304, 340, 342, 345, 348, 351, 352, 353, 354, 355, 356, 357, 360, 361, 364, 365, 366, 369, 370, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 390, 391, 392, 395, 396, 398, 399, 400, 402, 407, 408, 409, 410, 411, 412, 413, 414, 417, 419, 421, 427, 428, 429], "excluded_lines": [], "executed_branches": [[121, 189], [189, 190], [309, 310], [309, 312], [317, 318], [317, 319], [319, 320], [319, 321], [321, 322], [321, 324]], "missing_branches": [[78, 79], [78, 82], [82, 83], [82, 86], [86, 87], [86, 90], [90, 91], [90, 95], [121, 122], [122, 127], [122, 130], [147, 148], [147, 151], [152, 153], [152, 163], [180, 181], [180, 186], [189, 193], [201, 202], [201, 204], [236, 237], [236, 243], [243, 248], [243, 251], [265, 266], [265, 269], [270, 271], [270, 281], [294, 295], [294, 300], [351, 352], [351, 360], [352, 353], [352, 354], [354, 355], [354, 356], [356, 357], [356, 360], [360, 361], [360, 364], [364, 365], [364, 402], [375, 376], [375, 390], [378, 379], [378, 386], [379, 378], [379, 380], [380, 381], [380, 382], [386, 375], [386, 387], [390, 391], [390, 395], [391, 390], [391, 392], [407, 408], [407, 409], [409, 410], [409, 411], [411, 412], [411, 413], [413, 414], [413, 417]], "functions": {"exchange_google_drive_token": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [37, 39, 48, 51], "excluded_lines": [], "start_line": 24, "executed_branches": [], "missing_branches": []}, "update_google_drive_settings": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 21, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 21, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00", "num_branches": 8, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 8, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0.00"}, "missing_lines": [71, 72, 75, 78, 79, 80, 82, 83, 84, 86, 87, 88, 90, 91, 92, 95, 96, 98, 100, 101, 102], "excluded_lines": [], "start_line": 60, "executed_branches": [], "missing_branches": [[78, 79], [78, 82], [82, 83], [82, 86], [86, 87], [86, 90], [90, 91], [90, 95]]}, "test_google_drive_token": {"executed_lines": [115, 116, 118, 121, 189, 190, 191], "summary": {"covered_lines": 7, "num_statements": 50, "percent_covered": 14.0625, "percent_covered_display": "14.06", "missing_lines": 43, "excluded_lines": 0, "percent_statements_covered": 14.0, "percent_statements_covered_display": "14.00", "num_branches": 14, "num_partial_branches": 2, "covered_branches": 2, "missing_branches": 12, "percent_branches_covered": 14.285714285714286, "percent_branches_covered_display": "14.29"}, "missing_lines": [122, 127, 128, 130, 132, 135, 136, 138, 147, 148, 151, 152, 153, 154, 155, 156, 163, 164, 166, 168, 175, 176, 177, 180, 181, 186, 193, 194, 195, 198, 199, 201, 202, 204, 206, 208, 214, 215, 216, 217, 219, 220, 221], "excluded_lines": [], "start_line": 110, "executed_branches": [[121, 189], [189, 190]], "missing_branches": [[121, 122], [122, 127], [122, 130], [147, 148], [147, 151], [152, 153], [152, 163], [180, 181], [180, 186], [189, 193], [201, 202], [201, 204]]}, "get_google_drive_token_info": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 31, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 31, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00", "num_branches": 10, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 10, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0.00"}, "missing_lines": [232, 233, 236, 237, 238, 243, 248, 249, 251, 253, 254, 256, 265, 266, 269, 270, 271, 272, 273, 274, 281, 283, 289, 290, 291, 294, 295, 300, 302, 303, 304], "excluded_lines": [], "start_line": 226, "executed_branches": [], "missing_branches": [[236, 237], [236, 243], [243, 248], [243, 251], [265, 266], [265, 269], [270, 271], [270, 281], [294, 295], [294, 300]]}, "format_time_remaining": {"executed_lines": [309, 310, 312, 313, 314, 316, 317, 318, 319, 320, 321, 322, 324], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 8, "num_partial_branches": 0, "covered_branches": 8, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 307, "executed_branches": [[309, 310], [309, 312], [317, 318], [317, 319], [319, 320], [319, 321], [321, 322], [321, 324]], "missing_branches": []}, "save_dropbox_settings": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 56, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 56, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00", "num_branches": 34, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 34, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0.00"}, "missing_lines": [340, 342, 345, 348, 351, 352, 353, 354, 355, 356, 357, 360, 361, 364, 365, 366, 369, 370, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 390, 391, 392, 395, 396, 398, 399, 400, 402, 407, 408, 409, 410, 411, 412, 413, 414, 417, 419, 421, 427, 428, 429], "excluded_lines": [], "start_line": 329, "executed_branches": [], "missing_branches": [[351, 352], [351, 360], [352, 353], [352, 354], [354, 355], [354, 356], [356, 357], [356, 360], [360, 361], [360, 364], [364, 365], [364, 402], [375, 376], [375, 390], [378, 379], [378, 386], [379, 378], [379, 380], [380, 381], [380, 382], [386, 375], [386, 387], [390, 391], [390, 395], [391, 390], [391, 392], [407, 408], [407, 409], [409, 410], [409, 411], [411, 412], [411, 413], [413, 414], [413, 417]]}, "": {"executed_lines": [5, 6, 7, 8, 10, 12, 13, 14, 17, 19, 22, 23, 24, 58, 59, 60, 108, 109, 110, 224, 225, 226, 307, 327, 328, 329], "summary": {"covered_lines": 26, "num_statements": 26, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [5, 6, 7, 8, 10, 12, 13, 14, 17, 19, 22, 23, 24, 58, 59, 60, 108, 109, 110, 115, 116, 118, 121, 189, 190, 191, 224, 225, 226, 307, 309, 310, 312, 313, 314, 316, 317, 318, 319, 320, 321, 322, 324, 327, 328, 329], "summary": {"covered_lines": 46, "num_statements": 201, "percent_covered": 20.363636363636363, "percent_covered_display": "20.36", "missing_lines": 155, "excluded_lines": 0, "percent_statements_covered": 22.885572139303484, "percent_statements_covered_display": "22.89", "num_branches": 74, "num_partial_branches": 2, "covered_branches": 10, "missing_branches": 64, "percent_branches_covered": 13.513513513513514, "percent_branches_covered_display": "13.51"}, "missing_lines": [37, 39, 48, 51, 71, 72, 75, 78, 79, 80, 82, 83, 84, 86, 87, 88, 90, 91, 92, 95, 96, 98, 100, 101, 102, 122, 127, 128, 130, 132, 135, 136, 138, 147, 148, 151, 152, 153, 154, 155, 156, 163, 164, 166, 168, 175, 176, 177, 180, 181, 186, 193, 194, 195, 198, 199, 201, 202, 204, 206, 208, 214, 215, 216, 217, 219, 220, 221, 232, 233, 236, 237, 238, 243, 248, 249, 251, 253, 254, 256, 265, 266, 269, 270, 271, 272, 273, 274, 281, 283, 289, 290, 291, 294, 295, 300, 302, 303, 304, 340, 342, 345, 348, 351, 352, 353, 354, 355, 356, 357, 360, 361, 364, 365, 366, 369, 370, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 390, 391, 392, 395, 396, 398, 399, 400, 402, 407, 408, 409, 410, 411, 412, 413, 414, 417, 419, 421, 427, 428, 429], "excluded_lines": [], "start_line": 1, "executed_branches": [[121, 189], [189, 190], [309, 310], [309, 312], [317, 318], [317, 319], [319, 320], [319, 321], [321, 322], [321, 324]], "missing_branches": [[78, 79], [78, 82], [82, 83], [82, 86], [86, 87], [86, 90], [90, 91], [90, 95], [121, 122], [122, 127], [122, 130], [147, 148], [147, 151], [152, 153], [152, 163], [180, 181], [180, 186], [189, 193], [201, 202], [201, 204], [236, 237], [236, 243], [243, 248], [243, 251], [265, 266], [265, 269], [270, 271], [270, 281], [294, 295], [294, 300], [351, 352], [351, 360], [352, 353], [352, 354], [354, 355], [354, 356], [356, 357], [356, 360], [360, 361], [360, 364], [364, 365], [364, 402], [375, 376], [375, 390], [378, 379], [378, 386], [379, 378], [379, 380], [380, 381], [380, 382], [386, 375], [386, 387], [390, 391], [390, 395], [391, 390], [391, 392], [407, 408], [407, 409], [409, 410], [409, 411], [411, 412], [411, 413], [413, 414], [413, 417]]}}}, "app/api/logs.py": {"executed_lines": [5, 6, 8, 9, 10, 12, 13, 14, 17, 19, 21, 24, 25, 26, 56, 59, 61, 62, 65, 68, 69, 70, 81, 84, 85, 86, 94, 95, 96, 99, 102, 103, 104, 115, 128, 129, 130, 136, 138, 139, 142, 143, 144, 155], "summary": {"covered_lines": 44, "num_statements": 45, "percent_covered": 96.61016949152543, "percent_covered_display": "96.61", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 97.77777777777777, "percent_statements_covered_display": "97.78", "num_branches": 14, "num_partial_branches": 1, "covered_branches": 13, "missing_branches": 1, "percent_branches_covered": 92.85714285714286, "percent_branches_covered_display": "92.86"}, "missing_lines": [60], "excluded_lines": [], "executed_branches": [[59, 61], [61, 62], [61, 65], [69, 70], [69, 81], [95, 96], [95, 99], [103, 104], [103, 115], [138, 139], [138, 142], [143, 144], [143, 155]], "missing_branches": [[59, 60]], "functions": {"list_processing_logs": {"executed_lines": [56, 59, 61, 62, 65, 68, 69, 70, 81], "summary": {"covered_lines": 9, "num_statements": 10, "percent_covered": 87.5, "percent_covered_display": "87.50", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 90.0, "percent_statements_covered_display": "90.00", "num_branches": 6, "num_partial_branches": 1, "covered_branches": 5, "missing_branches": 1, "percent_branches_covered": 83.33333333333333, "percent_branches_covered_display": "83.33"}, "missing_lines": [60], "excluded_lines": [], "start_line": 26, "executed_branches": [[59, 61], [61, 62], [61, 65], [69, 70], [69, 81]], "missing_branches": [[59, 60]]}, "get_file_processing_logs": {"executed_lines": [94, 95, 96, 99, 102, 103, 104, 115], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 86, "executed_branches": [[95, 96], [95, 99], [103, 104], [103, 115]], "missing_branches": []}, "get_task_processing_logs": {"executed_lines": [136, 138, 139, 142, 143, 144, 155], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 130, "executed_branches": [[138, 139], [138, 142], [143, 144], [143, 155]], "missing_branches": []}, "": {"executed_lines": [5, 6, 8, 9, 10, 12, 13, 14, 17, 19, 21, 24, 25, 26, 84, 85, 86, 128, 129, 130], "summary": {"covered_lines": 20, "num_statements": 20, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [5, 6, 8, 9, 10, 12, 13, 14, 17, 19, 21, 24, 25, 26, 56, 59, 61, 62, 65, 68, 69, 70, 81, 84, 85, 86, 94, 95, 96, 99, 102, 103, 104, 115, 128, 129, 130, 136, 138, 139, 142, 143, 144, 155], "summary": {"covered_lines": 44, "num_statements": 45, "percent_covered": 96.61016949152543, "percent_covered_display": "96.61", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 97.77777777777777, "percent_statements_covered_display": "97.78", "num_branches": 14, "num_partial_branches": 1, "covered_branches": 13, "missing_branches": 1, "percent_branches_covered": 92.85714285714286, "percent_branches_covered_display": "92.86"}, "missing_lines": [60], "excluded_lines": [], "start_line": 1, "executed_branches": [[59, 61], [61, 62], [61, 65], [69, 70], [69, 81], [95, 96], [95, 99], [103, 104], [103, 115], [138, 139], [138, 142], [143, 144], [143, 155]], "missing_branches": [[59, 60]]}}}, "app/api/onedrive.py": {"executed_lines": [5, 6, 7, 8, 10, 11, 13, 14, 15, 18, 20, 23, 24, 25, 56, 57, 58, 62, 63, 65, 70, 71, 177, 179, 180, 182, 183, 184, 186, 187, 188, 189, 190, 191, 192, 194, 197, 198, 199, 292, 293, 294, 348, 349, 350], "summary": {"covered_lines": 45, "num_statements": 189, "percent_covered": 21.011673151750973, "percent_covered_display": "21.01", "missing_lines": 144, "excluded_lines": 0, "percent_statements_covered": 23.80952380952381, "percent_statements_covered_display": "23.81", "num_branches": 68, "num_partial_branches": 1, "covered_branches": 9, "missing_branches": 59, "percent_branches_covered": 13.235294117647058, "percent_branches_covered_display": "13.24"}, "missing_lines": [38, 40, 50, 53, 74, 75, 77, 85, 87, 88, 89, 91, 92, 93, 96, 97, 98, 101, 104, 105, 106, 107, 108, 110, 111, 113, 114, 115, 116, 118, 120, 121, 123, 124, 126, 128, 129, 132, 133, 135, 137, 138, 139, 145, 146, 147, 150, 151, 154, 155, 162, 164, 172, 173, 174, 210, 212, 214, 215, 216, 220, 223, 224, 227, 232, 233, 234, 235, 236, 237, 238, 239, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 259, 260, 261, 264, 265, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 279, 281, 283, 284, 285, 286, 287, 305, 306, 309, 310, 311, 313, 314, 315, 317, 318, 319, 321, 322, 323, 325, 326, 327, 330, 331, 333, 334, 335, 336, 337, 339, 341, 342, 343, 354, 356, 365, 375, 376, 377, 378], "excluded_lines": [], "executed_branches": [[65, 70], [179, 180], [179, 182], [187, 188], [187, 189], [189, 190], [189, 191], [191, 192], [191, 194]], "missing_branches": [[65, 74], [87, 88], [87, 91], [97, 98], [97, 132], [106, 107], [106, 132], [113, 114], [113, 120], [114, 115], [114, 118], [120, 121], [120, 123], [137, 138], [137, 145], [214, 215], [214, 220], [232, 233], [232, 234], [234, 235], [234, 236], [236, 237], [236, 238], [238, 239], [238, 242], [244, 245], [244, 259], [247, 248], [247, 255], [248, 247], [248, 249], [249, 250], [249, 251], [255, 244], [255, 256], [259, 260], [259, 264], [260, 259], [260, 261], [268, 269], [268, 270], [270, 271], [270, 272], [272, 273], [272, 274], [274, 275], [274, 276], [276, 277], [276, 279], [309, 310], [309, 313], [313, 314], [313, 317], [317, 318], [317, 321], [321, 322], [321, 325], [325, 326], [325, 330]], "functions": {"exchange_onedrive_token": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [38, 40, 50, 53], "excluded_lines": [], "start_line": 25, "executed_branches": [], "missing_branches": []}, "test_onedrive_token": {"executed_lines": [62, 63, 65, 70, 71], "summary": {"covered_lines": 5, "num_statements": 56, "percent_covered": 8.333333333333334, "percent_covered_display": "8.33", "missing_lines": 51, "excluded_lines": 0, "percent_statements_covered": 8.928571428571429, "percent_statements_covered_display": "8.93", "num_branches": 16, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 15, "percent_branches_covered": 6.25, "percent_branches_covered_display": "6.25"}, "missing_lines": [74, 75, 77, 85, 87, 88, 89, 91, 92, 93, 96, 97, 98, 101, 104, 105, 106, 107, 108, 110, 111, 113, 114, 115, 116, 118, 120, 121, 123, 124, 126, 128, 129, 132, 133, 135, 137, 138, 139, 145, 146, 147, 150, 151, 154, 155, 162, 164, 172, 173, 174], "excluded_lines": [], "start_line": 58, "executed_branches": [[65, 70]], "missing_branches": [[65, 74], [87, 88], [87, 91], [97, 98], [97, 132], [106, 107], [106, 132], [113, 114], [113, 120], [114, 115], [114, 118], [120, 121], [120, 123], [137, 138], [137, 145]]}, "format_time_remaining": {"executed_lines": [179, 180, 182, 183, 184, 186, 187, 188, 189, 190, 191, 192, 194], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 8, "num_partial_branches": 0, "covered_branches": 8, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 177, "executed_branches": [[179, 180], [179, 182], [187, 188], [187, 189], [189, 190], [189, 191], [191, 192], [191, 194]], "missing_branches": []}, "save_onedrive_settings": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 54, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 54, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00", "num_branches": 34, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 34, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0.00"}, "missing_lines": [210, 212, 214, 215, 216, 220, 223, 224, 227, 232, 233, 234, 235, 236, 237, 238, 239, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 259, 260, 261, 264, 265, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 279, 281, 283, 284, 285, 286, 287], "excluded_lines": [], "start_line": 199, "executed_branches": [], "missing_branches": [[214, 215], [214, 220], [232, 233], [232, 234], [234, 235], [234, 236], [236, 237], [236, 238], [238, 239], [238, 242], [244, 245], [244, 259], [247, 248], [247, 255], [248, 247], [248, 249], [249, 250], [249, 251], [255, 244], [255, 256], [259, 260], [259, 264], [260, 259], [260, 261], [268, 269], [268, 270], [270, 271], [270, 272], [272, 273], [272, 274], [274, 275], [274, 276], [276, 277], [276, 279]]}, "update_onedrive_settings": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 28, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 28, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00", "num_branches": 10, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 10, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0.00"}, "missing_lines": [305, 306, 309, 310, 311, 313, 314, 315, 317, 318, 319, 321, 322, 323, 325, 326, 327, 330, 331, 333, 334, 335, 336, 337, 339, 341, 342, 343], "excluded_lines": [], "start_line": 294, "executed_branches": [], "missing_branches": [[309, 310], [309, 313], [313, 314], [313, 317], [317, 318], [317, 321], [321, 322], [321, 325], [325, 326], [325, 330]]}, "get_onedrive_full_config": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 7, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 7, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [354, 356, 365, 375, 376, 377, 378], "excluded_lines": [], "start_line": 350, "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [5, 6, 7, 8, 10, 11, 13, 14, 15, 18, 20, 23, 24, 25, 56, 57, 58, 177, 197, 198, 199, 292, 293, 294, 348, 349, 350], "summary": {"covered_lines": 27, "num_statements": 27, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [5, 6, 7, 8, 10, 11, 13, 14, 15, 18, 20, 23, 24, 25, 56, 57, 58, 62, 63, 65, 70, 71, 177, 179, 180, 182, 183, 184, 186, 187, 188, 189, 190, 191, 192, 194, 197, 198, 199, 292, 293, 294, 348, 349, 350], "summary": {"covered_lines": 45, "num_statements": 189, "percent_covered": 21.011673151750973, "percent_covered_display": "21.01", "missing_lines": 144, "excluded_lines": 0, "percent_statements_covered": 23.80952380952381, "percent_statements_covered_display": "23.81", "num_branches": 68, "num_partial_branches": 1, "covered_branches": 9, "missing_branches": 59, "percent_branches_covered": 13.235294117647058, "percent_branches_covered_display": "13.24"}, "missing_lines": [38, 40, 50, 53, 74, 75, 77, 85, 87, 88, 89, 91, 92, 93, 96, 97, 98, 101, 104, 105, 106, 107, 108, 110, 111, 113, 114, 115, 116, 118, 120, 121, 123, 124, 126, 128, 129, 132, 133, 135, 137, 138, 139, 145, 146, 147, 150, 151, 154, 155, 162, 164, 172, 173, 174, 210, 212, 214, 215, 216, 220, 223, 224, 227, 232, 233, 234, 235, 236, 237, 238, 239, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 259, 260, 261, 264, 265, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 279, 281, 283, 284, 285, 286, 287, 305, 306, 309, 310, 311, 313, 314, 315, 317, 318, 319, 321, 322, 323, 325, 326, 327, 330, 331, 333, 334, 335, 336, 337, 339, 341, 342, 343, 354, 356, 365, 375, 376, 377, 378], "excluded_lines": [], "start_line": 1, "executed_branches": [[65, 70], [179, 180], [179, 182], [187, 188], [187, 189], [189, 190], [189, 191], [191, 192], [191, 194]], "missing_branches": [[65, 74], [87, 88], [87, 91], [97, 98], [97, 132], [106, 107], [106, 132], [113, 114], [113, 120], [114, 115], [114, 118], [120, 121], [120, 123], [137, 138], [137, 145], [214, 215], [214, 220], [232, 233], [232, 234], [234, 235], [234, 236], [236, 237], [236, 238], [238, 239], [238, 242], [244, 245], [244, 259], [247, 248], [247, 255], [248, 247], [248, 249], [249, 250], [249, 251], [255, 244], [255, 256], [259, 260], [259, 264], [260, 259], [260, 261], [268, 269], [268, 270], [270, 271], [270, 272], [272, 273], [272, 274], [274, 275], [274, 276], [276, 277], [276, 279], [309, 310], [309, 313], [313, 314], [313, 317], [317, 318], [317, 321], [321, 322], [321, 325], [325, 326], [325, 330]]}}}, "app/api/openai.py": {"executed_lines": [5, 7, 9, 10, 13, 15, 18, 19, 20, 24, 25, 27, 30, 35, 38, 40, 49, 50, 51, 54, 56], "summary": {"covered_lines": 21, "num_statements": 31, "percent_covered": 66.66666666666667, "percent_covered_display": "66.67", "missing_lines": 10, "excluded_lines": 0, "percent_statements_covered": 67.74193548387096, "percent_statements_covered_display": "67.74", "num_branches": 2, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 1, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50.00"}, "missing_lines": [31, 32, 43, 44, 62, 63, 64, 65, 66, 67], "excluded_lines": [], "executed_branches": [[30, 35]], "missing_branches": [[30, 31]], "functions": {"test_openai_connection": {"executed_lines": [24, 25, 27, 30, 35, 38, 40, 49, 50, 51, 54, 56], "summary": {"covered_lines": 12, "num_statements": 22, "percent_covered": 54.166666666666664, "percent_covered_display": "54.17", "missing_lines": 10, "excluded_lines": 0, "percent_statements_covered": 54.54545454545455, "percent_statements_covered_display": "54.55", "num_branches": 2, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 1, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50.00"}, "missing_lines": [31, 32, 43, 44, 62, 63, 64, 65, 66, 67], "excluded_lines": [], "start_line": 20, "executed_branches": [[30, 35]], "missing_branches": [[30, 31]]}, "": {"executed_lines": [5, 7, 9, 10, 13, 15, 18, 19, 20], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [5, 7, 9, 10, 13, 15, 18, 19, 20, 24, 25, 27, 30, 35, 38, 40, 49, 50, 51, 54, 56], "summary": {"covered_lines": 21, "num_statements": 31, "percent_covered": 66.66666666666667, "percent_covered_display": "66.67", "missing_lines": 10, "excluded_lines": 0, "percent_statements_covered": 67.74193548387096, "percent_statements_covered_display": "67.74", "num_branches": 2, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 1, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50.00"}, "missing_lines": [31, 32, 43, 44, 62, 63, 64, 65, 66, 67], "excluded_lines": [], "start_line": 1, "executed_branches": [[30, 35]], "missing_branches": [[30, 31]]}}}, "app/api/process.py": {"executed_lines": [5, 6, 8, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 22, 24, 27, 28, 29, 31, 33, 34, 40, 41, 42, 44, 45, 46, 51, 52, 53, 55, 56, 57, 62, 63, 64, 66, 67, 68, 73, 74, 75, 77, 78, 79, 84, 85, 86, 88, 89, 90, 95, 96, 97, 99, 101, 102, 108, 109, 110, 117, 118, 119, 121, 122, 123, 124, 126, 127, 129, 130, 133, 135, 136, 142, 143, 145, 149, 150, 151, 154, 156, 158, 159, 160, 161, 163], "summary": {"covered_lines": 87, "num_statements": 101, "percent_covered": 83.20610687022901, "percent_covered_display": "83.21", "missing_lines": 14, "excluded_lines": 0, "percent_statements_covered": 86.13861386138613, "percent_statements_covered_display": "86.14", "num_branches": 30, "num_partial_branches": 8, "covered_branches": 22, "missing_branches": 8, "percent_branches_covered": 73.33333333333333, "percent_branches_covered_display": "73.33"}, "missing_lines": [36, 37, 47, 48, 58, 59, 69, 70, 80, 81, 91, 92, 104, 105], "excluded_lines": [], "executed_branches": [[33, 34], [45, 46], [56, 57], [67, 68], [78, 79], [89, 90], [101, 102], [118, 119], [118, 121], [122, 123], [122, 126], [123, 124], [126, 127], [126, 129], [135, 136], [135, 142], [142, 143], [142, 158], [145, 149], [145, 154], [159, 160], [159, 163]], "missing_branches": [[33, 36], [45, 47], [56, 58], [67, 69], [78, 80], [89, 91], [101, 104], [123, 122]], "functions": {"process": {"executed_lines": [31, 33, 34], "summary": {"covered_lines": 3, "num_statements": 5, "percent_covered": 57.142857142857146, "percent_covered_display": "57.14", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 60.0, "percent_statements_covered_display": "60.00", "num_branches": 2, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 1, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50.00"}, "missing_lines": [36, 37], "excluded_lines": [], "start_line": 29, "executed_branches": [[33, 34]], "missing_branches": [[33, 36]]}, "send_to_dropbox_endpoint": {"executed_lines": [44, 45, 46], "summary": {"covered_lines": 3, "num_statements": 5, "percent_covered": 57.142857142857146, "percent_covered_display": "57.14", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 60.0, "percent_statements_covered_display": "60.00", "num_branches": 2, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 1, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50.00"}, "missing_lines": [47, 48], "excluded_lines": [], "start_line": 42, "executed_branches": [[45, 46]], "missing_branches": [[45, 47]]}, "send_to_paperless_endpoint": {"executed_lines": [55, 56, 57], "summary": {"covered_lines": 3, "num_statements": 5, "percent_covered": 57.142857142857146, "percent_covered_display": "57.14", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 60.0, "percent_statements_covered_display": "60.00", "num_branches": 2, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 1, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50.00"}, "missing_lines": [58, 59], "excluded_lines": [], "start_line": 53, "executed_branches": [[56, 57]], "missing_branches": [[56, 58]]}, "send_to_nextcloud_endpoint": {"executed_lines": [66, 67, 68], "summary": {"covered_lines": 3, "num_statements": 5, "percent_covered": 57.142857142857146, "percent_covered_display": "57.14", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 60.0, "percent_statements_covered_display": "60.00", "num_branches": 2, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 1, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50.00"}, "missing_lines": [69, 70], "excluded_lines": [], "start_line": 64, "executed_branches": [[67, 68]], "missing_branches": [[67, 69]]}, "send_to_google_drive_endpoint": {"executed_lines": [77, 78, 79], "summary": {"covered_lines": 3, "num_statements": 5, "percent_covered": 57.142857142857146, "percent_covered_display": "57.14", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 60.0, "percent_statements_covered_display": "60.00", "num_branches": 2, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 1, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50.00"}, "missing_lines": [80, 81], "excluded_lines": [], "start_line": 75, "executed_branches": [[78, 79]], "missing_branches": [[78, 80]]}, "send_to_onedrive_endpoint": {"executed_lines": [88, 89, 90], "summary": {"covered_lines": 3, "num_statements": 5, "percent_covered": 57.142857142857146, "percent_covered_display": "57.14", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 60.0, "percent_statements_covered_display": "60.00", "num_branches": 2, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 1, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50.00"}, "missing_lines": [91, 92], "excluded_lines": [], "start_line": 86, "executed_branches": [[89, 90]], "missing_branches": [[89, 91]]}, "send_to_all_destinations_endpoint": {"executed_lines": [99, 101, 102], "summary": {"covered_lines": 3, "num_statements": 5, "percent_covered": 57.142857142857146, "percent_covered_display": "57.14", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 60.0, "percent_statements_covered_display": "60.00", "num_branches": 2, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 1, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50.00"}, "missing_lines": [104, 105], "excluded_lines": [], "start_line": 97, "executed_branches": [[101, 102]], "missing_branches": [[101, 104]]}, "process_all_pdfs_in_workdir": {"executed_lines": [117, 118, 119, 121, 122, 123, 124, 126, 127, 129, 130, 133, 135, 136, 142, 143, 145, 149, 150, 151, 154, 156, 158, 159, 160, 161, 163], "summary": {"covered_lines": 27, "num_statements": 27, "percent_covered": 97.67441860465117, "percent_covered_display": "97.67", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 16, "num_partial_branches": 1, "covered_branches": 15, "missing_branches": 1, "percent_branches_covered": 93.75, "percent_branches_covered_display": "93.75"}, "missing_lines": [], "excluded_lines": [], "start_line": 110, "executed_branches": [[118, 119], [118, 121], [122, 123], [122, 126], [123, 124], [126, 127], [126, 129], [135, 136], [135, 142], [142, 143], [142, 158], [145, 149], [145, 154], [159, 160], [159, 163]], "missing_branches": [[123, 122]]}, "": {"executed_lines": [5, 6, 8, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 22, 24, 27, 28, 29, 40, 41, 42, 51, 52, 53, 62, 63, 64, 73, 74, 75, 84, 85, 86, 95, 96, 97, 108, 109, 110], "summary": {"covered_lines": 39, "num_statements": 39, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [5, 6, 8, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 22, 24, 27, 28, 29, 31, 33, 34, 40, 41, 42, 44, 45, 46, 51, 52, 53, 55, 56, 57, 62, 63, 64, 66, 67, 68, 73, 74, 75, 77, 78, 79, 84, 85, 86, 88, 89, 90, 95, 96, 97, 99, 101, 102, 108, 109, 110, 117, 118, 119, 121, 122, 123, 124, 126, 127, 129, 130, 133, 135, 136, 142, 143, 145, 149, 150, 151, 154, 156, 158, 159, 160, 161, 163], "summary": {"covered_lines": 87, "num_statements": 101, "percent_covered": 83.20610687022901, "percent_covered_display": "83.21", "missing_lines": 14, "excluded_lines": 0, "percent_statements_covered": 86.13861386138613, "percent_statements_covered_display": "86.14", "num_branches": 30, "num_partial_branches": 8, "covered_branches": 22, "missing_branches": 8, "percent_branches_covered": 73.33333333333333, "percent_branches_covered_display": "73.33"}, "missing_lines": [36, 37, 47, 48, 58, 59, 69, 70, 80, 81, 91, 92, 104, 105], "excluded_lines": [], "start_line": 1, "executed_branches": [[33, 34], [45, 46], [56, 57], [67, 68], [78, 79], [89, 90], [101, 102], [118, 119], [118, 121], [122, 123], [122, 126], [123, 124], [126, 127], [126, 129], [135, 136], [135, 142], [142, 143], [142, 158], [145, 149], [145, 154], [159, 160], [159, 163]], "missing_branches": [[33, 36], [45, 47], [56, 58], [67, 69], [78, 80], [89, 91], [101, 104], [123, 122]]}}}, "app/api/settings.py": {"executed_lines": [5, 6, 8, 9, 10, 12, 13, 14, 24, 25, 28, 36, 37, 38, 39, 42, 43, 46, 49, 50, 53, 56, 57, 58, 61, 64, 65, 66, 69, 70, 95, 96, 116, 117, 162, 163, 186, 187], "summary": {"covered_lines": 38, "num_statements": 101, "percent_covered": 32.520325203252035, "percent_covered_display": "32.52", "missing_lines": 63, "excluded_lines": 0, "percent_statements_covered": 37.62376237623762, "percent_statements_covered_display": "37.62", "num_branches": 22, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 20, "percent_branches_covered": 9.090909090909092, "percent_branches_covered_display": "9.09"}, "missing_lines": [75, 77, 78, 79, 80, 81, 84, 87, 89, 90, 91, 92, 101, 103, 106, 108, 109, 110, 111, 128, 130, 131, 132, 133, 136, 137, 138, 143, 144, 146, 153, 154, 155, 156, 157, 168, 169, 170, 171, 173, 177, 178, 179, 180, 181, 192, 193, 195, 196, 198, 199, 200, 201, 202, 205, 206, 207, 209, 210, 211, 212, 214, 216], "excluded_lines": [], "executed_branches": [[37, 38], [37, 39]], "missing_branches": [[78, 79], [78, 84], [79, 78], [79, 80], [130, 131], [130, 136], [132, 133], [132, 136], [137, 138], [137, 143], [170, 171], [170, 173], [195, 196], [195, 214], [198, 199], [198, 205], [200, 201], [200, 205], [206, 207], [206, 209]], "functions": {"require_admin": {"executed_lines": [36, 37, 38, 39], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 28, "executed_branches": [[37, 38], [37, 39]], "missing_branches": []}, "get_settings": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 12, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 12, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 4, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0.00"}, "missing_lines": [75, 77, 78, 79, 80, 81, 84, 87, 89, 90, 91, 92], "excluded_lines": [], "start_line": 70, "executed_branches": [], "missing_branches": [[78, 79], [78, 84], [79, 78], [79, 80]]}, "get_setting": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 7, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 7, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [101, 103, 106, 108, 109, 110, 111], "excluded_lines": [], "start_line": 96, "executed_branches": [], "missing_branches": []}, "update_setting": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 16, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 16, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00", "num_branches": 6, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 6, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0.00"}, "missing_lines": [128, 130, 131, 132, 133, 136, 137, 138, 143, 144, 146, 153, 154, 155, 156, 157], "excluded_lines": [], "start_line": 117, "executed_branches": [], "missing_branches": [[130, 131], [130, 136], [132, 133], [132, 136], [137, 138], [137, 143]]}, "delete_setting": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 10, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 10, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 2, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0.00"}, "missing_lines": [168, 169, 170, 171, 173, 177, 178, 179, 180, 181], "excluded_lines": [], "start_line": 163, "executed_branches": [], "missing_branches": [[170, 171], [170, 173]]}, "bulk_update_settings": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 18, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 18, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00", "num_branches": 8, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 8, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0.00"}, "missing_lines": [192, 193, 195, 196, 198, 199, 200, 201, 202, 205, 206, 207, 209, 210, 211, 212, 214, 216], "excluded_lines": [], "start_line": 187, "executed_branches": [], "missing_branches": [[195, 196], [195, 214], [198, 199], [198, 205], [200, 201], [200, 205], [206, 207], [206, 209]]}, "": {"executed_lines": [5, 6, 8, 9, 10, 12, 13, 14, 24, 25, 28, 42, 43, 46, 49, 50, 53, 56, 57, 58, 61, 64, 65, 66, 69, 70, 95, 96, 116, 117, 162, 163, 186, 187], "summary": {"covered_lines": 34, "num_statements": 34, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"SettingUpdate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 46, "executed_branches": [], "missing_branches": []}, "SettingResponse": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 53, "executed_branches": [], "missing_branches": []}, "SettingsListResponse": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 61, "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [5, 6, 8, 9, 10, 12, 13, 14, 24, 25, 28, 36, 37, 38, 39, 42, 43, 46, 49, 50, 53, 56, 57, 58, 61, 64, 65, 66, 69, 70, 95, 96, 116, 117, 162, 163, 186, 187], "summary": {"covered_lines": 38, "num_statements": 101, "percent_covered": 32.520325203252035, "percent_covered_display": "32.52", "missing_lines": 63, "excluded_lines": 0, "percent_statements_covered": 37.62376237623762, "percent_statements_covered_display": "37.62", "num_branches": 22, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 20, "percent_branches_covered": 9.090909090909092, "percent_branches_covered_display": "9.09"}, "missing_lines": [75, 77, 78, 79, 80, 81, 84, 87, 89, 90, 91, 92, 101, 103, 106, 108, 109, 110, 111, 128, 130, 131, 132, 133, 136, 137, 138, 143, 144, 146, 153, 154, 155, 156, 157, 168, 169, 170, 171, 173, 177, 178, 179, 180, 181, 192, 193, 195, 196, 198, 199, 200, 201, 202, 205, 206, 207, 209, 210, 211, 212, 214, 216], "excluded_lines": [], "start_line": 1, "executed_branches": [[37, 38], [37, 39]], "missing_branches": [[78, 79], [78, 84], [79, 78], [79, 80], [130, 131], [130, 136], [132, 133], [132, 136], [137, 138], [137, 143], [170, 171], [170, 173], [195, 196], [195, 214], [198, 199], [198, 205], [200, 201], [200, 205], [206, 207], [206, 209]]}}}, "app/api/url_upload.py": {"executed_lines": [5, 6, 7, 8, 9, 10, 11, 13, 14, 15, 17, 18, 19, 20, 23, 25, 28, 31, 32, 34, 35, 37, 38, 40, 43, 48, 50, 51, 52, 54, 55, 58, 59, 60, 61, 63, 64, 66, 70, 71, 74, 81, 84, 88, 92, 93, 99, 104, 108, 120, 134, 146, 148, 149, 150, 153, 154, 155, 156, 159, 162, 163, 164, 184, 187, 190, 191, 194, 195, 196, 199, 200, 206, 207, 208, 211, 220, 223, 224, 225, 232, 233, 234, 235, 236, 237, 243, 244, 245, 246, 250, 253, 254, 256, 257, 258, 259, 260, 263, 265, 266, 267, 272, 275, 277, 285, 286, 287, 289, 290, 291, 293, 294, 295, 297, 301, 303], "summary": {"covered_lines": 117, "num_statements": 137, "percent_covered": 80.11049723756906, "percent_covered_display": "80.11", "missing_lines": 20, "excluded_lines": 0, "percent_statements_covered": 85.4014598540146, "percent_statements_covered_display": "85.40", "num_branches": 44, "num_partial_branches": 12, "covered_branches": 28, "missing_branches": 16, "percent_branches_covered": 63.63636363636363, "percent_branches_covered_display": "63.64"}, "missing_lines": [39, 65, 85, 89, 105, 157, 201, 248, 298, 299, 305, 306, 308, 309, 310, 312, 313, 315, 316, 317], "excluded_lines": [], "executed_branches": [[38, 40], [59, 60], [63, 64], [84, 88], [88, 92], [92, 93], [92, 99], [104, -74], [146, 148], [149, 150], [149, 153], [154, 155], [156, 159], [190, 191], [190, 194], [200, 206], [224, 225], [224, 232], [233, 234], [233, 243], [236, 237], [236, 243], [244, 245], [257, 258], [257, 272], [258, 259], [263, 257], [263, 265]], "missing_branches": [[38, 39], [59, 65], [63, 59], [84, 85], [88, 89], [104, 105], [146, 153], [154, 159], [156, 157], [200, 201], [244, 248], [258, 257], [308, 309], [308, 310], [315, 316], [315, 317]], "functions": {"URLUploadRequest.validate_url_scheme": {"executed_lines": [37, 38, 40], "summary": {"covered_lines": 3, "num_statements": 4, "percent_covered": 66.66666666666667, "percent_covered_display": "66.67", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 75.0, "percent_statements_covered_display": "75.00", "num_branches": 2, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 1, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50.00"}, "missing_lines": [39], "excluded_lines": [], "start_line": 35, "executed_branches": [[38, 40]], "missing_branches": [[38, 39]]}, "is_private_ip": {"executed_lines": [48, 50, 51, 52, 54, 55, 58, 59, 60, 61, 63, 64, 66, 70, 71], "summary": {"covered_lines": 15, "num_statements": 16, "percent_covered": 85.0, "percent_covered_display": "85.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 93.75, "percent_statements_covered_display": "93.75", "num_branches": 4, "num_partial_branches": 2, "covered_branches": 2, "missing_branches": 2, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50.00"}, "missing_lines": [65], "excluded_lines": [], "start_line": 43, "executed_branches": [[59, 60], [63, 64]], "missing_branches": [[59, 65], [63, 59]]}, "validate_url_safety": {"executed_lines": [81, 84, 88, 92, 93, 99, 104], "summary": {"covered_lines": 7, "num_statements": 10, "percent_covered": 66.66666666666667, "percent_covered_display": "66.67", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 70.0, "percent_statements_covered_display": "70.00", "num_branches": 8, "num_partial_branches": 3, "covered_branches": 5, "missing_branches": 3, "percent_branches_covered": 62.5, "percent_branches_covered_display": "62.50"}, "missing_lines": [85, 89, 105], "excluded_lines": [], "start_line": 74, "executed_branches": [[84, 88], [88, 92], [92, 93], [92, 99], [104, -74]], "missing_branches": [[84, 85], [88, 89], [104, 105]]}, "validate_file_type": {"executed_lines": [120, 134, 146, 148, 149, 150, 153, 154, 155, 156, 159], "summary": {"covered_lines": 11, "num_statements": 12, "percent_covered": 80.0, "percent_covered_display": "80.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 91.66666666666667, "percent_statements_covered_display": "91.67", "num_branches": 8, "num_partial_branches": 3, "covered_branches": 5, "missing_branches": 3, "percent_branches_covered": 62.5, "percent_branches_covered_display": "62.50"}, "missing_lines": [157], "excluded_lines": [], "start_line": 108, "executed_branches": [[146, 148], [149, 150], [149, 153], [154, 155], [156, 159]], "missing_branches": [[146, 153], [154, 159], [156, 157]]}, "process_url": {"executed_lines": [184, 187, 190, 191, 194, 195, 196, 199, 200, 206, 207, 208, 211, 220, 223, 224, 225, 232, 233, 234, 235, 236, 237, 243, 244, 245, 246, 250, 253, 254, 256, 257, 258, 259, 260, 263, 265, 266, 267, 272, 275, 277, 285, 286, 287, 289, 290, 291, 293, 294, 295, 297, 301, 303], "summary": {"covered_lines": 54, "num_statements": 68, "percent_covered": 76.66666666666667, "percent_covered_display": "76.67", "missing_lines": 14, "excluded_lines": 0, "percent_statements_covered": 79.41176470588235, "percent_statements_covered_display": "79.41", "num_branches": 22, "num_partial_branches": 3, "covered_branches": 15, "missing_branches": 7, "percent_branches_covered": 68.18181818181819, "percent_branches_covered_display": "68.18"}, "missing_lines": [201, 248, 298, 299, 305, 306, 308, 309, 310, 312, 313, 315, 316, 317], "excluded_lines": [], "start_line": 164, "executed_branches": [[190, 191], [190, 194], [200, 206], [224, 225], [224, 232], [233, 234], [233, 243], [236, 237], [236, 243], [244, 245], [257, 258], [257, 272], [258, 259], [263, 257], [263, 265]], "missing_branches": [[200, 201], [244, 248], [258, 257], [308, 309], [308, 310], [315, 316], [315, 317]]}, "": {"executed_lines": [5, 6, 7, 8, 9, 10, 11, 13, 14, 15, 17, 18, 19, 20, 23, 25, 28, 31, 32, 34, 35, 43, 74, 108, 162, 163, 164], "summary": {"covered_lines": 27, "num_statements": 27, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"URLUploadRequest": {"executed_lines": [37, 38, 40], "summary": {"covered_lines": 3, "num_statements": 4, "percent_covered": 66.66666666666667, "percent_covered_display": "66.67", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 75.0, "percent_statements_covered_display": "75.00", "num_branches": 2, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 1, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50.00"}, "missing_lines": [39], "excluded_lines": [], "start_line": 28, "executed_branches": [[38, 40]], "missing_branches": [[38, 39]]}, "": {"executed_lines": [5, 6, 7, 8, 9, 10, 11, 13, 14, 15, 17, 18, 19, 20, 23, 25, 28, 31, 32, 34, 35, 43, 48, 50, 51, 52, 54, 55, 58, 59, 60, 61, 63, 64, 66, 70, 71, 74, 81, 84, 88, 92, 93, 99, 104, 108, 120, 134, 146, 148, 149, 150, 153, 154, 155, 156, 159, 162, 163, 164, 184, 187, 190, 191, 194, 195, 196, 199, 200, 206, 207, 208, 211, 220, 223, 224, 225, 232, 233, 234, 235, 236, 237, 243, 244, 245, 246, 250, 253, 254, 256, 257, 258, 259, 260, 263, 265, 266, 267, 272, 275, 277, 285, 286, 287, 289, 290, 291, 293, 294, 295, 297, 301, 303], "summary": {"covered_lines": 114, "num_statements": 133, "percent_covered": 80.57142857142857, "percent_covered_display": "80.57", "missing_lines": 19, "excluded_lines": 0, "percent_statements_covered": 85.71428571428571, "percent_statements_covered_display": "85.71", "num_branches": 42, "num_partial_branches": 11, "covered_branches": 27, "missing_branches": 15, "percent_branches_covered": 64.28571428571429, "percent_branches_covered_display": "64.29"}, "missing_lines": [65, 85, 89, 105, 157, 201, 248, 298, 299, 305, 306, 308, 309, 310, 312, 313, 315, 316, 317], "excluded_lines": [], "start_line": 1, "executed_branches": [[59, 60], [63, 64], [84, 88], [88, 92], [92, 93], [92, 99], [104, -74], [146, 148], [149, 150], [149, 153], [154, 155], [156, 159], [190, 191], [190, 194], [200, 206], [224, 225], [224, 232], [233, 234], [233, 243], [236, 237], [236, 243], [244, 245], [257, 258], [257, 272], [258, 259], [263, 257], [263, 265]], "missing_branches": [[59, 65], [63, 59], [84, 85], [88, 89], [104, 105], [146, 153], [154, 159], [156, 157], [200, 201], [244, 248], [258, 257], [308, 309], [308, 310], [315, 316], [315, 317]]}}}, "app/api/user.py": {"executed_lines": [5, 6, 8, 11, 13, 16, 20, 21, 22, 24, 25, 26, 30, 31, 34, 35, 37, 41, 42, 43, 46, 47], "summary": {"covered_lines": 22, "num_statements": 23, "percent_covered": 96.29629629629629, "percent_covered_display": "96.30", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 95.65217391304348, "percent_statements_covered_display": "95.65", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [48], "excluded_lines": [], "executed_branches": [[21, 22], [21, 24], [25, 26], [25, 30]], "missing_branches": [], "functions": {"whoami_handler": {"executed_lines": [20, 21, 22, 24, 25, 26, 30, 31, 34, 35, 37], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 16, "executed_branches": [[21, 22], [21, 24], [25, 26], [25, 30]], "missing_branches": []}, "whoami": {"executed_lines": [43], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 42, "executed_branches": [], "missing_branches": []}, "auth_whoami": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [48], "excluded_lines": [], "start_line": 47, "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [5, 6, 8, 11, 13, 16, 41, 42, 46, 47], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [5, 6, 8, 11, 13, 16, 20, 21, 22, 24, 25, 26, 30, 31, 34, 35, 37, 41, 42, 43, 46, 47], "summary": {"covered_lines": 22, "num_statements": 23, "percent_covered": 96.29629629629629, "percent_covered_display": "96.30", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 95.65217391304348, "percent_statements_covered_display": "95.65", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [48], "excluded_lines": [], "start_line": 1, "executed_branches": [[21, 22], [21, 24], [25, 26], [25, 30]], "missing_branches": []}}}, "app/auth.py": {"executed_lines": [1, 2, 3, 4, 6, 7, 8, 9, 11, 13, 15, 18, 19, 22, 23, 25, 36, 39, 40, 43, 44, 45, 47, 48, 49, 50, 51, 53, 54, 56, 58, 61, 63, 65, 66, 69, 170, 171, 172, 174, 175, 178, 179, 180, 182, 183], "summary": {"covered_lines": 46, "num_statements": 95, "percent_covered": 46.95652173913044, "percent_covered_display": "46.96", "missing_lines": 49, "excluded_lines": 0, "percent_statements_covered": 48.421052631578945, "percent_statements_covered_display": "48.42", "num_branches": 20, "num_partial_branches": 2, "covered_branches": 8, "missing_branches": 12, "percent_branches_covered": 40.0, "percent_branches_covered_display": "40.00"}, "missing_lines": [26, 33, 34, 71, 72, 74, 86, 87, 89, 90, 92, 93, 95, 96, 98, 99, 100, 101, 102, 107, 110, 111, 116, 117, 119, 120, 121, 124, 126, 129, 132, 133, 134, 135, 136, 140, 141, 143, 144, 145, 147, 149, 158, 159, 161, 163, 164, 166, 167], "excluded_lines": [], "executed_branches": [[25, 36], [44, 45], [44, 47], [49, 50], [49, 53], [53, 54], [53, 56], [69, 170]], "missing_branches": [[25, 26], [69, 71], [89, 90], [89, 92], [101, 102], [101, 107], [110, 111], [110, 116], [117, 119], [117, 124], [147, 149], [147, 161]], "functions": {"get_current_user": {"executed_lines": [40], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 39, "executed_branches": [], "missing_branches": []}, "require_login": {"executed_lines": [44, 45, 47, 48, 58], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 43, "executed_branches": [[44, 45], [44, 47]], "missing_branches": []}, "require_login.wrapper": {"executed_lines": [49, 50, 51, 53, 54, 56], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 48, "executed_branches": [[49, 50], [49, 53], [53, 54], [53, 56]], "missing_branches": []}, "get_gravatar_url": {"executed_lines": [63, 65, 66], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 61, "executed_branches": [], "missing_branches": []}, "login": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [74], "excluded_lines": [], "start_line": 72, "executed_branches": [], "missing_branches": []}, "oauth_login": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 2, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0.00"}, "missing_lines": [89, 90, 92, 93], "excluded_lines": [], "start_line": 87, "executed_branches": [], "missing_branches": [[89, 90], [89, 92]]}, "oauth_callback": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 21, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 21, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00", "num_branches": 6, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 6, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0.00"}, "missing_lines": [98, 99, 100, 101, 102, 107, 110, 111, 116, 117, 119, 120, 121, 124, 126, 129, 132, 133, 134, 135, 136], "excluded_lines": [], "start_line": 96, "executed_branches": [], "missing_branches": [[101, 102], [101, 107], [110, 111], [110, 116], [117, 119], [117, 124]]}, "auth": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 8, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 8, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 2, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0.00"}, "missing_lines": [143, 144, 145, 147, 149, 158, 159, 161], "excluded_lines": [], "start_line": 141, "executed_branches": [], "missing_branches": [[147, 149], [147, 161]]}, "logout": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [166, 167], "excluded_lines": [], "start_line": 164, "executed_branches": [], "missing_branches": []}, "whoami": {"executed_lines": [174, 175], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 172, "executed_branches": [], "missing_branches": []}, "private_page": {"executed_lines": [182, 183], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 180, "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [1, 2, 3, 4, 6, 7, 8, 9, 11, 13, 15, 18, 19, 22, 23, 25, 36, 39, 43, 61, 69, 170, 171, 172, 178, 179, 180], "summary": {"covered_lines": 27, "num_statements": 40, "percent_covered": 65.9090909090909, "percent_covered_display": "65.91", "missing_lines": 13, "excluded_lines": 0, "percent_statements_covered": 67.5, "percent_statements_covered_display": "67.50", "num_branches": 4, "num_partial_branches": 2, "covered_branches": 2, "missing_branches": 2, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50.00"}, "missing_lines": [26, 33, 34, 71, 72, 86, 87, 95, 96, 140, 141, 163, 164], "excluded_lines": [], "start_line": 1, "executed_branches": [[25, 36], [69, 170]], "missing_branches": [[25, 26], [69, 71]]}}, "classes": {"": {"executed_lines": [1, 2, 3, 4, 6, 7, 8, 9, 11, 13, 15, 18, 19, 22, 23, 25, 36, 39, 40, 43, 44, 45, 47, 48, 49, 50, 51, 53, 54, 56, 58, 61, 63, 65, 66, 69, 170, 171, 172, 174, 175, 178, 179, 180, 182, 183], "summary": {"covered_lines": 46, "num_statements": 95, "percent_covered": 46.95652173913044, "percent_covered_display": "46.96", "missing_lines": 49, "excluded_lines": 0, "percent_statements_covered": 48.421052631578945, "percent_statements_covered_display": "48.42", "num_branches": 20, "num_partial_branches": 2, "covered_branches": 8, "missing_branches": 12, "percent_branches_covered": 40.0, "percent_branches_covered_display": "40.00"}, "missing_lines": [26, 33, 34, 71, 72, 74, 86, 87, 89, 90, 92, 93, 95, 96, 98, 99, 100, 101, 102, 107, 110, 111, 116, 117, 119, 120, 121, 124, 126, 129, 132, 133, 134, 135, 136, 140, 141, 143, 144, 145, 147, 149, 158, 159, 161, 163, 164, 166, 167], "excluded_lines": [], "start_line": 1, "executed_branches": [[25, 36], [44, 45], [44, 47], [49, 50], [49, 53], [53, 54], [53, 56], [69, 170]], "missing_branches": [[25, 26], [69, 71], [89, 90], [89, 92], [101, 102], [101, 107], [110, 111], [110, 116], [117, 119], [117, 124], [147, 149], [147, 161]]}}}, "app/celery_app.py": {"executed_lines": [3, 4, 6, 8, 16, 19, 20, 25, 26, 30, 31, 33, 35], "summary": {"covered_lines": 13, "num_statements": 16, "percent_covered": 77.77777777777777, "percent_covered_display": "77.78", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 81.25, "percent_statements_covered_display": "81.25", "num_branches": 2, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 1, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50.00"}, "missing_lines": [42, 43, 45], "excluded_lines": [], "executed_branches": [[30, 31]], "missing_branches": [[30, -25]], "functions": {"task_failure_handler": {"executed_lines": [30, 31, 33, 35], "summary": {"covered_lines": 4, "num_statements": 7, "percent_covered": 55.55555555555556, "percent_covered_display": "55.56", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 57.142857142857146, "percent_statements_covered_display": "57.14", "num_branches": 2, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 1, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50.00"}, "missing_lines": [42, 43, 45], "excluded_lines": [], "start_line": 26, "executed_branches": [[30, 31]], "missing_branches": [[30, -25]]}, "": {"executed_lines": [3, 4, 6, 8, 16, 19, 20, 25, 26], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [3, 4, 6, 8, 16, 19, 20, 25, 26, 30, 31, 33, 35], "summary": {"covered_lines": 13, "num_statements": 16, "percent_covered": 77.77777777777777, "percent_covered_display": "77.78", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 81.25, "percent_statements_covered_display": "81.25", "num_branches": 2, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 1, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50.00"}, "missing_lines": [42, 43, 45], "excluded_lines": [], "start_line": 1, "executed_branches": [[30, 31]], "missing_branches": [[30, -25]]}}}, "app/celery_worker.py": {"executed_lines": [3, 6, 9, 10, 11, 12, 13, 14, 15, 16, 19, 20, 21, 22, 23, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 38, 43, 44, 49], "summary": {"covered_lines": 30, "num_statements": 33, "percent_covered": 90.9090909090909, "percent_covered_display": "90.91", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 90.9090909090909, "percent_statements_covered_display": "90.91", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [45, 51, 92], "excluded_lines": [], "executed_branches": [], "missing_branches": [], "functions": {"test_task": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [45], "excluded_lines": [], "start_line": 44, "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [3, 6, 9, 10, 11, 12, 13, 14, 15, 16, 19, 20, 21, 22, 23, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 38, 43, 44, 49], "summary": {"covered_lines": 30, "num_statements": 32, "percent_covered": 93.75, "percent_covered_display": "93.75", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 93.75, "percent_statements_covered_display": "93.75", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [51, 92], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [3, 6, 9, 10, 11, 12, 13, 14, 15, 16, 19, 20, 21, 22, 23, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 38, 43, 44, 49], "summary": {"covered_lines": 30, "num_statements": 33, "percent_covered": 90.9090909090909, "percent_covered_display": "90.91", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 90.9090909090909, "percent_statements_covered_display": "90.91", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [45, 51, 92], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}}, "app/config.py": {"executed_lines": [3, 4, 6, 7, 10, 11, 12, 13, 14, 15, 16, 17, 20, 21, 22, 23, 26, 27, 28, 29, 32, 33, 34, 38, 40, 41, 42, 43, 44, 47, 48, 49, 50, 51, 54, 55, 56, 57, 60, 61, 62, 63, 64, 65, 66, 69, 70, 71, 72, 73, 74, 75, 78, 79, 80, 83, 84, 85, 86, 89, 90, 91, 92, 93, 96, 97, 98, 99, 100, 101, 102, 105, 106, 107, 108, 109, 110, 111, 114, 117, 118, 119, 120, 121, 122, 123, 126, 127, 128, 129, 130, 133, 134, 135, 136, 137, 138, 139, 142, 143, 146, 149, 152, 155, 160, 163, 164, 167, 168, 169, 174, 178, 187, 194, 203, 214, 220, 223, 229, 230, 239, 240, 245, 251, 255, 259, 263, 268, 269, 271, 272, 273, 277, 279, 280, 282, 283, 284, 285, 286, 289, 290, 292, 293, 294, 297, 298, 299, 300, 306, 307, 309, 310, 311, 314, 315, 316, 317, 320, 322, 323, 326, 327, 328, 331, 332, 333, 334, 337, 339, 340, 342, 343, 344, 345, 350, 351, 355, 356, 374], "summary": {"covered_lines": 180, "num_statements": 195, "percent_covered": 86.8995633187773, "percent_covered_display": "86.90", "missing_lines": 15, "excluded_lines": 0, "percent_statements_covered": 92.3076923076923, "percent_statements_covered_display": "92.31", "num_branches": 34, "num_partial_branches": 3, "covered_branches": 19, "missing_branches": 15, "percent_branches_covered": 55.88235294117647, "percent_branches_covered_display": "55.88"}, "missing_lines": [274, 275, 276, 303, 348, 358, 359, 362, 363, 366, 367, 368, 369, 370, 371], "excluded_lines": [], "executed_branches": [[271, 272], [271, 277], [272, 273], [282, 283], [282, 284], [284, 285], [284, 286], [293, 294], [293, 297], [298, 299], [310, 311], [310, 314], [315, 316], [315, 320], [327, 328], [327, 331], [332, 333], [332, 337], [343, 344]], "missing_branches": [[272, 274], [274, 275], [274, 276], [298, 303], [343, 348], [358, 359], [358, 366], [359, 362], [359, 363], [366, 367], [366, 371], [367, 368], [367, 369], [369, 370], [369, 371]], "functions": {"Settings.parse_notification_urls": {"executed_lines": [271, 272, 273, 277], "summary": {"covered_lines": 4, "num_statements": 7, "percent_covered": 53.84615384615385, "percent_covered_display": "53.85", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 57.142857142857146, "percent_statements_covered_display": "57.14", "num_branches": 6, "num_partial_branches": 1, "covered_branches": 3, "missing_branches": 3, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50.00"}, "missing_lines": [274, 275, 276], "excluded_lines": [], "start_line": 269, "executed_branches": [[271, 272], [271, 277], [272, 273]], "missing_branches": [[272, 274], [274, 275], [274, 276]]}, "Settings.validate_session_secret": {"executed_lines": [282, 283, 284, 285, 286], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 280, "executed_branches": [[282, 283], [282, 284], [284, 285], [284, 286]], "missing_branches": []}, "Settings.build_date": {"executed_lines": [292, 293, 294, 297, 298, 299, 300], "summary": {"covered_lines": 7, "num_statements": 8, "percent_covered": 83.33333333333333, "percent_covered_display": "83.33", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 87.5, "percent_statements_covered_display": "87.50", "num_branches": 4, "num_partial_branches": 1, "covered_branches": 3, "missing_branches": 1, "percent_branches_covered": 75.0, "percent_branches_covered_display": "75.00"}, "missing_lines": [303], "excluded_lines": [], "start_line": 290, "executed_branches": [[293, 294], [293, 297], [298, 299]], "missing_branches": [[298, 303]]}, "Settings.version": {"executed_lines": [309, 310, 311, 314, 315, 316, 317, 320], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 307, "executed_branches": [[310, 311], [310, 314], [315, 316], [315, 320]], "missing_branches": []}, "Settings.git_sha": {"executed_lines": [326, 327, 328, 331, 332, 333, 334, 337], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 323, "executed_branches": [[327, 328], [327, 331], [332, 333], [332, 337]], "missing_branches": []}, "Settings.runtime_info": {"executed_lines": [342, 343, 344, 345], "summary": {"covered_lines": 4, "num_statements": 5, "percent_covered": 71.42857142857143, "percent_covered_display": "71.43", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 80.0, "percent_statements_covered_display": "80.00", "num_branches": 2, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 1, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50.00"}, "missing_lines": [348], "excluded_lines": [], "start_line": 340, "executed_branches": [[343, 344]], "missing_branches": [[343, 348]]}, "Settings.Config.parse_env_var": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 10, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 10, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00", "num_branches": 10, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 10, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0.00"}, "missing_lines": [358, 359, 362, 363, 366, 367, 368, 369, 370, 371], "excluded_lines": [], "start_line": 356, "executed_branches": [], "missing_branches": [[358, 359], [358, 366], [359, 362], [359, 363], [366, 367], [366, 371], [367, 368], [367, 369], [369, 370], [369, 371]]}, "": {"executed_lines": [3, 4, 6, 7, 10, 11, 12, 13, 14, 15, 16, 17, 20, 21, 22, 23, 26, 27, 28, 29, 32, 33, 34, 38, 40, 41, 42, 43, 44, 47, 48, 49, 50, 51, 54, 55, 56, 57, 60, 61, 62, 63, 64, 65, 66, 69, 70, 71, 72, 73, 74, 75, 78, 79, 80, 83, 84, 85, 86, 89, 90, 91, 92, 93, 96, 97, 98, 99, 100, 101, 102, 105, 106, 107, 108, 109, 110, 111, 114, 117, 118, 119, 120, 121, 122, 123, 126, 127, 128, 129, 130, 133, 134, 135, 136, 137, 138, 139, 142, 143, 146, 149, 152, 155, 160, 163, 164, 167, 168, 169, 174, 178, 187, 194, 203, 214, 220, 223, 229, 230, 239, 240, 245, 251, 255, 259, 263, 268, 269, 279, 280, 289, 290, 306, 307, 322, 323, 339, 340, 350, 351, 355, 356, 374], "summary": {"covered_lines": 144, "num_statements": 144, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"Settings": {"executed_lines": [271, 272, 273, 277, 282, 283, 284, 285, 286, 292, 293, 294, 297, 298, 299, 300, 309, 310, 311, 314, 315, 316, 317, 320, 326, 327, 328, 331, 332, 333, 334, 337, 342, 343, 344, 345], "summary": {"covered_lines": 36, "num_statements": 41, "percent_covered": 84.61538461538461, "percent_covered_display": "84.62", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 87.8048780487805, "percent_statements_covered_display": "87.80", "num_branches": 24, "num_partial_branches": 3, "covered_branches": 19, "missing_branches": 5, "percent_branches_covered": 79.16666666666667, "percent_branches_covered_display": "79.17"}, "missing_lines": [274, 275, 276, 303, 348], "excluded_lines": [], "start_line": 10, "executed_branches": [[271, 272], [271, 277], [272, 273], [282, 283], [282, 284], [284, 285], [284, 286], [293, 294], [293, 297], [298, 299], [310, 311], [310, 314], [315, 316], [315, 320], [327, 328], [327, 331], [332, 333], [332, 337], [343, 344]], "missing_branches": [[272, 274], [274, 275], [274, 276], [298, 303], [343, 348]]}, "Settings.Config": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 10, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 10, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00", "num_branches": 10, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 10, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0.00"}, "missing_lines": [358, 359, 362, 363, 366, 367, 368, 369, 370, 371], "excluded_lines": [], "start_line": 350, "executed_branches": [], "missing_branches": [[358, 359], [358, 366], [359, 362], [359, 363], [366, 367], [366, 371], [367, 368], [367, 369], [369, 370], [369, 371]]}, "": {"executed_lines": [3, 4, 6, 7, 10, 11, 12, 13, 14, 15, 16, 17, 20, 21, 22, 23, 26, 27, 28, 29, 32, 33, 34, 38, 40, 41, 42, 43, 44, 47, 48, 49, 50, 51, 54, 55, 56, 57, 60, 61, 62, 63, 64, 65, 66, 69, 70, 71, 72, 73, 74, 75, 78, 79, 80, 83, 84, 85, 86, 89, 90, 91, 92, 93, 96, 97, 98, 99, 100, 101, 102, 105, 106, 107, 108, 109, 110, 111, 114, 117, 118, 119, 120, 121, 122, 123, 126, 127, 128, 129, 130, 133, 134, 135, 136, 137, 138, 139, 142, 143, 146, 149, 152, 155, 160, 163, 164, 167, 168, 169, 174, 178, 187, 194, 203, 214, 220, 223, 229, 230, 239, 240, 245, 251, 255, 259, 263, 268, 269, 279, 280, 289, 290, 306, 307, 322, 323, 339, 340, 350, 351, 355, 356, 374], "summary": {"covered_lines": 144, "num_statements": 144, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}}, "app/database.py": {"executed_lines": [3, 4, 6, 7, 8, 9, 11, 13, 15, 18, 19, 20, 23, 30, 31, 33, 35, 37, 38, 39, 40, 43, 44, 45, 48, 49, 50, 53, 59, 64, 66, 69, 70, 71, 72, 73, 74, 75, 78, 79, 80, 86, 93, 99, 106, 107, 108, 111, 121, 126, 127, 128, 130], "summary": {"covered_lines": 53, "num_statements": 79, "percent_covered": 65.71428571428571, "percent_covered_display": "65.71", "missing_lines": 26, "excluded_lines": 0, "percent_statements_covered": 67.0886075949367, "percent_statements_covered_display": "67.09", "num_branches": 26, "num_partial_branches": 8, "covered_branches": 16, "missing_branches": 10, "percent_branches_covered": 61.53846153846154, "percent_branches_covered_display": "61.54"}, "missing_lines": [54, 55, 56, 81, 82, 83, 84, 87, 88, 89, 90, 94, 95, 96, 97, 100, 101, 102, 103, 112, 113, 114, 115, 116, 117, 118], "excluded_lines": [], "executed_branches": [[31, 33], [31, 48], [35, 37], [35, 48], [38, 39], [43, 44], [69, 70], [71, 72], [71, 78], [78, -59], [78, 79], [80, 86], [86, 93], [93, 99], [99, 106], [111, -59]], "missing_branches": [[38, 43], [43, 48], [69, 78], [80, 81], [86, 87], [93, 94], [99, 100], [111, 112], [114, 115], [114, 116]], "functions": {"init_db": {"executed_lines": [30, 31, 33, 35, 37, 38, 39, 40, 43, 44, 45, 48, 49, 50, 53], "summary": {"covered_lines": 15, "num_statements": 18, "percent_covered": 80.76923076923077, "percent_covered_display": "80.77", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 83.33333333333333, "percent_statements_covered_display": "83.33", "num_branches": 8, "num_partial_branches": 2, "covered_branches": 6, "missing_branches": 2, "percent_branches_covered": 75.0, "percent_branches_covered_display": "75.00"}, "missing_lines": [54, 55, 56], "excluded_lines": [], "start_line": 23, "executed_branches": [[31, 33], [31, 48], [35, 37], [35, 48], [38, 39], [43, 44]], "missing_branches": [[38, 43], [43, 48]]}, "_run_schema_migrations": {"executed_lines": [64, 66, 69, 70, 71, 72, 73, 74, 75, 78, 79, 80, 86, 93, 99, 106, 107, 108, 111], "summary": {"covered_lines": 19, "num_statements": 42, "percent_covered": 48.333333333333336, "percent_covered_display": "48.33", "missing_lines": 23, "excluded_lines": 0, "percent_statements_covered": 45.23809523809524, "percent_statements_covered_display": "45.24", "num_branches": 18, "num_partial_branches": 6, "covered_branches": 10, "missing_branches": 8, "percent_branches_covered": 55.55555555555556, "percent_branches_covered_display": "55.56"}, "missing_lines": [81, 82, 83, 84, 87, 88, 89, 90, 94, 95, 96, 97, 100, 101, 102, 103, 112, 113, 114, 115, 116, 117, 118], "excluded_lines": [], "start_line": 59, "executed_branches": [[69, 70], [71, 72], [71, 78], [78, -59], [78, 79], [80, 86], [86, 93], [93, 99], [99, 106], [111, -59]], "missing_branches": [[69, 78], [80, 81], [86, 87], [93, 94], [99, 100], [111, 112], [114, 115], [114, 116]]}, "get_db": {"executed_lines": [126, 127, 128, 130], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 121, "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [3, 4, 6, 7, 8, 9, 11, 13, 15, 18, 19, 20, 23, 59, 121], "summary": {"covered_lines": 15, "num_statements": 15, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [3, 4, 6, 7, 8, 9, 11, 13, 15, 18, 19, 20, 23, 30, 31, 33, 35, 37, 38, 39, 40, 43, 44, 45, 48, 49, 50, 53, 59, 64, 66, 69, 70, 71, 72, 73, 74, 75, 78, 79, 80, 86, 93, 99, 106, 107, 108, 111, 121, 126, 127, 128, 130], "summary": {"covered_lines": 53, "num_statements": 79, "percent_covered": 65.71428571428571, "percent_covered_display": "65.71", "missing_lines": 26, "excluded_lines": 0, "percent_statements_covered": 67.0886075949367, "percent_statements_covered_display": "67.09", "num_branches": 26, "num_partial_branches": 8, "covered_branches": 16, "missing_branches": 10, "percent_branches_covered": 61.53846153846154, "percent_branches_covered_display": "61.54"}, "missing_lines": [54, 55, 56, 81, 82, 83, 84, 87, 88, 89, 90, 94, 95, 96, 97, 100, 101, 102, 103, 112, 113, 114, 115, 116, 117, 118], "excluded_lines": [], "start_line": 1, "executed_branches": [[31, 33], [31, 48], [35, 37], [35, 48], [38, 39], [43, 44], [69, 70], [71, 72], [71, 78], [78, -59], [78, 79], [80, 86], [86, 93], [93, 99], [99, 106], [111, -59]], "missing_branches": [[38, 43], [43, 48], [69, 78], [80, 81], [86, 87], [93, 94], [99, 100], [111, 112], [114, 115], [114, 116]]}}}, "app/frontend.py": {"executed_lines": [7], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": [], "functions": {"": {"executed_lines": [7], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [7], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}}, "app/main.py": {"executed_lines": [2, 3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 17, 18, 19, 20, 21, 22, 23, 24, 27, 30, 33, 36, 41, 46, 47, 53, 56, 57, 59, 60, 61, 62, 66, 69, 71, 74, 77, 80, 81, 85, 88, 91, 94, 97, 100, 103, 106, 107, 108, 116, 119, 122, 125, 128, 129, 130, 136, 137, 143, 144, 147, 150, 151, 162, 163, 169, 170, 181, 182, 187, 188, 189, 190], "summary": {"covered_lines": 76, "num_statements": 85, "percent_covered": 85.56701030927834, "percent_covered_display": "85.57", "missing_lines": 9, "excluded_lines": 0, "percent_statements_covered": 89.41176470588235, "percent_statements_covered_display": "89.41", "num_branches": 12, "num_partial_branches": 5, "covered_branches": 7, "missing_branches": 5, "percent_branches_covered": 58.333333333333336, "percent_branches_covered_display": "58.33"}, "missing_lines": [37, 63, 64, 83, 132, 155, 175, 176, 183], "excluded_lines": [], "executed_branches": [[36, 41], [80, 81], [129, 130], [143, 144], [143, 147], [150, 151], [169, 170]], "missing_branches": [[36, 37], [80, 83], [129, 132], [150, 155], [169, 175]], "functions": {"lifespan": {"executed_lines": [53, 56, 57, 59, 60, 61, 62, 66, 69, 71, 74, 77, 80, 81, 85, 88, 91, 94, 97, 100], "summary": {"covered_lines": 20, "num_statements": 23, "percent_covered": 84.0, "percent_covered_display": "84.00", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 86.95652173913044, "percent_statements_covered_display": "86.96", "num_branches": 2, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 1, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50.00"}, "missing_lines": [63, 64, 83], "excluded_lines": [], "start_line": 47, "executed_branches": [[80, 81]], "missing_branches": [[80, 83]]}, "http_exception_handler": {"executed_lines": [143, 144, 147, 150, 151], "summary": {"covered_lines": 5, "num_statements": 6, "percent_covered": 80.0, "percent_covered_display": "80.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 83.33333333333333, "percent_statements_covered_display": "83.33", "num_branches": 4, "num_partial_branches": 1, "covered_branches": 3, "missing_branches": 1, "percent_branches_covered": 75.0, "percent_branches_covered_display": "75.00"}, "missing_lines": [155], "excluded_lines": [], "start_line": 137, "executed_branches": [[143, 144], [143, 147], [150, 151]], "missing_branches": [[150, 155]]}, "custom_500_handler": {"executed_lines": [169, 170], "summary": {"covered_lines": 2, "num_statements": 4, "percent_covered": 50.0, "percent_covered_display": "50.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 50.0, "percent_statements_covered_display": "50.00", "num_branches": 2, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 1, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50.00"}, "missing_lines": [175, 176], "excluded_lines": [], "start_line": 163, "executed_branches": [[169, 170]], "missing_branches": [[169, 175]]}, "test_500": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [183], "excluded_lines": [], "start_line": 182, "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [2, 3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 17, 18, 19, 20, 21, 22, 23, 24, 27, 30, 33, 36, 41, 46, 47, 103, 106, 107, 108, 116, 119, 122, 125, 128, 129, 130, 136, 137, 162, 163, 181, 182, 187, 188, 189, 190], "summary": {"covered_lines": 49, "num_statements": 51, "percent_covered": 92.72727272727273, "percent_covered_display": "92.73", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 96.07843137254902, "percent_statements_covered_display": "96.08", "num_branches": 4, "num_partial_branches": 2, "covered_branches": 2, "missing_branches": 2, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50.00"}, "missing_lines": [37, 132], "excluded_lines": [], "start_line": 1, "executed_branches": [[36, 41], [129, 130]], "missing_branches": [[36, 37], [129, 132]]}}, "classes": {"": {"executed_lines": [2, 3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 17, 18, 19, 20, 21, 22, 23, 24, 27, 30, 33, 36, 41, 46, 47, 53, 56, 57, 59, 60, 61, 62, 66, 69, 71, 74, 77, 80, 81, 85, 88, 91, 94, 97, 100, 103, 106, 107, 108, 116, 119, 122, 125, 128, 129, 130, 136, 137, 143, 144, 147, 150, 151, 162, 163, 169, 170, 181, 182, 187, 188, 189, 190], "summary": {"covered_lines": 76, "num_statements": 85, "percent_covered": 85.56701030927834, "percent_covered_display": "85.57", "missing_lines": 9, "excluded_lines": 0, "percent_statements_covered": 89.41176470588235, "percent_statements_covered_display": "89.41", "num_branches": 12, "num_partial_branches": 5, "covered_branches": 7, "missing_branches": 5, "percent_branches_covered": 58.333333333333336, "percent_branches_covered_display": "58.33"}, "missing_lines": [37, 63, 64, 83, 132, 155, 175, 176, 183], "excluded_lines": [], "start_line": 1, "executed_branches": [[36, 41], [80, 81], [129, 130], [143, 144], [143, 147], [150, 151], [169, 170]], "missing_branches": [[36, 37], [80, 83], [129, 132], [150, 155], [169, 175]]}}}, "app/middleware/__init__.py": {"executed_lines": [3, 5], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": [], "functions": {"": {"executed_lines": [3, 5], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [3, 5], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}}, "app/middleware/rate_limit.py": {"executed_lines": [19, 20, 22, 23, 24, 26, 29, 44, 45, 47, 48, 49, 50, 51, 54, 55, 56, 59, 70, 71, 73, 80, 82, 83, 85, 92, 100, 101, 104, 114], "summary": {"covered_lines": 30, "num_statements": 30, "percent_covered": 95.0, "percent_covered_display": "95.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 10, "num_partial_branches": 2, "covered_branches": 8, "missing_branches": 2, "percent_branches_covered": 80.0, "percent_branches_covered_display": "80.00"}, "missing_lines": [], "excluded_lines": [], "executed_branches": [[44, 45], [44, 54], [47, 48], [49, 50], [70, 71], [70, 80], [82, 83], [82, 85]], "missing_branches": [[47, 54], [49, 54]], "functions": {"get_identifier": {"executed_lines": [44, 45, 47, 48, 49, 50, 51, 54, 55, 56], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 87.5, "percent_covered_display": "87.50", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 6, "num_partial_branches": 2, "covered_branches": 4, "missing_branches": 2, "percent_branches_covered": 66.66666666666667, "percent_branches_covered_display": "66.67"}, "missing_lines": [], "excluded_lines": [], "start_line": 29, "executed_branches": [[44, 45], [44, 54], [47, 48], [49, 50]], "missing_branches": [[47, 54], [49, 54]]}, "create_limiter": {"executed_lines": [70, 71, 73, 80, 82, 83, 85, 92, 100, 101], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 59, "executed_branches": [[70, 71], [70, 80], [82, 83], [82, 85]], "missing_branches": []}, "get_rate_limit_exceeded_handler": {"executed_lines": [114], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 104, "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [19, 20, 22, 23, 24, 26, 29, 59, 104], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [19, 20, 22, 23, 24, 26, 29, 44, 45, 47, 48, 49, 50, 51, 54, 55, 56, 59, 70, 71, 73, 80, 82, 83, 85, 92, 100, 101, 104, 114], "summary": {"covered_lines": 30, "num_statements": 30, "percent_covered": 95.0, "percent_covered_display": "95.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 10, "num_partial_branches": 2, "covered_branches": 8, "missing_branches": 2, "percent_branches_covered": 80.0, "percent_branches_covered_display": "80.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [[44, 45], [44, 54], [47, 48], [49, 50], [70, 71], [70, 80], [82, 83], [82, 85]], "missing_branches": [[47, 54], [49, 54]]}}}, "app/middleware/rate_limit_decorators.py": {"executed_lines": [11, 14, 17, 18, 20, 21, 24, 41, 42, 44, 46, 49, 63, 64, 66, 68], "summary": {"covered_lines": 16, "num_statements": 16, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "executed_branches": [[17, 18], [17, 21]], "missing_branches": [], "functions": {"get_limiter": {"executed_lines": [17, 18, 20, 21], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 14, "executed_branches": [[17, 18], [17, 21]], "missing_branches": []}, "limit": {"executed_lines": [41, 46], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 24, "executed_branches": [], "missing_branches": []}, "limit.decorator": {"executed_lines": [42, 44], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 41, "executed_branches": [], "missing_branches": []}, "exempt": {"executed_lines": [63, 68], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 49, "executed_branches": [], "missing_branches": []}, "exempt.decorator": {"executed_lines": [64, 66], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 63, "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [11, 14, 24, 49], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [11, 14, 17, 18, 20, 21, 24, 41, 42, 44, 46, 49, 63, 64, 66, 68], "summary": {"covered_lines": 16, "num_statements": 16, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [[17, 18], [17, 21]], "missing_branches": []}}}, "app/middleware/security_headers.py": {"executed_lines": [14, 15, 17, 18, 20, 23, 36, 44, 45, 46, 48, 57, 59, 71, 74, 77, 79], "summary": {"covered_lines": 17, "num_statements": 35, "percent_covered": 40.42553191489362, "percent_covered_display": "40.43", "missing_lines": 18, "excluded_lines": 0, "percent_statements_covered": 48.57142857142857, "percent_statements_covered_display": "48.57", "num_branches": 12, "num_partial_branches": 2, "covered_branches": 2, "missing_branches": 10, "percent_branches_covered": 16.666666666666668, "percent_branches_covered_display": "16.67"}, "missing_lines": [49, 50, 75, 91, 92, 93, 94, 99, 100, 101, 102, 107, 108, 109, 110, 115, 116, 117], "excluded_lines": [], "executed_branches": [[48, 57], [74, 77]], "missing_branches": [[48, 49], [74, 75], [91, 92], [91, 99], [99, 100], [99, 107], [107, 108], [107, 115], [115, -79], [115, 116]], "functions": {"SecurityHeadersMiddleware.__init__": {"executed_lines": [44, 45, 46, 48, 57], "summary": {"covered_lines": 5, "num_statements": 7, "percent_covered": 66.66666666666667, "percent_covered_display": "66.67", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 71.42857142857143, "percent_statements_covered_display": "71.43", "num_branches": 2, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 1, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50.00"}, "missing_lines": [49, 50], "excluded_lines": [], "start_line": 36, "executed_branches": [[48, 57]], "missing_branches": [[48, 49]]}, "SecurityHeadersMiddleware.dispatch": {"executed_lines": [71, 74, 77], "summary": {"covered_lines": 3, "num_statements": 4, "percent_covered": 66.66666666666667, "percent_covered_display": "66.67", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 75.0, "percent_statements_covered_display": "75.00", "num_branches": 2, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 1, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50.00"}, "missing_lines": [75], "excluded_lines": [], "start_line": 59, "executed_branches": [[74, 77]], "missing_branches": [[74, 75]]}, "SecurityHeadersMiddleware._add_security_headers": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 15, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 15, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00", "num_branches": 8, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 8, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0.00"}, "missing_lines": [91, 92, 93, 94, 99, 100, 101, 102, 107, 108, 109, 110, 115, 116, 117], "excluded_lines": [], "start_line": 79, "executed_branches": [], "missing_branches": [[91, 92], [91, 99], [99, 100], [99, 107], [107, 108], [107, 115], [115, -79], [115, 116]]}, "": {"executed_lines": [14, 15, 17, 18, 20, 23, 36, 59, 79], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"SecurityHeadersMiddleware": {"executed_lines": [44, 45, 46, 48, 57, 71, 74, 77], "summary": {"covered_lines": 8, "num_statements": 26, "percent_covered": 26.31578947368421, "percent_covered_display": "26.32", "missing_lines": 18, "excluded_lines": 0, "percent_statements_covered": 30.76923076923077, "percent_statements_covered_display": "30.77", "num_branches": 12, "num_partial_branches": 2, "covered_branches": 2, "missing_branches": 10, "percent_branches_covered": 16.666666666666668, "percent_branches_covered_display": "16.67"}, "missing_lines": [49, 50, 75, 91, 92, 93, 94, 99, 100, 101, 102, 107, 108, 109, 110, 115, 116, 117], "excluded_lines": [], "start_line": 23, "executed_branches": [[48, 57], [74, 77]], "missing_branches": [[48, 49], [74, 75], [91, 92], [91, 99], [99, 100], [99, 107], [107, 108], [107, 115], [115, -79], [115, 116]]}, "": {"executed_lines": [14, 15, 17, 18, 20, 23, 36, 59, 79], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}}, "app/models.py": {"executed_lines": [3, 5, 8, 9, 11, 12, 13, 14, 15, 16, 19, 20, 22, 26, 29, 32, 36, 40, 43, 46, 50, 53, 56, 59, 65, 67, 68, 69, 70, 71, 72, 73, 74, 75, 77, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 92, 95, 97, 98, 99, 100, 101], "summary": {"covered_lines": 52, "num_statements": 52, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": [], "functions": {"": {"executed_lines": [3, 5, 8, 9, 11, 12, 13, 14, 15, 16, 19, 20, 22, 26, 29, 32, 36, 40, 43, 46, 50, 53, 56, 59, 65, 67, 68, 69, 70, 71, 72, 73, 74, 75, 77, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 92, 95, 97, 98, 99, 100, 101], "summary": {"covered_lines": 52, "num_statements": 52, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"DocumentMetadata": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 8, "executed_branches": [], "missing_branches": []}, "FileRecord": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 19, "executed_branches": [], "missing_branches": []}, "FileProcessingStep": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 59, "executed_branches": [], "missing_branches": []}, "ProcessingLog": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 80, "executed_branches": [], "missing_branches": []}, "ApplicationSettings": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 92, "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [3, 5, 8, 9, 11, 12, 13, 14, 15, 16, 19, 20, 22, 26, 29, 32, 36, 40, 43, 46, 50, 53, 56, 59, 65, 67, 68, 69, 70, 71, 72, 73, 74, 75, 77, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 92, 95, 97, 98, 99, 100, 101], "summary": {"covered_lines": 52, "num_statements": 52, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}}, "app/tasks/__init__.py": {"executed_lines": [2, 3], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": [], "functions": {"": {"executed_lines": [2, 3], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [2, 3], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}}, "app/tasks/check_credentials.py": {"executed_lines": [1, 2, 3, 4, 5, 6, 8, 9, 10, 11, 14, 15, 16, 19, 20, 24, 27, 28, 29, 30, 31, 32, 34, 35, 37, 38, 41, 44, 47, 49, 50, 51, 52, 57, 60, 62, 63, 64, 70, 72, 73, 74, 78, 81, 82, 83, 84, 85, 88, 90, 91, 92, 93, 94, 97, 99, 100, 101, 102, 103, 106, 108, 109, 110, 111, 112, 115, 117, 118, 119, 120, 121, 124, 125], "summary": {"covered_lines": 74, "num_statements": 134, "percent_covered": 54.32098765432099, "percent_covered_display": "54.32", "missing_lines": 60, "excluded_lines": 0, "percent_statements_covered": 55.223880597014926, "percent_statements_covered_display": "55.22", "num_branches": 28, "num_partial_branches": 0, "covered_branches": 14, "missing_branches": 14, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50.00"}, "missing_lines": [53, 54, 65, 66, 127, 130, 133, 136, 137, 140, 174, 175, 177, 178, 179, 182, 183, 184, 185, 187, 188, 190, 192, 195, 196, 199, 201, 202, 205, 206, 210, 211, 212, 213, 214, 219, 225, 227, 230, 231, 234, 235, 237, 239, 240, 241, 242, 245, 246, 249, 250, 251, 252, 255, 258, 261, 264, 265, 268, 273], "excluded_lines": [], "executed_branches": [[50, 51], [50, 57], [72, 73], [72, 74], [83, 84], [83, 85], [92, 93], [92, 94], [101, 102], [101, 103], [110, 111], [110, 112], [119, 120], [119, 121]], "missing_branches": [[177, 178], [177, 261], [182, 183], [182, 190], [201, 202], [201, 227], [210, 211], [210, 219], [230, 231], [230, 235], [235, 177], [235, 237], [249, 250], [249, 255]], "functions": {"MockRequest.__init__": {"executed_lines": [28, 29, 30, 31, 32], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 27, "executed_branches": [], "missing_branches": []}, "MockRequest.json": {"executed_lines": [35], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 34, "executed_branches": [], "missing_branches": []}, "MockRequest.form": {"executed_lines": [38], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 37, "executed_branches": [], "missing_branches": []}, "get_failure_state": {"executed_lines": [49, 50, 51, 52, 57], "summary": {"covered_lines": 5, "num_statements": 7, "percent_covered": 77.77777777777777, "percent_covered_display": "77.78", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 71.42857142857143, "percent_statements_covered_display": "71.43", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [53, 54], "excluded_lines": [], "start_line": 47, "executed_branches": [[50, 51], [50, 57]], "missing_branches": []}, "save_failure_state": {"executed_lines": [62, 63, 64], "summary": {"covered_lines": 3, "num_statements": 5, "percent_covered": 60.0, "percent_covered_display": "60.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 60.0, "percent_statements_covered_display": "60.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [65, 66], "excluded_lines": [], "start_line": 60, "executed_branches": [], "missing_branches": []}, "unwrap_decorated_function": {"executed_lines": [72, 73, 74], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 70, "executed_branches": [[72, 73], [72, 74]], "missing_branches": []}, "sync_test_openai_connection": {"executed_lines": [81, 82, 83, 84, 85], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 78, "executed_branches": [[83, 84], [83, 85]], "missing_branches": []}, "sync_test_azure_connection": {"executed_lines": [90, 91, 92, 93, 94], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 88, "executed_branches": [[92, 93], [92, 94]], "missing_branches": []}, "sync_test_dropbox_token": {"executed_lines": [99, 100, 101, 102, 103], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 97, "executed_branches": [[101, 102], [101, 103]], "missing_branches": []}, "sync_test_google_drive_token": {"executed_lines": [108, 109, 110, 111, 112], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 106, "executed_branches": [[110, 111], [110, 112]], "missing_branches": []}, "sync_test_onedrive_token": {"executed_lines": [117, 118, 119, 120, 121], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 115, "executed_branches": [[119, 120], [119, 121]], "missing_branches": []}, "check_credentials": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 56, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 56, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00", "num_branches": 14, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 14, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0.00"}, "missing_lines": [127, 130, 133, 136, 137, 140, 174, 175, 177, 178, 179, 182, 183, 184, 185, 187, 188, 190, 192, 195, 196, 199, 201, 202, 205, 206, 210, 211, 212, 213, 214, 219, 225, 227, 230, 231, 234, 235, 237, 239, 240, 241, 242, 245, 246, 249, 250, 251, 252, 255, 258, 261, 264, 265, 268, 273], "excluded_lines": [], "start_line": 125, "executed_branches": [], "missing_branches": [[177, 178], [177, 261], [182, 183], [182, 190], [201, 202], [201, 227], [210, 211], [210, 219], [230, 231], [230, 235], [235, 177], [235, 237], [249, 250], [249, 255]]}, "": {"executed_lines": [1, 2, 3, 4, 5, 6, 8, 9, 10, 11, 14, 15, 16, 19, 20, 24, 27, 34, 37, 41, 44, 47, 60, 70, 78, 88, 97, 106, 115, 124, 125], "summary": {"covered_lines": 31, "num_statements": 31, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"MockRequest": {"executed_lines": [28, 29, 30, 31, 32, 35, 38], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 24, "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [1, 2, 3, 4, 5, 6, 8, 9, 10, 11, 14, 15, 16, 19, 20, 24, 27, 34, 37, 41, 44, 47, 49, 50, 51, 52, 57, 60, 62, 63, 64, 70, 72, 73, 74, 78, 81, 82, 83, 84, 85, 88, 90, 91, 92, 93, 94, 97, 99, 100, 101, 102, 103, 106, 108, 109, 110, 111, 112, 115, 117, 118, 119, 120, 121, 124, 125], "summary": {"covered_lines": 67, "num_statements": 127, "percent_covered": 52.25806451612903, "percent_covered_display": "52.26", "missing_lines": 60, "excluded_lines": 0, "percent_statements_covered": 52.75590551181102, "percent_statements_covered_display": "52.76", "num_branches": 28, "num_partial_branches": 0, "covered_branches": 14, "missing_branches": 14, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50.00"}, "missing_lines": [53, 54, 65, 66, 127, 130, 133, 136, 137, 140, 174, 175, 177, 178, 179, 182, 183, 184, 185, 187, 188, 190, 192, 195, 196, 199, 201, 202, 205, 206, 210, 211, 212, 213, 214, 219, 225, 227, 230, 231, 234, 235, 237, 239, 240, 241, 242, 245, 246, 249, 250, 251, 252, 255, 258, 261, 264, 265, 268, 273], "excluded_lines": [], "start_line": 1, "executed_branches": [[50, 51], [50, 57], [72, 73], [72, 74], [83, 84], [83, 85], [92, 93], [92, 94], [101, 102], [101, 103], [110, 111], [110, 112], [119, 120], [119, 121]], "missing_branches": [[177, 178], [177, 261], [182, 183], [182, 190], [201, 202], [201, 227], [210, 211], [210, 219], [230, 231], [230, 235], [235, 177], [235, 237], [249, 250], [249, 255]]}}}, "app/tasks/convert_to_pdf.py": {"executed_lines": [2, 3, 4, 5, 7, 8, 9, 10, 12, 13, 14, 16, 19, 29, 30, 31, 32, 33, 34, 36, 37, 38, 40, 43, 54, 55, 56, 58, 59, 60, 61, 63, 66, 78, 79, 80, 82, 83, 84, 85, 87, 88, 90, 91, 92, 93, 94, 95, 97, 98, 101, 104, 116, 117, 119, 120, 121, 123, 126, 127, 137, 138, 139, 141, 142, 143, 144, 145, 148, 149, 150, 151, 152, 163, 164, 165, 168, 169, 170, 173, 205, 207, 210, 217, 218, 221, 230, 231, 234, 237, 250, 252, 256, 257, 277, 278, 279, 281, 282, 287, 297, 298, 306, 311, 312, 313, 316, 318, 320, 321, 322, 324, 325, 326, 331, 333, 334, 335, 339, 341, 342, 347, 348, 349, 350, 351, 352, 353], "summary": {"covered_lines": 128, "num_statements": 136, "percent_covered": 90.55555555555556, "percent_covered_display": "90.56", "missing_lines": 8, "excluded_lines": 0, "percent_statements_covered": 94.11764705882354, "percent_statements_covered_display": "94.12", "num_branches": 44, "num_partial_branches": 9, "covered_branches": 35, "missing_branches": 9, "percent_branches_covered": 79.54545454545455, "percent_branches_covered_display": "79.55"}, "missing_lines": [99, 302, 303, 304, 307, 308, 309, 337], "excluded_lines": [], "executed_branches": [[31, 32], [37, 38], [37, 40], [55, 56], [55, 58], [58, 59], [58, 63], [60, 61], [79, 80], [79, 82], [82, 83], [82, 87], [84, 85], [87, 88], [87, 90], [92, 93], [98, 101], [116, 117], [116, 119], [120, 121], [120, 123], [142, 143], [142, 148], [151, 152], [151, 165], [210, 217], [210, 230], [230, 231], [230, 250], [250, 252], [297, 298], [306, 311], [318, 320], [318, 341], [331, 333]], "missing_branches": [[31, 36], [60, 63], [84, 87], [92, 97], [98, 99], [250, 302], [297, 306], [306, 307], [331, 337]], "functions": {"_detect_mime_type_from_magic": {"executed_lines": [29, 30, 31, 32, 33, 34, 36, 37, 38, 40], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 92.85714285714286, "percent_covered_display": "92.86", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 4, "num_partial_branches": 1, "covered_branches": 3, "missing_branches": 1, "percent_branches_covered": 75.0, "percent_branches_covered_display": "75.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 19, "executed_branches": [[31, 32], [37, 38], [37, 40]], "missing_branches": [[31, 36]]}, "_detect_mime_type": {"executed_lines": [54, 55, 56, 58, 59, 60, 61, 63], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 92.85714285714286, "percent_covered_display": "92.86", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 6, "num_partial_branches": 1, "covered_branches": 5, "missing_branches": 1, "percent_branches_covered": 83.33333333333333, "percent_branches_covered_display": "83.33"}, "missing_lines": [], "excluded_lines": [], "start_line": 43, "executed_branches": [[55, 56], [55, 58], [58, 59], [58, 63], [60, 61]], "missing_branches": [[60, 63]]}, "_detect_extension": {"executed_lines": [78, 79, 80, 82, 83, 84, 85, 87, 88, 90, 91, 92, 93, 94, 95, 97, 98, 101], "summary": {"covered_lines": 18, "num_statements": 19, "percent_covered": 87.09677419354838, "percent_covered_display": "87.10", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 94.73684210526316, "percent_statements_covered_display": "94.74", "num_branches": 12, "num_partial_branches": 3, "covered_branches": 9, "missing_branches": 3, "percent_branches_covered": 75.0, "percent_branches_covered_display": "75.00"}, "missing_lines": [99], "excluded_lines": [], "start_line": 66, "executed_branches": [[79, 80], [79, 82], [82, 83], [82, 87], [84, 85], [87, 88], [87, 90], [92, 93], [98, 101]], "missing_branches": [[84, 87], [92, 97], [98, 99]]}, "_build_filename": {"executed_lines": [116, 117, 119, 120, 121, 123], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 104, "executed_branches": [[116, 117], [116, 119], [120, 121], [120, 123]], "missing_branches": []}, "convert_to_pdf": {"executed_lines": [137, 138, 139, 141, 142, 143, 144, 145, 148, 149, 150, 151, 152, 163, 164, 165, 168, 169, 170, 173, 205, 207, 210, 217, 218, 221, 230, 231, 234, 237, 250, 252, 256, 257, 277, 278, 279, 281, 282, 287, 297, 298, 306, 311, 312, 313, 316, 318, 320, 321, 322, 324, 325, 326, 331, 333, 334, 335, 339, 341, 342, 347, 348, 349, 350, 351, 352, 353], "summary": {"covered_lines": 68, "num_statements": 75, "percent_covered": 88.17204301075269, "percent_covered_display": "88.17", "missing_lines": 7, "excluded_lines": 0, "percent_statements_covered": 90.66666666666667, "percent_statements_covered_display": "90.67", "num_branches": 18, "num_partial_branches": 4, "covered_branches": 14, "missing_branches": 4, "percent_branches_covered": 77.77777777777777, "percent_branches_covered_display": "77.78"}, "missing_lines": [302, 303, 304, 307, 308, 309, 337], "excluded_lines": [], "start_line": 127, "executed_branches": [[142, 143], [142, 148], [151, 152], [151, 165], [210, 217], [210, 230], [230, 231], [230, 250], [250, 252], [297, 298], [306, 311], [318, 320], [318, 341], [331, 333]], "missing_branches": [[250, 302], [297, 306], [306, 307], [331, 337]]}, "": {"executed_lines": [2, 3, 4, 5, 7, 8, 9, 10, 12, 13, 14, 16, 19, 43, 66, 104, 126, 127], "summary": {"covered_lines": 18, "num_statements": 18, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [2, 3, 4, 5, 7, 8, 9, 10, 12, 13, 14, 16, 19, 29, 30, 31, 32, 33, 34, 36, 37, 38, 40, 43, 54, 55, 56, 58, 59, 60, 61, 63, 66, 78, 79, 80, 82, 83, 84, 85, 87, 88, 90, 91, 92, 93, 94, 95, 97, 98, 101, 104, 116, 117, 119, 120, 121, 123, 126, 127, 137, 138, 139, 141, 142, 143, 144, 145, 148, 149, 150, 151, 152, 163, 164, 165, 168, 169, 170, 173, 205, 207, 210, 217, 218, 221, 230, 231, 234, 237, 250, 252, 256, 257, 277, 278, 279, 281, 282, 287, 297, 298, 306, 311, 312, 313, 316, 318, 320, 321, 322, 324, 325, 326, 331, 333, 334, 335, 339, 341, 342, 347, 348, 349, 350, 351, 352, 353], "summary": {"covered_lines": 128, "num_statements": 136, "percent_covered": 90.55555555555556, "percent_covered_display": "90.56", "missing_lines": 8, "excluded_lines": 0, "percent_statements_covered": 94.11764705882354, "percent_statements_covered_display": "94.12", "num_branches": 44, "num_partial_branches": 9, "covered_branches": 35, "missing_branches": 9, "percent_branches_covered": 79.54545454545455, "percent_branches_covered_display": "79.55"}, "missing_lines": [99, 302, 303, 304, 307, 308, 309, 337], "excluded_lines": [], "start_line": 1, "executed_branches": [[31, 32], [37, 38], [37, 40], [55, 56], [55, 58], [58, 59], [58, 63], [60, 61], [79, 80], [79, 82], [82, 83], [82, 87], [84, 85], [87, 88], [87, 90], [92, 93], [98, 101], [116, 117], [116, 119], [120, 121], [120, 123], [142, 143], [142, 148], [151, 152], [151, 165], [210, 217], [210, 230], [230, 231], [230, 250], [250, 252], [297, 298], [306, 311], [318, 320], [318, 341], [331, 333]], "missing_branches": [[31, 36], [60, 63], [84, 87], [92, 97], [98, 99], [250, 302], [297, 306], [306, 307], [331, 337]]}}}, "app/tasks/embed_metadata_into_pdf.py": {"executed_lines": [3, 4, 5, 6, 7, 8, 10, 13, 14, 15, 16, 17, 18, 19, 20, 22, 29, 30, 33, 50, 51, 54, 55, 56, 57, 58, 60, 61, 62, 65, 66, 80, 81, 82, 91, 98, 119, 121, 122, 123, 124, 127, 129, 130, 131, 134, 135, 136, 139, 143, 153, 154, 156, 157, 161, 163, 165, 167, 168, 170, 172, 173, 181, 183, 185, 190, 191, 192, 193, 194, 195, 197, 198, 199, 203, 204, 205, 250, 251, 252, 264, 265, 266, 267, 270], "summary": {"covered_lines": 85, "num_statements": 117, "percent_covered": 68.79432624113475, "percent_covered_display": "68.79", "missing_lines": 32, "excluded_lines": 0, "percent_statements_covered": 72.64957264957265, "percent_statements_covered_display": "72.65", "num_branches": 24, "num_partial_branches": 6, "covered_branches": 12, "missing_branches": 12, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50.00"}, "missing_lines": [92, 93, 94, 95, 99, 100, 101, 103, 104, 116, 140, 184, 208, 209, 214, 215, 229, 233, 234, 235, 236, 239, 240, 241, 242, 243, 244, 245, 246, 248, 268, 269], "excluded_lines": [], "executed_branches": [[55, 56], [55, 57], [57, 58], [57, 60], [91, 98], [98, 119], [139, 143], [183, 185], [192, 193], [194, 195], [264, 265], [264, 270]], "missing_branches": [[91, 92], [94, 95], [94, 98], [98, 99], [100, 101], [100, 103], [139, 140], [183, 184], [192, 203], [194, 203], [239, 240], [239, 248]], "functions": {"persist_metadata": {"executed_lines": [50, 51, 54, 55, 56, 57, 58, 60, 61, 62], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 33, "executed_branches": [[55, 56], [55, 57], [57, 58], [57, 60]], "missing_branches": []}, "embed_metadata_into_pdf": {"executed_lines": [80, 81, 82, 91, 98, 119, 121, 122, 123, 124, 127, 129, 130, 131, 134, 135, 136, 139, 143, 153, 154, 156, 157, 161, 163, 165, 167, 168, 170, 172, 173, 181, 183, 185, 190, 191, 192, 193, 194, 195, 197, 198, 199, 203, 204, 205, 250, 251, 252, 264, 265, 266, 267, 270], "summary": {"covered_lines": 54, "num_statements": 86, "percent_covered": 58.490566037735846, "percent_covered_display": "58.49", "missing_lines": 32, "excluded_lines": 0, "percent_statements_covered": 62.7906976744186, "percent_statements_covered_display": "62.79", "num_branches": 20, "num_partial_branches": 6, "covered_branches": 8, "missing_branches": 12, "percent_branches_covered": 40.0, "percent_branches_covered_display": "40.00"}, "missing_lines": [92, 93, 94, 95, 99, 100, 101, 103, 104, 116, 140, 184, 208, 209, 214, 215, 229, 233, 234, 235, 236, 239, 240, 241, 242, 243, 244, 245, 246, 248, 268, 269], "excluded_lines": [], "start_line": 66, "executed_branches": [[91, 98], [98, 119], [139, 143], [183, 185], [192, 193], [194, 195], [264, 265], [264, 270]], "missing_branches": [[91, 92], [94, 95], [94, 98], [98, 99], [100, 101], [100, 103], [139, 140], [183, 184], [192, 203], [194, 203], [239, 240], [239, 248]]}, "": {"executed_lines": [3, 4, 5, 6, 7, 8, 10, 13, 14, 15, 16, 17, 18, 19, 20, 22, 29, 30, 33, 65, 66], "summary": {"covered_lines": 21, "num_statements": 21, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [3, 4, 5, 6, 7, 8, 10, 13, 14, 15, 16, 17, 18, 19, 20, 22, 29, 30, 33, 50, 51, 54, 55, 56, 57, 58, 60, 61, 62, 65, 66, 80, 81, 82, 91, 98, 119, 121, 122, 123, 124, 127, 129, 130, 131, 134, 135, 136, 139, 143, 153, 154, 156, 157, 161, 163, 165, 167, 168, 170, 172, 173, 181, 183, 185, 190, 191, 192, 193, 194, 195, 197, 198, 199, 203, 204, 205, 250, 251, 252, 264, 265, 266, 267, 270], "summary": {"covered_lines": 85, "num_statements": 117, "percent_covered": 68.79432624113475, "percent_covered_display": "68.79", "missing_lines": 32, "excluded_lines": 0, "percent_statements_covered": 72.64957264957265, "percent_statements_covered_display": "72.65", "num_branches": 24, "num_partial_branches": 6, "covered_branches": 12, "missing_branches": 12, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50.00"}, "missing_lines": [92, 93, 94, 95, 99, 100, 101, 103, 104, 116, 140, 184, 208, 209, 214, 215, 229, 233, 234, 235, 236, 239, 240, 241, 242, 243, 244, 245, 246, 248, 268, 269], "excluded_lines": [], "start_line": 1, "executed_branches": [[55, 56], [55, 57], [57, 58], [57, 60], [91, 98], [98, 119], [139, 143], [183, 185], [192, 193], [194, 195], [264, 265], [264, 270]], "missing_branches": [[91, 92], [94, 95], [94, 98], [98, 99], [100, 101], [100, 103], [139, 140], [183, 184], [192, 203], [194, 203], [239, 240], [239, 248]]}}}, "app/tasks/extract_metadata_with_gpt.py": {"executed_lines": [3, 4, 5, 6, 8, 11, 12, 13, 14, 15, 16, 17, 19, 22, 23, 24, 30, 36, 37, 38, 39, 41, 42, 43, 44, 45, 48, 49], "summary": {"covered_lines": 28, "num_statements": 71, "percent_covered": 36.7816091954023, "percent_covered_display": "36.78", "missing_lines": 43, "excluded_lines": 0, "percent_statements_covered": 39.436619718309856, "percent_statements_covered_display": "39.44", "num_branches": 16, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 12, "percent_branches_covered": 25.0, "percent_branches_covered_display": "25.00"}, "missing_lines": [25, 26, 27, 51, 52, 53, 58, 59, 60, 61, 62, 63, 64, 65, 67, 100, 101, 102, 103, 112, 113, 114, 123, 124, 125, 126, 134, 136, 141, 142, 149, 150, 152, 154, 155, 166, 167, 170, 172, 174, 175, 176, 184], "excluded_lines": [], "executed_branches": [[38, 39], [38, 41], [43, 44], [43, 45]], "missing_branches": [[58, 59], [58, 67], [61, 62], [61, 67], [64, 65], [64, 67], [124, 125], [124, 136], [142, 149], [142, 154], [149, 150], [149, 154]], "functions": {"extract_json_from_text": {"executed_lines": [36, 37, 38, 39, 41, 42, 43, 44, 45], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 30, "executed_branches": [[38, 39], [38, 41], [43, 44], [43, 45]], "missing_branches": []}, "extract_metadata_with_gpt": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 40, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 40, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00", "num_branches": 12, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 12, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0.00"}, "missing_lines": [51, 52, 53, 58, 59, 60, 61, 62, 63, 64, 65, 67, 100, 101, 102, 103, 112, 113, 114, 123, 124, 125, 126, 134, 136, 141, 142, 149, 150, 152, 154, 155, 166, 167, 170, 172, 174, 175, 176, 184], "excluded_lines": [], "start_line": 49, "executed_branches": [], "missing_branches": [[58, 59], [58, 67], [61, 62], [61, 67], [64, 65], [64, 67], [124, 125], [124, 136], [142, 149], [142, 154], [149, 150], [149, 154]]}, "": {"executed_lines": [3, 4, 5, 6, 8, 11, 12, 13, 14, 15, 16, 17, 19, 22, 23, 24, 30, 48, 49], "summary": {"covered_lines": 19, "num_statements": 22, "percent_covered": 86.36363636363636, "percent_covered_display": "86.36", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 86.36363636363636, "percent_statements_covered_display": "86.36", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [25, 26, 27], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [3, 4, 5, 6, 8, 11, 12, 13, 14, 15, 16, 17, 19, 22, 23, 24, 30, 36, 37, 38, 39, 41, 42, 43, 44, 45, 48, 49], "summary": {"covered_lines": 28, "num_statements": 71, "percent_covered": 36.7816091954023, "percent_covered_display": "36.78", "missing_lines": 43, "excluded_lines": 0, "percent_statements_covered": 39.436619718309856, "percent_statements_covered_display": "39.44", "num_branches": 16, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 12, "percent_branches_covered": 25.0, "percent_branches_covered_display": "25.00"}, "missing_lines": [25, 26, 27, 51, 52, 53, 58, 59, 60, 61, 62, 63, 64, 65, 67, 100, 101, 102, 103, 112, 113, 114, 123, 124, 125, 126, 134, 136, 141, 142, 149, 150, 152, 154, 155, 166, 167, 170, 172, 174, 175, 176, 184], "excluded_lines": [], "start_line": 1, "executed_branches": [[38, 39], [38, 41], [43, 44], [43, 45]], "missing_branches": [[58, 59], [58, 67], [61, 62], [61, 67], [64, 65], [64, 67], [124, 125], [124, 136], [142, 149], [142, 154], [149, 150], [149, 154]]}}}, "app/tasks/finalize_document_storage.py": {"executed_lines": [3, 4, 7, 8, 9, 10, 11, 14, 17, 20, 22, 25, 26], "summary": {"covered_lines": 13, "num_statements": 42, "percent_covered": 26.0, "percent_covered_display": "26.00", "missing_lines": 29, "excluded_lines": 0, "percent_statements_covered": 30.952380952380953, "percent_statements_covered_display": "30.95", "num_branches": 8, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 8, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0.00"}, "missing_lines": [32, 33, 36, 45, 46, 48, 49, 50, 51, 55, 56, 57, 59, 60, 62, 63, 64, 65, 66, 70, 71, 77, 82, 84, 85, 87, 90, 91, 93], "excluded_lines": [], "executed_branches": [], "missing_branches": [[45, 46], [45, 55], [50, 51], [50, 55], [59, 60], [59, 70], [60, 59], [60, 62]], "functions": {"finalize_document_storage": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 29, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 29, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00", "num_branches": 8, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 8, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0.00"}, "missing_lines": [32, 33, 36, 45, 46, 48, 49, 50, 51, 55, 56, 57, 59, 60, 62, 63, 64, 65, 66, 70, 71, 77, 82, 84, 85, 87, 90, 91, 93], "excluded_lines": [], "start_line": 26, "executed_branches": [], "missing_branches": [[45, 46], [45, 55], [50, 51], [50, 55], [59, 60], [59, 70], [60, 59], [60, 62]]}, "": {"executed_lines": [3, 4, 7, 8, 9, 10, 11, 14, 17, 20, 22, 25, 26], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [3, 4, 7, 8, 9, 10, 11, 14, 17, 20, 22, 25, 26], "summary": {"covered_lines": 13, "num_statements": 42, "percent_covered": 26.0, "percent_covered_display": "26.00", "missing_lines": 29, "excluded_lines": 0, "percent_statements_covered": 30.952380952380953, "percent_statements_covered_display": "30.95", "num_branches": 8, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 8, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0.00"}, "missing_lines": [32, 33, 36, 45, 46, 48, 49, 50, 51, 55, 56, 57, 59, 60, 62, 63, 64, 65, 66, 70, 71, 77, 82, 84, 85, 87, 90, 91, 93], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": [[45, 46], [45, 55], [50, 51], [50, 55], [59, 60], [59, 70], [60, 59], [60, 62]]}}}, "app/tasks/imap_tasks.py": {"executed_lines": [2, 3, 4, 5, 6, 7, 8, 10, 11, 13, 14, 15, 17, 20, 22, 23, 26, 29, 40, 46, 48, 49, 50, 51, 52, 53, 57, 60, 62, 63, 66, 68, 69, 70, 71, 72, 73, 74, 75, 78, 79, 120, 130, 131, 132, 134, 135, 146, 244, 271, 285, 286, 287, 288, 290, 291, 292, 295, 297, 299, 300, 301, 303, 304, 305, 308, 309, 310, 311, 313, 314, 316, 317, 320, 325, 327, 330, 331, 332, 333, 334, 335, 336, 337, 340, 342, 343, 344, 345, 346, 349, 351, 352, 353, 354, 355, 358, 364, 371, 372, 373, 374, 376, 377, 381, 384, 386, 387, 388, 389, 390, 393, 398, 399, 400, 402, 403, 404, 405, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416], "summary": {"covered_lines": 129, "num_statements": 215, "percent_covered": 57.491289198606275, "percent_covered_display": "57.49", "missing_lines": 86, "excluded_lines": 0, "percent_statements_covered": 60.0, "percent_statements_covered_display": "60.00", "num_branches": 72, "num_partial_branches": 6, "covered_branches": 36, "missing_branches": 36, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50.00"}, "missing_lines": [31, 32, 33, 34, 35, 36, 37, 42, 43, 54, 55, 56, 85, 86, 87, 89, 90, 93, 104, 114, 117, 157, 158, 160, 161, 162, 164, 165, 167, 168, 169, 170, 172, 173, 175, 176, 179, 180, 181, 183, 184, 185, 186, 187, 189, 190, 192, 193, 194, 195, 196, 198, 199, 200, 202, 203, 204, 206, 207, 208, 211, 212, 213, 214, 218, 220, 221, 222, 224, 225, 227, 228, 229, 231, 233, 234, 236, 237, 238, 240, 241, 328, 378, 379, 380, 406], "excluded_lines": [], "executed_branches": [[48, 49], [48, 57], [70, 71], [70, 75], [73, 70], [73, 74], [130, 131], [130, 134], [286, 287], [286, 317], [287, 288], [287, 290], [291, 292], [291, 295], [299, 300], [299, 303], [308, 309], [308, 311], [311, 313], [327, 330], [331, 332], [333, 334], [333, 337], [371, 372], [371, 376], [373, 371], [373, 374], [377, 381], [387, 388], [387, 390], [405, 407], [408, 409], [408, 414], [410, 411], [414, 403], [414, 415]], "missing_branches": [[32, 33], [32, 36], [85, 86], [85, 89], [165, 167], [165, 179], [168, 169], [168, 172], [183, 184], [183, 189], [192, 193], [192, 233], [194, 195], [194, 198], [202, 203], [202, 206], [206, 207], [206, 211], [211, 212], [211, 218], [212, 213], [212, 218], [220, 221], [220, 224], [227, 228], [227, 231], [233, 234], [233, 236], [311, 316], [327, 328], [331, 337], [377, 378], [379, 380], [379, 381], [405, 406], [410, 414]], "functions": {"acquire_lock": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 7, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 7, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 2, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0.00"}, "missing_lines": [31, 32, 33, 34, 35, 36, 37], "excluded_lines": [], "start_line": 29, "executed_branches": [], "missing_branches": [[32, 33], [32, 36]]}, "release_lock": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [42, 43], "excluded_lines": [], "start_line": 40, "executed_branches": [], "missing_branches": []}, "load_processed_emails": {"executed_lines": [48, 49, 50, 51, 52, 53, 57], "summary": {"covered_lines": 7, "num_statements": 10, "percent_covered": 75.0, "percent_covered_display": "75.00", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 70.0, "percent_statements_covered_display": "70.00", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [54, 55, 56], "excluded_lines": [], "start_line": 46, "executed_branches": [[48, 49], [48, 57]], "missing_branches": []}, "save_processed_emails": {"executed_lines": [62, 63], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 60, "executed_branches": [], "missing_branches": []}, "cleanup_old_entries": {"executed_lines": [68, 69, 70, 71, 72, 73, 74, 75], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 66, "executed_branches": [[70, 71], [70, 75], [73, 70], [73, 74]], "missing_branches": []}, "pull_all_inboxes": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 9, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 9, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 2, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0.00"}, "missing_lines": [85, 86, 87, 89, 90, 93, 104, 114, 117], "excluded_lines": [], "start_line": 79, "executed_branches": [], "missing_branches": [[85, 86], [85, 89]]}, "check_and_pull_mailbox": {"executed_lines": [130, 131, 132, 134, 135], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 120, "executed_branches": [[130, 131], [130, 134]], "missing_branches": []}, "pull_inbox": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 60, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 60, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00", "num_branches": 24, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 24, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0.00"}, "missing_lines": [157, 158, 160, 161, 162, 164, 165, 167, 168, 169, 170, 172, 173, 175, 176, 179, 180, 181, 183, 184, 185, 186, 187, 189, 190, 192, 193, 194, 195, 196, 198, 199, 200, 202, 203, 204, 206, 207, 208, 211, 212, 213, 214, 218, 220, 221, 222, 224, 225, 227, 228, 229, 231, 233, 234, 236, 237, 238, 240, 241], "excluded_lines": [], "start_line": 146, "executed_branches": [], "missing_branches": [[165, 167], [165, 179], [168, 169], [168, 172], [183, 184], [183, 189], [192, 193], [192, 233], [194, 195], [194, 198], [202, 203], [202, 206], [206, 207], [206, 211], [211, 212], [211, 218], [212, 213], [212, 218], [220, 221], [220, 224], [227, 228], [227, 231], [233, 234], [233, 236]]}, "fetch_attachments_and_enqueue": {"executed_lines": [271, 285, 286, 287, 288, 290, 291, 292, 295, 297, 299, 300, 301, 303, 304, 305, 308, 309, 310, 311, 313, 314, 316, 317], "summary": {"covered_lines": 24, "num_statements": 24, "percent_covered": 97.22222222222223, "percent_covered_display": "97.22", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 12, "num_partial_branches": 1, "covered_branches": 11, "missing_branches": 1, "percent_branches_covered": 91.66666666666667, "percent_branches_covered_display": "91.67"}, "missing_lines": [], "excluded_lines": [], "start_line": 244, "executed_branches": [[286, 287], [286, 317], [287, 288], [287, 290], [291, 292], [291, 295], [299, 300], [299, 303], [308, 309], [308, 311], [311, 313]], "missing_branches": [[311, 316]]}, "email_already_has_label": {"executed_lines": [325, 327, 330, 331, 332, 333, 334, 335, 336, 337], "summary": {"covered_lines": 10, "num_statements": 11, "percent_covered": 82.3529411764706, "percent_covered_display": "82.35", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 90.9090909090909, "percent_statements_covered_display": "90.91", "num_branches": 6, "num_partial_branches": 2, "covered_branches": 4, "missing_branches": 2, "percent_branches_covered": 66.66666666666667, "percent_branches_covered_display": "66.67"}, "missing_lines": [328], "excluded_lines": [], "start_line": 320, "executed_branches": [[327, 330], [331, 332], [333, 334], [333, 337]], "missing_branches": [[327, 328], [331, 337]]}, "mark_as_processed_with_star": {"executed_lines": [342, 343, 344, 345, 346], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 340, "executed_branches": [], "missing_branches": []}, "mark_as_processed_with_label": {"executed_lines": [351, 352, 353, 354, 355], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 349, "executed_branches": [], "missing_branches": []}, "find_all_mail_folder": {"executed_lines": [364, 371, 372, 373, 374, 376, 377, 381], "summary": {"covered_lines": 8, "num_statements": 11, "percent_covered": 68.42105263157895, "percent_covered_display": "68.42", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 72.72727272727273, "percent_statements_covered_display": "72.73", "num_branches": 8, "num_partial_branches": 1, "covered_branches": 5, "missing_branches": 3, "percent_branches_covered": 62.5, "percent_branches_covered_display": "62.50"}, "missing_lines": [378, 379, 380], "excluded_lines": [], "start_line": 358, "executed_branches": [[371, 372], [371, 376], [373, 371], [373, 374], [377, 381]], "missing_branches": [[377, 378], [379, 380], [379, 381]]}, "get_capabilities": {"executed_lines": [386, 387, 388, 389, 390], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 384, "executed_branches": [[387, 388], [387, 390]], "missing_branches": []}, "find_all_mail_xlist": {"executed_lines": [398, 399, 400, 402, 403, 404, 405, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416], "summary": {"covered_lines": 17, "num_statements": 18, "percent_covered": 88.46153846153847, "percent_covered_display": "88.46", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 94.44444444444444, "percent_statements_covered_display": "94.44", "num_branches": 8, "num_partial_branches": 2, "covered_branches": 6, "missing_branches": 2, "percent_branches_covered": 75.0, "percent_branches_covered_display": "75.00"}, "missing_lines": [406], "excluded_lines": [], "start_line": 393, "executed_branches": [[405, 407], [408, 409], [408, 414], [410, 411], [414, 403], [414, 415]], "missing_branches": [[405, 406], [410, 414]]}, "": {"executed_lines": [2, 3, 4, 5, 6, 7, 8, 10, 11, 13, 14, 15, 17, 20, 22, 23, 26, 29, 40, 46, 60, 66, 78, 79, 120, 146, 244, 320, 340, 349, 358, 384, 393], "summary": {"covered_lines": 33, "num_statements": 33, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [2, 3, 4, 5, 6, 7, 8, 10, 11, 13, 14, 15, 17, 20, 22, 23, 26, 29, 40, 46, 48, 49, 50, 51, 52, 53, 57, 60, 62, 63, 66, 68, 69, 70, 71, 72, 73, 74, 75, 78, 79, 120, 130, 131, 132, 134, 135, 146, 244, 271, 285, 286, 287, 288, 290, 291, 292, 295, 297, 299, 300, 301, 303, 304, 305, 308, 309, 310, 311, 313, 314, 316, 317, 320, 325, 327, 330, 331, 332, 333, 334, 335, 336, 337, 340, 342, 343, 344, 345, 346, 349, 351, 352, 353, 354, 355, 358, 364, 371, 372, 373, 374, 376, 377, 381, 384, 386, 387, 388, 389, 390, 393, 398, 399, 400, 402, 403, 404, 405, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416], "summary": {"covered_lines": 129, "num_statements": 215, "percent_covered": 57.491289198606275, "percent_covered_display": "57.49", "missing_lines": 86, "excluded_lines": 0, "percent_statements_covered": 60.0, "percent_statements_covered_display": "60.00", "num_branches": 72, "num_partial_branches": 6, "covered_branches": 36, "missing_branches": 36, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50.00"}, "missing_lines": [31, 32, 33, 34, 35, 36, 37, 42, 43, 54, 55, 56, 85, 86, 87, 89, 90, 93, 104, 114, 117, 157, 158, 160, 161, 162, 164, 165, 167, 168, 169, 170, 172, 173, 175, 176, 179, 180, 181, 183, 184, 185, 186, 187, 189, 190, 192, 193, 194, 195, 196, 198, 199, 200, 202, 203, 204, 206, 207, 208, 211, 212, 213, 214, 218, 220, 221, 222, 224, 225, 227, 228, 229, 231, 233, 234, 236, 237, 238, 240, 241, 328, 378, 379, 380, 406], "excluded_lines": [], "start_line": 1, "executed_branches": [[48, 49], [48, 57], [70, 71], [70, 75], [73, 70], [73, 74], [130, 131], [130, 134], [286, 287], [286, 317], [287, 288], [287, 290], [291, 292], [291, 295], [299, 300], [299, 303], [308, 309], [308, 311], [311, 313], [327, 330], [331, 332], [333, 334], [333, 337], [371, 372], [371, 376], [373, 371], [373, 374], [377, 381], [387, 388], [387, 390], [405, 407], [408, 409], [408, 414], [410, 411], [414, 403], [414, 415]], "missing_branches": [[32, 33], [32, 36], [85, 86], [85, 89], [165, 167], [165, 179], [168, 169], [168, 172], [183, 184], [183, 189], [192, 193], [192, 233], [194, 195], [194, 198], [202, 203], [202, 206], [206, 207], [206, 211], [211, 212], [211, 218], [212, 213], [212, 218], [220, 221], [220, 224], [227, 228], [227, 231], [233, 234], [233, 236], [311, 316], [327, 328], [331, 337], [377, 378], [379, 380], [379, 381], [405, 406], [410, 414]]}}}, "app/tasks/monitor_stalled_steps.py": {"executed_lines": [8, 9, 11, 12, 13, 15, 18, 19, 34, 35, 36, 38, 39, 45, 47, 49, 50, 51], "summary": {"covered_lines": 18, "num_statements": 18, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "executed_branches": [[38, 39], [38, 45]], "missing_branches": [], "functions": {"monitor_stalled_steps": {"executed_lines": [34, 35, 36, 38, 39, 45, 47, 49, 50, 51], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 19, "executed_branches": [[38, 39], [38, 45]], "missing_branches": []}, "": {"executed_lines": [8, 9, 11, 12, 13, 15, 18, 19], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [8, 9, 11, 12, 13, 15, 18, 19, 34, 35, 36, 38, 39, 45, 47, 49, 50, 51], "summary": {"covered_lines": 18, "num_statements": 18, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [[38, 39], [38, 45]], "missing_branches": []}}}, "app/tasks/process_document.py": {"executed_lines": [3, 4, 5, 6, 7, 9, 10, 12, 13, 14, 15, 16, 17, 20, 21, 23, 26, 27, 51, 52, 53, 60, 72, 73, 74, 75, 81, 82, 83, 84, 85, 88, 91, 92, 100, 103, 104, 105, 106, 107, 108, 109, 110, 117, 121, 127, 128, 134, 135, 136, 145, 146, 147, 149, 150, 164, 177, 185, 186, 187, 193, 194, 202, 203, 204, 205, 206, 215, 216, 217, 221, 223, 224, 227, 228, 230, 231, 238, 239, 248, 251, 252, 261, 262, 263, 265, 266, 274, 275, 284, 285, 288, 292, 293, 294, 302, 309, 316, 317, 320, 321, 343, 344, 351, 352, 353, 354, 355, 356, 357, 358, 380, 381, 382, 391, 392, 399, 400, 401, 402, 403, 405, 406, 415, 424, 425, 432, 433, 440, 441, 450, 458, 465, 466], "summary": {"covered_lines": 134, "num_statements": 149, "percent_covered": 88.10810810810811, "percent_covered_display": "88.11", "missing_lines": 15, "excluded_lines": 0, "percent_statements_covered": 89.93288590604027, "percent_statements_covered_display": "89.93", "num_branches": 36, "num_partial_branches": 7, "covered_branches": 29, "missing_branches": 7, "percent_branches_covered": 80.55555555555556, "percent_branches_covered_display": "80.56"}, "missing_lines": [61, 62, 69, 77, 78, 86, 322, 323, 330, 337, 341, 359, 360, 361, 369], "excluded_lines": [], "executed_branches": [[60, 72], [72, 73], [81, 82], [81, 83], [85, 88], [91, 92], [103, 104], [103, 121], [105, 106], [105, 109], [127, 128], [127, 134], [134, 135], [134, 185], [149, 150], [186, 187], [221, 223], [221, 251], [292, 293], [292, 320], [321, 343], [355, 356], [355, 380], [356, 355], [356, 357], [380, 381], [380, 440], [402, 403], [402, 405]], "missing_branches": [[60, 61], [72, 77], [85, 86], [91, 100], [149, 164], [186, 193], [321, 322]], "functions": {"process_document": {"executed_lines": [51, 52, 53, 60, 72, 73, 74, 75, 81, 82, 83, 84, 85, 88, 91, 92, 100, 103, 104, 105, 106, 107, 108, 109, 110, 117, 121, 127, 128, 134, 135, 136, 145, 146, 147, 149, 150, 164, 177, 185, 186, 187, 193, 194, 202, 203, 204, 205, 206, 215, 216, 217, 221, 223, 224, 227, 228, 230, 231, 238, 239, 248, 251, 252, 261, 262, 263, 265, 266, 274, 275, 284, 285, 288, 292, 293, 294, 302, 309, 316, 317, 320, 321, 343, 344, 351, 352, 353, 354, 355, 356, 357, 358, 380, 381, 382, 391, 392, 399, 400, 401, 402, 403, 405, 406, 415, 424, 425, 432, 433, 440, 441, 450, 458, 465, 466], "summary": {"covered_lines": 116, "num_statements": 131, "percent_covered": 86.82634730538922, "percent_covered_display": "86.83", "missing_lines": 15, "excluded_lines": 0, "percent_statements_covered": 88.54961832061069, "percent_statements_covered_display": "88.55", "num_branches": 36, "num_partial_branches": 7, "covered_branches": 29, "missing_branches": 7, "percent_branches_covered": 80.55555555555556, "percent_branches_covered_display": "80.56"}, "missing_lines": [61, 62, 69, 77, 78, 86, 322, 323, 330, 337, 341, 359, 360, 361, 369], "excluded_lines": [], "start_line": 27, "executed_branches": [[60, 72], [72, 73], [81, 82], [81, 83], [85, 88], [91, 92], [103, 104], [103, 121], [105, 106], [105, 109], [127, 128], [127, 134], [134, 135], [134, 185], [149, 150], [186, 187], [221, 223], [221, 251], [292, 293], [292, 320], [321, 343], [355, 356], [355, 380], [356, 355], [356, 357], [380, 381], [380, 440], [402, 403], [402, 405]], "missing_branches": [[60, 61], [72, 77], [85, 86], [91, 100], [149, 164], [186, 193], [321, 322]]}, "": {"executed_lines": [3, 4, 5, 6, 7, 9, 10, 12, 13, 14, 15, 16, 17, 20, 21, 23, 26, 27], "summary": {"covered_lines": 18, "num_statements": 18, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [3, 4, 5, 6, 7, 9, 10, 12, 13, 14, 15, 16, 17, 20, 21, 23, 26, 27, 51, 52, 53, 60, 72, 73, 74, 75, 81, 82, 83, 84, 85, 88, 91, 92, 100, 103, 104, 105, 106, 107, 108, 109, 110, 117, 121, 127, 128, 134, 135, 136, 145, 146, 147, 149, 150, 164, 177, 185, 186, 187, 193, 194, 202, 203, 204, 205, 206, 215, 216, 217, 221, 223, 224, 227, 228, 230, 231, 238, 239, 248, 251, 252, 261, 262, 263, 265, 266, 274, 275, 284, 285, 288, 292, 293, 294, 302, 309, 316, 317, 320, 321, 343, 344, 351, 352, 353, 354, 355, 356, 357, 358, 380, 381, 382, 391, 392, 399, 400, 401, 402, 403, 405, 406, 415, 424, 425, 432, 433, 440, 441, 450, 458, 465, 466], "summary": {"covered_lines": 134, "num_statements": 149, "percent_covered": 88.10810810810811, "percent_covered_display": "88.11", "missing_lines": 15, "excluded_lines": 0, "percent_statements_covered": 89.93288590604027, "percent_statements_covered_display": "89.93", "num_branches": 36, "num_partial_branches": 7, "covered_branches": 29, "missing_branches": 7, "percent_branches_covered": 80.55555555555556, "percent_branches_covered_display": "80.56"}, "missing_lines": [61, 62, 69, 77, 78, 86, 322, 323, 330, 337, 341, 359, 360, 361, 369], "excluded_lines": [], "start_line": 1, "executed_branches": [[60, 72], [72, 73], [81, 82], [81, 83], [85, 88], [91, 92], [103, 104], [103, 121], [105, 106], [105, 109], [127, 128], [127, 134], [134, 135], [134, 185], [149, 150], [186, 187], [221, 223], [221, 251], [292, 293], [292, 320], [321, 343], [355, 356], [355, 380], [356, 355], [356, 357], [380, 381], [380, 440], [402, 403], [402, 405]], "missing_branches": [[60, 61], [72, 77], [85, 86], [91, 100], [149, 164], [186, 193], [321, 322]]}}}, "app/tasks/process_with_azure_document_intelligence.py": {"executed_lines": [1, 2, 4, 5, 6, 7, 8, 10, 11, 12, 13, 14, 16, 19, 20, 23, 32, 38, 40, 41, 42, 43, 44, 45, 46, 49, 61, 62, 63, 65, 66, 67, 69, 70, 71, 72, 73, 75, 77, 79, 81, 84, 85, 102, 103, 110, 111, 112, 113, 116, 117, 118, 121, 122, 130, 134, 135, 136, 137, 138, 139, 147, 148, 149, 153, 161, 162, 171, 172, 175, 176, 179, 182, 183, 184, 185, 186, 189, 190, 192, 202, 204, 213, 214, 215, 216, 224], "summary": {"covered_lines": 87, "num_statements": 93, "percent_covered": 93.69369369369369, "percent_covered_display": "93.69", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 93.54838709677419, "percent_statements_covered_display": "93.55", "num_branches": 18, "num_partial_branches": 1, "covered_branches": 17, "missing_branches": 1, "percent_branches_covered": 94.44444444444444, "percent_branches_covered_display": "94.44"}, "missing_lines": [24, 25, 26, 27, 28, 29], "excluded_lines": [], "executed_branches": [[65, 66], [65, 69], [69, 70], [69, 81], [70, 71], [70, 79], [72, 73], [72, 77], [112, 113], [112, 116], [117, 118], [117, 134], [134, 135], [136, 137], [136, 148], [148, 149], [148, 153]], "missing_branches": [[134, 153]], "functions": {"get_pdf_page_count": {"executed_lines": [40, 41, 42, 43, 44, 45, 46], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 38, "executed_branches": [], "missing_branches": []}, "check_page_rotation": {"executed_lines": [61, 62, 63, 65, 66, 67, 69, 70, 71, 72, 73, 75, 77, 79, 81], "summary": {"covered_lines": 15, "num_statements": 15, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 8, "num_partial_branches": 0, "covered_branches": 8, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 49, "executed_branches": [[65, 66], [65, 69], [69, 70], [69, 81], [70, 71], [70, 79], [72, 73], [72, 77]], "missing_branches": []}, "process_with_azure_document_intelligence": {"executed_lines": [102, 103, 110, 111, 112, 113, 116, 117, 118, 121, 122, 130, 134, 135, 136, 137, 138, 139, 147, 148, 149, 153, 161, 162, 171, 172, 175, 176, 179, 182, 183, 184, 185, 186, 189, 190, 192, 202, 204, 213, 214, 215, 216, 224], "summary": {"covered_lines": 44, "num_statements": 44, "percent_covered": 98.14814814814815, "percent_covered_display": "98.15", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 10, "num_partial_branches": 1, "covered_branches": 9, "missing_branches": 1, "percent_branches_covered": 90.0, "percent_branches_covered_display": "90.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 85, "executed_branches": [[112, 113], [112, 116], [117, 118], [117, 134], [134, 135], [136, 137], [136, 148], [148, 149], [148, 153]], "missing_branches": [[134, 153]]}, "": {"executed_lines": [1, 2, 4, 5, 6, 7, 8, 10, 11, 12, 13, 14, 16, 19, 20, 23, 32, 38, 49, 84, 85], "summary": {"covered_lines": 21, "num_statements": 27, "percent_covered": 77.77777777777777, "percent_covered_display": "77.78", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 77.77777777777777, "percent_statements_covered_display": "77.78", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [24, 25, 26, 27, 28, 29], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [1, 2, 4, 5, 6, 7, 8, 10, 11, 12, 13, 14, 16, 19, 20, 23, 32, 38, 40, 41, 42, 43, 44, 45, 46, 49, 61, 62, 63, 65, 66, 67, 69, 70, 71, 72, 73, 75, 77, 79, 81, 84, 85, 102, 103, 110, 111, 112, 113, 116, 117, 118, 121, 122, 130, 134, 135, 136, 137, 138, 139, 147, 148, 149, 153, 161, 162, 171, 172, 175, 176, 179, 182, 183, 184, 185, 186, 189, 190, 192, 202, 204, 213, 214, 215, 216, 224], "summary": {"covered_lines": 87, "num_statements": 93, "percent_covered": 93.69369369369369, "percent_covered_display": "93.69", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 93.54838709677419, "percent_statements_covered_display": "93.55", "num_branches": 18, "num_partial_branches": 1, "covered_branches": 17, "missing_branches": 1, "percent_branches_covered": 94.44444444444444, "percent_branches_covered_display": "94.44"}, "missing_lines": [24, 25, 26, 27, 28, 29], "excluded_lines": [], "start_line": 1, "executed_branches": [[65, 66], [65, 69], [69, 70], [69, 81], [70, 71], [70, 79], [72, 73], [72, 77], [112, 113], [112, 116], [117, 118], [117, 134], [134, 135], [136, 137], [136, 148], [148, 149], [148, 153]], "missing_branches": [[134, 153]]}}}, "app/tasks/refine_text_with_gpt.py": {"executed_lines": [3, 5, 8, 9, 10, 11, 13, 16, 19, 20, 22, 23, 24, 26, 27, 29, 43, 45, 46, 55, 57, 59, 60, 62, 63, 64, 65, 72], "summary": {"covered_lines": 28, "num_statements": 28, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": [], "functions": {"refine_text_with_gpt": {"executed_lines": [22, 23, 24, 26, 27, 29, 43, 45, 46, 55, 57, 59, 60, 62, 63, 64, 65, 72], "summary": {"covered_lines": 18, "num_statements": 18, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 20, "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [3, 5, 8, 9, 10, 11, 13, 16, 19, 20], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [3, 5, 8, 9, 10, 11, 13, 16, 19, 20, 22, 23, 24, 26, 27, 29, 43, 45, 46, 55, 57, 59, 60, 62, 63, 64, 65, 72], "summary": {"covered_lines": 28, "num_statements": 28, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}}, "app/tasks/retry_config.py": {"executed_lines": [3, 6, 7, 8, 9], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": [], "functions": {"": {"executed_lines": [3, 6, 7, 8, 9], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"BaseTaskWithRetry": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 6, "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [3, 6, 7, 8, 9], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}}, "app/tasks/rotate_pdf_pages.py": {"executed_lines": [1, 2, 3, 5, 7, 8, 9, 10, 11, 13, 16, 27, 28, 32, 33, 36, 37, 39, 40, 41, 45, 47, 48, 49, 52, 53, 63, 64, 65, 72, 73, 74, 77, 78, 79, 86, 87, 90, 91, 92, 93, 97, 98, 101, 108, 109, 111, 112, 119, 122, 123, 124, 127, 128, 131, 132, 133, 135, 137, 138, 142, 149, 152, 153, 155, 156, 166, 168, 177, 184, 185, 186, 195, 196], "summary": {"covered_lines": 74, "num_statements": 79, "percent_covered": 91.2621359223301, "percent_covered_display": "91.26", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 93.67088607594937, "percent_statements_covered_display": "93.67", "num_branches": 24, "num_partial_branches": 4, "covered_branches": 20, "missing_branches": 4, "percent_branches_covered": 83.33333333333333, "percent_branches_covered_display": "83.33"}, "missing_lines": [29, 94, 95, 144, 160], "excluded_lines": [], "executed_branches": [[28, 32], [32, 33], [32, 36], [36, 37], [36, 45], [37, 36], [37, 39], [73, 74], [73, 77], [77, 78], [77, 90], [91, 92], [91, 97], [97, 98], [97, 111], [127, 128], [127, 152], [131, 132], [135, 137], [155, 156]], "missing_branches": [[28, 29], [131, 149], [135, 144], [155, 160]], "functions": {"determine_rotation_angle": {"executed_lines": [27, 28, 32, 33, 36, 37, 39, 40, 41, 45, 47, 48, 49], "summary": {"covered_lines": 13, "num_statements": 14, "percent_covered": 90.9090909090909, "percent_covered_display": "90.91", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 92.85714285714286, "percent_statements_covered_display": "92.86", "num_branches": 8, "num_partial_branches": 1, "covered_branches": 7, "missing_branches": 1, "percent_branches_covered": 87.5, "percent_branches_covered_display": "87.50"}, "missing_lines": [29], "excluded_lines": [], "start_line": 16, "executed_branches": [[28, 32], [32, 33], [32, 36], [36, 37], [36, 45], [37, 36], [37, 39]], "missing_branches": [[28, 29]]}, "rotate_pdf_pages": {"executed_lines": [63, 64, 65, 72, 73, 74, 77, 78, 79, 86, 87, 90, 91, 92, 93, 97, 98, 101, 108, 109, 111, 112, 119, 122, 123, 124, 127, 128, 131, 132, 133, 135, 137, 138, 142, 149, 152, 153, 155, 156, 166, 168, 177, 184, 185, 186, 195, 196], "summary": {"covered_lines": 48, "num_statements": 52, "percent_covered": 89.70588235294117, "percent_covered_display": "89.71", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 92.3076923076923, "percent_statements_covered_display": "92.31", "num_branches": 16, "num_partial_branches": 3, "covered_branches": 13, "missing_branches": 3, "percent_branches_covered": 81.25, "percent_branches_covered_display": "81.25"}, "missing_lines": [94, 95, 144, 160], "excluded_lines": [], "start_line": 53, "executed_branches": [[73, 74], [73, 77], [77, 78], [77, 90], [91, 92], [91, 97], [97, 98], [97, 111], [127, 128], [127, 152], [131, 132], [135, 137], [155, 156]], "missing_branches": [[131, 149], [135, 144], [155, 160]]}, "": {"executed_lines": [1, 2, 3, 5, 7, 8, 9, 10, 11, 13, 16, 52, 53], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [1, 2, 3, 5, 7, 8, 9, 10, 11, 13, 16, 27, 28, 32, 33, 36, 37, 39, 40, 41, 45, 47, 48, 49, 52, 53, 63, 64, 65, 72, 73, 74, 77, 78, 79, 86, 87, 90, 91, 92, 93, 97, 98, 101, 108, 109, 111, 112, 119, 122, 123, 124, 127, 128, 131, 132, 133, 135, 137, 138, 142, 149, 152, 153, 155, 156, 166, 168, 177, 184, 185, 186, 195, 196], "summary": {"covered_lines": 74, "num_statements": 79, "percent_covered": 91.2621359223301, "percent_covered_display": "91.26", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 93.67088607594937, "percent_statements_covered_display": "93.67", "num_branches": 24, "num_partial_branches": 4, "covered_branches": 20, "missing_branches": 4, "percent_branches_covered": 83.33333333333333, "percent_branches_covered_display": "83.33"}, "missing_lines": [29, 94, 95, 144, 160], "excluded_lines": [], "start_line": 1, "executed_branches": [[28, 32], [32, 33], [32, 36], [36, 37], [36, 45], [37, 36], [37, 39], [73, 74], [73, 77], [77, 78], [77, 90], [91, 92], [91, 97], [97, 98], [97, 111], [127, 128], [127, 152], [131, 132], [135, 137], [155, 156]], "missing_branches": [[28, 29], [131, 149], [135, 144], [155, 160]]}}}, "app/tasks/send_to_all.py": {"executed_lines": [3, 4, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 24, 27, 28, 31, 32, 35, 36, 39, 41, 42, 53, 54, 57, 58, 61, 62, 65, 66, 71, 72, 75, 79, 108, 109, 119, 121, 126, 127, 136, 148, 151, 205, 206, 207, 208, 209, 215, 216, 217, 220, 221, 222, 223, 225, 226, 227, 233, 234, 235, 238, 239, 240, 241, 242, 245, 246, 247, 248, 250, 251, 253], "summary": {"covered_lines": 80, "num_statements": 102, "percent_covered": 73.77049180327869, "percent_covered_display": "73.77", "missing_lines": 22, "excluded_lines": 0, "percent_statements_covered": 78.43137254901961, "percent_statements_covered_display": "78.43", "num_branches": 20, "num_partial_branches": 4, "covered_branches": 10, "missing_branches": 10, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50.00"}, "missing_lines": [50, 76, 85, 87, 100, 101, 102, 103, 105, 122, 123, 124, 137, 140, 145, 146, 210, 211, 212, 228, 229, 230], "excluded_lines": [], "executed_branches": [[41, 42], [121, 126], [136, 148], [206, 207], [216, 217], [216, 250], [221, 222], [221, 225], [233, 216], [233, 234]], "missing_branches": [[41, 50], [101, 102], [101, 105], [102, 101], [102, 103], [121, 122], [136, 137], [145, 146], [145, 148], [206, 215]], "functions": {"_should_upload_to_dropbox": {"executed_lines": [28], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 27, "executed_branches": [], "missing_branches": []}, "_should_upload_to_nextcloud": {"executed_lines": [32], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 31, "executed_branches": [], "missing_branches": []}, "_should_upload_to_paperless": {"executed_lines": [36], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 35, "executed_branches": [], "missing_branches": []}, "_should_upload_to_google_drive": {"executed_lines": [41, 42], "summary": {"covered_lines": 2, "num_statements": 3, "percent_covered": 60.0, "percent_covered_display": "60.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 66.66666666666667, "percent_statements_covered_display": "66.67", "num_branches": 2, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 1, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50.00"}, "missing_lines": [50], "excluded_lines": [], "start_line": 39, "executed_branches": [[41, 42]], "missing_branches": [[41, 50]]}, "_should_upload_to_webdav": {"executed_lines": [54], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 53, "executed_branches": [], "missing_branches": []}, "_should_upload_to_ftp": {"executed_lines": [58], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 57, "executed_branches": [], "missing_branches": []}, "_should_upload_to_sftp": {"executed_lines": [62], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 61, "executed_branches": [], "missing_branches": []}, "_should_upload_to_email": {"executed_lines": [66], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 65, "executed_branches": [], "missing_branches": []}, "_should_upload_to_onedrive": {"executed_lines": [72], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 71, "executed_branches": [], "missing_branches": []}, "_should_upload_to_s3": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [76], "excluded_lines": [], "start_line": 75, "executed_branches": [], "missing_branches": []}, "get_configured_services_from_validator": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 7, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 7, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 4, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0.00"}, "missing_lines": [85, 87, 100, 101, 102, 103, 105], "excluded_lines": [], "start_line": 79, "executed_branches": [], "missing_branches": [[101, 102], [101, 105], [102, 101], [102, 103]]}, "send_to_all_destinations": {"executed_lines": [119, 121, 126, 127, 136, 148, 151, 205, 206, 207, 208, 209, 215, 216, 217, 220, 221, 222, 223, 225, 226, 227, 233, 234, 235, 238, 239, 240, 241, 242, 245, 246, 247, 248, 250, 251, 253], "summary": {"covered_lines": 37, "num_statements": 50, "percent_covered": 71.875, "percent_covered_display": "71.88", "missing_lines": 13, "excluded_lines": 0, "percent_statements_covered": 74.0, "percent_statements_covered_display": "74.00", "num_branches": 14, "num_partial_branches": 3, "covered_branches": 9, "missing_branches": 5, "percent_branches_covered": 64.28571428571429, "percent_branches_covered_display": "64.29"}, "missing_lines": [122, 123, 124, 137, 140, 145, 146, 210, 211, 212, 228, 229, 230], "excluded_lines": [], "start_line": 109, "executed_branches": [[121, 126], [136, 148], [206, 207], [216, 217], [216, 250], [221, 222], [221, 225], [233, 216], [233, 234]], "missing_branches": [[121, 122], [136, 137], [145, 146], [145, 148], [206, 215]]}, "": {"executed_lines": [3, 4, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 24, 27, 31, 35, 39, 53, 57, 61, 65, 71, 75, 79, 108, 109], "summary": {"covered_lines": 33, "num_statements": 33, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [3, 4, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 24, 27, 28, 31, 32, 35, 36, 39, 41, 42, 53, 54, 57, 58, 61, 62, 65, 66, 71, 72, 75, 79, 108, 109, 119, 121, 126, 127, 136, 148, 151, 205, 206, 207, 208, 209, 215, 216, 217, 220, 221, 222, 223, 225, 226, 227, 233, 234, 235, 238, 239, 240, 241, 242, 245, 246, 247, 248, 250, 251, 253], "summary": {"covered_lines": 80, "num_statements": 102, "percent_covered": 73.77049180327869, "percent_covered_display": "73.77", "missing_lines": 22, "excluded_lines": 0, "percent_statements_covered": 78.43137254901961, "percent_statements_covered_display": "78.43", "num_branches": 20, "num_partial_branches": 4, "covered_branches": 10, "missing_branches": 10, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50.00"}, "missing_lines": [50, 76, 85, 87, 100, 101, 102, 103, 105, 122, 123, 124, 137, 140, 145, 146, 210, 211, 212, 228, 229, 230], "excluded_lines": [], "start_line": 1, "executed_branches": [[41, 42], [121, 126], [136, 148], [206, 207], [216, 217], [216, 250], [221, 222], [221, 225], [233, 216], [233, 234]], "missing_branches": [[41, 50], [101, 102], [101, 105], [102, 101], [102, 103], [121, 122], [136, 137], [145, 146], [145, 148], [206, 215]]}}}, "app/tasks/upload_to_dropbox.py": {"executed_lines": [3, 4, 6, 7, 8, 10, 11, 12, 13, 14, 16, 19, 21, 23, 24, 26, 27, 29, 30, 32, 33, 34, 39, 43, 44, 65, 105, 106], "summary": {"covered_lines": 28, "num_statements": 119, "percent_covered": 22.448979591836736, "percent_covered_display": "22.45", "missing_lines": 91, "excluded_lines": 0, "percent_statements_covered": 23.529411764705884, "percent_statements_covered_display": "23.53", "num_branches": 28, "num_partial_branches": 5, "covered_branches": 5, "missing_branches": 23, "percent_branches_covered": 17.857142857142858, "percent_branches_covered_display": "17.86"}, "missing_lines": [36, 46, 47, 48, 55, 57, 58, 60, 61, 62, 76, 77, 78, 81, 82, 84, 85, 88, 89, 92, 93, 94, 96, 97, 98, 100, 101, 102, 114, 115, 116, 124, 125, 126, 127, 128, 131, 139, 140, 141, 143, 145, 147, 150, 151, 154, 155, 156, 157, 158, 159, 160, 161, 164, 165, 168, 171, 172, 173, 175, 176, 177, 178, 179, 182, 183, 186, 187, 189, 196, 197, 200, 201, 203, 204, 207, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223], "excluded_lines": [], "executed_branches": [[23, 24], [26, 27], [29, 30], [32, 33], [43, 44]], "missing_branches": [[23, 26], [26, 29], [29, 32], [32, 36], [43, 46], [57, 58], [57, 60], [81, 82], [81, 84], [84, 85], [84, 88], [124, 125], [124, 131], [131, 139], [131, 143], [159, 160], [159, 161], [176, 177], [176, 200], [186, 187], [186, 203], [187, 189], [187, 196]], "functions": {"_validate_dropbox_settings": {"executed_lines": [21, 23, 24, 26, 27, 29, 30, 32, 33, 34], "summary": {"covered_lines": 10, "num_statements": 11, "percent_covered": 73.6842105263158, "percent_covered_display": "73.68", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 90.9090909090909, "percent_statements_covered_display": "90.91", "num_branches": 8, "num_partial_branches": 4, "covered_branches": 4, "missing_branches": 4, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50.00"}, "missing_lines": [36], "excluded_lines": [], "start_line": 19, "executed_branches": [[23, 24], [26, 27], [29, 30], [32, 33]], "missing_branches": [[23, 26], [26, 29], [29, 32], [32, 36]]}, "get_dropbox_access_token": {"executed_lines": [43, 44], "summary": {"covered_lines": 2, "num_statements": 11, "percent_covered": 20.0, "percent_covered_display": "20.00", "missing_lines": 9, "excluded_lines": 0, "percent_statements_covered": 18.181818181818183, "percent_statements_covered_display": "18.18", "num_branches": 4, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 3, "percent_branches_covered": 25.0, "percent_branches_covered_display": "25.00"}, "missing_lines": [46, 47, 48, 55, 57, 58, 60, 61, 62], "excluded_lines": [], "start_line": 39, "executed_branches": [[43, 44]], "missing_branches": [[43, 46], [57, 58], [57, 60]]}, "get_dropbox_client": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 18, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 18, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 4, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0.00"}, "missing_lines": [76, 77, 78, 81, 82, 84, 85, 88, 89, 92, 93, 94, 96, 97, 98, 100, 101, 102], "excluded_lines": [], "start_line": 65, "executed_branches": [], "missing_branches": [[81, 82], [81, 84], [84, 85], [84, 88]]}, "upload_to_dropbox": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 56, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 56, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00", "num_branches": 10, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 10, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0.00"}, "missing_lines": [114, 115, 116, 124, 125, 126, 127, 128, 131, 139, 140, 141, 143, 145, 147, 150, 151, 154, 164, 165, 168, 171, 172, 173, 175, 176, 177, 178, 179, 182, 183, 186, 187, 189, 196, 197, 200, 201, 203, 204, 207, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223], "excluded_lines": [], "start_line": 106, "executed_branches": [], "missing_branches": [[124, 125], [124, 131], [131, 139], [131, 143], [176, 177], [176, 200], [186, 187], [186, 203], [187, 189], [187, 196]]}, "upload_to_dropbox.check_exists_in_dropbox": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 7, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 7, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 2, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0.00"}, "missing_lines": [155, 156, 157, 158, 159, 160, 161], "excluded_lines": [], "start_line": 154, "executed_branches": [], "missing_branches": [[159, 160], [159, 161]]}, "": {"executed_lines": [3, 4, 6, 7, 8, 10, 11, 12, 13, 14, 16, 19, 39, 65, 105, 106], "summary": {"covered_lines": 16, "num_statements": 16, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [3, 4, 6, 7, 8, 10, 11, 12, 13, 14, 16, 19, 21, 23, 24, 26, 27, 29, 30, 32, 33, 34, 39, 43, 44, 65, 105, 106], "summary": {"covered_lines": 28, "num_statements": 119, "percent_covered": 22.448979591836736, "percent_covered_display": "22.45", "missing_lines": 91, "excluded_lines": 0, "percent_statements_covered": 23.529411764705884, "percent_statements_covered_display": "23.53", "num_branches": 28, "num_partial_branches": 5, "covered_branches": 5, "missing_branches": 23, "percent_branches_covered": 17.857142857142858, "percent_branches_covered_display": "17.86"}, "missing_lines": [36, 46, 47, 48, 55, 57, 58, 60, 61, 62, 76, 77, 78, 81, 82, 84, 85, 88, 89, 92, 93, 94, 96, 97, 98, 100, 101, 102, 114, 115, 116, 124, 125, 126, 127, 128, 131, 139, 140, 141, 143, 145, 147, 150, 151, 154, 155, 156, 157, 158, 159, 160, 161, 164, 165, 168, 171, 172, 173, 175, 176, 177, 178, 179, 182, 183, 186, 187, 189, 196, 197, 200, 201, 203, 204, 207, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223], "excluded_lines": [], "start_line": 1, "executed_branches": [[23, 24], [26, 27], [29, 30], [32, 33], [43, 44]], "missing_branches": [[23, 26], [26, 29], [29, 32], [32, 36], [43, 46], [57, 58], [57, 60], [81, 82], [81, 84], [84, 85], [84, 88], [124, 125], [124, 131], [131, 139], [131, 143], [159, 160], [159, 161], [176, 177], [176, 200], [186, 187], [186, 203], [187, 189], [187, 196]]}}}, "app/tasks/upload_to_email.py": {"executed_lines": [3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 14, 16, 17, 18, 19, 21, 24, 59, 86, 122, 135, 166, 167, 190, 191, 192, 196, 203, 206, 213, 219, 220, 226, 229, 230, 231, 233, 235, 236, 237, 238, 241, 242, 245, 248, 251, 264, 265, 268, 269, 270, 271, 274, 275, 280, 281, 283], "summary": {"covered_lines": 57, "num_statements": 158, "percent_covered": 32.97872340425532, "percent_covered_display": "32.98", "missing_lines": 101, "excluded_lines": 0, "percent_statements_covered": 36.075949367088604, "percent_statements_covered_display": "36.08", "num_branches": 30, "num_partial_branches": 5, "covered_branches": 5, "missing_branches": 25, "percent_branches_covered": 16.666666666666668, "percent_branches_covered_display": "16.67"}, "missing_lines": [31, 32, 33, 34, 37, 38, 39, 40, 41, 42, 45, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 67, 70, 71, 72, 73, 74, 75, 76, 77, 78, 83, 88, 90, 91, 92, 95, 96, 98, 99, 101, 102, 103, 106, 107, 108, 109, 110, 111, 112, 114, 115, 117, 118, 119, 124, 125, 126, 127, 128, 129, 130, 131, 132, 137, 139, 142, 144, 145, 148, 149, 152, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 197, 198, 199, 200, 207, 208, 209, 210, 221, 222, 223, 276, 277, 278, 292, 293, 294, 295, 296], "excluded_lines": [], "executed_branches": [[196, 203], [206, 213], [220, 226], [230, 231], [275, 280]], "missing_branches": [[33, 34], [33, 45], [71, 72], [71, 83], [91, 92], [91, 95], [98, 99], [98, 101], [101, 102], [101, 114], [124, 125], [124, 130], [125, 126], [125, 129], [130, 131], [130, 132], [144, 145], [144, 148], [148, 149], [148, 152], [196, 197], [206, 207], [220, 221], [230, 233], [275, 276]], "functions": {"get_email_template": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 21, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 21, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 2, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0.00"}, "missing_lines": [31, 32, 33, 34, 37, 38, 39, 40, 41, 42, 45, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56], "excluded_lines": [], "start_line": 24, "executed_branches": [], "missing_branches": [[33, 34], [33, 45]]}, "extract_metadata_from_file": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 11, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 11, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 2, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0.00"}, "missing_lines": [67, 70, 71, 72, 73, 74, 75, 76, 77, 78, 83], "excluded_lines": [], "start_line": 59, "executed_branches": [], "missing_branches": [[71, 72], [71, 83]]}, "attach_logo": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 23, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 23, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00", "num_branches": 6, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 6, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0.00"}, "missing_lines": [88, 90, 91, 92, 95, 96, 98, 99, 101, 102, 103, 106, 107, 108, 109, 110, 111, 112, 114, 115, 117, 118, 119], "excluded_lines": [], "start_line": 86, "executed_branches": [], "missing_branches": [[91, 92], [91, 95], [98, 99], [98, 101], [101, 102], [101, 114]]}, "_prepare_recipients": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 9, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 9, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00", "num_branches": 6, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 6, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0.00"}, "missing_lines": [124, 125, 126, 127, 128, 129, 130, 131, 132], "excluded_lines": [], "start_line": 122, "executed_branches": [], "missing_branches": [[124, 125], [124, 130], [125, 126], [125, 129], [130, 131], [130, 132]]}, "_send_email_with_smtp": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 18, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 18, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 4, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0.00"}, "missing_lines": [137, 139, 142, 144, 145, 148, 149, 152, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163], "excluded_lines": [], "start_line": 135, "executed_branches": [], "missing_branches": [[144, 145], [144, 148], [148, 149], [148, 152]]}, "upload_to_email": {"executed_lines": [190, 191, 192, 196, 203, 206, 213, 219, 220, 226, 229, 230, 231, 233, 235, 236, 237, 238, 241, 242, 245, 248, 251, 264, 265, 268, 269, 270, 271, 274, 275, 280, 281, 283], "summary": {"covered_lines": 34, "num_statements": 53, "percent_covered": 61.904761904761905, "percent_covered_display": "61.90", "missing_lines": 19, "excluded_lines": 0, "percent_statements_covered": 64.15094339622641, "percent_statements_covered_display": "64.15", "num_branches": 10, "num_partial_branches": 5, "covered_branches": 5, "missing_branches": 5, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50.00"}, "missing_lines": [197, 198, 199, 200, 207, 208, 209, 210, 221, 222, 223, 276, 277, 278, 292, 293, 294, 295, 296], "excluded_lines": [], "start_line": 167, "executed_branches": [[196, 203], [206, 213], [220, 226], [230, 231], [275, 280]], "missing_branches": [[196, 197], [206, 207], [220, 221], [230, 233], [275, 276]]}, "": {"executed_lines": [3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 14, 16, 17, 18, 19, 21, 24, 59, 86, 122, 135, 166, 167], "summary": {"covered_lines": 23, "num_statements": 23, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 14, 16, 17, 18, 19, 21, 24, 59, 86, 122, 135, 166, 167, 190, 191, 192, 196, 203, 206, 213, 219, 220, 226, 229, 230, 231, 233, 235, 236, 237, 238, 241, 242, 245, 248, 251, 264, 265, 268, 269, 270, 271, 274, 275, 280, 281, 283], "summary": {"covered_lines": 57, "num_statements": 158, "percent_covered": 32.97872340425532, "percent_covered_display": "32.98", "missing_lines": 101, "excluded_lines": 0, "percent_statements_covered": 36.075949367088604, "percent_statements_covered_display": "36.08", "num_branches": 30, "num_partial_branches": 5, "covered_branches": 5, "missing_branches": 25, "percent_branches_covered": 16.666666666666668, "percent_branches_covered_display": "16.67"}, "missing_lines": [31, 32, 33, 34, 37, 38, 39, 40, 41, 42, 45, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 67, 70, 71, 72, 73, 74, 75, 76, 77, 78, 83, 88, 90, 91, 92, 95, 96, 98, 99, 101, 102, 103, 106, 107, 108, 109, 110, 111, 112, 114, 115, 117, 118, 119, 124, 125, 126, 127, 128, 129, 130, 131, 132, 137, 139, 142, 144, 145, 148, 149, 152, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 197, 198, 199, 200, 207, 208, 209, 210, 221, 222, 223, 276, 277, 278, 292, 293, 294, 295, 296], "excluded_lines": [], "start_line": 1, "executed_branches": [[196, 203], [206, 213], [220, 226], [230, 231], [275, 280]], "missing_branches": [[33, 34], [33, 45], [71, 72], [71, 83], [91, 92], [91, 95], [98, 99], [98, 101], [101, 102], [101, 114], [124, 125], [124, 130], [125, 126], [125, 129], [130, 131], [130, 132], [144, 145], [144, 148], [148, 149], [148, 152], [196, 197], [206, 207], [220, 221], [230, 233], [275, 276]]}}}, "app/tasks/upload_to_ftp.py": {"executed_lines": [5, 6, 7, 9, 10, 11, 12, 14, 17, 18, 30, 31, 32, 36, 37, 38, 39, 40, 43, 46, 52, 54, 55, 57, 84, 90, 91, 92, 95, 98, 99, 101, 103, 107, 108, 127, 128, 131, 133, 134, 135], "summary": {"covered_lines": 41, "num_statements": 85, "percent_covered": 47.57281553398058, "percent_covered_display": "47.57", "missing_lines": 44, "excluded_lines": 0, "percent_statements_covered": 48.23529411764706, "percent_statements_covered_display": "48.24", "num_branches": 18, "num_partial_branches": 4, "covered_branches": 8, "missing_branches": 10, "percent_branches_covered": 44.44444444444444, "percent_branches_covered_display": "44.44"}, "missing_lines": [47, 48, 49, 50, 58, 59, 60, 61, 64, 67, 68, 69, 70, 71, 72, 73, 75, 77, 78, 81, 85, 86, 87, 104, 109, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 143, 144, 145, 146, 147], "excluded_lines": [], "executed_branches": [[36, 37], [36, 43], [46, 52], [57, 84], [84, 90], [98, 99], [98, 127], [103, 107]], "missing_branches": [[46, 47], [57, 58], [70, 71], [70, 75], [84, 85], [103, 104], [113, 114], [113, 127], [114, 113], [114, 115]], "functions": {"upload_to_ftp": {"executed_lines": [30, 31, 32, 36, 37, 38, 39, 40, 43, 46, 52, 54, 55, 57, 84, 90, 91, 92, 95, 98, 99, 101, 103, 107, 108, 127, 128, 131, 133, 134, 135], "summary": {"covered_lines": 31, "num_statements": 75, "percent_covered": 41.935483870967744, "percent_covered_display": "41.94", "missing_lines": 44, "excluded_lines": 0, "percent_statements_covered": 41.333333333333336, "percent_statements_covered_display": "41.33", "num_branches": 18, "num_partial_branches": 4, "covered_branches": 8, "missing_branches": 10, "percent_branches_covered": 44.44444444444444, "percent_branches_covered_display": "44.44"}, "missing_lines": [47, 48, 49, 50, 58, 59, 60, 61, 64, 67, 68, 69, 70, 71, 72, 73, 75, 77, 78, 81, 85, 86, 87, 104, 109, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 143, 144, 145, 146, 147], "excluded_lines": [], "start_line": 18, "executed_branches": [[36, 37], [36, 43], [46, 52], [57, 84], [84, 90], [98, 99], [98, 127], [103, 107]], "missing_branches": [[46, 47], [57, 58], [70, 71], [70, 75], [84, 85], [103, 104], [113, 114], [113, 127], [114, 113], [114, 115]]}, "": {"executed_lines": [5, 6, 7, 9, 10, 11, 12, 14, 17, 18], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [5, 6, 7, 9, 10, 11, 12, 14, 17, 18, 30, 31, 32, 36, 37, 38, 39, 40, 43, 46, 52, 54, 55, 57, 84, 90, 91, 92, 95, 98, 99, 101, 103, 107, 108, 127, 128, 131, 133, 134, 135], "summary": {"covered_lines": 41, "num_statements": 85, "percent_covered": 47.57281553398058, "percent_covered_display": "47.57", "missing_lines": 44, "excluded_lines": 0, "percent_statements_covered": 48.23529411764706, "percent_statements_covered_display": "48.24", "num_branches": 18, "num_partial_branches": 4, "covered_branches": 8, "missing_branches": 10, "percent_branches_covered": 44.44444444444444, "percent_branches_covered_display": "44.44"}, "missing_lines": [47, 48, 49, 50, 58, 59, 60, 61, 64, 67, 68, 69, 70, 71, 72, 73, 75, 77, 78, 81, 85, 86, 87, 104, 109, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 143, 144, 145, 146, 147], "excluded_lines": [], "start_line": 1, "executed_branches": [[36, 37], [36, 43], [46, 52], [57, 84], [84, 90], [98, 99], [98, 127], [103, 107]], "missing_branches": [[46, 47], [57, 58], [70, 71], [70, 75], [84, 85], [103, 104], [113, 114], [113, 127], [114, 113], [114, 115]]}}}, "app/tasks/upload_to_google_drive.py": {"executed_lines": [5, 6, 7, 9, 10, 11, 12, 13, 14, 16, 17, 18, 19, 21, 24, 65, 98, 119, 152, 153, 162, 163, 164, 172, 179, 182, 183, 184, 186, 188, 189, 196, 201, 202, 205, 238, 240, 249, 250, 252, 253, 254, 258, 266, 269], "summary": {"covered_lines": 45, "num_statements": 125, "percent_covered": 32.48407643312102, "percent_covered_display": "32.48", "missing_lines": 80, "excluded_lines": 0, "percent_statements_covered": 36.0, "percent_statements_covered_display": "36.00", "num_branches": 32, "num_partial_branches": 6, "covered_branches": 6, "missing_branches": 26, "percent_branches_covered": 18.75, "percent_branches_covered_display": "18.75"}, "missing_lines": [29, 31, 36, 37, 40, 51, 54, 55, 57, 58, 59, 60, 61, 62, 70, 72, 73, 76, 77, 78, 80, 81, 86, 87, 90, 91, 93, 94, 95, 106, 107, 108, 109, 110, 111, 112, 113, 114, 116, 126, 129, 130, 131, 134, 135, 139, 142, 143, 146, 147, 149, 173, 174, 175, 176, 190, 191, 192, 193, 207, 211, 212, 214, 215, 218, 219, 220, 221, 222, 225, 228, 232, 233, 235, 267, 271, 272, 273, 274, 275], "excluded_lines": [], "executed_branches": [[172, 179], [183, 184], [189, 196], [201, 202], [205, 238], [266, 269]], "missing_branches": [[31, 36], [31, 40], [72, 73], [72, 76], [76, 77], [76, 80], [86, 87], [86, 90], [107, 108], [107, 116], [134, 135], [134, 139], [142, 143], [142, 146], [146, 147], [146, 149], [172, 173], [183, 186], [189, 190], [201, 205], [205, 207], [212, 214], [212, 225], [214, 215], [214, 218], [266, 267]], "functions": {"get_drive_service_oauth": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 14, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 14, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 2, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0.00"}, "missing_lines": [29, 31, 36, 37, 40, 51, 54, 55, 57, 58, 59, 60, 61, 62], "excluded_lines": [], "start_line": 24, "executed_branches": [], "missing_branches": [[31, 36], [31, 40]]}, "get_google_drive_service": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 15, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 15, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00", "num_branches": 6, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 6, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0.00"}, "missing_lines": [70, 72, 73, 76, 77, 78, 80, 81, 86, 87, 90, 91, 93, 94, 95], "excluded_lines": [], "start_line": 65, "executed_branches": [], "missing_branches": [[72, 73], [72, 76], [76, 77], [76, 80], [86, 87], [86, 90]]}, "extract_metadata_from_file": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 10, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 10, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 2, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0.00"}, "missing_lines": [106, 107, 108, 109, 110, 111, 112, 113, 114, 116], "excluded_lines": [], "start_line": 98, "executed_branches": [], "missing_branches": [[107, 108], [107, 116]]}, "truncate_property_value": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 12, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 12, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00", "num_branches": 6, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 6, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0.00"}, "missing_lines": [126, 129, 130, 131, 134, 135, 139, 142, 143, 146, 147, 149], "excluded_lines": [], "start_line": 119, "executed_branches": [], "missing_branches": [[134, 135], [134, 139], [142, 143], [142, 146], [146, 147], [146, 149]]}, "upload_to_google_drive": {"executed_lines": [162, 163, 164, 172, 179, 182, 183, 184, 186, 188, 189, 196, 201, 202, 205, 238, 240, 249, 250, 252, 253, 254, 258, 266, 269], "summary": {"covered_lines": 25, "num_statements": 54, "percent_covered": 44.285714285714285, "percent_covered_display": "44.29", "missing_lines": 29, "excluded_lines": 0, "percent_statements_covered": 46.2962962962963, "percent_statements_covered_display": "46.30", "num_branches": 16, "num_partial_branches": 6, "covered_branches": 6, "missing_branches": 10, "percent_branches_covered": 37.5, "percent_branches_covered_display": "37.50"}, "missing_lines": [173, 174, 175, 176, 190, 191, 192, 193, 207, 211, 212, 214, 215, 218, 219, 220, 221, 222, 225, 228, 232, 233, 235, 267, 271, 272, 273, 274, 275], "excluded_lines": [], "start_line": 153, "executed_branches": [[172, 179], [183, 184], [189, 196], [201, 202], [205, 238], [266, 269]], "missing_branches": [[172, 173], [183, 186], [189, 190], [201, 205], [205, 207], [212, 214], [212, 225], [214, 215], [214, 218], [266, 267]]}, "": {"executed_lines": [5, 6, 7, 9, 10, 11, 12, 13, 14, 16, 17, 18, 19, 21, 24, 65, 98, 119, 152, 153], "summary": {"covered_lines": 20, "num_statements": 20, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [5, 6, 7, 9, 10, 11, 12, 13, 14, 16, 17, 18, 19, 21, 24, 65, 98, 119, 152, 153, 162, 163, 164, 172, 179, 182, 183, 184, 186, 188, 189, 196, 201, 202, 205, 238, 240, 249, 250, 252, 253, 254, 258, 266, 269], "summary": {"covered_lines": 45, "num_statements": 125, "percent_covered": 32.48407643312102, "percent_covered_display": "32.48", "missing_lines": 80, "excluded_lines": 0, "percent_statements_covered": 36.0, "percent_statements_covered_display": "36.00", "num_branches": 32, "num_partial_branches": 6, "covered_branches": 6, "missing_branches": 26, "percent_branches_covered": 18.75, "percent_branches_covered_display": "18.75"}, "missing_lines": [29, 31, 36, 37, 40, 51, 54, 55, 57, 58, 59, 60, 61, 62, 70, 72, 73, 76, 77, 78, 80, 81, 86, 87, 90, 91, 93, 94, 95, 106, 107, 108, 109, 110, 111, 112, 113, 114, 116, 126, 129, 130, 131, 134, 135, 139, 142, 143, 146, 147, 149, 173, 174, 175, 176, 190, 191, 192, 193, 207, 211, 212, 214, 215, 218, 219, 220, 221, 222, 225, 228, 232, 233, 235, 267, 271, 272, 273, 274, 275], "excluded_lines": [], "start_line": 1, "executed_branches": [[172, 179], [183, 184], [189, 196], [201, 202], [205, 238], [266, 269]], "missing_branches": [[31, 36], [31, 40], [72, 73], [72, 76], [76, 77], [76, 80], [86, 87], [86, 90], [107, 108], [107, 116], [134, 135], [134, 139], [142, 143], [142, 146], [146, 147], [146, 149], [172, 173], [183, 186], [189, 190], [201, 205], [205, 207], [212, 214], [212, 225], [214, 215], [214, 218], [266, 267]]}}}, "app/tasks/upload_to_nextcloud.py": {"executed_lines": [3, 4, 6, 7, 9, 10, 11, 12, 13, 15, 18, 19, 27, 28, 29, 37, 45, 50, 51, 52], "summary": {"covered_lines": 20, "num_statements": 79, "percent_covered": 22.22222222222222, "percent_covered_display": "22.22", "missing_lines": 59, "excluded_lines": 0, "percent_statements_covered": 25.31645569620253, "percent_statements_covered_display": "25.32", "num_branches": 20, "num_partial_branches": 2, "covered_branches": 2, "missing_branches": 18, "percent_branches_covered": 10.0, "percent_branches_covered_display": "10.00"}, "missing_lines": [38, 39, 40, 41, 54, 56, 58, 59, 60, 63, 64, 65, 68, 69, 70, 71, 74, 75, 76, 77, 85, 86, 88, 91, 92, 95, 96, 97, 98, 101, 102, 103, 104, 105, 106, 107, 108, 110, 111, 112, 113, 115, 123, 124, 125, 126, 134, 135, 136, 139, 146, 147, 148, 149, 151, 152, 153, 154, 155], "excluded_lines": [], "executed_branches": [[37, 45], [45, 50]], "missing_branches": [[37, 38], [45, 54], [59, 60], [59, 63], [69, 70], [69, 71], [96, 97], [96, 98], [102, 103], [102, 123], [104, 105], [104, 123], [105, 106], [105, 107], [111, 112], [111, 113], [134, 135], [134, 146]], "functions": {"upload_to_nextcloud": {"executed_lines": [27, 28, 29, 37, 45, 50, 51, 52], "summary": {"covered_lines": 8, "num_statements": 61, "percent_covered": 12.345679012345679, "percent_covered_display": "12.35", "missing_lines": 53, "excluded_lines": 0, "percent_statements_covered": 13.114754098360656, "percent_statements_covered_display": "13.11", "num_branches": 20, "num_partial_branches": 2, "covered_branches": 2, "missing_branches": 18, "percent_branches_covered": 10.0, "percent_branches_covered_display": "10.00"}, "missing_lines": [38, 39, 40, 41, 54, 56, 58, 59, 60, 63, 64, 65, 68, 69, 70, 71, 74, 91, 92, 95, 96, 97, 98, 101, 102, 103, 104, 105, 106, 107, 108, 110, 111, 112, 113, 115, 123, 124, 125, 126, 134, 135, 136, 139, 146, 147, 148, 149, 151, 152, 153, 154, 155], "excluded_lines": [], "start_line": 19, "executed_branches": [[37, 45], [45, 50]], "missing_branches": [[37, 38], [45, 54], [59, 60], [59, 63], [69, 70], [69, 71], [96, 97], [96, 98], [102, 103], [102, 123], [104, 105], [104, 123], [105, 106], [105, 107], [111, 112], [111, 113], [134, 135], [134, 146]]}, "upload_to_nextcloud.check_exists_in_nextcloud": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 6, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [75, 76, 77, 85, 86, 88], "excluded_lines": [], "start_line": 74, "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [3, 4, 6, 7, 9, 10, 11, 12, 13, 15, 18, 19], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [3, 4, 6, 7, 9, 10, 11, 12, 13, 15, 18, 19, 27, 28, 29, 37, 45, 50, 51, 52], "summary": {"covered_lines": 20, "num_statements": 79, "percent_covered": 22.22222222222222, "percent_covered_display": "22.22", "missing_lines": 59, "excluded_lines": 0, "percent_statements_covered": 25.31645569620253, "percent_statements_covered_display": "25.32", "num_branches": 20, "num_partial_branches": 2, "covered_branches": 2, "missing_branches": 18, "percent_branches_covered": 10.0, "percent_branches_covered_display": "10.00"}, "missing_lines": [38, 39, 40, 41, 54, 56, 58, 59, 60, 63, 64, 65, 68, 69, 70, 71, 74, 75, 76, 77, 85, 86, 88, 91, 92, 95, 96, 97, 98, 101, 102, 103, 104, 105, 106, 107, 108, 110, 111, 112, 113, 115, 123, 124, 125, 126, 134, 135, 136, 139, 146, 147, 148, 149, 151, 152, 153, 154, 155], "excluded_lines": [], "start_line": 1, "executed_branches": [[37, 45], [45, 50]], "missing_branches": [[37, 38], [45, 54], [59, 60], [59, 63], [69, 70], [69, 71], [96, 97], [96, 98], [102, 103], [102, 123], [104, 105], [104, 123], [105, 106], [105, 107], [111, 112], [111, 113], [134, 135], [134, 146]]}}}, "app/tasks/upload_to_onedrive.py": {"executed_lines": [3, 4, 5, 6, 8, 9, 11, 12, 13, 14, 16, 19, 100, 146, 212, 213, 221, 222, 223, 231, 232, 233, 234, 235, 238, 241, 247, 249, 252, 255, 258, 259, 260, 261, 265], "summary": {"covered_lines": 35, "num_statements": 133, "percent_covered": 22.75449101796407, "percent_covered_display": "22.75", "missing_lines": 98, "excluded_lines": 0, "percent_statements_covered": 26.31578947368421, "percent_statements_covered_display": "26.32", "num_branches": 34, "num_partial_branches": 1, "covered_branches": 3, "missing_branches": 31, "percent_branches_covered": 8.823529411764707, "percent_branches_covered_display": "8.82"}, "missing_lines": [26, 27, 30, 31, 34, 37, 39, 46, 47, 51, 52, 53, 56, 57, 58, 60, 61, 62, 64, 67, 68, 69, 72, 73, 75, 78, 79, 80, 87, 89, 90, 91, 92, 94, 97, 103, 106, 108, 111, 112, 115, 116, 119, 120, 122, 125, 127, 129, 131, 133, 134, 135, 136, 138, 139, 140, 141, 142, 143, 152, 155, 158, 160, 161, 162, 163, 164, 167, 168, 171, 174, 177, 178, 180, 181, 182, 187, 189, 191, 192, 193, 194, 195, 196, 197, 199, 200, 205, 209, 242, 243, 244, 245, 272, 273, 274, 275, 276], "excluded_lines": [], "executed_branches": [[231, 232], [231, 238], [241, 247]], "missing_branches": [[26, 27], [26, 30], [37, 39], [37, 78], [51, 52], [51, 67], [60, 61], [60, 64], [67, 68], [67, 75], [78, 79], [78, 97], [89, 90], [89, 94], [106, 108], [106, 119], [133, 134], [133, 138], [163, 164], [163, 167], [180, 181], [180, 199], [187, 189], [187, 191], [192, 180], [192, 193], [196, 180], [196, 197], [199, 200], [199, 205], [241, 242]], "functions": {"get_onedrive_token": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 35, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 35, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00", "num_branches": 14, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 14, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0.00"}, "missing_lines": [26, 27, 30, 31, 34, 37, 39, 46, 47, 51, 52, 53, 56, 57, 58, 60, 61, 62, 64, 67, 68, 69, 72, 73, 75, 78, 79, 80, 87, 89, 90, 91, 92, 94, 97], "excluded_lines": [], "start_line": 19, "executed_branches": [], "missing_branches": [[26, 27], [26, 30], [37, 39], [37, 78], [51, 52], [51, 67], [60, 61], [60, 64], [67, 68], [67, 75], [78, 79], [78, 97], [89, 90], [89, 94]]}, "create_upload_session": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 24, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 24, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 4, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0.00"}, "missing_lines": [103, 106, 108, 111, 112, 115, 116, 119, 120, 122, 125, 127, 129, 131, 133, 134, 135, 136, 138, 139, 140, 141, 142, 143], "excluded_lines": [], "start_line": 100, "executed_branches": [], "missing_branches": [[106, 108], [106, 119], [133, 134], [133, 138]]}, "upload_large_file": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 30, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 30, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00", "num_branches": 12, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 12, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0.00"}, "missing_lines": [152, 155, 158, 160, 161, 162, 163, 164, 167, 168, 171, 174, 177, 178, 180, 181, 182, 187, 189, 191, 192, 193, 194, 195, 196, 197, 199, 200, 205, 209], "excluded_lines": [], "start_line": 146, "executed_branches": [], "missing_branches": [[163, 164], [163, 167], [180, 181], [180, 199], [187, 189], [187, 191], [192, 180], [192, 193], [196, 180], [196, 197], [199, 200], [199, 205]]}, "upload_to_onedrive": {"executed_lines": [221, 222, 223, 231, 232, 233, 234, 235, 238, 241, 247, 249, 252, 255, 258, 259, 260, 261, 265], "summary": {"covered_lines": 19, "num_statements": 28, "percent_covered": 68.75, "percent_covered_display": "68.75", "missing_lines": 9, "excluded_lines": 0, "percent_statements_covered": 67.85714285714286, "percent_statements_covered_display": "67.86", "num_branches": 4, "num_partial_branches": 1, "covered_branches": 3, "missing_branches": 1, "percent_branches_covered": 75.0, "percent_branches_covered_display": "75.00"}, "missing_lines": [242, 243, 244, 245, 272, 273, 274, 275, 276], "excluded_lines": [], "start_line": 213, "executed_branches": [[231, 232], [231, 238], [241, 247]], "missing_branches": [[241, 242]]}, "": {"executed_lines": [3, 4, 5, 6, 8, 9, 11, 12, 13, 14, 16, 19, 100, 146, 212, 213], "summary": {"covered_lines": 16, "num_statements": 16, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [3, 4, 5, 6, 8, 9, 11, 12, 13, 14, 16, 19, 100, 146, 212, 213, 221, 222, 223, 231, 232, 233, 234, 235, 238, 241, 247, 249, 252, 255, 258, 259, 260, 261, 265], "summary": {"covered_lines": 35, "num_statements": 133, "percent_covered": 22.75449101796407, "percent_covered_display": "22.75", "missing_lines": 98, "excluded_lines": 0, "percent_statements_covered": 26.31578947368421, "percent_statements_covered_display": "26.32", "num_branches": 34, "num_partial_branches": 1, "covered_branches": 3, "missing_branches": 31, "percent_branches_covered": 8.823529411764707, "percent_branches_covered_display": "8.82"}, "missing_lines": [26, 27, 30, 31, 34, 37, 39, 46, 47, 51, 52, 53, 56, 57, 58, 60, 61, 62, 64, 67, 68, 69, 72, 73, 75, 78, 79, 80, 87, 89, 90, 91, 92, 94, 97, 103, 106, 108, 111, 112, 115, 116, 119, 120, 122, 125, 127, 129, 131, 133, 134, 135, 136, 138, 139, 140, 141, 142, 143, 152, 155, 158, 160, 161, 162, 163, 164, 167, 168, 171, 174, 177, 178, 180, 181, 182, 187, 189, 191, 192, 193, 194, 195, 196, 197, 199, 200, 205, 209, 242, 243, 244, 245, 272, 273, 274, 275, 276], "excluded_lines": [], "start_line": 1, "executed_branches": [[231, 232], [231, 238], [241, 247]], "missing_branches": [[26, 27], [26, 30], [37, 39], [37, 78], [51, 52], [51, 67], [60, 61], [60, 64], [67, 68], [67, 75], [78, 79], [78, 97], [89, 90], [89, 94], [106, 108], [106, 119], [133, 134], [133, 138], [163, 164], [163, 167], [180, 181], [180, 199], [187, 189], [187, 191], [192, 180], [192, 193], [196, 180], [196, 197], [199, 200], [199, 205], [241, 242]]}}}, "app/tasks/upload_to_paperless.py": {"executed_lines": [3, 4, 5, 6, 7, 9, 11, 12, 13, 14, 16, 18, 19, 21, 24, 29, 40, 59, 75, 124, 156, 202, 203], "summary": {"covered_lines": 23, "num_statements": 191, "percent_covered": 9.31174089068826, "percent_covered_display": "9.31", "missing_lines": 168, "excluded_lines": 0, "percent_statements_covered": 12.041884816753926, "percent_statements_covered_display": "12.04", "num_branches": 56, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 56, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0.00"}, "missing_lines": [26, 34, 35, 36, 37, 50, 51, 52, 54, 55, 56, 69, 70, 71, 72, 84, 85, 87, 88, 89, 92, 93, 94, 95, 96, 97, 98, 100, 101, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 118, 119, 121, 137, 138, 139, 140, 141, 144, 146, 147, 148, 150, 151, 152, 153, 165, 166, 169, 170, 171, 172, 173, 174, 175, 176, 179, 180, 181, 183, 184, 185, 188, 189, 191, 192, 193, 194, 195, 196, 197, 199, 211, 212, 213, 221, 222, 223, 224, 225, 228, 231, 232, 233, 234, 235, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 249, 252, 253, 254, 255, 256, 259, 261, 262, 263, 266, 267, 268, 269, 270, 276, 287, 289, 290, 291, 294, 295, 296, 297, 298, 299, 307, 314, 315, 320, 323, 324, 326, 327, 330, 331, 333, 334, 335, 336, 337, 338, 339, 340, 343, 345, 346, 347, 350, 351, 352, 354, 355, 356, 363, 364, 365, 368, 370], "excluded_lines": [], "executed_branches": [], "missing_branches": [[35, 36], [35, 37], [50, 51], [50, 52], [54, 55], [54, 56], [69, 70], [69, 71], [87, 88], [87, 121], [100, 101], [100, 103], [103, 104], [103, 118], [106, 107], [106, 111], [108, 109], [108, 110], [111, 112], [111, 118], [113, 114], [113, 116], [146, 147], [146, 150], [147, 146], [147, 148], [165, 166], [165, 169], [170, 171], [170, 183], [172, 170], [172, 173], [183, 184], [183, 188], [221, 222], [221, 228], [231, 232], [231, 238], [240, 241], [240, 249], [297, 298], [297, 314], [323, 324], [323, 343], [330, 331], [330, 343], [331, 330], [331, 333], [334, 330], [334, 335], [343, 345], [343, 350], [345, 346], [345, 350], [350, 351], [350, 368]], "functions": {"_get_headers": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [26], "excluded_lines": [], "start_line": 24, "executed_branches": [], "missing_branches": []}, "_paperless_api_url": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 2, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0.00"}, "missing_lines": [34, 35, 36, 37], "excluded_lines": [], "start_line": 29, "executed_branches": [], "missing_branches": [[35, 36], [35, 37]]}, "normalize_metadata_value": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 6, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 4, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0.00"}, "missing_lines": [50, 51, 52, 54, 55, 56], "excluded_lines": [], "start_line": 40, "executed_branches": [], "missing_branches": [[50, 51], [50, 52], [54, 55], [54, 56]]}, "_is_duplicate_error": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 2, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0.00"}, "missing_lines": [69, 70, 71, 72], "excluded_lines": [], "start_line": 59, "executed_branches": [], "missing_branches": [[69, 70], [69, 71]]}, "poll_task_for_document_id": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 31, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 31, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00", "num_branches": 14, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 14, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0.00"}, "missing_lines": [84, 85, 87, 88, 89, 92, 93, 94, 95, 96, 97, 98, 100, 101, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 118, 119, 121], "excluded_lines": [], "start_line": 75, "executed_branches": [], "missing_branches": [[87, 88], [87, 121], [100, 101], [100, 103], [103, 104], [103, 118], [106, 107], [106, 111], [108, 109], [108, 110], [111, 112], [111, 118], [113, 114], [113, 116]]}, "get_custom_field_id": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 13, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 13, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 4, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0.00"}, "missing_lines": [137, 138, 139, 140, 141, 144, 146, 147, 148, 150, 151, 152, 153], "excluded_lines": [], "start_line": 124, "executed_branches": [], "missing_branches": [[146, 147], [146, 150], [147, 146], [147, 148]]}, "set_document_custom_fields": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 26, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 26, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00", "num_branches": 8, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 8, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0.00"}, "missing_lines": [165, 166, 169, 170, 171, 172, 173, 174, 175, 176, 179, 180, 181, 183, 184, 185, 188, 189, 191, 192, 193, 194, 195, 196, 197, 199], "excluded_lines": [], "start_line": 156, "executed_branches": [], "missing_branches": [[165, 166], [165, 169], [170, 171], [170, 183], [172, 170], [172, 173], [183, 184], [183, 188]]}, "upload_to_paperless": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 83, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 83, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00", "num_branches": 22, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 22, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0.00"}, "missing_lines": [211, 212, 213, 221, 222, 223, 224, 225, 228, 231, 232, 233, 234, 235, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 249, 252, 253, 254, 255, 256, 259, 261, 262, 263, 266, 267, 268, 269, 270, 276, 287, 289, 290, 291, 294, 295, 296, 297, 298, 299, 307, 314, 315, 320, 323, 324, 326, 327, 330, 331, 333, 334, 335, 336, 337, 338, 339, 340, 343, 345, 346, 347, 350, 351, 352, 354, 355, 356, 363, 364, 365, 368, 370], "excluded_lines": [], "start_line": 203, "executed_branches": [], "missing_branches": [[221, 222], [221, 228], [231, 232], [231, 238], [240, 241], [240, 249], [297, 298], [297, 314], [323, 324], [323, 343], [330, 331], [330, 343], [331, 330], [331, 333], [334, 330], [334, 335], [343, 345], [343, 350], [345, 346], [345, 350], [350, 351], [350, 368]]}, "": {"executed_lines": [3, 4, 5, 6, 7, 9, 11, 12, 13, 14, 16, 18, 19, 21, 24, 29, 40, 59, 75, 124, 156, 202, 203], "summary": {"covered_lines": 23, "num_statements": 23, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [3, 4, 5, 6, 7, 9, 11, 12, 13, 14, 16, 18, 19, 21, 24, 29, 40, 59, 75, 124, 156, 202, 203], "summary": {"covered_lines": 23, "num_statements": 191, "percent_covered": 9.31174089068826, "percent_covered_display": "9.31", "missing_lines": 168, "excluded_lines": 0, "percent_statements_covered": 12.041884816753926, "percent_statements_covered_display": "12.04", "num_branches": 56, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 56, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0.00"}, "missing_lines": [26, 34, 35, 36, 37, 50, 51, 52, 54, 55, 56, 69, 70, 71, 72, 84, 85, 87, 88, 89, 92, 93, 94, 95, 96, 97, 98, 100, 101, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 118, 119, 121, 137, 138, 139, 140, 141, 144, 146, 147, 148, 150, 151, 152, 153, 165, 166, 169, 170, 171, 172, 173, 174, 175, 176, 179, 180, 181, 183, 184, 185, 188, 189, 191, 192, 193, 194, 195, 196, 197, 199, 211, 212, 213, 221, 222, 223, 224, 225, 228, 231, 232, 233, 234, 235, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 249, 252, 253, 254, 255, 256, 259, 261, 262, 263, 266, 267, 268, 269, 270, 276, 287, 289, 290, 291, 294, 295, 296, 297, 298, 299, 307, 314, 315, 320, 323, 324, 326, 327, 330, 331, 333, 334, 335, 336, 337, 338, 339, 340, 343, 345, 346, 347, 350, 351, 352, 354, 355, 356, 363, 364, 365, 368, 370], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": [[35, 36], [35, 37], [50, 51], [50, 52], [54, 55], [54, 56], [69, 70], [69, 71], [87, 88], [87, 121], [100, 101], [100, 103], [103, 104], [103, 118], [106, 107], [106, 111], [108, 109], [108, 110], [111, 112], [111, 118], [113, 114], [113, 116], [146, 147], [146, 150], [147, 146], [147, 148], [165, 166], [165, 169], [170, 171], [170, 183], [172, 170], [172, 173], [183, 184], [183, 188], [221, 222], [221, 228], [231, 232], [231, 238], [240, 241], [240, 249], [297, 298], [297, 314], [323, 324], [323, 343], [330, 331], [330, 343], [331, 330], [331, 333], [334, 330], [334, 335], [343, 345], [343, 350], [345, 346], [345, 350], [350, 351], [350, 368]]}}}, "app/tasks/upload_to_s3.py": {"executed_lines": [3, 4, 6, 7, 9, 10, 11, 12, 14, 17, 18, 26, 27, 28, 32, 33, 34, 35, 36, 39, 42, 48, 54, 56, 64, 66, 67, 68, 69, 74, 77, 81, 85, 87, 90, 91], "summary": {"covered_lines": 36, "num_statements": 56, "percent_covered": 63.23529411764706, "percent_covered_display": "63.24", "missing_lines": 20, "excluded_lines": 0, "percent_statements_covered": 64.28571428571429, "percent_statements_covered_display": "64.29", "num_branches": 12, "num_partial_branches": 5, "covered_branches": 7, "missing_branches": 5, "percent_branches_covered": 58.333333333333336, "percent_branches_covered_display": "58.33"}, "missing_lines": [43, 44, 45, 46, 49, 50, 51, 52, 71, 78, 99, 100, 101, 102, 103, 105, 106, 107, 108, 109], "excluded_lines": [], "executed_branches": [[32, 33], [32, 39], [42, 48], [48, 54], [64, 66], [67, 68], [77, 81]], "missing_branches": [[42, 43], [48, 49], [64, 71], [67, 69], [77, 78]], "functions": {"upload_to_s3": {"executed_lines": [26, 27, 28, 32, 33, 34, 35, 36, 39, 42, 48, 54, 56, 64, 66, 67, 68, 69, 74, 77, 81, 85, 87, 90, 91], "summary": {"covered_lines": 25, "num_statements": 45, "percent_covered": 56.14035087719298, "percent_covered_display": "56.14", "missing_lines": 20, "excluded_lines": 0, "percent_statements_covered": 55.55555555555556, "percent_statements_covered_display": "55.56", "num_branches": 12, "num_partial_branches": 5, "covered_branches": 7, "missing_branches": 5, "percent_branches_covered": 58.333333333333336, "percent_branches_covered_display": "58.33"}, "missing_lines": [43, 44, 45, 46, 49, 50, 51, 52, 71, 78, 99, 100, 101, 102, 103, 105, 106, 107, 108, 109], "excluded_lines": [], "start_line": 18, "executed_branches": [[32, 33], [32, 39], [42, 48], [48, 54], [64, 66], [67, 68], [77, 81]], "missing_branches": [[42, 43], [48, 49], [64, 71], [67, 69], [77, 78]]}, "": {"executed_lines": [3, 4, 6, 7, 9, 10, 11, 12, 14, 17, 18], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [3, 4, 6, 7, 9, 10, 11, 12, 14, 17, 18, 26, 27, 28, 32, 33, 34, 35, 36, 39, 42, 48, 54, 56, 64, 66, 67, 68, 69, 74, 77, 81, 85, 87, 90, 91], "summary": {"covered_lines": 36, "num_statements": 56, "percent_covered": 63.23529411764706, "percent_covered_display": "63.24", "missing_lines": 20, "excluded_lines": 0, "percent_statements_covered": 64.28571428571429, "percent_statements_covered_display": "64.29", "num_branches": 12, "num_partial_branches": 5, "covered_branches": 7, "missing_branches": 5, "percent_branches_covered": 58.333333333333336, "percent_branches_covered_display": "58.33"}, "missing_lines": [43, 44, 45, 46, 49, 50, 51, 52, 71, 78, 99, 100, 101, 102, 103, 105, 106, 107, 108, 109], "excluded_lines": [], "start_line": 1, "executed_branches": [[32, 33], [32, 39], [42, 48], [48, 54], [64, 66], [67, 68], [77, 81]], "missing_branches": [[42, 43], [48, 49], [64, 71], [67, 69], [77, 78]]}}}, "app/tasks/upload_to_sftp.py": {"executed_lines": [3, 4, 6, 8, 9, 10, 11, 12, 14, 17, 18, 26, 27, 28, 32, 33, 34, 35, 36, 38, 44, 45, 48, 53, 54, 59, 65, 67, 74, 75, 77, 78, 79, 80, 81, 91, 92, 95, 98, 99, 102, 106, 114, 117, 118, 119, 121, 122, 123, 124, 125, 126, 127, 135, 136, 137, 138, 141, 142, 144], "summary": {"covered_lines": 60, "num_statements": 94, "percent_covered": 62.06896551724138, "percent_covered_display": "62.07", "missing_lines": 34, "excluded_lines": 0, "percent_statements_covered": 63.829787234042556, "percent_statements_covered_display": "63.83", "num_branches": 22, "num_partial_branches": 6, "covered_branches": 12, "missing_branches": 10, "percent_branches_covered": 54.54545454545455, "percent_branches_covered_display": "54.55"}, "missing_lines": [39, 40, 41, 42, 62, 63, 82, 83, 84, 86, 87, 88, 103, 107, 108, 109, 110, 111, 128, 129, 130, 131, 132, 146, 148, 149, 150, 151, 152, 153, 155, 156, 157, 158], "excluded_lines": [], "executed_branches": [[32, 33], [32, 38], [38, 44], [53, 54], [77, 78], [80, 81], [102, 106], [118, 119], [122, 123], [122, 135], [123, 124], [123, 125]], "missing_branches": [[38, 39], [53, 62], [77, 82], [80, 91], [82, 83], [82, 86], [102, 103], [118, 135], [149, 150], [149, 151]], "functions": {"upload_to_sftp": {"executed_lines": [26, 27, 28, 32, 33, 34, 35, 36, 38, 44, 45, 48, 53, 54, 59, 65, 67, 74, 75, 77, 78, 79, 80, 81, 91, 92, 95, 98, 99, 102, 106, 114, 117, 118, 119, 121, 122, 123, 124, 125, 126, 127, 135, 136, 137, 138, 141, 142, 144], "summary": {"covered_lines": 49, "num_statements": 78, "percent_covered": 61.0, "percent_covered_display": "61.00", "missing_lines": 29, "excluded_lines": 0, "percent_statements_covered": 62.82051282051282, "percent_statements_covered_display": "62.82", "num_branches": 22, "num_partial_branches": 6, "covered_branches": 12, "missing_branches": 10, "percent_branches_covered": 54.54545454545455, "percent_branches_covered_display": "54.55"}, "missing_lines": [39, 40, 41, 42, 62, 63, 82, 83, 84, 86, 87, 88, 103, 128, 129, 130, 131, 132, 146, 148, 149, 150, 151, 152, 153, 155, 156, 157, 158], "excluded_lines": [], "start_line": 18, "executed_branches": [[32, 33], [32, 38], [38, 44], [53, 54], [77, 78], [80, 81], [102, 106], [118, 119], [122, 123], [122, 135], [123, 124], [123, 125]], "missing_branches": [[38, 39], [53, 62], [77, 82], [80, 91], [82, 83], [82, 86], [102, 103], [118, 135], [149, 150], [149, 151]]}, "upload_to_sftp.check_exists_in_sftp": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 5, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [107, 108, 109, 110, 111], "excluded_lines": [], "start_line": 106, "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [3, 4, 6, 8, 9, 10, 11, 12, 14, 17, 18], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [3, 4, 6, 8, 9, 10, 11, 12, 14, 17, 18, 26, 27, 28, 32, 33, 34, 35, 36, 38, 44, 45, 48, 53, 54, 59, 65, 67, 74, 75, 77, 78, 79, 80, 81, 91, 92, 95, 98, 99, 102, 106, 114, 117, 118, 119, 121, 122, 123, 124, 125, 126, 127, 135, 136, 137, 138, 141, 142, 144], "summary": {"covered_lines": 60, "num_statements": 94, "percent_covered": 62.06896551724138, "percent_covered_display": "62.07", "missing_lines": 34, "excluded_lines": 0, "percent_statements_covered": 63.829787234042556, "percent_statements_covered_display": "63.83", "num_branches": 22, "num_partial_branches": 6, "covered_branches": 12, "missing_branches": 10, "percent_branches_covered": 54.54545454545455, "percent_branches_covered_display": "54.55"}, "missing_lines": [39, 40, 41, 42, 62, 63, 82, 83, 84, 86, 87, 88, 103, 107, 108, 109, 110, 111, 128, 129, 130, 131, 132, 146, 148, 149, 150, 151, 152, 153, 155, 156, 157, 158], "excluded_lines": [], "start_line": 1, "executed_branches": [[32, 33], [32, 38], [38, 44], [53, 54], [77, 78], [80, 81], [102, 106], [118, 119], [122, 123], [122, 135], [123, 124], [123, 125]], "missing_branches": [[38, 39], [53, 62], [77, 82], [80, 91], [82, 83], [82, 86], [102, 103], [118, 135], [149, 150], [149, 151]]}}}, "app/tasks/upload_to_webdav.py": {"executed_lines": [3, 4, 5, 7, 9, 10, 11, 12, 14, 17, 18, 26, 27, 28, 36, 37, 38, 39, 40, 43, 46, 47, 48, 49, 50, 53, 55, 56, 59, 61, 62, 65, 68, 69, 70, 79, 80, 81, 84, 86, 87, 88, 89, 91, 92, 93, 94, 95], "summary": {"covered_lines": 48, "num_statements": 48, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 10, "num_partial_branches": 0, "covered_branches": 10, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "executed_branches": [[36, 37], [36, 43], [46, 47], [46, 53], [55, 56], [55, 59], [61, 62], [61, 65], [79, 80], [79, 86]], "missing_branches": [], "functions": {"upload_to_webdav": {"executed_lines": [26, 27, 28, 36, 37, 38, 39, 40, 43, 46, 47, 48, 49, 50, 53, 55, 56, 59, 61, 62, 65, 68, 69, 70, 79, 80, 81, 84, 86, 87, 88, 89, 91, 92, 93, 94, 95], "summary": {"covered_lines": 37, "num_statements": 37, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 10, "num_partial_branches": 0, "covered_branches": 10, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 18, "executed_branches": [[36, 37], [36, 43], [46, 47], [46, 53], [55, 56], [55, 59], [61, 62], [61, 65], [79, 80], [79, 86]], "missing_branches": []}, "": {"executed_lines": [3, 4, 5, 7, 9, 10, 11, 12, 14, 17, 18], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [3, 4, 5, 7, 9, 10, 11, 12, 14, 17, 18, 26, 27, 28, 36, 37, 38, 39, 40, 43, 46, 47, 48, 49, 50, 53, 55, 56, 59, 61, 62, 65, 68, 69, 70, 79, 80, 81, 84, 86, 87, 88, 89, 91, 92, 93, 94, 95], "summary": {"covered_lines": 48, "num_statements": 48, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 10, "num_partial_branches": 0, "covered_branches": 10, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [[36, 37], [36, 43], [46, 47], [46, 53], [55, 56], [55, 59], [61, 62], [61, 65], [79, 80], [79, 86]], "missing_branches": []}}}, "app/tasks/upload_with_rclone.py": {"executed_lines": [3, 4, 5, 7, 8, 9, 10, 12, 15, 16, 25, 27, 28, 31, 33, 36, 37, 40, 44, 45, 48, 49, 50, 51, 52, 110, 111], "summary": {"covered_lines": 27, "num_statements": 98, "percent_covered": 27.868852459016395, "percent_covered_display": "27.87", "missing_lines": 71, "excluded_lines": 0, "percent_statements_covered": 27.551020408163264, "percent_statements_covered_display": "27.55", "num_branches": 24, "num_partial_branches": 1, "covered_branches": 7, "missing_branches": 17, "percent_branches_covered": 29.166666666666668, "percent_branches_covered_display": "29.17"}, "missing_lines": [54, 56, 58, 60, 63, 65, 68, 71, 73, 74, 75, 76, 77, 78, 79, 81, 82, 89, 91, 92, 93, 95, 96, 97, 98, 101, 103, 104, 105, 106, 107, 116, 118, 119, 122, 124, 129, 130, 131, 132, 133, 136, 137, 138, 140, 142, 145, 146, 147, 148, 149, 150, 153, 156, 157, 158, 159, 160, 162, 163, 164, 166, 172, 174, 175, 176, 178, 179, 180, 181, 188], "excluded_lines": [], "executed_branches": [[27, 28], [27, 31], [36, 37], [36, 40], [44, 45], [44, 48], [49, 50]], "missing_branches": [[49, 54], [71, 73], [71, 91], [118, 119], [118, 122], [130, 131], [130, 136], [140, 142], [140, 174], [146, 147], [146, 156], [149, 150], [149, 153], [157, 158], [157, 166], [159, 160], [159, 162]], "functions": {"upload_with_rclone": {"executed_lines": [25, 27, 28, 31, 33, 36, 37, 40, 44, 45, 48, 49, 50, 51, 52], "summary": {"covered_lines": 15, "num_statements": 46, "percent_covered": 39.285714285714285, "percent_covered_display": "39.29", "missing_lines": 31, "excluded_lines": 0, "percent_statements_covered": 32.608695652173914, "percent_statements_covered_display": "32.61", "num_branches": 10, "num_partial_branches": 1, "covered_branches": 7, "missing_branches": 3, "percent_branches_covered": 70.0, "percent_branches_covered_display": "70.00"}, "missing_lines": [54, 56, 58, 60, 63, 65, 68, 71, 73, 74, 75, 76, 77, 78, 79, 81, 82, 89, 91, 92, 93, 95, 96, 97, 98, 101, 103, 104, 105, 106, 107], "excluded_lines": [], "start_line": 16, "executed_branches": [[27, 28], [27, 31], [36, 37], [36, 40], [44, 45], [44, 48], [49, 50]], "missing_branches": [[49, 54], [71, 73], [71, 91]]}, "send_to_all_rclone_destinations": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 40, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 40, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00", "num_branches": 14, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 14, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0.00"}, "missing_lines": [116, 118, 119, 122, 124, 129, 130, 131, 132, 133, 136, 137, 138, 140, 142, 145, 146, 147, 148, 149, 150, 153, 156, 157, 158, 159, 160, 162, 163, 164, 166, 172, 174, 175, 176, 178, 179, 180, 181, 188], "excluded_lines": [], "start_line": 111, "executed_branches": [], "missing_branches": [[118, 119], [118, 122], [130, 131], [130, 136], [140, 142], [140, 174], [146, 147], [146, 156], [149, 150], [149, 153], [157, 158], [157, 166], [159, 160], [159, 162]]}, "": {"executed_lines": [3, 4, 5, 7, 8, 9, 10, 12, 15, 16, 110, 111], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [3, 4, 5, 7, 8, 9, 10, 12, 15, 16, 25, 27, 28, 31, 33, 36, 37, 40, 44, 45, 48, 49, 50, 51, 52, 110, 111], "summary": {"covered_lines": 27, "num_statements": 98, "percent_covered": 27.868852459016395, "percent_covered_display": "27.87", "missing_lines": 71, "excluded_lines": 0, "percent_statements_covered": 27.551020408163264, "percent_statements_covered_display": "27.55", "num_branches": 24, "num_partial_branches": 1, "covered_branches": 7, "missing_branches": 17, "percent_branches_covered": 29.166666666666668, "percent_branches_covered_display": "29.17"}, "missing_lines": [54, 56, 58, 60, 63, 65, 68, 71, 73, 74, 75, 76, 77, 78, 79, 81, 82, 89, 91, 92, 93, 95, 96, 97, 98, 101, 103, 104, 105, 106, 107, 116, 118, 119, 122, 124, 129, 130, 131, 132, 133, 136, 137, 138, 140, 142, 145, 146, 147, 148, 149, 150, 153, 156, 157, 158, 159, 160, 162, 163, 164, 166, 172, 174, 175, 176, 178, 179, 180, 181, 188], "excluded_lines": [], "start_line": 1, "executed_branches": [[27, 28], [27, 31], [36, 37], [36, 40], [44, 45], [44, 48], [49, 50]], "missing_branches": [[49, 54], [71, 73], [71, 91], [118, 119], [118, 122], [130, 131], [130, 136], [140, 142], [140, 174], [146, 147], [146, 156], [149, 150], [149, 153], [157, 158], [157, 166], [159, 160], [159, 162]]}}}, "app/tasks/uptime_kuma_tasks.py": {"executed_lines": [3, 5, 6, 8, 10, 13, 14, 20, 21, 22, 24, 25, 26, 27, 28, 29, 30, 31, 32], "summary": {"covered_lines": 19, "num_statements": 19, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "executed_branches": [[20, 21], [20, 24]], "missing_branches": [], "functions": {"ping_uptime_kuma": {"executed_lines": [20, 21, 22, 24, 25, 26, 27, 28, 29, 30, 31, 32], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 14, "executed_branches": [[20, 21], [20, 24]], "missing_branches": []}, "": {"executed_lines": [3, 5, 6, 8, 10, 13, 14], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [3, 5, 6, 8, 10, 13, 14, 20, 21, 22, 24, 25, 26, 27, 28, 29, 30, 31, 32], "summary": {"covered_lines": 19, "num_statements": 19, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [[20, 21], [20, 24]], "missing_branches": []}}}, "app/utils/__init__.py": {"executed_lines": [6, 7, 8, 11], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": [], "functions": {"": {"executed_lines": [6, 7, 8, 11], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [6, 7, 8, 11], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}}, "app/utils/config_loader.py": {"executed_lines": [10, 11, 13, 15, 17, 20, 31, 32, 34, 35, 36, 39, 40, 41, 42, 45, 47, 48, 50, 53, 54, 55, 57, 58, 68, 79, 80, 83, 84, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 106, 107, 111, 114], "summary": {"covered_lines": 48, "num_statements": 66, "percent_covered": 74.44444444444444, "percent_covered_display": "74.44", "missing_lines": 18, "excluded_lines": 0, "percent_statements_covered": 72.72727272727273, "percent_statements_covered_display": "72.73", "num_branches": 24, "num_partial_branches": 5, "covered_branches": 19, "missing_branches": 5, "percent_branches_covered": 79.16666666666667, "percent_branches_covered_display": "79.17"}, "missing_lines": [60, 62, 63, 65, 86, 87, 108, 127, 128, 130, 131, 132, 133, 134, 136, 137, 138, 139], "excluded_lines": [], "executed_branches": [[34, 35], [34, 39], [40, 41], [40, 57], [45, 47], [48, 50], [57, 58], [79, 80], [79, 83], [84, 90], [90, 91], [90, 92], [92, 93], [92, 98], [98, 99], [98, 104], [104, 106], [104, 111], [106, 107]], "missing_branches": [[45, 40], [48, 40], [57, 60], [84, 86], [106, 108]], "functions": {"load_settings_from_db": {"executed_lines": [31, 32, 34, 35, 36, 39, 40, 41, 42, 45, 47, 48, 50, 53, 54, 55, 57, 58], "summary": {"covered_lines": 18, "num_statements": 22, "percent_covered": 78.125, "percent_covered_display": "78.12", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 81.81818181818181, "percent_statements_covered_display": "81.82", "num_branches": 10, "num_partial_branches": 3, "covered_branches": 7, "missing_branches": 3, "percent_branches_covered": 70.0, "percent_branches_covered_display": "70.00"}, "missing_lines": [60, 62, 63, 65], "excluded_lines": [], "start_line": 20, "executed_branches": [[34, 35], [34, 39], [40, 41], [40, 57], [45, 47], [48, 50], [57, 58]], "missing_branches": [[45, 40], [48, 40], [57, 60]]}, "convert_setting_value": {"executed_lines": [79, 80, 83, 84, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 106, 107, 111], "summary": {"covered_lines": 22, "num_statements": 25, "percent_covered": 87.17948717948718, "percent_covered_display": "87.18", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 88.0, "percent_statements_covered_display": "88.00", "num_branches": 14, "num_partial_branches": 2, "covered_branches": 12, "missing_branches": 2, "percent_branches_covered": 85.71428571428571, "percent_branches_covered_display": "85.71"}, "missing_lines": [86, 87, 108], "excluded_lines": [], "start_line": 68, "executed_branches": [[79, 80], [79, 83], [84, 90], [90, 91], [90, 92], [92, 93], [92, 98], [98, 99], [98, 104], [104, 106], [104, 111], [106, 107]], "missing_branches": [[84, 86], [106, 108]]}, "reload_settings_from_db": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 11, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 11, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [127, 128, 130, 131, 132, 133, 134, 136, 137, 138, 139], "excluded_lines": [], "start_line": 114, "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [10, 11, 13, 15, 17, 20, 68, 114], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [10, 11, 13, 15, 17, 20, 31, 32, 34, 35, 36, 39, 40, 41, 42, 45, 47, 48, 50, 53, 54, 55, 57, 58, 68, 79, 80, 83, 84, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 106, 107, 111, 114], "summary": {"covered_lines": 48, "num_statements": 66, "percent_covered": 74.44444444444444, "percent_covered_display": "74.44", "missing_lines": 18, "excluded_lines": 0, "percent_statements_covered": 72.72727272727273, "percent_statements_covered_display": "72.73", "num_branches": 24, "num_partial_branches": 5, "covered_branches": 19, "missing_branches": 5, "percent_branches_covered": 79.16666666666667, "percent_branches_covered_display": "79.17"}, "missing_lines": [60, 62, 63, 65, 86, 87, 108, 127, 128, 130, 131, 132, 133, 134, 136, 137, 138, 139], "excluded_lines": [], "start_line": 1, "executed_branches": [[34, 35], [34, 39], [40, 41], [40, 57], [45, 47], [48, 50], [57, 58], [79, 80], [79, 83], [84, 90], [90, 91], [90, 92], [92, 93], [92, 98], [98, 99], [98, 104], [104, 106], [104, 111], [106, 107]], "missing_branches": [[45, 40], [48, 40], [57, 60], [84, 86], [106, 108]]}}}, "app/utils/config_validator.py": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 5, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [7, 8, 9, 12, 19], "excluded_lines": [], "executed_branches": [], "missing_branches": [], "functions": {"": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 5, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [7, 8, 9, 12, 19], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 5, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [7, 8, 9, 12, 19], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}}, "app/utils/config_validator/__init__.py": {"executed_lines": [5, 6, 7, 8, 16], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": [], "functions": {"": {"executed_lines": [5, 6, 7, 8, 16], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [5, 6, 7, 8, 16], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}}, "app/utils/config_validator/masking.py": {"executed_lines": [6, 11, 12, 13], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "executed_branches": [[11, 12], [11, 13]], "missing_branches": [], "functions": {"mask_sensitive_value": {"executed_lines": [11, 12, 13], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 6, "executed_branches": [[11, 12], [11, 13]], "missing_branches": []}, "": {"executed_lines": [6], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [6, 11, 12, 13], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [[11, 12], [11, 13]], "missing_branches": []}}}, "app/utils/config_validator/providers.py": {"executed_lines": [5, 6, 9, 13, 16, 17, 23, 25, 39, 61, 76, 90, 109, 129, 151, 157, 160, 162, 164, 190, 192, 193, 196, 216, 236, 251, 273, 295, 308, 327], "summary": {"covered_lines": 30, "num_statements": 31, "percent_covered": 93.93939393939394, "percent_covered_display": "93.94", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 96.7741935483871, "percent_statements_covered_display": "96.77", "num_branches": 2, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 1, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50.00"}, "missing_lines": [194], "excluded_lines": [], "executed_branches": [[193, 196]], "missing_branches": [[193, 194]], "functions": {"get_provider_status": {"executed_lines": [13, 16, 17, 23, 25, 39, 61, 76, 90, 109, 129, 151, 157, 160, 162, 164, 190, 192, 193, 196, 216, 236, 251, 273, 295, 308, 327], "summary": {"covered_lines": 27, "num_statements": 28, "percent_covered": 93.33333333333333, "percent_covered_display": "93.33", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 96.42857142857143, "percent_statements_covered_display": "96.43", "num_branches": 2, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 1, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50.00"}, "missing_lines": [194], "excluded_lines": [], "start_line": 9, "executed_branches": [[193, 196]], "missing_branches": [[193, 194]]}, "": {"executed_lines": [5, 6, 9], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [5, 6, 9, 13, 16, 17, 23, 25, 39, 61, 76, 90, 109, 129, 151, 157, 160, 162, 164, 190, 192, 193, 196, 216, 236, 251, 273, 295, 308, 327], "summary": {"covered_lines": 30, "num_statements": 31, "percent_covered": 93.93939393939394, "percent_covered_display": "93.94", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 96.7741935483871, "percent_statements_covered_display": "96.77", "num_branches": 2, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 1, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50.00"}, "missing_lines": [194], "excluded_lines": [], "start_line": 1, "executed_branches": [[193, 196]], "missing_branches": [[193, 194]]}}}, "app/utils/config_validator/settings_display.py": {"executed_lines": [5, 7, 8, 10, 13, 15, 16, 17, 18, 20, 26, 27, 28, 29, 30, 36, 43, 56, 57, 60, 69, 77, 188, 199, 201, 202, 203, 205, 206, 207, 210, 211, 212, 213, 214, 217, 229, 232, 235, 236, 240, 241, 242, 246, 247, 248, 250, 252, 253, 255], "summary": {"covered_lines": 50, "num_statements": 59, "percent_covered": 83.87096774193549, "percent_covered_display": "83.87", "missing_lines": 9, "excluded_lines": 0, "percent_statements_covered": 84.7457627118644, "percent_statements_covered_display": "84.75", "num_branches": 34, "num_partial_branches": 4, "covered_branches": 28, "missing_branches": 6, "percent_branches_covered": 82.3529411764706, "percent_branches_covered_display": "82.35"}, "missing_lines": [44, 45, 47, 48, 49, 51, 52, 53, 54], "excluded_lines": [], "executed_branches": [[16, 17], [16, 57], [17, 16], [17, 18], [20, 26], [20, 43], [26, 27], [26, 43], [27, 28], [27, 36], [43, 56], [202, 203], [202, 205], [206, 207], [210, 211], [210, 255], [212, 213], [212, 252], [213, 214], [232, 235], [232, 240], [240, 241], [240, 246], [241, 242], [241, 246], [247, 248], [247, 250], [252, 253]], "missing_branches": [[43, 44], [47, 48], [47, 51], [206, 210], [213, 212], [252, 210]], "functions": {"dump_all_settings": {"executed_lines": [15, 16, 17, 18, 20, 26, 27, 28, 29, 30, 36, 43, 56, 57], "summary": {"covered_lines": 14, "num_statements": 23, "percent_covered": 67.56756756756756, "percent_covered_display": "67.57", "missing_lines": 9, "excluded_lines": 0, "percent_statements_covered": 60.869565217391305, "percent_statements_covered_display": "60.87", "num_branches": 14, "num_partial_branches": 1, "covered_branches": 11, "missing_branches": 3, "percent_branches_covered": 78.57142857142857, "percent_branches_covered_display": "78.57"}, "missing_lines": [44, 45, 47, 48, 49, 51, 52, 53, 54], "excluded_lines": [], "start_line": 13, "executed_branches": [[16, 17], [16, 57], [17, 16], [17, 18], [20, 26], [20, 43], [26, 27], [26, 43], [27, 28], [27, 36], [43, 56]], "missing_branches": [[43, 44], [47, 48], [47, 51]]}, "get_settings_for_display": {"executed_lines": [69, 77, 188, 199, 201, 202, 203, 205, 206, 207, 210, 211, 212, 213, 214, 217, 229, 232, 235, 236, 240, 241, 242, 246, 247, 248, 250, 252, 253, 255], "summary": {"covered_lines": 30, "num_statements": 30, "percent_covered": 94.0, "percent_covered_display": "94.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 20, "num_partial_branches": 3, "covered_branches": 17, "missing_branches": 3, "percent_branches_covered": 85.0, "percent_branches_covered_display": "85.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 60, "executed_branches": [[202, 203], [202, 205], [206, 207], [210, 211], [210, 255], [212, 213], [212, 252], [213, 214], [232, 235], [232, 240], [240, 241], [240, 246], [241, 242], [241, 246], [247, 248], [247, 250], [252, 253]], "missing_branches": [[206, 210], [213, 212], [252, 210]]}, "": {"executed_lines": [5, 7, 8, 10, 13, 60], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [5, 7, 8, 10, 13, 15, 16, 17, 18, 20, 26, 27, 28, 29, 30, 36, 43, 56, 57, 60, 69, 77, 188, 199, 201, 202, 203, 205, 206, 207, 210, 211, 212, 213, 214, 217, 229, 232, 235, 236, 240, 241, 242, 246, 247, 248, 250, 252, 253, 255], "summary": {"covered_lines": 50, "num_statements": 59, "percent_covered": 83.87096774193549, "percent_covered_display": "83.87", "missing_lines": 9, "excluded_lines": 0, "percent_statements_covered": 84.7457627118644, "percent_statements_covered_display": "84.75", "num_branches": 34, "num_partial_branches": 4, "covered_branches": 28, "missing_branches": 6, "percent_branches_covered": 82.3529411764706, "percent_branches_covered_display": "82.35"}, "missing_lines": [44, 45, 47, 48, 49, 51, 52, 53, 54], "excluded_lines": [], "start_line": 1, "executed_branches": [[16, 17], [16, 57], [17, 16], [17, 18], [20, 26], [20, 43], [26, 27], [26, 43], [27, 28], [27, 36], [43, 56], [202, 203], [202, 205], [206, 207], [210, 211], [210, 255], [212, 213], [212, 252], [213, 214], [232, 235], [232, 240], [240, 241], [240, 246], [241, 242], [241, 246], [247, 248], [247, 250], [252, 253]], "missing_branches": [[43, 44], [47, 48], [47, 51], [206, 210], [213, 212], [252, 210]]}}}, "app/utils/config_validator/validators.py": {"executed_lines": [3, 4, 5, 7, 9, 12, 14, 17, 18, 19, 23, 31, 32, 33, 34, 36, 39, 41, 44, 69, 72, 74, 77, 78, 83, 84, 87, 88, 93, 94, 97, 98, 99, 101, 102, 105, 106, 108, 111, 112, 113, 114, 115, 116, 119, 120, 121, 122, 123, 124, 127, 128, 129, 130, 131, 132, 133, 134, 137, 138, 139, 140, 141, 142, 143, 144, 147, 148, 149, 150, 151, 152, 155, 156, 157, 158, 159, 160, 163, 164, 169, 170, 173, 174, 175, 176, 178, 181, 183, 186, 187, 205, 208, 210, 213, 215, 217, 220, 224, 225, 228, 231, 232, 233, 238, 239, 240, 241, 246, 247, 248, 253], "summary": {"covered_lines": 112, "num_statements": 145, "percent_covered": 65.19823788546256, "percent_covered_display": "65.20", "missing_lines": 33, "excluded_lines": 0, "percent_statements_covered": 77.24137931034483, "percent_statements_covered_display": "77.24", "num_branches": 82, "num_partial_branches": 34, "covered_branches": 36, "missing_branches": 46, "percent_branches_covered": 43.90243902439025, "percent_branches_covered_display": "43.90"}, "missing_lines": [20, 24, 26, 27, 28, 46, 47, 48, 49, 52, 56, 62, 63, 66, 67, 103, 189, 191, 193, 195, 196, 197, 198, 199, 200, 202, 203, 206, 221, 226, 235, 243, 250], "excluded_lines": [], "executed_branches": [[17, 18], [19, 23], [23, 31], [31, 32], [33, 34], [44, 69], [78, 83], [88, 93], [98, 99], [102, 105], [105, 106], [112, 113], [114, 115], [120, 121], [122, 123], [128, 129], [130, 131], [132, 133], [138, 139], [140, 141], [142, 143], [148, 149], [150, 151], [156, 157], [158, 159], [164, 169], [174, 175], [186, 187], [205, 208], [220, 224], [225, 228], [232, 233], [239, 240], [239, 246], [240, 241], [247, 248]], "missing_branches": [[17, 19], [19, 20], [23, 24], [31, 33], [33, 36], [44, 46], [46, 47], [46, 48], [48, 49], [48, 52], [62, 63], [62, 66], [66, 67], [66, 69], [78, 84], [88, 94], [98, 101], [102, 103], [105, 108], [112, 114], [114, 116], [120, 122], [122, 124], [128, 130], [130, 132], [132, 134], [138, 140], [140, 142], [142, 144], [148, 150], [150, 152], [156, 158], [158, 160], [164, 170], [174, 176], [186, 189], [195, 196], [195, 205], [197, 195], [197, 198], [205, 206], [220, 221], [225, 226], [232, 235], [240, 243], [247, 250]], "functions": {"validate_email_config": {"executed_lines": [14, 17, 18, 19, 23, 31, 32, 33, 34, 36], "summary": {"covered_lines": 10, "num_statements": 15, "percent_covered": 60.0, "percent_covered_display": "60.00", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 66.66666666666667, "percent_statements_covered_display": "66.67", "num_branches": 10, "num_partial_branches": 5, "covered_branches": 5, "missing_branches": 5, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50.00"}, "missing_lines": [20, 24, 26, 27, 28], "excluded_lines": [], "start_line": 12, "executed_branches": [[17, 18], [19, 23], [23, 31], [31, 32], [33, 34]], "missing_branches": [[17, 19], [19, 20], [23, 24], [31, 33], [33, 36]]}, "validate_auth_config": {"executed_lines": [41, 44, 69], "summary": {"covered_lines": 3, "num_statements": 13, "percent_covered": 17.391304347826086, "percent_covered_display": "17.39", "missing_lines": 10, "excluded_lines": 0, "percent_statements_covered": 23.076923076923077, "percent_statements_covered_display": "23.08", "num_branches": 10, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 9, "percent_branches_covered": 10.0, "percent_branches_covered_display": "10.00"}, "missing_lines": [46, 47, 48, 49, 52, 56, 62, 63, 66, 67], "excluded_lines": [], "start_line": 39, "executed_branches": [[44, 69]], "missing_branches": [[44, 46], [46, 47], [46, 48], [48, 49], [48, 52], [62, 63], [62, 66], [66, 67], [66, 69]]}, "validate_storage_configs": {"executed_lines": [74, 77, 78, 83, 84, 87, 88, 93, 94, 97, 98, 99, 101, 102, 105, 106, 108, 111, 112, 113, 114, 115, 116, 119, 120, 121, 122, 123, 124, 127, 128, 129, 130, 131, 132, 133, 134, 137, 138, 139, 140, 141, 142, 143, 144, 147, 148, 149, 150, 151, 152, 155, 156, 157, 158, 159, 160, 163, 164, 169, 170, 173, 174, 175, 176, 178], "summary": {"covered_lines": 66, "num_statements": 67, "percent_covered": 79.81651376146789, "percent_covered_display": "79.82", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 98.50746268656717, "percent_statements_covered_display": "98.51", "num_branches": 42, "num_partial_branches": 21, "covered_branches": 21, "missing_branches": 21, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50.00"}, "missing_lines": [103], "excluded_lines": [], "start_line": 72, "executed_branches": [[78, 83], [88, 93], [98, 99], [102, 105], [105, 106], [112, 113], [114, 115], [120, 121], [122, 123], [128, 129], [130, 131], [132, 133], [138, 139], [140, 141], [142, 143], [148, 149], [150, 151], [156, 157], [158, 159], [164, 169], [174, 175]], "missing_branches": [[78, 84], [88, 94], [98, 101], [102, 103], [105, 108], [112, 114], [114, 116], [120, 122], [122, 124], [128, 130], [130, 132], [132, 134], [138, 140], [140, 142], [142, 144], [148, 150], [150, 152], [156, 158], [158, 160], [164, 170], [174, 176]]}, "validate_notification_config": {"executed_lines": [183, 186, 187, 205, 208, 210], "summary": {"covered_lines": 6, "num_statements": 18, "percent_covered": 30.76923076923077, "percent_covered_display": "30.77", "missing_lines": 12, "excluded_lines": 0, "percent_statements_covered": 33.333333333333336, "percent_statements_covered_display": "33.33", "num_branches": 8, "num_partial_branches": 2, "covered_branches": 2, "missing_branches": 6, "percent_branches_covered": 25.0, "percent_branches_covered_display": "25.00"}, "missing_lines": [189, 191, 193, 195, 196, 197, 198, 199, 200, 202, 203, 206], "excluded_lines": [], "start_line": 181, "executed_branches": [[186, 187], [205, 208]], "missing_branches": [[186, 189], [195, 196], [195, 205], [197, 195], [197, 198], [205, 206]]}, "check_all_configs": {"executed_lines": [215, 217, 220, 224, 225, 228, 231, 232, 233, 238, 239, 240, 241, 246, 247, 248, 253], "summary": {"covered_lines": 17, "num_statements": 22, "percent_covered": 70.58823529411765, "percent_covered_display": "70.59", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 77.27272727272727, "percent_statements_covered_display": "77.27", "num_branches": 12, "num_partial_branches": 5, "covered_branches": 7, "missing_branches": 5, "percent_branches_covered": 58.333333333333336, "percent_branches_covered_display": "58.33"}, "missing_lines": [221, 226, 235, 243, 250], "excluded_lines": [], "start_line": 213, "executed_branches": [[220, 224], [225, 228], [232, 233], [239, 240], [239, 246], [240, 241], [247, 248]], "missing_branches": [[220, 221], [225, 226], [232, 235], [240, 243], [247, 250]]}, "": {"executed_lines": [3, 4, 5, 7, 9, 12, 39, 72, 181, 213], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [3, 4, 5, 7, 9, 12, 14, 17, 18, 19, 23, 31, 32, 33, 34, 36, 39, 41, 44, 69, 72, 74, 77, 78, 83, 84, 87, 88, 93, 94, 97, 98, 99, 101, 102, 105, 106, 108, 111, 112, 113, 114, 115, 116, 119, 120, 121, 122, 123, 124, 127, 128, 129, 130, 131, 132, 133, 134, 137, 138, 139, 140, 141, 142, 143, 144, 147, 148, 149, 150, 151, 152, 155, 156, 157, 158, 159, 160, 163, 164, 169, 170, 173, 174, 175, 176, 178, 181, 183, 186, 187, 205, 208, 210, 213, 215, 217, 220, 224, 225, 228, 231, 232, 233, 238, 239, 240, 241, 246, 247, 248, 253], "summary": {"covered_lines": 112, "num_statements": 145, "percent_covered": 65.19823788546256, "percent_covered_display": "65.20", "missing_lines": 33, "excluded_lines": 0, "percent_statements_covered": 77.24137931034483, "percent_statements_covered_display": "77.24", "num_branches": 82, "num_partial_branches": 34, "covered_branches": 36, "missing_branches": 46, "percent_branches_covered": 43.90243902439025, "percent_branches_covered_display": "43.90"}, "missing_lines": [20, 24, 26, 27, 28, 46, 47, 48, 49, 52, 56, 62, 63, 66, 67, 103, 189, 191, 193, 195, 196, 197, 198, 199, 200, 202, 203, 206, 221, 226, 235, 243, 250], "excluded_lines": [], "start_line": 1, "executed_branches": [[17, 18], [19, 23], [23, 31], [31, 32], [33, 34], [44, 69], [78, 83], [88, 93], [98, 99], [102, 105], [105, 106], [112, 113], [114, 115], [120, 121], [122, 123], [128, 129], [130, 131], [132, 133], [138, 139], [140, 141], [142, 143], [148, 149], [150, 151], [156, 157], [158, 159], [164, 169], [174, 175], [186, 187], [205, 208], [220, 224], [225, 228], [232, 233], [239, 240], [239, 246], [240, 241], [247, 248]], "missing_branches": [[17, 19], [19, 20], [23, 24], [31, 33], [33, 36], [44, 46], [46, 47], [46, 48], [48, 49], [48, 52], [62, 63], [62, 66], [66, 67], [66, 69], [78, 84], [88, 94], [98, 101], [102, 103], [105, 108], [112, 114], [114, 116], [120, 122], [122, 124], [128, 130], [130, 132], [132, 134], [138, 140], [140, 142], [142, 144], [148, 150], [150, 152], [156, 158], [158, 160], [164, 170], [174, 176], [186, 189], [195, 196], [195, 205], [197, 195], [197, 198], [205, 206], [220, 221], [225, 226], [232, 235], [240, 243], [247, 250]]}}}, "app/utils/encryption.py": {"executed_lines": [8, 9, 10, 11, 13, 16, 19, 33, 34, 35, 37, 41, 44, 45, 47, 48, 61, 64, 74, 75, 77, 79, 81, 82, 84, 85, 87, 88, 89, 91, 94, 104, 105, 108, 110, 112, 114, 115, 116, 118, 120, 121, 122, 123, 124, 125, 128, 138, 141, 148], "summary": {"covered_lines": 50, "num_statements": 56, "percent_covered": 91.17647058823529, "percent_covered_display": "91.18", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 89.28571428571429, "percent_statements_covered_display": "89.29", "num_branches": 12, "num_partial_branches": 0, "covered_branches": 12, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [50, 51, 56, 57, 58, 59], "excluded_lines": [], "executed_branches": [[33, 34], [33, 61], [74, 75], [74, 77], [79, 81], [79, 84], [104, 105], [104, 108], [108, 110], [108, 112], [114, 115], [114, 118]], "missing_branches": [], "functions": {"_get_cipher_suite": {"executed_lines": [33, 34, 35, 37, 41, 44, 45, 47, 48, 61], "summary": {"covered_lines": 10, "num_statements": 16, "percent_covered": 66.66666666666667, "percent_covered_display": "66.67", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 62.5, "percent_statements_covered_display": "62.50", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [50, 51, 56, 57, 58, 59], "excluded_lines": [], "start_line": 19, "executed_branches": [[33, 34], [33, 61]], "missing_branches": []}, "encrypt_value": {"executed_lines": [74, 75, 77, 79, 81, 82, 84, 85, 87, 88, 89, 91], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 64, "executed_branches": [[74, 75], [74, 77], [79, 81], [79, 84]], "missing_branches": []}, "decrypt_value": {"executed_lines": [104, 105, 108, 110, 112, 114, 115, 116, 118, 120, 121, 122, 123, 124, 125], "summary": {"covered_lines": 15, "num_statements": 15, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 6, "num_partial_branches": 0, "covered_branches": 6, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 94, "executed_branches": [[104, 105], [104, 108], [108, 110], [108, 112], [114, 115], [114, 118]], "missing_branches": []}, "is_encrypted": {"executed_lines": [138], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 128, "executed_branches": [], "missing_branches": []}, "is_encryption_available": {"executed_lines": [148], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 141, "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [8, 9, 10, 11, 13, 16, 19, 64, 94, 128, 141], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [8, 9, 10, 11, 13, 16, 19, 33, 34, 35, 37, 41, 44, 45, 47, 48, 61, 64, 74, 75, 77, 79, 81, 82, 84, 85, 87, 88, 89, 91, 94, 104, 105, 108, 110, 112, 114, 115, 116, 118, 120, 121, 122, 123, 124, 125, 128, 138, 141, 148], "summary": {"covered_lines": 50, "num_statements": 56, "percent_covered": 91.17647058823529, "percent_covered_display": "91.18", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 89.28571428571429, "percent_statements_covered_display": "89.29", "num_branches": 12, "num_partial_branches": 0, "covered_branches": 12, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [50, 51, 56, 57, 58, 59], "excluded_lines": [], "start_line": 1, "executed_branches": [[33, 34], [33, 61], [74, 75], [74, 77], [79, 81], [79, 84], [104, 105], [104, 108], [108, 110], [108, 112], [114, 115], [114, 118]], "missing_branches": []}}}, "app/utils/file_operations.py": {"executed_lines": [1, 4, 9, 10, 11, 12, 13, 14, 15, 16], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "executed_branches": [[13, 14], [13, 15]], "missing_branches": [], "functions": {"hash_file": {"executed_lines": [9, 10, 11, 12, 13, 14, 15, 16], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 4, "executed_branches": [[13, 14], [13, 15]], "missing_branches": []}, "": {"executed_lines": [1, 4], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [1, 4, 9, 10, 11, 12, 13, 14, 15, 16], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [[13, 14], [13, 15]], "missing_branches": []}}}, "app/utils/file_queries.py": {"executed_lines": [8, 10, 11, 13, 16, 50, 51, 55, 57, 80, 81, 84, 86, 88, 89, 90, 92, 93, 94, 96, 97, 98, 101, 104, 107, 116, 119, 123], "summary": {"covered_lines": 28, "num_statements": 29, "percent_covered": 93.02325581395348, "percent_covered_display": "93.02", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 96.55172413793103, "percent_statements_covered_display": "96.55", "num_branches": 14, "num_partial_branches": 2, "covered_branches": 12, "missing_branches": 2, "percent_branches_covered": 85.71428571428571, "percent_branches_covered_display": "85.71"}, "missing_lines": [121], "excluded_lines": [], "executed_branches": [[50, 51], [50, 55], [80, 81], [86, 88], [86, 90], [90, 92], [90, 94], [94, 96], [94, 98], [98, 101], [98, 119], [119, 123]], "missing_branches": [[80, 84], [119, 121]], "functions": {"apply_status_filter": {"executed_lines": [50, 51, 55, 57, 80, 81, 84, 86, 88, 89, 90, 92, 93, 94, 96, 97, 98, 101, 104, 107, 116, 119, 123], "summary": {"covered_lines": 23, "num_statements": 24, "percent_covered": 92.10526315789474, "percent_covered_display": "92.11", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 95.83333333333333, "percent_statements_covered_display": "95.83", "num_branches": 14, "num_partial_branches": 2, "covered_branches": 12, "missing_branches": 2, "percent_branches_covered": 85.71428571428571, "percent_branches_covered_display": "85.71"}, "missing_lines": [121], "excluded_lines": [], "start_line": 16, "executed_branches": [[50, 51], [50, 55], [80, 81], [86, 88], [86, 90], [90, 92], [90, 94], [94, 96], [94, 98], [98, 101], [98, 119], [119, 123]], "missing_branches": [[80, 84], [119, 121]]}, "": {"executed_lines": [8, 10, 11, 13, 16], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [8, 10, 11, 13, 16, 50, 51, 55, 57, 80, 81, 84, 86, 88, 89, 90, 92, 93, 94, 96, 97, 98, 101, 104, 107, 116, 119, 123], "summary": {"covered_lines": 28, "num_statements": 29, "percent_covered": 93.02325581395348, "percent_covered_display": "93.02", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 96.55172413793103, "percent_statements_covered_display": "96.55", "num_branches": 14, "num_partial_branches": 2, "covered_branches": 12, "missing_branches": 2, "percent_branches_covered": 85.71428571428571, "percent_branches_covered_display": "85.71"}, "missing_lines": [121], "excluded_lines": [], "start_line": 1, "executed_branches": [[50, 51], [50, 55], [80, 81], [86, 88], [86, 90], [90, 92], [90, 94], [94, 96], [94, 98], [98, 101], [98, 119], [119, 123]], "missing_branches": [[80, 84], [119, 121]]}}}, "app/utils/file_splitting.py": {"executed_lines": [8, 9, 10, 11, 13, 15, 18, 53, 54, 57, 58, 59, 62, 63, 64, 65, 66, 67, 69, 74, 76, 77, 78, 79, 81, 83, 85, 86, 87, 90, 91, 92, 93, 95, 99, 119, 139, 140, 141, 142, 143, 144, 146, 147, 150, 161, 162, 164, 165, 167, 168], "summary": {"covered_lines": 51, "num_statements": 73, "percent_covered": 69.89247311827957, "percent_covered_display": "69.89", "missing_lines": 22, "excluded_lines": 0, "percent_statements_covered": 69.86301369863014, "percent_statements_covered_display": "69.86", "num_branches": 20, "num_partial_branches": 4, "covered_branches": 14, "missing_branches": 6, "percent_branches_covered": 70.0, "percent_branches_covered_display": "70.00"}, "missing_lines": [70, 71, 102, 103, 104, 107, 108, 109, 111, 112, 115, 116, 117, 118, 122, 127, 128, 129, 130, 133, 134, 135], "excluded_lines": [], "executed_branches": [[53, 54], [53, 57], [57, 58], [57, 59], [69, 74], [83, 85], [83, 139], [99, 119], [119, 83], [139, 140], [161, 162], [161, 164], [164, 165], [164, 167]], "missing_branches": [[69, 70], [99, 102], [103, 104], [103, 107], [119, 122], [139, 146]], "functions": {"split_pdf_by_size": {"executed_lines": [53, 54, 57, 58, 59, 62, 63, 64, 65, 66, 67, 69, 74, 76, 77, 78, 79, 81, 83, 85, 86, 87, 90, 91, 92, 93, 95, 99, 119, 139, 140, 141, 142, 143, 144, 146, 147], "summary": {"covered_lines": 37, "num_statements": 59, "percent_covered": 62.666666666666664, "percent_covered_display": "62.67", "missing_lines": 22, "excluded_lines": 0, "percent_statements_covered": 62.71186440677966, "percent_statements_covered_display": "62.71", "num_branches": 16, "num_partial_branches": 4, "covered_branches": 10, "missing_branches": 6, "percent_branches_covered": 62.5, "percent_branches_covered_display": "62.50"}, "missing_lines": [70, 71, 102, 103, 104, 107, 108, 109, 111, 112, 115, 116, 117, 118, 122, 127, 128, 129, 130, 133, 134, 135], "excluded_lines": [], "start_line": 18, "executed_branches": [[53, 54], [53, 57], [57, 58], [57, 59], [69, 74], [83, 85], [83, 139], [99, 119], [119, 83], [139, 140]], "missing_branches": [[69, 70], [99, 102], [103, 104], [103, 107], [119, 122], [139, 146]]}, "should_split_file": {"executed_lines": [161, 162, 164, 165, 167, 168], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 150, "executed_branches": [[161, 162], [161, 164], [164, 165], [164, 167]], "missing_branches": []}, "": {"executed_lines": [8, 9, 10, 11, 13, 15, 18, 150], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [8, 9, 10, 11, 13, 15, 18, 53, 54, 57, 58, 59, 62, 63, 64, 65, 66, 67, 69, 74, 76, 77, 78, 79, 81, 83, 85, 86, 87, 90, 91, 92, 93, 95, 99, 119, 139, 140, 141, 142, 143, 144, 146, 147, 150, 161, 162, 164, 165, 167, 168], "summary": {"covered_lines": 51, "num_statements": 73, "percent_covered": 69.89247311827957, "percent_covered_display": "69.89", "missing_lines": 22, "excluded_lines": 0, "percent_statements_covered": 69.86301369863014, "percent_statements_covered_display": "69.86", "num_branches": 20, "num_partial_branches": 4, "covered_branches": 14, "missing_branches": 6, "percent_branches_covered": 70.0, "percent_branches_covered_display": "70.00"}, "missing_lines": [70, 71, 102, 103, 104, 107, 108, 109, 111, 112, 115, 116, 117, 118, 122, 127, 128, 129, 130, 133, 134, 135], "excluded_lines": [], "start_line": 1, "executed_branches": [[53, 54], [53, 57], [57, 58], [57, 59], [69, 74], [83, 85], [83, 139], [99, 119], [119, 83], [139, 140], [161, 162], [161, 164], [164, 165], [164, 167]], "missing_branches": [[69, 70], [99, 102], [103, 104], [103, 107], [119, 122], [139, 146]]}}}, "app/utils/file_status.py": {"executed_lines": [5, 7, 9, 10, 13, 26, 27, 36, 39, 46, 54, 74, 80, 82, 105, 106, 109, 116, 117, 118, 119, 120, 123, 124, 125, 133, 134, 135, 138, 139, 140, 141, 142, 144, 147, 148, 149, 150, 151, 152, 157, 159, 166, 169], "summary": {"covered_lines": 44, "num_statements": 65, "percent_covered": 60.824742268041234, "percent_covered_display": "60.82", "missing_lines": 21, "excluded_lines": 0, "percent_statements_covered": 67.6923076923077, "percent_statements_covered_display": "67.69", "num_branches": 32, "num_partial_branches": 5, "covered_branches": 15, "missing_branches": 17, "percent_branches_covered": 46.875, "percent_branches_covered_display": "46.88"}, "missing_lines": [28, 126, 132, 154, 182, 183, 187, 188, 189, 190, 193, 196, 199, 202, 203, 204, 205, 206, 207, 209, 211], "excluded_lines": [], "executed_branches": [[27, 36], [105, 106], [117, 118], [117, 123], [118, 119], [124, 125], [124, 166], [125, 133], [134, 135], [134, 138], [147, 148], [147, 149], [149, 150], [149, 151], [151, 152]], "missing_branches": [[27, 28], [105, 109], [118, 120], [125, 126], [151, 154], [182, 183], [182, 187], [188, 189], [188, 193], [189, 188], [189, 190], [202, 203], [202, 204], [204, 205], [204, 206], [206, 207], [206, 209]], "functions": {"get_file_processing_status": {"executed_lines": [26, 27, 36, 39, 46], "summary": {"covered_lines": 5, "num_statements": 6, "percent_covered": 75.0, "percent_covered_display": "75.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 83.33333333333333, "percent_statements_covered_display": "83.33", "num_branches": 2, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 1, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50.00"}, "missing_lines": [28], "excluded_lines": [], "start_line": 13, "executed_branches": [[27, 36]], "missing_branches": [[27, 28]]}, "get_files_processing_status": {"executed_lines": [74, 80, 82, 105, 106, 109, 116, 117, 118, 119, 120, 123, 124, 125, 133, 134, 135, 138, 139, 140, 141, 142, 144, 147, 148, 149, 150, 151, 152, 157, 159, 166], "summary": {"covered_lines": 32, "num_statements": 35, "percent_covered": 86.79245283018868, "percent_covered_display": "86.79", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 91.42857142857143, "percent_statements_covered_display": "91.43", "num_branches": 18, "num_partial_branches": 4, "covered_branches": 14, "missing_branches": 4, "percent_branches_covered": 77.77777777777777, "percent_branches_covered_display": "77.78"}, "missing_lines": [126, 132, 154], "excluded_lines": [], "start_line": 54, "executed_branches": [[105, 106], [117, 118], [117, 123], [118, 119], [124, 125], [124, 166], [125, 133], [134, 135], [134, 138], [147, 148], [147, 149], [149, 150], [149, 151], [151, 152]], "missing_branches": [[105, 109], [118, 120], [125, 126], [151, 154]]}, "_compute_status_from_logs": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 17, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 17, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00", "num_branches": 12, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 12, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0.00"}, "missing_lines": [182, 183, 187, 188, 189, 190, 193, 196, 199, 202, 203, 204, 205, 206, 207, 209, 211], "excluded_lines": [], "start_line": 169, "executed_branches": [], "missing_branches": [[182, 183], [182, 187], [188, 189], [188, 193], [189, 188], [189, 190], [202, 203], [202, 204], [204, 205], [204, 206], [206, 207], [206, 209]]}, "": {"executed_lines": [5, 7, 9, 10, 13, 54, 169], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [5, 7, 9, 10, 13, 26, 27, 36, 39, 46, 54, 74, 80, 82, 105, 106, 109, 116, 117, 118, 119, 120, 123, 124, 125, 133, 134, 135, 138, 139, 140, 141, 142, 144, 147, 148, 149, 150, 151, 152, 157, 159, 166, 169], "summary": {"covered_lines": 44, "num_statements": 65, "percent_covered": 60.824742268041234, "percent_covered_display": "60.82", "missing_lines": 21, "excluded_lines": 0, "percent_statements_covered": 67.6923076923077, "percent_statements_covered_display": "67.69", "num_branches": 32, "num_partial_branches": 5, "covered_branches": 15, "missing_branches": 17, "percent_branches_covered": 46.875, "percent_branches_covered_display": "46.88"}, "missing_lines": [28, 126, 132, 154, 182, 183, 187, 188, 189, 190, 193, 196, 199, 202, 203, 204, 205, 206, 207, 209, 211], "excluded_lines": [], "start_line": 1, "executed_branches": [[27, 36], [105, 106], [117, 118], [117, 123], [118, 119], [124, 125], [124, 166], [125, 133], [134, 135], [134, 138], [147, 148], [147, 149], [149, 150], [149, 151], [151, 152]], "missing_branches": [[27, 28], [105, 109], [118, 120], [125, 126], [151, 154], [182, 183], [182, 187], [188, 189], [188, 193], [189, 188], [189, 190], [202, 203], [202, 204], [204, 205], [204, 206], [206, 207], [206, 209]]}}}, "app/utils/filename_utils.py": {"executed_lines": [1, 2, 3, 4, 5, 6, 8, 11, 24, 25, 27, 28, 29, 30, 33, 34, 37, 38, 39, 41, 42, 43, 46, 47, 48, 50, 51, 52, 72, 96, 97, 98, 101, 102, 104, 105, 106, 107, 108, 111, 123, 141, 145, 149, 152, 153, 156, 159, 160, 162, 165, 173, 174, 177, 178, 181, 184, 185, 187, 188, 191, 192, 194, 196, 198, 201, 203], "summary": {"covered_lines": 67, "num_statements": 84, "percent_covered": 79.46428571428571, "percent_covered_display": "79.46", "missing_lines": 17, "excluded_lines": 0, "percent_statements_covered": 79.76190476190476, "percent_statements_covered_display": "79.76", "num_branches": 28, "num_partial_branches": 2, "covered_branches": 22, "missing_branches": 6, "percent_branches_covered": 78.57142857142857, "percent_branches_covered_display": "78.57"}, "missing_lines": [55, 56, 57, 58, 59, 60, 61, 62, 65, 66, 67, 69, 113, 114, 115, 116, 120], "excluded_lines": [], "executed_branches": [[24, 25], [24, 27], [33, 34], [33, 37], [41, 42], [41, 46], [50, 51], [97, 98], [97, 101], [106, 107], [106, 108], [111, 102], [159, 160], [159, 162], [177, 178], [177, 181], [185, 187], [185, 191], [191, 192], [191, 198], [192, 194], [192, 196]], "missing_branches": [[50, 55], [56, 57], [56, 65], [59, 60], [59, 62], [111, 113]], "functions": {"get_unique_filename": {"executed_lines": [24, 25, 27, 28, 29, 30, 33, 34, 37, 38, 39, 41, 42, 43, 46, 47, 48, 50, 51, 52], "summary": {"covered_lines": 20, "num_statements": 32, "percent_covered": 61.36363636363637, "percent_covered_display": "61.36", "missing_lines": 12, "excluded_lines": 0, "percent_statements_covered": 62.5, "percent_statements_covered_display": "62.50", "num_branches": 12, "num_partial_branches": 1, "covered_branches": 7, "missing_branches": 5, "percent_branches_covered": 58.333333333333336, "percent_branches_covered_display": "58.33"}, "missing_lines": [55, 56, 57, 58, 59, 60, 61, 62, 65, 66, 67, 69], "excluded_lines": [], "start_line": 11, "executed_branches": [[24, 25], [24, 27], [33, 34], [33, 37], [41, 42], [41, 46], [50, 51]], "missing_branches": [[50, 55], [56, 57], [56, 65], [59, 60], [59, 62]]}, "get_unique_filepath_with_counter": {"executed_lines": [96, 97, 98, 101, 102, 104, 105, 106, 107, 108, 111], "summary": {"covered_lines": 11, "num_statements": 16, "percent_covered": 72.72727272727273, "percent_covered_display": "72.73", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 68.75, "percent_statements_covered_display": "68.75", "num_branches": 6, "num_partial_branches": 1, "covered_branches": 5, "missing_branches": 1, "percent_branches_covered": 83.33333333333333, "percent_branches_covered_display": "83.33"}, "missing_lines": [113, 114, 115, 116, 120], "excluded_lines": [], "start_line": 72, "executed_branches": [[97, 98], [97, 101], [106, 107], [106, 108], [111, 102]], "missing_branches": [[111, 113]]}, "sanitize_filename": {"executed_lines": [141, 145, 149, 152, 153, 156, 159, 160, 162], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 123, "executed_branches": [[159, 160], [159, 162]], "missing_branches": []}, "extract_remote_path": {"executed_lines": [173, 174, 177, 178, 181, 184, 185, 187, 188, 191, 192, 194, 196, 198, 201, 203], "summary": {"covered_lines": 16, "num_statements": 16, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 8, "num_partial_branches": 0, "covered_branches": 8, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 165, "executed_branches": [[177, 178], [177, 181], [185, 187], [185, 191], [191, 192], [191, 198], [192, 194], [192, 196]], "missing_branches": []}, "": {"executed_lines": [1, 2, 3, 4, 5, 6, 8, 11, 72, 123, 165], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [1, 2, 3, 4, 5, 6, 8, 11, 24, 25, 27, 28, 29, 30, 33, 34, 37, 38, 39, 41, 42, 43, 46, 47, 48, 50, 51, 52, 72, 96, 97, 98, 101, 102, 104, 105, 106, 107, 108, 111, 123, 141, 145, 149, 152, 153, 156, 159, 160, 162, 165, 173, 174, 177, 178, 181, 184, 185, 187, 188, 191, 192, 194, 196, 198, 201, 203], "summary": {"covered_lines": 67, "num_statements": 84, "percent_covered": 79.46428571428571, "percent_covered_display": "79.46", "missing_lines": 17, "excluded_lines": 0, "percent_statements_covered": 79.76190476190476, "percent_statements_covered_display": "79.76", "num_branches": 28, "num_partial_branches": 2, "covered_branches": 22, "missing_branches": 6, "percent_branches_covered": 78.57142857142857, "percent_branches_covered_display": "78.57"}, "missing_lines": [55, 56, 57, 58, 59, 60, 61, 62, 65, 66, 67, 69, 113, 114, 115, 116, 120], "excluded_lines": [], "start_line": 1, "executed_branches": [[24, 25], [24, 27], [33, 34], [33, 37], [41, 42], [41, 46], [50, 51], [97, 98], [97, 101], [106, 107], [106, 108], [111, 102], [159, 160], [159, 162], [177, 178], [177, 181], [185, 187], [185, 191], [191, 192], [191, 198], [192, 194], [192, 196]], "missing_branches": [[50, 55], [56, 57], [56, 65], [59, 60], [59, 62], [111, 113]]}}}, "app/utils/logging.py": {"executed_lines": [1, 2, 3, 4, 6, 7, 10, 19, 20, 21, 22, 24, 26, 27, 29, 30, 31, 32, 33, 34, 35, 39, 41, 42, 43, 47, 48, 49, 52, 55, 56, 58, 59, 60, 63, 82, 83, 84, 85, 88, 90, 98, 101, 103, 109, 111, 124, 125, 127, 128, 129, 132], "summary": {"covered_lines": 52, "num_statements": 59, "percent_covered": 85.18518518518519, "percent_covered_display": "85.19", "missing_lines": 7, "excluded_lines": 0, "percent_statements_covered": 88.13559322033899, "percent_statements_covered_display": "88.14", "num_branches": 22, "num_partial_branches": 5, "covered_branches": 17, "missing_branches": 5, "percent_branches_covered": 77.27272727272727, "percent_branches_covered_display": "77.27"}, "missing_lines": [36, 37, 86, 113, 121, 126, 130], "excluded_lines": [], "executed_branches": [[29, -24], [29, 30], [33, -24], [33, 34], [55, -52], [55, 56], [58, 59], [82, 83], [82, 88], [85, 88], [101, 103], [101, 132], [111, 124], [125, 127], [127, 128], [127, 129], [129, 132]], "missing_branches": [[58, 60], [85, 86], [111, 113], [125, 126], [129, 130]], "functions": {"TaskLogCollector.__init__": {"executed_lines": [20, 21, 22], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 19, "executed_branches": [], "missing_branches": []}, "TaskLogCollector.emit": {"executed_lines": [26, 27, 29, 30, 31, 32, 33, 34, 35], "summary": {"covered_lines": 9, "num_statements": 11, "percent_covered": 86.66666666666667, "percent_covered_display": "86.67", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 81.81818181818181, "percent_statements_covered_display": "81.82", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [36, 37], "excluded_lines": [], "start_line": 24, "executed_branches": [[29, -24], [29, 30], [33, -24], [33, 34]], "missing_branches": []}, "TaskLogCollector.drain": {"executed_lines": [41, 42, 43], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 39, "executed_branches": [], "missing_branches": []}, "_ensure_collector_installed": {"executed_lines": [55, 56, 58, 59, 60], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 88.88888888888889, "percent_covered_display": "88.89", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 4, "num_partial_branches": 1, "covered_branches": 3, "missing_branches": 1, "percent_branches_covered": 75.0, "percent_branches_covered_display": "75.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 52, "executed_branches": [[55, -52], [55, 56], [58, 59]], "missing_branches": [[58, 60]]}, "log_task_progress": {"executed_lines": [82, 83, 84, 85, 88, 90, 98, 101, 103, 109, 111, 124, 125, 127, 128, 129, 132], "summary": {"covered_lines": 17, "num_statements": 22, "percent_covered": 75.0, "percent_covered_display": "75.00", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 77.27272727272727, "percent_statements_covered_display": "77.27", "num_branches": 14, "num_partial_branches": 4, "covered_branches": 10, "missing_branches": 4, "percent_branches_covered": 71.42857142857143, "percent_branches_covered_display": "71.43"}, "missing_lines": [86, 113, 121, 126, 130], "excluded_lines": [], "start_line": 63, "executed_branches": [[82, 83], [82, 88], [85, 88], [101, 103], [101, 132], [111, 124], [125, 127], [127, 128], [127, 129], [129, 132]], "missing_branches": [[85, 86], [111, 113], [125, 126], [129, 130]]}, "": {"executed_lines": [1, 2, 3, 4, 6, 7, 10, 19, 24, 39, 47, 48, 49, 52, 63], "summary": {"covered_lines": 15, "num_statements": 15, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"TaskLogCollector": {"executed_lines": [20, 21, 22, 26, 27, 29, 30, 31, 32, 33, 34, 35, 41, 42, 43], "summary": {"covered_lines": 15, "num_statements": 17, "percent_covered": 90.47619047619048, "percent_covered_display": "90.48", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 88.23529411764706, "percent_statements_covered_display": "88.24", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [36, 37], "excluded_lines": [], "start_line": 10, "executed_branches": [[29, -24], [29, 30], [33, -24], [33, 34]], "missing_branches": []}, "": {"executed_lines": [1, 2, 3, 4, 6, 7, 10, 19, 24, 39, 47, 48, 49, 52, 55, 56, 58, 59, 60, 63, 82, 83, 84, 85, 88, 90, 98, 101, 103, 109, 111, 124, 125, 127, 128, 129, 132], "summary": {"covered_lines": 37, "num_statements": 42, "percent_covered": 83.33333333333333, "percent_covered_display": "83.33", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 88.0952380952381, "percent_statements_covered_display": "88.10", "num_branches": 18, "num_partial_branches": 5, "covered_branches": 13, "missing_branches": 5, "percent_branches_covered": 72.22222222222223, "percent_branches_covered_display": "72.22"}, "missing_lines": [86, 113, 121, 126, 130], "excluded_lines": [], "start_line": 1, "executed_branches": [[55, -52], [55, 56], [58, 59], [82, 83], [82, 88], [85, 88], [101, 103], [101, 132], [111, 124], [125, 127], [127, 128], [127, 129], [129, 132]], "missing_branches": [[58, 60], [85, 86], [111, 113], [125, 126], [129, 130]]}}}, "app/utils/migrate_logs_to_steps.py": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 115, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 115, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00", "num_branches": 48, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 48, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0.00"}, "missing_lines": [8, 9, 11, 13, 15, 18, 40, 42, 44, 51, 52, 53, 56, 59, 60, 66, 68, 73, 76, 77, 78, 79, 80, 82, 83, 86, 87, 95, 96, 98, 99, 100, 107, 108, 110, 111, 112, 113, 115, 118, 139, 141, 142, 143, 146, 147, 155, 157, 158, 159, 161, 163, 165, 166, 167, 168, 170, 172, 173, 174, 175, 176, 178, 180, 181, 186, 189, 209, 220, 221, 223, 224, 226, 228, 229, 232, 233, 234, 238, 239, 241, 242, 243, 245, 246, 247, 248, 250, 257, 260, 278, 281, 285, 286, 287, 288, 290, 291, 294, 295, 298, 301, 302, 303, 304, 305, 308, 309, 311, 312, 315, 318, 319, 320, 323], "excluded_lines": [], "executed_branches": [], "missing_branches": [[51, 52], [51, 56], [59, 60], [59, 98], [66, 68], [66, 86], [68, 73], [68, 82], [98, 99], [98, 107], [141, 142], [141, 186], [146, 147], [146, 155], [155, 157], [155, 161], [157, 158], [157, 159], [161, 163], [161, 170], [163, 165], [163, 166], [170, 172], [170, 178], [172, 173], [172, 174], [178, 141], [178, 180], [180, 141], [180, 181], [232, 233], [232, 250], [238, 232], [238, 239], [241, 242], [241, 245], [285, 286], [285, 290], [301, 302], [301, 318], [302, 303], [302, 308], [311, 301], [311, 312], [318, 319], [318, 323], [319, 318], [319, 320]], "functions": {"migrate_logs_to_steps": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 33, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 33, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00", "num_branches": 10, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 10, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0.00"}, "missing_lines": [40, 42, 44, 51, 52, 53, 56, 59, 60, 66, 68, 73, 76, 77, 78, 79, 80, 82, 83, 86, 87, 95, 96, 98, 99, 100, 107, 108, 110, 111, 112, 113, 115], "excluded_lines": [], "start_line": 18, "executed_branches": [], "missing_branches": [[51, 52], [51, 56], [59, 60], [59, 98], [66, 68], [66, 86], [68, 73], [68, 82], [98, 99], [98, 107]]}, "_parse_logs_to_step_states": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 26, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 26, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00", "num_branches": 20, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 20, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0.00"}, "missing_lines": [139, 141, 142, 143, 146, 147, 155, 157, 158, 159, 161, 163, 165, 166, 167, 168, 170, 172, 173, 174, 175, 176, 178, 180, 181, 186], "excluded_lines": [], "start_line": 118, "executed_branches": [], "missing_branches": [[141, 142], [141, 186], [146, 147], [146, 155], [155, 157], [155, 161], [157, 158], [157, 159], [161, 163], [161, 170], [163, 165], [163, 166], [170, 172], [170, 178], [172, 173], [172, 174], [178, 141], [178, 180], [180, 141], [180, 181]]}, "migrate_all_files": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 22, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 22, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00", "num_branches": 6, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 6, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0.00"}, "missing_lines": [209, 220, 221, 223, 224, 226, 228, 229, 232, 233, 234, 238, 239, 241, 242, 243, 245, 246, 247, 248, 250, 257], "excluded_lines": [], "start_line": 189, "executed_branches": [], "missing_branches": [[232, 233], [232, 250], [238, 232], [238, 239], [241, 242], [241, 245]]}, "verify_migration": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 25, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 25, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00", "num_branches": 12, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 12, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0.00"}, "missing_lines": [278, 281, 285, 286, 287, 288, 290, 291, 294, 295, 298, 301, 302, 303, 304, 305, 308, 309, 311, 312, 315, 318, 319, 320, 323], "excluded_lines": [], "start_line": 260, "executed_branches": [], "missing_branches": [[285, 286], [285, 290], [301, 302], [301, 318], [302, 303], [302, 308], [311, 301], [311, 312], [318, 319], [318, 323], [319, 318], [319, 320]]}, "": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 9, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 9, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [8, 9, 11, 13, 15, 18, 118, 189, 260], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 115, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 115, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00", "num_branches": 48, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 48, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0.00"}, "missing_lines": [8, 9, 11, 13, 15, 18, 40, 42, 44, 51, 52, 53, 56, 59, 60, 66, 68, 73, 76, 77, 78, 79, 80, 82, 83, 86, 87, 95, 96, 98, 99, 100, 107, 108, 110, 111, 112, 113, 115, 118, 139, 141, 142, 143, 146, 147, 155, 157, 158, 159, 161, 163, 165, 166, 167, 168, 170, 172, 173, 174, 175, 176, 178, 180, 181, 186, 189, 209, 220, 221, 223, 224, 226, 228, 229, 232, 233, 234, 238, 239, 241, 242, 243, 245, 246, 247, 248, 250, 257, 260, 278, 281, 285, 286, 287, 288, 290, 291, 294, 295, 298, 301, 302, 303, 304, 305, 308, 309, 311, 312, 315, 318, 319, 320, 323], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": [[51, 52], [51, 56], [59, 60], [59, 98], [66, 68], [66, 86], [68, 73], [68, 82], [98, 99], [98, 107], [141, 142], [141, 186], [146, 147], [146, 155], [155, 157], [155, 161], [157, 158], [157, 159], [161, 163], [161, 170], [163, 165], [163, 166], [170, 172], [170, 178], [172, 173], [172, 174], [178, 141], [178, 180], [180, 141], [180, 181], [232, 233], [232, 250], [238, 232], [238, 239], [241, 242], [241, 245], [285, 286], [285, 290], [301, 302], [301, 318], [302, 303], [302, 308], [311, 301], [311, 312], [318, 319], [318, 323], [319, 318], [319, 320]]}}}, "app/utils/notification.py": {"executed_lines": [1, 2, 4, 6, 8, 11, 14, 18, 19, 22, 23, 24, 25, 26, 27, 28, 30, 32, 35, 38, 41, 42, 43, 44, 45, 48, 70, 71, 72, 121, 123, 124, 126, 127, 134, 139, 141, 142, 144, 145, 151, 156, 158, 159, 161, 162, 163, 166, 168, 169, 171, 172, 173, 176, 178, 179, 182, 183, 186, 187, 188, 191, 193, 194, 204], "summary": {"covered_lines": 65, "num_statements": 97, "percent_covered": 63.565891472868216, "percent_covered_display": "63.57", "missing_lines": 32, "excluded_lines": 0, "percent_statements_covered": 67.01030927835052, "percent_statements_covered_display": "67.01", "num_branches": 32, "num_partial_branches": 1, "covered_branches": 17, "missing_branches": 15, "percent_branches_covered": 53.125, "percent_branches_covered_display": "53.12"}, "missing_lines": [74, 75, 78, 79, 80, 81, 82, 83, 84, 87, 88, 89, 91, 92, 94, 95, 96, 97, 99, 100, 101, 103, 104, 105, 107, 109, 110, 112, 114, 116, 117, 118], "excluded_lines": [], "executed_branches": [[18, 19], [18, 32], [22, 23], [22, 30], [23, 24], [23, 32], [70, 71], [123, 124], [123, 126], [141, 142], [141, 144], [158, 159], [158, 161], [168, 169], [168, 171], [178, 179], [178, 182]], "missing_branches": [[70, 74], [79, 80], [79, 81], [81, 82], [81, 83], [83, 84], [83, 87], [87, 88], [87, 91], [94, 95], [94, 107], [99, 100], [99, 103], [109, 110], [109, 112]], "functions": {"init_apprise": {"executed_lines": [18, 19, 22, 23, 24, 25, 26, 27, 28, 30, 32], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 6, "num_partial_branches": 0, "covered_branches": 6, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 14, "executed_branches": [[18, 19], [18, 32], [22, 23], [22, 30], [23, 24], [23, 32]], "missing_branches": []}, "_mask_sensitive_url": {"executed_lines": [38, 41, 42, 43, 44, 45], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 35, "executed_branches": [], "missing_branches": []}, "send_notification": {"executed_lines": [70, 71, 72], "summary": {"covered_lines": 3, "num_statements": 35, "percent_covered": 7.8431372549019605, "percent_covered_display": "7.84", "missing_lines": 32, "excluded_lines": 0, "percent_statements_covered": 8.571428571428571, "percent_statements_covered_display": "8.57", "num_branches": 16, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 15, "percent_branches_covered": 6.25, "percent_branches_covered_display": "6.25"}, "missing_lines": [74, 75, 78, 79, 80, 81, 82, 83, 84, 87, 88, 89, 91, 92, 94, 95, 96, 97, 99, 100, 101, 103, 104, 105, 107, 109, 110, 112, 114, 116, 117, 118], "excluded_lines": [], "start_line": 48, "executed_branches": [[70, 71]], "missing_branches": [[70, 74], [79, 80], [79, 81], [81, 82], [81, 83], [83, 84], [83, 87], [87, 88], [87, 91], [94, 95], [94, 107], [99, 100], [99, 103], [109, 110], [109, 112]]}, "notify_celery_failure": {"executed_lines": [123, 124, 126, 127, 134], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 121, "executed_branches": [[123, 124], [123, 126]], "missing_branches": []}, "notify_credential_failure": {"executed_lines": [141, 142, 144, 145, 151], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 139, "executed_branches": [[141, 142], [141, 144]], "missing_branches": []}, "notify_startup": {"executed_lines": [158, 159, 161, 162, 163], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 156, "executed_branches": [[158, 159], [158, 161]], "missing_branches": []}, "notify_shutdown": {"executed_lines": [168, 169, 171, 172, 173], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 166, "executed_branches": [[168, 169], [168, 171]], "missing_branches": []}, "notify_file_processed": {"executed_lines": [178, 179, 182, 183, 186, 187, 188, 191, 193, 194, 204], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 176, "executed_branches": [[178, 179], [178, 182]], "missing_branches": []}, "": {"executed_lines": [1, 2, 4, 6, 8, 11, 14, 35, 48, 121, 139, 156, 166, 176], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [1, 2, 4, 6, 8, 11, 14, 18, 19, 22, 23, 24, 25, 26, 27, 28, 30, 32, 35, 38, 41, 42, 43, 44, 45, 48, 70, 71, 72, 121, 123, 124, 126, 127, 134, 139, 141, 142, 144, 145, 151, 156, 158, 159, 161, 162, 163, 166, 168, 169, 171, 172, 173, 176, 178, 179, 182, 183, 186, 187, 188, 191, 193, 194, 204], "summary": {"covered_lines": 65, "num_statements": 97, "percent_covered": 63.565891472868216, "percent_covered_display": "63.57", "missing_lines": 32, "excluded_lines": 0, "percent_statements_covered": 67.01030927835052, "percent_statements_covered_display": "67.01", "num_branches": 32, "num_partial_branches": 1, "covered_branches": 17, "missing_branches": 15, "percent_branches_covered": 53.125, "percent_branches_covered_display": "53.12"}, "missing_lines": [74, 75, 78, 79, 80, 81, 82, 83, 84, 87, 88, 89, 91, 92, 94, 95, 96, 97, 99, 100, 101, 103, 104, 105, 107, 109, 110, 112, 114, 116, 117, 118], "excluded_lines": [], "start_line": 1, "executed_branches": [[18, 19], [18, 32], [22, 23], [22, 30], [23, 24], [23, 32], [70, 71], [123, 124], [123, 126], [141, 142], [141, 144], [158, 159], [158, 161], [168, 169], [168, 171], [178, 179], [178, 182]], "missing_branches": [[70, 74], [79, 80], [79, 81], [81, 82], [81, 83], [83, 84], [83, 87], [87, 88], [87, 91], [94, 95], [94, 107], [99, 100], [99, 103], [109, 110], [109, 112]]}}}, "app/utils/oauth_helper.py": {"executed_lines": [6, 7, 9, 10, 12, 14, 17, 38, 39, 41, 42, 45, 50, 53, 54, 57, 59, 61, 62, 64, 65, 66, 67, 68, 69, 71, 76, 79, 80, 81, 87, 89, 91, 93, 94, 95, 96, 100, 101, 102], "summary": {"covered_lines": 40, "num_statements": 40, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 6, "num_partial_branches": 0, "covered_branches": 6, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "executed_branches": [[38, 39], [38, 41], [59, 61], [59, 76], [79, 80], [79, 87]], "missing_branches": [], "functions": {"exchange_oauth_token": {"executed_lines": [38, 39, 41, 42, 45, 50, 53, 54, 57, 59, 61, 62, 64, 65, 66, 67, 68, 69, 71, 76, 79, 80, 81, 87, 89, 91, 93, 94, 95, 96, 100, 101, 102], "summary": {"covered_lines": 33, "num_statements": 33, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 6, "num_partial_branches": 0, "covered_branches": 6, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 17, "executed_branches": [[38, 39], [38, 41], [59, 61], [59, 76], [79, 80], [79, 87]], "missing_branches": []}, "": {"executed_lines": [6, 7, 9, 10, 12, 14, 17], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [6, 7, 9, 10, 12, 14, 17, 38, 39, 41, 42, 45, 50, 53, 54, 57, 59, 61, 62, 64, 65, 66, 67, 68, 69, 71, 76, 79, 80, 81, 87, 89, 91, 93, 94, 95, 96, 100, 101, 102], "summary": {"covered_lines": 40, "num_statements": 40, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 6, "num_partial_branches": 0, "covered_branches": 6, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [[38, 39], [38, 41], [59, 61], [59, 76], [79, 80], [79, 87]], "missing_branches": []}}}, "app/utils/settings_service.py": {"executed_lines": [10, 11, 13, 14, 16, 18, 21, 860, 873, 874, 875, 876, 879, 880, 885, 891, 905, 907, 908, 910, 911, 913, 914, 915, 919, 920, 921, 923, 924, 925, 926, 927, 934, 946, 947, 948, 950, 952, 953, 958, 960, 966, 977, 978, 979, 980, 981, 982, 983, 984, 991, 1001, 1014, 1021, 1022, 1023, 1024, 1025, 1026, 1027, 1030, 1041, 1042, 1045, 1049, 1050, 1051, 1053, 1060, 1061, 1063], "summary": {"covered_lines": 71, "num_statements": 95, "percent_covered": 76.8, "percent_covered_display": "76.80", "missing_lines": 24, "excluded_lines": 0, "percent_statements_covered": 74.73684210526316, "percent_statements_covered_display": "74.74", "num_branches": 30, "num_partial_branches": 5, "covered_branches": 25, "missing_branches": 5, "percent_branches_covered": 83.33333333333333, "percent_branches_covered_display": "83.33"}, "missing_lines": [881, 883, 886, 887, 888, 917, 928, 929, 930, 931, 954, 956, 961, 962, 963, 985, 986, 987, 988, 1046, 1054, 1055, 1056, 1057], "excluded_lines": [], "executed_branches": [[875, 876], [875, 879], [880, 885], [910, 911], [910, 919], [913, 914], [920, 921], [920, 923], [950, 952], [950, 960], [953, 958], [979, 980], [979, 984], [1022, 1023], [1022, 1027], [1024, 1025], [1024, 1026], [1045, 1049], [1049, 1050], [1049, 1053], [1050, 1051], [1050, 1060], [1053, 1060], [1060, 1061], [1060, 1063]], "missing_branches": [[880, 881], [913, 917], [953, 954], [1045, 1046], [1053, 1054]], "functions": {"get_setting_from_db": {"executed_lines": [873, 874, 875, 876, 879, 880, 885], "summary": {"covered_lines": 7, "num_statements": 12, "percent_covered": 62.5, "percent_covered_display": "62.50", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 58.333333333333336, "percent_statements_covered_display": "58.33", "num_branches": 4, "num_partial_branches": 1, "covered_branches": 3, "missing_branches": 1, "percent_branches_covered": 75.0, "percent_branches_covered_display": "75.00"}, "missing_lines": [881, 883, 886, 887, 888], "excluded_lines": [], "start_line": 860, "executed_branches": [[875, 876], [875, 879], [880, 885]], "missing_branches": [[880, 881]]}, "save_setting_to_db": {"executed_lines": [905, 907, 908, 910, 911, 913, 914, 915, 919, 920, 921, 923, 924, 925, 926, 927], "summary": {"covered_lines": 16, "num_statements": 21, "percent_covered": 77.77777777777777, "percent_covered_display": "77.78", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 76.19047619047619, "percent_statements_covered_display": "76.19", "num_branches": 6, "num_partial_branches": 1, "covered_branches": 5, "missing_branches": 1, "percent_branches_covered": 83.33333333333333, "percent_branches_covered_display": "83.33"}, "missing_lines": [917, 928, 929, 930, 931], "excluded_lines": [], "start_line": 891, "executed_branches": [[910, 911], [910, 919], [913, 914], [920, 921], [920, 923]], "missing_branches": [[913, 917]]}, "get_all_settings_from_db": {"executed_lines": [946, 947, 948, 950, 952, 953, 958, 960], "summary": {"covered_lines": 8, "num_statements": 13, "percent_covered": 64.70588235294117, "percent_covered_display": "64.71", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 61.53846153846154, "percent_statements_covered_display": "61.54", "num_branches": 4, "num_partial_branches": 1, "covered_branches": 3, "missing_branches": 1, "percent_branches_covered": 75.0, "percent_branches_covered_display": "75.00"}, "missing_lines": [954, 956, 961, 962, 963], "excluded_lines": [], "start_line": 934, "executed_branches": [[950, 952], [950, 960], [953, 958]], "missing_branches": [[953, 954]]}, "delete_setting_from_db": {"executed_lines": [977, 978, 979, 980, 981, 982, 983, 984], "summary": {"covered_lines": 8, "num_statements": 12, "percent_covered": 71.42857142857143, "percent_covered_display": "71.43", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 66.66666666666667, "percent_statements_covered_display": "66.67", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [985, 986, 987, 988], "excluded_lines": [], "start_line": 966, "executed_branches": [[979, 980], [979, 984]], "missing_branches": []}, "get_setting_metadata": {"executed_lines": [1001], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 991, "executed_branches": [], "missing_branches": []}, "get_settings_by_category": {"executed_lines": [1021, 1022, 1023, 1024, 1025, 1026, 1027], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1014, "executed_branches": [[1022, 1023], [1022, 1027], [1024, 1025], [1024, 1026]], "missing_branches": []}, "validate_setting_value": {"executed_lines": [1041, 1042, 1045, 1049, 1050, 1051, 1053, 1060, 1061, 1063], "summary": {"covered_lines": 10, "num_statements": 15, "percent_covered": 72.0, "percent_covered_display": "72.00", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 66.66666666666667, "percent_statements_covered_display": "66.67", "num_branches": 10, "num_partial_branches": 2, "covered_branches": 8, "missing_branches": 2, "percent_branches_covered": 80.0, "percent_branches_covered_display": "80.00"}, "missing_lines": [1046, 1054, 1055, 1056, 1057], "excluded_lines": [], "start_line": 1030, "executed_branches": [[1045, 1049], [1049, 1050], [1049, 1053], [1050, 1051], [1050, 1060], [1053, 1060], [1060, 1061], [1060, 1063]], "missing_branches": [[1045, 1046], [1053, 1054]]}, "": {"executed_lines": [10, 11, 13, 14, 16, 18, 21, 860, 891, 934, 966, 991, 1014, 1030], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [10, 11, 13, 14, 16, 18, 21, 860, 873, 874, 875, 876, 879, 880, 885, 891, 905, 907, 908, 910, 911, 913, 914, 915, 919, 920, 921, 923, 924, 925, 926, 927, 934, 946, 947, 948, 950, 952, 953, 958, 960, 966, 977, 978, 979, 980, 981, 982, 983, 984, 991, 1001, 1014, 1021, 1022, 1023, 1024, 1025, 1026, 1027, 1030, 1041, 1042, 1045, 1049, 1050, 1051, 1053, 1060, 1061, 1063], "summary": {"covered_lines": 71, "num_statements": 95, "percent_covered": 76.8, "percent_covered_display": "76.80", "missing_lines": 24, "excluded_lines": 0, "percent_statements_covered": 74.73684210526316, "percent_statements_covered_display": "74.74", "num_branches": 30, "num_partial_branches": 5, "covered_branches": 25, "missing_branches": 5, "percent_branches_covered": 83.33333333333333, "percent_branches_covered_display": "83.33"}, "missing_lines": [881, 883, 886, 887, 888, 917, 928, 929, 930, 931, 954, 956, 961, 962, 963, 985, 986, 987, 988, 1046, 1054, 1055, 1056, 1057], "excluded_lines": [], "start_line": 1, "executed_branches": [[875, 876], [875, 879], [880, 885], [910, 911], [910, 919], [913, 914], [920, 921], [920, 923], [950, 952], [950, 960], [953, 958], [979, 980], [979, 984], [1022, 1023], [1022, 1027], [1024, 1025], [1024, 1026], [1045, 1049], [1049, 1050], [1049, 1053], [1050, 1051], [1050, 1060], [1053, 1060], [1060, 1061], [1060, 1063]], "missing_branches": [[880, 881], [913, 917], [953, 954], [1045, 1046], [1053, 1054]]}}}, "app/utils/setup_wizard.py": {"executed_lines": [7, 8, 10, 12, 15, 22, 136, 145, 147, 154, 155, 156, 157, 158, 161, 163, 164, 166, 169, 176, 178, 179, 180, 183, 193, 194, 196, 199, 206, 208, 209, 210, 211, 212, 214], "summary": {"covered_lines": 35, "num_statements": 35, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 12, "num_partial_branches": 0, "covered_branches": 12, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "executed_branches": [[154, 155], [154, 161], [156, 154], [156, 157], [178, 179], [178, 196], [193, 178], [193, 194], [208, 209], [208, 214], [210, 211], [210, 212]], "missing_branches": [], "functions": {"get_required_settings": {"executed_lines": [22], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 15, "executed_branches": [], "missing_branches": []}, "is_setup_required": {"executed_lines": [145, 147, 154, 155, 156, 157, 158, 161, 163, 164, 166], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 136, "executed_branches": [[154, 155], [154, 161], [156, 154], [156, 157]], "missing_branches": []}, "get_missing_required_settings": {"executed_lines": [176, 178, 179, 180, 183, 193, 194, 196], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 169, "executed_branches": [[178, 179], [178, 196], [193, 178], [193, 194]], "missing_branches": []}, "get_wizard_steps": {"executed_lines": [206, 208, 209, 210, 211, 212, 214], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 199, "executed_branches": [[208, 209], [208, 214], [210, 211], [210, 212]], "missing_branches": []}, "": {"executed_lines": [7, 8, 10, 12, 15, 136, 169, 199], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [7, 8, 10, 12, 15, 22, 136, 145, 147, 154, 155, 156, 157, 158, 161, 163, 164, 166, 169, 176, 178, 179, 180, 183, 193, 194, 196, 199, 206, 208, 209, 210, 211, 212, 214], "summary": {"covered_lines": 35, "num_statements": 35, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 12, "num_partial_branches": 0, "covered_branches": 12, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [[154, 155], [154, 161], [156, 154], [156, 157], [178, 179], [178, 196], [193, 178], [193, 194], [208, 209], [208, 214], [210, 211], [210, 212]], "missing_branches": []}}}, "app/utils/step_manager.py": {"executed_lines": [8, 9, 11, 13, 14, 18, 28, 33, 34, 35, 36, 39, 49, 50, 51, 53, 56, 65, 67, 68, 70, 75, 76, 77, 79, 82, 103, 109, 111, 119, 122, 123, 124, 125, 126, 127, 128, 130, 133, 153, 155, 156, 157, 164, 167, 190, 191, 204, 216, 217, 219, 222, 228, 229, 238, 239, 240, 241, 242, 244, 247, 248, 249, 250, 251, 252, 254, 256, 267, 289, 301, 302, 304, 306, 307, 309, 310, 312, 314, 315, 316, 319, 322, 324, 328, 329, 330, 331, 332, 333, 334, 335, 337], "summary": {"covered_lines": 93, "num_statements": 95, "percent_covered": 93.00699300699301, "percent_covered_display": "93.01", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 97.89473684210526, "percent_statements_covered_display": "97.89", "num_branches": 48, "num_partial_branches": 8, "covered_branches": 40, "missing_branches": 8, "percent_branches_covered": 83.33333333333333, "percent_branches_covered_display": "83.33"}, "missing_lines": [192, 326], "excluded_lines": [], "executed_branches": [[34, 35], [49, 50], [49, 53], [65, 67], [65, 79], [67, 65], [67, 68], [75, 76], [109, 111], [109, 122], [123, 124], [123, 125], [125, 126], [125, 127], [127, 128], [127, 130], [156, 157], [156, 164], [191, 204], [216, 217], [228, 229], [228, 238], [247, 248], [247, 249], [249, 250], [249, 251], [251, 252], [251, 254], [301, 302], [312, 314], [312, 337], [315, 316], [315, 319], [324, 328], [328, 329], [328, 332], [329, 330], [332, 312], [332, 333], [333, 334]], "missing_branches": [[34, 36], [75, 67], [191, 192], [216, 219], [301, 304], [324, 326], [329, 331], [333, 335]], "functions": {"initialize_file_steps": {"executed_lines": [49, 50, 51, 53], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 39, "executed_branches": [[49, 50], [49, 53]], "missing_branches": []}, "add_upload_steps": {"executed_lines": [65, 67, 68, 70, 75, 76, 77, 79], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 92.85714285714286, "percent_covered_display": "92.86", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 6, "num_partial_branches": 1, "covered_branches": 5, "missing_branches": 1, "percent_branches_covered": 83.33333333333333, "percent_branches_covered_display": "83.33"}, "missing_lines": [], "excluded_lines": [], "start_line": 56, "executed_branches": [[65, 67], [65, 79], [67, 65], [67, 68], [75, 76]], "missing_branches": [[75, 67]]}, "update_step_status": {"executed_lines": [103, 109, 111, 119, 122, 123, 124, 125, 126, 127, 128, 130], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 8, "num_partial_branches": 0, "covered_branches": 8, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 82, "executed_branches": [[109, 111], [109, 122], [123, 124], [123, 125], [125, 126], [125, 127], [127, 128], [127, 130]], "missing_branches": []}, "get_file_step_status": {"executed_lines": [153, 155, 156, 157, 164], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 133, "executed_branches": [[156, 157], [156, 164]], "missing_branches": []}, "get_file_overall_status": {"executed_lines": [190, 191, 204, 216, 217, 219, 222, 228, 229, 238, 239, 240, 241, 242, 244, 247, 248, 249, 250, 251, 252, 254, 256], "summary": {"covered_lines": 23, "num_statements": 24, "percent_covered": 91.66666666666667, "percent_covered_display": "91.67", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 95.83333333333333, "percent_statements_covered_display": "95.83", "num_branches": 12, "num_partial_branches": 2, "covered_branches": 10, "missing_branches": 2, "percent_branches_covered": 83.33333333333333, "percent_branches_covered_display": "83.33"}, "missing_lines": [192], "excluded_lines": [], "start_line": 167, "executed_branches": [[191, 204], [216, 217], [228, 229], [228, 238], [247, 248], [247, 249], [249, 250], [249, 251], [251, 252], [251, 254]], "missing_branches": [[191, 192], [216, 219]]}, "get_step_summary": {"executed_lines": [289, 301, 302, 304, 306, 307, 309, 310, 312, 314, 315, 316, 319, 322, 324, 328, 329, 330, 331, 332, 333, 334, 335, 337], "summary": {"covered_lines": 24, "num_statements": 25, "percent_covered": 87.8048780487805, "percent_covered_display": "87.80", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 96.0, "percent_statements_covered_display": "96.00", "num_branches": 16, "num_partial_branches": 4, "covered_branches": 12, "missing_branches": 4, "percent_branches_covered": 75.0, "percent_branches_covered_display": "75.00"}, "missing_lines": [326], "excluded_lines": [], "start_line": 267, "executed_branches": [[301, 302], [312, 314], [312, 337], [315, 316], [315, 319], [324, 328], [328, 329], [328, 332], [329, 330], [332, 312], [332, 333], [333, 334]], "missing_branches": [[301, 304], [324, 326], [329, 331], [333, 335]]}, "": {"executed_lines": [8, 9, 11, 13, 14, 18, 28, 33, 34, 35, 36, 39, 56, 82, 133, 167, 267], "summary": {"covered_lines": 17, "num_statements": 17, "percent_covered": 94.73684210526316, "percent_covered_display": "94.74", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 2, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 1, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [[34, 35]], "missing_branches": [[34, 36]]}}, "classes": {"": {"executed_lines": [8, 9, 11, 13, 14, 18, 28, 33, 34, 35, 36, 39, 49, 50, 51, 53, 56, 65, 67, 68, 70, 75, 76, 77, 79, 82, 103, 109, 111, 119, 122, 123, 124, 125, 126, 127, 128, 130, 133, 153, 155, 156, 157, 164, 167, 190, 191, 204, 216, 217, 219, 222, 228, 229, 238, 239, 240, 241, 242, 244, 247, 248, 249, 250, 251, 252, 254, 256, 267, 289, 301, 302, 304, 306, 307, 309, 310, 312, 314, 315, 316, 319, 322, 324, 328, 329, 330, 331, 332, 333, 334, 335, 337], "summary": {"covered_lines": 93, "num_statements": 95, "percent_covered": 93.00699300699301, "percent_covered_display": "93.01", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 97.89473684210526, "percent_statements_covered_display": "97.89", "num_branches": 48, "num_partial_branches": 8, "covered_branches": 40, "missing_branches": 8, "percent_branches_covered": 83.33333333333333, "percent_branches_covered_display": "83.33"}, "missing_lines": [192, 326], "excluded_lines": [], "start_line": 1, "executed_branches": [[34, 35], [49, 50], [49, 53], [65, 67], [65, 79], [67, 65], [67, 68], [75, 76], [109, 111], [109, 122], [123, 124], [123, 125], [125, 126], [125, 127], [127, 128], [127, 130], [156, 157], [156, 164], [191, 204], [216, 217], [228, 229], [228, 238], [247, 248], [247, 249], [249, 250], [249, 251], [251, 252], [251, 254], [301, 302], [312, 314], [312, 337], [315, 316], [315, 319], [324, 328], [328, 329], [328, 332], [329, 330], [332, 312], [332, 333], [333, 334]], "missing_branches": [[34, 36], [75, 67], [191, 192], [216, 219], [301, 304], [324, 326], [329, 331], [333, 335]]}}}, "app/utils/step_timeout.py": {"executed_lines": [8, 9, 10, 12, 14, 15, 17, 20, 23, 31, 34, 54, 55, 57, 58, 61, 67, 68, 70, 72, 75, 79, 80, 95, 96, 99, 110, 111], "summary": {"covered_lines": 28, "num_statements": 34, "percent_covered": 80.95238095238095, "percent_covered_display": "80.95", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 82.3529411764706, "percent_statements_covered_display": "82.35", "num_branches": 8, "num_partial_branches": 2, "covered_branches": 6, "missing_branches": 2, "percent_branches_covered": 75.0, "percent_branches_covered_display": "75.00"}, "missing_lines": [73, 81, 82, 83, 88, 90], "excluded_lines": [], "executed_branches": [[54, 55], [54, 57], [67, 68], [67, 70], [72, 75], [80, 95]], "missing_branches": [[72, 73], [80, 81]], "functions": {"get_step_timeout": {"executed_lines": [31], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 23, "executed_branches": [], "missing_branches": []}, "mark_stalled_steps_as_failed": {"executed_lines": [54, 55, 57, 58, 61, 67, 68, 70, 72, 75, 79, 80, 95, 96], "summary": {"covered_lines": 14, "num_statements": 20, "percent_covered": 71.42857142857143, "percent_covered_display": "71.43", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 70.0, "percent_statements_covered_display": "70.00", "num_branches": 8, "num_partial_branches": 2, "covered_branches": 6, "missing_branches": 2, "percent_branches_covered": 75.0, "percent_branches_covered_display": "75.00"}, "missing_lines": [73, 81, 82, 83, 88, 90], "excluded_lines": [], "start_line": 34, "executed_branches": [[54, 55], [54, 57], [67, 68], [67, 70], [72, 75], [80, 95]], "missing_branches": [[72, 73], [80, 81]]}, "check_and_recover_stalled_file": {"executed_lines": [110, 111], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 99, "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [8, 9, 10, 12, 14, 15, 17, 20, 23, 34, 99], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [8, 9, 10, 12, 14, 15, 17, 20, 23, 31, 34, 54, 55, 57, 58, 61, 67, 68, 70, 72, 75, 79, 80, 95, 96, 99, 110, 111], "summary": {"covered_lines": 28, "num_statements": 34, "percent_covered": 80.95238095238095, "percent_covered_display": "80.95", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 82.3529411764706, "percent_statements_covered_display": "82.35", "num_branches": 8, "num_partial_branches": 2, "covered_branches": 6, "missing_branches": 2, "percent_branches_covered": 75.0, "percent_branches_covered_display": "75.00"}, "missing_lines": [73, 81, 82, 83, 88, 90], "excluded_lines": [], "start_line": 1, "executed_branches": [[54, 55], [54, 57], [67, 68], [67, 70], [72, 75], [80, 95]], "missing_branches": [[72, 73], [80, 81]]}}}, "app/views/__init__.py": {"executed_lines": [5, 7, 10, 11, 12, 13, 14, 15, 16, 19, 20, 21, 22, 23, 24, 25, 26, 27], "summary": {"covered_lines": 18, "num_statements": 18, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": [], "functions": {"": {"executed_lines": [5, 7, 10, 11, 12, 13, 14, 15, 16, 19, 20, 21, 22, 23, 24, 25, 26, 27], "summary": {"covered_lines": 18, "num_statements": 18, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [5, 7, 10, 11, 12, 13, 14, 15, 16, 19, 20, 21, 22, 23, 24, 25, 26, 27], "summary": {"covered_lines": 18, "num_statements": 18, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}}, "app/views/base.py": {"executed_lines": [5, 6, 8, 9, 10, 12, 13, 14, 17, 18, 21, 22, 25, 28, 31, 32, 35, 38, 41], "summary": {"covered_lines": 19, "num_statements": 21, "percent_covered": 80.0, "percent_covered_display": "80.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 90.47619047619048, "percent_statements_covered_display": "90.48", "num_branches": 4, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 3, "percent_branches_covered": 25.0, "percent_branches_covered_display": "25.00"}, "missing_lines": [33, 34], "excluded_lines": [], "executed_branches": [[31, 32]], "missing_branches": [[31, 33], [33, 34], [33, 35]], "functions": {"template_response_with_version": {"executed_lines": [31, 32, 35], "summary": {"covered_lines": 3, "num_statements": 5, "percent_covered": 44.44444444444444, "percent_covered_display": "44.44", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 60.0, "percent_statements_covered_display": "60.00", "num_branches": 4, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 3, "percent_branches_covered": 25.0, "percent_branches_covered_display": "25.00"}, "missing_lines": [33, 34], "excluded_lines": [], "start_line": 28, "executed_branches": [[31, 32]], "missing_branches": [[31, 33], [33, 34], [33, 35]]}, "": {"executed_lines": [5, 6, 8, 9, 10, 12, 13, 14, 17, 18, 21, 22, 25, 28, 38, 41], "summary": {"covered_lines": 16, "num_statements": 16, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [5, 6, 8, 9, 10, 12, 13, 14, 17, 18, 21, 22, 25, 28, 31, 32, 35, 38, 41], "summary": {"covered_lines": 19, "num_statements": 21, "percent_covered": 80.0, "percent_covered_display": "80.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 90.47619047619048, "percent_statements_covered_display": "90.48", "num_branches": 4, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 3, "percent_branches_covered": 25.0, "percent_branches_covered_display": "25.00"}, "missing_lines": [33, 34], "excluded_lines": [], "start_line": 1, "executed_branches": [[31, 32]], "missing_branches": [[31, 33], [33, 34], [33, 35]]}}}, "app/views/dropbox.py": {"executed_lines": [5, 7, 9, 12, 13, 14, 20, 22, 35, 36, 37, 42, 43, 45, 46, 53], "summary": {"covered_lines": 16, "num_statements": 16, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "executed_branches": [[42, 43], [42, 45], [45, 46], [45, 53]], "missing_branches": [], "functions": {"dropbox_setup_page": {"executed_lines": [20, 22], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 14, "executed_branches": [], "missing_branches": []}, "dropbox_callback": {"executed_lines": [42, 43, 45, 46, 53], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 37, "executed_branches": [[42, 43], [42, 45], [45, 46], [45, 53]], "missing_branches": []}, "": {"executed_lines": [5, 7, 9, 12, 13, 14, 35, 36, 37], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [5, 7, 9, 12, 13, 14, 20, 22, 35, 36, 37, 42, 43, 45, 46, 53], "summary": {"covered_lines": 16, "num_statements": 16, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [[42, 43], [42, 45], [45, 46], [45, 53]], "missing_branches": []}}}, "app/views/files.py": {"executed_lines": [5, 7, 8, 10, 11, 12, 14, 17, 18, 19, 33, 35, 37, 40, 43, 47, 51, 54, 57, 65, 68, 71, 72, 75, 76, 79, 80, 81, 82, 85, 88, 89, 92, 94, 128, 129, 130, 134, 135, 136, 138, 141, 143, 144, 149, 157, 158, 159, 162, 163, 164, 167, 168, 170, 171, 172, 173, 174, 175, 180, 183, 184, 186, 191, 209, 217, 236, 238, 245, 269, 270, 272, 273, 276, 278, 279, 280, 281, 286, 287, 288, 293, 294, 295, 298, 299, 300, 301, 302, 303, 305, 306, 307, 308, 310, 322, 323, 324, 325, 326, 328, 339, 341, 343, 346, 355, 358, 359, 360, 361, 374, 376, 377, 380, 381, 383, 384, 385, 388, 392, 394, 396, 397, 398, 400, 401, 404, 405, 406, 409, 410, 411, 413, 421, 422, 423, 427, 429, 430, 432, 434, 435, 438, 439, 441, 448, 449, 450, 454, 456, 457, 459, 461, 462, 465, 466, 468, 475, 476, 477, 515, 516, 517], "summary": {"covered_lines": 163, "num_statements": 224, "percent_covered": 69.48051948051948, "percent_covered_display": "69.48", "missing_lines": 61, "excluded_lines": 0, "percent_statements_covered": 72.76785714285714, "percent_statements_covered_display": "72.77", "num_branches": 84, "num_partial_branches": 15, "covered_branches": 51, "missing_branches": 33, "percent_branches_covered": 60.714285714285715, "percent_branches_covered_display": "60.71"}, "missing_lines": [44, 48, 66, 113, 115, 117, 176, 177, 187, 189, 204, 205, 206, 239, 241, 242, 389, 436, 463, 481, 483, 484, 486, 488, 489, 490, 492, 493, 495, 497, 499, 500, 501, 502, 504, 505, 507, 508, 509, 510, 521, 523, 524, 526, 528, 529, 530, 532, 533, 535, 537, 539, 540, 541, 542, 544, 545, 547, 548, 549, 550], "excluded_lines": [], "executed_branches": [[43, 47], [47, 51], [65, 68], [80, 81], [80, 85], [143, 144], [143, 149], [158, 159], [158, 162], [163, 164], [163, 167], [168, 170], [168, 180], [171, 172], [171, 180], [238, 245], [272, 273], [272, 293], [276, 278], [276, 286], [279, 280], [286, 287], [294, 295], [294, 343], [298, 299], [298, 305], [322, 323], [322, 341], [324, 325], [324, 339], [359, 360], [383, 384], [383, 404], [388, 392], [394, 396], [394, 398], [396, 397], [398, 400], [400, 401], [404, 405], [404, 409], [405, 406], [409, 410], [409, 413], [410, 411], [435, 438], [438, 439], [438, 441], [462, 465], [465, 466], [465, 468]], "missing_branches": [[43, 44], [47, 48], [65, 66], [238, 239], [241, 242], [241, 245], [279, 281], [286, 288], [359, 361], [388, 389], [396, 383], [398, 383], [400, 383], [405, 404], [410, 409], [435, 436], [462, 463], [489, 490], [489, 492], [492, 493], [492, 495], [501, 502], [501, 504], [504, 505], [504, 507], [529, 530], [529, 532], [532, 533], [532, 535], [541, 542], [541, 544], [544, 545], [544, 547]], "functions": {"files_page": {"executed_lines": [33, 35, 37, 40, 43, 47, 51, 54, 57, 65, 68, 71, 72, 75, 76, 79, 80, 81, 82, 85, 88, 89, 92, 94], "summary": {"covered_lines": 24, "num_statements": 30, "percent_covered": 76.3157894736842, "percent_covered_display": "76.32", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 80.0, "percent_statements_covered_display": "80.00", "num_branches": 8, "num_partial_branches": 3, "covered_branches": 5, "missing_branches": 3, "percent_branches_covered": 62.5, "percent_branches_covered_display": "62.50"}, "missing_lines": [44, 48, 66, 113, 115, 117], "excluded_lines": [], "start_line": 19, "executed_branches": [[43, 47], [47, 51], [65, 68], [80, 81], [80, 85]], "missing_branches": [[43, 44], [47, 48], [65, 66]]}, "file_detail_page": {"executed_lines": [134, 135, 136, 138, 141, 143, 144, 149, 157, 158, 159, 162, 163, 164, 167, 168, 170, 171, 172, 173, 174, 175, 180, 183, 184, 186, 191], "summary": {"covered_lines": 27, "num_statements": 34, "percent_covered": 84.0909090909091, "percent_covered_display": "84.09", "missing_lines": 7, "excluded_lines": 0, "percent_statements_covered": 79.41176470588235, "percent_statements_covered_display": "79.41", "num_branches": 10, "num_partial_branches": 0, "covered_branches": 10, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [176, 177, 187, 189, 204, 205, 206], "excluded_lines": [], "start_line": 130, "executed_branches": [[143, 144], [143, 149], [158, 159], [158, 162], [163, 164], [163, 167], [168, 170], [168, 180], [171, 172], [171, 180]], "missing_branches": []}, "_compute_processing_flow": {"executed_lines": [217, 236, 238, 245, 269, 270, 272, 273, 276, 278, 279, 280, 281, 286, 287, 288, 293, 294, 295, 298, 299, 300, 301, 302, 303, 305, 306, 307, 308, 310, 322, 323, 324, 325, 326, 328, 339, 341, 343], "summary": {"covered_lines": 39, "num_statements": 42, "percent_covered": 87.09677419354838, "percent_covered_display": "87.10", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 92.85714285714286, "percent_statements_covered_display": "92.86", "num_branches": 20, "num_partial_branches": 3, "covered_branches": 15, "missing_branches": 5, "percent_branches_covered": 75.0, "percent_branches_covered_display": "75.00"}, "missing_lines": [239, 241, 242], "excluded_lines": [], "start_line": 209, "executed_branches": [[238, 245], [272, 273], [272, 293], [276, 278], [276, 286], [279, 280], [286, 287], [294, 295], [294, 343], [298, 299], [298, 305], [322, 323], [322, 341], [324, 325], [324, 339]], "missing_branches": [[238, 239], [241, 242], [241, 245], [279, 281], [286, 288]]}, "_compute_step_summary": {"executed_lines": [355, 358, 359, 360, 361, 374, 376, 377, 380, 381, 383, 384, 385, 388, 392, 394, 396, 397, 398, 400, 401, 404, 405, 406, 409, 410, 411, 413], "summary": {"covered_lines": 28, "num_statements": 29, "percent_covered": 84.31372549019608, "percent_covered_display": "84.31", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 96.55172413793103, "percent_statements_covered_display": "96.55", "num_branches": 22, "num_partial_branches": 7, "covered_branches": 15, "missing_branches": 7, "percent_branches_covered": 68.18181818181819, "percent_branches_covered_display": "68.18"}, "missing_lines": [389], "excluded_lines": [], "start_line": 346, "executed_branches": [[359, 360], [383, 384], [383, 404], [388, 392], [394, 396], [394, 398], [396, 397], [398, 400], [400, 401], [404, 405], [404, 409], [405, 406], [409, 410], [409, 413], [410, 411]], "missing_branches": [[359, 361], [388, 389], [396, 383], [398, 383], [400, 383], [405, 404], [410, 409]]}, "preview_original_file": {"executed_lines": [427, 429, 430, 432, 434, 435, 438, 439, 441], "summary": {"covered_lines": 9, "num_statements": 10, "percent_covered": 85.71428571428571, "percent_covered_display": "85.71", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 90.0, "percent_statements_covered_display": "90.00", "num_branches": 4, "num_partial_branches": 1, "covered_branches": 3, "missing_branches": 1, "percent_branches_covered": 75.0, "percent_branches_covered_display": "75.00"}, "missing_lines": [436], "excluded_lines": [], "start_line": 423, "executed_branches": [[435, 438], [438, 439], [438, 441]], "missing_branches": [[435, 436]]}, "preview_processed_file": {"executed_lines": [454, 456, 457, 459, 461, 462, 465, 466, 468], "summary": {"covered_lines": 9, "num_statements": 10, "percent_covered": 85.71428571428571, "percent_covered_display": "85.71", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 90.0, "percent_statements_covered_display": "90.00", "num_branches": 4, "num_partial_branches": 1, "covered_branches": 3, "missing_branches": 1, "percent_branches_covered": 75.0, "percent_branches_covered_display": "75.00"}, "missing_lines": [463], "excluded_lines": [], "start_line": 450, "executed_branches": [[462, 465], [465, 466], [465, 468]], "missing_branches": [[462, 463]]}, "get_original_text": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 21, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 21, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00", "num_branches": 8, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 8, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0.00"}, "missing_lines": [481, 483, 484, 486, 488, 489, 490, 492, 493, 495, 497, 499, 500, 501, 502, 504, 505, 507, 508, 509, 510], "excluded_lines": [], "start_line": 477, "executed_branches": [], "missing_branches": [[489, 490], [489, 492], [492, 493], [492, 495], [501, 502], [501, 504], [504, 505], [504, 507]]}, "get_processed_text": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 21, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 21, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00", "num_branches": 8, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 8, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0.00"}, "missing_lines": [521, 523, 524, 526, 528, 529, 530, 532, 533, 535, 537, 539, 540, 541, 542, 544, 545, 547, 548, 549, 550], "excluded_lines": [], "start_line": 517, "executed_branches": [], "missing_branches": [[529, 530], [529, 532], [532, 533], [532, 535], [541, 542], [541, 544], [544, 545], [544, 547]]}, "": {"executed_lines": [5, 7, 8, 10, 11, 12, 14, 17, 18, 19, 128, 129, 130, 209, 346, 421, 422, 423, 448, 449, 450, 475, 476, 477, 515, 516, 517], "summary": {"covered_lines": 27, "num_statements": 27, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [5, 7, 8, 10, 11, 12, 14, 17, 18, 19, 33, 35, 37, 40, 43, 47, 51, 54, 57, 65, 68, 71, 72, 75, 76, 79, 80, 81, 82, 85, 88, 89, 92, 94, 128, 129, 130, 134, 135, 136, 138, 141, 143, 144, 149, 157, 158, 159, 162, 163, 164, 167, 168, 170, 171, 172, 173, 174, 175, 180, 183, 184, 186, 191, 209, 217, 236, 238, 245, 269, 270, 272, 273, 276, 278, 279, 280, 281, 286, 287, 288, 293, 294, 295, 298, 299, 300, 301, 302, 303, 305, 306, 307, 308, 310, 322, 323, 324, 325, 326, 328, 339, 341, 343, 346, 355, 358, 359, 360, 361, 374, 376, 377, 380, 381, 383, 384, 385, 388, 392, 394, 396, 397, 398, 400, 401, 404, 405, 406, 409, 410, 411, 413, 421, 422, 423, 427, 429, 430, 432, 434, 435, 438, 439, 441, 448, 449, 450, 454, 456, 457, 459, 461, 462, 465, 466, 468, 475, 476, 477, 515, 516, 517], "summary": {"covered_lines": 163, "num_statements": 224, "percent_covered": 69.48051948051948, "percent_covered_display": "69.48", "missing_lines": 61, "excluded_lines": 0, "percent_statements_covered": 72.76785714285714, "percent_statements_covered_display": "72.77", "num_branches": 84, "num_partial_branches": 15, "covered_branches": 51, "missing_branches": 33, "percent_branches_covered": 60.714285714285715, "percent_branches_covered_display": "60.71"}, "missing_lines": [44, 48, 66, 113, 115, 117, 176, 177, 187, 189, 204, 205, 206, 239, 241, 242, 389, 436, 463, 481, 483, 484, 486, 488, 489, 490, 492, 493, 495, 497, 499, 500, 501, 502, 504, 505, 507, 508, 509, 510, 521, 523, 524, 526, 528, 529, 530, 532, 533, 535, 537, 539, 540, 541, 542, 544, 545, 547, 548, 549, 550], "excluded_lines": [], "start_line": 1, "executed_branches": [[43, 47], [47, 51], [65, 68], [80, 81], [80, 85], [143, 144], [143, 149], [158, 159], [158, 162], [163, 164], [163, 167], [168, 170], [168, 180], [171, 172], [171, 180], [238, 245], [272, 273], [272, 293], [276, 278], [276, 286], [279, 280], [286, 287], [294, 295], [294, 343], [298, 299], [298, 305], [322, 323], [322, 341], [324, 325], [324, 339], [359, 360], [383, 384], [383, 404], [388, 392], [394, 396], [394, 398], [396, 397], [398, 400], [400, 401], [404, 405], [404, 409], [405, 406], [409, 410], [409, 413], [410, 411], [435, 438], [438, 439], [438, 441], [462, 465], [465, 466], [465, 468]], "missing_branches": [[43, 44], [47, 48], [65, 66], [238, 239], [241, 242], [241, 245], [279, 281], [286, 288], [359, 361], [388, 389], [396, 383], [398, 383], [400, 383], [405, 404], [410, 409], [435, 436], [462, 463], [489, 490], [489, 492], [492, 493], [492, 495], [501, 502], [501, 504], [504, 505], [504, 507], [529, 530], [529, 532], [532, 533], [532, 535], [541, 542], [541, 544], [544, 545], [544, 547]]}}}, "app/views/general.py": {"executed_lines": [5, 6, 8, 9, 10, 12, 13, 15, 18, 19, 26, 27, 30, 33, 35, 36, 37, 40, 43, 46, 47, 55, 56, 58, 60, 66, 72, 75, 76, 78, 81, 82, 85, 86, 89, 90, 92, 95, 96, 97, 99, 102, 103, 105, 106, 109, 112, 113, 116, 122, 125, 126, 127, 128, 129, 134, 145, 148, 149, 151, 152, 155, 156, 158, 159], "summary": {"covered_lines": 65, "num_statements": 71, "percent_covered": 88.60759493670886, "percent_covered_display": "88.61", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 91.54929577464789, "percent_statements_covered_display": "91.55", "num_branches": 8, "num_partial_branches": 3, "covered_branches": 5, "missing_branches": 3, "percent_branches_covered": 62.5, "percent_branches_covered_display": "62.50"}, "missing_lines": [61, 63, 108, 130, 131, 135], "excluded_lines": [], "executed_branches": [[35, 36], [35, 40], [106, 109], [125, 126], [134, 145]], "missing_branches": [[106, 108], [125, 134], [134, 135]], "functions": {"serve_index": {"executed_lines": [26, 27, 30, 33, 35, 36, 37, 40, 43, 46, 47, 55, 56, 58, 60, 66, 72], "summary": {"covered_lines": 17, "num_statements": 19, "percent_covered": 90.47619047619048, "percent_covered_display": "90.48", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 89.47368421052632, "percent_statements_covered_display": "89.47", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [61, 63], "excluded_lines": [], "start_line": 19, "executed_branches": [[35, 36], [35, 40]], "missing_branches": []}, "serve_about": {"executed_lines": [78], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 76, "executed_branches": [], "missing_branches": []}, "serve_privacy": {"executed_lines": [85, 86], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 82, "executed_branches": [], "missing_branches": []}, "serve_imprint": {"executed_lines": [92], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 90, "executed_branches": [], "missing_branches": []}, "serve_upload": {"executed_lines": [99], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 97, "executed_branches": [], "missing_branches": []}, "favicon": {"executed_lines": [105, 106, 109], "summary": {"covered_lines": 3, "num_statements": 4, "percent_covered": 66.66666666666667, "percent_covered_display": "66.67", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 75.0, "percent_statements_covered_display": "75.00", "num_branches": 2, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 1, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50.00"}, "missing_lines": [108], "excluded_lines": [], "start_line": 103, "executed_branches": [[106, 109]], "missing_branches": [[106, 108]]}, "serve_license": {"executed_lines": [116, 122, 125, 126, 127, 128, 129, 134, 145], "summary": {"covered_lines": 9, "num_statements": 12, "percent_covered": 68.75, "percent_covered_display": "68.75", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 75.0, "percent_statements_covered_display": "75.00", "num_branches": 4, "num_partial_branches": 2, "covered_branches": 2, "missing_branches": 2, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50.00"}, "missing_lines": [130, 131, 135], "excluded_lines": [], "start_line": 113, "executed_branches": [[125, 126], [134, 145]], "missing_branches": [[125, 134], [134, 135]]}, "serve_cookies": {"executed_lines": [151, 152], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 149, "executed_branches": [], "missing_branches": []}, "serve_terms": {"executed_lines": [158, 159], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 156, "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [5, 6, 8, 9, 10, 12, 13, 15, 18, 19, 75, 76, 81, 82, 89, 90, 95, 96, 97, 102, 103, 112, 113, 148, 149, 155, 156], "summary": {"covered_lines": 27, "num_statements": 27, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [5, 6, 8, 9, 10, 12, 13, 15, 18, 19, 26, 27, 30, 33, 35, 36, 37, 40, 43, 46, 47, 55, 56, 58, 60, 66, 72, 75, 76, 78, 81, 82, 85, 86, 89, 90, 92, 95, 96, 97, 99, 102, 103, 105, 106, 109, 112, 113, 116, 122, 125, 126, 127, 128, 129, 134, 145, 148, 149, 151, 152, 155, 156, 158, 159], "summary": {"covered_lines": 65, "num_statements": 71, "percent_covered": 88.60759493670886, "percent_covered_display": "88.61", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 91.54929577464789, "percent_statements_covered_display": "91.55", "num_branches": 8, "num_partial_branches": 3, "covered_branches": 5, "missing_branches": 3, "percent_branches_covered": 62.5, "percent_branches_covered_display": "62.50"}, "missing_lines": [61, 63, 108, 130, 131, 135], "excluded_lines": [], "start_line": 1, "executed_branches": [[35, 36], [35, 40], [106, 109], [125, 126], [134, 145]], "missing_branches": [[106, 108], [125, 134], [134, 135]]}}}, "app/views/google_drive.py": {"executed_lines": [5, 7, 8, 10, 12, 15, 16, 17, 23, 26, 31, 34, 36, 39, 42, 62, 63, 64, 69, 70, 72, 73, 79, 82, 83, 84], "summary": {"covered_lines": 26, "num_statements": 33, "percent_covered": 75.60975609756098, "percent_covered_display": "75.61", "missing_lines": 7, "excluded_lines": 0, "percent_statements_covered": 78.78787878787878, "percent_statements_covered_display": "78.79", "num_branches": 8, "num_partial_branches": 1, "covered_branches": 5, "missing_branches": 3, "percent_branches_covered": 62.5, "percent_branches_covered_display": "62.50"}, "missing_lines": [37, 88, 89, 93, 95, 97, 107], "excluded_lines": [], "executed_branches": [[36, 39], [69, 70], [69, 72], [72, 73], [72, 79]], "missing_branches": [[36, 37], [88, 89], [88, 93]], "functions": {"google_drive_setup_page": {"executed_lines": [23, 26, 31, 34, 36, 39, 42], "summary": {"covered_lines": 7, "num_statements": 8, "percent_covered": 80.0, "percent_covered_display": "80.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 87.5, "percent_statements_covered_display": "87.50", "num_branches": 2, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 1, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50.00"}, "missing_lines": [37], "excluded_lines": [], "start_line": 17, "executed_branches": [[36, 39]], "missing_branches": [[36, 37]]}, "google_drive_callback": {"executed_lines": [69, 70, 72, 73, 79], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 64, "executed_branches": [[69, 70], [69, 72], [72, 73], [72, 79]], "missing_branches": []}, "google_drive_auth_start": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 6, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 2, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0.00"}, "missing_lines": [88, 89, 93, 95, 97, 107], "excluded_lines": [], "start_line": 84, "executed_branches": [], "missing_branches": [[88, 89], [88, 93]]}, "": {"executed_lines": [5, 7, 8, 10, 12, 15, 16, 17, 62, 63, 64, 82, 83, 84], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [5, 7, 8, 10, 12, 15, 16, 17, 23, 26, 31, 34, 36, 39, 42, 62, 63, 64, 69, 70, 72, 73, 79, 82, 83, 84], "summary": {"covered_lines": 26, "num_statements": 33, "percent_covered": 75.60975609756098, "percent_covered_display": "75.61", "missing_lines": 7, "excluded_lines": 0, "percent_statements_covered": 78.78787878787878, "percent_statements_covered_display": "78.79", "num_branches": 8, "num_partial_branches": 1, "covered_branches": 5, "missing_branches": 3, "percent_branches_covered": 62.5, "percent_branches_covered_display": "62.50"}, "missing_lines": [37, 88, 89, 93, 95, 97, 107], "excluded_lines": [], "start_line": 1, "executed_branches": [[36, 39], [69, 70], [69, 72], [72, 73], [72, 79]], "missing_branches": [[36, 37], [88, 89], [88, 93]]}}}, "app/views/license_routes.py": {"executed_lines": [1, 3, 4, 6, 8, 11, 12, 24, 25], "summary": {"covered_lines": 9, "num_statements": 15, "percent_covered": 52.94117647058823, "percent_covered_display": "52.94", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 60.0, "percent_statements_covered_display": "60.00", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 2, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0.00"}, "missing_lines": [16, 17, 18, 20, 21, 29], "excluded_lines": [], "executed_branches": [], "missing_branches": [[17, 18], [17, 20]], "functions": {"get_lgpl_license": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 5, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 2, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0.00"}, "missing_lines": [16, 17, 18, 20, 21], "excluded_lines": [], "start_line": 12, "executed_branches": [], "missing_branches": [[17, 18], [17, 20]]}, "serve_attribution": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [29], "excluded_lines": [], "start_line": 25, "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [1, 3, 4, 6, 8, 11, 12, 24, 25], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [1, 3, 4, 6, 8, 11, 12, 24, 25], "summary": {"covered_lines": 9, "num_statements": 15, "percent_covered": 52.94117647058823, "percent_covered_display": "52.94", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 60.0, "percent_statements_covered_display": "60.00", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 2, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0.00"}, "missing_lines": [16, 17, 18, 20, 21, 29], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": [[17, 18], [17, 20]]}}}, "app/views/onedrive.py": {"executed_lines": [5, 7, 9, 12, 13, 14, 20, 25, 42, 43, 44, 49, 50, 52, 53, 59], "summary": {"covered_lines": 16, "num_statements": 16, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "executed_branches": [[49, 50], [49, 52], [52, 53], [52, 59]], "missing_branches": [], "functions": {"onedrive_setup_page": {"executed_lines": [20, 25], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 14, "executed_branches": [], "missing_branches": []}, "onedrive_callback": {"executed_lines": [49, 50, 52, 53, 59], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 44, "executed_branches": [[49, 50], [49, 52], [52, 53], [52, 59]], "missing_branches": []}, "": {"executed_lines": [5, 7, 9, 12, 13, 14, 42, 43, 44], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [5, 7, 9, 12, 13, 14, 20, 25, 42, 43, 44, 49, 50, 52, 53, 59], "summary": {"covered_lines": 16, "num_statements": 16, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [[49, 50], [49, 52], [52, 53], [52, 59]], "missing_branches": []}}}, "app/views/settings.py": {"executed_lines": [5, 6, 7, 8, 10, 11, 12, 14, 15, 16, 18, 19, 22, 31, 32, 33, 34, 35, 36, 39, 40, 44, 47, 48, 49, 50], "summary": {"covered_lines": 26, "num_statements": 56, "percent_covered": 41.42857142857143, "percent_covered_display": "41.43", "missing_lines": 30, "excluded_lines": 0, "percent_statements_covered": 46.42857142857143, "percent_statements_covered_display": "46.43", "num_branches": 14, "num_partial_branches": 1, "covered_branches": 3, "missing_branches": 11, "percent_branches_covered": 21.428571428571427, "percent_branches_covered_display": "21.43"}, "missing_lines": [42, 58, 60, 62, 65, 68, 69, 70, 71, 73, 77, 78, 79, 80, 82, 83, 84, 85, 88, 89, 90, 93, 96, 97, 98, 100, 111, 114, 115, 116], "excluded_lines": [], "executed_branches": [[34, 35], [34, 39], [39, 40]], "missing_branches": [[39, 42], [69, 70], [69, 111], [71, 69], [71, 73], [77, 78], [77, 82], [82, 83], [82, 88], [97, 98], [97, 100]], "functions": {"require_admin_access": {"executed_lines": [31, 32, 44], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 22, "executed_branches": [], "missing_branches": []}, "require_admin_access.wrapper": {"executed_lines": [33, 34, 35, 36, 39, 40], "summary": {"covered_lines": 6, "num_statements": 7, "percent_covered": 81.81818181818181, "percent_covered_display": "81.82", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 85.71428571428571, "percent_statements_covered_display": "85.71", "num_branches": 4, "num_partial_branches": 1, "covered_branches": 3, "missing_branches": 1, "percent_branches_covered": 75.0, "percent_branches_covered_display": "75.00"}, "missing_lines": [42], "excluded_lines": [], "start_line": 32, "executed_branches": [[34, 35], [34, 39], [39, 40]], "missing_branches": [[39, 42]]}, "settings_page": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 29, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 29, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00", "num_branches": 10, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 10, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0.00"}, "missing_lines": [58, 60, 62, 65, 68, 69, 70, 71, 73, 77, 78, 79, 80, 82, 83, 84, 85, 88, 89, 90, 93, 96, 97, 98, 100, 111, 114, 115, 116], "excluded_lines": [], "start_line": 50, "executed_branches": [], "missing_branches": [[69, 70], [69, 111], [71, 69], [71, 73], [77, 78], [77, 82], [82, 83], [82, 88], [97, 98], [97, 100]]}, "": {"executed_lines": [5, 6, 7, 8, 10, 11, 12, 14, 15, 16, 18, 19, 22, 47, 48, 49, 50], "summary": {"covered_lines": 17, "num_statements": 17, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [5, 6, 7, 8, 10, 11, 12, 14, 15, 16, 18, 19, 22, 31, 32, 33, 34, 35, 36, 39, 40, 44, 47, 48, 49, 50], "summary": {"covered_lines": 26, "num_statements": 56, "percent_covered": 41.42857142857143, "percent_covered_display": "41.43", "missing_lines": 30, "excluded_lines": 0, "percent_statements_covered": 46.42857142857143, "percent_statements_covered_display": "46.43", "num_branches": 14, "num_partial_branches": 1, "covered_branches": 3, "missing_branches": 11, "percent_branches_covered": 21.428571428571427, "percent_branches_covered_display": "21.43"}, "missing_lines": [42, 58, 60, 62, 65, 68, 69, 70, 71, 73, 77, 78, 79, 80, 82, 83, 84, 85, 88, 89, 90, 93, 96, 97, 98, 100, 111, 114, 115, 116], "excluded_lines": [], "start_line": 1, "executed_branches": [[34, 35], [34, 39], [39, 40]], "missing_branches": [[39, 42], [69, 70], [69, 111], [71, 69], [71, 73], [77, 78], [77, 82], [82, 83], [82, 88], [97, 98], [97, 100]]}}}, "app/views/status.py": {"executed_lines": [5, 6, 7, 9, 11, 13, 14, 17, 18, 19, 23, 26, 29, 32, 33, 35, 63, 66, 67, 68, 75, 77, 92, 93, 94, 100, 103, 105, 107], "summary": {"covered_lines": 29, "num_statements": 52, "percent_covered": 51.724137931034484, "percent_covered_display": "51.72", "missing_lines": 23, "excluded_lines": 0, "percent_statements_covered": 55.76923076923077, "percent_statements_covered_display": "55.77", "num_branches": 6, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 5, "percent_branches_covered": 16.666666666666668, "percent_branches_covered_display": "16.67"}, "missing_lines": [37, 40, 41, 42, 43, 44, 45, 46, 47, 48, 51, 52, 53, 54, 55, 58, 59, 60, 61, 69, 70, 71, 72], "excluded_lines": [], "executed_branches": [[35, 63]], "missing_branches": [[35, 37], [42, 43], [42, 51], [43, 42], [43, 44]], "functions": {"status_dashboard": {"executed_lines": [23, 26, 29, 32, 33, 35, 63, 66, 67, 68, 75, 77], "summary": {"covered_lines": 12, "num_statements": 35, "percent_covered": 31.70731707317073, "percent_covered_display": "31.71", "missing_lines": 23, "excluded_lines": 0, "percent_statements_covered": 34.285714285714285, "percent_statements_covered_display": "34.29", "num_branches": 6, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 5, "percent_branches_covered": 16.666666666666668, "percent_branches_covered_display": "16.67"}, "missing_lines": [37, 40, 41, 42, 43, 44, 45, 46, 47, 48, 51, 52, 53, 54, 55, 58, 59, 60, 61, 69, 70, 71, 72], "excluded_lines": [], "start_line": 19, "executed_branches": [[35, 63]], "missing_branches": [[35, 37], [42, 43], [42, 51], [43, 42], [43, 44]]}, "env_debug": {"executed_lines": [100, 103, 105, 107], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 94, "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [5, 6, 7, 9, 11, 13, 14, 17, 18, 19, 92, 93, 94], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [5, 6, 7, 9, 11, 13, 14, 17, 18, 19, 23, 26, 29, 32, 33, 35, 63, 66, 67, 68, 75, 77, 92, 93, 94, 100, 103, 105, 107], "summary": {"covered_lines": 29, "num_statements": 52, "percent_covered": 51.724137931034484, "percent_covered_display": "51.72", "missing_lines": 23, "excluded_lines": 0, "percent_statements_covered": 55.76923076923077, "percent_statements_covered_display": "55.77", "num_branches": 6, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 5, "percent_branches_covered": 16.666666666666668, "percent_branches_covered_display": "16.67"}, "missing_lines": [37, 40, 41, 42, 43, 44, 45, 46, 47, 48, 51, 52, 53, 54, 55, 58, 59, 60, 61, 69, 70, 71, 72], "excluded_lines": [], "start_line": 1, "executed_branches": [[35, 63]], "missing_branches": [[35, 37], [42, 43], [42, 51], [43, 42], [43, 44]]}}}, "app/views/wizard.py": {"executed_lines": [5, 6, 8, 9, 10, 12, 13, 14, 16, 17, 20, 21, 29, 30, 33, 34, 35, 36, 39, 42, 44, 57, 58, 62, 64, 67, 68, 71, 72, 73, 74, 77, 79, 80, 81, 84, 85, 86, 88, 91, 92, 94, 96, 99, 106, 107, 113, 114, 115, 117, 118, 119, 121], "summary": {"covered_lines": 53, "num_statements": 59, "percent_covered": 90.41095890410959, "percent_covered_display": "90.41", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 89.83050847457628, "percent_statements_covered_display": "89.83", "num_branches": 14, "num_partial_branches": 1, "covered_branches": 13, "missing_branches": 1, "percent_branches_covered": 92.85714285714286, "percent_branches_covered_display": "92.86"}, "missing_lines": [101, 102, 103, 122, 123, 124], "excluded_lines": [], "executed_branches": [[33, 34], [33, 35], [35, 36], [35, 39], [72, 73], [72, 88], [77, 72], [77, 79], [79, 80], [79, 84], [84, 85], [94, 96], [94, 99]], "missing_branches": [[84, 72]], "functions": {"setup_wizard": {"executed_lines": [29, 30, 33, 34, 35, 36, 39, 42, 44], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 21, "executed_branches": [[33, 34], [33, 35], [35, 36], [35, 39]], "missing_branches": []}, "setup_wizard_save": {"executed_lines": [62, 64, 67, 68, 71, 72, 73, 74, 77, 79, 80, 81, 84, 85, 86, 88, 91, 92, 94, 96, 99], "summary": {"covered_lines": 21, "num_statements": 24, "percent_covered": 88.23529411764706, "percent_covered_display": "88.24", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 87.5, "percent_statements_covered_display": "87.50", "num_branches": 10, "num_partial_branches": 1, "covered_branches": 9, "missing_branches": 1, "percent_branches_covered": 90.0, "percent_branches_covered_display": "90.00"}, "missing_lines": [101, 102, 103], "excluded_lines": [], "start_line": 58, "executed_branches": [[72, 73], [72, 88], [77, 72], [77, 79], [79, 80], [79, 84], [84, 85], [94, 96], [94, 99]], "missing_branches": [[84, 72]]}, "setup_wizard_skip": {"executed_lines": [113, 114, 115, 117, 118, 119, 121], "summary": {"covered_lines": 7, "num_statements": 10, "percent_covered": 70.0, "percent_covered_display": "70.00", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 70.0, "percent_statements_covered_display": "70.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [122, 123, 124], "excluded_lines": [], "start_line": 107, "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [5, 6, 8, 9, 10, 12, 13, 14, 16, 17, 20, 21, 57, 58, 106, 107], "summary": {"covered_lines": 16, "num_statements": 16, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [5, 6, 8, 9, 10, 12, 13, 14, 16, 17, 20, 21, 29, 30, 33, 34, 35, 36, 39, 42, 44, 57, 58, 62, 64, 67, 68, 71, 72, 73, 74, 77, 79, 80, 81, 84, 85, 86, 88, 91, 92, 94, 96, 99, 106, 107, 113, 114, 115, 117, 118, 119, 121], "summary": {"covered_lines": 53, "num_statements": 59, "percent_covered": 90.41095890410959, "percent_covered_display": "90.41", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 89.83050847457628, "percent_statements_covered_display": "89.83", "num_branches": 14, "num_partial_branches": 1, "covered_branches": 13, "missing_branches": 1, "percent_branches_covered": 92.85714285714286, "percent_branches_covered_display": "92.86"}, "missing_lines": [101, 102, 103, 122, 123, 124], "excluded_lines": [], "start_line": 1, "executed_branches": [[33, 34], [33, 35], [35, 36], [35, 39], [72, 73], [72, 88], [77, 72], [77, 79], [79, 80], [79, 84], [84, 85], [94, 96], [94, 99]], "missing_branches": [[84, 72]]}}}}, "totals": {"covered_lines": 4002, "num_statements": 6286, "percent_covered": 60.58339566192969, "percent_covered_display": "60.58", "missing_lines": 2284, "excluded_lines": 0, "percent_statements_covered": 63.66528794145721, "percent_statements_covered_display": "63.67", "num_branches": 1736, "num_partial_branches": 234, "covered_branches": 858, "missing_branches": 878, "percent_branches_covered": 49.423963133640555, "percent_branches_covered_display": "49.42"}} diff --git a/docs/API.md b/docs/API.md index 44042c56..4255f02b 100644 --- a/docs/API.md +++ b/docs/API.md @@ -71,16 +71,16 @@ def make_api_request(url, max_retries=3): """Make API request with rate limit handling.""" for attempt in range(max_retries): response = requests.get(url) - + if response.status_code == 429: # Rate limit exceeded retry_after = int(response.headers.get('Retry-After', 60)) print(f"Rate limit exceeded. Retrying after {retry_after} seconds...") time.sleep(retry_after) continue - + return response - + raise Exception("Max retries exceeded") ``` @@ -203,7 +203,7 @@ The DocuElevate browser extension uses this endpoint to send files directly from Upload one or more files from your computer for processing. -**Request**: +**Request**: - Multipart form data with file(s) **Response**: diff --git a/docs/AuthenticationSetup.md b/docs/AuthenticationSetup.md index de1d3cb4..5cc9a7b4 100644 --- a/docs/AuthenticationSetup.md +++ b/docs/AuthenticationSetup.md @@ -79,7 +79,7 @@ For larger deployments or when you need more advanced authentication features, O ### 1. Create an Application in Authentik 1. Log in to your Authentik admin interface -2. Navigate to "Applications" > "Applications" +2. Navigate to "Applications" > "Applications" 3. Click "Create" 4. Fill in the following details: - **Name**: DocuElevate diff --git a/docs/BuildMetadata.md b/docs/BuildMetadata.md index c95b6377..7feff2a9 100644 --- a/docs/BuildMetadata.md +++ b/docs/BuildMetadata.md @@ -243,7 +243,7 @@ docker build -t docuelevate . **Cause:** Building outside of a Git repository -**Solution:** +**Solution:** - Clone the repository properly with `.git` directory - Or set `GIT_COMMIT_SHA` environment variable @@ -261,7 +261,7 @@ docker build --no-cache -t docuelevate . **Cause:** Files listed in `.dockerignore` -**Solution:** +**Solution:** - Check `.dockerignore` doesn't block `BUILD_DATE`, `GIT_SHA`, or `RUNTIME_INFO` - The `VERSION` file should always be committed to git diff --git a/docs/ConfigurationGuide.md b/docs/ConfigurationGuide.md index cdec2742..1d0d7e1f 100644 --- a/docs/ConfigurationGuide.md +++ b/docs/ConfigurationGuide.md @@ -352,7 +352,7 @@ PAPERLESS_CUSTOM_FIELDS_MAPPING='{"absender": "Sender", "empfaenger": "Recipient ### Dropbox -| **Variable** | **Description** | +| **Variable** | **Description** | |-------------------------|--------------------------------------------------| | `DROPBOX_APP_KEY` | Dropbox API app key. | | `DROPBOX_APP_SECRET` | Dropbox API app secret. | diff --git a/docs/ConfigurationMaster.md b/docs/ConfigurationMaster.md index aec61d2b..9358900d 100644 --- a/docs/ConfigurationMaster.md +++ b/docs/ConfigurationMaster.md @@ -1,4 +1,4 @@ -# DocuElevate Configuration +# DocuElevate Configuration This section contains detailed documentation about configuring DocuElevate for your environment. diff --git a/docs/DeploymentGuide.md b/docs/DeploymentGuide.md index 5f5a42c5..6f7a88db 100644 --- a/docs/DeploymentGuide.md +++ b/docs/DeploymentGuide.md @@ -106,17 +106,17 @@ Add security headers to your Nginx configuration: server { listen 443 ssl http2; server_name docuelevate.example.com; - + # SSL configuration ssl_certificate /etc/nginx/ssl/cert.pem; ssl_certificate_key /etc/nginx/ssl/key.pem; - + # Security headers add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always; add_header Content-Security-Policy "default-src 'self'; script-src 'self' 'unsafe-inline'; style-src 'self' 'unsafe-inline'; img-src 'self' data: https:; font-src 'self' data:;" always; add_header X-Frame-Options "DENY" always; add_header X-Content-Type-Options "nosniff" always; - + location / { proxy_pass http://localhost:8000; proxy_set_header Host $host; @@ -185,7 +185,7 @@ For production use, we recommend setting up a reverse proxy (like Nginx or Traef server { listen 80; server_name docuelevate.example.com; - + location / { proxy_pass http://localhost:8000; proxy_set_header Host $host; diff --git a/docs/DropboxSetup.md b/docs/DropboxSetup.md index 95b4409b..37de4701 100644 --- a/docs/DropboxSetup.md +++ b/docs/DropboxSetup.md @@ -4,7 +4,7 @@ This guide explains how to set up the Dropbox integration for DocuElevate. ## Required Configuration Parameters -| **Variable** | **Description** | +| **Variable** | **Description** | |-------------------------|--------------------------------------------------| | `DROPBOX_APP_KEY` | Dropbox API app key | | `DROPBOX_APP_SECRET` | Dropbox API app secret | @@ -64,11 +64,11 @@ The wizard handles all the token exchange steps and provides you with the exact 1. Go to the "OAuth 2" tab in your app settings 2. Add a redirect URI: `http://localhost` (this is for the authorization flow) 3. Generate an authorization URL with these instructions: - + ``` https://www.dropbox.com/oauth2/authorize?client_id=YOUR_APP_KEY&response_type=code&token_access_type=offline ``` - + 4. Replace `YOUR_APP_KEY` with your app key 5. Open this URL in your browser 6. Authorize the app when prompted @@ -78,7 +78,7 @@ The wizard handles all the token exchange steps and provides you with the exact ### 5. Exchange the Code for a Refresh Token 1. Use this curl command to exchange the code for tokens: - + ```bash curl -X POST https://api.dropboxapi.com/oauth2/token \ -d code=YOUR_AUTH_CODE \ @@ -87,7 +87,7 @@ The wizard handles all the token exchange steps and provides you with the exact -d client_secret=YOUR_APP_SECRET \ -d redirect_uri=http://localhost ``` - + 2. From the response, copy the `refresh_token` value ### 6. Configure DocuElevate diff --git a/docs/FileDetailPageLayout.md b/docs/FileDetailPageLayout.md index 6ebefb89..de6fb0a3 100644 --- a/docs/FileDetailPageLayout.md +++ b/docs/FileDetailPageLayout.md @@ -108,4 +108,3 @@ Text extraction logs to check for `extracted_text`: - `process_with_azure_document_intelligence` - Azure OCR processing Both may contain extracted text in the `detail` field when `status = 'success'`. - diff --git a/docs/FileProcessingStatusArchitecture.md b/docs/FileProcessingStatusArchitecture.md index 109e98b8..ca78467e 100644 --- a/docs/FileProcessingStatusArchitecture.md +++ b/docs/FileProcessingStatusArchitecture.md @@ -215,9 +215,9 @@ for step in ["hash_file", "create_file_record", "check_text", ...]: # Start update_step_status(db, file.id, step, "in_progress", started_at=now()) log_event(db, file.id, step, "in_progress", "Starting...") - + # Do work... - + # Complete update_step_status(db, file.id, step, "success", completed_at=now()) log_event(db, file.id, step, "success", "Completed successfully") @@ -349,6 +349,6 @@ For deploying to existing system: - [ ] Run migration utility: `migrate_all_files(db, dry_run=True)` to test - [ ] Run actual migration: `migrate_all_files(db, dry_run=False)` - [ ] Verify: Check a few files with `verify_migration()` -- [ ] Update workers to call `update_step_status()` +- [ ] Update workers to call `update_step_status()` - [ ] Update file creation to call `initialize_file_steps()` - [ ] Monitor dashboard for correct status display diff --git a/docs/OAuth_Testing_CI_CD.md b/docs/OAuth_Testing_CI_CD.md index 3888c800..1611ccd8 100644 --- a/docs/OAuth_Testing_CI_CD.md +++ b/docs/OAuth_Testing_CI_CD.md @@ -16,19 +16,19 @@ on: [push, pull_request] jobs: test: runs-on: ubuntu-latest - + steps: - uses: actions/checkout@v4 - + - name: Set up Python uses: actions/setup-python@v5 with: python-version: '3.12' - + - name: Install dependencies run: | pip install -r requirements-dev.txt - + - name: Run OAuth tests (mock) run: | pytest tests/test_oauth_integration_flows.py -v @@ -48,19 +48,19 @@ jobs: runs-on: ubuntu-latest # Only run if secrets are available (not on external PRs) if: github.event_name == 'push' || github.event.pull_request.head.repo.full_name == github.repository - + steps: - uses: actions/checkout@v4 - + - name: Set up Python uses: actions/setup-python@v5 with: python-version: '3.12' - + - name: Install dependencies run: | pip install -r requirements-dev.txt - + - name: Run OAuth tests (real) env: AUTHENTIK_CLIENT_ID: ${{ secrets.AUTHENTIK_CLIENT_ID }} @@ -84,43 +84,43 @@ jobs: test-mock-oauth: name: OAuth Tests (Mock) runs-on: ubuntu-latest - + steps: - uses: actions/checkout@v4 - + - name: Set up Python uses: actions/setup-python@v5 with: python-version: '3.12' - + - name: Install dependencies run: | pip install -r requirements-dev.txt - + - name: Run mock OAuth tests run: | pytest tests/test_oauth_integration_flows.py \ -v \ -m "not requires_external" - + test-real-oauth: name: OAuth Tests (Real - Internal Only) runs-on: ubuntu-latest # Only run on internal commits where secrets are available if: github.event_name == 'push' || github.event.pull_request.head.repo.full_name == github.repository - + steps: - uses: actions/checkout@v4 - + - name: Set up Python uses: actions/setup-python@v5 with: python-version: '3.12' - + - name: Install dependencies run: | pip install -r requirements-dev.txt - + - name: Run real OAuth tests env: AUTHENTIK_CLIENT_ID: ${{ secrets.AUTHENTIK_CLIENT_ID }} @@ -157,7 +157,7 @@ on: [push, pull_request] jobs: test: runs-on: ubuntu-latest - + services: mock-oauth: image: ghcr.io/navikt/mock-oauth2-server:2.1.1 @@ -168,24 +168,24 @@ jobs: --health-interval 10s --health-timeout 5s --health-retries 5 - + steps: - uses: actions/checkout@v4 - + - name: Set up Python uses: actions/setup-python@v5 with: python-version: '3.12' - + - name: Install dependencies run: | pip install -r requirements-dev.txt - + - name: Configure OAuth to use service run: | export OAUTH_MOCK_URL=http://localhost:8080 export USE_MOCK_OAUTH=true - + - name: Run tests run: | pytest tests/test_oauth_integration_flows.py -v @@ -255,7 +255,7 @@ Add this step to debug mock OAuth server issues: **Cause**: Real OAuth credentials not configured or not accessible. -**Solution**: +**Solution**: - For local dev: Use mock mode (default) - For CI: Add secrets to GitHub repository settings - Check secret availability: `if github.event_name == 'push'` @@ -291,20 +291,20 @@ on: [push, pull_request] jobs: # Fast mock OAuth tests (always run) mock-oauth-tests: - name: OAuth Tests (Mock) + name: OAuth Tests (Mock) runs-on: ubuntu-latest - + steps: - uses: actions/checkout@v4 - + - name: Set up Python uses: actions/setup-python@v5 with: python-version: '3.12' - + - name: Install dependencies run: pip install -r requirements-dev.txt - + - name: Run mock OAuth tests run: | pytest tests/test_oauth_integration_flows.py \ @@ -312,7 +312,7 @@ jobs: -m "not requires_external" \ --cov=app.auth \ --cov-report=term-missing - + - name: Upload coverage uses: codecov/codecov-action@v3 with: @@ -324,18 +324,18 @@ jobs: name: OAuth Tests (Real - Internal) runs-on: ubuntu-latest if: github.event_name == 'push' || github.event.pull_request.head.repo.full_name == github.repository - + steps: - uses: actions/checkout@v4 - + - name: Set up Python uses: actions/setup-python@v5 with: python-version: '3.12' - + - name: Install dependencies run: pip install -r requirements-dev.txt - + - name: Run real OAuth tests env: AUTHENTIK_CLIENT_ID: ${{ secrets.AUTHENTIK_CLIENT_ID }} @@ -345,7 +345,7 @@ jobs: pytest tests/test_oauth_integration_flows.py \ -v \ -m requires_external - + - name: Upload coverage uses: codecov/codecov-action@v3 with: diff --git a/docs/OneDriveSetup.md b/docs/OneDriveSetup.md index 67ad870e..035fb61e 100644 --- a/docs/OneDriveSetup.md +++ b/docs/OneDriveSetup.md @@ -138,7 +138,7 @@ If you're using a work/school account provided by your organization: ### 2. Configuration based on use case **Option A: Access your own OneDrive (Interactive Login)** - + This option requires a refresh token: 1. Use the auth wizard with your tenant ID, or 2. Follow the same manual steps as for personal accounts, but use your work email to sign in @@ -146,7 +146,7 @@ This option requires a refresh token: 4. Set the refresh token you receive as `ONEDRIVE_REFRESH_TOKEN` **Option B: Access OneDrive as a system service (App-only access)** - + This option is for service accounts or automated systems with no user interaction: 1. In API permissions, add "Application permissions" instead of "Delegated permissions" 2. Add `Files.ReadWrite.All` permission under "Application permissions" @@ -158,15 +158,15 @@ This option is for service accounts or automated systems with no user interactio If you encounter errors during authentication: -1. **Check account permissions**: +1. **Check account permissions**: - Ensure your Microsoft account has the necessary permissions to grant access - For corporate accounts, check if your admin has restricted third-party app access -2. **Permission errors**: +2. **Permission errors**: - Verify the app registration has the correct API permissions - For corporate accounts, ensure an admin has consented to the permissions -3. **Refresh token expired**: +3. **Refresh token expired**: - If uploads stop working, you can generate a new refresh token using the auth wizard - Click on "Refresh Token" in the OneDrive setup page diff --git a/docs/RateLimitingStrategy.md b/docs/RateLimitingStrategy.md index 80def7e4..b2a3d540 100644 --- a/docs/RateLimitingStrategy.md +++ b/docs/RateLimitingStrategy.md @@ -271,7 +271,7 @@ from locust import HttpUser, task, between class APIUser(HttpUser): wait_time = between(0.1, 0.5) - + @task def get_files(self): self.client.get("/api/files") diff --git a/docs/SettingsManagement.md b/docs/SettingsManagement.md index a27f7fae..d710c8d8 100644 --- a/docs/SettingsManagement.md +++ b/docs/SettingsManagement.md @@ -93,7 +93,7 @@ The current value displayed is **always** the effective value after applying pre 6. Successfully saved settings will show a 🟢 DB badge 7. If any changed setting requires a restart, you'll be notified -**Important**: +**Important**: - You don't need to fill all fields - only change what you want to override - Saving a setting to the database makes it override environment variables - Empty fields are ignored (won't clear existing values) @@ -196,7 +196,7 @@ Settings are stored in the `application_settings` table with: ### Can't Access Settings Page - **Check authentication**: Make sure you're logged in -- **Check admin status**: +- **Check admin status**: - Local auth: Verify `ADMIN_USERNAME` and `ADMIN_PASSWORD` are correct - OAuth: Verify your user is in the admin group (configurable via `ADMIN_GROUP_NAME`) - **Check logs**: Look for "Non-admin user attempted to access settings page" messages @@ -243,5 +243,5 @@ python3 test_integration.py ## Related Documentation - [Configuration Guide](./ConfigurationGuide.md) - Environment variable reference -- [Deployment Guide](./DeploymentGuide.md) - Production deployment +- [Deployment Guide](./DeploymentGuide.md) - Production deployment - [API Documentation](./API.md) - Full API reference diff --git a/docs/StorageArchitecture.md b/docs/StorageArchitecture.md index f37f76d2..9237c690 100644 --- a/docs/StorageArchitecture.md +++ b/docs/StorageArchitecture.md @@ -223,7 +223,7 @@ curl -X POST "http://localhost:8000/api/files/123/reprocess-with-cloud-ocr" \ ```python class FileRecord(Base): __tablename__ = "files" - + id = Column(Integer, primary_key=True) filehash = Column(String, unique=True, nullable=False) original_filename = Column(String) # User's original name diff --git a/docs/archive/ANALYSIS_SUMMARY.md b/docs/archive/ANALYSIS_SUMMARY.md index 89b55baa..15c7b528 100644 --- a/docs/archive/ANALYSIS_SUMMARY.md +++ b/docs/archive/ANALYSIS_SUMMARY.md @@ -1,7 +1,7 @@ # Repository Analysis & Improvement Summary -**Date:** 2026-02-06 -**Repository:** christianlouis/DocuElevate +**Date:** 2026-02-06 +**Repository:** christianlouis/DocuElevate **Current Version:** v0.5.0 ## Executive Summary @@ -343,6 +343,6 @@ httpx>=0.26.0 --- -**Prepared by:** GitHub Copilot Agent -**Review Status:** Ready for maintainer review +**Prepared by:** GitHub Copilot Agent +**Review Status:** Ready for maintainer review **Recommended Action:** Merge and continue with TODO.md priorities diff --git a/docs/archive/FILENAME_FIX_SUMMARY.md b/docs/archive/FILENAME_FIX_SUMMARY.md index 7ff71e37..8eb6e62d 100644 --- a/docs/archive/FILENAME_FIX_SUMMARY.md +++ b/docs/archive/FILENAME_FIX_SUMMARY.md @@ -61,7 +61,7 @@ Created comprehensive unit tests to verify: 1. **Test 1**: Original filename is preserved when parameter is provided - Uploads a file with UUID-based path but provides original filename "Apostille Sverige.pdf" - Verifies the database stores the original filename, not the UUID-based path - + 2. **Test 2**: Backward compatibility is maintained - Calls `process_document` without the optional parameter - Verifies it falls back to extracting filename from path diff --git a/docs/archive/FRAMEWORK_ANALYSIS.md b/docs/archive/FRAMEWORK_ANALYSIS.md index 0e5afe35..f99e3d95 100644 --- a/docs/archive/FRAMEWORK_ANALYSIS.md +++ b/docs/archive/FRAMEWORK_ANALYSIS.md @@ -170,7 +170,7 @@ Phase 1 (Current - MVP): Settings: DB + ENV + DEFAULT Encryption: Fernet (app-level) UI: Custom settings page - + Phase 2 (Production - Optional): Settings: DB + ENV + DEFAULT (keep) Secrets: HashiCorp Vault (add) diff --git a/docs/archive/IMPLEMENTATION_CHECKLIST.md b/docs/archive/IMPLEMENTATION_CHECKLIST.md index 3502a3c8..f75e0ac8 100644 --- a/docs/archive/IMPLEMENTATION_CHECKLIST.md +++ b/docs/archive/IMPLEMENTATION_CHECKLIST.md @@ -155,7 +155,7 @@ **Status: 100% COMPLETE (Code Implementation)** ✅ ✅ Core settings functionality: 100% complete -✅ Encryption implementation: 100% complete +✅ Encryption implementation: 100% complete ✅ Setup wizard: 100% complete ⚠️ Testing: Manual testing recommended ⚠️ Documentation: Enhancement recommended diff --git a/docs/archive/SETTINGS_IMPLEMENTATION.md b/docs/archive/SETTINGS_IMPLEMENTATION.md index d48ad1fc..ba2de132 100644 --- a/docs/archive/SETTINGS_IMPLEMENTATION.md +++ b/docs/archive/SETTINGS_IMPLEMENTATION.md @@ -121,7 +121,7 @@ Created comprehensive `docs/SettingsManagement.md` covering: # Non-admin users /settings → @require_login → @require_admin_access → Redirect to / -# Admin users +# Admin users /settings → @require_login → @require_admin_access → Settings page renders ``` diff --git a/docs/security/PATH_TRAVERSAL_AUDIT_2026-02-10.md b/docs/security/PATH_TRAVERSAL_AUDIT_2026-02-10.md index cbddecc6..29fc16b7 100644 --- a/docs/security/PATH_TRAVERSAL_AUDIT_2026-02-10.md +++ b/docs/security/PATH_TRAVERSAL_AUDIT_2026-02-10.md @@ -10,11 +10,11 @@ A comprehensive security audit was conducted on all file path operations in Docu ### 1. Critical: Path Traversal via GPT Metadata Filename -**Severity:** CRITICAL -**Location:** `app/tasks/embed_metadata_into_pdf.py` (line 144) +**Severity:** CRITICAL +**Location:** `app/tasks/embed_metadata_into_pdf.py` (line 144) **Status:** ✅ FIXED -**Description:** +**Description:** The `metadata["filename"]` field extracted by GPT was used directly in file path construction without sanitization. A malicious document could be crafted to make GPT return metadata containing path traversal sequences (e.g., `../../etc/passwd`), allowing file writes outside the intended directory. **Attack Scenario:** @@ -39,11 +39,11 @@ final_path = os.path.join(processed_dir, suggested_filename) # Safe ### 2. Medium: Insecure String-Based Path Validation -**Severity:** MEDIUM -**Location:** `app/tasks/embed_metadata_into_pdf.py` (line 188) +**Severity:** MEDIUM +**Location:** `app/tasks/embed_metadata_into_pdf.py` (line 188) **Status:** ✅ FIXED -**Description:** +**Description:** Used insecure string-based `startswith()` check to validate file paths before deletion. This approach is vulnerable to: - Partial directory name matches - Symlink attacks (symlinks not resolved) @@ -78,11 +78,11 @@ if original_file_path.is_relative_to(workdir_tmp_resolved): ### 3. Medium: Insufficient GPT Filename Validation -**Severity:** MEDIUM -**Location:** `app/tasks/extract_metadata_with_gpt.py` +**Severity:** MEDIUM +**Location:** `app/tasks/extract_metadata_with_gpt.py` **Status:** ✅ FIXED -**Description:** +**Description:** While the GPT prompt requested specific filename format, there was no enforcement. GPT could return filenames with path separators or traversal patterns. **Fix Applied:** @@ -221,7 +221,7 @@ All identified path traversal vulnerabilities have been successfully remediated --- -**Audit Date:** February 10, 2026 -**Auditor:** GitHub Copilot Agent -**Scope:** All Python file path operations +**Audit Date:** February 10, 2026 +**Auditor:** GitHub Copilot Agent +**Scope:** All Python file path operations **Next Review:** Recommended within 6 months or after significant file handling changes diff --git a/frontend/static/images/default-avatar.svg b/frontend/static/images/default-avatar.svg index 4ec0cbed..bb67aa4e 100644 --- a/frontend/static/images/default-avatar.svg +++ b/frontend/static/images/default-avatar.svg @@ -1 +1 @@ - \ No newline at end of file + diff --git a/frontend/static/js/common.js b/frontend/static/js/common.js index 15a09a38..42524d30 100644 --- a/frontend/static/js/common.js +++ b/frontend/static/js/common.js @@ -7,15 +7,15 @@ const response = await fetch('/api/auth/whoami'); const data = await response.json(); - + const authSection = document.getElementById("authSection"); const mobileAuthSection = document.getElementById("mobileAuthSection"); - + // If we have an email, user is authenticated (the whoami endpoint would have thrown 401 otherwise) if (data.email) { // Get the display name (prefer name, fall back to preferred_username, then email) const displayName = data.name || data.preferred_username || data.email; - + // User is logged in let authHTML = `
    @@ -26,11 +26,11 @@
    `; - + if (authSection) { authSection.innerHTML = authHTML; } - + if (mobileAuthSection) { mobileAuthSection.innerHTML = `
    @@ -49,7 +49,7 @@ if (authSection) { authSection.innerHTML = `Login`; } - + if (mobileAuthSection) { mobileAuthSection.innerHTML = `Login`; } @@ -59,11 +59,11 @@ // Fallback if whoami endpoint fails const authSection = document.getElementById("authSection"); const mobileAuthSection = document.getElementById("mobileAuthSection"); - + if (authSection) { authSection.innerHTML = `Login`; } - + if (mobileAuthSection) { mobileAuthSection.innerHTML = `Login`; } diff --git a/frontend/static/js/fontawesome-loader.js b/frontend/static/js/fontawesome-loader.js index 04f39fb6..9cbbd85e 100644 --- a/frontend/static/js/fontawesome-loader.js +++ b/frontend/static/js/fontawesome-loader.js @@ -7,6 +7,6 @@ link.rel = 'stylesheet'; link.href = '/static/fontawesome/css/all.min.css'; document.head.appendChild(link); - + console.log('Font Awesome loaded locally'); })(); diff --git a/frontend/static/js/upload.js b/frontend/static/js/upload.js index 13786cf7..91a29f6d 100644 --- a/frontend/static/js/upload.js +++ b/frontend/static/js/upload.js @@ -8,30 +8,30 @@ const MAX_FILE_SIZE = 500 * 1024 * 1024; // 500MB const ACCEPTED_TYPES = { // PDF files 'application/pdf': true, - + // Image formats 'image/jpeg': true, 'image/jpg': true, 'image/png': true, 'image/gif': true, 'image/bmp': true, 'image/tiff': true, 'image/webp': true, 'image/svg+xml': true, - + // Office document formats - Word 'application/msword': true, 'application/vnd.openxmlformats-officedocument.wordprocessingml.document': true, 'application/vnd.openxmlformats-officedocument.wordprocessingml.template': true, 'application/vnd.ms-word.document.macroEnabled.12': true, - + // Excel 'application/vnd.ms-excel': true, 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet': true, 'application/vnd.openxmlformats-officedocument.spreadsheetml.template': true, 'application/vnd.ms-excel.sheet.macroEnabled.12': true, - + // PowerPoint 'application/vnd.ms-powerpoint': true, 'application/vnd.openxmlformats-officedocument.presentationml.presentation': true, 'application/vnd.openxmlformats-officedocument.presentationml.template': true, 'application/vnd.openxmlformats-officedocument.presentationml.slideshow': true, - + // Other common formats 'text/plain': true, 'text/csv': true, @@ -57,16 +57,16 @@ const ACCEPTED_EXTENSIONS = [ */ function processFiles(files, progressContainer, statusMessage) { if (files.length === 0) return; - + if (statusMessage) { statusMessage.textContent = `Processing ${files.length} file(s)...`; } - + // Clear previous upload progress if (progressContainer) { progressContainer.innerHTML = ""; } - + // Process each file for (let i = 0; i < files.length; i++) { const file = files[i]; @@ -94,32 +94,32 @@ function validateAndUpload(file, progressContainer, statusMessage) {
    Validating...
    `; - + if (progressContainer) { progressContainer.appendChild(fileProgress); } - + const progressBar = fileProgress.querySelector(".file-progress-bar"); const statusEl = fileProgress.querySelector(".file-status"); - + // Validate file type by checking both MIME type and extension const isValidMimeType = ACCEPTED_TYPES[file.type] || false; const fileExtension = '.' + file.name.split('.').pop().toLowerCase(); const isValidExtension = ACCEPTED_EXTENSIONS.includes(fileExtension); - + if (!isValidMimeType && !isValidExtension) { statusEl.textContent = `Error: ${file.name} - Unsupported file type`; statusEl.className = "text-xs text-red-500 mt-1"; return; } - + // Validate file size if (file.size > MAX_FILE_SIZE) { statusEl.textContent = `Error: ${file.name} - File size exceeds 500MB limit`; statusEl.className = "text-xs text-red-500 mt-1"; return; } - + // Upload the file uploadFile(file, progressBar, statusEl, statusMessage); } @@ -136,10 +136,10 @@ async function uploadFile(file, progressBar, statusEl, statusMessage) { try { let formData = new FormData(); formData.append("file", file); - + const xhr = new XMLHttpRequest(); xhr.open("POST", "/api/ui-upload", true); - + xhr.upload.onprogress = (e) => { if (e.lengthComputable) { const percentComplete = (e.loaded / e.total) * 100; @@ -147,7 +147,7 @@ async function uploadFile(file, progressBar, statusEl, statusMessage) { statusEl.textContent = `Uploading: ${Math.round(percentComplete)}%`; } }; - + xhr.onload = function() { if (xhr.status === 200) { const result = JSON.parse(xhr.responseText); @@ -160,13 +160,13 @@ async function uploadFile(file, progressBar, statusEl, statusMessage) { throw new Error(`Upload failed with status ${xhr.status}`); } }; - + xhr.onerror = function() { throw new Error("Network error occurred"); }; - + xhr.send(formData); - + } catch (err) { statusEl.textContent = `Error: ${err.message}`; statusEl.className = "text-xs text-red-500 mt-1"; @@ -181,21 +181,21 @@ async function uploadFile(file, progressBar, statusEl, statusMessage) { */ function updateOverallStatus(statusMessage) { if (!statusMessage) return; - + // Count success/failure const fileStatuses = document.querySelectorAll('.file-status'); let completed = 0; let total = fileStatuses.length; - + fileStatuses.forEach(status => { if (status.textContent.includes('Success') || status.textContent.includes('Error')) { completed++; } }); - + if (completed === total) { statusMessage.textContent = `All uploads completed (${completed}/${total})`; - + // Trigger a custom event when all uploads are complete const allUploadsComplete = new CustomEvent('allUploadsComplete', { detail: { total: total, completed: completed } @@ -231,38 +231,38 @@ function initDragAndDrop(element, progressContainer, statusMessage, options = {} console.error("Element not found for drag-and-drop initialization"); return; } - + // Add event listeners for drag-and-drop element.addEventListener("dragover", (e) => { e.preventDefault(); e.stopPropagation(); e.dataTransfer.dropEffect = "copy"; - + // Add visual feedback if (options.dragOverClass) { element.classList.add(options.dragOverClass); } }); - + element.addEventListener("dragleave", (e) => { e.preventDefault(); e.stopPropagation(); - + // Remove visual feedback if (options.dragOverClass) { element.classList.remove(options.dragOverClass); } }); - + element.addEventListener("drop", (e) => { e.preventDefault(); e.stopPropagation(); - + // Remove visual feedback if (options.dragOverClass) { element.classList.remove(options.dragOverClass); } - + if (e.dataTransfer.files.length) { processFiles(e.dataTransfer.files, progressContainer, statusMessage); } diff --git a/frontend/static/licenses/lgpl.txt b/frontend/static/licenses/lgpl.txt index 3ea3109d..d35234e4 100644 --- a/frontend/static/licenses/lgpl.txt +++ b/frontend/static/licenses/lgpl.txt @@ -55,7 +55,7 @@ modified by someone else and passed on, the recipients should know that what they have is not the original version, so that the original author's reputation will not be affected by problems that might be introduced by others. - + Finally, software patents pose a constant threat to the existence of any free program. We wish to make sure that a company cannot effectively restrict the users of a free program by obtaining a @@ -111,7 +111,7 @@ modification follow. Pay close attention to the difference between a "work based on the library" and a "work that uses the library". The former contains code derived from the library, whereas the latter must be combined with the library in order to run. - + GNU LESSER GENERAL PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION @@ -158,7 +158,7 @@ Library. You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. - + 2. You may modify your copy or copies of the Library or any portion of it, thus forming a work based on the Library, and copy and distribute such modifications or work under the terms of Section 1 @@ -216,7 +216,7 @@ instead of to this License. (If a newer version than version 2 of the ordinary GNU General Public License has appeared, then you can specify that version instead if you wish.) Do not make any other change in these notices. - + Once this change is made in a given copy, it is irreversible for that copy, so the ordinary GNU General Public License applies to all subsequent copies and derivative works made from that copy. @@ -267,7 +267,7 @@ Library will still fall under Section 6.) distribute the object code for the work under the terms of Section 6. Any executables containing that work also fall under Section 6, whether or not they are linked directly with the Library itself. - + 6. As an exception to the Sections above, you may also combine or link a "work that uses the Library" with the Library to produce a work containing portions of the Library, and distribute that work @@ -329,7 +329,7 @@ restrictions of other proprietary libraries that do not normally accompany the operating system. Such a contradiction means you cannot use both them and the Library together in an executable that you distribute. - + 7. You may place library facilities that are a work based on the Library side-by-side in a single library together with other library facilities not covered by this License, and distribute such a combined @@ -370,7 +370,7 @@ subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties with this License. - + 11. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or @@ -422,7 +422,7 @@ conditions either of that version or of any later version published by the Free Software Foundation. If the Library does not specify a license version number, you may choose any version ever published by the Free Software Foundation. - + 14. If you wish to incorporate parts of the Library into other free programs whose distribution conditions are incompatible with these, write to the author to ask for permission. For software which is @@ -456,7 +456,7 @@ SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. END OF TERMS AND CONDITIONS - + How to Apply These Terms to Your New Libraries If you develop a new library, and you want it to be of the greatest @@ -498,4 +498,4 @@ necessary. Here is a sample; alter the names: , 1 April 1990 Moe Ghoul, President of Vice -That's all there is to it! \ No newline at end of file +That's all there is to it! diff --git a/frontend/static/logo.svg b/frontend/static/logo.svg index 40fbb63d..ee756bb0 100644 --- a/frontend/static/logo.svg +++ b/frontend/static/logo.svg @@ -1 +1 @@ - \ No newline at end of file + diff --git a/frontend/static/styles.css b/frontend/static/styles.css index c11d17f9..bb255d11 100644 --- a/frontend/static/styles.css +++ b/frontend/static/styles.css @@ -15,4 +15,4 @@ body { mask-repeat: no-repeat; -webkit-mask-size: 100% 100%; mask-size: 100% 100%; - } \ No newline at end of file + } diff --git a/frontend/templates/about.html b/frontend/templates/about.html index d9e00b69..2a1c043b 100644 --- a/frontend/templates/about.html +++ b/frontend/templates/about.html @@ -7,19 +7,19 @@

    Welcome to DocuElevate – your modern, intelligent solution for document processing! We've built DocuElevate to completely transform the way you handle your documents – from upload - to extraction, from processing to storage. + to extraction, from processing to storage.

    Our Story

    - DocuElevate was created with one goal in mind: to simplify and streamline document management + DocuElevate was created with one goal in mind: to simplify and streamline document management for everyone, whether you're a small startup or a large enterprise.

    - We harness the power of OpenAI for metadata extraction and text refinement, integrate seamlessly - with Dropbox, Nextcloud, and Paperless NGX for storage and indexing, leverage Azure Document + We harness the power of OpenAI for metadata extraction and text refinement, integrate seamlessly + with Dropbox, Nextcloud, and Paperless NGX for storage and indexing, leverage Azure Document Intelligence for OCR, and even use Gotenberg for file-to-PDF conversions.

    diff --git a/frontend/templates/attribution.html b/frontend/templates/attribution.html index 47016dcb..95ffd433 100644 --- a/frontend/templates/attribution.html +++ b/frontend/templates/attribution.html @@ -5,7 +5,7 @@ {% block content %}

    Third-Party Software Attributions

    - +

    DocuElevate uses several open source libraries and tools. We are grateful to the @@ -21,11 +21,11 @@

    - Special Attribution: This software includes Paramiko, which is licensed under LGPL. The source code for Paramiko is available at + Special Attribution: This software includes Paramiko, which is licensed under LGPL. The source code for Paramiko is available at https://github.com/paramiko/paramiko . - A copy of the LGPL license can be found + A copy of the LGPL license can be found here . @@ -33,7 +33,7 @@

    - +

    Python Dependencies

    - +

    Docker Images

    - +

    Frontend Dependencies