simple-salesforce-deploy-expects-file-path-or-io-bytes-not-base64

SfdcMetadataApi.deploy() internally calls _read_deploy_zip() which treats string args as file paths and does its own base64 encoding. If you have base64 content (e.g., from sf_build_deploy_package), you must decode to bytes and wrap in io.BytesIO before passing — never pass a base64 string directly. Passing base64 causes ‘No package.xml found’ or garbled zip errors.