(
self, name: str, default: str, taken_names: Set[str]
)
| 188 | return positional |
| 189 | |
| 190 | def arg_opts( |
| 191 | self, name: str, default: str, taken_names: Set[str] |
| 192 | ) -> Dict[str, Any]: |
| 193 | opts: Dict[str, Any] = {} |
| 194 | # Whether it's positional or not |
| 195 | opts["positional"] = name in self.positional |
| 196 | # Whether it is a value-optional flag |
| 197 | opts["optional"] = name in self.optional |
| 198 | # Whether it should be of an iterable (list) kind |
| 199 | if name in self.iterable: |
| 200 | opts["kind"] = list |
| 201 | # If user gave a non-None default, hopefully they know better |
| 202 | # than us what they want here (and hopefully it offers the list |
| 203 | # protocol...) - otherwise supply useful default |
| 204 | opts["default"] = default if default is not None else [] |
| 205 | # Whether it should increment its value or not |
| 206 | if name in self.incrementable: |
| 207 | opts["incrementable"] = True |
| 208 | # Argument name(s) (replace w/ dashed version if underscores present, |
| 209 | # and move the underscored version to be the attr_name instead.) |
| 210 | original_name = name # For reference in eg help= |
| 211 | if "_" in name: |
| 212 | opts["attr_name"] = name |
| 213 | name = translate_underscores(name) |
| 214 | names = [name] |
| 215 | if self.auto_shortflags: |
| 216 | # Must know what short names are available |
| 217 | for char in name: |
| 218 | if not (char == name or char in taken_names): |
| 219 | names.append(char) |
| 220 | break |
| 221 | opts["names"] = names |
| 222 | # Handle default value & kind if possible |
| 223 | if default not in (None, inspect.Signature.empty): |
| 224 | # TODO: allow setting 'kind' explicitly. |
| 225 | # NOTE: skip setting 'kind' if optional is True + type(default) is |
| 226 | # bool; that results in a nonsensical Argument which gives the |
| 227 | # parser grief in a few ways. |
| 228 | kind = type(default) |
| 229 | if not (opts["optional"] and kind is bool): |
| 230 | opts["kind"] = kind |
| 231 | opts["default"] = default |
| 232 | # Help |
| 233 | for possibility in name, original_name: |
| 234 | if possibility in self.help: |
| 235 | opts["help"] = self.help.pop(possibility) |
| 236 | break |
| 237 | return opts |
| 238 | |
| 239 | def get_arguments( |
| 240 | self, ignore_unknown_help: Optional[bool] = None |
no test coverage detected