## The problem
Issue imgix/imgix-python#21 (closed, 11 comments): signing a web-proxy source URL that mixed encoded (%20) and unencoded (~) characters produced bad signatures, first a 401 then a 400. The maintainer found the space was a red herring; the tilde was being encoded wrong. Fixed in 1.1.1, which unescapes URLs before re-escaping them, and verified against the reporter's own URL.
## What fixed it
The Python SDK expects unencoded source URLs. If you hand it a partially encoded URL (some characters encoded, some not), the signature will not match and imgix returns 401 or 400. Pass the raw unencoded URL and let the SDK encode it, or upgrade past 1.1.1, which unescapes the input before re-escaping so mixed encoding signs correctly. The classic tell is a %20 that signs fine while a nearby ~ breaks the signature.