Mercurial > repos > shellac > guppy_basecaller
comparison env/lib/python3.7/site-packages/virtualenv/config/convert.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 from __future__ import absolute_import, unicode_literals | |
2 | |
3 import logging | |
4 import os | |
5 | |
6 | |
7 class TypeData(object): | |
8 def __init__(self, default_type, as_type): | |
9 self.default_type = default_type | |
10 self.as_type = as_type | |
11 | |
12 def __repr__(self): | |
13 return "{}(base={}, as={})".format(self.__class__.__name__, self.default_type, self.as_type) | |
14 | |
15 def convert(self, value): | |
16 return self.default_type(value) | |
17 | |
18 | |
19 class BoolType(TypeData): | |
20 BOOLEAN_STATES = { | |
21 "1": True, | |
22 "yes": True, | |
23 "true": True, | |
24 "on": True, | |
25 "0": False, | |
26 "no": False, | |
27 "false": False, | |
28 "off": False, | |
29 } | |
30 | |
31 def convert(self, value): | |
32 if value.lower() not in self.BOOLEAN_STATES: | |
33 raise ValueError("Not a boolean: %s" % value) | |
34 return self.BOOLEAN_STATES[value.lower()] | |
35 | |
36 | |
37 class NoneType(TypeData): | |
38 def convert(self, value): | |
39 if not value: | |
40 return None | |
41 return str(value) | |
42 | |
43 | |
44 class ListType(TypeData): | |
45 def _validate(self): | |
46 """""" | |
47 | |
48 def convert(self, value, flatten=True): | |
49 if isinstance(value, (str, bytes)): | |
50 value = filter(None, [x.strip() for x in value.splitlines()]) | |
51 values = list(value) | |
52 result = [] | |
53 for value in values: | |
54 sub_values = value.split(os.pathsep) | |
55 result.extend(sub_values) | |
56 converted = [self.as_type(i) for i in result] | |
57 return converted | |
58 | |
59 | |
60 def convert(value, as_type, source): | |
61 """Convert the value as a given type where the value comes from the given source""" | |
62 try: | |
63 return as_type.convert(value) | |
64 except Exception as exception: | |
65 logging.warning("%s failed to convert %r as %r because %r", source, value, as_type, exception) | |
66 raise | |
67 | |
68 | |
69 _CONVERT = {bool: BoolType, type(None): NoneType, list: ListType} | |
70 | |
71 | |
72 def get_type(action): | |
73 default_type = type(action.default) | |
74 as_type = default_type if action.type is None else action.type | |
75 return _CONVERT.get(default_type, TypeData)(default_type, as_type) | |
76 | |
77 | |
78 __all__ = ( | |
79 "convert", | |
80 "get_type", | |
81 ) |