Dependency checker for Web Asset Generator.
Verifies that all required and optional dependencies are installed.
def check_dependencies():
"""Check all dependencies and report status."""
print("Web Asset Generator - Dependency Check")
py_version = sys.version_info
print(f" ✓ Python {py_version.major}.{py_version.minor}.{py_version.micro} (OK)")
results['required'].append(('Python', True))
print(f" ❌ Python {py_version.major}.{py_version.minor}.{py_version.micro} (Requires 3.6+)")
results['required'].append(('Python', False))
results['errors'].append("Python version too old")
# Check required dependencies
print("Required Dependencies:")
from PIL import Image, ImageDraw, ImageFont
print(f" ✓ Pillow {PIL.__version__}")
results['required'].append(('Pillow', True))
print(f" ❌ Pillow (NOT INSTALLED)")
print(f" Install with: pip install Pillow")
results['required'].append(('Pillow', False))
results['errors'].append("Pillow not installed")
# Check optional dependencies
print("Optional Dependencies (for emoji support):")
from pilmoji import Pilmoji
print(f" ✓ Pilmoji (OK)")
results['optional'].append(('Pilmoji', True))
print(f" ⚠ Pilmoji (NOT INSTALLED)")
print(f" Install with: pip install pilmoji")
results['optional'].append(('Pilmoji', False))
print(f" ⚠ Pilmoji (INSTALLED but incompatible)")
print(f" Reinstall with: pip install pilmoji")
results['optional'].append(('Pilmoji', False))
emoji_version = emoji.__version__ if hasattr(emoji, '__version__') else 'unknown'
# Check version compatibility
if emoji_version != 'unknown':
major_version = int(emoji_version.split('.')[0])
print(f" ✓ emoji {emoji_version} (compatible with pilmoji)")
results['optional'].append(('emoji', True))
print(f" ⚠ emoji {emoji_version} (incompatible with pilmoji)")
print(f" Install compatible version: pip install 'emoji<2.0.0'")
results['optional'].append(('emoji', False))
print(f" ✓ emoji (version unknown)")
results['optional'].append(('emoji', True))
print(f" ⚠ emoji (NOT INSTALLED)")
print(f" Install with: pip install 'emoji<2.0.0'")
results['optional'].append(('emoji', False))
# Check font availability
print("Font Availability:")
font_path = "/usr/share/fonts/truetype/dejavu/DejaVuSans-Bold.ttf"
if os.path.exists(font_path):
print(f" ✓ DejaVu Sans Bold found")
print(f" ⚠ DejaVu Sans Bold not found (will use default font)")
print(f" On macOS/Windows, this is expected and OK")
required_ok = all(status for _, status in results['required'])
optional_ok = all(status for _, status in results['optional'])
print("✓ All required dependencies are installed")
print(" You can use basic features (image-based generation)")
print("❌ Some required dependencies are missing")
print(" Please install missing dependencies to use the tool")
print("✓ All optional dependencies are installed")
print(" You can use all features including emoji generation")
print("⚠ Some optional dependencies are missing")
print(" Emoji features will not be available")
print(" Install optional dependencies to enable emoji support")
for error in results['errors']:
return 0 if required_ok else 1
if __name__ == '__main__':
exit_code = check_dependencies()