import json, pathlib, subprocess
root=pathlib.Path('/evidence')
freeze=subprocess.check_output(['python3','-m','pip','freeze'],text=True)
(root/'base-packages.txt').write_text(freeze)
with (root/'deps.log').open('w') as log:
 p=subprocess.run(['python3','-m','pip','install','--dry-run','--no-cache-dir','--only-binary=:all:',
  '--index-url','https://pypi.org/simple','-c','/evidence/base-packages.txt',
  '-r','/repo/docker/requirements-tracking.txt','--report','/evidence/deps-report.json'],
  stdout=log,stderr=log,timeout=160)
assert p.returncode==0,'DEPENDENCY_RESOLUTION_FAILED'
d=json.loads((root/'deps-report.json').read_text())
for item in d['install']:
 assert item['metadata']['name'].lower() not in {'numpy','torch','tritonclient','grpcio','opencv-python-headless'}
print(json.dumps({'packages':[(x['metadata']['name'],x['metadata']['version']) for x in d['install']],
 'protected_runtime_replacement':False}))
