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.24.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.24.0
File Size Uploaded
automatheque_schema-0.24.0.tar.gz 37.5 kB Details

Built distribution (wheel)

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

Total release size: 75.3 kB

Release files / automatheque_schema-0.24.0.tar.gz

Download URL automatheque_schema-0.24.0.tar.gz
Size 37.5 kB
Tags Source
SHA-256 checksum
How to use checksums
5278645662e2fa8e084a3bbae75f84535d7c5dbd0689129ea47a5012fcd823e7
BLAKE2b-256 checksum
How to use checksums
71a281788f29af96c82dc1bbc3c13ee623d3031bc6ec35c4fd7adc49e0267cf4
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

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

Download URL automatheque_schema-0.24.0-py3-none-any.whl
Size 37.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
7f1df15081a753edd38062122b9bcf1f011cc7458124a47d3f20253b5594bc42
BLAKE2b-256 checksum
How to use checksums
72f940fd7c53dd460f4568f2ef5d44bac0ae1b4764ae7d4c8523619962eccf76
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
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