import hashlib,json,sys
import pytest

def canonical(value):
 return json.dumps(value,sort_keys=True,separators=(",",":"),allow_nan=False).encode()
class Plugin:
 def __init__(self,path): self.path=path; self.ids=[]; self.outcomes={}
 def pytest_collection_finish(self,session): self.ids=[item.nodeid for item in session.items]
 def pytest_runtest_logreport(self,report):
  if report.when=="call": self.outcomes[report.nodeid]=report.outcome
 def pytest_sessionfinish(self,session,exitstatus):
  passed=sorted(key for key,value in self.outcomes.items() if value=="passed")
  doc={"schema":"task26-profile-pytest-manifest-v1","pytest_version":pytest.__version__,"interpreter_version":list(sys.version_info[:3]),"interpreter_executable_sha256":hashlib.sha256(open(sys.executable,"rb").read()).hexdigest(),"collected_count":len(self.ids),"executed_count":len(self.outcomes),"passed_count":len(passed),"test_ids":self.ids,"passed_test_ids":passed,"exit_code":int(exitstatus)}
  doc["manifest_sha256"]=hashlib.sha256(canonical(doc)).hexdigest()
  open(self.path,"wb").write(canonical(doc)+b"\n")
if len(sys.argv)!=2 or not sys.flags.isolated: raise SystemExit(4)
plugin=Plugin(sys.argv[1])
raise SystemExit(pytest.main(["-q","-p","no:cacheprovider","."],plugins=[plugin]))
