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.23.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.23.0
File Size Uploaded
automatheque_schema-0.23.0.tar.gz 30.5 kB Details

Built distribution (wheel)

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

Total release size: 62.9 kB

Release files / automatheque_schema-0.23.0.tar.gz

Download URL automatheque_schema-0.23.0.tar.gz
Size 30.5 kB
Tags Source
SHA-256 checksum
How to use checksums
3b686a8fa15a6872277a71022867454de3fde2e15b3ece6db1149252bee63e78
BLAKE2b-256 checksum
How to use checksums
7e9f853177a77ce28fb62271d39078a0d37d4ce53307588d3729555dfa701a8a
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.23.0-py3-none-any.whl

Download URL automatheque_schema-0.23.0-py3-none-any.whl
Size 32.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
ece282e4c5d77603ff7b034f5d7498231add5ff034ab18869a0bb60dba52c7cd
BLAKE2b-256 checksum
How to use checksums
7a961aa1a66d0777e96b6570565b3598d614c893107087726a3111286608efb5
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