all-simple-salesforce-mdapi-sync-calls-must-use-asyncio-to-thread

All simple-salesforce mdapi.* methods (deploy, retrieve, check_deploy_status, check_retrieve_status, CustomObject.create, CustomField.create, read_metadata, etc.) are synchronous and block the event loop when called from async functions. Every mdapi call must be wrapped with ‘await asyncio.to_thread(conn.mdapi.method, *args, **kwargs)’. asyncio.to_thread() supports both positional and keyword arguments. Audit found 23+ violations across metadata, security, integration, and utilities modules.