Skip to main content

Small Python CLI library

Project description

Stand With Ukraine

Kliamka

A small Python CLI library that provides Pydantic-based argument parser with type safety.

Features

  • Type-safe CLI arguments with Pydantic validation
  • Decorator-based design for clean, readable code
  • Automatic argument parsing from class definitions
  • Modern Python 3.11+ with full type hints

Installation

# Install via pip
pip install kliamka

# Install from source
git clone https://github.com/hotsyk/kliamka.git
cd kliamka
make install

# Or install in development mode
pip install -e .

Quick Start

from kliamka import KliamkaArg, KliamkaArgClass, kliamka_cli

class MyArgs(KliamkaArgClass):
    """My CLI application arguments."""
    verbose: bool | None = KliamkaArg("--verbose", "Enable verbose output")
    count: int | None = KliamkaArg("--count", "Number of iterations", default=1)

@kliamka_cli(MyArgs)
def main(args: MyArgs) -> None:
    """Main application logic."""
    if args.verbose:
        print("Verbose mode enabled")

    for i in range(args.count or 1):
        print(f"Iteration {i + 1}")

if __name__ == "__main__":
    main()

Run your CLI:

python my_app.py --verbose --count 3

API Reference

Core Components

KliamkaArg

Descriptor for defining CLI arguments with automatic type inference.

class KliamkaArg:
    def __init__(self, flag: str, help_text: str = "", default: Any = None)

KliamkaArgClass

Base class for CLI argument definitions using Pydantic models.

class MyArgs(KliamkaArgClass):
    debug: bool | None = KliamkaArg("--debug", "Enable debug mode")
    config: str | None = KliamkaArg("--config", "Configuration file path")

@kliamka_cli

Decorator that automatically parses CLI arguments and injects them as the first parameter.

@kliamka_cli(MyArgs)
def main(args: MyArgs) -> None:
    # args is automatically populated from command line
    pass

Examples

See the examples/ directory for more comprehensive usage examples:

  • examples/basic_usage.py - Basic CLI argument handling
  • examples/enums.py - Handling of enumerated types

Development

Requirements

  • Python 3.11+
  • Pydantic 2.0+

Setup

# Clone and setup
git clone https://github.com/hotsyk/kliamka.git
cd kliamka
make install

# Run tests
make test

# Lint and type check
make lint

# Run example
python examples/basic_usage.py --help

Available Make Commands

  • make install - Install package in development mode
  • make run - Run the CLI application
  • make test - Run tests with pytest
  • make lint - Run type checking and linting
  • make format - Format code with ruff
  • make clean - Clean build artifacts

Documentation

Contributing

  1. Fork the repository
  2. Create a feature branch
  3. Make your changes with tests
  4. Run make lint and make test
  5. Submit a pull request

License

MIT-NORUS License - see LICENSE file for details.

Author

Volodymyr Hotsyk - https://github.com/hotsyk

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

kliamka-0.1.2.tar.gz (6.5 kB view details)

Uploaded Source

Built Distribution

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

kliamka-0.1.2-py3-none-any.whl (5.2 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: kliamka-0.1.2.tar.gz
  • Upload date:
  • Size: 6.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for kliamka-0.1.2.tar.gz
Algorithm Hash digest
SHA256 1682ad19caffadb7e877637bd5c637f2e74f4ef80301b4d6add3ae33c2d8c455
MD5 ac73a37f6bc48e0577614c5e995393c8
BLAKE2b-256 dc928611b87d1315a0851ca0ad2feae4df3215c4201c8e7a27a7f31b0c88d150

See more details on using hashes here.

Provenance

The following attestation bundles were made for kliamka-0.1.2.tar.gz:

Publisher: publish.yml on hotsyk/kliamka

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

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

File metadata

  • Download URL: kliamka-0.1.2-py3-none-any.whl
  • Upload date:
  • Size: 5.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for kliamka-0.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 fcc28376c8822f6e0acf8dd4b5c5661e3fb0722d2f185e58fed8733978e39146
MD5 14f57da092c7d4920d6447ccb4d3a256
BLAKE2b-256 5f868b8d32a4a3d43e658fced98a667df958f12eccf8c01eb8499bdf340a9b8e

See more details on using hashes here.

Provenance

The following attestation bundles were made for kliamka-0.1.2-py3-none-any.whl:

Publisher: publish.yml on hotsyk/kliamka

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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