simple-salesforce-mdapi-sync-must-wrap-asyncio-to-thread

All conn.mdapi.* calls in simple-salesforce are synchronous and block the asyncio event loop when called directly inside async functions. Every mdapi call (create, update, delete, deploy, retrieve, etc.) must be wrapped with asyncio.to_thread(conn.mdapi.<method>, ...). 23 violations were found across metadata, security, integration, and utilities modules.