| OLD | NEW |
| 1 # Copyright (C) 2013 Google Inc. All rights reserved. | 1 # Copyright (C) 2013 Google Inc. All rights reserved. |
| 2 # | 2 # |
| 3 # Redistribution and use in source and binary forms, with or without | 3 # Redistribution and use in source and binary forms, with or without |
| 4 # modification, are permitted provided that the following conditions are | 4 # modification, are permitted provided that the following conditions are |
| 5 # met: | 5 # met: |
| 6 # | 6 # |
| 7 # * Redistributions of source code must retain the above copyright | 7 # * Redistributions of source code must retain the above copyright |
| 8 # notice, this list of conditions and the following disclaimer. | 8 # notice, this list of conditions and the following disclaimer. |
| 9 # * Redistributions in binary form must reproduce the above | 9 # * Redistributions in binary form must reproduce the above |
| 10 # copyright notice, this list of conditions and the following disclaimer | 10 # copyright notice, this list of conditions and the following disclaimer |
| (...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 70 raise IDLInvalidExtendedAttributeError( | 70 raise IDLInvalidExtendedAttributeError( |
| 71 'Unknown extended attribute [%s]' % name) | 71 'Unknown extended attribute [%s]' % name) |
| 72 valid_values = self.valid_extended_attributes[name] | 72 valid_values = self.valid_extended_attributes[name] |
| 73 if values_string is None and None not in valid_values: | 73 if values_string is None and None not in valid_values: |
| 74 raise IDLInvalidExtendedAttributeError( | 74 raise IDLInvalidExtendedAttributeError( |
| 75 'Missing required argument for extended attribute [%s]' % name) | 75 'Missing required argument for extended attribute [%s]' % name) |
| 76 if '*' in valid_values: # wildcard, any (non-empty) value ok | 76 if '*' in valid_values: # wildcard, any (non-empty) value ok |
| 77 return | 77 return |
| 78 if values_string is None: | 78 if values_string is None: |
| 79 values = set([None]) | 79 values = set([None]) |
| 80 elif isinstance(values_string, list): |
| 81 values = set(values_string) |
| 80 else: | 82 else: |
| 81 values = set(re.split('[|,]', values_string)) | 83 values = set([values_string]) |
| 82 invalid_values = values - valid_values | 84 invalid_values = values - valid_values |
| 83 if invalid_values: | 85 if invalid_values: |
| 84 invalid_value = invalid_values.pop() | 86 invalid_value = invalid_values.pop() |
| 85 raise IDLInvalidExtendedAttributeError( | 87 raise IDLInvalidExtendedAttributeError( |
| 86 'Invalid value "%s" found in extended attribute [%s=%s]' % | 88 'Invalid value "%s" found in extended attribute [%s=%s]' % |
| 87 (invalid_value, name, values_string)) | 89 (invalid_value, name, values_string)) |
| 88 | 90 |
| 89 | 91 |
| 90 def read_extended_attributes_file(): | 92 def read_extended_attributes_file(): |
| 91 def extended_attribute_name_values(): | 93 def extended_attribute_name_values(): |
| 92 with open(EXTENDED_ATTRIBUTES_FILENAME) as extended_attributes_file: | 94 with open(EXTENDED_ATTRIBUTES_FILENAME) as extended_attributes_file: |
| 93 for line in extended_attributes_file: | 95 for line in extended_attributes_file: |
| 94 line = line.strip() | 96 line = line.strip() |
| 95 if not line or line.startswith('#'): | 97 if not line or line.startswith('#'): |
| 96 continue | 98 continue |
| 97 name, _, values_string = map(str.strip, line.partition('=')) | 99 name, _, values_string = map(str.strip, line.partition('=')) |
| 98 value_list = [value.strip() for value in values_string.split('|'
)] | 100 value_list = [value.strip() for value in values_string.split('|'
)] |
| 99 yield name, value_list | 101 yield name, value_list |
| 100 | 102 |
| 101 valid_extended_attributes = {} | 103 valid_extended_attributes = {} |
| 102 for name, value_list in extended_attribute_name_values(): | 104 for name, value_list in extended_attribute_name_values(): |
| 103 if not value_list: | 105 if not value_list: |
| 104 valid_extended_attributes[name] = set([None]) | 106 valid_extended_attributes[name] = set([None]) |
| 105 continue | 107 continue |
| 106 valid_extended_attributes[name] = set([value if value else None | 108 valid_extended_attributes[name] = set([value if value else None |
| 107 for value in value_list]) | 109 for value in value_list]) |
| 108 return valid_extended_attributes | 110 return valid_extended_attributes |
| OLD | NEW |