
cli-calc¶
Powerful yet easy command line calculator.
Introduction¶
python at the comand line (cli)¶
It is easy and common to use Python as a Calculator.
$ python
Python 3.8.5 (default, Aug 2 2020, 16:00:15)
[Clang 11.0.0 (clang-1100.0.33.17)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> 2**10
1024
>>> _ / 10
102.4
>>> import math
>>> math.pi
3.141592653589793
>>> math.sin(math.pi / 2)
1.0
>>> exit()
But: There must be a better way! And there is…
cli-calc¶
$ cli-calc
hex, int, float,
0x0, 0, 0.0, : 2**10
2**10
0x400, 1024, 1024.0, : _ / 10
1024.0/10
0x66, 102, 102.4, : sin(pi / 2)
sin(pi/2)
0x1, 1, 1.0, : q
$
More examples¶
cos(pi/2)
0xFF ^ 0b10
2**8-1
log(2)
comb(49,6)
factorial(42)
random()
cmath.phase(complex(-1.0, 0.0))
Included Math Libraries¶
Ready to use out of the box:
standard operators
-, >>, ...
standard math library
cd, log, sin, sinh, gamma, pi, e, tau, inf, nan...
cmath
phase(complex(-1.0, 0.0)), and then most of the above with complex numbers.
random
random, choice(['win', 'lose', 'draw']), mean, ...
built in functions
max, help, sum, ...
Installation¶
pip install cli-calc
Configuration¶
For convenience, add a shell script in ~/bin
:
cd ~/bin
vi cli-calc
with the following lines:
path=~/path/to/your/cli-calc/cli_calc
cd $path
./main.py
Make it executeable:
chmod a+x cli-calc
then use it anywhere. :-)
echo "7+8" | cli-calc
cat foo.bar | cli-calc
cli-calc
Help¶
calc
h
Input:
"q" for quit, "h" for help
"_" for last float value
"_int_" for last int value
"sin(pi/2)" for sinus, ...
"pi", "tau" and "e" for pi, tau and Euler
"+f" to add display for fraction, "-f" to suppress display for fraction
Other letters are:
he(x), (o)ctal, (b)inary, (i)nteger,
(f)raction, (t)ruth, i(e)ee, ieee_bi(n), f(r)om_ieee
"float" is always visible
See https://docs.python.org/3/library/math.html, use without "math."
https://www.w3schools.com/python/python_operators.asp
Try "cos(pi/2)", XOR: "0xFF ^ 0b10", "2**8-1", "factorial(42)",
"help(math)"
Warning¶
Use of ``eval` <https://docs.python.org/3/library/functions.html#eval>`_ is evil. However precautions are taken.
Development¶
Pull Request¶
PR’s are Welcome! See PULL_REQUEST_TEMPLATE and CONTRIBUTING.
Metric Dashboard¶

Note on Shields¶
flake8-commas one of the development plugins of the wemake-python-styleguide 2 is marked as No Maintenance Intended. Hence the 1 deprecated dependency. See this Issue. Most probable wemake 2 will replace this dependency with a fork.
Features¶
Fully typed with annotations
Checked with mypy
Packaging PEP561 compatible
Tools¶
Python Packages¶
pypi.org Python Package Index
pythonrepo.com Popular Python Libraries
Style and type annotations¶
Testing¶
pytest test framework
The Magic Tricks of Testing by Sandi Metz (Talk) on what to test, and what not
Continuous Testing & Integration (CT & CI)¶
Integration as in: Deployment and Integration testing.
-
pytest & coverage (yml) pytest @ python-version: [‘3.7’, ‘3.8’, ‘3.9’, ‘3.10’]
Alternatives to github actions
tox test and deploy
travis test and deploy
coveralls.io coverage
Build and publish to pypi¶
make Makefile automate above
poetry version bump bump version
poetry build wheel
poetry publish to pypi
Following Semantic Versioning¶
-
semver Python Package
Development Environment¶
poetry python packaging and dependency management
cookiecutter creates projects from project templates
venv creates projects from project templates
Version and Issue Management¶
IDE¶
Shell¶
Documentation¶
Markdown lightweight markup language
sphinx Python documentation Generator
doc8 opinionated style checker for rst
readthedocs document style and service
Metric¶
shields for Shields and Badges
issuehub.pro Label Guide
cloc for SLOC
Jason Query for Makefile and Shields¶
Teaching Python Development¶
cli-calc Examples¶
NvK Tools¶
License¶
Credits¶
This project was generated with ``wemake-python-package` <https://github.com/wemake-services/wemake-python-package>`_. Current template version is: d06993f12e3ffad79652a2aec86189dee92d94dd. See what is updated since then.
Contents¶
Changelog