Skip to content

corallium⚓︎

CLI utility functions extracted from Calcipy.

Installation⚓︎

  1. poetry add corallium

  2. Take advantage of the logger or other common functionality

    form corallium.log import LOGGER
    
    LOGGER.info('Hello!')
    

Usage⚓︎

  • log: Configure and use the global logger

    from corallium.log import LOGGER, configure_logger
    import logging
    
    configure_logger(log_level=logging.INFO)
    LOGGER.info('Processing started', item_count=42)
    
  • pretty_process: Run parallel tasks with progress bars

    from corallium.pretty_process import pretty_process
    
    
    def task(task_id, shared_progress, data):
        for item in data:
            process(item)
            shared_progress[task_id] += 1
        return len(data)
    
    
    results = pretty_process(task, data=items, num_workers=4)
    
  • shell: Execute shell commands with output capture

    from corallium.shell import capture_shell
    
    output = capture_shell('git status', timeout=30)
    
  • file_helpers: File utilities and project configuration

    from corallium.file_helpers import find_in_parents, read_pyproject
    
    pyproject = read_pyproject()
    lock_path = find_in_parents(name='uv.lock')
    
  • tomllib: Backport wrapper for TOML parsing (Python \<3.11 compatibility)

    from corallium.tomllib import tomllib
    
    data = tomllib.loads(content)
    
  • dot_dict: Wrapper for dotted-dictionary access via Python-Box

    from corallium.dot_dict import ddict
    
    config = ddict({'nested': {'value': 42}})
    print(config.nested.value)
    

For more example code, see the scripts directory or the tests.

Project Status⚓︎

See the Open Issues and/or the CODE_TAG_SUMMARY. For release history, see the CHANGELOG.

Contributing⚓︎

We welcome pull requests! For your pull request to be accepted smoothly, we suggest that you first open a GitHub issue to discuss your idea. For resources on getting started with the code base, see the below documentation:

Code of Conduct⚓︎

We follow the Contributor Covenant Code of Conduct.

Open Source Status⚓︎

We try to reasonably meet most aspects of the “OpenSSF scorecard” from Open Source Insights

Responsible Disclosure⚓︎

If you have any security issue to report, please contact the project maintainers privately. You can reach us at [email protected].

License⚓︎

LICENSE