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.2.0.tar.gz (7.1 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.2.0-py3-none-any.whl (5.6 kB view details)

Uploaded Python 3

File details

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

File metadata

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

File hashes

Hashes for kliamka-0.2.0.tar.gz
Algorithm Hash digest
SHA256 f4619787d1b1a0779d68dbd95385ef42b4e6ad1c894c457c896494fba201bf36
MD5 b737beb83262751b2860e0cf25ef43aa
BLAKE2b-256 f917826e56bbb187c339dd2abcc2b7b20fceeaf6783d9559ff1efca7c1791a2f

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: kliamka-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 5.6 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.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 339e50d7be7bb0e34a1ea1e4897c947921590c7b477e8e6e30f1fdad44a8e2d9
MD5 0e20e9a25bb1359ba3e6a89ace681774
BLAKE2b-256 62e51c3212293806fdc65a74ff407276d5a6ab1bf710987eee1e08797f359324

See more details on using hashes here.

Provenance

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