konal-nguyen/python-dev-assistant icon
public
Published on 3/31/2025
Python Development Assistant

A Python Development Assistant

Rules
Models
Context
200kinput·8.192koutput
128kinput·16.384koutput
1048kinput·8.192koutput

MCP Servers

Learn more

No MCP Servers configured

# Google Python Style Guide

- **Python Language Rules**
  - Use pylint as a code linter
  - Use imports for packages and modules only, not individual classes or functions
  - Import each module using full pathname location
  - Use exceptions for exceptional conditions, not control flow
  - Avoid mutable global state
  - Nested functions/classes are fine when closing over local values
  - Use list/dict/set comprehensions for simple cases only
  - Use default iterators and operators for types that support them
  - Use generators as needed
  - Use lambda functions only for one-liners
  - Conditional expressions (x if y else z) OK for simple cases
  - Default argument values should never be mutable objects
  - Properties should be used when simple computations are needed
  - Use implicit False tests (if foo: instead of if foo != []:)
  - Use decorator syntax judiciously
  - Avoid fancy language features (metaclasses, bytecode access, etc.)
  - Use from __future__ imports for Python compatibility
  - Use type annotations where helpful

- **Python Style Rules**
  - No semicolons
  - Maximum line length of 80 characters
  - Use parentheses sparingly
  - Indent code blocks with 4 spaces (never tabs)
  - Use trailing commas in sequences only when closing bracket is on another line
  - Use blank lines sparingly (two between top-level definitions)
  - No whitespace inside parentheses/brackets/braces
  - Use whitespace after commas/semicolons/colons
  - No trailing whitespace
  - Surround binary operators with single space on each side
  - Follow standard typographic rules for spaces around punctuation
  - Shebang line: #!/usr/bin/env python3 (if needed)

- **Docstrings**
  - Use """triple double quotes""" for docstrings
  - One-line docstring should be on one line
  - Multi-line docstrings: summary line, blank line, details
  - Modules should have docstrings describing contents and usage
  - Functions/methods should have docstrings with clear Args:/Returns:/Raises: sections
  - Class docstrings should include Attributes: section for public attributes

- **String Formatting**
  - Use f-strings, %-formatting, or str.format()
  - Avoid + operator for string concatenation in loops

- **Files and I/O**
  - Always use with statement for file and similar resource handling

- **TODO Comments**
  - Format: # TODO: link_to_issue - explanation
  - Must include context (ideally a bug reference) and explanation

- **Imports**
  - Group imports: __future__, standard library, third-party, application imports
  - Sort imports alphabetically within each group
  - Use absolute imports

- **Naming**
  - `module_name`, `package_name`
  - `ClassName`, `ExceptionName`
  - `function_name`, `method_name`, `instance_var_name`, `function_parameter_name`, `local_var_name`
  - `GLOBAL_CONSTANT_NAME`
  - Protected members start with single underscore `_`
  - Private instance variables use double underscore `__` (rarely needed)

- **Main Function**
  - Use `if __name__ == '__main__'` guard with main() function
  - Prefer small, focused functions (not strict limit, but review if over 40 lines)

- **Type Annotations**
  - Follow PEP 484 typing rules
  - Use type annotations for function signatures and variables
  - Add type annotations to APIs and complex code
  - Follow specific line breaking conventions for type annotations
  - Use forward declarations when necessary
  - Avoid conditional imports except when absolutely necessary
  - Use proper type aliases for complex types
  - Prefer abstract container types over concrete ones

- **Comments**
  - Comments should be complete sentences with proper punctuation
  - Use block comments for complex logic explanations
  - Inline comments should be separated by at least two spaces from code

Prompts

Learn more

No Prompts configured

Context

Learn more
Reference all of the changes you've made to your current branch
Reference the most relevant snippets from your codebase
Reference the markdown converted contents of a given URL
Uses the same retrieval mechanism as @Codebase, but only on a single folder
Reference the last command you ran in your IDE's terminal and its output
Reference specific functions or classes from throughout your project
Reference any file in your current workspace