dvitel/hearthstone huggingface dataset:
Card: Fireguard Destroyer NAME_END 3 ATK_END 6 DEF_END 4 COST_END -1 DUR_END Minion TYPE_END Shaman PLAYER_CLS_END NIL RACE_END Common RARITY_END <b>Battlecry:</b> Gain 1-4 Attack. <b>Overload:</b> (1)

Python implementation:
class FireguardDestroyer(MinionCard):§    def __init__(self):§        super().__init__("Fireguard Destroyer", 4, CHARACTER_CLASS.SHAMAN, CARD_RARITY.COMMON, overload=1, battlecry=Battlecry(Give(Buff(ChangeAttack(RandomAmount(1, 4)))), SelfSelector()))§§    def create_minion(self, player):§        return Minion(3, 6)§
Card: Flamewaker NAME_END 2 ATK_END 4 DEF_END 3 COST_END -1 DUR_END Minion TYPE_END Mage PLAYER_CLS_END NIL RACE_END Rare RARITY_END After you cast a spell, deal 2 damage randomly split among all enemies.

Python implementation:
class Flamewaker(MinionCard):§    def __init__(self):§        super().__init__("Flamewaker", 3, CHARACTER_CLASS.MAGE, CARD_RARITY.RARE)§§    def create_minion(self, player):§        return Minion(2, 4, effects=[Effect(CardUsed(IsSpell()), ActionTag(Damage(1), CharacterSelector(None, EnemyPlayer(), RandomPicker(2))))])§
Card: Gang Up NAME_END -1 ATK_END -1 DEF_END 2 COST_END -1 DUR_END Spell TYPE_END Rogue PLAYER_CLS_END NIL RACE_END Common RARITY_END Choose a minion. Shuffle 3 copies of it into your deck.

Python implementation:
class GangUp(SpellCard):§    def __init__(self):§        super().__init__("Gang Up", 2, CHARACTER_CLASS.ROGUE, CARD_RARITY.COMMON, target_func=hearthbreaker.targeting.find_minion_spell_target)§§    def use(self, player, game):§        super().use(player, game)§        for i in range(3):§            player.put_back(type(self.target.card)())§
Card: Grim Patron NAME_END 3 ATK_END 3 DEF_END 5 COST_END -1 DUR_END Minion TYPE_END Neutral PLAYER_CLS_END NIL RACE_END Rare RARITY_END Whenever this minion survives damage, summon another Grim Patron.

Python implementation:
class GrimPatron(MinionCard):§    def __init__(self):§        super().__init__("Grim Patron", 5, CHARACTER_CLASS.ALL, CARD_RARITY.RARE)§§    def create_minion(self, player):§        return Minion(3, 3, effects=[Effect(Damaged(), [ActionTag(Summon(GrimPatron()), PlayerSelector(), GreaterThan(Attribute("health", SelfSelector()), value=0))])])§
Card: Imp Gang Boss NAME_END 2 ATK_END 4 DEF_END 3 COST_END -1 DUR_END Minion TYPE_END Warlock PLAYER_CLS_END Demon RACE_END Common RARITY_END Whenever this minion takes damage, summon a 1/1 Imp.

Python implementation:
class ImpGangBoss(MinionCard):§    def __init__(self):§        super().__init__("Imp Gang Boss", 3, CHARACTER_CLASS.WARLOCK, CARD_RARITY.COMMON, minion_type=MINION_TYPE.DEMON)§§    def create_minion(self, player):§        return Minion(2, 4, effects=[Effect(Damaged(), ActionTag(Summon(Imp()), PlayerSelector()))])§
Card: Lava Shock NAME_END -1 ATK_END -1 DEF_END 2 COST_END -1 DUR_END Spell TYPE_END Shaman PLAYER_CLS_END NIL RACE_END Rare RARITY_END Deal $2 damage. NL Unlock your <b>Overloaded</b> Mana Crystals.

Python implementation:
class LavaShock(SpellCard):§    def __init__(self):§        super().__init__("Lava Shock", 2, CHARACTER_CLASS.SHAMAN, CARD_RARITY.RARE, target_func=hearthbreaker.targeting.find_spell_target)§§    def use(self, player, game):§        super().use(player, game)§        self.target.damage(2, self)§        player.upcoming_overload = 0§        player.mana += player.current_overload§        player.current_overload = 0§
Card: Majordomo Executus NAME_END 9 ATK_END 7 DEF_END 9 COST_END -1 DUR_END Minion TYPE_END Neutral PLAYER_CLS_END NIL RACE_END Legendary RARITY_END <b>Deathrattle:</b> Replace your hero with Ragnaros, the Firelord.

Python implementation:
class MajordomoExecutus(MinionCard):§    def __init__(self):§        super().__init__("Majordomo Executus", 9, CHARACTER_CLASS.ALL, CARD_RARITY.LEGENDARY)§§    def create_minion(self, player):§        return Minion(9, 7, deathrattle=[Deathrattle(Transform(Ragnaros()), HeroSelector())])§
Card: Nefarian NAME_END 8 ATK_END 8 DEF_END 9 COST_END -1 DUR_END Minion TYPE_END Neutral PLAYER_CLS_END Dragon RACE_END Legendary RARITY_END <b>Battlecry:</b> Add 2 random spells to your hand <i>(from your opponent's class)</i>.

Python implementation:
class Nefarian(MinionCard):§    def __init__(self):§        super().__init__("Nefarian", 9, CHARACTER_CLASS.ALL, CARD_RARITY.LEGENDARY, minion_type=MINION_TYPE.DRAGON, battlecry=Battlecry(AddCard(CardQuery(conditions=[ IsClass(Attribute("character_class", HeroSelector(EnemyPlayer()))), IsSpell() ]), 2), PlayerSelector()))§§    def create_minion(self, player):§        return Minion(8, 8)§
Card: Quick Shot NAME_END -1 ATK_END -1 DEF_END 2 COST_END -1 DUR_END Spell TYPE_END Hunter PLAYER_CLS_END NIL RACE_END Common RARITY_END Deal $3 damage. NL If your hand is empty, draw a card.

Python implementation:
class QuickShot(SpellCard):§    def __init__(self):§        super().__init__("Quick Shot", 2, CHARACTER_CLASS.HUNTER, CARD_RARITY.COMMON, target_func=hearthbreaker.targeting.find_spell_target)§§    def use(self, player, game):§        super().use(player, game)§        self.target.damage(3, self)§        if len(player.hand) == 0:§            player.draw()§
Card: Rend Blackhand NAME_END 8 ATK_END 4 DEF_END 7 COST_END -1 DUR_END Minion TYPE_END Neutral PLAYER_CLS_END NIL RACE_END Legendary RARITY_END <b>Battlecry:</b> If you're holding a Dragon, destroy a <b>Legendary</b> minion.

Python implementation:
class RendBlackhand(MinionCard):§    def __init__(self):§        super().__init__("Rend Blackhand", 7, CHARACTER_CLASS.ALL, CARD_RARITY.LEGENDARY, battlecry=(Battlecry(Kill(), MinionSelector(And(MinionIsNotTarget(), IsRarity(CARD_RARITY.LEGENDARY)), BothPlayer(), UserPicker()), GreaterThan(Count(CardSelector(condition=IsType(MINION_TYPE.DRAGON))), value=0))))§§    def create_minion(self, player):§        return Minion(8, 4)§
Card: Resurrect NAME_END -1 ATK_END -1 DEF_END 2 COST_END -1 DUR_END Spell TYPE_END Priest PLAYER_CLS_END NIL RACE_END Rare RARITY_END Summon a random friendly minion that died this game.

Python implementation:
class Resurrect(SpellCard):§    def __init__(self):§        super().__init__("Resurrect", 2, CHARACTER_CLASS.PRIEST, CARD_RARITY.RARE)§§    def use(self, player, game):§        from hearthbreaker.engine import card_lookup§        super().use(player, game)§        if len(player.graveyard) > 0 and len(player.minions) < 7:§            card_name = game.random_choice(player.graveyard)§            card = card_lookup(card_name)§            card.summon(player, game, len(player.minions))§
Card: Revenge NAME_END -1 ATK_END -1 DEF_END 2 COST_END -1 DUR_END Spell TYPE_END Warrior PLAYER_CLS_END NIL RACE_END Rare RARITY_END Deal $1 damage to all minions. If you have 12 or less Health, deal $3 damage instead.

Python implementation:
class Revenge(SpellCard):§    def __init__(self):§        super().__init__("Revenge", 2, CHARACTER_CLASS.WARRIOR, CARD_RARITY.RARE)§§    def use(self, player, game):§        super().use(player, game)§        targets = copy.copy(game.other_player.minions)§        targets.extend(game.current_player.minions)§        if player.hero.health <= 12:§            for minion in targets:§                minion.damage(player.effective_spell_damage(3), self)§        else:§            for minion in targets:§                minion.damage(player.effective_spell_damage(1), self)§
Card: Volcanic Drake NAME_END 6 ATK_END 4 DEF_END 6 COST_END -1 DUR_END Minion TYPE_END Neutral PLAYER_CLS_END Dragon RACE_END Common RARITY_END Costs (1) less for each minion that died this turn.

Python implementation:
class VolcanicDrake(MinionCard):§    def __init__(self):§        super().__init__("Volcanic Drake", 6, CHARACTER_CLASS.ALL, CARD_RARITY.COMMON, minion_type=MINION_TYPE.DRAGON, buffs=[Buff(ManaChange(Count(DeadMinionSelector(players=BothPlayer())), -1))])§§    def create_minion(self, player):§        return Minion(6, 4)§
Card: Volcanic Lumberer NAME_END 7 ATK_END 8 DEF_END 9 COST_END -1 DUR_END Minion TYPE_END Druid PLAYER_CLS_END NIL RACE_END Rare RARITY_END <b>Taunt</b> NL Costs (1) less for each minion that died this turn.

Python implementation:
class VolcanicLumberer(MinionCard):§    def __init__(self):§        super().__init__("Volcanic Lumberer", 9, CHARACTER_CLASS.DRUID, CARD_RARITY.RARE, buffs=[Buff(ManaChange(Count(DeadMinionSelector(players=BothPlayer())), -1))])§§    def create_minion(self, player):§        return Minion(7, 8, taunt=True)§
Card: Whelp NAME_END 1 ATK_END 1 DEF_END 1 COST_END -1 DUR_END Minion TYPE_END Neutral PLAYER_CLS_END NIL RACE_END NIL RARITY_END NIL

Python implementation:
class Whelp(MinionCard):§    def __init__(self):§        super().__init__("Whelp", 1, CHARACTER_CLASS.ALL, CARD_RARITY.COMMON, False, minion_type=MINION_TYPE.DRAGON)§§    def create_minion(self, player):§        return Minion(1, 1)§
Card: Whelp NAME_END 2 ATK_END 2 DEF_END 1 COST_END -1 DUR_END Minion TYPE_END Neutral PLAYER_CLS_END Dragon RACE_END NIL RARITY_END NIL

Python implementation:
class Whelp(MinionCard):§    def __init__(self):§        super().__init__("Whelp", 1, CHARACTER_CLASS.ALL, CARD_RARITY.COMMON, False, minion_type=MINION_TYPE.DRAGON)§§    def create_minion(self, player):§        return Minion(1, 1)§