Skip to main content

automatheque.schema

Domaine pour des classes courantes et partagées

Objectifs :

  • partager des structures de données
  • metadonnées ou etiquettes et adaptateurs faciles

Les familles

Le paquet est découpé par famille de média, comme l'était l'ancien modele/ :

Espace Contenu
schema.media Media — le socle commun aux familles
schema.texte Courriel
schema.image BaseTags (les étiquettes d'une image), Photo
schema.geolocalisation Emplacement — une position GPS et/ou une adresse
schema.calendrier Evenement — ce qui a eu lieu, quand, et où

schema.video et schema.audio viendront s'y ajouter. schema.media est réservé à ce qui est commun aux familles.

Ce qui entre ici, et ce qui n'y entre pas

schema est le vocabulaire : ce que les choses sont, pour circuler d'une application à l'autre. Trois règles en découlent.

  • Des structures pures. Des classes attrs, aucune entrée/sortie, aucune expression rationnelle. Interroger un service de géocodage, lire les EXIF d'un fichier, parler à un serveur CalDAV : autant d'adaptateurs, qui vivent ailleurs.
  • Feuille du graphe de dépendances. schema ne dépend d'aucun autre paquet du dépôt — c'est lui qu'on consomme. Ses seules dépendances externes au-delà d'attrs sont des extras, réclamés à la conversion et facultatifs à l'installation.
  • La conversion se fait aux frontières. Evenement ne contient pas un VEVENT iCalendar : il sait en venir et y retourner, par depuis_vevent() / vers_vevent(), qui n'importent vobject qu'à l'appel.
pip install "automatheque.schema[calendrier]"   # + vobject, pour l'iCalendar

Réfléchir

Classe "StockageMedium" de base = classe avec un nom_fichier éventuel pour la sauvegarde ou url si dans le cloud etc.

L'idée c'est d'avoir un autre module automatheque pour gérer les xattrs , les extensions et la sauvegarde en fichier par ex., deviner le type de media (même pour meta données ou étiquettes, qui peuvent être enregistrées dans un fichier) ...

Sous-classage : ajouter des comportements

Les comportements — se renommer, se décomposer — n'entrent pas ici : ce sont des grammaires d'application, pas du vocabulaire, et les cuire dans les classes de schéma reviendrait à imposer à tous les consommateurs l'arborescence de rangement d'un seul.

La classe utilisable se compose donc chez l'appelant, par sous-classage :

from automatheque.decomposition import Decomposable
from automatheque.renommage import Gabarit, Gabarits, Renommable
from automatheque.schema.image import Photo


class PhotoRangeable(Photo, Renommable, Decomposable):
    @classmethod
    def _gabarits_par_defaut(cls):
        """L'arborescence que *cette* application veut."""
        gabarits = Gabarits()
        gabarits.append(
            Gabarit(squelette="{date:%Y}/{date:%Y-%m-%d} {album}/{nom_fichier}")
        )
        return gabarits

    def _liste_champs_dispo(self):
        """La projection des étiquettes vers les champs des gabarits."""
        return {
            "date": self.tags.date_prise_de_vue,
            "album": self.tags.album or "",
            "nom_fichier": self.basename,
        }

Requirement

Python >=3.9

Installation

pip install automatheque.schema

License

LGPLv3.0 ou ultérieure

Release files for automatheque.schema 0.22.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for automatheque.schema 0.22.0
File Size Uploaded
automatheque_schema-0.22.0.tar.gz 30.5 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for automatheque.schema 0.22.0
File Interpreter ABI Platform
automatheque_schema-0.22.0-py3-none-any.whl Python 3 none any Details

Total release size: 62.9 kB

Release files / automatheque_schema-0.22.0.tar.gz

Download URL automatheque_schema-0.22.0.tar.gz
Size 30.5 kB
Tags Source
SHA-256 checksum
How to use checksums
43306fa1f77032abe9f5225b22342503b6fd84ae25cadef27b27474cdd0d67bd
BLAKE2b-256 checksum
How to use checksums
2d4c4b36f067ffc543583d98129a395cc3aee88f08f2c25b9987f857493e3635
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 8, 2026.

Transparency log

Release files / automatheque_schema-0.22.0-py3-none-any.whl

Download URL automatheque_schema-0.22.0-py3-none-any.whl
Size 32.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
d383bf37290907aa42ba9108c3a3ce527ae7a76979d39159c7495feb14fcce06
BLAKE2b-256 checksum
How to use checksums
40b249461e947c6deeb653570c8ecb8c8f802f77d550caf7846c9e40d2e60073
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 8, 2026.

Transparency log
Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page