scantool 0.11.6__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 (154) hide show
  1. scantool-0.11.6/.github/workflows/publish.yml +39 -0
  2. scantool-0.11.6/.github/workflows/test.yml +49 -0
  3. scantool-0.11.6/.gitignore +41 -0
  4. scantool-0.11.6/.python-version +1 -0
  5. scantool-0.11.6/CONTRIBUTING.md +1120 -0
  6. scantool-0.11.6/Dockerfile +21 -0
  7. scantool-0.11.6/LICENSE +21 -0
  8. scantool-0.11.6/PKG-INFO +493 -0
  9. scantool-0.11.6/README.md +450 -0
  10. scantool-0.11.6/examples/scan_remote_file.py +90 -0
  11. scantool-0.11.6/pyproject.toml +63 -0
  12. scantool-0.11.6/smithery.yaml +8 -0
  13. scantool-0.11.6/src/scantool/__init__.py +7 -0
  14. scantool-0.11.6/src/scantool/analyzers/__init__.py +114 -0
  15. scantool-0.11.6/src/scantool/analyzers/_analyzer_template.py +540 -0
  16. scantool-0.11.6/src/scantool/analyzers/base.py +252 -0
  17. scantool-0.11.6/src/scantool/analyzers/config_analyzer.py +471 -0
  18. scantool-0.11.6/src/scantool/analyzers/cpp_analyzer.py +278 -0
  19. scantool-0.11.6/src/scantool/analyzers/csharp_analyzer.py +296 -0
  20. scantool-0.11.6/src/scantool/analyzers/css_analyzer.py +216 -0
  21. scantool-0.11.6/src/scantool/analyzers/generic_analyzer.py +45 -0
  22. scantool-0.11.6/src/scantool/analyzers/go_analyzer.py +227 -0
  23. scantool-0.11.6/src/scantool/analyzers/html_analyzer.py +264 -0
  24. scantool-0.11.6/src/scantool/analyzers/java_analyzer.py +308 -0
  25. scantool-0.11.6/src/scantool/analyzers/markdown_analyzer.py +249 -0
  26. scantool-0.11.6/src/scantool/analyzers/models.py +99 -0
  27. scantool-0.11.6/src/scantool/analyzers/php_analyzer.py +295 -0
  28. scantool-0.11.6/src/scantool/analyzers/python_analyzer.py +568 -0
  29. scantool-0.11.6/src/scantool/analyzers/ruby_analyzer.py +350 -0
  30. scantool-0.11.6/src/scantool/analyzers/rust_analyzer.py +321 -0
  31. scantool-0.11.6/src/scantool/analyzers/skip_patterns.py +264 -0
  32. scantool-0.11.6/src/scantool/analyzers/sql_analyzer.py +244 -0
  33. scantool-0.11.6/src/scantool/analyzers/typescript_analyzer.py +293 -0
  34. scantool-0.11.6/src/scantool/call_graph.py +174 -0
  35. scantool-0.11.6/src/scantool/code_map.py +919 -0
  36. scantool-0.11.6/src/scantool/directory_formatter.py +370 -0
  37. scantool-0.11.6/src/scantool/entropy/__init__.py +5 -0
  38. scantool-0.11.6/src/scantool/entropy/callgraph.py +68 -0
  39. scantool-0.11.6/src/scantool/entropy/core.py +283 -0
  40. scantool-0.11.6/src/scantool/formatter.py +163 -0
  41. scantool-0.11.6/src/scantool/gitignore.py +164 -0
  42. scantool-0.11.6/src/scantool/glob_expander.py +48 -0
  43. scantool-0.11.6/src/scantool/preview.py +638 -0
  44. scantool-0.11.6/src/scantool/scanner.py +423 -0
  45. scantool-0.11.6/src/scantool/scanners/__init__.py +95 -0
  46. scantool-0.11.6/src/scantool/scanners/_template.py +340 -0
  47. scantool-0.11.6/src/scantool/scanners/base.py +175 -0
  48. scantool-0.11.6/src/scantool/scanners/c_cpp_scanner.py +605 -0
  49. scantool-0.11.6/src/scantool/scanners/csharp_scanner.py +633 -0
  50. scantool-0.11.6/src/scantool/scanners/css_scanner.py +571 -0
  51. scantool-0.11.6/src/scantool/scanners/go_scanner.py +339 -0
  52. scantool-0.11.6/src/scantool/scanners/html_scanner.py +573 -0
  53. scantool-0.11.6/src/scantool/scanners/image_scanner.py +241 -0
  54. scantool-0.11.6/src/scantool/scanners/java_scanner.py +499 -0
  55. scantool-0.11.6/src/scantool/scanners/markdown_scanner.py +369 -0
  56. scantool-0.11.6/src/scantool/scanners/php_scanner.py +539 -0
  57. scantool-0.11.6/src/scantool/scanners/python_scanner.py +329 -0
  58. scantool-0.11.6/src/scantool/scanners/ruby_scanner.py +339 -0
  59. scantool-0.11.6/src/scantool/scanners/rust_scanner.py +481 -0
  60. scantool-0.11.6/src/scantool/scanners/scss_scanner.py +563 -0
  61. scantool-0.11.6/src/scantool/scanners/sql_scanner.py +815 -0
  62. scantool-0.11.6/src/scantool/scanners/text_scanner.py +101 -0
  63. scantool-0.11.6/src/scantool/scanners/typescript_scanner.py +505 -0
  64. scantool-0.11.6/src/scantool/scanners/zig_scanner.py +432 -0
  65. scantool-0.11.6/src/scantool/server.py +813 -0
  66. scantool-0.11.6/tests/analyzers/test_call_graph.py +187 -0
  67. scantool-0.11.6/tests/analyzers/test_code_map.py +210 -0
  68. scantool-0.11.6/tests/analyzers/test_config_analyzer.py +416 -0
  69. scantool-0.11.6/tests/analyzers/test_cpp_analyzer.py +546 -0
  70. scantool-0.11.6/tests/analyzers/test_csharp_analyzer.py +423 -0
  71. scantool-0.11.6/tests/analyzers/test_java_analyzer.py +622 -0
  72. scantool-0.11.6/tests/analyzers/test_markdown_analyzer.py +411 -0
  73. scantool-0.11.6/tests/analyzers/test_php_analyzer.py +500 -0
  74. scantool-0.11.6/tests/analyzers/test_python_analyzer.py +273 -0
  75. scantool-0.11.6/tests/analyzers/test_ruby_analyzer.py +499 -0
  76. scantool-0.11.6/tests/analyzers/test_rust_analyzer.py +531 -0
  77. scantool-0.11.6/tests/analyzers/test_skip_patterns.py +338 -0
  78. scantool-0.11.6/tests/analyzers/test_sql_analyzer.py +349 -0
  79. scantool-0.11.6/tests/c_cpp/samples/basic.c +59 -0
  80. scantool-0.11.6/tests/c_cpp/samples/basic.cpp +138 -0
  81. scantool-0.11.6/tests/c_cpp/samples/basic.h +141 -0
  82. scantool-0.11.6/tests/c_cpp/samples/edge_cases.cpp +277 -0
  83. scantool-0.11.6/tests/c_cpp/test_c_cpp.py +285 -0
  84. scantool-0.11.6/tests/conftest.py +107 -0
  85. scantool-0.11.6/tests/csharp/samples/Basic.cs +169 -0
  86. scantool-0.11.6/tests/csharp/samples/Broken.cs +66 -0
  87. scantool-0.11.6/tests/csharp/samples/EdgeCases.cs +348 -0
  88. scantool-0.11.6/tests/csharp/test_csharp.py +419 -0
  89. scantool-0.11.6/tests/css/basic.css +114 -0
  90. scantool-0.11.6/tests/css/broken.css +60 -0
  91. scantool-0.11.6/tests/css/edge_cases.css +125 -0
  92. scantool-0.11.6/tests/css/test_css.py +310 -0
  93. scantool-0.11.6/tests/go/samples/basic.go +90 -0
  94. scantool-0.11.6/tests/go/samples/broken.go +44 -0
  95. scantool-0.11.6/tests/go/samples/edge_cases.go +148 -0
  96. scantool-0.11.6/tests/go/test_go.py +171 -0
  97. scantool-0.11.6/tests/html/basic.html +78 -0
  98. scantool-0.11.6/tests/html/broken.html +49 -0
  99. scantool-0.11.6/tests/html/edge_cases.html +102 -0
  100. scantool-0.11.6/tests/html/test_html.py +390 -0
  101. scantool-0.11.6/tests/images/samples/large_noisy.png +0 -0
  102. scantool-0.11.6/tests/images/samples/large_photo.png +0 -0
  103. scantool-0.11.6/tests/images/samples/test_icon.png +0 -0
  104. scantool-0.11.6/tests/images/samples/test_logo.png +0 -0
  105. scantool-0.11.6/tests/images/samples/test_photo.jpg +0 -0
  106. scantool-0.11.6/tests/images/samples/unused_alpha.png +0 -0
  107. scantool-0.11.6/tests/images/test_images.py +193 -0
  108. scantool-0.11.6/tests/java/samples/Basic.java +104 -0
  109. scantool-0.11.6/tests/java/samples/Broken.java +53 -0
  110. scantool-0.11.6/tests/java/samples/EdgeCases.java +280 -0
  111. scantool-0.11.6/tests/java/test_java.py +279 -0
  112. scantool-0.11.6/tests/markdown/samples/basic.md +118 -0
  113. scantool-0.11.6/tests/markdown/samples/edge_cases.md +184 -0
  114. scantool-0.11.6/tests/markdown/test_markdown.py +310 -0
  115. scantool-0.11.6/tests/php/samples/basic.php +132 -0
  116. scantool-0.11.6/tests/php/samples/broken.php +57 -0
  117. scantool-0.11.6/tests/php/samples/edge_cases.php +256 -0
  118. scantool-0.11.6/tests/php/test_php.py +296 -0
  119. scantool-0.11.6/tests/python/samples/basic.py +61 -0
  120. scantool-0.11.6/tests/python/samples/broken.py +43 -0
  121. scantool-0.11.6/tests/python/samples/edge_cases.py +161 -0
  122. scantool-0.11.6/tests/python/test_python.py +124 -0
  123. scantool-0.11.6/tests/ruby/samples/basic.rb +75 -0
  124. scantool-0.11.6/tests/ruby/samples/broken.rb +55 -0
  125. scantool-0.11.6/tests/ruby/samples/edge_cases.rb +223 -0
  126. scantool-0.11.6/tests/ruby/test_ruby.py +256 -0
  127. scantool-0.11.6/tests/rust/__init__.py +1 -0
  128. scantool-0.11.6/tests/rust/samples/basic.rs +89 -0
  129. scantool-0.11.6/tests/rust/samples/broken.rs +57 -0
  130. scantool-0.11.6/tests/rust/samples/edge_cases.rs +187 -0
  131. scantool-0.11.6/tests/rust/test_rust.py +188 -0
  132. scantool-0.11.6/tests/scss/_variables.scss +49 -0
  133. scantool-0.11.6/tests/scss/basic.scss +124 -0
  134. scantool-0.11.6/tests/scss/edge_cases.scss +111 -0
  135. scantool-0.11.6/tests/scss/test_scss.py +222 -0
  136. scantool-0.11.6/tests/sql/samples/basic.sql +34 -0
  137. scantool-0.11.6/tests/sql/samples/broken.sql +16 -0
  138. scantool-0.11.6/tests/sql/samples/demo.sql +43 -0
  139. scantool-0.11.6/tests/sql/samples/edge_cases.sql +63 -0
  140. scantool-0.11.6/tests/sql/samples/postgresql.sql +73 -0
  141. scantool-0.11.6/tests/sql/test_sql.py +310 -0
  142. scantool-0.11.6/tests/test_integration.py +118 -0
  143. scantool-0.11.6/tests/test_preview.py +232 -0
  144. scantool-0.11.6/tests/text/samples/basic.txt +76 -0
  145. scantool-0.11.6/tests/text/samples/edge_cases.txt +74 -0
  146. scantool-0.11.6/tests/text/test_text.py +122 -0
  147. scantool-0.11.6/tests/typescript/samples/basic.ts +116 -0
  148. scantool-0.11.6/tests/typescript/samples/jsx.tsx +200 -0
  149. scantool-0.11.6/tests/typescript/test_typescript.py +189 -0
  150. scantool-0.11.6/tests/zig/samples/basic.zig +61 -0
  151. scantool-0.11.6/tests/zig/samples/broken.zig +38 -0
  152. scantool-0.11.6/tests/zig/samples/edge_cases.zig +131 -0
  153. scantool-0.11.6/tests/zig/test_zig.py +153 -0
  154. scantool-0.11.6/uv.lock +1928 -0
@@ -0,0 +1,39 @@
1
+ name: Publish to PyPI
2
+
3
+ on:
4
+ release:
5
+ types: [published]
6
+
7
+ permissions:
8
+ contents: read
9
+
10
+ jobs:
11
+ publish:
12
+ name: Build and publish to PyPI
13
+ runs-on: ubuntu-latest
14
+ environment:
15
+ name: pypi
16
+ url: https://pypi.org/p/scantool
17
+ permissions:
18
+ id-token: write # Required for trusted publishing
19
+ attestations: write # Required for package attestations
20
+
21
+ steps:
22
+ - name: Checkout code
23
+ uses: actions/checkout@v4
24
+
25
+ - name: Set up Python
26
+ uses: actions/setup-python@v5
27
+ with:
28
+ python-version: '3.11'
29
+
30
+ - name: Install uv
31
+ uses: astral-sh/setup-uv@v4
32
+
33
+ - name: Build package
34
+ run: uv build
35
+
36
+ - name: Publish to PyPI
37
+ uses: pypa/gh-action-pypi-publish@release/v1
38
+ # This uses PyPI Trusted Publishers - no token needed!
39
+ # Just configure on PyPI: https://pypi.org/manage/account/publishing/
@@ -0,0 +1,49 @@
1
+ name: Tests
2
+
3
+ on:
4
+ push:
5
+ branches: [main]
6
+ pull_request:
7
+ branches: [main]
8
+
9
+ jobs:
10
+ test:
11
+ name: Test on ${{ matrix.os }} with Python ${{ matrix.python-version }}
12
+ runs-on: ${{ matrix.os }}
13
+ strategy:
14
+ fail-fast: false
15
+ matrix:
16
+ os: [ubuntu-latest, macos-latest, windows-latest]
17
+ python-version: ['3.11', '3.12', '3.13']
18
+
19
+ steps:
20
+ - name: Checkout code
21
+ uses: actions/checkout@v4
22
+
23
+ - name: Set up Python ${{ matrix.python-version }}
24
+ uses: actions/setup-python@v5
25
+ with:
26
+ python-version: ${{ matrix.python-version }}
27
+
28
+ - name: Install uv
29
+ uses: astral-sh/setup-uv@v4
30
+ with:
31
+ enable-cache: true
32
+
33
+ - name: Install dependencies
34
+ run: uv sync --locked --group dev
35
+
36
+ - name: Run tests
37
+ run: uv run pytest -v
38
+
39
+ - name: Run tests with coverage
40
+ if: matrix.os == 'ubuntu-latest' && matrix.python-version == '3.13'
41
+ run: |
42
+ uv run pytest --cov=src/scantool --cov-report=xml
43
+
44
+ - name: Upload coverage
45
+ if: matrix.os == 'ubuntu-latest' && matrix.python-version == '3.13'
46
+ uses: codecov/codecov-action@v4
47
+ with:
48
+ files: ./coverage.xml
49
+ fail_ci_if_error: false
@@ -0,0 +1,41 @@
1
+ # Python-generated files
2
+ __pycache__/
3
+ *.py[oc]
4
+ build/
5
+ dist/
6
+ wheels/
7
+ *.egg-info
8
+ .eggs/
9
+
10
+ # Virtual environments
11
+ .venv
12
+
13
+ # UV
14
+ # uv.lock
15
+
16
+ # IDE
17
+ .vscode/
18
+ .idea/
19
+ *.swp
20
+ *.swo
21
+
22
+ # OS
23
+ .DS_Store
24
+
25
+ # Temporary files
26
+ *.tmp
27
+ *.bak
28
+ .cache/
29
+
30
+ # Dev notes and prototypes (keep local, don't commit)
31
+ MILESTONE_*.md
32
+ *_PROPOSAL.md
33
+ *_EVALUATION*.md
34
+ *_REPORT.md
35
+ CODEMAP_*.md
36
+ STYLE_GUIDE.md
37
+ debug_*.py
38
+ prototype_*.py
39
+ /test_*.py
40
+ # Note: /test_*.py only ignores root test files, not tests/ directory
41
+ .coverage
@@ -0,0 +1 @@
1
+ 3.13