automatheque.decomposition
Décomposition de chaînes et d'arborescences par patrons.
Détail
Décomposer, c'est extraire des informations d'une chaîne — le plus souvent le chemin d'un fichier — en lui appliquant une série d'expressions rationnelles, puis reverser le résultat dans un objet.
Typiquement : retrouver le nom d'une série et son numéro d'épisode dans
/media/series/Ma Serie/S01/E02.avi, ou l'album et le lieu d'une photo dans
son arborescence de rangement.
Le paquet ne touche pas au système de fichiers : il ne manipule que des
chaînes. Un chemin lui est donné, il en tire des informations ; c'est
l'appelant qui décide ensuite quoi en faire — le déplacement du fichier est
l'affaire de automatheque.renommage, l'opération symétrique.
C'est aussi pourquoi les deux sont des distributions séparées : indexer ou étiqueter sans jamais déplacer un fichier est un usage courant, qui n'a pas à tirer les dépendances du renommage.
Les briques
Decomposeur— un patron : une expression rationnelle, un appel qui fournit la chaîne à analyser, un appel qui reverse le résultat dans l'objet, et un poids pour départager les patrons concurrents.Decomposeurs— un jeu de patrons, itérable. À sous-classer pour décrire une famille de médias (séries, films, photos…).Decomposable— mixin à faire hériter par l'objet à décomposer. Il doit exposerbasename(la chaîne analysée par défaut) etsource(le chemin complet, remonté niveau par niveau).Identificateur— l'algorithme : il joue les patrons sur l'objet selon les options demandées, et choisit la décomposition la plus pertinente.
Options
Deux familles d'options se combinent.
Ce qu'on garde du résultat :
| Constante | Effet |
|---|---|
DECOMPOSE_RESULTAT_PREMIER_NON_NUL |
s'arrête au premier patron qui trouve quelque chose |
DECOMPOSE_RESULTAT_CUMULE |
applique tous les patrons qui trouvent quelque chose |
DECOMPOSE_RESULTAT_MAX_INFOS |
garde la décomposition qui remplit le plus l'objet |
Ce qu'on analyse :
| Constante | Effet |
|---|---|
DECOMPOSE_ANALYSE_ARBO_UN_NIVEAU |
le basename seul |
DECOMPOSE_ANALYSE_ARBO_COMPLETE |
chaque niveau de l'arborescence, un par un |
DECOMPOSE_ANALYSE_ARBO_CONCATENE |
les niveaux concaténés, de proche en proche |
Decomposable.auto_decompose() essaie ces combinaisons de la plus riche à la
plus simple, et s'arrête à la première qui aboutit.
Exemple
import attr
from automatheque.decomposition import Decomposable, Decomposeur, Decomposeurs
def _remplit(obj, resultats):
obj.serie, obj.saison, obj.episode = resultats
class SerieDecomposeurs(Decomposeurs):
def __attrs_post_init__(self):
self.decomposeurs = [
Decomposeur(r"(.+)[. ]S(\d{2})E(\d{2})", _remplit),
]
@attr.s
class Episode(Decomposable):
source = attr.ib(default="")
basename = attr.ib(default="")
serie = attr.ib(default=None)
saison = attr.ib(default=None)
episode = attr.ib(default=None)
ep = Episode(source="/media/Ma.Serie.S01E02.avi", basename="Ma.Serie.S01E02.avi")
ep.decompose(decomposeurs=SerieDecomposeurs())
# ep.serie == "Ma.Serie", ep.saison == "01", ep.episode == "02"
Requirement
Python >=3.9
Installation
pip install automatheque.decomposition
License
LGPLv3.0 ou ultérieure
Release files for automatheque.decomposition 0.24.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| automatheque_decomposition-0.24.0.tar.gz | 28.4 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| automatheque_decomposition-0.24.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 54.6 kB
Release files / automatheque_decomposition-0.24.0.tar.gz
| Download URL | automatheque_decomposition-0.24.0.tar.gz |
|---|---|
| Size | 28.4 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
d5a7a4078a72775dc32c236884f0de8113c98dd33f2d3bf5b42c0f9c89c8bea9
|
|
BLAKE2b-256 checksum How to use checksums |
e596b41398e296889b8cbc4e35962793e1f8dcaee04eecb537ad9103176ed1fe
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Aug 27, 2026.
Transparency logRelease files / automatheque_decomposition-0.24.0-py3-none-any.whl
| Download URL | automatheque_decomposition-0.24.0-py3-none-any.whl |
|---|---|
| Size | 26.2 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
4f73ebf54aca545fe73ab5167a5d7a9f268cea42911debb2df72ca653c5b3622
|
|
BLAKE2b-256 checksum How to use checksums |
2dd5120fe4422cb5df6086940f7e34fa3da25a98181c6a3e5ab835a198347673
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Aug 27, 2026.
Transparency log