Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
def _make_namespace_with_many_structs():
# type: (...) -> ApiNamespace
ns = ApiNamespace('ns_with_many_structs')
struct1 = Struct(name='Struct1', namespace=ns, ast_node=None)
struct1.set_attributes(None, [StructField('f1', Boolean(), None, None)])
ns.add_data_type(struct1)
struct2 = Struct(name='Struct2', namespace=ns, ast_node=None)
struct2.set_attributes(
doc=None,
fields=[
StructField('f2', List(UInt64()), None, None),
StructField('f3', Timestamp(ISO_8601_FORMAT), None, None),
StructField('f4', Map(String(), UInt64()), None, None)
]
)
ns.add_data_type(struct2)
return ns
def test_struct_with_custom_annotations(self):
# type: () -> None
ns = ApiNamespace('files')
annotation_type = AnnotationType('MyAnnotationType', ns, None, [
AnnotationTypeParam('test_param', Int32(), None, False, None, None)
])
ns.add_annotation_type(annotation_type)
annotation = CustomAnnotation('MyAnnotation', ns, None, 'MyAnnotationType',
None, [], {'test_param': 42})
annotation.set_attributes(annotation_type)
ns.add_annotation(annotation)
struct = Struct('MyStruct', ns, None)
struct.set_attributes(None, [
StructField('annotated_field', Int32(), None, None),
StructField('unannotated_field', Int32(), None, None),
])
struct.fields[0].set_annotations([annotation])
result = self._evaluate_struct(ns, struct)
expected = textwrap.dedent('''\
class MyStruct(bb.Struct):
__slots__ = [
'_annotated_field_value',
'_annotated_field_present',
'_unannotated_field_value',
'_unannotated_field_present',
]
shared_folder_id = Alias('SharedFolderId', ns, None)
shared_folder_id.set_attributes(None, namespace_id)
path_root_id = Alias('PathRootId', ns, None)
path_root_id.set_attributes(None, shared_folder_id)
nullable_alias = Alias('NullableAlias', ns, None)
nullable_alias.set_attributes(None, Nullable(path_root_id))
ns.add_alias(namespace_id)
ns.add_alias(shared_folder_id)
ns.add_alias(path_root_id)
ns.add_alias(nullable_alias)
test_struct = Struct('TestStruct', ns, None)
test_struct.set_attributes(None, [
StructField('field_alias', path_root_id, None, None),
StructField('field_nullable_alias', nullable_alias, None, None),
StructField('field_list_of_alias', List(path_root_id), None, None)
])
test_union = Union('TestUnion', ns, None, None)
test_union.set_attributes(None, [UnionField('test', path_root_id, None, None)])
ns.add_data_type(test_struct)
ns.add_data_type(test_union)
struct_alias = Alias('StructAlias', ns, None)
struct_alias.set_attributes(None, test_struct)
ns.add_alias(struct_alias)
api = remove_aliases_from_api(api)
# Ensure namespace exists
def test_struct_with_custom_annotations(self):
# type: () -> None
ns = ApiNamespace('files')
annotation_type = AnnotationType('MyAnnotationType', ns, None, [
AnnotationTypeParam('test_param', Int32(), None, False, None, None)
])
ns.add_annotation_type(annotation_type)
annotation = CustomAnnotation('MyAnnotation', ns, None, 'MyAnnotationType',
None, [], {'test_param': 42})
annotation.set_attributes(annotation_type)
ns.add_annotation(annotation)
struct = Struct('MyStruct', ns, None)
struct.set_attributes(None, [
StructField('annotated_field', Int32(), None, None),
StructField('unannotated_field', Int32(), None, None),
])
struct.fields[0].set_annotations([annotation])
result = self._evaluate_struct(ns, struct)
expected = textwrap.dedent('''\
class MyStruct(bb.Struct):
__slots__ = [
'_annotated_field_value',
'_annotated_field_present',
'_unannotated_field_value',
'_unannotated_field_present',
]
_has_required_fields = True
def test_union(self):
ns = ApiNamespace('files')
update_parent_rev = Struct(
'UpdateParentRev',
None,
ns,
)
update_parent_rev.set_attributes(
"Overwrite existing file if the parent rev matches.",
[
StructField('parent_rev', String(), 'The revision to be updated.', None)
],
)
update_parent_rev._add_example(
AstExample(
path=None,
lineno=None,
lexpos=None,
label='default',
text=None,
fields={
'parent_rev': AstExampleField(
None,
None,
None,
'parent_rev',
'xyz123')}))
def _make_namespace_with_many_structs():
# type: (...) -> ApiNamespace
ns = ApiNamespace('ns_with_many_structs')
struct1 = Struct(name='Struct1', namespace=ns, ast_node=None)
struct1.set_attributes(None, [StructField('f1', Boolean(), None, None)])
ns.add_data_type(struct1)
struct2 = Struct(name='Struct2', namespace=ns, ast_node=None)
struct2.set_attributes(
doc=None,
fields=[
StructField('f2', List(UInt64()), None, None),
StructField('f3', Timestamp(ISO_8601_FORMAT), None, None),
StructField('f4', Map(String(), UInt64()), None, None)
]
)
ns.add_data_type(struct2)
return ns
def _make_struct(struct_name, struct_field_name, namespace):
# type: (typing.Text, typing.Text, ApiNamespace) -> Struct
struct = Struct(name=struct_name, namespace=namespace, ast_node=None)
struct.set_attributes(None, [StructField(struct_field_name, Boolean(), None, None)])
return struct
def _make_namespace_with_many_structs():
# type: (...) -> ApiNamespace
ns = ApiNamespace('ns_with_many_structs')
struct1 = Struct(name='Struct1', namespace=ns, ast_node=None)
struct1.set_attributes(None, [StructField('f1', Boolean(), None, None)])
ns.add_data_type(struct1)
struct2 = Struct(name='Struct2', namespace=ns, ast_node=None)
struct2.set_attributes(
doc=None,
fields=[
StructField('f2', List(UInt64()), None, None),
StructField('f3', Timestamp(ISO_8601_FORMAT), None, None),
StructField('f4', Map(String(), UInt64()), None, None)
]
)
ns.add_data_type(struct2)
return ns
# type: (...) -> ApiNamespace
ns = ApiNamespace('ns_w_nested_types')
struct = Struct(name='NestedTypes', namespace=ns, ast_node=None)
struct.set_attributes(
doc=None,
fields=[
StructField(
name='NullableList',
data_type=Nullable(
List(UInt64())
),
doc=None,
ast_node=None,
),
StructField(
name='ListOfNullables',
data_type=List(
Nullable(UInt64())
),
doc=None,
ast_node=None,
)
]
)
ns.add_data_type(struct)
return ns