Python package designed to help you manage and interact with text-based files in a robust and extensible way.
Project description
Config Inspector
Overview
Config Inspector is a Python package designed to help you manage and interact with text-based config files in a robust and extensible way. It allows you to:
- Register files for tracking and easily gather their metadata (such as size, modification time, and type).
- Read and write files with built-in format validation for common configuration formats like INI, TOML, and JSON.
- Update configuration files safely, merging new content with existing data where appropriate.
- Download and extract files from remote sources, supporting ZIP and tar.gz archives.
- Extend functionality by registering custom file updaters for new file types.
This package is useful for applications that need to manage, validate, or automate configuration and content updates across a variety of file formats.
Installation
Install Host Info:
uv pip install config-inspector
Development
To get a list of all commands with descriptions simply run make.
make env
make pip_install_editable
Testing
make pytest
make coverage
make open_coverage
Issues
If you experience any issues, please create an issue on Github.
Example Usage
from pathlib import Path
from config_inspector.manager import ConfigManager
from config_inspector.registry import FileRegistry
from config_inspector.services import FileMetadataService
class SizeFormatter:
def format(self, size_bytes: int) -> str:
return f"{size_bytes} bytes"
class DateTimeFormatter:
def format(self, dt) -> str:
# return dt.isoformat()
return dt.strftime("%a, %b %d, %Y %-I:%M %p")
manager = ConfigManager()
config_files = [
Path("settings.json"),
Path("settings.toml"),
Path("settings.ini"),
Path("settings.cfg"),
Path("script.bat"),
Path("script.sh"),
Path("script.cmd")
]
log_files = [
Path("log.txt"),
Path("log.log"),
]
# Register and get metadata for all files
metadata_service = FileMetadataService(size_formatter=SizeFormatter(), datetime_formatter=DateTimeFormatter())
config_registry = FileRegistry(metadata_service)
log_registry = FileRegistry(metadata_service)
for fname in config_files:
config_registry.register(Path(fname))
for fname in log_files:
log_registry.register(Path(fname))
metadata = config_registry.get_all_metadata()
for meta in metadata:
print(meta)
metadata = log_registry.get_all_metadata()
for meta in metadata:
print(meta)
# Load/Update a Config file
from config_inspector.services import FileContentService
import json
filecontent_service = FileContentService(metadata_service, max_size_bytes=50_000)
payload = filecontent_service.get_payload(Path("settings.json"), key="config")
# Inject a new key
content = json.loads(payload['config']['content'])
content['foo'] = 'bar'
# Create/update various config files
manager.update(Path("settings.json"), content)
History
All notable changes to this project will be documented in this file. This project adheres to Semantic Versioning.
0.1.0 (2025-10-06)
- First release
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file config_inspector-0.1.0.tar.gz.
File metadata
- Download URL: config_inspector-0.1.0.tar.gz
- Upload date:
- Size: 13.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
65452a8d7554c84dfbe2702fb54cf9786d311654fb1972fdf3455bc7c0c827c9
|
|
| MD5 |
a95ca24ec3d84ee4b8ef07e499849d6e
|
|
| BLAKE2b-256 |
38b2824fcf736325d7a31b6cbdd85fec57eb4ba0db26a52799518adb73ff684d
|
File details
Details for the file config_inspector-0.1.0-py3-none-any.whl.
File metadata
- Download URL: config_inspector-0.1.0-py3-none-any.whl
- Upload date:
- Size: 11.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1d905afbd84c3dd97c6d436c854278139cab0594b1848027bf7bce8d500c52f8
|
|
| MD5 |
232dc3960a2b4460212bbda30ceaf792
|
|
| BLAKE2b-256 |
675d6bc1514fe51fcb7c404ab9809d0a98b9949c6b5d49f776ad2e8c69829b2f
|