semvec/pypi-packages huggingface dataset:
happy-migrations 0.0.5
Hopefully no tears.
Requires Python: >=3.12

# Happy Migrations: Smooth Transitions, Zero Tears (WIP)

Happy is a developer-friendly database schema migration CLI and library. Write your migrations as simple Python scripts with raw SQL, and let Happy handle the heavy lifting. No fuss, no stress—just clean, controlled database changes directly from your code.

## Database support 🔋
Currently, SQLite is supported. More DBs coming soon!

## Test it yourself 🛠️
Get a feel of **Happy** in minutes.

Install Happy in your virtual environment:
```shell
pip install happy-migrations
```
Run the demo to generate everything you need in your current directory:
```shell
happy demo run
```

## Join us on Discord
Join the Happy developers and community on our [Discord Server](https://discord.gg/new7rgTw).
long-s 1.0.33
This Python tool accurately inserts the historical long S character ( ſ ) back into the given text to make it appear as if it were written before the 20th century. English, French, German, Spanish and Italian are supported.
Requires Python: >=3.6

# py-long-s
This Python tool accurately inserts the historical long S character (&nbsp;Å¿&nbsp;) back into the given text to make it appear as if it were written before the 20th century.

English, French, German, Spanish, and Italian are supported.

#### Installation
```
pip install long-s
```
<br>

The libraries used in this project can be installed separately by using:
```
pip install numpy python-docx odfpy unidecode
```

<br>

## Online Converter
There's also a [JavaScript version](https://github.com/travisgk/long-s-converter) available that can be used online.

<br>

## Example
```
import long_s

print(long_s.convert("The discussion was surprisingly insightful.", lang="en"))
print(long_s.convert("La discussion Ã©tait Ã©tonnamment perspicace.", lang="fr"))
print(long_s.convert("Die Diskussion war Ã¼berraschend aufschlussreich.", lang="de"))
print(long_s.convert("La discusiÃ³n fue sorprendentemente perspicaz.", lang="es"))
print(long_s.convert("La discussione Ã¨ stata sorprendentemente perspicace.", lang="it"))
```

```
The diÅ¿cuÅ¿Å¿ion was Å¿urpriÅ¿ingly inÅ¿ightful.
La diÅ¿cuÅ¿Å¿ion Ã©tait Ã©tonnamment perÅ¿picace.
Die DiskuÅ¿Å¿ion war Ã¼berraÅ¿chend aufÅ¿chluÅ¿sreich.
La diÅ¿cuÅ¿iÃ³n fue Å¿orprendentemente perÅ¿picaz.
La diÅ¿cuÅ¿Å¿ione Ã¨ Å¿tata Å¿orprendentemente perÅ¿picace.
```

<br>

## Converting Files
### .txt files
```
long_s.convert_text_file(src_path="story.txt", dst_path=None, lang="en"))
```
Since `dst_path` is None, the program will save the converted text file as `story-long-s.txt`.

<br>

### .odf files
```
long_s.convert_odf_file(src_path="story.odt", dst_path="old-story.odt", lang="en"))
```

<br>

### .docx files
```
long_s.convert_docx_file(src_path="mÃ¤rschen.docx", lang="de"))
```

<br>

## Special Thanks

Thank you Andrew West of the TeX Users Group for the documentation found under [The Rules for Long S](https://www.tug.org/TUGboat/tb32-1/tb100west.pdf), which was fundamental in writing the conversion functions for English, French, Spanish, and Italian.