File size: 5,545 Bytes
d6d843f |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 |
# Dependency Fix Summary
## Issues Fixed
### 1. β
AttributeError: module 'utils' has no attribute 'setup_logging'
**Problem:** The application was crashing on startup with:
```
AttributeError: module 'utils' has no attribute 'setup_logging'
```
**Root Cause:**
- Python was importing the `utils/` package directory instead of finding the `setup_logging()` function
- The `utils/__init__.py` file was empty and didn't expose the required functions
**Solution:**
Updated `/workspace/utils/__init__.py` to:
- Import `setup_logger` from `utils/logger.py`
- Create a `setup_logging()` wrapper function for backward compatibility
- Dynamically import all utility functions from the standalone `utils.py` file
- Properly export all functions via `__all__`
### 2. β
Plotly Dependency Management
**Problem:**
- No graceful handling when plotly is not installed
- Charts would crash the application
**Solution:**
Updated `/workspace/app.py` to:
- Check if plotly is available on import
- Set `PLOTLY_AVAILABLE` flag
- Create dummy plotly objects if not available
- Modified `generate_chart()` to show helpful error message when plotly is missing
- Log dependency status on startup
### 3. β
Transformers Dependency Management
**Problem:**
- Inconsistent handling of missing transformers library
- Warning message but no clear status
**Solution:**
- Enhanced logging to show transformers availability status
- Already had proper handling in `ai_models.py` with `TRANSFORMERS_AVAILABLE` flag
- Added status logging in `app.py` to show all dependency statuses at startup
### 4. β
Requirements Files Updated
**Updated `/workspace/requirements.txt`:**
- Added pandas
- Added comments about optional dependencies
- Clear separation between core and optional packages
**Updated `/workspace/requirements_gradio.txt`:**
- Marked plotly as REQUIRED for chart features
- Added transformers, torch, and sentencepiece for AI features
- Clear comments explaining which dependencies are optional
## Dependency Status
### Required Dependencies (Core API)
- β fastapi
- β uvicorn
- β pydantic
- β sqlalchemy
- β httpx
- β websockets
- β requests
- β aiohttp
- β pandas
### Required Dependencies (Gradio Dashboard)
- gradio (CRITICAL - app exits if not installed)
- plotly (REQUIRED for charts - graceful degradation if missing)
### Optional Dependencies (AI Features)
- transformers (AI sentiment analysis - gracefully disabled if missing)
- torch (required by transformers)
- sentencepiece (required by some models)
## Installation Instructions
### Install Core API Dependencies
```bash
pip install -r requirements.txt
```
### Install Gradio Dashboard Dependencies
```bash
pip install -r requirements_gradio.txt
```
### Install AI/ML Dependencies (Optional)
```bash
pip install transformers torch sentencepiece
```
### Quick Install (All Features)
```bash
pip install -r requirements.txt
pip install -r requirements_gradio.txt
```
## Testing
Run the dependency test script:
```bash
python3 test_dependencies.py
```
This will check:
- β utils.setup_logging() functionality
- β All utility helper functions
- β Availability of gradio, plotly, transformers
- β AI models module
- β app.py syntax validation
## Startup Behavior
### Before Fix
```
Traceback (most recent call last):
File "/app/app.py", line 27, in <module>
logger = utils.setup_logging()
AttributeError: module 'utils' has no attribute 'setup_logging'
```
### After Fix
```
{"timestamp": "2025-11-16T15:47:32.594534Z", "level": "INFO", "logger": "crypto_aggregator", ...}
{"timestamp": "...", "level": "INFO", "message": "Dependency Status:"}
{"timestamp": "...", "level": "INFO", "message": " - Gradio: β Available"}
{"timestamp": "...", "level": "INFO", "message": " - Plotly: β Available"}
{"timestamp": "...", "level": "INFO", "message": " - Transformers: β Missing (AI features disabled)"}
```
### Graceful Degradation
- **No Gradio:** Application exits with clear error message
- **No Plotly:** Charts show helpful message, dashboard continues to work
- **No Transformers:** AI features disabled, rest of app works normally
## Files Modified
1. `/workspace/utils/__init__.py` - Added setup_logging() and utility function exports
2. `/workspace/app.py` - Added dependency checking and graceful handling
3. `/workspace/requirements.txt` - Added pandas and documentation
4. `/workspace/requirements_gradio.txt` - Added transformers and AI dependencies
## Files Created
1. `/workspace/test_dependencies.py` - Comprehensive dependency testing script
2. `/workspace/DEPENDENCY_FIX_SUMMARY.md` - This documentation
## Verification
All fixes have been tested and verified:
- β `utils.setup_logging()` works correctly
- β All utility functions accessible (format_number, calculate_rsi, etc.)
- β App handles missing dependencies gracefully
- β Requirements files updated with all dependencies
- β Clear installation instructions provided
- β Test script created for future validation
## Next Steps
To run the application with all features:
1. Install dependencies:
```bash
pip install -r requirements_gradio.txt
```
2. Run the application:
```bash
python3 app.py
```
The application will now start successfully and show clear status messages about which features are available based on installed dependencies.
|