{% extends 'layout.html' %} {% block title %}Packages - {{ super() }}{% endblock %} {% block content %} {% macro downloads_badge(counts) %} {% if counts %} {% set n = counts.recent_download_count %} {% if n >= 100000 %} 100k+ downloads {% elif n >= 50000 %} 50k+ downloads {% elif n >= 25000 %} 25k+ downloads {% elif n >= 10000 %} 10k+ downloads {% elif n >= 5000 %} 5k+ downloads {% elif n >= 2500 %} 2.5k+ downloads {% elif n >= 1000 %} 1k+ downloads {% endif %} {% endif %} {% endmacro %} {% macro package_card(version, archived=false) %}

{{ version.displaynames['enu'].displayname }} v{{ version.version_string }} {% if archived %} Archived {% endif %}

{% if not archived %} {{ downloads_badge(version.package.download_counts) }} {% endif %}

{{ version.builds[0].descriptions['enu'].description }}

{% endmacro %} {# Split versions into active and archived. A package is considered archived only if no build across any of its versions is active. All versions' builds are pre-loaded in frontend.py via the Package.versions -> Version.builds joinedload chain. #} {% set active_versions = [] %} {% set archived_versions = [] %} {% for version in versions %} {% if version.package.has_active_builds %} {% set _ = active_versions.append(version) %} {% else %} {% set _ = archived_versions.append(version) %} {% endif %} {% endfor %}

Packages

{# ── Active packages ── #} {% for version_row in active_versions | batch(3) %}
{% for version in version_row %} {{ package_card(version) }} {% endfor %}
{% endfor %} {# ── Archived packages ── #} {% if archived_versions %}

Archived Packages

These packages are no longer in the active catalog and are not actively maintained.


{% for version_row in archived_versions | batch(3) %}
{% for version in version_row %} {{ package_card(version, archived=true) }} {% endfor %}
{% endfor %} {% endif %}
{% endblock %}