alozowski's picture
alozowski HF staff
submission-fix (#1065)
23c96f8 verified
raw
history blame
1.87 kB
from typing import Optional
from huggingface_hub import HfApi
from app.config import HF_TOKEN, API
from app.core.cache import cache_config
from app.core.formatting import LogFormatter
import logging
logger = logging.getLogger(__name__)
class HuggingFaceService:
def __init__(self):
self.api = API
self.token = HF_TOKEN
self.cache_dir = cache_config.models_cache
async def check_authentication(self) -> bool:
"""Check if the HF token is valid"""
if not self.token:
return False
try:
logger.info(LogFormatter.info("Checking HF token validity..."))
self.api.get_token_permission()
logger.info(LogFormatter.success("HF token is valid"))
return True
except Exception as e:
logger.error(LogFormatter.error("HF token validation failed", e))
return False
async def get_user_info(self) -> Optional[dict]:
"""Get information about the authenticated user"""
try:
logger.info(LogFormatter.info("Fetching user information..."))
info = self.api.get_token_permission()
logger.info(LogFormatter.success(f"User info retrieved for: {info.get('user', 'Unknown')}"))
return info
except Exception as e:
logger.error(LogFormatter.error("Failed to get user info", e))
return None
def _log_repo_operation(self, operation: str, repo: str, details: str = None):
"""Helper to log repository operations"""
logger.info(LogFormatter.section(f"HF REPOSITORY OPERATION - {operation.upper()}"))
stats = {
"Operation": operation,
"Repository": repo,
}
if details:
stats["Details"] = details
for line in LogFormatter.tree(stats):
logger.info(line)