+ pokemon_id = Column(Integer, ForeignKey('pokemon.id'), primary_key=True, nullable=False, autoincrement=False,
+ info=dict(description=u"ID of the pokémon"))
+ egg_group_id = Column(Integer, ForeignKey('egg_groups.id'), primary_key=True, nullable=False, autoincrement=False,
+ info=dict(description=u"ID of the egg group"))
+
+class PokemonEvolution(TableBase):
+ u"""Specifies what causes a particular pokémon to evolve into another species.
+ """
+ __tablename__ = 'pokemon_evolution'
+ from_pokemon_id = Column(Integer, ForeignKey('pokemon.id'), nullable=False,
+ info=dict(description=u"ID of the pre-evolution species"))
+ to_pokemon_id = Column(Integer, ForeignKey('pokemon.id'), primary_key=True, nullable=False, autoincrement=False,
+ info=dict(description=u"ID of the post-evolution species"))
+ evolution_trigger_id = Column(Integer, ForeignKey('evolution_triggers.id'), nullable=False,
+ info=dict(description=u"ID of the trigger type"))
+ trigger_item_id = Column(Integer, ForeignKey('items.id'), nullable=True,
+ info=dict(description=u"ID of the item that triggers the evolution in a way defined by evolution_trigger_id"))
+ minimum_level = Column(Integer, nullable=True,
+ info=dict(description=u"Minimum level, or None if level doean't matter"))
+ gender = Column(Enum('male', 'female', name='pokemon_evolution_gender'), nullable=True,
+ info=dict(description=u"Required gender, or None if gender doesn't matter"))
+ location_id = Column(Integer, ForeignKey('locations.id'), nullable=True,
+ info=dict(description=u"Required location, or None if it doesn't matter"))
+ held_item_id = Column(Integer, ForeignKey('items.id'), nullable=True,
+ info=dict(description=u"An item the pokémon must hold, or None if it doesn't matter"))
+ time_of_day = Column(Enum('morning', 'day', 'night', name='pokemon_evolution_time_of_day'), nullable=True,
+ info=dict(description=u"Required time of day, or None if it doesn't matter"))
+ known_move_id = Column(Integer, ForeignKey('moves.id'), nullable=True,
+ info=dict(description=u"ID of a move the pokémon must know, or None if it doesn't matter"))
+ minimum_happiness = Column(Integer, nullable=True,
+ info=dict(description=u"Minimum tameness value the pokémon must have, or None if it doesn't matter"))
+ minimum_beauty = Column(Integer, nullable=True,
+ info=dict(description=u"Minimum Beauty value the pokémon must have, or None if it doesn't matter"))
+ relative_physical_stats = Column(Integer, nullable=True,
+ info=dict(description=u"Relation of Attack and Defense stats the pokémon must have, as sgn(atk-def), or None if that doesn't matter"))
+ party_pokemon_id = Column(Integer, ForeignKey('pokemon.id'), nullable=True,
+ info=dict(description=u"ID of a pokémon that must be present in the party, or None if there's no such condition"))