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.2 (2025-11-11)

  • ADDED: When reading a file with FileContentService we set utf-8 errors to replace.

0.1.1 (2025-11-05)

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

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

config_inspector-0.1.2.tar.gz (14.1 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.2-py3-none-any.whl (10.6 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: config_inspector-0.1.2.tar.gz
  • Upload date:
  • Size: 14.1 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.2.tar.gz
Algorithm Hash digest
SHA256 9867a5f2c10a32cbad64ea2ab79d9be0f8ba8ca65acd20c75b5ae933b8b616ab
MD5 2096397f396b98d416688df644448e43
BLAKE2b-256 c84828ce88dc3a67eb848e05d2ef81710a392a92a60e08bf6de538ea4f9b6507

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for config_inspector-0.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 3cb3811c23b2aacae672b7cbfd3474a53beaa9a07df6e689a5b630a354157c14
MD5 013d0eb2783eb0c95318a346c9445453
BLAKE2b-256 1d2a50fab9ffc2b6dd41fa0c532813ef810fd97fa969500e59d34cdfb0c7a004

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