def test_is_one_of(): _validator = is_one_of({1, 3, 5}) assert _validator(0) is False assert _validator(2) is False assert _validator(4) is False assert _validator(1) is True assert _validator(3) is True assert _validator(5) is True
'style': DXFAttr(7, default='Standard', optional=True), # Relative X scale factor—width (optional) # This value is also adjusted when fit-type text is used 'width': DXFAttr( 41, default=1, optional=True, validator=validator.is_greater_zero, fixer=RETURN_DEFAULT, ), # Text generation flags (optional) # 2 = backward (mirror-x), # 4 = upside down (mirror-y) 'text_generation_flag': DXFAttr( 71, default=0, optional=True, validator=validator.is_one_of({0, 2, 4, 6}), fixer=RETURN_DEFAULT, ), # Horizontal text justification type (optional) horizontal justification # 0 = Left # 1 = Center # 2 = Right # 3 = Aligned (if vertical alignment = 0) # 4 = Middle (if vertical alignment = 0) # 5 = Fit (if vertical alignment = 0) # This value is meaningful only if the value of a 72 or 73 group is nonzero # (if the justification is anything other than baseline/left) 'halign': DXFAttr( 72, default=0, optional=True, validator=validator.is_in_integer_range(0, 6),
283, default=0, validator=validator.is_in_integer_range(0, 101), fixer=validator.fit_into_integer_range(0, 101), ), # Hard reference to image def reactor object, not required by AutoCAD "image_def_reactor_handle": DXFAttr(360), # Clipping boundary type: # 1 = Rectangular # 2 = Polygonal "clipping_boundary_type": DXFAttr( 71, default=1, validator=validator.is_one_of({1, 2}), fixer=RETURN_DEFAULT, ), # Number of clip boundary vertices that follow "count_boundary_points": DXFAttr(91), # Clip mode: # 0 = outside # 1 = inside mode "clip_mode": DXFAttr( 290, dxfversion=DXF2010, default=0, validator=validator.is_integer_bool, fixer=RETURN_DEFAULT,
'm_smooth_density': DXFAttr(73, default=0, optional=True), 'n_smooth_density': DXFAttr(74, default=0, optional=True), # Curves and smooth surface type: # 0 = No smooth surface fitted # 5 = Quadratic B-spline surface # 6 = Cubic B-spline surface # 8 = Bezier surface 'smooth_type': DXFAttr( 75, default=0, optional=True, validator=validator.is_one_of({0, 5, 6, 8}), fixer=RETURN_DEFAULT, ), 'thickness': DXFAttr(39, default=0, optional=True), 'extrusion': DXFAttr( 210, xtype=XType.point3d, default=Z_AXIS, optional=True, validator=validator.is_not_null_vector, fixer=RETURN_DEFAULT, ), }) acdb_polyline_group_codes = group_code_mapping(acdb_polyline, ignore=(66, ))
dxfversion=const.DXF2010, optional=True, validator=validator.is_integer_bool, fixer=RETURN_DEFAULT, ), # Attribute type: # 1 = single line # 2 = multiline ATTRIB # 4 = multiline ATTDEF "attribute_type": DXFAttr( 71, default=1, dxfversion=const.DXF2018, optional=True, validator=validator.is_one_of({1, 2, 4}), fixer=RETURN_DEFAULT, ), } # ATTDEF has an additional field: 'prompt' # DXF attribute definitions are immutable, a shallow copy is sufficient: attdef_fields = dict(attrib_fields) attdef_fields["prompt"] = DXFAttr( 3, default="", validator=validator.is_valid_one_line_text, fixer=validator.fix_one_line_text, ) acdb_attdef = DefSubclass("AcDbAttributeDefinition", attdef_fields)