def test_extend(self): """Ensure the set of flags can be programmatically extended.""" class F(Flag): foo = auto() bar = 1 baz = auto() self.assertEqual(F.width(), 1) F.extend({"A": auto(), "B": 8, "C": auto(), "D": auto(), "E": auto()}) self.assertEqual(int(F.B), 8) self.assertEqual(F.width(), 1) F.extend({"LAST": auto()}) self.assertEqual(F.width(), 2) f = F.A | F.foo | F.C array = f.to_bytes() self.assertEqual(len(array), 2) f2 = F.from_bytes(array) self.assertEqual(f, f2)
class Flags(Flag): """ Defines the valid flags used in the framework. """ # basic classifiers PRIMARY = auto() SECONDARY = auto() TERTIARY = auto() ANNULAR = auto() # ideally this info would be inferred from shape A = auto() B = auto() C = auto() D = auto() E = auto() HIGH = auto() MEDIUM = auto() LOW = auto() CORE = auto() REACTOR = auto() # general kinds of assemblies or blocks MATERIAL = auto() FUEL = auto() TEST = auto() CONTROL = auto() ULTIMATE = auto() SHUTDOWN = auto() SHIELD = auto() SHIELD_BLOCK = auto() SLUG = auto() REFLECTOR = auto() # different kinds of fuel DRIVER = auto() IGNITER = auto() FEED = auto() STARTER = auto() BLANKET = auto() BOOSTER = auto() TARGET = auto() MOX = auto() # radial positions INNER = auto() MIDDLE = auto() OUTER = auto() RADIAL = auto() # axial positions AXIAL = auto() UPPER = auto() LOWER = auto() # assembly parts (including kinds of pins) DUCT = auto() GRID_PLATE = auto() HANDLING_SOCKET = auto() INLET_NOZZLE = auto() PLENUM = auto() BOND = auto() # not empty LINER = auto() # Use PRIMARY or SECONDARY to get multiple liners CLAD = auto() PIN = auto() # the "meat" inside the clad GAP = auto() # generally empty WIRE = auto() COOLANT = auto() INTERCOOLANT = auto() ACLP = auto() # above core load pad SKID = auto() VOID = auto() INTERDUCTCOOLANT = auto() DSPACERINSIDE = auto() GUIDE_TUBE = auto() FISSION_CHAMBER = auto() MODERATOR = auto() # more parts CORE_BARREL = auto() DUMMY = auto() BATCHMASSADDITION = auto() POISON = auto() STRUCTURE = auto() DEPLETABLE = auto() @classmethod def fromStringIgnoreErrors(cls, typeSpec): return _fromStringIgnoreErrors(cls, typeSpec) @classmethod def fromString(cls, typeSpec): return _fromString(cls, typeSpec) @classmethod def toString(cls, typeSpec): return _toString(cls, typeSpec)
class F(Flag): foo = auto() bar = 1 baz = auto()
class ExampleFlag(Flag): FOO = auto() BAR = auto() BAZ = auto()