Effective Type Hinting Practices in Python

Discover how to implement type hints in your Python code to improve clarity and reduce bugs, making it easier for others to understand and maintain your code.

0 likes
9 views

Rule Content

---
name: Effective Type Hinting Practices in Python
description: Discover how to implement type hints in your Python code to improve clarity and reduce bugs, making it easier for others to understand and maintain your code.
category: Python Cursor Rules
version: "1.0"
globs:
  - "**/*.py"
triggers:
  - file_open
  - file_save
rules:
  - id: use_type_hints
    description: Ensure all function and method definitions include type hints for parameters and return values.
    pattern: |
      def $FUNC_NAME($PARAMS):
    replacement: |
      def $FUNC_NAME($PARAMS: $PARAM_TYPE) -> $RETURN_TYPE:
    message: "Consider adding type hints to function parameters and return values to enhance code clarity and maintainability."
    severity: warning

  - id: prefer_builtin_generics
    description: Use built-in generics for type annotations instead of importing from the typing module.
    pattern: |
      from typing import List, Dict, Tuple
    replacement: |
      # Remove unnecessary imports; use built-in generics like list, dict, tuple directly.
    message: "Use built-in generics (list, dict, tuple) for type annotations to simplify code and adhere to modern Python practices."
    severity: warning

  - id: avoid_any_type
    description: Avoid using 'Any' as a type hint unless absolutely necessary.
    pattern: |
      : Any
    replacement: |
      : $SPECIFIC_TYPE
    message: "Replace 'Any' with a more specific type to improve type checking and code readability."
    severity: warning

  - id: use_optional_for_none
    description: Use 'Optional' for parameters or return types that can be 'None'.
    pattern: |
      : None
    replacement: |
      : Optional[$TYPE]
    message: "Use 'Optional' from the typing module to indicate that a variable can be of a specific type or 'None'."
    severity: warning

  - id: use_type_aliases
    description: Create type aliases for complex or repetitive type annotations to improve readability.
    pattern: |
      # Complex type annotations repeated multiple times
    replacement: |
      # Define a type alias at the beginning of your module
      $TYPE_ALIAS = $COMPLEX_TYPE
    message: "Consider defining a type alias for complex or repetitive type annotations to enhance code readability and maintainability."
    severity: suggestion