PluginBench
Rule

python

via PatrickJS/awesome-cursorrules

Python best practices for Flask and SQLite development with modern patterns and security guidelines.

What is python?

Comprehensive guide for building Flask applications with SQLite using industry best practices. Covers project structure, code style, type hints, database design, authentication, testing, and security. Use this rule when starting or maintaining Python Flask projects to ensure consistent, secure, and maintainable code.

  • Enforces src-layout project structure with organized tests, config, static, and template directories
  • Applies Black formatting, isort import sorting, and PEP 8 naming conventions with 88-character line limits
  • Requires type hints for all functions using typing module and custom types.py definitions
  • Guides Flask architecture using factory pattern, Blueprints, SQLAlchemy ORM, and Alembic migrations
  • Establishes authentication patterns with Flask-Login, OAuth, bcrypt password hashing, and CSRF protection
  • Defines testing strategy with pytest, fixtures, mocking, and coverage requirements for all routes and error scenarios

Applies to

File patterns this rule matches.

**/*.py
src/**/*.py
tests/**/*.py
Rule definition (reference)

Source of truth, from the repository.

Python Best Practices

Project Structure

  • Use src-layout with src/your_package_name/
  • Place tests in tests/ directory parallel to src/
  • Keep configuration in config/ or as environment variables
  • Store requirements in requirements.txt or pyproject.toml
  • Place static files in static/ directory
  • Use templates/ for Jinja2 templates

Code Style

  • Follow Black code formatting
  • Use isort for import sorting
  • Follow PEP 8 naming conventions:
    • snake_case for functions and variables
    • PascalCase for classes
    • UPPER_CASE for constants
  • Maximum line length of 88 characters (Black default)
  • Use absolute imports over relative imports

Type Hints

  • Use type hints for all function parameters and returns
  • Import types from typing module
  • Use Optional[Type] instead of Type | None
  • Use TypeVar for generic types
  • Define custom types in types.py
  • Use Protocol for duck typing

Flask Structure

  • Use Flask factory pattern
  • Organize routes using Blueprints
  • Use Flask-SQLAlchemy for database
  • Implement proper error handlers
  • Use Flask-Login for authentication
  • Structure views with proper separation of concerns

Database

  • Use SQLAlchemy ORM
  • Implement database migrations with Alembic
  • Use proper connection pooling
  • Define models in separate modules
  • Implement proper relationships
  • Use proper indexing strategies

Authentication

  • Use Flask-Login for session management
  • Implement Google OAuth using Flask-OAuth
  • Hash passwords with bcrypt
  • Use proper session security
  • Implement CSRF protection
  • Use proper role-based access control

API Design

  • Use Flask-RESTful for REST APIs
  • Implement proper request validation
  • Use proper HTTP status codes
  • Handle errors consistently
  • Use proper response formats
  • Implement proper rate limiting

Testing

  • Use pytest for testing
  • Write tests for all routes
  • Use pytest-cov for coverage
  • Implement proper fixtures
  • Use proper mocking with pytest-mock
  • Test all error scenarios

Security

  • Use HTTPS in production
  • Implement proper CORS
  • Sanitize all user inputs
  • Use proper session configuration
  • Implement proper logging
  • Follow OWASP guidelines

Performance

  • Use proper caching with Flask-Caching
  • Implement database query optimization
  • Use proper connection pooling
  • Implement proper pagination
  • Use background tasks for heavy operations
  • Monitor application performance

Error Handling

  • Create custom exception classes
  • Use proper try-except blocks
  • Implement proper logging
  • Return proper error responses
  • Handle edge cases properly
  • Use proper error messages

Documentation

  • Use Google-style docstrings
  • Document all public APIs
  • Keep README.md updated
  • Use proper inline comments
  • Generate API documentation
  • Document environment setup

Development Workflow

  • Use virtual environments (venv)
  • Implement pre-commit hooks
  • Use proper Git workflow
  • Follow semantic versioning
  • Use proper CI/CD practices
  • Implement proper logging

Dependencies

  • Pin dependency versions
  • Use requirements.txt for production
  • Separate dev dependencies
  • Use proper package versions
  • Regularly update dependencies
  • Check for security vulnerabilities

Related rules

Senior full-stack TypeScript, React, Node.js guidance with clean architecture, testing, and WHY-oriented reasoning.

**/*
41k
via PatrickJS/awesome-cursorrules

Quantitative factor research skills for designing, evaluating, and mining alpha factors in equities markets.

**/*
41k
via PatrickJS/awesome-cursorrules

Android development with Jetpack Compose, clean architecture, and Material Design 3.

**/*
41k
via PatrickJS/awesome-cursorrules

Angular development with Novo Elements UI library using standalone components.

**/*
41k
via PatrickJS/awesome-cursorrules

Expert Angular 18 + TypeScript development with Jest, emphasizing clean code and performance.

**/*
41k
via PatrickJS/awesome-cursorrules

Manage Kubernetes clusters, add-ons, stacks, and credentials via the Ankra CLI platform.

**/*.sh +5
41k
via PatrickJS/awesome-cursorrules