summaryrefslogtreecommitdiff
path: root/_action/count.py
diff options
context:
space:
mode:
Diffstat (limited to '_action/count.py')
-rw-r--r--_action/count.py19
1 files changed, 19 insertions, 0 deletions
diff --git a/_action/count.py b/_action/count.py
new file mode 100644
index 0000000..4130e4f
--- /dev/null
+++ b/_action/count.py
@@ -0,0 +1,19 @@
+# coding: utf-8
+
+import argparse
+
+
+class CountAction(argparse.Action):
+ """argparse action for counting up and down
+
+ parser = argparse.ArgumentParser()
+ parser.add_argument('--verbose', '-v', action=CountAction, const=1, nargs=0)
+ parser.add_argument('--quiet', '-q', action=CountAction, dest='verbose',
+ const=-1, nargs=0)
+ """
+ def __call__(self, parser, namespace, values, option_string=None):
+ try:
+ val = getattr(namespace, self.dest) + self.const
+ except TypeError: # probably None
+ val = self.const
+ setattr(namespace, self.dest, val)