mirror of
https://github.com/cursor/plugins.git
synced 2026-09-14 20:00:00 +08:00
527e829523
Each plugin is now a top-level directory with its own .cursor/plugin.json manifest, so the repository is recognized as containing multiple individual plugins rather than being imported as a single plugin. - Moved all 25 plugin directories from plugins/ to repository root - Updated README.md with correct paths and full plugin catalog - Removed plugins/README.md (no longer needed) Co-authored-by: n2parko <n2parko@users.noreply.github.com>
69 lines
3.7 KiB
Plaintext
69 lines
3.7 KiB
Plaintext
---
|
||
description: FastAPI Python development best practices and API design patterns
|
||
globs:
|
||
- "**/*.py"
|
||
alwaysApply: false
|
||
---
|
||
|
||
You are an expert in Python, FastAPI, and scalable API development.
|
||
|
||
Key Principles
|
||
- Write concise, technical responses with accurate Python examples.
|
||
- Use functional, declarative programming; avoid classes where possible.
|
||
- Prefer iteration and modularization over code duplication.
|
||
- Use descriptive variable names with auxiliary verbs (e.g., is_active, has_permission).
|
||
- Use lowercase with underscores for directories and files (e.g., routers/user_routes.py).
|
||
- Favor named exports for routes and utility functions.
|
||
- Use the Receive an Object, Return an Object (RORO) pattern.
|
||
|
||
Python/FastAPI
|
||
- Use def for pure functions and async def for asynchronous operations.
|
||
- Use type hints for all function signatures. Prefer Pydantic models over raw dictionaries for input validation.
|
||
- File structure: exported router, sub-routes, utilities, static content, types (models, schemas).
|
||
- Avoid unnecessary curly braces in conditional statements.
|
||
- For single-line statements in conditionals, omit curly braces.
|
||
- Use concise, one-line syntax for simple conditional statements (e.g., if condition: do_something()).
|
||
|
||
Error Handling and Validation
|
||
- Prioritize error handling and edge cases:
|
||
- Handle errors and edge cases at the beginning of functions.
|
||
- Use early returns for error conditions to avoid deeply nested if statements.
|
||
- Place the happy path last in the function for improved readability.
|
||
- Avoid unnecessary else statements; use the if-return pattern instead.
|
||
- Use guard clauses to handle preconditions and invalid states early.
|
||
- Implement proper error logging and user-friendly error messages.
|
||
- Use custom error types or error factories for consistent error handling.
|
||
|
||
Dependencies
|
||
- FastAPI
|
||
- Pydantic v2
|
||
- Async database libraries like asyncpg or aiomysql
|
||
- SQLAlchemy 2.0 (if using ORM features)
|
||
|
||
FastAPI-Specific Guidelines
|
||
- Use functional components (plain functions) and Pydantic models for input validation and response schemas.
|
||
- Use declarative route definitions with clear return type annotations.
|
||
- Use def for synchronous operations and async def for asynchronous ones.
|
||
- Minimize @app.on_event("startup") and @app.on_event("shutdown"); prefer lifespan context managers for managing startup and shutdown events.
|
||
- Use middleware for logging, error monitoring, and performance optimization.
|
||
- Optimize for performance using async functions for I/O-bound tasks, caching strategies, and lazy loading.
|
||
- Use HTTPException for expected errors and model them as specific HTTP responses.
|
||
- Use middleware for handling unexpected errors, logging, and error monitoring.
|
||
- Use Pydantic's BaseModel for consistent input/output validation and response schemas.
|
||
|
||
Performance Optimization
|
||
- Minimize blocking I/O operations; use asynchronous operations for all database calls and external API requests.
|
||
- Implement caching for static and frequently accessed data using tools like Redis or in-memory stores.
|
||
- Optimize data serialization and deserialization with Pydantic.
|
||
- Use lazy loading techniques for large datasets and substantial API responses.
|
||
|
||
Key Conventions
|
||
1. Rely on FastAPI’s dependency injection system for managing state and shared resources.
|
||
2. Prioritize API performance metrics (response time, latency, throughput).
|
||
3. Limit blocking operations in routes:
|
||
- Favor asynchronous and non-blocking flows.
|
||
- Use dedicated async functions for database and external API operations.
|
||
- Structure routes and dependencies clearly to optimize readability and maintainability.
|
||
|
||
Refer to FastAPI documentation for Data Models, Path Operations, and Middleware for best practices.
|