Files
subliminal-learning/CLAUDE.md
2025-07-21 18:46:51 -07:00

75 lines
2.1 KiB
Markdown

# Claude Development Guidelines
This document contains coding style and development guidelines for the subliminal learning project.
## Logging
**Use loguru instead of print statements for all logging.**
### Import and Basic Usage
```python
from loguru import logger
# Instead of print, use appropriate log levels:
logger.info("Starting process...") # General information
logger.success("Process completed!") # Success messages
logger.warning("This might be an issue") # Warnings
logger.error("Something went wrong") # Errors
logger.exception("Full error details:") # Errors with full traceback
logger.debug("Debug information") # Debug details
```
### Log Levels
- `logger.info()` - General information about program flow
- `logger.success()` - Successful completion of operations
- `logger.warning()` - Potential issues that don't stop execution
- `logger.error()` - Errors that may cause failures
- `logger.exception()` - Errors with full traceback (use in except blocks)
- `logger.debug()` - Detailed information for debugging
### Examples
```python
# ❌ Don't use print
print(f"Processing {len(items)} items...")
print("Done!")
# ✅ Use loguru
logger.info(f"Processing {len(items)} items...")
logger.success("Processing completed successfully!")
# ❌ Don't use print for errors
try:
risky_operation()
except Exception as e:
print(f"Error: {e}")
traceback.print_exc()
# ✅ Use loguru for errors
try:
risky_operation()
except Exception as e:
logger.error(f"Error in risky_operation: {e}")
logger.exception("Full traceback:")
```
## Code Style
- Follow PEP 8 Python style guidelines
- Use type hints for function parameters and return values
- Use dataclasses with `kw_only=True` for configuration objects
- Keep functions focused on single responsibilities
## Testing
- Write tests for all new functionality
- Use pytest for test framework
- Include both unit tests and integration tests where appropriate
## Documentation
- Use clear, concise docstrings for all functions and classes
- Include type information in function signatures
- Document configuration options and their purposes