-
Notifications
You must be signed in to change notification settings - Fork 0
feat: PackageCollector
#20
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
Test ReportReport generated on 01-Dec-2022 at 12:52:53 by pytest-md Summary25 tests ran in 4.78 seconds
Coverage Report
|
8626c5c
to
0efae59
Compare
The `PackgeCollector` can currently handle a local directory and packages from a LMS.
0efae59
to
52372d8
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Bitte schreibe auch noch ein paar mehr Kommentare. Beispielsweise zur Besonderheit des LMSCollector
.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Ich fände hier auch noch etwas mehr Doku wichtig. Zum Beispiel ist bei Indexer nicht klar, wo sich (un)register_package
und update
abgrenzen, d.h. welche Fälle sie jeweils abdecken.
async def _get_manifest(self, path: Path) -> Manifest: | ||
async with self._worker_pool.get_worker(path, 0, None) as worker: | ||
return await worker.get_manifest() |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Ist es wirklich nötig, einen Worker zu starten, um das Manifest zu lesen? Für das Lesen des Manifests muss doch kein Code des Pakets ausgeführt werden, sondern nur eine JSON-Datei daraus gelesen werden.
Der
PackageCollector
initialisiert und managt intern folgende Sub-Kollektoren, welche das Manifest von Paketen extrahieren und eine zugehörigePackage
-Klasse erstellen:LocalCollector
:LMSCollector
:.get(hash)
beimPackageCollector
abgerufen werdenRepoCollector
:Zusätzlich zu diesen Sub-Kollektoren wird ein
Indexer
initialisiert. Diese Klasse speichert allePackage
s (jeglichen Ursprungs) intern ab und ermöglicht es, bei wiederholten Abfragen des selben Pakets direkt das gespeichertePackage
zurückzugeben. Dadurch muss bei bereits indexierten Paketen nicht erneut das Manifest extrahiert werden. Nach einer vordefinierten Zeitspanne ruft derIndexer
die.get_packages()
-Methode desLocalCollector
s und derRepoCollector
en auf, um den Index zu aktualisieren.