Metadata-Version: 2.1
Name: wisepy
Version: 0.2.10
Summary: effective and intuitive CLI framework
Home-page: https://github.com/thautwarm/wisepy
Author: thautwarm
Author-email: twshere@outlook.com
License: MIT
Keywords: CLI solution
Platform: any
Classifier: Programming Language :: Python :: 3.6
Classifier: Programming Language :: Python :: 3.7
Classifier: Programming Language :: Python :: Implementation :: CPython
Requires-Python: >=3.6.0
Requires-Dist: Redy
Requires-Dist: rbnf
Requires-Dist: linq-t

Wisepy
======

RTPY is an intuitive and effective CLI framework which is scalable and
practical.

The most common use case might be an alternative of Python's
``argparser``, also you can enrich your terminal commands by using
``wisepy``.

The terminal utilities have been removed from ``wisepy``. One project,
one goal.

Install
-------

::

    pip install -U Redy rbnf wisepy

Usage
-----

.. code:: python


    from wisepy.talking import Talking
    talking = Talking()

    @talking
    def add(left: 'an integer', right: 'another integer'):
        """
        add up two numbers.
        """
        left = int(left)
        right = int(right)
        return left + right

    if __name__ == '__main__':
        talking.on()

And then use this python script:

.. code:: shell

    cmd> python add --help # not only `cmd`, support all terminal as well.

      add
          add up two numbers.

      - left(positional or keyword arg)  : an integer
      - right(positional or keyword arg) : another integer

    cmd> python demo.py add 1 2

    3

Another example here shows that ``wisepy`` can translate python
functions with any kinds of parameter signatures into terminal command.

.. code:: python

    @talking.alias('sum')
    def another(*args,
                to_float: bool = False,
                double=None,
                additional_add: int = None):
        """
        my sum command
        """

        # using type annotation in keyword argument makes the argument
        # cast to the specific type.

        ret = sum(map(int, args))

        if double:
            ret = ret * 2

        if to_float:
            ret = float(ret)

        if additional_add:
            ret += additional_add

        return ret

See terminal:

.. code:: shell

    cmd> python demo.py sum --help

      sum
          my sum command

      - args(*args)
      - to_float(keyword only) = False      : <class 'bool'>
      - double(keyword only) = None
      - additional_add(keyword only) = None : <class 'int'>

    cmd> python demo.py sum 1 2 3

    6

    cmd> python demo.py sum 1 2 3 --double

    12

    cmd> python demo.py sum 1 2 3 -additional_add 5 --double --to_float

    17.0


