A quick tip if you need to send more complex objects than strings to a fabric task.
It’s basically just a matter of proper escaping and using python’s json library to parse. Keep in mind:
- Put single quotes around the “argument” (the whole json string) and use doublequotes in the json structure itself
- Escape all “,” in the json with “\,”
In short you can call a task like so:
fab [args] mytask:petdict='{"cat": "1"\, "dog": "1"}'
Then, from within the task itself you just…
import json ... def mytask(petdict=None): if petdict: parsed_dict = json.loads(petdict)