Skip to main content

A small library to lets you define formulas that you can evaluate in your terminal.

Project description

Formula Prompt

This library let's you define formulas that you can later evaluate in your command line. I use this library for school work that requires repetitive calculations or calculations needing a computer.

Example

Here I define two formulas. Notice the @register_formula(...) decorator that registers the formulas with the library.

from formula_prompt import *

@register_formula([NumInput("side length")])
def volume_of_cube(s):
  return s ** 3

@register_formula([NumInput("length"), NumInput("width")])
def area_of_rectangle(length, width):
  return length * width

Now that the library has registered the formulas, I can launch the prompt.

launch_prompt()

The prompt lets you pick a formula and evaluate it.

0:	area_of_rectangle
1:	volume_of_cube
2:	quit
Pick a formula:
>>> 1
Input side length:
>>> 3
volume_of_cube:
27.0

For more examples, look at the /examples folder on GitHub.

How to use this library

  1. Install the library by running: pip install formula-prompt

  2. Write your formulas (see example above).

  3. Add the @register_formula(...) decorator (see below).

  4. Call launch_prompt().

Using @register_formula(...)

@register_formula(...) is a decorator that takes in a few parameters.

name Required Description
func_inputs Yes A list of objects describing the inputs to your formula (see allowed formula inputs section below).
decimal_places No. Defaults to 4. Decimal places to round the results of your formula to. Specify None to disable rounding.
name No. Defaults to the function name. Lets you set the name that will be displayed in the prompt. Names containing dots (.) will be considered folders. For example, volumes.cube will place the formula in a volumes folder and display the formula as cube.

Allowed formula inputs

You can specify three types of inputs.

  • NumInput: For inputs that accepts a single floating-point number.

  • IntInput: For inputs that accept a single integer.

  • ListInput: For inputs that accept a list of floating-point numbers.

You can use optional=True to allow skipping the input (this will pass None to your function).

Here's an example.

@register_formula([
    IntInput("first optional input", optional=True),
    NumInput("second non-optional input")
])
def some_funtion(first_integer_input, second_float_input):
    ...

You can also make a custom input type by creating a class that inherits from Inputs. See inputs.py.

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

formula_prompt-0.1.0.tar.gz (5.8 kB view details)

Uploaded Source

Built Distribution

formula_prompt-0.1.0-py3-none-any.whl (7.6 kB view details)

Uploaded Python 3

File details

Details for the file formula_prompt-0.1.0.tar.gz.

File metadata

  • Download URL: formula_prompt-0.1.0.tar.gz
  • Upload date:
  • Size: 5.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.0 importlib_metadata/3.7.3 packaging/20.9 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.59.0 CPython/3.8.8

File hashes

Hashes for formula_prompt-0.1.0.tar.gz
Algorithm Hash digest
SHA256 b53239795c520db87358f9feeaf38a46bd6269620ea536aef6b8b433f6a9ce31
MD5 4f688856f0a30f1d8f23f2ea38b81a6b
BLAKE2b-256 8fce09bbac89dfc5eca9ef921d2794a77326e78c2b44681f458b323f4941ca75

See more details on using hashes here.

File details

Details for the file formula_prompt-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: formula_prompt-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 7.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.0 importlib_metadata/3.7.3 packaging/20.9 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.59.0 CPython/3.8.8

File hashes

Hashes for formula_prompt-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 cc24456848149c290a4e512c8d65e738ebf06ad6a1fc59676eed8643fd5acd5d
MD5 4370ea77337dda85bf5d7bfe6e9df790
BLAKE2b-256 31abe0150667ee8f3d18b35327f3766683dd91b221be61eefe1b754b7d987701

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page