comparison env/lib/python3.7/site-packages/boto/roboto/param.py @ 0:26e78fe6e8c4 draft

"planemo upload commit c699937486c35866861690329de38ec1a5d9f783"
author shellac
date Sat, 02 May 2020 07:14:21 -0400
parents
children
comparison
equal deleted inserted replaced
-1:000000000000 0:26e78fe6e8c4
1 # Copyright (c) 2010 Mitch Garnaat http://garnaat.org/
2 # Copyright (c) 2010, Eucalyptus Systems, Inc.
3 #
4 # Permission is hereby granted, free of charge, to any person obtaining a
5 # copy of this software and associated documentation files (the
6 # "Software"), to deal in the Software without restriction, including
7 # without limitation the rights to use, copy, modify, merge, publish, dis-
8 # tribute, sublicense, and/or sell copies of the Software, and to permit
9 # persons to whom the Software is furnished to do so, subject to the fol-
10 # lowing conditions:
11 #
12 # The above copyright notice and this permission notice shall be included
13 # in all copies or substantial portions of the Software.
14 #
15 # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
16 # OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABIL-
17 # ITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT
18 # SHALL THE AUTHOR BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
19 # WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
21 # IN THE SOFTWARE.
22
23 import os
24
25 class Converter(object):
26
27 @classmethod
28 def convert_string(cls, param, value):
29 # TODO: could do length validation, etc. here
30 if not isinstance(value, basestring):
31 raise ValueError
32 return value
33
34 @classmethod
35 def convert_integer(cls, param, value):
36 # TODO: could do range checking here
37 return int(value)
38
39 @classmethod
40 def convert_boolean(cls, param, value):
41 """
42 For command line arguments, just the presence
43 of the option means True so just return True
44 """
45 return True
46
47 @classmethod
48 def convert_file(cls, param, value):
49 if os.path.exists(value) and not os.path.isdir(value):
50 return value
51 raise ValueError
52
53 @classmethod
54 def convert_dir(cls, param, value):
55 if os.path.isdir(value):
56 return value
57 raise ValueError
58
59 @classmethod
60 def convert(cls, param, value):
61 try:
62 if hasattr(cls, 'convert_'+param.ptype):
63 mthd = getattr(cls, 'convert_'+param.ptype)
64 else:
65 mthd = cls.convert_string
66 return mthd(param, value)
67 except:
68 raise ValidationException(param, '')
69
70 class Param(Converter):
71
72 def __init__(self, name=None, ptype='string', optional=True,
73 short_name=None, long_name=None, doc='',
74 metavar=None, cardinality=1, default=None,
75 choices=None, encoder=None, request_param=True):
76 self.name = name
77 self.ptype = ptype
78 self.optional = optional
79 self.short_name = short_name
80 self.long_name = long_name
81 self.doc = doc
82 self.metavar = metavar
83 self.cardinality = cardinality
84 self.default = default
85 self.choices = choices
86 self.encoder = encoder
87 self.request_param = request_param
88
89 @property
90 def optparse_long_name(self):
91 ln = None
92 if self.long_name:
93 ln = '--%s' % self.long_name
94 return ln
95
96 @property
97 def synopsis_long_name(self):
98 ln = None
99 if self.long_name:
100 ln = '--%s' % self.long_name
101 return ln
102
103 @property
104 def getopt_long_name(self):
105 ln = None
106 if self.long_name:
107 ln = '%s' % self.long_name
108 if self.ptype != 'boolean':
109 ln += '='
110 return ln
111
112 @property
113 def optparse_short_name(self):
114 sn = None
115 if self.short_name:
116 sn = '-%s' % self.short_name
117 return sn
118
119 @property
120 def synopsis_short_name(self):
121 sn = None
122 if self.short_name:
123 sn = '-%s' % self.short_name
124 return sn
125
126 @property
127 def getopt_short_name(self):
128 sn = None
129 if self.short_name:
130 sn = '%s' % self.short_name
131 if self.ptype != 'boolean':
132 sn += ':'
133 return sn
134
135 def convert(self, value):
136 """
137 Convert a string value as received in the command line
138 tools and convert to the appropriate type of value.
139 Raise a ValidationError if the value can't be converted.
140
141 :type value: str
142 :param value: The value to convert. This should always
143 be a string.
144 """
145 return super(Param, self).convert(self,value)
146
147