argusf 0.1.0.dev0__py3-none-any.whl
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.
- argusf/__init__.py +3 -0
- argusf/analysis/__init__.py +14 -0
- argusf/analysis/engine.py +100 -0
- argusf/analysis/rule.py +45 -0
- argusf/analysis/rules/__init__.py +5 -0
- argusf/analysis/rules/documentation.py +30 -0
- argusf/analysis/rules/findings.py +67 -0
- argusf/analysis/rules/registry.py +22 -0
- argusf/analysis/rules/rulesets/__init__.py +4 -0
- argusf/analysis/rules/rulesets/rgus/__init__.py +22 -0
- argusf/analysis/rules/rulesets/rgus/rgus001_no_goto.py +54 -0
- argusf/analysis/rules/rulesets/rgus/rgus002_common_block.py +55 -0
- argusf/analysis/rules/rulesets/rgus/rgus003_equivalence.py +55 -0
- argusf/analysis/rules/rulesets/rgus/rgus004_implicit_typing.py +129 -0
- argusf/analysis/rules/rulesets/rgus/rgus005_arithmetic_if.py +62 -0
- argusf/analysis/rules/rulesets/rgus/rgus006_entry_statement.py +67 -0
- argusf/analysis/rules/rulesets/rgus/rgus007_pause_statement.py +93 -0
- argusf/analysis/rules/rulesets/rgus/rgus008_todo_comment.py +100 -0
- argusf/analysis/rules/rulesets/rgus/rgus009_unsorted_use_statements.py +258 -0
- argusf/analysis/rules/selection.py +83 -0
- argusf/analysis/suppression.py +92 -0
- argusf/analysis/syntax_errors.py +41 -0
- argusf/autofix/__init__.py +26 -0
- argusf/autofix/applier.py +130 -0
- argusf/autofix/context.py +82 -0
- argusf/autofix/diff.py +39 -0
- argusf/autofix/edits.py +31 -0
- argusf/autofix/engine.py +192 -0
- argusf/autofix/models.py +39 -0
- argusf/autofix/source.py +68 -0
- argusf/autofix/writer.py +53 -0
- argusf/cache/__init__.py +5 -0
- argusf/cache/backend.py +294 -0
- argusf/cli.py +428 -0
- argusf/config/__init__.py +1 -0
- argusf/config/config_resolver.py +212 -0
- argusf/config/errors.py +8 -0
- argusf/config/file_reader/__init__.py +3 -0
- argusf/config/file_reader/reader.py +58 -0
- argusf/config/models.py +110 -0
- argusf/config/validation.py +113 -0
- argusf/constants.py +66 -0
- argusf/diagnostics.py +45 -0
- argusf/discovery/__init__.py +3 -0
- argusf/discovery/backend.py +250 -0
- argusf/discovery/gitignore.py +125 -0
- argusf/discovery/repo.py +30 -0
- argusf/hashing/__init__.py +5 -0
- argusf/hashing/hash.py +48 -0
- argusf/ir/__init__.py +1 -0
- argusf/ir/models/__init__.py +49 -0
- argusf/ir/models/findings.py +74 -0
- argusf/ir/models/source.py +199 -0
- argusf/orchestrator.py +127 -0
- argusf/parser/__init__.py +1 -0
- argusf/parser/backend.py +24 -0
- argusf/parser/treesitter/__init__.py +1 -0
- argusf/parser/treesitter/backend.py +157 -0
- argusf/parser/treesitter/walker/__init__.py +5 -0
- argusf/parser/treesitter/walker/handlers.py +209 -0
- argusf/parser/treesitter/walker/walker.py +82 -0
- argusf/registry/__init__.py +3 -0
- argusf/registry/registry.py +69 -0
- argusf/reporting/__init__.py +22 -0
- argusf/reporting/formatting.py +162 -0
- argusf/reporting/registry.py +20 -0
- argusf/reporting/reporters/__init__.py +15 -0
- argusf/reporting/reporters/base.py +29 -0
- argusf/reporting/reporters/concise.py +35 -0
- argusf/reporting/reporters/diff.py +30 -0
- argusf/reporting/reporters/json.py +59 -0
- argusf/reporting/reporters/null.py +21 -0
- argusf/reporting/reporters/standard.py +78 -0
- argusf/reporting/reporters/statistics.py +99 -0
- argusf-0.1.0.dev0.dist-info/METADATA +166 -0
- argusf-0.1.0.dev0.dist-info/RECORD +79 -0
- argusf-0.1.0.dev0.dist-info/WHEEL +4 -0
- argusf-0.1.0.dev0.dist-info/entry_points.txt +3 -0
- argusf-0.1.0.dev0.dist-info/licenses/LICENSE +21 -0
|
@@ -0,0 +1,166 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: argusf
|
|
3
|
+
Version: 0.1.0.dev0
|
|
4
|
+
Summary: A ruff-inspired linter for Fortran 90
|
|
5
|
+
Keywords: fortran,linter,static-analysis,static-analyzer,code-quality,fortran90,ruff
|
|
6
|
+
Author: Matthew McAteer
|
|
7
|
+
License-Expression: MIT
|
|
8
|
+
License-File: LICENSE
|
|
9
|
+
Classifier: Development Status :: 3 - Alpha
|
|
10
|
+
Classifier: Environment :: Console
|
|
11
|
+
Classifier: Intended Audience :: Developers
|
|
12
|
+
Classifier: Operating System :: OS Independent
|
|
13
|
+
Classifier: Programming Language :: Fortran
|
|
14
|
+
Classifier: Programming Language :: Python :: 3
|
|
15
|
+
Classifier: Programming Language :: Python :: 3 :: Only
|
|
16
|
+
Classifier: Programming Language :: Python :: 3.14
|
|
17
|
+
Classifier: Topic :: Software Development :: Quality Assurance
|
|
18
|
+
Requires-Dist: click>=8.3.3
|
|
19
|
+
Requires-Dist: msgpack>=1.2.0
|
|
20
|
+
Requires-Dist: packaging>=26.2
|
|
21
|
+
Requires-Dist: pathspec>=1.1.1
|
|
22
|
+
Requires-Dist: tree-sitter==0.25.2
|
|
23
|
+
Requires-Dist: tree-sitter-fortran>=0.6.0
|
|
24
|
+
Requires-Python: >=3.14
|
|
25
|
+
Project-URL: Homepage, https://github.com/mmcateer13/argusf
|
|
26
|
+
Project-URL: Repository, https://github.com/mmcateer13/argusf
|
|
27
|
+
Project-URL: Issues, https://github.com/mmcateer13/argusf/issues
|
|
28
|
+
Description-Content-Type: text/markdown
|
|
29
|
+
|
|
30
|
+
# argusf
|
|
31
|
+
|
|
32
|
+
<!-- Badges -->
|
|
33
|
+
[](LICENSE)
|
|
34
|
+
[](https://www.python.org/)
|
|
35
|
+
<!-- [](https://github.com/mmcateer13/argusf/actions) -->
|
|
36
|
+
|
|
37
|
+
A [ruff](https://github.com/astral-sh/ruff)-inspired linter for Fortran 90.
|
|
38
|
+
|
|
39
|
+
[Issues](https://github.com/mmcateer13/argusf/issues) | [Contributing](CONTRIBUTING.md) | [Security](SECURITY.md)
|
|
40
|
+
|
|
41
|
+
## Table of Contents
|
|
42
|
+
|
|
43
|
+
1. [What is argusf?](#what-is-argusf)
|
|
44
|
+
2. [Current State](#current-state)
|
|
45
|
+
3. [Getting Started](#getting-started)
|
|
46
|
+
4. [Available Rules](#available-rules)
|
|
47
|
+
5. [Contributing & Support](#contributing--support)
|
|
48
|
+
6. [Acknowledgements](#acknowledgements)
|
|
49
|
+
7. [License](#license)
|
|
50
|
+
|
|
51
|
+
## What is argusf?
|
|
52
|
+
|
|
53
|
+
argusf is a linter for Fortran 90 codebases, designed with the philosophy of tools like [ruff](https://github.com/astral-sh/ruff): opinionated, and easy to integrate into existing workflows. It analyses your Fortran 90 source files and reports style and quality issues to help you maintain a consistent, readable codebase.
|
|
54
|
+
|
|
55
|
+
- 🔧 **Zero configuration required** — sensible defaults out of the box; customise via `argusf.toml` when you need to
|
|
56
|
+
- 📁 **Scan a file or a whole directory** — just point it at your code
|
|
57
|
+
- 📍 **Precise output** — violations reported with file, line, and column
|
|
58
|
+
- 🔄 **JSON output support** — easy to integrate into CI pipelines and tooling
|
|
59
|
+
- 🎯 **Fortran 90 focused** — purpose-built for the language
|
|
60
|
+
|
|
61
|
+
## Current State
|
|
62
|
+
|
|
63
|
+
argusf is an early-stage project. The core internals are working, but the available ruleset is still extremely limited. If you try argusf and encounter unexpected behaviour, missing rules you would find useful, or other issues, please [open an issue](https://github.com/mmcateer13/argusf/issues) — early feedback is especially valuable at this stage.
|
|
64
|
+
|
|
65
|
+
## Getting Started
|
|
66
|
+
|
|
67
|
+
### Installation
|
|
68
|
+
|
|
69
|
+
> [!NOTE]
|
|
70
|
+
> If you are planning to contribute to argusf, please see the [contributing guide](CONTRIBUTING.md) and [developer setup instructions](docs/dev_setup.md) instead.
|
|
71
|
+
|
|
72
|
+
argusf runs on macOS, Linux, and Windows. (Note that the [developer setup instructions](docs/dev_setup.md) currently target macOS and Linux only — this applies to setting up a development environment, not to running the tool.)
|
|
73
|
+
|
|
74
|
+
Installing argusf requires [uv](https://github.com/astral-sh/uv); if you do not already have it, follow the [uv installation guide](https://docs.astral.sh/uv/getting-started/installation/).
|
|
75
|
+
|
|
76
|
+
argusf is not yet available on PyPI. To install it, clone the repository and install it from the local checkout with `uv`, which builds it from source (no PyPI release required) and puts the `argusf` command on your `PATH`:
|
|
77
|
+
|
|
78
|
+
```bash
|
|
79
|
+
git clone https://github.com/mmcateer13/argusf.git
|
|
80
|
+
cd argusf
|
|
81
|
+
uv tool install --editable .
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
The `--editable` flag means a later `git pull` is picked up without reinstalling. To update after pulling — or if you installed without `--editable` — run `uv tool install --editable . --reinstall`.
|
|
85
|
+
|
|
86
|
+
### Usage
|
|
87
|
+
|
|
88
|
+
```bash
|
|
89
|
+
argusf check # Analyse the current directory
|
|
90
|
+
argusf check path/to/file.f90 # Analyse a single file
|
|
91
|
+
argusf check path/to/your/code/ # Analyse an entire directory
|
|
92
|
+
argusf check --output-format json path/to/your/code/ # Output findings as JSON
|
|
93
|
+
argusf check --fix path/to/your/code/ # Apply safe fixes automatically
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
### Configuration
|
|
97
|
+
|
|
98
|
+
argusf works out of the box with no configuration. To customise behaviour, add an `argusf.toml` file to the root of your project.
|
|
99
|
+
|
|
100
|
+
The snippet below is equivalent to argusf's out-of-the-box defaults — a handy central reference for what the tool does before you change anything. You only need to include the keys you want to override. It is a hand-maintained snapshot and may lag the code between releases; `argusf --help` and `argusf check --help` are the authoritative source for current defaults.
|
|
101
|
+
|
|
102
|
+
```toml
|
|
103
|
+
# Top-level options
|
|
104
|
+
include = ["*.F", "*.F77", "*.F90", "*.FOR", "*.FTN", "*.f", "*.f77", "*.f90", "*.for", "*.ftn"]
|
|
105
|
+
exclude = [
|
|
106
|
+
".argusf_cache", ".direnv", ".git", ".hg", ".idea", ".mypy_cache",
|
|
107
|
+
".pytest_cache", ".ruff_cache", ".svn", ".venv", ".vscode",
|
|
108
|
+
"__pycache__", "_build", "bin", "build", "dist", "obj", "venv",
|
|
109
|
+
]
|
|
110
|
+
extend_include = []
|
|
111
|
+
extend_exclude = []
|
|
112
|
+
respect_gitignore = true
|
|
113
|
+
cache_dir = ".argusf_cache"
|
|
114
|
+
no_cache = false
|
|
115
|
+
output_format = "standard" # "standard", "concise", or "json"
|
|
116
|
+
# on_large_file is unset by default (guardrail off); set "warn" or "skip" to enable.
|
|
117
|
+
large_file_threshold = "1MB"
|
|
118
|
+
fix = false
|
|
119
|
+
fix_only = false
|
|
120
|
+
unsafe_fixes = false
|
|
121
|
+
show_fixes = false
|
|
122
|
+
|
|
123
|
+
[lint]
|
|
124
|
+
select = ["RGUS"]
|
|
125
|
+
extend_select = []
|
|
126
|
+
ignore = []
|
|
127
|
+
preview = false
|
|
128
|
+
fixable = ["ALL"]
|
|
129
|
+
unfixable = []
|
|
130
|
+
extend_fixable = []
|
|
131
|
+
task_tags = ["TODO", "FIXME", "XXX"]
|
|
132
|
+
# per_file_ignores is empty by default, e.g.:
|
|
133
|
+
# [lint.per_file_ignores]
|
|
134
|
+
# "tests/**" = ["RGUS001"]
|
|
135
|
+
```
|
|
136
|
+
|
|
137
|
+
For the full set of options and flags, run `argusf --help` and `argusf check --help` (and `--help` on any subcommand) — these are the authoritative reference for available arguments and options.
|
|
138
|
+
|
|
139
|
+
## Available Rules
|
|
140
|
+
|
|
141
|
+
Rule information lives in the CLI itself — use the `argusf rule` command to read a rule's documentation, including its rationale, an example, and any available fix:
|
|
142
|
+
|
|
143
|
+
```bash
|
|
144
|
+
argusf rule --all # documentation for every rule
|
|
145
|
+
argusf rule RGUS001 # documentation for a specific rule
|
|
146
|
+
```
|
|
147
|
+
|
|
148
|
+
Dedicated, per-rule documentation pages are planned for a later release. In the meantime, `argusf rule` is the authoritative source, and you can always read the current ruleset in the [source](https://github.com/mmcateer13/argusf/tree/development/src/argusf/analysis/rules/rulesets).
|
|
149
|
+
|
|
150
|
+
## Contributing & Support
|
|
151
|
+
|
|
152
|
+
Contributions are welcome. For bug reports, questions, or feature requests, please [open an issue](https://github.com/mmcateer13/argusf/issues).
|
|
153
|
+
|
|
154
|
+
If you would like to contribute code, see [CONTRIBUTING.md](CONTRIBUTING.md) for setup instructions and guidelines.
|
|
155
|
+
|
|
156
|
+
To report a security vulnerability, please follow the process in [SECURITY.md](SECURITY.md) rather than opening a public issue.
|
|
157
|
+
|
|
158
|
+
## Acknowledgements
|
|
159
|
+
|
|
160
|
+
This project is a faithful iteration on the dissertation project that I completed in my final year of study at [Queen's University Belfast](https://www.qub.ac.uk/), under the supervision of [Prof. Austen Rainer](https://pure.qub.ac.uk/en/persons/austen-rainer/) and [Dr. David Cutting](https://pure.qub.ac.uk/en/persons/david-cutting/). Their support throughout the project's initial development is part of the reason I felt so eager to continue this project today.
|
|
161
|
+
|
|
162
|
+
A shoutout to the [Astral](https://astral.sh/) team who designed tools such as [ruff](https://github.com/astral-sh/ruff), [uv](https://github.com/astral-sh/uv), and [ty](https://github.com/astral-sh/ty). As an engineer whose (fairly short) career experience is almost entirely Python, the improvements their tooling has made in developer experience across the Python ecosystem has been nothing short of extraordinary. This tool takes heavy inspiration from the `ruff` linter, in an attempt to take even a fraction of this transformative DevEx improvement into the Fortran community!
|
|
163
|
+
|
|
164
|
+
## License
|
|
165
|
+
|
|
166
|
+
argusf is licensed under the [MIT License](LICENSE).
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
argusf/__init__.py,sha256=XZ_bWR5Mh-KCT0Dm9J4o4Y6bqeyQEw5vPYWhEptcAtw,76
|
|
2
|
+
argusf/analysis/__init__.py,sha256=d_rL-fN7CkZDUI8maLm4BAXZYrPwUkLeUlvHVvETzsM,320
|
|
3
|
+
argusf/analysis/engine.py,sha256=onjVupURNHqNU4LTJdV_hD4VAstl37CInDEbniAQh2o,4090
|
|
4
|
+
argusf/analysis/rule.py,sha256=t1V-64mTWixKaUqzfqz6xhRCL5heOtU7PbLL_hFQSwo,1439
|
|
5
|
+
argusf/analysis/rules/__init__.py,sha256=6_PwhQr7zoT9swP8LE2MrYEYupVzSnF4pmiJooeHbpc,185
|
|
6
|
+
argusf/analysis/rules/documentation.py,sha256=TP5JDM3sEAF4qG7Sltt2sJTldEXL24Usoa3_CoB0do4,1080
|
|
7
|
+
argusf/analysis/rules/findings.py,sha256=SPpxo9v59yGyuRzGA5nivLk-d52PnhNgDx14kfiq_No,2083
|
|
8
|
+
argusf/analysis/rules/registry.py,sha256=wgP05PCrrCCZm0B92eJ0aydQXc1ohv4-4mvgqBdhi3E,601
|
|
9
|
+
argusf/analysis/rules/rulesets/__init__.py,sha256=DLocuwGzySb-imabzGvrrFN1_fWocZyTUYlswAmKvOA,105
|
|
10
|
+
argusf/analysis/rules/rulesets/rgus/__init__.py,sha256=_HXOmF73QhTssawlTAXTdidpzlCCBw2172g2SbC_-Lc,737
|
|
11
|
+
argusf/analysis/rules/rulesets/rgus/rgus001_no_goto.py,sha256=3dmJEAJDwgupC9l_25JUGXPh2zs6upXml31GBfZ-3Pg,1631
|
|
12
|
+
argusf/analysis/rules/rulesets/rgus/rgus002_common_block.py,sha256=dVp2ejSNrgMZyCSSTDU_oB0LiYlWb8uYsAnOi9IwBXU,1686
|
|
13
|
+
argusf/analysis/rules/rulesets/rgus/rgus003_equivalence.py,sha256=xgERnwd56iWLlh0OioBAekf4qXX870kc_M1JV4ucCc8,1872
|
|
14
|
+
argusf/analysis/rules/rulesets/rgus/rgus004_implicit_typing.py,sha256=0BEEQ6luTf-PXqNC-fg91DbeHMpMcRyu8nCE1WatdvI,5293
|
|
15
|
+
argusf/analysis/rules/rulesets/rgus/rgus005_arithmetic_if.py,sha256=I4hYPCnrbxle6dfKSzh-X6GC64uefEYoLmn3RVEkLwk,1896
|
|
16
|
+
argusf/analysis/rules/rulesets/rgus/rgus006_entry_statement.py,sha256=uw8E4Z1v1vOY5Sa8HGQL-3MTdCmwuBF0lrdiO9zVTXU,2108
|
|
17
|
+
argusf/analysis/rules/rulesets/rgus/rgus007_pause_statement.py,sha256=0exfcaoUj3ZotbYbmbzh4oGoeKS60jryrFG0Oqnqrx4,3623
|
|
18
|
+
argusf/analysis/rules/rulesets/rgus/rgus008_todo_comment.py,sha256=Z7KD0XOJWVXZZ3NOTfCBYUwlttUER_WJH_AzLvSJCg4,3429
|
|
19
|
+
argusf/analysis/rules/rulesets/rgus/rgus009_unsorted_use_statements.py,sha256=SO9QIxi9SWBRu3hrG3XCzgGf4hVaC1HYLX3PGG2SkDw,11128
|
|
20
|
+
argusf/analysis/rules/selection.py,sha256=RwMXz25jYyN99grT99YRsp2Z0JVuR_U-AGG1gN5QtFk,3082
|
|
21
|
+
argusf/analysis/suppression.py,sha256=WDAnboVyBcDmw38KRzt7Y6C38mUP03Lx-14Z9s2v6aE,4019
|
|
22
|
+
argusf/analysis/syntax_errors.py,sha256=mArEJOI0xSTMYKU7tjdfgoYBvV-DBuSoJo7iz6V2XdU,1323
|
|
23
|
+
argusf/autofix/__init__.py,sha256=P7FOQNpEP-2j94nXk7MrMzWC1KiDguueokdTNBcbSRI,692
|
|
24
|
+
argusf/autofix/applier.py,sha256=F8hyVwYQMIAIkzcH8twIrCYWSiawXe9wrdazbHyQJhY,5263
|
|
25
|
+
argusf/autofix/context.py,sha256=Ootx-6yxxLg1QvlaSNI2hc9PDIDXSFxQ1I4RB-duUCQ,2315
|
|
26
|
+
argusf/autofix/diff.py,sha256=rW5TFaoQ091WIIRN7yc-DZlPL_6W0jtJjh5NQW3qJlA,1184
|
|
27
|
+
argusf/autofix/edits.py,sha256=qNMbGnmBs_JtoHH8X__8qhyYSMXI0lyD9Mx41FYFdWM,1098
|
|
28
|
+
argusf/autofix/engine.py,sha256=Tt8a5n1VuGQhWgT1uAiXUEX9Pb6911mdKShVcM03QLg,8198
|
|
29
|
+
argusf/autofix/models.py,sha256=0puQmTVUSOjZLvXu1zpfOVM4h6O-ALW2ycWTZ8OZrog,1060
|
|
30
|
+
argusf/autofix/source.py,sha256=DJ0m6hX-4htVllIPRyY2N8c_hJ-ef3d3ZsaRTF17qhM,2511
|
|
31
|
+
argusf/autofix/writer.py,sha256=S4TtThJPbU4cNVEmVC1jWKXr48ztfr05b-Nf4902uc0,1552
|
|
32
|
+
argusf/cache/__init__.py,sha256=Pb1YFZ7-3aBu7ViwXZHf8dOMeAapP6gZXDXbPrR0ARc,128
|
|
33
|
+
argusf/cache/backend.py,sha256=1m81hvmJeb_Nn7dHNDzAH20YoTO23-c821RTerBypZY,10646
|
|
34
|
+
argusf/cli.py,sha256=dhXImGtuXHQXQVHUoKKOTJcP1BmowmqqI1V2QQbBApg,13883
|
|
35
|
+
argusf/config/__init__.py,sha256=6DwSuWj6CUuFaVc4boCrixOikf0EDWdYFj9D1a_kciY,56
|
|
36
|
+
argusf/config/config_resolver.py,sha256=B-x8NBPw2RyLrX5t1ZKfxU0W2O3vK6rwx4RKBMZ5kPc,9173
|
|
37
|
+
argusf/config/errors.py,sha256=QKmH3tNgBIi1lbDCKpFRGYtEv_tEmypRBGZX-MTJJK4,236
|
|
38
|
+
argusf/config/file_reader/__init__.py,sha256=C88-_bPeDBnJ8ZTg4kgNWmD41Q3NHDtjj_SUrngPoJs,85
|
|
39
|
+
argusf/config/file_reader/reader.py,sha256=TVxL-Ak_sxvGg1it38qJRC3FcRsLxkcq2vuQ9uf9AII,1725
|
|
40
|
+
argusf/config/models.py,sha256=ax8RK5TRLhLN-OEhjKMbRpwAg68jWajkrQDsKQGDePk,3932
|
|
41
|
+
argusf/config/validation.py,sha256=Nql5XCCZFjUG2zOvWQUHOc1v_NY5lvNT5t7Cc6UdQJo,4201
|
|
42
|
+
argusf/constants.py,sha256=kpDzwuhzv3zQrnE60eb3Zax5FiOjNFhl4iZmCmtLj_4,2308
|
|
43
|
+
argusf/diagnostics.py,sha256=0xB800-VkMNpNAoEbHrQT8TeGq4gpSOJ4upLOTeB8Cg,1287
|
|
44
|
+
argusf/discovery/__init__.py,sha256=tb_vqp6QDSqqsqSX3XR-ZqfxnpLR0vG9didQ4o3qfqo,110
|
|
45
|
+
argusf/discovery/backend.py,sha256=u6dXam57Vc9aipUjM9dtPLRcWPJWxJyRH-IcqMwhhKM,10224
|
|
46
|
+
argusf/discovery/gitignore.py,sha256=S8a9-2LKkDaVKlOXFBdpz6n2QwYBiGL0lgszbS8RzNQ,4859
|
|
47
|
+
argusf/discovery/repo.py,sha256=Tn_r7GzqWE6kWvsraq1rteYFUUg44uDnBK1BU1E8IAM,1053
|
|
48
|
+
argusf/hashing/__init__.py,sha256=vzjTusoaRsLh7rzwbk7KImkAMuSO1VoGAUEG1nSkJgk,117
|
|
49
|
+
argusf/hashing/hash.py,sha256=veaGDq2Fl7slDSXZn8EHfCw1_09iQ2krUG6dKFMshFo,1633
|
|
50
|
+
argusf/ir/__init__.py,sha256=eAGGyiPNAXOYhRbJlf2pMjFUyLCFuMgJWsEyc6sppMg,65
|
|
51
|
+
argusf/ir/models/__init__.py,sha256=tBiU3bKZzGNjACpeDPTpXSvGOMKy3m6UvUOq0hCdrRc,898
|
|
52
|
+
argusf/ir/models/findings.py,sha256=Q5tGCIROuIYWOvLQYTAV5vJNh8XqEppCKXJuwZhXFhs,2305
|
|
53
|
+
argusf/ir/models/source.py,sha256=NDyFRv85i4i8GfHSDDehrkG_Km64MWuXz1pKVt70-Uw,5524
|
|
54
|
+
argusf/orchestrator.py,sha256=4ICLS6N_TJUMJezSDcmJPSKH7b_or38jd2Qm9bZqdfs,5369
|
|
55
|
+
argusf/parser/__init__.py,sha256=LLYxmBhQ5xy81nK1YFPg5jgRrUc374vQRo2FD8Jvnlc,67
|
|
56
|
+
argusf/parser/backend.py,sha256=4iYQpgVIQ9CYuDgZQJKEyZfiZasarWnSszix1PMFJ64,677
|
|
57
|
+
argusf/parser/treesitter/__init__.py,sha256=7bwEd-IFML_psnT0GTuFhvmTxt1qJXYUVFfPTyB4uxI,56
|
|
58
|
+
argusf/parser/treesitter/backend.py,sha256=jyj0afoBH6lYBgDsCG9HOvcUAsPHg6mD9znV5_uAs2I,6431
|
|
59
|
+
argusf/parser/treesitter/walker/__init__.py,sha256=jcHpnh8XLMrqFkyx-ODiPeQKmkmO6TRBuxRyZsdarpg,265
|
|
60
|
+
argusf/parser/treesitter/walker/handlers.py,sha256=pEqaCYwZw_jZwZqYuTIZZsubYjlXsyEZVyPjGL9rw-o,8767
|
|
61
|
+
argusf/parser/treesitter/walker/walker.py,sha256=RZWXS5ItACL9mvwvdBkK4Zmjnwa0eB6vCZD9gnDj-fU,2412
|
|
62
|
+
argusf/registry/__init__.py,sha256=FDJIbZ-MJsLT_pb3ZRwzf7pN_r5UbpJQ1CFRkVZKe7A,107
|
|
63
|
+
argusf/registry/registry.py,sha256=bZuWkoZMSnWhpU2q85lFVYW3yJfD997P1KbDjNMlFKc,1957
|
|
64
|
+
argusf/reporting/__init__.py,sha256=Af51x84Ql-3dVevUV8NK1jWQK46wQHb6JoMa6Up6JqM,432
|
|
65
|
+
argusf/reporting/formatting.py,sha256=gKB6deMiI89jWodb-blJWi7vjf7-yfqfTc_Mm6i05mU,6123
|
|
66
|
+
argusf/reporting/registry.py,sha256=joL5lKo2liZSkiBe8wJ4fpy6KI33Wljpu-gljYUsZUs,498
|
|
67
|
+
argusf/reporting/reporters/__init__.py,sha256=nvCqTUZeCEOn-eFAubqJTWhaMITJsYFQI2_YzFz0q94,360
|
|
68
|
+
argusf/reporting/reporters/base.py,sha256=l9tgSi6EUdP3l3-ibRGiUcBNrdqmK3gCENeNwMY_tkY,977
|
|
69
|
+
argusf/reporting/reporters/concise.py,sha256=YJmDTnrjFCyP34OnTCui_DlUQ11DffFI9JSljxWig0M,1346
|
|
70
|
+
argusf/reporting/reporters/diff.py,sha256=W3FcR8sdiWpMqUbVGMW_OE1Dqk5NxR1UzKo_GQbceYE,1007
|
|
71
|
+
argusf/reporting/reporters/json.py,sha256=lX0nLQDnTrXE3JdqPvIjhE7yIA5SZTXJVjE6STMaQnw,2290
|
|
72
|
+
argusf/reporting/reporters/null.py,sha256=xTbAv20y0634n8Js8unCDWjiJu2DM3aC4SaZqH2CwcE,533
|
|
73
|
+
argusf/reporting/reporters/standard.py,sha256=5xsDEvnx5g9t0FJ87ijkfShr5W5HENCyTwYFamj_bAw,3083
|
|
74
|
+
argusf/reporting/reporters/statistics.py,sha256=LukAjvP5OPvl0qy6Q1ZNpJoAviLGM_nY4I9hLy0v37M,3728
|
|
75
|
+
argusf-0.1.0.dev0.dist-info/licenses/LICENSE,sha256=TDTIKMeGtwZRKoxrLVvTLehd3bCU1YDuD6BlNxAr7yI,1072
|
|
76
|
+
argusf-0.1.0.dev0.dist-info/WHEEL,sha256=bu7Cckf7DKpj8ztfOQHBiWtXM4xigujiTkrhvV6U2aU,81
|
|
77
|
+
argusf-0.1.0.dev0.dist-info/entry_points.txt,sha256=jLxN9qvSrBJuCs9WDFQSmS1iv-3TPSLhTXm48U6PoZI,43
|
|
78
|
+
argusf-0.1.0.dev0.dist-info/METADATA,sha256=VrB_frLoFvHrEV5cJS2HKQTCthyF3qEUnjLz90Y1rkU,8552
|
|
79
|
+
argusf-0.1.0.dev0.dist-info/RECORD,,
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Matthew McAteer
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|