diff --git a/.github/workflows/snapshot-tests.yaml b/.github/workflows/snapshot-tests.yaml new file mode 100644 index 000000000..939a48976 --- /dev/null +++ b/.github/workflows/snapshot-tests.yaml @@ -0,0 +1,67 @@ +name: Snapshot Tests + +on: + push: + branches: + - master + paths: + - 'pyfixest/report/**' + - 'pyfixest/estimation/decomposition.py' + - 'tests/test_etable_snapshot.py' + - 'tests/test_plots_snapshot.py' + - 'tests/__snapshots__/**' + pull_request: + branches: + - master + paths: + - 'pyfixest/report/**' + - 'pyfixest/estimation/decomposition.py' + - 'tests/test_etable_snapshot.py' + - 'tests/test_plots_snapshot.py' + - 'tests/__snapshots__/**' + schedule: + # Run weekly on Mondays at 6:00 UTC to catch dependency-induced regressions + - cron: '0 6 * * 1' + workflow_dispatch: + +jobs: + snapshot-test: + name: "Snapshot Tests" + runs-on: macos-14 # ARM-based macOS + continue-on-error: true # Warn only - does not block merge + steps: + - name: Checkout source + uses: actions/checkout@v4 + + - name: Setup Python + uses: actions/setup-python@v5 + with: + python-version: "3.11" + + - name: Setup pixi + uses: prefix-dev/setup-pixi@v0.8.3 + with: + pixi-version: v0.41.4 + cache: true + + - name: Compile Rust extension + run: | + pixi run -e snapshot maturin-develop + + - name: Run snapshot tests + id: snapshot_tests + run: | + pixi run -e snapshot snapshot-test + + - name: Report snapshot status + if: failure() + run: | + echo "::warning::Snapshot tests failed. Run 'pixi run -e snapshot snapshot-update' locally to update snapshots if the changes are intentional." + + - name: Upload snapshot artifacts on failure + if: failure() + uses: actions/upload-artifact@v4 + with: + name: snapshot-failures + path: tests/__snapshots__/ + retention-days: 7 diff --git a/coverage.json b/coverage.json new file mode 100644 index 000000000..27c85ba0a --- /dev/null +++ b/coverage.json @@ -0,0 +1 @@ +{"meta": {"format": 3, "version": "7.11.0", "timestamp": "2025-12-25T16:51:59.391712", "branch_coverage": true, "show_contexts": false}, "files": {"pyfixest/__init__.py": {"executed_lines": [2, 9, 18, 27, 28, 34, 63, 65, 66], "summary": {"covered_lines": 9, "num_statements": 11, "percent_covered": 81.81818181818181, "percent_covered_display": "82", "missing_lines": 2, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [67, 68], "excluded_lines": [], "executed_branches": [], "missing_branches": [], "functions": {"": {"executed_lines": [2, 9, 18, 27, 28, 34, 63, 65, 66], "summary": {"covered_lines": 9, "num_statements": 11, "percent_covered": 81.81818181818181, "percent_covered_display": "82", "missing_lines": 2, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [67, 68], "excluded_lines": [], "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [2, 9, 18, 27, 28, 34, 63, 65, 66], "summary": {"covered_lines": 9, "num_statements": 11, "percent_covered": 81.81818181818181, "percent_covered_display": "82", "missing_lines": 2, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [67, 68], "excluded_lines": [], "executed_branches": [], "missing_branches": []}}}, "pyfixest/core/__init__.py": {"executed_lines": [1, 2, 3, 4, 6], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": [], "functions": {"": {"executed_lines": [1, 2, 3, 4, 6], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [1, 2, 3, 4, 6], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": []}}}, "pyfixest/core/collinear.py": {"executed_lines": [1], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": [], "functions": {"": {"executed_lines": [1], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [1], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": []}}}, "pyfixest/core/crv1.py": {"executed_lines": [1], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": [], "functions": {"": {"executed_lines": [1], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [1], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": []}}}, "pyfixest/core/demean.py": {"executed_lines": [1, 2, 4, 7, 73], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": [], "functions": {"demean": {"executed_lines": [73], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [1, 2, 4, 7], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [1, 2, 4, 7, 73], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": []}}}, "pyfixest/core/nested_fixed_effects.py": {"executed_lines": [1], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": [], "functions": {"": {"executed_lines": [1], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [1], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": []}}}, "pyfixest/debug.py": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 7, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 7, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [1, 2, 4, 5, 7, 8, 9], "excluded_lines": [], "executed_branches": [], "missing_branches": [], "functions": {"": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 7, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 7, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [1, 2, 4, 5, 7, 8, 9], "excluded_lines": [], "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 7, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 7, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [1, 2, 4, 5, 7, 8, 9], "excluded_lines": [], "executed_branches": [], "missing_branches": []}}}, "pyfixest/did/__init__.py": {"executed_lines": [1, 6, 7, 11], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": [], "functions": {"": {"executed_lines": [1, 6, 7, 11], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [1, 6, 7, 11], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": []}}}, "pyfixest/did/did.py": {"executed_lines": [1, 2, 4, 5, 8, 9, 38, 39, 52, 53, 54, 55, 56, 57, 58, 59, 63, 64, 78, 81, 89, 92, 95, 97, 98, 101, 102, 105, 106, 109, 110, 113, 114], "summary": {"covered_lines": 32, "num_statements": 38, "percent_covered": 83.33333333333333, "percent_covered_display": "83", "missing_lines": 6, "excluded_lines": 0, "num_branches": 4, "num_partial_branches": 1, "covered_branches": 3, "missing_branches": 1}, "missing_lines": [71, 99, 103, 107, 111, 115], "excluded_lines": [], "executed_branches": [[63, 64], [63, 78], [64, 63]], "missing_branches": [[64, 71]], "functions": {"DID.__init__": {"executed_lines": [52, 53, 54, 55, 56, 57, 58, 59, 63, 64, 78, 81, 89, 92, 95], "summary": {"covered_lines": 15, "num_statements": 16, "percent_covered": 90.0, "percent_covered_display": "90", "missing_lines": 1, "excluded_lines": 0, "num_branches": 4, "num_partial_branches": 1, "covered_branches": 3, "missing_branches": 1}, "missing_lines": [71], "excluded_lines": [], "executed_branches": [[63, 64], [63, 78], [64, 63]], "missing_branches": [[64, 71]]}, "DID.estimate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [99], "excluded_lines": [], "executed_branches": [], "missing_branches": []}, "DID.vcov": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [103], "excluded_lines": [], "executed_branches": [], "missing_branches": []}, "DID.iplot": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [107], "excluded_lines": [], "executed_branches": [], "missing_branches": []}, "DID.tidy": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [111], "excluded_lines": [], "executed_branches": [], "missing_branches": []}, "DID.summary": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [115], "excluded_lines": [], "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [1, 2, 4, 5, 8, 9, 38, 39, 97, 98, 101, 102, 105, 106, 109, 110, 113, 114], "summary": {"covered_lines": 17, "num_statements": 17, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": []}}, "classes": {"DID": {"executed_lines": [52, 53, 54, 55, 56, 57, 58, 59, 63, 64, 78, 81, 89, 92, 95], "summary": {"covered_lines": 15, "num_statements": 21, "percent_covered": 72.0, "percent_covered_display": "72", "missing_lines": 6, "excluded_lines": 0, "num_branches": 4, "num_partial_branches": 1, "covered_branches": 3, "missing_branches": 1}, "missing_lines": [71, 99, 103, 107, 111, 115], "excluded_lines": [], "executed_branches": [[63, 64], [63, 78], [64, 63]], "missing_branches": [[64, 71]]}, "": {"executed_lines": [1, 2, 4, 5, 8, 9, 38, 39, 97, 98, 101, 102, 105, 106, 109, 110, 113, 114], "summary": {"covered_lines": 17, "num_statements": 17, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": []}}}, "pyfixest/did/did2s.py": {"executed_lines": [1, 3, 4, 5, 6, 8, 9, 10, 11, 12, 15, 16, 53, 65, 76, 78, 82, 83, 86, 87, 90, 92, 94, 103, 115, 127, 148, 151, 155, 188, 189, 191, 192, 194, 195, 199, 200, 202, 205, 210, 213, 217, 228, 231, 232, 233, 236, 246, 248, 251, 295, 296, 298, 300, 301, 306, 307, 308, 309, 311, 316, 317, 318, 319, 321, 328, 330, 337, 339, 340, 343, 344, 346, 347, 348, 350, 351, 352, 354, 356, 357, 359, 360, 362, 366, 367, 368, 369, 370, 372, 373, 374, 375, 376, 378, 380], "summary": {"covered_lines": 95, "num_statements": 106, "percent_covered": 84.92063492063492, "percent_covered_display": "85", "missing_lines": 11, "excluded_lines": 0, "num_branches": 20, "num_partial_branches": 8, "covered_branches": 12, "missing_branches": 8}, "missing_lines": [79, 80, 138, 149, 152, 193, 196, 207, 211, 214, 303], "excluded_lines": [], "executed_branches": [[78, 82], [191, 192], [192, 194], [195, 199], [199, 200], [199, 202], [210, 213], [213, 217], [300, 301], [362, 366], [362, 380], [374, 375]], "missing_branches": [[78, 79], [191, 207], [192, 193], [195, 196], [210, 211], [213, 214], [300, 303], [374, 376]], "functions": {"DID2S.__init__": {"executed_lines": [65, 76, 78, 82, 83, 86, 87, 90], "summary": {"covered_lines": 8, "num_statements": 10, "percent_covered": 75.0, "percent_covered_display": "75", "missing_lines": 2, "excluded_lines": 0, "num_branches": 2, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 1}, "missing_lines": [79, 80], "excluded_lines": [], "executed_branches": [[78, 82]], "missing_branches": [[78, 79]]}, "DID2S.estimate": {"executed_lines": [94], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": []}, "DID2S.vcov": {"executed_lines": [115], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": []}, "DID2S.iplot": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [138], "excluded_lines": [], "executed_branches": [], "missing_branches": []}, "DID2S.tidy": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [149], "excluded_lines": [], "executed_branches": [], "missing_branches": []}, "DID2S.summary": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [152], "excluded_lines": [], "executed_branches": [], "missing_branches": []}, "_did2s_estimate": {"executed_lines": [188, 189, 191, 192, 194, 195, 199, 200, 202, 205, 210, 213, 217, 228, 231, 232, 233, 236, 246, 248], "summary": {"covered_lines": 20, "num_statements": 25, "percent_covered": 72.97297297297297, "percent_covered_display": "73", "missing_lines": 5, "excluded_lines": 0, "num_branches": 12, "num_partial_branches": 5, "covered_branches": 7, "missing_branches": 5}, "missing_lines": [193, 196, 207, 211, 214], "excluded_lines": [], "executed_branches": [[191, 192], [192, 194], [195, 199], [199, 200], [199, 202], [210, 213], [213, 217]], "missing_branches": [[191, 207], [192, 193], [195, 196], [210, 211], [213, 214]]}, "_did2s_vcov": {"executed_lines": [295, 296, 298, 300, 301, 306, 307, 308, 309, 311, 316, 317, 318, 319, 321, 328, 330, 337, 339, 340, 343, 344, 346, 347, 348, 350, 351, 352, 354, 356, 357, 359, 360, 362, 366, 367, 368, 369, 370, 372, 373, 374, 375, 376, 378, 380], "summary": {"covered_lines": 46, "num_statements": 47, "percent_covered": 94.33962264150944, "percent_covered_display": "94", "missing_lines": 1, "excluded_lines": 0, "num_branches": 6, "num_partial_branches": 2, "covered_branches": 4, "missing_branches": 2}, "missing_lines": [303], "excluded_lines": [], "executed_branches": [[300, 301], [362, 366], [362, 380], [374, 375]], "missing_branches": [[300, 303], [374, 376]]}, "": {"executed_lines": [1, 3, 4, 5, 6, 8, 9, 10, 11, 12, 15, 16, 53, 92, 103, 127, 148, 151, 155, 251], "summary": {"covered_lines": 19, "num_statements": 19, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": []}}, "classes": {"DID2S": {"executed_lines": [65, 76, 78, 82, 83, 86, 87, 90, 94, 115], "summary": {"covered_lines": 10, "num_statements": 15, "percent_covered": 64.70588235294117, "percent_covered_display": "65", "missing_lines": 5, "excluded_lines": 0, "num_branches": 2, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 1}, "missing_lines": [79, 80, 138, 149, 152], "excluded_lines": [], "executed_branches": [[78, 82]], "missing_branches": [[78, 79]]}, "": {"executed_lines": [1, 3, 4, 5, 6, 8, 9, 10, 11, 12, 15, 16, 53, 92, 103, 127, 148, 151, 155, 188, 189, 191, 192, 194, 195, 199, 200, 202, 205, 210, 213, 217, 228, 231, 232, 233, 236, 246, 248, 251, 295, 296, 298, 300, 301, 306, 307, 308, 309, 311, 316, 317, 318, 319, 321, 328, 330, 337, 339, 340, 343, 344, 346, 347, 348, 350, 351, 352, 354, 356, 357, 359, 360, 362, 366, 367, 368, 369, 370, 372, 373, 374, 375, 376, 378, 380], "summary": {"covered_lines": 85, "num_statements": 91, "percent_covered": 88.07339449541284, "percent_covered_display": "88", "missing_lines": 6, "excluded_lines": 0, "num_branches": 18, "num_partial_branches": 7, "covered_branches": 11, "missing_branches": 7}, "missing_lines": [193, 196, 207, 211, 214, 303], "excluded_lines": [], "executed_branches": [[191, 192], [192, 194], [195, 199], [199, 200], [199, 202], [210, 213], [213, 217], [300, 301], [362, 366], [362, 380], [374, 375]], "missing_branches": [[191, 207], [192, 193], [195, 196], [210, 211], [213, 214], [300, 303], [374, 376]]}}}, "pyfixest/did/estimation.py": {"executed_lines": [1, 3, 5, 6, 7, 8, 9, 12, 94, 95, 96, 97, 98, 99, 100, 101, 102, 104, 106, 107, 118, 119, 120, 121, 122, 123, 124, 126, 127, 137, 138, 139, 140, 141, 142, 144, 145, 147, 148, 158, 159, 161, 162, 163, 164, 165, 166, 168, 169, 170, 173, 174, 177, 180, 182, 185, 265, 266, 267, 268, 271, 280, 282, 291, 303, 304, 305, 307, 308, 310, 312, 315, 410, 425, 427], "summary": {"covered_lines": 74, "num_statements": 75, "percent_covered": 97.53086419753086, "percent_covered_display": "98", "missing_lines": 1, "excluded_lines": 1, "num_branches": 6, "num_partial_branches": 1, "covered_branches": 5, "missing_branches": 1}, "missing_lines": [272], "excluded_lines": [177], "executed_branches": [[106, 107], [106, 126], [126, 127], [126, 147], [271, 280]], "missing_branches": [[271, 272]], "functions": {"event_study": {"executed_lines": [94, 95, 96, 97, 98, 99, 100, 101, 102, 104, 106, 107, 118, 119, 120, 121, 122, 123, 124, 126, 127, 137, 138, 139, 140, 141, 142, 144, 145, 147, 148, 158, 159, 161, 162, 163, 164, 165, 166, 168, 169, 170, 173, 174, 177, 180, 182], "summary": {"covered_lines": 46, "num_statements": 46, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 1, "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [177], "executed_branches": [[106, 107], [106, 126], [126, 127], [126, 147]], "missing_branches": []}, "did2s": {"executed_lines": [265, 266, 267, 268, 271, 280, 282, 291, 303, 304, 305, 307, 308, 310, 312], "summary": {"covered_lines": 15, "num_statements": 16, "percent_covered": 88.88888888888889, "percent_covered_display": "89", "missing_lines": 1, "excluded_lines": 0, "num_branches": 2, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 1}, "missing_lines": [272], "excluded_lines": [], "executed_branches": [[271, 280]], "missing_branches": [[271, 272]]}, "lpdid": {"executed_lines": [410, 425, 427], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [1, 3, 5, 6, 7, 8, 9, 12, 185, 315], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [1, 3, 5, 6, 7, 8, 9, 12, 94, 95, 96, 97, 98, 99, 100, 101, 102, 104, 106, 107, 118, 119, 120, 121, 122, 123, 124, 126, 127, 137, 138, 139, 140, 141, 142, 144, 145, 147, 148, 158, 159, 161, 162, 163, 164, 165, 166, 168, 169, 170, 173, 174, 177, 180, 182, 185, 265, 266, 267, 268, 271, 280, 282, 291, 303, 304, 305, 307, 308, 310, 312, 315, 410, 425, 427], "summary": {"covered_lines": 74, "num_statements": 75, "percent_covered": 97.53086419753086, "percent_covered_display": "98", "missing_lines": 1, "excluded_lines": 1, "num_branches": 6, "num_partial_branches": 1, "covered_branches": 5, "missing_branches": 1}, "missing_lines": [272], "excluded_lines": [177], "executed_branches": [[106, 107], [106, 126], [126, 127], [126, 147], [271, 280]], "missing_branches": [[271, 272]]}}}, "pyfixest/did/lpdid.py": {"executed_lines": [1, 3, 4, 6, 7, 8, 9, 10, 13, 14, 45, 63, 73, 75, 76, 77, 79, 80, 83, 84, 88, 89, 91, 93, 94, 96, 97, 100, 103, 106, 108, 109, 111, 112, 113, 114, 115, 116, 118, 120, 132, 135, 175, 176, 178, 190, 191, 193, 197, 255, 256, 258, 259, 263, 266, 267, 268, 271, 272, 273, 275, 278, 279, 281, 285, 287, 288, 289, 290, 292, 293, 295, 297, 298, 300, 302, 303, 304, 305, 307, 308, 309, 311, 314, 338, 341, 342, 345, 347], "summary": {"covered_lines": 88, "num_statements": 93, "percent_covered": 91.89189189189189, "percent_covered_display": "92", "missing_lines": 5, "excluded_lines": 1, "num_branches": 18, "num_partial_branches": 4, "covered_branches": 14, "missing_branches": 4}, "missing_lines": [101, 104, 133, 194, 261], "excluded_lines": [61], "executed_branches": [[100, 103], [103, 106], [108, 109], [258, 259], [263, 266], [263, 278], [278, 279], [278, 292], [292, 293], [292, 307], [293, 295], [293, 297], [341, 342], [341, 345]], "missing_branches": [[100, 101], [103, 104], [108, 111], [258, 261]], "functions": {"LPDID.__init__": {"executed_lines": [63, 73, 75, 76, 77, 79, 80, 83, 84, 88, 89, 91, 93, 94, 96, 97, 100, 103, 106, 108, 109, 111, 112, 113, 114, 115, 116], "summary": {"covered_lines": 27, "num_statements": 29, "percent_covered": 85.71428571428571, "percent_covered_display": "86", "missing_lines": 2, "excluded_lines": 0, "num_branches": 6, "num_partial_branches": 3, "covered_branches": 3, "missing_branches": 3}, "missing_lines": [101, 104], "excluded_lines": [], "executed_branches": [[100, 103], [103, 106], [108, 109]], "missing_branches": [[100, 101], [103, 104], [108, 111]]}, "LPDID.estimate": {"executed_lines": [120], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": []}, "LPDID.vcov": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [133], "excluded_lines": [], "executed_branches": [], "missing_branches": []}, "LPDID.iplot": {"executed_lines": [175, 176, 178], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": []}, "LPDID.tidy": {"executed_lines": [191], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": []}, "LPDID.summary": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [194], "excluded_lines": [], "executed_branches": [], "missing_branches": []}, "_lpdid_estimate": {"executed_lines": [255, 256, 258, 259, 263, 266, 267, 268, 271, 272, 273, 275, 278, 279, 281, 285, 287, 288, 289, 290, 292, 293, 295, 297, 298, 300, 302, 303, 304, 305, 307, 308, 309, 311], "summary": {"covered_lines": 34, "num_statements": 35, "percent_covered": 95.55555555555556, "percent_covered_display": "96", "missing_lines": 1, "excluded_lines": 0, "num_branches": 10, "num_partial_branches": 1, "covered_branches": 9, "missing_branches": 1}, "missing_lines": [261], "excluded_lines": [], "executed_branches": [[258, 259], [263, 266], [263, 278], [278, 279], [278, 292], [292, 293], [292, 307], [293, 295], [293, 297]], "missing_branches": [[258, 261]]}, "_pooled_adjustment": {"executed_lines": [338, 341, 342, 345, 347], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [[341, 342], [341, 345]], "missing_branches": []}, "": {"executed_lines": [1, 3, 4, 6, 7, 8, 9, 10, 13, 14, 45, 118, 132, 135, 190, 193, 197, 314], "summary": {"covered_lines": 17, "num_statements": 17, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 1, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [61], "executed_branches": [], "missing_branches": []}}, "classes": {"LPDID": {"executed_lines": [63, 73, 75, 76, 77, 79, 80, 83, 84, 88, 89, 91, 93, 94, 96, 97, 100, 103, 106, 108, 109, 111, 112, 113, 114, 115, 116, 120, 175, 176, 178, 191], "summary": {"covered_lines": 32, "num_statements": 36, "percent_covered": 83.33333333333333, "percent_covered_display": "83", "missing_lines": 4, "excluded_lines": 0, "num_branches": 6, "num_partial_branches": 3, "covered_branches": 3, "missing_branches": 3}, "missing_lines": [101, 104, 133, 194], "excluded_lines": [], "executed_branches": [[100, 103], [103, 106], [108, 109]], "missing_branches": [[100, 101], [103, 104], [108, 111]]}, "": {"executed_lines": [1, 3, 4, 6, 7, 8, 9, 10, 13, 14, 45, 118, 132, 135, 190, 193, 197, 255, 256, 258, 259, 263, 266, 267, 268, 271, 272, 273, 275, 278, 279, 281, 285, 287, 288, 289, 290, 292, 293, 295, 297, 298, 300, 302, 303, 304, 305, 307, 308, 309, 311, 314, 338, 341, 342, 345, 347], "summary": {"covered_lines": 56, "num_statements": 57, "percent_covered": 97.10144927536231, "percent_covered_display": "97", "missing_lines": 1, "excluded_lines": 1, "num_branches": 12, "num_partial_branches": 1, "covered_branches": 11, "missing_branches": 1}, "missing_lines": [261], "excluded_lines": [61], "executed_branches": [[258, 259], [263, 266], [263, 278], [278, 279], [278, 292], [292, 293], [292, 307], [293, 295], [293, 297], [341, 342], [341, 345]], "missing_branches": [[258, 261]]}}}, "pyfixest/did/saturated_twfe.py": {"executed_lines": [1, 2, 3, 5, 6, 7, 8, 10, 11, 13, 16, 17, 43, 55, 65, 67, 68, 72, 81, 89, 92, 103, 128, 132, 136, 149, 153, 177, 180, 183, 185, 186, 187, 191, 192, 193, 195, 196, 203, 205, 209, 211, 212, 213, 214, 215, 220, 221, 227, 230, 231, 233, 235, 276, 295, 296, 297, 298, 299, 301, 302, 303, 305, 315, 322, 325, 327, 332, 333, 335, 336, 337, 338, 343, 345, 348, 367, 368, 369, 370, 373, 375, 377, 378, 379, 380, 382, 383, 386, 421, 422, 425, 431, 432, 433, 434, 437, 443, 444, 445, 446, 449, 454, 455, 456, 459, 460, 462], "summary": {"covered_lines": 107, "num_statements": 145, "percent_covered": 72.45508982035928, "percent_covered_display": "72", "missing_lines": 38, "excluded_lines": 0, "num_branches": 22, "num_partial_branches": 6, "covered_branches": 14, "missing_branches": 8}, "missing_lines": [101, 105, 107, 109, 110, 111, 112, 113, 115, 116, 120, 121, 122, 123, 124, 125, 126, 130, 134, 178, 181, 228, 254, 256, 257, 258, 259, 261, 262, 264, 265, 267, 268, 269, 270, 271, 272, 273], "excluded_lines": [], "executed_branches": [[67, 68], [177, 180], [180, 183], [195, 196], [211, 212], [211, 233], [213, 214], [213, 227], [227, 230], [336, 337], [336, 345], [379, 380], [379, 382], [454, 455]], "missing_branches": [[67, -43], [109, 110], [109, 120], [177, 178], [180, 181], [195, 203], [227, 228], [454, 462]], "functions": {"SaturatedEventStudy.__init__": {"executed_lines": [55, 65, 67, 68], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 83.33333333333333, "percent_covered_display": "83", "missing_lines": 0, "excluded_lines": 0, "num_branches": 2, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 1}, "missing_lines": [], "excluded_lines": [], "executed_branches": [[67, 68]], "missing_branches": [[67, -43]]}, "SaturatedEventStudy.estimate": {"executed_lines": [81, 89], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": []}, "SaturatedEventStudy.vcov": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [101], "excluded_lines": [], "executed_branches": [], "missing_branches": []}, "SaturatedEventStudy.iplot": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 16, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 16, "excluded_lines": 0, "num_branches": 2, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 2}, "missing_lines": [105, 107, 109, 110, 111, 112, 113, 115, 116, 120, 121, 122, 123, 124, 125, 126], "excluded_lines": [], "executed_branches": [], "missing_branches": [[109, 110], [109, 120]]}, "SaturatedEventStudy.tidy": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [130], "excluded_lines": [], "executed_branches": [], "missing_branches": []}, "SaturatedEventStudy.summary": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [134], "excluded_lines": [], "executed_branches": [], "missing_branches": []}, "SaturatedEventStudy.test_treatment_heterogeneity": {"executed_lines": [149], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": []}, "SaturatedEventStudy.aggregate": {"executed_lines": [177, 180, 183, 185, 186, 187, 191, 192, 193, 195, 196, 203, 205, 209, 211, 212, 213, 214, 215, 220, 221, 227, 230, 231, 233], "summary": {"covered_lines": 25, "num_statements": 28, "percent_covered": 82.5, "percent_covered_display": "82", "missing_lines": 3, "excluded_lines": 0, "num_branches": 12, "num_partial_branches": 4, "covered_branches": 8, "missing_branches": 4}, "missing_lines": [178, 181, 228], "excluded_lines": [], "executed_branches": [[177, 180], [180, 183], [195, 196], [211, 212], [211, 233], [213, 214], [213, 227], [227, 230]], "missing_branches": [[177, 178], [180, 181], [195, 203], [227, 228]]}, "SaturatedEventStudy.iplot_aggregate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 16, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 16, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [254, 256, 257, 258, 259, 261, 262, 264, 265, 267, 268, 269, 270, 271, 272, 273], "excluded_lines": [], "executed_branches": [], "missing_branches": []}, "_compute_lincomb_stats": {"executed_lines": [295, 296, 297, 298, 299, 301, 302, 303, 305], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": []}, "_saturated_event_study": {"executed_lines": [322, 325, 327, 332, 333, 335, 336, 337, 338, 343, 345], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [[336, 337], [336, 345]], "missing_branches": []}, "_test_treatment_heterogeneity": {"executed_lines": [367, 368, 369, 370, 373, 375, 377, 378, 379, 380, 382, 383], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [[379, 380], [379, 382]], "missing_branches": []}, "compute_period_weights": {"executed_lines": [421, 422, 425, 431, 432, 433, 434, 437, 443, 444, 445, 446, 449, 454, 455, 456, 459, 460, 462], "summary": {"covered_lines": 19, "num_statements": 19, "percent_covered": 95.23809523809524, "percent_covered_display": "95", "missing_lines": 0, "excluded_lines": 0, "num_branches": 2, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 1}, "missing_lines": [], "excluded_lines": [], "executed_branches": [[454, 455]], "missing_branches": [[454, 462]]}, "": {"executed_lines": [1, 2, 3, 5, 6, 7, 8, 10, 11, 13, 16, 17, 43, 72, 92, 103, 128, 132, 136, 153, 235, 276, 315, 348, 386], "summary": {"covered_lines": 24, "num_statements": 24, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": []}}, "classes": {"SaturatedEventStudy": {"executed_lines": [55, 65, 67, 68, 81, 89, 149, 177, 180, 183, 185, 186, 187, 191, 192, 193, 195, 196, 203, 205, 209, 211, 212, 213, 214, 215, 220, 221, 227, 230, 231, 233], "summary": {"covered_lines": 32, "num_statements": 70, "percent_covered": 47.674418604651166, "percent_covered_display": "48", "missing_lines": 38, "excluded_lines": 0, "num_branches": 16, "num_partial_branches": 5, "covered_branches": 9, "missing_branches": 7}, "missing_lines": [101, 105, 107, 109, 110, 111, 112, 113, 115, 116, 120, 121, 122, 123, 124, 125, 126, 130, 134, 178, 181, 228, 254, 256, 257, 258, 259, 261, 262, 264, 265, 267, 268, 269, 270, 271, 272, 273], "excluded_lines": [], "executed_branches": [[67, 68], [177, 180], [180, 183], [195, 196], [211, 212], [211, 233], [213, 214], [213, 227], [227, 230]], "missing_branches": [[67, -43], [109, 110], [109, 120], [177, 178], [180, 181], [195, 203], [227, 228]]}, "": {"executed_lines": [1, 2, 3, 5, 6, 7, 8, 10, 11, 13, 16, 17, 43, 72, 92, 103, 128, 132, 136, 153, 235, 276, 295, 296, 297, 298, 299, 301, 302, 303, 305, 315, 322, 325, 327, 332, 333, 335, 336, 337, 338, 343, 345, 348, 367, 368, 369, 370, 373, 375, 377, 378, 379, 380, 382, 383, 386, 421, 422, 425, 431, 432, 433, 434, 437, 443, 444, 445, 446, 449, 454, 455, 456, 459, 460, 462], "summary": {"covered_lines": 75, "num_statements": 75, "percent_covered": 98.76543209876543, "percent_covered_display": "99", "missing_lines": 0, "excluded_lines": 0, "num_branches": 6, "num_partial_branches": 1, "covered_branches": 5, "missing_branches": 1}, "missing_lines": [], "excluded_lines": [], "executed_branches": [[336, 337], [336, 345], [379, 380], [379, 382], [454, 455]], "missing_branches": [[454, 462]]}}}, "pyfixest/did/twfe.py": {"executed_lines": [1, 3, 5, 6, 7, 10, 11, 43, 54, 65, 67, 70, 72, 74, 75, 77, 78, 80, 82, 94, 115, 118], "summary": {"covered_lines": 21, "num_statements": 26, "percent_covered": 78.57142857142857, "percent_covered_display": "79", "missing_lines": 5, "excluded_lines": 0, "num_branches": 2, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 1}, "missing_lines": [68, 92, 105, 116, 119], "excluded_lines": [], "executed_branches": [[67, 70]], "missing_branches": [[67, 68]], "functions": {"TWFE.__init__": {"executed_lines": [54, 65, 67, 70], "summary": {"covered_lines": 4, "num_statements": 5, "percent_covered": 71.42857142857143, "percent_covered_display": "71", "missing_lines": 1, "excluded_lines": 0, "num_branches": 2, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 1}, "missing_lines": [68], "excluded_lines": [], "executed_branches": [[67, 70]], "missing_branches": [[67, 68]]}, "TWFE.estimate": {"executed_lines": [74, 75, 77, 78, 80], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": []}, "TWFE.vcov": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [92], "excluded_lines": [], "executed_branches": [], "missing_branches": []}, "TWFE.iplot": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [105], "excluded_lines": [], "executed_branches": [], "missing_branches": []}, "TWFE.tidy": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [116], "excluded_lines": [], "executed_branches": [], "missing_branches": []}, "TWFE.summary": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [119], "excluded_lines": [], "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [1, 3, 5, 6, 7, 10, 11, 43, 72, 82, 94, 115, 118], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": []}}, "classes": {"TWFE": {"executed_lines": [54, 65, 67, 70, 74, 75, 77, 78, 80], "summary": {"covered_lines": 9, "num_statements": 14, "percent_covered": 62.5, "percent_covered_display": "62", "missing_lines": 5, "excluded_lines": 0, "num_branches": 2, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 1}, "missing_lines": [68, 92, 105, 116, 119], "excluded_lines": [], "executed_branches": [[67, 70]], "missing_branches": [[67, 68]]}, "": {"executed_lines": [1, 3, 5, 6, 7, 10, 11, 43, 72, 82, 94, 115, 118], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": []}}}, "pyfixest/did/visualize.py": {"executed_lines": [1, 3, 4, 7, 108, 109, 110, 111, 112, 114, 115, 119, 120, 131, 150, 160, 172, 182, 183, 185, 187, 188, 190, 192, 193, 195, 201, 202, 208, 215, 216, 217, 218, 220, 223, 240, 241, 242, 243, 244, 245, 247, 250, 251, 259, 262, 270, 278, 279, 280, 284, 285, 287, 289, 304, 307, 316, 317, 318, 319, 320, 321, 325, 328, 338, 339, 340, 341, 342, 343, 345, 346, 347, 348, 349, 351], "summary": {"covered_lines": 76, "num_statements": 80, "percent_covered": 93.33333333333333, "percent_covered_display": "93", "missing_lines": 4, "excluded_lines": 0, "num_branches": 40, "num_partial_branches": 4, "covered_branches": 36, "missing_branches": 4}, "missing_lines": [286, 288, 290, 295], "excluded_lines": [], "executed_branches": [[108, 109], [108, 111], [109, 108], [109, 110], [111, 112], [111, 114], [114, 115], [114, 119], [119, 120], [119, 150], [182, 183], [182, 185], [187, 188], [187, 190], [190, 192], [190, 220], [240, 241], [242, 243], [242, 278], [244, 245], [244, 247], [250, 251], [250, 259], [285, 287], [287, 289], [289, 304], [318, 319], [318, 320], [320, 321], [320, 325], [338, 339], [338, 340], [345, 346], [345, 348], [348, 349], [348, 351]], "missing_branches": [[240, 242], [285, 286], [287, 288], [289, 290]], "functions": {"panelview": {"executed_lines": [108, 109, 110, 111, 112, 114, 115, 119, 120, 131, 150, 160], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 10, "num_partial_branches": 0, "covered_branches": 10, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [[108, 109], [108, 111], [109, 108], [109, 110], [111, 112], [111, 114], [114, 115], [114, 119], [119, 120], [119, 150]], "missing_branches": []}, "_prepare_panelview_df_for_outcome_plot": {"executed_lines": [182, 183, 185, 187, 188, 190, 192, 195, 201, 202, 208, 215, 216, 217, 218, 220], "summary": {"covered_lines": 16, "num_statements": 16, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 6, "num_partial_branches": 0, "covered_branches": 6, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [[182, 183], [182, 185], [187, 188], [187, 190], [190, 192], [190, 220]], "missing_branches": []}, "_prepare_panelview_df_for_outcome_plot.get_treatment_start": {"executed_lines": [193], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": []}, "_plot_panelview_output_plot": {"executed_lines": [240, 241, 242, 243, 244, 245, 247, 250, 251, 259, 262, 270, 278, 279, 280, 284, 285, 287, 289, 304], "summary": {"covered_lines": 20, "num_statements": 24, "percent_covered": 78.94736842105263, "percent_covered_display": "79", "missing_lines": 4, "excluded_lines": 0, "num_branches": 14, "num_partial_branches": 4, "covered_branches": 10, "missing_branches": 4}, "missing_lines": [286, 288, 290, 295], "excluded_lines": [], "executed_branches": [[240, 241], [242, 243], [242, 278], [244, 245], [244, 247], [250, 251], [250, 259], [285, 287], [287, 289], [289, 304]], "missing_branches": [[240, 242], [285, 286], [287, 288], [289, 290]]}, "_prepare_df_for_panelview": {"executed_lines": [316, 317, 318, 319, 320, 321, 325], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [[318, 319], [318, 320], [320, 321], [320, 325]], "missing_branches": []}, "_plot_panelview": {"executed_lines": [338, 339, 340, 341, 342, 343, 345, 346, 347, 348, 349, 351], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 6, "num_partial_branches": 0, "covered_branches": 6, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [[338, 339], [338, 340], [345, 346], [345, 348], [348, 349], [348, 351]], "missing_branches": []}, "": {"executed_lines": [1, 3, 4, 7, 172, 223, 307, 328], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [1, 3, 4, 7, 108, 109, 110, 111, 112, 114, 115, 119, 120, 131, 150, 160, 172, 182, 183, 185, 187, 188, 190, 192, 193, 195, 201, 202, 208, 215, 216, 217, 218, 220, 223, 240, 241, 242, 243, 244, 245, 247, 250, 251, 259, 262, 270, 278, 279, 280, 284, 285, 287, 289, 304, 307, 316, 317, 318, 319, 320, 321, 325, 328, 338, 339, 340, 341, 342, 343, 345, 346, 347, 348, 349, 351], "summary": {"covered_lines": 76, "num_statements": 80, "percent_covered": 93.33333333333333, "percent_covered_display": "93", "missing_lines": 4, "excluded_lines": 0, "num_branches": 40, "num_partial_branches": 4, "covered_branches": 36, "missing_branches": 4}, "missing_lines": [286, 288, 290, 295], "excluded_lines": [], "executed_branches": [[108, 109], [108, 111], [109, 108], [109, 110], [111, 112], [111, 114], [114, 115], [114, 119], [119, 120], [119, 150], [182, 183], [182, 185], [187, 188], [187, 190], [190, 192], [190, 220], [240, 241], [242, 243], [242, 278], [244, 245], [244, 247], [250, 251], [250, 259], [285, 287], [287, 289], [289, 304], [318, 319], [318, 320], [320, 321], [320, 325], [338, 339], [338, 340], [345, 346], [345, 348], [348, 349], [348, 351]], "missing_branches": [[240, 242], [285, 286], [287, 288], [289, 290]]}}}, "pyfixest/errors/__init__.py": {"executed_lines": [1, 2, 5, 6, 9, 10, 13, 14, 17, 18, 21, 22, 25, 26, 29, 30, 33, 34, 37, 38, 41, 42, 45, 46, 49, 50, 53, 54, 57, 58, 61], "summary": {"covered_lines": 31, "num_statements": 31, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": [], "functions": {"": {"executed_lines": [1, 2, 5, 6, 9, 10, 13, 14, 17, 18, 21, 22, 25, 26, 29, 30, 33, 34, 37, 38, 41, 42, 45, 46, 49, 50, 53, 54, 57, 58, 61], "summary": {"covered_lines": 31, "num_statements": 31, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": []}}, "classes": {"FixedEffectInteractionError": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": []}, "CovariateInteractionError": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": []}, "DuplicateKeyError": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": []}, "EndogVarsAsCovarsError": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": []}, "InstrumentsAsCovarsError": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": []}, "UnderDeterminedIVError": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": []}, "UnsupportedMultipleEstimationSyntax": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": []}, "VcovTypeNotSupportedError": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": []}, "NanInClusterVarError": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": []}, "DepvarIsNotNumericError": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": []}, "NonConvergenceError": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": []}, "MatrixNotFullRankError": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": []}, "EmptyDesignMatrixError": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": []}, "FeatureDeprecationError": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": []}, "EmptyVcovError": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [1, 2, 5, 6, 9, 10, 13, 14, 17, 18, 21, 22, 25, 26, 29, 30, 33, 34, 37, 38, 41, 42, 45, 46, 49, 50, 53, 54, 57, 58, 61], "summary": {"covered_lines": 31, "num_statements": 31, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": []}}}, "pyfixest/estimation/FixestMulti_.py": {"executed_lines": [1, 2, 3, 4, 6, 8, 9, 10, 11, 12, 13, 14, 15, 16, 22, 23, 24, 25, 26, 29, 30, 32, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 112, 113, 115, 116, 117, 118, 120, 122, 124, 126, 127, 129, 132, 133, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 150, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 223, 224, 225, 226, 228, 229, 230, 235, 236, 237, 240, 241, 243, 288, 289, 291, 297, 298, 299, 303, 305, 321, 342, 343, 349, 355, 363, 364, 373, 374, 380, 392, 393, 400, 405, 406, 408, 409, 410, 411, 412, 413, 414, 416, 417, 419, 421, 423, 424, 432, 433, 434, 435, 436, 438, 440, 441, 442, 444, 446, 458, 460, 504, 535, 547, 560, 572, 585, 597, 680, 697, 700, 701, 703, 704, 705, 706, 707, 710, 727], "summary": {"covered_lines": 154, "num_statements": 188, "percent_covered": 82.5, "percent_covered_display": "82", "missing_lines": 34, "excluded_lines": 0, "num_branches": 52, "num_partial_branches": 2, "covered_branches": 44, "missing_branches": 8}, "missing_lines": [487, 488, 489, 491, 492, 499, 500, 502, 523, 524, 525, 526, 527, 528, 530, 531, 533, 545, 558, 570, 583, 595, 648, 649, 650, 652, 664, 665, 667, 674, 676, 678, 698, 702], "excluded_lines": [], "executed_branches": [[116, 117], [116, 122], [117, 118], [117, 120], [126, 127], [126, 129], [220, 221], [220, 223], [297, -243], [297, 298], [298, 297], [298, 299], [305, 298], [305, 321], [342, 343], [342, 349], [349, 355], [349, 363], [363, 364], [363, 373], [373, 374], [373, 380], [392, 393], [392, 400], [409, 410], [409, 411], [412, 413], [412, 414], [416, 417], [416, 419], [421, 423], [421, 438], [433, 434], [433, 435], [435, 436], [435, 438], [440, 441], [440, 444], [441, 305], [441, 442], [697, 700], [701, 703], [704, 705], [704, 706]], "missing_branches": [[487, 488], [487, 502], [524, 525], [524, 530], [649, 650], [649, 676], [697, 698], [701, 702]], "functions": {"FixestMulti.__init__": {"executed_lines": [98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 112, 113, 115, 116, 117, 118, 120, 122, 124, 126, 127, 129, 132, 133, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148], "summary": {"covered_lines": 40, "num_statements": 40, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 6, "num_partial_branches": 0, "covered_branches": 6, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [[116, 117], [116, 122], [117, 118], [117, 120], [126, 127], [126, 129]], "missing_branches": []}, "FixestMulti._prepare_estimation": {"executed_lines": [210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 223, 224, 225, 226, 228, 229, 230, 235, 236, 237, 240, 241], "summary": {"covered_lines": 24, "num_statements": 24, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [[220, 221], [220, 223]], "missing_branches": []}, "FixestMulti._estimate_all_models": {"executed_lines": [288, 289, 291, 297, 298, 299, 303, 305, 321, 342, 343, 349, 355, 363, 364, 373, 374, 380, 392, 393, 400, 405, 406, 408, 409, 410, 411, 412, 413, 414, 416, 417, 419, 421, 423, 424, 432, 433, 434, 435, 436, 438, 440, 441, 442, 444], "summary": {"covered_lines": 46, "num_statements": 46, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 32, "num_partial_branches": 0, "covered_branches": 32, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [[297, -243], [297, 298], [298, 297], [298, 299], [305, 298], [305, 321], [342, 343], [342, 349], [349, 355], [349, 363], [363, 364], [363, 373], [373, 374], [373, 380], [392, 393], [392, 400], [409, 410], [409, 411], [412, 413], [412, 414], [416, 417], [416, 419], [421, 423], [421, 438], [433, 434], [433, 435], [435, 436], [435, 438], [440, 441], [440, 444], [441, 305], [441, 442]], "missing_branches": []}, "FixestMulti.to_list": {"executed_lines": [458], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": []}, "FixestMulti.vcov": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 8, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 8, "excluded_lines": 0, "num_branches": 2, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 2}, "missing_lines": [487, 488, 489, 491, 492, 499, 500, 502], "excluded_lines": [], "executed_branches": [], "missing_branches": [[487, 488], [487, 502]]}, "FixestMulti.tidy": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 9, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 9, "excluded_lines": 0, "num_branches": 2, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 2}, "missing_lines": [523, 524, 525, 526, 527, 528, 530, 531, 533], "excluded_lines": [], "executed_branches": [], "missing_branches": [[524, 525], [524, 530]]}, "FixestMulti.coef": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [545], "excluded_lines": [], "executed_branches": [], "missing_branches": []}, "FixestMulti.se": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [558], "excluded_lines": [], "executed_branches": [], "missing_branches": []}, "FixestMulti.tstat": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [570], "excluded_lines": [], "executed_branches": [], "missing_branches": []}, "FixestMulti.pvalue": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [583], "excluded_lines": [], "executed_branches": [], "missing_branches": []}, "FixestMulti.confint": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [595], "excluded_lines": [], "executed_branches": [], "missing_branches": []}, "FixestMulti.wildboottest": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 10, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 10, "excluded_lines": 0, "num_branches": 2, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 2}, "missing_lines": [648, 649, 650, 652, 664, 665, 667, 674, 676, 678], "excluded_lines": [], "executed_branches": [], "missing_branches": [[649, 650], [649, 676]]}, "FixestMulti.fetch_model": {"executed_lines": [697, 700, 701, 703, 704, 705, 706, 707], "summary": {"covered_lines": 8, "num_statements": 10, "percent_covered": 75.0, "percent_covered_display": "75", "missing_lines": 2, "excluded_lines": 0, "num_branches": 6, "num_partial_branches": 2, "covered_branches": 4, "missing_branches": 2}, "missing_lines": [698, 702], "excluded_lines": [], "executed_branches": [[697, 700], [701, 703], [704, 705], [704, 706]], "missing_branches": [[697, 698], [701, 702]]}, "_drop_singletons": {"executed_lines": [727], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [1, 2, 3, 4, 6, 8, 9, 10, 11, 12, 13, 14, 15, 16, 22, 23, 24, 25, 26, 29, 30, 32, 150, 243, 446, 460, 504, 535, 547, 560, 572, 585, 597, 680, 710], "summary": {"covered_lines": 34, "num_statements": 34, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": []}}, "classes": {"FixestMulti": {"executed_lines": [98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 112, 113, 115, 116, 117, 118, 120, 122, 124, 126, 127, 129, 132, 133, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 223, 224, 225, 226, 228, 229, 230, 235, 236, 237, 240, 241, 288, 289, 291, 297, 298, 299, 303, 305, 321, 342, 343, 349, 355, 363, 364, 373, 374, 380, 392, 393, 400, 405, 406, 408, 409, 410, 411, 412, 413, 414, 416, 417, 419, 421, 423, 424, 432, 433, 434, 435, 436, 438, 440, 441, 442, 444, 458, 697, 700, 701, 703, 704, 705, 706, 707], "summary": {"covered_lines": 119, "num_statements": 153, "percent_covered": 79.51219512195122, "percent_covered_display": "80", "missing_lines": 34, "excluded_lines": 0, "num_branches": 52, "num_partial_branches": 2, "covered_branches": 44, "missing_branches": 8}, "missing_lines": [487, 488, 489, 491, 492, 499, 500, 502, 523, 524, 525, 526, 527, 528, 530, 531, 533, 545, 558, 570, 583, 595, 648, 649, 650, 652, 664, 665, 667, 674, 676, 678, 698, 702], "excluded_lines": [], "executed_branches": [[116, 117], [116, 122], [117, 118], [117, 120], [126, 127], [126, 129], [220, 221], [220, 223], [297, -243], [297, 298], [298, 297], [298, 299], [305, 298], [305, 321], [342, 343], [342, 349], [349, 355], [349, 363], [363, 364], [363, 373], [373, 374], [373, 380], [392, 393], [392, 400], [409, 410], [409, 411], [412, 413], [412, 414], [416, 417], [416, 419], [421, 423], [421, 438], [433, 434], [433, 435], [435, 436], [435, 438], [440, 441], [440, 444], [441, 305], [441, 442], [697, 700], [701, 703], [704, 705], [704, 706]], "missing_branches": [[487, 488], [487, 502], [524, 525], [524, 530], [649, 650], [649, 676], [697, 698], [701, 702]]}, "": {"executed_lines": [1, 2, 3, 4, 6, 8, 9, 10, 11, 12, 13, 14, 15, 16, 22, 23, 24, 25, 26, 29, 30, 32, 150, 243, 446, 460, 504, 535, 547, 560, 572, 585, 597, 680, 710, 727], "summary": {"covered_lines": 35, "num_statements": 35, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": []}}}, "pyfixest/estimation/FormulaParser.py": {"executed_lines": [1, 2, 3, 5, 14, 15, 29, 44, 50, 51, 54, 59, 62, 64, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 82, 83, 91, 130, 137, 138, 140, 141, 142, 144, 187, 188, 195, 197, 200, 202, 213, 218, 220, 221, 222, 231, 232, 270, 278, 279, 280, 282, 283, 284, 286, 288, 296, 331, 332, 333, 334, 335, 337, 338, 340, 342, 343, 345, 346, 348, 350, 374, 375, 377, 378, 384, 385, 393, 425, 428, 430, 431, 433, 436, 456, 458, 459, 460, 461, 462, 463, 464, 466, 469, 520, 523, 524, 526, 527, 528, 529, 530, 531, 532, 533, 535, 536, 538, 539, 540, 541, 542, 543, 544, 547, 549, 550, 552, 553, 555, 556, 558, 559, 560, 567, 569, 572, 593, 597, 598, 606, 663, 665, 666, 668, 671, 672, 676, 677, 678, 687, 690, 719, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 735, 736, 738, 740, 741, 742, 743, 747, 748, 749, 751, 752, 753, 754, 759, 760, 762, 763, 764, 768, 771, 774, 799, 800, 801, 802, 805, 806, 807, 809, 812, 813, 814, 816, 820, 823, 841, 842, 843], "summary": {"covered_lines": 191, "num_statements": 198, "percent_covered": 94.82758620689656, "percent_covered_display": "95", "missing_lines": 7, "excluded_lines": 1, "num_branches": 92, "num_partial_branches": 6, "covered_branches": 84, "missing_branches": 8}, "missing_lines": [281, 426, 679, 680, 682, 766, 769], "excluded_lines": [222], "executed_branches": [[73, 74], [73, 82], [140, 141], [140, 142], [187, 188], [187, 197], [188, -144], [188, 195], [197, -144], [197, 200], [213, 218], [213, 220], [280, 282], [342, 343], [342, 345], [345, 346], [345, 348], [377, -350], [377, 378], [384, -350], [384, 385], [425, 428], [458, 459], [458, 466], [460, 461], [460, 464], [462, 460], [462, 463], [526, 527], [526, 530], [530, 531], [530, 541], [531, 532], [531, 538], [541, 542], [552, 553], [552, 555], [555, 556], [555, 558], [558, 559], [558, 569], [559, 560], [559, 567], [597, -572], [597, 598], [666, 668], [666, 687], [671, 672], [671, 676], [676, 677], [722, 723], [722, 725], [725, 726], [725, 728], [728, 729], [728, 731], [731, 732], [731, 735], [741, 742], [741, 751], [742, 743], [742, 747], [748, 749], [748, 751], [752, 753], [752, 763], [753, 754], [753, 762], [759, 760], [759, 768], [763, 764], [768, 771], [805, 806], [805, 812], [806, 807], [806, 809], [812, 813], [812, 820], [813, 814], [813, 816], [841, -823], [841, 842], [842, 841], [842, 843]], "missing_branches": [[280, 281], [425, 426], [541, 549], [676, 679], [679, 680], [679, 682], [763, 766], [768, 769]], "functions": {"FixestFormulaParser.__init__": {"executed_lines": [44, 50, 51, 54, 59, 62, 64, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 82, 83], "summary": {"covered_lines": 19, "num_statements": 19, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [[73, 74], [73, 82]], "missing_branches": []}, "FixestFormulaParser.add_to_FixestFormulaDict": {"executed_lines": [130, 137, 138, 140, 141, 142], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [[140, 141], [140, 142]], "missing_branches": []}, "FixestFormulaParser.populate_fixest_formula_dict": {"executed_lines": [187, 188, 195, 197, 200], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 6, "num_partial_branches": 0, "covered_branches": 6, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [[187, 188], [187, 197], [188, -144], [188, 195], [197, -144], [197, 200]], "missing_branches": []}, "FixestFormulaParser.set_fixest_multi_flag": {"executed_lines": [213, 218, 220, 221, 222], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 1, "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [222], "executed_branches": [[213, 218], [213, 220]], "missing_branches": []}, "FixestFormula.__init__": {"executed_lines": [278, 279, 280, 282, 283, 284], "summary": {"covered_lines": 6, "num_statements": 7, "percent_covered": 77.77777777777777, "percent_covered_display": "78", "missing_lines": 1, "excluded_lines": 0, "num_branches": 2, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 1}, "missing_lines": [281], "excluded_lines": [], "executed_branches": [[280, 282]], "missing_branches": [[280, 281]]}, "FixestFormula.get_first_and_second_stage_fml": {"executed_lines": [288], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": []}, "FixestFormula.get_fml": {"executed_lines": [331, 332, 333, 334, 335, 337, 338, 340, 342, 343, 345, 346, 348], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [[342, 343], [342, 345], [345, 346], [345, 348]], "missing_branches": []}, "FixestFormula.check_syntax": {"executed_lines": [374, 375, 377, 378, 384, 385], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [[377, -350], [377, 378], [384, -350], [384, 385]], "missing_branches": []}, "_get_first_and_second_stage_fml": {"executed_lines": [425, 428, 430, 431, 433], "summary": {"covered_lines": 5, "num_statements": 6, "percent_covered": 75.0, "percent_covered_display": "75", "missing_lines": 1, "excluded_lines": 0, "num_branches": 2, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 1}, "missing_lines": [426], "excluded_lines": [], "executed_branches": [[425, 428]], "missing_branches": [[425, 426]]}, "collect_fml_dict": {"executed_lines": [456, 458, 459, 460, 461, 462, 463, 464, 466], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 6, "num_partial_branches": 0, "covered_branches": 6, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [[458, 459], [458, 466], [460, 461], [460, 464], [462, 460], [462, 463]], "missing_branches": []}, "_deparse_fml": {"executed_lines": [520, 523, 524, 526, 527, 528, 529, 530, 531, 532, 533, 535, 536, 538, 539, 540, 541, 542, 543, 544, 547, 549, 550, 552, 553, 555, 556, 558, 559, 560, 567, 569], "summary": {"covered_lines": 32, "num_statements": 32, "percent_covered": 97.91666666666667, "percent_covered_display": "98", "missing_lines": 0, "excluded_lines": 0, "num_branches": 16, "num_partial_branches": 1, "covered_branches": 15, "missing_branches": 1}, "missing_lines": [], "excluded_lines": [], "executed_branches": [[526, 527], [526, 530], [530, 531], [530, 541], [531, 532], [531, 538], [541, 542], [552, 553], [552, 555], [555, 556], [555, 558], [558, 559], [558, 569], [559, 560], [559, 567]], "missing_branches": [[541, 549]]}, "_check_endogvars_as_covars": {"executed_lines": [593, 597, 598], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [[597, -572], [597, 598]], "missing_branches": []}, "_input_formula_to_dict": {"executed_lines": [663, 665, 666, 668, 671, 672, 676, 677, 678, 687], "summary": {"covered_lines": 10, "num_statements": 13, "percent_covered": 71.42857142857143, "percent_covered_display": "71", "missing_lines": 3, "excluded_lines": 0, "num_branches": 8, "num_partial_branches": 1, "covered_branches": 5, "missing_branches": 3}, "missing_lines": [679, 680, 682], "excluded_lines": [], "executed_branches": [[666, 668], [666, 687], [671, 672], [671, 676], [676, 677]], "missing_branches": [[676, 679], [679, 680], [679, 682]]}, "_dict_to_list_of_formulas": {"executed_lines": [719, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 735, 736, 738, 740, 741, 742, 743, 747, 748, 749, 751, 752, 753, 754, 759, 760, 762, 763, 764, 768, 771], "summary": {"covered_lines": 34, "num_statements": 36, "percent_covered": 93.33333333333333, "percent_covered_display": "93", "missing_lines": 2, "excluded_lines": 0, "num_branches": 24, "num_partial_branches": 2, "covered_branches": 22, "missing_branches": 2}, "missing_lines": [766, 769], "excluded_lines": [], "executed_branches": [[722, 723], [722, 725], [725, 726], [725, 728], [728, 729], [728, 731], [731, 732], [731, 735], [741, 742], [741, 751], [742, 743], [742, 747], [748, 749], [748, 751], [752, 753], [752, 763], [753, 754], [753, 762], [759, 760], [759, 768], [763, 764], [768, 771]], "missing_branches": [[763, 766], [768, 769]]}, "_find_multiple_estimation_syntax": {"executed_lines": [799, 800, 801, 802, 805, 806, 807, 809, 812, 813, 814, 816, 820], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 8, "num_partial_branches": 0, "covered_branches": 8, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [[805, 806], [805, 812], [806, 807], [806, 809], [812, 813], [812, 820], [813, 814], [813, 816]], "missing_branches": []}, "_check_duplicate_key": {"executed_lines": [841, 842, 843], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [[841, -823], [841, 842], [842, 841], [842, 843]], "missing_branches": []}, "": {"executed_lines": [1, 2, 3, 5, 14, 15, 29, 91, 144, 202, 231, 232, 270, 286, 296, 350, 393, 436, 469, 572, 606, 690, 774, 823], "summary": {"covered_lines": 22, "num_statements": 22, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": []}}, "classes": {"FixestFormulaParser": {"executed_lines": [44, 50, 51, 54, 59, 62, 64, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 82, 83, 130, 137, 138, 140, 141, 142, 187, 188, 195, 197, 200, 213, 218, 220, 221, 222], "summary": {"covered_lines": 34, "num_statements": 34, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 1, "num_branches": 12, "num_partial_branches": 0, "covered_branches": 12, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [222], "executed_branches": [[73, 74], [73, 82], [140, 141], [140, 142], [187, 188], [187, 197], [188, -144], [188, 195], [197, -144], [197, 200], [213, 218], [213, 220]], "missing_branches": []}, "FixestFormula": {"executed_lines": [278, 279, 280, 282, 283, 284, 288, 331, 332, 333, 334, 335, 337, 338, 340, 342, 343, 345, 346, 348, 374, 375, 377, 378, 384, 385], "summary": {"covered_lines": 26, "num_statements": 27, "percent_covered": 94.5945945945946, "percent_covered_display": "95", "missing_lines": 1, "excluded_lines": 0, "num_branches": 10, "num_partial_branches": 1, "covered_branches": 9, "missing_branches": 1}, "missing_lines": [281], "excluded_lines": [], "executed_branches": [[280, 282], [342, 343], [342, 345], [345, 346], [345, 348], [377, -350], [377, 378], [384, -350], [384, 385]], "missing_branches": [[280, 281]]}, "": {"executed_lines": [1, 2, 3, 5, 14, 15, 29, 91, 144, 202, 231, 232, 270, 286, 296, 350, 393, 425, 428, 430, 431, 433, 436, 456, 458, 459, 460, 461, 462, 463, 464, 466, 469, 520, 523, 524, 526, 527, 528, 529, 530, 531, 532, 533, 535, 536, 538, 539, 540, 541, 542, 543, 544, 547, 549, 550, 552, 553, 555, 556, 558, 559, 560, 567, 569, 572, 593, 597, 598, 606, 663, 665, 666, 668, 671, 672, 676, 677, 678, 687, 690, 719, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 735, 736, 738, 740, 741, 742, 743, 747, 748, 749, 751, 752, 753, 754, 759, 760, 762, 763, 764, 768, 771, 774, 799, 800, 801, 802, 805, 806, 807, 809, 812, 813, 814, 816, 820, 823, 841, 842, 843], "summary": {"covered_lines": 131, "num_statements": 137, "percent_covered": 93.71980676328502, "percent_covered_display": "94", "missing_lines": 6, "excluded_lines": 0, "num_branches": 70, "num_partial_branches": 5, "covered_branches": 63, "missing_branches": 7}, "missing_lines": [426, 679, 680, 682, 766, 769], "excluded_lines": [], "executed_branches": [[425, 428], [458, 459], [458, 466], [460, 461], [460, 464], [462, 460], [462, 463], [526, 527], [526, 530], [530, 531], [530, 541], [531, 532], [531, 538], [541, 542], [552, 553], [552, 555], [555, 556], [555, 558], [558, 559], [558, 569], [559, 560], [559, 567], [597, -572], [597, 598], [666, 668], [666, 687], [671, 672], [671, 676], [676, 677], [722, 723], [722, 725], [725, 726], [725, 728], [728, 729], [728, 731], [731, 732], [731, 735], [741, 742], [741, 751], [742, 743], [742, 747], [748, 749], [748, 751], [752, 753], [752, 763], [753, 754], [753, 762], [759, 760], [759, 768], [763, 764], [768, 771], [805, 806], [805, 812], [806, 807], [806, 809], [812, 813], [812, 820], [813, 814], [813, 816], [841, -823], [841, 842], [842, 841], [842, 843]], "missing_branches": [[425, 426], [541, 549], [676, 679], [679, 680], [679, 682], [763, 766], [768, 769]]}}}, "pyfixest/estimation/__init__.py": {"executed_lines": [1, 2, 5, 8, 14, 15, 18, 19, 22, 25, 26, 29, 32, 37, 39], "summary": {"covered_lines": 15, "num_statements": 15, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": [], "functions": {"": {"executed_lines": [1, 2, 5, 8, 14, 15, 18, 19, 22, 25, 26, 29, 32, 37, 39], "summary": {"covered_lines": 15, "num_statements": 15, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [1, 2, 5, 8, 14, 15, 18, 19, 22, 25, 26, 29, 32, 37, 39], "summary": {"covered_lines": 15, "num_statements": 15, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": []}}}, "pyfixest/estimation/backends.py": {"executed_lines": [1, 2, 3, 4, 5, 6, 9, 12, 15, 16, 18, 19, 21, 22, 24, 25, 26, 29, 30, 36, 44, 45, 46, 48], "summary": {"covered_lines": 24, "num_statements": 29, "percent_covered": 82.75862068965517, "percent_covered_display": "83", "missing_lines": 5, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [37, 39, 40, 41, 42], "excluded_lines": [], "executed_branches": [], "missing_branches": [], "functions": {"": {"executed_lines": [1, 2, 3, 4, 5, 6, 9, 12, 15, 16, 18, 19, 21, 22, 24, 25, 26, 29, 30, 36, 44, 45, 46, 48], "summary": {"covered_lines": 24, "num_statements": 29, "percent_covered": 82.75862068965517, "percent_covered_display": "83", "missing_lines": 5, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [37, 39, 40, 41, 42], "excluded_lines": [], "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [1, 2, 3, 4, 5, 6, 9, 12, 15, 16, 18, 19, 21, 22, 24, 25, 26, 29, 30, 36, 44, 45, 46, 48], "summary": {"covered_lines": 24, "num_statements": 29, "percent_covered": 82.75862068965517, "percent_covered_display": "83", "missing_lines": 5, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [37, 39, 40, 41, 42], "excluded_lines": [], "executed_branches": [], "missing_branches": []}}}, "pyfixest/estimation/ccv.py": {"executed_lines": [1, 2, 3, 5, 8, 47, 48, 49, 51, 53, 54, 55, 59, 60, 61, 62, 63, 64, 65, 66, 68, 69, 73, 76, 77, 80, 83, 84, 85, 88, 89, 91, 92, 93, 94, 95, 96, 98, 99, 100, 102, 103, 104, 105, 106, 107, 113], "summary": {"covered_lines": 47, "num_statements": 49, "percent_covered": 92.98245614035088, "percent_covered_display": "93", "missing_lines": 2, "excluded_lines": 0, "num_branches": 8, "num_partial_branches": 2, "covered_branches": 6, "missing_branches": 2}, "missing_lines": [74, 81], "excluded_lines": [], "executed_branches": [[62, 63], [62, 91], [73, 76], [80, 83], [99, 100], [99, 113]], "missing_branches": [[73, 74], [80, 81]], "functions": {"_compute_CCV": {"executed_lines": [47, 48, 49, 51, 53, 54, 55, 59, 60, 61, 62, 63, 64, 65, 66, 68, 69, 73, 76, 77, 80, 83, 84, 85, 88, 89, 91, 92, 93, 94, 95, 96, 98, 99, 100, 102, 103, 104, 105, 106, 107, 113], "summary": {"covered_lines": 42, "num_statements": 44, "percent_covered": 92.3076923076923, "percent_covered_display": "92", "missing_lines": 2, "excluded_lines": 0, "num_branches": 8, "num_partial_branches": 2, "covered_branches": 6, "missing_branches": 2}, "missing_lines": [74, 81], "excluded_lines": [], "executed_branches": [[62, 63], [62, 91], [73, 76], [80, 83], [99, 100], [99, 113]], "missing_branches": [[73, 74], [80, 81]]}, "": {"executed_lines": [1, 2, 3, 5, 8], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [1, 2, 3, 5, 8, 47, 48, 49, 51, 53, 54, 55, 59, 60, 61, 62, 63, 64, 65, 66, 68, 69, 73, 76, 77, 80, 83, 84, 85, 88, 89, 91, 92, 93, 94, 95, 96, 98, 99, 100, 102, 103, 104, 105, 106, 107, 113], "summary": {"covered_lines": 47, "num_statements": 49, "percent_covered": 92.98245614035088, "percent_covered_display": "93", "missing_lines": 2, "excluded_lines": 0, "num_branches": 8, "num_partial_branches": 2, "covered_branches": 6, "missing_branches": 2}, "missing_lines": [74, 81], "excluded_lines": [], "executed_branches": [[62, 63], [62, 91], [73, 76], [80, 83], [99, 100], [99, 113]], "missing_branches": [[73, 74], [80, 81]]}}}, "pyfixest/estimation/cupy/__init__.py": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "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", "missing_lines": 0, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": []}}}, "pyfixest/estimation/cupy/demean_cupy_.py": {"executed_lines": [1, 2, 4, 5, 6, 7, 9, 10, 15, 16, 17, 18, 19, 21, 22, 23, 26, 27, 33, 62, 63, 64, 73, 75, 76, 77, 78, 79, 81, 87, 88, 89, 90, 92, 93, 104, 112, 113, 114, 115, 116, 118, 119, 127, 128, 129, 131, 133, 135, 171, 172, 174, 175, 196, 197, 198, 200, 201, 202, 203, 206, 211, 215, 222, 225, 227, 228, 229, 230, 233, 249, 252, 255, 256, 257, 259, 264, 277, 280, 292, 295, 303, 306, 309, 310, 311, 314], "summary": {"covered_lines": 86, "num_statements": 128, "percent_covered": 60.11904761904762, "percent_covered_display": "60", "missing_lines": 42, "excluded_lines": 0, "num_branches": 40, "num_partial_branches": 11, "covered_branches": 15, "missing_branches": 25}, "missing_lines": [11, 12, 14, 65, 66, 71, 82, 83, 84, 85, 95, 96, 97, 98, 99, 100, 102, 176, 177, 178, 180, 182, 183, 184, 186, 188, 189, 190, 191, 192, 194, 205, 208, 209, 216, 217, 219, 220, 250, 253, 304, 307], "excluded_lines": [], "executed_branches": [[62, 63], [62, 64], [64, 73], [81, 87], [118, 119], [118, 131], [171, 172], [175, 196], [200, 201], [202, 203], [215, 222], [249, 252], [252, 255], [303, 306], [306, 309]], "missing_branches": [[64, 65], [65, 66], [65, 71], [81, 82], [95, 96], [95, 97], [171, 174], [175, 176], [176, 177], [176, 180], [182, 183], [182, 186], [188, 189], [188, 191], [191, 192], [191, 194], [200, 208], [202, 205], [215, 216], [216, 217], [216, 219], [249, 250], [252, 253], [303, 304], [306, 307]], "functions": {"CupyFWLDemeaner.__init__": {"executed_lines": [62, 63, 64, 73, 75, 76, 77, 78, 79, 81, 87, 88, 89, 90], "summary": {"covered_lines": 14, "num_statements": 21, "percent_covered": 62.06896551724138, "percent_covered_display": "62", "missing_lines": 7, "excluded_lines": 0, "num_branches": 8, "num_partial_branches": 2, "covered_branches": 4, "missing_branches": 4}, "missing_lines": [65, 66, 71, 82, 83, 84, 85], "excluded_lines": [], "executed_branches": [[62, 63], [62, 64], [64, 73], [81, 87]], "missing_branches": [[64, 65], [65, 66], [65, 71], [81, 82]]}, "CupyFWLDemeaner._gpu_available": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 7, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 7, "excluded_lines": 0, "num_branches": 2, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 2}, "missing_lines": [95, 96, 97, 98, 99, 100, 102], "excluded_lines": [], "executed_branches": [], "missing_branches": [[95, 96], [95, 97]]}, "CupyFWLDemeaner._solve_lsmr_loop": {"executed_lines": [112, 113, 114, 115, 116, 118, 119, 127, 128, 129, 131, 133], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [[118, 119], [118, 131]], "missing_branches": []}, "CupyFWLDemeaner.demean": {"executed_lines": [171, 172, 174, 175, 196, 197, 198, 200, 201, 202, 203, 206, 211, 215, 222], "summary": {"covered_lines": 15, "num_statements": 36, "percent_covered": 35.714285714285715, "percent_covered_display": "36", "missing_lines": 21, "excluded_lines": 0, "num_branches": 20, "num_partial_branches": 5, "covered_branches": 5, "missing_branches": 15}, "missing_lines": [176, 177, 178, 180, 182, 183, 184, 186, 188, 189, 190, 191, 192, 194, 205, 208, 209, 216, 217, 219, 220], "excluded_lines": [], "executed_branches": [[171, 172], [175, 196], [200, 201], [202, 203], [215, 222]], "missing_branches": [[171, 174], [175, 176], [176, 177], [176, 180], [182, 183], [182, 186], [188, 189], [188, 191], [191, 192], [191, 194], [200, 208], [202, 205], [215, 216], [216, 217], [216, 219]]}, "create_fe_sparse_matrix": {"executed_lines": [227, 228, 229, 230], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": []}, "demean_cupy": {"executed_lines": [249, 252, 255, 256, 257, 259], "summary": {"covered_lines": 6, "num_statements": 8, "percent_covered": 66.66666666666667, "percent_covered_display": "67", "missing_lines": 2, "excluded_lines": 0, "num_branches": 4, "num_partial_branches": 2, "covered_branches": 2, "missing_branches": 2}, "missing_lines": [250, 253], "excluded_lines": [], "executed_branches": [[249, 252], [252, 255]], "missing_branches": [[249, 250], [252, 253]]}, "demean_cupy32": {"executed_lines": [277], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": []}, "demean_cupy64": {"executed_lines": [292], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": []}, "demean_scipy": {"executed_lines": [303, 306, 309, 310, 311, 314], "summary": {"covered_lines": 6, "num_statements": 8, "percent_covered": 66.66666666666667, "percent_covered_display": "67", "missing_lines": 2, "excluded_lines": 0, "num_branches": 4, "num_partial_branches": 2, "covered_branches": 2, "missing_branches": 2}, "missing_lines": [304, 307], "excluded_lines": [], "executed_branches": [[303, 306], [306, 309]], "missing_branches": [[303, 304], [306, 307]]}, "": {"executed_lines": [1, 2, 4, 5, 6, 7, 9, 10, 15, 16, 17, 18, 19, 21, 22, 23, 26, 27, 33, 92, 93, 104, 135, 225, 233, 264, 280, 295], "summary": {"covered_lines": 27, "num_statements": 30, "percent_covered": 90.0, "percent_covered_display": "90", "missing_lines": 3, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [11, 12, 14], "excluded_lines": [], "executed_branches": [], "missing_branches": []}}, "classes": {"CupyFWLDemeaner": {"executed_lines": [62, 63, 64, 73, 75, 76, 77, 78, 79, 81, 87, 88, 89, 90, 112, 113, 114, 115, 116, 118, 119, 127, 128, 129, 131, 133, 171, 172, 174, 175, 196, 197, 198, 200, 201, 202, 203, 206, 211, 215, 222], "summary": {"covered_lines": 41, "num_statements": 76, "percent_covered": 48.148148148148145, "percent_covered_display": "48", "missing_lines": 35, "excluded_lines": 0, "num_branches": 32, "num_partial_branches": 7, "covered_branches": 11, "missing_branches": 21}, "missing_lines": [65, 66, 71, 82, 83, 84, 85, 95, 96, 97, 98, 99, 100, 102, 176, 177, 178, 180, 182, 183, 184, 186, 188, 189, 190, 191, 192, 194, 205, 208, 209, 216, 217, 219, 220], "excluded_lines": [], "executed_branches": [[62, 63], [62, 64], [64, 73], [81, 87], [118, 119], [118, 131], [171, 172], [175, 196], [200, 201], [202, 203], [215, 222]], "missing_branches": [[64, 65], [65, 66], [65, 71], [81, 82], [95, 96], [95, 97], [171, 174], [175, 176], [176, 177], [176, 180], [182, 183], [182, 186], [188, 189], [188, 191], [191, 192], [191, 194], [200, 208], [202, 205], [215, 216], [216, 217], [216, 219]]}, "": {"executed_lines": [1, 2, 4, 5, 6, 7, 9, 10, 15, 16, 17, 18, 19, 21, 22, 23, 26, 27, 33, 92, 93, 104, 135, 225, 227, 228, 229, 230, 233, 249, 252, 255, 256, 257, 259, 264, 277, 280, 292, 295, 303, 306, 309, 310, 311, 314], "summary": {"covered_lines": 45, "num_statements": 52, "percent_covered": 81.66666666666667, "percent_covered_display": "82", "missing_lines": 7, "excluded_lines": 0, "num_branches": 8, "num_partial_branches": 4, "covered_branches": 4, "missing_branches": 4}, "missing_lines": [11, 12, 14, 250, 253, 304, 307], "excluded_lines": [], "executed_branches": [[249, 252], [252, 255], [303, 306], [306, 309]], "missing_branches": [[249, 250], [252, 253], [303, 304], [306, 307]]}}}, "pyfixest/estimation/decomposition.py": {"executed_lines": [1, 2, 3, 4, 6, 7, 8, 9, 10, 11, 12, 15, 22, 23, 24, 26, 27, 28, 29, 30, 32, 34, 35, 40, 41, 43, 51, 52, 54, 56, 60, 61, 63, 65, 69, 70, 74, 85, 87, 89, 92, 97, 98, 99, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 166, 167, 168, 169, 170, 171, 172, 173, 175, 176, 183, 184, 185, 187, 192, 193, 194, 199, 200, 202, 203, 207, 209, 210, 214, 215, 217, 218, 222, 223, 224, 228, 229, 234, 235, 238, 239, 240, 241, 245, 247, 248, 249, 250, 251, 252, 257, 261, 262, 263, 264, 265, 269, 277, 278, 279, 281, 282, 283, 285, 286, 287, 288, 289, 290, 291, 293, 294, 295, 303, 304, 305, 306, 307, 308, 310, 318, 326, 327, 329, 330, 331, 332, 333, 335, 360, 362, 363, 366, 367, 369, 374, 381, 382, 385, 389, 404, 411, 413, 428, 429, 432, 435, 437, 454, 468, 471, 472, 475, 476, 478, 480, 482, 483, 485, 486, 487, 490, 497, 498, 500, 507, 509, 510, 511, 513, 514, 515, 516, 518, 526, 533, 535, 540, 544, 565, 566, 567, 569, 570, 571, 575, 579, 580, 583, 587, 589, 590, 610, 614, 616, 618, 619, 623, 624, 625, 628, 629, 633, 635, 637, 641, 646, 650, 655, 659, 660, 666, 670, 671, 677, 681, 682, 683, 686, 688, 693, 694, 695, 698, 700, 702, 703, 704, 705, 707, 708, 710, 712, 714, 715, 718, 720, 722, 774, 776, 779, 781, 782, 788, 794, 795, 804, 810, 811, 812, 814, 815, 816, 817, 821, 823, 824, 825, 829, 837, 843, 844, 845, 846, 847, 848, 849, 852, 853, 854, 858, 864, 868, 869, 873, 876, 880, 882, 886, 891, 892, 895, 896, 900, 902, 903, 907, 908, 911, 920, 921, 922, 923, 924, 925, 935, 1004, 1007, 1010, 1025, 1034, 1036, 1041, 1042, 1045, 1046, 1050, 1051, 1055, 1056, 1060], "summary": {"covered_lines": 316, "num_statements": 365, "percent_covered": 83.23471400394477, "percent_covered_display": "83", "missing_lines": 49, "excluded_lines": 4, "num_branches": 142, "num_partial_branches": 24, "covered_branches": 106, "missing_branches": 36}, "missing_lines": [36, 55, 64, 72, 86, 88, 90, 219, 225, 297, 301, 340, 341, 343, 351, 358, 439, 440, 444, 445, 448, 449, 450, 452, 598, 599, 600, 601, 602, 603, 605, 606, 684, 696, 777, 800, 805, 827, 830, 887, 898, 926, 927, 928, 929, 930, 931, 933, 1037], "excluded_lines": [1042, 1046, 1051, 1056], "executed_branches": [[35, -32], [54, 56], [63, 65], [85, 87], [87, 89], [89, 92], [192, 193], [192, 199], [202, 203], [202, 207], [209, 210], [209, 214], [218, 222], [222, 223], [222, 228], [223, 224], [223, 228], [224, 223], [228, 229], [228, 234], [234, -217], [234, 235], [240, -217], [240, 241], [247, 248], [247, 257], [248, 249], [248, 250], [250, 247], [250, 251], [251, 250], [251, 252], [261, -245], [261, 262], [262, 261], [262, 263], [263, 262], [263, 264], [277, 278], [285, 286], [294, 295], [304, 305], [304, 306], [329, 330], [329, 335], [330, 331], [330, 335], [366, 367], [366, 369], [480, 482], [480, 500], [485, 486], [485, 490], [497, 498], [497, 513], [509, 510], [509, 513], [569, 570], [569, 579], [589, 590], [618, 619], [618, 623], [623, 624], [623, 633], [624, 625], [628, 623], [628, 629], [681, 682], [688, 693], [700, 702], [700, 703], [703, 704], [703, 710], [707, 708], [707, 710], [776, 779], [781, 782], [781, 788], [794, 795], [794, 804], [795, 794], [804, 810], [815, 816], [815, 821], [823, 824], [829, 837], [844, 845], [844, 847], [847, 848], [847, 852], [852, 853], [852, 858], [868, 869], [868, 882], [886, 891], [891, 892], [891, 900], [895, 896], [902, 903], [902, 907], [920, 921], [920, 922], [922, 923], [922, 924], [924, 925], [1036, 1041]], "missing_branches": [[35, 36], [54, 55], [63, 64], [85, 86], [87, 88], [89, 90], [218, 219], [224, 225], [277, 340], [285, 301], [294, 297], [439, 440], [439, 448], [589, 598], [598, 599], [598, 600], [600, 601], [600, 602], [602, 603], [602, 605], [624, 623], [681, 684], [688, 696], [776, 777], [795, 800], [804, 805], [823, 827], [829, 830], [886, 887], [895, 898], [924, 926], [926, 927], [926, 930], [930, 931], [930, 933], [1036, 1037]], "functions": {"GelbachResults.__post_init__": {"executed_lines": [34, 35], "summary": {"covered_lines": 2, "num_statements": 3, "percent_covered": 60.0, "percent_covered_display": "60", "missing_lines": 1, "excluded_lines": 0, "num_branches": 2, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 1}, "missing_lines": [36], "excluded_lines": [], "executed_branches": [[35, -32]], "missing_branches": [[35, 36]]}, "GelbachResults.absolute": {"executed_lines": [43], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": []}, "GelbachResults.relative_to_explained": {"executed_lines": [54, 56], "summary": {"covered_lines": 2, "num_statements": 3, "percent_covered": 60.0, "percent_covered_display": "60", "missing_lines": 1, "excluded_lines": 0, "num_branches": 2, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 1}, "missing_lines": [55], "excluded_lines": [], "executed_branches": [[54, 56]], "missing_branches": [[54, 55]]}, "GelbachResults.relative_to_direct": {"executed_lines": [63, 65], "summary": {"covered_lines": 2, "num_statements": 3, "percent_covered": 60.0, "percent_covered_display": "60", "missing_lines": 1, "excluded_lines": 0, "num_branches": 2, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 1}, "missing_lines": [64], "excluded_lines": [], "executed_branches": [[63, 65]], "missing_branches": [[63, 64]]}, "GelbachResults.all_effect_names": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [72], "excluded_lines": [], "executed_branches": [], "missing_branches": []}, "GelbachResults.to_dict": {"executed_lines": [85, 87, 89, 92], "summary": {"covered_lines": 4, "num_statements": 7, "percent_covered": 53.84615384615385, "percent_covered_display": "54", "missing_lines": 3, "excluded_lines": 0, "num_branches": 6, "num_partial_branches": 3, "covered_branches": 3, "missing_branches": 3}, "missing_lines": [86, 88, 90], "excluded_lines": [], "executed_branches": [[85, 87], [87, 89], [89, 92]], "missing_branches": [[85, 86], [87, 88], [89, 90]]}, "GelbachDecomposition.__post_init__": {"executed_lines": [176, 183, 184, 185, 187, 192, 193, 194, 199, 200, 202, 203, 207, 209, 210, 214, 215], "summary": {"covered_lines": 17, "num_statements": 17, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 6, "num_partial_branches": 0, "covered_branches": 6, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [[192, 193], [192, 199], [202, 203], [202, 207], [209, 210], [209, 214]], "missing_branches": []}, "GelbachDecomposition._check_covariates": {"executed_lines": [218, 222, 223, 224, 228, 229, 234, 235, 238, 239, 240, 241], "summary": {"covered_lines": 12, "num_statements": 14, "percent_covered": 85.71428571428571, "percent_covered_display": "86", "missing_lines": 2, "excluded_lines": 0, "num_branches": 14, "num_partial_branches": 2, "covered_branches": 12, "missing_branches": 2}, "missing_lines": [219, 225], "excluded_lines": [], "executed_branches": [[218, 222], [222, 223], [222, 228], [223, 224], [223, 228], [224, 223], [228, 229], [228, 234], [234, -217], [234, 235], [240, -217], [240, 241]], "missing_branches": [[218, 219], [224, 225]]}, "GelbachDecomposition._check_combine_covariates": {"executed_lines": [247, 248, 249, 250, 251, 252, 257, 261, 262, 263, 264, 265], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 14, "num_partial_branches": 0, "covered_branches": 14, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [[247, 248], [247, 257], [248, 249], [248, 250], [250, 247], [250, 251], [251, 250], [251, 252], [261, -245], [261, 262], [262, 261], [262, 263], [263, 262], [263, 264]], "missing_branches": []}, "GelbachDecomposition.fit": {"executed_lines": [277, 278, 279, 281, 282, 283, 285, 286, 287, 288, 289, 290, 291, 293, 294, 295, 303, 304, 305, 306, 307, 308, 310, 318, 326, 327, 329, 330, 331, 332, 333, 335], "summary": {"covered_lines": 32, "num_statements": 39, "percent_covered": 80.3921568627451, "percent_covered_display": "80", "missing_lines": 7, "excluded_lines": 0, "num_branches": 12, "num_partial_branches": 3, "covered_branches": 9, "missing_branches": 3}, "missing_lines": [297, 301, 340, 341, 343, 351, 358], "excluded_lines": [], "executed_branches": [[277, 278], [285, 286], [294, 295], [304, 305], [304, 306], [329, 330], [329, 335], [330, 331], [330, 335]], "missing_branches": [[277, 340], [285, 301], [294, 297]]}, "GelbachDecomposition.bootstrap": {"executed_lines": [362, 363, 366, 367, 369, 374, 381, 382, 385], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [[366, 367], [366, 369]], "missing_branches": []}, "GelbachDecomposition._compute_ci": {"executed_lines": [404, 411], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": []}, "GelbachDecomposition._unpack_bootstrap_results": {"executed_lines": [428, 429, 432, 435], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": []}, "GelbachDecomposition._bootstrap": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 8, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 8, "excluded_lines": 0, "num_branches": 2, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 2}, "missing_lines": [439, 440, 444, 445, 448, 449, 450, 452], "excluded_lines": [], "executed_branches": [], "missing_branches": [[439, 440], [439, 448]]}, "GelbachDecomposition.compute_gelbach": {"executed_lines": [468, 471, 472, 475, 476, 478, 480, 482, 483, 485, 486, 487, 490, 497, 498, 500, 507, 509, 510, 511, 513, 514, 515, 516, 518, 526, 533], "summary": {"covered_lines": 27, "num_statements": 27, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 8, "num_partial_branches": 0, "covered_branches": 8, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [[480, 482], [480, 500], [485, 486], [485, 490], [497, 498], [497, 513], [509, 510], [509, 513]], "missing_branches": []}, "GelbachDecomposition._dict_to_df": {"executed_lines": [540], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": []}, "GelbachDecomposition.tidy": {"executed_lines": [565, 566, 567, 569, 570, 571, 575, 579, 580, 583, 587, 589, 590], "summary": {"covered_lines": 13, "num_statements": 21, "percent_covered": 51.61290322580645, "percent_covered_display": "52", "missing_lines": 8, "excluded_lines": 0, "num_branches": 10, "num_partial_branches": 1, "covered_branches": 3, "missing_branches": 7}, "missing_lines": [598, 599, 600, 601, 602, 603, 605, 606], "excluded_lines": [], "executed_branches": [[569, 570], [569, 579], [589, 590]], "missing_branches": [[589, 598], [598, 599], [598, 600], [600, 601], [600, 602], [602, 603], [602, 605]]}, "GelbachDecomposition._build_panel_summary": {"executed_lines": [614, 616, 618, 619, 623, 624, 625, 628, 629, 633, 635], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 94.73684210526316, "percent_covered_display": "95", "missing_lines": 0, "excluded_lines": 0, "num_branches": 8, "num_partial_branches": 1, "covered_branches": 7, "missing_branches": 1}, "missing_lines": [], "excluded_lines": [], "executed_branches": [[618, 619], [618, 623], [623, 624], [623, 633], [624, 625], [628, 623], [628, 629]], "missing_branches": [[624, 623]]}, "GelbachDecomposition._format_main_effects_row": {"executed_lines": [641], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": []}, "GelbachDecomposition._format_main_effects_ci_row": {"executed_lines": [650], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": []}, "GelbachDecomposition._format_mediator_row": {"executed_lines": [659, 660], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": []}, "GelbachDecomposition._format_mediator_ci_row": {"executed_lines": [670, 671], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": []}, "GelbachDecomposition._format_effect_value": {"executed_lines": [681, 682, 683], "summary": {"covered_lines": 3, "num_statements": 4, "percent_covered": 66.66666666666667, "percent_covered_display": "67", "missing_lines": 1, "excluded_lines": 0, "num_branches": 2, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 1}, "missing_lines": [684], "excluded_lines": [], "executed_branches": [[681, 682]], "missing_branches": [[681, 684]]}, "GelbachDecomposition._format_ci_value": {"executed_lines": [688, 693, 694, 695], "summary": {"covered_lines": 4, "num_statements": 5, "percent_covered": 71.42857142857143, "percent_covered_display": "71", "missing_lines": 1, "excluded_lines": 0, "num_branches": 2, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 1}, "missing_lines": [696], "excluded_lines": [], "executed_branches": [[688, 693]], "missing_branches": [[688, 696]]}, "GelbachDecomposition._apply_panel_specific_rules": {"executed_lines": [700, 702, 703, 704, 705, 707, 708, 710], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 6, "num_partial_branches": 0, "covered_branches": 6, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [[700, 702], [700, 703], [703, 704], [703, 710], [707, 708], [707, 710]], "missing_branches": []}, "GelbachDecomposition._convert_to_dataframe": {"executed_lines": [714, 715, 718, 720], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": []}, "GelbachDecomposition.etable": {"executed_lines": [774, 776, 779, 781, 782, 788, 794, 795, 804, 810, 811, 812, 814, 815, 816, 817, 821, 823, 824, 825, 829, 837, 843, 844, 845, 846, 847, 848, 849, 852, 853, 854, 858, 864, 868, 869, 873, 876, 880, 882, 886, 891, 892, 895, 896, 900, 902, 903, 907, 908, 911, 920, 921, 922, 923, 924, 925], "summary": {"covered_lines": 57, "num_statements": 71, "percent_covered": 76.99115044247787, "percent_covered_display": "77", "missing_lines": 14, "excluded_lines": 0, "num_branches": 42, "num_partial_branches": 8, "covered_branches": 30, "missing_branches": 12}, "missing_lines": [777, 800, 805, 827, 830, 887, 898, 926, 927, 928, 929, 930, 931, 933], "excluded_lines": [], "executed_branches": [[776, 779], [781, 782], [781, 788], [794, 795], [794, 804], [795, 794], [804, 810], [815, 816], [815, 821], [823, 824], [829, 837], [844, 845], [844, 847], [847, 848], [847, 852], [852, 853], [852, 858], [868, 869], [868, 882], [886, 891], [891, 892], [891, 900], [895, 896], [902, 903], [902, 907], [920, 921], [920, 922], [922, 923], [922, 924], [924, 925]], "missing_branches": [[776, 777], [795, 800], [804, 805], [823, 827], [829, 830], [886, 887], [895, 898], [924, 926], [926, 927], [926, 930], [930, 931], [930, 933]]}, "GelbachDecomposition.coefplot": {"executed_lines": [1004, 1007, 1010], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": []}, "_decompose_arg_check": {"executed_lines": [1034, 1036, 1041, 1042, 1045, 1046, 1050, 1051, 1055, 1056, 1060], "summary": {"covered_lines": 7, "num_statements": 8, "percent_covered": 80.0, "percent_covered_display": "80", "missing_lines": 1, "excluded_lines": 4, "num_branches": 2, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 1}, "missing_lines": [1037], "excluded_lines": [1042, 1046, 1051, 1056], "executed_branches": [[1036, 1041]], "missing_branches": [[1036, 1037]]}, "": {"executed_lines": [1, 2, 3, 4, 6, 7, 8, 9, 10, 11, 12, 15, 22, 23, 24, 26, 27, 28, 29, 30, 32, 40, 41, 51, 52, 60, 61, 69, 70, 74, 97, 98, 99, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 166, 167, 168, 169, 170, 171, 172, 173, 175, 217, 245, 269, 360, 389, 413, 437, 454, 535, 544, 610, 637, 646, 655, 666, 677, 686, 698, 712, 722, 935, 1025], "summary": {"covered_lines": 73, "num_statements": 73, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": []}}, "classes": {"GelbachResults": {"executed_lines": [34, 35, 43, 54, 56, 63, 65, 85, 87, 89, 92], "summary": {"covered_lines": 11, "num_statements": 18, "percent_covered": 56.666666666666664, "percent_covered_display": "57", "missing_lines": 7, "excluded_lines": 0, "num_branches": 12, "num_partial_branches": 6, "covered_branches": 6, "missing_branches": 6}, "missing_lines": [36, 55, 64, 72, 86, 88, 90], "excluded_lines": [], "executed_branches": [[35, -32], [54, 56], [63, 65], [85, 87], [87, 89], [89, 92]], "missing_branches": [[35, 36], [54, 55], [63, 64], [85, 86], [87, 88], [89, 90]]}, "GelbachDecomposition": {"executed_lines": [176, 183, 184, 185, 187, 192, 193, 194, 199, 200, 202, 203, 207, 209, 210, 214, 215, 218, 222, 223, 224, 228, 229, 234, 235, 238, 239, 240, 241, 247, 248, 249, 250, 251, 252, 257, 261, 262, 263, 264, 265, 277, 278, 279, 281, 282, 283, 285, 286, 287, 288, 289, 290, 291, 293, 294, 295, 303, 304, 305, 306, 307, 308, 310, 318, 326, 327, 329, 330, 331, 332, 333, 335, 362, 363, 366, 367, 369, 374, 381, 382, 385, 404, 411, 428, 429, 432, 435, 468, 471, 472, 475, 476, 478, 480, 482, 483, 485, 486, 487, 490, 497, 498, 500, 507, 509, 510, 511, 513, 514, 515, 516, 518, 526, 533, 540, 565, 566, 567, 569, 570, 571, 575, 579, 580, 583, 587, 589, 590, 614, 616, 618, 619, 623, 624, 625, 628, 629, 633, 635, 641, 650, 659, 660, 670, 671, 681, 682, 683, 688, 693, 694, 695, 700, 702, 703, 704, 705, 707, 708, 710, 714, 715, 718, 720, 774, 776, 779, 781, 782, 788, 794, 795, 804, 810, 811, 812, 814, 815, 816, 817, 821, 823, 824, 825, 829, 837, 843, 844, 845, 846, 847, 848, 849, 852, 853, 854, 858, 864, 868, 869, 873, 876, 880, 882, 886, 891, 892, 895, 896, 900, 902, 903, 907, 908, 911, 920, 921, 922, 923, 924, 925, 1004, 1007, 1010], "summary": {"covered_lines": 225, "num_statements": 266, "percent_covered": 82.23350253807106, "percent_covered_display": "82", "missing_lines": 41, "excluded_lines": 0, "num_branches": 128, "num_partial_branches": 17, "covered_branches": 99, "missing_branches": 29}, "missing_lines": [219, 225, 297, 301, 340, 341, 343, 351, 358, 439, 440, 444, 445, 448, 449, 450, 452, 598, 599, 600, 601, 602, 603, 605, 606, 684, 696, 777, 800, 805, 827, 830, 887, 898, 926, 927, 928, 929, 930, 931, 933], "excluded_lines": [], "executed_branches": [[192, 193], [192, 199], [202, 203], [202, 207], [209, 210], [209, 214], [218, 222], [222, 223], [222, 228], [223, 224], [223, 228], [224, 223], [228, 229], [228, 234], [234, -217], [234, 235], [240, -217], [240, 241], [247, 248], [247, 257], [248, 249], [248, 250], [250, 247], [250, 251], [251, 250], [251, 252], [261, -245], [261, 262], [262, 261], [262, 263], [263, 262], [263, 264], [277, 278], [285, 286], [294, 295], [304, 305], [304, 306], [329, 330], [329, 335], [330, 331], [330, 335], [366, 367], [366, 369], [480, 482], [480, 500], [485, 486], [485, 490], [497, 498], [497, 513], [509, 510], [509, 513], [569, 570], [569, 579], [589, 590], [618, 619], [618, 623], [623, 624], [623, 633], [624, 625], [628, 623], [628, 629], [681, 682], [688, 693], [700, 702], [700, 703], [703, 704], [703, 710], [707, 708], [707, 710], [776, 779], [781, 782], [781, 788], [794, 795], [794, 804], [795, 794], [804, 810], [815, 816], [815, 821], [823, 824], [829, 837], [844, 845], [844, 847], [847, 848], [847, 852], [852, 853], [852, 858], [868, 869], [868, 882], [886, 891], [891, 892], [891, 900], [895, 896], [902, 903], [902, 907], [920, 921], [920, 922], [922, 923], [922, 924], [924, 925]], "missing_branches": [[218, 219], [224, 225], [277, 340], [285, 301], [294, 297], [439, 440], [439, 448], [589, 598], [598, 599], [598, 600], [600, 601], [600, 602], [602, 603], [602, 605], [624, 623], [681, 684], [688, 696], [776, 777], [795, 800], [804, 805], [823, 827], [829, 830], [886, 887], [895, 898], [924, 926], [926, 927], [926, 930], [930, 931], [930, 933]]}, "": {"executed_lines": [1, 2, 3, 4, 6, 7, 8, 9, 10, 11, 12, 15, 22, 23, 24, 26, 27, 28, 29, 30, 32, 40, 41, 51, 52, 60, 61, 69, 70, 74, 97, 98, 99, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 166, 167, 168, 169, 170, 171, 172, 173, 175, 217, 245, 269, 360, 389, 413, 437, 454, 535, 544, 610, 637, 646, 655, 666, 677, 686, 698, 712, 722, 935, 1025, 1034, 1036, 1041, 1042, 1045, 1046, 1050, 1051, 1055, 1056, 1060], "summary": {"covered_lines": 80, "num_statements": 81, "percent_covered": 97.59036144578313, "percent_covered_display": "98", "missing_lines": 1, "excluded_lines": 4, "num_branches": 2, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 1}, "missing_lines": [1037], "excluded_lines": [1042, 1046, 1051, 1056], "executed_branches": [[1036, 1041]], "missing_branches": [[1036, 1037]]}}}, "pyfixest/estimation/demean_.py": {"executed_lines": [1, 3, 4, 5, 7, 10, 68, 70, 71, 73, 74, 76, 79, 80, 82, 84, 85, 86, 87, 94, 97, 100, 101, 103, 104, 107, 114, 119, 120, 121, 124, 127, 133, 136, 143, 144, 146, 147, 149, 153, 155, 156, 159, 160, 162, 165, 166, 173, 174, 192, 193, 208, 209, 324, 348, 349, 351, 352, 353, 354, 355, 357, 358, 359, 361, 362, 363, 365, 367], "summary": {"covered_lines": 69, "num_statements": 124, "percent_covered": 52.80898876404494, "percent_covered_display": "53", "missing_lines": 55, "excluded_lines": 0, "num_branches": 54, "num_partial_branches": 5, "covered_branches": 25, "missing_branches": 29}, "missing_lines": [77, 88, 89, 91, 105, 115, 125, 167, 168, 169, 170, 181, 183, 184, 185, 187, 188, 189, 196, 197, 198, 200, 201, 202, 203, 205, 275, 276, 278, 279, 281, 283, 285, 286, 287, 289, 290, 292, 293, 294, 296, 297, 298, 299, 300, 302, 303, 304, 311, 312, 314, 316, 318, 320, 321], "excluded_lines": [], "executed_branches": [[73, 74], [73, 76], [76, 79], [79, 80], [79, 153], [82, 84], [82, 136], [85, 86], [97, 100], [97, 133], [104, 107], [114, 119], [124, 127], [143, 144], [143, 146], [348, 349], [348, 352], [352, 353], [352, 354], [354, 355], [354, 358], [358, 359], [358, 362], [362, 363], [362, 367]], "missing_branches": [[76, 77], [85, 91], [104, 105], [114, 115], [124, 125], [167, 168], [167, 170], [168, 167], [168, 169], [183, 184], [183, 187], [187, -173], [187, 188], [200, 201], [200, 205], [201, 200], [201, 202], [278, 279], [278, 281], [293, 294], [293, 320], [298, 299], [298, 302], [302, 303], [302, 316], [303, 304], [303, 311], [311, 312], [311, 314]], "functions": {"demean_model": {"executed_lines": [68, 70, 71, 73, 74, 76, 79, 80, 82, 84, 85, 86, 87, 94, 97, 100, 101, 103, 104, 107, 114, 119, 120, 121, 124, 127, 133, 136, 143, 144, 146, 147, 149, 153, 155, 156, 159, 160, 162], "summary": {"covered_lines": 39, "num_statements": 46, "percent_covered": 81.81818181818181, "percent_covered_display": "82", "missing_lines": 7, "excluded_lines": 0, "num_branches": 20, "num_partial_branches": 5, "covered_branches": 15, "missing_branches": 5}, "missing_lines": [77, 88, 89, 91, 105, 115, 125], "excluded_lines": [], "executed_branches": [[73, 74], [73, 76], [76, 79], [79, 80], [79, 153], [82, 84], [82, 136], [85, 86], [97, 100], [97, 133], [104, 107], [114, 119], [124, 127], [143, 144], [143, 146]], "missing_branches": [[76, 77], [85, 91], [104, 105], [114, 115], [124, 125]]}, "_sad_converged": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 4, "excluded_lines": 0, "num_branches": 4, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 4}, "missing_lines": [167, 168, 169, 170], "excluded_lines": [], "executed_branches": [], "missing_branches": [[167, 168], [167, 170], [168, 167], [168, 169]]}, "_subtract_weighted_group_mean": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 7, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 7, "excluded_lines": 0, "num_branches": 4, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 4}, "missing_lines": [181, 183, 184, 185, 187, 188, 189], "excluded_lines": [], "executed_branches": [], "missing_branches": [[183, 184], [183, 187], [187, -173], [187, 188]]}, "_calc_group_weights": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 8, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 8, "excluded_lines": 0, "num_branches": 4, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 4}, "missing_lines": [196, 197, 198, 200, 201, 202, 203, 205], "excluded_lines": [], "executed_branches": [], "missing_branches": [[200, 201], [200, 205], [201, 200], [201, 202]]}, "demean": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 29, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 29, "excluded_lines": 0, "num_branches": 12, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 12}, "missing_lines": [275, 276, 278, 279, 281, 283, 285, 286, 287, 289, 290, 292, 293, 294, 296, 297, 298, 299, 300, 302, 303, 304, 311, 312, 314, 316, 318, 320, 321], "excluded_lines": [], "executed_branches": [], "missing_branches": [[278, 279], [278, 281], [293, 294], [293, 320], [298, 299], [298, 302], [302, 303], [302, 316], [303, 304], [303, 311], [311, 312], [311, 314]]}, "_set_demeaner_backend": {"executed_lines": [348, 349, 351, 352, 353, 354, 355, 357, 358, 359, 361, 362, 363, 365, 367], "summary": {"covered_lines": 15, "num_statements": 15, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 10, "num_partial_branches": 0, "covered_branches": 10, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [[348, 349], [348, 352], [352, 353], [352, 354], [354, 355], [354, 358], [358, 359], [358, 362], [362, 363], [362, 367]], "missing_branches": []}, "": {"executed_lines": [1, 3, 4, 5, 7, 10, 165, 166, 173, 174, 192, 193, 208, 209, 324], "summary": {"covered_lines": 15, "num_statements": 15, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [1, 3, 4, 5, 7, 10, 68, 70, 71, 73, 74, 76, 79, 80, 82, 84, 85, 86, 87, 94, 97, 100, 101, 103, 104, 107, 114, 119, 120, 121, 124, 127, 133, 136, 143, 144, 146, 147, 149, 153, 155, 156, 159, 160, 162, 165, 166, 173, 174, 192, 193, 208, 209, 324, 348, 349, 351, 352, 353, 354, 355, 357, 358, 359, 361, 362, 363, 365, 367], "summary": {"covered_lines": 69, "num_statements": 124, "percent_covered": 52.80898876404494, "percent_covered_display": "53", "missing_lines": 55, "excluded_lines": 0, "num_branches": 54, "num_partial_branches": 5, "covered_branches": 25, "missing_branches": 29}, "missing_lines": [77, 88, 89, 91, 105, 115, 125, 167, 168, 169, 170, 181, 183, 184, 185, 187, 188, 189, 196, 197, 198, 200, 201, 202, 203, 205, 275, 276, 278, 279, 281, 283, 285, 286, 287, 289, 290, 292, 293, 294, 296, 297, 298, 299, 300, 302, 303, 304, 311, 312, 314, 316, 318, 320, 321], "excluded_lines": [], "executed_branches": [[73, 74], [73, 76], [76, 79], [79, 80], [79, 153], [82, 84], [82, 136], [85, 86], [97, 100], [97, 133], [104, 107], [114, 119], [124, 127], [143, 144], [143, 146], [348, 349], [348, 352], [352, 353], [352, 354], [354, 355], [354, 358], [358, 359], [358, 362], [362, 363], [362, 367]], "missing_branches": [[76, 77], [85, 91], [104, 105], [114, 115], [124, 125], [167, 168], [167, 170], [168, 167], [168, 169], [183, 184], [183, 187], [187, -173], [187, 188], [200, 201], [200, 205], [201, 200], [201, 202], [278, 279], [278, 281], [293, 294], [293, 320], [298, 299], [298, 302], [302, 303], [302, 316], [303, 304], [303, 311], [311, 312], [311, 314]]}}}, "pyfixest/estimation/demean_jax_.py": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 43, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 43, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [1, 3, 4, 5, 6, 9, 10, 19, 21, 22, 24, 25, 26, 29, 30, 35, 36, 38, 39, 42, 43, 45, 46, 48, 49, 50, 51, 52, 54, 55, 57, 58, 61, 62, 64, 67, 76, 79, 82, 83, 84, 87, 90], "excluded_lines": [], "executed_branches": [], "missing_branches": [], "functions": {"_demean_jax_impl": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 12, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 12, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [19, 21, 22, 38, 39, 45, 46, 54, 55, 61, 62, 64], "excluded_lines": [], "executed_branches": [], "missing_branches": []}, "_demean_jax_impl._apply_factor": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 7, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 7, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [24, 25, 26, 29, 30, 35, 36], "excluded_lines": [], "executed_branches": [], "missing_branches": []}, "_demean_jax_impl._demean_step": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 2, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [42, 43], "excluded_lines": [], "executed_branches": [], "missing_branches": []}, "_demean_jax_impl._body_fun": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 5, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 5, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [48, 49, 50, 51, 52], "excluded_lines": [], "executed_branches": [], "missing_branches": []}, "_demean_jax_impl._cond_fun": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 2, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [57, 58], "excluded_lines": [], "executed_branches": [], "missing_branches": []}, "demean_jax": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 7, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 7, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [76, 79, 82, 83, 84, 87, 90], "excluded_lines": [], "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 8, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 8, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [1, 3, 4, 5, 6, 9, 10, 67], "excluded_lines": [], "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 43, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 43, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [1, 3, 4, 5, 6, 9, 10, 19, 21, 22, 24, 25, 26, 29, 30, 35, 36, 38, 39, 42, 43, 45, 46, 48, 49, 50, 51, 52, 54, 55, 57, 58, 61, 62, 64, 67, 76, 79, 82, 83, 84, 87, 90], "excluded_lines": [], "executed_branches": [], "missing_branches": []}}}, "pyfixest/estimation/detect_singletons_.py": {"executed_lines": [1, 2, 3, 6, 10, 11, 14, 15, 17, 20, 21, 22, 24, 30, 33, 34], "summary": {"covered_lines": 16, "num_statements": 54, "percent_covered": 26.38888888888889, "percent_covered_display": "26", "missing_lines": 38, "excluded_lines": 0, "num_branches": 18, "num_partial_branches": 1, "covered_branches": 3, "missing_branches": 15}, "missing_lines": [7, 18, 25, 26, 27, 28, 66, 67, 69, 70, 72, 73, 75, 76, 78, 79, 81, 82, 83, 84, 85, 93, 94, 96, 97, 99, 100, 101, 102, 103, 104, 106, 108, 109, 111, 112, 113, 115], "excluded_lines": [], "executed_branches": [[14, 15], [14, 17], [17, 20]], "missing_branches": [[17, 18], [78, 79], [78, 108], [83, 84], [83, 96], [96, 97], [96, 99], [100, 101], [100, 106], [102, 100], [102, 103], [108, 75], [108, 109], [112, 113], [112, 115]], "functions": {"_prepare_fixed_effects": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [7], "excluded_lines": [], "executed_branches": [], "missing_branches": []}, "_ol_preproc_fixed_effects": {"executed_lines": [14, 15, 17, 20, 21, 22, 24, 30], "summary": {"covered_lines": 8, "num_statements": 9, "percent_covered": 84.61538461538461, "percent_covered_display": "85", "missing_lines": 1, "excluded_lines": 0, "num_branches": 4, "num_partial_branches": 1, "covered_branches": 3, "missing_branches": 1}, "missing_lines": [18], "excluded_lines": [], "executed_branches": [[14, 15], [14, 17], [17, 20]], "missing_branches": [[17, 18]]}, "_ol_preproc_fixed_effects.impl": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 4, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [25, 26, 27, 28], "excluded_lines": [], "executed_branches": [], "missing_branches": []}, "detect_singletons": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 32, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 32, "excluded_lines": 0, "num_branches": 14, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 14}, "missing_lines": [66, 67, 69, 70, 72, 73, 75, 76, 78, 79, 81, 82, 83, 84, 85, 93, 94, 96, 97, 99, 100, 101, 102, 103, 104, 106, 108, 109, 111, 112, 113, 115], "excluded_lines": [], "executed_branches": [], "missing_branches": [[78, 79], [78, 108], [83, 84], [83, 96], [96, 97], [96, 99], [100, 101], [100, 106], [102, 100], [102, 103], [108, 75], [108, 109], [112, 113], [112, 115]]}, "": {"executed_lines": [1, 2, 3, 6, 10, 11, 33, 34], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [1, 2, 3, 6, 10, 11, 14, 15, 17, 20, 21, 22, 24, 30, 33, 34], "summary": {"covered_lines": 16, "num_statements": 54, "percent_covered": 26.38888888888889, "percent_covered_display": "26", "missing_lines": 38, "excluded_lines": 0, "num_branches": 18, "num_partial_branches": 1, "covered_branches": 3, "missing_branches": 15}, "missing_lines": [7, 18, 25, 26, 27, 28, 66, 67, 69, 70, 72, 73, 75, 76, 78, 79, 81, 82, 83, 84, 85, 93, 94, 96, 97, 99, 100, 101, 102, 103, 104, 106, 108, 109, 111, 112, 113, 115], "excluded_lines": [], "executed_branches": [[14, 15], [14, 17], [17, 20]], "missing_branches": [[17, 18], [78, 79], [78, 108], [83, 84], [83, 96], [96, 97], [96, 99], [100, 101], [100, 106], [102, 100], [102, 103], [108, 75], [108, 109], [112, 113], [112, 115]]}}}, "pyfixest/estimation/detect_singletons_jax.py": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 59, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 59, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [1, 3, 4, 5, 8, 9, 14, 15, 16, 19, 22, 23, 24, 25, 27, 28, 29, 31, 36, 37, 40, 41, 42, 43, 44, 46, 52, 54, 55, 58, 60, 64, 69, 86, 87, 90, 93, 94, 96, 97, 100, 101, 102, 104, 105, 106, 109, 111, 112, 113, 116, 126, 128, 129, 130, 131, 133, 135, 137], "excluded_lines": [], "executed_branches": [], "missing_branches": [], "functions": {"_process_features_jax": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 2, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [14, 64], "excluded_lines": [], "executed_branches": [], "missing_branches": []}, "_process_features_jax.process_feature": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 8, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 8, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [15, 16, 19, 22, 31, 36, 40, 60], "excluded_lines": [], "executed_branches": [], "missing_branches": []}, "_process_features_jax.process_feature.count_loop": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 6, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 6, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [23, 24, 25, 27, 28, 29], "excluded_lines": [], "executed_branches": [], "missing_branches": []}, "_process_features_jax.process_feature.no_singletons": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [37], "excluded_lines": [], "executed_branches": [], "missing_branches": []}, "_process_features_jax.process_feature.update_singletons": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 4, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [41, 54, 55, 58], "excluded_lines": [], "executed_branches": [], "missing_branches": []}, "_process_features_jax.process_feature.update_singletons.update_loop": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 5, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 5, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [42, 43, 44, 46, 52], "excluded_lines": [], "executed_branches": [], "missing_branches": []}, "detect_singletons_jax": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 13, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 13, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [86, 87, 90, 93, 94, 96, 97, 116, 126, 128, 129, 135, 137], "excluded_lines": [], "executed_branches": [], "missing_branches": []}, "detect_singletons_jax._singleton_detection_loop": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 5, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 5, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [100, 104, 111, 112, 113], "excluded_lines": [], "executed_branches": [], "missing_branches": []}, "detect_singletons_jax._singleton_detection_loop.cond_fun": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 2, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [101, 102], "excluded_lines": [], "executed_branches": [], "missing_branches": []}, "detect_singletons_jax._singleton_detection_loop.body_fun": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 3, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [105, 106, 109], "excluded_lines": [], "executed_branches": [], "missing_branches": []}, "detect_singletons_jax._mark_non_singletons": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 2, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [130, 133], "excluded_lines": [], "executed_branches": [], "missing_branches": []}, "detect_singletons_jax._mark_non_singletons.mark_non_singleton": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [131], "excluded_lines": [], "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 7, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 7, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [1, 3, 4, 5, 8, 9, 69], "excluded_lines": [], "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 59, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 59, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [1, 3, 4, 5, 8, 9, 14, 15, 16, 19, 22, 23, 24, 25, 27, 28, 29, 31, 36, 37, 40, 41, 42, 43, 44, 46, 52, 54, 55, 58, 60, 64, 69, 86, 87, 90, 93, 94, 96, 97, 100, 101, 102, 104, 105, 106, 109, 111, 112, 113, 116, 126, 128, 129, 130, 131, 133, 135, 137], "excluded_lines": [], "executed_branches": [], "missing_branches": []}}}, "pyfixest/estimation/estimation.py": {"executed_lines": [1, 2, 4, 6, 7, 8, 9, 18, 19, 20, 23, 459, 460, 461, 463, 485, 501, 503, 515, 523, 524, 526, 529, 710, 711, 712, 713, 714, 716, 739, 755, 765, 766, 770, 781, 784, 787, 977, 982, 983, 984, 985, 987, 988, 990, 992, 1015, 1032, 1042, 1047, 1057, 1060, 1063, 1211, 1212, 1213, 1215, 1216, 1218, 1220, 1221, 1222, 1223, 1224, 1226, 1229, 1231, 1254, 1273, 1286, 1291, 1301, 1302, 1304, 1307, 1329, 1330, 1331, 1332, 1333, 1334, 1335, 1336, 1337, 1338, 1340, 1341, 1342, 1343, 1344, 1347, 1348, 1351, 1352, 1354, 1355, 1356, 1357, 1359, 1360, 1365, 1366, 1372, 1373, 1380, 1386, 1394, 1395, 1403, 1405, 1406, 1410, 1411, 1412, 1414, 1415, 1417, 1418, 1420, 1421, 1423, 1424, 1426, 1427, 1434, 1435, 1437, 1438, 1440, 1441, 1442, 1446, 1447, 1451, 1453, 1454, 1459, 1460, 1464, 1465, 1466, 1469, 1470, 1474, 1475, 1476, 1479, 1480, 1485, 1487, 1488, 1489, 1491, 1495, 1497, 1498, 1501, 1504], "summary": {"covered_lines": 156, "num_statements": 168, "percent_covered": 91.25874125874125, "percent_covered_display": "91", "missing_lines": 12, "excluded_lines": 4, "num_branches": 118, "num_partial_branches": 13, "covered_branches": 105, "missing_branches": 13}, "missing_lines": [782, 978, 1058, 1227, 1345, 1381, 1387, 1404, 1492, 1496, 1502, 1505], "excluded_lines": [766, 1043, 1287, 1406], "executed_branches": [[459, 460], [459, 461], [523, 524], [523, 526], [710, 711], [710, 712], [712, 713], [712, 714], [781, 784], [977, 982], [982, 983], [984, 985], [984, 987], [1057, 1060], [1215, 1216], [1215, 1218], [1226, 1229], [1301, 1302], [1301, 1304], [1329, 1330], [1329, 1331], [1331, 1332], [1331, 1333], [1333, 1334], [1333, 1335], [1335, 1336], [1335, 1337], [1337, 1338], [1337, 1340], [1340, 1341], [1340, 1342], [1342, 1343], [1342, 1344], [1344, 1347], [1347, 1348], [1347, 1351], [1351, 1352], [1351, 1354], [1355, 1356], [1355, 1359], [1356, 1355], [1356, 1357], [1359, 1360], [1359, 1365], [1365, 1366], [1365, 1372], [1372, 1373], [1372, 1380], [1380, 1386], [1386, 1394], [1394, 1395], [1394, 1403], [1403, 1405], [1410, 1411], [1410, 1417], [1411, 1412], [1411, 1414], [1414, 1415], [1414, 1417], [1417, 1418], [1417, 1420], [1420, 1421], [1420, 1423], [1423, 1424], [1423, 1426], [1426, 1427], [1426, 1434], [1434, 1435], [1434, 1437], [1437, 1438], [1437, 1440], [1440, 1441], [1440, 1451], [1441, 1442], [1441, 1446], [1446, 1447], [1446, 1451], [1451, -1307], [1451, 1453], [1453, 1454], [1453, 1459], [1459, 1460], [1459, 1464], [1464, 1465], [1464, 1474], [1465, 1466], [1465, 1469], [1469, 1470], [1469, 1474], [1474, -1307], [1474, 1475], [1475, 1476], [1475, 1479], [1479, -1307], [1479, 1480], [1487, 1488], [1487, 1495], [1488, 1489], [1488, 1491], [1491, 1501], [1495, 1497], [1497, 1498], [1497, 1501], [1501, 1504], [1504, -1485]], "missing_branches": [[781, 782], [977, 978], [982, 984], [1057, 1058], [1226, 1227], [1344, 1345], [1380, 1381], [1386, 1387], [1403, 1404], [1491, 1492], [1495, 1496], [1501, 1502], [1504, 1505]], "functions": {"feols": {"executed_lines": [459, 460, 461, 463, 485, 501, 503, 515, 523, 524, 526], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [[459, 460], [459, 461], [523, 524], [523, 526]], "missing_branches": []}, "fepois": {"executed_lines": [710, 711, 712, 713, 714, 716, 739, 755, 765, 766, 770, 781, 784], "summary": {"covered_lines": 12, "num_statements": 13, "percent_covered": 89.47368421052632, "percent_covered_display": "89", "missing_lines": 1, "excluded_lines": 1, "num_branches": 6, "num_partial_branches": 1, "covered_branches": 5, "missing_branches": 1}, "missing_lines": [782], "excluded_lines": [766], "executed_branches": [[710, 711], [710, 712], [712, 713], [712, 714], [781, 784]], "missing_branches": [[781, 782]]}, "feglm": {"executed_lines": [977, 982, 983, 984, 985, 987, 988, 990, 992, 1015, 1032, 1042, 1047, 1057, 1060], "summary": {"covered_lines": 15, "num_statements": 17, "percent_covered": 80.0, "percent_covered_display": "80", "missing_lines": 2, "excluded_lines": 1, "num_branches": 8, "num_partial_branches": 3, "covered_branches": 5, "missing_branches": 3}, "missing_lines": [978, 1058], "excluded_lines": [1043], "executed_branches": [[977, 982], [982, 983], [984, 985], [984, 987], [1057, 1060]], "missing_branches": [[977, 978], [982, 984], [1057, 1058]]}, "quantreg": {"executed_lines": [1211, 1212, 1213, 1215, 1216, 1218, 1220, 1221, 1222, 1223, 1224, 1226, 1229, 1231, 1254, 1273, 1286, 1291, 1301, 1302, 1304], "summary": {"covered_lines": 21, "num_statements": 22, "percent_covered": 92.85714285714286, "percent_covered_display": "93", "missing_lines": 1, "excluded_lines": 1, "num_branches": 6, "num_partial_branches": 1, "covered_branches": 5, "missing_branches": 1}, "missing_lines": [1227], "excluded_lines": [1287], "executed_branches": [[1215, 1216], [1215, 1218], [1226, 1229], [1301, 1302], [1301, 1304]], "missing_branches": [[1226, 1227]]}, "_estimation_input_checks": {"executed_lines": [1329, 1330, 1331, 1332, 1333, 1334, 1335, 1336, 1337, 1338, 1340, 1341, 1342, 1343, 1344, 1347, 1348, 1351, 1352, 1354, 1355, 1356, 1357, 1359, 1360, 1365, 1366, 1372, 1373, 1380, 1386, 1394, 1395, 1403, 1405, 1406, 1410, 1411, 1412, 1414, 1415, 1417, 1418, 1420, 1421, 1423, 1424, 1426, 1427, 1434, 1435, 1437, 1438, 1440, 1441, 1442, 1446, 1447, 1451, 1453, 1454, 1459, 1460, 1464, 1465, 1466, 1469, 1470, 1474, 1475, 1476, 1479, 1480], "summary": {"covered_lines": 72, "num_statements": 76, "percent_covered": 94.87179487179488, "percent_covered_display": "95", "missing_lines": 4, "excluded_lines": 1, "num_branches": 80, "num_partial_branches": 4, "covered_branches": 76, "missing_branches": 4}, "missing_lines": [1345, 1381, 1387, 1404], "excluded_lines": [1406], "executed_branches": [[1329, 1330], [1329, 1331], [1331, 1332], [1331, 1333], [1333, 1334], [1333, 1335], [1335, 1336], [1335, 1337], [1337, 1338], [1337, 1340], [1340, 1341], [1340, 1342], [1342, 1343], [1342, 1344], [1344, 1347], [1347, 1348], [1347, 1351], [1351, 1352], [1351, 1354], [1355, 1356], [1355, 1359], [1356, 1355], [1356, 1357], [1359, 1360], [1359, 1365], [1365, 1366], [1365, 1372], [1372, 1373], [1372, 1380], [1380, 1386], [1386, 1394], [1394, 1395], [1394, 1403], [1403, 1405], [1410, 1411], [1410, 1417], [1411, 1412], [1411, 1414], [1414, 1415], [1414, 1417], [1417, 1418], [1417, 1420], [1420, 1421], [1420, 1423], [1423, 1424], [1423, 1426], [1426, 1427], [1426, 1434], [1434, 1435], [1434, 1437], [1437, 1438], [1437, 1440], [1440, 1441], [1440, 1451], [1441, 1442], [1441, 1446], [1446, 1447], [1446, 1451], [1451, -1307], [1451, 1453], [1453, 1454], [1453, 1459], [1459, 1460], [1459, 1464], [1464, 1465], [1464, 1474], [1465, 1466], [1465, 1469], [1469, 1470], [1469, 1474], [1474, -1307], [1474, 1475], [1475, 1476], [1475, 1479], [1479, -1307], [1479, 1480]], "missing_branches": [[1344, 1345], [1380, 1381], [1386, 1387], [1403, 1404]]}, "_quantreg_input_checks": {"executed_lines": [1487, 1488, 1489, 1491, 1495, 1497, 1498, 1501, 1504], "summary": {"covered_lines": 9, "num_statements": 13, "percent_covered": 70.37037037037037, "percent_covered_display": "70", "missing_lines": 4, "excluded_lines": 0, "num_branches": 14, "num_partial_branches": 4, "covered_branches": 10, "missing_branches": 4}, "missing_lines": [1492, 1496, 1502, 1505], "excluded_lines": [], "executed_branches": [[1487, 1488], [1487, 1495], [1488, 1489], [1488, 1491], [1491, 1501], [1495, 1497], [1497, 1498], [1497, 1501], [1501, 1504], [1504, -1485]], "missing_branches": [[1491, 1492], [1495, 1496], [1501, 1502], [1504, 1505]]}, "": {"executed_lines": [1, 2, 4, 6, 7, 8, 9, 18, 19, 20, 23, 529, 787, 1063, 1307, 1485], "summary": {"covered_lines": 16, "num_statements": 16, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [1, 2, 4, 6, 7, 8, 9, 18, 19, 20, 23, 459, 460, 461, 463, 485, 501, 503, 515, 523, 524, 526, 529, 710, 711, 712, 713, 714, 716, 739, 755, 765, 766, 770, 781, 784, 787, 977, 982, 983, 984, 985, 987, 988, 990, 992, 1015, 1032, 1042, 1047, 1057, 1060, 1063, 1211, 1212, 1213, 1215, 1216, 1218, 1220, 1221, 1222, 1223, 1224, 1226, 1229, 1231, 1254, 1273, 1286, 1291, 1301, 1302, 1304, 1307, 1329, 1330, 1331, 1332, 1333, 1334, 1335, 1336, 1337, 1338, 1340, 1341, 1342, 1343, 1344, 1347, 1348, 1351, 1352, 1354, 1355, 1356, 1357, 1359, 1360, 1365, 1366, 1372, 1373, 1380, 1386, 1394, 1395, 1403, 1405, 1406, 1410, 1411, 1412, 1414, 1415, 1417, 1418, 1420, 1421, 1423, 1424, 1426, 1427, 1434, 1435, 1437, 1438, 1440, 1441, 1442, 1446, 1447, 1451, 1453, 1454, 1459, 1460, 1464, 1465, 1466, 1469, 1470, 1474, 1475, 1476, 1479, 1480, 1485, 1487, 1488, 1489, 1491, 1495, 1497, 1498, 1501, 1504], "summary": {"covered_lines": 156, "num_statements": 168, "percent_covered": 91.25874125874125, "percent_covered_display": "91", "missing_lines": 12, "excluded_lines": 4, "num_branches": 118, "num_partial_branches": 13, "covered_branches": 105, "missing_branches": 13}, "missing_lines": [782, 978, 1058, 1227, 1345, 1381, 1387, 1404, 1492, 1496, 1502, 1505], "excluded_lines": [766, 1043, 1287, 1406], "executed_branches": [[459, 460], [459, 461], [523, 524], [523, 526], [710, 711], [710, 712], [712, 713], [712, 714], [781, 784], [977, 982], [982, 983], [984, 985], [984, 987], [1057, 1060], [1215, 1216], [1215, 1218], [1226, 1229], [1301, 1302], [1301, 1304], [1329, 1330], [1329, 1331], [1331, 1332], [1331, 1333], [1333, 1334], [1333, 1335], [1335, 1336], [1335, 1337], [1337, 1338], [1337, 1340], [1340, 1341], [1340, 1342], [1342, 1343], [1342, 1344], [1344, 1347], [1347, 1348], [1347, 1351], [1351, 1352], [1351, 1354], [1355, 1356], [1355, 1359], [1356, 1355], [1356, 1357], [1359, 1360], [1359, 1365], [1365, 1366], [1365, 1372], [1372, 1373], [1372, 1380], [1380, 1386], [1386, 1394], [1394, 1395], [1394, 1403], [1403, 1405], [1410, 1411], [1410, 1417], [1411, 1412], [1411, 1414], [1414, 1415], [1414, 1417], [1417, 1418], [1417, 1420], [1420, 1421], [1420, 1423], [1423, 1424], [1423, 1426], [1426, 1427], [1426, 1434], [1434, 1435], [1434, 1437], [1437, 1438], [1437, 1440], [1440, 1441], [1440, 1451], [1441, 1442], [1441, 1446], [1446, 1447], [1446, 1451], [1451, -1307], [1451, 1453], [1453, 1454], [1453, 1459], [1459, 1460], [1459, 1464], [1464, 1465], [1464, 1474], [1465, 1466], [1465, 1469], [1469, 1470], [1469, 1474], [1474, -1307], [1474, 1475], [1475, 1476], [1475, 1479], [1479, -1307], [1479, 1480], [1487, 1488], [1487, 1495], [1488, 1489], [1488, 1491], [1491, 1501], [1495, 1497], [1497, 1498], [1497, 1501], [1501, 1504], [1504, -1485]], "missing_branches": [[781, 782], [977, 978], [982, 984], [1057, 1058], [1226, 1227], [1344, 1345], [1380, 1381], [1386, 1387], [1403, 1404], [1491, 1492], [1495, 1496], [1501, 1502], [1504, 1505]]}}}, "pyfixest/estimation/fegaussian_.py": {"executed_lines": [1, 2, 4, 5, 7, 8, 11, 12, 14, 44, 68, 70, 71, 73, 74, 76, 79, 82, 83, 85, 88, 89, 91, 94, 95, 97, 100], "summary": {"covered_lines": 26, "num_statements": 30, "percent_covered": 86.66666666666667, "percent_covered_display": "87", "missing_lines": 4, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [77, 80, 86, 92], "excluded_lines": [], "executed_branches": [], "missing_branches": [], "functions": {"Fegaussian.__init__": {"executed_lines": [44, 68], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": []}, "Fegaussian._check_dependent_variable": {"executed_lines": [71], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": []}, "Fegaussian._get_deviance": {"executed_lines": [74], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": []}, "Fegaussian._get_dispersion_phi": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [77], "excluded_lines": [], "executed_branches": [], "missing_branches": []}, "Fegaussian._get_b": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [80], "excluded_lines": [], "executed_branches": [], "missing_branches": []}, "Fegaussian._get_mu": {"executed_lines": [83], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": []}, "Fegaussian._get_link": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [86], "excluded_lines": [], "executed_branches": [], "missing_branches": []}, "Fegaussian._update_detadmu": {"executed_lines": [89], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": []}, "Fegaussian._get_theta": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [92], "excluded_lines": [], "executed_branches": [], "missing_branches": []}, "Fegaussian._get_V": {"executed_lines": [95], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": []}, "Fegaussian._get_score": {"executed_lines": [100], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [1, 2, 4, 5, 7, 8, 11, 12, 14, 70, 73, 76, 79, 82, 85, 88, 91, 94, 97], "summary": {"covered_lines": 18, "num_statements": 18, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": []}}, "classes": {"Fegaussian": {"executed_lines": [44, 68, 71, 74, 83, 89, 95, 100], "summary": {"covered_lines": 8, "num_statements": 12, "percent_covered": 66.66666666666667, "percent_covered_display": "67", "missing_lines": 4, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [77, 80, 86, 92], "excluded_lines": [], "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [1, 2, 4, 5, 7, 8, 11, 12, 14, 70, 73, 76, 79, 82, 85, 88, 91, 94, 97], "summary": {"covered_lines": 18, "num_statements": 18, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": []}}}, "pyfixest/estimation/feglm_.py": {"executed_lines": [1, 2, 3, 5, 6, 8, 11, 12, 13, 14, 15, 18, 19, 21, 51, 72, 78, 79, 80, 81, 83, 84, 85, 86, 87, 89, 90, 91, 93, 95, 97, 99, 100, 103, 104, 118, 128, 130, 135, 140, 150, 151, 152, 153, 154, 156, 157, 158, 160, 167, 168, 171, 172, 175, 176, 177, 182, 192, 198, 200, 215, 216, 217, 220, 221, 224, 225, 227, 228, 234, 235, 237, 239, 240, 241, 242, 244, 245, 247, 250, 251, 253, 259, 261, 263, 265, 267, 271, 273, 275, 277, 281, 284, 286, 296, 298, 301, 302, 304, 314, 315, 325, 333, 334, 336, 337, 345, 347, 363, 364, 366, 367, 368, 376, 377, 378, 379, 380, 381, 382, 383, 384, 388, 391, 393, 453, 454, 458, 459, 460, 464, 466, 467, 470, 471, 476, 477, 481, 482, 486, 487, 491, 492, 496, 497, 501, 502, 506, 507, 511, 512, 517, 518, 520, 522, 524, 526], "summary": {"covered_lines": 154, "num_statements": 190, "percent_covered": 76.06837606837607, "percent_covered_display": "76", "missing_lines": 36, "excluded_lines": 2, "num_branches": 44, "num_partial_branches": 16, "covered_branches": 24, "missing_branches": 20}, "missing_lines": [109, 119, 120, 121, 122, 123, 125, 126, 136, 137, 138, 248, 257, 299, 317, 320, 321, 323, 338, 386, 389, 468, 474, 479, 484, 489, 494, 499, 504, 509, 514, 519, 521, 523, 525, 527], "excluded_lines": [100, 454], "executed_branches": [[104, 118], [118, -95], [135, -128], [156, 157], [157, 158], [157, 160], [167, 168], [167, 171], [224, 225], [247, -140], [314, 315], [333, 334], [333, 336], [337, 345], [366, 367], [378, 379], [388, 391], [459, 460], [459, 464], [518, 520], [520, 522], [522, 524], [524, 526], [526, -517]], "missing_branches": [[104, 109], [118, 119], [135, 136], [137, -128], [137, 138], [156, 215], [224, 227], [247, 248], [314, 317], [320, 321], [320, 323], [337, 338], [366, 388], [378, 386], [388, 389], [518, 519], [520, 521], [522, 523], [524, 525], [526, 527]], "functions": {"Feglm.__init__": {"executed_lines": [51, 72, 78, 79, 80, 81, 83, 84, 85, 86, 87, 89, 90, 91, 93], "summary": {"covered_lines": 15, "num_statements": 15, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": []}, "Feglm.prepare_model_matrix": {"executed_lines": [97, 99, 100, 103, 104, 118], "summary": {"covered_lines": 5, "num_statements": 13, "percent_covered": 41.1764705882353, "percent_covered_display": "41", "missing_lines": 8, "excluded_lines": 1, "num_branches": 4, "num_partial_branches": 2, "covered_branches": 2, "missing_branches": 2}, "missing_lines": [109, 119, 120, 121, 122, 123, 125, 126], "excluded_lines": [100], "executed_branches": [[104, 118], [118, -95]], "missing_branches": [[104, 109], [118, 119]]}, "Feglm.to_array": {"executed_lines": [130, 135], "summary": {"covered_lines": 2, "num_statements": 5, "percent_covered": 33.333333333333336, "percent_covered_display": "33", "missing_lines": 3, "excluded_lines": 0, "num_branches": 4, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 3}, "missing_lines": [136, 137, 138], "excluded_lines": [], "executed_branches": [[135, -128]], "missing_branches": [[135, 136], [137, -128], [137, 138]]}, "Feglm.get_fit": {"executed_lines": [150, 151, 152, 153, 154, 156, 157, 158, 160, 167, 168, 171, 172, 175, 176, 177, 182, 192, 198, 200, 215, 216, 217, 220, 221, 224, 225, 227, 228, 234, 235, 237, 239, 240, 241, 242, 244, 245, 247], "summary": {"covered_lines": 39, "num_statements": 40, "percent_covered": 92.0, "percent_covered_display": "92", "missing_lines": 1, "excluded_lines": 0, "num_branches": 10, "num_partial_branches": 3, "covered_branches": 7, "missing_branches": 3}, "missing_lines": [248], "excluded_lines": [], "executed_branches": [[156, 157], [157, 158], [157, 160], [167, 168], [167, 171], [224, 225], [247, -140]], "missing_branches": [[156, 215], [224, 227], [247, 248]]}, "Feglm._vcov_iid": {"executed_lines": [251], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": []}, "Feglm._update_v": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [257], "excluded_lines": [], "executed_branches": [], "missing_branches": []}, "Feglm._update_W": {"executed_lines": [261], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": []}, "Feglm._update_W_tilde": {"executed_lines": [265], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": []}, "Feglm._update_v_tilde": {"executed_lines": [271], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": []}, "Feglm._update_X_tilde": {"executed_lines": [275], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": []}, "Feglm._update_beta_diff": {"executed_lines": [281, 284], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": []}, "Feglm._update_eta": {"executed_lines": [296], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": []}, "Feglm._get_gradient": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [299], "excluded_lines": [], "executed_branches": [], "missing_branches": []}, "Feglm._get_diff": {"executed_lines": [302], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": []}, "Feglm.residualize": {"executed_lines": [314, 315], "summary": {"covered_lines": 2, "num_statements": 6, "percent_covered": 30.0, "percent_covered_display": "30", "missing_lines": 4, "excluded_lines": 0, "num_branches": 4, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 3}, "missing_lines": [317, 320, 321, 323], "excluded_lines": [], "executed_branches": [[314, 315]], "missing_branches": [[314, 317], [320, 321], [320, 323]]}, "Feglm._check_convergence": {"executed_lines": [333, 334, 336, 337, 345], "summary": {"covered_lines": 5, "num_statements": 6, "percent_covered": 80.0, "percent_covered_display": "80", "missing_lines": 1, "excluded_lines": 0, "num_branches": 4, "num_partial_branches": 1, "covered_branches": 3, "missing_branches": 1}, "missing_lines": [338], "excluded_lines": [], "executed_branches": [[333, 334], [333, 336], [337, 345]], "missing_branches": [[337, 338]]}, "Feglm._update_eta_step_halfing": {"executed_lines": [363, 364, 366, 367, 368, 376, 377, 378, 379, 380, 381, 382, 383, 384, 388, 391], "summary": {"covered_lines": 16, "num_statements": 18, "percent_covered": 79.16666666666667, "percent_covered_display": "79", "missing_lines": 2, "excluded_lines": 0, "num_branches": 6, "num_partial_branches": 3, "covered_branches": 3, "missing_branches": 3}, "missing_lines": [386, 389], "excluded_lines": [], "executed_branches": [[366, 367], [378, 379], [388, 391]], "missing_branches": [[366, 388], [378, 386], [388, 389]]}, "Feglm.predict": {"executed_lines": [453, 454, 458, 459, 460, 464], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 1, "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [454], "executed_branches": [[459, 460], [459, 464]], "missing_branches": []}, "Feglm._check_dependent_variable": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [468], "excluded_lines": [], "executed_branches": [], "missing_branches": []}, "Feglm._get_score": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [474], "excluded_lines": [], "executed_branches": [], "missing_branches": []}, "Feglm._get_deviance": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [479], "excluded_lines": [], "executed_branches": [], "missing_branches": []}, "Feglm._get_dispersion_phi": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [484], "excluded_lines": [], "executed_branches": [], "missing_branches": []}, "Feglm._get_b": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [489], "excluded_lines": [], "executed_branches": [], "missing_branches": []}, "Feglm._get_mu": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [494], "excluded_lines": [], "executed_branches": [], "missing_branches": []}, "Feglm._get_link": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [499], "excluded_lines": [], "executed_branches": [], "missing_branches": []}, "Feglm._update_detadmu": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [504], "excluded_lines": [], "executed_branches": [], "missing_branches": []}, "Feglm._get_theta": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [509], "excluded_lines": [], "executed_branches": [], "missing_branches": []}, "Feglm._get_V": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [514], "excluded_lines": [], "executed_branches": [], "missing_branches": []}, "_glm_input_checks": {"executed_lines": [518, 520, 522, 524, 526], "summary": {"covered_lines": 5, "num_statements": 10, "percent_covered": 50.0, "percent_covered_display": "50", "missing_lines": 5, "excluded_lines": 0, "num_branches": 10, "num_partial_branches": 5, "covered_branches": 5, "missing_branches": 5}, "missing_lines": [519, 521, 523, 525, 527], "excluded_lines": [], "executed_branches": [[518, 520], [520, 522], [522, 524], [524, 526], [526, -517]], "missing_branches": [[518, 519], [520, 521], [522, 523], [524, 525], [526, 527]]}, "": {"executed_lines": [1, 2, 3, 5, 6, 8, 11, 12, 13, 14, 15, 18, 19, 21, 95, 128, 140, 250, 253, 259, 263, 267, 273, 277, 286, 298, 301, 304, 325, 347, 393, 466, 467, 470, 471, 476, 477, 481, 482, 486, 487, 491, 492, 496, 497, 501, 502, 506, 507, 511, 512, 517], "summary": {"covered_lines": 51, "num_statements": 51, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": []}}, "classes": {"Feglm": {"executed_lines": [51, 72, 78, 79, 80, 81, 83, 84, 85, 86, 87, 89, 90, 91, 93, 97, 99, 100, 103, 104, 118, 130, 135, 150, 151, 152, 153, 154, 156, 157, 158, 160, 167, 168, 171, 172, 175, 176, 177, 182, 192, 198, 200, 215, 216, 217, 220, 221, 224, 225, 227, 228, 234, 235, 237, 239, 240, 241, 242, 244, 245, 247, 251, 261, 265, 271, 275, 281, 284, 296, 302, 314, 315, 333, 334, 336, 337, 345, 363, 364, 366, 367, 368, 376, 377, 378, 379, 380, 381, 382, 383, 384, 388, 391, 453, 454, 458, 459, 460, 464], "summary": {"covered_lines": 98, "num_statements": 129, "percent_covered": 71.77914110429448, "percent_covered_display": "72", "missing_lines": 31, "excluded_lines": 2, "num_branches": 34, "num_partial_branches": 11, "covered_branches": 19, "missing_branches": 15}, "missing_lines": [109, 119, 120, 121, 122, 123, 125, 126, 136, 137, 138, 248, 257, 299, 317, 320, 321, 323, 338, 386, 389, 468, 474, 479, 484, 489, 494, 499, 504, 509, 514], "excluded_lines": [100, 454], "executed_branches": [[104, 118], [118, -95], [135, -128], [156, 157], [157, 158], [157, 160], [167, 168], [167, 171], [224, 225], [247, -140], [314, 315], [333, 334], [333, 336], [337, 345], [366, 367], [378, 379], [388, 391], [459, 460], [459, 464]], "missing_branches": [[104, 109], [118, 119], [135, 136], [137, -128], [137, 138], [156, 215], [224, 227], [247, 248], [314, 317], [320, 321], [320, 323], [337, 338], [366, 388], [378, 386], [388, 389]]}, "": {"executed_lines": [1, 2, 3, 5, 6, 8, 11, 12, 13, 14, 15, 18, 19, 21, 95, 128, 140, 250, 253, 259, 263, 267, 273, 277, 286, 298, 301, 304, 325, 347, 393, 466, 467, 470, 471, 476, 477, 481, 482, 486, 487, 491, 492, 496, 497, 501, 502, 506, 507, 511, 512, 517, 518, 520, 522, 524, 526], "summary": {"covered_lines": 56, "num_statements": 61, "percent_covered": 85.91549295774648, "percent_covered_display": "86", "missing_lines": 5, "excluded_lines": 0, "num_branches": 10, "num_partial_branches": 5, "covered_branches": 5, "missing_branches": 5}, "missing_lines": [519, 521, 523, 525, 527], "excluded_lines": [], "executed_branches": [[518, 520], [520, 522], [522, 524], [524, 526], [526, -517]], "missing_branches": [[518, 519], [520, 521], [522, 523], [524, 525], [526, 527]]}}}, "pyfixest/estimation/feiv_.py": {"executed_lines": [1, 2, 3, 4, 6, 7, 9, 10, 11, 12, 13, 16, 17, 137, 165, 187, 188, 189, 190, 191, 193, 195, 196, 197, 198, 199, 201, 203, 204, 205, 207, 209, 210, 211, 223, 224, 226, 228, 229, 241, 244, 245, 246, 247, 249, 250, 251, 252, 255, 256, 259, 260, 263, 264, 266, 269, 271, 272, 274, 275, 276, 281, 282, 283, 285, 288, 298, 300, 303, 308, 311, 316, 318, 399, 402, 405, 406, 410, 411, 420, 442, 444, 445, 450, 462, 463, 465, 466, 467, 468, 469, 471, 474], "summary": {"covered_lines": 92, "num_statements": 106, "percent_covered": 83.33333333333333, "percent_covered_display": "83", "missing_lines": 14, "excluded_lines": 0, "num_branches": 20, "num_partial_branches": 5, "covered_branches": 13, "missing_branches": 7}, "missing_lines": [314, 416, 418, 472, 478, 479, 480, 495, 496, 500, 503, 506, 512, 515], "excluded_lines": [], "executed_branches": [[196, -193], [196, 197], [210, 211], [210, 223], [275, 276], [275, 281], [281, 282], [281, 285], [298, 300], [405, 406], [410, 411], [444, 445], [471, -420]], "missing_branches": [[298, 314], [405, 418], [410, 416], [444, 471], [471, 472], [478, 479], [478, 495]], "functions": {"Feiv.__init__": {"executed_lines": [165, 187, 188, 189, 190, 191], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": []}, "Feiv.wls_transform": {"executed_lines": [195, 196, 197, 198, 199], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [[196, -193], [196, 197]], "missing_branches": []}, "Feiv.to_array": {"executed_lines": [203, 204, 205], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": []}, "Feiv.demean": {"executed_lines": [209, 210, 211, 223, 224], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [[210, 211], [210, 223]], "missing_branches": []}, "Feiv.drop_multicol_vars": {"executed_lines": [228, 229], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": []}, "Feiv.get_fit": {"executed_lines": [244, 245, 246, 247, 249, 250, 251, 252, 255, 256, 259, 260, 263, 264], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": []}, "Feiv.first_stage": {"executed_lines": [269, 271, 272, 274, 275, 276, 281, 282, 283, 285, 288, 298, 300, 303, 308, 311, 316], "summary": {"covered_lines": 17, "num_statements": 18, "percent_covered": 91.66666666666667, "percent_covered_display": "92", "missing_lines": 1, "excluded_lines": 0, "num_branches": 6, "num_partial_branches": 1, "covered_branches": 5, "missing_branches": 1}, "missing_lines": [314], "excluded_lines": [], "executed_branches": [[275, 276], [275, 281], [281, 282], [281, 285], [298, 300]], "missing_branches": [[298, 314]]}, "Feiv.IV_Diag": {"executed_lines": [399, 402, 405, 406, 410, 411], "summary": {"covered_lines": 6, "num_statements": 8, "percent_covered": 66.66666666666667, "percent_covered_display": "67", "missing_lines": 2, "excluded_lines": 0, "num_branches": 4, "num_partial_branches": 2, "covered_branches": 2, "missing_branches": 2}, "missing_lines": [416, 418], "excluded_lines": [], "executed_branches": [[405, 406], [410, 411]], "missing_branches": [[405, 418], [410, 416]]}, "Feiv.IV_weakness_test": {"executed_lines": [442, 444, 445, 450, 462, 463, 465, 466, 467, 468, 469, 471], "summary": {"covered_lines": 12, "num_statements": 13, "percent_covered": 82.3529411764706, "percent_covered_display": "82", "missing_lines": 1, "excluded_lines": 0, "num_branches": 4, "num_partial_branches": 2, "covered_branches": 2, "missing_branches": 2}, "missing_lines": [472], "excluded_lines": [], "executed_branches": [[444, 445], [471, -420]], "missing_branches": [[444, 471], [471, 472]]}, "Feiv.eff_F": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 10, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 10, "excluded_lines": 0, "num_branches": 2, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 2}, "missing_lines": [478, 479, 480, 495, 496, 500, 503, 506, 512, 515], "excluded_lines": [], "executed_branches": [], "missing_branches": [[478, 479], [478, 495]]}, "": {"executed_lines": [1, 2, 3, 4, 6, 7, 9, 10, 11, 12, 13, 16, 17, 137, 193, 201, 207, 226, 241, 266, 318, 420, 474], "summary": {"covered_lines": 22, "num_statements": 22, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": []}}, "classes": {"Feiv": {"executed_lines": [165, 187, 188, 189, 190, 191, 195, 196, 197, 198, 199, 203, 204, 205, 209, 210, 211, 223, 224, 228, 229, 244, 245, 246, 247, 249, 250, 251, 252, 255, 256, 259, 260, 263, 264, 269, 271, 272, 274, 275, 276, 281, 282, 283, 285, 288, 298, 300, 303, 308, 311, 316, 399, 402, 405, 406, 410, 411, 442, 444, 445, 450, 462, 463, 465, 466, 467, 468, 469, 471], "summary": {"covered_lines": 70, "num_statements": 84, "percent_covered": 79.8076923076923, "percent_covered_display": "80", "missing_lines": 14, "excluded_lines": 0, "num_branches": 20, "num_partial_branches": 5, "covered_branches": 13, "missing_branches": 7}, "missing_lines": [314, 416, 418, 472, 478, 479, 480, 495, 496, 500, 503, 506, 512, 515], "excluded_lines": [], "executed_branches": [[196, -193], [196, 197], [210, 211], [210, 223], [275, 276], [275, 281], [281, 282], [281, 285], [298, 300], [405, 406], [410, 411], [444, 445], [471, -420]], "missing_branches": [[298, 314], [405, 418], [410, 416], [444, 471], [471, 472], [478, 479], [478, 495]]}, "": {"executed_lines": [1, 2, 3, 4, 6, 7, 9, 10, 11, 12, 13, 16, 17, 137, 193, 201, 207, 226, 241, 266, 318, 420, 474], "summary": {"covered_lines": 22, "num_statements": 22, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": []}}}, "pyfixest/estimation/felogit_.py": {"executed_lines": [1, 2, 4, 5, 7, 8, 11, 12, 14, 44, 68, 70, 72, 73, 74, 75, 76, 78, 79, 81, 84, 87, 88, 90, 93, 94, 96, 99, 100, 102, 105], "summary": {"covered_lines": 30, "num_statements": 34, "percent_covered": 89.47368421052632, "percent_covered_display": "89", "missing_lines": 4, "excluded_lines": 0, "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0}, "missing_lines": [82, 85, 91, 97], "excluded_lines": [], "executed_branches": [[73, 74], [73, 75], [75, -70], [75, 76]], "missing_branches": [], "functions": {"Felogit.__init__": {"executed_lines": [44, 68], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": []}, "Felogit._check_dependent_variable": {"executed_lines": [72, 73, 74, 75, 76], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [[73, 74], [73, 75], [75, -70], [75, 76]], "missing_branches": []}, "Felogit._get_deviance": {"executed_lines": [79], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": []}, "Felogit._get_dispersion_phi": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [82], "excluded_lines": [], "executed_branches": [], "missing_branches": []}, "Felogit._get_b": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [85], "excluded_lines": [], "executed_branches": [], "missing_branches": []}, "Felogit._get_mu": {"executed_lines": [88], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": []}, "Felogit._get_link": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [91], "excluded_lines": [], "executed_branches": [], "missing_branches": []}, "Felogit._update_detadmu": {"executed_lines": [94], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": []}, "Felogit._get_theta": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [97], "excluded_lines": [], "executed_branches": [], "missing_branches": []}, "Felogit._get_V": {"executed_lines": [100], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": []}, "Felogit._get_score": {"executed_lines": [105], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [1, 2, 4, 5, 7, 8, 11, 12, 14, 70, 78, 81, 84, 87, 90, 93, 96, 99, 102], "summary": {"covered_lines": 18, "num_statements": 18, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": []}}, "classes": {"Felogit": {"executed_lines": [44, 68, 72, 73, 74, 75, 76, 79, 88, 94, 100, 105], "summary": {"covered_lines": 12, "num_statements": 16, "percent_covered": 80.0, "percent_covered_display": "80", "missing_lines": 4, "excluded_lines": 0, "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0}, "missing_lines": [82, 85, 91, 97], "excluded_lines": [], "executed_branches": [[73, 74], [73, 75], [75, -70], [75, 76]], "missing_branches": []}, "": {"executed_lines": [1, 2, 4, 5, 7, 8, 11, 12, 14, 70, 78, 81, 84, 87, 90, 93, 96, 99, 102], "summary": {"covered_lines": 18, "num_statements": 18, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": []}}}, "pyfixest/estimation/feols_.py": {"executed_lines": [1, 2, 3, 4, 5, 6, 7, 9, 10, 11, 12, 13, 14, 16, 17, 18, 19, 20, 21, 28, 29, 34, 41, 42, 53, 60, 66, 67, 70, 71, 245, 267, 268, 269, 274, 275, 276, 277, 279, 280, 282, 283, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 304, 305, 306, 307, 308, 309, 310, 311, 312, 316, 317, 318, 320, 322, 323, 327, 328, 329, 330, 333, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 347, 348, 349, 350, 351, 352, 353, 354, 355, 358, 359, 360, 361, 364, 367, 368, 369, 372, 373, 374, 375, 376, 379, 382, 383, 384, 385, 386, 387, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 402, 407, 408, 409, 411, 413, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 435, 436, 437, 439, 440, 442, 443, 446, 448, 449, 451, 461, 462, 463, 464, 465, 467, 469, 480, 482, 483, 485, 487, 489, 491, 492, 505, 507, 509, 514, 516, 517, 518, 519, 520, 522, 524, 525, 537, 538, 540, 541, 542, 544, 552, 553, 555, 556, 557, 559, 561, 563, 564, 567, 568, 570, 572, 605, 606, 607, 616, 618, 625, 630, 631, 634, 637, 641, 649, 650, 658, 659, 661, 663, 667, 675, 676, 677, 679, 680, 690, 691, 693, 695, 696, 704, 705, 706, 708, 709, 711, 715, 718, 721, 723, 724, 728, 733, 734, 736, 743, 744, 745, 746, 757, 761, 763, 764, 765, 767, 775, 776, 778, 779, 782, 784, 785, 789, 794, 795, 799, 804, 808, 812, 814, 816, 818, 819, 820, 822, 823, 824, 825, 826, 827, 833, 835, 840, 842, 844, 845, 846, 847, 848, 849, 850, 851, 852, 853, 854, 855, 857, 864, 871, 872, 874, 876, 877, 878, 881, 882, 885, 888, 892, 901, 904, 914, 915, 919, 920, 922, 924, 929, 930, 931, 933, 939, 944, 946, 948, 949, 952, 953, 956, 957, 958, 959, 961, 971, 973, 974, 975, 976, 978, 980, 981, 984, 985, 987, 989, 990, 997, 1005, 1007, 1008, 1009, 1010, 1012, 1014, 1034, 1035, 1037, 1038, 1040, 1041, 1042, 1044, 1045, 1047, 1048, 1050, 1106, 1107, 1109, 1110, 1112, 1113, 1134, 1135, 1136, 1137, 1139, 1201, 1204, 1205, 1208, 1209, 1211, 1212, 1217, 1218, 1220, 1221, 1222, 1223, 1224, 1225, 1228, 1229, 1231, 1232, 1234, 1236, 1237, 1238, 1239, 1243, 1246, 1249, 1251, 1252, 1253, 1254, 1255, 1256, 1257, 1258, 1262, 1264, 1266, 1357, 1358, 1362, 1363, 1367, 1368, 1372, 1374, 1376, 1379, 1380, 1383, 1385, 1387, 1392, 1397, 1398, 1404, 1405, 1409, 1414, 1417, 1418, 1419, 1420, 1422, 1423, 1425, 1426, 1427, 1428, 1429, 1430, 1431, 1434, 1436, 1438, 1447, 1453, 1454, 1455, 1456, 1457, 1458, 1459, 1461, 1462, 1466, 1467, 1469, 1471, 1481, 1483, 1484, 1486, 1488, 1538, 1541, 1542, 1545, 1546, 1547, 1548, 1550, 1551, 1555, 1556, 1560, 1561, 1562, 1563, 1564, 1568, 1571, 1572, 1576, 1577, 1580, 1582, 1584, 1586, 1587, 1588, 1589, 1590, 1592, 1593, 1594, 1595, 1598, 1599, 1600, 1602, 1604, 1605, 1607, 1608, 1610, 1611, 1612, 1624, 1626, 1627, 1629, 1630, 1631, 1633, 1634, 1635, 1636, 1637, 1638, 1639, 1640, 1642, 1651, 1653, 1655, 1656, 1658, 1675, 1693, 1694, 1695, 1696, 1697, 1698, 1703, 1704, 1705, 1706, 1709, 1710, 1711, 1713, 1715, 1717, 1818, 1819, 1821, 1822, 1824, 1825, 1829, 1830, 1834, 1836, 1837, 1838, 1840, 1842, 1851, 1853, 1857, 1858, 1860, 1861, 1862, 1863, 1864, 1866, 1868, 1870, 1871, 1872, 1873, 1874, 1876, 1878, 1892, 1899, 1900, 1902, 1904, 1906, 1933, 1935, 1936, 1937, 1942, 1945, 1952, 1953, 1955, 1956, 1957, 1959, 1960, 1963, 1964, 1965, 1968, 1969, 1970, 1971, 1973, 1974, 1976, 1977, 1978, 1979, 1981, 1983, 1984, 1985, 1987, 1988, 1989, 1990, 1992, 1993, 1995, 1996, 1997, 1999, 2001, 2055, 2060, 2061, 2062, 2066, 2067, 2071, 2072, 2073, 2075, 2080, 2081, 2083, 2088, 2089, 2091, 2100, 2101, 2106, 2112, 2116, 2117, 2119, 2128, 2129, 2133, 2154, 2155, 2157, 2159, 2160, 2161, 2162, 2164, 2166, 2167, 2168, 2169, 2170, 2172, 2173, 2174, 2175, 2177, 2199, 2200, 2201, 2202, 2203, 2208, 2221, 2223, 2232, 2234, 2243, 2245, 2254, 2256, 2265, 2267, 2336, 2337, 2338, 2339, 2341, 2342, 2343, 2344, 2345, 2347, 2348, 2350, 2352, 2353, 2354, 2356, 2357, 2358, 2360, 2362, 2363, 2364, 2365, 2367, 2370, 2374, 2381, 2383, 2385, 2394, 2396, 2472, 2473, 2475, 2476, 2481, 2482, 2484, 2485, 2487, 2491, 2492, 2500, 2501, 2504, 2506, 2508, 2509, 2510, 2512, 2513, 2516, 2518, 2520, 2521, 2527, 2529, 2530, 2533, 2541, 2542, 2544, 2557, 2558, 2559, 2561, 2574, 2582, 2583, 2584, 2585, 2587, 2597, 2598, 2599, 2600, 2601, 2603, 2604, 2606, 2608, 2623, 2624, 2632, 2633, 2635, 2639, 2660, 2664, 2665, 2666, 2667, 2668, 2669, 2670, 2671, 2672, 2673, 2674, 2675, 2677, 2680, 2712, 2745, 2746, 2748, 2749, 2751, 2752, 2758, 2759, 2760, 2761, 2762, 2763, 2767, 2769, 2776, 2777, 2784, 2785, 2787, 2790, 2811, 2812, 2813, 2817, 2820, 2821, 2823, 2828, 2829, 2843, 2848, 2851, 2876, 2877, 2878, 2879, 2881, 2882, 2883, 2887, 2888, 2889, 2890, 2891, 2892, 2893, 2894, 2895, 2898, 2899, 2902, 2903, 2904, 2906, 2907, 2908, 2910, 2911, 2912, 2914, 2917, 2926], "summary": {"covered_lines": 850, "num_statements": 899, "percent_covered": 92.43557772236076, "percent_covered_display": "92", "missing_lines": 49, "excluded_lines": 17, "num_branches": 304, "num_partial_branches": 26, "covered_branches": 262, "missing_branches": 42}, "missing_lines": [324, 325, 608, 609, 867, 1090, 1091, 1092, 1093, 1095, 1096, 1098, 1099, 1100, 1101, 1102, 1104, 1226, 1375, 1377, 1381, 1393, 1399, 1400, 1583, 1875, 1943, 2103, 2131, 2346, 2697, 2698, 2699, 2700, 2701, 2702, 2704, 2705, 2706, 2707, 2708, 2709, 2778, 2824, 2825, 2880, 2885, 2918, 2919], "excluded_lines": [403, 858, 925, 1364, 1368, 1388, 1405, 1410, 1551, 1938, 1946, 2056, 2062, 2067, 2476, 2521, 2661], "executed_branches": [[279, 280], [279, 282], [306, 307], [306, 308], [310, 311], [310, 312], [462, 463], [462, 464], [464, 465], [482, 483], [482, 485], [491, 492], [491, 505], [517, -514], [517, 518], [524, 525], [524, 537], [552, 553], [552, 555], [649, 650], [649, 663], [663, 667], [663, 679], [679, 680], [679, 695], [695, 696], [695, 708], [708, 709], [709, 711], [709, 718], [723, 724], [723, 728], [745, 746], [745, 761], [763, 764], [763, 812], [784, 785], [784, 789], [789, 794], [794, 795], [794, 799], [799, 804], [799, 808], [823, 824], [823, 825], [825, 826], [864, 871], [874, 876], [874, 901], [876, 877], [876, 888], [877, 878], [877, 881], [881, 882], [881, 885], [901, 904], [956, 957], [956, 971], [974, 975], [974, 978], [987, 989], [987, 1005], [1008, 1009], [1008, 1012], [1034, 1035], [1034, 1037], [1040, 1041], [1040, 1044], [1109, 1110], [1109, 1112], [1112, 1113], [1112, 1134], [1134, 1135], [1134, 1137], [1135, 1134], [1135, 1136], [1204, 1205], [1204, 1208], [1208, 1209], [1208, 1211], [1211, 1212], [1211, 1217], [1217, 1218], [1217, 1220], [1220, 1221], [1220, 1222], [1222, 1223], [1223, 1224], [1223, 1225], [1225, 1228], [1231, 1232], [1231, 1234], [1243, 1246], [1243, 1251], [1251, 1252], [1251, 1255], [1255, 1256], [1255, 1262], [1357, 1358], [1357, 1362], [1362, 1363], [1362, 1372], [1374, 1376], [1376, 1379], [1379, 1380], [1379, 1385], [1380, 1383], [1392, 1397], [1418, 1419], [1422, 1423], [1422, 1434], [1461, 1462], [1461, 1466], [1466, 1467], [1466, 1469], [1483, 1484], [1483, 1486], [1555, 1556], [1555, 1560], [1560, 1561], [1560, 1571], [1561, 1562], [1561, 1563], [1563, 1564], [1563, 1568], [1571, 1572], [1571, 1576], [1576, 1577], [1576, 1582], [1582, 1584], [1611, 1612], [1611, 1626], [1693, 1694], [1693, 1709], [1821, 1822], [1821, 1824], [1824, 1825], [1824, 1829], [1829, 1830], [1829, 1836], [1836, 1837], [1836, 1842], [1837, 1838], [1837, 1840], [1857, 1858], [1857, 1860], [1861, 1862], [1861, 1863], [1863, 1864], [1863, 1866], [1870, 1871], [1870, 1878], [1871, 1872], [1871, 1878], [1872, 1871], [1872, 1873], [1874, 1876], [1899, 1900], [1899, 1902], [1936, 1937], [1936, 1942], [1942, 1945], [1963, 1964], [1963, 1968], [1976, 1977], [1976, 1981], [1984, 1985], [1984, 1995], [1987, 1988], [1987, 1992], [1992, 1993], [2060, 2061], [2060, 2071], [2072, 2073], [2072, 2075], [2075, 2080], [2075, 2106], [2088, 2089], [2088, 2091], [2100, 2101], [2116, 2117], [2116, 2119], [2128, 2129], [2159, 2160], [2159, 2164], [2172, -2133], [2172, 2173], [2336, 2337], [2336, 2338], [2338, 2339], [2338, 2341], [2342, 2343], [2342, 2350], [2343, 2344], [2343, 2345], [2345, 2347], [2353, 2354], [2353, 2356], [2356, 2357], [2356, 2362], [2357, 2358], [2357, 2360], [2481, 2482], [2481, 2484], [2484, 2485], [2484, 2487], [2491, 2492], [2491, 2500], [2500, 2501], [2500, 2506], [2512, 2513], [2512, 2516], [2527, 2529], [2527, 2557], [2529, 2530], [2529, 2533], [2541, 2542], [2541, 2544], [2582, 2583], [2582, 2587], [2603, 2604], [2603, 2606], [2623, 2624], [2623, 2632], [2664, 2665], [2664, 2666], [2670, 2671], [2670, 2677], [2751, 2752], [2751, 2758], [2759, 2760], [2759, 2787], [2761, 2762], [2761, 2767], [2777, 2784], [2812, 2813], [2812, 2823], [2823, 2828], [2828, -2790], [2828, 2829], [2843, -2790], [2843, 2848], [2876, 2877], [2876, 2882], [2879, 2881], [2882, 2883], [2887, 2888], [2887, 2890], [2890, 2891], [2890, 2902], [2893, 2894], [2893, 2914], [2894, 2895], [2894, 2898], [2898, 2899], [2898, 2914], [2902, 2903], [2902, 2906], [2906, 2907], [2906, 2910], [2910, 2911], [2917, 2926]], "missing_branches": [[464, 467], [708, 814], [789, 763], [825, 833], [864, 867], [901, 919], [1095, 1096], [1095, 1098], [1100, 1101], [1100, 1104], [1222, 1228], [1225, 1226], [1374, 1375], [1376, 1377], [1380, 1381], [1392, 1393], [1418, 1420], [1582, 1583], [1874, 1875], [1942, 1943], [1992, 1984], [2100, 2103], [2128, 2131], [2345, 2346], [2697, 2698], [2697, 2699], [2699, 2700], [2699, 2701], [2701, 2702], [2701, 2704], [2704, 2705], [2704, 2706], [2706, 2707], [2706, 2708], [2708, -2680], [2708, 2709], [2777, 2778], [2823, 2824], [2879, 2880], [2882, 2885], [2910, 2914], [2917, 2918]], "functions": {"Feols.__init__": {"executed_lines": [267, 268, 269, 274, 275, 276, 277, 279, 280, 282, 283, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 304, 305, 306, 307, 308, 309, 310, 311, 312, 316, 317, 318, 320, 322, 323, 327, 328, 329, 330, 333, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 347, 348, 349, 350, 351, 352, 353, 354, 355, 358, 359, 360, 361, 364, 367, 368, 369, 372, 373, 374, 375, 376, 379, 382, 383, 384, 385, 386, 387, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 402, 407, 408, 409], "summary": {"covered_lines": 102, "num_statements": 104, "percent_covered": 98.18181818181819, "percent_covered_display": "98", "missing_lines": 2, "excluded_lines": 0, "num_branches": 6, "num_partial_branches": 0, "covered_branches": 6, "missing_branches": 0}, "missing_lines": [324, 325], "excluded_lines": [], "executed_branches": [[279, 280], [279, 282], [306, 307], [306, 308], [310, 311], [310, 312]], "missing_branches": []}, "Feols.__init__._not_implemented_did": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 1, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [403], "executed_branches": [], "missing_branches": []}, "Feols.prepare_model_matrix": {"executed_lines": [413, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 435, 436, 437, 439, 440, 442, 443, 446, 448, 449], "summary": {"covered_lines": 23, "num_statements": 23, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": []}, "Feols._set_nobs": {"executed_lines": [461, 462, 463, 464, 465, 467], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 90.0, "percent_covered_display": "90", "missing_lines": 0, "excluded_lines": 0, "num_branches": 4, "num_partial_branches": 1, "covered_branches": 3, "missing_branches": 1}, "missing_lines": [], "excluded_lines": [], "executed_branches": [[462, 463], [462, 464], [464, 465]], "missing_branches": [[464, 467]]}, "Feols._set_weights": {"executed_lines": [480, 482, 483, 485, 487], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [[482, 483], [482, 485]], "missing_branches": []}, "Feols.demean": {"executed_lines": [491, 492, 505], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [[491, 492], [491, 505]], "missing_branches": []}, "Feols.to_array": {"executed_lines": [509], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": []}, "Feols.wls_transform": {"executed_lines": [516, 517, 518, 519, 520], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [[517, -514], [517, 518]], "missing_branches": []}, "Feols.drop_multicol_vars": {"executed_lines": [524, 525, 537, 538], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [[524, 525], [524, 537]], "missing_branches": []}, "Feols._get_predictors": {"executed_lines": [541, 542], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": []}, "Feols.get_fit": {"executed_lines": [552, 553, 555, 556, 557, 559, 561, 563, 564, 567, 568, 570], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [[552, 553], [552, 555]], "missing_branches": []}, "Feols.vcov": {"executed_lines": [605, 606, 607, 616, 618, 625, 630, 631, 634, 637, 641, 649, 650, 658, 659, 661, 663, 667, 675, 676, 677, 679, 680, 690, 691, 693, 695, 696, 704, 705, 706, 708, 709, 711, 715, 718, 721, 723, 724, 728, 733, 734, 736, 743, 744, 745, 746, 757, 761, 763, 764, 765, 767, 775, 776, 778, 779, 782, 784, 785, 789, 794, 795, 799, 804, 808, 812, 814, 816], "summary": {"covered_lines": 69, "num_statements": 71, "percent_covered": 95.87628865979381, "percent_covered_display": "96", "missing_lines": 2, "excluded_lines": 0, "num_branches": 26, "num_partial_branches": 2, "covered_branches": 24, "missing_branches": 2}, "missing_lines": [608, 609], "excluded_lines": [], "executed_branches": [[649, 650], [649, 663], [663, 667], [663, 679], [679, 680], [679, 695], [695, 696], [695, 708], [708, 709], [709, 711], [709, 718], [723, 724], [723, 728], [745, 746], [745, 761], [763, 764], [763, 812], [784, 785], [784, 789], [789, 794], [794, 795], [794, 799], [799, 804], [799, 808]], "missing_branches": [[708, 814], [789, 763]]}, "Feols._vcov_iid": {"executed_lines": [819, 820], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": []}, "Feols._vcov_hetero": {"executed_lines": [823, 824, 825, 826, 827, 833, 835, 840, 842], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 92.3076923076923, "percent_covered_display": "92", "missing_lines": 0, "excluded_lines": 0, "num_branches": 4, "num_partial_branches": 1, "covered_branches": 3, "missing_branches": 1}, "missing_lines": [], "excluded_lines": [], "executed_branches": [[823, 824], [823, 825], [825, 826]], "missing_branches": [[825, 833]]}, "Feols._vcov_hac": {"executed_lines": [845, 846, 847, 848, 849, 850, 851, 852, 853, 854, 855, 857, 864, 871, 872, 874, 876, 877, 878, 881, 882, 885, 888, 892, 901, 904, 914, 915, 919, 920, 922], "summary": {"covered_lines": 31, "num_statements": 32, "percent_covered": 93.18181818181819, "percent_covered_display": "93", "missing_lines": 1, "excluded_lines": 1, "num_branches": 12, "num_partial_branches": 2, "covered_branches": 10, "missing_branches": 2}, "missing_lines": [867], "excluded_lines": [858], "executed_branches": [[864, 871], [874, 876], [874, 901], [876, 877], [876, 888], [877, 878], [877, 881], [881, 882], [881, 885], [901, 904]], "missing_branches": [[864, 867], [901, 919]]}, "Feols._vcov_nid": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 1, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [925], "executed_branches": [], "missing_branches": []}, "Feols._vcov_crv1": {"executed_lines": [930, 931, 933, 939, 944, 946], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": []}, "Feols._vcov_crv3_fast": {"executed_lines": [949, 952, 953, 956, 957, 958, 959, 961, 971, 973, 974, 975, 976, 978], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [[956, 957], [956, 971], [974, 975], [974, 978]], "missing_branches": []}, "Feols._vcov_crv3_slow": {"executed_lines": [981, 984, 985, 987, 989, 990, 997, 1005, 1007, 1008, 1009, 1010, 1012], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [[987, 989], [987, 1005], [1008, 1009], [1008, 1012]], "missing_branches": []}, "Feols.get_inference": {"executed_lines": [1034, 1035, 1037, 1038, 1040, 1041, 1042, 1044, 1045, 1047, 1048], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [[1034, 1035], [1034, 1037], [1040, 1041], [1040, 1044]], "missing_branches": []}, "Feols.add_fixest_multi_context": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 12, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 12, "excluded_lines": 0, "num_branches": 4, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 4}, "missing_lines": [1090, 1091, 1092, 1093, 1095, 1096, 1098, 1099, 1100, 1101, 1102, 1104], "excluded_lines": [], "executed_branches": [], "missing_branches": [[1095, 1096], [1095, 1098], [1100, 1101], [1100, 1104]]}, "Feols._clear_attributes": {"executed_lines": [1107, 1109, 1110, 1112, 1113, 1134, 1135, 1136, 1137], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 8, "num_partial_branches": 0, "covered_branches": 8, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [[1109, 1110], [1109, 1112], [1112, 1113], [1112, 1134], [1134, 1135], [1134, 1137], [1135, 1134], [1135, 1136]], "missing_branches": []}, "Feols.wald_test": {"executed_lines": [1201, 1204, 1205, 1208, 1209, 1211, 1212, 1217, 1218, 1220, 1221, 1222, 1223, 1224, 1225, 1228, 1229, 1231, 1232, 1234, 1236, 1237, 1238, 1239, 1243, 1246, 1249, 1251, 1252, 1253, 1254, 1255, 1256, 1257, 1258, 1262, 1264], "summary": {"covered_lines": 37, "num_statements": 38, "percent_covered": 95.16129032258064, "percent_covered_display": "95", "missing_lines": 1, "excluded_lines": 0, "num_branches": 24, "num_partial_branches": 2, "covered_branches": 22, "missing_branches": 2}, "missing_lines": [1226], "excluded_lines": [], "executed_branches": [[1204, 1205], [1204, 1208], [1208, 1209], [1208, 1211], [1211, 1212], [1211, 1217], [1217, 1218], [1217, 1220], [1220, 1221], [1220, 1222], [1222, 1223], [1223, 1224], [1223, 1225], [1225, 1228], [1231, 1232], [1231, 1234], [1243, 1246], [1243, 1251], [1251, 1252], [1251, 1255], [1255, 1256], [1255, 1262]], "missing_branches": [[1222, 1228], [1225, 1226]]}, "Feols.wildboottest": {"executed_lines": [1357, 1358, 1362, 1363, 1367, 1368, 1372, 1374, 1376, 1379, 1380, 1383, 1385, 1387, 1392, 1397, 1398, 1404, 1405, 1409, 1414, 1417, 1418, 1419, 1420, 1422, 1423, 1425, 1426, 1427, 1428, 1429, 1430, 1431, 1434, 1436, 1438, 1447, 1453, 1454, 1455, 1456, 1457, 1458, 1459, 1461, 1462, 1466, 1467, 1469, 1471, 1481, 1483, 1484, 1486], "summary": {"covered_lines": 53, "num_statements": 59, "percent_covered": 86.74698795180723, "percent_covered_display": "87", "missing_lines": 6, "excluded_lines": 5, "num_branches": 24, "num_partial_branches": 5, "covered_branches": 19, "missing_branches": 5}, "missing_lines": [1375, 1377, 1381, 1393, 1399, 1400], "excluded_lines": [1364, 1368, 1388, 1405, 1410], "executed_branches": [[1357, 1358], [1357, 1362], [1362, 1363], [1362, 1372], [1374, 1376], [1376, 1379], [1379, 1380], [1379, 1385], [1380, 1383], [1392, 1397], [1418, 1419], [1422, 1423], [1422, 1434], [1461, 1462], [1461, 1466], [1466, 1467], [1466, 1469], [1483, 1484], [1483, 1486]], "missing_branches": [[1374, 1375], [1376, 1377], [1380, 1381], [1392, 1393], [1418, 1420]]}, "Feols.ccv": {"executed_lines": [1538, 1541, 1542, 1545, 1546, 1547, 1548, 1550, 1551, 1555, 1556, 1560, 1561, 1562, 1563, 1564, 1568, 1571, 1572, 1576, 1577, 1580, 1582, 1584, 1586, 1587, 1588, 1589, 1590, 1592, 1593, 1594, 1595, 1598, 1599, 1600, 1602, 1604, 1605, 1607, 1608, 1610, 1611, 1612, 1624, 1626, 1627, 1629, 1630, 1631, 1633, 1634, 1635, 1636, 1637, 1638, 1639, 1640, 1642, 1651, 1653, 1655, 1656, 1658], "summary": {"covered_lines": 63, "num_statements": 64, "percent_covered": 97.5, "percent_covered_display": "98", "missing_lines": 1, "excluded_lines": 1, "num_branches": 16, "num_partial_branches": 1, "covered_branches": 15, "missing_branches": 1}, "missing_lines": [1583], "excluded_lines": [1551], "executed_branches": [[1555, 1556], [1555, 1560], [1560, 1561], [1560, 1571], [1561, 1562], [1561, 1563], [1563, 1564], [1563, 1568], [1571, 1572], [1571, 1576], [1576, 1577], [1576, 1582], [1582, 1584], [1611, 1612], [1611, 1626]], "missing_branches": [[1582, 1583]]}, "Feols._model_matrix_one_hot": {"executed_lines": [1693, 1694, 1695, 1696, 1697, 1698, 1703, 1704, 1705, 1706, 1709, 1710, 1711, 1713, 1715], "summary": {"covered_lines": 15, "num_statements": 15, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [[1693, 1694], [1693, 1709]], "missing_branches": []}, "Feols.decompose": {"executed_lines": [1818, 1819, 1821, 1822, 1824, 1825, 1829, 1830, 1834, 1836, 1837, 1838, 1840, 1842, 1851, 1853, 1857, 1858, 1860, 1861, 1862, 1863, 1864, 1866, 1868, 1870, 1871, 1872, 1873, 1874, 1876, 1878, 1892, 1899, 1900, 1902, 1904], "summary": {"covered_lines": 37, "num_statements": 38, "percent_covered": 96.875, "percent_covered_display": "97", "missing_lines": 1, "excluded_lines": 0, "num_branches": 26, "num_partial_branches": 1, "covered_branches": 25, "missing_branches": 1}, "missing_lines": [1875], "excluded_lines": [], "executed_branches": [[1821, 1822], [1821, 1824], [1824, 1825], [1824, 1829], [1829, 1830], [1829, 1836], [1836, 1837], [1836, 1842], [1837, 1838], [1837, 1840], [1857, 1858], [1857, 1860], [1861, 1862], [1861, 1863], [1863, 1864], [1863, 1866], [1870, 1871], [1870, 1878], [1871, 1872], [1871, 1878], [1872, 1871], [1872, 1873], [1874, 1876], [1899, 1900], [1899, 1902]], "missing_branches": [[1874, 1875]]}, "Feols.fixef": {"executed_lines": [1933, 1935, 1936, 1937, 1942, 1945, 1952, 1953, 1955, 1956, 1957, 1959, 1960, 1963, 1964, 1965, 1968, 1969, 1970, 1971, 1973, 1974, 1976, 1977, 1978, 1979, 1981, 1983, 1984, 1985, 1987, 1988, 1989, 1990, 1992, 1993, 1995, 1996, 1997, 1999], "summary": {"covered_lines": 40, "num_statements": 41, "percent_covered": 94.54545454545455, "percent_covered_display": "95", "missing_lines": 1, "excluded_lines": 2, "num_branches": 14, "num_partial_branches": 2, "covered_branches": 12, "missing_branches": 2}, "missing_lines": [1943], "excluded_lines": [1938, 1946], "executed_branches": [[1936, 1937], [1936, 1942], [1942, 1945], [1963, 1964], [1963, 1968], [1976, 1977], [1976, 1981], [1984, 1985], [1984, 1995], [1987, 1988], [1987, 1992], [1992, 1993]], "missing_branches": [[1942, 1943], [1992, 1984]]}, "Feols.predict": {"executed_lines": [2055, 2060, 2061, 2062, 2066, 2067, 2071, 2072, 2073, 2075, 2080, 2081, 2083, 2088, 2089, 2091, 2100, 2101, 2106, 2112, 2116, 2117, 2119, 2128, 2129], "summary": {"covered_lines": 23, "num_statements": 25, "percent_covered": 89.74358974358974, "percent_covered_display": "90", "missing_lines": 2, "excluded_lines": 3, "num_branches": 14, "num_partial_branches": 2, "covered_branches": 12, "missing_branches": 2}, "missing_lines": [2103, 2131], "excluded_lines": [2056, 2062, 2067], "executed_branches": [[2060, 2061], [2060, 2071], [2072, 2073], [2072, 2075], [2075, 2080], [2075, 2106], [2088, 2089], [2088, 2091], [2100, 2101], [2116, 2117], [2116, 2119], [2128, 2129]], "missing_branches": [[2100, 2103], [2128, 2131]]}, "Feols.get_performance": {"executed_lines": [2154, 2155, 2157, 2159, 2160, 2161, 2162, 2164, 2166, 2167, 2168, 2169, 2170, 2172, 2173, 2174, 2175], "summary": {"covered_lines": 17, "num_statements": 17, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [[2159, 2160], [2159, 2164], [2172, -2133], [2172, 2173]], "missing_branches": []}, "Feols.tidy": {"executed_lines": [2199, 2200, 2201, 2202, 2203, 2208, 2221], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": []}, "Feols.coef": {"executed_lines": [2232], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": []}, "Feols.se": {"executed_lines": [2243], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": []}, "Feols.tstat": {"executed_lines": [2254], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": []}, "Feols.pvalue": {"executed_lines": [2265], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": []}, "Feols.confint": {"executed_lines": [2336, 2337, 2338, 2339, 2341, 2342, 2343, 2344, 2345, 2347, 2348, 2350, 2352, 2353, 2354, 2356, 2357, 2358, 2360, 2362, 2363, 2364, 2365, 2367, 2370, 2374, 2381, 2383], "summary": {"covered_lines": 28, "num_statements": 29, "percent_covered": 95.55555555555556, "percent_covered_display": "96", "missing_lines": 1, "excluded_lines": 0, "num_branches": 16, "num_partial_branches": 1, "covered_branches": 15, "missing_branches": 1}, "missing_lines": [2346], "excluded_lines": [], "executed_branches": [[2336, 2337], [2336, 2338], [2338, 2339], [2338, 2341], [2342, 2343], [2342, 2350], [2343, 2344], [2343, 2345], [2345, 2347], [2353, 2354], [2353, 2356], [2356, 2357], [2356, 2362], [2357, 2358], [2357, 2360]], "missing_branches": [[2345, 2346]]}, "Feols.resid": {"executed_lines": [2394], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": []}, "Feols.ritest": {"executed_lines": [2472, 2473, 2475, 2476, 2481, 2482, 2484, 2485, 2487, 2491, 2492, 2500, 2501, 2504, 2506, 2508, 2509, 2510, 2512, 2513, 2516, 2518, 2520, 2521, 2527, 2529, 2530, 2533, 2541, 2542, 2544, 2557, 2558, 2559, 2561, 2574, 2582, 2583, 2584, 2585, 2587, 2597, 2598, 2599, 2600, 2601, 2603, 2604, 2606], "summary": {"covered_lines": 47, "num_statements": 47, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 2, "num_branches": 20, "num_partial_branches": 0, "covered_branches": 20, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [2476, 2521], "executed_branches": [[2481, 2482], [2481, 2484], [2484, 2485], [2484, 2487], [2491, 2492], [2491, 2500], [2500, 2501], [2500, 2506], [2512, 2513], [2512, 2516], [2527, 2529], [2527, 2557], [2529, 2530], [2529, 2533], [2541, 2542], [2541, 2544], [2582, 2583], [2582, 2587], [2603, 2604], [2603, 2606]], "missing_branches": []}, "Feols.plot_ritest": {"executed_lines": [2623, 2624, 2632, 2633, 2635], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [[2623, 2624], [2623, 2632]], "missing_branches": []}, "Feols.update": {"executed_lines": [2660, 2664, 2665, 2666, 2667, 2668, 2669, 2670, 2671, 2672, 2673, 2674, 2675, 2677], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 1, "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [2661], "executed_branches": [[2664, 2665], [2664, 2666], [2670, 2671], [2670, 2677]], "missing_branches": []}, "_feols_input_checks": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 12, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 12, "excluded_lines": 0, "num_branches": 12, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 12}, "missing_lines": [2697, 2698, 2699, 2700, 2701, 2702, 2704, 2705, 2706, 2707, 2708, 2709], "excluded_lines": [], "executed_branches": [], "missing_branches": [[2697, 2698], [2697, 2699], [2699, 2700], [2699, 2701], [2701, 2702], [2701, 2704], [2704, 2705], [2704, 2706], [2706, 2707], [2706, 2708], [2708, -2680], [2708, 2709]]}, "_drop_multicollinear_variables": {"executed_lines": [2745, 2746, 2748, 2749, 2751, 2752, 2758, 2759, 2760, 2761, 2762, 2763, 2767, 2769, 2776, 2777, 2784, 2785, 2787], "summary": {"covered_lines": 19, "num_statements": 20, "percent_covered": 92.85714285714286, "percent_covered_display": "93", "missing_lines": 1, "excluded_lines": 0, "num_branches": 8, "num_partial_branches": 1, "covered_branches": 7, "missing_branches": 1}, "missing_lines": [2778], "excluded_lines": [], "executed_branches": [[2751, 2752], [2751, 2758], [2759, 2760], [2759, 2787], [2761, 2762], [2761, 2767], [2777, 2784]], "missing_branches": [[2777, 2778]]}, "_check_vcov_input": {"executed_lines": [2811, 2812, 2813, 2817, 2820, 2821, 2823, 2828, 2829, 2843, 2848], "summary": {"covered_lines": 11, "num_statements": 13, "percent_covered": 85.71428571428571, "percent_covered_display": "86", "missing_lines": 2, "excluded_lines": 0, "num_branches": 8, "num_partial_branches": 1, "covered_branches": 7, "missing_branches": 1}, "missing_lines": [2824, 2825], "excluded_lines": [], "executed_branches": [[2812, 2813], [2812, 2823], [2823, 2828], [2828, -2790], [2828, 2829], [2843, -2790], [2843, 2848]], "missing_branches": [[2823, 2824]]}, "_deparse_vcov_input": {"executed_lines": [2876, 2877, 2878, 2879, 2881, 2882, 2883, 2887, 2888, 2889, 2890, 2891, 2892, 2893, 2894, 2895, 2898, 2899, 2902, 2903, 2904, 2906, 2907, 2908, 2910, 2911, 2912, 2914, 2917, 2926], "summary": {"covered_lines": 30, "num_statements": 34, "percent_covered": 86.20689655172414, "percent_covered_display": "86", "missing_lines": 4, "excluded_lines": 0, "num_branches": 24, "num_partial_branches": 4, "covered_branches": 20, "missing_branches": 4}, "missing_lines": [2880, 2885, 2918, 2919], "excluded_lines": [], "executed_branches": [[2876, 2877], [2876, 2882], [2879, 2881], [2882, 2883], [2887, 2888], [2887, 2890], [2890, 2891], [2890, 2902], [2893, 2894], [2893, 2914], [2894, 2895], [2894, 2898], [2898, 2899], [2898, 2914], [2902, 2903], [2902, 2906], [2906, 2907], [2906, 2910], [2910, 2911], [2917, 2926]], "missing_branches": [[2879, 2880], [2882, 2885], [2910, 2914], [2917, 2918]]}, "": {"executed_lines": [1, 2, 3, 4, 5, 6, 7, 9, 10, 11, 12, 13, 14, 16, 17, 18, 19, 20, 21, 28, 29, 34, 41, 42, 53, 60, 66, 67, 70, 71, 245, 411, 451, 469, 489, 507, 514, 522, 540, 544, 572, 818, 822, 844, 924, 929, 948, 980, 1014, 1050, 1106, 1139, 1266, 1488, 1675, 1717, 1906, 2001, 2133, 2177, 2223, 2234, 2245, 2256, 2267, 2385, 2396, 2608, 2639, 2680, 2712, 2790, 2851], "summary": {"covered_lines": 72, "num_statements": 72, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": []}}, "classes": {"Feols": {"executed_lines": [267, 268, 269, 274, 275, 276, 277, 279, 280, 282, 283, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 304, 305, 306, 307, 308, 309, 310, 311, 312, 316, 317, 318, 320, 322, 323, 327, 328, 329, 330, 333, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 347, 348, 349, 350, 351, 352, 353, 354, 355, 358, 359, 360, 361, 364, 367, 368, 369, 372, 373, 374, 375, 376, 379, 382, 383, 384, 385, 386, 387, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 402, 407, 408, 409, 413, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 435, 436, 437, 439, 440, 442, 443, 446, 448, 449, 461, 462, 463, 464, 465, 467, 480, 482, 483, 485, 487, 491, 492, 505, 509, 516, 517, 518, 519, 520, 524, 525, 537, 538, 541, 542, 552, 553, 555, 556, 557, 559, 561, 563, 564, 567, 568, 570, 605, 606, 607, 616, 618, 625, 630, 631, 634, 637, 641, 649, 650, 658, 659, 661, 663, 667, 675, 676, 677, 679, 680, 690, 691, 693, 695, 696, 704, 705, 706, 708, 709, 711, 715, 718, 721, 723, 724, 728, 733, 734, 736, 743, 744, 745, 746, 757, 761, 763, 764, 765, 767, 775, 776, 778, 779, 782, 784, 785, 789, 794, 795, 799, 804, 808, 812, 814, 816, 819, 820, 823, 824, 825, 826, 827, 833, 835, 840, 842, 845, 846, 847, 848, 849, 850, 851, 852, 853, 854, 855, 857, 864, 871, 872, 874, 876, 877, 878, 881, 882, 885, 888, 892, 901, 904, 914, 915, 919, 920, 922, 930, 931, 933, 939, 944, 946, 949, 952, 953, 956, 957, 958, 959, 961, 971, 973, 974, 975, 976, 978, 981, 984, 985, 987, 989, 990, 997, 1005, 1007, 1008, 1009, 1010, 1012, 1034, 1035, 1037, 1038, 1040, 1041, 1042, 1044, 1045, 1047, 1048, 1107, 1109, 1110, 1112, 1113, 1134, 1135, 1136, 1137, 1201, 1204, 1205, 1208, 1209, 1211, 1212, 1217, 1218, 1220, 1221, 1222, 1223, 1224, 1225, 1228, 1229, 1231, 1232, 1234, 1236, 1237, 1238, 1239, 1243, 1246, 1249, 1251, 1252, 1253, 1254, 1255, 1256, 1257, 1258, 1262, 1264, 1357, 1358, 1362, 1363, 1367, 1368, 1372, 1374, 1376, 1379, 1380, 1383, 1385, 1387, 1392, 1397, 1398, 1404, 1405, 1409, 1414, 1417, 1418, 1419, 1420, 1422, 1423, 1425, 1426, 1427, 1428, 1429, 1430, 1431, 1434, 1436, 1438, 1447, 1453, 1454, 1455, 1456, 1457, 1458, 1459, 1461, 1462, 1466, 1467, 1469, 1471, 1481, 1483, 1484, 1486, 1538, 1541, 1542, 1545, 1546, 1547, 1548, 1550, 1551, 1555, 1556, 1560, 1561, 1562, 1563, 1564, 1568, 1571, 1572, 1576, 1577, 1580, 1582, 1584, 1586, 1587, 1588, 1589, 1590, 1592, 1593, 1594, 1595, 1598, 1599, 1600, 1602, 1604, 1605, 1607, 1608, 1610, 1611, 1612, 1624, 1626, 1627, 1629, 1630, 1631, 1633, 1634, 1635, 1636, 1637, 1638, 1639, 1640, 1642, 1651, 1653, 1655, 1656, 1658, 1693, 1694, 1695, 1696, 1697, 1698, 1703, 1704, 1705, 1706, 1709, 1710, 1711, 1713, 1715, 1818, 1819, 1821, 1822, 1824, 1825, 1829, 1830, 1834, 1836, 1837, 1838, 1840, 1842, 1851, 1853, 1857, 1858, 1860, 1861, 1862, 1863, 1864, 1866, 1868, 1870, 1871, 1872, 1873, 1874, 1876, 1878, 1892, 1899, 1900, 1902, 1904, 1933, 1935, 1936, 1937, 1942, 1945, 1952, 1953, 1955, 1956, 1957, 1959, 1960, 1963, 1964, 1965, 1968, 1969, 1970, 1971, 1973, 1974, 1976, 1977, 1978, 1979, 1981, 1983, 1984, 1985, 1987, 1988, 1989, 1990, 1992, 1993, 1995, 1996, 1997, 1999, 2055, 2060, 2061, 2062, 2066, 2067, 2071, 2072, 2073, 2075, 2080, 2081, 2083, 2088, 2089, 2091, 2100, 2101, 2106, 2112, 2116, 2117, 2119, 2128, 2129, 2154, 2155, 2157, 2159, 2160, 2161, 2162, 2164, 2166, 2167, 2168, 2169, 2170, 2172, 2173, 2174, 2175, 2199, 2200, 2201, 2202, 2203, 2208, 2221, 2232, 2243, 2254, 2265, 2336, 2337, 2338, 2339, 2341, 2342, 2343, 2344, 2345, 2347, 2348, 2350, 2352, 2353, 2354, 2356, 2357, 2358, 2360, 2362, 2363, 2364, 2365, 2367, 2370, 2374, 2381, 2383, 2394, 2472, 2473, 2475, 2476, 2481, 2482, 2484, 2485, 2487, 2491, 2492, 2500, 2501, 2504, 2506, 2508, 2509, 2510, 2512, 2513, 2516, 2518, 2520, 2521, 2527, 2529, 2530, 2533, 2541, 2542, 2544, 2557, 2558, 2559, 2561, 2574, 2582, 2583, 2584, 2585, 2587, 2597, 2598, 2599, 2600, 2601, 2603, 2604, 2606, 2623, 2624, 2632, 2633, 2635, 2660, 2664, 2665, 2666, 2667, 2668, 2669, 2670, 2671, 2672, 2673, 2674, 2675, 2677], "summary": {"covered_lines": 718, "num_statements": 748, "percent_covered": 94.6, "percent_covered_display": "95", "missing_lines": 30, "excluded_lines": 17, "num_branches": 252, "num_partial_branches": 20, "covered_branches": 228, "missing_branches": 24}, "missing_lines": [324, 325, 608, 609, 867, 1090, 1091, 1092, 1093, 1095, 1096, 1098, 1099, 1100, 1101, 1102, 1104, 1226, 1375, 1377, 1381, 1393, 1399, 1400, 1583, 1875, 1943, 2103, 2131, 2346], "excluded_lines": [403, 858, 925, 1364, 1368, 1388, 1405, 1410, 1551, 1938, 1946, 2056, 2062, 2067, 2476, 2521, 2661], "executed_branches": [[279, 280], [279, 282], [306, 307], [306, 308], [310, 311], [310, 312], [462, 463], [462, 464], [464, 465], [482, 483], [482, 485], [491, 492], [491, 505], [517, -514], [517, 518], [524, 525], [524, 537], [552, 553], [552, 555], [649, 650], [649, 663], [663, 667], [663, 679], [679, 680], [679, 695], [695, 696], [695, 708], [708, 709], [709, 711], [709, 718], [723, 724], [723, 728], [745, 746], [745, 761], [763, 764], [763, 812], [784, 785], [784, 789], [789, 794], [794, 795], [794, 799], [799, 804], [799, 808], [823, 824], [823, 825], [825, 826], [864, 871], [874, 876], [874, 901], [876, 877], [876, 888], [877, 878], [877, 881], [881, 882], [881, 885], [901, 904], [956, 957], [956, 971], [974, 975], [974, 978], [987, 989], [987, 1005], [1008, 1009], [1008, 1012], [1034, 1035], [1034, 1037], [1040, 1041], [1040, 1044], [1109, 1110], [1109, 1112], [1112, 1113], [1112, 1134], [1134, 1135], [1134, 1137], [1135, 1134], [1135, 1136], [1204, 1205], [1204, 1208], [1208, 1209], [1208, 1211], [1211, 1212], [1211, 1217], [1217, 1218], [1217, 1220], [1220, 1221], [1220, 1222], [1222, 1223], [1223, 1224], [1223, 1225], [1225, 1228], [1231, 1232], [1231, 1234], [1243, 1246], [1243, 1251], [1251, 1252], [1251, 1255], [1255, 1256], [1255, 1262], [1357, 1358], [1357, 1362], [1362, 1363], [1362, 1372], [1374, 1376], [1376, 1379], [1379, 1380], [1379, 1385], [1380, 1383], [1392, 1397], [1418, 1419], [1422, 1423], [1422, 1434], [1461, 1462], [1461, 1466], [1466, 1467], [1466, 1469], [1483, 1484], [1483, 1486], [1555, 1556], [1555, 1560], [1560, 1561], [1560, 1571], [1561, 1562], [1561, 1563], [1563, 1564], [1563, 1568], [1571, 1572], [1571, 1576], [1576, 1577], [1576, 1582], [1582, 1584], [1611, 1612], [1611, 1626], [1693, 1694], [1693, 1709], [1821, 1822], [1821, 1824], [1824, 1825], [1824, 1829], [1829, 1830], [1829, 1836], [1836, 1837], [1836, 1842], [1837, 1838], [1837, 1840], [1857, 1858], [1857, 1860], [1861, 1862], [1861, 1863], [1863, 1864], [1863, 1866], [1870, 1871], [1870, 1878], [1871, 1872], [1871, 1878], [1872, 1871], [1872, 1873], [1874, 1876], [1899, 1900], [1899, 1902], [1936, 1937], [1936, 1942], [1942, 1945], [1963, 1964], [1963, 1968], [1976, 1977], [1976, 1981], [1984, 1985], [1984, 1995], [1987, 1988], [1987, 1992], [1992, 1993], [2060, 2061], [2060, 2071], [2072, 2073], [2072, 2075], [2075, 2080], [2075, 2106], [2088, 2089], [2088, 2091], [2100, 2101], [2116, 2117], [2116, 2119], [2128, 2129], [2159, 2160], [2159, 2164], [2172, -2133], [2172, 2173], [2336, 2337], [2336, 2338], [2338, 2339], [2338, 2341], [2342, 2343], [2342, 2350], [2343, 2344], [2343, 2345], [2345, 2347], [2353, 2354], [2353, 2356], [2356, 2357], [2356, 2362], [2357, 2358], [2357, 2360], [2481, 2482], [2481, 2484], [2484, 2485], [2484, 2487], [2491, 2492], [2491, 2500], [2500, 2501], [2500, 2506], [2512, 2513], [2512, 2516], [2527, 2529], [2527, 2557], [2529, 2530], [2529, 2533], [2541, 2542], [2541, 2544], [2582, 2583], [2582, 2587], [2603, 2604], [2603, 2606], [2623, 2624], [2623, 2632], [2664, 2665], [2664, 2666], [2670, 2671], [2670, 2677]], "missing_branches": [[464, 467], [708, 814], [789, 763], [825, 833], [864, 867], [901, 919], [1095, 1096], [1095, 1098], [1100, 1101], [1100, 1104], [1222, 1228], [1225, 1226], [1374, 1375], [1376, 1377], [1380, 1381], [1392, 1393], [1418, 1420], [1582, 1583], [1874, 1875], [1942, 1943], [1992, 1984], [2100, 2103], [2128, 2131], [2345, 2346]]}, "": {"executed_lines": [1, 2, 3, 4, 5, 6, 7, 9, 10, 11, 12, 13, 14, 16, 17, 18, 19, 20, 21, 28, 29, 34, 41, 42, 53, 60, 66, 67, 70, 71, 245, 411, 451, 469, 489, 507, 514, 522, 540, 544, 572, 818, 822, 844, 924, 929, 948, 980, 1014, 1050, 1106, 1139, 1266, 1488, 1675, 1717, 1906, 2001, 2133, 2177, 2223, 2234, 2245, 2256, 2267, 2385, 2396, 2608, 2639, 2680, 2712, 2745, 2746, 2748, 2749, 2751, 2752, 2758, 2759, 2760, 2761, 2762, 2763, 2767, 2769, 2776, 2777, 2784, 2785, 2787, 2790, 2811, 2812, 2813, 2817, 2820, 2821, 2823, 2828, 2829, 2843, 2848, 2851, 2876, 2877, 2878, 2879, 2881, 2882, 2883, 2887, 2888, 2889, 2890, 2891, 2892, 2893, 2894, 2895, 2898, 2899, 2902, 2903, 2904, 2906, 2907, 2908, 2910, 2911, 2912, 2914, 2917, 2926], "summary": {"covered_lines": 132, "num_statements": 151, "percent_covered": 81.77339901477832, "percent_covered_display": "82", "missing_lines": 19, "excluded_lines": 0, "num_branches": 52, "num_partial_branches": 6, "covered_branches": 34, "missing_branches": 18}, "missing_lines": [2697, 2698, 2699, 2700, 2701, 2702, 2704, 2705, 2706, 2707, 2708, 2709, 2778, 2824, 2825, 2880, 2885, 2918, 2919], "excluded_lines": [], "executed_branches": [[2751, 2752], [2751, 2758], [2759, 2760], [2759, 2787], [2761, 2762], [2761, 2767], [2777, 2784], [2812, 2813], [2812, 2823], [2823, 2828], [2828, -2790], [2828, 2829], [2843, -2790], [2843, 2848], [2876, 2877], [2876, 2882], [2879, 2881], [2882, 2883], [2887, 2888], [2887, 2890], [2890, 2891], [2890, 2902], [2893, 2894], [2893, 2914], [2894, 2895], [2894, 2898], [2898, 2899], [2898, 2914], [2902, 2903], [2902, 2906], [2906, 2907], [2906, 2910], [2910, 2911], [2917, 2926]], "missing_branches": [[2697, 2698], [2697, 2699], [2699, 2700], [2699, 2701], [2701, 2702], [2701, 2704], [2704, 2705], [2704, 2706], [2706, 2707], [2706, 2708], [2708, -2680], [2708, 2709], [2777, 2778], [2823, 2824], [2879, 2880], [2882, 2885], [2910, 2914], [2917, 2918]]}}}, "pyfixest/estimation/feols_compressed_.py": {"executed_lines": [1, 2, 3, 4, 6, 7, 8, 9, 11, 12, 13, 17, 19, 21, 22, 24, 25, 26, 29, 30, 82, 106, 128, 129, 133, 134, 135, 136, 137, 138, 140, 146, 147, 148, 155, 157, 160, 161, 163, 164, 165, 173, 174, 175, 176, 178, 179, 180, 184, 186, 187, 188, 192, 199, 202, 207, 208, 211, 213, 220, 221, 222, 225, 226, 228, 229, 230, 232, 233, 234, 235, 236, 238, 245, 246, 250, 251, 252, 253, 258, 262, 264, 265, 266, 267, 268, 269, 270, 271, 273, 275, 276, 281, 282, 283, 284, 285, 286, 288, 290, 292, 355, 399, 400, 401, 402, 403, 404, 405, 406, 407, 410, 418, 422, 424, 426, 428, 429, 430, 431, 433, 435, 436, 437, 440, 442, 444, 455, 459, 461, 462, 463, 464, 466, 470], "summary": {"covered_lines": 129, "num_statements": 158, "percent_covered": 80.21978021978022, "percent_covered_display": "80", "missing_lines": 29, "excluded_lines": 8, "num_branches": 24, "num_partial_branches": 5, "covered_branches": 17, "missing_branches": 7}, "missing_lines": [141, 167, 170, 171, 182, 293, 294, 296, 297, 299, 308, 310, 311, 312, 314, 315, 316, 318, 319, 326, 327, 336, 343, 344, 345, 346, 347, 349, 353], "excluded_lines": [129, 151, 188, 246, 253, 258, 277, 394], "executed_branches": [[140, 146], [163, 164], [174, 175], [174, 211], [179, 180], [186, 187], [250, 251], [250, 262], [428, 429], [429, 430], [429, 433], [436, 437], [436, 440], [461, 462], [461, 470], [462, 461], [462, 463]], "missing_branches": [[140, 141], [163, 167], [179, 182], [186, 213], [318, 319], [318, 353], [428, 433]], "functions": {"FeolsCompressed.__init__": {"executed_lines": [106, 128, 129, 133, 134, 135, 136, 137, 138, 140, 146, 147, 148], "summary": {"covered_lines": 12, "num_statements": 13, "percent_covered": 86.66666666666667, "percent_covered_display": "87", "missing_lines": 1, "excluded_lines": 1, "num_branches": 2, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 1}, "missing_lines": [141], "excluded_lines": [129], "executed_branches": [[140, 146]], "missing_branches": [[140, 141]]}, "FeolsCompressed.prepare_model_matrix": {"executed_lines": [157, 160, 161, 163, 164, 165, 173, 174, 175, 176, 178, 179, 180, 184, 186, 187, 188, 192, 199, 202, 207, 208, 211, 213, 220, 221, 222, 225, 226, 228, 229, 230, 232, 233, 234, 235, 236], "summary": {"covered_lines": 36, "num_statements": 40, "percent_covered": 85.41666666666667, "percent_covered_display": "85", "missing_lines": 4, "excluded_lines": 1, "num_branches": 8, "num_partial_branches": 3, "covered_branches": 5, "missing_branches": 3}, "missing_lines": [167, 170, 171, 182], "excluded_lines": [188], "executed_branches": [[163, 164], [174, 175], [174, 211], [179, 180], [186, 187]], "missing_branches": [[163, 167], [179, 182], [186, 213]]}, "FeolsCompressed.vcov": {"executed_lines": [245, 246, 250, 251, 252, 253, 258, 262], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 3, "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [246, 253, 258], "executed_branches": [[250, 251], [250, 262]], "missing_branches": []}, "FeolsCompressed._vcov_iid": {"executed_lines": [265, 266, 267, 268, 269, 270, 271, 273], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": []}, "FeolsCompressed._vcov_hetero": {"executed_lines": [276, 281, 282, 283, 284, 285, 286, 288, 290], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 1, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [277], "executed_branches": [], "missing_branches": []}, "FeolsCompressed._vcov_crv1": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 24, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 24, "excluded_lines": 0, "num_branches": 2, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 2}, "missing_lines": [293, 294, 296, 297, 299, 308, 310, 311, 312, 314, 315, 316, 318, 319, 326, 327, 336, 343, 344, 345, 346, 347, 349, 353], "excluded_lines": [], "executed_branches": [], "missing_branches": [[318, 319], [318, 353]]}, "FeolsCompressed.predict": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 1, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [394], "executed_branches": [], "missing_branches": []}, "_regression_compression": {"executed_lines": [418, 422, 424, 426, 428, 429, 430, 431, 433, 435, 436, 437, 440, 442, 444], "summary": {"covered_lines": 15, "num_statements": 15, "percent_covered": 95.23809523809524, "percent_covered_display": "95", "missing_lines": 0, "excluded_lines": 0, "num_branches": 6, "num_partial_branches": 1, "covered_branches": 5, "missing_branches": 1}, "missing_lines": [], "excluded_lines": [], "executed_branches": [[428, 429], [429, 430], [429, 433], [436, 437], [436, 440]], "missing_branches": [[428, 433]]}, "_mundlak_transform": {"executed_lines": [459, 461, 462, 463, 464, 466, 470], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [[461, 462], [461, 470], [462, 461], [462, 463]], "missing_branches": []}, "": {"executed_lines": [1, 2, 3, 4, 6, 7, 8, 9, 11, 12, 13, 17, 19, 21, 22, 24, 25, 26, 29, 30, 82, 155, 238, 264, 275, 292, 355, 399, 400, 401, 402, 403, 404, 405, 406, 407, 410, 455], "summary": {"covered_lines": 37, "num_statements": 37, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 1, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [151], "executed_branches": [], "missing_branches": []}}, "classes": {"FeolsCompressed": {"executed_lines": [106, 128, 129, 133, 134, 135, 136, 137, 138, 140, 146, 147, 148, 157, 160, 161, 163, 164, 165, 173, 174, 175, 176, 178, 179, 180, 184, 186, 187, 188, 192, 199, 202, 207, 208, 211, 213, 220, 221, 222, 225, 226, 228, 229, 230, 232, 233, 234, 235, 236, 245, 246, 250, 251, 252, 253, 258, 262, 265, 266, 267, 268, 269, 270, 271, 273, 276, 281, 282, 283, 284, 285, 286, 288, 290], "summary": {"covered_lines": 70, "num_statements": 99, "percent_covered": 69.02654867256638, "percent_covered_display": "69", "missing_lines": 29, "excluded_lines": 7, "num_branches": 14, "num_partial_branches": 4, "covered_branches": 8, "missing_branches": 6}, "missing_lines": [141, 167, 170, 171, 182, 293, 294, 296, 297, 299, 308, 310, 311, 312, 314, 315, 316, 318, 319, 326, 327, 336, 343, 344, 345, 346, 347, 349, 353], "excluded_lines": [129, 188, 246, 253, 258, 277, 394], "executed_branches": [[140, 146], [163, 164], [174, 175], [174, 211], [179, 180], [186, 187], [250, 251], [250, 262]], "missing_branches": [[140, 141], [163, 167], [179, 182], [186, 213], [318, 319], [318, 353]]}, "_RegressionCompressionData": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [1, 2, 3, 4, 6, 7, 8, 9, 11, 12, 13, 17, 19, 21, 22, 24, 25, 26, 29, 30, 82, 155, 238, 264, 275, 292, 355, 399, 400, 401, 402, 403, 404, 405, 406, 407, 410, 418, 422, 424, 426, 428, 429, 430, 431, 433, 435, 436, 437, 440, 442, 444, 455, 459, 461, 462, 463, 464, 466, 470], "summary": {"covered_lines": 59, "num_statements": 59, "percent_covered": 98.55072463768116, "percent_covered_display": "99", "missing_lines": 0, "excluded_lines": 1, "num_branches": 10, "num_partial_branches": 1, "covered_branches": 9, "missing_branches": 1}, "missing_lines": [], "excluded_lines": [151], "executed_branches": [[428, 429], [429, 430], [429, 433], [436, 437], [436, 440], [461, 462], [461, 470], [462, 461], [462, 463]], "missing_branches": [[428, 433]]}}}, "pyfixest/estimation/fepois_.py": {"executed_lines": [1, 2, 3, 4, 6, 7, 8, 10, 13, 14, 15, 16, 20, 21, 24, 25, 81, 106, 129, 135, 136, 137, 138, 139, 141, 142, 143, 144, 146, 147, 148, 150, 152, 155, 158, 162, 163, 168, 177, 178, 179, 180, 181, 182, 183, 184, 185, 187, 189, 190, 192, 193, 195, 197, 202, 203, 204, 207, 219, 220, 221, 222, 223, 224, 225, 226, 236, 238, 266, 267, 269, 270, 271, 272, 273, 281, 282, 283, 284, 285, 286, 287, 291, 292, 299, 301, 303, 304, 311, 314, 316, 317, 319, 320, 322, 323, 325, 328, 331, 332, 336, 337, 338, 340, 342, 343, 344, 349, 350, 352, 353, 354, 356, 357, 361, 367, 368, 369, 371, 375, 376, 380, 381, 383, 384, 385, 387, 388, 389, 391, 392, 394, 395, 397, 412, 413, 419, 420, 422, 482, 483, 487, 488, 492, 495, 530, 534, 537, 538, 543, 544, 545, 549, 550, 554, 557, 558, 590, 614, 615, 616, 619, 620, 621, 624, 628, 631, 632, 633, 634, 636, 639, 675, 676, 678, 679, 681, 682, 683, 686, 688, 689, 690, 695, 696, 698, 699, 700, 705, 709, 710, 711, 712, 715, 716, 719, 722, 723, 724, 726, 727, 732, 733, 739, 742, 743, 745, 747, 749, 751], "summary": {"covered_lines": 207, "num_statements": 226, "percent_covered": 86.05442176870748, "percent_covered_display": "86", "missing_lines": 19, "excluded_lines": 2, "num_branches": 68, "num_partial_branches": 20, "covered_branches": 46, "missing_branches": 22}, "missing_lines": [159, 205, 274, 312, 414, 415, 417, 535, 539, 587, 684, 692, 728, 735, 744, 746, 748, 750, 752], "excluded_lines": [483, 488], "executed_branches": [[158, 162], [163, 168], [163, 177], [177, -150], [177, 178], [182, 183], [182, 184], [202, -195], [202, 203], [204, -195], [221, 222], [221, 223], [269, 270], [270, 271], [270, 273], [273, 281], [281, 282], [281, 291], [303, 304], [303, 314], [311, 316], [367, 368], [367, 371], [394, 395], [412, 413], [534, 537], [538, 543], [544, 545], [544, 549], [549, 550], [549, 554], [615, 616], [619, 620], [619, 636], [631, 619], [631, 632], [683, 686], [690, 695], [711, 712], [724, 726], [732, 733], [743, 745], [745, 747], [747, 749], [749, 751], [751, -742]], "missing_branches": [[158, 159], [204, 205], [269, 342], [273, 274], [311, 312], [394, -238], [412, 414], [414, 415], [414, 417], [534, 535], [538, 539], [615, 636], [683, 684], [690, 692], [711, 732], [724, 728], [732, 735], [743, 744], [745, 746], [747, 748], [749, 750], [751, 752]], "functions": {"Fepois.__init__": {"executed_lines": [106, 129, 135, 136, 137, 138, 139, 141, 142, 143, 144, 146, 147, 148], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": []}, "Fepois.prepare_model_matrix": {"executed_lines": [152, 155, 158, 162, 163, 168, 177, 178, 179, 180, 181, 182, 183, 184, 185, 187, 189, 190, 192, 193], "summary": {"covered_lines": 20, "num_statements": 21, "percent_covered": 93.10344827586206, "percent_covered_display": "93", "missing_lines": 1, "excluded_lines": 0, "num_branches": 8, "num_partial_branches": 1, "covered_branches": 7, "missing_branches": 1}, "missing_lines": [159], "excluded_lines": [], "executed_branches": [[158, 162], [163, 168], [163, 177], [177, -150], [177, 178], [182, 183], [182, 184]], "missing_branches": [[158, 159]]}, "Fepois.to_array": {"executed_lines": [197, 202, 203, 204], "summary": {"covered_lines": 4, "num_statements": 5, "percent_covered": 77.77777777777777, "percent_covered_display": "78", "missing_lines": 1, "excluded_lines": 0, "num_branches": 4, "num_partial_branches": 1, "covered_branches": 3, "missing_branches": 1}, "missing_lines": [205], "excluded_lines": [], "executed_branches": [[202, -195], [202, 203], [204, -195]], "missing_branches": [[204, 205]]}, "Fepois._compute_deviance": {"executed_lines": [219, 220, 221, 222, 223, 224, 225, 226, 236], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [[221, 222], [221, 223]], "missing_branches": []}, "Fepois.get_fit": {"executed_lines": [266, 267, 269, 270, 271, 272, 273, 281, 282, 283, 284, 285, 286, 287, 291, 292, 299, 301, 303, 304, 311, 314, 316, 317, 319, 320, 322, 323, 325, 328, 331, 332, 336, 337, 338, 340, 342, 343, 344, 349, 350, 352, 353, 354, 356, 357, 361, 367, 368, 369, 371, 375, 376, 380, 381, 383, 384, 385, 387, 388, 389, 391, 392, 394, 395], "summary": {"covered_lines": 65, "num_statements": 67, "percent_covered": 92.7710843373494, "percent_covered_display": "93", "missing_lines": 2, "excluded_lines": 0, "num_branches": 16, "num_partial_branches": 4, "covered_branches": 12, "missing_branches": 4}, "missing_lines": [274, 312], "excluded_lines": [], "executed_branches": [[269, 270], [270, 271], [270, 273], [273, 281], [281, 282], [281, 291], [303, 304], [303, 314], [311, 316], [367, 368], [367, 371], [394, 395]], "missing_branches": [[269, 342], [273, 274], [311, 312], [394, -238]]}, "Fepois.resid": {"executed_lines": [412, 413], "summary": {"covered_lines": 2, "num_statements": 5, "percent_covered": 33.333333333333336, "percent_covered_display": "33", "missing_lines": 3, "excluded_lines": 0, "num_branches": 4, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 3}, "missing_lines": [414, 415, 417], "excluded_lines": [], "executed_branches": [[412, 413]], "missing_branches": [[412, 414], [414, 415], [414, 417]]}, "Fepois._vcov_iid": {"executed_lines": [420], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": []}, "Fepois.predict": {"executed_lines": [482, 483, 487, 488, 492], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 2, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [483, 488], "executed_branches": [], "missing_branches": []}, "_check_for_separation": {"executed_lines": [530, 534, 537, 538, 543, 544, 545, 549, 550, 554], "summary": {"covered_lines": 10, "num_statements": 12, "percent_covered": 80.0, "percent_covered_display": "80", "missing_lines": 2, "excluded_lines": 0, "num_branches": 8, "num_partial_branches": 2, "covered_branches": 6, "missing_branches": 2}, "missing_lines": [535, 539], "excluded_lines": [], "executed_branches": [[534, 537], [538, 543], [544, 545], [544, 549], [549, 550], [549, 554]], "missing_branches": [[534, 535], [538, 539]]}, "_SeparationMethod.__call__": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [587], "excluded_lines": [], "executed_branches": [], "missing_branches": []}, "_check_for_separation_fe": {"executed_lines": [614, 615, 616, 619, 620, 621, 624, 628, 631, 632, 633, 634, 636], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 94.73684210526316, "percent_covered_display": "95", "missing_lines": 0, "excluded_lines": 0, "num_branches": 6, "num_partial_branches": 1, "covered_branches": 5, "missing_branches": 1}, "missing_lines": [], "excluded_lines": [], "executed_branches": [[615, 616], [619, 620], [619, 636], [631, 619], [631, 632]], "missing_branches": [[615, 636]]}, "_check_for_separation_ir": {"executed_lines": [675, 676, 678, 679, 681, 682, 683, 686, 688, 689, 690, 695, 696, 698, 699, 700, 705, 709, 710, 711, 712, 715, 716, 719, 722, 723, 724, 726, 727, 732, 733, 739], "summary": {"covered_lines": 32, "num_statements": 36, "percent_covered": 80.43478260869566, "percent_covered_display": "80", "missing_lines": 4, "excluded_lines": 0, "num_branches": 10, "num_partial_branches": 5, "covered_branches": 5, "missing_branches": 5}, "missing_lines": [684, 692, 728, 735], "excluded_lines": [], "executed_branches": [[683, 686], [690, 695], [711, 712], [724, 726], [732, 733]], "missing_branches": [[683, 684], [690, 692], [711, 732], [724, 728], [732, 735]]}, "_fepois_input_checks": {"executed_lines": [743, 745, 747, 749, 751], "summary": {"covered_lines": 5, "num_statements": 10, "percent_covered": 50.0, "percent_covered_display": "50", "missing_lines": 5, "excluded_lines": 0, "num_branches": 10, "num_partial_branches": 5, "covered_branches": 5, "missing_branches": 5}, "missing_lines": [744, 746, 748, 750, 752], "excluded_lines": [], "executed_branches": [[743, 745], [745, 747], [747, 749], [749, 751], [751, -742]], "missing_branches": [[743, 744], [745, 746], [747, 748], [749, 750], [751, 752]]}, "": {"executed_lines": [1, 2, 3, 4, 6, 7, 8, 10, 13, 14, 15, 16, 20, 21, 24, 25, 81, 150, 195, 207, 238, 397, 419, 422, 495, 557, 558, 590, 639, 742], "summary": {"covered_lines": 29, "num_statements": 29, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": []}}, "classes": {"Fepois": {"executed_lines": [106, 129, 135, 136, 137, 138, 139, 141, 142, 143, 144, 146, 147, 148, 152, 155, 158, 162, 163, 168, 177, 178, 179, 180, 181, 182, 183, 184, 185, 187, 189, 190, 192, 193, 197, 202, 203, 204, 219, 220, 221, 222, 223, 224, 225, 226, 236, 266, 267, 269, 270, 271, 272, 273, 281, 282, 283, 284, 285, 286, 287, 291, 292, 299, 301, 303, 304, 311, 314, 316, 317, 319, 320, 322, 323, 325, 328, 331, 332, 336, 337, 338, 340, 342, 343, 344, 349, 350, 352, 353, 354, 356, 357, 361, 367, 368, 369, 371, 375, 376, 380, 381, 383, 384, 385, 387, 388, 389, 391, 392, 394, 395, 412, 413, 420, 482, 483, 487, 488, 492], "summary": {"covered_lines": 118, "num_statements": 125, "percent_covered": 89.937106918239, "percent_covered_display": "90", "missing_lines": 7, "excluded_lines": 2, "num_branches": 34, "num_partial_branches": 7, "covered_branches": 25, "missing_branches": 9}, "missing_lines": [159, 205, 274, 312, 414, 415, 417], "excluded_lines": [483, 488], "executed_branches": [[158, 162], [163, 168], [163, 177], [177, -150], [177, 178], [182, 183], [182, 184], [202, -195], [202, 203], [204, -195], [221, 222], [221, 223], [269, 270], [270, 271], [270, 273], [273, 281], [281, 282], [281, 291], [303, 304], [303, 314], [311, 316], [367, 368], [367, 371], [394, 395], [412, 413]], "missing_branches": [[158, 159], [204, 205], [269, 342], [273, 274], [311, 312], [394, -238], [412, 414], [414, 415], [414, 417]]}, "_SeparationMethod": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [587], "excluded_lines": [], "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [1, 2, 3, 4, 6, 7, 8, 10, 13, 14, 15, 16, 20, 21, 24, 25, 81, 150, 195, 207, 238, 397, 419, 422, 495, 530, 534, 537, 538, 543, 544, 545, 549, 550, 554, 557, 558, 590, 614, 615, 616, 619, 620, 621, 624, 628, 631, 632, 633, 634, 636, 639, 675, 676, 678, 679, 681, 682, 683, 686, 688, 689, 690, 695, 696, 698, 699, 700, 705, 709, 710, 711, 712, 715, 716, 719, 722, 723, 724, 726, 727, 732, 733, 739, 742, 743, 745, 747, 749, 751], "summary": {"covered_lines": 89, "num_statements": 100, "percent_covered": 82.08955223880596, "percent_covered_display": "82", "missing_lines": 11, "excluded_lines": 0, "num_branches": 34, "num_partial_branches": 13, "covered_branches": 21, "missing_branches": 13}, "missing_lines": [535, 539, 684, 692, 728, 735, 744, 746, 748, 750, 752], "excluded_lines": [], "executed_branches": [[534, 537], [538, 543], [544, 545], [544, 549], [549, 550], [549, 554], [615, 616], [619, 620], [619, 636], [631, 619], [631, 632], [683, 686], [690, 695], [711, 712], [724, 726], [732, 733], [743, 745], [745, 747], [747, 749], [749, 751], [751, -742]], "missing_branches": [[534, 535], [538, 539], [615, 636], [683, 684], [690, 692], [711, 732], [724, 728], [732, 735], [743, 744], [745, 746], [747, 748], [749, 750], [751, 752]]}}}, "pyfixest/estimation/feprobit_.py": {"executed_lines": [1, 2, 3, 5, 6, 7, 9, 10, 13, 14, 16, 46, 70, 72, 74, 75, 76, 77, 78, 80, 81, 84, 85, 86, 91, 93, 96, 100, 101, 103, 106, 107, 109, 112, 113, 115, 118, 119], "summary": {"covered_lines": 37, "num_statements": 41, "percent_covered": 91.11111111111111, "percent_covered_display": "91", "missing_lines": 4, "excluded_lines": 0, "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0}, "missing_lines": [94, 97, 104, 110], "excluded_lines": [], "executed_branches": [[75, 76], [75, 77], [77, -72], [77, 78]], "missing_branches": [], "functions": {"Feprobit.__init__": {"executed_lines": [46, 70], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": []}, "Feprobit._check_dependent_variable": {"executed_lines": [74, 75, 76, 77, 78], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [[75, 76], [75, 77], [77, -72], [77, 78]], "missing_branches": []}, "Feprobit._get_deviance": {"executed_lines": [81, 84, 85, 86, 91], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": []}, "Feprobit._get_dispersion_phi": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [94], "excluded_lines": [], "executed_branches": [], "missing_branches": []}, "Feprobit._get_b": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [97], "excluded_lines": [], "executed_branches": [], "missing_branches": []}, "Feprobit._get_mu": {"executed_lines": [101], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": []}, "Feprobit._get_link": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [104], "excluded_lines": [], "executed_branches": [], "missing_branches": []}, "Feprobit._update_detadmu": {"executed_lines": [107], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": []}, "Feprobit._get_theta": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [110], "excluded_lines": [], "executed_branches": [], "missing_branches": []}, "Feprobit._get_V": {"executed_lines": [113], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": []}, "Feprobit._get_score": {"executed_lines": [118, 119], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [1, 2, 3, 5, 6, 7, 9, 10, 13, 14, 16, 72, 80, 93, 96, 100, 103, 106, 109, 112, 115], "summary": {"covered_lines": 20, "num_statements": 20, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": []}}, "classes": {"Feprobit": {"executed_lines": [46, 70, 74, 75, 76, 77, 78, 81, 84, 85, 86, 91, 101, 107, 113, 118, 119], "summary": {"covered_lines": 17, "num_statements": 21, "percent_covered": 84.0, "percent_covered_display": "84", "missing_lines": 4, "excluded_lines": 0, "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0}, "missing_lines": [94, 97, 104, 110], "excluded_lines": [], "executed_branches": [[75, 76], [75, 77], [77, -72], [77, 78]], "missing_branches": []}, "": {"executed_lines": [1, 2, 3, 5, 6, 7, 9, 10, 13, 14, 16, 72, 80, 93, 96, 100, 103, 106, 109, 112, 115], "summary": {"covered_lines": 20, "num_statements": 20, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": []}}}, "pyfixest/estimation/jax/demean_jax_.py": {"executed_lines": [1, 3, 4, 5, 6, 9, 10, 19, 21, 22, 24, 25, 26, 29, 30, 35, 36, 38, 39, 42, 43, 45, 46, 48, 49, 50, 51, 52, 54, 55, 57, 58, 61, 62, 64, 67, 76, 79, 82, 83, 84, 87, 90], "summary": {"covered_lines": 43, "num_statements": 43, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": [], "functions": {"_demean_jax_impl": {"executed_lines": [19, 21, 22, 38, 39, 45, 46, 54, 55, 61, 62, 64], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": []}, "_demean_jax_impl._apply_factor": {"executed_lines": [24, 25, 26, 29, 30, 35, 36], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": []}, "_demean_jax_impl._demean_step": {"executed_lines": [42, 43], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": []}, "_demean_jax_impl._body_fun": {"executed_lines": [48, 49, 50, 51, 52], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": []}, "_demean_jax_impl._cond_fun": {"executed_lines": [57, 58], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": []}, "demean_jax": {"executed_lines": [76, 79, 82, 83, 84, 87, 90], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [1, 3, 4, 5, 6, 9, 10, 67], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [1, 3, 4, 5, 6, 9, 10, 19, 21, 22, 24, 25, 26, 29, 30, 35, 36, 38, 39, 42, 43, 45, 46, 48, 49, 50, 51, 52, 54, 55, 57, 58, 61, 62, 64, 67, 76, 79, 82, 83, 84, 87, 90], "summary": {"covered_lines": 43, "num_statements": 43, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": []}}}, "pyfixest/estimation/jax/detect_singletons_jax.py": {"executed_lines": [1, 3, 4, 5, 8, 9, 14, 15, 16, 19, 22, 23, 24, 25, 27, 28, 29, 31, 36, 37, 40, 41, 42, 43, 44, 46, 52, 54, 55, 58, 60, 64, 69, 86, 87, 90, 93, 94, 96, 97, 100, 101, 102, 104, 105, 106, 109, 111, 112, 113, 116, 126, 128, 129, 130, 131, 133, 135, 137], "summary": {"covered_lines": 59, "num_statements": 59, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": [], "functions": {"_process_features_jax": {"executed_lines": [14, 64], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": []}, "_process_features_jax.process_feature": {"executed_lines": [15, 16, 19, 22, 31, 36, 40, 60], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": []}, "_process_features_jax.process_feature.count_loop": {"executed_lines": [23, 24, 25, 27, 28, 29], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": []}, "_process_features_jax.process_feature.no_singletons": {"executed_lines": [37], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": []}, "_process_features_jax.process_feature.update_singletons": {"executed_lines": [41, 54, 55, 58], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": []}, "_process_features_jax.process_feature.update_singletons.update_loop": {"executed_lines": [42, 43, 44, 46, 52], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": []}, "detect_singletons_jax": {"executed_lines": [86, 87, 90, 93, 94, 96, 97, 116, 126, 128, 129, 135, 137], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": []}, "detect_singletons_jax._singleton_detection_loop": {"executed_lines": [100, 104, 111, 112, 113], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": []}, "detect_singletons_jax._singleton_detection_loop.cond_fun": {"executed_lines": [101, 102], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": []}, "detect_singletons_jax._singleton_detection_loop.body_fun": {"executed_lines": [105, 106, 109], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": []}, "detect_singletons_jax._mark_non_singletons": {"executed_lines": [130, 133], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": []}, "detect_singletons_jax._mark_non_singletons.mark_non_singleton": {"executed_lines": [131], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [1, 3, 4, 5, 8, 9, 69], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [1, 3, 4, 5, 8, 9, 14, 15, 16, 19, 22, 23, 24, 25, 27, 28, 29, 31, 36, 37, 40, 41, 42, 43, 44, 46, 52, 54, 55, 58, 60, 64, 69, 86, 87, 90, 93, 94, 96, 97, 100, 101, 102, 104, 105, 106, 109, 111, 112, 113, 116, 126, 128, 129, 130, 131, 133, 135, 137], "summary": {"covered_lines": 59, "num_statements": 59, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": []}}}, "pyfixest/estimation/literals.py": {"executed_lines": [1, 3, 4, 5, 6, 7, 14, 17, 18, 19, 22, 44, 46, 51], "summary": {"covered_lines": 14, "num_statements": 16, "percent_covered": 80.0, "percent_covered_display": "80", "missing_lines": 2, "excluded_lines": 0, "num_branches": 4, "num_partial_branches": 2, "covered_branches": 2, "missing_branches": 2}, "missing_lines": [47, 52], "excluded_lines": [], "executed_branches": [[46, 51], [51, -22]], "missing_branches": [[46, 47], [51, 52]], "functions": {"_validate_literal_argument": {"executed_lines": [44, 46, 51], "summary": {"covered_lines": 3, "num_statements": 5, "percent_covered": 55.55555555555556, "percent_covered_display": "56", "missing_lines": 2, "excluded_lines": 0, "num_branches": 4, "num_partial_branches": 2, "covered_branches": 2, "missing_branches": 2}, "missing_lines": [47, 52], "excluded_lines": [], "executed_branches": [[46, 51], [51, -22]], "missing_branches": [[46, 47], [51, 52]]}, "": {"executed_lines": [1, 3, 4, 5, 6, 7, 14, 17, 18, 19, 22], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [1, 3, 4, 5, 6, 7, 14, 17, 18, 19, 22, 44, 46, 51], "summary": {"covered_lines": 14, "num_statements": 16, "percent_covered": 80.0, "percent_covered_display": "80", "missing_lines": 2, "excluded_lines": 0, "num_branches": 4, "num_partial_branches": 2, "covered_branches": 2, "missing_branches": 2}, "missing_lines": [47, 52], "excluded_lines": [], "executed_branches": [[46, 51], [51, -22]], "missing_branches": [[46, 47], [51, 52]]}}}, "pyfixest/estimation/model_matrix_fixest_.py": {"executed_lines": [1, 2, 3, 4, 6, 7, 8, 10, 11, 12, 15, 96, 98, 99, 100, 101, 103, 105, 111, 113, 114, 120, 121, 123, 130, 131, 132, 135, 137, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 151, 152, 153, 154, 155, 157, 158, 159, 163, 164, 166, 177, 178, 179, 180, 181, 182, 183, 186, 187, 188, 191, 193, 194, 195, 198, 202, 203, 204, 205, 206, 209, 210, 212, 214, 215, 219, 220, 231, 232, 235, 236, 240, 255, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 314, 317, 318, 319, 320, 321, 322, 323, 324, 327, 330, 331, 332, 333, 334, 335, 336, 338, 341, 348, 351, 352, 353, 354, 355, 357, 360, 367, 369, 370, 371, 374, 376, 377, 380, 381, 384, 402, 403, 404, 405, 406, 416, 419, 420, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 434, 437, 458, 459, 468, 470, 471, 472, 476, 477, 478, 486, 489, 491, 494, 507, 508, 509, 510, 511, 514, 529, 530, 535, 536, 540, 541, 546, 548, 549, 551, 554, 557, 570, 571, 572, 573, 574, 577, 595, 596, 597, 599], "summary": {"covered_lines": 193, "num_statements": 200, "percent_covered": 93.83116883116882, "percent_covered_display": "94", "missing_lines": 7, "excluded_lines": 0, "num_branches": 108, "num_partial_branches": 10, "covered_branches": 96, "missing_branches": 12}, "missing_lines": [189, 196, 349, 361, 362, 531, 552], "excluded_lines": [], "executed_branches": [[142, 143], [142, 145], [145, 146], [145, 147], [147, 148], [147, 151], [152, 153], [152, 157], [153, 152], [153, 154], [158, 159], [158, 177], [177, 178], [177, 182], [178, 177], [178, 179], [180, 177], [180, 181], [182, 183], [182, 186], [186, 187], [186, 188], [188, 191], [193, 194], [193, 198], [195, 198], [202, 203], [202, 209], [203, 204], [205, 206], [205, 209], [209, 210], [209, 231], [214, 215], [214, 219], [219, 220], [219, 231], [235, 236], [235, 240], [303, 304], [303, 305], [305, 306], [307, 308], [307, 309], [309, 310], [309, 311], [311, 312], [311, 314], [331, 332], [331, 357], [332, 333], [332, 357], [333, 332], [333, 334], [338, 341], [338, 348], [348, 351], [352, 332], [352, 353], [353, 332], [353, 354], [354, 353], [354, 355], [374, 376], [374, 380], [402, 403], [402, 416], [403, 404], [403, 416], [404, 403], [404, 405], [423, 424], [424, 425], [424, 434], [426, 427], [428, 429], [428, 430], [430, 431], [430, 432], [458, 459], [458, 489], [470, 471], [470, 486], [471, 472], [471, 476], [529, -514], [529, 530], [530, 535], [535, 536], [535, 540], [540, -514], [540, 541], [548, 549], [551, 554], [570, 571], [570, 572]], "missing_branches": [[188, 189], [195, 196], [203, 205], [305, 307], [348, 349], [361, -360], [361, 362], [423, 434], [426, 428], [530, 531], [548, 551], [551, 552]], "functions": {"model_matrix_fixest": {"executed_lines": [96, 98, 99, 100, 101, 103, 105, 111, 113, 114, 120, 121, 123, 130, 131, 132, 135, 137, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 151, 152, 153, 154, 155, 157, 158, 159, 163, 164, 166, 177, 178, 179, 180, 181, 182, 183, 186, 187, 188, 191, 193, 194, 195, 198, 202, 203, 204, 205, 206, 209, 210, 212, 214, 215, 219, 220, 231, 232, 235, 236, 240], "summary": {"covered_lines": 71, "num_statements": 73, "percent_covered": 95.65217391304348, "percent_covered_display": "96", "missing_lines": 2, "excluded_lines": 0, "num_branches": 42, "num_partial_branches": 3, "covered_branches": 39, "missing_branches": 3}, "missing_lines": [189, 196], "excluded_lines": [], "executed_branches": [[142, 143], [142, 145], [145, 146], [145, 147], [147, 148], [147, 151], [152, 153], [152, 157], [153, 152], [153, 154], [158, 159], [158, 177], [177, 178], [177, 182], [178, 177], [178, 179], [180, 177], [180, 181], [182, 183], [182, 186], [186, 187], [186, 188], [188, 191], [193, 194], [193, 198], [195, 198], [202, 203], [202, 209], [203, 204], [205, 206], [205, 209], [209, 210], [209, 231], [214, 215], [214, 219], [219, 220], [219, 231], [235, 236], [235, 240]], "missing_branches": [[188, 189], [195, 196], [203, 205]]}, "_drop_rows": {"executed_lines": [302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 314], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 95.45454545454545, "percent_covered_display": "95", "missing_lines": 0, "excluded_lines": 0, "num_branches": 10, "num_partial_branches": 1, "covered_branches": 9, "missing_branches": 1}, "missing_lines": [], "excluded_lines": [], "executed_branches": [[303, 304], [303, 305], [305, 306], [307, 308], [307, 309], [309, 310], [309, 311], [311, 312], [311, 314]], "missing_branches": [[305, 307]]}, "_get_na_index": {"executed_lines": [318, 319, 320, 321, 322, 323, 324], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": []}, "_get_columns_to_drop_and_check_ivars": {"executed_lines": [330, 331, 332, 333, 334, 335, 336, 338, 341, 348, 351, 352, 353, 354, 355, 357], "summary": {"covered_lines": 16, "num_statements": 17, "percent_covered": 93.93939393939394, "percent_covered_display": "94", "missing_lines": 1, "excluded_lines": 0, "num_branches": 16, "num_partial_branches": 1, "covered_branches": 15, "missing_branches": 1}, "missing_lines": [349], "excluded_lines": [], "executed_branches": [[331, 332], [331, 357], [332, 333], [332, 357], [333, 332], [333, 334], [338, 341], [338, 348], [348, 351], [352, 332], [352, 353], [353, 332], [353, 354], [354, 353], [354, 355]], "missing_branches": [[348, 349]]}, "_check_ivars": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 2, "excluded_lines": 0, "num_branches": 2, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 2}, "missing_lines": [361, 362], "excluded_lines": [], "executed_branches": [], "missing_branches": [[361, -360], [361, 362]]}, "_transform_i_to_C": {"executed_lines": [369, 370, 371, 374, 376, 377, 380, 381], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [[374, 376], [374, 380]], "missing_branches": []}, "_fixef_interactions": {"executed_lines": [402, 403, 404, 405, 406, 416], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 6, "num_partial_branches": 0, "covered_branches": 6, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [[402, 403], [402, 416], [403, 404], [403, 416], [404, 403], [404, 405]], "missing_branches": []}, "_get_ivars_dict": {"executed_lines": [420, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 434], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 91.30434782608695, "percent_covered_display": "91", "missing_lines": 0, "excluded_lines": 0, "num_branches": 10, "num_partial_branches": 2, "covered_branches": 8, "missing_branches": 2}, "missing_lines": [], "excluded_lines": [], "executed_branches": [[423, 424], [424, 425], [424, 434], [426, 427], [428, 429], [428, 430], [430, 431], [430, 432]], "missing_branches": [[423, 434], [426, 428]]}, "_get_icovars": {"executed_lines": [458, 459, 468, 470, 471, 472, 476, 477, 478, 486, 489, 491], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 6, "num_partial_branches": 0, "covered_branches": 6, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [[458, 459], [458, 489], [470, 471], [470, 486], [471, 472], [471, 476]], "missing_branches": []}, "_is_numeric": {"executed_lines": [507, 508, 509, 510, 511], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": []}, "_check_weights": {"executed_lines": [529, 530, 535, 536, 540, 541], "summary": {"covered_lines": 6, "num_statements": 7, "percent_covered": 86.66666666666667, "percent_covered_display": "87", "missing_lines": 1, "excluded_lines": 0, "num_branches": 8, "num_partial_branches": 1, "covered_branches": 7, "missing_branches": 1}, "missing_lines": [531], "excluded_lines": [], "executed_branches": [[529, -514], [529, 530], [530, 535], [535, 536], [535, 540], [540, -514], [540, 541]], "missing_branches": [[530, 531]]}, "_is_finite_positive": {"executed_lines": [548, 549, 551, 554], "summary": {"covered_lines": 4, "num_statements": 5, "percent_covered": 66.66666666666667, "percent_covered_display": "67", "missing_lines": 1, "excluded_lines": 0, "num_branches": 4, "num_partial_branches": 2, "covered_branches": 2, "missing_branches": 2}, "missing_lines": [552], "excluded_lines": [], "executed_branches": [[548, 549], [551, 554]], "missing_branches": [[548, 551], [551, 552]]}, "factorize": {"executed_lines": [570, 571, 572, 573, 574], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [[570, 571], [570, 572]], "missing_branches": []}, "wrap_factorize": {"executed_lines": [595, 596, 597, 599], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [1, 2, 3, 4, 6, 7, 8, 10, 11, 12, 15, 255, 317, 327, 360, 367, 384, 419, 437, 494, 514, 546, 557, 577], "summary": {"covered_lines": 24, "num_statements": 24, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [1, 2, 3, 4, 6, 7, 8, 10, 11, 12, 15, 96, 98, 99, 100, 101, 103, 105, 111, 113, 114, 120, 121, 123, 130, 131, 132, 135, 137, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 151, 152, 153, 154, 155, 157, 158, 159, 163, 164, 166, 177, 178, 179, 180, 181, 182, 183, 186, 187, 188, 191, 193, 194, 195, 198, 202, 203, 204, 205, 206, 209, 210, 212, 214, 215, 219, 220, 231, 232, 235, 236, 240, 255, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 314, 317, 318, 319, 320, 321, 322, 323, 324, 327, 330, 331, 332, 333, 334, 335, 336, 338, 341, 348, 351, 352, 353, 354, 355, 357, 360, 367, 369, 370, 371, 374, 376, 377, 380, 381, 384, 402, 403, 404, 405, 406, 416, 419, 420, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 434, 437, 458, 459, 468, 470, 471, 472, 476, 477, 478, 486, 489, 491, 494, 507, 508, 509, 510, 511, 514, 529, 530, 535, 536, 540, 541, 546, 548, 549, 551, 554, 557, 570, 571, 572, 573, 574, 577, 595, 596, 597, 599], "summary": {"covered_lines": 193, "num_statements": 200, "percent_covered": 93.83116883116882, "percent_covered_display": "94", "missing_lines": 7, "excluded_lines": 0, "num_branches": 108, "num_partial_branches": 10, "covered_branches": 96, "missing_branches": 12}, "missing_lines": [189, 196, 349, 361, 362, 531, 552], "excluded_lines": [], "executed_branches": [[142, 143], [142, 145], [145, 146], [145, 147], [147, 148], [147, 151], [152, 153], [152, 157], [153, 152], [153, 154], [158, 159], [158, 177], [177, 178], [177, 182], [178, 177], [178, 179], [180, 177], [180, 181], [182, 183], [182, 186], [186, 187], [186, 188], [188, 191], [193, 194], [193, 198], [195, 198], [202, 203], [202, 209], [203, 204], [205, 206], [205, 209], [209, 210], [209, 231], [214, 215], [214, 219], [219, 220], [219, 231], [235, 236], [235, 240], [303, 304], [303, 305], [305, 306], [307, 308], [307, 309], [309, 310], [309, 311], [311, 312], [311, 314], [331, 332], [331, 357], [332, 333], [332, 357], [333, 332], [333, 334], [338, 341], [338, 348], [348, 351], [352, 332], [352, 353], [353, 332], [353, 354], [354, 353], [354, 355], [374, 376], [374, 380], [402, 403], [402, 416], [403, 404], [403, 416], [404, 403], [404, 405], [423, 424], [424, 425], [424, 434], [426, 427], [428, 429], [428, 430], [430, 431], [430, 432], [458, 459], [458, 489], [470, 471], [470, 486], [471, 472], [471, 476], [529, -514], [529, 530], [530, 535], [535, 536], [535, 540], [540, -514], [540, 541], [548, 549], [551, 554], [570, 571], [570, 572]], "missing_branches": [[188, 189], [195, 196], [203, 205], [305, 307], [348, 349], [361, -360], [361, 362], [423, 434], [426, 428], [530, 531], [548, 551], [551, 552]]}}}, "pyfixest/estimation/multcomp.py": {"executed_lines": [1, 2, 4, 5, 6, 8, 9, 10, 11, 12, 14, 17, 50, 51, 52, 53, 54, 55, 59, 60, 62, 64, 65, 67, 70, 127, 130, 146, 147, 149, 150, 152, 153, 154, 156, 157, 158, 159, 164, 165, 166, 171, 172, 173, 175, 178, 180, 183, 237, 240, 256, 257, 259, 260, 261, 264, 267, 269, 272, 274, 276, 279, 287, 288, 290, 291, 293, 294, 298, 299, 301, 302, 303, 304, 308, 311, 312, 313, 319, 321, 322, 323, 325, 326, 328, 329, 330, 332, 333, 335, 336, 342, 343, 345, 346, 347, 355, 356, 358, 359, 364, 365, 366, 367, 369, 370, 371, 372, 373, 374, 378, 379], "summary": {"covered_lines": 112, "num_statements": 115, "percent_covered": 94.19354838709677, "percent_covered_display": "94", "missing_lines": 3, "excluded_lines": 0, "num_branches": 40, "num_partial_branches": 6, "covered_branches": 34, "missing_branches": 6}, "missing_lines": [56, 292, 376], "excluded_lines": [], "executed_branches": [[54, 55], [54, 62], [55, 59], [156, 157], [156, 171], [157, 158], [157, 164], [171, 172], [171, 178], [172, 173], [172, 175], [287, 288], [287, 290], [291, 293], [293, 294], [293, 298], [302, 303], [302, 325], [303, 304], [303, 308], [308, 311], [308, 321], [312, 313], [332, 333], [332, 369], [335, 336], [335, 345], [345, 346], [358, 359], [358, 366], [366, 367], [369, 370], [369, 372], [372, 373]], "missing_branches": [[55, 56], [291, 292], [312, 321], [345, 358], [366, 332], [372, 376]], "functions": {"bonferroni": {"executed_lines": [50, 51, 52, 53, 54, 55, 59, 60, 62, 64, 65, 67], "summary": {"covered_lines": 12, "num_statements": 13, "percent_covered": 88.23529411764706, "percent_covered_display": "88", "missing_lines": 1, "excluded_lines": 0, "num_branches": 4, "num_partial_branches": 1, "covered_branches": 3, "missing_branches": 1}, "missing_lines": [56], "excluded_lines": [], "executed_branches": [[54, 55], [54, 62], [55, 59]], "missing_branches": [[55, 56]]}, "rwolf": {"executed_lines": [127], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": []}, "_get_rwolf_pval": {"executed_lines": [146, 147, 149, 150, 152, 153, 154, 156, 157, 158, 159, 164, 165, 166, 171, 172, 173, 175, 178, 180], "summary": {"covered_lines": 20, "num_statements": 20, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 8, "num_partial_branches": 0, "covered_branches": 8, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [[156, 157], [156, 171], [157, 158], [157, 164], [171, 172], [171, 178], [172, 173], [172, 175]], "missing_branches": []}, "wyoung": {"executed_lines": [237], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": []}, "_get_wyoung_pval": {"executed_lines": [256, 257, 259, 260, 261, 264, 267, 269, 272, 274, 276], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": []}, "_multcomp_resample": {"executed_lines": [287, 288, 290, 291, 293, 294, 298, 299, 301, 302, 303, 304, 308, 311, 312, 313, 319, 321, 322, 323, 325, 326, 328, 329, 330, 332, 333, 335, 336, 342, 343, 345, 346, 347, 355, 356, 358, 359, 364, 365, 366, 367, 369, 370, 371, 372, 373, 374, 378, 379], "summary": {"covered_lines": 50, "num_statements": 52, "percent_covered": 91.25, "percent_covered_display": "91", "missing_lines": 2, "excluded_lines": 0, "num_branches": 28, "num_partial_branches": 5, "covered_branches": 23, "missing_branches": 5}, "missing_lines": [292, 376], "excluded_lines": [], "executed_branches": [[287, 288], [287, 290], [291, 293], [293, 294], [293, 298], [302, 303], [302, 325], [303, 304], [303, 308], [308, 311], [308, 321], [312, 313], [332, 333], [332, 369], [335, 336], [335, 345], [345, 346], [358, 359], [358, 366], [366, 367], [369, 370], [369, 372], [372, 373]], "missing_branches": [[291, 292], [312, 321], [345, 358], [366, 332], [372, 376]]}, "": {"executed_lines": [1, 2, 4, 5, 6, 8, 9, 10, 11, 12, 14, 17, 70, 130, 183, 240, 279], "summary": {"covered_lines": 17, "num_statements": 17, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [1, 2, 4, 5, 6, 8, 9, 10, 11, 12, 14, 17, 50, 51, 52, 53, 54, 55, 59, 60, 62, 64, 65, 67, 70, 127, 130, 146, 147, 149, 150, 152, 153, 154, 156, 157, 158, 159, 164, 165, 166, 171, 172, 173, 175, 178, 180, 183, 237, 240, 256, 257, 259, 260, 261, 264, 267, 269, 272, 274, 276, 279, 287, 288, 290, 291, 293, 294, 298, 299, 301, 302, 303, 304, 308, 311, 312, 313, 319, 321, 322, 323, 325, 326, 328, 329, 330, 332, 333, 335, 336, 342, 343, 345, 346, 347, 355, 356, 358, 359, 364, 365, 366, 367, 369, 370, 371, 372, 373, 374, 378, 379], "summary": {"covered_lines": 112, "num_statements": 115, "percent_covered": 94.19354838709677, "percent_covered_display": "94", "missing_lines": 3, "excluded_lines": 0, "num_branches": 40, "num_partial_branches": 6, "covered_branches": 34, "missing_branches": 6}, "missing_lines": [56, 292, 376], "excluded_lines": [], "executed_branches": [[54, 55], [54, 62], [55, 59], [156, 157], [156, 171], [157, 158], [157, 164], [171, 172], [171, 178], [172, 173], [172, 175], [287, 288], [287, 290], [291, 293], [293, 294], [293, 298], [302, 303], [302, 325], [303, 304], [303, 308], [308, 311], [308, 321], [312, 313], [332, 333], [332, 369], [335, 336], [335, 345], [345, 346], [358, 359], [358, 366], [366, 367], [369, 370], [369, 372], [372, 373]], "missing_branches": [[55, 56], [291, 292], [312, 321], [345, 358], [366, 332], [372, 376]]}}}, "pyfixest/estimation/numba/find_collinear_variables_nb.py": {"executed_lines": [19, 20, 23, 24], "summary": {"covered_lines": 4, "num_statements": 34, "percent_covered": 7.6923076923076925, "percent_covered_display": "8", "missing_lines": 30, "excluded_lines": 0, "num_branches": 18, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 18}, "missing_lines": [47, 48, 49, 50, 51, 53, 54, 55, 56, 57, 58, 60, 61, 62, 64, 65, 66, 68, 70, 71, 73, 74, 76, 77, 78, 79, 80, 81, 82, 84], "excluded_lines": [], "executed_branches": [], "missing_branches": [[53, 54], [53, 84], [55, 56], [55, 60], [56, 57], [56, 58], [60, 61], [60, 70], [64, 65], [64, 68], [70, 71], [70, 73], [76, 53], [76, 77], [78, 79], [78, 82], [79, 80], [79, 81]], "functions": {"_find_collinear_variables_nb": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 30, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 30, "excluded_lines": 0, "num_branches": 18, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 18}, "missing_lines": [47, 48, 49, 50, 51, 53, 54, 55, 56, 57, 58, 60, 61, 62, 64, 65, 66, 68, 70, 71, 73, 74, 76, 77, 78, 79, 80, 81, 82, 84], "excluded_lines": [], "executed_branches": [], "missing_branches": [[53, 54], [53, 84], [55, 56], [55, 60], [56, 57], [56, 58], [60, 61], [60, 70], [64, 65], [64, 68], [70, 71], [70, 73], [76, 53], [76, 77], [78, 79], [78, 82], [79, 80], [79, 81]]}, "": {"executed_lines": [19, 20, 23, 24], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [19, 20, 23, 24], "summary": {"covered_lines": 4, "num_statements": 34, "percent_covered": 7.6923076923076925, "percent_covered_display": "8", "missing_lines": 30, "excluded_lines": 0, "num_branches": 18, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 18}, "missing_lines": [47, 48, 49, 50, 51, 53, 54, 55, 56, 57, 58, 60, 61, 62, 64, 65, 66, 68, 70, 71, 73, 74, 76, 77, 78, 79, 80, 81, 82, 84], "excluded_lines": [], "executed_branches": [], "missing_branches": [[53, 54], [53, 84], [55, 56], [55, 60], [56, 57], [56, 58], [60, 61], [60, 70], [64, 65], [64, 68], [70, 71], [70, 73], [76, 53], [76, 77], [78, 79], [78, 82], [79, 80], [79, 81]]}}}, "pyfixest/estimation/numba/nested_fixef_nb.py": {"executed_lines": [1, 2, 5, 6, 62, 63], "summary": {"covered_lines": 6, "num_statements": 37, "percent_covered": 11.320754716981131, "percent_covered_display": "11", "missing_lines": 31, "excluded_lines": 0, "num_branches": 16, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 16}, "missing_lines": [35, 36, 38, 39, 41, 42, 43, 44, 45, 46, 47, 49, 50, 51, 52, 53, 54, 55, 56, 57, 59, 80, 81, 82, 83, 84, 85, 86, 87, 88, 90], "excluded_lines": [], "executed_branches": [], "missing_branches": [[38, 39], [38, 59], [42, 43], [42, 49], [43, 42], [43, 44], [49, 38], [49, 50], [50, 38], [50, 51], [54, 50], [54, 55], [83, 84], [83, 88], [86, 83], [86, 87]], "functions": {"_count_fixef_fully_nested_all": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 21, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 21, "excluded_lines": 0, "num_branches": 12, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 12}, "missing_lines": [35, 36, 38, 39, 41, 42, 43, 44, 45, 46, 47, 49, 50, 51, 52, 53, 54, 55, 56, 57, 59], "excluded_lines": [], "executed_branches": [], "missing_branches": [[38, 39], [38, 59], [42, 43], [42, 49], [43, 42], [43, 44], [49, 38], [49, 50], [50, 38], [50, 51], [54, 50], [54, 55]]}, "_count_fixef_fully_nested": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 10, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 10, "excluded_lines": 0, "num_branches": 4, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 4}, "missing_lines": [80, 81, 82, 83, 84, 85, 86, 87, 88, 90], "excluded_lines": [], "executed_branches": [], "missing_branches": [[83, 84], [83, 88], [86, 83], [86, 87]]}, "": {"executed_lines": [1, 2, 5, 6, 62, 63], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [1, 2, 5, 6, 62, 63], "summary": {"covered_lines": 6, "num_statements": 37, "percent_covered": 11.320754716981131, "percent_covered_display": "11", "missing_lines": 31, "excluded_lines": 0, "num_branches": 16, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 16}, "missing_lines": [35, 36, 38, 39, 41, 42, 43, 44, 45, 46, 47, 49, 50, 51, 52, 53, 54, 55, 56, 57, 59, 80, 81, 82, 83, 84, 85, 86, 87, 88, 90], "excluded_lines": [], "executed_branches": [], "missing_branches": [[38, 39], [38, 59], [42, 43], [42, 49], [43, 42], [43, 44], [49, 38], [49, 50], [50, 38], [50, 51], [54, 50], [54, 55], [83, 84], [83, 88], [86, 83], [86, 87]]}}}, "pyfixest/estimation/prediction.py": {"executed_lines": [1, 2, 3, 5, 6, 7, 8, 10, 15, 39, 52, 54, 55, 56, 60, 61, 62, 67, 69, 70, 71, 74, 75, 78, 79, 80, 82, 85, 105, 107, 108, 109, 111, 114, 117, 118, 124, 127, 128, 129, 130, 133, 134, 135, 137, 138, 140, 143, 144, 145, 146, 147, 148, 150, 153, 169, 172, 198, 200, 202, 203, 204, 205, 206, 209, 213], "summary": {"covered_lines": 65, "num_statements": 75, "percent_covered": 87.09677419354838, "percent_covered_display": "87", "missing_lines": 10, "excluded_lines": 1, "num_branches": 18, "num_partial_branches": 2, "covered_branches": 16, "missing_branches": 2}, "missing_lines": [40, 41, 42, 43, 45, 46, 47, 48, 64, 65], "excluded_lines": [56], "executed_branches": [[39, 52], [54, 55], [54, 78], [60, 61], [107, 108], [107, 140], [108, 109], [108, 111], [117, 118], [117, 124], [128, 129], [128, 137], [133, 134], [133, 135], [145, 146], [145, 150]], "missing_branches": [[39, 40], [60, 64]], "functions": {"get_design_matrix_and_yhat": {"executed_lines": [39, 52, 54, 55, 56, 60, 61, 62, 67, 69, 70, 71, 74, 75, 78, 79, 80, 82], "summary": {"covered_lines": 17, "num_statements": 27, "percent_covered": 63.63636363636363, "percent_covered_display": "64", "missing_lines": 10, "excluded_lines": 1, "num_branches": 6, "num_partial_branches": 2, "covered_branches": 4, "missing_branches": 2}, "missing_lines": [40, 41, 42, 43, 45, 46, 47, 48, 64, 65], "excluded_lines": [56], "executed_branches": [[39, 52], [54, 55], [54, 78], [60, 61]], "missing_branches": [[39, 40], [60, 64]]}, "_get_fixed_effects_prediction_component": {"executed_lines": [105, 107, 108, 109, 111, 114, 117, 118, 124, 127, 128, 129, 130, 133, 134, 135, 137, 138, 140], "summary": {"covered_lines": 19, "num_statements": 19, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 10, "num_partial_branches": 0, "covered_branches": 10, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [[107, 108], [107, 140], [108, 109], [108, 111], [117, 118], [117, 124], [128, 129], [128, 137], [133, 134], [133, 135]], "missing_branches": []}, "_apply_fixef_numpy": {"executed_lines": [144, 145, 146, 147, 148, 150], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [[145, 146], [145, 150]], "missing_branches": []}, "_get_prediction_se": {"executed_lines": [169], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": []}, "_compute_prediction_error": {"executed_lines": [198, 200, 202, 203, 204, 205, 206, 209, 213], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [1, 2, 3, 5, 6, 7, 8, 10, 15, 85, 143, 153, 172], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [1, 2, 3, 5, 6, 7, 8, 10, 15, 39, 52, 54, 55, 56, 60, 61, 62, 67, 69, 70, 71, 74, 75, 78, 79, 80, 82, 85, 105, 107, 108, 109, 111, 114, 117, 118, 124, 127, 128, 129, 130, 133, 134, 135, 137, 138, 140, 143, 144, 145, 146, 147, 148, 150, 153, 169, 172, 198, 200, 202, 203, 204, 205, 206, 209, 213], "summary": {"covered_lines": 65, "num_statements": 75, "percent_covered": 87.09677419354838, "percent_covered_display": "87", "missing_lines": 10, "excluded_lines": 1, "num_branches": 18, "num_partial_branches": 2, "covered_branches": 16, "missing_branches": 2}, "missing_lines": [40, 41, 42, 43, 45, 46, 47, 48, 64, 65], "excluded_lines": [56], "executed_branches": [[39, 52], [54, 55], [54, 78], [60, 61], [107, 108], [107, 140], [108, 109], [108, 111], [117, 118], [117, 124], [128, 129], [128, 137], [133, 134], [133, 135], [145, 146], [145, 150]], "missing_branches": [[39, 40], [60, 64]]}}}, "pyfixest/estimation/quantreg/QuantregMulti.py": {"executed_lines": [1, 2, 3, 4, 6, 7, 8, 10, 11, 16, 17, 18, 21, 22, 24, 52, 53, 55, 56, 63, 64, 67, 68, 69, 73, 74, 75, 77, 79, 82, 83, 85, 88, 90, 93, 94, 95, 96, 97, 101, 107, 108, 109, 111, 112, 115, 117, 118, 119, 120, 121, 127, 129, 131, 132, 134, 135, 138, 139, 140, 142, 143, 145, 146, 183, 186, 188, 195, 200, 202, 204, 206, 208, 210, 212, 214, 216, 218, 220, 224, 228, 233, 235, 236, 237, 238, 239, 240, 241, 243], "summary": {"covered_lines": 89, "num_statements": 115, "percent_covered": 74.12587412587412, "percent_covered_display": "74", "missing_lines": 26, "excluded_lines": 0, "num_branches": 28, "num_partial_branches": 5, "covered_branches": 17, "missing_branches": 11}, "missing_lines": [54, 86, 123, 148, 150, 151, 153, 154, 156, 157, 158, 159, 161, 162, 164, 165, 169, 171, 172, 174, 175, 178, 222, 226, 230, 231], "excluded_lines": [], "executed_branches": [[53, 55], [85, 88], [107, 108], [107, 109], [118, 119], [118, 120], [120, 121], [129, 131], [142, 143], [142, 145], [145, 146], [145, 183], [237, 238], [237, 241], [238, 237], [238, 239], [239, 240]], "missing_branches": [[53, 54], [85, 86], [120, 123], [129, 148], [148, 150], [148, 178], [171, 172], [171, 174], [174, 175], [174, 183], [239, 238]], "functions": {"QuantregMulti.__init__": {"executed_lines": [52, 53, 55, 56, 63, 64, 67, 68, 69, 73, 74, 75, 77], "summary": {"covered_lines": 13, "num_statements": 14, "percent_covered": 87.5, "percent_covered_display": "88", "missing_lines": 1, "excluded_lines": 0, "num_branches": 2, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 1}, "missing_lines": [54], "excluded_lines": [], "executed_branches": [[53, 55]], "missing_branches": [[53, 54]]}, "QuantregMulti.get_fit": {"executed_lines": [82, 83, 85, 88, 90, 93, 94, 95, 96, 97, 101, 107, 108, 109, 111, 112, 115, 117, 129, 131, 142, 143, 145, 146, 183, 186], "summary": {"covered_lines": 26, "num_statements": 46, "percent_covered": 54.83870967741935, "percent_covered_display": "55", "missing_lines": 20, "excluded_lines": 0, "num_branches": 16, "num_partial_branches": 2, "covered_branches": 8, "missing_branches": 8}, "missing_lines": [86, 148, 150, 151, 153, 154, 156, 157, 158, 159, 161, 162, 164, 165, 169, 171, 172, 174, 175, 178], "excluded_lines": [], "executed_branches": [[85, 88], [107, 108], [107, 109], [129, 131], [142, 143], [142, 145], [145, 146], [145, 183]], "missing_branches": [[85, 86], [129, 148], [148, 150], [148, 178], [171, 172], [171, 174], [174, 175], [174, 183]]}, "QuantregMulti.get_fit._direction_helper": {"executed_lines": [118, 119, 120, 121, 127], "summary": {"covered_lines": 5, "num_statements": 6, "percent_covered": 80.0, "percent_covered_display": "80", "missing_lines": 1, "excluded_lines": 0, "num_branches": 4, "num_partial_branches": 1, "covered_branches": 3, "missing_branches": 1}, "missing_lines": [123], "excluded_lines": [], "executed_branches": [[118, 119], [118, 120], [120, 121]], "missing_branches": [[120, 123]]}, "QuantregMulti.get_fit._cfm1_fun": {"executed_lines": [132, 134, 135, 138, 139, 140], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": []}, "QuantregMulti.vcov": {"executed_lines": [195, 200], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": []}, "QuantregMulti.get_inference": {"executed_lines": [204, 206], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": []}, "QuantregMulti.prepare_model_matrix": {"executed_lines": [210], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": []}, "QuantregMulti.to_array": {"executed_lines": [214], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": []}, "QuantregMulti.drop_multicol_vars": {"executed_lines": [218], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": []}, "QuantregMulti.wls_transform": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [222], "excluded_lines": [], "executed_branches": [], "missing_branches": []}, "QuantregMulti.demean": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [226], "excluded_lines": [], "executed_branches": [], "missing_branches": []}, "QuantregMulti.get_performance": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 2, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [230, 231], "excluded_lines": [], "executed_branches": [], "missing_branches": []}, "QuantregMulti._clear_attributes": {"executed_lines": [235, 236, 237, 238, 239, 240, 241, 243], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 92.85714285714286, "percent_covered_display": "93", "missing_lines": 0, "excluded_lines": 0, "num_branches": 6, "num_partial_branches": 1, "covered_branches": 5, "missing_branches": 1}, "missing_lines": [], "excluded_lines": [], "executed_branches": [[237, 238], [237, 241], [238, 237], [238, 239], [239, 240]], "missing_branches": [[239, 238]]}, "": {"executed_lines": [1, 2, 3, 4, 6, 7, 8, 10, 11, 16, 17, 18, 21, 22, 24, 79, 188, 202, 208, 212, 216, 220, 224, 228, 233], "summary": {"covered_lines": 24, "num_statements": 24, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": []}}, "classes": {"QuantregMulti": {"executed_lines": [52, 53, 55, 56, 63, 64, 67, 68, 69, 73, 74, 75, 77, 82, 83, 85, 88, 90, 93, 94, 95, 96, 97, 101, 107, 108, 109, 111, 112, 115, 117, 118, 119, 120, 121, 127, 129, 131, 132, 134, 135, 138, 139, 140, 142, 143, 145, 146, 183, 186, 195, 200, 204, 206, 210, 214, 218, 235, 236, 237, 238, 239, 240, 241, 243], "summary": {"covered_lines": 65, "num_statements": 91, "percent_covered": 68.90756302521008, "percent_covered_display": "69", "missing_lines": 26, "excluded_lines": 0, "num_branches": 28, "num_partial_branches": 5, "covered_branches": 17, "missing_branches": 11}, "missing_lines": [54, 86, 123, 148, 150, 151, 153, 154, 156, 157, 158, 159, 161, 162, 164, 165, 169, 171, 172, 174, 175, 178, 222, 226, 230, 231], "excluded_lines": [], "executed_branches": [[53, 55], [85, 88], [107, 108], [107, 109], [118, 119], [118, 120], [120, 121], [129, 131], [142, 143], [142, 145], [145, 146], [145, 183], [237, 238], [237, 241], [238, 237], [238, 239], [239, 240]], "missing_branches": [[53, 54], [85, 86], [120, 123], [129, 148], [148, 150], [148, 178], [171, 172], [171, 174], [174, 175], [174, 183], [239, 238]]}, "": {"executed_lines": [1, 2, 3, 4, 6, 7, 8, 10, 11, 16, 17, 18, 21, 22, 24, 79, 188, 202, 208, 212, 216, 220, 224, 228, 233], "summary": {"covered_lines": 24, "num_statements": 24, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": []}}}, "pyfixest/estimation/quantreg/__init__.py": {"executed_lines": [1, 3], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": [], "functions": {"": {"executed_lines": [1, 3], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [1, 3], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": []}}}, "pyfixest/estimation/quantreg/frisch_newton_ip.py": {"executed_lines": [1, 3, 4, 7, 8, 11, 12, 13, 14, 15, 16, 19, 20, 21, 22, 25, 28, 30, 31, 32, 34, 35, 36, 42, 45, 49, 50, 53, 54, 55, 56, 57, 58, 59, 61, 62, 64, 65, 67, 70, 94, 95, 96, 97, 99, 101, 102, 103, 105, 108, 110, 113, 114, 115, 116, 117, 119, 120, 121, 122, 123, 125, 126, 127, 128, 129, 131, 132, 133, 134, 135, 138, 139, 140, 145, 147, 149, 150, 151, 152, 155, 156, 159, 160, 161, 162, 165, 166, 167, 168, 171, 172, 175, 176, 177, 178, 179, 181, 183, 184, 185, 188, 192, 194, 195, 196, 197, 198, 201, 204, 209, 210, 211, 212, 213, 216, 218], "summary": {"covered_lines": 117, "num_statements": 118, "percent_covered": 98.4375, "percent_covered_display": "98", "missing_lines": 1, "excluded_lines": 0, "num_branches": 10, "num_partial_branches": 1, "covered_branches": 9, "missing_branches": 1}, "missing_lines": [141], "excluded_lines": [], "executed_branches": [[13, 14], [13, 15], [139, 140], [139, 145], [140, 139], [149, 150], [149, 218], [150, 151], [150, 155]], "missing_branches": [[140, 141]], "functions": {"_duality_gap": {"executed_lines": [8], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": []}, "_bound": {"executed_lines": [12, 13, 14, 15, 16], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [[13, 14], [13, 15]], "missing_branches": []}, "_step_length": {"executed_lines": [20, 21, 22], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": []}, "_solve_ADAt": {"executed_lines": [28, 30, 31, 32, 34, 35, 36, 42], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": []}, "cold_start": {"executed_lines": [49, 50, 53, 54, 55, 56, 57, 58, 59, 61, 62, 64, 65, 67], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": []}, "frisch_newton_solver": {"executed_lines": [94, 95, 96, 97, 99, 101, 102, 103, 105, 108, 110, 113, 114, 115, 116, 117, 119, 120, 121, 122, 123, 125, 126, 127, 128, 129, 131, 132, 133, 134, 135, 138, 139, 140, 145, 147, 149, 150, 151, 152, 155, 156, 159, 160, 161, 162, 165, 166, 167, 168, 171, 172, 175, 176, 177, 178, 179, 181, 183, 184, 185, 188, 192, 194, 195, 196, 197, 198, 201, 204, 209, 210, 211, 212, 213, 216, 218], "summary": {"covered_lines": 77, "num_statements": 78, "percent_covered": 97.67441860465117, "percent_covered_display": "98", "missing_lines": 1, "excluded_lines": 0, "num_branches": 8, "num_partial_branches": 1, "covered_branches": 7, "missing_branches": 1}, "missing_lines": [141], "excluded_lines": [], "executed_branches": [[139, 140], [139, 145], [140, 139], [149, 150], [149, 218], [150, 151], [150, 155]], "missing_branches": [[140, 141]]}, "": {"executed_lines": [1, 3, 4, 7, 11, 19, 25, 45, 70], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [1, 3, 4, 7, 8, 11, 12, 13, 14, 15, 16, 19, 20, 21, 22, 25, 28, 30, 31, 32, 34, 35, 36, 42, 45, 49, 50, 53, 54, 55, 56, 57, 58, 59, 61, 62, 64, 65, 67, 70, 94, 95, 96, 97, 99, 101, 102, 103, 105, 108, 110, 113, 114, 115, 116, 117, 119, 120, 121, 122, 123, 125, 126, 127, 128, 129, 131, 132, 133, 134, 135, 138, 139, 140, 145, 147, 149, 150, 151, 152, 155, 156, 159, 160, 161, 162, 165, 166, 167, 168, 171, 172, 175, 176, 177, 178, 179, 181, 183, 184, 185, 188, 192, 194, 195, 196, 197, 198, 201, 204, 209, 210, 211, 212, 213, 216, 218], "summary": {"covered_lines": 117, "num_statements": 118, "percent_covered": 98.4375, "percent_covered_display": "98", "missing_lines": 1, "excluded_lines": 0, "num_branches": 10, "num_partial_branches": 1, "covered_branches": 9, "missing_branches": 1}, "missing_lines": [141], "excluded_lines": [], "executed_branches": [[13, 14], [13, 15], [139, 140], [139, 145], [140, 139], [149, 150], [149, 218], [150, 151], [150, 155]], "missing_branches": [[140, 141]]}}}, "pyfixest/estimation/quantreg/quantreg_.py": {"executed_lines": [1, 2, 3, 4, 6, 7, 8, 9, 10, 12, 13, 14, 18, 21, 22, 25, 26, 28, 55, 77, 85, 86, 87, 88, 90, 91, 92, 93, 95, 101, 102, 104, 107, 108, 110, 143, 144, 145, 146, 147, 149, 151, 157, 159, 161, 162, 166, 168, 170, 171, 172, 173, 174, 175, 176, 177, 179, 180, 182, 183, 184, 186, 205, 206, 207, 208, 209, 213, 214, 215, 219, 233, 234, 236, 237, 241, 243, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 279, 280, 282, 283, 286, 287, 288, 290, 291, 293, 294, 299, 301, 303, 304, 306, 307, 309, 310, 312, 313, 314, 315, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 329, 330, 332, 335, 336, 337, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 351, 352, 354, 359, 361, 363, 364, 365, 366, 367, 369, 372, 373, 374, 377, 379, 380, 382, 384, 386, 387, 388, 389, 390, 392, 394, 395, 396, 399, 401, 402, 403, 405, 407, 415, 416, 417, 419, 421, 427, 436, 438, 440, 443, 444, 445, 446, 448, 450, 455, 456, 460, 461, 462, 463, 466, 467, 468, 470, 474, 476, 477, 479, 481, 488, 489], "summary": {"covered_lines": 202, "num_statements": 227, "percent_covered": 86.89138576779027, "percent_covered_display": "87", "missing_lines": 25, "excluded_lines": 2, "num_branches": 40, "num_partial_branches": 4, "covered_branches": 30, "missing_branches": 10}, "missing_lines": [355, 484, 497, 499, 500, 501, 503, 505, 506, 507, 508, 510, 511, 513, 514, 515, 516, 517, 518, 519, 520, 522, 523, 525, 527], "excluded_lines": [162, 456], "executed_branches": [[206, 207], [206, 208], [208, 209], [208, 213], [236, 237], [236, 241], [266, 267], [266, 268], [268, 269], [270, 271], [270, 272], [272, 273], [272, 274], [274, 275], [276, 277], [276, 279], [290, 291], [290, 354], [291, 293], [291, 299], [312, 313], [317, 318], [317, 322], [322, 323], [322, 329], [339, 340], [339, 342], [342, 343], [342, 351], [354, 359]], "missing_branches": [[268, 270], [274, 276], [312, 290], [354, 355], [505, 506], [505, 525], [514, 505], [514, 515], [517, 518], [517, 522]], "functions": {"Quantreg.__init__": {"executed_lines": [55, 77, 85, 86, 87, 88, 90, 91, 92, 93, 95, 101, 102, 104, 107, 108, 110, 143, 144, 145, 146, 147], "summary": {"covered_lines": 22, "num_statements": 22, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": []}, "Quantreg.to_array": {"executed_lines": [151], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": []}, "Quantreg.prepare_model_matrix": {"executed_lines": [159, 161, 162], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 1, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [162], "executed_branches": [], "missing_branches": []}, "Quantreg.get_fit": {"executed_lines": [168, 170, 171, 172, 173, 174, 175, 176, 177, 179, 180, 182, 183, 184], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": []}, "Quantreg.fit_qreg_fn": {"executed_lines": [205, 206, 207, 208, 209, 213, 214, 215, 219, 233, 234, 236, 237, 241], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 6, "num_partial_branches": 0, "covered_branches": 6, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [[206, 207], [206, 208], [208, 209], [208, 213], [236, 237], [236, 241]], "missing_branches": []}, "Quantreg.fit_qreg_pfn": {"executed_lines": [265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 279, 280, 282, 283, 286, 287, 288, 290, 291, 293, 294, 299, 301, 303, 304, 306, 307, 309, 310, 312, 313, 314, 315, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 329, 330, 332, 335, 336, 337, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 351, 352, 354, 359], "summary": {"covered_lines": 66, "num_statements": 67, "percent_covered": 94.73684210526316, "percent_covered_display": "95", "missing_lines": 1, "excluded_lines": 0, "num_branches": 28, "num_partial_branches": 4, "covered_branches": 24, "missing_branches": 4}, "missing_lines": [355], "excluded_lines": [], "executed_branches": [[266, 267], [266, 268], [268, 269], [270, 271], [270, 272], [272, 273], [272, 274], [274, 275], [276, 277], [276, 279], [290, 291], [290, 354], [291, 293], [291, 299], [312, 313], [317, 318], [317, 322], [322, 323], [322, 329], [339, 340], [339, 342], [342, 343], [342, 351], [354, 359]], "missing_branches": [[268, 270], [274, 276], [312, 290], [354, 355]]}, "Quantreg._vcov_iid": {"executed_lines": [363, 364, 365, 366, 367, 369, 372, 373, 374, 377, 379, 380, 382], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": []}, "Quantreg._vcov_hetero": {"executed_lines": [386, 387, 388, 389, 390, 392, 394, 395, 396, 399, 401, 402, 403, 405], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": []}, "Quantreg._vcov_nid": {"executed_lines": [415, 416, 417, 419, 421, 427, 436, 438, 440, 443, 444, 445, 446, 448], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": []}, "Quantreg._vcov_crv1": {"executed_lines": [455, 456, 460, 461, 462, 463, 466, 467, 468, 470, 474], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 1, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [456], "executed_branches": [], "missing_branches": []}, "Quantreg.objective_value": {"executed_lines": [479], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": []}, "Quantreg.get_performance": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [484], "excluded_lines": [], "executed_branches": [], "missing_branches": []}, "_crv1_vcov_loop": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 23, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 23, "excluded_lines": 0, "num_branches": 6, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 6}, "missing_lines": [497, 499, 500, 501, 503, 505, 506, 507, 508, 510, 511, 513, 514, 515, 516, 517, 518, 519, 520, 522, 523, 525, 527], "excluded_lines": [], "executed_branches": [], "missing_branches": [[505, 506], [505, 525], [514, 505], [514, 515], [517, 518], [517, 522]]}, "": {"executed_lines": [1, 2, 3, 4, 6, 7, 8, 9, 10, 12, 13, 14, 18, 21, 22, 25, 26, 28, 149, 157, 166, 186, 243, 361, 384, 407, 450, 476, 477, 481, 488, 489], "summary": {"covered_lines": 31, "num_statements": 31, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": []}}, "classes": {"Quantreg": {"executed_lines": [55, 77, 85, 86, 87, 88, 90, 91, 92, 93, 95, 101, 102, 104, 107, 108, 110, 143, 144, 145, 146, 147, 151, 159, 161, 162, 168, 170, 171, 172, 173, 174, 175, 176, 177, 179, 180, 182, 183, 184, 205, 206, 207, 208, 209, 213, 214, 215, 219, 233, 234, 236, 237, 241, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 279, 280, 282, 283, 286, 287, 288, 290, 291, 293, 294, 299, 301, 303, 304, 306, 307, 309, 310, 312, 313, 314, 315, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 329, 330, 332, 335, 336, 337, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 351, 352, 354, 359, 363, 364, 365, 366, 367, 369, 372, 373, 374, 377, 379, 380, 382, 386, 387, 388, 389, 390, 392, 394, 395, 396, 399, 401, 402, 403, 405, 415, 416, 417, 419, 421, 427, 436, 438, 440, 443, 444, 445, 446, 448, 455, 456, 460, 461, 462, 463, 466, 467, 468, 470, 474, 479], "summary": {"covered_lines": 171, "num_statements": 173, "percent_covered": 97.10144927536231, "percent_covered_display": "97", "missing_lines": 2, "excluded_lines": 2, "num_branches": 34, "num_partial_branches": 4, "covered_branches": 30, "missing_branches": 4}, "missing_lines": [355, 484], "excluded_lines": [162, 456], "executed_branches": [[206, 207], [206, 208], [208, 209], [208, 213], [236, 237], [236, 241], [266, 267], [266, 268], [268, 269], [270, 271], [270, 272], [272, 273], [272, 274], [274, 275], [276, 277], [276, 279], [290, 291], [290, 354], [291, 293], [291, 299], [312, 313], [317, 318], [317, 322], [322, 323], [322, 329], [339, 340], [339, 342], [342, 343], [342, 351], [354, 359]], "missing_branches": [[268, 270], [274, 276], [312, 290], [354, 355]]}, "": {"executed_lines": [1, 2, 3, 4, 6, 7, 8, 9, 10, 12, 13, 14, 18, 21, 22, 25, 26, 28, 149, 157, 166, 186, 243, 361, 384, 407, 450, 476, 477, 481, 488, 489], "summary": {"covered_lines": 31, "num_statements": 54, "percent_covered": 51.666666666666664, "percent_covered_display": "52", "missing_lines": 23, "excluded_lines": 0, "num_branches": 6, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 6}, "missing_lines": [497, 499, 500, 501, 503, 505, 506, 507, 508, 510, 511, 513, 514, 515, 516, 517, 518, 519, 520, 522, 523, 525, 527], "excluded_lines": [], "executed_branches": [], "missing_branches": [[505, 506], [505, 525], [514, 505], [514, 515], [517, 518], [517, 522]]}}}, "pyfixest/estimation/quantreg/utils.py": {"executed_lines": [1, 4, 6, 7, 9, 15], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": [], "functions": {"get_hall_sheather_bandwidth": {"executed_lines": [6, 7, 9, 15], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [1, 4], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [1, 4, 6, 7, 9, 15], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": []}}}, "pyfixest/estimation/ritest.py": {"executed_lines": [1, 2, 4, 5, 6, 7, 8, 11, 12, 24, 25, 26, 28, 29, 31, 34, 35, 38, 83, 84, 86, 87, 89, 91, 93, 94, 101, 103, 104, 105, 107, 109, 112, 158, 159, 161, 162, 163, 164, 166, 167, 169, 171, 173, 174, 175, 177, 179, 180, 182, 184, 196, 197, 256, 257, 305, 306, 332, 333, 342, 353, 354, 356, 357, 358, 359, 367, 368, 369, 370, 372, 375, 379, 381, 382, 383, 385, 402, 412, 415, 432, 433, 434, 435, 436, 437, 438, 439, 440, 445, 446, 447, 448, 450, 452], "summary": {"covered_lines": 95, "num_statements": 141, "percent_covered": 64.80446927374301, "percent_covered_display": "65", "missing_lines": 46, "excluded_lines": 0, "num_branches": 38, "num_partial_branches": 5, "covered_branches": 21, "missing_branches": 17}, "missing_lines": [235, 237, 239, 240, 247, 249, 253, 286, 287, 289, 290, 291, 293, 294, 295, 298, 302, 324, 325, 326, 327, 328, 329, 335, 336, 337, 338, 339, 360, 361, 363, 386, 387, 388, 390, 400, 403, 404, 405, 406, 407, 408, 409, 441, 442, 443], "excluded_lines": [], "executed_branches": [[34, 35], [34, 38], [93, 94], [93, 109], [104, 105], [104, 107], [161, 162], [161, 171], [163, 164], [163, 166], [166, 167], [356, 357], [356, 358], [358, 359], [385, 402], [402, 412], [432, 433], [432, 436], [436, 437], [436, 440], [440, 445]], "missing_branches": [[166, 169], [239, 240], [239, 253], [289, 290], [289, 298], [293, 294], [293, 302], [326, 327], [326, 329], [358, 360], [360, 361], [360, 363], [385, 386], [386, 387], [386, 390], [402, 403], [440, 441]], "functions": {"_get_ritest_stats_slow": {"executed_lines": [83, 84, 86, 87, 89, 91, 93, 94, 101, 103, 104, 105, 107, 109], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [[93, 94], [93, 109], [104, 105], [104, 107]], "missing_branches": []}, "_get_ritest_stats_fast": {"executed_lines": [158, 159, 161, 162, 163, 164, 166, 167, 169, 171, 173, 174, 175, 177, 179, 180, 182, 184], "summary": {"covered_lines": 18, "num_statements": 18, "percent_covered": 95.83333333333333, "percent_covered_display": "96", "missing_lines": 0, "excluded_lines": 0, "num_branches": 6, "num_partial_branches": 1, "covered_branches": 5, "missing_branches": 1}, "missing_lines": [], "excluded_lines": [], "executed_branches": [[161, 162], [161, 171], [163, 164], [163, 166], [166, 167]], "missing_branches": [[166, 169]]}, "_run_ri": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 7, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 7, "excluded_lines": 0, "num_branches": 2, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 2}, "missing_lines": [235, 237, 239, 240, 247, 249, 253], "excluded_lines": [], "executed_branches": [], "missing_branches": [[239, 240], [239, 253]]}, "_resample": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 10, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 10, "excluded_lines": 0, "num_branches": 4, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 4}, "missing_lines": [286, 287, 289, 290, 291, 293, 294, 295, 298, 302], "excluded_lines": [], "executed_branches": [], "missing_branches": [[289, 290], [289, 298], [293, 294], [293, 302]]}, "random_choice": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 6, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 6, "excluded_lines": 0, "num_branches": 2, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 2}, "missing_lines": [324, 325, 326, 327, 328, 329], "excluded_lines": [], "executed_branches": [], "missing_branches": [[326, 327], [326, 329]]}, "lstsq_numba": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 5, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 5, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [335, 336, 337, 338, 339], "excluded_lines": [], "executed_branches": [], "missing_branches": []}, "_get_ritest_pvalue": {"executed_lines": [353, 354, 356, 357, 358, 359, 367, 368, 369, 370, 372], "summary": {"covered_lines": 11, "num_statements": 14, "percent_covered": 70.0, "percent_covered_display": "70", "missing_lines": 3, "excluded_lines": 0, "num_branches": 6, "num_partial_branches": 1, "covered_branches": 3, "missing_branches": 3}, "missing_lines": [360, 361, 363], "excluded_lines": [], "executed_branches": [[356, 357], [356, 358], [358, 359]], "missing_branches": [[358, 360], [360, 361], [360, 363]]}, "_plot_ritest_pvalue": {"executed_lines": [379, 381, 382, 383, 385, 402, 412], "summary": {"covered_lines": 7, "num_statements": 19, "percent_covered": 36.0, "percent_covered_display": "36", "missing_lines": 12, "excluded_lines": 0, "num_branches": 6, "num_partial_branches": 2, "covered_branches": 2, "missing_branches": 4}, "missing_lines": [386, 387, 388, 390, 400, 403, 404, 405, 406, 407, 408, 409], "excluded_lines": [], "executed_branches": [[385, 402], [402, 412]], "missing_branches": [[385, 386], [386, 387], [386, 390], [402, 403]]}, "_decode_resampvar": {"executed_lines": [432, 433, 434, 435, 436, 437, 438, 439, 440, 445, 446, 447, 448, 450, 452], "summary": {"covered_lines": 15, "num_statements": 18, "percent_covered": 83.33333333333333, "percent_covered_display": "83", "missing_lines": 3, "excluded_lines": 0, "num_branches": 6, "num_partial_branches": 1, "covered_branches": 5, "missing_branches": 1}, "missing_lines": [441, 442, 443], "excluded_lines": [], "executed_branches": [[432, 433], [432, 436], [436, 437], [436, 440], [440, 445]], "missing_branches": [[440, 441]]}, "": {"executed_lines": [1, 2, 4, 5, 6, 7, 8, 11, 12, 24, 25, 26, 28, 29, 31, 34, 35, 38, 112, 196, 197, 256, 257, 305, 306, 332, 333, 342, 375, 415], "summary": {"covered_lines": 30, "num_statements": 30, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [[34, 35], [34, 38]], "missing_branches": []}}, "classes": {"": {"executed_lines": [1, 2, 4, 5, 6, 7, 8, 11, 12, 24, 25, 26, 28, 29, 31, 34, 35, 38, 83, 84, 86, 87, 89, 91, 93, 94, 101, 103, 104, 105, 107, 109, 112, 158, 159, 161, 162, 163, 164, 166, 167, 169, 171, 173, 174, 175, 177, 179, 180, 182, 184, 196, 197, 256, 257, 305, 306, 332, 333, 342, 353, 354, 356, 357, 358, 359, 367, 368, 369, 370, 372, 375, 379, 381, 382, 383, 385, 402, 412, 415, 432, 433, 434, 435, 436, 437, 438, 439, 440, 445, 446, 447, 448, 450, 452], "summary": {"covered_lines": 95, "num_statements": 141, "percent_covered": 64.80446927374301, "percent_covered_display": "65", "missing_lines": 46, "excluded_lines": 0, "num_branches": 38, "num_partial_branches": 5, "covered_branches": 21, "missing_branches": 17}, "missing_lines": [235, 237, 239, 240, 247, 249, 253, 286, 287, 289, 290, 291, 293, 294, 295, 298, 302, 324, 325, 326, 327, 328, 329, 335, 336, 337, 338, 339, 360, 361, 363, 386, 387, 388, 390, 400, 403, 404, 405, 406, 407, 408, 409, 441, 442, 443], "excluded_lines": [], "executed_branches": [[34, 35], [34, 38], [93, 94], [93, 109], [104, 105], [104, 107], [161, 162], [161, 171], [163, 164], [163, 166], [166, 167], [356, 357], [356, 358], [358, 359], [385, 402], [402, 412], [432, 433], [432, 436], [436, 437], [436, 440], [440, 445]], "missing_branches": [[166, 169], [239, 240], [239, 253], [289, 290], [289, 298], [293, 294], [293, 302], [326, 327], [326, 329], [358, 360], [360, 361], [360, 363], [385, 386], [386, 387], [386, 390], [402, 403], [440, 441]]}}}, "pyfixest/estimation/solvers.py": {"executed_lines": [1, 2, 3, 5, 10, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 44, 46], "summary": {"covered_lines": 17, "num_statements": 17, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 10, "num_partial_branches": 0, "covered_branches": 10, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [[33, 34], [33, 35], [35, 36], [35, 37], [37, 38], [37, 39], [39, 40], [39, 41], [41, 42], [41, 46]], "missing_branches": [], "functions": {"solve_ols": {"executed_lines": [33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 44, 46], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 10, "num_partial_branches": 0, "covered_branches": 10, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [[33, 34], [33, 35], [35, 36], [35, 37], [37, 38], [37, 39], [39, 40], [39, 41], [41, 42], [41, 46]], "missing_branches": []}, "": {"executed_lines": [1, 2, 3, 5, 10], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [1, 2, 3, 5, 10, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 44, 46], "summary": {"covered_lines": 17, "num_statements": 17, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 10, "num_partial_branches": 0, "covered_branches": 10, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [[33, 34], [33, 35], [35, 36], [35, 37], [37, 38], [37, 39], [39, 40], [39, 41], [41, 42], [41, 46]], "missing_branches": []}}}, "pyfixest/estimation/vcov_utils.py": {"executed_lines": [1, 3, 4, 5, 7, 8, 11, 18, 21, 22, 23, 24, 34, 37, 38, 39, 44, 45, 51, 54, 55, 56, 58, 59, 61, 64, 85, 88, 89, 130, 131, 142, 143, 158, 181, 182, 183, 184, 185, 186, 187, 188, 191, 194, 195, 260, 261, 300, 301, 302, 303, 304, 305, 309, 313, 314, 361, 362], "summary": {"covered_lines": 58, "num_statements": 144, "percent_covered": 37.77777777777778, "percent_covered_display": "38", "missing_lines": 86, "excluded_lines": 0, "num_branches": 36, "num_partial_branches": 2, "covered_branches": 10, "missing_branches": 26}, "missing_lines": [26, 46, 113, 114, 117, 118, 119, 121, 122, 124, 125, 127, 133, 134, 135, 136, 137, 139, 144, 145, 147, 148, 150, 151, 153, 227, 228, 230, 232, 233, 235, 236, 237, 241, 242, 244, 245, 247, 248, 249, 250, 251, 252, 253, 255, 257, 282, 283, 285, 286, 287, 288, 290, 292, 293, 295, 340, 341, 342, 344, 345, 346, 347, 348, 349, 351, 352, 353, 354, 355, 357, 367, 368, 369, 371, 373, 374, 376, 377, 378, 379, 380, 381, 382, 383, 385], "excluded_lines": [], "executed_branches": [[22, 23], [38, 39], [38, 44], [45, -37], [55, 56], [55, 58], [58, 59], [58, 61], [187, 188], [187, 191]], "missing_branches": [[22, 26], [45, 46], [117, 118], [117, 127], [135, 136], [135, 137], [144, 145], [144, 147], [227, 228], [227, 230], [241, 242], [241, 257], [249, 250], [249, 255], [282, 283], [282, 285], [286, 287], [286, 288], [341, 342], [341, 344], [347, 348], [347, 351], [352, 353], [352, 357], [376, 377], [376, 385]], "functions": {"_compute_bread": {"executed_lines": [18], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": []}, "_get_cluster_df": {"executed_lines": [22, 23, 24, 34], "summary": {"covered_lines": 4, "num_statements": 5, "percent_covered": 71.42857142857143, "percent_covered_display": "71", "missing_lines": 1, "excluded_lines": 0, "num_branches": 2, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 1}, "missing_lines": [26], "excluded_lines": [], "executed_branches": [[22, 23]], "missing_branches": [[22, 26]]}, "_check_cluster_df": {"executed_lines": [38, 39, 44, 45], "summary": {"covered_lines": 4, "num_statements": 5, "percent_covered": 77.77777777777777, "percent_covered_display": "78", "missing_lines": 1, "excluded_lines": 0, "num_branches": 4, "num_partial_branches": 1, "covered_branches": 3, "missing_branches": 1}, "missing_lines": [46], "excluded_lines": [], "executed_branches": [[38, 39], [38, 44], [45, -37]], "missing_branches": [[45, 46]]}, "_count_G_for_ssc_correction": {"executed_lines": [54, 55, 56, 58, 59, 61], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [[55, 56], [55, 58], [58, 59], [58, 61]], "missing_branches": []}, "_get_vcov_type": {"executed_lines": [85], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": []}, "_hac_meat_loop": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 10, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 10, "excluded_lines": 0, "num_branches": 2, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 2}, "missing_lines": [113, 114, 117, 118, 119, 121, 122, 124, 125, 127], "excluded_lines": [], "executed_branches": [], "missing_branches": [[117, 118], [117, 127]]}, "_get_bartlett_weights": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 6, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 6, "excluded_lines": 0, "num_branches": 2, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 2}, "missing_lines": [133, 134, 135, 136, 137, 139], "excluded_lines": [], "executed_branches": [], "missing_branches": [[135, 136], [135, 137]]}, "_nw_meat_time": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 7, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 7, "excluded_lines": 0, "num_branches": 2, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 2}, "missing_lines": [144, 145, 147, 148, 150, 151, 153], "excluded_lines": [], "executed_branches": [], "missing_branches": [[144, 145], [144, 147]]}, "_get_panel_idx": {"executed_lines": [181, 182, 183, 184, 185, 186, 187, 188, 191], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [[187, 188], [187, 191]], "missing_branches": []}, "_nw_meat_panel": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 21, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 21, "excluded_lines": 0, "num_branches": 6, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 6}, "missing_lines": [227, 228, 230, 232, 233, 235, 236, 237, 241, 242, 244, 245, 247, 248, 249, 250, 251, 252, 253, 255, 257], "excluded_lines": [], "executed_branches": [], "missing_branches": [[227, 228], [227, 230], [241, 242], [241, 257], [249, 250], [249, 255]]}, "_dk_meat_panel": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 10, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 10, "excluded_lines": 0, "num_branches": 4, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 4}, "missing_lines": [282, 283, 285, 286, 287, 288, 290, 292, 293, 295], "excluded_lines": [], "executed_branches": [], "missing_branches": [[282, 283], [282, 285], [286, 287], [286, 288]]}, "_prepare_twoway_clustering": {"executed_lines": [301, 302, 303, 304, 305, 309], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": []}, "bucket_argsort": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 15, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 15, "excluded_lines": 0, "num_branches": 6, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 6}, "missing_lines": [340, 341, 342, 344, 345, 346, 347, 348, 349, 351, 352, 353, 354, 355, 357], "excluded_lines": [], "executed_branches": [], "missing_branches": [[341, 342], [341, 344], [347, 348], [347, 351], [352, 353], [352, 357]]}, "_crv1_meat_loop": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 15, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 15, "excluded_lines": 0, "num_branches": 2, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 2}, "missing_lines": [367, 368, 369, 371, 373, 374, 376, 377, 378, 379, 380, 381, 382, 383, 385], "excluded_lines": [], "executed_branches": [], "missing_branches": [[376, 377], [376, 385]]}, "": {"executed_lines": [1, 3, 4, 5, 7, 8, 11, 21, 37, 51, 64, 88, 89, 130, 131, 142, 143, 158, 194, 195, 260, 261, 300, 313, 314, 361, 362], "summary": {"covered_lines": 27, "num_statements": 27, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [1, 3, 4, 5, 7, 8, 11, 18, 21, 22, 23, 24, 34, 37, 38, 39, 44, 45, 51, 54, 55, 56, 58, 59, 61, 64, 85, 88, 89, 130, 131, 142, 143, 158, 181, 182, 183, 184, 185, 186, 187, 188, 191, 194, 195, 260, 261, 300, 301, 302, 303, 304, 305, 309, 313, 314, 361, 362], "summary": {"covered_lines": 58, "num_statements": 144, "percent_covered": 37.77777777777778, "percent_covered_display": "38", "missing_lines": 86, "excluded_lines": 0, "num_branches": 36, "num_partial_branches": 2, "covered_branches": 10, "missing_branches": 26}, "missing_lines": [26, 46, 113, 114, 117, 118, 119, 121, 122, 124, 125, 127, 133, 134, 135, 136, 137, 139, 144, 145, 147, 148, 150, 151, 153, 227, 228, 230, 232, 233, 235, 236, 237, 241, 242, 244, 245, 247, 248, 249, 250, 251, 252, 253, 255, 257, 282, 283, 285, 286, 287, 288, 290, 292, 293, 295, 340, 341, 342, 344, 345, 346, 347, 348, 349, 351, 352, 353, 354, 355, 357, 367, 368, 369, 371, 373, 374, 376, 377, 378, 379, 380, 381, 382, 383, 385], "excluded_lines": [], "executed_branches": [[22, 23], [38, 39], [38, 44], [45, -37], [55, 56], [55, 58], [58, 59], [58, 61], [187, 188], [187, 191]], "missing_branches": [[22, 26], [45, 46], [117, 118], [117, 127], [135, 136], [135, 137], [144, 145], [144, 147], [227, 228], [227, 230], [241, 242], [241, 257], [249, 250], [249, 255], [282, 283], [282, 285], [286, 287], [286, 288], [341, 342], [341, 344], [347, 348], [347, 351], [352, 353], [352, 357], [376, 377], [376, 385]]}}}, "pyfixest/report/__init__.py": {"executed_lines": [1, 6, 12], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": [], "functions": {"": {"executed_lines": [1, 6, 12], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [1, 6, 12], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": []}}}, "pyfixest/report/summarize.py": {"executed_lines": [1, 2, 3, 4, 6, 7, 8, 10, 11, 12, 13, 15, 20, 162, 163, 165, 168, 169, 172, 173, 177, 185, 187, 188, 192, 200, 201, 202, 203, 204, 205, 209, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 249, 254, 287, 289, 290, 292, 294, 295, 296, 297, 298, 300, 302, 303, 306, 307, 308, 309, 310, 311, 312, 315, 316, 319, 320, 321, 322, 323, 325, 327, 328, 329, 330, 331, 332, 333, 334, 335, 337, 340, 372, 374, 375, 376, 377, 378, 379, 380, 382, 388, 389, 391, 394, 395, 397, 398, 400, 401, 404, 405, 406, 410, 411, 412, 420, 423, 500, 508, 524, 525], "summary": {"covered_lines": 119, "num_statements": 137, "percent_covered": 83.10502283105023, "percent_covered_display": "83", "missing_lines": 18, "excluded_lines": 0, "num_branches": 82, "num_partial_branches": 13, "covered_branches": 63, "missing_branches": 19}, "missing_lines": [247, 248, 251, 299, 301, 305, 314, 317, 318, 386, 413, 526, 527, 528, 529, 530, 531, 533], "excluded_lines": [], "executed_branches": [[162, 163], [162, 165], [168, 169], [172, 173], [187, 188], [187, 192], [200, 201], [200, 209], [202, 203], [202, 209], [230, 231], [230, 232], [232, 233], [232, 236], [236, 237], [236, 242], [238, 239], [238, 241], [242, 243], [242, 244], [244, 245], [246, 249], [289, -254], [289, 290], [294, 295], [294, 296], [296, 297], [296, 298], [298, 300], [300, 302], [302, 303], [310, 311], [311, 312], [316, 319], [327, 328], [327, 329], [329, 330], [329, 331], [331, 332], [331, 333], [333, 334], [333, 337], [374, 375], [374, 376], [376, 377], [376, 378], [378, 379], [379, 380], [379, 382], [388, 389], [388, 391], [391, 394], [391, 420], [394, 395], [394, 397], [400, 401], [400, 410], [404, 400], [404, 405], [410, 411], [410, 420], [412, 420], [524, 525]], "missing_branches": [[168, 172], [172, 177], [244, 251], [246, 247], [298, 299], [300, 301], [302, 305], [310, 315], [311, 314], [316, 317], [378, 386], [412, 413], [524, 526], [526, 527], [526, 528], [528, 529], [528, 530], [530, 531], [530, 533]], "functions": {"etable": {"executed_lines": [162, 163, 165, 168, 169, 172, 173, 177, 185, 187, 188, 192, 200, 201, 202, 203, 204, 205, 209, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 249], "summary": {"covered_lines": 37, "num_statements": 40, "percent_covered": 89.39393939393939, "percent_covered_display": "89", "missing_lines": 3, "excluded_lines": 0, "num_branches": 26, "num_partial_branches": 4, "covered_branches": 22, "missing_branches": 4}, "missing_lines": [247, 248, 251], "excluded_lines": [], "executed_branches": [[162, 163], [162, 165], [168, 169], [172, 173], [187, 188], [187, 192], [200, 201], [200, 209], [202, 203], [202, 209], [230, 231], [230, 232], [232, 233], [232, 236], [236, 237], [236, 242], [238, 239], [238, 241], [242, 243], [242, 244], [244, 245], [246, 249]], "missing_branches": [[168, 172], [172, 177], [244, 251], [246, 247]]}, "summary": {"executed_lines": [287, 289, 290, 292, 294, 295, 296, 297, 298, 300, 302, 303, 306, 307, 308, 309, 310, 311, 312, 315, 316, 319, 320, 321, 322, 323, 325, 327, 328, 329, 330, 331, 332, 333, 334, 335, 337], "summary": {"covered_lines": 37, "num_statements": 43, "percent_covered": 82.6086956521739, "percent_covered_display": "83", "missing_lines": 6, "excluded_lines": 0, "num_branches": 26, "num_partial_branches": 6, "covered_branches": 20, "missing_branches": 6}, "missing_lines": [299, 301, 305, 314, 317, 318], "excluded_lines": [], "executed_branches": [[289, -254], [289, 290], [294, 295], [294, 296], [296, 297], [296, 298], [298, 300], [300, 302], [302, 303], [310, 311], [311, 312], [316, 319], [327, 328], [327, 329], [329, 330], [329, 331], [331, 332], [331, 333], [333, 334], [333, 337]], "missing_branches": [[298, 299], [300, 301], [302, 305], [310, 315], [311, 314], [316, 317]]}, "_post_processing_input_checks": {"executed_lines": [372, 374, 375, 376, 377, 378, 379, 380, 382, 388, 389, 391, 394, 395, 397, 398, 400, 401, 404, 405, 406, 410, 411, 412, 420], "summary": {"covered_lines": 25, "num_statements": 27, "percent_covered": 91.83673469387755, "percent_covered_display": "92", "missing_lines": 2, "excluded_lines": 0, "num_branches": 22, "num_partial_branches": 2, "covered_branches": 20, "missing_branches": 2}, "missing_lines": [386, 413], "excluded_lines": [], "executed_branches": [[374, 375], [374, 376], [376, 377], [376, 378], [378, 379], [379, 380], [379, 382], [388, 389], [388, 391], [391, 394], [391, 420], [394, 395], [394, 397], [400, 401], [400, 410], [404, 400], [404, 405], [410, 411], [410, 420], [412, 420]], "missing_branches": [[378, 386], [412, 413]]}, "dtable": {"executed_lines": [500, 508, 524, 525], "summary": {"covered_lines": 4, "num_statements": 11, "percent_covered": 26.31578947368421, "percent_covered_display": "26", "missing_lines": 7, "excluded_lines": 0, "num_branches": 8, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 7}, "missing_lines": [526, 527, 528, 529, 530, 531, 533], "excluded_lines": [], "executed_branches": [[524, 525]], "missing_branches": [[524, 526], [526, 527], [526, 528], [528, 529], [528, 530], [530, 531], [530, 533]]}, "": {"executed_lines": [1, 2, 3, 4, 6, 7, 8, 10, 11, 12, 13, 15, 20, 254, 340, 423], "summary": {"covered_lines": 16, "num_statements": 16, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [1, 2, 3, 4, 6, 7, 8, 10, 11, 12, 13, 15, 20, 162, 163, 165, 168, 169, 172, 173, 177, 185, 187, 188, 192, 200, 201, 202, 203, 204, 205, 209, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 249, 254, 287, 289, 290, 292, 294, 295, 296, 297, 298, 300, 302, 303, 306, 307, 308, 309, 310, 311, 312, 315, 316, 319, 320, 321, 322, 323, 325, 327, 328, 329, 330, 331, 332, 333, 334, 335, 337, 340, 372, 374, 375, 376, 377, 378, 379, 380, 382, 388, 389, 391, 394, 395, 397, 398, 400, 401, 404, 405, 406, 410, 411, 412, 420, 423, 500, 508, 524, 525], "summary": {"covered_lines": 119, "num_statements": 137, "percent_covered": 83.10502283105023, "percent_covered_display": "83", "missing_lines": 18, "excluded_lines": 0, "num_branches": 82, "num_partial_branches": 13, "covered_branches": 63, "missing_branches": 19}, "missing_lines": [247, 248, 251, 299, 301, 305, 314, 317, 318, 386, 413, 526, 527, 528, 529, 530, 531, 533], "excluded_lines": [], "executed_branches": [[162, 163], [162, 165], [168, 169], [172, 173], [187, 188], [187, 192], [200, 201], [200, 209], [202, 203], [202, 209], [230, 231], [230, 232], [232, 233], [232, 236], [236, 237], [236, 242], [238, 239], [238, 241], [242, 243], [242, 244], [244, 245], [246, 249], [289, -254], [289, 290], [294, 295], [294, 296], [296, 297], [296, 298], [298, 300], [300, 302], [302, 303], [310, 311], [311, 312], [316, 319], [327, 328], [327, 329], [329, 330], [329, 331], [331, 332], [331, 333], [333, 334], [333, 337], [374, 375], [374, 376], [376, 377], [376, 378], [378, 379], [379, 380], [379, 382], [388, 389], [388, 391], [391, 394], [391, 420], [394, 395], [394, 397], [400, 401], [400, 410], [404, 400], [404, 405], [410, 411], [410, 420], [412, 420], [524, 525]], "missing_branches": [[168, 172], [172, 177], [244, 251], [246, 247], [298, 299], [300, 301], [302, 305], [310, 315], [311, 314], [316, 317], [378, 386], [412, 413], [524, 526], [526, 527], [526, 528], [528, 529], [528, 530], [530, 531], [530, 533]]}}}, "pyfixest/report/utils.py": {"executed_lines": [1, 2, 3, 6, 7, 8, 9, 12, 38, 39, 41, 43, 46, 69, 70, 72, 75, 76, 78, 79, 80, 81, 82, 85, 86, 87, 88, 89, 91, 93, 95, 98, 126, 132, 133, 134, 136, 137, 138, 139, 140, 142, 145, 169], "summary": {"covered_lines": 44, "num_statements": 44, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 14, "num_partial_branches": 0, "covered_branches": 14, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [[7, -6], [7, 8], [8, 7], [8, 9], [38, 39], [38, 41], [69, 70], [69, 72], [75, 76], [75, 78], [79, 80], [79, 95], [136, 137], [136, 142]], "missing_branches": [], "functions": {"_check_label_keys_in_covars": {"executed_lines": [7, 8, 9], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [[7, -6], [7, 8], [8, 7], [8, 9]], "missing_branches": []}, "_relabel_expvar": {"executed_lines": [38, 39, 41, 43], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [[38, 39], [38, 41]], "missing_branches": []}, "_rename_categorical": {"executed_lines": [69, 70, 72, 75, 76, 78, 79, 80, 81, 82, 85, 86, 87, 88, 89, 91, 93, 95], "summary": {"covered_lines": 18, "num_statements": 18, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 6, "num_partial_branches": 0, "covered_branches": 6, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [[69, 70], [69, 72], [75, 76], [75, 78], [79, 80], [79, 95]], "missing_branches": []}, "rename_categoricals": {"executed_lines": [126], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": []}, "_rename_event_study_coefs": {"executed_lines": [133, 134, 136, 137, 138, 139, 140, 142], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [[136, 137], [136, 142]], "missing_branches": []}, "rename_event_study_coefs": {"executed_lines": [169], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [1, 2, 3, 6, 12, 46, 98, 132, 145], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [1, 2, 3, 6, 7, 8, 9, 12, 38, 39, 41, 43, 46, 69, 70, 72, 75, 76, 78, 79, 80, 81, 82, 85, 86, 87, 88, 89, 91, 93, 95, 98, 126, 132, 133, 134, 136, 137, 138, 139, 140, 142, 145, 169], "summary": {"covered_lines": 44, "num_statements": 44, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 14, "num_partial_branches": 0, "covered_branches": 14, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [[7, -6], [7, 8], [8, 7], [8, 9], [38, 39], [38, 41], [69, 70], [69, 72], [75, 76], [75, 78], [79, 80], [79, 95], [136, 137], [136, 142]], "missing_branches": []}}}, "pyfixest/report/visualize.py": {"executed_lines": [1, 2, 4, 5, 6, 9, 10, 27, 28, 29, 31, 32, 33, 34, 35, 36, 37, 38, 40, 45, 46, 49, 67, 70, 71, 72, 73, 78, 80, 83, 205, 208, 209, 213, 214, 216, 217, 219, 220, 222, 223, 225, 226, 231, 233, 236, 239, 241, 242, 243, 245, 246, 248, 251, 252, 257, 273, 384, 387, 388, 392, 393, 395, 396, 398, 399, 401, 402, 403, 406, 408, 409, 410, 412, 413, 416, 417, 422, 437, 465, 466, 468, 469, 471, 475, 476, 477, 482, 483, 484, 486, 488, 490, 498, 500, 501, 502, 507, 508, 509, 514, 563, 564, 565, 567, 569, 570, 571, 580, 591, 592, 593, 594, 595, 597, 598, 599, 600, 601, 602, 604, 607, 661, 663, 664, 665, 674, 676, 677, 679, 680, 685, 686, 688, 689, 692, 693, 694, 695, 697, 698, 700, 701, 702, 704, 706, 708, 709, 719, 730, 731, 732, 733, 734, 737, 738, 739, 740, 742, 743, 745, 748, 749, 750, 751, 753, 754, 755, 756, 757, 758, 761, 786, 787, 788, 791, 792, 794, 795, 796, 801, 802, 804, 806, 807, 808, 810, 811, 812, 813, 815, 816, 817, 819, 820, 821, 822, 824, 827, 828, 831, 862, 865, 867, 868, 870, 871, 872, 873, 874, 875, 881, 883, 884, 886, 888], "summary": {"covered_lines": 216, "num_statements": 230, "percent_covered": 89.52095808383234, "percent_covered_display": "90", "missing_lines": 14, "excluded_lines": 0, "num_branches": 104, "num_partial_branches": 21, "covered_branches": 83, "missing_branches": 21}, "missing_lines": [68, 74, 227, 478, 503, 511, 596, 682, 744, 789, 798, 799, 825, 863], "excluded_lines": [], "executed_branches": [[45, 46], [45, 49], [67, 70], [70, 71], [70, 72], [72, 73], [72, 80], [73, 78], [208, 209], [208, 213], [216, 217], [219, 220], [219, 222], [222, 223], [222, 225], [225, 226], [225, 239], [226, 231], [242, 243], [242, 245], [251, 252], [251, 257], [387, 388], [387, 392], [392, 393], [392, 395], [395, 396], [398, 399], [402, 403], [402, 408], [409, 410], [409, 412], [416, 417], [416, 422], [465, 466], [468, 469], [476, 477], [476, 488], [477, 482], [501, 502], [501, 508], [502, 507], [508, 509], [569, 570], [569, 580], [591, 592], [591, 593], [593, 594], [593, 595], [595, 597], [597, 598], [599, 600], [601, 602], [601, 604], [663, 664], [663, 674], [679, 680], [693, 694], [693, 695], [697, 698], [697, 730], [700, 701], [700, 704], [708, 709], [708, 719], [730, 731], [730, 742], [732, 733], [732, 734], [743, 745], [754, 755], [754, 756], [786, 787], [788, 791], [794, 795], [806, 807], [806, 824], [824, 827], [862, 865], [870, 871], [870, 888], [883, 884], [883, 886]], "missing_branches": [[67, 68], [73, 74], [216, 219], [226, 227], [395, 398], [398, 401], [465, 468], [468, 471], [477, 478], [502, 503], [508, 511], [595, 596], [597, 599], [599, 601], [679, 682], [743, 744], [786, 788], [788, 789], [794, 798], [824, 825], [862, 863]], "functions": {"set_figsize": {"executed_lines": [67, 70, 71, 72, 73, 78, 80], "summary": {"covered_lines": 7, "num_statements": 9, "percent_covered": 76.47058823529412, "percent_covered_display": "76", "missing_lines": 2, "excluded_lines": 0, "num_branches": 8, "num_partial_branches": 2, "covered_branches": 6, "missing_branches": 2}, "missing_lines": [68, 74], "excluded_lines": [], "executed_branches": [[67, 70], [70, 71], [70, 72], [72, 73], [72, 80], [73, 78]], "missing_branches": [[67, 68], [73, 74]]}, "iplot": {"executed_lines": [205, 208, 209, 213, 214, 216, 217, 219, 220, 222, 223, 225, 226, 231, 233, 236, 239, 241, 242, 243, 245, 246, 248, 251, 252, 257], "summary": {"covered_lines": 26, "num_statements": 27, "percent_covered": 93.02325581395348, "percent_covered_display": "93", "missing_lines": 1, "excluded_lines": 0, "num_branches": 16, "num_partial_branches": 2, "covered_branches": 14, "missing_branches": 2}, "missing_lines": [227], "excluded_lines": [], "executed_branches": [[208, 209], [208, 213], [216, 217], [219, 220], [219, 222], [222, 223], [222, 225], [225, 226], [225, 239], [226, 231], [242, 243], [242, 245], [251, 252], [251, 257]], "missing_branches": [[216, 219], [226, 227]]}, "coefplot": {"executed_lines": [384, 387, 388, 392, 393, 395, 396, 398, 399, 401, 402, 403, 406, 408, 409, 410, 412, 413, 416, 417, 422], "summary": {"covered_lines": 21, "num_statements": 21, "percent_covered": 94.28571428571429, "percent_covered_display": "94", "missing_lines": 0, "excluded_lines": 0, "num_branches": 14, "num_partial_branches": 2, "covered_branches": 12, "missing_branches": 2}, "missing_lines": [], "excluded_lines": [], "executed_branches": [[387, 388], [387, 392], [392, 393], [392, 395], [395, 396], [398, 399], [402, 403], [402, 408], [409, 410], [409, 412], [416, 417], [416, 422]], "missing_branches": [[395, 398], [398, 401]]}, "qplot": {"executed_lines": [465, 466, 468, 469, 471, 475, 476, 477, 482, 483, 484, 486, 488, 490], "summary": {"covered_lines": 14, "num_statements": 15, "percent_covered": 82.6086956521739, "percent_covered_display": "83", "missing_lines": 1, "excluded_lines": 0, "num_branches": 8, "num_partial_branches": 3, "covered_branches": 5, "missing_branches": 3}, "missing_lines": [478], "excluded_lines": [], "executed_branches": [[465, 466], [468, 469], [476, 477], [476, 488], [477, 482]], "missing_branches": [[465, 468], [468, 471], [477, 478]]}, "_coefplot": {"executed_lines": [500, 501, 502, 507, 508, 509], "summary": {"covered_lines": 6, "num_statements": 8, "percent_covered": 71.42857142857143, "percent_covered_display": "71", "missing_lines": 2, "excluded_lines": 0, "num_branches": 6, "num_partial_branches": 2, "covered_branches": 4, "missing_branches": 2}, "missing_lines": [503, 511], "excluded_lines": [], "executed_branches": [[501, 502], [501, 508], [502, 507], [508, 509]], "missing_branches": [[502, 503], [508, 511]]}, "_coefplot_lets_plot": {"executed_lines": [563, 564, 565, 567, 569, 570, 571, 580, 591, 592, 593, 594, 595, 597, 598, 599, 600, 601, 602, 604], "summary": {"covered_lines": 20, "num_statements": 21, "percent_covered": 88.57142857142857, "percent_covered_display": "89", "missing_lines": 1, "excluded_lines": 0, "num_branches": 14, "num_partial_branches": 3, "covered_branches": 11, "missing_branches": 3}, "missing_lines": [596], "excluded_lines": [], "executed_branches": [[569, 570], [569, 580], [591, 592], [591, 593], [593, 594], [593, 595], [595, 597], [597, 598], [599, 600], [601, 602], [601, 604]], "missing_branches": [[595, 596], [597, 599], [599, 601]]}, "_coefplot_matplotlib": {"executed_lines": [661, 663, 664, 665, 674, 676, 677, 679, 680, 685, 686, 688, 689, 692, 693, 694, 695, 697, 698, 700, 701, 702, 704, 706, 708, 709, 719, 730, 731, 732, 733, 734, 737, 738, 739, 740, 742, 743, 745, 748, 749, 750, 751, 753, 754, 755, 756, 757, 758], "summary": {"covered_lines": 49, "num_statements": 51, "percent_covered": 94.36619718309859, "percent_covered_display": "94", "missing_lines": 2, "excluded_lines": 0, "num_branches": 20, "num_partial_branches": 2, "covered_branches": 18, "missing_branches": 2}, "missing_lines": [682, 744], "excluded_lines": [], "executed_branches": [[663, 664], [663, 674], [679, 680], [693, 694], [693, 695], [697, 698], [697, 730], [700, 701], [700, 704], [708, 709], [708, 719], [730, 731], [730, 742], [732, 733], [732, 734], [743, 745], [754, 755], [754, 756]], "missing_branches": [[679, 682], [743, 744]]}, "_qplot": {"executed_lines": [786, 787, 788, 791, 792, 794, 795, 796, 801, 802, 804, 806, 807, 808, 810, 811, 812, 813, 815, 816, 817, 819, 820, 821, 822, 824, 827, 828], "summary": {"covered_lines": 28, "num_statements": 32, "percent_covered": 80.95238095238095, "percent_covered_display": "81", "missing_lines": 4, "excluded_lines": 0, "num_branches": 10, "num_partial_branches": 4, "covered_branches": 6, "missing_branches": 4}, "missing_lines": [789, 798, 799, 825], "excluded_lines": [], "executed_branches": [[786, 787], [788, 791], [794, 795], [806, 807], [806, 824], [824, 827]], "missing_branches": [[786, 788], [788, 789], [794, 798], [824, 825]]}, "_get_model_df": {"executed_lines": [862, 865, 867, 868, 870, 871, 872, 873, 874, 875, 881, 883, 884, 886, 888], "summary": {"covered_lines": 15, "num_statements": 16, "percent_covered": 90.9090909090909, "percent_covered_display": "91", "missing_lines": 1, "excluded_lines": 0, "num_branches": 6, "num_partial_branches": 1, "covered_branches": 5, "missing_branches": 1}, "missing_lines": [863], "excluded_lines": [], "executed_branches": [[862, 865], [870, 871], [870, 888], [883, 884], [883, 886]], "missing_branches": [[862, 863]]}, "": {"executed_lines": [1, 2, 4, 5, 6, 9, 10, 27, 28, 29, 31, 32, 33, 34, 35, 36, 37, 38, 40, 45, 46, 49, 83, 273, 437, 498, 514, 607, 761, 831], "summary": {"covered_lines": 30, "num_statements": 30, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [[45, 46], [45, 49]], "missing_branches": []}}, "classes": {"": {"executed_lines": [1, 2, 4, 5, 6, 9, 10, 27, 28, 29, 31, 32, 33, 34, 35, 36, 37, 38, 40, 45, 46, 49, 67, 70, 71, 72, 73, 78, 80, 83, 205, 208, 209, 213, 214, 216, 217, 219, 220, 222, 223, 225, 226, 231, 233, 236, 239, 241, 242, 243, 245, 246, 248, 251, 252, 257, 273, 384, 387, 388, 392, 393, 395, 396, 398, 399, 401, 402, 403, 406, 408, 409, 410, 412, 413, 416, 417, 422, 437, 465, 466, 468, 469, 471, 475, 476, 477, 482, 483, 484, 486, 488, 490, 498, 500, 501, 502, 507, 508, 509, 514, 563, 564, 565, 567, 569, 570, 571, 580, 591, 592, 593, 594, 595, 597, 598, 599, 600, 601, 602, 604, 607, 661, 663, 664, 665, 674, 676, 677, 679, 680, 685, 686, 688, 689, 692, 693, 694, 695, 697, 698, 700, 701, 702, 704, 706, 708, 709, 719, 730, 731, 732, 733, 734, 737, 738, 739, 740, 742, 743, 745, 748, 749, 750, 751, 753, 754, 755, 756, 757, 758, 761, 786, 787, 788, 791, 792, 794, 795, 796, 801, 802, 804, 806, 807, 808, 810, 811, 812, 813, 815, 816, 817, 819, 820, 821, 822, 824, 827, 828, 831, 862, 865, 867, 868, 870, 871, 872, 873, 874, 875, 881, 883, 884, 886, 888], "summary": {"covered_lines": 216, "num_statements": 230, "percent_covered": 89.52095808383234, "percent_covered_display": "90", "missing_lines": 14, "excluded_lines": 0, "num_branches": 104, "num_partial_branches": 21, "covered_branches": 83, "missing_branches": 21}, "missing_lines": [68, 74, 227, 478, 503, 511, 596, 682, 744, 789, 798, 799, 825, 863], "excluded_lines": [], "executed_branches": [[45, 46], [45, 49], [67, 70], [70, 71], [70, 72], [72, 73], [72, 80], [73, 78], [208, 209], [208, 213], [216, 217], [219, 220], [219, 222], [222, 223], [222, 225], [225, 226], [225, 239], [226, 231], [242, 243], [242, 245], [251, 252], [251, 257], [387, 388], [387, 392], [392, 393], [392, 395], [395, 396], [398, 399], [402, 403], [402, 408], [409, 410], [409, 412], [416, 417], [416, 422], [465, 466], [468, 469], [476, 477], [476, 488], [477, 482], [501, 502], [501, 508], [502, 507], [508, 509], [569, 570], [569, 580], [591, 592], [591, 593], [593, 594], [593, 595], [595, 597], [597, 598], [599, 600], [601, 602], [601, 604], [663, 664], [663, 674], [679, 680], [693, 694], [693, 695], [697, 698], [697, 730], [700, 701], [700, 704], [708, 709], [708, 719], [730, 731], [730, 742], [732, 733], [732, 734], [743, 745], [754, 755], [754, 756], [786, 787], [788, 791], [794, 795], [806, 807], [806, 824], [824, 827], [862, 865], [870, 871], [870, 888], [883, 884], [883, 886]], "missing_branches": [[67, 68], [73, 74], [216, 219], [226, 227], [395, 398], [398, 401], [465, 468], [468, 471], [477, 478], [502, 503], [508, 511], [595, 596], [597, 599], [599, 601], [679, 682], [743, 744], [786, 788], [788, 789], [794, 798], [824, 825], [862, 863]]}}}, "pyfixest/report/visualize_decomposition.py": {"executed_lines": [1, 8, 9, 11, 12, 15, 16, 17, 20, 23, 24, 27, 28, 29, 30, 31, 32, 35, 36, 39, 40, 41, 42, 43, 44, 45, 46, 47, 50, 51, 52, 54, 55, 56, 57, 58, 59, 60, 63, 64, 66, 67, 68, 71, 115, 116, 123, 126, 129, 132, 133, 134, 137, 141, 144, 152, 154, 158, 160, 166, 167, 170, 175, 178, 181, 186, 188, 199, 208, 214, 217, 218, 219, 220, 224, 227, 229, 230, 232, 235, 240, 245, 246, 247, 248, 249, 251, 252, 254, 257, 258, 261, 264, 271, 272, 275, 288, 289, 290, 291, 293, 294, 300, 313, 325, 328, 330, 332, 333, 335, 336, 339, 345, 348, 350, 352, 353, 354, 355, 357, 367, 370, 374, 375, 377, 380, 381, 382, 385, 386, 389, 390, 391, 395, 396, 402, 410, 411, 415, 423, 424, 425, 426, 430, 432, 446, 450, 451, 452, 453, 455, 457, 458, 460, 461, 463, 475, 484, 485, 486, 488, 490, 502, 513, 514, 524, 527, 529, 530, 531, 533, 534, 535, 538, 539, 541, 542, 547, 556, 558, 569, 591, 601, 611, 623, 664, 675, 676, 680, 683, 684, 686, 687, 690, 691, 693, 694, 696, 697, 698, 699, 702, 703, 713, 714, 715, 716, 717, 727, 728, 730], "summary": {"covered_lines": 207, "num_statements": 234, "percent_covered": 84.93150684931507, "percent_covered_display": "85", "missing_lines": 27, "excluded_lines": 0, "num_branches": 58, "num_partial_branches": 9, "covered_branches": 41, "missing_branches": 17}, "missing_lines": [117, 118, 159, 161, 340, 341, 342, 343, 378, 544, 559, 570, 580, 628, 629, 630, 632, 634, 635, 639, 642, 643, 645, 646, 652, 677, 678], "excluded_lines": [], "executed_branches": [[158, 160], [160, 166], [217, 218], [217, 224], [229, 230], [229, 232], [247, 248], [247, 257], [251, 252], [251, 254], [289, 290], [289, 313], [339, 345], [377, 380], [389, 390], [389, 395], [411, 415], [411, 423], [424, 425], [424, 430], [457, -446], [457, 458], [460, 461], [460, 463], [484, 485], [484, 488], [513, 514], [513, 527], [529, 530], [533, 534], [541, 542], [558, 569], [569, 591], [690, 691], [690, 693], [693, 694], [693, 696], [702, 703], [702, 715], [715, 716], [715, 730]], "missing_branches": [[158, 159], [160, 161], [339, 340], [340, 341], [340, 342], [342, 343], [342, 345], [377, 378], [529, 533], [533, 538], [541, 544], [558, 559], [569, 570], [628, 629], [628, 634], [642, -623], [642, 643]], "functions": {"create_decomposition_plot": {"executed_lines": [115, 116, 123, 126, 129, 132, 133, 134, 137, 141], "summary": {"covered_lines": 10, "num_statements": 12, "percent_covered": 83.33333333333333, "percent_covered_display": "83", "missing_lines": 2, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [117, 118], "excluded_lines": [], "executed_branches": [], "missing_branches": []}, "_prepare_plot_data": {"executed_lines": [152, 154, 158, 160, 166, 167, 170, 175, 178, 181, 186, 188], "summary": {"covered_lines": 12, "num_statements": 14, "percent_covered": 77.77777777777777, "percent_covered_display": "78", "missing_lines": 2, "excluded_lines": 0, "num_branches": 4, "num_partial_branches": 2, "covered_branches": 2, "missing_branches": 2}, "missing_lines": [159, 161], "excluded_lines": [], "executed_branches": [[158, 160], [160, 166]], "missing_branches": [[158, 159], [160, 161]]}, "_filter_and_order_mediators": {"executed_lines": [208, 214, 217, 218, 219, 220, 224], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [[217, 218], [217, 224]], "missing_branches": []}, "_apply_labels": {"executed_lines": [229, 230, 232], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [[229, 230], [229, 232]], "missing_branches": []}, "_categorize_mediators": {"executed_lines": [240, 245, 246, 247, 248, 249, 251, 252, 254, 257, 258, 261], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [[247, 248], [247, 257], [251, 252], [251, 254]], "missing_branches": []}, "_create_bar_data": {"executed_lines": [271, 272, 275, 288, 289, 290, 291, 293, 294, 300, 313, 325], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [[289, 290], [289, 313]], "missing_branches": []}, "_calculate_axis_limits": {"executed_lines": [330, 332, 333, 335, 336, 339, 345], "summary": {"covered_lines": 7, "num_statements": 11, "percent_covered": 47.05882352941177, "percent_covered_display": "47", "missing_lines": 4, "excluded_lines": 0, "num_branches": 6, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 5}, "missing_lines": [340, 341, 342, 343], "excluded_lines": [], "executed_branches": [[339, 345]], "missing_branches": [[339, 340], [340, 341], [340, 342], [342, 343], [342, 345]]}, "_draw_bars": {"executed_lines": [350, 352, 353, 354, 355, 357, 367], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": []}, "_draw_spanner": {"executed_lines": [374, 375, 377, 380, 381, 382, 385, 386, 389, 390, 391, 395, 396, 402, 410, 411, 415, 423, 424, 425, 426, 430, 432], "summary": {"covered_lines": 23, "num_statements": 24, "percent_covered": 93.75, "percent_covered_display": "94", "missing_lines": 1, "excluded_lines": 0, "num_branches": 8, "num_partial_branches": 1, "covered_branches": 7, "missing_branches": 1}, "missing_lines": [378], "excluded_lines": [], "executed_branches": [[377, 380], [389, 390], [389, 395], [411, 415], [411, 423], [424, 425], [424, 430]], "missing_branches": [[377, 378]]}, "_add_bar_labels": {"executed_lines": [450, 451, 452, 453, 455, 457, 458, 460, 461, 463], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [[457, -446], [457, 458], [460, 461], [460, 463]], "missing_branches": []}, "_add_simple_label": {"executed_lines": [484, 485, 486, 488, 490], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [[484, 485], [484, 488]], "missing_branches": []}, "_add_mediator_label": {"executed_lines": [513, 514, 524, 527, 529, 530, 531, 533, 534, 535, 538, 539, 541, 542], "summary": {"covered_lines": 14, "num_statements": 15, "percent_covered": 82.6086956521739, "percent_covered_display": "83", "missing_lines": 1, "excluded_lines": 0, "num_branches": 8, "num_partial_branches": 3, "covered_branches": 5, "missing_branches": 3}, "missing_lines": [544], "excluded_lines": [], "executed_branches": [[513, 514], [513, 527], [529, 530], [533, 534], [541, 542]], "missing_branches": [[529, 533], [533, 538], [541, 544]]}, "_position_internal_labels": {"executed_lines": [556, 558, 569, 591, 601, 611], "summary": {"covered_lines": 6, "num_statements": 9, "percent_covered": 61.53846153846154, "percent_covered_display": "62", "missing_lines": 3, "excluded_lines": 0, "num_branches": 4, "num_partial_branches": 2, "covered_branches": 2, "missing_branches": 2}, "missing_lines": [559, 570, 580], "excluded_lines": [], "executed_branches": [[558, 569], [569, 591]], "missing_branches": [[558, 559], [569, 570]]}, "_position_labels_to_avoid_overlap": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 12, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 12, "excluded_lines": 0, "num_branches": 4, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 4}, "missing_lines": [628, 629, 630, 632, 634, 635, 639, 642, 643, 645, 646, 652], "excluded_lines": [], "executed_branches": [], "missing_branches": [[628, 629], [628, 634], [642, -623], [642, 643]]}, "_finalize_plot": {"executed_lines": [675, 676, 680, 683, 684, 686, 687, 690, 691, 693, 694, 696, 697, 698, 699, 702, 703, 713, 714, 715, 716, 717, 727, 728, 730], "summary": {"covered_lines": 25, "num_statements": 27, "percent_covered": 94.28571428571429, "percent_covered_display": "94", "missing_lines": 2, "excluded_lines": 0, "num_branches": 8, "num_partial_branches": 0, "covered_branches": 8, "missing_branches": 0}, "missing_lines": [677, 678], "excluded_lines": [], "executed_branches": [[690, 691], [690, 693], [693, 694], [693, 696], [702, 703], [702, 715], [715, 716], [715, 730]], "missing_branches": []}, "": {"executed_lines": [1, 8, 9, 11, 12, 15, 16, 17, 20, 23, 24, 27, 28, 29, 30, 31, 32, 35, 36, 39, 40, 41, 42, 43, 44, 45, 46, 47, 50, 51, 52, 54, 55, 56, 57, 58, 59, 60, 63, 64, 66, 67, 68, 71, 144, 199, 227, 235, 264, 328, 348, 370, 446, 475, 502, 547, 623, 664], "summary": {"covered_lines": 54, "num_statements": 54, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": []}}, "classes": {"PlotConfig": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": []}, "BarData": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": []}, "MediatorInfo": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [1, 8, 9, 11, 12, 15, 16, 17, 20, 23, 24, 27, 28, 29, 30, 31, 32, 35, 36, 39, 40, 41, 42, 43, 44, 45, 46, 47, 50, 51, 52, 54, 55, 56, 57, 58, 59, 60, 63, 64, 66, 67, 68, 71, 115, 116, 123, 126, 129, 132, 133, 134, 137, 141, 144, 152, 154, 158, 160, 166, 167, 170, 175, 178, 181, 186, 188, 199, 208, 214, 217, 218, 219, 220, 224, 227, 229, 230, 232, 235, 240, 245, 246, 247, 248, 249, 251, 252, 254, 257, 258, 261, 264, 271, 272, 275, 288, 289, 290, 291, 293, 294, 300, 313, 325, 328, 330, 332, 333, 335, 336, 339, 345, 348, 350, 352, 353, 354, 355, 357, 367, 370, 374, 375, 377, 380, 381, 382, 385, 386, 389, 390, 391, 395, 396, 402, 410, 411, 415, 423, 424, 425, 426, 430, 432, 446, 450, 451, 452, 453, 455, 457, 458, 460, 461, 463, 475, 484, 485, 486, 488, 490, 502, 513, 514, 524, 527, 529, 530, 531, 533, 534, 535, 538, 539, 541, 542, 547, 556, 558, 569, 591, 601, 611, 623, 664, 675, 676, 680, 683, 684, 686, 687, 690, 691, 693, 694, 696, 697, 698, 699, 702, 703, 713, 714, 715, 716, 717, 727, 728, 730], "summary": {"covered_lines": 207, "num_statements": 234, "percent_covered": 84.93150684931507, "percent_covered_display": "85", "missing_lines": 27, "excluded_lines": 0, "num_branches": 58, "num_partial_branches": 9, "covered_branches": 41, "missing_branches": 17}, "missing_lines": [117, 118, 159, 161, 340, 341, 342, 343, 378, 544, 559, 570, 580, 628, 629, 630, 632, 634, 635, 639, 642, 643, 645, 646, 652, 677, 678], "excluded_lines": [], "executed_branches": [[158, 160], [160, 166], [217, 218], [217, 224], [229, 230], [229, 232], [247, 248], [247, 257], [251, 252], [251, 254], [289, 290], [289, 313], [339, 345], [377, 380], [389, 390], [389, 395], [411, 415], [411, 423], [424, 425], [424, 430], [457, -446], [457, 458], [460, 461], [460, 463], [484, 485], [484, 488], [513, 514], [513, 527], [529, 530], [533, 534], [541, 542], [558, 569], [569, 591], [690, 691], [690, 693], [693, 694], [693, 696], [702, 703], [702, 715], [715, 716], [715, 730]], "missing_branches": [[158, 159], [160, 161], [339, 340], [340, 341], [340, 342], [342, 343], [342, 345], [377, 378], [529, 533], [533, 538], [541, 544], [558, 559], [569, 570], [628, 629], [628, 634], [642, -623], [642, 643]]}}}, "pyfixest/utils/__init__.py": {"executed_lines": [1, 7], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": [], "functions": {"": {"executed_lines": [1, 7], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [1, 7], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": []}}}, "pyfixest/utils/_exceptions.py": {"executed_lines": [1, 2, 5, 7, 9, 10, 13, 14, 15, 16, 17, 18, 19, 21, 22], "summary": {"covered_lines": 15, "num_statements": 15, "percent_covered": 94.73684210526316, "percent_covered_display": "95", "missing_lines": 0, "excluded_lines": 0, "num_branches": 4, "num_partial_branches": 1, "covered_branches": 3, "missing_branches": 1}, "missing_lines": [], "excluded_lines": [], "executed_branches": [[15, 16], [17, 18], [17, 21]], "missing_branches": [[15, 22]], "functions": {"find_stack_level": {"executed_lines": [7, 9, 10, 13, 14, 15, 16, 17, 18, 19, 21, 22], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 93.75, "percent_covered_display": "94", "missing_lines": 0, "excluded_lines": 0, "num_branches": 4, "num_partial_branches": 1, "covered_branches": 3, "missing_branches": 1}, "missing_lines": [], "excluded_lines": [], "executed_branches": [[15, 16], [17, 18], [17, 21]], "missing_branches": [[15, 22]]}, "": {"executed_lines": [1, 2, 5], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [1, 2, 5, 7, 9, 10, 13, 14, 15, 16, 17, 18, 19, 21, 22], "summary": {"covered_lines": 15, "num_statements": 15, "percent_covered": 94.73684210526316, "percent_covered_display": "95", "missing_lines": 0, "excluded_lines": 0, "num_branches": 4, "num_partial_branches": 1, "covered_branches": 3, "missing_branches": 1}, "missing_lines": [], "excluded_lines": [], "executed_branches": [[15, 16], [17, 18], [17, 21]], "missing_branches": [[15, 22]]}}}, "pyfixest/utils/check_r_install.py": {"executed_lines": [1, 4, 5, 10, 13, 16, 18, 19, 20, 22, 23, 24, 25, 28], "summary": {"covered_lines": 14, "num_statements": 16, "percent_covered": 81.81818181818181, "percent_covered_display": "82", "missing_lines": 2, "excluded_lines": 0, "num_branches": 6, "num_partial_branches": 2, "covered_branches": 4, "missing_branches": 2}, "missing_lines": [6, 27], "excluded_lines": [], "executed_branches": [[5, 10], [23, 24], [23, 28], [24, 25]], "missing_branches": [[5, 6], [24, 27]], "functions": {"_catch_import_issue": {"executed_lines": [5, 10, 13], "summary": {"covered_lines": 3, "num_statements": 4, "percent_covered": 66.66666666666667, "percent_covered_display": "67", "missing_lines": 1, "excluded_lines": 0, "num_branches": 2, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 1}, "missing_lines": [6], "excluded_lines": [], "executed_branches": [[5, 10]], "missing_branches": [[5, 6]]}, "check_r_install": {"executed_lines": [18, 19, 20, 22, 23, 24, 25, 28], "summary": {"covered_lines": 8, "num_statements": 9, "percent_covered": 84.61538461538461, "percent_covered_display": "85", "missing_lines": 1, "excluded_lines": 0, "num_branches": 4, "num_partial_branches": 1, "covered_branches": 3, "missing_branches": 1}, "missing_lines": [27], "excluded_lines": [], "executed_branches": [[23, 24], [23, 28], [24, 25]], "missing_branches": [[24, 27]]}, "": {"executed_lines": [1, 4, 16], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [1, 4, 5, 10, 13, 16, 18, 19, 20, 22, 23, 24, 25, 28], "summary": {"covered_lines": 14, "num_statements": 16, "percent_covered": 81.81818181818181, "percent_covered_display": "82", "missing_lines": 2, "excluded_lines": 0, "num_branches": 6, "num_partial_branches": 2, "covered_branches": 4, "missing_branches": 2}, "missing_lines": [6, 27], "excluded_lines": [], "executed_branches": [[5, 10], [23, 24], [23, 28], [24, 25]], "missing_branches": [[5, 6], [24, 27]]}}}, "pyfixest/utils/dev_utils.py": {"executed_lines": [1, 2, 4, 5, 6, 7, 9, 12, 13, 16, 30, 31, 32, 35, 71, 72, 73, 74, 76, 78, 79, 81, 82, 83, 84, 85, 86, 89, 91, 92, 94, 95, 96, 97, 100, 102, 103, 105, 108, 118, 119, 122, 125, 131, 147, 148, 149, 150, 151, 152, 154, 157, 172, 173, 174, 177, 178, 180], "summary": {"covered_lines": 58, "num_statements": 68, "percent_covered": 84.6938775510204, "percent_covered_display": "85", "missing_lines": 10, "excluded_lines": 0, "num_branches": 30, "num_partial_branches": 3, "covered_branches": 25, "missing_branches": 5}, "missing_lines": [77, 111, 112, 113, 115, 120, 126, 127, 128, 175], "excluded_lines": [], "executed_branches": [[30, 31], [30, 32], [71, 72], [71, 73], [73, 74], [73, 76], [76, 78], [78, 79], [78, 81], [83, 84], [83, 94], [85, 86], [85, 92], [86, 89], [86, 91], [94, 95], [94, 105], [96, 97], [96, 103], [97, 100], [97, 102], [119, 122], [147, 148], [147, 154], [174, 177]], "missing_branches": [[76, 77], [119, 120], [126, 127], [126, 128], [174, 175]], "functions": {"_narwhals_to_pandas": {"executed_lines": [13], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": []}, "_create_rng": {"executed_lines": [30, 31, 32], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [[30, 31], [30, 32]], "missing_branches": []}, "_select_order_coefs": {"executed_lines": [71, 72, 73, 74, 76, 78, 79, 81, 82, 83, 84, 85, 86, 89, 91, 92, 94, 95, 96, 97, 100, 102, 103, 105], "summary": {"covered_lines": 24, "num_statements": 25, "percent_covered": 95.55555555555556, "percent_covered_display": "96", "missing_lines": 1, "excluded_lines": 0, "num_branches": 20, "num_partial_branches": 1, "covered_branches": 19, "missing_branches": 1}, "missing_lines": [77], "excluded_lines": [], "executed_branches": [[71, 72], [71, 73], [73, 74], [73, 76], [76, 78], [78, 79], [78, 81], [83, 84], [83, 94], [85, 86], [85, 92], [86, 89], [86, 91], [94, 95], [94, 105], [96, 97], [96, 103], [97, 100], [97, 102]], "missing_branches": [[76, 77]]}, "docstring_from": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 2, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [111, 115], "excluded_lines": [], "executed_branches": [], "missing_branches": []}, "docstring_from.decorator": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 2, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [112, 113], "excluded_lines": [], "executed_branches": [], "missing_branches": []}, "_check_series_or_dataframe": {"executed_lines": [119, 122], "summary": {"covered_lines": 2, "num_statements": 3, "percent_covered": 60.0, "percent_covered_display": "60", "missing_lines": 1, "excluded_lines": 0, "num_branches": 2, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 1}, "missing_lines": [120], "excluded_lines": [], "executed_branches": [[119, 122]], "missing_branches": [[119, 120]]}, "_to_list": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 3, "excluded_lines": 0, "num_branches": 2, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 2}, "missing_lines": [126, 127, 128], "excluded_lines": [], "executed_branches": [], "missing_branches": [[126, 127], [126, 128]]}, "_drop_cols": {"executed_lines": [147, 148, 149, 150, 151, 152, 154], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [[147, 148], [147, 154]], "missing_branches": []}, "_extract_variable_level": {"executed_lines": [172, 173, 174, 177, 178, 180], "summary": {"covered_lines": 6, "num_statements": 7, "percent_covered": 77.77777777777777, "percent_covered_display": "78", "missing_lines": 1, "excluded_lines": 0, "num_branches": 2, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 1}, "missing_lines": [175], "excluded_lines": [], "executed_branches": [[174, 177]], "missing_branches": [[174, 175]]}, "": {"executed_lines": [1, 2, 4, 5, 6, 7, 9, 12, 16, 35, 108, 118, 125, 131, 157], "summary": {"covered_lines": 15, "num_statements": 15, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [1, 2, 4, 5, 6, 7, 9, 12, 13, 16, 30, 31, 32, 35, 71, 72, 73, 74, 76, 78, 79, 81, 82, 83, 84, 85, 86, 89, 91, 92, 94, 95, 96, 97, 100, 102, 103, 105, 108, 118, 119, 122, 125, 131, 147, 148, 149, 150, 151, 152, 154, 157, 172, 173, 174, 177, 178, 180], "summary": {"covered_lines": 58, "num_statements": 68, "percent_covered": 84.6938775510204, "percent_covered_display": "85", "missing_lines": 10, "excluded_lines": 0, "num_branches": 30, "num_partial_branches": 3, "covered_branches": 25, "missing_branches": 5}, "missing_lines": [77, 111, 112, 113, 115, 120, 126, 127, 128, 175], "excluded_lines": [], "executed_branches": [[30, 31], [30, 32], [71, 72], [71, 73], [73, 74], [73, 76], [76, 78], [78, 79], [78, 81], [83, 84], [83, 94], [85, 86], [85, 92], [86, 89], [86, 91], [94, 95], [94, 105], [96, 97], [96, 103], [97, 100], [97, 102], [119, 122], [147, 148], [147, 154], [174, 177]], "missing_branches": [[76, 77], [119, 120], [126, 127], [126, 128], [174, 175]]}}}, "pyfixest/utils/dgps.py": {"executed_lines": [1, 2, 5, 7, 8, 9, 21, 22, 23, 24, 31, 36, 37, 40, 70, 71, 72, 77, 80, 83, 86, 87, 88, 89, 90, 91, 93, 95, 96, 98, 99, 100, 101, 103, 106, 107, 109, 112, 113, 114, 117, 118, 119, 122, 123, 124, 128, 136, 138, 139, 140, 141, 142, 151, 152, 153, 154, 157, 171, 172, 173, 174, 175, 180, 183, 184, 195, 198, 201, 203, 204, 205, 206, 207, 208, 210, 213, 214, 215, 216, 217, 219, 222, 223, 225, 227, 228, 231, 233, 236, 237, 239, 240, 243, 248, 249, 250, 255, 256, 258, 266, 268, 269, 270, 271, 272, 273, 274, 284, 285, 288, 290, 291, 292, 294, 295, 296, 302, 310], "summary": {"covered_lines": 119, "num_statements": 120, "percent_covered": 97.40259740259741, "percent_covered_display": "97", "missing_lines": 1, "excluded_lines": 0, "num_branches": 34, "num_partial_branches": 3, "covered_branches": 31, "missing_branches": 3}, "missing_lines": [97], "excluded_lines": [], "executed_branches": [[71, 72], [71, 77], [90, 91], [90, 93], [96, 98], [100, 101], [100, 103], [106, 107], [106, 109], [113, 114], [113, 117], [123, 124], [123, 128], [136, 138], [136, 154], [171, 172], [171, 173], [173, 174], [173, 175], [175, 180], [207, 208], [207, 210], [216, 217], [216, 219], [222, 223], [222, 225], [233, 236], [233, 255], [239, 240], [239, 243], [266, 268]], "missing_branches": [[96, 97], [175, 195], [266, 285]], "functions": {"get_blw": {"executed_lines": [7, 8, 9, 21, 22, 23, 24, 31], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": []}, "get_sharkfin": {"executed_lines": [70, 71, 72, 77, 80, 83, 86, 87, 88, 89, 90, 91, 93, 95, 96, 98, 99, 100, 101, 103, 106, 107, 109, 112, 113, 114, 117, 118, 119, 122, 123, 124, 128, 136, 138, 139, 140, 141, 142, 151, 152, 153, 154], "summary": {"covered_lines": 43, "num_statements": 44, "percent_covered": 96.66666666666667, "percent_covered_display": "97", "missing_lines": 1, "excluded_lines": 0, "num_branches": 16, "num_partial_branches": 1, "covered_branches": 15, "missing_branches": 1}, "missing_lines": [97], "excluded_lines": [], "executed_branches": [[71, 72], [71, 77], [90, 91], [90, 93], [96, 98], [100, 101], [100, 103], [106, 107], [106, 109], [113, 114], [113, 117], [123, 124], [123, 128], [136, 138], [136, 154]], "missing_branches": [[96, 97]]}, "get_panel_dgp_stagg": {"executed_lines": [171, 172, 173, 174, 175, 180, 183, 184, 195, 198, 201, 203, 204, 205, 206, 207, 208, 210, 213, 214, 215, 216, 217, 219, 222, 223, 225, 227, 228, 231, 233, 236, 237, 239, 240, 243, 248, 249, 250, 255, 256, 258, 266, 268, 269, 270, 271, 272, 273, 274, 284, 285], "summary": {"covered_lines": 52, "num_statements": 52, "percent_covered": 97.14285714285714, "percent_covered_display": "97", "missing_lines": 0, "excluded_lines": 0, "num_branches": 18, "num_partial_branches": 2, "covered_branches": 16, "missing_branches": 2}, "missing_lines": [], "excluded_lines": [], "executed_branches": [[171, 172], [171, 173], [173, 174], [173, 175], [175, 180], [207, 208], [207, 210], [216, 217], [216, 219], [222, 223], [222, 225], [233, 236], [233, 255], [239, 240], [239, 243], [266, 268]], "missing_branches": [[175, 195], [266, 285]]}, "gelbach_data": {"executed_lines": [290, 291, 292, 294, 295, 296, 302, 310], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [1, 2, 5, 36, 37, 40, 157, 288], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [1, 2, 5, 7, 8, 9, 21, 22, 23, 24, 31, 36, 37, 40, 70, 71, 72, 77, 80, 83, 86, 87, 88, 89, 90, 91, 93, 95, 96, 98, 99, 100, 101, 103, 106, 107, 109, 112, 113, 114, 117, 118, 119, 122, 123, 124, 128, 136, 138, 139, 140, 141, 142, 151, 152, 153, 154, 157, 171, 172, 173, 174, 175, 180, 183, 184, 195, 198, 201, 203, 204, 205, 206, 207, 208, 210, 213, 214, 215, 216, 217, 219, 222, 223, 225, 227, 228, 231, 233, 236, 237, 239, 240, 243, 248, 249, 250, 255, 256, 258, 266, 268, 269, 270, 271, 272, 273, 274, 284, 285, 288, 290, 291, 292, 294, 295, 296, 302, 310], "summary": {"covered_lines": 119, "num_statements": 120, "percent_covered": 97.40259740259741, "percent_covered_display": "97", "missing_lines": 1, "excluded_lines": 0, "num_branches": 34, "num_partial_branches": 3, "covered_branches": 31, "missing_branches": 3}, "missing_lines": [97], "excluded_lines": [], "executed_branches": [[71, 72], [71, 77], [90, 91], [90, 93], [96, 98], [100, 101], [100, 103], [106, 107], [106, 109], [113, 114], [113, 117], [123, 124], [123, 128], [136, 138], [136, 154], [171, 172], [171, 173], [173, 174], [173, 175], [175, 180], [207, 208], [207, 210], [216, 217], [216, 219], [222, 223], [222, 225], [233, 236], [233, 255], [239, 240], [239, 243], [266, 268]], "missing_branches": [[96, 97], [175, 195], [266, 285]]}}}, "pyfixest/utils/set_rpy2_path.py": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 15, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 15, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [1, 2, 5, 7, 10, 20, 23, 26, 27, 28, 29, 30, 31, 32, 35], "excluded_lines": [], "executed_branches": [], "missing_branches": [], "functions": {"update_r_paths": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 4, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [7, 10, 20, 23], "excluded_lines": [], "executed_branches": [], "missing_branches": []}, "_check_update_r_paths": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 6, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 6, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [27, 28, 29, 30, 31, 32], "excluded_lines": [], "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 5, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 5, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [1, 2, 5, 26, 35], "excluded_lines": [], "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 15, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 15, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [1, 2, 5, 7, 10, 20, 23, 26, 27, 28, 29, 30, 31, 32, 35], "excluded_lines": [], "executed_branches": [], "missing_branches": []}}}, "pyfixest/utils/utils.py": {"executed_lines": [1, 2, 3, 5, 6, 7, 8, 10, 13, 92, 99, 100, 101, 107, 108, 109, 110, 111, 112, 113, 114, 116, 118, 122, 124, 127, 135, 185, 186, 187, 188, 190, 191, 197, 199, 200, 201, 202, 203, 204, 206, 210, 211, 213, 217, 218, 221, 222, 223, 224, 225, 226, 230, 231, 234, 262, 263, 264, 269, 270, 272, 273, 274, 276, 277, 279, 280, 281, 283, 285, 288, 289, 290, 291, 292, 293, 298, 299, 300, 301, 302, 303, 308, 309, 310, 311, 312, 313, 314, 315, 319, 320, 322, 323, 324, 326, 329, 330, 331, 334, 335, 338, 339, 341, 343, 346, 348, 349, 350, 351, 353, 356, 384, 385, 386, 388, 389, 390, 391, 394, 422, 425], "summary": {"covered_lines": 122, "num_statements": 140, "percent_covered": 84.15841584158416, "percent_covered_display": "84", "missing_lines": 18, "excluded_lines": 0, "num_branches": 62, "num_partial_branches": 10, "covered_branches": 48, "missing_branches": 14}, "missing_lines": [117, 119, 123, 125, 215, 228, 295, 305, 317, 441, 442, 443, 445, 446, 447, 449, 450, 452], "excluded_lines": [], "executed_branches": [[99, 100], [99, 116], [100, 99], [100, 101], [107, 108], [107, 109], [109, 110], [109, 111], [111, 112], [111, 113], [113, 114], [116, 118], [118, 122], [122, 124], [124, 127], [199, 200], [199, 201], [201, 202], [201, 211], [202, 203], [202, 204], [204, 206], [204, 210], [211, 213], [217, 218], [217, 221], [221, 222], [221, 230], [222, 223], [222, 224], [224, 225], [288, 289], [288, 290], [290, 291], [290, 292], [292, 293], [298, 299], [298, 300], [300, 301], [300, 302], [302, 303], [308, 309], [308, 311], [311, 312], [338, 339], [338, 341], [346, 348], [346, 353]], "missing_branches": [[113, 99], [116, 117], [118, 119], [122, 123], [124, 125], [211, 215], [224, 228], [292, 295], [302, 305], [311, 317], [445, 446], [445, 452], [449, 445], [449, 450]], "functions": {"ssc": {"executed_lines": [92, 99, 100, 101, 107, 108, 109, 110, 111, 112, 113, 114, 116, 118, 122, 124, 127], "summary": {"covered_lines": 17, "num_statements": 21, "percent_covered": 78.04878048780488, "percent_covered_display": "78", "missing_lines": 4, "excluded_lines": 0, "num_branches": 20, "num_partial_branches": 5, "covered_branches": 15, "missing_branches": 5}, "missing_lines": [117, 119, 123, 125], "excluded_lines": [], "executed_branches": [[99, 100], [99, 116], [100, 99], [100, 101], [107, 108], [107, 109], [109, 110], [109, 111], [111, 112], [111, 113], [113, 114], [116, 118], [118, 122], [122, 124], [124, 127]], "missing_branches": [[113, 99], [116, 117], [118, 119], [122, 123], [124, 125]]}, "get_ssc": {"executed_lines": [185, 186, 187, 188, 190, 191, 197, 199, 200, 201, 202, 203, 204, 206, 210, 211, 213, 217, 218, 221, 222, 223, 224, 225, 226, 230, 231], "summary": {"covered_lines": 27, "num_statements": 29, "percent_covered": 91.48936170212765, "percent_covered_display": "91", "missing_lines": 2, "excluded_lines": 0, "num_branches": 18, "num_partial_branches": 2, "covered_branches": 16, "missing_branches": 2}, "missing_lines": [215, 228], "excluded_lines": [], "executed_branches": [[199, 200], [199, 201], [201, 202], [201, 211], [202, 203], [202, 204], [204, 206], [204, 210], [211, 213], [217, 218], [217, 221], [221, 222], [221, 230], [222, 223], [222, 224], [224, 225]], "missing_branches": [[211, 215], [224, 228]]}, "get_data": {"executed_lines": [262, 263, 264, 269, 270, 272, 273, 274, 276, 277, 279, 280, 281, 283, 285, 288, 289, 290, 291, 292, 293, 298, 299, 300, 301, 302, 303, 308, 309, 310, 311, 312, 313, 314, 315, 319, 320, 322, 323, 324, 326, 329, 330, 331, 334, 335, 338, 339, 341, 343, 346, 348, 349, 350, 351, 353], "summary": {"covered_lines": 56, "num_statements": 59, "percent_covered": 92.40506329113924, "percent_covered_display": "92", "missing_lines": 3, "excluded_lines": 0, "num_branches": 20, "num_partial_branches": 3, "covered_branches": 17, "missing_branches": 3}, "missing_lines": [295, 305, 317], "excluded_lines": [], "executed_branches": [[288, 289], [288, 290], [290, 291], [290, 292], [292, 293], [298, 299], [298, 300], [300, 301], [300, 302], [302, 303], [308, 309], [308, 311], [311, 312], [338, 339], [338, 341], [346, 348], [346, 353]], "missing_branches": [[292, 295], [302, 305], [311, 317]]}, "simultaneous_crit_val": {"executed_lines": [384, 388, 389, 390, 391], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": []}, "simultaneous_crit_val.msqrt": {"executed_lines": [385, 386], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": []}, "capture_context": {"executed_lines": [422], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": []}, "_check_balanced": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 9, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 9, "excluded_lines": 0, "num_branches": 4, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 4}, "missing_lines": [441, 442, 443, 445, 446, 447, 449, 450, 452], "excluded_lines": [], "executed_branches": [], "missing_branches": [[445, 446], [445, 452], [449, 445], [449, 450]]}, "": {"executed_lines": [1, 2, 3, 5, 6, 7, 8, 10, 13, 135, 234, 356, 394, 425], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [1, 2, 3, 5, 6, 7, 8, 10, 13, 92, 99, 100, 101, 107, 108, 109, 110, 111, 112, 113, 114, 116, 118, 122, 124, 127, 135, 185, 186, 187, 188, 190, 191, 197, 199, 200, 201, 202, 203, 204, 206, 210, 211, 213, 217, 218, 221, 222, 223, 224, 225, 226, 230, 231, 234, 262, 263, 264, 269, 270, 272, 273, 274, 276, 277, 279, 280, 281, 283, 285, 288, 289, 290, 291, 292, 293, 298, 299, 300, 301, 302, 303, 308, 309, 310, 311, 312, 313, 314, 315, 319, 320, 322, 323, 324, 326, 329, 330, 331, 334, 335, 338, 339, 341, 343, 346, 348, 349, 350, 351, 353, 356, 384, 385, 386, 388, 389, 390, 391, 394, 422, 425], "summary": {"covered_lines": 122, "num_statements": 140, "percent_covered": 84.15841584158416, "percent_covered_display": "84", "missing_lines": 18, "excluded_lines": 0, "num_branches": 62, "num_partial_branches": 10, "covered_branches": 48, "missing_branches": 14}, "missing_lines": [117, 119, 123, 125, 215, 228, 295, 305, 317, 441, 442, 443, 445, 446, 447, 449, 450, 452], "excluded_lines": [], "executed_branches": [[99, 100], [99, 116], [100, 99], [100, 101], [107, 108], [107, 109], [109, 110], [109, 111], [111, 112], [111, 113], [113, 114], [116, 118], [118, 122], [122, 124], [124, 127], [199, 200], [199, 201], [201, 202], [201, 211], [202, 203], [202, 204], [204, 206], [204, 210], [211, 213], [217, 218], [217, 221], [221, 222], [221, 230], [222, 223], [222, 224], [224, 225], [288, 289], [288, 290], [290, 291], [290, 292], [292, 293], [298, 299], [298, 300], [300, 301], [300, 302], [302, 303], [308, 309], [308, 311], [311, 312], [338, 339], [338, 341], [346, 348], [346, 353]], "missing_branches": [[113, 99], [116, 117], [118, 119], [122, 123], [124, 125], [211, 215], [224, 228], [292, 295], [302, 305], [311, 317], [445, 446], [445, 452], [449, 445], [449, 450]]}}}}, "totals": {"covered_lines": 5150, "num_statements": 6106, "percent_covered": 82.1831869510665, "percent_covered_display": "82", "missing_lines": 956, "excluded_lines": 43, "num_branches": 1864, "num_partial_branches": 260, "covered_branches": 1400, "missing_branches": 464}} diff --git a/docs/changelog.qmd b/docs/changelog.qmd index df7440d1a..4b79a200e 100644 --- a/docs/changelog.qmd +++ b/docs/changelog.qmd @@ -19,13 +19,14 @@ fit3 = pf.feols("Y ~ X1 + X2 | f1", data = df) ### Migration to maketables -The table functionality in pyfixest now uses [maketables](https://py-econometrics.github.io/maketables/). `maketables` is a spin-off of +The table functionality in pyfixest now uses the [maketables](https://py-econometrics.github.io/maketables/) package internally. `maketables` is a spin-off of pyfixest internal functions, but supports more packages in the Python eco-system (e.g. `statsmodels` and `linearmorels`). Due to it's close connection to `pyfixest`, the API of `pf.etable()` remains unchanged. + **Changes:** - `pf.etable()` now uses `maketables.ETable` internally. The API remains unchanged for backward compatibility. -- Because the function is not at the core of `pyixest` functionality, we will deprecate `pf.dtable()`. +- Because this function is not at the core of `pyixest` functionality, we will deprecate `pf.dtable()`. A `FutureWarning` is now emitted. The function has been moved to `maketables` and can be used by calling `maketables.DTable()` directly. - The same applies for `pf.make_table()`, which has been an internal utility function to create tables. An equivalent function now lives in `maketables.MTable()`. @@ -46,7 +47,7 @@ maketables.DTable(df, vars=["Y", "X1"]) pf.make_table(df, type="gt", caption="My Table") # After: import maketables -maketables.MTable(df, caption="My Table").make(type="gt") +maketables.MTable(df, caption="My Table").to_gt() ``` ### Other Changes diff --git a/docs/resources.qmd b/docs/resources.qmd index 04f2379db..5df994d2a 100644 --- a/docs/resources.qmd +++ b/docs/resources.qmd @@ -29,7 +29,7 @@ Textbooks / textbook chapters that we still want to cover: If you are teaching with pyfixest, we'd love to hear from you! - Econometrics II (taught by Vladislav Morozov at UBonn): Great intro to fixed effects estimation theory. Slides on fixed effects [here](https://vladislav-morozov.github.io/econometrics-2/slides/panel/fe.html#/title-slide), full class notes [here](https://vladislav-morozov.github.io/econometrics-2/), [github repository](https://github.com/vladislav-morozov/econometrics-2) -- Empirical Economics (taught at University of Utrecht 2025-2026) - MSc class in empirical economics. +- Empirical Economics (taught at University of Utrecht 2025-2026) - MSc class in empirical economics. - ECON 526 - MA-level course in quantitative economics, data science, and causal inference in economics, taught at the University of Brisith Columbia. [Class notes here](https://github.com/ubcecon/ECON526/tree/main_2025) diff --git a/docs/table-layout.qmd b/docs/table-layout.qmd index fc968052b..87a3b7394 100644 --- a/docs/table-layout.qmd +++ b/docs/table-layout.qmd @@ -14,6 +14,13 @@ Starting with pyfixest 0.41.0 (currently in development), the table functionalit The `pf.etable()` API remains unchanged. `pf.dtable()` is deprecated (use `DTable()` directly) and `pf.make_table()` has been removed (use `maketables.MTable()` directly). ::: +Pyfixest comes with functions to generate publication-ready tables. Regression tables are generated with `pf.etable()`, which can output different formats, for instance using the [Great Tables](https://posit-dev.github.io/great-tables/articles/intro.html) package or generating formatted LaTex Tables using [booktabs](https://ctan.org/pkg/booktabs?lang=en). Descriptive statistics tables can be created with `DTable()` and custom tables with `maketables.MTable()`. +::: {.callout-note} +## Migration Notice +Starting with pyfixest 0.41.0 (currently in development), the table functionality is powered by [maketables](https://py-econometrics.github.io/maketables/). +The `pf.etable()` API remains unchanged. `pf.dtable()` is deprecated (use `DTable()` directly) and `pf.make_table()` has been removed (use `maketables.MTable()` directly). +::: + Pyfixest comes with functions to generate publication-ready tables. Regression tables are generated with `pf.etable()`, which can output different formats, for instance using the [Great Tables](https://posit-dev.github.io/great-tables/articles/intro.html) package or generating formatted LaTex Tables using [booktabs](https://ctan.org/pkg/booktabs?lang=en). Descriptive statistics tables can be created with `DTable()` and custom tables with `maketables.MTable()`. To begin, we load some libraries and fit a set of regression models. @@ -24,6 +31,8 @@ import pandas as pd import pylatex as pl # for the latex table; note: not a dependency of pyfixest - needs manual installation from maketables import DTable from great_tables import loc, style # great_tables is used by maketables internally +from maketables import DTable +from great_tables import loc, style # great_tables is used by maketables internally from IPython.display import FileLink, display import pyfixest as pf @@ -120,10 +129,12 @@ pf.etable( ) ``` +To obtain latex output use `type = "tex"`. If you want to save the table as a tex file, you can use the `file_name=` argument to specify the respective path where it should be saved. Etable will use latex packages `booktabs`, `threeparttable`, `makecell`, and `tabularx` for the table layout, so don't forget to include these packages in your latex document. To obtain latex output use `type = "tex"`. If you want to save the table as a tex file, you can use the `file_name=` argument to specify the respective path where it should be saved. Etable will use latex packages `booktabs`, `threeparttable`, `makecell`, and `tabularx` for the table layout, so don't forget to include these packages in your latex document. ```{python} # LaTex output (include latex packages booktabs, threeparttable, makecell, and tabularx in your document): +# LaTex output (include latex packages booktabs, threeparttable, makecell, and tabularx in your document): tab = pf.etable( [fit1, fit2, fit3, fit4, fit5, fit6], signif_code=[0.01, 0.05, 0.1], @@ -145,6 +156,7 @@ def make_pdf(tab, file): doc.packages.append(pl.Package("threeparttable")) doc.packages.append(pl.Package("makecell")) doc.packages.append(pl.Package("tabularx")) + doc.packages.append(pl.Package("tabularx")) with ( doc.create(pl.Section("A PyFixest LateX Table")), @@ -342,17 +354,20 @@ format: ::: {.callout-warning} ## Deprecation Notice -`pf.dtable()` will be deprecated in the future. Please use `DTable` from the `maketables` package. +`pf.dtable()` will be deprecated in the future. Please use from the `maketables` package. ::: +The function `DTable()` allows to display descriptive statistics for a set of variables in the same layout. The function `DTable()` allows to display descriptive statistics for a set of variables in the same layout. +## Basic Usage of DTable ## Basic Usage of DTable Specify the variables you want to display the descriptive statistics for. You can also use a dictionary to rename the variables and add a caption. ```{python} +DTable( DTable( data, vars=["Y", "Y2", "X1", "X2"], @@ -367,6 +382,7 @@ Choose the set of statistics to be displayed with `stats`. You can use any panda ```{python} +DTable( DTable( data, vars=["Y", "Y2", "X1", "X2"], @@ -389,6 +405,7 @@ data["occupation"] = np.random.choice(["Blue collar", "White collar"], data.shap # Drop nan values to have balanced data data.dropna(inplace=True) +DTable( DTable( data, vars=["Y", "Y2", "X1", "X2"], @@ -408,6 +425,7 @@ You can also hide the display of the statistics labels in the header with `hide_ ```{python} +DTable( DTable( data, vars=["Y", "Y2", "X1", "X2"], @@ -426,6 +444,7 @@ You can also split by characteristics in both columns and rows. Note that you ca ```{python} +DTable( DTable( data, vars=["Y", "Y2", "X1", "X2"], @@ -442,6 +461,7 @@ And you can again export descriptive statistics tables also to LaTex: ```{python} +dtab = DTable( dtab = DTable( data, vars=["Y", "Y2", "X1", "X2"], @@ -522,6 +542,7 @@ style_presentation = { ```{python} +t1 = DTable( t1 = DTable( data, vars=["Y", "Y2", "X1", "X2"], @@ -542,6 +563,7 @@ t2 = pf.etable( ```{python} display(t1.make(type="gt", gt_style=style_print)) +display(t1.make(type="gt", gt_style=style_print)) display(t2.tab_options(**style_print)) ``` @@ -561,5 +583,6 @@ style_printDouble = { "table_width": "14cm", } display(t1.make(type="gt", gt_style=style_printDouble)) +display(t1.make(type="gt", gt_style=style_printDouble)) display(t2.tab_options(**style_printDouble)) ``` diff --git a/pixi.lock b/pixi.lock index 2ca5a41f2..be51d16ed 100644 --- a/pixi.lock +++ b/pixi.lock @@ -4720,6 +4720,266 @@ environments: - pypi: https://files.pythonhosted.org/packages/00/c0/8f5d070730d7836adc9c9b6408dec68c6ced86b304a9b26a14df072a6e8c/traitlets-5.14.3-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/af/b5/123f13c975e9f27ab9c0770f514345bd406d0e8d3b7a0723af9d43f710af/wcwidth-0.2.14-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/2e/54/647ade08bf0db230bfea292f893923872fd20be6ac6f53b2b936ba839d75/zipp-3.23.0-py3-none-any.whl + snapshot: + channels: + - url: https://conda.anaconda.org/conda-forge/ + indexes: + - https://pypi.org/simple + packages: + osx-64: + - conda: https://conda.anaconda.org/conda-forge/osx-64/_openmp_mutex-4.5-7_kmp_llvm.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/brotli-1.2.0-hf139dec_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/brotli-bin-1.2.0-h8616949_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/bzip2-1.0.8-h500dc9f_8.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.11.12-hbd8a1cb_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/contourpy-1.3.3-py313h5eff275_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/coverage-7.13.0-py313h0f4d31d_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cycler-0.12.1-pyhcf101f3_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.3.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/fonttools-4.61.1-py313h0f4d31d_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/formulaic-1.2.1-pyhd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/freetype-2.14.1-h694c41f_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/icu-78.1-h14c5de8_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.3.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/interface_meta-1.3.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/joblib-1.5.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/kiwisolver-1.4.9-py313ha1c5e85_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/lcms2-2.17-h72f5680_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/lerc-4.0.0-hcca01a6_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libblas-3.11.0-5_he492b99_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libbrotlicommon-1.2.0-h8616949_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libbrotlidec-1.2.0-h8616949_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libbrotlienc-1.2.0-h8616949_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libcblas-3.11.0-5_h9b27e0a_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libcxx-21.1.8-h3d58e20_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libdeflate-1.25-h517ebb2_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libexpat-2.7.3-heffb93a_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libffi-3.5.2-h750e83c_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libfreetype-2.14.1-h694c41f_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libfreetype6-2.14.1-h6912278_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libgcc-15.2.0-h08519bb_15.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libgfortran-15.2.0-h7e5c614_15.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libgfortran5-15.2.0-hd16e46c_15.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libjpeg-turbo-3.1.2-h8616949_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/liblapack-3.11.0-5_h859234e_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/liblzma-5.8.1-hd471939_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libmpdec-4.0.0-h6e16a3a_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libopenblas-0.3.30-openmp_h6006d49_4.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libpng-1.6.53-h380d223_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libsqlite-3.51.1-hd09e2f1_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libtiff-4.7.1-ha0a348c_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libwebp-base-1.6.0-hb807250_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libxcb-1.17.0-hf1f96e2_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libzlib-1.3.1-hd23fc13_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/llvm-openmp-21.1.8-h472b3d1_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/llvmlite-0.46.0-py313h590e1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/matplotlib-3.10.8-py313habf4b1d_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/matplotlib-base-3.10.8-py313h4ad75b8_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/maturin-1.10.2-py310h646694a_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/munkres-1.1.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/narwhals-2.14.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/ncurses-6.5-h0622a9a_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/numba-0.63.1-py313hd3f9b42_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/numpy-2.3.5-py313hf1665ba_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/openjpeg-2.5.4-h87e8dc5_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/openssl-3.6.0-h230baf5_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pandas-2.3.3-py313h2f264a9_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/patsy-1.0.2-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pillow-12.0.0-py313h8d2ffa5_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pip-25.3-pyh145f28c_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.6.0-pyhf9edf01_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pthread-stubs-0.4-h00291cd_1002.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pyparsing-3.3.1-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-9.0.2-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-7.0.0-pyhcf101f3_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/python-3.13.11-h17c18a5_100_cp313.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhe01879c_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.13-8_cp313.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2025.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/qhull-2020.2-h3c5361c_5.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/readline-8.3-h68b038d_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/rust-1.92.0-h34a2095_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/rust-std-x86_64-apple-darwin-1.92.0-h38e4360_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/scipy-1.15.2-py313h7e69c36_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/seaborn-0.13.2-hd8ed1ab_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/seaborn-base-0.13.2-pyhd8ed1ab_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-80.9.0-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhe01879c_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/statsmodels-0.14.6-py313h0f4b8c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tabulate-0.9.0-pyhcf101f3_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/tk-8.6.13-hf689a15_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.3.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/tornado-6.5.4-py313h16c19ce_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.15.0-h396c80c_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.15.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025c-h8577fbf_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/wrapt-2.0.1-py313hf050af9_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/xorg-libxau-1.0.12-h8616949_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/xorg-libxdmcp-1.1.5-h8616949_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/zlib-ng-2.3.2-h8bce59a_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/zstd-1.5.7-h3eecb57_6.conda + - pypi: https://files.pythonhosted.org/packages/d2/39/e7eaf1799466a4aef85b6a4fe7bd175ad2b1c6345066aa33f1f58d4b18d0/asttokens-3.0.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/b7/b8/3fe70c75fe32afc4bb507f75563d39bc5642255d1d94f1f23604725780bf/babel-2.17.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/b1/92/dfd892312d822f36c55366118b95d914e5f16de11044a27cf10a7d71bbbf/commonmark-0.9.1-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/4e/8c/f3147f5c4b73e7550fe5f9352eaa956ae838d5c51eb58e7a25b9f3e2643b/decorator-5.2.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/c1/ea/53f2148663b321f21b5a606bd5f191517cf40b7072c0497d3c92c4a13b1e/executing-2.2.1-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/65/3c/1db1b0f878319bb227f35a0fca7cad64e1f528b518bcab1a708da305c86d/faicons-0.2.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/fa/a9/b0f34fe9adbdd86fe98b770fe266c18f66dfdcc3e95680bda00a139fd05d/great_tables-0.20.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/0a/ba/aa99706246f1938ca905eb6eeb7db832ac2e157aa4b805acb5cd4cd1791a/htmltools-0.6.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/fa/5e/f8e9a1d23b9c20a551a8a02ea3637b4642e22c2626e3a13a9a29cdea99eb/importlib_metadata-8.7.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/a4/ed/1f1afb2e9e7f38a545d628f864d562a5ae64fe6f7a10e28ffb9b185b4e89/importlib_resources-6.5.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/f1/df/8ee1c5dd1e3308b5d5b2f2dfea323bb2f3827da8d654abb6642051199049/ipython-9.8.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/d9/33/1f075bf72b0b747cb3288d011319aaf64083cf2efef8354174e3ed4540e2/ipython_pygments_lexers-1.1.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/c0/5a/9cac0c82afec3d09ccd97c8b6502d48f165f9124db81b4bcb90b4af974ee/jedi-0.19.2-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/78/c0/29b864090b5a04396f5b22e3918d293500b0732f5c6a9f56f8d9d4261712/lets_plot-4.8.2-cp313-cp313-macosx_10_15_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/5d/f4/2a94a3d3dfd6c6b433501b8d470a1960a20ecce93245cf2db1706adf6c19/lxml-6.0.2-cp313-cp313-macosx_10_13_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/94/a4/5b2066d629fe5739f688f52fe73947362bddf885e20636c2b3c1b1a759d4/maketables-0.1.7-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/af/33/ee4519fa02ed11a94aef9559552f3b17bb863f2ecfe1a35dc7f548cde231/matplotlib_inline-0.2.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/cf/f7/3367feadd4ab56783b0971c9b7edfbdd68e0c70ce877949a5dd2117ed4a0/palettable-3.3.3-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/16/32/f8e3c85d1d5250232a5d3477a2a28cc291968ff175caeadaf3cc19ce0e4a/parso-0.8.5-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/9e/c3/059298687310d527a58bb01f3b1965787ee3b40dce76752eda8b44e9a2c5/pexpect-4.9.0-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/84/03/0d3ce49e2505ae70cf43bc5bb3033955d2fc9f932163e84dc0779cc47f48/prompt_toolkit-3.0.52-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/22/a6/858897256d0deac81a172289110f31629fc4cee19b6f01283303e18c8db3/ptyprocess-0.7.0-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/8e/37/efad0257dc6e593a18957422533ff0f87ede7c9c6ea010a2177d738fb82f/pure_eval-0.2.3-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/3e/b9/3766cc361d93edb2ce81e2e1f87dd98f314d7d513877a342d31b30741680/pypng-0.20220715.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/d0/00/1e03a4989fa5795da308cd774f05b704ace555a70f9bf9d3be057b680bcf/python_docx-1.2.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/f1/7b/ce1eafaf1a76852e2ec9b22edecf1daa58175c090266e9f6c64afcd81d91/stack_data-0.6.3-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/9d/9a/6c68aad2ccfce6e2eeebbf5bb709d0240592eb51ff142ec4c8fbf3c2460a/syrupy-5.0.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/00/c0/8f5d070730d7836adc9c9b6408dec68c6ced86b304a9b26a14df072a6e8c/traitlets-5.14.3-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/af/b5/123f13c975e9f27ab9c0770f514345bd406d0e8d3b7a0723af9d43f710af/wcwidth-0.2.14-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/2e/54/647ade08bf0db230bfea292f893923872fd20be6ac6f53b2b936ba839d75/zipp-3.23.0-py3-none-any.whl + osx-arm64: + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/_openmp_mutex-4.5-7_kmp_llvm.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/brotli-1.2.0-h7d5ae5b_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/brotli-bin-1.2.0-hc919400_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/bzip2-1.0.8-hd037594_8.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.11.12-hbd8a1cb_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/contourpy-1.3.3-py312h84eede6_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/coverage-7.13.0-py312h5748b74_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cycler-0.12.1-pyhcf101f3_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.3.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/fonttools-4.61.1-py312h5748b74_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/formulaic-1.2.1-pyhd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/freetype-2.14.1-hce30654_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.3.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/interface_meta-1.3.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/joblib-1.5.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/kiwisolver-1.4.9-py312hd8c8125_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lcms2-2.17-h7eeda09_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lerc-4.0.0-hd64df32_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.11.0-5_h51639a9_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlicommon-1.2.0-hc919400_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlidec-1.2.0-hc919400_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlienc-1.2.0-hc919400_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.11.0-5_hb0561ab_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-21.1.8-hf598326_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libdeflate-1.25-hc11a715_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.7.3-haf25636_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libffi-3.5.2-he5f378a_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libfreetype-2.14.1-hce30654_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libfreetype6-2.14.1-h6da58f4_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgcc-15.2.0-hcbb3090_16.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-15.2.0-h07b0088_16.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-15.2.0-hdae7583_16.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libjpeg-turbo-3.1.2-hc919400_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.11.0-5_hd9741b5_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.8.1-h39f12f2_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.30-openmp_ha158390_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.53-hfab5511_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.51.1-h1b79a29_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libtiff-4.7.1-h4030677_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libwebp-base-1.6.0-h07db88b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxcb-1.17.0-hdb1d25a_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-21.1.8-h4a912ad_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvmlite-0.46.0-py312hc82e5dd_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/matplotlib-3.10.8-py312h1f38498_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/matplotlib-base-3.10.8-py312h605b88b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/maturin-1.10.2-py310ha114163_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/munkres-1.1.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/narwhals-2.14.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numba-0.63.1-py312h5d8d915_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-2.3.5-py312he281c53_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openjpeg-2.5.4-hbfb3c88_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.6.0-h5503f6c_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pandas-2.3.3-py312h5978115_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/patsy-1.0.2-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pillow-12.0.0-py312h95c711c_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pip-25.3-pyh8b19718_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.6.0-pyhf9edf01_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pthread-stubs-0.4-hd74edd7_1002.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pyparsing-3.3.1-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-9.0.2-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-7.0.0-pyhcf101f3_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.12.12-h18782d2_1_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhe01879c_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.12-8_cp312.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2025.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/qhull-2020.2-h420ef59_5.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.3-h46df422_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/rust-1.92.0-h4ff7c5d_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/rust-std-aarch64-apple-darwin-1.92.0-hf6ec828_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/scipy-1.15.2-py312h99a188d_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/seaborn-0.13.2-hd8ed1ab_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/seaborn-base-0.13.2-pyhd8ed1ab_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-80.9.0-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhe01879c_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/statsmodels-0.14.6-py312ha11c99a_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tabulate-0.9.0-pyhcf101f3_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h892fb3f_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.3.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.5.4-py312h4409184_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.15.0-h396c80c_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.15.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025c-h8577fbf_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/unicodedata2-17.0.0-py312h4409184_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/wheel-0.45.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/wrapt-2.0.1-py312h4409184_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxau-1.0.12-hc919400_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxdmcp-1.1.5-hc919400_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zlib-ng-2.3.2-hed4e4f5_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstd-1.5.7-hbf9d68e_6.conda + - pypi: https://files.pythonhosted.org/packages/d2/39/e7eaf1799466a4aef85b6a4fe7bd175ad2b1c6345066aa33f1f58d4b18d0/asttokens-3.0.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/b7/b8/3fe70c75fe32afc4bb507f75563d39bc5642255d1d94f1f23604725780bf/babel-2.17.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/b1/92/dfd892312d822f36c55366118b95d914e5f16de11044a27cf10a7d71bbbf/commonmark-0.9.1-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/4e/8c/f3147f5c4b73e7550fe5f9352eaa956ae838d5c51eb58e7a25b9f3e2643b/decorator-5.2.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/c1/ea/53f2148663b321f21b5a606bd5f191517cf40b7072c0497d3c92c4a13b1e/executing-2.2.1-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/65/3c/1db1b0f878319bb227f35a0fca7cad64e1f528b518bcab1a708da305c86d/faicons-0.2.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/fa/a9/b0f34fe9adbdd86fe98b770fe266c18f66dfdcc3e95680bda00a139fd05d/great_tables-0.20.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/0a/ba/aa99706246f1938ca905eb6eeb7db832ac2e157aa4b805acb5cd4cd1791a/htmltools-0.6.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/fa/5e/f8e9a1d23b9c20a551a8a02ea3637b4642e22c2626e3a13a9a29cdea99eb/importlib_metadata-8.7.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/a4/ed/1f1afb2e9e7f38a545d628f864d562a5ae64fe6f7a10e28ffb9b185b4e89/importlib_resources-6.5.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/f1/df/8ee1c5dd1e3308b5d5b2f2dfea323bb2f3827da8d654abb6642051199049/ipython-9.8.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/d9/33/1f075bf72b0b747cb3288d011319aaf64083cf2efef8354174e3ed4540e2/ipython_pygments_lexers-1.1.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/c0/5a/9cac0c82afec3d09ccd97c8b6502d48f165f9124db81b4bcb90b4af974ee/jedi-0.19.2-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/23/45/af03b985c2c27d876d59c3a18dc1f432b0c4a3a737dccbe65c2c1d490ada/lets_plot-4.8.2-cp312-cp312-macosx_11_0_arm64.whl + - pypi: https://files.pythonhosted.org/packages/f3/c8/8ff2bc6b920c84355146cd1ab7d181bc543b89241cfb1ebee824a7c81457/lxml-6.0.2-cp312-cp312-macosx_10_13_universal2.whl + - pypi: https://files.pythonhosted.org/packages/94/a4/5b2066d629fe5739f688f52fe73947362bddf885e20636c2b3c1b1a759d4/maketables-0.1.7-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/af/33/ee4519fa02ed11a94aef9559552f3b17bb863f2ecfe1a35dc7f548cde231/matplotlib_inline-0.2.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/cf/f7/3367feadd4ab56783b0971c9b7edfbdd68e0c70ce877949a5dd2117ed4a0/palettable-3.3.3-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/16/32/f8e3c85d1d5250232a5d3477a2a28cc291968ff175caeadaf3cc19ce0e4a/parso-0.8.5-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/9e/c3/059298687310d527a58bb01f3b1965787ee3b40dce76752eda8b44e9a2c5/pexpect-4.9.0-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/84/03/0d3ce49e2505ae70cf43bc5bb3033955d2fc9f932163e84dc0779cc47f48/prompt_toolkit-3.0.52-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/22/a6/858897256d0deac81a172289110f31629fc4cee19b6f01283303e18c8db3/ptyprocess-0.7.0-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/8e/37/efad0257dc6e593a18957422533ff0f87ede7c9c6ea010a2177d738fb82f/pure_eval-0.2.3-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/3e/b9/3766cc361d93edb2ce81e2e1f87dd98f314d7d513877a342d31b30741680/pypng-0.20220715.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/d0/00/1e03a4989fa5795da308cd774f05b704ace555a70f9bf9d3be057b680bcf/python_docx-1.2.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/f1/7b/ce1eafaf1a76852e2ec9b22edecf1daa58175c090266e9f6c64afcd81d91/stack_data-0.6.3-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/9d/9a/6c68aad2ccfce6e2eeebbf5bb709d0240592eb51ff142ec4c8fbf3c2460a/syrupy-5.0.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/00/c0/8f5d070730d7836adc9c9b6408dec68c6ced86b304a9b26a14df072a6e8c/traitlets-5.14.3-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/af/b5/123f13c975e9f27ab9c0770f514345bd406d0e8d3b7a0723af9d43f710af/wcwidth-0.2.14-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/2e/54/647ade08bf0db230bfea292f893923872fd20be6ac6f53b2b936ba839d75/zipp-3.23.0-py3-none-any.whl packages: - conda: https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2 sha256: fe51de6107f9edc7aa4f786a70f4a883943bc9d39b3bb7307c04c41410990726 @@ -4742,6 +5002,28 @@ packages: purls: [] size: 23621 timestamp: 1650670423406 +- conda: https://conda.anaconda.org/conda-forge/osx-64/_openmp_mutex-4.5-7_kmp_llvm.conda + build_number: 7 + sha256: 30006902a9274de8abdad5a9f02ef7c8bb3d69a503486af0c1faee30b023e5b7 + md5: eaac87c21aff3ed21ad9656697bb8326 + depends: + - llvm-openmp >=9.0.1 + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 8328 + timestamp: 1764092562779 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/_openmp_mutex-4.5-7_kmp_llvm.conda + build_number: 7 + sha256: 7acaa2e0782cad032bdaf756b536874346ac1375745fb250e9bdd6a48a7ab3cd + md5: a44032f282e7d2acdeb1c240308052dd + depends: + - llvm-openmp >=9.0.1 + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 8325 + timestamp: 1764092507920 - conda: https://conda.anaconda.org/conda-forge/win-64/_openmp_mutex-4.5-2_gnu.conda build_number: 8 sha256: 1a62cd1f215fe0902e7004089693a78347a30ad687781dfda2289cab000e652d @@ -5833,6 +6115,32 @@ packages: purls: [] size: 20150 timestamp: 1761593000561 +- conda: https://conda.anaconda.org/conda-forge/osx-64/brotli-1.2.0-hf139dec_1.conda + sha256: c838c71ded28ada251589f6462fc0f7c09132396799eea2701277566a1a863bf + md5: 149d8ee7d6541a02a6117d8814fd9413 + depends: + - __osx >=10.13 + - brotli-bin 1.2.0 h8616949_1 + - libbrotlidec 1.2.0 h8616949_1 + - libbrotlienc 1.2.0 h8616949_1 + license: MIT + license_family: MIT + purls: [] + size: 20194 + timestamp: 1764017661405 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/brotli-1.2.0-h7d5ae5b_1.conda + sha256: 422ac5c91f8ef07017c594d9135b7ae068157393d2a119b1908c7e350938579d + md5: 48ece20aa479be6ac9a284772827d00c + depends: + - __osx >=11.0 + - brotli-bin 1.2.0 hc919400_1 + - libbrotlidec 1.2.0 hc919400_1 + - libbrotlienc 1.2.0 hc919400_1 + license: MIT + license_family: MIT + purls: [] + size: 20237 + timestamp: 1764018058424 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/brotli-1.2.0-hca488c2_0.conda sha256: 4110b621340f459ee87619803e6e1c410753c65f3f9884c023c537d804fa9e5d md5: 3673e631cdf1fa81c9f5cc3da763a07e @@ -5886,6 +6194,30 @@ packages: purls: [] size: 18541 timestamp: 1761592972914 +- conda: https://conda.anaconda.org/conda-forge/osx-64/brotli-bin-1.2.0-h8616949_1.conda + sha256: dcb5a2b29244b82af2545efad13dfdf8dddb86f88ce64ff415be9e7a10cc0383 + md5: 34803b20dfec7af32ba675c5ccdbedbf + depends: + - __osx >=10.13 + - libbrotlidec 1.2.0 h8616949_1 + - libbrotlienc 1.2.0 h8616949_1 + license: MIT + license_family: MIT + purls: [] + size: 18589 + timestamp: 1764017635544 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/brotli-bin-1.2.0-hc919400_1.conda + sha256: e2d142052a83ff2e8eab3fe68b9079cad80d109696dc063a3f92275802341640 + md5: 377d015c103ad7f3371be1777f8b584c + depends: + - __osx >=11.0 + - libbrotlidec 1.2.0 hc919400_1 + - libbrotlienc 1.2.0 hc919400_1 + license: MIT + license_family: MIT + purls: [] + size: 18628 + timestamp: 1764018033635 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/brotli-bin-1.2.0-hce9b42c_0.conda sha256: d07336bc9ce8171af8f15ab428bcb4193c6252ad519337fece62185a3367bb65 md5: 2695046c2e5875fee19438aa752924a5 @@ -6081,6 +6413,15 @@ packages: purls: [] size: 155907 timestamp: 1759649036195 +- conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.11.12-hbd8a1cb_0.conda + sha256: b986ba796d42c9d3265602bc038f6f5264095702dd546c14bc684e60c385e773 + md5: f0991f0f84902f6b6009b4d2350a83aa + depends: + - __unix + license: ISC + purls: [] + size: 152432 + timestamp: 1762967197890 - conda: https://conda.anaconda.org/conda-forge/noarch/cached-property-1.5.2-hd8ed1ab_1.tar.bz2 noarch: python sha256: 561e6660f26c35d137ee150187d89767c988413c978e1b712d53f27ddf70ea17 @@ -6684,6 +7025,21 @@ packages: - pkg:pypi/contourpy?source=hash-mapping size: 269864 timestamp: 1756544985704 +- conda: https://conda.anaconda.org/conda-forge/osx-64/contourpy-1.3.3-py313h5eff275_3.conda + sha256: a173a39f85997a2d77910a4f92d39baaf5ce2b3c86cff94e67a5a920d7d39e00 + md5: 76be023d05c67d445a0d0591fcdb83a6 + depends: + - __osx >=10.13 + - libcxx >=19 + - numpy >=1.25 + - python >=3.13,<3.14.0a0 + - python_abi 3.13.* *_cp313 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/contourpy?source=hash-mapping + size: 270248 + timestamp: 1762525788641 - conda: https://conda.anaconda.org/conda-forge/osx-64/contourpy-1.3.3-py313hc551f4f_2.conda sha256: fd60876907ace2db259dbf7618eee6258c0d32c9eca15a5150fa267ed43689a5 md5: 51eb4d5f1de7beda42425e430364165b @@ -6699,6 +7055,22 @@ packages: - pkg:pypi/contourpy?source=hash-mapping size: 270163 timestamp: 1756544982859 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/contourpy-1.3.3-py312h84eede6_3.conda + sha256: ee6a2497f2d9aff6ec53b6998a37c546916b79118e386bb90a7cb1f389d35197 + md5: e3fbe173dea7137a6d766cbacf697df2 + depends: + - __osx >=11.0 + - libcxx >=19 + - numpy >=1.25 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/contourpy?source=hash-mapping + size: 258388 + timestamp: 1762525877844 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/contourpy-1.3.3-py312ha0dd364_2.conda sha256: 95c3f2a595be008ec861ea6bddbf6e2abdfbc115b0e01112b3ae64c7ae641b9e md5: bb1a2ab9b69fe1bb11d6ad9f1b39c0c4 @@ -6776,6 +7148,20 @@ packages: - pkg:pypi/coverage?source=hash-mapping size: 378047 timestamp: 1760545278897 +- conda: https://conda.anaconda.org/conda-forge/osx-64/coverage-7.13.0-py313h0f4d31d_0.conda + sha256: 63178f3f834fbad02ab5968cc226874246b434d71c528a9360f21ce2e41d3ed3 + md5: a3147b0f31527cdd92daed1b066b26f0 + depends: + - __osx >=10.13 + - python >=3.13,<3.14.0a0 + - python_abi 3.13.* *_cp313 + - tomli + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/coverage?source=hash-mapping + size: 390104 + timestamp: 1765203667608 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/coverage-7.11.0-py312h5748b74_0.conda sha256: 6b631e7062a5a3a261a57fe7cca37f63123dbcffc255d1c5997804149e411135 md5: 7fd74b1ae09c5f2677a0021062bca27c @@ -6791,6 +7177,21 @@ packages: - pkg:pypi/coverage?source=hash-mapping size: 378627 timestamp: 1760545361866 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/coverage-7.13.0-py312h5748b74_0.conda + sha256: fc898ebd3e8faeb56314ec4b7996c7d28cb37330a5e70e122b86f6152c8ea4f8 + md5: aa4e0f5ae7200c4add1b1c9d4a586eba + depends: + - __osx >=11.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + - tomli + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/coverage?source=hash-mapping + size: 383059 + timestamp: 1765203714727 - conda: https://conda.anaconda.org/conda-forge/noarch/cpython-3.12.12-py312hd8ed1ab_1.conda noarch: generic sha256: b88c76a6d6b45378552ccfd9e88b2a073161fe83fd1294c8fa103ffd32f7934a @@ -6851,6 +7252,18 @@ packages: purls: [] size: 171212 timestamp: 1760978001025 +- conda: https://conda.anaconda.org/conda-forge/noarch/cycler-0.12.1-pyhcf101f3_2.conda + sha256: bb47aec5338695ff8efbddbc669064a3b10fe34ad881fb8ad5d64fbfa6910ed1 + md5: 4c2a8fef270f6c69591889b93f9f55c1 + depends: + - python >=3.10 + - python + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/cycler?source=hash-mapping + size: 14778 + timestamp: 1764466758386 - conda: https://conda.anaconda.org/conda-forge/noarch/cycler-0.12.1-pyhd8ed1ab_1.conda sha256: 9827efa891e507a91a8a2acf64e210d2aff394e1cde432ad08e1f8c66b12293c md5: 44600c4667a319d67dbe0681fc0bc833 @@ -7110,6 +7523,17 @@ packages: - pkg:pypi/exceptiongroup?source=hash-mapping size: 21284 timestamp: 1746947398083 +- conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.3.1-pyhd8ed1ab_0.conda + sha256: ee6cf346d017d954255bbcbdb424cddea4d14e4ed7e9813e429db1d795d01144 + md5: 8e662bd460bda79b1ea39194e3c4c9ab + depends: + - python >=3.10 + - typing_extensions >=4.6.0 + license: MIT and PSF-2.0 + purls: + - pkg:pypi/exceptiongroup?source=compressed-mapping + size: 21333 + timestamp: 1763918099466 - conda: https://conda.anaconda.org/conda-forge/noarch/execnet-2.1.1-pyhd8ed1ab_1.conda sha256: 9abc6c128cd40733e9b24284d0462e084d4aff6afe614f0754aa8533ebe505e4 md5: a71efeae2c160f6789900ba2631a2c90 @@ -7327,6 +7751,21 @@ packages: - pkg:pypi/fonttools?source=hash-mapping size: 2898482 timestamp: 1759187452747 +- conda: https://conda.anaconda.org/conda-forge/osx-64/fonttools-4.61.1-py313h0f4d31d_0.conda + sha256: 5375b893af274c09b265e65af8ff49016e0d23c8e03509d830be09eda46585e9 + md5: 77978c974cba250d6ee95a4c29aad08e + depends: + - __osx >=10.13 + - brotli + - munkres + - python >=3.13,<3.14.0a0 + - python_abi 3.13.* *_cp313 + license: MIT + license_family: MIT + purls: + - pkg:pypi/fonttools?source=hash-mapping + size: 2949850 + timestamp: 1765632894603 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/fonttools-4.60.1-py312h5748b74_0.conda sha256: 62b4720424e51920521a3890d4e5cc93913da1250994b667b65caed6faff5bef md5: a90d85f3aea82811b076ef644f3812ec @@ -7360,6 +7799,23 @@ packages: - pkg:pypi/fonttools?source=hash-mapping size: 2868336 timestamp: 1759187425694 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/fonttools-4.61.1-py312h5748b74_0.conda + sha256: d87752e84621f90e9350262200fef55f054472f7779323f51717b557208e2a16 + md5: c14625bf00c41c00cea174f459287fc4 + depends: + - __osx >=11.0 + - brotli + - munkres + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + - unicodedata2 >=15.1.0 + license: MIT + license_family: MIT + purls: + - pkg:pypi/fonttools?source=hash-mapping + size: 2859891 + timestamp: 1765633073562 - conda: https://conda.anaconda.org/conda-forge/win-64/fonttools-4.60.1-py313hd650c13_0.conda sha256: 24ee51eb3082a4b9f72781bbea216fdd87fb20ef140a3d1956f08f72fb873ab0 md5: 036f44cc6a910763916165b2d4426cb1 @@ -7982,6 +8438,15 @@ packages: purls: [] size: 11761697 timestamp: 1720853679409 +- conda: https://conda.anaconda.org/conda-forge/osx-64/icu-78.1-h14c5de8_0.conda + sha256: 256df2229f930d7c83d8e2d36fdfce1f78980272558095ce741a9fccc5ed8998 + md5: 1e648e0c6657a29dc44102d6e3b10ebc + depends: + - __osx >=10.13 + license: MIT + purls: [] + size: 12273114 + timestamp: 1766299263503 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/icu-75.1-hfee45f7_0.conda sha256: 9ba12c93406f3df5ab0a43db8a4b4ef67a5871dfd401010fbe29b218b2cbe620 md5: 5eb22c1d7b3fc4abb50d92d621583137 @@ -8042,11 +8507,37 @@ packages: - pytest-enabler>=2.2 ; extra == 'enabler' - pytest-mypy ; extra == 'type' requires_python: '>=3.9' -- conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.7.0-pyhe01879c_1.conda - sha256: c18ab120a0613ada4391b15981d86ff777b5690ca461ea7e9e49531e8f374745 - md5: 63ccfdc3a3ce25b027b8767eb722fca8 - depends: - - python >=3.9 +- pypi: https://files.pythonhosted.org/packages/fa/5e/f8e9a1d23b9c20a551a8a02ea3637b4642e22c2626e3a13a9a29cdea99eb/importlib_metadata-8.7.1-py3-none-any.whl + name: importlib-metadata + version: 8.7.1 + sha256: 5a1f80bf1daa489495071efbb095d75a634cf28a8bc299581244063b53176151 + requires_dist: + - zipp>=3.20 + - pytest>=6,!=8.1.* ; extra == 'test' + - packaging ; extra == 'test' + - pyfakefs ; extra == 'test' + - flufl-flake8 ; extra == 'test' + - pytest-perf>=0.9.2 ; extra == 'test' + - jaraco-test>=5.4 ; extra == 'test' + - sphinx>=3.5 ; extra == 'doc' + - jaraco-packaging>=9.3 ; extra == 'doc' + - rst-linker>=1.9 ; extra == 'doc' + - furo ; extra == 'doc' + - sphinx-lint ; extra == 'doc' + - jaraco-tidelift>=1.4 ; extra == 'doc' + - ipython ; extra == 'perf' + - pytest-checkdocs>=2.4 ; extra == 'check' + - pytest-ruff>=0.2.1 ; sys_platform != 'cygwin' and extra == 'check' + - pytest-cov ; extra == 'cover' + - pytest-enabler>=3.4 ; extra == 'enabler' + - pytest-mypy>=1.0.1 ; extra == 'type' + - mypy<1.19 ; platform_python_implementation == 'PyPy' and extra == 'type' + requires_python: '>=3.9' +- conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.7.0-pyhe01879c_1.conda + sha256: c18ab120a0613ada4391b15981d86ff777b5690ca461ea7e9e49531e8f374745 + md5: 63ccfdc3a3ce25b027b8767eb722fca8 + depends: + - python >=3.9 - zipp >=3.20 - python license: Apache-2.0 @@ -8588,6 +9079,18 @@ packages: - pkg:pypi/joblib?source=hash-mapping size: 224671 timestamp: 1756321850584 +- conda: https://conda.anaconda.org/conda-forge/noarch/joblib-1.5.3-pyhd8ed1ab_0.conda + sha256: 301539229d7be6420c084490b8145583291123f0ce6b92f56be5948a2c83a379 + md5: 615de2a4d97af50c350e5cf160149e77 + depends: + - python >=3.10 + - setuptools + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/joblib?source=hash-mapping + size: 226448 + timestamp: 1765794135253 - conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.12.1-pyhd8ed1ab_0.conda sha256: 4e08ccf9fa1103b617a4167a270768de736a36be795c6cd34c2761100d332f74 md5: 0fc93f473c31a2f85c0bde213e7c63ca @@ -8935,6 +9438,20 @@ packages: - pkg:pypi/kiwisolver?source=hash-mapping size: 68999 timestamp: 1756467598509 +- conda: https://conda.anaconda.org/conda-forge/osx-64/kiwisolver-1.4.9-py313ha1c5e85_2.conda + sha256: 011e58aac5a2c0e22643b81339c3f35bff7ec52c46ef403ced227ac87aaab313 + md5: cadc416f7c960ce1436bb6cc8a0f75e4 + depends: + - python + - __osx >=10.13 + - libcxx >=19 + - python_abi 3.13.* *_cp313 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/kiwisolver?source=hash-mapping + size: 69575 + timestamp: 1762488825063 - conda: https://conda.anaconda.org/conda-forge/osx-64/kiwisolver-1.4.9-py313hb91e98b_1.conda sha256: 9a52ac90574d99286059e82ecf357e978f6e0d1163d7a8439e31582a4c585a2f md5: 641919ea862da8b06555e24ac7187923 @@ -8949,6 +9466,21 @@ packages: - pkg:pypi/kiwisolver?source=hash-mapping size: 69568 timestamp: 1756467610330 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/kiwisolver-1.4.9-py312hd8c8125_2.conda + sha256: 8d68f6ec4d947902034fe9ed9d4a4c1180b5767bd9731af940f5a0e436bc3dfd + md5: ddf4775023a2466ee308792ed80ca408 + depends: + - python + - python 3.12.* *_cpython + - libcxx >=19 + - __osx >=11.0 + - python_abi 3.12.* *_cp312 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/kiwisolver?source=hash-mapping + size: 67752 + timestamp: 1762488827477 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/kiwisolver-1.4.9-py312hdc12c9d_1.conda sha256: 3ad43b1e740a7bce1025a61d55a838eae6196f448f05a2f84447ec796d3148d9 md5: 57697b25f636e864e62917dfaa9bfcba @@ -9283,6 +9815,22 @@ packages: - pypng - palettable - pillow +- pypi: https://files.pythonhosted.org/packages/23/45/af03b985c2c27d876d59c3a18dc1f432b0c4a3a737dccbe65c2c1d490ada/lets_plot-4.8.2-cp312-cp312-macosx_11_0_arm64.whl + name: lets-plot + version: 4.8.2 + sha256: dc648228b4ba755a9955360623ccab1461794c8fb926aa93b7b2c96d8773dead + requires_dist: + - pypng + - palettable + - pillow +- pypi: https://files.pythonhosted.org/packages/78/c0/29b864090b5a04396f5b22e3918d293500b0732f5c6a9f56f8d9d4261712/lets_plot-4.8.2-cp313-cp313-macosx_10_15_x86_64.whl + name: lets-plot + version: 4.8.2 + sha256: 6dce73ae1dec70eacb2b9f83c2c085d7c89424fc3039291a5e7cced0972904c6 + requires_dist: + - pypng + - palettable + - pillow - conda: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20250512.1-cxx17_hba17884_0.conda sha256: dcd1429a1782864c452057a6c5bc1860f2b637dc20a2b7e6eacd57395bbceff8 md5: 83b160d4da3e1e847bf044997621ed63 @@ -9696,6 +10244,24 @@ packages: purls: [] size: 17522 timestamp: 1761680084434 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libblas-3.11.0-5_he492b99_openblas.conda + build_number: 5 + sha256: 4754de83feafa6c0b41385f8dab1b13f13476232e16f524564a340871a9fc3bc + md5: 36d2e68a156692cbae776b75d6ca6eae + depends: + - libopenblas >=0.3.30,<0.3.31.0a0 + - libopenblas >=0.3.30,<1.0a0 + constrains: + - liblapack 3.11.0 5*_openblas + - blas 2.305 openblas + - libcblas 3.11.0 5*_openblas + - mkl <2026 + - liblapacke 3.11.0 5*_openblas + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 18476 + timestamp: 1765819054657 - conda: https://conda.anaconda.org/conda-forge/osx-64/libblas-3.9.0-38_he492b99_openblas.conda build_number: 38 sha256: 7005975d45fc0538d539f01760cba9132b8b341d4ee833dd2d3133ef6c19d7a9 @@ -9714,6 +10280,24 @@ packages: purls: [] size: 17666 timestamp: 1761680501294 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.11.0-5_h51639a9_openblas.conda + build_number: 5 + sha256: 620a6278f194dcabc7962277da6835b1e968e46ad0c8e757736255f5ddbfca8d + md5: bcc025e2bbaf8a92982d20863fe1fb69 + depends: + - libopenblas >=0.3.30,<0.3.31.0a0 + - libopenblas >=0.3.30,<1.0a0 + constrains: + - libcblas 3.11.0 5*_openblas + - liblapack 3.11.0 5*_openblas + - liblapacke 3.11.0 5*_openblas + - blas 2.305 openblas + - mkl <2026 + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 18546 + timestamp: 1765819094137 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-38_h51639a9_openblas.conda build_number: 38 sha256: 1850e189ca9b623497b857cf905bb2c8d57c8a42de5aed63a9b0bd857a1af2ae @@ -9769,6 +10353,16 @@ packages: purls: [] size: 78540 timestamp: 1761592885103 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libbrotlicommon-1.2.0-h8616949_1.conda + sha256: 4c19b211b3095f541426d5a9abac63e96a5045e509b3d11d4f9482de53efe43b + md5: f157c098841474579569c85a60ece586 + depends: + - __osx >=10.13 + license: MIT + license_family: MIT + purls: [] + size: 78854 + timestamp: 1764017554982 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlicommon-1.2.0-h87ba0bc_0.conda sha256: 5968a178cf374ff6a1d247b5093174dbd91d642551f81e4cb1acbe605a86b5ae md5: 07d43b5e2b6f4a73caed8238b60fabf5 @@ -9779,6 +10373,16 @@ packages: purls: [] size: 79198 timestamp: 1761592463100 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlicommon-1.2.0-hc919400_1.conda + sha256: a7cb9e660531cf6fbd4148cff608c85738d0b76f0975c5fc3e7d5e92840b7229 + md5: 006e7ddd8a110771134fcc4e1e3a6ffa + depends: + - __osx >=11.0 + license: MIT + license_family: MIT + purls: [] + size: 79443 + timestamp: 1764017945924 - conda: https://conda.anaconda.org/conda-forge/win-64/libbrotlicommon-1.2.0-hc82b238_0.conda sha256: 938078532c3a09e9687747fa562c08ece4a35545467ec26e5be9265a5dbff928 md5: a5607006c2135402ca3bb96ff9b87896 @@ -9814,6 +10418,17 @@ packages: purls: [] size: 30767 timestamp: 1761592911771 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libbrotlidec-1.2.0-h8616949_1.conda + sha256: 729158be90ae655a4e0427fe4079767734af1f9b69ff58cf94ca6e8d4b3eb4b7 + md5: 63186ac7a8a24b3528b4b14f21c03f54 + depends: + - __osx >=10.13 + - libbrotlicommon 1.2.0 h8616949_1 + license: MIT + license_family: MIT + purls: [] + size: 30835 + timestamp: 1764017584474 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlidec-1.2.0-h95a88de_0.conda sha256: 9a42c71ecea8e8ffe218fda017cb394b6a2c920304518c09c0ae42f0501dfde6 md5: 39d47dac85038e73b5f199f2b594a547 @@ -9825,6 +10440,17 @@ packages: purls: [] size: 29366 timestamp: 1761592481914 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlidec-1.2.0-hc919400_1.conda + sha256: 2eae444039826db0454b19b52a3390f63bfe24f6b3e63089778dd5a5bf48b6bf + md5: 079e88933963f3f149054eec2c487bc2 + depends: + - __osx >=11.0 + - libbrotlicommon 1.2.0 hc919400_1 + license: MIT + license_family: MIT + purls: [] + size: 29452 + timestamp: 1764017979099 - conda: https://conda.anaconda.org/conda-forge/win-64/libbrotlidec-1.2.0-h431afc6_0.conda sha256: 229edc6f56b51dde812d1932b4c6f477654c2f5d477fff9cff184ebd4ce158bd md5: edc47a5d0ec6d95efefab3e99d0f4df0 @@ -9861,6 +10487,17 @@ packages: purls: [] size: 310340 timestamp: 1761592941136 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libbrotlienc-1.2.0-h8616949_1.conda + sha256: 8ece7b41b6548d6601ac2c2cd605cf2261268fc4443227cc284477ed23fbd401 + md5: 12a58fd3fc285ce20cf20edf21a0ff8f + depends: + - __osx >=10.13 + - libbrotlicommon 1.2.0 h8616949_1 + license: MIT + license_family: MIT + purls: [] + size: 310355 + timestamp: 1764017609985 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlienc-1.2.0-hb1b9735_0.conda sha256: 9e05479f916548d1a383779facc4bb35a4f65a313590a81ec21818a10963eb02 md5: 4e3fec2238527187566e26a5ddbc2f83 @@ -9872,6 +10509,17 @@ packages: purls: [] size: 291133 timestamp: 1761592499578 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlienc-1.2.0-hc919400_1.conda + sha256: 01436c32bb41f9cb4bcf07dda647ce4e5deb8307abfc3abdc8da5317db8189d1 + md5: b2b7c8288ca1a2d71ff97a8e6a1e8883 + depends: + - __osx >=11.0 + - libbrotlicommon 1.2.0 hc919400_1 + license: MIT + license_family: MIT + purls: [] + size: 290754 + timestamp: 1764018009077 - conda: https://conda.anaconda.org/conda-forge/win-64/libbrotlienc-1.2.0-ha521d6b_0.conda sha256: eb54110ee720e4a73b034d0c2bb0f26eadf79a1bd6b0656ebdf914da8f14989d md5: f780291507a3f91d93a7147daea082f8 @@ -9900,6 +10548,21 @@ packages: purls: [] size: 17503 timestamp: 1761680091587 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libcblas-3.11.0-5_h9b27e0a_openblas.conda + build_number: 5 + sha256: 8077c29ea720bd152be6e6859a3765228cde51301fe62a3b3f505b377c2cb48c + md5: b31d771cbccff686e01a687708a7ca41 + depends: + - libblas 3.11.0 5_he492b99_openblas + constrains: + - liblapack 3.11.0 5*_openblas + - blas 2.305 openblas + - liblapacke 3.11.0 5*_openblas + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 18484 + timestamp: 1765819073006 - conda: https://conda.anaconda.org/conda-forge/osx-64/libcblas-3.9.0-38_h9b27e0a_openblas.conda build_number: 38 sha256: b7c393080aea5518cb87a1f1e44fd1b29f1564cf5f2610a2ddb575e582396779 @@ -9915,6 +10578,21 @@ packages: purls: [] size: 17667 timestamp: 1761680519380 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.11.0-5_hb0561ab_openblas.conda + build_number: 5 + sha256: 38809c361bbd165ecf83f7f05fae9b791e1baa11e4447367f38ae1327f402fc0 + md5: efd8bd15ca56e9d01748a3beab8404eb + depends: + - libblas 3.11.0 5_h51639a9_openblas + constrains: + - liblapacke 3.11.0 5*_openblas + - liblapack 3.11.0 5*_openblas + - blas 2.305 openblas + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 18548 + timestamp: 1765819108956 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-38_hb0561ab_openblas.conda build_number: 38 sha256: 5ab5a9aa350a5838d91f0e4feed30f765cbea461ee9515bf214d459c3378a531 @@ -10059,6 +10737,16 @@ packages: purls: [] size: 572306 timestamp: 1761852325847 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libcxx-21.1.8-h3d58e20_0.conda + sha256: cbd8e821e97436d8fc126c24b50df838b05ba4c80494fbb93ccaf2e3b2d109fb + md5: 9f8a60a77ecafb7966ca961c94f33bd1 + depends: + - __osx >=10.13 + license: Apache-2.0 WITH LLVM-exception + license_family: Apache + purls: [] + size: 569777 + timestamp: 1765919624323 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-21.1.4-hf598326_2.conda sha256: 0a0765cc8b6000e7f7be879c12825583d046ef22ab95efc7c5f8622e4b3302d5 md5: 4346830dcc0c0e930328fddb0b829f63 @@ -10069,6 +10757,16 @@ packages: purls: [] size: 568742 timestamp: 1761852287381 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-21.1.8-hf598326_0.conda + sha256: 82e228975fd491bcf1071ecd0a6ec2a0fcc5f57eb0bd1d52cb13a18d57c67786 + md5: 780f0251b757564e062187044232c2b7 + depends: + - __osx >=11.0 + license: Apache-2.0 WITH LLVM-exception + license_family: Apache + purls: [] + size: 569118 + timestamp: 1765919724254 - conda: https://conda.anaconda.org/conda-forge/osx-64/libcxx-devel-21.1.4-h7c275be_2.conda sha256: fc8aa4a2a6037e3736305b68f40e34f67b16f76c559673ad7395497d745471b6 md5: fe681deb2084b576f98d341898c46459 @@ -10265,6 +10963,18 @@ packages: purls: [] size: 72450 timestamp: 1752719744781 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libexpat-2.7.3-heffb93a_0.conda + sha256: d11b3a6ce5b2e832f430fd112084533a01220597221bee16d6c7dc3947dffba6 + md5: 222e0732a1d0780a622926265bee14ef + depends: + - __osx >=10.13 + constrains: + - expat 2.7.3.* + license: MIT + license_family: MIT + purls: [] + size: 74058 + timestamp: 1763549886493 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.7.1-hec049ff_0.conda sha256: 8fbb17a56f51e7113ed511c5787e0dec0d4b10ef9df921c4fd1cccca0458f648 md5: b1ca5f21335782f71a8bd69bdc093f67 @@ -10277,6 +10987,18 @@ packages: purls: [] size: 65971 timestamp: 1752719657566 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.7.3-haf25636_0.conda + sha256: fce22610ecc95e6d149e42a42fbc3cc9d9179bd4eb6232639a60f06e080eec98 + md5: b79875dbb5b1db9a4a22a4520f918e1a + depends: + - __osx >=11.0 + constrains: + - expat 2.7.3.* + license: MIT + license_family: MIT + purls: [] + size: 67800 + timestamp: 1763549994166 - conda: https://conda.anaconda.org/conda-forge/win-64/libexpat-2.7.1-hac47afa_0.conda sha256: 8432ca842bdf8073ccecf016ccc9140c41c7114dc4ec77ca754551c01f780845 md5: 3608ffde260281fa641e70d6e34b1b96 @@ -10470,6 +11192,32 @@ packages: purls: [] size: 822552 timestamp: 1759968052178 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libgcc-15.2.0-h08519bb_15.conda + sha256: e04b115ae32f8cbf95905971856ff557b296511735f4e1587b88abf519ff6fb8 + md5: c816665789d1e47cdfd6da8a81e1af64 + depends: + - _openmp_mutex + constrains: + - libgomp 15.2.0 15 + - libgcc-ng ==15.2.0=*_15 + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + size: 422960 + timestamp: 1764839601296 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgcc-15.2.0-hcbb3090_16.conda + sha256: 646c91dbc422fe92a5f8a3a5409c9aac66549f4ce8f8d1cab7c2aa5db789bb69 + md5: 8b216bac0de7a9d60f3ddeba2515545c + depends: + - _openmp_mutex + constrains: + - libgcc-ng ==15.2.0=*_16 + - libgomp 15.2.0 16 + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + size: 402197 + timestamp: 1765258985740 - conda: https://conda.anaconda.org/conda-forge/win-64/libgcc-15.2.0-h1383e82_7.conda sha256: 174c4c75b03923ac755f227c96d956f7b4560a4b7dd83c0332709c50ff78450f md5: 926a82fc4fa5b284b1ca1fb74f20dee2 @@ -10551,6 +11299,18 @@ packages: purls: [] size: 134506 timestamp: 1759710031253 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libgfortran-15.2.0-h7e5c614_15.conda + sha256: 7bb4d51348e8f7c1a565df95f4fc2a2021229d42300aab8366eda0ea1af90587 + md5: a089323fefeeaba2ae60e1ccebf86ddc + depends: + - libgfortran5 15.2.0 hd16e46c_15 + constrains: + - libgfortran-ng ==15.2.0=*_15 + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + size: 139002 + timestamp: 1764839892631 - conda: https://conda.anaconda.org/conda-forge/osx-64/libgfortran-5.0.0-14_2_0_h51e75f0_103.conda sha256: 124dcd89508bd16f562d9d3ce6a906336a7f18e963cd14f2877431adee14028e md5: 090b3c9ae1282c8f9b394ac9e4773b10 @@ -10561,6 +11321,18 @@ packages: purls: [] size: 156202 timestamp: 1743862427451 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-15.2.0-h07b0088_16.conda + sha256: 68a6c1384d209f8654112c4c57c68c540540dd8e09e17dd1facf6cf3467798b5 + md5: 11e09edf0dde4c288508501fe621bab4 + depends: + - libgfortran5 15.2.0 hdae7583_16 + constrains: + - libgfortran-ng ==15.2.0=*_16 + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + size: 138630 + timestamp: 1765259217400 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-15.2.0-hfcf01ff_1.conda sha256: e9a5d1208b9dc0b576b35a484d527d9b746c4e65620e0d77c44636033b2245f0 md5: f699348e3f4f924728e33551b1920f79 @@ -10644,6 +11416,18 @@ packages: purls: [] size: 1236316 timestamp: 1759709318982 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libgfortran5-15.2.0-hd16e46c_15.conda + sha256: 456385a7d3357d5fdfc8e11bf18dcdf71753c4016c440f92a2486057524dd59a + md5: c2a6149bf7f82774a0118b9efef966dd + depends: + - libgcc >=15.2.0 + constrains: + - libgfortran 15.2.0 + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + size: 1061950 + timestamp: 1764839609607 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-14.2.0-h6c33f7e_103.conda sha256: 8599453990bd3a449013f5fa3d72302f1c68f0680622d419c3f751ff49f01f17 md5: 69806c1e957069f1d515830dcc9f6cbb @@ -10668,6 +11452,18 @@ packages: purls: [] size: 764028 timestamp: 1759712189275 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-15.2.0-hdae7583_16.conda + sha256: 9fb7f4ff219e3fb5decbd0ee90a950f4078c90a86f5d8d61ca608c913062f9b0 + md5: 265a9d03461da24884ecc8eb58396d57 + depends: + - libgcc >=15.2.0 + constrains: + - libgfortran 15.2.0 + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + size: 598291 + timestamp: 1765258993165 - conda: https://conda.anaconda.org/conda-forge/linux-64/libglib-2.84.3-hf39c6af_0.conda sha256: e1ad3d9ddaa18f95ff5d244587fd1a37aca6401707f85a37f7d9b5002fcf16d0 md5: 467f23819b1ea2b89c3fc94d65082301 @@ -11048,6 +11844,21 @@ packages: purls: [] size: 17501 timestamp: 1761680098660 +- conda: https://conda.anaconda.org/conda-forge/osx-64/liblapack-3.11.0-5_h859234e_openblas.conda + build_number: 5 + sha256: 2c915fe2b3d806d4b82776c882ba66ba3e095e9e2c41cc5c3375bffec6bddfdc + md5: eb5b1c25d4ac30813a6ca950a58710d6 + depends: + - libblas 3.11.0 5_he492b99_openblas + constrains: + - libcblas 3.11.0 5*_openblas + - blas 2.305 openblas + - liblapacke 3.11.0 5*_openblas + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 18491 + timestamp: 1765819090240 - conda: https://conda.anaconda.org/conda-forge/osx-64/liblapack-3.9.0-38_h859234e_openblas.conda build_number: 38 sha256: c94a3411dee3239702d632ff19f6b97b7aba5e51de3bc22caa229fb8d77d2978 @@ -11063,6 +11874,21 @@ packages: purls: [] size: 17674 timestamp: 1761680534375 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.11.0-5_hd9741b5_openblas.conda + build_number: 5 + sha256: 735a6e6f7d7da6f718b6690b7c0a8ae4815afb89138aa5793abe78128e951dbb + md5: ca9d752201b7fa1225bca036ee300f2b + depends: + - libblas 3.11.0 5_h51639a9_openblas + constrains: + - libcblas 3.11.0 5*_openblas + - blas 2.305 openblas + - liblapacke 3.11.0 5*_openblas + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 18551 + timestamp: 1765819121855 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-38_hd9741b5_openblas.conda build_number: 38 sha256: df4f43d2ba45b7b80a45e8c0e51d3d7675a00047089beea7dc54e685825df9f6 @@ -11303,6 +12129,21 @@ packages: purls: [] size: 6265963 timestamp: 1761751583325 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libopenblas-0.3.30-openmp_h6006d49_4.conda + sha256: ba642353f7f41ab2d2eb6410fbe522238f0f4483bcd07df30b3222b4454ee7cd + md5: 9241a65e6e9605e4581a2a8005d7f789 + depends: + - __osx >=10.13 + - libgfortran + - libgfortran5 >=14.3.0 + - llvm-openmp >=19.1.7 + constrains: + - openblas >=0.3.30,<0.3.31.0a0 + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 6268795 + timestamp: 1763117623665 - conda: https://conda.anaconda.org/conda-forge/osx-64/libopenblas-0.3.30-openmp_hbf64a52_0.conda sha256: 933eb95a778657649a66b0e3cf638d591283159954c5e92b3918d67347ed47a1 md5: 29c54869a3c7d33b6a0add39c5a325fe @@ -11507,6 +12348,16 @@ packages: purls: [] size: 297609 timestamp: 1753879919854 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libpng-1.6.53-h380d223_0.conda + sha256: 62a861e407bf0d0a2a983d0b0167ed263ae035cae7061976e9994f9963e6c68d + md5: 0cdbbd56f660997cfe5d33e516afac2f + depends: + - __osx >=10.13 + - libzlib >=1.3.1,<2.0a0 + license: zlib-acknowledgement + purls: [] + size: 298397 + timestamp: 1764981064303 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.50-h280e0eb_1.conda sha256: a2e0240fb0c79668047b528976872307ea80cb330baf8bf6624ac2c6443449df md5: 4d0f5ce02033286551a32208a5519884 @@ -11517,6 +12368,16 @@ packages: purls: [] size: 287056 timestamp: 1753879907258 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.53-hfab5511_0.conda + sha256: 6793e7284e175c515fc6453be45c7c0febdea853657d246d8136fbda791dd0ad + md5: 62b6111feeffe607c3ecc8ca5bd1514b + depends: + - __osx >=11.0 + - libzlib >=1.3.1,<2.0a0 + license: zlib-acknowledgement + purls: [] + size: 288210 + timestamp: 1764981075326 - conda: https://conda.anaconda.org/conda-forge/win-64/libpng-1.6.50-h7351971_1.conda sha256: e84b041f91c94841cb9b97952ab7f058d001d4a15ed4ce226ec5fdb267cc0fa5 md5: 3ae6e9f5c47c495ebeed95651518be61 @@ -11681,6 +12542,17 @@ packages: purls: [] size: 980121 timestamp: 1753948554003 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libsqlite-3.51.1-hd09e2f1_1.conda + sha256: 497b0a698ae87e024d24e242f93c56303731844d10861e1448f6d0a3d69c9ea7 + md5: 75ba9aba95c277f12e23cdb0856fd9cd + depends: + - __osx >=10.13 + - icu >=78.1,<79.0a0 + - libzlib >=1.3.1,<2.0a0 + license: blessing + purls: [] + size: 991497 + timestamp: 1766319979749 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.50.4-h4237e3c_0.conda sha256: 802ebe62e6bc59fc26b26276b793e0542cfff2d03c086440aeaf72fb8bbcec44 md5: 1dcb0468f5146e38fae99aef9656034b @@ -11692,6 +12564,16 @@ packages: purls: [] size: 902645 timestamp: 1753948599139 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.51.1-h1b79a29_1.conda + sha256: f2c3cbf2ca7d697098964a748fbf19d6e4adcefa23844ec49f0166f1d36af83c + md5: 8c3951797658e10b610929c3e57e9ad9 + depends: + - __osx >=11.0 + - libzlib >=1.3.1,<2.0a0 + license: blessing + purls: [] + size: 905861 + timestamp: 1766319901587 - conda: https://conda.anaconda.org/conda-forge/win-64/libsqlite-3.50.4-hf5d6505_0.conda sha256: 5dc4f07b2d6270ac0c874caec53c6984caaaa84bc0d3eb593b0edf3dc8492efa md5: ccb20d946040f86f0c05b644d5eadeca @@ -12269,6 +13151,19 @@ packages: purls: [] size: 311042 timestamp: 1761131057691 +- conda: https://conda.anaconda.org/conda-forge/osx-64/llvm-openmp-21.1.8-h472b3d1_0.conda + sha256: 2a41885f44cbc1546ff26369924b981efa37a29d20dc5445b64539ba240739e6 + md5: e2d811e9f464dd67398b4ce1f9c7c872 + depends: + - __osx >=10.13 + constrains: + - openmp 21.1.8|21.1.8.* + - intel-openmp <0.0a0 + license: Apache-2.0 WITH LLVM-exception + license_family: APACHE + purls: [] + size: 311405 + timestamp: 1765965194247 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-21.1.4-h4a912ad_0.conda sha256: 3f977e96f4c87d00c2f37e74609ac1f897a27d7a31d49078afe415f1d7c063bf md5: 8e3ed09e85fd3f3ff3496b2a04f88e21 @@ -12282,6 +13177,19 @@ packages: purls: [] size: 286030 timestamp: 1761131615697 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-21.1.8-h4a912ad_0.conda + sha256: 56bcd20a0a44ddd143b6ce605700fdf876bcf5c509adc50bf27e76673407a070 + md5: 206ad2df1b5550526e386087bef543c7 + depends: + - __osx >=11.0 + constrains: + - openmp 21.1.8|21.1.8.* + - intel-openmp <0.0a0 + license: Apache-2.0 WITH LLVM-exception + license_family: APACHE + purls: [] + size: 285974 + timestamp: 1765964756583 - conda: https://conda.anaconda.org/conda-forge/win-64/llvm-openmp-21.1.4-hfa2b4ca_0.conda sha256: 397d1874330592e57c6378a83dff194c6d1875cab44a41f9fdee8c3fe20bbe6b md5: 5d56fdf8c9dc4c385704317e6743fca4 @@ -12425,6 +13333,22 @@ packages: - pkg:pypi/llvmlite?source=hash-mapping size: 26011147 timestamp: 1759394786281 +- conda: https://conda.anaconda.org/conda-forge/osx-64/llvmlite-0.46.0-py313h590e1ab_0.conda + sha256: f1549261f0f2f24c2dd2c7a613b465c0c3e4e1158c43a72224c228aa0b5cb76f + md5: ab9fe8b3937e90b22a18554c3d961e97 + depends: + - __osx >=10.13 + - libcxx >=19 + - libzlib >=1.3.1,<2.0a0 + - python >=3.13,<3.14.0a0 + - python_abi 3.13.* *_cp313 + - zstd >=1.5.7,<1.6.0a0 + license: BSD-2-Clause + license_family: BSD + purls: + - pkg:pypi/llvmlite?source=hash-mapping + size: 26010458 + timestamp: 1765280511277 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvmlite-0.45.1-py312hc82e5dd_0.conda sha256: 235618fefad16585501f3d13e20b7c4fda9f735c966fd569f11d2b3ba6aeef52 md5: 7ed153df80cacc4cafb05a8472507221 @@ -12459,6 +13383,23 @@ packages: - pkg:pypi/llvmlite?source=hash-mapping size: 24337209 timestamp: 1759394908343 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvmlite-0.46.0-py312hc82e5dd_0.conda + sha256: ad9949a4a84031658ff1393c4a5922c40530b9a155b1571d34cf17b684fbb6f3 + md5: 514de2ca7fc036f9d06d58412a9e2e1e + depends: + - __osx >=11.0 + - libcxx >=19 + - libzlib >=1.3.1,<2.0a0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + - zstd >=1.5.7,<1.6.0a0 + license: BSD-2-Clause + license_family: BSD + purls: + - pkg:pypi/llvmlite?source=hash-mapping + size: 24325098 + timestamp: 1765280455 - conda: https://conda.anaconda.org/conda-forge/win-64/llvmlite-0.45.1-py313h5c49287_0.conda sha256: 0b63923082e724b2c2939621aef77d9ec65aa468a7b29917a850e47e2083adda md5: d946ee3e7228e48270589791871a891e @@ -12642,12 +13583,48 @@ packages: - linearmodels>=4.0 ; extra == 'linearmodels' - statsmodels>=0.13.0 ; extra == 'linearmodels' requires_python: '>=3.8' -- pypi: https://files.pythonhosted.org/packages/6d/e6/131647e06664a961bebb21377418cbf86b931ad948238911fc12734c5292/marginaleffects-0.2.2-py3-none-any.whl - name: marginaleffects - version: 0.2.2 - sha256: 549482c3d912bd164ecf34fc34f128a159abb8e0d91f2fc6db44492e4add3142 +- pypi: https://files.pythonhosted.org/packages/94/a4/5b2066d629fe5739f688f52fe73947362bddf885e20636c2b3c1b1a759d4/maketables-0.1.7-py3-none-any.whl + name: maketables + version: 0.1.7 + sha256: 851a1585655e3c6124efadffc5ecba638f8c25dc5daf565dd4db7b5b95440933 requires_dist: - - formulaic>=1.0.2 + - numpy>=1.20.0 + - pandas>=1.3.0 + - great-tables>=0.2.0 + - tabulate>=0.9.0 + - python-docx>=0.8.11 + - ipython>=7.0.0 + - pytest>=7.0 ; extra == 'dev' + - pytest-cov>=4.0 ; extra == 'dev' + - syrupy>=4.0.0 ; extra == 'dev' + - pyfixest>=0.13.0 ; extra == 'dev' + - statsmodels>=0.13.0 ; extra == 'dev' + - linearmodels>=4.0 ; extra == 'dev' + - black>=22.0 ; extra == 'dev' + - flake8>=5.0 ; extra == 'dev' + - mypy>=1.0 ; extra == 'dev' + - pre-commit>=4.3.0,<5 ; extra == 'dev' + - quartodoc>=0.7.0 ; extra == 'dev' + - sphinx>=5.0 ; extra == 'docs' + - sphinx-rtd-theme>=1.0 ; extra == 'docs' + - pyfixest>=0.13.0 ; extra == 'docs' + - statsmodels>=0.13.0 ; extra == 'docs' + - ipykernel>=6.0.0,<7 ; extra == 'docs' + - nbconvert>=7.0.0 ; extra == 'docs' + - pylatex>=1.4.2,<2 ; extra == 'docs' + - pyyaml>=6.0.0,<7 ; extra == 'docs' + - pystata>=0.0.1 ; extra == 'pystata' + - stata-setup>=0.1.0 ; extra == 'pystata' + - linearmodels>=4.0 ; extra == 'linearmodels' + - statsmodels>=0.13.0 ; extra == 'linearmodels' + - lifelines>=0.27.0 ; extra == 'lifelines' + requires_python: '>=3.8' +- pypi: https://files.pythonhosted.org/packages/6d/e6/131647e06664a961bebb21377418cbf86b931ad948238911fc12734c5292/marginaleffects-0.2.2-py3-none-any.whl + name: marginaleffects + version: 0.2.2 + sha256: 549482c3d912bd164ecf34fc34f128a159abb8e0d91f2fc6db44492e4add3142 + requires_dist: + - formulaic>=1.0.2 - narwhals>=1.34.0 - numpy>=2.0.0 - patsy>=1.0.1 @@ -12728,6 +13705,32 @@ packages: - pkg:pypi/markupsafe?source=hash-mapping size: 25121 timestamp: 1759055677633 +- conda: https://conda.anaconda.org/conda-forge/osx-64/matplotlib-3.10.8-py313habf4b1d_0.conda + sha256: cea48c750f812eaf7c8b1edaff9d4b30bdad99f28f4421f1ab49e24c74db360d + md5: 37dffad2937d7c8b7fc47003ddd31eac + depends: + - matplotlib-base >=3.10.8,<3.10.9.0a0 + - python >=3.13,<3.14.0a0 + - python_abi 3.13.* *_cp313 + - tornado >=5 + license: PSF-2.0 + license_family: PSF + purls: [] + size: 17433 + timestamp: 1763055798218 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/matplotlib-3.10.8-py312h1f38498_0.conda + sha256: e3e8448b10273807bf1aa9b1aa6a4ee3a686ccfd0c296560b51b1d1581bb42ae + md5: 534ed7eb4471c088285fdb382805e6ef + depends: + - matplotlib-base >=3.10.8,<3.10.9.0a0 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - tornado >=5 + license: PSF-2.0 + license_family: PSF + purls: [] + size: 17526 + timestamp: 1763060540928 - conda: https://conda.anaconda.org/conda-forge/linux-64/matplotlib-base-3.10.7-py312he3d6523_0.conda sha256: a86bf43f40c8afa3dbe846c62e54dc7496493cc882acdf366b5197205e7709d8 md5: 066291f807305cff71a8ec1683fc9958 @@ -12844,6 +13847,34 @@ packages: - pkg:pypi/matplotlib?source=hash-mapping size: 8359748 timestamp: 1760561176544 +- conda: https://conda.anaconda.org/conda-forge/osx-64/matplotlib-base-3.10.8-py313h4ad75b8_0.conda + sha256: d25d81b6022b6d012ea13f3feb41792e3b7de058e73bce05066a72acd0ce77ef + md5: 5a0ed440de10c49cfed0178d3e59d994 + depends: + - __osx >=10.13 + - contourpy >=1.0.1 + - cycler >=0.10 + - fonttools >=4.22.0 + - freetype + - kiwisolver >=1.3.1 + - libcxx >=19 + - libfreetype >=2.14.1 + - libfreetype6 >=2.14.1 + - numpy >=1.23 + - numpy >=1.23,<3 + - packaging >=20.0 + - pillow >=8 + - pyparsing >=2.3.1 + - python >=3.13,<3.14.0a0 + - python-dateutil >=2.7 + - python_abi 3.13.* *_cp313 + - qhull >=2020.2,<2020.3.0a0 + license: PSF-2.0 + license_family: PSF + purls: + - pkg:pypi/matplotlib?source=hash-mapping + size: 8305842 + timestamp: 1763055757075 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/matplotlib-base-3.10.7-py312h605b88b_0.conda sha256: 83e4f0e36cdeb610568f074afc12440cb95b84645f0f63a8f45dd51410fb98c8 md5: f4c14d3f89a1a892cab55771c798c6b2 @@ -12902,6 +13933,35 @@ packages: - pkg:pypi/matplotlib?source=hash-mapping size: 8169614 timestamp: 1760561281376 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/matplotlib-base-3.10.8-py312h605b88b_0.conda + sha256: 3c96c85dd723a4c16fce4446d1f0dc7d64e46b6ae4629c66d65984b8593ee999 + md5: fbc4f90b3d63ea4e6c30f7733a0b5bfd + depends: + - __osx >=11.0 + - contourpy >=1.0.1 + - cycler >=0.10 + - fonttools >=4.22.0 + - freetype + - kiwisolver >=1.3.1 + - libcxx >=19 + - libfreetype >=2.14.1 + - libfreetype6 >=2.14.1 + - numpy >=1.23 + - numpy >=1.23,<3 + - packaging >=20.0 + - pillow >=8 + - pyparsing >=2.3.1 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python-dateutil >=2.7 + - python_abi 3.12.* *_cp312 + - qhull >=2020.2,<2020.3.0a0 + license: PSF-2.0 + license_family: PSF + purls: + - pkg:pypi/matplotlib?source=hash-mapping + size: 8243636 + timestamp: 1763060482877 - conda: https://conda.anaconda.org/conda-forge/win-64/matplotlib-base-3.10.7-py313he1ded55_0.conda sha256: 02d97ca3ec02c5a922c518d45cb9a7c8267cd136dc9b76e0151060b65a89b984 md5: efaf0af24bac61ab9b6954bedd45eabd @@ -12973,6 +14033,23 @@ packages: - pkg:pypi/maturin?source=hash-mapping size: 7132663 timestamp: 1759889711754 +- conda: https://conda.anaconda.org/conda-forge/osx-64/maturin-1.10.2-py310h646694a_0.conda + noarch: python + sha256: 112f9c937744f348758f30945a927603d44422994aef6e8fb83330210393d8ed + md5: 2ef5323358e189ab242014e5dfceb52c + depends: + - python + - tomli >=1.1.0 + - __osx >=10.13 + - openssl >=3.5.4,<4.0a0 + constrains: + - __osx >=10.13 + license: MIT + license_family: MIT + purls: + - pkg:pypi/maturin?source=hash-mapping + size: 7130046 + timestamp: 1763557621552 - conda: https://conda.anaconda.org/conda-forge/osx-64/maturin-1.9.6-py310h765790a_0.conda noarch: python sha256: 6ac06965339dfb033c1e2f514762946a4093541fffb60b00c3aab3a5231a3c4e @@ -12990,6 +14067,23 @@ packages: - pkg:pypi/maturin?source=hash-mapping size: 6840285 timestamp: 1759889829147 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/maturin-1.10.2-py310ha114163_0.conda + noarch: python + sha256: 8f93df754cd4ee81de8e3df3c281182aeaef5a2b1b5d0ad1004a94425ae9664f + md5: ec9d241f482996d89ca311b8143a9960 + depends: + - python + - tomli >=1.1.0 + - __osx >=11.0 + - openssl >=3.5.4,<4.0a0 + constrains: + - __osx >=11.0 + license: MIT + license_family: MIT + purls: + - pkg:pypi/maturin?source=hash-mapping + size: 6717179 + timestamp: 1763557650650 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/maturin-1.9.6-py310h34f76f2_0.conda noarch: python sha256: 05926924673a03bbcfff12b2c09e9967aa0558214fb29a7228d17495fe2fe2f9 @@ -13264,6 +14358,18 @@ packages: - pkg:pypi/narwhals?source=compressed-mapping size: 264461 timestamp: 1761933474925 +- conda: https://conda.anaconda.org/conda-forge/noarch/narwhals-2.14.0-pyhcf101f3_0.conda + sha256: 793f9f99d9c4f31fd56632dfd085ba4d5e7eca5bf6373613a21af66a034cc8f1 + md5: 2708dffa2a43a303f5f9cb020fedb6ab + depends: + - python >=3.10 + - python + license: MIT + license_family: MIT + purls: + - pkg:pypi/narwhals?source=hash-mapping + size: 271314 + timestamp: 1765893898943 - conda: https://conda.anaconda.org/conda-forge/noarch/nbclient-0.10.2-pyhd8ed1ab_0.conda sha256: a20cff739d66c2f89f413e4ba4c6f6b59c50d5c30b5f0d840c13e8c9c2df9135 md5: 6bb0d77277061742744176ab555b723c @@ -13596,6 +14702,32 @@ packages: - pkg:pypi/numba?source=hash-mapping size: 5719142 timestamp: 1759165346657 +- conda: https://conda.anaconda.org/conda-forge/osx-64/numba-0.63.1-py313hd3f9b42_0.conda + sha256: 5d883cbc0147fc460219750f248221839f31ae66f5eeaacac9903753dc018c60 + md5: 6f4b1341edb126722ece084e2c382c6a + depends: + - __osx >=10.13 + - libcxx >=19 + - llvm-openmp >=19.1.7 + - llvm-openmp >=21.1.7 + - llvmlite >=0.46.0,<0.47.0a0 + - numpy >=1.22.3,<2.4 + - numpy >=1.23,<3 + - python >=3.13,<3.14.0a0 + - python_abi 3.13.* *_cp313 + constrains: + - cudatoolkit >=11.2 + - cuda-version >=11.2 + - tbb >=2021.6.0 + - scipy >=1.0 + - cuda-python >=11.6 + - libopenblas !=0.3.6 + license: BSD-2-Clause + license_family: BSD + purls: + - pkg:pypi/numba?source=hash-mapping + size: 5724311 + timestamp: 1765466972923 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numba-0.62.1-py312hd24c766_0.conda sha256: 9c8ca8809b7e5ccef185569fe2dc382f1904d070c132bef92cdd4d43fbf0bcfb md5: 8303e54ddf57f1d42ecbce8cc2d6e161 @@ -13650,6 +14782,33 @@ packages: - pkg:pypi/numba?source=hash-mapping size: 5732304 timestamp: 1759165595896 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/numba-0.63.1-py312h5d8d915_0.conda + sha256: ec49048a7d9c3998483492fc7d481afca9cdf6d28d5d4cb7cfcfc699cad0ae77 + md5: bb763f1c7248b15a7ac67069aea6e1ef + depends: + - __osx >=11.0 + - libcxx >=19 + - llvm-openmp >=19.1.7 + - llvm-openmp >=21.1.7 + - llvmlite >=0.46.0,<0.47.0a0 + - numpy >=1.22.3,<2.4 + - numpy >=1.23,<3 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + constrains: + - cuda-python >=11.6 + - libopenblas >=0.3.18,!=0.3.20 + - cuda-version >=11.2 + - cudatoolkit >=11.2 + - tbb >=2021.6.0 + - scipy >=1.0 + license: BSD-2-Clause + license_family: BSD + purls: + - pkg:pypi/numba?source=compressed-mapping + size: 5709625 + timestamp: 1765467246160 - conda: https://conda.anaconda.org/conda-forge/win-64/numba-0.62.1-py313h924e429_0.conda sha256: 79835953985d64565f76f912517ab5700148e86659b8e79ecd2d0e6d7377ac46 md5: ae201f33cbcbb2aba93daf4b3263b4a5 @@ -13753,6 +14912,24 @@ packages: - pkg:pypi/numpy?source=hash-mapping size: 7596354 timestamp: 1747545051328 +- conda: https://conda.anaconda.org/conda-forge/osx-64/numpy-2.3.5-py313hf1665ba_1.conda + sha256: 7878ba3143d53638a39b702f0d55af1d4dcbb123eda09d98ca4e3637ef6d151b + md5: 90fa3a86c16cfb708e35733b731ad5fd + depends: + - python + - libcxx >=19 + - __osx >=10.13 + - libcblas >=3.9.0,<4.0a0 + - libblas >=3.9.0,<4.0a0 + - liblapack >=3.9.0,<4.0a0 + - python_abi 3.13.* *_cp313 + constrains: + - numpy-base <0a0 + license: BSD-3-Clause + purls: + - pkg:pypi/numpy?source=hash-mapping + size: 8083480 + timestamp: 1766383286176 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-2.2.6-py312h7c1f314_0.conda sha256: f5d69838c10a6c34a6de8b643b1795bf6fa9b22642ede5fc296d5673eabc344e md5: fff7ab22b4f5c7036d3c2e1f92632fa4 @@ -13793,6 +14970,25 @@ packages: - pkg:pypi/numpy?source=hash-mapping size: 6532195 timestamp: 1747545087365 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-2.3.5-py312he281c53_1.conda + sha256: 0377c031951fc7ac3023f4b832c4a075e0e562015060e6f87bd751b45a1ef5ab + md5: 5a064b1a93c26d2960bbc49fa1de524b + depends: + - python + - libcxx >=19 + - __osx >=11.0 + - python 3.12.* *_cpython + - liblapack >=3.9.0,<4.0a0 + - libblas >=3.9.0,<4.0a0 + - libcblas >=3.9.0,<4.0a0 + - python_abi 3.12.* *_cp312 + constrains: + - numpy-base <0a0 + license: BSD-3-Clause + purls: + - pkg:pypi/numpy?source=hash-mapping + size: 6706018 + timestamp: 1766383302517 - conda: https://conda.anaconda.org/conda-forge/win-64/numpy-2.2.6-py313hefb8edb_0.conda sha256: ee193d2cfbf6bc06fb99312ee2555c40b68402cae44cf101f452acb2f1490f98 md5: ae9a9741b830bbb42f22f80ef4e6a074 @@ -13894,6 +15090,17 @@ packages: purls: [] size: 2747108 timestamp: 1759326402264 +- conda: https://conda.anaconda.org/conda-forge/osx-64/openssl-3.6.0-h230baf5_0.conda + sha256: 36fe9fb316be22fcfb46d5fa3e2e85eec5ef84f908b7745f68f768917235b2d5 + md5: 3f50cdf9a97d0280655758b735781096 + depends: + - __osx >=10.13 + - ca-certificates + license: Apache-2.0 + license_family: Apache + purls: [] + size: 2778996 + timestamp: 1762840724922 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.5.4-h5503f6c_0.conda sha256: f0512629f9589392c2fb9733d11e753d0eab8fc7602f96e4d7f3bd95c783eb07 md5: 71118318f37f717eefe55841adb172fd @@ -13905,6 +15112,17 @@ packages: purls: [] size: 3067808 timestamp: 1759324763146 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.6.0-h5503f6c_0.conda + sha256: ebe93dafcc09e099782fe3907485d4e1671296bc14f8c383cb6f3dfebb773988 + md5: b34dc4172653c13dcf453862f251af2b + depends: + - __osx >=11.0 + - ca-certificates + license: Apache-2.0 + license_family: Apache + purls: [] + size: 3108371 + timestamp: 1762839712322 - conda: https://conda.anaconda.org/conda-forge/win-64/openssl-3.5.4-h725018a_0.conda sha256: 5ddc1e39e2a8b72db2431620ad1124016f3df135f87ebde450d235c212a61994 md5: f28ffa510fe055ab518cbd9d6ddfea23 @@ -14273,6 +15491,58 @@ packages: - pkg:pypi/pandas?source=hash-mapping size: 14052686 timestamp: 1759266298979 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pandas-2.3.3-py312h5978115_2.conda + sha256: 93aa5b02e2394080a32fee9fb151da3384d317a42472586850abb37b28f314db + md5: fcbba82205afa4956c39136c68929385 + depends: + - __osx >=11.0 + - libcxx >=19 + - numpy >=1.22.4 + - numpy >=1.23,<3 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python-dateutil >=2.8.2 + - python-tzdata >=2022.7 + - python_abi 3.12.* *_cp312 + - pytz >=2020.1 + constrains: + - xarray >=2022.12.0 + - scipy >=1.10.0 + - tabulate >=0.9.0 + - pytables >=3.8.0 + - xlsxwriter >=3.0.5 + - pyxlsb >=1.0.10 + - odfpy >=1.4.1 + - zstandard >=0.19.0 + - fastparquet >=2022.12.0 + - gcsfs >=2022.11.0 + - beautifulsoup4 >=4.11.2 + - qtpy >=2.3.0 + - xlrd >=2.0.1 + - pandas-gbq >=0.19.0 + - s3fs >=2022.11.0 + - pyreadstat >=1.2.0 + - tzdata >=2022.7 + - html5lib >=1.1 + - fsspec >=2022.11.0 + - lxml >=4.9.2 + - numexpr >=2.8.4 + - blosc >=1.21.3 + - openpyxl >=3.1.0 + - pyarrow >=10.0.1 + - python-calamine >=0.1.7 + - numba >=0.56.4 + - sqlalchemy >=2.0.0 + - pyqt5 >=5.15.9 + - psycopg2 >=2.9.6 + - bottleneck >=1.3.6 + - matplotlib >=3.6.3 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/pandas?source=hash-mapping + size: 13893993 + timestamp: 1764615503244 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pandas-2.3.3-py313h7d16b84_1.conda sha256: 39c1ceac0e4484fd3ec1324f0550a21aee7578f6ed2f21981b878573c197a40e md5: 5ddddcc319d3aee21cc4fe4640a61f8a @@ -14652,6 +15922,28 @@ packages: - pkg:pypi/pillow?source=hash-mapping size: 961412 timestamp: 1761655892835 +- conda: https://conda.anaconda.org/conda-forge/osx-64/pillow-12.0.0-py313h8d2ffa5_2.conda + sha256: 5ee2562f8fd14aa6e1e77708c1f66fc9557f76e1c9deef3df8461b18aff48788 + md5: 7681f51d660830db9c65b20e32e47350 + depends: + - python + - __osx >=10.13 + - openjpeg >=2.5.4,<3.0a0 + - libjpeg-turbo >=3.1.2,<4.0a0 + - python_abi 3.13.* *_cp313 + - lcms2 >=2.17,<3.0a0 + - tk >=8.6.13,<8.7.0a0 + - libtiff >=4.7.1,<4.8.0a0 + - libwebp-base >=1.6.0,<2.0a0 + - libxcb >=1.17.0,<2.0a0 + - libfreetype >=2.14.1 + - libfreetype6 >=2.14.1 + - zlib-ng >=2.3.1,<2.4.0a0 + license: HPND + purls: + - pkg:pypi/pillow?source=hash-mapping + size: 975260 + timestamp: 1764330319001 - conda: https://conda.anaconda.org/conda-forge/osx-64/pillow-12.0.0-py313he918548_0.conda sha256: dcf8961767f0fd2f8df37eef74eb573466407d9cb92a8dce9f6201874dd0ce42 md5: 07751e2d8586d5fc1d000b48756cf6ee @@ -14694,9 +15986,32 @@ packages: - libfreetype6 >=2.14.1 license: HPND purls: - - pkg:pypi/pillow?source=compressed-mapping - size: 950431 - timestamp: 1761655970281 + - pkg:pypi/pillow?source=compressed-mapping + size: 950431 + timestamp: 1761655970281 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pillow-12.0.0-py312h95c711c_2.conda + sha256: b720df83d27af31466c77554b95a78fa03e458810537570fb05850a119667c07 + md5: 817cd66153338f403cf05d8a09d93fad + depends: + - python + - python 3.12.* *_cpython + - __osx >=11.0 + - libjpeg-turbo >=3.1.2,<4.0a0 + - libxcb >=1.17.0,<2.0a0 + - libfreetype >=2.14.1 + - libfreetype6 >=2.14.1 + - zlib-ng >=2.3.1,<2.4.0a0 + - libtiff >=4.7.1,<4.8.0a0 + - libwebp-base >=1.6.0,<2.0a0 + - tk >=8.6.13,<8.7.0a0 + - lcms2 >=2.17,<3.0a0 + - openjpeg >=2.5.4,<3.0a0 + - python_abi 3.12.* *_cp312 + license: HPND + purls: + - pkg:pypi/pillow?source=hash-mapping + size: 950740 + timestamp: 1764330196015 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pillow-12.0.0-py313h54da0cd_0.conda sha256: 2080290533b1d232a0e7aa7035b3dea4324fbdb07bcfdfcc239b2f17e1ed8489 md5: fe80ca21c7be92922c5718a46ec50959 @@ -14771,6 +16086,30 @@ packages: - pkg:pypi/pip?source=hash-mapping size: 1177168 timestamp: 1753924973872 +- conda: https://conda.anaconda.org/conda-forge/noarch/pip-25.3-pyh145f28c_0.conda + sha256: 4d5e2faca810459724f11f78d19a0feee27a7be2b3fc5f7abbbec4c9fdcae93d + md5: bf47878473e5ab9fdb4115735230e191 + depends: + - python >=3.13.0a0 + license: MIT + license_family: MIT + purls: + - pkg:pypi/pip?source=hash-mapping + size: 1177084 + timestamp: 1762776338614 +- conda: https://conda.anaconda.org/conda-forge/noarch/pip-25.3-pyh8b19718_0.conda + sha256: b67692da1c0084516ac1c9ada4d55eaf3c5891b54980f30f3f444541c2706f1e + md5: c55515ca43c6444d2572e0f0d93cb6b9 + depends: + - python >=3.10,<3.13.0a0 + - setuptools + - wheel + license: MIT + license_family: MIT + purls: + - pkg:pypi/pip?source=hash-mapping + size: 1177534 + timestamp: 1762776258783 - conda: https://conda.anaconda.org/conda-forge/noarch/pixi-pycharm-0.0.8-unix_hf108a03_2.conda sha256: d61d62c0a7fa6ca17d9463d05a217040c621ca64b70a7afb4640e0ccfd63dec6 md5: 3b56ce640f2fdb4ea97f012ef924130e @@ -14894,6 +16233,18 @@ packages: - pkg:pypi/pluggy?source=hash-mapping size: 24246 timestamp: 1747339794916 +- conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.6.0-pyhf9edf01_1.conda + sha256: e14aafa63efa0528ca99ba568eaf506eb55a0371d12e6250aaaa61718d2eb62e + md5: d7585b6550ad04c8c5e21097ada2888e + depends: + - python >=3.9 + - python + license: MIT + license_family: MIT + purls: + - pkg:pypi/pluggy?source=compressed-mapping + size: 25877 + timestamp: 1764896838868 - conda: https://conda.anaconda.org/conda-forge/noarch/plum-dispatch-2.6.0-pyhd8ed1ab_0.conda sha256: e3d7b1b91e7a260418655f5ed1fbcc97d5b1271fac4fcf86fdd6e5598a80ac3d md5: e7eb9da44ed15a9035f83d7af485897d @@ -15561,6 +16912,17 @@ packages: - pkg:pypi/pyparsing?source=hash-mapping size: 104044 timestamp: 1758436411254 +- conda: https://conda.anaconda.org/conda-forge/noarch/pyparsing-3.3.1-pyhcf101f3_0.conda + sha256: 0c70bc577f5efa87501bdc841b88f594f4d3f3a992dfb851e2130fa5c817835b + md5: d837065e4e0de4962c3462079c23f969 + depends: + - python >=3.10 + - python + license: MIT + purls: + - pkg:pypi/pyparsing?source=compressed-mapping + size: 110235 + timestamp: 1766475444791 - pypi: https://files.pythonhosted.org/packages/3e/b9/3766cc361d93edb2ce81e2e1f87dd98f314d7d513877a342d31b30741680/pypng-0.20220715.0-py3-none-any.whl name: pypng version: 0.20220715.0 @@ -15597,6 +16959,27 @@ packages: - pkg:pypi/pytest?source=hash-mapping size: 276734 timestamp: 1757011891753 +- conda: https://conda.anaconda.org/conda-forge/noarch/pytest-9.0.2-pyhcf101f3_0.conda + sha256: 9e749fb465a8bedf0184d8b8996992a38de351f7c64e967031944978de03a520 + md5: 2b694bad8a50dc2f712f5368de866480 + depends: + - pygments >=2.7.2 + - python >=3.10 + - iniconfig >=1.0.1 + - packaging >=22 + - pluggy >=1.5,<2 + - tomli >=1 + - colorama >=0.4 + - exceptiongroup >=1 + - python + constrains: + - pytest-faulthandler >=2 + license: MIT + license_family: MIT + purls: + - pkg:pypi/pytest?source=hash-mapping + size: 299581 + timestamp: 1765062031645 - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-benchmark-5.2.0-pyhd8ed1ab_0.conda sha256: f6a4b4dc2db195ec1f695c6107563cacdd36170ba9ad93b703eb24441034e8fe md5: 9d673e041441aca6013d7c5a02d0e2e6 @@ -15753,6 +17136,30 @@ packages: purls: [] size: 13779792 timestamp: 1761176993883 +- conda: https://conda.anaconda.org/conda-forge/osx-64/python-3.13.11-h17c18a5_100_cp313.conda + build_number: 100 + sha256: 58e23beaf3174a809c785900477c37df9f88993b5a3ccd0d76d57d6688a1be37 + md5: 6ffffd784fe1126b73329e29c80ddf53 + depends: + - __osx >=10.13 + - bzip2 >=1.0.8,<2.0a0 + - libexpat >=2.7.3,<3.0a0 + - libffi >=3.5.2,<3.6.0a0 + - liblzma >=5.8.1,<6.0a0 + - libmpdec >=4.0.0,<5.0a0 + - libsqlite >=3.51.1,<4.0a0 + - libzlib >=1.3.1,<2.0a0 + - ncurses >=6.5,<7.0a0 + - openssl >=3.5.4,<4.0a0 + - python_abi 3.13.* *_cp313 + - readline >=8.2,<9.0a0 + - tk >=8.6.13,<8.7.0a0 + - tzdata + license: Python-2.0 + purls: [] + size: 17360881 + timestamp: 1765022591905 + python_site_packages_path: lib/python3.13/site-packages - conda: https://conda.anaconda.org/conda-forge/osx-64/python-3.13.9-h17c18a5_101_cp313.conda build_number: 101 sha256: b56484229cf83f6c84e8b138dc53f7f2fa9ee850f42bf1f6d6fa1c03c044c2d3 @@ -15777,6 +17184,29 @@ packages: size: 17521522 timestamp: 1761177097697 python_site_packages_path: lib/python3.13/site-packages +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.12.12-h18782d2_1_cpython.conda + build_number: 1 + sha256: 626da9bb78459ce541407327d1e22ee673fd74e9103f1a0e0f4e3967ad0a23a7 + md5: 0322f2ddca2cafbf34ef3ddbea100f73 + depends: + - __osx >=11.0 + - bzip2 >=1.0.8,<2.0a0 + - libexpat >=2.7.1,<3.0a0 + - libffi >=3.5.2,<3.6.0a0 + - liblzma >=5.8.1,<6.0a0 + - libsqlite >=3.50.4,<4.0a0 + - libzlib >=1.3.1,<2.0a0 + - ncurses >=6.5,<7.0a0 + - openssl >=3.5.4,<4.0a0 + - readline >=8.2,<9.0a0 + - tk >=8.6.13,<8.7.0a0 + - tzdata + constrains: + - python_abi 3.12.* *_cp312 + license: Python-2.0 + purls: [] + size: 12062421 + timestamp: 1761176476561 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.12.12-hec0b533_0_cpython.conda sha256: 63d5362621bbf3b0d90424f5fc36983d7be2434f6d0b2a8e431ac78a69a1c01d md5: 5a732c06cbf90455a95dc6f6b1dd7061 @@ -15956,6 +17386,17 @@ packages: - pkg:pypi/tzdata?source=hash-mapping size: 144160 timestamp: 1742745254292 +- conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.3-pyhd8ed1ab_0.conda + sha256: 467134ef39f0af2dbb57d78cb3e4821f01003488d331a8dd7119334f4f47bfbd + md5: 7ead57407430ba33f681738905278d03 + depends: + - python >=3.10 + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/tzdata?source=compressed-mapping + size: 143542 + timestamp: 1765719982349 - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.12-8_cp312.conda build_number: 8 sha256: 80677180dd3c22deb7426ca89d6203f1c7f1f256f2d5a94dc210f6e758229809 @@ -19630,6 +21071,17 @@ packages: purls: [] size: 256712 timestamp: 1740379577668 +- conda: https://conda.anaconda.org/conda-forge/osx-64/readline-8.3-h68b038d_0.conda + sha256: 4614af680aa0920e82b953fece85a03007e0719c3399f13d7de64176874b80d5 + md5: eefd65452dfe7cce476a519bece46704 + depends: + - __osx >=10.13 + - ncurses >=6.5,<7.0a0 + license: GPL-3.0-only + license_family: GPL + purls: [] + size: 317819 + timestamp: 1765813692798 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.2-h1d1bf99_2.conda sha256: 7db04684d3904f6151eff8673270922d31da1eea7fa73254d01c437f49702e34 md5: 63ef3f6e6d6d5c589e64f11263dc5676 @@ -19640,6 +21092,17 @@ packages: purls: [] size: 252359 timestamp: 1740379663071 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.3-h46df422_0.conda + sha256: a77010528efb4b548ac2a4484eaf7e1c3907f2aec86123ed9c5212ae44502477 + md5: f8381319127120ce51e081dce4865cf4 + depends: + - __osx >=11.0 + - ncurses >=6.5,<7.0a0 + license: GPL-3.0-only + license_family: GPL + purls: [] + size: 313930 + timestamp: 1765813902568 - conda: https://conda.anaconda.org/conda-forge/noarch/referencing-0.37.0-pyhcf101f3_0.conda sha256: 0577eedfb347ff94d0f2fa6c052c502989b028216996b45c7f21236f25864414 md5: 870293df500ca7e18bedefa5838a22ab @@ -19851,6 +21314,16 @@ packages: purls: [] size: 194585927 timestamp: 1758349806533 +- conda: https://conda.anaconda.org/conda-forge/osx-64/rust-1.92.0-h34a2095_0.conda + sha256: 698ad103c06250c0c96cc32ec15a50f706a1840aba3f24d769f661309ced5c2e + md5: dd5494a04896b4fcb63c1de3cd76fc07 + depends: + - rust-std-x86_64-apple-darwin 1.92.0 h38e4360_0 + license: MIT + license_family: MIT + purls: [] + size: 202690980 + timestamp: 1765820151789 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/rust-1.90.0-h4ff7c5d_0.conda sha256: d8af0ec389e84bd2b2f130e3be35aec799f6c556e9bc369a66a45fd44aabb350 md5: 6a2a9ecb3dc980c89eb992afca9526f1 @@ -19861,6 +21334,16 @@ packages: purls: [] size: 232594078 timestamp: 1758350126185 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/rust-1.92.0-h4ff7c5d_0.conda + sha256: 7cc5407dc6d559ef90118931faa4063c282dfed0472be562eacb12bf09b096c9 + md5: 0ea02a89903b4f23918ac8aa20500919 + depends: + - rust-std-aarch64-apple-darwin 1.92.0 hf6ec828_0 + license: MIT + license_family: MIT + purls: [] + size: 241496727 + timestamp: 1765820634853 - conda: https://conda.anaconda.org/conda-forge/win-64/rust-1.90.0-hf8d6059_0.conda sha256: ecc1c42314bbe8ebd15c23177d8f1525c0a6a8992d25fdd7eac91125baa88820 md5: 3ca8b58bb64c2c9828b507585ce9c635 @@ -19883,6 +21366,18 @@ packages: purls: [] size: 34394510 timestamp: 1758349841329 +- conda: https://conda.anaconda.org/conda-forge/noarch/rust-std-aarch64-apple-darwin-1.92.0-hf6ec828_0.conda + sha256: b86a91f07127469b5a8c490a8b791551f13bb67a5081958de033daa3d6ceb3d4 + md5: fde071794782ac4359173f1ddd4ae8d2 + depends: + - __unix + constrains: + - rust >=1.92.0,<1.92.1.0a0 + license: MIT + license_family: MIT + purls: [] + size: 34887424 + timestamp: 1765820242072 - conda: https://conda.anaconda.org/conda-forge/noarch/rust-std-x86_64-apple-darwin-1.90.0-h38e4360_0.conda sha256: 3f13fa1574fd639cea0d9973123f2f0043a190f351a4fcee01c6c28d061af644 md5: e6eb5faf6ec5d71128177b46b3262870 @@ -19895,6 +21390,18 @@ packages: purls: [] size: 35756326 timestamp: 1758349716765 +- conda: https://conda.anaconda.org/conda-forge/noarch/rust-std-x86_64-apple-darwin-1.92.0-h38e4360_0.conda + sha256: a9fccbe5d21868a9cb4c0c2b0cdf0d71fff56cd2af6aabe7b7e93d2c24c01450 + md5: 2940b6e1cc2f279ec7a4b96fca358e70 + depends: + - __unix + constrains: + - rust >=1.92.0,<1.92.1.0a0 + license: MIT + license_family: MIT + purls: [] + size: 36226360 + timestamp: 1765820054676 - conda: https://conda.anaconda.org/conda-forge/noarch/rust-std-x86_64-pc-windows-msvc-1.90.0-h17fc481_0.conda sha256: c5a361a1eda71d5f407d8f88b9ce41d2020ac80981555320cee43add0319b97a md5: 5c723190ef48b23e181c99b3bc65856b @@ -20444,6 +21951,25 @@ packages: - pkg:pypi/statsmodels?source=hash-mapping size: 11789159 timestamp: 1759297985305 +- conda: https://conda.anaconda.org/conda-forge/osx-64/statsmodels-0.14.6-py313h0f4b8c3_0.conda + sha256: 742814f77d9f36e370c05a8173f05fbaf342f9b684b409d41b37db6232991d9e + md5: c4a63959628293c523d6c4276049e1e9 + depends: + - __osx >=10.13 + - numpy <3,>=1.22.3 + - numpy >=1.23,<3 + - packaging >=21.3 + - pandas !=2.1.0,>=1.4 + - patsy >=0.5.6 + - python >=3.13,<3.14.0a0 + - python_abi 3.13.* *_cp313 + - scipy !=1.9.2,>=1.8 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/statsmodels?source=hash-mapping + size: 11721252 + timestamp: 1764983752241 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/statsmodels-0.14.5-py312ha11c99a_1.conda sha256: 3298856f15a82df03d700251a81f82b36b88cf365783fb31a7d550110f80f100 md5: 022490fa1d2b8095d91a5ea9f7e2f772 @@ -20484,6 +22010,26 @@ packages: - pkg:pypi/statsmodels?source=hash-mapping size: 11808825 timestamp: 1759297802972 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/statsmodels-0.14.6-py312ha11c99a_0.conda + sha256: 18f8711f235e32d793938e1738057e7be1d0bfe98f7d27e3e4b98aa757deae92 + md5: 31f49265d8de9776cd15b421f24b23e0 + depends: + - __osx >=11.0 + - numpy <3,>=1.22.3 + - numpy >=1.23,<3 + - packaging >=21.3 + - pandas !=2.1.0,>=1.4 + - patsy >=0.5.6 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + - scipy !=1.9.2,>=1.8 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/statsmodels?source=hash-mapping + size: 11537488 + timestamp: 1764984166760 - conda: https://conda.anaconda.org/conda-forge/win-64/statsmodels-0.14.5-py313h0591002_1.conda sha256: 2615c0d4058d2945cba6a082bd888b6299f6cc5ebb99557d28a48ddbeb271f2b md5: 442526bc22b3710205d648545792c14b @@ -20505,6 +22051,13 @@ packages: - pkg:pypi/statsmodels?source=hash-mapping size: 11571590 timestamp: 1759297763389 +- pypi: https://files.pythonhosted.org/packages/9d/9a/6c68aad2ccfce6e2eeebbf5bb709d0240592eb51ff142ec4c8fbf3c2460a/syrupy-5.0.0-py3-none-any.whl + name: syrupy + version: 5.0.0 + sha256: c848e1a980ca52a28715cd2d2b4d434db424699c05653bd1158fb31cf56e9546 + requires_dist: + - pytest>=8.0.0 + requires_python: '>=3.10' - conda: https://conda.anaconda.org/conda-forge/noarch/sysroot_linux-64-2.28-h4ee821c_8.conda sha256: 0053c17ffbd9f8af1a7f864995d70121c292e317804120be4667f37c92805426 md5: 1bad93f0aa428d618875ef3a588a889e @@ -20517,6 +22070,18 @@ packages: purls: [] size: 24210909 timestamp: 1752669140965 +- conda: https://conda.anaconda.org/conda-forge/noarch/tabulate-0.9.0-pyhcf101f3_3.conda + sha256: 795e03d14ce50ae409e86cf2a8bd8441a8c459192f97841449f33d2221066fef + md5: de98449f11d48d4b52eefb354e2bfe35 + depends: + - python >=3.10 + - python + license: MIT + license_family: MIT + purls: + - pkg:pypi/tabulate?source=hash-mapping + size: 40319 + timestamp: 1765140047040 - conda: https://conda.anaconda.org/conda-forge/noarch/tabulate-0.9.0-pyhd8ed1ab_2.conda sha256: 090023bddd40d83468ef86573976af8c514f64119b2bd814ee63a838a542720a md5: 959484a66b4b76befcddc4fa97c95567 @@ -20650,6 +22215,17 @@ packages: purls: [] size: 3259809 timestamp: 1748387843735 +- conda: https://conda.anaconda.org/conda-forge/osx-64/tk-8.6.13-hf689a15_3.conda + sha256: 0d0b6cef83fec41bc0eb4f3b761c4621b7adfb14378051a8177bd9bb73d26779 + md5: bd9f1de651dbd80b51281c694827f78f + depends: + - __osx >=10.13 + - libzlib >=1.3.1,<2.0a0 + license: TCL + license_family: BSD + purls: [] + size: 3262702 + timestamp: 1763055085507 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h892fb3f_2.conda sha256: cb86c522576fa95c6db4c878849af0bccfd3264daf0cc40dd18e7f4a7bfced0e md5: 7362396c170252e7b7b0c8fb37fe9c78 @@ -20661,6 +22237,17 @@ packages: purls: [] size: 3125538 timestamp: 1748388189063 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h892fb3f_3.conda + sha256: ad0c67cb03c163a109820dc9ecf77faf6ec7150e942d1e8bb13e5d39dc058ab7 + md5: a73d54a5abba6543cb2f0af1bfbd6851 + depends: + - __osx >=11.0 + - libzlib >=1.3.1,<2.0a0 + license: TCL + license_family: BSD + purls: [] + size: 3125484 + timestamp: 1763055028377 - conda: https://conda.anaconda.org/conda-forge/win-64/tk-8.6.13-h2c6b04d_2.conda sha256: e3614b0eb4abcc70d98eae159db59d9b4059ed743ef402081151a948dce95896 md5: ebd0e761de9aa879a51d22cc721bd095 @@ -20754,6 +22341,19 @@ packages: - pkg:pypi/tornado?source=hash-mapping size: 850711 timestamp: 1756855239163 +- conda: https://conda.anaconda.org/conda-forge/osx-64/tornado-6.5.4-py313h16c19ce_0.conda + sha256: 94d25f6ad0a21dd788f4e1dddec24696edb36e651939a4c241444ee1340ac006 + md5: d8976bd40232eea804fa55c429774c0d + depends: + - __osx >=11.0 + - python >=3.13,<3.14.0a0 + - python_abi 3.13.* *_cp313 + license: Apache-2.0 + license_family: Apache + purls: + - pkg:pypi/tornado?source=hash-mapping + size: 878614 + timestamp: 1765836723769 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.5.2-py312h163523d_1.conda sha256: 00e9adcab3564cc579af09c6089c60e5abf5b1fbdca5e4f0fa7299d90f35dc13 md5: e5f3e0a27abcae26a90645dfff8d68a4 @@ -20768,6 +22368,20 @@ packages: - pkg:pypi/tornado?source=hash-mapping size: 850838 timestamp: 1756855106235 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.5.4-py312h4409184_0.conda + sha256: 114bfa1b859a64c589c428fce0ff8e358d8f0aaa7b98d353b94a95c7bceae640 + md5: fde4548a1e99c14eea9752f270ab68aa + depends: + - __osx >=11.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + license: Apache-2.0 + license_family: Apache + purls: + - pkg:pypi/tornado?source=hash-mapping + size: 854598 + timestamp: 1765836762571 - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda sha256: 11e2c85468ae9902d24a27137b6b39b4a78099806e551d390e394a8c34b48e40 md5: 9efbfdc37242619130ea42b1cc4ed861 @@ -20895,6 +22509,13 @@ packages: purls: [] size: 122968 timestamp: 1742727099393 +- conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025c-h8577fbf_0.conda + sha256: 50fad5db6734d1bb73df1cf5db73215e326413d4b2137933f70708aa1840e25b + md5: 338201218b54cadff2e774ac27733990 + license: LicenseRef-Public-Domain + purls: [] + size: 119204 + timestamp: 1765745742795 - conda: https://conda.anaconda.org/conda-forge/noarch/tzlocal-5.3.1-pyh8f84b5b_0.conda sha256: 6447388bd870ab0a2b38af5aa64185cd71028a2a702f0935e636a01d81fba7fc md5: 369f3170d6f727d3102d83274e403b66 @@ -21022,6 +22643,20 @@ packages: - pkg:pypi/unicodedata2?source=hash-mapping size: 410699 timestamp: 1756494753956 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/unicodedata2-17.0.0-py312h4409184_1.conda + sha256: 567cebbb3a1a5c76e5ec43508e01ccbe98923ad0003eafd87acbbc546fcd588c + md5: b0b0c7ea4888b6f4009afa7001e6adaa + depends: + - __osx >=11.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + license: Apache-2.0 + license_family: Apache + purls: + - pkg:pypi/unicodedata2?source=hash-mapping + size: 416271 + timestamp: 1763055285615 - conda: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_1.conda sha256: e0eb6c8daf892b3056f08416a96d68b0a358b7c46b99c8a50481b22631a4dfc0 md5: e7cb0f5745e4c5035a460248334af7eb @@ -21280,6 +22915,19 @@ packages: - pkg:pypi/wrapt?source=hash-mapping size: 83070 timestamp: 1760964583635 +- conda: https://conda.anaconda.org/conda-forge/osx-64/wrapt-2.0.1-py313hf050af9_1.conda + sha256: 3b9e3310303282eb8f81dc6162b8b2137567c704f79e22a2dfbd50ed90f14d5d + md5: 9990fddf9ed0ccc25b7cc7c46ade0e82 + depends: + - __osx >=10.13 + - python >=3.13,<3.14.0a0 + - python_abi 3.13.* *_cp313 + license: BSD-2-Clause + license_family: BSD + purls: + - pkg:pypi/wrapt?source=hash-mapping + size: 83001 + timestamp: 1762595242783 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/wrapt-2.0.0-py312h4409184_0.conda sha256: 8e9748511f5d53b7368901b5e4e35fd5e6d3bc8e3217a9ed09c86778da66c7dc md5: 4fb8b4a84284fe98a4849e2d6f7fba1a @@ -21308,6 +22956,20 @@ packages: - pkg:pypi/wrapt?source=hash-mapping size: 84051 timestamp: 1760964732588 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/wrapt-2.0.1-py312h4409184_1.conda + sha256: 53b97d650332321e67e046de2c29ff60bc742a17d5e4c48a15c704933843e156 + md5: 2b3afb010681e2dcfbf27366d373f5c8 + depends: + - __osx >=11.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + license: BSD-2-Clause + license_family: BSD + purls: + - pkg:pypi/wrapt?source=hash-mapping + size: 83380 + timestamp: 1762595281305 - conda: https://conda.anaconda.org/conda-forge/win-64/wrapt-2.0.0-py313h5ea7bf4_0.conda sha256: e8fbeda5dfe72255546295ab12a2d45ff656c604a9ee285d4aca2650bf7d8ec5 md5: ff4543f24b6d71daaf86ff2ba6310851 @@ -21380,6 +23042,16 @@ packages: purls: [] size: 13290 timestamp: 1734229077182 +- conda: https://conda.anaconda.org/conda-forge/osx-64/xorg-libxau-1.0.12-h8616949_1.conda + sha256: 928f28bd278c7da674b57d71b2e7f4ac4e7c7ce56b0bf0f60d6a074366a2e76d + md5: 47f1b8b4a76ebd0cd22bd7153e54a4dc + depends: + - __osx >=10.13 + license: MIT + license_family: MIT + purls: [] + size: 13810 + timestamp: 1762977180568 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxau-1.0.12-h5505292_0.conda sha256: f33e6f013fc36ebc200f09ddead83468544cb5c353a3b50499b07b8c34e28a8d md5: 50901e0764b7701d8ed7343496f4f301 @@ -21390,6 +23062,16 @@ packages: purls: [] size: 13593 timestamp: 1734229104321 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxau-1.0.12-hc919400_1.conda + sha256: adae11db0f66f86156569415ed79cda75b2dbf4bea48d1577831db701438164f + md5: 78b548eed8227a689f93775d5d23ae09 + depends: + - __osx >=11.0 + license: MIT + license_family: MIT + purls: [] + size: 14105 + timestamp: 1762976976084 - conda: https://conda.anaconda.org/conda-forge/win-64/xorg-libxau-1.0.12-h0e40799_0.conda sha256: 047836241b2712aab1e29474a6f728647bff3ab57de2806b0bb0a6cf9a2d2634 md5: 2ffbfae4548098297c033228256eb96e @@ -21423,6 +23105,26 @@ packages: purls: [] size: 18465 timestamp: 1727794980957 +- conda: https://conda.anaconda.org/conda-forge/osx-64/xorg-libxdmcp-1.1.5-h8616949_1.conda + sha256: b7b291cc5fd4e1223058542fca46f462221027779920dd433d68b98e858a4afc + md5: 435446d9d7db8e094d2c989766cfb146 + depends: + - __osx >=10.13 + license: MIT + license_family: MIT + purls: [] + size: 19067 + timestamp: 1762977101974 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxdmcp-1.1.5-hc919400_1.conda + sha256: f7fa0de519d8da589995a1fe78ef74556bb8bc4172079ae3a8d20c3c81354906 + md5: 9d1299ace1924aa8f4e0bc8e71dd0cf7 + depends: + - __osx >=11.0 + license: MIT + license_family: MIT + purls: [] + size: 19156 + timestamp: 1762977035194 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxdmcp-1.1.5-hd74edd7_0.conda sha256: 9939a166d780700d81023546759102b33fdc2c5f11ef09f5f66c77210fd334c8 md5: 77c447f48cab5d3a15ac224edb86a968 @@ -21662,6 +23364,17 @@ packages: purls: [] size: 109093 timestamp: 1761842915854 +- conda: https://conda.anaconda.org/conda-forge/osx-64/zlib-ng-2.3.2-h8bce59a_1.conda + sha256: 945725769bc668435af1c23733c3c1dba01eb115ad3bad5393c9df2e23de6cfc + md5: cdd69480d52f2b871fad1a91324d9942 + depends: + - __osx >=10.13 + - libcxx >=19 + license: Zlib + license_family: Other + purls: [] + size: 120585 + timestamp: 1766077108928 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zlib-ng-2.2.5-h3470cca_0.conda sha256: 82e3b57478d536b68229d1dbcdabe728fada5dbe77f9238a5fff5fc37a7fa758 md5: c86493f35e79c93b04ff0279092b53e2 @@ -21673,6 +23386,17 @@ packages: purls: [] size: 87296 timestamp: 1761843121173 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/zlib-ng-2.3.2-hed4e4f5_1.conda + sha256: ab481487381a6a6213d667e883252e52b8ca867b3b466c31a058126f964efffe + md5: 75f39a44c08cb5dc4ea847698de34ba3 + depends: + - __osx >=11.0 + - libcxx >=19 + license: Zlib + license_family: Other + purls: [] + size: 94882 + timestamp: 1766076931977 - conda: https://conda.anaconda.org/conda-forge/win-64/zlib-ng-2.2.5-h32d8bfd_0.conda sha256: 67a3113acf3506f1cf1c72e0748742217a20edc6c1c1c19631f901c5e028d2bc md5: dec092b1a069abafc38655ded65a7b29 @@ -21748,6 +23472,17 @@ packages: purls: [] size: 567578 timestamp: 1742433379869 +- conda: https://conda.anaconda.org/conda-forge/osx-64/zstd-1.5.7-h3eecb57_6.conda + sha256: 47101a4055a70a4876ffc87b750ab2287b67eca793f21c8224be5e1ee6394d3f + md5: 727109b184d680772e3122f40136d5ca + depends: + - __osx >=10.13 + - libzlib >=1.3.1,<2.0a0 + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 528148 + timestamp: 1764777156963 - conda: https://conda.anaconda.org/conda-forge/osx-64/zstd-1.5.7-h8210216_2.conda sha256: c171c43d0c47eed45085112cb00c8c7d4f0caa5a32d47f2daca727e45fb98dca md5: cd60a4a5a8d6a476b30d8aa4bb49251a @@ -21770,6 +23505,17 @@ packages: purls: [] size: 399979 timestamp: 1742433432699 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstd-1.5.7-hbf9d68e_6.conda + sha256: 9485ba49e8f47d2b597dd399e88f4802e100851b27c21d7525625b0b4025a5d9 + md5: ab136e4c34e97f34fb621d2592a393d8 + depends: + - __osx >=11.0 + - libzlib >=1.3.1,<2.0a0 + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 433413 + timestamp: 1764777166076 - conda: https://conda.anaconda.org/conda-forge/win-64/zstd-1.5.7-hbeecb71_2.conda sha256: bc64864377d809b904e877a98d0584f43836c9f2ef27d3d2a1421fa6eae7ca04 md5: 21f56217d6125fb30c3c3f10c786d751 diff --git a/pixi.toml b/pixi.toml index ab8d6f53d..fddec0401 100644 --- a/pixi.toml +++ b/pixi.toml @@ -62,7 +62,9 @@ jax = ">=0.4.38, <0.8" jaxlib = ">=0.4.38, <0.8" [feature.dev.tasks] -"tests" = "pytest -rs -n 9 --cov-report=term tests" +"tests" = "pytest -rs -n 9 --cov=pyfixest --cov-report=term tests --ignore=tests/test_etable_snapshot.py --ignore=tests/test_plots_snapshot.py" +"coverage-report" = "coverage report && coverage xml" +"coverage-clean" = "coverage erase" "tests-against-r-core" = 'pytest -rs tests -n 9 -m "against_r_core" --cov=pyfixest --cov-report=xml' "tests-against-r-extended" = 'pytest -rs tests -n 9 -m "against_r_extended" --cov=pyfixest --cov-report=xml' "tests-regular" = 'pytest tests -n 9 -m "not (extended or against_r_core or against_r_extended or plots or hac)" --cov=pyfixest --cov-report=xml' @@ -123,6 +125,23 @@ pre-commit = "pre-commit run --all-files" build-pip = 'python -m build .' maturin-develop = "maturin develop --release --strip" +[feature.snapshot] +platforms = ["osx-arm64", "osx-64"] + +[feature.snapshot.dependencies] +pytest = ">=7.2.0" +pytest-cov = ">=4.1.0" +matplotlib = ">=3.7.0" + +[feature.snapshot.pypi-dependencies] +maketables = ">=0.1.0" +syrupy = ">=4.6.0" +lets-plot = ">=4.0.0" + +[feature.snapshot.tasks] +snapshot-test = "pytest tests/test_etable_snapshot.py tests/test_plots_snapshot.py -v --cov=pyfixest --cov-append --cov-report=term" +snapshot-update = "pytest tests/test_etable_snapshot.py tests/test_plots_snapshot.py -v --snapshot-update" + [environments] dev = ["dev", "build"] docs = ["docs", "build"] @@ -130,3 +149,4 @@ lint = ["lint"] plots = ["plots"] jax = ["jax"] build = ["build"] +snapshot = ["snapshot", "build"] diff --git a/pyfixest/estimation/decomposition.py b/pyfixest/estimation/decomposition.py index 3b556627b..7e6ae69bc 100644 --- a/pyfixest/estimation/decomposition.py +++ b/pyfixest/estimation/decomposition.py @@ -750,6 +750,7 @@ def etable( Additional notes to append to the table, by default None. **kwargs : dict, optional Additional arguments passed to maketables.MTable (type, digits, etc.). + Additional arguments passed to maketables.MTable (type, digits, etc.). Returns ------- @@ -907,6 +908,7 @@ def etable( rgroup_sep_val = "t" if rgroup_sep is None else rgroup_sep output_type = kwargs.pop("type", "gt") + # Create MTable with the DataFrame table = MTable( res_sub, notes=notes, diff --git a/pyfixest/report/summarize.py b/pyfixest/report/summarize.py index 6c1f0839b..43c2efb66 100644 --- a/pyfixest/report/summarize.py +++ b/pyfixest/report/summarize.py @@ -439,7 +439,7 @@ def dtable( Generate descriptive statistics tables and create a booktab style table in the desired format (gt or tex). - .. deprecated:: 0.41.0 + .. deprecated:: This function is deprecated and will be removed in a future version. Please use `maketables.DTable()` directly instead. See https://py-econometrics.github.io/maketables/ for documentation. diff --git a/pyproject.toml b/pyproject.toml index 4ca70dfce..5a43eebe9 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -56,7 +56,8 @@ markers = [ "against_r_extended: mark test to be part of the test suite that depends on other R modules", "extended: mark test to be part of the extended test suite", "plots: marks all tests for plotting functionality, tests only triggered when using tag in github issue", - "hac: marks all tests for HAC SEs" + "hac: marks all tests for HAC SEs", + "snapshot: marks all snapshot tests for etable output" ] filterwarnings = [ @@ -64,6 +65,16 @@ filterwarnings = [ "ignore::DeprecationWarning:rpy2", ] +[tool.coverage.run] +source = ["pyfixest"] +parallel = true +branch = true + +[tool.coverage.paths] +source = [ + "pyfixest/", +] + [tool.ruff] line-length = 88 fix = true diff --git a/pytest.ini b/pytest.ini index bcf40d751..532b30405 100644 --- a/pytest.ini +++ b/pytest.ini @@ -5,6 +5,7 @@ markers = extended: mark test to be part of the extended test suite plots: marks all tests for plotting functionality, tests only triggered when using tag in github issue hac: marks all tests for HAC SEs + snapshot: marks all snapshot tests for etable output filterwarnings = ignore::FutureWarning:rpy2 diff --git a/tests/__snapshots__/test_etable_snapshot.ambr b/tests/__snapshots__/test_etable_snapshot.ambr new file mode 100644 index 000000000..80ae47178 --- /dev/null +++ b/tests/__snapshots__/test_etable_snapshot.ambr @@ -0,0 +1,5483 @@ +# serializer version: 1 +# name: TestEtableAdvancedParams.test_cat_template + ''' +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Y +
(1)
coef
X1-0.919
(0.06)
f1=12.300
(0.34)
f1=2-1.844
(0.355)
f1=3-0.598
(0.368)
f1=4-1.875
(0.356)
f1=51.454
(0.387)
f1=6-0.945
(0.377)
f1=70.445
(0.361)
f1=8-0.627
(0.355)
f1=9-0.157
(0.354)
f1=100.415
(0.359)
f1=111.108
(0.361)
f1=120.422
(0.372)
f1=131.678
(0.37)
f1=14-0.329
(0.378)
f1=151.062
(0.376)
f1=162.012
(0.356)
f1=17-0.341
(0.378)
f1=181.341
(0.359)
f1=190.496
(0.377)
f1=202.611
(0.333)
f1=21-1.766
(0.359)
f1=22-1.126
(0.348)
f1=23-0.896
(0.401)
f1=24-1.258
(0.362)
f1=25-1.623
(0.402)
f1=260.501
(0.385)
f1=27-0.359
(0.374)
f1=281.425
(0.343)
f1=290.281
(0.379)
f2=10.392
(0.349)
f2=2-0.585
(0.415)
f2=3-2.277
(0.344)
f2=4-0.312
(0.401)
f2=50.115
(0.357)
f2=60.416
(0.345)
f2=7-1.193
(0.392)
f2=8-1.240
(0.366)
f2=9-1.753
(0.36)
f2=100.717
(0.34)
f2=11-0.864
(0.397)
f2=120.357
(0.341)
f2=13-2.291
(0.412)
f2=14-0.647
(0.366)
f2=15-0.281
(0.355)
f2=16-0.239
(0.353)
f2=17-0.266
(0.394)
f2=18-0.852
(0.374)
f2=190.798
(0.349)
f2=20-1.243
(0.37)
f2=21-0.793
(0.366)
f2=22-0.061
(0.376)
f2=23-0.643
(0.374)
f2=24-0.599
(0.373)
f2=251.060
(0.343)
f2=26-0.114
(0.387)
f2=27-1.620
(0.345)
f2=280.113
(0.369)
f2=29-2.543
(0.337)
Intercept1.142
(0.355)
stats
Observations997
R20.609
Format of coefficient cell: Coefficient (Std. Error)
+ +
+ + ''' +# --- +# name: TestEtableAdvancedParams.test_custom_fe_symbols + ''' +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Y +
(1)(2)
coef
X1-0.95
(0.066)
-0.924
(0.056)
X2-0.174
(0.018)
-0.174
(0.015)
fe
f1xx
f2-x
stats
Observations997997
R20.4890.659
Format of coefficient cell: Coefficient (Std. Error)
+ +
+ + ''' +# --- +# name: TestEtableAdvancedParams.test_custom_model_stats + ''' +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Y +
(1)(2)
coef
X1-0.95
(0.066)
-0.924
(0.056)
X2-0.174
(0.018)
-0.174
(0.015)
fe
f1xx
f2-x
stats
Mean Y-5.345105835707875e-188.908509726179791e-18
Observations997997
R20.4890.659
Format of coefficient cell: Coefficient (Std. Error)
+ +
+ + ''' +# --- +# name: TestEtableAdvancedParams.test_digits + ''' +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Y +
(1)(2)
coef
X1-0.94953
(0.06637)
-0.92405
(0.05606)
X2-0.17423
(0.01760)
-0.17411
(0.01486)
fe
f1xx
f2-x
stats
Observations997997
R20.4890.659
Format of coefficient cell: Coefficient (Std. Error)
+ +
+ + ''' +# --- +# name: TestEtableAdvancedParams.test_exact_match + ''' +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Y +
(1)(2)
coef
X1-0.95
(0.066)
-0.924
(0.056)
fe
f1xx
f2-x
stats
Observations997997
R20.4890.659
Format of coefficient cell: Coefficient (Std. Error)
+ +
+ + ''' +# --- +# name: TestEtableAdvancedParams.test_scientific_notation + ''' +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Y +
(1)(2)
coef
X1-0.95
(0.066)
-0.924
(0.056)
X2-0.174
(0.018)
-0.174
(0.015)
fe
f1xx
f2-x
stats
Observations997997
R20.4890.659
Format of coefficient cell: Coefficient (Std. Error)
+ +
+ + ''' +# --- +# name: TestEtableAdvancedParams.test_show_fe_false + ''' +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Y +
(1)(2)
coef
X1-0.95
(0.066)
-0.924
(0.056)
X2-0.174
(0.018)
-0.174
(0.015)
stats
Observations997997
R20.4890.659
Format of coefficient cell: Coefficient (Std. Error)
+ +
+ + ''' +# --- +# name: TestEtableAdvancedParams.test_thousands_sep + ''' +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Y +
(1)(2)
coef
X1-0.95
(0.066)
-0.924
(0.056)
X2-0.174
(0.018)
-0.174
(0.015)
fe
f1xx
f2-x
stats
Observations997997
R20.4890.659
Format of coefficient cell: Coefficient (Std. Error)
+ +
+ + ''' +# --- +# name: TestEtableDf.test_basic_df + ''' + Y + (1) (2) + coef X1 -0.95 \n (0.066) -0.924 \n (0.056) + X2 -0.174 \n (0.018) -0.174 \n (0.015) + fe f1 x x + f2 - x + stats Observations 997 997 + R² 0.489 0.659 + ''' +# --- +# name: TestEtableDf.test_df_with_custom_stats + ''' + Y + (1) (2) + coef X1 -0.95 [-1.080, -0.819] -0.924 [-1.034, -0.814] + X2 -0.174 [-0.209, -0.14] -0.174 [-0.203, -0.145] + fe f1 x x + f2 - x + stats Observations 997 997 + R² 0.489 0.659 + ''' +# --- +# name: TestEtableGt.test_basic_gt + ''' +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Y +
(1)(2)
coef
X1-0.95
(0.066)
-0.924
(0.056)
X2-0.174
(0.018)
-0.174
(0.015)
fe
f1xx
f2-x
stats
Observations997997
R20.4890.659
Format of coefficient cell: Coefficient (Std. Error)
+ +
+ + ''' +# --- +# name: TestEtableGt.test_gt_with_coef_fmt + ''' +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Y +
(1)(2)
coef
X1-0.95 (0.066)
-14.306 [0]
-0.924 (0.056)
-16.483 [0]
X2-0.174 (0.018)
-9.902 [0]
-0.174 (0.015)
-11.717 [0]
fe
f1xx
f2-x
stats
Observations997997
R20.4890.659
Format of coefficient cell: Coefficient (Std. Error) t-stats [p-value]
+ +
+ + ''' +# --- +# name: TestEtableGt.test_gt_with_drop + ''' +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Y +
(1)(2)
coef
X1-0.95
(0.066)
-0.924
(0.056)
fe
f1xx
f2-x
stats
Observations997997
R20.4890.659
Format of coefficient cell: Coefficient (Std. Error)
+ +
+ + ''' +# --- +# name: TestEtableGt.test_gt_with_keep + ''' +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Y +
(1)(2)
coef
X1-0.95
(0.066)
-0.924
(0.056)
fe
f1xx
f2-x
stats
Observations997997
R20.4890.659
Format of coefficient cell: Coefficient (Std. Error)
+ +
+ + ''' +# --- +# name: TestEtableGt.test_gt_with_labels + ''' +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Y +
(1)(2)
coef
Variable One-0.95
(0.066)
-0.924
(0.056)
Variable Two-0.174
(0.018)
-0.174
(0.015)
fe
Fixed Effect 1xx
Fixed Effect 2-x
stats
Observations997997
R20.4890.659
Format of coefficient cell: Coefficient (Std. Error)
+ +
+ + ''' +# --- +# name: TestEtableGt.test_gt_with_model_heads + ''' +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+   + + Y +
+ Model A + + Model B +
(1)(2)
coef
X1-0.95
(0.066)
-0.924
(0.056)
X2-0.174
(0.018)
-0.174
(0.015)
fe
f1xx
f2-x
stats
Observations997997
R20.4890.659
Format of coefficient cell: Coefficient (Std. Error)
+ +
+ + ''' +# --- +# name: TestEtableGt.test_gt_with_notes + ''' +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Y +
(1)(2)
coef
X1-0.95
(0.066)
-0.924
(0.056)
X2-0.174
(0.018)
-0.174
(0.015)
fe
f1xx
f2-x
stats
Observations997997
R20.4890.659
Custom notes for this table.
+ +
+ + ''' +# --- +# name: TestEtableGt.test_gt_with_significance_codes + ''' +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Y +
(1)(2)
coef
X1-0.95
(0.066)
-0.924
(0.056)
X2-0.174
(0.018)
-0.174
(0.015)
fe
f1xx
f2-x
stats
Observations997997
R20.4890.659
Format of coefficient cell: Coefficient (Std. Error)
+ +
+ + ''' +# --- +# name: TestEtableGt.test_single_model_gt + ''' +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Y +
(1)
coef
X1-0.95
(0.066)
X2-0.174
(0.018)
fe
f1x
stats
Observations997
R20.489
Format of coefficient cell: Coefficient (Std. Error)
+ +
+ + ''' +# --- +# name: TestEtableHtml.test_basic_html + ''' +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Y +
(1)(2)
coef
X1-0.95
(0.066)
-0.924
(0.056)
X2-0.174
(0.018)
-0.174
(0.015)
fe
f1xx
f2-x
stats
Observations997997
R20.4890.659
Format of coefficient cell: Coefficient (Std. Error)
+ +
+ + ''' +# --- +# name: TestEtableMd.test_basic_md + ''' + | | ('Y', '(1)') | ('Y', '(2)') | + |:--------------------------|:---------------|:---------------| + | ('coef', 'X1') | -0.95 | -0.924 | + | | (0.066) | (0.056) | + | ('coef', 'X2') | -0.174 | -0.174 | + | | (0.018) | (0.015) | + | ('fe', 'f1') | x | x | + | ('fe', 'f2') | - | x | + | ('stats', 'Observations') | 997 | 997 | + | ('stats', 'R²') | 0.489 | 0.659 | + + ''' +# --- +# name: TestEtableMd.test_md_with_notes + ''' + | | ('Y', '(1)') | ('Y', '(2)') | + |:--------------------------|:---------------|:---------------| + | ('coef', 'X1') | -0.95 | -0.924 | + | | (0.066) | (0.056) | + | ('coef', 'X2') | -0.174 | -0.174 | + | | (0.018) | (0.015) | + | ('fe', 'f1') | x | x | + | ('fe', 'f2') | - | x | + | ('stats', 'Observations') | 997 | 997 | + | ('stats', 'R²') | 0.489 | 0.659 | + + ''' +# --- +# name: TestEtableModelInputs.test_explicit_model_list + ''' +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Y +
(1)(2)(3)
coef
X1-1.000
(0.085)
-0.993
(0.082)
-0.95
(0.066)
X2-0.176
(0.022)
-0.174
(0.018)
Intercept0.919
(0.112)
0.889
(0.108)
fe
f1--x
stats
Observations998998997
R20.1230.1770.489
Format of coefficient cell: Coefficient (Std. Error)
+ +
+ + ''' +# --- +# name: TestEtableModelInputs.test_fixest_multi_direct + ''' +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Y + + Y2 +
(1)(2)
coef
X1-0.95
(0.066)
-1.267
(0.211)
X2-0.174
(0.018)
-0.131
(0.056)
fe
f1xx
stats
Observations997998
R20.4890.12
Format of coefficient cell: Coefficient (Std. Error)
+ +
+ + ''' +# --- +# name: TestEtableModelInputs.test_fixest_multi_method + ''' +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Y + + Y2 +
(1)(2)
coef
X1-0.95
(0.066)
-1.267
(0.211)
X2-0.174
(0.018)
-0.131
(0.056)
fe
f1xx
stats
Observations997998
R20.4890.12
Format of coefficient cell: Coefficient (Std. Error)
+ +
+ + ''' +# --- +# name: TestEtableModelInputs.test_fixest_multi_to_list + ''' +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Y + + Y2 +
(1)(2)
coef
X1-0.95
(0.066)
-1.267
(0.211)
X2-0.174
(0.018)
-0.131
(0.056)
fe
f1xx
stats
Observations997998
R20.4890.12
Format of coefficient cell: Coefficient (Std. Error)
+ +
+ + ''' +# --- +# name: TestEtableSpecialModels.test_iv_model + ''' +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Y +
(1)(2)
coef
X1-0.992
(0.105)
-0.95
(0.066)
X2-0.174
(0.018)
-0.174
(0.018)
fe
f1xx
stats
Observations997997
R2-0.489
Format of coefficient cell: Coefficient (Std. Error)
+ +
+ + ''' +# --- +# name: TestEtableSpecialModels.test_mixed_models + ''' +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Y +
(1)(2)(3)
coef
X1-0.95
(0.066)
-0.924
(0.056)
0.004
(0.033)
X2-0.174
(0.018)
-0.174
(0.015)
-0.014
(0.011)
f20.003
(0.004)
fe
f1xxx
f2-x-
stats
Observations997997996
R20.4890.659-
Format of coefficient cell: Coefficient (Std. Error)
+ +
+ + ''' +# --- +# name: TestEtableSpecialModels.test_poisson_model + ''' +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Y +
(1)
coef
X10.004
(0.033)
X2-0.014
(0.011)
f20.003
(0.004)
fe
f1x
stats
Observations996
R2-
Format of coefficient cell: Coefficient (Std. Error)
+ +
+ + ''' +# --- +# name: TestEtableTex.test_basic_tex + ''' + \begin{threeparttable} + \begingroup + \renewcommand\cellalign{t} + \renewcommand\arraystretch{1} + \setlength{\tabcolsep}{3pt} + \begin{tabularx}{\linewidth}{@{}>{\raggedright\arraybackslash}l>{\centering\arraybackslash}X>{\centering\arraybackslash}X} + \toprule + & \multicolumn{2}{c}{Y} \\ + \cmidrule(lr){2-3} + & (1) & (2) \\ + \midrule + \addlinespace[1ex] + X1 & \makecell{-0.95 \\ (0.066)} & \makecell{-0.924 \\ (0.056)} \\ + \addlinespace[0.5ex] + \addlinespace[0.5ex] + X2 & \makecell{-0.174 \\ (0.018)} & \makecell{-0.174 \\ (0.015)} \\ + \addlinespace[0.5ex] + \midrule + \addlinespace[1ex] + f1 & x & x \\ + \addlinespace[0.5ex] + \addlinespace[0.5ex] + f2 & - & x \\ + \addlinespace[0.5ex] + \midrule + \addlinespace[1ex] + Observations & 997 & 997 \\ + \addlinespace[0.5ex] + \addlinespace[0.5ex] + $R^2$ & 0.489 & 0.659 \\ + \addlinespace[0.5ex] + \bottomrule + \end{tabularx} + \endgroup + \noindent\begin{minipage}{\linewidth}\smallskip\footnotesize + Format of coefficient cell: Coefficient (Std. Error)\end{minipage} + + \end{threeparttable} + ''' +# --- +# name: TestEtableTex.test_tex_with_model_heads_d + ''' + \begin{threeparttable} + \begingroup + \renewcommand\cellalign{t} + \renewcommand\arraystretch{1} + \setlength{\tabcolsep}{3pt} + \begin{tabularx}{\linewidth}{@{}>{\raggedright\arraybackslash}l>{\centering\arraybackslash}X>{\centering\arraybackslash}X} + \toprule + & \multicolumn{2}{c}{Y} \\ + \cmidrule(lr){2-3} + & (1) & (2) \\ + \midrule + \addlinespace[1ex] + X1 & \makecell{-0.95 \\ (0.066)} & \makecell{-0.924 \\ (0.056)} \\ + \addlinespace[0.5ex] + \addlinespace[0.5ex] + X2 & \makecell{-0.174 \\ (0.018)} & \makecell{-0.174 \\ (0.015)} \\ + \addlinespace[0.5ex] + \midrule + \addlinespace[1ex] + f1 & x & x \\ + \addlinespace[0.5ex] + \addlinespace[0.5ex] + f2 & - & x \\ + \addlinespace[0.5ex] + \midrule + \addlinespace[1ex] + Observations & 997 & 997 \\ + \addlinespace[0.5ex] + \addlinespace[0.5ex] + $R^2$ & 0.489 & 0.659 \\ + \addlinespace[0.5ex] + \bottomrule + \end{tabularx} + \endgroup + \noindent\begin{minipage}{\linewidth}\smallskip\footnotesize + Format of coefficient cell: Coefficient (Std. Error)\end{minipage} + + \end{threeparttable} + ''' +# --- +# name: TestEtableTex.test_tex_with_model_heads_dh + ''' + \begin{threeparttable} + \begingroup + \renewcommand\cellalign{t} + \renewcommand\arraystretch{1} + \setlength{\tabcolsep}{3pt} + \begin{tabularx}{\linewidth}{@{}>{\raggedright\arraybackslash}l>{\centering\arraybackslash}X>{\centering\arraybackslash}X} + \toprule + & \multicolumn{2}{c}{Y} \\ + \cmidrule(lr){2-3} + & \multicolumn{1}{c}{Model A} & \multicolumn{1}{c}{Model B} \\ + \cmidrule(lr){2-2} \cmidrule(lr){3-3} + & (1) & (2) \\ + \midrule + \addlinespace[1ex] + X1 & \makecell{-0.95 \\ (0.066)} & \makecell{-0.924 \\ (0.056)} \\ + \addlinespace[0.5ex] + \addlinespace[0.5ex] + X2 & \makecell{-0.174 \\ (0.018)} & \makecell{-0.174 \\ (0.015)} \\ + \addlinespace[0.5ex] + \midrule + \addlinespace[1ex] + f1 & x & x \\ + \addlinespace[0.5ex] + \addlinespace[0.5ex] + f2 & - & x \\ + \addlinespace[0.5ex] + \midrule + \addlinespace[1ex] + Observations & 997 & 997 \\ + \addlinespace[0.5ex] + \addlinespace[0.5ex] + $R^2$ & 0.489 & 0.659 \\ + \addlinespace[0.5ex] + \bottomrule + \end{tabularx} + \endgroup + \noindent\begin{minipage}{\linewidth}\smallskip\footnotesize + Format of coefficient cell: Coefficient (Std. Error)\end{minipage} + + \end{threeparttable} + ''' +# --- +# name: TestEtableTex.test_tex_with_model_heads_h + ''' + \begin{threeparttable} + \begingroup + \renewcommand\cellalign{t} + \renewcommand\arraystretch{1} + \setlength{\tabcolsep}{3pt} + \begin{tabularx}{\linewidth}{@{}>{\raggedright\arraybackslash}l>{\centering\arraybackslash}X>{\centering\arraybackslash}X} + \toprule + & \multicolumn{1}{c}{Model A} & \multicolumn{1}{c}{Model B} \\ + \cmidrule(lr){2-2} \cmidrule(lr){3-3} + & (1) & (2) \\ + \midrule + \addlinespace[1ex] + X1 & \makecell{-0.95 \\ (0.066)} & \makecell{-0.924 \\ (0.056)} \\ + \addlinespace[0.5ex] + \addlinespace[0.5ex] + X2 & \makecell{-0.174 \\ (0.018)} & \makecell{-0.174 \\ (0.015)} \\ + \addlinespace[0.5ex] + \midrule + \addlinespace[1ex] + f1 & x & x \\ + \addlinespace[0.5ex] + \addlinespace[0.5ex] + f2 & - & x \\ + \addlinespace[0.5ex] + \midrule + \addlinespace[1ex] + Observations & 997 & 997 \\ + \addlinespace[0.5ex] + \addlinespace[0.5ex] + $R^2$ & 0.489 & 0.659 \\ + \addlinespace[0.5ex] + \bottomrule + \end{tabularx} + \endgroup + \noindent\begin{minipage}{\linewidth}\smallskip\footnotesize + Format of coefficient cell: Coefficient (Std. Error)\end{minipage} + + \end{threeparttable} + ''' +# --- +# name: TestEtableTex.test_tex_with_model_heads_hd + ''' + \begin{threeparttable} + \begingroup + \renewcommand\cellalign{t} + \renewcommand\arraystretch{1} + \setlength{\tabcolsep}{3pt} + \begin{tabularx}{\linewidth}{@{}>{\raggedright\arraybackslash}l>{\centering\arraybackslash}X>{\centering\arraybackslash}X} + \toprule + & \multicolumn{1}{c}{Model A} & \multicolumn{1}{c}{Model B} \\ + \cmidrule(lr){2-2} \cmidrule(lr){3-3} + & \multicolumn{2}{c}{Y} \\ + \cmidrule(lr){2-3} + & (1) & (2) \\ + \midrule + \addlinespace[1ex] + X1 & \makecell{-0.95 \\ (0.066)} & \makecell{-0.924 \\ (0.056)} \\ + \addlinespace[0.5ex] + \addlinespace[0.5ex] + X2 & \makecell{-0.174 \\ (0.018)} & \makecell{-0.174 \\ (0.015)} \\ + \addlinespace[0.5ex] + \midrule + \addlinespace[1ex] + f1 & x & x \\ + \addlinespace[0.5ex] + \addlinespace[0.5ex] + f2 & - & x \\ + \addlinespace[0.5ex] + \midrule + \addlinespace[1ex] + Observations & 997 & 997 \\ + \addlinespace[0.5ex] + \addlinespace[0.5ex] + $R^2$ & 0.489 & 0.659 \\ + \addlinespace[0.5ex] + \bottomrule + \end{tabularx} + \endgroup + \noindent\begin{minipage}{\linewidth}\smallskip\footnotesize + Format of coefficient cell: Coefficient (Std. Error)\end{minipage} + + \end{threeparttable} + ''' +# --- +# name: TestEtableTex.test_tex_with_notes + ''' + \begin{threeparttable} + \begingroup + \renewcommand\cellalign{t} + \renewcommand\arraystretch{1} + \setlength{\tabcolsep}{3pt} + \begin{tabularx}{\linewidth}{@{}>{\raggedright\arraybackslash}l>{\centering\arraybackslash}X>{\centering\arraybackslash}X} + \toprule + & \multicolumn{2}{c}{Y} \\ + \cmidrule(lr){2-3} + & (1) & (2) \\ + \midrule + \addlinespace[1ex] + X1 & \makecell{-0.95 \\ (0.066)} & \makecell{-0.924 \\ (0.056)} \\ + \addlinespace[0.5ex] + \addlinespace[0.5ex] + X2 & \makecell{-0.174 \\ (0.018)} & \makecell{-0.174 \\ (0.015)} \\ + \addlinespace[0.5ex] + \midrule + \addlinespace[1ex] + f1 & x & x \\ + \addlinespace[0.5ex] + \addlinespace[0.5ex] + f2 & - & x \\ + \addlinespace[0.5ex] + \midrule + \addlinespace[1ex] + Observations & 997 & 997 \\ + \addlinespace[0.5ex] + \addlinespace[0.5ex] + $R^2$ & 0.489 & 0.659 \\ + \addlinespace[0.5ex] + \bottomrule + \end{tabularx} + \endgroup + \noindent\begin{minipage}{\linewidth}\smallskip\footnotesize + Custom notes here.\end{minipage} + + \end{threeparttable} + ''' +# --- +# name: TestGelbachAdvancedParams.test_add_notes + ''' +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Initial DifferenceAdjusted DifferenceExplained Difference
Levels (units)
x14.5440.9713.573
x21--1.937
x22--0.454
x23--1.181
Share of Full Effect
x11.0000.2140.786
x21--0.426
x22--0.100
x23--0.260
Share of Explained Effect
x1--1.000
x21--0.542
x22--0.127
x23--0.331
+ Decomposition variable: x1. + Col 1: Raw Difference - Coefficient on x1 in short regression . + Col 2: Adjusted Difference - Coefficient on x1 in long regression. + Col 3: Explained Difference - Difference in coefficients of x1 in short and long regression. + Panel 1: Levels (units). + Panel 2: Share of Full Effect: Levels normalized by coefficient of the short regression. + Panel 3: Share of Explained Effect: Levels normalized by coefficient of the long regression. + Additional custom note for the table. +
+ +
+ + ''' +# --- +# name: TestGelbachAdvancedParams.test_rgroup_sep_b + ''' +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Initial DifferenceAdjusted DifferenceExplained Difference
Levels (units)
x14.5440.9713.573
x21--1.937
x22--0.454
x23--1.181
Share of Full Effect
x11.0000.2140.786
x21--0.426
x22--0.100
x23--0.260
Share of Explained Effect
x1--1.000
x21--0.542
x22--0.127
x23--0.331
+ Decomposition variable: x1. + Col 1: Raw Difference - Coefficient on x1 in short regression . + Col 2: Adjusted Difference - Coefficient on x1 in long regression. + Col 3: Explained Difference - Difference in coefficients of x1 in short and long regression. + Panel 1: Levels (units). + Panel 2: Share of Full Effect: Levels normalized by coefficient of the short regression. + Panel 3: Share of Explained Effect: Levels normalized by coefficient of the long regression.
+ +
+ + ''' +# --- +# name: TestGelbachAdvancedParams.test_rgroup_sep_none + ''' +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Initial DifferenceAdjusted DifferenceExplained Difference
Levels (units)
x14.5440.9713.573
x21--1.937
x22--0.454
x23--1.181
Share of Full Effect
x11.0000.2140.786
x21--0.426
x22--0.100
x23--0.260
Share of Explained Effect
x1--1.000
x21--0.542
x22--0.127
x23--0.331
+ Decomposition variable: x1. + Col 1: Raw Difference - Coefficient on x1 in short regression . + Col 2: Adjusted Difference - Coefficient on x1 in long regression. + Col 3: Explained Difference - Difference in coefficients of x1 in short and long regression. + Panel 1: Levels (units). + Panel 2: Share of Full Effect: Levels normalized by coefficient of the short regression. + Panel 3: Share of Explained Effect: Levels normalized by coefficient of the long regression.
+ +
+ + ''' +# --- +# name: TestGelbachAdvancedParams.test_rgroup_sep_t + ''' +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Initial DifferenceAdjusted DifferenceExplained Difference
Levels (units)
x14.5440.9713.573
x21--1.937
x22--0.454
x23--1.181
Share of Full Effect
x11.0000.2140.786
x21--0.426
x22--0.100
x23--0.260
Share of Explained Effect
x1--1.000
x21--0.542
x22--0.127
x23--0.331
+ Decomposition variable: x1. + Col 1: Raw Difference - Coefficient on x1 in short regression . + Col 2: Adjusted Difference - Coefficient on x1 in long regression. + Col 3: Explained Difference - Difference in coefficients of x1 in short and long regression. + Panel 1: Levels (units). + Panel 2: Share of Full Effect: Levels normalized by coefficient of the short regression. + Panel 3: Share of Explained Effect: Levels normalized by coefficient of the long regression.
+ +
+ + ''' +# --- +# name: TestGelbachAdvancedParams.test_rgroup_sep_tb + ''' +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Initial DifferenceAdjusted DifferenceExplained Difference
Levels (units)
x14.5440.9713.573
x21--1.937
x22--0.454
x23--1.181
Share of Full Effect
x11.0000.2140.786
x21--0.426
x22--0.100
x23--0.260
Share of Explained Effect
x1--1.000
x21--0.542
x22--0.127
x23--0.331
+ Decomposition variable: x1. + Col 1: Raw Difference - Coefficient on x1 in short regression . + Col 2: Adjusted Difference - Coefficient on x1 in long regression. + Col 3: Explained Difference - Difference in coefficients of x1 in short and long regression. + Panel 1: Levels (units). + Panel 2: Share of Full Effect: Levels normalized by coefficient of the short regression. + Panel 3: Share of Explained Effect: Levels normalized by coefficient of the long regression.
+ +
+ + ''' +# --- +# name: TestGelbachEtable.test_gelbach_basic_gt + ''' +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Initial DifferenceAdjusted DifferenceExplained Difference
Levels (units)
x14.5440.9713.573
x21--1.937
x22--0.454
x23--1.181
Share of Full Effect
x11.0000.2140.786
x21--0.426
x22--0.100
x23--0.260
Share of Explained Effect
x1--1.000
x21--0.542
x22--0.127
x23--0.331
+ Decomposition variable: x1. + Col 1: Raw Difference - Coefficient on x1 in short regression . + Col 2: Adjusted Difference - Coefficient on x1 in long regression. + Col 3: Explained Difference - Difference in coefficients of x1 in short and long regression. + Panel 1: Levels (units). + Panel 2: Share of Full Effect: Levels normalized by coefficient of the short regression. + Panel 3: Share of Explained Effect: Levels normalized by coefficient of the long regression.
+ +
+ + ''' +# --- +# name: TestGelbachEtable.test_gelbach_df + ''' + Initial Difference Adjusted Difference Explained Difference + Levels (units) x1 4.544 0.971 3.573 + x21 - - 1.937 + x22 - - 0.454 + x23 - - 1.181 + Share of Full Effect x1 1.000 0.214 0.786 + x21 - - 0.426 + x22 - - 0.100 + x23 - - 0.260 + Share of Explained Effect x1 - - 1.000 + x21 - - 0.542 + x22 - - 0.127 + x23 - - 0.331 + ''' +# --- +# name: TestGelbachEtable.test_gelbach_levels_panel + ''' +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Initial DifferenceAdjusted DifferenceExplained Difference
Levels (units)
x14.5440.9713.573
x21--1.937
x22--0.454
x23--1.181
+ Decomposition variable: x1. + Col 1: Raw Difference - Coefficient on x1 in short regression . + Col 2: Adjusted Difference - Coefficient on x1 in long regression. + Col 3: Explained Difference - Difference in coefficients of x1 in short and long regression. + Panel 1: Levels (units).
+ +
+ + ''' +# --- +# name: TestGelbachEtable.test_gelbach_share_explained_panel + ''' +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Initial DifferenceAdjusted DifferenceExplained Difference
Share of Explained Effect
x1--1.000
x21--0.542
x22--0.127
x23--0.331
+ Decomposition variable: x1. + Col 1: Raw Difference - Coefficient on x1 in short regression . + Col 2: Adjusted Difference - Coefficient on x1 in long regression. + Col 3: Explained Difference - Difference in coefficients of x1 in short and long regression. + Panel 1: Share of Explained Effect: Levels normalized by coefficient of the long regression.
+ +
+ + ''' +# --- +# name: TestGelbachEtable.test_gelbach_share_full_panel + ''' +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Initial DifferenceAdjusted DifferenceExplained Difference
Share of Full Effect
x11.0000.2140.786
x21--0.426
x22--0.100
x23--0.260
+ Decomposition variable: x1. + Col 1: Raw Difference - Coefficient on x1 in short regression . + Col 2: Adjusted Difference - Coefficient on x1 in long regression. + Col 3: Explained Difference - Difference in coefficients of x1 in short and long regression. + Panel 1: Share of Full Effect: Levels normalized by coefficient of the short regression.
+ +
+ + ''' +# --- +# name: TestGelbachEtable.test_gelbach_tex + ''' + \begin{threeparttable} + \begingroup + \renewcommand\cellalign{t} + \renewcommand\arraystretch{1} + \setlength{\tabcolsep}{3pt} + \begin{tabularx}{\linewidth}{@{}>{\raggedright\arraybackslash}l>{\centering\arraybackslash}X>{\centering\arraybackslash}X>{\centering\arraybackslash}X} + \toprule + & Initial Difference & Adjusted Difference & Explained Difference \\ + \midrule + \emph{Levels (units)} \\ + \addlinespace[0.5ex] + \addlinespace[1ex] + x1 & 4.544 & 0.971 & 3.573 \\ + \addlinespace[0.5ex] + \addlinespace[0.5ex] + x21 & - & - & 1.937 \\ + \addlinespace[0.5ex] + \addlinespace[0.5ex] + x22 & - & - & 0.454 \\ + \addlinespace[0.5ex] + \addlinespace[0.5ex] + x23 & - & - & 1.181 \\ + \addlinespace[0.5ex] + \midrule + \emph{Share of Full Effect} \\ + \addlinespace[0.5ex] + \addlinespace[1ex] + x1 & 1.000 & 0.214 & 0.786 \\ + \addlinespace[0.5ex] + \addlinespace[0.5ex] + x21 & - & - & 0.426 \\ + \addlinespace[0.5ex] + \addlinespace[0.5ex] + x22 & - & - & 0.100 \\ + \addlinespace[0.5ex] + \addlinespace[0.5ex] + x23 & - & - & 0.260 \\ + \addlinespace[0.5ex] + \midrule + \emph{Share of Explained Effect} \\ + \addlinespace[0.5ex] + \addlinespace[1ex] + x1 & - & - & 1.000 \\ + \addlinespace[0.5ex] + \addlinespace[0.5ex] + x21 & - & - & 0.542 \\ + \addlinespace[0.5ex] + \addlinespace[0.5ex] + x22 & - & - & 0.127 \\ + \addlinespace[0.5ex] + \addlinespace[0.5ex] + x23 & - & - & 0.331 \\ + \addlinespace[0.5ex] + \bottomrule + \end{tabularx} + \endgroup + \noindent\begin{minipage}{\linewidth}\smallskip\footnotesize + + Decomposition variable: x1. + Col 1: Raw Difference - Coefficient on x1 in short regression . + Col 2: Adjusted Difference - Coefficient on x1 in long regression. + Col 3: Explained Difference - Difference in coefficients of x1 in short and long regression. + Panel 1: Levels (units). + Panel 2: Share of Full Effect: Levels normalized by coefficient of the short regression. + Panel 3: Share of Explained Effect: Levels normalized by coefficient of the long regression.\end{minipage} + + \end{threeparttable} + ''' +# --- +# name: TestGelbachEtable.test_gelbach_with_caption + ''' +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Gelbach Decomposition Results
Initial DifferenceAdjusted DifferenceExplained Difference
Levels (units)
x14.5440.9713.573
x21--1.937
x22--0.454
x23--1.181
Share of Full Effect
x11.0000.2140.786
x21--0.426
x22--0.100
x23--0.260
Share of Explained Effect
x1--1.000
x21--0.542
x22--0.127
x23--0.331
+ Decomposition variable: x1. + Col 1: Raw Difference - Coefficient on x1 in short regression . + Col 2: Adjusted Difference - Coefficient on x1 in long regression. + Col 3: Explained Difference - Difference in coefficients of x1 in short and long regression. + Panel 1: Levels (units). + Panel 2: Share of Full Effect: Levels normalized by coefficient of the short regression. + Panel 3: Share of Explained Effect: Levels normalized by coefficient of the long regression.
+ +
+ + ''' +# --- +# name: TestGelbachEtable.test_gelbach_with_column_heads + ''' +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
TotalDirectMediated
Levels (units)
x14.5440.9713.573
x21--1.937
x22--0.454
x23--1.181
Share of Full Effect
x11.0000.2140.786
x21--0.426
x22--0.100
x23--0.260
Share of Explained Effect
x1--1.000
x21--0.542
x22--0.127
x23--0.331
+ Decomposition variable: x1. + Col 1: Raw Difference - Coefficient on x1 in short regression . + Col 2: Adjusted Difference - Coefficient on x1 in long regression. + Col 3: Explained Difference - Difference in coefficients of x1 in short and long regression. + Panel 1: Levels (units). + Panel 2: Share of Full Effect: Levels normalized by coefficient of the short regression. + Panel 3: Share of Explained Effect: Levels normalized by coefficient of the long regression.
+ +
+ + ''' +# --- +# name: TestGelbachEtable.test_gelbach_with_panel_heads + ''' +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Initial DifferenceAdjusted DifferenceExplained Difference
Absolute Values
x14.5440.9713.573
x21--1.937
x22--0.454
x23--1.181
Share of Total
x11.0000.2140.786
x21--0.426
x22--0.100
x23--0.260
Share of Explained
x1--1.000
x21--0.542
x22--0.127
x23--0.331
+ Decomposition variable: x1. + Col 1: Raw Difference - Coefficient on x1 in short regression . + Col 2: Adjusted Difference - Coefficient on x1 in long regression. + Col 3: Explained Difference - Difference in coefficients of x1 in short and long regression. + Panel 1: Levels (units). + Panel 2: Share of Full Effect: Levels normalized by coefficient of the short regression. + Panel 3: Share of Explained Effect: Levels normalized by coefficient of the long regression.
+ +
+ + ''' +# --- diff --git a/tests/__snapshots__/test_plots_snapshot.ambr b/tests/__snapshots__/test_plots_snapshot.ambr new file mode 100644 index 000000000..6b962c2b7 --- /dev/null +++ b/tests/__snapshots__/test_plots_snapshot.ambr @@ -0,0 +1,25337 @@ +# serializer version: 1 +# name: TestCoefplotLetsPlot.test_basic + ''' + + + + + + + +
+ + + + ''' +# --- +# name: TestCoefplotLetsPlot.test_coord_flip_false + ''' + + + + + + + +
+ + + + ''' +# --- +# name: TestCoefplotLetsPlot.test_multi_model + ''' + + + + + + + +
+ + + + ''' +# --- +# name: TestCoefplotLetsPlot.test_rotate_xticks + ''' + + + + + + + +
+ + + + ''' +# --- +# name: TestCoefplotLetsPlot.test_with_title + ''' + + + + + + + +
+ + + + ''' +# --- +# name: TestCoefplotMatplotlib.test_basic + ''' + + + + + + + + NORMALIZED + image/svg+xml + + + Matplotlib v3.10.8, https://matplotlib.org/ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ''' +# --- +# name: TestCoefplotMatplotlib.test_coord_flip_false + ''' + + + + + + + + NORMALIZED + image/svg+xml + + + Matplotlib v3.10.8, https://matplotlib.org/ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ''' +# --- +# name: TestCoefplotMatplotlib.test_exact_match + ''' + + + + + + + + NORMALIZED + image/svg+xml + + + Matplotlib v3.10.8, https://matplotlib.org/ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ''' +# --- +# name: TestCoefplotMatplotlib.test_joint_both + ''' + + + + + + + + NORMALIZED + image/svg+xml + + + Matplotlib v3.10.8, https://matplotlib.org/ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ''' +# --- +# name: TestCoefplotMatplotlib.test_labels + ''' + + + + + + + + NORMALIZED + image/svg+xml + + + Matplotlib v3.10.8, https://matplotlib.org/ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ''' +# --- +# name: TestCoefplotMatplotlib.test_multi_model + ''' + + + + + + + + NORMALIZED + image/svg+xml + + + Matplotlib v3.10.8, https://matplotlib.org/ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ''' +# --- +# name: TestCoefplotMatplotlib.test_rotate_xticks + ''' + + + + + + + + NORMALIZED + image/svg+xml + + + Matplotlib v3.10.8, https://matplotlib.org/ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ''' +# --- +# name: TestCoefplotMatplotlib.test_with_intercepts + ''' + + + + + + + + NORMALIZED + image/svg+xml + + + Matplotlib v3.10.8, https://matplotlib.org/ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ''' +# --- +# name: TestCoefplotMatplotlib.test_with_keep + ''' + + + + + + + + NORMALIZED + image/svg+xml + + + Matplotlib v3.10.8, https://matplotlib.org/ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ''' +# --- +# name: TestCoefplotMatplotlib.test_with_title + ''' + + + + + + + + NORMALIZED + image/svg+xml + + + Matplotlib v3.10.8, https://matplotlib.org/ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ''' +# --- +# name: TestIplotLetsPlot.test_basic + ''' + + + + + + + +
+ + + + ''' +# --- +# name: TestIplotLetsPlot.test_cat_template + ''' + + + + + + + +
+ + + + ''' +# --- +# name: TestIplotLetsPlot.test_joint + ''' + + + + + + + +
+ + + + ''' +# --- +# name: TestIplotLetsPlot.test_labels + ''' + + + + + + + +
+ + + + ''' +# --- +# name: TestIplotLetsPlot.test_rename_models + ''' + + + + + + + +
+ + + + ''' +# --- +# name: TestIplotMatplotlib.test_alpha + ''' + + + + + + + + NORMALIZED + image/svg+xml + + + Matplotlib v3.10.8, https://matplotlib.org/ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ''' +# --- +# name: TestIplotMatplotlib.test_basic + ''' + + + + + + + + NORMALIZED + image/svg+xml + + + Matplotlib v3.10.8, https://matplotlib.org/ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ''' +# --- +# name: TestIplotMatplotlib.test_cat_template + ''' + + + + + + + + NORMALIZED + image/svg+xml + + + Matplotlib v3.10.8, https://matplotlib.org/ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ''' +# --- +# name: TestIplotMatplotlib.test_drop + ''' + + + + + + + + NORMALIZED + image/svg+xml + + + Matplotlib v3.10.8, https://matplotlib.org/ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ''' +# --- +# name: TestIplotMatplotlib.test_multi_model + ''' + + + + + + + + NORMALIZED + image/svg+xml + + + Matplotlib v3.10.8, https://matplotlib.org/ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ''' +# --- diff --git a/tests/test_etable_snapshot.py b/tests/test_etable_snapshot.py new file mode 100644 index 000000000..7de42cfc7 --- /dev/null +++ b/tests/test_etable_snapshot.py @@ -0,0 +1,538 @@ +"""Snapshot tests for etable() output formats. + +These tests use syrupy to capture and verify the exact output of etable() +across different output formats (gt, tex, md, df, html). + +Run with: pixi run -e snapshot snapshot-test +Update snapshots with: pixi run -e snapshot snapshot-update +""" + +import io +import re +import sys + +import pytest +from syrupy.assertion import SnapshotAssertion + +import pyfixest as pf +from pyfixest.report.summarize import etable +from pyfixest.utils.dgps import gelbach_data +from pyfixest.utils.utils import get_data + + +def normalize_gt_html(html: str) -> str: + """Normalize Great Tables HTML by replacing dynamic IDs with a constant. + + Great Tables generates random IDs like 'ypgifbnuug' for each table, + which causes snapshot tests to fail. This function replaces them with + a constant ID 'gt_table' for stable comparisons. + """ + # Find the dynamic ID pattern (10 lowercase letters) + pattern = r'id="([a-z]{10})"' + match = re.search(pattern, html) + if match: + dynamic_id = match.group(1) + # Replace all occurrences of the dynamic ID + html = html.replace(dynamic_id, "gt_table") + return html + + +# ============================================================================ +# Fixtures +# ============================================================================ + + +@pytest.fixture +def basic_models(): + """Create basic models for snapshot testing.""" + df = get_data() + fit1 = pf.feols("Y ~ X1 + X2 | f1", data=df) + fit2 = pf.feols("Y ~ X1 + X2 | f1 + f2", data=df) + return [fit1, fit2] + + +@pytest.fixture +def single_model(): + """Create a single model for snapshot testing.""" + df = get_data() + return pf.feols("Y ~ X1 + X2 | f1", data=df) + + +@pytest.fixture +def iv_model(): + """Create an IV model for snapshot testing.""" + df = get_data() + return pf.feols("Y ~ X2 | f1 | X1 ~ Z1", data=df) + + +@pytest.fixture +def poisson_model(): + """Create a Poisson model for snapshot testing.""" + df = get_data(model="Fepois") + return pf.fepois("Y ~ X1 + X2 + f2 | f1", data=df, vcov={"CRV1": "f1+f2"}) + + +@pytest.fixture +def gelbach_decomposition(): + """Create Gelbach decomposition for snapshot testing.""" + data = gelbach_data(nobs=200) + fit = pf.feols("y ~ x1 + x21 + x22 + x23", data=data) + gb = fit.decompose(param="x1", seed=98765, reps=25, only_coef=True) + return gb + + +@pytest.fixture +def fixest_multi(): + """Create a FixestMulti object for snapshot testing.""" + df = get_data() + return pf.feols("Y + Y2 ~ X1 + X2 | f1", data=df) + + +@pytest.fixture +def model_with_categoricals(): + """Create a model with categorical variables for cat_template testing.""" + df = get_data() + return pf.feols("Y ~ X1 + C(f1) + C(f2)", data=df) + + +# ============================================================================ +# Helper for markdown output (prints to stdout) +# ============================================================================ + + +def capture_md_output(models, **kwargs): + """Capture markdown output from etable which prints to stdout.""" + captured = io.StringIO() + old_stdout = sys.stdout + sys.stdout = captured + try: + etable(models, type="md", **kwargs) + finally: + sys.stdout = old_stdout + return captured.getvalue() + + +# ============================================================================ +# Snapshot Tests: Basic etable() - GT format +# ============================================================================ + + +@pytest.mark.snapshot +class TestEtableGt: + """Snapshot tests for etable() with type='gt'.""" + + def test_basic_gt(self, basic_models, snapshot: SnapshotAssertion): + """Test basic GT table output.""" + result = etable(basic_models, type="gt") + assert normalize_gt_html(result.as_raw_html()) == snapshot + + def test_single_model_gt(self, single_model, snapshot: SnapshotAssertion): + """Test GT output with single model.""" + result = etable(single_model, type="gt") + assert normalize_gt_html(result.as_raw_html()) == snapshot + + def test_gt_with_significance_codes( + self, basic_models, snapshot: SnapshotAssertion + ): + """Test GT with custom significance codes.""" + result = etable(basic_models, type="gt", signif_code=[0.01, 0.05, 0.1]) + assert normalize_gt_html(result.as_raw_html()) == snapshot + + def test_gt_with_coef_fmt(self, basic_models, snapshot: SnapshotAssertion): + """Test GT with custom coefficient format.""" + result = etable(basic_models, type="gt", coef_fmt="b (se)\nt [p]") + assert normalize_gt_html(result.as_raw_html()) == snapshot + + def test_gt_with_keep(self, basic_models, snapshot: SnapshotAssertion): + """Test GT with keep parameter.""" + result = etable(basic_models, type="gt", keep=["X1"]) + assert normalize_gt_html(result.as_raw_html()) == snapshot + + def test_gt_with_drop(self, basic_models, snapshot: SnapshotAssertion): + """Test GT with drop parameter.""" + result = etable(basic_models, type="gt", drop=["X2"]) + assert normalize_gt_html(result.as_raw_html()) == snapshot + + def test_gt_with_labels(self, basic_models, snapshot: SnapshotAssertion): + """Test GT with custom labels.""" + result = etable( + basic_models, + type="gt", + labels={"X1": "Variable One", "X2": "Variable Two"}, + felabels={"f1": "Fixed Effect 1", "f2": "Fixed Effect 2"}, + ) + assert normalize_gt_html(result.as_raw_html()) == snapshot + + def test_gt_with_notes(self, basic_models, snapshot: SnapshotAssertion): + """Test GT with custom notes.""" + result = etable(basic_models, type="gt", notes="Custom notes for this table.") + assert normalize_gt_html(result.as_raw_html()) == snapshot + + def test_gt_with_model_heads(self, basic_models, snapshot: SnapshotAssertion): + """Test GT with custom model headers.""" + result = etable( + basic_models, type="gt", model_heads=["Model A", "Model B"], head_order="dh" + ) + assert normalize_gt_html(result.as_raw_html()) == snapshot + + +# ============================================================================ +# Snapshot Tests: etable() - LaTeX format +# ============================================================================ + + +@pytest.mark.snapshot +class TestEtableTex: + """Snapshot tests for etable() with type='tex'.""" + + def test_basic_tex(self, basic_models, snapshot: SnapshotAssertion): + """Test basic LaTeX table output.""" + result = etable(basic_models, type="tex") + assert result == snapshot + + def test_tex_with_notes(self, basic_models, snapshot: SnapshotAssertion): + """Test LaTeX with custom notes.""" + result = etable(basic_models, type="tex", notes="Custom notes here.") + assert result == snapshot + + def test_tex_with_model_heads_dh(self, basic_models, snapshot: SnapshotAssertion): + """Test LaTeX with custom model headers (dh order).""" + result = etable( + basic_models, + type="tex", + model_heads=["Model A", "Model B"], + head_order="dh", + ) + assert result == snapshot + + def test_tex_with_model_heads_hd(self, basic_models, snapshot: SnapshotAssertion): + """Test LaTeX with custom model headers (hd order).""" + result = etable( + basic_models, + type="tex", + model_heads=["Model A", "Model B"], + head_order="hd", + ) + assert result == snapshot + + def test_tex_with_model_heads_h(self, basic_models, snapshot: SnapshotAssertion): + """Test LaTeX with custom model headers (h only).""" + result = etable( + basic_models, + type="tex", + model_heads=["Model A", "Model B"], + head_order="h", + ) + assert result == snapshot + + def test_tex_with_model_heads_d(self, basic_models, snapshot: SnapshotAssertion): + """Test LaTeX with custom model headers (d only).""" + result = etable( + basic_models, + type="tex", + model_heads=["Model A", "Model B"], + head_order="d", + ) + assert result == snapshot + + +# ============================================================================ +# Snapshot Tests: etable() - Markdown format +# ============================================================================ + + +@pytest.mark.snapshot +class TestEtableMd: + """Snapshot tests for etable() with type='md'.""" + + def test_basic_md(self, basic_models, snapshot: SnapshotAssertion): + """Test basic markdown output.""" + result = capture_md_output(basic_models) + assert result == snapshot + + def test_md_with_notes(self, basic_models, snapshot: SnapshotAssertion): + """Test markdown with notes.""" + result = capture_md_output(basic_models, notes="Markdown notes.") + assert result == snapshot + + +# ============================================================================ +# Snapshot Tests: etable() - DataFrame format +# ============================================================================ + + +@pytest.mark.snapshot +class TestEtableDf: + """Snapshot tests for etable() with type='df'.""" + + def test_basic_df(self, basic_models, snapshot: SnapshotAssertion): + """Test basic DataFrame output.""" + result = etable(basic_models, type="df") + # Convert to string for stable snapshot comparison + assert result.to_string() == snapshot + + def test_df_with_custom_stats(self, basic_models, snapshot: SnapshotAssertion): + """Test DataFrame with custom statistics.""" + fit1, fit2 = basic_models + result = etable( + models=basic_models, + type="df", + custom_stats={ + "conf_int_lb": [fit1._conf_int[0], fit2._conf_int[0]], + "conf_int_ub": [fit1._conf_int[1], fit2._conf_int[1]], + }, + coef_fmt="b [conf_int_lb, conf_int_ub]", + ) + assert result.to_string() == snapshot + + +# ============================================================================ +# Snapshot Tests: etable() - HTML format +# ============================================================================ + + +@pytest.mark.snapshot +class TestEtableHtml: + """Snapshot tests for etable() with type='html'.""" + + def test_basic_html(self, basic_models, snapshot: SnapshotAssertion): + """Test basic HTML output.""" + result = etable(basic_models, type="html") + assert normalize_gt_html(result) == snapshot + + +# ============================================================================ +# Snapshot Tests: Special Model Types +# ============================================================================ + + +@pytest.mark.snapshot +class TestEtableSpecialModels: + """Snapshot tests for etable() with special model types.""" + + def test_iv_model(self, iv_model, single_model, snapshot: SnapshotAssertion): + """Test etable with IV model.""" + result = etable([iv_model, single_model], type="gt") + assert normalize_gt_html(result.as_raw_html()) == snapshot + + def test_poisson_model(self, poisson_model, snapshot: SnapshotAssertion): + """Test etable with Poisson model.""" + result = etable(poisson_model, type="gt") + assert normalize_gt_html(result.as_raw_html()) == snapshot + + def test_mixed_models( + self, basic_models, poisson_model, snapshot: SnapshotAssertion + ): + """Test etable with mixed model types.""" + result = etable([*basic_models, poisson_model], type="gt") + assert normalize_gt_html(result.as_raw_html()) == snapshot + + +# ============================================================================ +# Snapshot Tests: Advanced etable() Parameters +# ============================================================================ + + +@pytest.mark.snapshot +class TestEtableAdvancedParams: + """Snapshot tests for etable() advanced parameters.""" + + def test_custom_model_stats(self, basic_models, snapshot: SnapshotAssertion): + """Test etable with custom_model_stats.""" + fit1, fit2 = basic_models + result = etable( + basic_models, + type="gt", + custom_model_stats={ + "Mean Y": [fit1._Y.mean(), fit2._Y.mean()], + }, + ) + assert normalize_gt_html(result.as_raw_html()) == snapshot + + def test_exact_match(self, basic_models, snapshot: SnapshotAssertion): + """Test etable with exact_match=True for keep parameter.""" + result = etable(basic_models, type="gt", keep=["X1"], exact_match=True) + assert normalize_gt_html(result.as_raw_html()) == snapshot + + def test_cat_template(self, model_with_categoricals, snapshot: SnapshotAssertion): + """Test etable with cat_template for categorical variable labels.""" + result = etable( + model_with_categoricals, + type="gt", + cat_template="{variable}={value_int}", # Custom format for categorical vars + ) + assert normalize_gt_html(result.as_raw_html()) == snapshot + + def test_show_fe_false(self, basic_models, snapshot: SnapshotAssertion): + """Test etable with show_fe=False to hide fixed effects panel.""" + result = etable(basic_models, type="gt", show_fe=False) + assert normalize_gt_html(result.as_raw_html()) == snapshot + + def test_custom_fe_symbols(self, basic_models, snapshot: SnapshotAssertion): + """Test etable with custom fixed effects symbols.""" + result = etable(basic_models, type="gt", fe_present="Yes", fe_absent="No") + assert normalize_gt_html(result.as_raw_html()) == snapshot + + def test_thousands_sep(self, basic_models, snapshot: SnapshotAssertion): + """Test etable with thousands separator enabled.""" + result = etable(basic_models, type="gt", thousands_sep=True) + assert normalize_gt_html(result.as_raw_html()) == snapshot + + def test_scientific_notation(self, basic_models, snapshot: SnapshotAssertion): + """Test etable with scientific notation disabled.""" + result = etable(basic_models, type="gt", scientific_notation=False) + assert normalize_gt_html(result.as_raw_html()) == snapshot + + def test_digits(self, basic_models, snapshot: SnapshotAssertion): + """Test etable with custom digits for rounding.""" + result = etable(basic_models, type="gt", digits=5) + assert normalize_gt_html(result.as_raw_html()) == snapshot + + +# ============================================================================ +# Snapshot Tests: Model Input Variations +# ============================================================================ + + +@pytest.mark.snapshot +class TestEtableModelInputs: + """Snapshot tests for different model input types to etable().""" + + def test_fixest_multi_direct(self, fixest_multi, snapshot: SnapshotAssertion): + """Test etable with FixestMulti object passed directly.""" + result = etable(fixest_multi, type="gt") + assert normalize_gt_html(result.as_raw_html()) == snapshot + + def test_fixest_multi_method(self, fixest_multi, snapshot: SnapshotAssertion): + """Test FixestMulti.etable() method directly.""" + result = fixest_multi.etable(type="gt") + assert normalize_gt_html(result.as_raw_html()) == snapshot + + def test_fixest_multi_to_list(self, fixest_multi, snapshot: SnapshotAssertion): + """Test etable with FixestMulti.to_list() as input.""" + result = etable(fixest_multi.to_list(), type="gt") + assert normalize_gt_html(result.as_raw_html()) == snapshot + + def test_explicit_model_list(self, snapshot: SnapshotAssertion): + """Test etable with explicit list of different models.""" + df = get_data() + fit1 = pf.feols("Y ~ X1", data=df) + fit2 = pf.feols("Y ~ X1 + X2", data=df) + fit3 = pf.feols("Y ~ X1 + X2 | f1", data=df) + result = etable([fit1, fit2, fit3], type="gt") + assert normalize_gt_html(result.as_raw_html()) == snapshot + + +# ============================================================================ +# Snapshot Tests: GelbachDecomposition.etable() +# ============================================================================ + + +@pytest.mark.snapshot +class TestGelbachEtable: + """Snapshot tests for GelbachDecomposition.etable().""" + + def test_gelbach_basic_gt(self, gelbach_decomposition, snapshot: SnapshotAssertion): + """Test basic Gelbach decomposition table.""" + result = gelbach_decomposition.etable(type="gt", digits=3) + assert normalize_gt_html(result.as_raw_html()) == snapshot + + def test_gelbach_levels_panel( + self, gelbach_decomposition, snapshot: SnapshotAssertion + ): + """Test Gelbach with levels panel only.""" + result = gelbach_decomposition.etable(panels="levels", type="gt", digits=3) + assert normalize_gt_html(result.as_raw_html()) == snapshot + + def test_gelbach_share_full_panel( + self, gelbach_decomposition, snapshot: SnapshotAssertion + ): + """Test Gelbach with share_full panel only.""" + result = gelbach_decomposition.etable(panels="share_full", type="gt", digits=3) + assert normalize_gt_html(result.as_raw_html()) == snapshot + + def test_gelbach_share_explained_panel( + self, gelbach_decomposition, snapshot: SnapshotAssertion + ): + """Test Gelbach with share_explained panel only.""" + result = gelbach_decomposition.etable( + panels="share_explained", type="gt", digits=3 + ) + assert normalize_gt_html(result.as_raw_html()) == snapshot + + def test_gelbach_with_caption( + self, gelbach_decomposition, snapshot: SnapshotAssertion + ): + """Test Gelbach with custom caption.""" + result = gelbach_decomposition.etable( + caption="Gelbach Decomposition Results", type="gt", digits=3 + ) + assert normalize_gt_html(result.as_raw_html()) == snapshot + + def test_gelbach_with_column_heads( + self, gelbach_decomposition, snapshot: SnapshotAssertion + ): + """Test Gelbach with custom column headers.""" + result = gelbach_decomposition.etable( + column_heads=["Total", "Direct", "Mediated"], type="gt", digits=3 + ) + assert normalize_gt_html(result.as_raw_html()) == snapshot + + def test_gelbach_with_panel_heads( + self, gelbach_decomposition, snapshot: SnapshotAssertion + ): + """Test Gelbach with custom panel headers.""" + result = gelbach_decomposition.etable( + panels="all", + panel_heads=["Absolute Values", "Share of Total", "Share of Explained"], + type="gt", + digits=3, + ) + assert normalize_gt_html(result.as_raw_html()) == snapshot + + def test_gelbach_tex(self, gelbach_decomposition, snapshot: SnapshotAssertion): + """Test Gelbach decomposition LaTeX output.""" + result = gelbach_decomposition.etable(type="tex", digits=3) + assert result == snapshot + + def test_gelbach_df(self, gelbach_decomposition, snapshot: SnapshotAssertion): + """Test Gelbach decomposition DataFrame output.""" + result = gelbach_decomposition.etable(type="df", digits=3) + assert result.to_string() == snapshot + + +# ============================================================================ +# Snapshot Tests: GelbachDecomposition Advanced Parameters +# ============================================================================ + + +@pytest.mark.snapshot +class TestGelbachAdvancedParams: + """Snapshot tests for GelbachDecomposition.etable() advanced parameters.""" + + def test_rgroup_sep_tb(self, gelbach_decomposition, snapshot: SnapshotAssertion): + """Test Gelbach with rgroup_sep='tb' (top and bottom separators).""" + result = gelbach_decomposition.etable(type="gt", digits=3, rgroup_sep="tb") + assert normalize_gt_html(result.as_raw_html()) == snapshot + + def test_rgroup_sep_t(self, gelbach_decomposition, snapshot: SnapshotAssertion): + """Test Gelbach with rgroup_sep='t' (top separator only).""" + result = gelbach_decomposition.etable(type="gt", digits=3, rgroup_sep="t") + assert normalize_gt_html(result.as_raw_html()) == snapshot + + def test_rgroup_sep_b(self, gelbach_decomposition, snapshot: SnapshotAssertion): + """Test Gelbach with rgroup_sep='b' (bottom separator only).""" + result = gelbach_decomposition.etable(type="gt", digits=3, rgroup_sep="b") + assert normalize_gt_html(result.as_raw_html()) == snapshot + + def test_rgroup_sep_none(self, gelbach_decomposition, snapshot: SnapshotAssertion): + """Test Gelbach with rgroup_sep='' (no separators).""" + result = gelbach_decomposition.etable(type="gt", digits=3, rgroup_sep="") + assert normalize_gt_html(result.as_raw_html()) == snapshot + + def test_add_notes(self, gelbach_decomposition, snapshot: SnapshotAssertion): + """Test Gelbach with add_notes parameter.""" + result = gelbach_decomposition.etable( + type="gt", digits=3, add_notes="Additional custom note for the table." + ) + assert normalize_gt_html(result.as_raw_html()) == snapshot diff --git a/tests/test_plots.py b/tests/test_plots.py deleted file mode 100644 index b6769c364..000000000 --- a/tests/test_plots.py +++ /dev/null @@ -1,342 +0,0 @@ -from unittest.mock import patch - -import matplotlib -import pandas as pd -import pytest - -import pyfixest as pf -from pyfixest.estimation.estimation import feols -from pyfixest.report.visualize import _HAS_LETS_PLOT, coefplot, iplot, set_figsize -from pyfixest.utils.utils import get_data - -matplotlib.use("Agg") # Use a non-interactive backend - - -@pytest.fixture -def data(): - data = get_data() - data["f2"] = pd.Categorical(data["f2"]) - return data - - -@pytest.fixture -def fit1(data): - return feols(fml="Y ~ i(f2, X1) | f1", data=data, vcov="iid") - - -@pytest.fixture -def fit2(data): - return feols(fml="Y ~ i(f2, X1) | f2", data=data, vcov="iid") - - -@pytest.fixture -def fit3(data): - return feols(fml="Y ~ i(f2, X1, ref=1.0)", data=data, vcov="iid") - - -@pytest.fixture -def fit4(data): - return feols(fml="Y ~ i(f2)", data=data, vcov="iid") - - -@pytest.fixture -def fit_multi(data): - return feols(fml="Y + Y2 ~ i(f2, X1)", data=data) - - -@pytest.mark.extended -@pytest.mark.parametrize( - argnames="figsize", - argvalues=[(10, 6), None], -) -@pytest.mark.parametrize( - argnames="plot_backend", - argvalues=["lets_plot", "matplotlib"], - ids=["lets_plot", "matplotlib"], -) -def test_set_figsize(figsize, plot_backend): - if plot_backend == "lets_plot" and not _HAS_LETS_PLOT: - pytest.skip("lets-plot is not installed") - - figsize_not_none = set_figsize(figsize, plot_backend) - - if figsize is None: - if plot_backend == "lets_plot": - assert figsize_not_none == (500, 300) - elif plot_backend == "matplotlib": - assert figsize_not_none == (10, 6) - else: - assert figsize_not_none == figsize - - -@pytest.mark.extended -def test_set_figsize_not_none_bad_backend(): - figsize_not_none = set_figsize((10, 6), "bad_backend") - assert figsize_not_none == (10, 6) - - -@pytest.mark.extended -def test_set_figsize_none_bad_backend(): - with pytest.raises( - ValueError, match=r"plot_backend must be either 'lets_plot' or 'matplotlib'\." - ): - set_figsize(None, "bad_backend") - - -@pytest.mark.parametrize( - argnames="plot_backend", - argvalues=["lets_plot", "matplotlib"], - ids=["lets_plot", "matplotlib"], -) -@pytest.mark.parametrize( - argnames="figsize", argvalues=[(10, 6), None], ids=["figsize", "no_figsize"] -) -@pytest.mark.parametrize( - argnames="yintercept", argvalues=[1.0, None], ids=["yintercept", "no_yintercept"] -) -@pytest.mark.parametrize( - argnames="xintercept", argvalues=[2.0, None], ids=["xintercept", "no_xintercept"] -) -@pytest.mark.parametrize( - argnames="drop", argvalues=[None, "T.12"], ids=["drop", "no_drop"] -) -@pytest.mark.parametrize( - argnames="title", argvalues=[None, "Title"], ids=["no_title", "title"] -) -@pytest.mark.parametrize( - argnames="coord_flip", argvalues=[True, False], ids=["coord_flip", "no_coord_flip"] -) -@pytest.mark.parametrize( - argnames="labels", - argvalues=[None, {"f2": "F2", "X1": "1x"}], - ids=["no_labels", "labels"], -) -@pytest.mark.extended -def test_iplot( - fit1, - fit2, - fit3, - fit4, - fit_multi, - plot_backend, - figsize, - yintercept, - xintercept, - drop, - title, - coord_flip, - labels, -): - if plot_backend == "lets_plot" and not _HAS_LETS_PLOT: - pytest.skip("lets-plot is not installed") - - plot_kwargs = { - "plot_backend": plot_backend, - "figsize": figsize, - "yintercept": yintercept, - "xintercept": xintercept, - "drop": drop, - "title": title, - "coord_flip": coord_flip, - "labels": labels, - } - - fit1.iplot(**plot_kwargs) - fit2.iplot(**plot_kwargs) - fit3.iplot(**plot_kwargs) - fit4.iplot(**plot_kwargs) - fit_multi.iplot(**plot_kwargs) - - iplot(fit1, **plot_kwargs) - iplot([fit1, fit2], **plot_kwargs) - - -@pytest.mark.extended -def test_iplot_error(data): - with pytest.raises(ValueError): - fit4 = feols(fml="Y ~ X1", data=data, vcov="iid") - fit4.iplot() - iplot(fit4) - - -@pytest.mark.parametrize( - argnames="plot_backend", - argvalues=["lets_plot", "matplotlib"], - ids=["lets_plot", "matplotlib"], -) -@pytest.mark.parametrize( - argnames="figsize", argvalues=[(10, 6), None], ids=["figsize", "no_figsize"] -) -@pytest.mark.parametrize( - argnames="yintercept", argvalues=[1.0, None], ids=["yintercept", "no_yintercept"] -) -@pytest.mark.parametrize( - argnames="xintercept", argvalues=[2.0, None], ids=["xintercept", "no_xintercept"] -) -@pytest.mark.parametrize( - argnames="keep", argvalues=[None, "X"], ids=["keep", "no_keep"] -) -@pytest.mark.parametrize( - argnames="drop", argvalues=[None, "X"], ids=["drop", "no_drop"] -) -@pytest.mark.parametrize( - argnames="title", argvalues=[None, "Title"], ids=["no_title", "title"] -) -@pytest.mark.parametrize( - argnames="coord_flip", argvalues=[True, False], ids=["coord_flip", "no_coord_flip"] -) -@pytest.mark.parametrize( - argnames="labels", - argvalues=[None, {"f2": "F2", "X1": "1x"}], - ids=["no_labels", "labels"], -) -@pytest.mark.extended -def test_coefplot( - fit1, - fit2, - fit3, - fit4, - fit_multi, - plot_backend, - figsize, - yintercept, - xintercept, - keep, - drop, - title, - coord_flip, - labels, -): - if plot_backend == "lets_plot" and not _HAS_LETS_PLOT: - pytest.skip("lets-plot is not installed") - - plot_kwargs = { - "plot_backend": plot_backend, - "figsize": figsize, - "yintercept": yintercept, - "xintercept": xintercept, - "keep": keep, - "drop": drop, - "title": title, - "coord_flip": coord_flip, - "labels": labels, - } - - fit1.coefplot(**plot_kwargs) - fit2.coefplot(**plot_kwargs) - fit3.coefplot(**plot_kwargs) - fit4.coefplot(**plot_kwargs) - coefplot(fit1, **plot_kwargs) - coefplot([fit1, fit2], **plot_kwargs) - fit_multi.coefplot(**plot_kwargs) - - -@pytest.mark.extended -@patch("pyfixest.report.visualize._coefplot_matplotlib") -def test_coefplot_default_figsize_matplotlib(_coefplot_matplotlib_mock, fit1, data): - coefplot(fit1, plot_backend="matplotlib") - _, kwargs = _coefplot_matplotlib_mock.call_args - assert kwargs.get("figsize") == (10, 6) - - -@pytest.mark.extended -@patch("pyfixest.report.visualize._coefplot_matplotlib") -def test_coefplot_non_default_figsize_matplotlib(_coefplot_matplotlib_mock, fit1, data): - coefplot(fit1, figsize=(12, 7), plot_backend="matplotlib") - _, kwargs = _coefplot_matplotlib_mock.call_args - assert kwargs.get("figsize") == (12, 7) - - -@pytest.mark.extended -@patch("pyfixest.report.visualize._coefplot_lets_plot") -def test_coefplot_default_figsize_lets_plot(_coefplot_lets_plot_mock, fit1, data): - if not _HAS_LETS_PLOT: - pytest.skip("lets-plot is not installed") - - coefplot(fit1, plot_backend="lets_plot") - _, kwargs = _coefplot_lets_plot_mock.call_args - assert kwargs.get("figsize") == (500, 300) - - -@pytest.mark.extended -@patch("pyfixest.report.visualize._coefplot_lets_plot") -def test_coefplot_non_default_figsize_lets_plot(_coefplot_lets_plot_mock, fit1, data): - if not _HAS_LETS_PLOT: - pytest.skip("lets-plot is not installed") - - coefplot(fit1, figsize=(600, 400), plot_backend="lets_plot") - _, kwargs = _coefplot_lets_plot_mock.call_args - assert kwargs.get("figsize") == (600, 400) - - -def test_rename_models(): - # Skip the entire test if lets-plot is not installed - # This is because the default backend is lets-plot if available - if not _HAS_LETS_PLOT: - pytest.skip("lets-plot is not installed") - - df = pf.get_data() - fit1 = pf.feols("Y ~ i(f1)", data=df) - fit2 = pf.feols("Y ~ i(f1) + f2", data=df) - - pf.iplot( - models=[fit1, fit2], - rename_models={"Y~i(f1)": "Model 1", "Y~i(f1)+f2": "Model 2"}, - ) - - pf.coefplot( - models=[fit1, fit2], - rename_models={"Y~i(f1)": "Model 1", "Y~i(f1)+f2": "Model 2"}, - ) - - fit_multi = pf.feols("Y ~ sw(f1, f2)", data=df) - fit_multi.coefplot(rename_models={"Y~f1": "Model 1", "Y~f2": "Model 2"}) - - pf.coefplot(models=[fit1], rename_models={"Y~i(f1)": "Model 1"}, joint=True) - - pf.coefplot(models=[fit1], rename_models={"Y~i(f1)": "Model 1"}, joint="both") - - with pytest.warns( - UserWarning, - match="The following model names specified in rename_models are not found in the models", - ): - coefplot(models=[fit1], rename_models={"Y~a": "Model 1"}, joint="bad") - - -def test_rename_models_matplotlib(): - """Test rename_models functionality with matplotlib backend.""" - df = pf.get_data() - fit1 = pf.feols("Y ~ i(f1)", data=df) - fit2 = pf.feols("Y ~ i(f1) + f2", data=df) - - pf.iplot( - models=[fit1, fit2], - rename_models={"Y~i(f1)": "Model 1", "Y~i(f1)+f2": "Model 2"}, - plot_backend="matplotlib", - ) - - pf.coefplot( - models=[fit1, fit2], - rename_models={"Y~i(f1)": "Model 1", "Y~i(f1)+f2": "Model 2"}, - plot_backend="matplotlib", - ) - - fit_multi = pf.feols("Y ~ sw(f1, f2)", data=df) - fit_multi.coefplot( - rename_models={"Y~f1": "Model 1", "Y~f2": "Model 2"}, - plot_backend="matplotlib", - ) - - pf.coefplot( - models=[fit1], - rename_models={"Y~i(f1)": "Model 1"}, - joint=True, - plot_backend="matplotlib", - ) - - pf.coefplot( - models=[fit1], - rename_models={"Y~i(f1)": "Model 1"}, - joint="both", - plot_backend="matplotlib", - ) diff --git a/tests/test_plots_snapshot.py b/tests/test_plots_snapshot.py new file mode 100644 index 000000000..e1174e261 --- /dev/null +++ b/tests/test_plots_snapshot.py @@ -0,0 +1,390 @@ +"""Snapshot tests for coefplot() and iplot() output. + +These tests use syrupy to capture and verify the exact visual output of +coefplot() and iplot() across matplotlib (SVG) and lets_plot (HTML) backends. + +Run with: pixi run -e snapshot snapshot-test +Update snapshots with: pixi run -e snapshot snapshot-update +""" + +import re +from io import BytesIO + +import matplotlib +import matplotlib.pyplot as plt +import pandas as pd +import pytest +from syrupy.assertion import SnapshotAssertion + +from pyfixest.estimation.estimation import feols +from pyfixest.report.visualize import _HAS_LETS_PLOT, coefplot, iplot +from pyfixest.utils.utils import get_data + +matplotlib.use("Agg") # Non-interactive backend for testing + + +# ============================================================================ +# Helper Functions +# ============================================================================ + + +def figure_to_svg(fig: plt.Figure) -> str: + """Convert matplotlib Figure to normalized SVG string.""" + buf = BytesIO() + fig.savefig(buf, format="svg") + buf.seek(0) + svg = buf.read().decode("utf-8") + plt.close(fig) # Clean up + return normalize_svg(svg) + + +def normalize_svg(svg: str) -> str: + """Normalize matplotlib SVG for stable snapshot comparison. + + Removes/normalizes: + - Timestamps in comments and metadata + - Randomly generated path/clip-path IDs (order-preserving replacement) + - Creation date metadata + - Version-specific generator comments + """ + # Remove matplotlib generator comments with version/date + svg = re.sub( + r"", "", svg + ) + + # Normalize date metadata with timestamp (e.g., 2025-12-24T17:12:55.033087) + svg = re.sub(r".*?", "NORMALIZED", svg) + + # Build a mapping of dynamic IDs to stable IDs in order of first appearance + id_mapping = {} + counters = {"clip": 0, "marker": 0, "font": 0, "path": 0} + + def get_stable_id(match): + """Replace dynamic ID with stable ID based on first appearance order.""" + full_id = match.group(1) + if full_id in id_mapping: + return f'id="{id_mapping[full_id]}"' + + # Determine ID type and assign stable name + if full_id.startswith("clip"): + stable = f"clip_{counters['clip']}" + counters["clip"] += 1 + elif full_id.startswith("m") and len(full_id) > 8: + stable = f"marker_{counters['marker']}" + counters["marker"] += 1 + elif full_id.startswith("DejaVu"): + stable = f"font_{counters['font']}" + counters["font"] += 1 + elif full_id.startswith("p") and len(full_id) > 8: + stable = f"path_{counters['path']}" + counters["path"] += 1 + else: + stable = f"id_{len(id_mapping)}" + + id_mapping[full_id] = stable + return f'id="{stable}"' + + # First pass: replace all id="..." definitions + svg = re.sub(r'id="([a-zA-Z][a-zA-Z0-9_-]*)"', get_stable_id, svg) + + # Second pass: replace all references (#id and url(#id)) + for old_id, new_id in id_mapping.items(): + svg = svg.replace(f"#{old_id}", f"#{new_id}") + svg = svg.replace(f'href="#{old_id}"', f'href="#{new_id}"') + + # Normalize other matplotlib-generated IDs (32-char hex) + svg = re.sub(r'id="([a-f0-9]{32})"', 'id="normalized_id"', svg) + + # Normalize image IDs that may vary + svg = re.sub(r'id="image[a-f0-9]+"', 'id="image_normalized"', svg) + + return svg + + +def letsplot_to_html(plot) -> str: + """Convert lets_plot ggplot object to normalized HTML string.""" + if not _HAS_LETS_PLOT: + pytest.skip("lets_plot not installed") + + import os + import tempfile + + from lets_plot import ggsave + + with tempfile.NamedTemporaryFile(suffix=".html", delete=False) as f: + filepath = f.name + try: + ggsave(plot, filepath, iframe=False) + with open(filepath) as f: + html = f.read() + return normalize_letsplot_html(html) + finally: + os.unlink(filepath) + + +def normalize_letsplot_html(html: str) -> str: + """Normalize lets_plot HTML for stable snapshot comparison. + + Removes/normalizes: + - Random element IDs + - Timestamp-based identifiers + - Version strings + """ + # Normalize random IDs in HTML attributes (typically short random strings like "4VqpcV") + html = re.sub(r'id="[a-zA-Z0-9_-]{4,32}"', 'id="lp_normalized"', html) + + # Normalize random IDs in JavaScript getElementById calls + html = re.sub( + r'getElementById\("[a-zA-Z0-9_-]{4,32}"\)', + 'getElementById("lp_normalized")', + html, + ) + + # Normalize data attributes with random values + html = re.sub(r'data-lets-plot-id="[^"]*"', 'data-lets-plot-id="normalized"', html) + + # Remove version-specific references + html = re.sub(r"lets-plot-[0-9.]+", "lets-plot-VERSION", html) + + # Normalize any UUID-like strings + html = re.sub( + r"[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}", + "UUID-NORMALIZED", + html, + ) + + return html + + +# ============================================================================ +# Fixtures +# ============================================================================ + + +@pytest.fixture(scope="module") +def plot_data(): + """Shared data for all plot tests.""" + data = get_data() + data["f2"] = pd.Categorical(data["f2"]) + return data + + +@pytest.fixture(scope="module") +def iplot_model(plot_data): + """Model with interaction variables for iplot.""" + return feols(fml="Y ~ i(f2, X1) | f1", data=plot_data, vcov="iid") + + +@pytest.fixture(scope="module") +def coefplot_model(plot_data): + """Create simple model for coefplot.""" + return feols(fml="Y ~ X1 + X2 | f1", data=plot_data, vcov="iid") + + +@pytest.fixture(scope="module") +def model_pair(plot_data): + """Two models for multi-model plots.""" + fit1 = feols(fml="Y ~ i(f1)", data=plot_data) + fit2 = feols(fml="Y ~ i(f1) + X2", data=plot_data) + return [fit1, fit2] + + +# ============================================================================ +# Coefplot Matplotlib Tests (10 tests) +# ============================================================================ + + +@pytest.mark.snapshot +class TestCoefplotMatplotlib: + """Snapshot tests for coefplot() with matplotlib backend.""" + + def test_basic(self, coefplot_model, snapshot: SnapshotAssertion): + """Basic coefplot with default settings.""" + fig = coefplot(coefplot_model, plot_backend="matplotlib") + assert figure_to_svg(fig) == snapshot + + def test_with_title(self, coefplot_model, snapshot: SnapshotAssertion): + """Coefplot with custom title.""" + fig = coefplot(coefplot_model, plot_backend="matplotlib", title="Custom Title") + assert figure_to_svg(fig) == snapshot + + def test_coord_flip_false(self, coefplot_model, snapshot: SnapshotAssertion): + """Coefplot without coordinate flip.""" + fig = coefplot(coefplot_model, plot_backend="matplotlib", coord_flip=False) + assert figure_to_svg(fig) == snapshot + + def test_with_intercepts(self, coefplot_model, snapshot: SnapshotAssertion): + """Coefplot with reference lines.""" + fig = coefplot( + coefplot_model, plot_backend="matplotlib", yintercept=0, xintercept=2.0 + ) + assert figure_to_svg(fig) == snapshot + + def test_with_keep(self, coefplot_model, snapshot: SnapshotAssertion): + """Coefplot filtering with keep.""" + fig = coefplot(coefplot_model, plot_backend="matplotlib", keep=["X1"]) + assert figure_to_svg(fig) == snapshot + + def test_exact_match(self, coefplot_model, snapshot: SnapshotAssertion): + """Coefplot with exact_match for keep.""" + fig = coefplot( + coefplot_model, plot_backend="matplotlib", keep=["X1"], exact_match=True + ) + assert figure_to_svg(fig) == snapshot + + def test_rotate_xticks(self, coefplot_model, snapshot: SnapshotAssertion): + """Coefplot with rotated labels.""" + fig = coefplot( + coefplot_model, + plot_backend="matplotlib", + rotate_xticks=45, + coord_flip=False, + ) + assert figure_to_svg(fig) == snapshot + + def test_labels(self, coefplot_model, snapshot: SnapshotAssertion): + """Coefplot with custom labels.""" + fig = coefplot( + coefplot_model, + plot_backend="matplotlib", + labels={"X1": "Variable One", "X2": "Variable Two"}, + ) + assert figure_to_svg(fig) == snapshot + + def test_multi_model(self, model_pair, snapshot: SnapshotAssertion): + """Coefplot with multiple models.""" + fig = coefplot(model_pair, plot_backend="matplotlib") + assert figure_to_svg(fig) == snapshot + + def test_joint_both(self, iplot_model, snapshot: SnapshotAssertion): + """Coefplot with joint confidence intervals.""" + fig = coefplot(iplot_model, plot_backend="matplotlib", joint="both", seed=42) + assert figure_to_svg(fig) == snapshot + + +# ============================================================================ +# Iplot Matplotlib Tests (5 tests) +# ============================================================================ + + +@pytest.mark.snapshot +class TestIplotMatplotlib: + """Snapshot tests for iplot() with matplotlib backend.""" + + def test_basic(self, iplot_model, snapshot: SnapshotAssertion): + """Basic iplot with default settings.""" + fig = iplot(iplot_model, plot_backend="matplotlib") + assert figure_to_svg(fig) == snapshot + + def test_cat_template(self, iplot_model, snapshot: SnapshotAssertion): + """Iplot with cat_template.""" + fig = iplot(iplot_model, plot_backend="matplotlib", cat_template="{value}") + assert figure_to_svg(fig) == snapshot + + def test_alpha(self, iplot_model, snapshot: SnapshotAssertion): + """Iplot with 90% confidence intervals.""" + fig = iplot(iplot_model, plot_backend="matplotlib", alpha=0.1) + assert figure_to_svg(fig) == snapshot + + def test_drop(self, iplot_model, snapshot: SnapshotAssertion): + """Iplot with dropped coefficient.""" + fig = iplot(iplot_model, plot_backend="matplotlib", drop="T.12") + assert figure_to_svg(fig) == snapshot + + def test_multi_model(self, model_pair, snapshot: SnapshotAssertion): + """Iplot with multiple models.""" + fig = iplot(model_pair, plot_backend="matplotlib") + assert figure_to_svg(fig) == snapshot + + +# ============================================================================ +# Coefplot lets_plot Tests (5 tests) +# ============================================================================ + + +@pytest.mark.snapshot +class TestCoefplotLetsPlot: + """Snapshot tests for coefplot() with lets_plot backend.""" + + @pytest.fixture(autouse=True) + def skip_if_no_letsplot(self): + """Skip tests if lets_plot is not installed.""" + if not _HAS_LETS_PLOT: + pytest.skip("lets_plot not installed") + + def test_basic(self, coefplot_model, snapshot: SnapshotAssertion): + """Basic coefplot with lets_plot.""" + plot = coefplot(coefplot_model, plot_backend="lets_plot") + assert letsplot_to_html(plot) == snapshot + + def test_with_title(self, coefplot_model, snapshot: SnapshotAssertion): + """Coefplot with title using lets_plot.""" + plot = coefplot(coefplot_model, plot_backend="lets_plot", title="Custom Title") + assert letsplot_to_html(plot) == snapshot + + def test_coord_flip_false(self, coefplot_model, snapshot: SnapshotAssertion): + """Coefplot without coord_flip using lets_plot.""" + plot = coefplot(coefplot_model, plot_backend="lets_plot", coord_flip=False) + assert letsplot_to_html(plot) == snapshot + + def test_multi_model(self, model_pair, snapshot: SnapshotAssertion): + """Coefplot with multiple models using lets_plot.""" + plot = coefplot(model_pair, plot_backend="lets_plot") + assert letsplot_to_html(plot) == snapshot + + def test_rotate_xticks(self, coefplot_model, snapshot: SnapshotAssertion): + """Coefplot with rotated labels using lets_plot.""" + plot = coefplot( + coefplot_model, + plot_backend="lets_plot", + rotate_xticks=45, + coord_flip=False, + ) + assert letsplot_to_html(plot) == snapshot + + +# ============================================================================ +# Iplot lets_plot Tests (5 tests) +# ============================================================================ + + +@pytest.mark.snapshot +class TestIplotLetsPlot: + """Snapshot tests for iplot() with lets_plot backend.""" + + @pytest.fixture(autouse=True) + def skip_if_no_letsplot(self): + """Skip tests if lets_plot is not installed.""" + if not _HAS_LETS_PLOT: + pytest.skip("lets_plot not installed") + + def test_basic(self, iplot_model, snapshot: SnapshotAssertion): + """Basic iplot with lets_plot.""" + plot = iplot(iplot_model, plot_backend="lets_plot") + assert letsplot_to_html(plot) == snapshot + + def test_cat_template(self, iplot_model, snapshot: SnapshotAssertion): + """Iplot with cat_template using lets_plot.""" + plot = iplot( + iplot_model, plot_backend="lets_plot", cat_template="{variable}={value}" + ) + assert letsplot_to_html(plot) == snapshot + + def test_labels(self, iplot_model, snapshot: SnapshotAssertion): + """Iplot with custom labels using lets_plot.""" + plot = iplot(iplot_model, plot_backend="lets_plot", labels={"f2": "Factor 2"}) + assert letsplot_to_html(plot) == snapshot + + def test_joint(self, iplot_model, snapshot: SnapshotAssertion): + """Iplot with joint CIs using lets_plot.""" + plot = iplot(iplot_model, plot_backend="lets_plot", joint=True, seed=42) + assert letsplot_to_html(plot) == snapshot + + def test_rename_models(self, model_pair, snapshot: SnapshotAssertion): + """Iplot with renamed models using lets_plot.""" + plot = iplot( + model_pair, + plot_backend="lets_plot", + rename_models={"Y~i(f1)": "Model A", "Y~i(f1)+X2": "Model B"}, + ) + assert letsplot_to_html(plot) == snapshot diff --git a/tests/texfiles/test.tex b/tests/texfiles/test.tex index 85c14d5fb..770de6af6 100644 --- a/tests/texfiles/test.tex +++ b/tests/texfiles/test.tex @@ -4,6 +4,10 @@ \renewcommand\arraystretch{1} \setlength{\tabcolsep}{3pt} \begin{tabularx}{\linewidth}{@{}>{\raggedright\arraybackslash}X>{\centering\arraybackslash}X>{\centering\arraybackslash}X} +\begingroup +\renewcommand\arraystretch{1} +\setlength{\tabcolsep}{3pt} +\begin{tabularx}{\linewidth}{@{}>{\raggedright\arraybackslash}X>{\centering\arraybackslash}X>{\centering\arraybackslash}X} \toprule & \multicolumn{2}{c}{Y} \\ \cmidrule(lr){2-3} @@ -16,19 +20,34 @@ X2 & \makecell{-0.174*** \\ (0.012)} & \makecell{-0.014 \\ (0.011)} \\ \addlinespace[0.5ex] \addlinespace[0.5ex] +\addlinespace[1ex] +X1 & \makecell{-0.95*** \\ (0.047)} & \makecell{0.004 \\ (0.033)} \\ +\addlinespace[0.5ex] +\addlinespace[0.5ex] +X2 & \makecell{-0.174*** \\ (0.012)} & \makecell{-0.014 \\ (0.011)} \\ +\addlinespace[0.5ex] +\addlinespace[0.5ex] f2 & & \makecell{0.003 \\ (0.004)} \\ \addlinespace[0.5ex] +\addlinespace[0.5ex] \midrule \addlinespace[1ex] +\addlinespace[1ex] f1 & x & x \\ \addlinespace[0.5ex] +\addlinespace[0.5ex] \midrule \addlinespace[1ex] Observations & 1,994 & 996 \\ \addlinespace[0.5ex] \addlinespace[0.5ex] +\addlinespace[1ex] +Observations & 1,994 & 996 \\ +\addlinespace[0.5ex] +\addlinespace[0.5ex] $R^2$ & 0.489 & - \\ \addlinespace[0.5ex] +\addlinespace[0.5ex] \bottomrule \end{tabularx} \endgroup