Files
hyper/clp_auto_hedger/python-rules.md

94 lines
2.7 KiB
Markdown

# Python Coding Standards (Visual Studio Style)
## Naming Conventions
- Variables: `snake_case` (descriptive names)
- Functions: `snake_case` with descriptive verbs
- Classes: `PascalCase`
- Constants: `UPPER_CASE_WITH_UNDERSCORES`
- Private members: `_leading_underscore`
- Dunder methods: `__double_underscore__`
## Code Style
- Use 4 spaces for indentation (never tabs)
- Line length: 100 characters (not 79)
- Blank lines between logical sections
- One statement per line where possible
- Use descriptive variable names, avoid abbreviations
## Import Organization
1. Standard library imports first
2. Third-party imports second
3. Local/third-party imports last
4. Group related imports with blank lines between sections
Example:
```python
import os
import sys
import time
import json
import threading
import re
import math
from dotenv import load_dotenv
from web3 import Web3
from eth_account import Account
```
## Documentation
- Use docstrings for all functions and classes
- Follow Google-style or triple-quoted format
- Include parameter descriptions and return types
- Add inline comments for complex logic
## Type Hints
- Use type hints for function parameters and returns
- Import typing module when needed
- Use Union for optional types
- Use Optional for parameters that can be None
## Error Handling
- Use specific exceptions when possible
- Include informative error messages
- Use logging for debugging information
- Validate inputs before processing
## Configuration and Constants
- Group configuration constants at module level
- Use descriptive section comments with `---`
- Document environment variable usage
- Provide sensible defaults
## Function Organization
- Keep functions focused on single responsibility
- Use helper functions for complex logic
- Group related functions together
- Use classes for related state and behavior
## File Structure (Based on your code)
```
module_name.py
├── Imports (standard, third-party, local)
├── Configuration constants
├── Helper functions
├── Main classes
├── Utility functions
└── Main execution block
```
## Best Practices
- Use f-strings for string formatting
- Prefer list comprehensions when readable
- Use context managers for resources
- Avoid global variables when possible
- Use `if __name__ == "__main__":` for executable modules
- Follow PEP 8 with 100-char line length
- Use meaningful variable names that describe purpose
## Web3/Blockchain Specific
- Handle connection errors gracefully
- Use proper address validation and cleaning
- Implement proper decimal handling for token amounts
- Use proper error handling for blockchain calls
- Include timeout considerations for network requests