Internal: format unregistered component error. Args: component_type: TODO. component_name: TODO. registry: TODO.
(component_type, component_name, registry)
| 64 | |
| 65 | |
| 66 | def _format_unregistered_component_error(component_type, component_name, registry): |
| 67 | """Internal: format unregistered component error. |
| 68 | |
| 69 | Args: |
| 70 | component_type: TODO. |
| 71 | component_name: TODO. |
| 72 | registry: TODO. |
| 73 | """ |
| 74 | registered = sorted(registry.keys()) |
| 75 | preview = ", ".join(registered[:80]) |
| 76 | if len(registered) > 80: |
| 77 | preview += f", ... ({len(registered)} total)" |
| 78 | if not preview: |
| 79 | preview = "(none)" |
| 80 | |
| 81 | import_errors = _get_import_errors() |
| 82 | if import_errors: |
| 83 | lines = [ |
| 84 | f" - {name}: {error}" |
| 85 | for name, error in sorted(import_errors.items())[:50] |
| 86 | ] |
| 87 | remaining = len(import_errors) - len(lines) |
| 88 | if remaining > 0: |
| 89 | lines.append(f" ... {remaining} more import failures hidden") |
| 90 | import_error_text = "\n".join(lines) |
| 91 | else: |
| 92 | import_error_text = " (none recorded)" |
| 93 | |
| 94 | return ( |
| 95 | f"{component_type} '{component_name}' is not registered.\n" |
| 96 | f"Registered {component_type} keys ({len(registered)}): {preview}\n" |
| 97 | "Some modules may have failed to import during auto-registration. " |
| 98 | "Set FUNASR_IMPORT_DEBUG=1 to print failures during import, or " |
| 99 | "FUNASR_STRICT_IMPORT=1 to fail fast.\n" |
| 100 | f"Recorded import failures:\n{import_error_text}" |
| 101 | ) |
| 102 | |
| 103 | |
| 104 | try: |
no test coverage detected
searching dependent graphs…