(project: dict)
| 1019 | |
| 1020 | |
| 1021 | def cost_warning(project: dict) -> str: |
| 1022 | cloud = ", ".join(item.upper() for item in project["cloud"]) or "no cloud provider" |
| 1023 | return f"""<div class="lab-warning"> |
| 1024 | <strong>Cost and credential stance</strong> |
| 1025 | <p> |
| 1026 | Cost risk is <strong>{project['cost_risk']}</strong>. Cloud target: |
| 1027 | <strong>{escape_html(cloud)}</strong>. Cloud credentials needed: |
| 1028 | <strong>{project['needs_cloud_credentials']}</strong>. Always use your own |
| 1029 | account, never commit secrets, and confirm cleanup before creating paid |
| 1030 | infrastructure. |
| 1031 | </p> |
| 1032 | </div>""" |
| 1033 | |
| 1034 | |
| 1035 | def troubleshooting(project: dict) -> str: |
no test coverage detected