I have a function that gets a list of DB tables as parameter, and returns a command string to be executed on these tables, e.g.:
pg_dump( file='/tmp/dump.sql',
tables=('stack', 'overflow'),
port=5434
name=europe)
Should return something like:
pg_dump -t stack -t overflow -f /tmp/dump.sql -p 5434 europe
This is done using tables_string='-t '+' -t '.join(tables)
.
The fun begins when the function is called with: tables=('stackoverflow')
(a string) instead of tables=('stackoverflow',)
(a tuple), which yields:
pg_dump -t s -t t -t a -t c -t k -t o -t v -t e -t r -t f -t l -t o -t w
-f /tmp/dump.sql -p 5434 europe
Because the string itself is being iterated.
This SO question suggests using asserts on the type, but I'm not sure it's Pythonic enough because it breaks the duck-type convention.
Any insights?
Adam