{"schema_version":"2","scorer_version":"0.1.0","scoring_version":"prov-5+qual-2+sec-2","generated_at":"2026-11-14T14:52:06.618286Z","repo":{"ref":{"host":"github.com","owner":"noahweidig","name":"tiger-roads-scraper"},"default_branch":"main","clone_url":"https://github.com/noahweidig/tiger-roads-scraper.git","html_url":"https://github.com/noahweidig/tiger-roads-scraper","description":"Convert TIGER Roads into Shapefiles","stars":0,"forks":0,"is_fork":false,"is_archived":false,"is_private":false,"size_kb":751,"primary_language":"Python","license_spdx":"MIT","created_at":"2026-05-29T14:39:51Z","pushed_at":"2026-10-14T13:07:16Z","security_policy_url":"https://github.com/noahweidig/tiger-roads-scraper/security/policy","distribution":{"owner_created_at":"2023-06-14T20:56:58Z","owner_type":"User","release_assets":[]}},"commit_sha":"f8622dcc4633b6e1a4f41a5a7e8f446269c831a3","profile":{"lines_by_language":{"Python":1549},"files_by_category":{"docs":13,"source":7,"config":4,"other":3,"oversized":2},"source_lines":1549,"test_lines":0},"pillars":{"ai_provenance":{"score":73.3,"confidence":0.81,"coverage":1.0,"label":"explicit","breakdown":{"attributed_share":0.7326,"suspected_share":0.0,"estimated_share":0.7326,"ai_artifacts":1.0,"flagged_work_units":0.0,"flagged_releases":null,"style_index":0.0},"summary":"Explicit AI attribution on 73% of first-party code added; an estimated 73% including velocity signals."},"quality":{"score":34.7,"confidence":0.9,"coverage":1.0,"label":"poor","breakdown":{"complexity":33.8,"duplication":89.0,"lint":7.6,"testing":0.0,"docs":80.0,"type_safety":40.0,"process":null},"summary":"Code quality is poor: test-to-source ratio 0.00, no CI test run detected; 36% of function code in complex or long functions; 2% duplicated lines. Weakest area: testing."},"security":{"score":83.8,"confidence":0.85,"coverage":1.0,"label":"adequate","breakdown":{"secrets":100.0,"sast":81.6,"dependencies":87.5,"ci_actions":null,"posture":40.0,"scorecard":null},"summary":"Security posture is adequate: 10 known vulnerabilities in 1 dependencies; 1 high-severity SAST findings. Weakest area: posture."}},"analyzer_results":[{"analyzer":"sec-scorecard","pillar":"security","status":"skipped","tool_version":null,"metrics":{},"findings":[],"evidence":[],"data":{},"error":"no published OpenSSF Scorecard result for this repo"},{"analyzer":"sec-registry","pillar":"security","status":"ok","tool_version":null,"metrics":{"declared":3.0,"checked":3.0,"missing":0.0,"recent":0.0,"lookup_errors":0.0},"findings":[],"evidence":[],"data":{"phantom":false},"error":null},{"analyzer":"ai-attribution","pillar":"ai_provenance","status":"ok","tool_version":"signatures-v1","metrics":{"commits":43.0,"attributed_commits":22.0,"attributed_commit_share":0.5116279069767442,"effective_loc":2139.0,"attributed_loc":1567.0,"attributed_loc_share":0.7325853202431043,"tools_detected":1.0},"findings":[],"evidence":[{"kind":"attribution-summary","description":"Claude Code: 22 attributed commits, 1,567 lines added","ref":null,"url":null,"weight":1.0},{"kind":"attributed-commit","description":"Claude Code: author email noreply@anthropic.com","ref":"f8622dcc4633b6e1a4f41a5a7e8f446269c831a3","url":"https://github.com/noahweidig/tiger-roads-scraper/commit/f8622dcc4633b6e1a4f41a5a7e8f446269c831a3","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: author email noreply@anthropic.com","ref":"7ab320c42071f5d4e55a5fbf5958d7bf25b5fbe2","url":"https://github.com/noahweidig/tiger-roads-scraper/commit/7ab320c42071f5d4e55a5fbf5958d7bf25b5fbe2","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: author email noreply@anthropic.com","ref":"eabd76e65f60b266800325a79d70538224859e48","url":"https://github.com/noahweidig/tiger-roads-scraper/commit/eabd76e65f60b266800325a79d70538224859e48","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: author email noreply@anthropic.com","ref":"e9428b112d026d42b83bac06323e2d1cc4fc39cf","url":"https://github.com/noahweidig/tiger-roads-scraper/commit/e9428b112d026d42b83bac06323e2d1cc4fc39cf","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: author email noreply@anthropic.com","ref":"ed8382a86db25a6b01b8dd4bbe84715ab7b87bb4","url":"https://github.com/noahweidig/tiger-roads-scraper/commit/ed8382a86db25a6b01b8dd4bbe84715ab7b87bb4","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: author email noreply@anthropic.com","ref":"e0803164b852149a15efce583a94a1ff09eec28f","url":"https://github.com/noahweidig/tiger-roads-scraper/commit/e0803164b852149a15efce583a94a1ff09eec28f","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: author email noreply@anthropic.com","ref":"12fac25c1d1722ccc04d2c00f15985e8dcdc516a","url":"https://github.com/noahweidig/tiger-roads-scraper/commit/12fac25c1d1722ccc04d2c00f15985e8dcdc516a","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: author email noreply@anthropic.com","ref":"7773df78e04075236172a03bb5bfe94763e7e848","url":"https://github.com/noahweidig/tiger-roads-scraper/commit/7773df78e04075236172a03bb5bfe94763e7e848","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: author email noreply@anthropic.com","ref":"f9abe9f9f2fc6e54667cd3eeb3955a24e8d8c9a2","url":"https://github.com/noahweidig/tiger-roads-scraper/commit/f9abe9f9f2fc6e54667cd3eeb3955a24e8d8c9a2","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: author email noreply@anthropic.com","ref":"d212aef88addf1e116c00a1a7f2016bee8e1d831","url":"https://github.com/noahweidig/tiger-roads-scraper/commit/d212aef88addf1e116c00a1a7f2016bee8e1d831","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: author email noreply@anthropic.com","ref":"fc29b23e54a8e92ff2a09686810556a678ed83b8","url":"https://github.com/noahweidig/tiger-roads-scraper/commit/fc29b23e54a8e92ff2a09686810556a678ed83b8","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: author email noreply@anthropic.com","ref":"ebeff5adc1869ba8b534d3d1d5d068b051eff01a","url":"https://github.com/noahweidig/tiger-roads-scraper/commit/ebeff5adc1869ba8b534d3d1d5d068b051eff01a","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: author email noreply@anthropic.com","ref":"6a325d37dffc66ae2edfdaea28022693c3504322","url":"https://github.com/noahweidig/tiger-roads-scraper/commit/6a325d37dffc66ae2edfdaea28022693c3504322","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: author email noreply@anthropic.com","ref":"aa945f08902aeb269aa507b070c153dfa09125f8","url":"https://github.com/noahweidig/tiger-roads-scraper/commit/aa945f08902aeb269aa507b070c153dfa09125f8","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: author email noreply@anthropic.com","ref":"13ab3f542d4f37a7f8872266b48ec2e39dfa1fb4","url":"https://github.com/noahweidig/tiger-roads-scraper/commit/13ab3f542d4f37a7f8872266b48ec2e39dfa1fb4","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: author email noreply@anthropic.com","ref":"8dec4e1d8ed8136f29c67140404e39bccd5d4ff4","url":"https://github.com/noahweidig/tiger-roads-scraper/commit/8dec4e1d8ed8136f29c67140404e39bccd5d4ff4","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: author email noreply@anthropic.com","ref":"3876582ae05f8bd14c21b719ae9c9b5d6f843476","url":"https://github.com/noahweidig/tiger-roads-scraper/commit/3876582ae05f8bd14c21b719ae9c9b5d6f843476","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: author email noreply@anthropic.com","ref":"ba87e6d0e2e1caa67f1515506f07b37236dacbae","url":"https://github.com/noahweidig/tiger-roads-scraper/commit/ba87e6d0e2e1caa67f1515506f07b37236dacbae","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: author email noreply@anthropic.com","ref":"cd10e24985711030ac67c0a02663bb2081f3cd45","url":"https://github.com/noahweidig/tiger-roads-scraper/commit/cd10e24985711030ac67c0a02663bb2081f3cd45","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: author email noreply@anthropic.com","ref":"c7bd372f2ee76f8f1183df6c8d315e270fa1dfad","url":"https://github.com/noahweidig/tiger-roads-scraper/commit/c7bd372f2ee76f8f1183df6c8d315e270fa1dfad","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: author email noreply@anthropic.com","ref":"c7f5778a58d4f7401335bbb1efed97c918d46964","url":"https://github.com/noahweidig/tiger-roads-scraper/commit/c7f5778a58d4f7401335bbb1efed97c918d46964","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: author email noreply@anthropic.com","ref":"9a4052ee2ef3f5c66ab97c5022be947f6571be0e","url":"https://github.com/noahweidig/tiger-roads-scraper/commit/9a4052ee2ef3f5c66ab97c5022be947f6571be0e","weight":0.9}],"data":{"attributed_loc_by_commit":{"9a4052ee2ef3f5c66ab97c5022be947f6571be0e":0,"c7f5778a58d4f7401335bbb1efed97c918d46964":109,"c7bd372f2ee76f8f1183df6c8d315e270fa1dfad":0,"cd10e24985711030ac67c0a02663bb2081f3cd45":295,"ba87e6d0e2e1caa67f1515506f07b37236dacbae":15,"3876582ae05f8bd14c21b719ae9c9b5d6f843476":16,"8dec4e1d8ed8136f29c67140404e39bccd5d4ff4":0,"13ab3f542d4f37a7f8872266b48ec2e39dfa1fb4":5,"aa945f08902aeb269aa507b070c153dfa09125f8":263,"6a325d37dffc66ae2edfdaea28022693c3504322":20,"ebeff5adc1869ba8b534d3d1d5d068b051eff01a":295,"fc29b23e54a8e92ff2a09686810556a678ed83b8":288,"d212aef88addf1e116c00a1a7f2016bee8e1d831":10,"f9abe9f9f2fc6e54667cd3eeb3955a24e8d8c9a2":5,"7773df78e04075236172a03bb5bfe94763e7e848":15,"12fac25c1d1722ccc04d2c00f15985e8dcdc516a":211,"e0803164b852149a15efce583a94a1ff09eec28f":18,"ed8382a86db25a6b01b8dd4bbe84715ab7b87bb4":1,"e9428b112d026d42b83bac06323e2d1cc4fc39cf":1,"eabd76e65f60b266800325a79d70538224859e48":0,"7ab320c42071f5d4e55a5fbf5958d7bf25b5fbe2":0,"f8622dcc4633b6e1a4f41a5a7e8f446269c831a3":0},"tools":{"claude-code":{"name":"Claude Code","commits":22,"loc":1567,"first_seen":1780077052,"last_seen":1791983234}},"monthly":{"2026-05":{"loc":614,"attributed_loc":109},"2026-06":{"loc":631,"attributed_loc":614},"2026-08":{"loc":892,"attributed_loc":842},"2026-09":{"loc":0,"attributed_loc":0},"2026-10":{"loc":2,"attributed_loc":2}}},"error":null},{"analyzer":"ai-artifacts","pillar":"ai_provenance","status":"ok","tool_version":"signatures-v1","metrics":{"artifacts":1.0,"workflow_agents":0.0,"tools_configured":1.0,"earliest_adoption":1780334773.0},"findings":[],"evidence":[{"kind":"ai-artifact","description":"AGENTS.md (generic-agent configuration)","ref":"AGENTS.md","url":"https://github.com/noahweidig/tiger-roads-scraper/blob/f8622dcc4633b6e1a4f41a5a7e8f446269c831a3/AGENTS.md","weight":0.5}],"data":{"artifacts":[{"tool":"generic-agent","path":"AGENTS.md","added_at":1780334773}],"workflows":[],"tools":["generic-agent"]},"error":null},{"analyzer":"ai-velocity","pillar":"ai_provenance","status":"ok","tool_version":"prov-4","metrics":{"work_units":13.0,"flagged_units":0.0,"pre_ai_era_bursts":0.0,"pre_ai_era_measured_loc":0.0,"pre_ai_era_burst_loc":0.0,"measured_loc":2139.0,"flagged_loc":0.0,"flagged_loc_share":0.0,"max_loc_per_hour":126.0,"median_loc_per_hour":73.75,"pr_timed_units":0.0,"excluded_import_loc":0.0},"findings":[],"evidence":[],"data":{"flagged_loc_by_commit":{},"excluded_import_commits":[]},"error":null},{"analyzer":"ai-release-velocity","pillar":"ai_provenance","status":"skipped","tool_version":null,"metrics":{},"findings":[],"evidence":[],"data":{},"error":null},{"analyzer":"ai-stylometry","pillar":"ai_provenance","status":"ok","tool_version":null,"metrics":{"lines_scanned":1549.0,"index":0.0,"count:narrated_steps":0.0,"per_kloc:narrated_steps":0.0,"files:narrated_steps":0.0,"count:placeholder":0.0,"per_kloc:placeholder":0.0,"files:placeholder":0.0,"count:emoji_in_code":0.0,"per_kloc:emoji_in_code":0.0,"files:emoji_in_code":0.0,"count:assistant_voice":0.0,"per_kloc:assistant_voice":0.0,"files:assistant_voice":0.0},"findings":[],"evidence":[],"data":{},"error":null},{"analyzer":"sec-secrets","pillar":"security","status":"ok","tool_version":"gitleaks 8.30.1","metrics":{"secrets_current":0.0,"secrets_history":0.0,"secrets_nonprod":0.0,"secrets_low_confidence":0.0},"findings":[],"evidence":[],"data":{},"error":null},{"analyzer":"sec-sast","pillar":"security","status":"ok","tool_version":"opengrep 1.33.1; rules f1d2b562b414","metrics":{"findings":2.0,"findings_high":1.0,"findings_medium":0.0,"findings_low":1.0,"weighted_findings":0.9,"scanned_lines":1549.0,"parse_errors":0.0},"findings":[{"rule_id":"opengrep/python.lang.security.audit.dangerous-subprocess-use-audit","severity":"high","message":"Detected subprocess function 'run' without a static string. If this data can be controlled by a malicious actor, it may be an instance of command injection. Audit the use of this call to ensure it is not controllable by an external resource. You may consider using 'shlex.escape()'. [confidence low]","path":"04_convert_zips.py","line":191,"fingerprint":"python.lang.security.audit.dangerous-subprocess-use-audit:04_convert_zips.py:191"},{"rule_id":"opengrep/python.lang.security.audit.insecure-transport.requests.request-session-with-http","severity":"low","message":"Detected a request using 'http://'. This request will be unencrypted. Use 'https://' instead. [confidence medium]","path":"03_download_zips.py","line":66,"fingerprint":"python.lang.security.audit.insecure-transport.requests.request-session-with-http:03_download_zips.py:66"}],"evidence":[],"data":{"rulesets":["python"]},"error":null},{"analyzer":"sec-deps","pillar":"security","status":"ok","tool_version":"osv-scanner version: 2.7.1","metrics":{"vulnerable_packages":1.0,"vulnerabilities":10.0,"vulns_critical":0.0,"vulns_high":7.0,"vulns_medium":3.0,"vulns_low":0.0,"vulns_unknown":0.0,"penalty":8.0},"findings":[{"rule_id":"osv/GHSA-qccp-gfcp-xxvc","severity":"high","message":"urllib3@2.0 (PyPI) is affected by PYSEC-2026-141, GHSA-qccp-gfcp-xxvc","path":"requirements.txt","line":null,"fingerprint":"urllib3@2.0 (PyPI):GHSA-qccp-gfcp-xxvc"},{"rule_id":"osv/GHSA-2xpw-w6gg-jr37","severity":"high","message":"urllib3@2.0 (PyPI) is affected by PYSEC-2026-1994, GHSA-2xpw-w6gg-jr37","path":"requirements.txt","line":null,"fingerprint":"urllib3@2.0 (PyPI):GHSA-2xpw-w6gg-jr37"},{"rule_id":"osv/GHSA-38jv-5279-wg99","severity":"high","message":"urllib3@2.0 (PyPI) is affected by PYSEC-2026-1996, GHSA-38jv-5279-wg99","path":"requirements.txt","line":null,"fingerprint":"urllib3@2.0 (PyPI):GHSA-38jv-5279-wg99"},{"rule_id":"osv/GHSA-gm62-xv2j-4w53","severity":"high","message":"urllib3@2.0 (PyPI) is affected by PYSEC-2026-1998, GHSA-gm62-xv2j-4w53","path":"requirements.txt","line":null,"fingerprint":"urllib3@2.0 (PyPI):GHSA-gm62-xv2j-4w53"},{"rule_id":"osv/GHSA-8988-9cw3-xx77","severity":"high","message":"urllib3@2.0 (PyPI) is affected by PYSEC-2026-4175, GHSA-8988-9cw3-xx77","path":"requirements.txt","line":null,"fingerprint":"urllib3@2.0 (PyPI):GHSA-8988-9cw3-xx77"},{"rule_id":"osv/GHSA-vxq7-64xx-v4gw","severity":"high","message":"urllib3@2.0 (PyPI) is affected by PYSEC-2026-4177, GHSA-vxq7-64xx-v4gw","path":"requirements.txt","line":null,"fingerprint":"urllib3@2.0 (PyPI):GHSA-vxq7-64xx-v4gw"},{"rule_id":"osv/GHSA-v845-jxx5-vc9f","severity":"high","message":"urllib3@2.0 (PyPI) is affected by GHSA-v845-jxx5-vc9f","path":"requirements.txt","line":null,"fingerprint":"urllib3@2.0 (PyPI):GHSA-v845-jxx5-vc9f"},{"rule_id":"osv/GHSA-34jh-p97f-mpxf","severity":"medium","message":"urllib3@2.0 (PyPI) is affected by PYSEC-2026-1995, GHSA-34jh-p97f-mpxf","path":"requirements.txt","line":null,"fingerprint":"urllib3@2.0 (PyPI):GHSA-34jh-p97f-mpxf"},{"rule_id":"osv/GHSA-pq67-6m6q-mj2v","severity":"medium","message":"urllib3@2.0 (PyPI) is affected by PYSEC-2026-1999, GHSA-pq67-6m6q-mj2v","path":"requirements.txt","line":null,"fingerprint":"urllib3@2.0 (PyPI):GHSA-pq67-6m6q-mj2v"},{"rule_id":"osv/GHSA-g4mx-q9vg-27p4","severity":"medium","message":"urllib3@2.0 (PyPI) is affected by GHSA-g4mx-q9vg-27p4","path":"requirements.txt","line":null,"fingerprint":"urllib3@2.0 (PyPI):GHSA-g4mx-q9vg-27p4"}],"evidence":[],"data":{"ecosystems":["PyPI"]},"error":null},{"analyzer":"sec-actions","pillar":"security","status":"skipped","tool_version":null,"metrics":{},"findings":[],"evidence":[],"data":{},"error":null},{"analyzer":"sec-posture","pillar":"security","status":"ok","tool_version":null,"metrics":{"check:security_policy":1.0,"check:dependency_updates":0.0,"check:signed_commits":0.0,"check:lockfiles":1.0,"signed_commit_share":0.1163,"unpinned_manifests":0.0},"findings":[],"evidence":[{"kind":"posture","description":"Security policy: SECURITY.md","ref":"SECURITY.md","url":null,"weight":0.0}],"data":{},"error":null},{"analyzer":"sec-distribution","pillar":"security","status":"ok","tool_version":null,"metrics":{"signals":0.0,"binary_assets":0.0,"suspicious":0.0},"findings":[],"evidence":[],"data":{"signals":[],"suspicious":false,"unusual_traction":false,"metadata":true},"error":null},{"analyzer":"qual-complexity","pillar":"quality","status":"ok","tool_version":"lizard 1.25.1","metrics":{"functions":51.0,"function_nloc":880.0,"mean_ccn":6.8,"p90_ccn":14.0,"complex_functions":4.0,"long_functions":0.0,"many_param_functions":0.0,"risky_nloc_share":0.3614},"findings":[],"evidence":[{"kind":"complex-function","description":"download_one in 03_download_zips.py: complexity 44, 80 lines","ref":"03_download_zips.py","url":"https://github.com/noahweidig/tiger-roads-scraper/blob/f8622dcc4633b6e1a4f41a5a7e8f446269c831a3/03_download_zips.py#L108","weight":0.7333333333333333},{"kind":"complex-function","description":"main in 03_download_zips.py: complexity 30, 99 lines","ref":"03_download_zips.py","url":"https://github.com/noahweidig/tiger-roads-scraper/blob/f8622dcc4633b6e1a4f41a5a7e8f446269c831a3/03_download_zips.py#L211","weight":0.5},{"kind":"complex-function","description":"main in 04_convert_zips.py: complexity 18, 47 lines","ref":"04_convert_zips.py","url":"https://github.com/noahweidig/tiger-roads-scraper/blob/f8622dcc4633b6e1a4f41a5a7e8f446269c831a3/04_convert_zips.py#L449","weight":0.3},{"kind":"complex-function","description":"main in 05_upload_to_gee.py: complexity 16, 92 lines","ref":"05_upload_to_gee.py","url":"https://github.com/noahweidig/tiger-roads-scraper/blob/f8622dcc4633b6e1a4f41a5a7e8f446269c831a3/05_upload_to_gee.py#L85","weight":0.26666666666666666}],"data":{},"error":null},{"analyzer":"qual-duplication","pillar":"quality","status":"ok","tool_version":"repotrust-dup-w6","metrics":{"compared_lines":1240.0,"duplicated_lines":24.0,"duplicated_share":0.0194,"files":7.0},"findings":[],"evidence":[{"kind":"duplicate-code","description":"6+ duplicated lines: 01_generate_urls.py:46 and 01_generate_urls.py:63","ref":"01_generate_urls.py","url":"https://github.com/noahweidig/tiger-roads-scraper/blob/f8622dcc4633b6e1a4f41a5a7e8f446269c831a3/01_generate_urls.py#L46","weight":0.3},{"kind":"duplicate-code","description":"6+ duplicated lines: 03_download_zips.py:280 and 05_upload_to_gee.py:159","ref":"03_download_zips.py","url":"https://github.com/noahweidig/tiger-roads-scraper/blob/f8622dcc4633b6e1a4f41a5a7e8f446269c831a3/03_download_zips.py#L280","weight":0.3}],"data":{},"error":null},{"analyzer":"qual-lint","pillar":"quality","status":"ok","tool_version":"opengrep 1.33.1; rules f1d2b562b414","metrics":{"findings":12.0,"weighted_findings":16.0,"scanned_lines":1549.0,"category:best-practice":11.0,"category:maintainability":1.0},"findings":[{"rule_id":"opengrep/python.lang.best-practice.arbitrary-sleep","severity":"high","message":"time.sleep() call; did you mean to leave this in?","path":"01_generate_urls.py","line":13,"fingerprint":"python.lang.best-practice.arbitrary-sleep:01_generate_urls.py:13"},{"rule_id":"opengrep/python.lang.best-practice.arbitrary-sleep","severity":"high","message":"time.sleep() call; did you mean to leave this in?","path":"05_upload_to_gee.py","line":80,"fingerprint":"python.lang.best-practice.arbitrary-sleep:05_upload_to_gee.py:80"},{"rule_id":"opengrep/python.lang.best-practice.unspecified-open-encoding","severity":"medium","message":"Missing 'encoding' parameter. 'open()' uses device locale encodings by default, corrupting files with special characters. Specify the encoding to ensure cross-platform support when opening files in text mode (e.g. encoding=\"utf-8\").","path":"01_generate_urls.py","line":21,"fingerprint":"python.lang.best-practice.unspecified-open-encoding:01_generate_urls.py:21"},{"rule_id":"opengrep/python.lang.best-practice.unspecified-open-encoding","severity":"medium","message":"Missing 'encoding' parameter. 'open()' uses device locale encodings by default, corrupting files with special characters. Specify the encoding to ensure cross-platform support when opening files in text mode (e.g. encoding=\"utf-8\").","path":"01_generate_urls.py","line":73,"fingerprint":"python.lang.best-practice.unspecified-open-encoding:01_generate_urls.py:73"},{"rule_id":"opengrep/python.lang.best-practice.unspecified-open-encoding","severity":"medium","message":"Missing 'encoding' parameter. 'open()' uses device locale encodings by default, corrupting files with special characters. Specify the encoding to ensure cross-platform support when opening files in text mode (e.g. encoding=\"utf-8\").","path":"01_generate_urls.py","line":89,"fingerprint":"python.lang.best-practice.unspecified-open-encoding:01_generate_urls.py:89"},{"rule_id":"opengrep/python.lang.best-practice.unspecified-open-encoding","severity":"medium","message":"Missing 'encoding' parameter. 'open()' uses device locale encodings by default, corrupting files with special characters. Specify the encoding to ensure cross-platform support when opening files in text mode (e.g. encoding=\"utf-8\").","path":"01_generate_urls.py","line":106,"fingerprint":"python.lang.best-practice.unspecified-open-encoding:01_generate_urls.py:106"},{"rule_id":"opengrep/python.lang.best-practice.unspecified-open-encoding","severity":"medium","message":"Missing 'encoding' parameter. 'open()' uses device locale encodings by default, corrupting files with special characters. Specify the encoding to ensure cross-platform support when opening files in text mode (e.g. encoding=\"utf-8\").","path":"01_generate_urls.py","line":121,"fingerprint":"python.lang.best-practice.unspecified-open-encoding:01_generate_urls.py:121"},{"rule_id":"opengrep/python.lang.maintainability.return-not-in-function","severity":"medium","message":"`return` only makes sense inside a function","path":"02_check_urls.py","line":36,"fingerprint":"python.lang.maintainability.return-not-in-function:02_check_urls.py:36"},{"rule_id":"opengrep/python.lang.best-practice.unspecified-open-encoding","severity":"medium","message":"Missing 'encoding' parameter. 'open()' uses device locale encodings by default, corrupting files with special characters. Specify the encoding to ensure cross-platform support when opening files in text mode (e.g. encoding=\"utf-8\").","path":"02_check_urls.py","line":145,"fingerprint":"python.lang.best-practice.unspecified-open-encoding:02_check_urls.py:145"},{"rule_id":"opengrep/python.lang.best-practice.unspecified-open-encoding","severity":"medium","message":"Missing 'encoding' parameter. 'open()' uses device locale encodings by default, corrupting files with special characters. Specify the encoding to ensure cross-platform support when opening files in text mode (e.g. encoding=\"utf-8\").","path":"02_check_urls.py","line":156,"fingerprint":"python.lang.best-practice.unspecified-open-encoding:02_check_urls.py:156"},{"rule_id":"opengrep/python.lang.best-practice.unspecified-open-encoding","severity":"medium","message":"Missing 'encoding' parameter. 'open()' uses device locale encodings by default, corrupting files with special characters. Specify the encoding to ensure cross-platform support when opening files in text mode (e.g. encoding=\"utf-8\").","path":"03_download_zips.py","line":179,"fingerprint":"python.lang.best-practice.unspecified-open-encoding:03_download_zips.py:179"},{"rule_id":"opengrep/python.lang.best-practice.unspecified-open-encoding","severity":"medium","message":"Missing 'encoding' parameter. 'open()' uses device locale encodings by default, corrupting files with special characters. Specify the encoding to ensure cross-platform support when opening files in text mode (e.g. encoding=\"utf-8\").","path":"05_upload_to_gee.py","line":114,"fingerprint":"python.lang.best-practice.unspecified-open-encoding:05_upload_to_gee.py:114"}],"evidence":[],"data":{},"error":null},{"analyzer":"qual-testing","pillar":"quality","status":"ok","tool_version":null,"metrics":{"check:has_tests":0.0,"check:test_ratio":0.0,"check:ci_present":0.0,"check:ci_runs_tests":0.0,"check:ci_runs_lint":0.0,"check:tests_cochange":0.0,"test_lines":0.0,"source_lines":1549.0,"test_ratio":0.0,"ci_files":0.0,"cochange_share":0.0,"cochange_commits":21.0},"findings":[],"evidence":[],"data":{"test_commands":[],"lint_commands":[]},"error":null},{"analyzer":"qual-docs","pillar":"quality","status":"ok","tool_version":null,"metrics":{"check:readme":1.0,"check:license":1.0,"check:contributing":1.0,"check:changelog":0.0,"readme_lines":207.0},"findings":[],"evidence":[{"kind":"docs","description":"README.md","ref":"README.md","url":null,"weight":0.0},{"kind":"docs","description":"LICENSE","ref":"LICENSE","url":null,"weight":0.0},{"kind":"docs","description":"CONTRIBUTING.md","ref":"CONTRIBUTING.md","url":null,"weight":0.0}],"data":{},"error":null},{"analyzer":"qual-type-safety","pillar":"quality","status":"ok","tool_version":null,"metrics":{"check:strict_config":0.0,"check:low_escape_density":1.0,"escapes":0.0,"escapes_per_kloc":0.0},"findings":[],"evidence":[],"data":{},"error":null},{"analyzer":"x-blame","pillar":"ai_provenance","status":"ok","tool_version":"git-blame","metrics":{"ai_lines":1248.0,"other_lines":301.0,"files_blamed":7.0,"blame_failures":0.0,"quality:ai_findings":4.0,"quality:ai_per_kloc":3.205,"quality:other_findings":8.0,"quality:other_per_kloc":26.578,"security:ai_findings":2.0,"security:ai_per_kloc":1.603,"security:other_findings":0.0,"security:other_per_kloc":0.0},"findings":[],"evidence":[],"data":{"sampled":false,"comparable":false},"error":null}],"flags":["unreviewed-ai-risk"]}