#!/usr/bin/env python from __future__ import annotations import argparse import json from pathlib import Path from assaylens.data.access import check_required_access, hf_token_available from assaylens.data.hf_upload import auto_upload_folder from assaylens.reports.markdown import write_markdown def main() -> None: parser = argparse.ArgumentParser() parser.add_argument("--out-dir", default="reports") parser.add_argument("--no-write", action="store_true") args = parser.parse_args() reports = check_required_access(sample_rows=1) payload = { "hf_token_available": hf_token_available(), "datasets": reports, } print(json.dumps(payload, indent=2, default=str)) if args.no_write: return lines = [ "| Dataset | Access | Gated | Missing EvE Columns |", "| --- | --- | --- | --- |", ] for report in reports: missing = ", ".join(report.get("missing_required_columns", [])) or "none" status = "ok" if report.get("stream_ok") else f"failed: {report.get('error_type')}" lines.append( f"| `{report['repo_id']}` | {status} | {report.get('gated')} | {missing} |" ) out_dir = Path(args.out_dir) write_markdown( out_dir / "data_access.md", "AssayLens Data Access", [ ( "Access Status", "\n".join(lines), ), ( "Licenses and Roles", "\n".join( [ "- `eve-bio/drug-target-activity`: CC-BY-NC-SA-4.0, gated core pharmacology labels.", "- `hugging-science/goa_reasoning`: Hugging Science support target annotations.", "- `hugging-science/dataset-quest-index`: Apache-2.0 source inventory layer.", ] ), ), ], ) uploaded = auto_upload_folder(out_dir, "reports") if uploaded: print(f"uploaded access report to {uploaded}/reports") if __name__ == "__main__": main()