Skip to content

youandvern/efficalc

Repository files navigation

Logo

Tests    Coverage Status    License: MIT    PyPI version

efficalc

A feature-rich Python library for reimagined engineering calculations.

Contents

Introduction

efficalc provides an extensible, testable, and powerful framework for building and managing complex calculations.

efficalc is designed to transform how engineers approach calculations, moving away from traditional methods like manual spreadsheets and toward a more efficient, accurate, and collaborative engineering calculation process.

Simple syntax for Python calculations:

Efficalc Demo Typing

Turns into submittal-ready reports:

Efficalc Demo Report

Examples

Some simple examples

Some more complex examples

Documentation and Distribution

Quickstart

Installation

Install efficalc with pip:

pip install efficalc

First Calculation Function

Calculations in efficalc are written as a function.

These calculation functions are primarily composed of Input and Calculation elements, but there are also many more options to make a clear and accurate calculation.

from efficalc import Calculation, Input, Title, sqrt

def calculation():
    Title("Pythagorean's Theorem and Perimeter")
    
    a = Input("a", 3, description="Length of side a")
    b = Input("b", 4, description="Length of side b")
    
    c = Calculation("c", sqrt(a**2 + b**2), description="Length of the hypotenuse")
    
    Calculation("P", a + b + c, description="Perimeter of the triangle")

View the Report

Instantly view or print a report for your calculation in your browser with the ReportBuilder.

from efficalc.report_builder import ReportBuilder
from pythagorean_perimeter import calculation

builder = ReportBuilder(calculation)
builder.view_report()

The resulting calculation report

Updating Input Values

The value provided to the Input class in your calculation function is treated as a default value.

When you run your calculation with different input values, pass in a dictionary of the default overrides into the optional second parameter of the ReportBuilder:

new_inputs = {"a": 9.2, "b": 0.87}
builder = ReportBuilder(calculation, new_inputs)
builder.view_report()

Features

Automated report generation

Generate detailed, professional reports automatically, ensuring clarity and precision in communication.

Open source

efficalc welcomes community contributions. Request features or contribute directly to enhance its capabilities.

Engineering-specific features

Benefit from built-in tools tailored to solving common engineering challenges. See our section property library in action.

Reusable

Create calculation templates once and reuse them across multiple designs and projects, saving time and ensuring consistency.

Testable

Easily test your calculations to reduce errors and improve confidence every design. Read the testing guide.

Integrate with other workflows

Seamlessly integrate with your existing Python-enabled workflows to boost efficiency and connectivity across tools and platforms. See some examples of this.

Figures now supported

Easily add figures to your calculation reports for even more clarity. Read the full documentation for figures.

Control your content

Tailor your calculation reports to include only the most relevant information, making them as concise or detailed as you prefer.

Contributing

We welcome contributions of all kinds from the community! Whether it's reporting a bug, requesting a feature, or submitting a pull request, your input and engagement is invaluable to efficalc's development.

  • Report issues here.
  • Submit pull requests here.

Built With

Documentation

License

efficalc is released under the MIT License.