Repository navigation
deps: bump pypdf from 6.20.1 to 6.21.2 - #131
Closed
dependabot[bot] wants to merge 1 commit into
Closed
dependabot[bot] wants to merge 1 commit into
dependabot[bot] wants to merge 1 commit into
Conversation
Bumps [pypdf](https://github.com/py-pdf/pypdf) from 6.20.1 to 6.21.2. - [Release notes](https://github.com/py-pdf/pypdf/releases) - [Changelog](https://github.com/py-pdf/pypdf/blob/main/CHANGELOG.md) - [Commits](py-pdf/pypdf@6.20.1...6.21.2) --- updated-dependencies: - dependency-name: pypdf dependency-version: 6.21.2 dependency-type: direct:development ... Signed-off-by: dependabot[bot] <support@github.com>
Roam Agent ReviewVerdict: SAFE (risk_level low) blast-radius 0/100 · ai-likelihood 14/100 · rule violations 0 · critique high-severity 0 Verdict: SAFE. All structural signals clean at the configured thresholds. Next steps
Powered by roam-code — Apache 2.0, Local source analysis. Customize thresholds in |
roam-code AnalysisMode: incremental ( Health Score: 82/100 health: Healthy codebase (82/100) — 52 critical issues, focus: god_components Health Metrics
PR Risk
Quality Gate: PASSEDGate expression: SARIF Upload
Full analysis outputhealth{
"_meta": {
"cache_ttl_s": 300,
"cacheable": true,
"index_age_s": 4,
"index_status": {
"dirty_files": 0,
"fresh": false,
"head_commit": "c45d87c80a5b",
"hint": "index latest commit 86236c799e8e != HEAD c45d87c80a5b — git-derived metrics (commits, churn, co-change, weather) may be stale. Run `roam index --force`.",
"indexed_commit": "86236c799e8e"
},
"latency_ms": null,
"response_tokens": 8847,
"roam_version": "14.1.0",
"timestamp": "2026-10-24T01:44:10Z"
},
"actionable_count": 13,
"actionable_cycles": 0,
"agent_contract": {
"confidence": null,
"facts": [
"Healthy codebase (82/100) — 52 critical issues, focus: god_components",
"health score 82",
"tangle ratio 1.1",
"0.0304 propagation cost findings",
"issue count 65"
],
"next_commands": [
"roam debt",
"roam trends --days 30"
],
"risks": []
},
"algebraic_connectivity": null,
"algebraic_connectivity_available": false,
"bottleneck_thresholds": {
"list_limit": 15,
"p70": 41710.5,
"p90": 189987,
"population": 3359,
"utility_multiplier": 1.5
},
"category_severity": {
"bottlenecks": {
"critical": 15,
"info": 0,
"warning": 0
},
"cycles": {
"critical": 0,
"info": 0,
"warning": 0
},
"god_components": {
"critical": 37,
"info": 5,
"warning": 8
},
"layer_violations": {
"critical": 0,
"info": 0,
"warning": 0
}
},
"command": "health",
"cycles_actionable": 0,
"cycles_total": 75,
"framework_filtered": 0,
"god_component_thresholds": {
"list_limit": 50,
"min_degree": 20,
"population": 438
},
"health_score": 82,
"ignored_cycles": 75,
"imported_coverable_lines": 0,
"imported_coverage_files": 0,
"imported_coverage_pct": null,
"imported_covered_lines": 0,
"index_status": {
"dirty_files": 0,
"fresh": false,
"head_commit": "c45d87c80a5b",
"hint": "index latest commit 86236c799e8e != HEAD c45d87c80a5b — git-derived metrics (commits, churn, co-change, weather) may be stale. Run `roam index --force`.",
"indexed_commit": "86236c799e8e"
},
"issue_count": 65,
"list_counts": {
"bottlenecks": 15,
"cycle_break_suggestions": 0,
"cycles": 75,
"god_components": 50,
"layer_violations": 0,
"next_steps": 2,
"score_breakdown": 5
},
"project": "roam-code",
"propagation_cost": 0.0304,
"schema": "roam-envelope-v1",
"schema_version": "1.2.0",
"severity": {
"critical": 52,
"info": 80,
"warning": 8
},
"summary": {
"actionable_cycles": 0,
"algebraic_connectivity": null,
"algebraic_connectivity_available": false,
"category_severity": {
"bottlenecks": {
"critical": 15,
"info": 0,
"warning": 0
},
"cycles": {
"critical": 0,
"info": 0,
"warning": 0
},
"god_components": {
"critical": 37,
"info": 5,
"warning": 8
},
"layer_violations": {
"critical": 0,
"info": 0,
"warning": 0
}
},
"cycles_actionable": 0,
"cycles_definition": "Cycle counts derived from `roam.graph.cycles.find_cycles(G, min_size=2)` on the symbol graph. `cycles_total` = all SCCs of size >= 2; `cycles_actionable` = SCCs spanning >=2 files AND no test files (same-file and test-only cycles are informational). Run `roam health` for the per-cycle breakdown.",
"cycles_total": 75,
"detail_available": true,
"god_components": 50,
"god_components_definition": "God components: symbols where `(in_degree + out_degree) > 20` from the `graph_metrics` table, with utility-aware severity bands (standard >50=CRITICAL >30=WARNING; utility >150=CRITICAL >90=WARNING). Run `roam health` for the per-symbol breakdown. Legacy aliases: `god_objects` (fingerprint), `god_classes` (rules).",
"health_score": 82,
"health_score_definition": "weighted geometric mean (0-100) of 5 sigmoid health factors: tangle_ratio, god_components, bottlenecks, layer_violations, file_health (+coverage if available); computed by roam.quality.health_score.compute_health_score, shared verbatim with the `snapshots` writer so `roam health --baseline` compares like with like.",
"health_score_scope": "legacy_top_candidates",
"ignored_cycles": 75,
"imported_coverage_files": 0,
"imported_coverage_pct": null,
"issue_collection_scope": "top_candidates",
"issue_count": 65,
"partial_success": true,
"preserved_list_truncations": {},
"propagation_cost": 0.0304,
"severity": {
"critical": 52,
"info": 80,
"warning": 8
},
"tangle_ratio": 1.1,
"tangle_ratio_definition": "percent of symbols inside non-trivial SCCs (size >= 2), counting ALL such SCCs, not just actionable ones; higher = more cyclic coupling. `roam fingerprint` reports the identical measurement as a fraction (percent / 100).",
"total_cycles": 75,
"truncated": true,
"truncation_reason": "detail_mode",
"verdict": "Healthy codebase (82/100) — 52 critical issues, focus: god_components",
"warnings_out": [
"health_algebraic_connectivity_warning:RuntimeWarning:algebraic_connectivity compute failed (ModuleNotFoundError): No module named 'numpy'; returning 0.0 sentinel — value is NOT a legitimate disconnected-graph reading",
"health_god_components_list_capped:showing_top_50_of_438",
"health_bottlenecks_list_capped:showing_top_15_of_3359"
]
},
"tangle_ratio": 1.1,
"total_cycles": 75,
"utility_count": 37,
"version": "14.1.0",
"warnings_out": [
"health_algebraic_connectivity_warning:RuntimeWarning:algebraic_connectivity compute failed (ModuleNotFoundError): No module named 'numpy'; returning 0.0 sentinel — value is NOT a legitimate disconnected-graph reading",
"health_god_components_list_capped:showing_top_50_of_438",
"health_bottlenecks_list_capped:showing_top_15_of_3359"
]
}pr-risk{
"_meta": {
"cache_ttl_s": 60,
"cacheable": true,
"index_age_s": 6,
"index_status": {
"dirty_files": 0,
"fresh": false,
"head_commit": "c45d87c80a5b",
"hint": "index latest commit 86236c799e8e != HEAD c45d87c80a5b — git-derived metrics (commits, churn, co-change, weather) may be stale. Run `roam index --force`.",
"indexed_commit": "86236c799e8e"
},
"latency_ms": null,
"response_tokens": 861,
"roam_version": "14.1.0",
"timestamp": "2026-10-24T01:44:12Z"
},
"actor": null,
"agent_contract": {
"confidence": null,
"facts": [
"Moderate risk (30/100) — review recommended (risk_level medium) (driver: test_coverage_low)",
"risk score 30",
"2 risk rank findings",
"1 changed files",
"1 lines added"
],
"next_commands": [],
"risks": [
"pr-risk: moderate (30/100) on 88a19184a56beb1a66ad9cf0d22b4c8ab73a7b4c..HEAD — driver: test_coverage_low"
]
},
"author": null,
"blast_radius_pct": 0,
"bus_factor_risk": 0,
"change_shape": "mixed",
"changed_files": 1,
"closest_historical_pattern": null,
"closest_similarity": 0,
"cluster_spread": 0,
"clusters_touched": 0,
"command": "pr-risk",
"coupling_score": 0,
"dead_code": [],
"dead_exports": 0,
"familiarity": {
"avg_familiarity": 1,
"files": [],
"files_assessed": 0
},
"findings": [
{
"claim": "pr-risk: moderate (30/100) on 88a19184a56beb1a66ad9cf0d22b4c8ab73a7b4c..HEAD — driver: test_coverage_low",
"confidence": "heuristic",
"evidence": {
"actor": null,
"author": null,
"blast_radius_pct": 0,
"bus_factor_risk": 0,
"changed_files_count": 1,
"commit_range": "88a19184a56beb1a66ad9cf0d22b4c8ab73a7b4c..HEAD",
"coupling_score": 0,
"created_at_epoch": 1792806252,
"diff_id": "72bcd16149ae",
"familiarity_risk": 0,
"file_list": [
"pyproject.toml"
],
"hotspot_score": 0,
"label": "88a19184a56beb1a66ad9cf0d22b4c8ab73a7b4c..HEAD",
"lines_added": 1,
"lines_removed": 1,
"minor_risk": 0,
"novelty_score": 0,
"reductive_change": false,
"risk_level": "moderate",
"risk_score": 30,
"staged": false,
"test_coverage_pct": 0,
"top_driver": "test_coverage_low"
},
"finding_id_str": "pr-risk:composite-risk-score:72bcd16149ae",
"kind": "pr-risk:composite-risk-score",
"severity": "medium",
"source_detector": "pr-risk",
"source_version": "1.0.0",
"subject_id": null,
"subject_kind": "commit"
}
],
"hotspot_score": 0,
"label": "88a19184a56beb1a66ad9cf0d22b4c8ab73a7b4c..HEAD",
"layer_spread": 0,
"layers_touched": 0,
"lines_added": 1,
"lines_removed": 1,
"minor_risk": {
"files": [],
"files_assessed": 0,
"minor_files": 0
},
"novelty_score": 0,
"per_file": [
{
"blast": 0,
"churn": 693,
"is_test": false,
"lines_added": 1,
"lines_removed": 1,
"path": "pyproject.toml",
"symbols": 0
}
],
"project": "roam-code",
"reductive_change": false,
"reductive_discount_applied": false,
"risk_level": "moderate",
"risk_level_canonical": "medium",
"risk_rank": 2,
"risk_score": 30,
"schema": "roam-envelope-v1",
"schema_version": "1.2.0",
"suggested_reviewers": [
{
"actor": "Cranot",
"author": "Cranot",
"lines": 492
},
{
"actor": "dependabot[bot]",
"author": "dependabot[bot]",
"lines": 1
}
],
"summary": {
"change_shape": "mixed",
"changed_files": 1,
"findings_count": 1,
"lines_added": 1,
"lines_removed": 1,
"partial_success": false,
"risk_level": "moderate",
"risk_level_canonical": "medium",
"risk_rank": 2,
"risk_score": 30,
"score_classification": "classified",
"verdict": "Moderate risk (30/100) — review recommended (risk_level medium) (driver: test_coverage_low)"
},
"test_coverage_pct": 0,
"total_clusters": 12878,
"total_layers": 38,
"version": "14.1.0",
"warnings_out": []
}roam-code analysis | Commands: |
Author
|
Superseded by #133. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Bumps pypdf from 6.20.1 to 6.21.2.
Release notes
Sourced from pypdf's releases.
Changelog
Sourced from pypdf's changelog.
Commits
37d05f6REL: 6.21.268a0e50SEC: Avoid repeated full file loads (#4240)a3061e3SEC: Limit size of standard xref table (#4239)b7eb7b9BUG: Decode UniGB-UTF16 CMaps as UTF-16BE (#4231)885e743ROB: Reject unsupported key lengths in the /Encrypt dictionary (#4226)b68a335TST: Enable type checking for PageRange tests (#4229)3f9c7f4ROB: Reject negative bfrange source ranges in /ToUnicode CMaps (#4225)85c46abROB: Raise PdfReadError for malformed /ObjStm /N and /First headers (#4216)a91817aBUG: Keep 8-bit DeviceRGB image mode (#4230)b32df1dROB: Validate the /Encrypt dictionary when opening an encrypted file (#4197)Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting
@dependabot rebase.Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR:
@dependabot rebasewill rebase this PR@dependabot recreatewill recreate this PR, overwriting any edits that have been made to it@dependabot show <dependency name> ignore conditionswill show all of the ignore conditions of the specified dependency@dependabot ignore this major versionwill close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)@dependabot ignore this minor versionwill close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)@dependabot ignore this dependencywill close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)You can disable automated security fix PRs for this repo from the Security Alerts page.