mirror of
https://github.com/vinta/awesome-python.git
synced 2026-03-24 01:24:43 +08:00
Switch readme_parser.py from regex-based parsing to markdown-it-py for more robust and maintainable Markdown AST traversal. Update build pipeline, templates, styles, and JS to support the new parser output. Refresh GitHub stars data and update tests to match new parser behavior. Co-Authored-By: Claude <noreply@anthropic.com>
154 lines
4.7 KiB
HTML
154 lines
4.7 KiB
HTML
{% extends "base.html" %}
|
|
{% block content %}
|
|
<header class="hero">
|
|
<div class="hero-main">
|
|
<div>
|
|
<h1>Awesome Python</h1>
|
|
<p class="hero-sub">
|
|
{{ subtitle }}<br />Curated by
|
|
<a href="https://github.com/vinta" target="_blank" rel="noopener"
|
|
>@vinta</a
|
|
>
|
|
since 2014.
|
|
</p>
|
|
<a
|
|
href="https://github.com/vinta/awesome-python"
|
|
class="hero-gh"
|
|
target="_blank"
|
|
rel="noopener"
|
|
>awesome-python on GitHub →</a
|
|
>
|
|
</div>
|
|
<a
|
|
href="https://github.com/vinta/awesome-python/blob/master/CONTRIBUTING.md"
|
|
class="hero-submit"
|
|
target="_blank"
|
|
rel="noopener"
|
|
>Submit a Project</a
|
|
>
|
|
</div>
|
|
</header>
|
|
|
|
<h2 class="sr-only">Search and filter</h2>
|
|
<div class="controls">
|
|
<div class="search-wrap">
|
|
<svg
|
|
class="search-icon"
|
|
width="16"
|
|
height="16"
|
|
viewBox="0 0 24 24"
|
|
fill="none"
|
|
stroke="currentColor"
|
|
stroke-width="2.5"
|
|
stroke-linecap="round"
|
|
stroke-linejoin="round"
|
|
>
|
|
<circle cx="11" cy="11" r="8" />
|
|
<line x1="21" y1="21" x2="16.65" y2="16.65" />
|
|
</svg>
|
|
<input
|
|
type="search"
|
|
class="search"
|
|
placeholder="Search {{ entries | length }} libraries across {{ total_categories }} categories..."
|
|
aria-label="Search libraries"
|
|
/>
|
|
</div>
|
|
<div class="filter-bar" hidden>
|
|
<span>Showing <strong class="filter-value"></strong></span>
|
|
<button class="filter-clear" aria-label="Clear filter">
|
|
× Clear
|
|
</button>
|
|
</div>
|
|
</div>
|
|
|
|
<h2 class="sr-only">Results</h2>
|
|
<div class="table-wrap" tabindex="0" role="region" aria-label="Libraries table">
|
|
<table class="table">
|
|
<thead>
|
|
<tr>
|
|
<th class="col-num"><span class="sr-only">#</span></th>
|
|
<th class="col-name" data-sort="name">Project Name</th>
|
|
<th class="col-stars" data-sort="stars">GitHub Stars</th>
|
|
<th class="col-commit" data-sort="commit-time">Last Commit</th>
|
|
<th class="col-cat">Category</th>
|
|
<th class="col-arrow"><span class="sr-only">Details</span></th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
{% for entry in entries %}
|
|
<tr
|
|
class="row"
|
|
role="button"
|
|
data-cat="{{ entry.category }}"
|
|
data-group="{{ entry.group }}"
|
|
tabindex="0"
|
|
aria-expanded="false"
|
|
aria-controls="expand-{{ loop.index }}"
|
|
>
|
|
<td class="col-num">{{ loop.index }}</td>
|
|
<td class="col-name">
|
|
<a href="{{ entry.url }}" target="_blank" rel="noopener"
|
|
>{{ entry.name }}</a
|
|
>
|
|
</td>
|
|
<td class="col-stars">
|
|
{% if entry.stars is not none %}{{ "{:,}".format(entry.stars) }}{%
|
|
else %}—{% endif %}
|
|
</td>
|
|
<td class="col-commit"
|
|
{% if entry.last_commit_at %}data-commit="{{ entry.last_commit_at }}"{% endif %}
|
|
>{% if entry.last_commit_at %}<time datetime="{{ entry.last_commit_at }}">{{ entry.last_commit_at[:10] }}</time>{% else %}—{% endif %}</td>
|
|
<td class="col-cat">
|
|
<button class="tag" data-type="cat" data-value="{{ entry.category }}">
|
|
{{ entry.category }}
|
|
</button>
|
|
</td>
|
|
<td class="col-arrow"><span class="arrow">→</span></td>
|
|
</tr>
|
|
<tr class="expand-row" id="expand-{{ loop.index }}">
|
|
<td></td>
|
|
<td colspan="3">
|
|
<div class="expand-content">
|
|
{% if entry.description %}
|
|
<div class="expand-desc">{{ entry.description | safe }}</div>
|
|
{% endif %}
|
|
{% if entry.also_see %}
|
|
<div class="expand-also-see">
|
|
Also see: {% for see in entry.also_see %}<a
|
|
href="{{ see.url }}"
|
|
target="_blank"
|
|
rel="noopener"
|
|
>{{ see.name }}</a
|
|
>{% if not loop.last %}, {% endif %}{% endfor %}
|
|
</div>
|
|
{% endif %}
|
|
<div class="expand-meta">
|
|
{% if entry.owner %}<a
|
|
href="https://github.com/{{ entry.owner }}"
|
|
target="_blank"
|
|
rel="noopener"
|
|
>{{ entry.owner }}</a
|
|
><span class="expand-sep">/</span>{% endif %}<a
|
|
href="{{ entry.url }}"
|
|
target="_blank"
|
|
rel="noopener"
|
|
>{{ entry.url | replace("https://", "") }}</a
|
|
>
|
|
</div>
|
|
</div>
|
|
</td>
|
|
<td class="col-cat">
|
|
<button class="tag" data-type="group" data-value="{{ entry.group }}">
|
|
{{ entry.group }}
|
|
</button>
|
|
</td>
|
|
<td></td>
|
|
</tr>
|
|
{% endfor %}
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
|
|
<div class="no-results" hidden>No libraries match your search.</div>
|
|
{% endblock %}
|