Exemplo n.º 1
0
                                        ],
                                        single_line=True)

_INDEX_TYPE = models.ObjectNodeType('index',
                                    attributes=[
                                        ('fields', unicode, None),
                                    ],
                                    single_line=True)

_STATISTICS_TYPE = models.ObjectNodeType(
    'statistics',
    attributes=[
        ('export', unicode, r'^(?i)(|true|false)$'),
    ],
    children=[
        models.ChildType('quantiles', _QUANTILES_TYPE, multiple=False),
        models.ChildType('enumeration', _ENUMERATION_TYPE, multiple=False),
    ])

_HISTORY_TYPE = models.ObjectNodeType('history',
                                      attributes=[],
                                      children=[
                                          models.ChildType('index',
                                                           _INDEX_TYPE,
                                                           multiple=True),
                                          models.ChildType('statistics',
                                                           _STATISTICS_TYPE,
                                                           multiple=True),
                                      ])

_AGGREGATION_TYPE = models.ObjectNodeType('aggregation',
Exemplo n.º 2
0
_SUMMARY_TYPE = models.TextNodeType('summary')

_NOISE_VALUES_TYPE = models.ObjectNodeType('noise-values',
                                           float_attributes=[
                                               'fake-prob',
                                               'fake-one-prob',
                                               'one-coin-prob',
                                               'zero-coin-prob',
                                           ])

_NOISE_LEVEL_TYPE = models.ObjectNodeType(
    'noise-level',
    extra_newlines=(1, 1, 1),
    string_attributes=['name'],
    children=[
        models.ChildType('summary', _SUMMARY_TYPE, False),
        models.ChildType('values', _NOISE_VALUES_TYPE, False),
    ])

_NOISE_LEVELS_TYPE = models.ObjectNodeType('noise-levels',
                                           extra_newlines=(1, 1, 1),
                                           dont_indent=True,
                                           children=[
                                               models.ChildType(
                                                   'types', _NOISE_LEVEL_TYPE,
                                                   True),
                                           ])

_PARAMETERS_TYPE = models.ObjectNodeType(
    'parameters',
    int_attributes=[
Exemplo n.º 3
0
_SUMMARY_TYPE = models.TextNodeType('summary')

_METRIC_TYPE = models.ObjectNodeType('metric',
                                     attributes=[
                                         ('name', unicode,
                                          r'^[A-Za-z0-9_.]+$'),
                                         ('kind', unicode,
                                          r'^(?i)(|hashed-string|int)$'),
                                     ],
                                     alphabetization=[
                                         (_OBSOLETE_TYPE.tag, lambda _: 1),
                                         (_SUMMARY_TYPE.tag, lambda _: 2),
                                     ],
                                     children=[
                                         models.ChildType(_OBSOLETE_TYPE.tag,
                                                          _OBSOLETE_TYPE,
                                                          multiple=False),
                                         models.ChildType(_OWNER_TYPE.tag,
                                                          _OWNER_TYPE,
                                                          multiple=True),
                                         models.ChildType(_SUMMARY_TYPE.tag,
                                                          _SUMMARY_TYPE,
                                                          multiple=False),
                                     ])

_EVENT_TYPE = models.ObjectNodeType(
    'event',
    attributes=[
        ('name', unicode, r'^[A-Z][A-Za-z0-9.]*$'),
        ('project', unicode, r'^([A-Z][A-Za-z0-9.]*)?$'),
    ],
  name = node.get('name').lower()
  convert = lambda text: int(text) if text.isdigit() else text
  return [convert(c) for c in re.split('([0-9]+)', name)]

# The following types are used for enums.xml.
_INT_TYPE = models.ObjectNodeType(
    'int',
    attributes=[
        ('value', str, r'^[-1]|[0-9]+$'),
        ('label', str, None),
    ],
    required_attributes=['value'],
    text_attribute=True,
    single_line=True,
    children=[
        models.ChildType(_OBSOLETE_TYPE.tag, _OBSOLETE_TYPE, multiple=False),
        models.ChildType(_SUMMARY_TYPE.tag, _SUMMARY_TYPE, multiple=False),
    ])

_ENUM_TYPE = models.ObjectNodeType(
    'enum',
    attributes=[
        ('name', str, r'^[A-Za-z0-9_.]+$'),
    ],
    required_attributes=['name'],
    alphabetization=[
        (_OBSOLETE_TYPE.tag, _KEEP_ORDER),
        (_SUMMARY_TYPE.tag, _KEEP_ORDER),
        (_INT_TYPE.tag, _INTEGER_FN('value')),
    ],
    extra_newlines=(1, 1, 1),
Exemplo n.º 5
0
# Model definitions for ukm.xml content
_OBSOLETE_TYPE = models.TextNodeType('obsolete')
_OWNER_TYPE = models.TextNodeType('owner', single_line=True)
_SUMMARY_TYPE = models.TextNodeType('summary')

_LOWERCASE_NAME_FN = lambda n: n.attributes['name'].value.lower()

_METRIC_TYPE = models.ObjectNodeType(
    'metric',
    attributes=[
        ('name', unicode),
        ('semantic_type', unicode),
    ],
    children=[
        models.ChildType('obsolete', _OBSOLETE_TYPE, False),
        models.ChildType('owners', _OWNER_TYPE, True),
        models.ChildType('summary', _SUMMARY_TYPE, False),
    ])

_EVENT_TYPE = models.ObjectNodeType(
    'event',
    alphabetization=[('metric', _LOWERCASE_NAME_FN)],
    attributes=[('name', unicode), ('singular', bool)],
    extra_newlines=(1, 1, 1),
    children=[
        models.ChildType('obsolete', _OBSOLETE_TYPE, False),
        models.ChildType('owners', _OWNER_TYPE, True),
        models.ChildType('summary', _SUMMARY_TYPE, False),
        models.ChildType('metrics', _METRIC_TYPE, True),
    ])
Exemplo n.º 6
0
_ACTION_TYPE = models.ObjectNodeType(
    'action',
    attributes=[
        ('name', str, None),
        ('not_user_triggered', str, r'^$|^true|false|True|False$'),
    ],
    required_attributes=['name'],
    alphabetization=[
        (_OBSOLETE_TYPE.tag, _KEEP_ORDER),
        (_OWNER_TYPE.tag, _KEEP_ORDER),
        (_DESCRIPTION_TYPE.tag, _KEEP_ORDER),
    ],
    extra_newlines=(1, 1, 1),
    children=[
        models.ChildType(_OBSOLETE_TYPE.tag, _OBSOLETE_TYPE, multiple=False),
        models.ChildType(_OWNER_TYPE.tag, _OWNER_TYPE, multiple=True),
        models.ChildType(_DESCRIPTION_TYPE.tag,
                         _DESCRIPTION_TYPE,
                         multiple=False),
    ])

_SUFFIX_TYPE = models.ObjectNodeType(
    'suffix',
    attributes=[
        ('name', str, r'^[A-Za-z0-9.-_]*$'),
        ('label', str, None),
    ],
    required_attributes=['name', 'label'],
)
Exemplo n.º 7
0
                                        ],
                                        single_line=True)

_INDEX_TYPE = models.ObjectNodeType('index',
                                    attributes=[
                                        ('fields', str, None),
                                    ],
                                    single_line=True)

_STATISTICS_TYPE = models.ObjectNodeType(
    'statistics',
    attributes=[
        ('export', str, r'(?i)^(|true|false)$'),
    ],
    children=[
        models.ChildType(_QUANTILES_TYPE.tag, _QUANTILES_TYPE, multiple=False),
        models.ChildType(_ENUMERATION_TYPE.tag,
                         _ENUMERATION_TYPE,
                         multiple=False),
    ])

_HISTORY_TYPE = models.ObjectNodeType(
    'history',
    attributes=[],
    alphabetization=[
        (_INDEX_TYPE.tag, _LOWERCASE_FN('fields')),
        (_STATISTICS_TYPE.tag, _KEEP_ORDER),
    ],
    children=[
        models.ChildType(_INDEX_TYPE.tag, _INDEX_TYPE, multiple=True),
        models.ChildType(_STATISTICS_TYPE.tag, _STATISTICS_TYPE,
Exemplo n.º 8
0
    name = node.get('name').lower()
    convert = lambda text: int(text) if text.isdigit() else text
    return [convert(c) for c in re.split('([0-9]+)', name)]


_INT_TYPE = models.ObjectNodeType('int',
                                  attributes=[
                                      ('value', str, r'^[-1]|[0-9]+$'),
                                      ('label', str, None),
                                  ],
                                  required_attributes=['value'],
                                  text_attribute=True,
                                  single_line=True,
                                  children=[
                                      models.ChildType(_OBSOLETE_TYPE.tag,
                                                       _OBSOLETE_TYPE,
                                                       multiple=False),
                                      models.ChildType(_SUMMARY_TYPE.tag,
                                                       _SUMMARY_TYPE,
                                                       multiple=False),
                                  ])

_ENUM_TYPE = models.ObjectNodeType('enum',
                                   attributes=[
                                       ('name', str, r'^[A-Za-z0-9_.]+$'),
                                   ],
                                   required_attributes=['name'],
                                   alphabetization=[
                                       (_OBSOLETE_TYPE.tag, _KEEP_ORDER),
                                       (_SUMMARY_TYPE.tag, _KEEP_ORDER),
                                       (_INT_TYPE.tag, _INTEGER_FN('value')),
Exemplo n.º 9
0
                                             'hash-functions',
                                         ],
                                         float_attributes=[
                                             'fake-prob',
                                             'fake-one-prob',
                                             'one-coin-prob',
                                             'zero-coin-prob',
                                         ],
                                         string_attributes=['reporting-level'])

_RAPPOR_PARAMETERS_TYPE = models.ObjectNodeType(
    'rappor-parameters',
    extra_newlines=(1, 1, 1),
    string_attributes=['name'],
    children=[
        models.ChildType('summary', _SUMMARY_TYPE, False),
        models.ChildType('parameters', _PARAMETERS_TYPE, False),
    ])

_RAPPOR_PARAMETERS_TYPES_TYPE = models.ObjectNodeType(
    'rappor-parameter-types',
    extra_newlines=(1, 1, 1),
    dont_indent=True,
    children=[
        models.ChildType('types', _RAPPOR_PARAMETERS_TYPE, True),
    ])

_OWNER_TYPE = models.TextNodeType('owner', single_line=True)

_STRING_FIELD_TYPE = models.ObjectNodeType('string-field',
                                           extra_newlines=(1, 1, 0),