Skip to main content

A Python utility library for math, algebra, data structures, and everyday tools

Project description

eapy

A Python utility library that extends the standard library with math, algebra, data structures, and everyday tools.

Features

Math & Algebra

  • VectorVector2D, Vector3D, and N-dimensional Vector with arithmetic, dot product, magnitude, coordinate conversions
  • Matrix — 2D matrix operations (add, subtract, multiply, divide, power) with N×N determinant
  • Tensor — 3D tensor with arithmetic, slicing, transpose
  • Polynomial — polynomial arithmetic, evaluation (Horner's method), derivative, integral
  • Complex — complex number arithmetic, conjugate, phase, polar conversion
  • Symbolic AlgebraVar for building symbolic expressions with simplify & evaluate
  • InfiniteSet / Interval — set operations on numeric intervals

Trigonometry

  • Full set: sin, cos, tan, sec, csc, cot
  • Inverse: asin, acos, atan, atan2, asec, acsc, acot
  • Hyperbolic: sinh, cosh, tanh, asinh, acosh, atanh
  • Versed: versine, vercosine, coversine, covercosine

Combinatorics & Number Theory

  • permutation, combination, catalan, stirling2
  • gcd, lcm, isPrime, fibonacci, digitsSum
  • eulerTotient, primeFactors, modPow

Statistics

  • mean, median, variance, std, mode

String Utilities

  • Name conversion: toCamelCase, toSnakeCase, toPascalCase
  • levenshtein — edit distance between two strings

Functional Programming

  • pipe(value, f, g, h) — pipeline: h(g(f(value)))
  • compose(f, g, h)(x) — composition: f(g(h(x)))
  • curry(func)(a)(b)(c) — currying

Data Structures

  • Stack — LIFO stack (push/pop/peek)
  • Queue — FIFO queue (enqueue/dequeue)
  • Trie — prefix tree (insert/search/words_with_prefix)
  • LinkedList — singly linked list (append/prepend/remove/find)
  • CircularBuffer — fixed-size circular buffer
  • PriorityQueue — min-heap priority queue

Base Conversion

  • baseConvert(n, from_base, to_base) — arbitrary base conversion (2-36)
  • toBinary, toOctal, toHex — quick conversions

Color Utilities

  • rgbToHsl / hslToRgb — RGB ↔ HSL conversion
  • rgbToHex / hexToRgb — RGB ↔ HEX conversion

Numerical Methods

  • bisect(f, a, b) — bisection root finding
  • newtonMethod(f, f', x0) — Newton's method
  • numericalIntegral(f, a, b) — Simpson's rule integration

Utility & Decorators

  • Timer — simple stopwatch timer
  • clamp, lerp, mapRange — numeric helpers
  • flatten, chunk, deepGet, uniqueId — data helpers
  • @retry, @memoize, @deprecated, @singleton — decorators
  • printTable — formatted console table output
  • getPath — interactive file/directory picker
  • repeatUntilSecond, repeatUntilSecondOrBool, repeatUntilValueChange — loop helpers

Broadcast / Messaging

  • whenGetMessage, broadcast, broadcastWithData — simple event system

Threads

  • newThread, startThreads, deleteThread — simple thread management

Validation

  • isEmail, isURL, isIP — common format validators

Date Utilities

  • daysBetween, isLeapYear, weekday — date helpers

Progress Bar

  • ProgressBar — simple terminal progress bar

Hash Utilities

  • md5, sha256, hashFile — quick hashing

Random Utilities

  • randomChoice, shuffle, randomString, randomInt, randomFloat — enhanced random helpers

File I/O

  • readJson, writeJson — JSON file helpers
  • readCsv, writeCsv — CSV file helpers

Encoding

  • base64Encode, base64Decode — Base64 encoding
  • urlEncode, urlDecode — URL encoding

Math Extensions

  • factorial — factorial
  • matrixInverse — matrix inverse (Gauss-Jordan)
  • interpolate — linear interpolation

Regex Utilities

  • extractEmails, extractURLs — extract from text
  • replaceMultiple — multi-pattern replacement

Cache & Performance

  • @lruCache(maxsize) — LRU cache decorator
  • @timeit — execution time decorator

Progress Iterator

  • tqdm(iterable) — progress bar iterator

Type Checks

  • isNumber, isString, isList, isDict, isCallable — type check helpers

Network Utilities

  • getJson(url) — GET request returning JSON
  • postJson(url, data) — POST request with JSON body

Math Extensions (Vector)

  • dotProduct, crossProduct, normalize — vector operations

Local Storage

  • Storage — persistent key-value store with subpath support

Colored Text

  • Color — ANSI color codes (foreground, background, styles)
  • colorText(text, color, style, bg) — return colored text string
  • printColor(text, color, style, bg) — print colored text

Logging

  • Logger — simple logger (console + file)
  • @logTime — log function calls with timing

Config Management

  • Config — JSON-based config with dot notation support

Validation (Extended)

  • isPhoneNumber — Chinese phone number validation
  • isDate — date format validation
  • isHexColor — hex color validation

File Utilities

  • listFiles(dir, ext) — list files by extension
  • fileSize(path) — human-readable file size
  • ensureDir(path) — create directory if not exists

CLI Interaction

  • confirm(prompt) — yes/no confirmation
  • askInput(prompt, default) — input with default
  • selectOption(prompt, options) — selection menu

Encryption

  • encrypt(text, key) / decrypt(text, key) — simple XOR encryption

Time Utilities

  • formatDuration(seconds) — human-readable duration
  • timestamp() — current Unix timestamp
  • parseDate(str, fmt) — parse date string

Text Processing

  • slugify(text) — URL-friendly slug generation
  • wordCount(text) — character/word/line/sentence counting
  • truncate(text, length) — text truncation with ellipsis

Pagination

  • Paginate(items, page, per_page) — pagination helper

System Utilities

  • clipboard(text) — copy to clipboard (Windows)
  • systemInfo() — system information

Cache (Extended)

  • @ttlCache(seconds) — cache with time-to-live expiration

Math (Advanced)

  • rk4(func, y0, t, dt, steps) — 4th-order Runge-Kutta ODE solver
  • fft(signal) — Fast Fourier Transform (radix-2)
  • matrixEigenvalues(m) — eigenvalue approximation (QR algorithm)

Data Structures (Extended)

  • Deque — double-ended queue

Template Engine

  • render(template, variables) — simple {{key}} variable substitution

Rate Limiting

  • @rateLimit(max_calls, period) — call frequency limiter

Data Structures (Extended)

  • BloomFilter — probabilistic set membership testing

Decorators (Extended)

  • @exponentialBackoff — retry with exponential backoff
  • @validateTypes — runtime argument type validation

CLI (Extended)

  • Spinner — terminal loading spinner
  • clearScreen() — clear terminal screen

Math (Extended)

  • sieveOfEratosthenes(n) — prime sieve
  • binomialCoeff(n, k) — binomial coefficient
  • matrixTranspose(m) — matrix transpose
  • matrixDet(m) — matrix determinant

Graph

  • Graph — graph with BFS, DFS, Dijkstra shortest path

Installation

pip install eapyTool

Quick Start

from eapy.core import Var, Polynomial, Vector3D, mean

# Symbolic algebra
x = Var('x')
expr = (x + 2) * (x + 3)
print(expr.evaluate(x=5))  # 56.0

# Polynomial
p = Polynomial([1, -3, 2])  # 1 - 3x + 2x^2
print(p.derivative())        # -3 + 4*x
print(p(10))                 # 171.0

# Vector
v = Vector3D(1, 2, 3)
print(v.abs())               # 3.7416...

# Statistics
print(mean([4, 8, 15, 16, 23, 42]))  # 18.0

Development

# install with dev dependencies
pip install -e ".[dev]"

# run tests
pytest

# lint
ruff check src tests
ruff format --check src tests

License

MPL-2.0

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

eapytool-0.3.6.tar.gz (42.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

eapytool-0.3.6-py3-none-any.whl (35.2 kB view details)

Uploaded Python 3

File details

Details for the file eapytool-0.3.6.tar.gz.

File metadata

  • Download URL: eapytool-0.3.6.tar.gz
  • Upload date:
  • Size: 42.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.8

File hashes

Hashes for eapytool-0.3.6.tar.gz
Algorithm Hash digest
SHA256 c4f34c09329ee5b63f11672e768c7e807c4aa8051a8ec244a517602c4085e5df
MD5 58e3e7c91a63bf6e4b04341ba8a785ca
BLAKE2b-256 1117a25262890f0156e2b3781b81bed58e465419d7776762db6e10c5d9f99ff9

See more details on using hashes here.

File details

Details for the file eapytool-0.3.6-py3-none-any.whl.

File metadata

  • Download URL: eapytool-0.3.6-py3-none-any.whl
  • Upload date:
  • Size: 35.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.8

File hashes

Hashes for eapytool-0.3.6-py3-none-any.whl
Algorithm Hash digest
SHA256 193ea8330663eb75e69f680cf94f9e3b761a3e414445b39885ea68212cab6bab
MD5 29126ef49d77066bff412c4184f1bb43
BLAKE2b-256 f30e27ac8b94ffc3e7ac6ee07b097f9332620aceaacc3fd6b10c001ed327bc60

See more details on using hashes here.

Supported by

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