Skip to main content

easyfabric.framework_classification

Faal op een pad dat geen categorie uit de drieledige taxonomie draagt.

Elk pad in een platform valt in een van drie categorieen:

framework EasyFabric bezit het; een upgrade vervangt het in zijn geheel. test-bed-only Het platform bezit het en het wordt nooit meegeleverd. platform-owned Het platform bezit het; een upgrade raakt het niet aan.

Die categorie wordt gedeclareerd in framework-manifest.yaml in de root van het platform, niet afgeleid uit de mapnaam — Notebooks/Meta en Yml bevatten allebei paden uit meer dan een categorie.

Zonder deze check glipt een nieuw bestand ongemerkt buiten de indeling. Dat valt pas op bij de eerste upgrade die het bestand overschrijft of juist overslaat, op een draaiend platform, bij een klant.

De check meldt vier dingen:

  1. een bestand onder een root dat door geen enkel gedeclareerd pad wordt gedekt;
  2. een gedeclareerd pad dat geen enkel bestand meer dekt (hernoemd of verwijderd);
  3. een gedeclareerd pad dat buiten elke root valt;
  4. een categorie die niet bestaat, of een pad dat twee keer is gedeclareerd.

Bestanden komen uit git ls-files: precies wat git archive in de release-zip stopt, zodat de check dezelfde verzameling beoordeelt als de publicatie.

Deze module zit in de wheel omdat elk platform hem draait, niet alleen EasyFabricCore. DemoPlatform en een klantplatform hebben easyfabric niet als broncode; kopieren zou driften, en drift is precies wat de taxonomie bestrijdt. De wheel levert hem daarom als console-entrypoint mee:

easyfabric-check-classification [--platform-dir PATH]

Zonder --platform-dir beoordeelt hij de huidige map, wat in een pijplijn de root van het platform is. python3 -m easyfabric.framework_classification doet hetzelfde voor wie liever geen script op het PATH aanroept.

Exitcode 0 = elk pad geclassificeerd, 1 = bevindingen.

framework_paths​

def framework_paths(manifest: dict) -> list[str]

De paden die dit manifest als framework declareert.

covered_files​

def covered_files(root: Path, paths: list[str]) -> list[str]

Alle bestanden onder de opgegeven paden, relatief aan root.

framework_files​

def framework_files(root: Path, manifest: dict) -> list[str]

Alleen de bestanden die volgens dit manifest echt framework zijn.

Een pad dat onder een frameworkmap een eigen categorie declareert valt hierbuiten: de langste declaratie wint, net als in classify().