Changeset View
Changeset View
Standalone View
Standalone View
swh/lister/conda/lister.py
Show First 20 Lines • Show All 65 Lines • ▼ Show 20 Lines | def get_pages(self) -> Iterator[CondaListerPage]: | |||||||||||
] | ] | |||||||||||
yield (arch, packages) | yield (arch, packages) | |||||||||||
def get_origins_from_page(self, page: CondaListerPage) -> Iterator[ListedOrigin]: | def get_origins_from_page(self, page: CondaListerPage) -> Iterator[ListedOrigin]: | |||||||||||
"""Iterate on all pages and yield ListedOrigin instances.""" | """Iterate on all pages and yield ListedOrigin instances.""" | |||||||||||
assert self.lister_obj.id is not None | assert self.lister_obj.id is not None | |||||||||||
arch, packages = page | arch, packages = page | |||||||||||
package_names = set() | ||||||||||||
for filename, package_metadata in packages.items(): | for filename, package_metadata in packages.items(): | |||||||||||
package_names.add(package_metadata["name"]) | ||||||||||||
version_key = ( | version_key = ( | |||||||||||
f"{arch}/{package_metadata['version']}-{package_metadata['build']}" | f"{arch}/{package_metadata['version']}-{package_metadata['build']}" | |||||||||||
) | ) | |||||||||||
artifact: Dict[str, Any] = { | artifact: Dict[str, Any] = { | |||||||||||
"filename": filename, | "filename": filename, | |||||||||||
"url": self.ARCHIVE_URL_PATTERN.format( | "url": self.ARCHIVE_URL_PATTERN.format( | |||||||||||
url=self.url, | url=self.url, | |||||||||||
Show All 14 Lines | def get_origins_from_page(self, page: CondaListerPage) -> Iterator[ListedOrigin]: | |||||||||||
package_date = None | package_date = None | |||||||||||
if "timestamp" in package_metadata: | if "timestamp" in package_metadata: | |||||||||||
package_date = datetime.datetime.fromtimestamp( | package_date = datetime.datetime.fromtimestamp( | |||||||||||
package_metadata["timestamp"] / 1e3, datetime.timezone.utc | package_metadata["timestamp"] / 1e3, datetime.timezone.utc | |||||||||||
) | ) | |||||||||||
elif "date" in package_metadata: | elif "date" in package_metadata: | |||||||||||
package_date = iso8601.parse_date(package_metadata["date"]) | package_date = iso8601.parse_date(package_metadata["date"]) | |||||||||||
last_update = None | ||||||||||||
if package_date: | if package_date: | |||||||||||
artifact["date"] = package_date.isoformat() | artifact["date"] = package_date.isoformat() | |||||||||||
self.package_dates[package_metadata["name"]].append(package_date) | self.package_dates[package_metadata["name"]].append(package_date) | |||||||||||
last_update = max(self.package_dates[package_metadata["name"]]) | ||||||||||||
for package_name in package_names: | ||||||||||||
package_dates = self.package_dates[package_name] | ||||||||||||
yield ListedOrigin( | yield ListedOrigin( | |||||||||||
lister_id=self.lister_obj.id, | lister_id=self.lister_obj.id, | |||||||||||
visit_type=self.VISIT_TYPE, | visit_type=self.VISIT_TYPE, | |||||||||||
url=self.ORIGIN_URL_PATTERN.format( | url=self.ORIGIN_URL_PATTERN.format( | |||||||||||
channel=self.channel, pkgname=package_metadata["name"] | channel=self.channel, pkgname=package_name | |||||||||||
), | ), | |||||||||||
last_update=last_update, | last_update=max(package_dates, default=None), | |||||||||||
vlorentzUnsubmitted Not Done Inline Actions
vlorentz: | ||||||||||||
Done Inline ActionsNide, I did not know that keyword argument existed for max. anlambert: Nide, I did not know that keyword argument existed for max. | ||||||||||||
extra_loader_arguments={ | extra_loader_arguments={ | |||||||||||
"artifacts": [ | "artifacts": list(self.packages[package_name].values()) | |||||||||||
Not Done Inline Actions
vlorentz: | ||||||||||||
v for k, v in self.packages[package_metadata["name"]].items() | ||||||||||||
], | ||||||||||||
}, | }, | |||||||||||
) | ) |