coretrace-python-analyzer 0.24.0__tar.gz → 0.25.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (373) hide show
  1. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/CHANGELOG.md +42 -0
  2. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/PKG-INFO +1 -1
  3. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/docs/usage.md +15 -7
  4. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/pyproject.toml +1 -1
  5. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/src/coretrace_python/__init__.py +1 -1
  6. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/src/coretrace_python/source/__init__.py +8 -1
  7. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/src/coretrace_python/source/manager.py +21 -0
  8. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/src/coretrace_python/source/positions.py +3 -20
  9. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/src/coretrace_python/taint/templates.py +264 -104
  10. coretrace_python_analyzer-0.25.0/tests/test_line_index.py +23 -0
  11. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/tests/test_release.py +1 -1
  12. coretrace_python_analyzer-0.25.0/tests/test_template_block_placement.py +237 -0
  13. coretrace_python_analyzer-0.25.0/tests/test_template_filter_cycles.py +275 -0
  14. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/tests/test_template_filter_walk.py +189 -39
  15. coretrace_python_analyzer-0.25.0/tests/test_template_positions.py +68 -0
  16. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/.github/workflows/ci.yml +0 -0
  17. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/.github/workflows/release.yml +0 -0
  18. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/.gitignore +0 -0
  19. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/AUTHORS.md +0 -0
  20. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/CODE_OF_CONDUCT.md +0 -0
  21. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/CONTRIBUTING.md +0 -0
  22. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/LICENSE +0 -0
  23. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/NOTICE +0 -0
  24. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/README.md +0 -0
  25. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/SECURITY.md +0 -0
  26. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/docs/architecture.md +0 -0
  27. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/docs/plugins.md +0 -0
  28. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/examples/add.py +0 -0
  29. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/examples/canonical_symbols.py +0 -0
  30. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/reports/mitmproxy-2026-10-02/analysis.stderr +0 -0
  31. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/reports/mitmproxy-2026-10-02/findings.json +0 -0
  32. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/reports/mitmproxy-2026-10-02/rapport.md +0 -0
  33. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/reports/mitmproxy-2026-10-02/sbom.json +0 -0
  34. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/reports/mitmproxy-2026-10-02/triage.csv +0 -0
  35. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/reports/mitmproxy-2026-10-02/verification.txt +0 -0
  36. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/reports/mitmproxy-2026-10-02/vex.json +0 -0
  37. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/src/coretrace_python/__main__.py +0 -0
  38. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/src/coretrace_python/abstract/__init__.py +0 -0
  39. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/src/coretrace_python/abstract/constants.py +0 -0
  40. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/src/coretrace_python/abstract/heap.py +0 -0
  41. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/src/coretrace_python/abstract/module_constants.py +0 -0
  42. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/src/coretrace_python/abstract/ranges.py +0 -0
  43. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/src/coretrace_python/abstract/strings.py +0 -0
  44. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/src/coretrace_python/abstract/values.py +0 -0
  45. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/src/coretrace_python/analysis/__init__.py +0 -0
  46. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/src/coretrace_python/analysis/manager.py +0 -0
  47. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/src/coretrace_python/analysis/provider.py +0 -0
  48. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/src/coretrace_python/bundled/dependency/dependency_policy/dependency_policy.py +0 -0
  49. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/src/coretrace_python/bundled/dependency/dependency_policy/plugin.toml +0 -0
  50. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/src/coretrace_python/bundled/dependency/reachable_vulnerability/plugin.toml +0 -0
  51. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/src/coretrace_python/bundled/dependency/reachable_vulnerability/reachable_vulnerability.py +0 -0
  52. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/src/coretrace_python/bundled/dependency/sample_advisories/plugin.toml +0 -0
  53. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/src/coretrace_python/bundled/dependency/sample_advisories/sample_advisories.py +0 -0
  54. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/src/coretrace_python/bundled/dependency/vulnerable_dependency/plugin.toml +0 -0
  55. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/src/coretrace_python/bundled/dependency/vulnerable_dependency/vulnerable_dependency.py +0 -0
  56. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/src/coretrace_python/bundled/models/aiohttp/aiohttp_models.py +0 -0
  57. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/src/coretrace_python/bundled/models/aiohttp/plugin.toml +0 -0
  58. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/src/coretrace_python/bundled/models/bottle/bottle_models.py +0 -0
  59. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/src/coretrace_python/bundled/models/bottle/plugin.toml +0 -0
  60. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/src/coretrace_python/bundled/models/cli/cli_models.py +0 -0
  61. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/src/coretrace_python/bundled/models/cli/plugin.toml +0 -0
  62. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/src/coretrace_python/bundled/models/credentials/credential_models.py +0 -0
  63. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/src/coretrace_python/bundled/models/credentials/plugin.toml +0 -0
  64. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/src/coretrace_python/bundled/models/db_drivers/db_driver_models.py +0 -0
  65. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/src/coretrace_python/bundled/models/db_drivers/plugin.toml +0 -0
  66. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/src/coretrace_python/bundled/models/django/django_models.py +0 -0
  67. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/src/coretrace_python/bundled/models/django/plugin.toml +0 -0
  68. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/src/coretrace_python/bundled/models/fastapi/fastapi_models.py +0 -0
  69. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/src/coretrace_python/bundled/models/fastapi/plugin.toml +0 -0
  70. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/src/coretrace_python/bundled/models/flask/flask_models.py +0 -0
  71. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/src/coretrace_python/bundled/models/flask/plugin.toml +0 -0
  72. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/src/coretrace_python/bundled/models/http_clients/http_client_models.py +0 -0
  73. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/src/coretrace_python/bundled/models/http_clients/plugin.toml +0 -0
  74. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/src/coretrace_python/bundled/models/python_stdlib/plugin.toml +0 -0
  75. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/src/coretrace_python/bundled/models/python_stdlib/python_stdlib.py +0 -0
  76. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/src/coretrace_python/bundled/models/sqlalchemy/plugin.toml +0 -0
  77. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/src/coretrace_python/bundled/models/sqlalchemy/sqlalchemy_models.py +0 -0
  78. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/src/coretrace_python/bundled/models/tornado/plugin.toml +0 -0
  79. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/src/coretrace_python/bundled/models/tornado/tornado_models.py +0 -0
  80. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/src/coretrace_python/bundled/secrets/config_secrets/config_secrets.py +0 -0
  81. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/src/coretrace_python/bundled/secrets/config_secrets/plugin.toml +0 -0
  82. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/src/coretrace_python/bundled/secrets/hardcoded_secrets/hardcoded_secrets.py +0 -0
  83. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/src/coretrace_python/bundled/secrets/hardcoded_secrets/plugin.toml +0 -0
  84. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/src/coretrace_python/bundled/security/code_injection/code_injection.py +0 -0
  85. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/src/coretrace_python/bundled/security/code_injection/plugin.toml +0 -0
  86. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/src/coretrace_python/bundled/security/command_injection/command_injection.py +0 -0
  87. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/src/coretrace_python/bundled/security/command_injection/plugin.toml +0 -0
  88. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/src/coretrace_python/bundled/security/insecure_deserialization/insecure_deserialization.py +0 -0
  89. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/src/coretrace_python/bundled/security/insecure_deserialization/plugin.toml +0 -0
  90. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/src/coretrace_python/bundled/security/nosql_injection/nosql_injection.py +0 -0
  91. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/src/coretrace_python/bundled/security/nosql_injection/plugin.toml +0 -0
  92. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/src/coretrace_python/bundled/security/open_redirect/open_redirect.py +0 -0
  93. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/src/coretrace_python/bundled/security/open_redirect/plugin.toml +0 -0
  94. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/src/coretrace_python/bundled/security/path_traversal/path_traversal.py +0 -0
  95. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/src/coretrace_python/bundled/security/path_traversal/plugin.toml +0 -0
  96. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/src/coretrace_python/bundled/security/plaintext_credentials/plaintext_credentials.py +0 -0
  97. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/src/coretrace_python/bundled/security/plaintext_credentials/plugin.toml +0 -0
  98. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/src/coretrace_python/bundled/security/sql_injection/plugin.toml +0 -0
  99. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/src/coretrace_python/bundled/security/sql_injection/sql_injection.py +0 -0
  100. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/src/coretrace_python/bundled/security/ssrf/plugin.toml +0 -0
  101. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/src/coretrace_python/bundled/security/ssrf/ssrf.py +0 -0
  102. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/src/coretrace_python/bundled/security/xss/plugin.toml +0 -0
  103. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/src/coretrace_python/bundled/security/xss/xss.py +0 -0
  104. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/src/coretrace_python/bundled/syntax/dangerous_eval/dangerous_eval.py +0 -0
  105. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/src/coretrace_python/bundled/syntax/dangerous_eval/plugin.toml +0 -0
  106. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/src/coretrace_python/bundled/syntax/flask_debug/flask_debug.py +0 -0
  107. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/src/coretrace_python/bundled/syntax/flask_debug/plugin.toml +0 -0
  108. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/src/coretrace_python/bundled/syntax/insecure_tempfile/insecure_tempfile.py +0 -0
  109. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/src/coretrace_python/bundled/syntax/insecure_tempfile/plugin.toml +0 -0
  110. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/src/coretrace_python/bundled/syntax/insecure_tls/insecure_tls.py +0 -0
  111. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/src/coretrace_python/bundled/syntax/insecure_tls/plugin.toml +0 -0
  112. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/src/coretrace_python/bundled/syntax/missing_timeout/missing_timeout.py +0 -0
  113. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/src/coretrace_python/bundled/syntax/missing_timeout/plugin.toml +0 -0
  114. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/src/coretrace_python/bundled/syntax/unsafe_archive/plugin.toml +0 -0
  115. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/src/coretrace_python/bundled/syntax/unsafe_archive/unsafe_archive.py +0 -0
  116. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/src/coretrace_python/bundled/syntax/unsafe_xml/plugin.toml +0 -0
  117. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/src/coretrace_python/bundled/syntax/unsafe_xml/unsafe_xml.py +0 -0
  118. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/src/coretrace_python/bundled/syntax/weak_crypto/plugin.toml +0 -0
  119. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/src/coretrace_python/bundled/syntax/weak_crypto/weak_crypto.py +0 -0
  120. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/src/coretrace_python/bundled/syntax/weak_random/plugin.toml +0 -0
  121. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/src/coretrace_python/bundled/syntax/weak_random/weak_random.py +0 -0
  122. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/src/coretrace_python/cache.py +0 -0
  123. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/src/coretrace_python/cfg/__init__.py +0 -0
  124. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/src/coretrace_python/cfg/builder.py +0 -0
  125. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/src/coretrace_python/cfg/dominance.py +0 -0
  126. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/src/coretrace_python/cfg/model.py +0 -0
  127. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/src/coretrace_python/cli.py +0 -0
  128. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/src/coretrace_python/dataflow/__init__.py +0 -0
  129. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/src/coretrace_python/dataflow/lattice.py +0 -0
  130. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/src/coretrace_python/dataflow/solver.py +0 -0
  131. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/src/coretrace_python/dependency/__init__.py +0 -0
  132. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/src/coretrace_python/dependency/advisories.py +0 -0
  133. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/src/coretrace_python/dependency/correlation.py +0 -0
  134. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/src/coretrace_python/dependency/graph.py +0 -0
  135. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/src/coretrace_python/dependency/policy.py +0 -0
  136. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/src/coretrace_python/dependency/sbom.py +0 -0
  137. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/src/coretrace_python/dependency/vex.py +0 -0
  138. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/src/coretrace_python/engine.py +0 -0
  139. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/src/coretrace_python/findings/__init__.py +0 -0
  140. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/src/coretrace_python/findings/baseline.py +0 -0
  141. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/src/coretrace_python/findings/context.py +0 -0
  142. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/src/coretrace_python/findings/coverage.py +0 -0
  143. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/src/coretrace_python/findings/model.py +0 -0
  144. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/src/coretrace_python/findings/provenance.py +0 -0
  145. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/src/coretrace_python/findings/refutation.py +0 -0
  146. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/src/coretrace_python/findings/rules.py +0 -0
  147. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/src/coretrace_python/findings/suppressions.py +0 -0
  148. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/src/coretrace_python/frontend/__init__.py +0 -0
  149. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/src/coretrace_python/frontend/ast_adapter.py +0 -0
  150. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/src/coretrace_python/frontend/parser.py +0 -0
  151. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/src/coretrace_python/hir/__init__.py +0 -0
  152. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/src/coretrace_python/hir/nodes.py +0 -0
  153. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/src/coretrace_python/hir/visitors.py +0 -0
  154. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/src/coretrace_python/interprocedural/__init__.py +0 -0
  155. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/src/coretrace_python/interprocedural/callgraph.py +0 -0
  156. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/src/coretrace_python/interprocedural/modulegraph.py +0 -0
  157. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/src/coretrace_python/interprocedural/summaries.py +0 -0
  158. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/src/coretrace_python/ir/__init__.py +0 -0
  159. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/src/coretrace_python/ir/defuse.py +0 -0
  160. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/src/coretrace_python/ir/lowering.py +0 -0
  161. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/src/coretrace_python/ir/model.py +0 -0
  162. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/src/coretrace_python/ir/printer.py +0 -0
  163. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/src/coretrace_python/ir/ssa.py +0 -0
  164. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/src/coretrace_python/plugins/__init__.py +0 -0
  165. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/src/coretrace_python/plugins/api.py +0 -0
  166. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/src/coretrace_python/plugins/detectors.py +0 -0
  167. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/src/coretrace_python/plugins/loader.py +0 -0
  168. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/src/coretrace_python/plugins/manifest.py +0 -0
  169. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/src/coretrace_python/plugins/registry.py +0 -0
  170. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/src/coretrace_python/plugins/secrets.py +0 -0
  171. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/src/coretrace_python/reporters/__init__.py +0 -0
  172. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/src/coretrace_python/reporters/json_format.py +0 -0
  173. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/src/coretrace_python/reporters/report.py +0 -0
  174. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/src/coretrace_python/reporters/sarif.py +0 -0
  175. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/src/coretrace_python/reporters/text.py +0 -0
  176. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/src/coretrace_python/semantic/__init__.py +0 -0
  177. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/src/coretrace_python/semantic/identity.py +0 -0
  178. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/src/coretrace_python/semantic/imports.py +0 -0
  179. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/src/coretrace_python/semantic/scopes.py +0 -0
  180. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/src/coretrace_python/semantic/symbols.py +0 -0
  181. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/src/coretrace_python/source/model.py +0 -0
  182. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/src/coretrace_python/taint/__init__.py +0 -0
  183. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/src/coretrace_python/taint/commands.py +0 -0
  184. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/src/coretrace_python/taint/engine.py +0 -0
  185. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/src/coretrace_python/taint/models.py +0 -0
  186. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/src/coretrace_python/taint/routes.py +0 -0
  187. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/src/coretrace_python/taint/urls.py +0 -0
  188. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/tests/regression/expected/Chatbot.json +0 -0
  189. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/tests/regression/expected/DjangoGoat.json +0 -0
  190. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/tests/regression/expected/Flask-Image-Editing-Website.json +0 -0
  191. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/tests/regression/expected/InsecureGram.json +0 -0
  192. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/tests/regression/expected/MiniBookApiServer.json +0 -0
  193. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/tests/regression/expected/NPL-IA.json +0 -0
  194. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/tests/regression/expected/Spam-Detection-Project.json +0 -0
  195. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/tests/regression/expected/Vulnerable_fastapi.json +0 -0
  196. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/tests/regression/expected/dvpwa.json +0 -0
  197. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/tests/regression/expected/full-stack-fastapi-template.json +0 -0
  198. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/tests/regression/expected/healthchecks.json +0 -0
  199. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/tests/regression/expected/httpie.json +0 -0
  200. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/tests/regression/expected/luigi.json +0 -0
  201. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/tests/regression/expected/my_gdb.json +0 -0
  202. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/tests/regression/expected/network-topologer.json +0 -0
  203. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/tests/regression/expected/pygoat.json +0 -0
  204. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/tests/regression/expected/uploadbox-cloud-storage-solution.json +0 -0
  205. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/tests/regression/expected/vulnerable-flask.json +0 -0
  206. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/tests/regression/expected/yt-fts.json +0 -0
  207. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/tests/regression/fixtures/vulnerable-flask/README.md +0 -0
  208. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/tests/regression/fixtures/vulnerable-flask/app.py +0 -0
  209. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/tests/regression/fixtures/vulnerable-flask/requirements.txt +0 -0
  210. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/tests/regression/fixtures/vulnerable-flask/vulnerable_services.py +0 -0
  211. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/tests/regression/repositories.toml +0 -0
  212. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/tests/test_advisory_evidence.py +0 -0
  213. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/tests/test_advisory_feeds.py +0 -0
  214. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/tests/test_advisory_url_host.py +0 -0
  215. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/tests/test_aiohttp_models.py +0 -0
  216. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/tests/test_allowlist_shapes.py +0 -0
  217. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/tests/test_analysis_manager.py +0 -0
  218. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/tests/test_annotation_bindings.py +0 -0
  219. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/tests/test_annotation_expression_scopes.py +0 -0
  220. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/tests/test_architecture.py +0 -0
  221. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/tests/test_argument_conditions.py +0 -0
  222. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/tests/test_argument_present_conditions.py +0 -0
  223. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/tests/test_attacker_arguments.py +0 -0
  224. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/tests/test_attribute_call_loops.py +0 -0
  225. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/tests/test_attribute_call_review.py +0 -0
  226. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/tests/test_attribute_call_sinks.py +0 -0
  227. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/tests/test_audit_detectors.py +0 -0
  228. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/tests/test_base_patterns.py +0 -0
  229. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/tests/test_baseline.py +0 -0
  230. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/tests/test_baseline_digests.py +0 -0
  231. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/tests/test_baseline_key.py +0 -0
  232. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/tests/test_baseline_schema_1.py +0 -0
  233. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/tests/test_block_super.py +0 -0
  234. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/tests/test_cache.py +0 -0
  235. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/tests/test_cache_engine_version.py +0 -0
  236. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/tests/test_cfg.py +0 -0
  237. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/tests/test_class_keywords_with_targets.py +0 -0
  238. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/tests/test_cli.py +0 -0
  239. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/tests/test_closures.py +0 -0
  240. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/tests/test_code_context.py +0 -0
  241. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/tests/test_code_context_single_file.py +0 -0
  242. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/tests/test_code_injection.py +0 -0
  243. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/tests/test_command_arguments.py +0 -0
  244. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/tests/test_command_decided_cases.py +0 -0
  245. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/tests/test_command_injection_nature.py +0 -0
  246. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/tests/test_config_secrets_coverage.py +0 -0
  247. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/tests/test_config_value_spans.py +0 -0
  248. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/tests/test_constants.py +0 -0
  249. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/tests/test_correlation.py +0 -0
  250. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/tests/test_credential_context.py +0 -0
  251. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/tests/test_credential_project_path.py +0 -0
  252. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/tests/test_dataflow.py +0 -0
  253. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/tests/test_declared_entry_points.py +0 -0
  254. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/tests/test_deep_nesting.py +0 -0
  255. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/tests/test_dependencies.py +0 -0
  256. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/tests/test_detectors.py +0 -0
  257. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/tests/test_discovery.py +0 -0
  258. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/tests/test_django_http_clients.py +0 -0
  259. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/tests/test_django_routes.py +0 -0
  260. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/tests/test_django_safe_values.py +0 -0
  261. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/tests/test_docs.py +0 -0
  262. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/tests/test_dominance.py +0 -0
  263. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/tests/test_dynamic_import_sinks.py +0 -0
  264. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/tests/test_dynamic_import_verdicts.py +0 -0
  265. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/tests/test_emit_ir.py +0 -0
  266. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/tests/test_entry_point_aliases.py +0 -0
  267. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/tests/test_entry_point_suffixes.py +0 -0
  268. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/tests/test_exceptions.py +0 -0
  269. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/tests/test_factories_match_loop_else.py +0 -0
  270. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/tests/test_fail_on.py +0 -0
  271. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/tests/test_fastapi_cli_precision.py +0 -0
  272. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/tests/test_file_locations.py +0 -0
  273. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/tests/test_folded_secret_literals.py +0 -0
  274. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/tests/test_frameworks.py +0 -0
  275. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/tests/test_frontend_gaps.py +0 -0
  276. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/tests/test_function_aliases_api.py +0 -0
  277. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/tests/test_heap.py +0 -0
  278. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/tests/test_hex_digests.py +0 -0
  279. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/tests/test_hir_builder.py +0 -0
  280. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/tests/test_import_path_sinks.py +0 -0
  281. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/tests/test_imports.py +0 -0
  282. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/tests/test_interprocedural.py +0 -0
  283. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/tests/test_interprocedural_taint.py +0 -0
  284. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/tests/test_ir.py +0 -0
  285. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/tests/test_jobs_option.py +0 -0
  286. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/tests/test_jobs_workers.py +0 -0
  287. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/tests/test_key_taint.py +0 -0
  288. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/tests/test_keyword_name_conditions.py +0 -0
  289. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/tests/test_line_numbering.py +0 -0
  290. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/tests/test_lock_dependency_maps.py +0 -0
  291. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/tests/test_lock_positions.py +0 -0
  292. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/tests/test_match_patterns.py +0 -0
  293. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/tests/test_members.py +0 -0
  294. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/tests/test_module_identity.py +0 -0
  295. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/tests/test_module_level.py +0 -0
  296. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/tests/test_namespace_module_imports.py +0 -0
  297. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/tests/test_namespace_module_names.py +0 -0
  298. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/tests/test_namespace_module_visibility.py +0 -0
  299. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/tests/test_nonlocal_kept_value.py +0 -0
  300. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/tests/test_nonlocal_writeback.py +0 -0
  301. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/tests/test_nosql_injection.py +0 -0
  302. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/tests/test_open_redirect_destinations.py +0 -0
  303. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/tests/test_operator_sources.py +0 -0
  304. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/tests/test_packaging.py +0 -0
  305. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/tests/test_parallel.py +0 -0
  306. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/tests/test_parse_warnings.py +0 -0
  307. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/tests/test_parser.py +0 -0
  308. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/tests/test_password_hashes.py +0 -0
  309. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/tests/test_plaintext_credentials.py +0 -0
  310. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/tests/test_plugins.py +0 -0
  311. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/tests/test_powershell_file_operand.py +0 -0
  312. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/tests/test_project.py +0 -0
  313. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/tests/test_project_models.py +0 -0
  314. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/tests/test_project_validators.py +0 -0
  315. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/tests/test_provenance.py +0 -0
  316. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/tests/test_pyir_imports.py +0 -0
  317. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/tests/test_read_entry_points.py +0 -0
  318. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/tests/test_real_code_precision.py +0 -0
  319. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/tests/test_redirect_targets.py +0 -0
  320. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/tests/test_refutation.py +0 -0
  321. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/tests/test_refutation_evidence.py +0 -0
  322. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/tests/test_regression.py +0 -0
  323. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/tests/test_relative_paths.py +0 -0
  324. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/tests/test_relative_root.py +0 -0
  325. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/tests/test_remaining_limits.py +0 -0
  326. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/tests/test_reporters.py +0 -0
  327. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/tests/test_rule_descriptions.py +0 -0
  328. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/tests/test_rule_descriptions_of_given_plugins.py +0 -0
  329. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/tests/test_safe_arguments.py +0 -0
  330. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/tests/test_sarif_injection.py +0 -0
  331. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/tests/test_scale.py +0 -0
  332. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/tests/test_scopes.py +0 -0
  333. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/tests/test_secrets_sbom.py +0 -0
  334. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/tests/test_selection_sink_proofs.py +0 -0
  335. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/tests/test_self_state.py +0 -0
  336. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/tests/test_sequence_conditions.py +0 -0
  337. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/tests/test_settings_scope.py +0 -0
  338. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/tests/test_sink_called_result.py +0 -0
  339. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/tests/test_sink_merge.py +0 -0
  340. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/tests/test_source_manager.py +0 -0
  341. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/tests/test_ssa.py +0 -0
  342. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/tests/test_ssrf_destinations.py +0 -0
  343. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/tests/test_ssrf_targets.py +0 -0
  344. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/tests/test_structured_positions.py +0 -0
  345. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/tests/test_summary_external_call_order.py +0 -0
  346. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/tests/test_summary_fixpoint.py +0 -0
  347. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/tests/test_summary_reachability.py +0 -0
  348. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/tests/test_summary_sanitizers.py +0 -0
  349. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/tests/test_suppressions.py +0 -0
  350. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/tests/test_symbol_resolution.py +0 -0
  351. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/tests/test_symbols.py +0 -0
  352. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/tests/test_syntactic_rules.py +0 -0
  353. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/tests/test_syntax_control_flow.py +0 -0
  354. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/tests/test_syntax_coverage.py +0 -0
  355. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/tests/test_syntax_expressions.py +0 -0
  356. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/tests/test_taint.py +0 -0
  357. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/tests/test_tar_implementations.py +0 -0
  358. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/tests/test_template_comment_continuations.py +0 -0
  359. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/tests/test_template_context_flows.py +0 -0
  360. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/tests/test_template_escaping.py +0 -0
  361. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/tests/test_template_filter_calls.py +0 -0
  362. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/tests/test_template_filter_overrides.py +0 -0
  363. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/tests/test_template_open_constructs.py +0 -0
  364. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/tests/test_template_page_composition.py +0 -0
  365. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/tests/test_template_request_processor.py +0 -0
  366. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/tests/test_template_tag_backtracking.py +0 -0
  367. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/tests/test_tornado_bottle_models.py +0 -0
  368. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/tests/test_unreadable_templates.py +0 -0
  369. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/tests/test_unsafe_xml_risk.py +0 -0
  370. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/tests/test_url_proof.py +0 -0
  371. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/tests/test_url_secret_placeholders.py +0 -0
  372. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/tests/test_vendored_context.py +0 -0
  373. {coretrace_python_analyzer-0.24.0 → coretrace_python_analyzer-0.25.0}/tests/test_vex.py +0 -0
@@ -1,5 +1,47 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.25.0 (2026-11-01)
4
+
5
+ ### Compatibility and migration
6
+
7
+ - The filters a template's render reaches change, and with them the advisories reported
8
+ as `exploitable-vulnerability` through a filter, which may appear or disappear: a
9
+ render now follows a cycle of includes as far as Django may render it (#284), and
10
+ places a template's blocks where its chain of extends places them (#285).
11
+ - Plugin API, additive: `coretrace_python.source.LineIndex` gives the line and column of
12
+ each offset of a text, lines counted as `lines_of` counts them (#288).
13
+
14
+ ### Templates
15
+
16
+ - A cycle of includes no longer stops the collection of the filters a render reaches
17
+ (#284). A template reached again on the way contributes what it reaches, its names
18
+ mapped through each include, as Django renders it when the project's conditions let
19
+ the cycle turn: a template including itself with other bindings, a recursive tree, or
20
+ a parent including the child that extends it. A filter reached this way may be
21
+ reported as `exploitable-vulnerability` where it was not. Where no cycle is reached,
22
+ the filters and their order do not change.
23
+ - A template's render is put together over its extends chain as Django places its
24
+ blocks (#285). A filter in a block no template of the chain places, or in a block
25
+ whose only placeholder a child replaces, is no longer reached, and an advisory naming
26
+ it is no longer `exploitable-vulnerability` through it. A block a child redefines with
27
+ `{{ block.super }}` inside a block it replaces now renders the parent's definition and
28
+ what it includes. Where the chain cannot be followed to a root, every block counts as
29
+ placed, as before.
30
+
31
+ ### Performance
32
+
33
+ - Templates in a cycle of includes are no longer walked again on every path (#284): 20
34
+ levels of doubled includes closed into a cycle took 56 s, and 40 templates including
35
+ one another more than a minute; both now take less than a second.
36
+ - The positions in a template are no longer counted from its start, for each filter,
37
+ include, extends and load (#288): a template of 2 MB applying 160,000 filters took
38
+ 50 s to analyse, and now takes 3 s.
39
+
40
+ ### Documentation
41
+
42
+ - `docs/usage.md` documents how a cycle of includes is followed (#284) and where the
43
+ chain of extends places a template's blocks (#285).
44
+
3
45
  ## 0.24.0 (2026-10-23)
4
46
 
5
47
  ### Compatibility and migration
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: coretrace-python-analyzer
3
- Version: 0.24.0
3
+ Version: 0.25.0
4
4
  Summary: Static security analysis infrastructure for Python code
5
5
  Project-URL: Homepage, https://github.com/CoreTrace/coretrace-python-analyzer
6
6
  Project-URL: Repository, https://github.com/CoreTrace/coretrace-python-analyzer
@@ -374,7 +374,7 @@ the directory of the checked file; a path outside it is printed as it is.
374
374
  ```json
375
375
  {
376
376
  "schema_version": 1,
377
- "tool": {"name": "coretrace-python-analyzer", "version": "0.24.0"},
377
+ "tool": {"name": "coretrace-python-analyzer", "version": "0.25.0"},
378
378
  "root": "/home/me/project",
379
379
  "findings": [
380
380
  {
@@ -438,7 +438,7 @@ bytes. A single-file check lists no components.
438
438
 
439
439
  ```json
440
440
  "tool": {
441
- "name": "coretrace-python-analyzer", "version": "0.24.0",
441
+ "name": "coretrace-python-analyzer", "version": "0.25.0",
442
442
  "components": [
443
443
  {"kind": "plugin", "name": "curated-advisories", "version": "2026.09.25", "digest": "sha256:…"},
444
444
  {"kind": "advisories", "name": "advisories.json", "digest": "sha256:…"}
@@ -601,10 +601,18 @@ certain of it:
601
601
  - The filter's value is a context variable, directly or through `{% for %}` and
602
602
  `{% with %}`, the templates the template includes or extends by a constant name, the
603
603
  arguments of the filters before it, or the output of a `{% filter %}` block. A name a
604
- tag binds shadows the context, and `{% include ... only %}` passes none of it.
605
- - The filter renders: a template extending another renders only its blocks, which
606
- replace the blocks of that name in what it extends, unless the block renders
607
- `{{ block.super }}`, which keeps the parent's content and the filters it applies.
604
+ tag binds shadows the context, and `{% include ... only %}` passes none of it. A cycle
605
+ of includes is followed as far as Django may render it: a template reached again on
606
+ the way applies its filters to what each include binds at every level, as a template
607
+ including itself with other bindings, or a recursive tree, does (#284).
608
+ - The filter renders: a template extending another renders only its blocks, and only
609
+ where its chain of parents places them (#285). The root's blocks are placed; a placed
610
+ block renders its most derived definition, and through `{{ block.super }}` the next
611
+ ones up, which keep the parent's content and the filters it applies; the blocks a
612
+ rendered definition holds are placed in turn. A block no template of the chain
613
+ places never renders, nor does a block whose only placeholder a child replaces. When
614
+ the chain cannot be followed to a root (a parent named by an expression, not found or
615
+ in several files, or an extends cycle), every block of the chain counts as placed.
608
616
  - One file has the template's name; of two files of the same name, which one renders
609
617
  depends on the loaders.
610
618
 
@@ -815,7 +823,7 @@ project's behalf would go unseen. Without a lock file, a package is never
815
823
  `not_affected`. The document's `@id` derives from its statements, so two runs with the
816
824
  same result share it; its `author` is `Unknown Author`, as OpenVEX tools write when they
817
825
  cannot know it. Its `tooling` names the analyzer and each component with its digest
818
- (`coretrace-python-analyzer 0.24.0; curated-advisories 2026.09.25 (sha256:…)`), so the
826
+ (`coretrace-python-analyzer 0.25.0; curated-advisories 2026.09.25 (sha256:…)`), so the
819
827
  `@id` changes with the advisory data a statement was decided with.
820
828
 
821
829
  ## Large projects
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "coretrace-python-analyzer"
7
- version = "0.24.0"
7
+ version = "0.25.0"
8
8
  description = "Static security analysis infrastructure for Python code"
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.11"
@@ -1,4 +1,4 @@
1
1
  """CoreTrace's Python static analysis frontend."""
2
2
 
3
- __version__ = "0.24.0"
3
+ __version__ = "0.25.0"
4
4
 
@@ -1,6 +1,12 @@
1
1
  """Source storage and location primitives."""
2
2
 
3
- from coretrace_python.source.manager import LINE_BREAK, SourceManager, decode_text, lines_of
3
+ from coretrace_python.source.manager import (
4
+ LINE_BREAK,
5
+ LineIndex,
6
+ SourceManager,
7
+ decode_text,
8
+ lines_of,
9
+ )
4
10
  from coretrace_python.source.model import (
5
11
  FileLocation,
6
12
  ImportName,
@@ -14,6 +20,7 @@ __all__ = [
14
20
  "LINE_BREAK",
15
21
  "FileLocation",
16
22
  "ImportName",
23
+ "LineIndex",
17
24
  "Location",
18
25
  "SourceFile",
19
26
  "SourceId",
@@ -3,6 +3,7 @@
3
3
  from __future__ import annotations
4
4
 
5
5
  import re
6
+ from bisect import bisect_right
6
7
  from pathlib import Path
7
8
 
8
9
  from coretrace_python.source.model import ImportName, SourceFile, SourceId
@@ -86,6 +87,26 @@ def lines_of(text: str) -> list[str]:
86
87
  return lines
87
88
 
88
89
 
90
+ class LineIndex:
91
+ """The line and column of each offset of a text, lines counted as ``lines_of``
92
+ counts them. The start of each line is found once; the line of an offset is then
93
+ found by bisection, in time logarithmic in the lines."""
94
+
95
+ def __init__(self, text: str) -> None:
96
+ self._starts = [0, *(match.end() for match in LINE_BREAK.finditer(text))]
97
+
98
+ def position(self, offset: int) -> tuple[int, int]:
99
+ """The one-based line and column of ``offset``."""
100
+
101
+ line = bisect_right(self._starts, offset)
102
+ return line, offset - self._starts[line - 1] + 1
103
+
104
+ def offset(self, line: int, column: int) -> int:
105
+ """The offset of the one-based ``line`` and ``column``."""
106
+
107
+ return self._starts[line - 1] + column - 1
108
+
109
+
89
110
  class SourceManager:
90
111
  """Own source text and return one canonical object for each source ID."""
91
112
 
@@ -16,9 +16,8 @@ import hashlib
16
16
  import json
17
17
  import re
18
18
  import tomllib
19
- from bisect import bisect_right
20
19
 
21
- from coretrace_python.source.manager import LINE_BREAK, lines_of
20
+ from coretrace_python.source.manager import LineIndex, lines_of
22
21
  from coretrace_python.source.model import FileLocation, SourceId
23
22
 
24
23
  Pointer = tuple[str | int, ...]
@@ -54,22 +53,6 @@ def pointer_text(path: Pointer) -> str:
54
53
  return "".join("/" + str(part).replace("~", "~0").replace("/", "~1") for part in path)
55
54
 
56
55
 
57
- class _Lines:
58
- def __init__(self, text: str) -> None:
59
- self._starts = [0, *(match.end() for match in LINE_BREAK.finditer(text))]
60
-
61
- def position(self, offset: int) -> tuple[int, int]:
62
- """The one-based line and column of ``offset``."""
63
-
64
- line = bisect_right(self._starts, offset)
65
- return line, offset - self._starts[line - 1] + 1
66
-
67
- def offset(self, line: int, column: int) -> int:
68
- """The offset of the one-based ``line`` and ``column``."""
69
-
70
- return self._starts[line - 1] + column - 1
71
-
72
-
73
56
  def _same(found: object, value: object) -> bool:
74
57
  return type(found) is type(value) and found == value
75
58
 
@@ -87,7 +70,7 @@ class JsonPositions:
87
70
  raise ValueError("trailing text")
88
71
  except (ValueError, IndexError, RecursionError):
89
72
  self._values = {}
90
- self._lines = _Lines(text)
73
+ self._lines = LineIndex(text)
91
74
 
92
75
  def locate(self, path: Pointer, value: object) -> tuple[int, int] | None:
93
76
  """The line and column ``value`` starts at under ``path``, or None when the text
@@ -183,7 +166,7 @@ class TomlPositions:
183
166
  self._lines = lines_of(text)
184
167
  # The text with one line feed per line break, where arrays are read, once each.
185
168
  self._text = "\n".join(self._lines)
186
- self._offsets = _Lines(self._text)
169
+ self._offsets = LineIndex(self._text)
187
170
  self._arrays: dict[int, list[tuple[int, int]]] = {}
188
171
  state = _LexState()
189
172
  for number, line in enumerate(self._lines, start=1):