Skip to main content

Create a command line interface with minimal setup.

PyPI Python versions PyPI license

Command line interface (Cli) with a schema (Ma) - Clima

Installation

pip install clima

Requires Python 3.9.2+.

Quick example

from clima import Schema

class S(Schema):
    place = 'Finland'

@S.cli
class Cli:
    def say_hi(self):
        print(f'Hi from {S.place}')
$ cli.py say_hi
Hi from Finland
$ cli.py say_hi --place 'Sweden'
Hi from Sweden

Why Clima?

Clima eliminates CLI boilerplate: just define a Schema dataclass and a Cli class. Opinionated for convenience; Unlike click, typer, or argparse, clima gives you a built-in config cascade (CLI args → env vars → .env file → config file → defaults) with zero extra code.

Features

Schema fields double as CLI flags, environment variables, and config file keys automatically while providing help printout, default values and type casting.

  • Config cascade :: CLI args → env vars → .env file → config file → defaults, resolved automatically
  • Type casting :: Schema field annotations are used to cast string CLI/env values to the right type
  • Help from field comments :: Docstrings on Schema fields act as --help output
  • IDE completions :: C.name is typed as str — completions and type checking work natively
  • --verbose / --quiet logging :: Add verbose: bool or quiet: bool to Schema and get preconfigured logging
  • Undefined param warnings :: Unknown --flags on the command line produce a clear warning
  • version subcommand :: myscript version prints the package version automatically
  • Config file support :: Declare defaults in an INI-style .conf file keyed to your package name
  • .env file and env var support :: Schema fields are also read from environment variables and .env files
  • Optional gpg secrets :: Decrypt secrets via pass / gnupg if installed
  • Optional shortened tracebacks :: Truncate python tracebacks into an opinionated format

Documentation

Full documentation at python-clima.readthedocs.io.

See and run the examples/ directory for more usage patterns.

AI Disclaimer

This work started in 2019 as my hobby project and continues as so. Claude was used to bridge gaps I had planned, but had not had the time to address.

Before merging to main and uploading to pypi the code is hand-vetted to find all code assistance related issues.

Contributions ratios

Release files for clima 0.13.8

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for clima 0.13.8
File Size Uploaded
clima-0.13.8.tar.gz 38.0 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for clima 0.13.8
File Interpreter ABI Platform
clima-0.13.8-py3-none-any.whl Python 3 none any Details

Total release size: 86.4 kB

Release files / clima-0.13.8.tar.gz

Download URL clima-0.13.8.tar.gz
Size 38.0 kB
Tags Source
SHA-256 checksum
How to use checksums
5a438d6aa59f70888122bdf131af011c053d22c827fc144cede678686c27de5a
BLAKE2b-256 checksum
How to use checksums
79602fb36b24f2ca05c072bd33b4b1563ad9c0ec00aa3f0d46e96aeb65930e00
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/2.4.0 CPython/3.12.9 Darwin/24.6.0

Release files / clima-0.13.8-py3-none-any.whl

Download URL clima-0.13.8-py3-none-any.whl
Size 48.4 kB
Tags Python 3
SHA-256 checksum
How to use checksums
e176ec076fedf2864ca004c981d32ff8f590b069b910f3a3df56c543af3224d2
BLAKE2b-256 checksum
How to use checksums
dc908df3f1a09a8dcae1a5a4c873e0bfb5b2705a786b3cbf88554dc1b5dbde09
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/2.4.0 CPython/3.12.9 Darwin/24.6.0

Release history Release notifications | RSS feed

This release

0.13.8 This release

2 release files

0.8.4

2 release files

0.8.3

2 release files

0.8.2

2 release files

0.8.1

2 release files

0.8.0

2 release files

0.7.14

2 release files

0.7.13

2 release files

0.7.12

2 release files

0.7.11

2 release files

0.7.10

2 release files

0.7.9

2 release files

0.7.8

2 release files

0.7.7

2 release files

0.7.6

2 release files

0.7.5

2 release files

0.7.4

2 release files

0.7.3

2 release files

0.7.2

2 release files

0.7.0

2 release files

0.6.6

2 release files

0.6.4

2 release files

0.6.3

2 release files

0.6.2

2 release files

0.6.1

2 release files

0.6.0

2 release files

0.5.6

2 release files

0.5.5

2 release files

0.5.4

2 release files

0.5.3

2 release files

0.5.2

2 release files

0.5.1

2 release files

0.4.3

1 release file

0.4.2

1 release file

0.4.1

1 release file

0.4.0

2 release files

0.3.2

2 release files

0.2.3

2 release files

0.2.1

2 release files

0.2.0

2 release files

0.1.1

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page