Ejemplo n.º 1
0
    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)
Ejemplo n.º 2
0
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)
Ejemplo n.º 3
0
 class F(Flag):
     foo = auto()
     bar = 1
     baz = auto()
Ejemplo n.º 4
0
class ExampleFlag(Flag):
    FOO = auto()
    BAR = auto()
    BAZ = auto()