A recent post recommended the docopt module so I've incorporated it into
the code I'm using to learn SQLite. It's not behaving as I expected.
Here's a snippet of code:


#!/usr/bin/env python
# -*- coding : utf -8 -*-
# file: 'test'
"""Usage: test [new_data | text_entry FILE | show_data ] [-hdv] [--db=DATABASE] [--tb=TABLE]

-h --help       show this
-d --debug      show debugging statements
-v --verbose    shows table when not absolutely necessary.
--db DATABASE   specify database file to use [default: ./uwomeds68.db]
--tb TABLE      specify table to use [default: matesTb]
"""

from docopt import docopt

cl_args = docopt(__doc__, version='testing v0.1')
print "Arguments in effect (from <docopt>):"
print(cl_args)
print "-------------------------------"
print

I would have expected the defaults (./uwomeds68.db and matesTb) to be
populated but as it turns out, values are populated only of --db or --tb
are specified on the command line; otherwise, None is assigned to the
values keyed by "--db" and "--tb".

Here are two example runs:

alex@x301:~/Python/SQL/SQLite$ ./test show_data
Arguments in effect (from <docopt>):
{'--db': None,
 '--tb': None,
 '-d': False,
 '-h': False,
 '-v': False,
 'FILE': None,
 'new_data': False,
 'show_data': True,
 'text_entry': False}
-------------------------------

alex@x301:~/Python/SQL/SQLite$ ./test show_data --db=new.db
Arguments in effect (from <docopt>):
{'--db': 'new.db',
 '--tb': None,
 '-d': False,
 '-h': False,
 '-v': False,
 'FILE': None,
 'new_data': False,
 'show_data': True,
 'text_entry': False}
-------------------------------

My interpretation of the documentation is that the defaults are meant to
be picked up.  Is that not correct?

_______________________________________________
Tutor maillist  -  Tutor@python.org
To unsubscribe or change subscription options:
https://mail.python.org/mailman/listinfo/tutor

Reply via email to