Metadata-Version: 2.5
Name: XEphemere
Version: 0.1.1
Summary: A Python module for ephemeral files and data
Author: Loup007A
License: MIT License
        
        Copyright (c) 2026 Loup007A
        
        Permission is hereby granted, free of charge, to any person obtaining a copy
        of this software and associated documentation files (the "Software"), to deal
        in the Software without restriction, including without limitation the rights
        to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
        copies of the Software, and to permit persons to whom the Software is
        furnished to do so, subject to the following conditions:
        
        The above copyright notice and this permission notice shall be included in all
        copies or substantial portions of the Software.
        
        THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
        IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
        FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
        AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
        LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
        OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
        SOFTWARE.
License-File: LICENSE
Requires-Python: >=3.10
Description-Content-Type: text/markdown

# XEphemere

**XEphemere** est un module Python dédié à la gestion de données et d'objets éphémères.

Il permet notamment de créer des fichiers temporaires avec expiration automatique, de gérer des listes à durée de vie limitée et d'exécuter des callbacks après un délai.

## Installation

```bash
pip install XEphemere
```

## Fonctionnalités

* 📄 Création de fichiers éphémères
* ⏳ Expiration automatique des fichiers
* 🗑️ Suppression automatique des données expirées
* 📋 Listes temporaires avec `Mirage`
* ⏱️ Gestion du temps restant
* ➕ Ajout de temps
* 🔄 Modification de la durée
* ❌ Suppression du minuteur
* ⏲️ Sabliers avec callbacks
* 🌫️ Fonctions de transformation de données

## Importation

```python
from XEphemere import (
    ephemere,
    DeleteError,
    open_ephemere,
    ghost,
    souffle,
    evaporation,
    sablier,
    sablier_time,
    Mirage,
)
```

---

# Fichiers éphémères

## `ephemere()`

Crée un fichier dont la durée de vie est limitée.

```python
ephemere(
    duree=60,
    name="file.tmp",
    value="Bonjour !"
)
```

Le fichier est créé avec une date d'expiration.

---

## `open_ephemere`

Permet d'ouvrir et de lire un fichier éphémère.

```python
with open_ephemere("file.tmp") as fichier:
    print(fichier.value())
```

### Vérifier son existence

```python
with open_ephemere("file.tmp") as fichier:
    print(fichier.exist())
```

Si le fichier a expiré, il est automatiquement supprimé.

---

# `DeleteError`

Exception utilisée lorsqu'une opération concerne une donnée éphémère qui n'existe plus.

```python
from XEphemere import DeleteError

try:
    ...
except DeleteError:
    print("La donnée a expiré.")
```

---

# Mirage

`Mirage` est une liste Python éphémère.

Elle fonctionne comme une liste normale, mais son contenu est automatiquement effacé après une durée donnée.

```python
from XEphemere import Mirage

mirage = Mirage(
    ["Bonjour", "XEphemere"],
    duree=60
)

print(mirage)
```

## Temps restant

```python
print(mirage.time_remaining())
```

La méthode retourne le nombre de secondes restantes.

Si aucun minuteur n'est actif :

```python
None
```

est retourné.

## Modifier la durée

```python
mirage.set_time(120)
```

La durée restante est remplacée par `120` secondes.

## Ajouter du temps

```python
mirage.add_time(30)
```

Ajoute 30 secondes au temps restant.

## Supprimer le minuteur

```python
mirage.remove_time()
```

Le minuteur est annulé et la liste n'est plus automatiquement effacée.

---

# Sablier

Le système de sablier permet d'exécuter une fonction après un certain délai.

```python
from XEphemere import sablier

def termine():
    print("Le temps est écoulé !")

sablier(
    temps=5,
    callback=termine
)
```

Le programme peut continuer son exécution pendant l'attente.

---

# `sablier_time`

Version asynchrone du sablier.

```python
import asyncio

from XEphemere import sablier_time

async def main():
    await sablier_time(
        5,
        lambda: print("Terminé !")
    )

asyncio.run(main())
```

---

# Autres fonctions

XEphemere fournit également plusieurs fonctions destinées à manipuler ou transformer des données :

### `ghost`

Fonctionnalité permettant de travailler avec des données éphémères.

### `souffle`

Fonctionnalité de transformation de données.

### `evaporation`

Réduit les chaînes de caractères selon un taux donné.

```python
from XEphemere import evaporation

mots = [
    "Bonjour",
    "Python",
    "XEphemere"
]

resultat = evaporation(mots, 0.5)

print(resultat)
```

---

# Exemple complet

```python
import time

from XEphemere import Mirage


mirage = Mirage(
    ["Message temporaire"],
    duree=10
)

print("Contenu :", mirage)
print("Temps restant :", mirage.time_remaining())

mirage.add_time(5)

print("Nouveau temps :", mirage.time_remaining())

time.sleep(3)

print("Temps restant :", mirage.time_remaining())
```

Après expiration, la liste est automatiquement vidée.

---

# Version

Version actuelle :

```text
0.1.1
```

## Compatibilité

Python **3.10+**

---

# Licence

Ce projet est distribué sous licence **MIT**.

Voir le fichier [`LICENSE`](LICENSE).

---

# Auteur

**Loup / Loup007A**

---

# Statut

🚧 Projet en développement.

Les fonctionnalités et l'API peuvent évoluer dans les prochaines versions.
