Metadata-Version: 2.4
Name: rot-converter
Version: 2.0.2
Summary: A library for the ROT cipher.
Author-email: BasicSweater <basicsweater@petalmail.com>
License: MIT
Project-URL: Homepage, https://github.com/BasicTShirt/rot-converter/blob/main/README.md
Project-URL: Repository, https://github.com/BasicTShirt/rot-converter
Keywords: rot,converter,release
Classifier: Development Status :: 5 - Production/Stable
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Programming Language :: Python :: 3.14
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Requires-Python: >=3.10
Description-Content-Type: text/markdown
License-File: LICENSE
Dynamic: license-file

# Last Big Update: 2.0.0

### - Added Support for 20 Languages
### - New Error Handler

---

# ROT Converter

A library for the ROT cipher with multi-language support.

## Features

- Encryption and decryption with ROT for 21 languages.
- ROT bruteforce for all supported alphabets.
- Error handling with clear messages.

## Installation

```bash
pip install rot-converter
```

---

## Usage

Import the functions:

```python
from rot_converter import m_rot, b_rot
```

### Manual ROT — `m_rot(string: str, key: int, language: str)`

Shifts each letter in the string by the given key within the specified alphabet.

```python
from rot_converter import m_rot

temp_str = "tqv_eqpxgtvgt"
new_str = m_rot(temp_str, -2, "en")

print(new_str)  # Output: rot_converter
```

### Bruteforce ROT — `b_rot(string: str, language: str)`

Returns a list of all possible ROT shifts for the given string.

```python
from rot_converter import b_rot

temp_str = "bcd"
results = b_rot(temp_str, "en")

print(results[24])  # Output: zab
print(results[25])  # Output: abc
```

---

## Supported Languages

| Code | Language   | Alphabet Length |
|------|------------|-----------------|
| en   | English    | 26              |
| es   | Spanish    | 27              |
| de   | German     | 29              |
| fr   | French     | 26              |
| it   | Italian    | 26              |
| pt   | Portuguese | 26              |
| tr   | Turkish    | 29              |
| sv   | Swedish    | 29              |
| no   | Norwegian  | 29              |
| fi   | Finnish    | 29              |
| nl   | Dutch      | 26              |
| da   | Danish     | 29              |
| ru   | Russian    | 33              |
| bg   | Bulgarian  | 30              |
| sr   | Serbian    | 30              |
| mk   | Macedonian | 31              |
| be   | Belarusian | 31              |
| el   | Greek      | 24              |
| he   | Hebrew     | 22              |
| hy   | Armenian   | 38              |

---

## Requirements

- Python 3.6 or higher.
- No external dependencies (uses only standard library).

---

## Error Handling

The library validates all inputs and raises `ValueError` with descriptive messages.

### Error Types

| Error                                      | Description                                                            |
|--------------------------------------------|------------------------------------------------------------------------|
| **You did not enter a string**             | The `string` parameter is missing or empty.                            |
| **You did not enter a language**           | The `language` parameter is missing or empty.                          |
| **Type of the language is not a string**   | The `language` parameter is not a `str`.                               |
| **You entered a not supported language**   | The `language` code is not in the supported list.                      |
| **You did not enter a key**                | The `key` parameter is missing (`None`) in manual mode.                |
| **Type of the key is not a integer**       | The `key` parameter is not an `int`.                                   |

### Error Examples

```python
from rot_converter import m_rot, b_rot

# Missing string
m_rot("", 2, "en")
# ValueError: ERROR! You did not enter a string

# Missing language
m_rot("abc", 2, "")
# ValueError: ERROR! You did not enter a language

# Unsupported language
m_rot("abc", 2, "xx")
# ValueError: ERROR! You entered a not supported language.
# Supported languages: en, es, de, fr, it, pt, tr, sv, no, fi, nl, da, ru, bg, sr, mk, be, el, he, hy

# Missing key
m_rot("abc", None, "en")
# ValueError: ERROR! You did not enter a key

# Key is a float
m_rot("abc", 1.5, "en")
# ValueError: ERROR! Type of the key is not a integer

# Multiple errors
m_rot("", 2.5, "")
# ValueError: ERROR! You did not enter a string
# ERROR! You did not enter a language
# ERROR! Type of the key is not a integer
```
---
## Changelog

| Version   | Date       | Commit                                                                        |
|-----------|------------|-------------------------------------------------------------------------------|
| **0.1.0** | 07.08.2026 | Beta: First Beta Version On PyPI                                              |
| **1.0.0** | 13.08.2026 | Release: Just A Release                                                       |
| **2.0.0** | 15.08.2026 | Release: New Clean Code, Added Support for 21 Languages And New Error Handler |
| **2.0.1** | 15.08.2026 | Release: Improved Efficiency, Minor Bugs Fixed And a New GitHub Repository    |
| **2.0.2** | 15.08.2026 | Release: Normalize Input Strings To NFC                                       |

###### **Made by the Hi Team.**
