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.

PyPI - Version

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.3.tar.gz (6.6 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.3-py3-none-any.whl (5.3 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: kliamka-0.1.3.tar.gz
  • Upload date:
  • Size: 6.6 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.3.tar.gz
Algorithm Hash digest
SHA256 976e93364ea9845a09f4e87bf658302f01731ab588c3b79ef54ac6fd9cea4cd5
MD5 afac68cca8888061153d4bfb25584d4c
BLAKE2b-256 233f577fc5dae6886b10e4a88e5d645e717c2e8570242638b4de1aa0a772d187

See more details on using hashes here.

Provenance

The following attestation bundles were made for kliamka-0.1.3.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.3-py3-none-any.whl.

File metadata

  • Download URL: kliamka-0.1.3-py3-none-any.whl
  • Upload date:
  • Size: 5.3 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.3-py3-none-any.whl
Algorithm Hash digest
SHA256 f7fb5c3d80f6d5ac570b84e3a07d58d09e172f7889567f2f25aeb701f870c8dd
MD5 528cb983548325d178ff20c21e74626e
BLAKE2b-256 b2629e3b965e66be3b99f004c012db1b2edacd1d1b32215f19e8419217eb4980

See more details on using hashes here.

Provenance

The following attestation bundles were made for kliamka-0.1.3-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