inventag-aws 5.0.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.

Potentially problematic release.


This version of inventag-aws might be problematic. Click here for more details.

Files changed (93) hide show
  1. inventag_aws-5.0.0/LICENSE +21 -0
  2. inventag_aws-5.0.0/PKG-INFO +175 -0
  3. inventag_aws-5.0.0/README.md +134 -0
  4. inventag_aws-5.0.0/inventag/__init__.py +77 -0
  5. inventag_aws-5.0.0/inventag/_python_version.py +31 -0
  6. inventag_aws-5.0.0/inventag/_version.py +6 -0
  7. inventag_aws-5.0.0/inventag/cli/__init__.py +12 -0
  8. inventag_aws-5.0.0/inventag/cli/config_validator.py +481 -0
  9. inventag_aws-5.0.0/inventag/cli/logging_setup.py +169 -0
  10. inventag_aws-5.0.0/inventag/cli/main.py +1266 -0
  11. inventag_aws-5.0.0/inventag/cli/safety.py +131 -0
  12. inventag_aws-5.0.0/inventag/compliance/__init__.py +52 -0
  13. inventag_aws-5.0.0/inventag/compliance/checker.py +704 -0
  14. inventag_aws-5.0.0/inventag/compliance/compliance_manager.py +526 -0
  15. inventag_aws-5.0.0/inventag/compliance/production_monitor.py +979 -0
  16. inventag_aws-5.0.0/inventag/compliance/security_validator.py +801 -0
  17. inventag_aws-5.0.0/inventag/core/__init__.py +50 -0
  18. inventag_aws-5.0.0/inventag/core/cicd_integration.py +1107 -0
  19. inventag_aws-5.0.0/inventag/core/cloud_bom_generator.py +1290 -0
  20. inventag_aws-5.0.0/inventag/core/credential_manager.py +922 -0
  21. inventag_aws-5.0.0/inventag/core/s3_upload.py +166 -0
  22. inventag_aws-5.0.0/inventag/discovery/__init__.py +109 -0
  23. inventag_aws-5.0.0/inventag/discovery/comprehensive_discovery.py +1448 -0
  24. inventag_aws-5.0.0/inventag/discovery/cost_analyzer.py +1326 -0
  25. inventag_aws-5.0.0/inventag/discovery/enhanced_readonly_discovery.py +606 -0
  26. inventag_aws-5.0.0/inventag/discovery/intelligent_discovery.py +1001 -0
  27. inventag_aws-5.0.0/inventag/discovery/intelligent_discovery_backup.py +973 -0
  28. inventag_aws-5.0.0/inventag/discovery/inventory.py +3290 -0
  29. inventag_aws-5.0.0/inventag/discovery/network_analyzer.py +598 -0
  30. inventag_aws-5.0.0/inventag/discovery/optimized_discovery.py +1654 -0
  31. inventag_aws-5.0.0/inventag/discovery/optimized_dynamic_discovery.py +657 -0
  32. inventag_aws-5.0.0/inventag/discovery/security_analyzer.py +782 -0
  33. inventag_aws-5.0.0/inventag/discovery/service_descriptions.py +728 -0
  34. inventag_aws-5.0.0/inventag/discovery/service_enrichment.py +719 -0
  35. inventag_aws-5.0.0/inventag/discovery/service_filter.py +116 -0
  36. inventag_aws-5.0.0/inventag/discovery/service_handlers.py +798 -0
  37. inventag_aws-5.0.0/inventag/discovery/tag_mapping.py +650 -0
  38. inventag_aws-5.0.0/inventag/reporting/__init__.py +56 -0
  39. inventag_aws-5.0.0/inventag/reporting/bom_processor.py +1075 -0
  40. inventag_aws-5.0.0/inventag/reporting/branding_system.py +719 -0
  41. inventag_aws-5.0.0/inventag/reporting/configuration_manager.py +898 -0
  42. inventag_aws-5.0.0/inventag/reporting/converter.py +1652 -0
  43. inventag_aws-5.0.0/inventag/reporting/csv_builder.py +92 -0
  44. inventag_aws-5.0.0/inventag/reporting/document_generator.py +635 -0
  45. inventag_aws-5.0.0/inventag/reporting/excel_branding_applicator.py +582 -0
  46. inventag_aws-5.0.0/inventag/reporting/excel_builder.py +978 -0
  47. inventag_aws-5.0.0/inventag/reporting/report_template.py +1620 -0
  48. inventag_aws-5.0.0/inventag/reporting/template_framework.py +816 -0
  49. inventag_aws-5.0.0/inventag/reporting/word_branding_applicator.py +569 -0
  50. inventag_aws-5.0.0/inventag/reporting/word_builder.py +1017 -0
  51. inventag_aws-5.0.0/inventag/security/__init__.py +30 -0
  52. inventag_aws-5.0.0/inventag/security/arn.py +114 -0
  53. inventag_aws-5.0.0/inventag/security/iam_policy.py +216 -0
  54. inventag_aws-5.0.0/inventag/security/read_only_guard.py +287 -0
  55. inventag_aws-5.0.0/inventag/security/redaction.py +233 -0
  56. inventag_aws-5.0.0/inventag/security/safe_output.py +190 -0
  57. inventag_aws-5.0.0/inventag/state/__init__.py +16 -0
  58. inventag_aws-5.0.0/inventag/state/changelog_generator.py +1362 -0
  59. inventag_aws-5.0.0/inventag/state/delta_detector.py +1411 -0
  60. inventag_aws-5.0.0/inventag/state/state_manager.py +514 -0
  61. inventag_aws-5.0.0/inventag/templating/__init__.py +37 -0
  62. inventag_aws-5.0.0/inventag/templating/builtin/ci-pipeline.yaml +18 -0
  63. inventag_aws-5.0.0/inventag/templating/builtin/executive-summary.yaml +20 -0
  64. inventag_aws-5.0.0/inventag/templating/builtin/finops-cost-allocation.yaml +25 -0
  65. inventag_aws-5.0.0/inventag/templating/builtin/finops-cost-report.yaml +17 -0
  66. inventag_aws-5.0.0/inventag/templating/builtin/org-multi-account.yaml +33 -0
  67. inventag_aws-5.0.0/inventag/templating/builtin/security-baseline.yaml +20 -0
  68. inventag_aws-5.0.0/inventag/templating/builtin/single-account.yaml +15 -0
  69. inventag_aws-5.0.0/inventag/templating/builtin/standard-bom.yaml +42 -0
  70. inventag_aws-5.0.0/inventag/templating/cli.py +301 -0
  71. inventag_aws-5.0.0/inventag/templating/columns.py +166 -0
  72. inventag_aws-5.0.0/inventag/templating/errors.py +43 -0
  73. inventag_aws-5.0.0/inventag/templating/loader.py +255 -0
  74. inventag_aws-5.0.0/inventag/templating/reference.py +104 -0
  75. inventag_aws-5.0.0/inventag/templating/registry.py +410 -0
  76. inventag_aws-5.0.0/inventag/templating/render_excel.py +232 -0
  77. inventag_aws-5.0.0/inventag/templating/render_word.py +249 -0
  78. inventag_aws-5.0.0/inventag/templating/runner.py +368 -0
  79. inventag_aws-5.0.0/inventag/templating/schema.py +816 -0
  80. inventag_aws-5.0.0/inventag/templating/tag_policy.py +172 -0
  81. inventag_aws-5.0.0/inventag/timeutil.py +59 -0
  82. inventag_aws-5.0.0/inventag_aws.egg-info/PKG-INFO +175 -0
  83. inventag_aws-5.0.0/inventag_aws.egg-info/SOURCES.txt +91 -0
  84. inventag_aws-5.0.0/inventag_aws.egg-info/dependency_links.txt +1 -0
  85. inventag_aws-5.0.0/inventag_aws.egg-info/entry_points.txt +2 -0
  86. inventag_aws-5.0.0/inventag_aws.egg-info/requires.txt +14 -0
  87. inventag_aws-5.0.0/inventag_aws.egg-info/top_level.txt +1 -0
  88. inventag_aws-5.0.0/pyproject.toml +49 -0
  89. inventag_aws-5.0.0/requirements.txt +24 -0
  90. inventag_aws-5.0.0/setup.cfg +4 -0
  91. inventag_aws-5.0.0/tests/test_aws_resource_inventory.py +171 -0
  92. inventag_aws-5.0.0/tests/test_bom_converter.py +137 -0
  93. inventag_aws-5.0.0/tests/test_python_compatibility.py +181 -0
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2025 InvenTag Contributors
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.
@@ -0,0 +1,175 @@
1
+ Metadata-Version: 2.4
2
+ Name: inventag-aws
3
+ Version: 5.0.0
4
+ Summary: AWS resource inventory, tag compliance checks, and Excel/Word BOM reports. Read-only.
5
+ Author: InvenTag Contributors
6
+ License-Expression: MIT
7
+ Project-URL: Homepage, https://habhabhabs.github.io/inventag-aws/
8
+ Project-URL: Documentation, https://habhabhabs.github.io/inventag-aws/docs/
9
+ Project-URL: Source, https://github.com/habhabhabs/inventag-aws
10
+ Project-URL: Issues, https://github.com/habhabhabs/inventag-aws/issues
11
+ Project-URL: Changelog, https://github.com/habhabhabs/inventag-aws/blob/main/CHANGELOG.md
12
+ Keywords: aws,inventory,bom,tagging,compliance
13
+ Classifier: Development Status :: 5 - Production/Stable
14
+ Classifier: Environment :: Console
15
+ Classifier: Intended Audience :: System Administrators
16
+ Classifier: Operating System :: OS Independent
17
+ Classifier: Programming Language :: Python :: 3
18
+ Classifier: Programming Language :: Python :: 3.11
19
+ Classifier: Programming Language :: Python :: 3.12
20
+ Classifier: Programming Language :: Python :: 3.13
21
+ Classifier: Programming Language :: Python :: 3.14
22
+ Classifier: Topic :: System :: Systems Administration
23
+ Requires-Python: >=3.11
24
+ Description-Content-Type: text/markdown
25
+ License-File: LICENSE
26
+ Requires-Dist: boto3>=1.35.0
27
+ Requires-Dist: PyYAML>=6.0
28
+ Requires-Dist: openpyxl>=3.0.0
29
+ Requires-Dist: python-docx>=0.8.11
30
+ Requires-Dist: colorama>=0.4.4
31
+ Requires-Dist: semver>=3.0.0
32
+ Requires-Dist: psutil>=5.9.0
33
+ Requires-Dist: keyring>=24.0.0
34
+ Requires-Dist: cryptography>=50.0.0
35
+ Requires-Dist: requests>=2.33.0
36
+ Requires-Dist: urllib3>=2.8.0
37
+ Requires-Dist: certifi>=2026.10.18
38
+ Requires-Dist: idna>=3.15
39
+ Requires-Dist: lxml>=6.1.0
40
+ Dynamic: license-file
41
+
42
+ <p align="center">
43
+ <img src="website/static/img/logo-wordmark.svg#gh-light-mode-only" alt="InvenTag" width="366" height="96">
44
+ <img src="website/static/img/logo-wordmark-dark.svg#gh-dark-mode-only" alt="InvenTag" width="366" height="96">
45
+ </p>
46
+
47
+ <p align="center">
48
+ <strong>Find out what is running in your AWS accounts, check it is tagged properly, and hand over an Excel or Word bill of materials.</strong>
49
+ </p>
50
+
51
+ [![Automated Release](https://github.com/habhabhabs/inventag-aws/workflows/Automated%20Release/badge.svg)](https://github.com/habhabhabs/inventag-aws/actions)
52
+ [![Documentation](https://github.com/habhabhabs/inventag-aws/workflows/Documentation%20Deployment/badge.svg)](https://habhabhabs.github.io/inventag-aws/)
53
+ [![Python 3.11+](https://img.shields.io/badge/python-3.11+-blue.svg)](https://www.python.org/downloads/)
54
+ [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE)
55
+
56
+ **Docs:** <https://habhabhabs.github.io/inventag-aws/>
57
+
58
+ ## Quick start
59
+
60
+ ```bash
61
+ git clone https://github.com/habhabhabs/inventag-aws.git
62
+ cd inventag-aws
63
+ python3 -m venv .venv && source .venv/bin/activate
64
+ pip install -r requirements.txt
65
+
66
+ ./inventag.sh --validate-credentials # uses your current AWS credentials
67
+ ./inventag.sh --create-excel --verbose # -> bom_output/multi_account_bom_<timestamp>.xlsx
68
+ ```
69
+
70
+ Use a read-only IAM identity. By default, discovery makes two Cost Explorer
71
+ requests for each account, and AWS bills each request. Add
72
+ `--no-billing-validation` to make no Cost Explorer request. Details:
73
+ [Installation](https://habhabhabs.github.io/inventag-aws/docs/getting-started/installation).
74
+
75
+ ## What it does
76
+
77
+ - **Discovery** across accounts and regions through the Resource Groups Tagging
78
+ API, per-service `List*`/`Describe*`/`Get*` calls and Cost Explorer billing data.
79
+ - **Bill of materials** as an Excel workbook (`--create-excel`) and/or Word
80
+ document (`--create-word`), with your own tag columns (`--tag-mappings`) and
81
+ service descriptions (`--service-descriptions`).
82
+ - **Report templates** (`--word-template`, `--excel-template`): a YAML or JSON
83
+ file selects the title, the sections or sheets, the columns, and the header
84
+ and footer text.
85
+ - **Several accounts** from a file (`--accounts-file`), interactively
86
+ (`--accounts-prompt`) or through an assumed role (`--cross-account-role`),
87
+ processed in parallel.
88
+ - **Change tracking**: each run saves a snapshot in `bom_output/state/`; the
89
+ next run reports what was added, removed or changed.
90
+ - **Upload to Amazon S3** (`--s3-bucket`) with server-side encryption.
91
+ - **Read-only guard**: the CLI blocks each AWS API call that is not a read
92
+ operation. `--audit-output audit.json` writes a list of the calls.
93
+ - **Tag-policy checks** (required tags, allowed values) with
94
+ `scripts/legacy/tag_compliance_checker.py --config policy.yaml`.
95
+
96
+ ### Not implemented
97
+
98
+ These flags stop the CLI with an error message and exit code `2`:
99
+ `--create-google-docs`, `--per-account-reports`, `--compliance-standard`,
100
+ `--risk-threshold` and `--disable-production-safety`. InvenTag does not certify
101
+ compliance with SOC 2 or other standards. For the full list, see
102
+ [Current status and known limitations](https://habhabhabs.github.io/inventag-aws/docs/getting-started/status).
103
+
104
+ ## More examples
105
+
106
+ ```bash
107
+ # Several accounts, Excel + Word, your own tag columns
108
+ ./inventag.sh --accounts-file accounts.json \
109
+ --create-excel --create-word \
110
+ --tag-mappings config/defaults/mappings/tag_to_column_mappings_example.yaml \
111
+ --service-descriptions config/defaults/services/service_descriptions_example.yaml
112
+
113
+ # Assume a read-only role (full role ARN)
114
+ ./inventag.sh --cross-account-role arn:aws:iam::123456789012:role/InvenTagReadOnly \
115
+ --create-excel
116
+
117
+ # Assume the same role name in each account of accounts.json
118
+ ./inventag.sh --accounts-file accounts.json --cross-account-role InvenTagReadOnly \
119
+ --create-excel
120
+
121
+ # Upload the reports to S3 (server-side encrypted)
122
+ ./inventag.sh --create-excel --s3-bucket my-reports-bucket
123
+
124
+ # Faster runs: fewer regions, more accounts in parallel
125
+ ./inventag.sh --accounts-file accounts.json --create-excel \
126
+ --account-regions us-east-1,ap-southeast-1 --max-concurrent-accounts 8
127
+ ```
128
+
129
+ Every flag: [CLI user guide](https://habhabhabs.github.io/inventag-aws/docs/user-guides/cli-user-guide).
130
+
131
+ ## Documentation
132
+
133
+ | Section | Link |
134
+ |---|---|
135
+ | Quick start | [docs/getting-started/quick-start.md](docs/getting-started/quick-start.md) |
136
+ | Current status and known limitations | [docs/getting-started/status.md](docs/getting-started/status.md) |
137
+ | CLI user guide | [docs/user-guides/cli-user-guide.md](docs/user-guides/cli-user-guide.md) |
138
+ | Configuration examples | [docs/user-guides/configuration-examples.md](docs/user-guides/configuration-examples.md) |
139
+ | Report templates | [docs/user-guides/report-templates.md](docs/user-guides/report-templates.md) |
140
+ | Permissions and production safety | [docs/user-guides/production-safety.md](docs/user-guides/production-safety.md) |
141
+ | Architecture | [docs/architecture/core-module-integration.md](docs/architecture/core-module-integration.md) |
142
+ | Contributing | [docs/development/CONTRIBUTING.md](docs/development/CONTRIBUTING.md) |
143
+
144
+ The same Markdown files are published as the documentation site (Docusaurus,
145
+ in `website/`). Brand assets (logo, favicon, social card) and the script that
146
+ regenerates them live in [`website/brand/`](website/brand/README.md).
147
+
148
+ ## Project layout
149
+
150
+ ```text
151
+ inventag-aws/
152
+ ├── inventag_cli.py # CLI entry point (inventag.sh / inventag.bat wrap it)
153
+ ├── inventag/ # Python package: cli, core, discovery, compliance, reporting, state
154
+ ├── scripts/legacy/ # standalone scripts (inventory, tag compliance, BOM converter)
155
+ ├── config/ # example configs, IAM policy, JSON schemas
156
+ ├── examples/ # account files and CI examples
157
+ ├── docs/ # documentation (Markdown)
158
+ ├── website/ # Docusaurus site, brand assets
159
+ └── tests/
160
+ ```
161
+
162
+ ## Support
163
+
164
+ - [Issues](https://github.com/habhabhabs/inventag-aws/issues): bugs and feature requests
165
+ - [Discussions](https://github.com/habhabhabs/inventag-aws/discussions): questions
166
+
167
+ ## License
168
+
169
+ MIT. See [LICENSE](LICENSE).
170
+
171
+ ---
172
+
173
+ *AWS is a trademark of Amazon.com, Inc. or its affiliates. InvenTag is an
174
+ independent tool and is not affiliated with, endorsed by, or sponsored by
175
+ Amazon Web Services, Inc.*
@@ -0,0 +1,134 @@
1
+ <p align="center">
2
+ <img src="website/static/img/logo-wordmark.svg#gh-light-mode-only" alt="InvenTag" width="366" height="96">
3
+ <img src="website/static/img/logo-wordmark-dark.svg#gh-dark-mode-only" alt="InvenTag" width="366" height="96">
4
+ </p>
5
+
6
+ <p align="center">
7
+ <strong>Find out what is running in your AWS accounts, check it is tagged properly, and hand over an Excel or Word bill of materials.</strong>
8
+ </p>
9
+
10
+ [![Automated Release](https://github.com/habhabhabs/inventag-aws/workflows/Automated%20Release/badge.svg)](https://github.com/habhabhabs/inventag-aws/actions)
11
+ [![Documentation](https://github.com/habhabhabs/inventag-aws/workflows/Documentation%20Deployment/badge.svg)](https://habhabhabs.github.io/inventag-aws/)
12
+ [![Python 3.11+](https://img.shields.io/badge/python-3.11+-blue.svg)](https://www.python.org/downloads/)
13
+ [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE)
14
+
15
+ **Docs:** <https://habhabhabs.github.io/inventag-aws/>
16
+
17
+ ## Quick start
18
+
19
+ ```bash
20
+ git clone https://github.com/habhabhabs/inventag-aws.git
21
+ cd inventag-aws
22
+ python3 -m venv .venv && source .venv/bin/activate
23
+ pip install -r requirements.txt
24
+
25
+ ./inventag.sh --validate-credentials # uses your current AWS credentials
26
+ ./inventag.sh --create-excel --verbose # -> bom_output/multi_account_bom_<timestamp>.xlsx
27
+ ```
28
+
29
+ Use a read-only IAM identity. By default, discovery makes two Cost Explorer
30
+ requests for each account, and AWS bills each request. Add
31
+ `--no-billing-validation` to make no Cost Explorer request. Details:
32
+ [Installation](https://habhabhabs.github.io/inventag-aws/docs/getting-started/installation).
33
+
34
+ ## What it does
35
+
36
+ - **Discovery** across accounts and regions through the Resource Groups Tagging
37
+ API, per-service `List*`/`Describe*`/`Get*` calls and Cost Explorer billing data.
38
+ - **Bill of materials** as an Excel workbook (`--create-excel`) and/or Word
39
+ document (`--create-word`), with your own tag columns (`--tag-mappings`) and
40
+ service descriptions (`--service-descriptions`).
41
+ - **Report templates** (`--word-template`, `--excel-template`): a YAML or JSON
42
+ file selects the title, the sections or sheets, the columns, and the header
43
+ and footer text.
44
+ - **Several accounts** from a file (`--accounts-file`), interactively
45
+ (`--accounts-prompt`) or through an assumed role (`--cross-account-role`),
46
+ processed in parallel.
47
+ - **Change tracking**: each run saves a snapshot in `bom_output/state/`; the
48
+ next run reports what was added, removed or changed.
49
+ - **Upload to Amazon S3** (`--s3-bucket`) with server-side encryption.
50
+ - **Read-only guard**: the CLI blocks each AWS API call that is not a read
51
+ operation. `--audit-output audit.json` writes a list of the calls.
52
+ - **Tag-policy checks** (required tags, allowed values) with
53
+ `scripts/legacy/tag_compliance_checker.py --config policy.yaml`.
54
+
55
+ ### Not implemented
56
+
57
+ These flags stop the CLI with an error message and exit code `2`:
58
+ `--create-google-docs`, `--per-account-reports`, `--compliance-standard`,
59
+ `--risk-threshold` and `--disable-production-safety`. InvenTag does not certify
60
+ compliance with SOC 2 or other standards. For the full list, see
61
+ [Current status and known limitations](https://habhabhabs.github.io/inventag-aws/docs/getting-started/status).
62
+
63
+ ## More examples
64
+
65
+ ```bash
66
+ # Several accounts, Excel + Word, your own tag columns
67
+ ./inventag.sh --accounts-file accounts.json \
68
+ --create-excel --create-word \
69
+ --tag-mappings config/defaults/mappings/tag_to_column_mappings_example.yaml \
70
+ --service-descriptions config/defaults/services/service_descriptions_example.yaml
71
+
72
+ # Assume a read-only role (full role ARN)
73
+ ./inventag.sh --cross-account-role arn:aws:iam::123456789012:role/InvenTagReadOnly \
74
+ --create-excel
75
+
76
+ # Assume the same role name in each account of accounts.json
77
+ ./inventag.sh --accounts-file accounts.json --cross-account-role InvenTagReadOnly \
78
+ --create-excel
79
+
80
+ # Upload the reports to S3 (server-side encrypted)
81
+ ./inventag.sh --create-excel --s3-bucket my-reports-bucket
82
+
83
+ # Faster runs: fewer regions, more accounts in parallel
84
+ ./inventag.sh --accounts-file accounts.json --create-excel \
85
+ --account-regions us-east-1,ap-southeast-1 --max-concurrent-accounts 8
86
+ ```
87
+
88
+ Every flag: [CLI user guide](https://habhabhabs.github.io/inventag-aws/docs/user-guides/cli-user-guide).
89
+
90
+ ## Documentation
91
+
92
+ | Section | Link |
93
+ |---|---|
94
+ | Quick start | [docs/getting-started/quick-start.md](docs/getting-started/quick-start.md) |
95
+ | Current status and known limitations | [docs/getting-started/status.md](docs/getting-started/status.md) |
96
+ | CLI user guide | [docs/user-guides/cli-user-guide.md](docs/user-guides/cli-user-guide.md) |
97
+ | Configuration examples | [docs/user-guides/configuration-examples.md](docs/user-guides/configuration-examples.md) |
98
+ | Report templates | [docs/user-guides/report-templates.md](docs/user-guides/report-templates.md) |
99
+ | Permissions and production safety | [docs/user-guides/production-safety.md](docs/user-guides/production-safety.md) |
100
+ | Architecture | [docs/architecture/core-module-integration.md](docs/architecture/core-module-integration.md) |
101
+ | Contributing | [docs/development/CONTRIBUTING.md](docs/development/CONTRIBUTING.md) |
102
+
103
+ The same Markdown files are published as the documentation site (Docusaurus,
104
+ in `website/`). Brand assets (logo, favicon, social card) and the script that
105
+ regenerates them live in [`website/brand/`](website/brand/README.md).
106
+
107
+ ## Project layout
108
+
109
+ ```text
110
+ inventag-aws/
111
+ ├── inventag_cli.py # CLI entry point (inventag.sh / inventag.bat wrap it)
112
+ ├── inventag/ # Python package: cli, core, discovery, compliance, reporting, state
113
+ ├── scripts/legacy/ # standalone scripts (inventory, tag compliance, BOM converter)
114
+ ├── config/ # example configs, IAM policy, JSON schemas
115
+ ├── examples/ # account files and CI examples
116
+ ├── docs/ # documentation (Markdown)
117
+ ├── website/ # Docusaurus site, brand assets
118
+ └── tests/
119
+ ```
120
+
121
+ ## Support
122
+
123
+ - [Issues](https://github.com/habhabhabs/inventag-aws/issues): bugs and feature requests
124
+ - [Discussions](https://github.com/habhabhabs/inventag-aws/discussions): questions
125
+
126
+ ## License
127
+
128
+ MIT. See [LICENSE](LICENSE).
129
+
130
+ ---
131
+
132
+ *AWS is a trademark of Amazon.com, Inc. or its affiliates. InvenTag is an
133
+ independent tool and is not affiliated with, endorsed by, or sponsored by
134
+ Amazon Web Services, Inc.*
@@ -0,0 +1,77 @@
1
+ """
2
+ InvenTag - Unified AWS Cloud Governance Platform
3
+
4
+ A comprehensive Python package for AWS resource discovery, compliance checking,
5
+ professional BOM (Bill of Materials) document generation, and state management
6
+ with advanced change tracking capabilities.
7
+
8
+ This package transforms the proven functionality from standalone scripts into
9
+ a unified, enterprise-grade platform suitable for both CLI usage and service deployment.
10
+ """
11
+
12
+ # Must stay first: fails with a plain message on Python older than 3.11.
13
+ from ._python_version import MIN_PYTHON, check_python_version
14
+
15
+ check_python_version()
16
+
17
+ from ._version import __version__
18
+
19
+ __author__ = "InvenTag Team"
20
+
21
+ # Core modules
22
+ from .discovery import AWSResourceInventory
23
+ from .compliance import ComprehensiveTagComplianceChecker
24
+ from .reporting import BOMConverter
25
+
26
+ # Analysis modules
27
+ from .discovery.network_analyzer import NetworkAnalyzer
28
+
29
+ # State management modules
30
+ from .state import StateManager, DeltaDetector, ChangelogGenerator
31
+
32
+ # Main orchestrator
33
+ from .core import (
34
+ CloudBOMGenerator,
35
+ MultiAccountConfig,
36
+ AccountContext,
37
+ AccountCredentials,
38
+ CredentialManager,
39
+ CredentialValidationResult,
40
+ CICDIntegration,
41
+ S3UploadConfig,
42
+ ComplianceGateConfig,
43
+ NotificationConfig,
44
+ PrometheusConfig,
45
+ PrometheusMetrics,
46
+ CICDResult,
47
+ )
48
+
49
+ # CLI components
50
+ from .cli import main as cli_main, create_parser, ConfigValidator, setup_logging
51
+
52
+ __all__ = [
53
+ "AWSResourceInventory",
54
+ "ComprehensiveTagComplianceChecker",
55
+ "BOMConverter",
56
+ "NetworkAnalyzer",
57
+ "StateManager",
58
+ "DeltaDetector",
59
+ "ChangelogGenerator",
60
+ "CloudBOMGenerator",
61
+ "MultiAccountConfig",
62
+ "AccountContext",
63
+ "AccountCredentials",
64
+ "CredentialManager",
65
+ "CredentialValidationResult",
66
+ "CICDIntegration",
67
+ "S3UploadConfig",
68
+ "ComplianceGateConfig",
69
+ "NotificationConfig",
70
+ "PrometheusConfig",
71
+ "PrometheusMetrics",
72
+ "CICDResult",
73
+ "cli_main",
74
+ "create_parser",
75
+ "ConfigValidator",
76
+ "setup_logging",
77
+ ]
@@ -0,0 +1,31 @@
1
+ """
2
+ Minimum supported Python version.
3
+
4
+ This module is imported first by ``inventag/__init__.py``. Keep it free of
5
+ syntax newer than Python 2.7 / 3.0 (no f-strings, no annotations), so that an
6
+ old interpreter reaches the plain error message below instead of failing with
7
+ a SyntaxError somewhere else in the package.
8
+ """
9
+
10
+ import sys
11
+
12
+ MIN_PYTHON = (3, 11)
13
+
14
+
15
+ def unsupported_python_message(version_info=None):
16
+ """Return an error message if ``version_info`` is too old, else ``None``."""
17
+ version_info = sys.version_info if version_info is None else version_info
18
+ if tuple(version_info[:2]) >= MIN_PYTHON:
19
+ return None
20
+ return (
21
+ "InvenTag requires Python %d.%d or later; this interpreter is Python %d.%d. "
22
+ "Install a newer Python (https://www.python.org/downloads/) and run "
23
+ "InvenTag with it." % (MIN_PYTHON + tuple(version_info[:2]))
24
+ )
25
+
26
+
27
+ def check_python_version(version_info=None):
28
+ """Raise ``ImportError`` with a plain message on an unsupported Python."""
29
+ message = unsupported_python_message(version_info)
30
+ if message:
31
+ raise ImportError(message)
@@ -0,0 +1,6 @@
1
+ """Single source of the InvenTag version.
2
+
3
+ The release workflow rewrites this file. pyproject.toml reads it at build time.
4
+ """
5
+
6
+ __version__ = "5.0.0"
@@ -0,0 +1,12 @@
1
+ """
2
+ Command Line Interface for InvenTag
3
+
4
+ Comprehensive CLI with multi-account support, format-specific options,
5
+ S3 upload capabilities, and extensive configuration management.
6
+ """
7
+
8
+ from .main import main, create_parser
9
+ from .config_validator import ConfigValidator
10
+ from .logging_setup import setup_logging
11
+
12
+ __all__ = ["main", "create_parser", "ConfigValidator", "setup_logging"]