#!/usr/bin/env python3
"""Read only pinned metadata and index. Never downloads checkpoint weights."""
import json
from urllib.request import Request, urlopen
REPO = 'stepfun-ai/Step-5-Preview-BF16'
REV = '7734b7ffac118d70d8398bfa3eb0fab007eb45b1'


def get(url):
    req = Request(url, headers={'User-Agent': 'Ofox-Step-metadata-check/1.0'})
    with urlopen(req, timeout=60) as response:
        data = response.read(10_000_001)
    if len(data) > 10_000_000:
        raise ValueError('Unexpectedly large metadata response; stopped')
    return json.loads(data)


def inspect(meta, index):
    if meta.get('sha') != REV:
        raise ValueError('Revision mismatch; refusing to substitute another commit')
    files = {item['rfilename'] for item in meta['siblings']}
    referenced = set(index['weight_map'].values())
    return {'revision': REV,
            'safetensors_files': sum(f.endswith('.safetensors') for f in files),
            'indexed_files': len(referenced),
            'indexed_tensor_bytes': index['metadata']['total_size'],
            'missing_files': sorted(referenced - files)}


if __name__ == '__main__':
    meta = get(f'https://huggingface.co/api/models/{REPO}/revision/{REV}')
    index = get(f'https://huggingface.co/{REPO}/resolve/{REV}/model.safetensors.index.json')
    result = inspect(meta, index)
    print(json.dumps(result, indent=2))
    if result['missing_files']:
        raise SystemExit('Index references files absent from the listing')
