Metadata-Version: 2.4
Name: PyCUC
Version: 2.1.0
Summary: PyCUC: A lightweight Python package for creating custom unit conversions.
Author: Sina Gilassi
Author-email: <sina.gilassi@gmail.com>
License: MIT
Keywords: chemical engineering,custom unit conversion,engineering unit conversion
Classifier: Development Status :: 1 - Planning
Classifier: Intended Audience :: Education
Classifier: Programming Language :: Python :: 3.10
Classifier: Operating System :: Unix
Classifier: Operating System :: MacOS :: MacOS X
Classifier: Operating System :: Microsoft :: Windows
Requires-Python: >=3.10
Description-Content-Type: text/markdown
Requires-Dist: pandas
Requires-Dist: numpy
Requires-Dist: PyYAML
Dynamic: author
Dynamic: author-email
Dynamic: classifier
Dynamic: description
Dynamic: description-content-type
Dynamic: keywords
Dynamic: license
Dynamic: requires-dist
Dynamic: requires-python
Dynamic: summary


# 🔄 Python Custom Unit Converter (PyCUC)



![PyCUC Logo](./static/PyCUC-3.png)



![Downloads](https://img.shields.io/pypi/dm/PyCUC) ![PyPI](https://img.shields.io/pypi/v/PyCUC) ![Python Version](https://img.shields.io/pypi/pyversions/PyCUC.svg) ![License](https://img.shields.io/pypi/l/PyCUC) ![Read the Docs](https://img.shields.io/readthedocs/pycuc)



Python Custom Unit Converter (PyCUC) is an open-source package designed to simplify unit conversions in Python. With PyCUC, you can effortlessly create custom conversion factors, convert between units, and streamline calculations in various fields, such as physics, engineering, and scientific computing.



## ✨ Key Features



* 📐 **Custom Conversion Factors**: Define your own conversion factors for unique units

* 🔄 **Flexible Unit Conversions**: Convert between units with ease, using simple and intuitive methods

* 🪶 **Lightweight**: Minimal dependencies and optimized for performance

* 🚀 **Easy to Use**: Simple installation and straightforward usage



## References



PyCUC supports a wide range of unit conversions. Below are the updated references you can use for conversions:



- **Density**: Convert between units like kg/m³, g/cm³, lb/ft³, etc.

- **Energy**: Convert between units like J, kJ, cal, BTU, etc.

- **Heat Capacity**: Convert between units like J/mol·K, kJ/mol·K, cal/mol·K, etc.

- **Volume**: Convert between units like m³, L, mL, ft³, etc.

- **Mass**: Convert between units like kg, g, lb, oz, etc.

- **Power**: Convert between units like W, kW, HP, etc.

- **Length**: Convert between units like m, cm, mm, in, ft, etc.

- **Force**: Convert between units like N, kN, lbf, etc.



## 📊 Google Colab



You can use the following code to run `PyCUC` in Google Colab:



[![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/drive/1AbTCZxz9xH0VxKCh-Qhb66X0GAGo9_0y?usp=sharing)





## 📥 Installation



Install PyCUC with pip:



```python

import pycuc

# check version

print(pycuc.__version__)

```





## 🔍 Usage Examples



### 📋 Example 1: Basic Operations



#### 🔍 Check References



```python

print(pycuc.check_reference('pressure'))

```



#### 🛠️ Create a Custom Unit Converter



```python

# ! pressure

my_cuc_1 = pycuc.create_cuc(1, 'MPa')

# convert to Pa

print(my_cuc_1.convert('Pa'))

print(my_cuc_1.convert('bar'))

print(my_cuc_1.convert('kPa'))



# ! temperature

my_cuc_2 = pycuc.create_cuc(358, 'K')

# convert to K

print(my_cuc_2.convert('C'))

print(my_cuc_2.convert('F'))

print(my_cuc_2.convert('R'))

```



#### ↔️ Convert From/To



```python

# ! pressure

print(pycuc.convert_from_to(1, 'MPa', 'Pa'))

# ! temperature

print(pycuc.convert_from_to(358, 'K', 'C'))

print(pycuc.convert_from_to(25, 'C', 'K'))

```



#### 🔄 Convert From/To (Short Format)



```python

# ! pressure

print(pycuc.to(125, 'MPa => Pa'))

# ! temperature

print(pycuc.to(360, 'K => C'))

print(pycuc.to(250, 'C => K'))

```





#### ✏️ Define a New Unit



```python

# ! heat capacity unit: J/mol.K

my_cuc_3 = pycuc.create_cuc(25, 'J/mol.K')

# add custom

my_cuc_3.add_custom_unit('J/mol.K', 1)

my_cuc_3.add_custom_unit('kJ/mol.K', 1000)

# conversion

print(my_cuc_3.convert('J/mol.K'))

print(my_cuc_3.convert('kJ/mol.K'))

```



#### 📚 Check Reference



```python

# ! pressure

print(my_cuc_3.check_reference('pressure'))

# ! temperature

print(my_cuc_3.check_reference('temperature'))

# ! custom

print(my_cuc_3.check_reference('custom'))

```





### 📋 Example 2: Advanced Usage





#### 📂 Load Custom Units from YML Files



```python

# load unit yml file

unit_file = os.path.join(os.getcwd(), 'test', 'custom-unit.yml')

my_cuc = pycuc.go(reference_file=unit_file)

```



#### 🔀 Using from_to Method



```python

# ! pressure

print(my_cuc.from_to(1, 'MPa', 'Pa'))

```



#### 🚀 Using to Method



```python

# ! pressure

print(my_cuc.to(125, 'MPa => Pa'))

```



#### 📋 Check References



```python

# ! from yml file

print(my_cuc.check_reference('custom::CUSTOM'))

print(my_cuc.check_reference('custom::HEAT-CAPACITY'))

print(my_cuc.check_reference('custom::ENERGY'))

```



## ❓ FAQ



For any questions, contact me on [LinkedIn](https://www.linkedin.com/in/sina-gilassi/)



## 👨‍💻 Authors



* [@sinagilassi](https://www.github.com/sinagilassi)

