mirror of
https://github.com/vinta/awesome-python.git
synced 2026-01-25 15:38:43 +00:00
Merge branch 'master' into patch-1
This commit is contained in:
commit
a4ea52bc6f
69
.claude/commands/review-pending-prs.md
Normal file
69
.claude/commands/review-pending-prs.md
Normal file
@ -0,0 +1,69 @@
|
||||
---
|
||||
description: Review pending PRs against CONTRIBUTING.md acceptance criteria.
|
||||
allowed-tools: Bash(gh api:*), Bash(gh pr close:*), Bash(gh pr diff:*), Bash(gh pr edit:*), Bash(gh pr list:*)
|
||||
---
|
||||
|
||||
## Usage
|
||||
|
||||
```
|
||||
/review-pending-prs
|
||||
```
|
||||
|
||||
## Instructions
|
||||
|
||||
1. Fetch 10 open PRs with details: `gh pr list --repo vinta/awesome-python --limit 10 --search "-label:\"claude reviewed\"" --json number,title,author,url,body,files,mergeable,mergeStateStatus`
|
||||
2. Fetch all PR diffs in parallel: `gh pr diff <number> --repo vinta/awesome-python`
|
||||
3. Run quick rejection checks (no API calls needed):
|
||||
- Has merge conflicts? (from `mergeable`/`mergeStateStatus`)
|
||||
- Adds more than one project? (from diff)
|
||||
- Duplicate entry? (from diff - URL already in README)
|
||||
- Not a project submission? (from diff - e.g., random files, contributor list)
|
||||
4. For PRs passing quick checks, fetch repo stats: `gh api repos/<owner>/<repo> --jq '{stars: .stargazers_count, created: .created_at, updated: .pushed_at, language: .language, archived: .archived}'`
|
||||
5. Review against all criteria in [CONTRIBUTING.md](../../CONTRIBUTING.md)
|
||||
6. Present summary table with recommendations
|
||||
7. Ask user:
|
||||
|
||||
```
|
||||
Would you like me to:
|
||||
|
||||
1. Close the rejected PRs with comments?
|
||||
2. Add "claude reviewed" label to the passed PRs?
|
||||
3. Do all
|
||||
```
|
||||
|
||||
## Quick Rejection Checks
|
||||
|
||||
Check these rules first - if any fail, recommend rejection:
|
||||
|
||||
- PR has merge conflicts
|
||||
- Add more than one project per PR
|
||||
- Duplicate of existing entry
|
||||
- Placed under an inappropriate category
|
||||
- Project is archived or abandoned (no commits in 12+ months)
|
||||
- No documentation or unclear use case
|
||||
- Less than 100 GitHub stars AND not justified as a hidden gem
|
||||
|
||||
## Output Format
|
||||
|
||||
Provide a simple review:
|
||||
|
||||
1. **Rejection Check** - table with the above rules and PASS/REJECT
|
||||
2. **Recommendation** - PASS or REJECT
|
||||
|
||||
## Close PRs
|
||||
|
||||
If user asks to close/reject:
|
||||
|
||||
```bash
|
||||
gh pr close <number> --repo vinta/awesome-python --comment "<brief reason>"
|
||||
```
|
||||
|
||||
## Mark as Passed
|
||||
|
||||
```bash
|
||||
gh pr edit <number> --repo vinta/awesome-python --add-label "claude reviewed"
|
||||
```
|
||||
|
||||
## Extra Instructions (If Provided)
|
||||
|
||||
$ARGUMENTS
|
||||
18
.claude/settings.json
Normal file
18
.claude/settings.json
Normal file
@ -0,0 +1,18 @@
|
||||
{
|
||||
"permissions": {
|
||||
"allow": [
|
||||
"Bash(gh api:*)",
|
||||
"Bash(gh pr close:*)",
|
||||
"Bash(gh pr comment:*)",
|
||||
"Bash(gh pr diff:*)",
|
||||
"Bash(gh pr edit:*)",
|
||||
"Bash(gh pr list:*)",
|
||||
"Bash(gh pr view:*)",
|
||||
"Bash(gh run list:*)",
|
||||
"Bash(gh run rerun:*)",
|
||||
"Bash(gh run view:*)",
|
||||
"Bash(gh search:*)"
|
||||
],
|
||||
"deny": []
|
||||
}
|
||||
}
|
||||
1
.github/FUNDING.yml
vendored
1
.github/FUNDING.yml
vendored
@ -1 +0,0 @@
|
||||
# These are supported funding model platforms
|
||||
@ -1,10 +0,0 @@
|
||||
---
|
||||
name: Add new library to this list
|
||||
about: ''
|
||||
title: ''
|
||||
labels: ''
|
||||
assignees: ''
|
||||
|
||||
---
|
||||
|
||||
**Please open a Pull Request instead.**
|
||||
10
.github/ISSUE_TEMPLATE/add-xxx.md
vendored
10
.github/ISSUE_TEMPLATE/add-xxx.md
vendored
@ -1,10 +0,0 @@
|
||||
---
|
||||
name: Add XXX
|
||||
about: Add new item to the list
|
||||
title: ''
|
||||
labels: ''
|
||||
assignees: ''
|
||||
|
||||
---
|
||||
|
||||
**Please open a Pull Request instead.**
|
||||
21
.github/PULL_REQUEST_TEMPLATE.md
vendored
21
.github/PULL_REQUEST_TEMPLATE.md
vendored
@ -1,11 +1,20 @@
|
||||
## What is this Python project?
|
||||
## Checklist
|
||||
|
||||
Describe features.
|
||||
- [ ] One link per Pull Request
|
||||
- [ ] PR title format: `Add project-name`
|
||||
- [ ] Entry format: `* [project-name](url) - Description ending with period.`
|
||||
- [ ] Description is concise (no mention of "Python")
|
||||
|
||||
## What's the difference between this Python project and similar ones?
|
||||
## Why This Project Is Awesome
|
||||
|
||||
Enumerate comparisons.
|
||||
Which criterion does it meet? (pick one)
|
||||
|
||||
--
|
||||
- [ ] **Industry Standard** - The go-to tool for a specific use case
|
||||
- [ ] **Rising Star** - 5,000+ stars in <2 years, significant adoption
|
||||
- [ ] **Hidden Gem** - Exceptional quality, solves niche problems elegantly
|
||||
|
||||
Anyone who agrees with this pull request could submit an *Approve* review to it.
|
||||
Explain:
|
||||
|
||||
## How It Differs
|
||||
|
||||
If similar entries exist, what makes this one unique?
|
||||
|
||||
58
.github/workflows/claude-pr-review.yml
vendored
Normal file
58
.github/workflows/claude-pr-review.yml
vendored
Normal file
@ -0,0 +1,58 @@
|
||||
name: Claude PR Review
|
||||
|
||||
on:
|
||||
pull_request:
|
||||
types: [opened, synchronize, ready_for_review, reopened, labeled]
|
||||
paths:
|
||||
- "README.md"
|
||||
|
||||
jobs:
|
||||
claude-pr-review:
|
||||
if: |
|
||||
github.event.label.name == 'claude review' ||
|
||||
github.event.pull_request.author_association == 'FIRST_TIME_CONTRIBUTOR' ||
|
||||
github.event.pull_request.author_association == 'FIRST_TIMER' ||
|
||||
github.event.pull_request.author_association == 'NONE'
|
||||
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
permissions:
|
||||
contents: read # Cannot merge PR
|
||||
pull-requests: write
|
||||
issues: read
|
||||
actions: read # Required for Claude to read CI results on PRs
|
||||
id-token: write # Required for Claude GitHub app to function
|
||||
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
fetch-depth: 1
|
||||
|
||||
- name: Run Claude Code Review
|
||||
id: claude-review
|
||||
uses: anthropics/claude-code-action@v1
|
||||
with:
|
||||
# See https://github.com/anthropics/claude-code-action/blob/main/docs/usage.md
|
||||
anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}
|
||||
plugin_marketplaces: "https://github.com/anthropics/claude-code.git"
|
||||
plugins: "code-review@claude-code-plugins"
|
||||
prompt: |
|
||||
Review this PR against the acceptance criteria in CONTRIBUTING.md.
|
||||
Check for automatic rejection reasons (abandoned, duplicates, spam).
|
||||
|
||||
IMPORTANT: Only read README.md and CONTRIBUTING.md. Do not read or access any other files.
|
||||
|
||||
/code-review:code-review ${{ github.repository }}/pull/${{ github.event.pull_request.number }}
|
||||
|
||||
After your review, output your final decision on the LAST line in this exact format:
|
||||
DECISION: REJECT or DECISION: PASS
|
||||
|
||||
- name: Close PR if rejected
|
||||
if: "contains(steps.claude-review.outputs.response, 'DECISION: REJECT')"
|
||||
env:
|
||||
GH_TOKEN: ${{ github.token }}
|
||||
run: |
|
||||
gh pr close ${{ github.event.pull_request.number }} \
|
||||
--repo ${{ github.repository }} \
|
||||
--comment "This PR has been automatically closed based on the review. Please address the feedback and re-open the PR."
|
||||
18
.travis.yml
18
.travis.yml
@ -1,18 +0,0 @@
|
||||
language: python
|
||||
|
||||
python:
|
||||
- "3.6"
|
||||
|
||||
script:
|
||||
- python sort.py
|
||||
- cp README.md docs/index.md
|
||||
- mkdocs build
|
||||
|
||||
deploy:
|
||||
provider: pages
|
||||
local-dir: site
|
||||
skip-cleanup: true
|
||||
keep-history: true
|
||||
github-token: $GITHUB_TOKEN
|
||||
on:
|
||||
branch: master
|
||||
32
CLAUDE.md
Normal file
32
CLAUDE.md
Normal file
@ -0,0 +1,32 @@
|
||||
# CLAUDE.md
|
||||
|
||||
## Repository Overview
|
||||
|
||||
This is the awesome-python repository - a curated list of Python frameworks, libraries, software and resources. The repository serves as a comprehensive directory about Python ecosystem.
|
||||
|
||||
## PR Review Guidelines
|
||||
|
||||
**For all PR review tasks, refer to [CONTRIBUTING.md](CONTRIBUTING.md)** which contains:
|
||||
|
||||
- Acceptance criteria (Industry Standard, Rising Star, Hidden Gem)
|
||||
- Quality requirements
|
||||
- Automatic rejection criteria
|
||||
- Entry format reference
|
||||
- PR description template
|
||||
|
||||
## Architecture & Structure
|
||||
|
||||
The repository follows a single-file architecture:
|
||||
|
||||
- **README.md**: All content in hierarchical structure (categories, subcategories, entries)
|
||||
- **CONTRIBUTING.md**: Submission guidelines and review criteria
|
||||
- **sort.py**: Script to enforce alphabetical ordering
|
||||
|
||||
Entry format: `* [project-name](url) - Concise description ending with period.`
|
||||
|
||||
## Key Considerations
|
||||
|
||||
- This is a curated list, not a code project
|
||||
- Quality over quantity - only "awesome" projects
|
||||
- Alphabetical ordering within categories is mandatory
|
||||
- README.md is the source of truth for all content
|
||||
136
CONTRIBUTING.md
136
CONTRIBUTING.md
@ -1,20 +1,126 @@
|
||||
# Contributing
|
||||
|
||||
Your contributions are always welcome!
|
||||
## Quick Checklist
|
||||
|
||||
## Guidelines
|
||||
Before submitting a PR, verify:
|
||||
|
||||
* Add one link per Pull Request.
|
||||
* Make sure the PR title is in the format of `Add project-name`.
|
||||
* Write down the reason why the library is awesome.
|
||||
* Add the link: `* [project-name](http://example.com/) - A short description ends with a period.`
|
||||
* Keep descriptions concise and **short**.
|
||||
* Add a section if needed.
|
||||
* Add the section description.
|
||||
* Add the section title to Table of Contents.
|
||||
* Search previous Pull Requests or Issues before making a new one, as yours may be a duplicate.
|
||||
* Don't mention `Python` in the description as it's implied.
|
||||
* Check your spelling and grammar.
|
||||
* Remove any trailing whitespace.
|
||||
- [ ] One link per Pull Request
|
||||
- [ ] PR title format: `Add project-name`
|
||||
- [ ] Entry format: `* [project-name](url) - A short description ending with a period.`
|
||||
- [ ] Description is concise (one sentence)
|
||||
- [ ] Placed in the appropriate category/subcategory
|
||||
- [ ] No trailing whitespace
|
||||
- [ ] Spelling and grammar checked
|
||||
|
||||
Just a gentle reminder: **Try not to submit your own project. Instead, wait for someone finds it useful and submits it for you.**
|
||||
## Acceptance Criteria
|
||||
|
||||
Your submission must meet **ONE** of the following criteria:
|
||||
|
||||
### 1. Industry Standard
|
||||
|
||||
- The go-to tool that almost everyone uses for a specific use case
|
||||
- Examples: Requests, Flask, Pandas, NumPy
|
||||
- Limit: 1-3 tools per category
|
||||
|
||||
### 2. Rising Star
|
||||
|
||||
- Rapid growth: 5,000+ GitHub stars in less than 2 years
|
||||
- Significant community buzz and adoption
|
||||
- Solving problems in new or better ways
|
||||
- Examples: FastAPI, Ruff, uv
|
||||
|
||||
### 3. Hidden Gem
|
||||
|
||||
- Exceptional quality despite fewer stars (may have <500 stars)
|
||||
- Solves niche problems elegantly
|
||||
- Strong recommendation from experienced developers
|
||||
- Must include compelling justification in PR description
|
||||
|
||||
## Quality Requirements
|
||||
|
||||
All submissions must satisfy **ALL** of these:
|
||||
|
||||
1. **Python-first**: Primarily written in Python (>50% of codebase)
|
||||
2. **Active**: Commits within the last 12 months
|
||||
3. **Stable**: Production-ready, not alpha/beta/experimental
|
||||
4. **Documented**: Clear README with examples and use cases
|
||||
5. **Unique**: Adds distinct value, not "yet another X"
|
||||
|
||||
## Entry Format Reference
|
||||
|
||||
### Standard Entry
|
||||
|
||||
```markdown
|
||||
- [project-name](https://github.com/owner/repo) - Description ending with period.
|
||||
```
|
||||
|
||||
### Standard Library Module
|
||||
|
||||
```markdown
|
||||
- [module](https://docs.python.org/3/library/module.html) - (Python standard library) Description.
|
||||
```
|
||||
|
||||
### Fork of Another Project
|
||||
|
||||
```markdown
|
||||
- [new-name](https://github.com/owner/new-name) - Description ([original-name](original-url) fork).
|
||||
```
|
||||
|
||||
### Entry with Related Awesome List
|
||||
|
||||
```markdown
|
||||
- [project](https://github.com/owner/project) - Description.
|
||||
- [awesome-project](https://github.com/someone/awesome-project)
|
||||
```
|
||||
|
||||
### Subcategory Format
|
||||
|
||||
```markdown
|
||||
- Subcategory Name
|
||||
- [project](url) - Description.
|
||||
```
|
||||
|
||||
## Adding a New Section
|
||||
|
||||
If adding a new category:
|
||||
|
||||
1. Add section description in italics: `*Libraries for doing X.*`
|
||||
2. Add the section title to the Table of Contents
|
||||
3. Keep sections in alphabetical order
|
||||
|
||||
## PR Description Template
|
||||
|
||||
Please include the following in your PR description:
|
||||
|
||||
```
|
||||
## Why This Project Is Awesome
|
||||
|
||||
[Explain which criterion it meets: Industry Standard / Rising Star / Hidden Gem]
|
||||
|
||||
## How It Differs
|
||||
|
||||
[If similar entries exist, explain what makes this one unique]
|
||||
```
|
||||
|
||||
## Review Process
|
||||
|
||||
PRs are reviewed by automated tools and maintainers:
|
||||
|
||||
1. **Format Check**: Entry follows the correct format
|
||||
2. **Category Check**: Placed in the appropriate category/subcategory
|
||||
3. **Duplicate Check**: Not already listed or previously rejected
|
||||
4. **Activity Check**: Project shows recent activity
|
||||
5. **Quality Check**: Meets acceptance criteria
|
||||
|
||||
Search previous Pull Requests and Issues before submitting, as yours may be a duplicate.
|
||||
|
||||
## Automatic Rejection
|
||||
|
||||
PRs will be **closed** if:
|
||||
|
||||
- Add more than one project per PR
|
||||
- Duplicate of existing entry
|
||||
- Placed under an inappropriate category
|
||||
- Project is archived or abandoned (no commits in 12+ months)
|
||||
- No documentation or unclear use case
|
||||
- Less than 100 GitHub stars AND not justified as a hidden gem
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user