From a4d71a38ca4ab6d96dec282e20dbc53553f4c76f Mon Sep 17 00:00:00 2001 From: Lukas Geiger Date: Sun, 11 Oct 2026 20:38:45 +0200 Subject: [PATCH 1/2] style: apply ruff format to the whole tree 26 files reformatted with ruff 0.17.0; no code change. Verified: the AST of every changed Python file is identical before and after (ast.dump compare), ruff check clean, pytest 145 passed / 1 skipped. Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_01LYHP4Js5ggpzQ78JXWRe5E --- README.md | 9 +- README_de.md | 9 +- src/githubbot_core/actions.py | 17 ++- src/githubbot_core/cli.py | 171 +++++++++++++++++++------- src/githubbot_core/comments.py | 3 + src/githubbot_core/credentials.py | 6 +- src/githubbot_core/duplicates.py | 72 ++++++++--- src/githubbot_core/health.py | 47 +++---- src/githubbot_core/plugins.py | 10 +- src/githubbot_core/pr_review.py | 2 + src/githubbot_core/report_sections.py | 11 +- src/githubbot_core/review_gate.py | 27 ++-- src/githubbot_core/stars.py | 4 +- src/githubbot_core/traffic.py | 47 ++++--- src/githubbot_core/triage.py | 38 ++++-- tests/test_auto_comments.py | 20 +-- tests/test_classifier.py | 7 +- tests/test_consumer_install.py | 6 +- tests/test_contract.py | 97 +++++++++++---- tests/test_duplicates.py | 10 +- tests/test_metadata.py | 15 ++- tests/test_report_sections.py | 12 +- tests/test_review_gate.py | 25 ++-- tests/test_stars.py | 22 +--- tests/test_system_agent.py | 11 +- tests/test_traffic_report.py | 38 +++--- 26 files changed, 449 insertions(+), 287 deletions(-) diff --git a/README.md b/README.md index bb72d60..2a4e207 100644 --- a/README.md +++ b/README.md @@ -128,6 +128,7 @@ my-extension = "my_extension:create" from githubbot_core.actions import Action from githubbot_core.plugins import SPI_VERSION + class MyExtension: name = "my-extension" spi_version = SPI_VERSION @@ -135,14 +136,14 @@ class MyExtension: def describe(self): return {"version": "1.0.0", "capabilities": ["plan"]} - def plan(self, ctx): # ctx.config, ctx.transport (read-only), ctx.args + def plan(self, ctx): # ctx.config, ctx.transport (read-only), ctx.args data, error = ctx.transport.get("repos/owner/repo") - return [Action("api.request", {"method": "PUT", "endpoint": "user/starred/owner/repo"}, - reason="example")] + return [Action("api.request", {"method": "PUT", "endpoint": "user/starred/owner/repo"}, reason="example")] - def pr_policy_checks(self, pr, files, diff): # optional + def pr_policy_checks(self, pr, files, diff): # optional return [("no_large_binaries", True, "OK")] + def create(): return MyExtension() ``` diff --git a/README_de.md b/README_de.md index 8af0115..20c14e4 100644 --- a/README_de.md +++ b/README_de.md @@ -130,6 +130,7 @@ my-extension = "my_extension:create" from githubbot_core.actions import Action from githubbot_core.plugins import SPI_VERSION + class MyExtension: name = "my-extension" spi_version = SPI_VERSION @@ -137,14 +138,14 @@ class MyExtension: def describe(self): return {"version": "1.0.0", "capabilities": ["plan"]} - def plan(self, ctx): # ctx.config, ctx.transport (nur lesend), ctx.args + def plan(self, ctx): # ctx.config, ctx.transport (nur lesend), ctx.args data, error = ctx.transport.get("repos/owner/repo") - return [Action("api.request", {"method": "PUT", "endpoint": "user/starred/owner/repo"}, - reason="example")] + return [Action("api.request", {"method": "PUT", "endpoint": "user/starred/owner/repo"}, reason="example")] - def pr_policy_checks(self, pr, files, diff): # optional + def pr_policy_checks(self, pr, files, diff): # optional return [("no_large_binaries", True, "OK")] + def create(): return MyExtension() ``` diff --git a/src/githubbot_core/actions.py b/src/githubbot_core/actions.py index c97027f..90eb644 100644 --- a/src/githubbot_core/actions.py +++ b/src/githubbot_core/actions.py @@ -116,14 +116,23 @@ def apply( """Execute permitted actions. Every action gets exactly one receipt.""" digest = plan_digest(actions) if expected_plan_sha256 and expected_plan_sha256 != digest: - return {"mode": "apply", "plan_sha256": digest, "receipts": [], "writes": 0, - "error": "plan changed since preview (plan_sha256 mismatch); nothing applied"} + return { + "mode": "apply", + "plan_sha256": digest, + "receipts": [], + "writes": 0, + "error": "plan changed since preview (plan_sha256 mismatch); nothing applied", + } applied_before = _load_applied(receipt_store) receipts: list[dict[str, Any]] = [] writes = 0 for action in actions: - record: dict[str, Any] = {"id": action.action_id, "kind": action.kind, "source": action.source, - "at": datetime.now(timezone.utc).isoformat(timespec="seconds")} + record: dict[str, Any] = { + "id": action.action_id, + "kind": action.kind, + "source": action.source, + "at": datetime.now(timezone.utc).isoformat(timespec="seconds"), + } reason = denial_reason(action, config) if reason: record.update(status="denied", detail=reason) diff --git a/src/githubbot_core/cli.py b/src/githubbot_core/cli.py index 699f2f0..d8ebf3b 100644 --- a/src/githubbot_core/cli.py +++ b/src/githubbot_core/cli.py @@ -41,8 +41,7 @@ def _emit(args, command: str, ok: bool, mode: str, data: Any, errors: list[str], text: str = "") -> None: if args.json: - envelope = {"schema": RESULT_SCHEMA, "command": command, "ok": ok, "mode": mode, - "data": data, "errors": errors} + envelope = {"schema": RESULT_SCHEMA, "command": command, "ok": ok, "mode": mode, "data": data, "errors": errors} print(json.dumps(envelope, ensure_ascii=False, indent=2, default=str)) return if text: @@ -65,9 +64,13 @@ def _read_issues(path: Path) -> list[GitHubIssue]: def _plan_output(args, command: str, plan: list, config: dict, transport, extra: Optional[dict] = None) -> int: """Shared preview/apply step for every command that produces actions.""" if args.apply: - result = actions.apply(plan, transport, config, - receipt_store=Path(args.receipts) if args.receipts else None, - expected_plan_sha256=args.expect_plan) + result = actions.apply( + plan, + transport, + config, + receipt_store=Path(args.receipts) if args.receipts else None, + expected_plan_sha256=args.expect_plan, + ) failed = [r for r in result["receipts"] if r["status"] == "failed"] errors = ([result["error"]] if result.get("error") else []) + [f"{r['id'][:12]}: {r['detail']}" for r in failed] data = {**(extra or {}), **result} @@ -76,17 +79,25 @@ def _plan_output(args, command: str, plan: list, config: dict, transport, extra: return EXIT_RUNTIME if errors else EXIT_OK result = actions.preview(plan, config) data = {**(extra or {}), **result} - lines = [f"preview: {'ok ' if a['permitted'] else 'DENIED'} {a['kind']:<18} {a['reason']}" - + (f" ({a['denied_reason']})" if a["denied_reason"] else "") for a in result["actions"]] + lines = [ + f"preview: {'ok ' if a['permitted'] else 'DENIED'} {a['kind']:<18} {a['reason']}" + + (f" ({a['denied_reason']})" if a["denied_reason"] else "") + for a in result["actions"] + ] lines.append(f"plan_sha256 {result['plan_sha256']} -- nothing written; rerun with --apply to execute") _emit(args, command, True, "preview", data, [], "\n".join(lines)) return EXIT_OK def cmd_info(args, config, transport) -> int: - data = {"package": "githubbot-core", "version": __version__, "result_schema": RESULT_SCHEMA, - "spi_version": plugins.SPI_VERSION, "plugin_group": plugins.ENTRY_POINT_GROUP, - "plugins": plugins.list_plugins()} + data = { + "package": "githubbot-core", + "version": __version__, + "result_schema": RESULT_SCHEMA, + "spi_version": plugins.SPI_VERSION, + "plugin_group": plugins.ENTRY_POINT_GROUP, + "plugins": plugins.list_plugins(), + } text = f"githubbot-core {__version__} (SPI v{plugins.SPI_VERSION}, {len(data['plugins'])} plugin(s))" _emit(args, "info", True, "read", data, [], text) return EXIT_OK @@ -98,19 +109,27 @@ def cmd_doctor(args, config, transport) -> int: credential = {"available": True, "provider": provider} except CredentialUnavailable as exc: credential = {"available": False, "detail": str(exc)} - data = {"gh_cli": shutil.which("gh") is not None, "credential": credential, - "permissions": config.get("permissions", {}), "plugins": plugins.list_plugins()} - text = (f"gh CLI: {'found' if data['gh_cli'] else 'missing'}\n" - f"credential: {credential.get('provider') or 'not available'}\n" - f"enabled actions: {', '.join(data['permissions'].get('enabled', [])) or 'none'}") + data = { + "gh_cli": shutil.which("gh") is not None, + "credential": credential, + "permissions": config.get("permissions", {}), + "plugins": plugins.list_plugins(), + } + text = ( + f"gh CLI: {'found' if data['gh_cli'] else 'missing'}\n" + f"credential: {credential.get('provider') or 'not available'}\n" + f"enabled actions: {', '.join(data['permissions'].get('enabled', [])) or 'none'}" + ) _emit(args, "doctor", True, "read", data, [], text) return EXIT_OK def cmd_plugins(args, config, transport) -> int: listing = plugins.list_plugins() - text = "\n".join(f"{p['name']}: {'available' if p['available'] else p['error']}" for p in listing) \ + text = ( + "\n".join(f"{p['name']}: {'available' if p['available'] else p['error']}" for p in listing) or "no plugins installed" + ) _emit(args, "plugins", True, "read", listing, [], text) return EXIT_OK @@ -127,10 +146,15 @@ def template_sha256(schema: str, template_id: str, blueprint: dict) -> str: def cmd_system_agent(args, config, transport) -> int: template = json.loads(resources.files("githubbot_core").joinpath("system_agent.json").read_text(encoding="utf-8")) schema = template["_meta"]["schema"] - data = {"schema": schema, "id": template["id"], "version": __version__, - "sha256": template_sha256(schema, template["id"], template["blueprint"]), - "capability": {"package": "githubbot-core", "version": __version__, "spi_version": plugins.SPI_VERSION}, - "blueprint": template["blueprint"], "permissions": config.get("permissions", {})} + data = { + "schema": schema, + "id": template["id"], + "version": __version__, + "sha256": template_sha256(schema, template["id"], template["blueprint"]), + "capability": {"package": "githubbot-core", "version": __version__, "spi_version": plugins.SPI_VERSION}, + "blueprint": template["blueprint"], + "permissions": config.get("permissions", {}), + } text = f"system agent {data['id']} {data['version']} sha256 {data['sha256']}" _emit(args, "system-agent", True, "read", data, [], text) return EXIT_OK @@ -139,18 +163,30 @@ def cmd_system_agent(args, config, transport) -> int: def cmd_classify(args, config, transport) -> int: classifier = IssueClassifier(config) results = [classifier.classify(issue) for issue in _read_issues(Path(args.input))] - data = [{"number": r.issue.number, "labels_to_add": r.labels_to_add, "comment_type": r.comment_type, - "escalate": r.escalate, "escalate_reason": r.escalate_reason} for r in results] - text = "\n".join(f"#{d['number']}: {', '.join(d['labels_to_add']) or '-'}" - + (" [escalate]" if d["escalate"] else "") for d in data) + data = [ + { + "number": r.issue.number, + "labels_to_add": r.labels_to_add, + "comment_type": r.comment_type, + "escalate": r.escalate, + "escalate_reason": r.escalate_reason, + } + for r in results + ] + text = "\n".join( + f"#{d['number']}: {', '.join(d['labels_to_add']) or '-'}" + (" [escalate]" if d["escalate"] else "") + for d in data + ) _emit(args, "classify", True, "read", data, [], text) return EXIT_OK def cmd_duplicates(args, config, transport) -> int: candidates = DuplicateDetector(threshold=args.threshold).find_duplicates(_read_issues(Path(args.input))) - data = [{"issue": c.issue_number, "original": c.original_number, "similarity": round(c.similarity, 4)} - for c in candidates] + data = [ + {"issue": c.issue_number, "original": c.original_number, "similarity": round(c.similarity, 4)} + for c in candidates + ] _emit(args, "duplicates", True, "read", data, [], "\n".join(str(c) for c in candidates) or "no duplicates") return EXIT_OK @@ -163,8 +199,11 @@ def cmd_triage(args, config, transport) -> int: return EXIT_RUNTIME results = triage.classify_all(issues) plan = triage.plan(results) - extra = {"repo": args.repo, "issues": len(issues), - "escalations": [r.issue.number for r in triage.get_escalations(results)]} + extra = { + "repo": args.repo, + "issues": len(issues), + "escalations": [r.issue.number for r in triage.get_escalations(results)], + } if not args.json: print(triage.generate_report(results)) return _plan_output(args, "triage", plan, config, transport, extra) @@ -177,9 +216,15 @@ def cmd_review_pr(args, config, transport) -> int: _emit(args, "review-pr", False, "read", None, [error]) return EXIT_RUNTIME result = reviewer.review(pr) - data = {"repo": args.repo, "pr": pr.number, "head_sha": pr.head_sha, "escalate": result.escalate, - "escalate_reason": result.escalate_reason, "summary": result.summary, - "checks": [{"name": n, "passed": p, "detail": d} for n, p, d in result.policy_check_results]} + data = { + "repo": args.repo, + "pr": pr.number, + "head_sha": pr.head_sha, + "escalate": result.escalate, + "escalate_reason": result.escalate_reason, + "summary": result.summary, + "checks": [{"name": n, "passed": p, "detail": d} for n, p, d in result.policy_check_results], + } _emit(args, "review-pr", True, "read", data, [], result.summary) return EXIT_OK @@ -194,10 +239,19 @@ def cmd_health(args, config, transport) -> int: max_dependabot_alerts_per_repo=int(health_config.get("max_dependabot_alerts_per_repo", 10)), max_failed_runs_per_repo=int(health_config.get("max_failed_runs_per_repo", 5)), ) - data = [{"repo": s.repo, "dependabot": s.dependabot_count, "failed_runs": s.failed_runs_count, - "open_issues": s.open_issues_count, "open_prs": s.open_pull_requests_count, - "code_scanning": s.code_scanning_count, "secret_scanning": s.secret_scanning_count, - "errors": s.errors} for s in summaries] + data = [ + { + "repo": s.repo, + "dependabot": s.dependabot_count, + "failed_runs": s.failed_runs_count, + "open_issues": s.open_issues_count, + "open_prs": s.open_pull_requests_count, + "code_scanning": s.code_scanning_count, + "secret_scanning": s.secret_scanning_count, + "errors": s.errors, + } + for s in summaries + ] _emit(args, "health", not errors, "read", data, errors, report) return EXIT_RUNTIME if errors else EXIT_OK @@ -213,8 +267,17 @@ def cmd_stars(args, config, transport) -> int: def cmd_traffic(args, config, transport) -> int: summaries = TrafficFetcher(transport).fetch_all(args.repo) errors = [f"{s.repo}: {s.error}" for s in summaries if s.error] - data = [{"repo": s.repo, "views": s.views_total, "views_unique": s.views_unique, - "clones": s.clones_total, "clones_unique": s.clones_unique, "error": s.error} for s in summaries] + data = [ + { + "repo": s.repo, + "views": s.views_total, + "views_unique": s.views_unique, + "clones": s.clones_total, + "clones_unique": s.clones_unique, + "error": s.error, + } + for s in summaries + ] _emit(args, "traffic", not errors, "read", data, errors, generate_traffic_report(summaries)) return EXIT_RUNTIME if errors else EXIT_OK @@ -234,11 +297,23 @@ def cmd_gate_scaffold(args, config, transport) -> int: } dest = Path(args.dest) existing = [rel for rel in files if (dest / rel).exists()] - data = {"dest": str(dest), "namespace": args.namespace, "names": names, "files": sorted(files), - "existing": existing} + data = { + "dest": str(dest), + "namespace": args.namespace, + "names": names, + "files": sorted(files), + "existing": existing, + } if not args.apply: - _emit(args, "gate-scaffold", True, "preview", data, [], - "would write:\n " + "\n ".join(sorted(files)) + "\nnothing written; rerun with --apply") + _emit( + args, + "gate-scaffold", + True, + "preview", + data, + [], + "would write:\n " + "\n ".join(sorted(files)) + "\nnothing written; rerun with --apply", + ) return EXIT_OK if existing: _emit(args, "gate-scaffold", False, "apply", data, [f"refusing to overwrite {', '.join(existing)}"]) @@ -263,7 +338,8 @@ def build_parser() -> argparse.ArgumentParser: sub.add_parser("doctor", help="check gh CLI, credentials and permissions").set_defaults(func=cmd_doctor) sub.add_parser("plugins", help="list installed plugins").set_defaults(func=cmd_plugins) sub.add_parser("system-agent", help="versioned system agent template of this package").set_defaults( - func=cmd_system_agent) + func=cmd_system_agent + ) p = sub.add_parser("classify", help="classify issues from a JSON file (offline)") p.add_argument("--input", required=True) @@ -297,8 +373,13 @@ def add_apply_flags(p): p = sub.add_parser("run", help="preview or apply the action plan of a plugin") p.add_argument("plugin") - p.add_argument("--plugin-arg", dest="plugin_args", action="append", default=[], - help="argument passed to the plugin, repeatable") + p.add_argument( + "--plugin-arg", + dest="plugin_args", + action="append", + default=[], + help="argument passed to the plugin, repeatable", + ) add_apply_flags(p) p.set_defaults(func=cmd_run) @@ -330,7 +411,7 @@ def main(argv: Optional[list[str]] = None, transport=None) -> int: if index is not None and argv[index] == "review-gate": from . import review_gate - return review_gate.main(argv[index + 1:]) + return review_gate.main(argv[index + 1 :]) parser = build_parser() args = parser.parse_args(argv) if not hasattr(args, "json"): diff --git a/src/githubbot_core/comments.py b/src/githubbot_core/comments.py index 58978fe..cd0c7c0 100644 --- a/src/githubbot_core/comments.py +++ b/src/githubbot_core/comments.py @@ -27,9 +27,11 @@ # DATA CLASSES # ============================================================ + @dataclass class CommentTemplate: """Ein einzelnes Kommentar-Template.""" + key: str trigger: str template: str @@ -53,6 +55,7 @@ def render(self, **kwargs) -> str: # COMMENT MANAGER # ============================================================ + class AutoCommentManager: """ Verwaltet Kommentar-Templates und verhindert Doppel-Kommentare. diff --git a/src/githubbot_core/credentials.py b/src/githubbot_core/credentials.py index d3ee47a..6ab7f1d 100644 --- a/src/githubbot_core/credentials.py +++ b/src/githubbot_core/credentials.py @@ -53,7 +53,11 @@ def token(self) -> Optional[str]: try: result = run( [self.gh, "auth", "token"], - capture_output=True, text=True, encoding="utf-8", errors="replace", timeout=15, + capture_output=True, + text=True, + encoding="utf-8", + errors="replace", + timeout=15, ) except (OSError, subprocess.TimeoutExpired): return None diff --git a/src/githubbot_core/duplicates.py b/src/githubbot_core/duplicates.py index fe6eb7c..53ea80b 100644 --- a/src/githubbot_core/duplicates.py +++ b/src/githubbot_core/duplicates.py @@ -23,6 +23,7 @@ # HELPER # ============================================================ + def tokenize(text: str) -> set[str]: """ Normalisiert und tokenisiert Text fuer Aehnlichkeitsvergleich. @@ -32,12 +33,44 @@ def tokenize(text: str) -> set[str]: - Stopwoerter entfernen (einfache Liste) """ STOPWORDS = { - "the", "a", "an", "is", "it", "in", "on", "at", "to", "for", - "of", "with", "and", "or", "not", "are", "was", "has", "have", - "i", "my", "me", "ich", "mein", "das", "die", "der", "und", - "oder", "nicht", "ein", "eine", "beim", "ist", "im", "von" + "the", + "a", + "an", + "is", + "it", + "in", + "on", + "at", + "to", + "for", + "of", + "with", + "and", + "or", + "not", + "are", + "was", + "has", + "have", + "i", + "my", + "me", + "ich", + "mein", + "das", + "die", + "der", + "und", + "oder", + "nicht", + "ein", + "eine", + "beim", + "ist", + "im", + "von", } - tokens = set(re.findall(r'[a-z0-9]+', text.lower())) + tokens = set(re.findall(r"[a-z0-9]+", text.lower())) return tokens - STOPWORDS @@ -56,9 +89,11 @@ def jaccard_similarity(set_a: set, set_b: set) -> float: # DATA CLASSES # ============================================================ + @dataclass class DuplicateCandidate: """Ein moegliches Duplikat-Paar.""" + issue_number: int issue_title: str original_number: int @@ -82,6 +117,7 @@ def __str__(self) -> str: # DETECTOR # ============================================================ + class DuplicateDetector: """ Erkennt Duplikat-Issues via Jaccard-Aehnlichkeit auf Token-Level. @@ -139,11 +175,7 @@ def find_duplicates(self, issues: list) -> list[DuplicateCandidate]: fp = self.fingerprint(issue.number, issue.title, issue.body) else: # Dict-Interface - fp = self.fingerprint( - issue["number"], - issue.get("title", ""), - issue.get("body", "") - ) + fp = self.fingerprint(issue["number"], issue.get("title", ""), issue.get("body", "")) fingerprints.append(fp) candidates = [] @@ -192,18 +224,18 @@ def find_for_new_issue( else: if issue["number"] == new_issue_number: continue - fp_existing = self.fingerprint( - issue["number"], issue.get("title", ""), issue.get("body", "") - ) + fp_existing = self.fingerprint(issue["number"], issue.get("title", ""), issue.get("body", "")) sim = jaccard_similarity(fp_new["tokens"], fp_existing["tokens"]) if sim >= self.threshold: - candidates.append(DuplicateCandidate( - issue_number=new_issue_number, - issue_title=new_title, - original_number=fp_existing["number"], - original_title=fp_existing["title"], - similarity=sim, - )) + candidates.append( + DuplicateCandidate( + issue_number=new_issue_number, + issue_title=new_title, + original_number=fp_existing["number"], + original_title=fp_existing["title"], + similarity=sim, + ) + ) return sorted(candidates, key=lambda c: c.similarity, reverse=True) diff --git a/src/githubbot_core/health.py b/src/githubbot_core/health.py index d88c0ab..2a7e1d4 100644 --- a/src/githubbot_core/health.py +++ b/src/githubbot_core/health.py @@ -278,9 +278,7 @@ def _utcnow(self) -> datetime: return datetime.now(timezone.utc) def _fetch_dependabot_alerts(self, repo: str) -> tuple[list[DependabotAlert], Optional[str]]: - data, error = self._call_paginated( - f"repos/{repo}/dependabot/alerts?state=open&per_page=100" - ) + data, error = self._call_paginated(f"repos/{repo}/dependabot/alerts?state=open&per_page=100") if error: return [], f"{repo}: Dependabot-Warnungen konnten nicht geladen werden ({error})" @@ -296,12 +294,9 @@ def _fetch_dependabot_alerts(self, repo: str) -> tuple[list[DependabotAlert], Op number=item.get("number", 0), package_name=package.get("name", ""), ecosystem=package.get("ecosystem", ""), - severity=vulnerability.get("severity") - or advisory.get("severity") - or "unknown", + severity=vulnerability.get("severity") or advisory.get("severity") or "unknown", summary=advisory.get("summary", ""), - manifest_path=item.get("manifest_path") - or dependency.get("manifest_path", ""), + manifest_path=item.get("manifest_path") or dependency.get("manifest_path", ""), created_at=item.get("created_at", ""), html_url=item.get("html_url", ""), ) @@ -353,9 +348,7 @@ def _fetch_open_issues_and_prs( None, ) - def _fetch_code_scanning_alerts( - self, repo: str - ) -> tuple[list[CodeScanningAlert], int, Optional[str]]: + def _fetch_code_scanning_alerts(self, repo: str) -> tuple[list[CodeScanningAlert], int, Optional[str]]: data, error = self._call_paginated(f"repos/{repo}/code-scanning/alerts?state=open&per_page=100") if error: if self._is_optional_security_feature_unavailable(error): @@ -390,9 +383,7 @@ def _fetch_code_scanning_alerts( return visible_alerts, len(alerts), None - def _fetch_secret_scanning_alerts( - self, repo: str - ) -> tuple[list[SecretScanningAlert], int, Optional[str]]: + def _fetch_secret_scanning_alerts(self, repo: str) -> tuple[list[SecretScanningAlert], int, Optional[str]]: data, error = self._call_paginated(f"repos/{repo}/secret-scanning/alerts?state=open&per_page=100") if error: if self._is_optional_security_feature_unavailable(error): @@ -433,9 +424,7 @@ def _is_optional_security_feature_unavailable(error: str) -> bool: # Conclusions, die als echte Bruchstelle zaehlen (cancelled = bewusst abgebrochen, kein Defekt) FAILURE_CONCLUSIONS = ("failure", "timed_out", "startup_failure") - def _fetch_failed_runs( - self, repo: str - ) -> tuple[list[WorkflowFailure], int, int, Optional[str]]: + def _fetch_failed_runs(self, repo: str) -> tuple[list[WorkflowFailure], int, int, Optional[str]]: """Liefert nur OFFENE Fehllaeufe (Workflow+Branch aktuell rot) + Anzahl seither behobener. „since-resolved": Ein Fehllauf wird unterdrueckt, wenn fuer denselben Workflow @@ -464,9 +453,7 @@ def _key(item: dict) -> tuple: latest_completed[key] = item latest_open_ids = { - item.get("id") - for item in latest_completed.values() - if item.get("conclusion") in self.FAILURE_CONCLUSIONS + item.get("id") for item in latest_completed.values() if item.get("conclusion") in self.FAILURE_CONCLUSIONS } open_failures: list[WorkflowFailure] = [] @@ -481,7 +468,10 @@ def _key(item: dict) -> tuple: # Fehllauf im Fenster: offen nur, wenn er der juengste abgeschlossene Lauf seiner # (Workflow, Branch)-Gruppe ist; sonst seither behoben/ueberholt -> unterdruecken. if item.get("id") in latest_open_ids: - if item.get("event") in {"pull_request", "pull_request_target"} and not self._has_open_pull_request_for_run(repo, item): + if item.get("event") in { + "pull_request", + "pull_request_target", + } and not self._has_open_pull_request_for_run(repo, item): closed_pr_count += 1 continue open_failures.append( @@ -515,7 +505,7 @@ def _has_open_pull_request_for_run(self, repo: str, run: dict) -> bool: branch = run.get("head_branch", "") if not branch: return True - head_repo = ((run.get("head_repository") or {}).get("full_name") or repo) + head_repo = (run.get("head_repository") or {}).get("full_name") or repo head_owner = head_repo.split("/", 1)[0] head = quote(f"{head_owner}:{branch}", safe="") data, error = self._call(f"repos/{repo}/pulls?state=open&head={head}&per_page=1") @@ -551,10 +541,7 @@ def generate_health_report( with_code_scanning = [s for s in summaries if s.code_scanning_alerts] with_secret_scanning = [s for s in summaries if s.secret_scanning_alerts] with_copilot_autofix = [s for s in summaries if s.copilot_autofix_count] - with_missing_metadata = [ - s for s in summaries - if not s.is_locked and (s.missing_description or s.missing_topics) - ] + with_missing_metadata = [s for s in summaries if not s.is_locked and (s.missing_description or s.missing_topics)] with_errors = [s for s in summaries if s.errors] healthy = [s for s in summaries if not s.errors and not s.has_findings()] @@ -583,7 +570,7 @@ def generate_health_report( f"**Copilot-Autofix-Signale:** {total_copilot_autofix} in {len(with_copilot_autofix)} Repos", f"**Repos mit fehlenden Metadaten:** {len(with_missing_metadata)} in {len(summaries)} Repos (ohne gelockte Repos)", "", - f"*„Offen\" = der jüngste abgeschlossene Lauf je Workflow+Branch ist rot. Fehlläufe, die ein " + f'*„Offen" = der jüngste abgeschlossene Lauf je Workflow+Branch ist rot. Fehlläufe, die ein ' f"späterer Lauf wieder grün gemacht hat, werden nur gezählt, nicht gelistet. " f"Pro Repo max. {max_dependabot_alerts_per_repo} Dependabot-Warnungen / " f"{max_failed_runs_per_repo} offene Läufe / " @@ -614,11 +601,7 @@ def generate_health_report( lines.append("### Repos mit OFFENEN fehlgeschlagenen Actions-Läufen (aktuell rot)") lines.append("") for summary in sorted(with_failures, key=lambda item: (-item.failed_runs_count, item.repo)): - resolved_note = ( - f" (+{summary.resolved_failures} seither behoben)" - if summary.resolved_failures - else "" - ) + resolved_note = f" (+{summary.resolved_failures} seither behoben)" if summary.resolved_failures else "" lines.append(f"**{summary.repo}** -- {summary.failed_runs_count} offen{resolved_note}") for run in summary.failed_runs: workflow_name = run.workflow_name or "Unbenannter Workflow" diff --git a/src/githubbot_core/plugins.py b/src/githubbot_core/plugins.py index f0c8030..cc1d9b8 100644 --- a/src/githubbot_core/plugins.py +++ b/src/githubbot_core/plugins.py @@ -86,8 +86,14 @@ def list_plugins() -> list[dict]: try: plugin = _instantiate(name, loader) info = dict(plugin.describe()) - result.append({"name": name, "available": True, **info, - "hooks": [h for h in ("plan", "pr_policy_checks") if callable(getattr(plugin, h, None))]}) + result.append( + { + "name": name, + "available": True, + **info, + "hooks": [h for h in ("plan", "pr_policy_checks") if callable(getattr(plugin, h, None))], + } + ) except PluginNotAvailable as exc: result.append({"name": name, "available": False, "error": str(exc)}) return result diff --git a/src/githubbot_core/pr_review.py b/src/githubbot_core/pr_review.py index d70f571..ca9de4f 100644 --- a/src/githubbot_core/pr_review.py +++ b/src/githubbot_core/pr_review.py @@ -18,6 +18,7 @@ @dataclass class PullRequest: """Repraesentiert einen GitHub Pull Request.""" + number: int title: str body: str @@ -73,6 +74,7 @@ def from_rest_json(cls, data: dict) -> "PullRequest": @dataclass class PRReviewResult: """Ergebnis der PR-Pruefung.""" + pr: PullRequest summary: str = "" policy_check_results: list[tuple[str, bool, str]] = field(default_factory=list) diff --git a/src/githubbot_core/report_sections.py b/src/githubbot_core/report_sections.py index d3c2ca1..3a9dbdd 100644 --- a/src/githubbot_core/report_sections.py +++ b/src/githubbot_core/report_sections.py @@ -33,10 +33,7 @@ "Private Repos liefern über die Traffic-API systematisch keine Werte " "(0 Views/0 Clones) und stehen deshalb nicht in den Zahlen oben. " ) -REASON_STARS = ( - "Private Repos werden hier bewusst separat aufgeführt, unabhängig von " - "ihrer Sternenzahl. " -) +REASON_STARS = "Private Repos werden hier bewusst separat aufgeführt, unabhängig von ihrer Sternenzahl. " def group_repos_by_org(repo_full_names: list[str]) -> dict[str, list[str]]: @@ -55,8 +52,7 @@ def group_repos_by_org(repo_full_names: list[str]) -> dict[str, list[str]]: return {org: sorted(names) for org, names in sorted(groups.items())} -def wrap_repo_names(names: list[str], prefix: str, width: int = 80, - indent: str = " ") -> list[str]: +def wrap_repo_names(names: list[str], prefix: str, width: int = 80, indent: str = " ") -> list[str]: """ Bricht eine kommaseparierte Namensliste auf mehrere Zeilen um. @@ -106,8 +102,7 @@ def markdown_archived_section(archived_repos: list[str] | None) -> list[str]: return lines -def ascii_group_block(heading: str, repo_full_names: list[str] | None, - width: int = 80) -> list[str]: +def ascii_group_block(heading: str, repo_full_names: list[str] | None, width: int = 80) -> list[str]: """Blockabschnitt (Privat/Archiviert) im ASCII-Stil der uebrigen Grafiken.""" if not repo_full_names: return [] diff --git a/src/githubbot_core/review_gate.py b/src/githubbot_core/review_gate.py index 53f0eed..5a512de 100644 --- a/src/githubbot_core/review_gate.py +++ b/src/githubbot_core/review_gate.py @@ -103,10 +103,7 @@ def _parse_utc(value: object, field: str) -> datetime: def canonical_receipt_bytes(receipt: Mapping[str, object]) -> bytes: """Return the one accepted byte representation for signing and dispatch.""" - return ( - json.dumps(receipt, sort_keys=True, separators=(",", ":"), ensure_ascii=False) - + "\n" - ).encode("utf-8") + return (json.dumps(receipt, sort_keys=True, separators=(",", ":"), ensure_ascii=False) + "\n").encode("utf-8") def create_receipt(**values: object) -> dict[str, object]: @@ -243,9 +240,7 @@ def validate_receipt( raise ReceiptValidationError("model_review must not contain decision_id") if verdict == "approve" and (findings["critical"] or findings["high"]): raise ReceiptValidationError("approval cannot contain critical or high findings") - if verdict == "reject" and ( - not isinstance(receipt.get("reason"), str) or not str(receipt["reason"]).strip() - ): + if verdict == "reject" and (not isinstance(receipt.get("reason"), str) or not str(receipt["reason"]).strip()): raise ReceiptValidationError("rejected model_review requires reason") else: if verdict != "approve": @@ -369,9 +364,7 @@ def verify_ssh_signature( raise ReceiptValidationError(f"SSH signature verification failed: {detail or 'invalid signature'}") -def sign_receipt( - receipt_path: Path, key_path: Path, output_path: Path, namespace: str = DEFAULT_NAMESPACE -) -> None: +def sign_receipt(receipt_path: Path, key_path: Path, output_path: Path, namespace: str = DEFAULT_NAMESPACE) -> None: """Sign canonical receipt bytes without leaving an adjacent implicit .sig file.""" receipt_bytes = receipt_path.read_bytes() validate_receipt_bytes(receipt_bytes, now=datetime.now(timezone.utc)) @@ -404,9 +397,7 @@ def sign_receipt( timeout=20, ) if result.returncode != 0: - raise ReceiptValidationError( - f"receipt signing failed: {result.stderr.strip() or result.stdout.strip()}" - ) + raise ReceiptValidationError(f"receipt signing failed: {result.stderr.strip() or result.stdout.strip()}") signature_path = Path(f"{temp_receipt}.sig") if not signature_path.is_file(): raise ReceiptValidationError("ssh-keygen did not produce a detached signature") @@ -625,12 +616,10 @@ def _run_url() -> str | None: return None -def workflow_pending( - repository: str, pr_number: int, head_sha: str, namespace: str = DEFAULT_NAMESPACE -) -> None: +def workflow_pending(repository: str, pr_number: int, head_sha: str, namespace: str = DEFAULT_NAMESPACE) -> None: token = _resolve_token() live = _live_pr(repository, pr_number, token=token) - live_sha = ((live.get("head") or {}).get("sha") if isinstance(live.get("head"), Mapping) else None) + live_sha = (live.get("head") or {}).get("sha") if isinstance(live.get("head"), Mapping) else None if live.get("state") != "open" or live_sha != head_sha: raise ReceiptValidationError("pending status target is not the current open PR head") _post_status( @@ -895,9 +884,7 @@ def main(argv: list[str] | None = None) -> int: elif args.command == "workflow-pending": workflow_pending(args.repo, args.pr, args.head_sha, namespace=args.namespace) elif args.command == "workflow-dispatch": - workflow_dispatch( - args.repo, _json_env_payload(), _allowed_signers_from_env(), namespace=args.namespace - ) + workflow_dispatch(args.repo, _json_env_payload(), _allowed_signers_from_env(), namespace=args.namespace) elif args.command == "verify": receipt_bytes = args.receipt.read_bytes() receipt = validate_receipt_bytes(receipt_bytes, now=datetime.now(timezone.utc)) diff --git a/src/githubbot_core/stars.py b/src/githubbot_core/stars.py index 9e31b1d..733de91 100644 --- a/src/githubbot_core/stars.py +++ b/src/githubbot_core/stars.py @@ -35,6 +35,7 @@ @dataclass class RepoStars: """Sternenzahl eines Repos.""" + repo: str stars: int = 0 error: Optional[str] = None @@ -107,7 +108,7 @@ def bar(val, max_val): return "█" * full + ("▌" if half else "") + "·" * (BAR_WIDTH - full - half) def fmt(name): - return (name[:NAME_W - 1] + "…") if len(name) > NAME_W else name.ljust(NAME_W) + return (name[: NAME_W - 1] + "…") if len(name) > NAME_W else name.ljust(NAME_W) valid = [s for s in summaries if not s.error] errors = [s for s in summaries if s.error] @@ -163,6 +164,7 @@ def generate_stars_report( als eigene Sektionen am Ende und fliessen NICHT in die Zahlen ein. """ from datetime import date + today = date.today().strftime("%Y-%m-%d") valid = [s for s in summaries if not s.error] diff --git a/src/githubbot_core/traffic.py b/src/githubbot_core/traffic.py index 41aed21..e2d3705 100644 --- a/src/githubbot_core/traffic.py +++ b/src/githubbot_core/traffic.py @@ -37,6 +37,7 @@ @dataclass class TrafficSummary: """Zusammengefasste Traffic-Daten eines Repos (14-Tage-Fenster).""" + repo: str views_total: int = 0 views_unique: int = 0 @@ -59,17 +60,11 @@ def format(self) -> str: ] if self.top_referrers: - refs = ", ".join( - f"{r['referrer']} ({r['count']})" - for r in self.top_referrers[:3] - ) + refs = ", ".join(f"{r['referrer']} ({r['count']})" for r in self.top_referrers[:3]) lines.append(f" Referrer: {refs}") if self.top_paths: - paths = ", ".join( - f"{p['path']} ({p['count']})" - for p in self.top_paths[:3] - ) + paths = ", ".join(f"{p['path']} ({p['count']})" for p in self.top_paths[:3]) lines.append(f" Top-Pfade: {paths}") return "\n".join(lines) @@ -157,7 +152,7 @@ def bar(val: int, max_val: int) -> str: def fmt(name: str) -> str: """Repo-Name auf feste Spaltenbreite, zu lange Namen mit Auslassung.""" - return (name[:NAME_W - 1] + "…") if len(name) > NAME_W else name.ljust(NAME_W) + return (name[: NAME_W - 1] + "…") if len(name) > NAME_W else name.ljust(NAME_W) def generate_ascii_chart( @@ -178,17 +173,17 @@ def generate_ascii_chart( valid = [s for s in summaries if not s.error] max_clones = max((s.clones_total for s in valid), default=1) - max_views = max((s.views_total for s in valid), default=1) + max_views = max((s.views_total for s in valid), default=1) by_clones = sorted(valid, key=lambda s: s.clones_total, reverse=True) - by_views = sorted(valid, key=lambda s: s.views_total, reverse=True) - with_views = [s for s in by_views if s.views_total > 0] - no_views = [s for s in by_views if s.views_total == 0] + by_views = sorted(valid, key=lambda s: s.views_total, reverse=True) + with_views = [s for s in by_views if s.views_total > 0] + no_views = [s for s in by_views if s.views_total == 0] - total_clones = sum(s.clones_total for s in valid) - total_cu = sum(s.clones_unique for s in valid) - total_views = sum(s.views_total for s in valid) - total_vu = sum(s.views_unique for s in valid) + total_clones = sum(s.clones_total for s in valid) + total_cu = sum(s.clones_unique for s in valid) + total_views = sum(s.views_total for s in valid) + total_vu = sum(s.views_unique for s in valid) W = 80 lines = [ @@ -205,7 +200,7 @@ def generate_ascii_chart( for s in by_clones: name = s.repo.split("/")[1] - val = f"{s.clones_total:>4} /{s.clones_unique:>3}u" + val = f"{s.clones_total:>4} /{s.clones_unique:>3}u" lines.append(f" {fmt(name)} {val} {bar(s.clones_total, max_clones)}") lines += [ @@ -218,7 +213,7 @@ def generate_ascii_chart( for s in with_views: name = s.repo.split("/")[1] - val = f"{s.views_total:>4} /{s.views_unique:>3}u" + val = f"{s.views_total:>4} /{s.views_unique:>3}u" lines.append(f" {fmt(name)} {val} {bar(s.views_total, max_views)}") if no_views: @@ -229,8 +224,7 @@ def generate_ascii_chart( lines += ascii_group_block(ARCHIVED_HEADING_ASCII, archived_repos, W) gesamt_line = ( - f" GESAMT | Clones: {total_clones} ({total_cu} unique) | " - f"Views: {total_views} ({total_vu} unique)" + f" GESAMT | Clones: {total_clones} ({total_cu} unique) | Views: {total_views} ({total_vu} unique)" ) if private_repos: gesamt_line += f" | Privat: {len(private_repos)} (siehe oben)" @@ -354,8 +348,11 @@ def section(title, unit, value, unique, max_val): ] lines += section("VIEWS", "Views", lambda s: s.views_total, lambda s: s.views_unique, max_views) lines += section( - "CLONES (Downloads)", "Clones", - lambda s: s.clones_total, lambda s: s.clones_unique, max_clones, + "CLONES (Downloads)", + "Clones", + lambda s: s.clones_total, + lambda s: s.clones_unique, + max_clones, ) lines += ascii_group_block(PRIVATE_HEADING_ASCII, private_repos, W) @@ -366,8 +363,7 @@ def section(title, unit, value, unique, max_val): total_clones = sum(s.clones_total for s in valid) total_cu = sum(s.clones_unique for s in valid) gesamt_line = ( - f" GESAMT | Views: {total_views} ({total_vu} unique) | " - f"Clones: {total_clones} ({total_cu} unique)" + f" GESAMT | Views: {total_views} ({total_vu} unique) | Clones: {total_clones} ({total_cu} unique)" ) if private_repos: gesamt_line += f" | Privat: {len(private_repos)} (siehe oben)" @@ -389,6 +385,7 @@ def generate_traffic_report( als eigene Sektionen am Ende und fliessen NICHT in die Zahlen ein. """ from datetime import date + today = date.today().strftime("%Y-%m-%d") if private_repos: diff --git a/src/githubbot_core/triage.py b/src/githubbot_core/triage.py index b82cc6a..bcd165d 100644 --- a/src/githubbot_core/triage.py +++ b/src/githubbot_core/triage.py @@ -28,9 +28,11 @@ # DATA CLASSES # ============================================================ + @dataclass class GitHubIssue: """Repraesentiert ein GitHub Issue.""" + number: int title: str body: str @@ -69,6 +71,7 @@ def from_rest_json(cls, data: dict) -> "GitHubIssue": @dataclass class TriageResult: """Ergebnis der Triage fuer ein Issue.""" + issue: GitHubIssue labels_to_add: list[str] = field(default_factory=list) comment: Optional[str] = None @@ -81,13 +84,19 @@ class TriageResult: # CLASSIFIER # ============================================================ + class IssueClassifier: """Klassifiziert Issues nach den Triage-Kriterien aus der Config.""" PRIORITY_ORDER = [ - "security_public", "core_change", "bug_with_steps", - "bug_without_details", "feature_request", "question", - "documentation", "unclear", + "security_public", + "core_change", + "bug_with_steps", + "bug_without_details", + "feature_request", + "question", + "documentation", + "unclear", ] def __init__(self, config: dict): @@ -163,6 +172,7 @@ def _matches(self, text: str, criterion: dict) -> bool: # TRIAGE # ============================================================ + class IssueTriage: """Laedt Issues, klassifiziert sie und plant Aktionen. Schreibt selbst nie.""" @@ -191,20 +201,30 @@ def plan(self, results: list[TriageResult]) -> list[Action]: for result in results: number = result.issue.number if result.labels_to_add: - actions.append(Action("issue.add_labels", - {"repo": self.repo, "number": number, "labels": result.labels_to_add}, - reason=f"triage #{number}")) + actions.append( + Action( + "issue.add_labels", + {"repo": self.repo, "number": number, "labels": result.labels_to_add}, + reason=f"triage #{number}", + ) + ) if result.comment and result.comment_type: existing, error = self.transport.get_paginated( - f"repos/{self.repo}/issues/{number}/comments?per_page=100") + f"repos/{self.repo}/issues/{number}/comments?per_page=100" + ) if error: logger.warning("#%d: Kommentare nicht lesbar, Kommentar wird nicht geplant: %s", number, error) continue if self.comments.check_already_commented(number, result.comment_type, existing): continue body = self.comments.add_marker(result.comment, result.comment_type) - actions.append(Action("issue.comment", {"repo": self.repo, "number": number, "body": body}, - reason=f"auto comment {result.comment_type} #{number}")) + actions.append( + Action( + "issue.comment", + {"repo": self.repo, "number": number, "body": body}, + reason=f"auto comment {result.comment_type} #{number}", + ) + ) return actions @staticmethod diff --git a/tests/test_auto_comments.py b/tests/test_auto_comments.py index 83574e6..3ee8df4 100644 --- a/tests/test_auto_comments.py +++ b/tests/test_auto_comments.py @@ -1,4 +1,5 @@ """Tests fuer AutoCommentManager.""" + import unittest @@ -32,12 +33,9 @@ def setUp(self): "auto_comments": { "needs_info_bug": { "trigger": "bug_without_details", - "template": "Please provide: version, OS, steps to reproduce" - }, - "duplicate_reference": { - "trigger": "duplicate", - "template": "Duplicate of #{original_issue}. Closing." + "template": "Please provide: version, OS, steps to reproduce", }, + "duplicate_reference": {"trigger": "duplicate", "template": "Duplicate of #{original_issue}. Closing."}, } } self.manager = AutoCommentManager(self.config) @@ -70,17 +68,13 @@ def test_add_marker(self): def test_check_already_commented_true(self): """Erkennt vorhandenen Bot-Kommentar.""" - comments = [ - {"body": "Some comment\n"} - ] + comments = [{"body": "Some comment\n"}] result = self.manager.check_already_commented(1, "needs_info_bug", comments) self.assertTrue(result) def test_check_already_commented_false(self): """Erkennt fehlenden Bot-Kommentar.""" - comments = [ - {"body": "Regular user comment without marker"} - ] + comments = [{"body": "Regular user comment without marker"}] result = self.manager.check_already_commented(1, "needs_info_bug", comments) self.assertFalse(result) @@ -91,9 +85,7 @@ def test_check_already_commented_empty(self): def test_check_different_type(self): """Anderer Kommentar-Typ wird nicht verwechselt.""" - comments = [ - {"body": "Comment\n"} - ] + comments = [{"body": "Comment\n"}] result = self.manager.check_already_commented(1, "needs_info_bug", comments) self.assertFalse(result) diff --git a/tests/test_classifier.py b/tests/test_classifier.py index 14da870..00a8e99 100644 --- a/tests/test_classifier.py +++ b/tests/test_classifier.py @@ -1,4 +1,5 @@ """Tests fuer IssueClassifier.""" + import unittest @@ -11,14 +12,12 @@ class TestIssueClassifier(unittest.TestCase): def setUp(self): """Config mit Standard-Kriterien laden.""" from githubbot_core.config import default_config + self.config = default_config() self.classifier = IssueClassifier(self.config) def _make_issue(self, title: str, body: str = "", labels: list = None) -> GitHubIssue: - return GitHubIssue( - number=1, title=title, body=body, - labels=labels or [], state="open", author="testuser" - ) + return GitHubIssue(number=1, title=title, body=body, labels=labels or [], state="open", author="testuser") def test_security_detection(self): """Security-Keywords werden erkannt.""" diff --git a/tests/test_consumer_install.py b/tests/test_consumer_install.py index 46b6506..9e9d53a 100644 --- a/tests/test_consumer_install.py +++ b/tests/test_consumer_install.py @@ -3,6 +3,7 @@ Slow (creates a venv and builds the wheel), therefore opt-in: GITHUBBOT_CORE_CONSUMER_TEST=1 python -m pytest tests/test_consumer_install.py """ + from __future__ import annotations import json @@ -56,8 +57,9 @@ def test_installed_package_cli_without_private_extension(tmp_path: Path) -> None assert json.loads(missing.stdout)["data"] == {"error": "plugin_not_available"} issues = work / "issues.json" - issues.write_text(json.dumps([{"number": 1, "title": "Found XSS vulnerability", "body": "", "labels": []}]), - encoding="utf-8") + issues.write_text( + json.dumps([{"number": 1, "title": "Found XSS vulnerability", "body": "", "labels": []}]), encoding="utf-8" + ) classify = _run([str(cli), "--json", "classify", "--input", str(issues)], cwd=work) assert classify.returncode == 0 and "security" in json.loads(classify.stdout)["data"][0]["labels_to_add"] diff --git a/tests/test_contract.py b/tests/test_contract.py index 33b012d..af96071 100644 --- a/tests/test_contract.py +++ b/tests/test_contract.py @@ -1,4 +1,5 @@ """Contract tests: preview/apply, permission ceilings, config layering, plugin SPI, CLI.""" + from __future__ import annotations import json @@ -15,12 +16,31 @@ REPO = "example-org/example-repo" ISSUES = [ - {"number": 1, "title": "How do I configure the output?", "body": "", "labels": [], - "user": {"login": "someone"}, "created_at": "2026-01-01T00:00:00Z"}, - {"number": 2, "title": "Found XSS vulnerability", "body": "", "labels": [], - "user": {"login": "someone"}, "created_at": "2026-01-01T00:00:00Z"}, - {"number": 3, "title": "a pull request", "body": "", "labels": [], "pull_request": {}, - "user": {"login": "someone"}, "created_at": "2026-01-01T00:00:00Z"}, + { + "number": 1, + "title": "How do I configure the output?", + "body": "", + "labels": [], + "user": {"login": "someone"}, + "created_at": "2026-01-01T00:00:00Z", + }, + { + "number": 2, + "title": "Found XSS vulnerability", + "body": "", + "labels": [], + "user": {"login": "someone"}, + "created_at": "2026-01-01T00:00:00Z", + }, + { + "number": 3, + "title": "a pull request", + "body": "", + "labels": [], + "pull_request": {}, + "user": {"login": "someone"}, + "created_at": "2026-01-01T00:00:00Z", + }, ] @@ -34,6 +54,7 @@ def _triage_gets(): # ---------------------------------------------------------------- preview/apply + def test_preview_writes_nothing(fake_transport, capsys): transport = fake_transport(_triage_gets()) code = cli.main(["--json", "triage", "--repo", REPO], transport=transport) @@ -64,8 +85,12 @@ def test_apply_writes_only_permitted_actions_and_is_idempotent(fake_transport, t def test_apply_refuses_changed_plan(fake_transport): transport = fake_transport() - result = actions.apply([Action("issue.comment", {"repo": REPO, "number": 1, "body": "x"})], transport, - default_config(), expected_plan_sha256="0" * 64) + result = actions.apply( + [Action("issue.comment", {"repo": REPO, "number": 1, "body": "x"})], + transport, + default_config(), + expected_plan_sha256="0" * 64, + ) assert result["writes"] == 0 and "mismatch" in result["error"] assert transport.writes == [] @@ -79,9 +104,12 @@ def test_disabled_action_is_denied_not_written(fake_transport): def test_api_request_needs_matching_prefix(fake_transport): - config = merge_layers([("default", default_config()), - ("profile", {"permissions": {"enabled": ["api.request"], - "api_write_prefixes": ["user/starred/"]}})]) + config = merge_layers( + [ + ("default", default_config()), + ("profile", {"permissions": {"enabled": ["api.request"], "api_write_prefixes": ["user/starred/"]}}), + ] + ) allowed = Action("api.request", {"method": "PUT", "endpoint": "user/starred/o/r"}) other = Action("api.request", {"method": "PUT", "endpoint": "user/following/someone"}) sneaky = Action("api.request", {"method": "PUT", "endpoint": "user/starred/../following/x"}) @@ -101,17 +129,21 @@ def test_failed_write_is_reported(fake_transport, capsys): # ---------------------------------------------------------------- config layering + def test_later_layer_cannot_widen_ceiling(): with pytest.raises(ConfigError, match="may only be narrowed"): - merge_layers([("default", default_config()), - ("profile", {"permissions": {"ceiling": ["issue.comment"], "enabled": ["issue.comment"]}}), - ("local", {"permissions": {"ceiling": ["issue.comment", "api.request"]}})]) + merge_layers( + [ + ("default", default_config()), + ("profile", {"permissions": {"ceiling": ["issue.comment"], "enabled": ["issue.comment"]}}), + ("local", {"permissions": {"ceiling": ["issue.comment", "api.request"]}}), + ] + ) def test_enabled_must_stay_inside_ceiling(): with pytest.raises(ConfigError, match="exceeds"): - merge_layers([("default", default_config()), - ("profile", {"permissions": {"ceiling": ["issue.comment"]}})]) + merge_layers([("default", default_config()), ("profile", {"permissions": {"ceiling": ["issue.comment"]}})]) def test_api_prefixes_narrow_only(): @@ -129,6 +161,7 @@ def test_bad_config_file_exit_code(tmp_path, fake_transport): # ---------------------------------------------------------------- plugin SPI + class _DemoPlugin: name = "demo" spi_version = plugins.SPI_VERSION @@ -192,8 +225,10 @@ def test_plugin_plan_preview_and_denied_apply(demo_plugin, fake_transport, capsy def test_plugin_plan_apply_when_profile_allows(demo_plugin, fake_transport, tmp_path, capsys): profile = tmp_path / "profile.json" - profile.write_text(json.dumps({"permissions": {"enabled": ["api.request"], - "api_write_prefixes": ["user/starred/"]}}), encoding="utf-8") + profile.write_text( + json.dumps({"permissions": {"enabled": ["api.request"], "api_write_prefixes": ["user/starred/"]}}), + encoding="utf-8", + ) transport = fake_transport() assert cli.main(["--config", str(profile), "--json", "run", "demo", "--apply"], transport=transport) == 0 assert transport.writes == [("PUT", "user/starred/o/r", None)] @@ -219,6 +254,7 @@ def test_pr_review_without_plugins_is_size_only(): # ---------------------------------------------------------------- credentials + def test_credentials_resolve_from_env_and_redact(): token, provider = resolve_token([EnvTokenProvider(environ={"GITHUB_TOKEN": "tok-123"})]) assert (token, provider) == ("tok-123", "env") @@ -229,12 +265,18 @@ def test_credentials_resolve_from_env_and_redact(): # ---------------------------------------------------------------- offline CLI + scaffold + def test_offline_classify_and_duplicates(tmp_path, capsys, fake_transport): data = tmp_path / "issues.json" - data.write_text(json.dumps([ - {"number": 1, "title": "Crash on save in editor", "body": "", "labels": []}, - {"number": 2, "title": "Crash on save in editor", "body": "", "labels": []}, - ]), encoding="utf-8") + data.write_text( + json.dumps( + [ + {"number": 1, "title": "Crash on save in editor", "body": "", "labels": []}, + {"number": 2, "title": "Crash on save in editor", "body": "", "labels": []}, + ] + ), + encoding="utf-8", + ) assert cli.main(["--json", "duplicates", "--input", str(data)], transport=fake_transport()) == 0 assert json.loads(capsys.readouterr().out)["data"][0]["original"] == 1 assert cli.main(["--json", "classify", "--input", str(data)], transport=fake_transport()) == 0 @@ -243,11 +285,16 @@ def test_offline_classify_and_duplicates(tmp_path, capsys, fake_transport): def test_gate_scaffold_preview_then_apply(tmp_path, capsys, fake_transport): dest = tmp_path / "target" - assert cli.main(["--json", "gate-scaffold", "--dest", str(dest), "--namespace", "acme"], transport=fake_transport()) == 0 + assert ( + cli.main(["--json", "gate-scaffold", "--dest", str(dest), "--namespace", "acme"], transport=fake_transport()) + == 0 + ) assert not dest.exists() # preview wrote nothing capsys.readouterr() - assert cli.main(["gate-scaffold", "--dest", str(dest), "--namespace", "acme", "--apply"], - transport=fake_transport()) == 0 + assert ( + cli.main(["gate-scaffold", "--dest", str(dest), "--namespace", "acme", "--apply"], transport=fake_transport()) + == 0 + ) workflow = (dest / ".github/workflows/review-gate.yml").read_text(encoding="utf-8") assert "types: [acme-review-gate]" in workflow and "__GATE_NAMESPACE__" not in workflow assert (dest / ".github/review-gate/review_gate.py").is_file() diff --git a/tests/test_duplicates.py b/tests/test_duplicates.py index 213742e..db1ee34 100644 --- a/tests/test_duplicates.py +++ b/tests/test_duplicates.py @@ -1,10 +1,12 @@ """Tests fuer DuplicateDetector.""" + import unittest from githubbot_core.duplicates import ( DuplicateDetector, - tokenize, jaccard_similarity, + tokenize, + jaccard_similarity, ) @@ -47,7 +49,7 @@ def test_disjoint_sets(self): def test_partial_overlap(self): sim = jaccard_similarity({"a", "b", "c"}, {"b", "c", "d"}) - self.assertAlmostEqual(sim, 2/4) # 0.5 + self.assertAlmostEqual(sim, 2 / 4) # 0.5 def test_empty_sets(self): self.assertAlmostEqual(jaccard_similarity(set(), set()), 1.0) @@ -109,9 +111,7 @@ def test_find_for_new_issue(self): {"number": 1, "title": "Application crashes on startup", "body": "Error shown"}, {"number": 2, "title": "Feature request dark mode", "body": "Add dark mode"}, ] - candidates = self.detector.find_for_new_issue( - 3, "Application crashes on startup", "Error shown", existing - ) + candidates = self.detector.find_for_new_issue(3, "Application crashes on startup", "Error shown", existing) self.assertGreater(len(candidates), 0) self.assertEqual(candidates[0].original_number, 1) diff --git a/tests/test_metadata.py b/tests/test_metadata.py index a1a319a..b99a34b 100644 --- a/tests/test_metadata.py +++ b/tests/test_metadata.py @@ -1,4 +1,5 @@ """Repository metadata: required root documents, license and packaging rules.""" + from __future__ import annotations import sys @@ -10,8 +11,18 @@ tomllib = None ROOT = Path(__file__).resolve().parents[1] -REQUIRED = ["README.md", "README_de.md", "LICENSE", ".gitignore", "CHANGELOG.md", "SECURITY.md", - "CONTRIBUTING.md", "CODE_OF_CONDUCT.md", "THIRD_PARTY_LICENSES.md", "pyproject.toml"] +REQUIRED = [ + "README.md", + "README_de.md", + "LICENSE", + ".gitignore", + "CHANGELOG.md", + "SECURITY.md", + "CONTRIBUTING.md", + "CODE_OF_CONDUCT.md", + "THIRD_PARTY_LICENSES.md", + "pyproject.toml", +] def test_required_root_documents_exist(): diff --git a/tests/test_report_sections.py b/tests/test_report_sections.py index 146e46b..19b095f 100644 --- a/tests/test_report_sections.py +++ b/tests/test_report_sections.py @@ -9,7 +9,6 @@ sonst wie ein inhaltlicher. """ - import pytest @@ -28,9 +27,14 @@ class TestGruppierung: def test_sortiert_orgs_und_namen(self): - result = group_repos_by_org([ - "zeta/b", "alpha/z", "alpha/a", "zeta/a", - ]) + result = group_repos_by_org( + [ + "zeta/b", + "alpha/z", + "alpha/a", + "zeta/a", + ] + ) assert list(result) == ["alpha", "zeta"] assert result["alpha"] == ["a", "z"] assert result["zeta"] == ["a", "b"] diff --git a/tests/test_review_gate.py b/tests/test_review_gate.py index 4da1cd1..4409148 100644 --- a/tests/test_review_gate.py +++ b/tests/test_review_gate.py @@ -60,13 +60,16 @@ def test_model_review_receipt_is_canonical_and_valid() -> None: assert encoded.endswith(b"\n") assert json.loads(encoded) == receipt assert receipt["schema"] == RECEIPT_SCHEMA - assert validate_receipt_bytes( - encoded, - expected_repository="example-org/example-repo", - expected_pr_number=6, - expected_head_sha="2f9e8f6fe280e2449b2d6081ef55a5cfdee431ea", - now=_now(), - ) == receipt + assert ( + validate_receipt_bytes( + encoded, + expected_repository="example-org/example-repo", + expected_pr_number=6, + expected_head_sha="2f9e8f6fe280e2449b2d6081ef55a5cfdee431ea", + now=_now(), + ) + == receipt + ) def test_receipt_rejects_noncanonical_bytes_and_wrong_head() -> None: @@ -342,9 +345,7 @@ def test_cli_sign_writes_only_the_requested_signature(tmp_path: Path) -> None: receipt.write_bytes(canonical_receipt_bytes(current_receipt)) signature = tmp_path / "signed" / "receipt.sig" - assert review_gate.main( - ["sign", "--receipt", str(receipt), "--key", str(key), "--output", str(signature)] - ) == 0 + assert review_gate.main(["sign", "--receipt", str(receipt), "--key", str(key), "--output", str(signature)]) == 0 assert signature.is_file() assert not Path(f"{receipt}.sig").exists() @@ -411,8 +412,6 @@ def test_protection_plan_refuses_to_overwrite_a_rollback(tmp_path: Path) -> None rollback = output / "rollback.json" rollback.write_text("do not overwrite\n", encoding="utf-8") - assert review_gate.main( - ["protection-plan", "--current", str(current), "--output-dir", str(output)] - ) == 2 + assert review_gate.main(["protection-plan", "--current", str(current), "--output-dir", str(output)]) == 2 assert rollback.read_text(encoding="utf-8") == "do not overwrite\n" assert not (output / "desired.json").exists() diff --git a/tests/test_stars.py b/tests/test_stars.py index 5dd43a3..ea87036 100644 --- a/tests/test_stars.py +++ b/tests/test_stars.py @@ -20,9 +20,7 @@ class TestStarsFetcher(unittest.TestCase): @patch("githubbot_core.transport.subprocess.run") def test_fetch_reads_stargazers_count(self, mock_run): - mock_run.return_value = subprocess.CompletedProcess( - [], 0, json.dumps({"stargazers_count": 42}), "" - ) + mock_run.return_value = subprocess.CompletedProcess([], 0, json.dumps({"stargazers_count": 42}), "") fetcher = StarsFetcher() result = fetcher.fetch("org/repo") @@ -141,9 +139,7 @@ class TestBackwardCompatibilityWithPrivateArchived(unittest.TestCase): def test_ascii_ranking_unchanged_without_new_params(self): summaries = [RepoStars(repo="org/a", stars=5), RepoStars(repo="org/b", stars=1)] - self.assertEqual( - generate_ascii_ranking(summaries), generate_ascii_ranking(summaries, None, None) - ) + self.assertEqual(generate_ascii_ranking(summaries), generate_ascii_ranking(summaries, None, None)) out = generate_ascii_ranking(summaries) self.assertNotIn("PRIVATE MODULE", out) self.assertNotIn("ARCHIVIERT", out) @@ -152,9 +148,7 @@ def test_ascii_ranking_unchanged_without_new_params(self): def test_stars_report_unchanged_without_new_params(self): summaries = [RepoStars(repo="org/a", stars=5), RepoStars(repo="org/b", stars=1)] - self.assertEqual( - generate_stars_report(summaries), generate_stars_report(summaries, None, None) - ) + self.assertEqual(generate_stars_report(summaries), generate_stars_report(summaries, None, None)) out = generate_stars_report(summaries) self.assertIn("**2 Repos** | **6 Stars gesamt**", out) self.assertNotIn("Diese Module sind privat", out) @@ -163,12 +157,8 @@ def test_stars_report_unchanged_without_new_params(self): def test_empty_lists_behave_like_none(self): summaries = [RepoStars(repo="org/a", stars=5)] - self.assertEqual( - generate_ascii_ranking(summaries, [], []), generate_ascii_ranking(summaries, None, None) - ) - self.assertEqual( - generate_stars_report(summaries, [], []), generate_stars_report(summaries, None, None) - ) + self.assertEqual(generate_ascii_ranking(summaries, [], []), generate_ascii_ranking(summaries, None, None)) + self.assertEqual(generate_stars_report(summaries, [], []), generate_stars_report(summaries, None, None)) class TestPrivateReposExcludedFromStarsTotals(unittest.TestCase): @@ -280,7 +270,7 @@ def test_private_archived_blocks_within_width(self): start = next(i for i, l in enumerate(lines) if "PRIVATE MODULE" in l) end = next(i for i, l in enumerate(lines) if i > start and l.startswith("=" * 80)) - for line in lines[start - 1:end]: + for line in lines[start - 1 : end]: self.assertLessEqual(len(line), 80, msg=f"Zeile zu lang: {line!r}") def test_gesamt_line_stays_within_width_with_private_count(self): diff --git a/tests/test_system_agent.py b/tests/test_system_agent.py index 5a94c6f..47a3254 100644 --- a/tests/test_system_agent.py +++ b/tests/test_system_agent.py @@ -1,4 +1,5 @@ """System agent template: versioned, hashed, shaped like the agent-studio blueprint payload.""" + from __future__ import annotations import hashlib @@ -18,8 +19,9 @@ def _recompute(d: dict) -> str: material = {"schema": d["schema"], "id": d["id"], "blueprint": d["blueprint"]} - return hashlib.sha256(json.dumps(material, sort_keys=True, separators=(",", ":"), - ensure_ascii=False).encode("utf-8")).hexdigest() + return hashlib.sha256( + json.dumps(material, sort_keys=True, separators=(",", ":"), ensure_ascii=False).encode("utf-8") + ).hexdigest() def _system_agent(capsys, *extra: str) -> dict: @@ -35,8 +37,9 @@ def test_template_identity_is_version_plus_canonical_hash(capsys): assert data["schema"] == "githubbot-core.system-agent/v1" assert data["id"] == "githubbot" and data["version"] == __version__ assert data["sha256"] == _recompute(data) # consumer view: printed output alone suffices - assert data["sha256"] == _recompute({"schema": template["_meta"]["schema"], "id": template["id"], - "blueprint": template["blueprint"]}) + assert data["sha256"] == _recompute( + {"schema": template["_meta"]["schema"], "id": template["id"], "blueprint": template["blueprint"]} + ) assert data["sha256"].startswith("2e72c000") # pinned: v0.2.0 blueprint content, BACH contract assert data["capability"] == {"package": "githubbot-core", "version": __version__, "spi_version": 1} diff --git a/tests/test_traffic_report.py b/tests/test_traffic_report.py index 8f8932b..5833e41 100644 --- a/tests/test_traffic_report.py +++ b/tests/test_traffic_report.py @@ -19,13 +19,17 @@ def _make_summaries(): return [ TrafficSummary( repo="example-org/alpha", - views_total=50, views_unique=20, - clones_total=10, clones_unique=5, + views_total=50, + views_unique=20, + clones_total=10, + clones_unique=5, ), TrafficSummary( repo="example-org/beta", - views_total=0, views_unique=0, - clones_total=0, clones_unique=0, + views_total=0, + views_unique=0, + clones_total=0, + clones_unique=0, ), ] @@ -40,9 +44,7 @@ class TestBackwardCompatibility(unittest.TestCase): def test_ascii_chart_unchanged_without_new_params(self): summaries = _make_summaries() - self.assertEqual( - generate_ascii_chart(summaries), generate_ascii_chart(summaries, None, None) - ) + self.assertEqual(generate_ascii_chart(summaries), generate_ascii_chart(summaries, None, None)) out = generate_ascii_chart(summaries) self.assertNotIn("PRIVATE MODULE", out) self.assertNotIn("ARCHIVIERT", out) @@ -51,9 +53,7 @@ def test_ascii_chart_unchanged_without_new_params(self): def test_traffic_report_unchanged_without_new_params(self): summaries = _make_summaries() - self.assertEqual( - generate_traffic_report(summaries), generate_traffic_report(summaries, None, None) - ) + self.assertEqual(generate_traffic_report(summaries), generate_traffic_report(summaries, None, None)) out = generate_traffic_report(summaries) self.assertIn("**2 Repos** | 14-Tage-Fenster", out) self.assertNotIn("Diese Module sind privat", out) @@ -62,12 +62,8 @@ def test_traffic_report_unchanged_without_new_params(self): def test_empty_lists_behave_like_none(self): summaries = _make_summaries() - self.assertEqual( - generate_ascii_chart(summaries, [], []), generate_ascii_chart(summaries, None, None) - ) - self.assertEqual( - generate_traffic_report(summaries, [], []), generate_traffic_report(summaries, None, None) - ) + self.assertEqual(generate_ascii_chart(summaries, [], []), generate_ascii_chart(summaries, None, None)) + self.assertEqual(generate_traffic_report(summaries, [], []), generate_traffic_report(summaries, None, None)) class TestPrivateReposExcludedFromTotals(unittest.TestCase): @@ -82,9 +78,7 @@ def test_ascii_totals_unaffected_by_private_repos(self): private_repos=["games-org/AlphaGame", "games-org/BetaGame"], ) - self.assertIn( - "GESAMT | Clones: 10 (5 unique) | Views: 50 (20 unique)", without_private - ) + self.assertIn("GESAMT | Clones: 10 (5 unique) | Views: 50 (20 unique)", without_private) self.assertIn( "GESAMT | Clones: 10 (5 unique) | Views: 50 (20 unique) | Privat: 2 (siehe oben)", with_private, @@ -110,9 +104,7 @@ def test_private_repo_not_in_no_views_or_inactive_lists(self): private = ["games-org/GhostRepo"] ascii_out = generate_ascii_chart(summaries, private_repos=private) - no_views_line = next( - l for l in ascii_out.split("\n") if l.strip().startswith("(keine Views):") - ) + no_views_line = next(l for l in ascii_out.split("\n") if l.strip().startswith("(keine Views):")) self.assertNotIn("GhostRepo", no_views_line) self.assertIn("GhostRepo", ascii_out) # aber im Privat-Block weiter unten @@ -189,7 +181,7 @@ def test_private_archived_blocks_within_width(self): start = next(i for i, l in enumerate(lines) if "PRIVATE MODULE" in l) end = next(i for i, l in enumerate(lines) if i > start and l.startswith("=" * 80)) - for line in lines[start - 1:end]: + for line in lines[start - 1 : end]: self.assertLessEqual(len(line), 80, msg=f"Zeile zu lang: {line!r}") From 320e28d6eeca8c4b49cc70452bc07881a4de9775 Mon Sep 17 00:00:00 2001 From: Lukas Geiger Date: Sun, 11 Oct 2026 20:43:12 +0200 Subject: [PATCH 2/2] docs: publication aftercare (banner, format check in CI, neutral test comment) - README (EN/DE): banner assets/banner.png (vector source assets/banner.svg, drawn in code, no third-party marks) - CI lint step also runs `ruff format --check .`; README/CONTRIBUTING list it - test_system_agent: pinned-hash comment worded neutrally - CHANGELOG: Unreleased entries Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_01LYHP4Js5ggpzQ78JXWRe5E --- .github/workflows/ci.yml | 4 +- CHANGELOG.md | 8 +++ CONTRIBUTING.md | 2 + README.md | 3 + README_de.md | 3 + assets/banner.png | Bin 0 -> 246281 bytes assets/banner.svg | 141 +++++++++++++++++++++++++++++++++++++ tests/test_system_agent.py | 2 +- 8 files changed, 161 insertions(+), 2 deletions(-) create mode 100644 assets/banner.png create mode 100644 assets/banner.svg diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index c8b8740..c1e269f 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -28,7 +28,9 @@ jobs: - name: Install run: python -m pip install -e ".[dev]" - name: Lint - run: ruff check . + run: | + ruff check . + ruff format --check . - name: Unit and contract tests run: python -m pytest -q - name: Consumer install test (fresh venv) diff --git a/CHANGELOG.md b/CHANGELOG.md index 4ec775c..2f6d138 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,14 @@ Format: [Keep a Changelog](https://keepachangelog.com/de/1.1.0/), [Semantic Vers ## [Unreleased] +### Geändert / Changed + +- Gesamter Baum mit `ruff format` formatiert (keine Codeänderung, AST identisch); CI prüft jetzt + zusätzlich `ruff format --check` / whole tree formatted with `ruff format` (no code change, AST + identical); CI now also runs `ruff format --check`. +- README (EN/DE) mit Banner (`assets/banner.png`, Quelle `assets/banner.svg`); Testkommentar + neutral formuliert / README banner added; a test comment worded neutrally. + ## [0.2.1] - 2026-10-11 ### Geändert / Changed diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 3604e23..16169f6 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -37,6 +37,7 @@ gelten Pull Requests unter der Lizenz des Projekts. pip install -e ".[dev]" python -m pytest ruff check . +ruff format --check . ``` Schreibende Funktionen laufen ausschließlich über `githubbot_core.actions` (Vorschau/Ausführen, @@ -81,6 +82,7 @@ pull requests are understood to be submitted under the project's license. pip install -e ".[dev]" python -m pytest ruff check . +ruff format --check . ``` Every write goes through `githubbot_core.actions` (preview/apply, permission diff --git a/README.md b/README.md index 2a4e207..7fda44c 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,7 @@ # githubbot-core +

githubbot-core banner

+ **English** | [Deutsch](README_de.md) Neutral, installable core for GitHub repository maintenance: issue triage, duplicate detection, @@ -165,6 +167,7 @@ trust boundaries and rollback: [docs/REVIEW_GATE.md](docs/REVIEW_GATE.md). pip install -e ".[dev]" python -m pytest # unit and contract tests ruff check . +ruff format --check . GITHUBBOT_CORE_CONSUMER_TEST=1 python -m pytest tests/test_consumer_install.py # fresh-venv install test ``` diff --git a/README_de.md b/README_de.md index 20c14e4..c8ec86e 100644 --- a/README_de.md +++ b/README_de.md @@ -1,5 +1,7 @@ # githubbot-core +

githubbot-core Banner

+ [English](README.md) | **Deutsch** Neutraler, installierbarer Kern für die Pflege von GitHub-Repositories: Issue-Triage, @@ -167,6 +169,7 @@ Details, Vertrauensgrenzen und Rollback: [docs/REVIEW_GATE.md](docs/REVIEW_GATE. pip install -e ".[dev]" python -m pytest # Unit- und Vertragstests ruff check . +ruff format --check . GITHUBBOT_CORE_CONSUMER_TEST=1 python -m pytest tests/test_consumer_install.py # Installationstest im frischen venv ``` diff --git a/assets/banner.png b/assets/banner.png new file mode 100644 index 0000000000000000000000000000000000000000..a1c206fe70ffd05297e7313aa21af3c6dde0718b GIT binary patch literal 246281 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¨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 z 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�#2cH37hpaLQaNJl{drS~3GG^l`x^xk_f0-*&(0U>~h5PB38 zP>e`{CXX8GK@pku27KuIHKaHyO3DzYbyBNP0R| z8LJG@+2<0>&nv(7eC>O(&12`Q#`rL%U!2`7)*HYDPU=X*B7Y=b5U7g;viDYy@<-m1 z(jymNq@f!?_TH2rY_WsJi4d-5GE#at?y>ixr_co0lt9~Q{KjLD!cemrTd5*eRghpZ z@<)?i)Ao~=ys%+ypYvjaIxxy(N5W(cTfi?IiF7_=B3(q#3#469fT`wV^BtWskxWVU<$wi?F9LYb$7rH;`1upMv1?fMo7kQ$&}XeEjXY202IS3=<(~YQdWgT zp@3N2`PMj^O8|+|8FNa9OmeoOyf3a{x*hr?yjj2En~vcHnm< z4=tV^1*_Q!TA3J1OA!O!=7I4NU((B8eK>Z#5}%e&5wyztvrC zwB=5Dc0Eh3vYbfYdDd4HCTho}`u3&OTZAgo5K#atRSfPvC|EC9rC~7}KtB2U`_=KH@cy!?86fd5bdsL_UP@-|u zs{dE8@QC4d(gexzlz7kOG+dZk?ei@OHcOMGrKF0m!Bq^s={+Zp!~wGtp<~sXy>pUd zR%HzRoe@*l9+2|5-h4Gpg>?}{*vx(J$tiMyhlrJ*tOr&1Lbzx$JCzIfdiL))nmE&> zk7Az6K3U*w{KIzN_p4fY^6Pp2+u1N4y2#KV4b)2JdkVa|>A@sJ1ObsowKk~5wc>Q6 z=_-Kb$R0mcM8sem&!VoA6m{eUPoo@kv8r6*?!JjRSLt(`%Q;p+zQX$fPqE09*sNENzq;+FN2G(Ka~ zo?2`1y4(I_O6gPIsfOe=oii9u=l<9MlqM}H-qqu;m0$uy4Y0nU5FnxUWr#z)8k~J> z5J*bY*E6Q>C6K(O9bV5WJrKaWv1s=rSB$N0N~vIG%zp_U^8{G_;p3KR?sTM6$UVi3 z2~*6Xnkj}aSJ~3wpaS6C5=jF)s#TVVW}A;+P^DoXx=k~yZ>mNl=*#?uC62hvrUsH8 z%?>(9b|+qo%)xvW_=^kao3~BjvSMUF$R}4_=~6Znk)5@fTzA8$RfEF|f=OS2vHlrw zfmV+W5!v3Ab`asE#_VRN%pJZInIQRLKIv-uWg>NY!dKVcMg2_7AIo8eHAH@7JE+%~ zj!BA7Oj4~xv^0cS&wRrj=i1U;iG$Ynv6DK)Z)TDf3L5qmEH3p^wu$GNqY1Wh*52O+ z<|zbxq>9M9u~Ih4^n0eX3OttK<3N25HZ4;HdvEL~B^Cxe@S&7dYAkEY4|&lw*kksl zOX1AE&?uLXWyv4vj#mjBIQE;qCC4x#v`oJ3IZG~aZOXSQ4t*~+>uLe`!Y|GWqv!w3 zj%h+h2QVLUn{1eG8pezdhP8YrI&RQn##6t#sjQ8%4E;{G9L*0`Pjm&dRT!-*;7l9` zH(JHz)cJ5_vkDB47yD+TvIWdmy|nCW~&CbSjs4kFcysPq@hID_*Yf#$>FIfwMVR3 za`fLd*9f&e(aHfeI;)$h+S=hk`jpz@%W(#bI0DC=x4#=49%j_N1yHBs=@DR#PH?nM zoQ3Z|o+c6{`^_p6uh>d&;Cg3!-qzw9fahxet_aolrpKh7?xNU9@ExEi-H3VL2Hy69 zN;TMrBO|Seo1f2?nbK}wG-iI?EvZt%(#}W!?LEw{vqXZ7>9yEX3HX!VyOAn}Ho}FJ zs`~U2(bf6GxH|S591?_^cR#z3z15+ZDY`tc9`0VGGAV|}$m>l-Sl!IPpQ+%-#>D7T z9_(Wkwn+)A@zn0jarNYFp8cSxYhSh}=KN8xlXq0o5rgK4HuHPInk||!aLt zZ9hN*GHHL~-VAutvy|I+WWbFg!UD! z{cQjw{==kMWas`buLjYx+@Hvtus;**OJX}bPifW_P5;{dA=AlQOsw>jI;?uCcK6p_ zAIcmB2c2(_G%`5s?7e;6gcmGIJ*To7seA*~H@~~5EExuc(qd{~=`7juq~t%_Rs{;I zjTF@k%?WWI)Dd^S7NBa^f}R!9SH^FUf;C=qa~dRq($?78B9VcsKGRew*MmF|m}lg;Z*} z*PMQFe6xJH@@|HNLQL4{rIfp-u*koa7g80vE{Njo$mZ3jt?$&9Z`w$HKyN%b)!g<_) zP6G?+=#wRd1={Zak@7jrfNK<&6mKx6{-Dy1M-mTqG=i^F{v(;#XLt^VHyIH0&Q<%I zU;2FgPGW|L`B<7S#j?6l8xms+PfS!)mWxm}D5uwDgfwu+#=kc!Rw3WX4W%)r`3SUl z9oO=emRBI~i&j6Cg6Y@x&aD+U^2AB<+I#Nb%^(*BsX+PqhDc=d)%0fjvhyq0Qen`n zT_i$YvX@vz^^U&Y_{zWQFOSP_Oa=;KySUv}6&j;W)0*`v`d6j22Do=1EtoRdc#=Xo zGAq@JtjOfZG5{l?9K~92zVDx3O6LQf zaL48MR*zXY=u(>(d*+&qvLq^2uKOC9PGc^20QuyWdSxv10TmP%hx%aTP$d=q1Q@fE zHfGFP$F0+Ydw6+WKQ(jf^M5K*pHMuj0BRuy!6hGhodXX*e4Lfzg_SF6Olw>mU7I$1 zC45i6*z)OKV(%JYH0s>3mr%3|pzOr|OqY#Yv*BeX60se`OEwnf ztwrYvVF#@+^0wprLti|tMr`Z=%M>swL4d%D-D^z{3{}?Hppi<8nBLtGWL&@cBtHI4 z`h;MkCt}oSa`ALK@`GBTSkShpvvdUp^|9ES@q@CDFt(zIE{g5D4o4=&`14hOe_Y9c zM?anD6#eB#-Xm{w2MT6z zdZfVk(*s&O9r!@7{i=h0+LZ97LZ1OkqGJuB>Hj_baqzU)P#}$<*Z@5p-DYFGS>jO}i)=z*U)a!^L}l4~CfnyD2Vv z&|WhQM_l>-{%iPD=w5S_tY^~-rPuHxcmm;Sh_n9g|KqRC)cQRJF3eJb3V*z#jg5`B z_r{N?#rS+xBWmc#i)V-;oWEL%fz7CBJ>>sm^Ua3!V$N0Q_Oyie0I+bzd z!cc#O<&#;?>i1ja9i4o>v8)_gt13XLgc)yOEcAE7sdXN=h1&0i-YYC)Zqo63QEkec zVaY!K23wICfDX~5#N8gW+BMtp)4F573 zIx%%TP_#Vlmhbt)S-l?S#!a{xctB;K;sqWlOt*wgRb4KBeUB;$N9 zp9PC)(rCkebZaQX%r_B@nH|b$+tm|)lS8ELLT~rFGVEJi6pz8uzViOEL9{O$)ZVLd zwxU5~$kvZ5_vpGLyCYlvjr49Q`(Ftw4BYQE46RS}`GRJoaf}f26xF{z6aLDIn_d4p>3G)x;v|nifZ7CK~7vLRP`AyWQy(n6=DT^w{%CS&#!^asV#D4vOP(>AD z01_w5hNPO}noU$(zZ!Yzuao6(E5G+>tv7|qK3bjdr^cdn#kY%J0ZWq-UglbcZ;jOnqC8m+wWjg#TR@WM#}y{yp3CBfa)E!*h> ztz78b5XFs7>My>F-{b0=`$@uSut$C$(KIF+vo5`&k8_Q(&?ly{pV`#V@a4{48HH#N zRlR#hWWQB%!Y|*A8;wgXWcj&O_T96{mZggP%-+b0`h&#-2fzfYKp`u$+5Vz~?3tV_ zd*kP{ht>+ItFn+)QTX4ri$K_WOjUEHN8^uKnPI}h7n!Vh$NxPGU{9=$LMd5hGbbd= zSoBQmek}wBEEk6|l`OsfV<3`}&wuQEc_t|XG@*69@6_U3{>PFxym>!F)lsasFL}fW zgaZMnm4`k*h0{!e{!w^SAl*k3OT(l>Ee~Bfa|4 z(hIeyOdeyD+T)2OS?!dpgu2SQ1+T#64n9S!EW`kZ0^cZlYa((emmM{cuGYPgKY&*&Sm znBUMr$5mRv@wwR*ej$C!hkC@nnOn3@XXpN=jel?xvV{AwT`-}ee2Zj8cf;1tG1~Z8EJRR!Yi=dg?bgwz=Jc!Ou)0UT|80E>9^SkZrJtp@bX};wY3*Wng+hWDCMQ?W z!Lt2IkZAQQla$87Vx8@DqwLDjw@3IG7hsaVYB5CAxy~&dz}@U|hPcoZADSy~nvcvT zgubu*`n))Zl|CfBkj;F?W3sKT_WNAPfYa$yO879J0`LqxS%?E3UYqdhgnQ2E#GY;J zyUpng?L&4du+@UmzmS*n@xn5e8l^9~%_M6@^D#f8VXaJSDW9<;vWozk6)D%j;~R$( zUi(WuO*wsn7>I+nGN(i$M(mCnxu8Qx^0Zz&MxT$i65#AZY7M!4;519l&2{3uBe%II z8KidP{fYV)N>^Wnp!-fCHY#fPmV^e+J@yqx5W=Zr{K6YG549tVL53#Wkr48`xgFUi z`^DbRQlz7w+OE+u=&4VY`+b=IPwf}iBCRX5ZgF%4tB0frv_0pOQITZ^T53gtN`We2 z&nq~W%vdVoTYj!P#TTQDM>ZQcU3PqqqS<=y7kV$G>;zm8(fD1ghBqiJsNaO}{ds72 zr(a6>-?Df1MJvk3s|+GOJYL>2AR*H#Ra>Lub#O@-b5_8wVSyhIs^yJR((I~;TKQEQ znAz##_-)@REv}^cWHNPEKLGtzB*`Cfqg06Nbtu&CKO0|(*4Wih&zN&XlvPlWUh*>^Z?M68^2}LIYCT%kGjHY+~)wu zvKNX@X88wY%RVv6fcA^`H|_^1s8{nzb^WmUjg*Nm=ngY7aD!H5+7lG7%G?iDFa*Z+ zg?lVM?0ZGWbG6u;ts6&AhaTQTqn~i4hjrvXlKP&#l{odYIDSRg^oP;ATLiz6-#;v_ z9KJ}JepRB~Mf`4vS8$z(@oxVUJM!n|`r(tLkrULS|IZtBMFTY9Gkk(~OmuFU&dc1* zl#n;Rp!i^M;{yKWd$*bowY5p5RkuJF)T>JL8Z2CaI#beU{g-Xk9eXj=rl%3j#(Lh)po z8g;UBL0KH>q6_P`V?T~9TH1rau`c{3c;ztF;a< zYh5}uwDe_tm55MD-Z~o7Uz>(TTBCZD8p{7#>#82nn!2;lD98K|YMK{{kP3dD9J+|} zF>kR~e1D4uF3iu;Zk;n%1}jRwz!Tj$q)z@Z!!{QnEPYN71zJ&0P22nzwE|uq%4}YatNC@Tn~w;9a|qM zr*;|A7FPLrg%UvSpy=MGX4j}eOi&|>Yt0Y`Q1N+>n**hH%HaxR>|5*pqsa{vXvl+Z$fwcW|Ii+Q{jPtzoudNldUG&~X~Yhb!;ueM!TNSgk@XYu;u> z{IW4fM)c-n>(AYB`2VMT>wSjTu}MDuslSuAm<%$VCln$k_a?q*-4Q;)Hg`D5fb_10mt2&dae}=&rPFwBB5wl+X7y~Fy{w9U} z5t3RW{UC8or-;QHagqzmeYsRNH`PS!dQv)-mikCO+vB(k#T~Ytcy>l?3M?J>J$=^i z^@VfluFBlM5Ts=96=ojN1mAFuoXqh^*jZ2tcw_jgT8=zd#>Yz)6?X{ zPStqO5bkOPcK1d|huLnW@`G`%PZTPLD5M8HZ4;WGndK+D^9#1J=U2rnK_8kOGRS8u z#zxcbl-fS~9sccp<+#==bt`G`dwptI&vDYYwj*uCcH_kCV7UyNzHT|rGs|`F#1RAu zF#*~J!bAYqXxs`^$=a$^GG0VaKDuuKbb?e0LpjJ&7PfP(NiiJ9aMKCYOIIHtyU{1Kijy8D#$|Yq(z&~JMGh| z*xFbA#2YGRreA*a?)xW!$LHb_t+Z>5Vn{@GE@sp|sOy$y#W@v0CvT276F_x;%*^OW zIo<@s7|TDwebP3ZF5}9OotjAjVcPZ{c=|lRw_B9L#pR^x9oNp!w<|1wP=WkW&B7&T zh)fcj03iDl!B}wD;nb+#s4}tbE7HlJTG$iK`NPn3!TvzUTg>kz+H&vSlIAu4NRZ6^ zvq%uZp?AIS<7!dc-ur$@*GIW>UOZ=$bQ619EElyOtT*&7I&-DBmd2c4sPl^{33tmQLs|sQ)0`e3!Q3ugTckxEx4wO=Fp>LJ zST=qwWFo;MeUwuC{!g&`Rpq8J?g;eF1=nbm+8lVL7H!|>!8{1wJg(PJCVm$q(utovbZO7;C^`Nc z^O8O<_LXh1okVA+W0LTg_qTw|L#cQ);k@sK%)PZN>9My*u`D`(#S*Q`7sHaYEi+Vo z$|^Z-kk?vu_G#>HnrgE`^wX-57b*6WrjU`&%-~jBW%r&DCwG=>LQz|mUU6?je7c!6 zBj$xZkodvhq;O+5%bweDu0$kESBU_wdM*8-|JUi};2k=QawrJu3hNa`2VD51)R>x{ z0@_GmEvxWtC7AGX8+rRBJd!_&k?hVaIQkLwXy;7?LeDRu?woBnP=4eFa`Sy@Z93<| zdMIJfn1GwTmhUMQntQB4IW#bFHSPWA^^&n? z%g4a#c3Oeg@qM=CJ<9P$fbVg6tjGzO^b@KR9KI1STIMEE@IK{ZMdzEaQcj?XZJbfi z3)*%*>4*C(uX9@dVkqs8X)jl!BS4Wj;5R}@9QDl12;!8_0J?1Qo2@w}9A~vG75Ugg zPv*!#!VU>4z(IPVQX#^Br)|Vjp;pvSB6(T3o`1o2=dc|cU#=7{eDy5N?cINTK&c?M z$V|58PZDmTy_q!`-mzM~Aa4LX`N)JqzR(Hg?EwIutp-hEi z(1;&^)#i{+o8_W}d)u{)iO97uD+S^5g5itYCdK8G%mJ{7Qs9NM8h~W3~)Lnj2 zDJY0Y8Z1MOZ;8^StOmta65CZ8+tZ!|)F7o*w?*iJVnfQlxuu1+zOERR>H(x_BAXoh zGv<^ERW~b`mdzuh&n2IirTNPm8*K%wMd6^Uybba8+;-gaU*9qOa?O$63SvzYQioGt zaB)J1*NHU0X?yd5_I2#@vTm=~wB`pnzH;lmg;xR8S@&uMW8S9!NTsDUl{J9=lE&Y~ zuh{hqXNcIQ-^=czP$)!E#*b}9`?drnM}46^cx4A!C1wndm&znif=QeYAucKNk}7zo z*j^IeMY4Tv$=#+rK`|)xTm@dvf>N4M=9LT96hi27y(QThDm{0$9_0EU;qvPu2lc+h zUx=MWO;789fG|TznOAEsG<+xIIQ)}(2TK*%Z^$31K2=z)u$cQIdG}}~LfCPbyKl$- z1<->%bGK>!+TBRS*2L6}_%XXPM0SPS^qGCV!>RzeBErXLyDjv_ixoarzx+ly1*1Ra z4?H{Mz+E!QgO}w3p^ywom@zBa!tu#+v z%_83xzenu>wx?~ibySyh<0yoQ1o>})@!Mj+;unTRbwF`g!-;$IV)9 zI}nD{HgeTAcGDk_InddATu&78Mw{L%3D*>KC#PGfao#F`3a^4XtXS-T;>Qv^iN#95 z<0Nv`EkR1uTTpxOUFh_G`vN3c=}y(6Z6YtAo2Vsdy~KS!7=P)#nohMs)zb5l`Y!7S zI@vowFXP(g>uEnAt!9$rJx@7LmgnpQ+wGVHv?SD+HzaBC(UeaRUjZ5QO)RFc`0eFe zJOpjwb54(ex@M0ifw8o=Z5+JsUTkjo@+12FQC$OCm}ku?PsBm=P6qAhS`<@~&SW=Q zqCXRCl1c&{S|Fh+=*lvI(3pHB)on3;nC|bjfWWE&e%}l}vDa-YCX^I;;vV}O>g@*T zy<<41*pSRa$h?=xr#KeZqE?eF-GeyU2s@z9imn*@_6%L1;#G?_D+w{1X#2lrtWTtB z>4JZk-5t9X%Pv#c_A8J2LE4qH=xOw{!&S*~N`1#Ad&J2Ek5b26w7ld*&xf9z)Jy4x zx^%LadO7Vp!zK9TR%x{XPDM>F$@G#KLPtsP(;aOh6+tx>t(9a6=`G_Om)GP!t^th8AANbuIuylrn?$8@qkP-fM_rpC~cnBjPrIQlI0>4U&b#pcme++IzUrzaf7^ z>wit7@Wv4TUVUDa=eykJ|HHD`Wkulwow2F!*j2>%!Y`+-Spk;*Lx*TmmZy6zta!cm zZbhw?lJXI*O=U8q+Yz76ni=Tem9WbktC2v&z6DUsGB zjmrP}i*_w%gyqMrG46Z3ONt!L8`Un-Q?^+Tt50tqZfo}(pUrm`j>&!do#9fnWoK8y ziD*sc8}AWUV^q85aDOc^*?|HNk$>b970Y|V>K8emBlwC*?HPA;OSq_;ox=}hytEyQ z6}O#*)KV%-aQ9znwNwfnRnDPAQ#mNh4{ zE=otEa_^cN?xRs}iL-(B{s}9#C-uD&iQV)O__shf>z_G6hq_7`V{nXd9EH8ExOR@n zjuyBGY1n+p$5x%bV)cLIwA4EaAfPyEDc1hR5N4BRiuuo~V0qMwRdv;8w!5qQBgPY# zZA~M9g^V{iHqlC$v+wS>f*|dk<^M?Pk~M|zjF66YC=Wt7Y2Z0F=?9^)ap_O|?gQvU z(SZNb)p=_aQ|jU^Rs9}T7o{MSQ>K7%K-|P!#M*@6y`0gq2B^m{+TzzO*~` zppRC|^NfmiM2NP&1F3vGa2ADk@&43)aJQX#BS!yDA)%&>RVpl^M}7MR*TK;Ax=Z&1 z{Ck5_m2j7d7GE0kNDY~1Jr2~nM#}>M7rI!(c*7ZcLVMKh&V?DqF^A8T8LgJ7R%jIp z6@LKf)WQ#k6d^&^|4#C!u3eTgI3NPjpEy(iE=pWhuuRr-ZT&!XHS%sm?$1=DpOg%Uk?ZhD>s=4kAaPa1)O4C?wmQAO^R)|?H*UnMe z4GYs&S`+Ml08#o_b(j_jck>~4r3=Mw zbxSB>*c@i+U-fC;&))ysRgbtc zruLID6g2!kiZT~pM30$3Cg0WmZ^eGLxYs3HUwY$Li+2=$p%S-}T>N;hPYNYt7a*d; z$!el{@fgAF_CHj+-jzEe%%?Z(p4~h8g$_pW3vttTMLdBq1TFhMmU-4{5EZ-VmFlLn z96_}faljKI-)(P}$lsB2fB{Eao!_A6kq$M8%RXE((N0)Kio=&V3I6@|rq^A7M!VS{}t2S|V4MP;~J-_ZSu1vvY0kO+ki zN8v3{U9b<=#T;5~d2@5-HrE(Qj{irsU*Cs>7dWZnt(y85S*cMr_-laqNv#X%T43Yo z_ltp0F3~l~b%CI719TIL>}s7WUw-(_E|!EBsD;mBv@#i7}ot#yt8;30!? zCp+ZGh;vm(k_O-FkRquOH|=~+jr);OfUHCeGlqXHqra=di7^N>O_#z`L+>v z0pS_Xf{KotAH|Xs&{4TNR3|E<2~KJEZQG3Io1F(FeOvYRTYmnfO}eNYS(`CP88!+_ zbtnt_$-TZ~mxe%xXag7I-9BHp&F-xpcR-ZV6dj+Hb>Rp%(#@4|`Sv`v=lQ1hu-eYC z1bzxTfCa7-(AXOb{yAGc>R z?migW-*wN?sX>la&NK|v{C13G%tS6N8Q{Y#z#*`i-)7@cswQ9yS^I)d(^(gH_`s)P zswAfdHN+gRcm8{%Xw+O!1!_%j=#<@kZ@I|3fv?)g&^zcUlbLKF`AS!=JwQ5WWF7W* z2jA^Z76MIM47jfx6pdp!=&h^THOgfa z%~H8_TOHcMC+yJc4^a$tnxNn169;#GPWX>n2fB4Q36)B?@h1uN$^?QdtBB4E`Os2r z%P?f4Sqnii^#Uxk;0g!2?*Il$A>9RDw~4GR ztzi{ub)fvrwqb>Q{mu4upiEd`8Sq$ho7FX%B9X04B^7 zxz9D2_1jJkUKi0L-R1GjF4fJnhrZtOYEJ$^0(pgOHIQrjy85St%kD+_J6ogZPjrAn z*6v5>#T79TqJ=7FLUwajx^GdJy6E4PIKb>TjqY#Bg==QUMe-fznnzVL0|t(Ab8YS9 zvRPHrou6+6eH(H2fLqkrjURdDk^&_5HSaexHhnUGTL1RUBBQrx4<2N65-c9cASHj0 z-imyT7?NRFDSD)8g>dB|$rC{?MhIHM!!Gb)B1nf&_MA7g|I7l2fU0MUSDyvt8MVC` z+YeRQ9c$kB>26`ND&R4?1|cO>Q-h>E67IkQUckvymNM?9;pIq^dLo?oT#ww+rXF5K zxJ1p#uTjnz?a2riCe%~k_w6b}($1TG4`B=K2_~PclunUFi7W8X93@}WWk;A+*{%aSsqK$KEVPnVM%()gri zm$l`HA#7#`Ja>egiKvBLRoafqGKzg}ky6hV)HEGnmz_ES04X3JHMM^8Bl}E9FNkjH z>Z-|a`Qc|Ao~A9ptnDoH`WUxpwx@e_J>!!t1;@M&G&ZQSU z?3ZCfPL=B7jUmL-laqt)(wTA()u;IufT{%pGQ5}smj~!Fq3(O&2`Z{1<&(7GVwO#_ z7CCdL$i4(V4nlwCd53LoBT1a3oBwrv*l%!1(^+L4!~+W^dRBiH%yoKHdUV#t80~(( zyR>FOY6^*4nv>_Jdz&Btp~fDnK1bfgc3c4tjgmsok)Pm3gF9Z$Uz45anFr9Gq%gv* zO?Z#Fy|X=T%Ydv_z|&jdRHyl@d+Td{$5t_^G=U-EEcXikio6zXb_z%uRW&8kfINm0w>^doI;Z87-j{#1rN9HeG1 zUxv@OT4o;5X_z(TVr&6*v*eWLI`d%sv>&?T;RQXi|hZ=F}Fw_(}TI?%?Am!&9 zAw}0{wy~#xPe;BdrL)%V2RQ8E%<0;~!UFwtx17XZ=TrgZxy^hd)kIc5moMC(zc-TP z0YjVDdfkfWwVI|uIYnF;c(M&S!ml$JG->;$I3spz7q6QNHrgisj(2Xly<(el84G`; zm*{~-#=%f~CAmarZLv+CCWfBFT#KxMq81vqT9HBPFaTJN`*kUT(!Lxr*#WKtUyXR% zRG(~b?i4gha+@0plZC6x!x4*#+?F-qPrl^a@6UKtrgt9KfSp~*j&J3fL?$q2mOE3U zJNZ$KQE=piTK)Yu5B)e)#l+xeFiG&mx3_rr-E}1B@o*9d)OV=s3*k_+=QboYeLUpa zpf}@qxoXVTYYyE|CGL{PJi&ysskL*oD*1S97cA>ZT6&-;@h97|Y5Q;pd5$O7k1*^4 zw2Nn#&KlxiFw3wrw5l7H%tIy~VpIcqWN_)JW2lJtDf!qh6bVB%;at{Fkvw-^#%b!1Ed!7wa4r#l>DSV(=Wo)O>K%6Z zH6J(fsH)c4RJNH%P_`@mRPX zc`IPoqjd32ZHU~_&QTdSnC_4~g*^9dY68u@q523%F317|-hT_Iv%%kaG3=CHq658AC)X0eGnh@G_wS!!Mxc*g5Tg)R?r4y9&oVG z7A;Rb?cmChOHBz_S#j~U>d!GdCixZ?DYw#uZ15TOc*>jXpE1`2vz(hEAqa=qDfiHP z@EIHoB9au9L|byBij9Pcp<$;rbCin;Iis4%^KB#dq9+!5SbFdQnt0we729jIbVd7S zTwoaqr{(k4(|aK2JW?toyTRzwP}aUO(!1$?=4#W?gcQbyRZRx^TuyZ=642y}1kA%j znh_1}117fQ1NwqA=x&{EYcrU~W1cv&dOG{8NHV0@4k|^l&7y!As3T8iRO$Uy6Z;~~ zAE;HyJmKMSfCQr!=9v4JbW1J-dj%UzjVg@#UDkrzF#%Nd6s>TsO1Yp z$Aph;7g6^FyM!_qoUns*TWmWL}5pa1Ol& zv*EGrSbU9Hge$AwK4<%$&7KeIn?4a~v}c_0{nhU2nL|=K$=G7R1P|6Vpoo?)=tB?1 zWz*F>-J+0JV&UZanee8NMwR*2`UWaki8e6-GB*l0Uekn1t*q%cdDM zR`19tm;*Q*IrJ|!e2C@%fHXyCx#q)HPI+JcDJ|x+$c`{!{B1Q#@&2!rMKj zw5VZtq=!5Z!muv;SjZF?p9ATYyPW*}us zdwx81`?Quw|J|KdbN~iE7qJ{rc6CkBIrt=hyXx3~D#a(KEHn?`;QY`V3UPO(v@%Hy ztCqJF;flduHVs$W-X<+#A8d-`ovxYOQTJ~>LU~{XLdZ)Ahk3?2GHXZiE`_R9lieK7>OyFVM_PHgOj&5<7?@KeESbg@F^ zV+levV-qVI&c|DCh-WhzlOZ4bc@}JzMP393g+LBbt(#F#_shI^II?A%L;~Zm+^4|O zQZRRVW5T7 zSR$87mUmd)vFc8F=qlG%{uT@Y{_rdEC8(L)ze?T)Ar zylVzomxu$ERI-SPV>8|yom$SYwZ&9$1Z7nnk^$to&9R`Yg{teS9$=l5nx=;I!b&@2 zPH30Fv#_gAq}+cAT>Lqe*a&Ut4<~gt#60i5b zj!dptrIKcAvrUGhRzpC;-<{|7dokBOa{0zWzya zOo+#(%42>)<78h2bmumv?O`ltCLz0N>g-DQr!nPkLDJbA7Q!$ZtlH18oGS3NzYxk< zZ7`bwlid>KPB{48gZTXGA>!o+Tq5i{17Ud>AGR`Fot=Jhnl&nR^-WkN;5>7smF4rn zlU<>Y(|mWeQzt`Jbf-gugT`3No`x|;UsR!k0opN+Mx#h#YLp7|JIzA7wz7}6xLY1} zkTZ^gmTR|sz((i1E4;*(mARPq0Iu|n+&;4o(#M|@r_LaClHbe_tT6k_!yCn8m{gnD zWk2Y&qk>u*rg8=E;Hn<33|vJC@1h&eg`+;_lx;^NLekhL(kmTs&(yPPJ`B1HU=nK0 zlvF7vXydC-*$RD#q?Tl6WQBe&JHxcJJf1|4yL$A=yRLSn7M4nw0GC+eZ?F*~(gB_afIqET@sf({e}q#&&gHF9 zZd_anK0|SXSH;APluW%tY|qPhkYt%(BB}AJz3D>g=2>Fp62~IvaoH#JgB6+iaHkbh zM5QLGtq>8a*T)y4G3{dI9kTx3FU~(#R|T>1BfJ0g_XFSB&o^3KBe4oBr#IFF$(<4} zm6~xG5GcH9;mhfVi%YKEj43)Rhu6m~AI!n*t8m5b>Z9qO4)2^t~dcqIZxe-)_N@ZyGUm4^fb? zKbrTN^LRO8y_E*k0}w!^5iGXci~~*yF|9q$%MsrNYG0TY_jP^mm;CQp0L5J?>W8;6 z%2#L@`P+$pr_0TU-|h7IslQdNaxsd}cXoaAwR7|Ojy9ZpjrF@@T&<#oHw@nNZTh`^ zTAyVtXK|IH*=9Ssl#P&I%8M0 zthqD$m|uw1Nw01vRhh1;DA)5$#hR$3hh-D14yLkw%TgEZR^Y{~#;q+gPH+QZ&QBt}}7Z+(@ z^A`V$vhxgRI$gKD4l`DYsPv|wAiekI2nGv?h)Ay?6zPN(T6C)cA;2I)=!j8@^iHT! zLVzS-1nEUeLa(8PmiyP)bI$C0_Br?5?|h)VJX!BrzxBKvl;&LiX2aQDDUaC4Pr5h@ zaKE(Hx&(%9ni0sY(?OT(`vPTp2ArXN8&)~bgbg>^x&w<=L>8{t9o;p!7sl?U{ed@4 zOl%_9&`+!?A>71y;va8}=lN`J%1g{`8i70jMHR*!&US^_A)% zqD$1N6xxI?XIv)Xl9)JE_FDh*vU39V7_~tO`0vI2M^TTU&Q_G3YsW88FgDSm3jT-} zadP$-`ljT8X7A)Z34=TFA=NwZx+B=tx;bM4#!Mn3YUg9Q?1TACq3i?DMpHZzqgFD`!U72!o*eRmODO7HT*f*0e2>T) zb_s*D*}3zfY;9(rCBm@Zl;7_CS~PoFss=yQ{iXTZK*5KM!NP&=^E}@y-T2ep_P-}v zu6e+2us82oxX0+&S5}-FFB5@(F?&)cEKrDS;1Ss@PY-&d;KLByIu@;O)ftH9O-W^m z)8VzMcU~>7molU?y%S%fo`Mm74BbaXHc_bep4gqgb)_OK)g3eH z0ilqB>BIx0-Qowc;>_0<>%wvZYj%xM_lv!6_#Y?KOT=Mv3NtvdHPKEs%CXq`q+P`= zHFVqWBW@`i?!02nX&APy8yqwB)_aD=`xOTZH)5m&z8(DnHPIJeAKmPO8pa`e6vb`%K`St8cvk^Ulie)|pjg0Vn%jTGA(4k*OQ)OvYG^p4?6`A!=bP zW`4m?E*=}$qb4ns-KE17Gceuh!o}We$s0v+&%=!oStK*k|idyHqj6sRqo0paSKR}AzSGb8^U0zJ3Ectj#mUqVqedp99 zcHWl3AemWWIx0yXHU|ZQ$Odw`x3NrRMM1-NU%CFCUBUfArj?W)IcY(i!hY;@s8@IE zLw1DkpjDPNs+ZGalnLiHly3T~NAXc#a)esPdZ44)hqQ*y(x3@)&{;N~?BbRx;Ja!6k4Ncx$WGLKZLE((gL2^c*Cef8Co5O$ChdYf7bwC&eT1NT{Ftez z`>ER#xZCr5LaEkiZR%46oan7F14Nb^)O7C%*;F}pH~X0DuoSc_)fE=vBD-imR zlH~{LIZ>5Ga@s8%+?sAR^_=t}vTup0q>b!;260<*CoP|7O?E?SEiYK?5`axS(|hIk z7r+=33EJGG%aC7=`@|AKSvBe#A9dElYZzbmau=C;(A@7VpSZVV(Dv`6sD85Adl_B+ zdHFO(PNWo?Z2yw7I7Ry-9}cKU`PO84ks;)rX<4BCCT$t3eUx`@m0!keo7UNH&DWZXM|@iaRYDyRh=oVbnZg zs*LOElXox#(Q)$w1{wfuBNOR@5hgc*w23K8!9vEaJn|v$=@E%hk~e#TRa!K{^^Hga z<$86aaGx7HlQNf*CDD(t!WDBJJv_?yjCn?47wKd_?;RH>psN2IyGm&N!qxO;-n@Ql z<2h$WB4dA#L(<(%l}BwjtJNS)C6pB?!bI1RQ8@8zjucP4H6@7zacSys>2MKv=u;ub zeV-tlAQy(+fS^vMg*jWJm=H2G4tGFpae^y9AAXcyU`vaotz^o9* z_u{ZUDIo_xEqRT|x6NnFc)_(CZ$lM8mX^#+THyIy>A*)f-ePQE&S?L>VocCK1E2Kr zTCc6oo*&d(lXiRaC6ekHfUYd<8}mp07y+e*LW=(DO?%C|KTDm2*nNy^Y{r(K#;3uDvmOJ>CpDru7vCJ3J1mU& z)hXGkh)UFt39vWc5k+q>g8~KaT50!7XpNkgcfWnaJ9iUlqy3@&k@$Q2$H*j-j32+C z0GCOo?u0X!Ii&h~gO~o=MRS?|IphJ^vD5ZWQuR&v1xw6zAEkWpQ0V%IAJq?bc$A!z zeBLs?-YQH)<7g{4c~mZ{BCMG3O2$GKM1!GqvK3^q2^mvRP(9;Y#!AvN417H1W68PkP~G!(6cac*DT_s%Q# zUTNuu_#S>_t|%QX-E%-g#_BJA`|w_3=VzXSAj$P=g7Cg^C(fgXtM>Sip41DJ{dBok z5%KjJ0bB-6BX}XzQIVh#vM8d|<0L7TVNy8<_R;o?bn1s4Q8~&ylEy5Pd zo-DGn#D4Jgnx#;6f1O=(8V{}2(`|b37B|c3TNrrmWq68%YjFk3{7VvWy!*(vUOCV9!sunH0zqRg6V8hmxb91Xb~uw-WSfGG}k zr2Op4ge)_xL^)5kZQeUn}@pkbXaR+uXb;zU$*3`Do z9}xK{XQ8+)t*buL(v$4nk^32NLR)7XmxK!TizEBEFxBT`kMT=FjkaR)*WhP|h%cQ` znrl`xO`X3Z|gEd2)R8l!Tgo;zf^4v3h_0BFvN7SW@Po4o(O1^qZ5R?XgyxCGvrmT%MY6$hkh-;!PQ9)p!L+{!V)nzSO#S)7uIN>KSol7s#xV zbaY0B7#}pO8f`DD3KG%r5Qc1oW^$v88ns&=@>>vMN$&jM)DVITft%PfQsm&n_1rjo z^5jbyE@2V-c8w7=81b(GEq!}@aa+E&R8@c!TCmtA;%)GPxiVb1IW+UF7h7TI(QTok zyPXHWVcn~HMSOg(%$0HUu;g+Nx?XAg7|2V-^E~wyeNR{_-tXPnFy1wuZ6+6Kosve+kyY`wnv=G1YtHhsSe2sSOs`Yg?kb- zsioifPEL|+mrs*8WBlpelusJEHdGlwttIOz3E$-6OU7xr!5lZGy;gqt0(*k9+SR+RilgyKnDQz&h5KkGgmW>jrK(d*JN6lPOF@XEWmZm2 zLxH;wR6|>cM2Jo z7c*oZvXwI}n%_9$t~_J_@en)J@Rt`boldHB@N+a87ITg^du$ zNQ`ITj_dIjxhG(hJ#H_;$2`dg-F9S4d|SAs625-6sa$;}S?p_d_u;R$E?b4;s}6@? zlzLDYfvh9oZwn2JK5}{rHKlQ*SwiXtH1U)NqaNlG=|v3zpU{{z*M-e7GTpxWZ2b&x zT8x%gVB=F;g?8mk*S&gVOi|U626ZcB7#*|8e7I`8cKNdey3HqvRiAGaq?BA| zrFR+8$q?q0aPkESQmKLbVx_4eAXi0*CxM@uw@)0<|45k=D{txSm5_{0SXaxfIc-n= zLXanX%!C2*wbJW&5CBeI_>6c?x|~5v+C%}Pc5^G4TS@2?K^XkXezeh30hq8(eGY#( zjgA$QZZ7%qJTFfo$OAByVVzY7kqNc?GMe|v$rcREso7LJe6lCZGB$yG>Iod{$FzZhv9zhR-eYW*7 z-1=2fYoiH|o9H2jvV4Hx_I|j(XzzRYTZ_qCb{^8vvjdwwL-SP`P!v9CFfe8TyyjK5 z+_J~SM7{>m8dbvzBI>Telg#RrGKz^+jv_e-2C3Z$tn{O9mxdRl*ORV!=Ao4wPD4>K z+0N6D0PWd8#3^2GIWyT=3uVQCiZk9+&M7bcmv zGyS!cpD(7kNwIVRcWmTmiOmfL%FkI?5&1zbd(`Dk{P3{)O{>^!rL0NGw+#fdzhtdQ zw=e=~26vK4}4+T5R^pvO3^2UHoFzKMeK2u8S zpRK|q;a3c+1}{lbud*YQ`fL(%U6ZOE9DOF|pO3HC)*IUi{!#(r;HV;z9ztXl&~5iY z;4V)U_JT+Rb(fYrm9Ce0ArU(=$z>Cus`$x2g%|azLQELNMwP$^zHW7q0^LVYg7r=S zNRpPF0s^E{yDTGK{2mn{Gve?T>E#E>OAwHCN0fe3vVh#Fn35jTc=4+^3h1n<5fFo! z_*_g>_N67)oT?#bU+TOp4+yWZ%PAQc_^Vxepj;hMCwU3#w(94It&l?h;E}F53;ZVF zH*9~#^3{76j}^)*%wx+jym3#3ic{;DBDza%#LibDhpU4NtA&g7 zH_WYB$)khAH~*5PH*sA8@0Z!$somlC;Tx@~=wEOm!*5>}jpM2|uNY$tztZGbPtxkm zY5DOiyOEuNe{3f6>cnn8c>YD&I9+&ASo*+}A9`BH5T(wg$(^FzKw`HI{KZ}}UOY6e!}GQw*ex!5)4MVEjMrP!`UWQgEe2puAsIdKR|cC{dbhSv6_}J-LDr28tkyaOhra?(Q^LCE8$aH<4@0KW%kYPayF-4%-C2Rd1WSRC zL<||+7>dV^p&OjGju&i>-D`#^-QXmmN&2e_Y8B>b_aC5W%g{Em=qlqYfhJy=ks0rG zBYugC`I69vfJ~Qi& zD@RbIo{iX6b15aHXn!wnu_}D&m(FAvFUAfPq4fg>u(#nk8GT8w;1!V7V>)4zgPBF5e@U5|C?>CPvA`*tky~ z4#F&^ibT))#J_TIUC*^!Y0Ax3gGcA1k% zkm6M9_z=^pB7a>dgaI@g*t&*XF$L9a5KnNtXU8VvjGN zAv(o@!{Tnay5#)2o}~`#q5cX-z-$#L;zi}4ob-^&TYyxz{;xt-6h8PoQLCGB@YeB0 z>ZK&g(oT__+R<|$I8ErctNrP`{yQPtz5@l6Y-%yBHe0RD z{`A8x;f~{WadH=7cL>>UkEjv45>sI=><4_*U%HKgIuA=Yi@(V4{R1!!-pquWatgAn z%A3F<8z}a=p#$};um;3}nygRTW7#HEpK+Z{9l6h;6DWI{~%&D(3*g{DXNe&ZfM%{I^qA{JFm3WhG+SNA}!<0 z=mM|cPPfF~KfTwAk(r8Ch(jPv6Ud-`774UdNEgVhmwo`Ce4y>>-;cH~(bASJ$!11V zd4;_p;=g7o)Qu14()v*9qaKzTZMl*GY?v<)^A1h+(884RTxJ}LR*Q29S>?Ytu*^2i z75Mzr-O3@a9Hqd-650LIT(|KG_tnaAJP03kgG)?RA+@jH*!k4l{)?nb0XS79p0J74 zb`*1qn+RvLv_f5Z2>q>4!&gm77VGdxT-jbm>;F!_V#1)26S2==#ezImnfEMsMW+0P zv6oYvlX+r|oHYI>UybB~m;bW~@aC^303h@K>AxC8|DNgr5U5QghMh54Lhv%~xe`7=Asu^dkn-L>b+&jsG}!|!D(`mcvCfIK zB2k=A^_*Oi)!)VIs?;-||5m)-j_U%eznPwq3T)(8y)T7s69bh<>X@d~x$6d`Sb|X5 zz|DXQ9d;8->~@imP1BDWT(ME&z5ue6AoyD=akfrIUFBlJJ2>Z_6AiHPY}5iPyh*&q z_^}vsxhUN}Q#sgOIWDE0=@!lki>ENhSi~!%TQm6X- zuwS<+lNgpbg?Yy%XETtrfDkzi9t~y;e69vnKp2`be#;dYSlbo*n*-Zp)1aR5*>|R= z9_EwoJ505xV2xirV>zLnTW+?>yl2vFttXUg`3Be%V1@3%gidCD*d$KQ#4U7Ef#LVn zlqF$C`b_cr%Av^B(__1>@NVA-*+*8@4NY$P0wM5d2n!;2_JW8gb$CFOUAF%^t)l&F z)q+<_Qai0^U|7I&7etU^B-`AGgJAW zy8gXRRr~+bsict5*7&2tG5+U^qwjinW1e-LVMKDiiRVg{?e422Wk2Ljen{zAS4CT& zx_4^C<#V-){5N)IzzCRb!g@<|*rW5iEGe;ELg>-F@pOp2gZzpjEY)d20wfh;Lq+~? z6>7fosu;rv5FBxTtJ9Cgx0}?wlRuD<-VS^0)^t&UUGlD+ap&FI>dLAiUWHA7Qb> zE6oaUhC4|M8n5Hw$oyjeSZbIh7NvxX7AJ10hIx->XMM{4mK#np3;fFq;CCbcp5vP} zOSv0LG~9*WS*EmknNOZ=^D?6~+UBSj^c&dhlxR3@2S-km|5ds^UOg^gN$W}&5%O*_ zs934C`ZLE@=U*F=6G4q1+Qffn0I4r?{u$)YId6ErrNqYA$d23-7i>QQ$nSr$(b>uDXPjaVr{?w}9YK7#PKP19rI=bSFmTkcOfbPZd@ zwYBJ_$V4uzbJ^6tHd}br?i`b3G$aXz_)z)}2V7EY7sMvV)V$oT?M+qhhtW1yX!yY` z#&X?TX+E3o-ob`J1#~iihfBYUcq8%#nS9o;^c))RbLy)5c5`TpPTuJYamN?Yco$5a zZp{un3`VQ_*6VPy%3a$VZKL(LY`gb~w&oQr?Ch3=Jm1WpdUqzEe`UX^A@nTNt*ckg z%sYyF_geJ^bvq!e&H8aTzd2_qHNK1d<-Tj^*EXF*4#Kn0N5+}sL9pW3;l<|d-ZmX7 zB`dGy{AcIKucN+BN%G&5w^CRjH(cjBTDulM_R9W9bmV@)_q-xK1qovg1>n|&W&ki1AJf$=I!R?8ROZ6 znVW6Vpvish{t{<~&kEc*z@w^MuRRmms>449K1*B>Yb|A?b#sOm&l&oIkxP9ScXhjOehrG7%*0?Ti1w zoJTnGaTM*jozD-~c!xj)`T($z0o;JqWA-+MK*DEeAw64ha7Gl3xANi9Fzl6f4b%HX zEDe{;v1eOkktASc2f-IzKW!?*vvxPK4h^0J7ZSg*N9!lUGqY;8P3uL`WC;xH?Ew{q zn#-LFJ7TM6c(?oOu)rvVXX3E&8~x34PWP%@#-C<0qy1LV@tm}wVQ=MbbEi0hayHuQ z2wFg=rL;Dkkc+i1l^GloJ@F~FD^qZvrvtuOlbjYyqK&L(V(r6&Mh0yIVr7Yv+KNai znEMQMfIfQU;o%AN{BF>mDnA5o7!)@&IZK;&yQ{04D#2|n;G~TjC-rmDUQ28EC)&W4 z9&mZKQbKtx(Ths;2o9PU#4YYkm$R~R37?NvZqD?gwkc_O^mV1$@j?~7w!N}$9_+ae zx_NjGx(qCBQ`U$jxedp@Zl0l0?Mb9AD<6IERzO%*4Q=YVnB|Nt16mSQFd2MUPY2HY z!O@zR8)0czo3`?eJ3E6jxMfCi;_30u!4GP^#mnnL7)t1oG{a_E96<*fS(7h0Nbm3} zW4NLw^wO959>bAk1N2dL0&95Q4r&`8QR3&z1#}K-_Pti%V7CRG3|7{RQ1|w}0Xm#* z8~n-qMPwbFzJD3lo2IJ$CRte#pGU39Us+m%H)7XnHrl)v5ZQ#^TpcTTH$+Dap^gnj zQnmoO?s2%hU7>aAkL`CvJm;#U?x~MQA@s2hmQ?T+xl|Kfd~XPS(qVIH_FE!5YTwJ0 zrgRKcOuDU5_H(5DgHeyriA6fq!wc@usA#Kq*Z|&I_4+iqHOL$3bh>PA&9-{Kd2PF< z`J-f#z9u@l8Gbf=QQz(z^lBb&y3*Km zTvlYWAoXRDzU=gE>kpJs-C;uw@UN@A)2x;GsV0^`X|D&Wt(xW)YZuz?$o!6)n$4=-ho7HGn4I_` zt`L@W{V=Q!=uIfWJqJ-MLRGnPlQCT-mcVa(RF6N9HlW=yxrU*i6#*+$_R~jg=vhHC zhy3Dv#%3T$v6k?x*S7WwwQbp#;n8J5PomUb^LtK0gHJIC~Z=#r9>h3q($319bojimkNxWf$5 z6_b%gdT;?e3$6hV0YN9{adRr+4s>K_NlZ0oA~w#j{Ma0x9|FBKc&)q|1md(ZjR(L0iS3>OWaFalOyDDzS8K`^VpmsfLd%d~%k z0yvJ)=BVW|f6m@zc6nL-#7l(y@G~uF>*v@zMOnd-ciVcQ82Q-ABL|!EP&FZ;xS0WM z*K2V*$IJMHvh!C!w-P4zB(*jmR~ld1y*3-U;R)Gb z)Un__B=3zB94dspEC0dnY)Tn#qLvywihJ71)XjMZ-ulV4u6A3U(aH8$S=WLOfNEGh zu9e!kiVqs@?kq?WdpC1m?(+%hP9SGDEW;B9c-QKXz_~^__q-giin}^_=~E~l^eC-W zR=S~pFWqTYa1jOj#L36cnQ@RcbJJ7bdCzTEpRiQFr96fcNus&u*||W^qtcx4t7W99 zG=i44h{&5}58bS)=0A?Rou^+O#+Jok%@-7_));wkUdN|mGx}4PDwcd98$1=u4Y3Ow zU9k`a-jcSx4=Rmp_1S{)BYZde&8)D%uJFm7ZyeK{wX*5?UrKr*{NK|fR8CbDSql?k z0=nF+RpWWd*6i_5W0&rS>wx)yo^7{JKtu7-_0P8XVI@~n;~YF^YmX6`pEjd_t19OF z&3(!MHa>-U z-kXEuMz%P^n*D`?UG4J0GTWZg+EXD%d&ftHW4Z1JqtXSF7Pgr?H2Q%+2Kd*&m1>Em z#>~2nU6t^Gfz=k=DYyXe>8-rg3xk?;EYLTG4854I8E=-YuUx;jbDXt~Vo^Cx9%=rX zKb|ah?r^X6Af%wV$8h~E$uO>FqoS8(0rhIU;}c&kCuauXd%ZOgTP0p4`P&AL09D}Mz7xB$vb|m3gKl$&s%E#=IKQo-z~iXDyjHyx z+duVk5m!_6!X|-j=8hyZ%j+9(G!m#D1TPK)ek{<~T%#Bce;>LLVLW)wDZG&_qa@|B zu_M1s?nc6p;VUy0&a0y6#O5Flc)je1m}=B7oW}^d4`i#TF-|0I<&I=? zBLof`nLb;ucl`D06WP533rm>9o37YqAcZDK)`PtGF0Yn699P`9&a0HvM4>&ur{!C= z_l^V$Q(h^CjjujE0`5B+3u~?W{0|H(LP1uV(i4Yrht?7wYBzQbLc&JKwfwKP!-!wF z9vJOmTh-$Z5@K5H!+Oy^j>Qg>R%ORcCX?PC0ZboPwce>{4^evBi^m~HiIiY>u5o|Z z=*ihQ*BzQSBV@cvU2)DVAx@tyaHZ`MbdWUATZ**N>X3=mjFqj8!LPDruTk68WJ!a8 zYyTxr%XskJZl;GP*gV}Av$p-&XH82w^ue6x+Te{qzL*8}naw!0k#s2gE?zNLZ|NX- z&-nJ_y!Rg)g3aFlnWXL39%ki?d9X`MS=vl0=EQ|bquN|qEj3d%0c)aoGB2Cbd-48Y zP9Km#Ew}f}DD28JMH)WtcG2)BdZ4K)1kTHl60N_JYt|MIBIdoRBmymdW@#Wwt)DV06y)xioC71E{IFXeGBE`ju0FD; z6MZf#<=#)Qv*pv*QDDciM^GPgIRz-z%ubH>jKs;!G*#YKSQ}---|7-=BzEBfWf(#>z2x- zT1QW|%qy|j7xxxn`r_GGh(&@wfC{qvN8G$OJvS3Cld-+oYX0eHg=~rXozK#FNa?>r z!$b@R;)_T+_4c!_?g}p}grq2~j-H%ha4Peai|hm_S5+7KY)_y&n}EkZhIyrn75e73 zTC5Cy%PItHihpNKe2l7{1tS~Z?VgWp&=Q7x)g9**1#-2DU`^eP&0PGeb6rWXAPS3D zC3Z05L}ERCvCRp<#Du)7A?U29s6YGqvG<+ZSSs-*KRB_^^DQal{;Q--PG!3MTblTqY>fNS zRck4MC9U-L>%P%jc}H;ZFrPZ!)w zxbxO1lj^fiG=7;8r!R%uzB1SK6A?=gH}q)G&;x}rTCN>7{`lS637q|zt)U_9`drVh z8^UBP8ZKj|yzf?$t{XDVov|;Dj{qy20__^$8b~lPH)KvjznOlwXNCxFjK6JW6Y+3V zEx{S*0z6^S?Kx<*zHIm!d5nrt^^iNYiZ$DH z0qk9neH?sW`xT#0fW_-!>4aQ1aMl`k$$yj@PFqa&?)G-$FLkR_Cw~o;=`S1O%S2|| zr?2^)d=hd}#h^KPX}8`sPUs_?N&4~ar2e9x{RV;}HIKwUnV)Seym+XuEZ})mi63!T zC~vv58(LH$XzR1w>4$!`wgGQ0&j%6kkB_b7lybcy%4MHeR_>3e0KBnuI$^11loYZk>R(C@8f8ED-?uq#TFx#&dmvgNc#M?;d%Ds13NrW4gw0qNHFG-n z?+Kg!e@)nQ5wHJB*mn3&w)on{Awx~ZdgL4DL_Uw5zYs1a->D-ZE2lGSM8?NU_FWd@ zAPzr_!=wpVXtX_KH!e51?ICUz4SZ&pr4&%Tm-)G^Q_kDps4RjqMk=!izK@w&`F(oi zVXsw=+!T!F?viMaBcH67LNArKtfy~tZfa)#n}S2Q+I#!%K$`2X><=ypo<-+7Z@d{F z0rI)15Y{MbR7k9R8hb)xT--tR+?k`JlrGsV&!-!NQaZjzHAy8?J8ZJio!;ka1wY?#x;j9Vvz1L>@+yv z`M%twhdoO!wQ9T*h8pfXudJyg1OtU=xGB3w7ihdCxhzxC%aS7+F3ji+z!^G`!x=v( zdTw{mx=gXcf3RZGc4E7CfuQZxOrXYW*(%gZC9Dlvf3UwG~>ym|Y@{8wL* zSNqQE30zD@QW_^`+VaNi3G1iL3NsREY_V)?4~~Jh!|nCEC8L@@+YS}u)mZt%F3BWF zb;*sU6&8A9t%Q1Zc(mayl-8DULbkHI}z84NpkY5f0bq5>UmA%_K>mzBu{XJ+~b6+J~ zMtl7d{A~r!5IH>>&SeB-yjv*-r~aZFwu3x6`{ndNarqEddpSYy>w?ZxLfVOyDi4~M z^rJ-OdS#Re@`ahl$!mv$Tue)he+Z=B2gOaveGPljc0Znn8TA3zU&90aW|ym>fbO7h9W4Y}KZLYG@PKDf!{w9M&f5S!n1BP`2kEsOs|vwdJ<@N5 z5P@_}uZN$?9flf)cyd`IC~in6g{*k@1p)u0x1`~l$ z7Co2DMt$arc>dCRjGs)7i7*^bZ@N$c)mS2 z)%9rm&tk*i&tk(k-$~Amj6YiqW2x$V<{Mwe#NJn_$XWC}2}V{h;s?H4o9K4Tg%i#pKWn4p+`=>_3%}hEHh!e(6cEMo2rCcc!5db)dIL!L(PHi7y4viNnb*3 z#+{#$+RW!@HlHpWXUOks92aP;xeImn!+0@m|G$aWp3NWihNTD3+STDSdwJO6Dr>DW ziVd%%Tz5qtC^zt-dJqCGsDhudnw0u-t;ElM?0?2;)*yLl?Hvm=Bt<@Ty8g%}Gkupn zvhn|ttVL-d{quo-7=?CxO<{)hU!pbl=0B?q72W|&N~Q)}U+2Sb=aYO%Y|b;}wDWWZ z6ob^ydIK=Df>wkbK5|^lQXDZaffP#gq^C}DOH#$H$$);2^M&tvxtHNkx(9vv8b=nL%4>P!q2U*Y5Bozc7Btf|F0L4b=TY-CND6x# zugeX!z=nwY8VzdBCTK}erz8r`C&JM_e7hpn<~WGDre?G)A`>SaIiSCNsl&S|iu`Sv zWoVU+B~Yk3n}1NJfp}l1gtr?d%DVqh{Ho#o3P@h)KHWyhxTKk*1pDL~xcGro2zm>U z;dE|NNSPHu3<4`sESMC-jsR?ea|>`kuRW$Qt7QIiaO(PBdY16y8NYqv?g(Y??>v)Y` zZD+2hMhuLp>slh#e9{X2Wl&-M=F$P}*c?VPdfTh+cl<`=ie>(ifOb_PM3MgcKNXz< ziWs__kt#n(F!aw?gLLR-WGy&J!(|q+VcsH7*9l=Z*zCx}iTd7yeEh3HrMIctuSuzE zCIj4`n&l&$73voD!=CNJ^hSI{P;Shpx4rPc@k9vg)B}P}pyM%F6VZB_P4nC}+q?lo z8^=i)&Cp|de%}?UgI);@a|j4u$I|BezjGJ$QaD68Vyep3EDt?(9#TV4SzGOt+)poj zdR&M$!dSqFWNkIO48Z(P>v^?X!7$HL##uiG*frdQ=-*iW=@WAsHhR-iR26OH7}55^ zE}kb-mOMmZi};-trZ)Lnp|=#a21t=Ws)k+azm!dLIL9^mW!1do7<29iah{b3(&}AI zRx%V65aOG@Jlw?@uZf^CU*Km@Wym{JX>}sV`?Bf-ScncuIfPOm z!oJKVnhlL>jMOq+TKmJCg12CZf30c$Bt5K0A7%!NJd6~N_P5$i<&gsY_exANM{5v3 zZ*Qx0b_!MClkMkn*Z0N+vsP`TZ9_4q4Ruv0JDXhwH_$(B`}G>m3NJ|)*u{U2rSvX& zlo+DxN_@)qi`)B4JxKPZ4p6{A6k{N(Y{gl4evpc<4c^$g=3MS0HtFV2X zVbatqlhWYijL*3IwWyeuE62U|1b7bPeOi9#sHpPA#Y<0PPn=-hzpMNEV{2x%6^WgN z5Be%^G58R+f8_4?8g4{buP6MZ^n2G?95*bQ7pg=LANw5IVUMz&Hu*lS1e0^-mKlFS z`WwfOsJ#!RD%IbLSJ7UQL*e6TEVzeGu;DS+dQ?mj+efb#Y!M*C^*9Z=C0_^L_#g|C zugdfdTa8~$_wHa4q6MIGwd<7{Hg#uJT9ZgZaDmpnOX|NYj-NaQWb81`Y*kIgbZ`|* zq!1d{zqxKL_@zNIeHsAq=jCGMM040E2v`c94>QtS(QRgb1A&_`lpR{D0Isim_4-U{ ztPD;GWv#K}ZFy>Mnag}E?z3742->#xL)5S#*QDA$gwfYz&qar+iM|NXdxmwX9l=AR zPA1%bIj!==X*d=ESl%O63i=6SRcS009tsdAVjkz`Wk;Q;e4NLuIrCC<%eMo>p;GJA zu_2q6!53ubW7(R_9&F>>$HAlu`Os`qML^rkM^2AKq*WzmzN{YSthwpx6lmm^4D?5D z*V8`3Y}jah(2X9jh{Nk)$43pGyXB;369?$P6$360nU`2L20ksLJ7rNHYGXpv%?tY_ zXD-*X#@how`fJfdc87UOCm?i<>7&l}b0C1FraHvarG9AbNR4zYP z{kz89Hm!x)KMrbGO1W<-GN}#kb9w5w4$BAbZl_0Qhj-1`gbz+MHvtXghm`%9jFTEBzVLSYB9l55a& zHd(t;QV}nb)p_B+d$WDSg8a0_fq@TDIXpoA69{Bc2G_ws z*ew#RG0ydkxhzYv6X(r?LrZR^ApkiV0f11sBrfZYb8Vf*2@&xEfD2e2+dfZf?uE4C zy?(i$IdXV8Zui&^eQc?HA3m8|1F-R}PD6}BS$&t?F8r;qQ_H`yCYa1b%hIm@`X&1>19D;?;U3K>t=mUUpUJ*2jh&_n!lXOl0-8c z{1b_vNO!1hJ_{4uEf3e~Ik+wWUi@u!Rxfm1rtC+{+1X|+b)*bHON`XFztv23Sa=LvXr0oDP3GV%DQ zr?XIWuI|Ic-Mt6r!n{?r879)4^?{X}>y9=fB5~$QratUFJ%f}_qB`8;B{vi;r0S;K z8xEcMQqXepPwTX=Z&bb~14MiP>U8r=$+QsJLeDU>RATPIa=7uR-6F=j`^>nE*Va2+ z>*R@B!M?BmEWU5`mpc8h=GHU?C&Yb$0_UZ2TF-@NBQr0qgAQWL{1S0yQ^ykmsZ*ED zXJNu|`@qXIQ!=}IorjTSt;eOloSvDw{V83YOlvnbg9A?}rVITNLW^1nWHz&R&ZEVr zOXW!Q>1ru^Tz!w*tbA5=n4FLIi`u=jz|1leruo`_j*BTeSKHu}%bpf|GD42wdYrF5 zr*NU*-h-4; zu%C^}V9clNRSrh3#?aW{&eCyxzciM9W2Dokpp6?n=*C-2Kr;#UtB!)~%iw35qO3~SEYHrRh_$mpwdPDlQ(ZmXx1me}=N0CKVf2ka z2KiA{|Jl6Z(v8k0PQ{tP436n>r}VRWfqF>-0a+l(XPwTXC7$f|M6WY?+W6D-ndi-x zWvh&)zd98GrZUV-3=>o30@I@5cuW7n5Sooa*EO{~oyg;W!^{?xxC0GhOW#rEYCxo^ zNuFP@)VIgj^Vh(Hpv;d>NYQ8j3u%a%BxP6~q@t|VtB=}MVYRGEvK>hCP)y%!X3nv* z3B`Z!R`OH~5RaHvSEh6HU-DG`e5vVYv_mWV=7TS&mAVS%~WgfZhB^ z`CZ9aS#fn5*F6*b=3P_#BXH5-TuA?3!=>QM%>KLk`dxd(VJ%Y|&19cVlZPlR#&T4qjGvS7?d6o1NL5gLLM z{Jh0Jb|teyFKz7#QNoE3WZ~waKgJ-`CkWzOI$5(Bh!JBu&uEKEmZ!j-(&|A^F6cp1 zNNcMIr0B#%G@QAjdOibSu-0xuwH>^JJLf&BZmgF*^AcX@9J-F zXL?-R4H&`KAu00(*j(TE68@~L~dZXU5R!*@J_Z5Wy((> zsXmCq>ZpWXr))3ni?t@$WI{+1WiqlX{G(u=At`3~&=ES#YBSheNfN&zO zwdeqo;W(y#BL6}3FJ!ZJnJ0Ka0V75vN=+2S^1W*zGaAtL2Xf|@4$nv&hd943S9=bx z9jq-rCAIJ$@Y5Q39uKSP%SDRo|!FB&O zM56rFcX3!+&~t`^6$MNkUoON{RDlzBCfO4&fvl!?mr!1iLFu6>S0q>ncRHp#fa)+lHvnErM9_=EA(0T zjw7#Gr&CpPQrZYzTj4cbnRDPe zpw4V-Wy96U-9F?f+Ig|P;G+?!8mH)4LiFPl@kHF~(FIVPsTK+fRBx6w;wot}%-{W#OFb5^D2&DsKuC=++JlsxM>doVDA^ zI`ETwd?u5ls82y*3V?fQT5W_dad2?&ID{3w@{&5-v56E!ZD%NqxP(g93jvj!noCsF zfoW_hoj*$^(?3%N;~g>wVnj8}#QWtoRC0dS6U)i!Jc8eM?yR=Dq2+yf7HCVH_vWF$ElHQCd$5=A zmi3IreQv-$5l@`1HoX0>ttAWHLF7S+&me{+RTYW7nt)g8SUtsYv2x5Aoze5f1CmVo z+FaU{m;KZX9vMT_6op>*roHo0-aX)NJ~Gm5lu=g=BA4 zhQvw-gz>+0`xQYB1KFxk%0nyri=z>u)8;FG$l})dX(XfW83R-r{*&0dTAhb106rv` z1m})e6M1#e9l{HLlL9vE*kpVEUy9Du$h)+ZhQbB<)3~uO79ZVg)`>e+RJOKc?+4&2 gDk^)nr{G;GF}QQBnXs;M;6&xTtEWrd*|7BA0qG`=X8-^I literal 0 HcmV?d00001 diff --git a/assets/banner.svg b/assets/banner.svg new file mode 100644 index 0000000..2b81f19 --- /dev/null +++ b/assets/banner.svg @@ -0,0 +1,141 @@ + + + + + + + + + + + + + + + + + + + githubbot-core + Neutral GitHub maintenance core + + + + triage + + reports + + receipts + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + PREVIEW + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + APPLY + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/test_system_agent.py b/tests/test_system_agent.py index 47a3254..b460879 100644 --- a/tests/test_system_agent.py +++ b/tests/test_system_agent.py @@ -40,7 +40,7 @@ def test_template_identity_is_version_plus_canonical_hash(capsys): assert data["sha256"] == _recompute( {"schema": template["_meta"]["schema"], "id": template["id"], "blueprint": template["blueprint"]} ) - assert data["sha256"].startswith("2e72c000") # pinned: v0.2.0 blueprint content, BACH contract + assert data["sha256"].startswith("2e72c000") # pinned: v0.2.0 blueprint content, consumer contract assert data["capability"] == {"package": "githubbot-core", "version": __version__, "spi_version": 1}