MathLib is a simple Python library for basic mathematical operations, including arithmetic and algebraic functions. It's designed to be easy to use and extendable for more advanced mathematical operations.
- Arithmetic Operations: Addition, subtraction, multiplication, and division.
- Algebraic Operations: Solving simple linear equations.
First, set up your directory structure:
MathLib/
├── mathlib/
│ ├── __init__.py
│ ├── arithmetic.py
│ ├── algebra.py
│ ├── complex_numbers.py
│ ├── logarithmic.py
│ ├── matrix_operations.py
│ ├── power_roots.py
│ ├── random_utils.py
│ ├── statistics.py
│ ├── trigonometry.py
│ └── utility.py
├── tests/
│ ├── test_arithmetic.py
│ ├── test_algebra.py
│ ├── test_complex_numbers.py
│ ├── test_logarithmic.py
│ ├── test_matrix_operations.py
│ ├── test_power_roots.py
│ ├── test_random_utils.py
│ ├── test_statistics.py
│ ├── test_trigonometry.py
│ └── test_utility.py
├── setup.py
├── README.md
└── LICENSE
This file makes the mathlib
directory a package.
# mathlib/__init__.py
from .arithmetic import add, subtract, multiply, divide, power
from .algebra import solve_linear, solve_quadratic
from .trigonometry import sin, cos, tan, arcsin, arccos, arctan
from .statistics import mean, median, variance, standard_deviation
from .matrix_operations import matrix_addition, matrix_multiplication, matrix_determinant, matrix_inverse
from .complex_numbers import complex_addition, complex_subtraction, complex_multiplication, complex_division, complex_magnitude, complex_phase
from .random_utils import random_integer, random_float
from .utility import factorial, gcd, lcm
__all__ = [
'add', 'subtract', 'multiply', 'divide', 'power',
'solve_linear', 'solve_quadratic',
'sin', 'cos', 'tan', 'arcsin', 'arccos', 'arctan',
'mean', 'median', 'variance', 'standard_deviation',
'matrix_addition', 'matrix_multiplication', 'matrix_determinant', 'matrix_inverse',
'complex_addition', 'complex_subtraction', 'complex_multiplication', 'complex_division', 'complex_magnitude', 'complex_phase',
'random_integer', 'random_float',
'factorial', 'gcd', 'lcm'
]
Next Create the python files for various kind of mathematical functions.
To ensure your package functions as expected, it's essential to write some basic tests. Pytest is a powerful tool for this purpose and is widely recommended for Python projects. It helps you write simple and scalable test cases to validate your code.
# setup.py
from setuptools import setup, find_packages
setup(
name='mathlib',
version='0.1',
packages=find_packages(),
description='A simple math library with basic operations',
long_description=open('README.md').read(),
long_description_content_type='text/markdown',
author='Arun Kumar Pandey',
author_email='arunp77@gmail.com',
url='https://github.com/arunp77/mathlib-package.git',
license='MIT',
install_requires=[],
classifiers=[
'Programming Language :: Python :: 3',
'License :: OSI Approved :: MIT License',
'Operating System :: OS Independent',
],
)
This setup.py
file is used to install the package using pip. It includes metadata such as
There are two kind of tests one can employ.
- Firstone is using the
pytest
- Second one is using the
unittest
and thedoctest
To run the tests for this project, use pytest
:
pytest tests/
This will run the test suite located in the tests
directory, ensuring that all functions work as expected.
To check the individial operations, go to the test folder and run each file with pytest
. FOr example, to check the operations insdie the functions defined in algebra.py, run:
pytest algebra.py
Next, we'll create unit tests using Python's built-in unittest
and doctest
framework. These tests will cover various scenarios, including edge cases.
-
Please open the
tests/test_arithmetic.py
, see theunittest
part at the end of the file, commented lines. Similalry, we can modify the test scripts and then run the complete test using:python -m unittest discover -s tests -v
It is to be noted that, best practice is to create a
Class
with class name starting withTestClassname
and define the test methods mame stating withdef test_operation_name():
and adding following lines at the end of the script:# tests/test_arithmetic.py # ... [existing code] ... if __name__ == '__main__': unittest.main(verbosity=2)
-
However, for the
doctest
, check the last lines ofarithmetic.py
(commented lines). Other option is by creating separate file "Doctest Runner"run_doctests.py
to run all doctests in your package. You can run this script,python run_doctests.py
Here you need to add follwoing to the end of the python script of individual module:
# mathlib/arithmetic.py # ... [existing code] ... if __name__ == "__main__": import doctest doctest.testmod()
-
Step-1: Install the Package Locally
You can install MathLib directly from the source code:
git clone https://github.com/arunp77/Data-engineering-tools.git
Navigate to the root directory of your project (where setup.py is located)
cd /Data-engineering-tools/mathlib
and then run:
pip install -e . -v
The
-e
flag stands for "editable," which means any changes you make to the code will immediately be reflected without needing to reinstall the package. Here-v
will give you more detailed output about what is happening during the installation process.We can alsi install it using:
pip install mathlib
-
Step 2: Verify Installation
After running the installation, you can verify that the package was installed by running:
pip show mathlib
This should display information about the mathlib package, such as the version and location.
Verify Import in Python Shell: Try importing mathlib directly in the Python shell to ensure it is correctly recognized:
>>> import mathlib >>> mathlib
We can also install mathlib, directly using
setup.py
file, using:python setup.py install --verbose
This will give you more detailed output about what is happening during the installation process.
If you're using
pip install
, you can add the-v
option for verbose output: -
Step 3: Run the Tests Once the package is installed, you should run the tests to ensure everything is working as expected.
Navigate to the root directory of your project and run:
pytest tests/
This will execute the tests defined in
tests/test_arithmetic.py
andtests/test_algebra.py
. If all the tests pass, it indicates that your package is functioning correctly. -
Step 4: Create Docekrimage
docker build -t arunp77/mathlib:latest .
and then push it to DOcker.
docker push arunp77/mathlib:latest
Here, you must remember that, you must have created a Docker Access token from the DOcker hub and then saved it to your Github secrets. FOr more details on this, you can follow step by step guide provided at my documentation page created for another project
Image of the library is available at: https://hub.docker.com/r/arunp77/mathlib
This is also available as package on npm on following link and on pypi (for more details, please follow follow link: https://docs.github.com/en/packages/quickstart).
Contributions are welcome! If you'd like to improve MathLib, please fork the repository and create a pull request with your changes. Make sure to update the tests as needed.
This project is licensed under the MIT License - see the LICENSE file for details.
For questions or suggestions, feel free to reach out at arunp77@gmail.com.