Skip to main content

Python package designed to help you manage and interact with text-based files in a robust and extensible way.

Project description

Config Inspector

Coverage

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

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 Bitbucket.

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.1 (2025-10-06)

  • First release

0.1.1 (2025-11-05)

  • Added .js and .ps1 extensions that simply use PlainTextUpdater and do not try to validate/format on save.

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

config_inspector-0.1.1.tar.gz (14.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

config_inspector-0.1.1-py3-none-any.whl (10.5 kB view details)

Uploaded Python 3

File details

Details for the file config_inspector-0.1.1.tar.gz.

File metadata

  • Download URL: config_inspector-0.1.1.tar.gz
  • Upload date:
  • Size: 14.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.1

File hashes

Hashes for config_inspector-0.1.1.tar.gz
Algorithm Hash digest
SHA256 3d7a11a30dc12984057c4067d48dbec1adaeed2604ba3ecf9b41c172a01f71b5
MD5 464d867462c38dd78a44c89eda684fb5
BLAKE2b-256 2ee9edff3716623ef3312b9311e67d29e3847d7567aa0ba3bf9389ad3a806581

See more details on using hashes here.

File details

Details for the file config_inspector-0.1.1-py3-none-any.whl.

File metadata

File hashes

Hashes for config_inspector-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 96912f40cb70513de4bd15aa6f8cf5fac2f28955c205d3e16a30d8c042f05aa0
MD5 a870476d2579f8d59aecb01ce3c8c54d
BLAKE2b-256 6277c7b91fdb2ea18d3dddb87cd895dc993c640ace9351e7718138cf9e977a8b

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page