lupaxa-sysinfo 0.1.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.
- lupaxa_sysinfo-0.1.0/.gitignore +23 -0
- lupaxa_sysinfo-0.1.0/LICENCE +21 -0
- lupaxa_sysinfo-0.1.0/PKG-INFO +180 -0
- lupaxa_sysinfo-0.1.0/README-PYPI.md +114 -0
- lupaxa_sysinfo-0.1.0/README.md +82 -0
- lupaxa_sysinfo-0.1.0/docs/README.md +23 -0
- lupaxa_sysinfo-0.1.0/pyproject.toml +156 -0
- lupaxa_sysinfo-0.1.0/src/lupaxa/sysinfo/__init__.py +20 -0
- lupaxa_sysinfo-0.1.0/src/lupaxa/sysinfo/__main__.py +8 -0
- lupaxa_sysinfo-0.1.0/src/lupaxa/sysinfo/api.py +65 -0
- lupaxa_sysinfo-0.1.0/src/lupaxa/sysinfo/cli.py +520 -0
- lupaxa_sysinfo-0.1.0/src/lupaxa/sysinfo/collectors.py +783 -0
- lupaxa_sysinfo-0.1.0/src/lupaxa/sysinfo/export.py +266 -0
- lupaxa_sysinfo-0.1.0/src/lupaxa/sysinfo/options.py +140 -0
- lupaxa_sysinfo-0.1.0/src/lupaxa/sysinfo/redact.py +330 -0
- lupaxa_sysinfo-0.1.0/src/lupaxa/sysinfo/spinner.py +46 -0
- lupaxa_sysinfo-0.1.0/src/lupaxa/sysinfo/version.py +10 -0
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
# OS
|
|
2
|
+
.DS_Store
|
|
3
|
+
|
|
4
|
+
# Cursor
|
|
5
|
+
.superpowers/
|
|
6
|
+
.worktrees/
|
|
7
|
+
cursor-docs
|
|
8
|
+
|
|
9
|
+
# Make
|
|
10
|
+
.makefiles/
|
|
11
|
+
|
|
12
|
+
# MkDocs
|
|
13
|
+
site/
|
|
14
|
+
|
|
15
|
+
# Python
|
|
16
|
+
.venv/
|
|
17
|
+
__pycache__/
|
|
18
|
+
.mypy_cache/
|
|
19
|
+
.ruff_cache/
|
|
20
|
+
.pytest_cache/
|
|
21
|
+
dist/
|
|
22
|
+
build/
|
|
23
|
+
*.egg-info/
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 The Lupaxa Project
|
|
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,180 @@
|
|
|
1
|
+
Metadata-Version: 2.5
|
|
2
|
+
Name: lupaxa-sysinfo
|
|
3
|
+
Version: 0.1.0
|
|
4
|
+
Summary: Cross-platform system inventory library and CLI with modular collectors, redaction, and JSON/YAML/XML/HTML reports.
|
|
5
|
+
Project-URL: Homepage, https://github.com/lupaxa-developers-toolbox/sysinfo
|
|
6
|
+
Project-URL: Repository, https://github.com/lupaxa-developers-toolbox/sysinfo
|
|
7
|
+
Project-URL: Issues, https://github.com/lupaxa-developers-toolbox/sysinfo/issues
|
|
8
|
+
Project-URL: Documentation, https://sysinfo.thelupaxaproject.org/
|
|
9
|
+
Author: The Lupaxa Project
|
|
10
|
+
License: MIT License
|
|
11
|
+
|
|
12
|
+
Copyright (c) 2026 The Lupaxa Project
|
|
13
|
+
|
|
14
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
15
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
16
|
+
in the Software without restriction, including without limitation the rights
|
|
17
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
18
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
19
|
+
furnished to do so, subject to the following conditions:
|
|
20
|
+
|
|
21
|
+
The above copyright notice and this permission notice shall be included in all
|
|
22
|
+
copies or substantial portions of the Software.
|
|
23
|
+
|
|
24
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
25
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
26
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
27
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
28
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
29
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
30
|
+
SOFTWARE.
|
|
31
|
+
License-File: LICENCE
|
|
32
|
+
Keywords: cli,inventory,psutil,sysinfo,system-info
|
|
33
|
+
Classifier: Development Status :: 4 - Beta
|
|
34
|
+
Classifier: Environment :: Console
|
|
35
|
+
Classifier: Intended Audience :: Developers
|
|
36
|
+
Classifier: License :: OSI Approved :: MIT License
|
|
37
|
+
Classifier: Operating System :: OS Independent
|
|
38
|
+
Classifier: Programming Language :: Python :: 3
|
|
39
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
40
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
41
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
42
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
43
|
+
Classifier: Programming Language :: Python :: 3.14
|
|
44
|
+
Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
|
45
|
+
Classifier: Topic :: System :: Systems Administration
|
|
46
|
+
Classifier: Topic :: Utilities
|
|
47
|
+
Requires-Python: >=3.10
|
|
48
|
+
Requires-Dist: distro>=1.8; sys_platform == 'linux'
|
|
49
|
+
Requires-Dist: psutil>=5.9
|
|
50
|
+
Requires-Dist: pyyaml>=6.0
|
|
51
|
+
Requires-Dist: tldextract>=5.0
|
|
52
|
+
Provides-Extra: dev
|
|
53
|
+
Requires-Dist: bump-my-version>=1.2.0; extra == 'dev'
|
|
54
|
+
Requires-Dist: hatch>=1.12.0; extra == 'dev'
|
|
55
|
+
Requires-Dist: mkdocs-material==9.7.7; extra == 'dev'
|
|
56
|
+
Requires-Dist: mkdocs==1.6.1; extra == 'dev'
|
|
57
|
+
Requires-Dist: mypy>=1.12.0; extra == 'dev'
|
|
58
|
+
Requires-Dist: pip-audit>=2.7.0; extra == 'dev'
|
|
59
|
+
Requires-Dist: pytest-cov>=5.0; extra == 'dev'
|
|
60
|
+
Requires-Dist: pytest>=8.0; extra == 'dev'
|
|
61
|
+
Requires-Dist: ruff>=0.6.0; extra == 'dev'
|
|
62
|
+
Provides-Extra: test
|
|
63
|
+
Requires-Dist: pytest-cov>=5.0; extra == 'test'
|
|
64
|
+
Requires-Dist: pytest>=8.0; extra == 'test'
|
|
65
|
+
Description-Content-Type: text/markdown
|
|
66
|
+
|
|
67
|
+
<!-- markdownlint-disable -->
|
|
68
|
+
<p align="center">
|
|
69
|
+
<a href="https://github.com/lupaxa-developers-toolbox">
|
|
70
|
+
<img src="https://raw.githubusercontent.com/the-lupaxa-project/brand-assets/master/logos/organisations/developers-toolbox/readme-logo.png" alt="Project Logo" width="256"/><br/>
|
|
71
|
+
</a>
|
|
72
|
+
</p>
|
|
73
|
+
<h3 align="center">
|
|
74
|
+
The Lupaxa Developers Toolbox<br />
|
|
75
|
+
Part of The Lupaxa Project
|
|
76
|
+
</h3>
|
|
77
|
+
|
|
78
|
+
<br />
|
|
79
|
+
|
|
80
|
+
# lupaxa-sysinfo
|
|
81
|
+
|
|
82
|
+
Cross-platform system inventory **library and CLI**: modular collectors, granular
|
|
83
|
+
redaction, and JSON / YAML / XML / HTML reports.
|
|
84
|
+
|
|
85
|
+
Built for automation and support workflows used by The Lupaxa Project.
|
|
86
|
+
|
|
87
|
+
## Features
|
|
88
|
+
|
|
89
|
+
- Lightweight defaults: basic host info as pretty-printed JSON
|
|
90
|
+
- Opt-in collectors: CPU, memory, disks, network, listening ports, processes,
|
|
91
|
+
firewall, runtimes, GPU, packages
|
|
92
|
+
- Granular redaction for hosts, users, IPs, secrets, domains, and custom regexes
|
|
93
|
+
- Profiles for common workflows: `minimal`, `ci`, `support`
|
|
94
|
+
- Output formats (CLI): JSON, YAML, XML, human summary, and compact HTML
|
|
95
|
+
- Library API returns plain dictionaries with `schema_version` and `tool_version`
|
|
96
|
+
- Fully typed, linted, formatted, and tested
|
|
97
|
+
- MkDocs documentation included
|
|
98
|
+
|
|
99
|
+
## Installation
|
|
100
|
+
|
|
101
|
+
### From PyPI
|
|
102
|
+
|
|
103
|
+
```bash
|
|
104
|
+
pip install lupaxa-sysinfo
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
### From source (development mode)
|
|
108
|
+
|
|
109
|
+
```bash
|
|
110
|
+
pip install -e ".[dev]"
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
## Library quick start
|
|
114
|
+
|
|
115
|
+
```python
|
|
116
|
+
from lupaxa.sysinfo import collect_report
|
|
117
|
+
|
|
118
|
+
report = collect_report(cpu=True, memory=True)
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
For `CollectOptions`, `RedactOptions`, and profiles, see the
|
|
122
|
+
[documentation](https://sysinfo.thelupaxaproject.org/).
|
|
123
|
+
|
|
124
|
+
## CLI quick start
|
|
125
|
+
|
|
126
|
+
```bash
|
|
127
|
+
sysinfo --help
|
|
128
|
+
sysinfo --version
|
|
129
|
+
sysinfo --profile ci --json report.json
|
|
130
|
+
sysinfo --all --yaml report.yaml
|
|
131
|
+
sysinfo --all --output xml
|
|
132
|
+
sysinfo --profile support --xml report.xml
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
You can also run the CLI as a module:
|
|
136
|
+
|
|
137
|
+
```bash
|
|
138
|
+
python -m lupaxa.sysinfo --help
|
|
139
|
+
python -m lupaxa.sysinfo --profile ci --json out.json
|
|
140
|
+
```
|
|
141
|
+
|
|
142
|
+
## Requirements
|
|
143
|
+
|
|
144
|
+
- Python 3.10+
|
|
145
|
+
- Runtime dependencies: `psutil`, `PyYAML`, `tldextract`
|
|
146
|
+
(plus `distro` on Linux)
|
|
147
|
+
|
|
148
|
+
## Documentation
|
|
149
|
+
|
|
150
|
+
Online documentation:
|
|
151
|
+
|
|
152
|
+
[Documentation](https://sysinfo.thelupaxaproject.org/)
|
|
153
|
+
|
|
154
|
+
Source repository:
|
|
155
|
+
|
|
156
|
+
[GitHub](https://github.com/lupaxa-developers-toolbox/sysinfo)
|
|
157
|
+
|
|
158
|
+
### Serve docs locally
|
|
159
|
+
|
|
160
|
+
From a clone of the repository:
|
|
161
|
+
|
|
162
|
+
```bash
|
|
163
|
+
make mkdocs-serve
|
|
164
|
+
```
|
|
165
|
+
|
|
166
|
+
Then open the local URL printed by MkDocs in your browser.
|
|
167
|
+
|
|
168
|
+
## Development
|
|
169
|
+
|
|
170
|
+
Clone the repository and install with Make:
|
|
171
|
+
|
|
172
|
+
```bash
|
|
173
|
+
make init # first-time makefile-skills checkout
|
|
174
|
+
make python-install-dev # editable install with [dev]
|
|
175
|
+
make python-check # lint, type-check, and test
|
|
176
|
+
```
|
|
177
|
+
|
|
178
|
+
<a href="https://github.com/the-lupaxa-project">
|
|
179
|
+
<img src="https://raw.githubusercontent.com/the-lupaxa-project/brand-assets/master/logos/components/footer-for-child-orgs.svg" alt="The Lupaxa Project Footer" width="100%" />
|
|
180
|
+
</a>
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
<!-- markdownlint-disable -->
|
|
2
|
+
<p align="center">
|
|
3
|
+
<a href="https://github.com/lupaxa-developers-toolbox">
|
|
4
|
+
<img src="https://raw.githubusercontent.com/the-lupaxa-project/brand-assets/master/logos/organisations/developers-toolbox/readme-logo.png" alt="Project Logo" width="256"/><br/>
|
|
5
|
+
</a>
|
|
6
|
+
</p>
|
|
7
|
+
<h3 align="center">
|
|
8
|
+
The Lupaxa Developers Toolbox<br />
|
|
9
|
+
Part of The Lupaxa Project
|
|
10
|
+
</h3>
|
|
11
|
+
|
|
12
|
+
<br />
|
|
13
|
+
|
|
14
|
+
# lupaxa-sysinfo
|
|
15
|
+
|
|
16
|
+
Cross-platform system inventory **library and CLI**: modular collectors, granular
|
|
17
|
+
redaction, and JSON / YAML / XML / HTML reports.
|
|
18
|
+
|
|
19
|
+
Built for automation and support workflows used by The Lupaxa Project.
|
|
20
|
+
|
|
21
|
+
## Features
|
|
22
|
+
|
|
23
|
+
- Lightweight defaults: basic host info as pretty-printed JSON
|
|
24
|
+
- Opt-in collectors: CPU, memory, disks, network, listening ports, processes,
|
|
25
|
+
firewall, runtimes, GPU, packages
|
|
26
|
+
- Granular redaction for hosts, users, IPs, secrets, domains, and custom regexes
|
|
27
|
+
- Profiles for common workflows: `minimal`, `ci`, `support`
|
|
28
|
+
- Output formats (CLI): JSON, YAML, XML, human summary, and compact HTML
|
|
29
|
+
- Library API returns plain dictionaries with `schema_version` and `tool_version`
|
|
30
|
+
- Fully typed, linted, formatted, and tested
|
|
31
|
+
- MkDocs documentation included
|
|
32
|
+
|
|
33
|
+
## Installation
|
|
34
|
+
|
|
35
|
+
### From PyPI
|
|
36
|
+
|
|
37
|
+
```bash
|
|
38
|
+
pip install lupaxa-sysinfo
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
### From source (development mode)
|
|
42
|
+
|
|
43
|
+
```bash
|
|
44
|
+
pip install -e ".[dev]"
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
## Library quick start
|
|
48
|
+
|
|
49
|
+
```python
|
|
50
|
+
from lupaxa.sysinfo import collect_report
|
|
51
|
+
|
|
52
|
+
report = collect_report(cpu=True, memory=True)
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
For `CollectOptions`, `RedactOptions`, and profiles, see the
|
|
56
|
+
[documentation](https://sysinfo.thelupaxaproject.org/).
|
|
57
|
+
|
|
58
|
+
## CLI quick start
|
|
59
|
+
|
|
60
|
+
```bash
|
|
61
|
+
sysinfo --help
|
|
62
|
+
sysinfo --version
|
|
63
|
+
sysinfo --profile ci --json report.json
|
|
64
|
+
sysinfo --all --yaml report.yaml
|
|
65
|
+
sysinfo --all --output xml
|
|
66
|
+
sysinfo --profile support --xml report.xml
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
You can also run the CLI as a module:
|
|
70
|
+
|
|
71
|
+
```bash
|
|
72
|
+
python -m lupaxa.sysinfo --help
|
|
73
|
+
python -m lupaxa.sysinfo --profile ci --json out.json
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
## Requirements
|
|
77
|
+
|
|
78
|
+
- Python 3.10+
|
|
79
|
+
- Runtime dependencies: `psutil`, `PyYAML`, `tldextract`
|
|
80
|
+
(plus `distro` on Linux)
|
|
81
|
+
|
|
82
|
+
## Documentation
|
|
83
|
+
|
|
84
|
+
Online documentation:
|
|
85
|
+
|
|
86
|
+
[Documentation](https://sysinfo.thelupaxaproject.org/)
|
|
87
|
+
|
|
88
|
+
Source repository:
|
|
89
|
+
|
|
90
|
+
[GitHub](https://github.com/lupaxa-developers-toolbox/sysinfo)
|
|
91
|
+
|
|
92
|
+
### Serve docs locally
|
|
93
|
+
|
|
94
|
+
From a clone of the repository:
|
|
95
|
+
|
|
96
|
+
```bash
|
|
97
|
+
make mkdocs-serve
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
Then open the local URL printed by MkDocs in your browser.
|
|
101
|
+
|
|
102
|
+
## Development
|
|
103
|
+
|
|
104
|
+
Clone the repository and install with Make:
|
|
105
|
+
|
|
106
|
+
```bash
|
|
107
|
+
make init # first-time makefile-skills checkout
|
|
108
|
+
make python-install-dev # editable install with [dev]
|
|
109
|
+
make python-check # lint, type-check, and test
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
<a href="https://github.com/the-lupaxa-project">
|
|
113
|
+
<img src="https://raw.githubusercontent.com/the-lupaxa-project/brand-assets/master/logos/components/footer-for-child-orgs.svg" alt="The Lupaxa Project Footer" width="100%" />
|
|
114
|
+
</a>
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
<p align="center">
|
|
2
|
+
<a href="https://github.com/lupaxa-developers-toolbox">
|
|
3
|
+
<img src="https://raw.githubusercontent.com/the-lupaxa-project/brand-assets/master/logos/organisations/developers-toolbox/readme-logo.png" alt="Developers Toolbox" />
|
|
4
|
+
</a>
|
|
5
|
+
</p>
|
|
6
|
+
|
|
7
|
+
<h1 align="center">sysinfo</h1>
|
|
8
|
+
|
|
9
|
+
Cross-platform system inventory with modular collectors, redaction, and JSON/YAML/XML/HTML reports.
|
|
10
|
+
|
|
11
|
+
<p align="center">
|
|
12
|
+
<a href="https://sysinfo.thelupaxaproject.org/">Documentation</a>
|
|
13
|
+
·
|
|
14
|
+
<a href="https://github.com/lupaxa-developers-toolbox/sysinfo">GitHub</a>
|
|
15
|
+
</p>
|
|
16
|
+
|
|
17
|
+
## Install
|
|
18
|
+
|
|
19
|
+
```bash
|
|
20
|
+
pip install lupaxa-sysinfo
|
|
21
|
+
sysinfo --help
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
## Features
|
|
25
|
+
|
|
26
|
+
- Lightweight defaults: basic host info as pretty-printed JSON
|
|
27
|
+
- Opt-in collectors: CPU, memory, disks, network, listening ports, processes, firewall, runtimes, GPU, packages
|
|
28
|
+
- Granular redaction for hosts, users, IPs, secrets, domains, and custom regexes
|
|
29
|
+
- Profiles for common workflows: `minimal`, `ci`, `support`
|
|
30
|
+
- JSON, YAML, XML, human summary, and compact HTML output (CLI)
|
|
31
|
+
|
|
32
|
+
## Requirements
|
|
33
|
+
|
|
34
|
+
- Python 3.10+
|
|
35
|
+
- Runtime: `psutil` (plus `distro` on Linux; `tldextract` for PSL-aware redaction)
|
|
36
|
+
|
|
37
|
+
## Library quick start
|
|
38
|
+
|
|
39
|
+
```python
|
|
40
|
+
from lupaxa.sysinfo import collect_report
|
|
41
|
+
|
|
42
|
+
report = collect_report(cpu=True, memory=True)
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
Reports are plain dictionaries with `schema_version` and `tool_version` keys,
|
|
46
|
+
ready for JSON serialisation. See the
|
|
47
|
+
[documentation](https://sysinfo.thelupaxaproject.org/) for `CollectOptions`,
|
|
48
|
+
`RedactOptions`, and profiles.
|
|
49
|
+
|
|
50
|
+
## CLI quick start
|
|
51
|
+
|
|
52
|
+
```bash
|
|
53
|
+
sysinfo --version
|
|
54
|
+
sysinfo --profile ci --json report.json
|
|
55
|
+
sysinfo --all --yaml report.yaml
|
|
56
|
+
sysinfo --all --output xml
|
|
57
|
+
sysinfo --profile support --xml report.xml
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
You can also run the CLI as a module:
|
|
61
|
+
|
|
62
|
+
```bash
|
|
63
|
+
python -m lupaxa.sysinfo --help
|
|
64
|
+
python -m lupaxa.sysinfo --profile ci --json out.json
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
## Development
|
|
68
|
+
|
|
69
|
+
From a clone of this repository:
|
|
70
|
+
|
|
71
|
+
```bash
|
|
72
|
+
make init # first-time makefile-skills checkout
|
|
73
|
+
make python-install-dev # editable install with [dev]
|
|
74
|
+
make python-check # lint, type-check, and test
|
|
75
|
+
make mkdocs-serve # after skills are installed
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
Community standards (code of conduct, contributing, security) are in [`docs/`](docs/).
|
|
79
|
+
|
|
80
|
+
<a href="https://github.com/the-lupaxa-project">
|
|
81
|
+
<img src="https://raw.githubusercontent.com/the-lupaxa-project/brand-assets/master/logos/components/footer-for-child-orgs.svg" alt="The Lupaxa Project Footer" width="100%" />
|
|
82
|
+
</a>
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
<p align="center">
|
|
2
|
+
<a href="https://github.com/lupaxa-developers-toolbox">
|
|
3
|
+
<img src="https://raw.githubusercontent.com/the-lupaxa-project/brand-assets/master/logos/organisations/developers-toolbox/readme-logo.png" alt="Organisation Logo" />
|
|
4
|
+
</a>
|
|
5
|
+
</p>
|
|
6
|
+
|
|
7
|
+
<h1 align="center">Core Documentation</h1>
|
|
8
|
+
|
|
9
|
+
The following documents define the standards that apply across **The Lupaxa Project**:
|
|
10
|
+
|
|
11
|
+
| Document | Purpose |
|
|
12
|
+
| :------------------------------------ | :---------------------------------------------------------------- |
|
|
13
|
+
| [Code of Conduct](CODE_OF_CONDUCT.md) | Expected behaviour and reporting procedures. |
|
|
14
|
+
| [How to Contribute](CONTRIBUTING.md) | Development workflow, coding standards, and contribution process. |
|
|
15
|
+
| [Governance](GOVERNANCE.md) | Project governance, roles, and decision-making. |
|
|
16
|
+
| [Maintainers](MAINTAINERS.md) | Maintainer responsibilities and expectations. |
|
|
17
|
+
| [Projects Overview](PROJECTS.md) | Overview of organisations, repositories, and project structure. |
|
|
18
|
+
| [Security Policy](SECURITY.md) | Responsible disclosure and secure development practices. |
|
|
19
|
+
| [Support Guide](SUPPORT.md) | How to obtain help and support. |
|
|
20
|
+
|
|
21
|
+
<a href="https://github.com/the-lupaxa-project">
|
|
22
|
+
<img src="https://raw.githubusercontent.com/the-lupaxa-project/brand-assets/master/logos/components/footer-for-child-orgs.svg" alt="The Lupaxa Project Footer" width="100%" />
|
|
23
|
+
</a>
|
|
@@ -0,0 +1,156 @@
|
|
|
1
|
+
[build-system]
|
|
2
|
+
requires = ["hatchling>=1.18"]
|
|
3
|
+
build-backend = "hatchling.build"
|
|
4
|
+
|
|
5
|
+
[project]
|
|
6
|
+
name = "lupaxa-sysinfo"
|
|
7
|
+
dynamic = ["version"]
|
|
8
|
+
description = "Cross-platform system inventory library and CLI with modular collectors, redaction, and JSON/YAML/XML/HTML reports."
|
|
9
|
+
readme = "README-PYPI.md"
|
|
10
|
+
license = { file = "LICENCE" }
|
|
11
|
+
requires-python = ">=3.10"
|
|
12
|
+
|
|
13
|
+
authors = [
|
|
14
|
+
{ name = "The Lupaxa Project" }
|
|
15
|
+
]
|
|
16
|
+
|
|
17
|
+
keywords = ["sysinfo", "system-info", "inventory", "cli", "psutil"]
|
|
18
|
+
|
|
19
|
+
dependencies = [
|
|
20
|
+
"psutil>=5.9",
|
|
21
|
+
"distro>=1.8; sys_platform == 'linux'",
|
|
22
|
+
"tldextract>=5.0",
|
|
23
|
+
"PyYAML>=6.0",
|
|
24
|
+
]
|
|
25
|
+
|
|
26
|
+
classifiers = [
|
|
27
|
+
"Development Status :: 4 - Beta",
|
|
28
|
+
"Environment :: Console",
|
|
29
|
+
"Intended Audience :: Developers",
|
|
30
|
+
"License :: OSI Approved :: MIT License",
|
|
31
|
+
"Operating System :: OS Independent",
|
|
32
|
+
"Programming Language :: Python :: 3",
|
|
33
|
+
"Programming Language :: Python :: 3.10",
|
|
34
|
+
"Programming Language :: Python :: 3.11",
|
|
35
|
+
"Programming Language :: Python :: 3.12",
|
|
36
|
+
"Programming Language :: Python :: 3.13",
|
|
37
|
+
"Programming Language :: Python :: 3.14",
|
|
38
|
+
"Topic :: System :: Systems Administration",
|
|
39
|
+
"Topic :: Software Development :: Libraries :: Python Modules",
|
|
40
|
+
"Topic :: Utilities",
|
|
41
|
+
]
|
|
42
|
+
|
|
43
|
+
[project.urls]
|
|
44
|
+
Homepage = "https://github.com/lupaxa-developers-toolbox/sysinfo"
|
|
45
|
+
Repository = "https://github.com/lupaxa-developers-toolbox/sysinfo"
|
|
46
|
+
Issues = "https://github.com/lupaxa-developers-toolbox/sysinfo/issues"
|
|
47
|
+
Documentation = "https://sysinfo.thelupaxaproject.org/"
|
|
48
|
+
|
|
49
|
+
[project.scripts]
|
|
50
|
+
sysinfo = "lupaxa.sysinfo.cli:main"
|
|
51
|
+
|
|
52
|
+
[project.optional-dependencies]
|
|
53
|
+
dev = [
|
|
54
|
+
"pytest>=8.0",
|
|
55
|
+
"pytest-cov>=5.0",
|
|
56
|
+
"ruff>=0.6.0",
|
|
57
|
+
"mypy>=1.12.0",
|
|
58
|
+
"hatch>=1.12.0",
|
|
59
|
+
"bump-my-version>=1.2.0",
|
|
60
|
+
"pip-audit>=2.7.0",
|
|
61
|
+
"mkdocs==1.6.1",
|
|
62
|
+
"mkdocs-material==9.7.7",
|
|
63
|
+
]
|
|
64
|
+
test = [
|
|
65
|
+
"pytest>=8.0",
|
|
66
|
+
"pytest-cov>=5.0",
|
|
67
|
+
]
|
|
68
|
+
|
|
69
|
+
[tool.hatch.version]
|
|
70
|
+
path = "src/lupaxa/sysinfo/version.py"
|
|
71
|
+
|
|
72
|
+
[tool.hatch.build.targets.sdist]
|
|
73
|
+
include = [
|
|
74
|
+
"src/**",
|
|
75
|
+
"README.md",
|
|
76
|
+
"README-PYPI.md",
|
|
77
|
+
"LICENCE",
|
|
78
|
+
]
|
|
79
|
+
|
|
80
|
+
[tool.hatch.build.targets.wheel]
|
|
81
|
+
packages = ["src/lupaxa"]
|
|
82
|
+
|
|
83
|
+
[tool.ruff]
|
|
84
|
+
line-length = 100
|
|
85
|
+
target-version = "py310"
|
|
86
|
+
|
|
87
|
+
[tool.ruff.lint]
|
|
88
|
+
# Core Lupaxa rule set
|
|
89
|
+
select = [
|
|
90
|
+
# --- Essential correctness + hygiene ---
|
|
91
|
+
"E", # pycodestyle: basic style errors
|
|
92
|
+
"F", # pyflakes: unused vars, undefined names
|
|
93
|
+
"I", # import sorting
|
|
94
|
+
"B", # bugbear: common footguns
|
|
95
|
+
|
|
96
|
+
# --- Security layer ---
|
|
97
|
+
"S", # bandit-like security checks
|
|
98
|
+
|
|
99
|
+
# --- Modernisation + cleanup ---
|
|
100
|
+
"UP", # pyupgrade: modern Python idioms
|
|
101
|
+
"SIM", # simplify complex expressions/conditions
|
|
102
|
+
"C4", # flake8-comprehensions
|
|
103
|
+
"ISC", # implicit string-concat safety
|
|
104
|
+
|
|
105
|
+
# --- New additions (strict mode) ---
|
|
106
|
+
"D", # pydocstyle: docstring formatting/consistency
|
|
107
|
+
"ANN", # annotations: missing/incorrect typing hints
|
|
108
|
+
"PT", # pytest: best practices for tests
|
|
109
|
+
]
|
|
110
|
+
|
|
111
|
+
# Disable D2xx summary/spacing rules that conflict with our preferred style
|
|
112
|
+
ignore = [
|
|
113
|
+
"D200", # one-line docstring violation (not needed for multi-line)
|
|
114
|
+
"D201", # no blank line before docstring
|
|
115
|
+
"D202", # blank line after docstring
|
|
116
|
+
"D203", # 1 blank line before class docstring
|
|
117
|
+
"D204", # 1 blank line after class docstring
|
|
118
|
+
"D205", # 1 blank line required between summary line and description
|
|
119
|
+
"D206", # various indentation rules
|
|
120
|
+
"D207",
|
|
121
|
+
"D208",
|
|
122
|
+
"D209",
|
|
123
|
+
"D210",
|
|
124
|
+
"D211",
|
|
125
|
+
"D212", # "Summary should start at first line" (we prefer second line)
|
|
126
|
+
]
|
|
127
|
+
|
|
128
|
+
[tool.ruff.lint.per-file-ignores]
|
|
129
|
+
# Nested test layout (tests/cli, tests/core); `tests/*` alone does not match.
|
|
130
|
+
"tests/**/*.py" = [
|
|
131
|
+
"S101", # allow bare assert in tests
|
|
132
|
+
"S105", # allow test-only "password"-like literals
|
|
133
|
+
"ANN001", # allow untyped fixture arguments
|
|
134
|
+
"ANN201", # allow untyped test function returns
|
|
135
|
+
]
|
|
136
|
+
|
|
137
|
+
[tool.ruff.lint.pydocstyle]
|
|
138
|
+
# NumPy-style docstrings, closest to our format
|
|
139
|
+
convention = "numpy"
|
|
140
|
+
|
|
141
|
+
[tool.ruff.format]
|
|
142
|
+
quote-style = "double"
|
|
143
|
+
|
|
144
|
+
[tool.mypy]
|
|
145
|
+
python_version = "3.10"
|
|
146
|
+
files = ["src", "tests"]
|
|
147
|
+
mypy_path = "src"
|
|
148
|
+
explicit_package_bases = true
|
|
149
|
+
namespace_packages = true
|
|
150
|
+
warn_unused_configs = true
|
|
151
|
+
ignore_missing_imports = true
|
|
152
|
+
|
|
153
|
+
[tool.pytest.ini_options]
|
|
154
|
+
addopts = "-ra -q --disable-warnings"
|
|
155
|
+
testpaths = ["tests"]
|
|
156
|
+
pythonpath = ["src"]
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
"""Lupaxa sysinfo — cross-platform system inventory library."""
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
|
|
5
|
+
from .api import collect_report
|
|
6
|
+
from .collectors import SCHEMA_VERSION, set_strict_missing
|
|
7
|
+
from .options import CollectOptions, RedactOptions
|
|
8
|
+
from .redact import public_suffix_available
|
|
9
|
+
from .version import __version__, get_version
|
|
10
|
+
|
|
11
|
+
__all__ = [
|
|
12
|
+
"SCHEMA_VERSION",
|
|
13
|
+
"CollectOptions",
|
|
14
|
+
"RedactOptions",
|
|
15
|
+
"__version__",
|
|
16
|
+
"collect_report",
|
|
17
|
+
"get_version",
|
|
18
|
+
"public_suffix_available",
|
|
19
|
+
"set_strict_missing",
|
|
20
|
+
]
|