From 56e212f09e2ac1594e4471a5215b719e58bd81e1 Mon Sep 17 00:00:00 2001
From: megadrifter-pt <megadrifter2@gmail.com>
Date: Wed, 17 Jun 2015 20:37:20 +0200
Subject: [PATCH 1/4] Add some French translations

---
 pokedex/data/csv/berry_firmness_names.csv    |  5 ++++
 pokedex/data/csv/characteristic_text.csv     | 30 ++++++++++++++++++++
 pokedex/data/csv/language_names.csv          | 10 +++++++
 pokedex/data/csv/move_meta_ailment_names.csv | 20 +++++++++++++
 pokedex/data/csv/pal_park_area_names.csv     |  5 ++++
 pokedex/data/csv/pokeathlon_stat_names.csv   |  5 ++++
 pokedex/data/csv/pokedex_prose.csv           | 12 ++++++++
 pokedex/data/csv/pokemon_color_names.csv     | 10 +++++++
 pokedex/data/csv/pokemon_habitat_names.csv   |  9 ++++++
 pokedex/data/csv/region_names.csv            |  6 ++++
 pokedex/data/csv/stat_names.csv              |  8 ++++++
 pokedex/data/csv/type_names.csv              |  1 +
 pokedex/data/csv/version_names.csv           | 24 ++++++++++++++++
 13 files changed, 145 insertions(+)

diff --git a/pokedex/data/csv/berry_firmness_names.csv b/pokedex/data/csv/berry_firmness_names.csv
index c66ff7c..9af051e 100644
--- a/pokedex/data/csv/berry_firmness_names.csv
+++ b/pokedex/data/csv/berry_firmness_names.csv
@@ -1,6 +1,11 @@
 berry_firmness_id,local_language_id,name
+1,5,Très tendre
 1,9,Very Soft
+2,5,Tendre
 2,9,Soft
+3,5,Ferme
 3,9,Hard
+4,5,Très ferme
 4,9,Very Hard
+5,5,Super ferme
 5,9,Super Hard
diff --git a/pokedex/data/csv/characteristic_text.csv b/pokedex/data/csv/characteristic_text.csv
index dcdef66..23adda1 100644
--- a/pokedex/data/csv/characteristic_text.csv
+++ b/pokedex/data/csv/characteristic_text.csv
@@ -1,31 +1,61 @@
 characteristic_id,local_language_id,message
+1,5,Adore manger
 1,9,Loves to eat
+2,5,Est fier de sa puissance
 2,9,Proud of its power
+3,5,Corps robuste
 3,9,Sturdy body
+4,5,Extrêmement curieux
 4,9,Highly curious
+5,5,Très volontaire
 5,9,Strong willed
+6,5,Aime courir
 6,9,Likes to run
+7,5,S'assoupit souvent
 7,9,Takes plenty of siestas
+8,5,Aime se démener
 8,9,Likes to thrash about
+9,5,Sait encaisser les coups
 9,9,Capable of taking hits
+10,5,Coquin
 10,9,Mischievous
+11,5,Un peu vaniteux
 11,9,Somewhat vain
+12,5,Attentif aux sons
 12,9,Alert to sounds
+13,5,Dort beaucoup
 13,9,Nods off a lot
+14,5,Un peu coléreux
 14,9,A little quick tempered
+15,5,Très obstiné
 15,9,Highly persistent
+16,5,Très astucieux
 16,9,Thoroughly cunning
+17,5,Esprit rebelle
 17,9,Strongly defiant
+18,5,Bête et impulsif
 18,9,Impetuous and silly
+19,5,Éparpille des choses
 19,9,Scatters things often
+20,5,Aime combattre
 20,9,Likes to fight
+21,5,Bonne endurance
 21,9,Good endurance
+22,5,Souvent dans la lune
 22,9,Often lost in thought
+23,5,A horreur de perdre
 23,9,Hates to lose
+24,5,Aime faire le pitre
 24,9,Somewhat of a clown
+25,5,Aime se détendre
 25,9,Likes to relax
+26,5,S'emporte facilement
 26,9,Quick tempered
+27,5,Persévérant
 27,9,Good perseverance
+28,5,Très particulier
 28,9,Very finicky
+29,5,Assez entêté
 29,9,Somewhat stubborn
+30,5,Fuit rapidement
 30,9,Quick to flee
diff --git a/pokedex/data/csv/language_names.csv b/pokedex/data/csv/language_names.csv
index d30464a..31d8f11 100644
--- a/pokedex/data/csv/language_names.csv
+++ b/pokedex/data/csv/language_names.csv
@@ -1,31 +1,41 @@
 language_id,local_language_id,name
 1,1,日本語
+1,5,Japonais
 1,6,Japanisch
 1,9,Japanese
 2,1,正式ローマジ
+2,5,Romaji
 2,6,Rōmaji
 2,9,Official roomaji
 3,1,韓国語
+3,5,Coréen
 3,6,Koreanisch
 3,9,Korean
 4,1,中国語
+4,5,Chinois
 4,6,Chinesisch
 4,9,Chinese
 5,1,フランス語
+5,5,Français
 5,6,Französisch
 5,9,French
 6,1,ドイツ語
+6,5,Allemand
 6,6,Deutsch
 6,9,German
 7,1,西語
+7,5,Espagnol
 7,6,Spanisch
 7,9,Spanish
 8,1,伊語
+8,5,Italien
 8,6,Italienisch
 8,9,Italian
 9,1,英語
+9,5,Anglais
 9,6,Englisch
 9,9,English
 10,1,チェコ語
+10,5,Tchèque
 10,6,Tschechisch
 10,9,Czech
diff --git a/pokedex/data/csv/move_meta_ailment_names.csv b/pokedex/data/csv/move_meta_ailment_names.csv
index a202a71..5b4e8e6 100644
--- a/pokedex/data/csv/move_meta_ailment_names.csv
+++ b/pokedex/data/csv/move_meta_ailment_names.csv
@@ -1,21 +1,41 @@
 move_meta_ailment_id,local_language_id,name
+-1,5,????
 -1,9,????
+0,5,Aucun
 0,9,none
+1,5,Paralysie
 1,9,Paralysis
+2,5,Sommeil
 2,9,Sleep
+3,5,Gel
 3,9,Freeze
+4,5,Brûlure
 4,9,Burn
+5,5,Empoisonnement
 5,9,Poison
+6,5,Confusion
 6,9,Confusion
+7,5,Attraction
 7,9,Infatuation
+8,5,Piège
 8,9,Trap
+9,5,Cauchemar
 9,9,Nightmare
+12,5,Tourmente
 12,9,Torment
+13,5,Entrave
 13,9,Disable
+14,5,Bâillement
 14,9,Yawn
+15,5,Anti-Soin
 15,9,Heal Block
+17,5,
 17,9,No type immunity
+18,5,Vampigraine
 18,9,Leech Seed
+19,5,Embargo
 19,9,Embargo
+20,5,Requiem
 20,9,Perish Song
+21,5,Racines
 21,9,Ingrain
diff --git a/pokedex/data/csv/pal_park_area_names.csv b/pokedex/data/csv/pal_park_area_names.csv
index c0dfd97..394d249 100644
--- a/pokedex/data/csv/pal_park_area_names.csv
+++ b/pokedex/data/csv/pal_park_area_names.csv
@@ -1,6 +1,11 @@
 pal_park_area_id,local_language_id,name
+1,5,Forêt
 1,9,Forest
+2,5,Plaine
 2,9,Field
+3,5,Montagne
 3,9,Mountain
+4,5,Étang
 4,9,Pond
+5,5,Mer
 5,9,Sea
diff --git a/pokedex/data/csv/pokeathlon_stat_names.csv b/pokedex/data/csv/pokeathlon_stat_names.csv
index 4f47d7e..67fa37d 100644
--- a/pokedex/data/csv/pokeathlon_stat_names.csv
+++ b/pokedex/data/csv/pokeathlon_stat_names.csv
@@ -1,6 +1,11 @@
 pokeathlon_stat_id,local_language_id,name
+1,5,Vitesse
 1,9,Speed
+2,5,Force
 2,9,Power
+3,5,Habileté
 3,9,Skill
+4,5,Endurance
 4,9,Stamina
+5,5,Saut
 5,9,Jump
diff --git a/pokedex/data/csv/pokedex_prose.csv b/pokedex/data/csv/pokedex_prose.csv
index 9f52623..c670938 100644
--- a/pokedex/data/csv/pokedex_prose.csv
+++ b/pokedex/data/csv/pokedex_prose.csv
@@ -1,27 +1,39 @@
 pokedex_id,local_language_id,name,description
+1,5,National,Pokédex National complet
 1,6,National,Komplette Nationale Dex
 1,9,National,Entire National dex
+2,5,Kanto,Pokédex régional de Kanto dans Rouge/Bleu/Jaune
 2,6,Kanto,Rot/Blau/Gelb Kanto Dex
 2,9,Kanto,Red/Blue/Yellow Kanto dex
+3,5,Johto initial,"Pokédex régional de Johto dans Or/Argent/Cristal, appellé ""Nouveau"" Pokédex dans le jeu"
 3,6,Original Johto,"Gold/Silber/Kristall Johto Dex — Auch der ""Neue"" Pokédex im Spiel genannt"
 3,9,Original Johto,"Gold/Silver/Crystal Johto dex—called the ""New"" Pokédex in-game"
 4,6,Hoenn,Rubin/Saphir/Smaragd Hoenn Dex
 4,9,Hoenn,Ruby/Sapphire/Emerald Hoenn dex
+5,5,Sinnoh initial,Pokédex régional de Sinnoh dans Diamant/Perle
 5,6,Original Sinnoh,Diamant/Perl Sinnoh Dex
 5,9,Original Sinnoh,Diamond/Pearl Sinnoh dex
+6,5,Sinnoh étendu,Pokédex régional de Sinnoh dans Platine
 6,6,Erweitertes Sinnoh,Platin Sinnoh Dex — eine erweiterte Version von Diamant und Perl
 6,9,Extended Sinnoh,Platinum Sinnoh dex—an extended version of Diamond and Pearl's
+7,5,Johto amélioré,"Pokédex régional de Johto dans Or HeartGold/Argent SoulSilver, mis à jour pour la 4ème génération"
 7,6,Aktualisiertes Johto,HeartGold/SoulSilver Johto Dex — Dex aus Gold/Silber/Kristall um Fähigkeiten basierende Entwicklungen aus Generation IV erweitert
 7,9,Updated Johto,"HeartGold/SoulSilver Johto dex—Gold/Silver/Crystal's, extended to add move-based Generation IV evolutions"
+8,5,Unys initial,Pokédex régional d'Unys dans Noir/Blanc
 8,6,Original Einall,Schwarz/Weiß Einall Dex
 8,9,Original Unova,Black/White Unova dex
+9,5,Unys amélioré,Pokédex régional d'Unys dans Noir 2/Blanc 2
 9,6,Aktualisiertes Einall,Schwarz 2/Weiß 2 Einall Dex
 9,9,Updated Unova,Black 2/White 2 Unova dex
+11,5,Galerie,Ordre de la Galerie dans Pokémon Conquest
 11,6,Gallerie,Pokémon Conquest Galerie Reihenfolge
 11,9,Gallery,Pokémon Conquest gallery order
+12,5,Kalos : Centre,
 12,6,Kalos-Zentral,
 12,9,Central Kalos,
+13,5,Kalos : Côtes,
 13,6,Kalos-Küste,
 13,9,Coastal Kalos,
+14,5,Kalos : Monts,
 14,6,Kalos-Gebirge,
 14,9,Mountain Kalos,
diff --git a/pokedex/data/csv/pokemon_color_names.csv b/pokedex/data/csv/pokemon_color_names.csv
index af86742..c0f610a 100644
--- a/pokedex/data/csv/pokemon_color_names.csv
+++ b/pokedex/data/csv/pokemon_color_names.csv
@@ -1,41 +1,51 @@
 pokemon_color_id,local_language_id,name
 1,1,黒い
+1,5,Noir
 1,6,Schwarz
 1,8,Nero
 1,9,Black
 2,1,青い
+2,5,Bleu
 2,6,Blau
 2,8,Blu
 2,9,Blue
 3,1,茶色
+3,5,Brun
 3,6,Braun
 3,8,Marrone
 3,9,Brown
 4,1,灰色
+4,5,Gris
 4,6,Grau
 4,8,Grigio
 4,9,Gray
 5,1,緑
+5,5,Vert
 5,6,Grün
 5,8,Verde
 5,9,Green
 6,1,ピンク
+6,5,Rose
 6,6,Rosa
 6,8,Rosa
 6,9,Pink
 7,1,パーパル
+7,5,Violet
 7,6,Violett
 7,8,Viola
 7,9,Purple
 8,1,赤い
+8,5,Rouge
 8,6,Rot
 8,8,Rosso
 8,9,Red
 9,1,白い
+9,5,Blanc
 9,6,Weiß
 9,8,Bianco
 9,9,White
 10,1,黄色
+10,5,Jaune
 10,6,Gelb
 10,8,Giallo
 10,9,Yellow
diff --git a/pokedex/data/csv/pokemon_habitat_names.csv b/pokedex/data/csv/pokemon_habitat_names.csv
index d974bc6..8cd3b48 100644
--- a/pokedex/data/csv/pokemon_habitat_names.csv
+++ b/pokedex/data/csv/pokemon_habitat_names.csv
@@ -1,10 +1,19 @@
 pokemon_habitat_id,local_language_id,name
+1,5,grottes
 1,9,cave
+2,5,forêts
 2,9,forest
+3,5,champs
 3,9,grassland
+4,5,montagnes
 4,9,mountain
+5,5,rares
 5,9,rare
+6,5,milieux hostiles
 6,9,rough terrain
+7,5,mers
 7,9,sea
+8,5,urbains
 8,9,urban
+9,5,marécages
 9,9,water's edge
diff --git a/pokedex/data/csv/region_names.csv b/pokedex/data/csv/region_names.csv
index fe0926e..41f65f1 100644
--- a/pokedex/data/csv/region_names.csv
+++ b/pokedex/data/csv/region_names.csv
@@ -1,13 +1,19 @@
 region_id,local_language_id,name
+1,5,Kanto
 1,6,Kanto
 1,9,Kanto
+2,5,Johto
 2,6,Johto
 2,9,Johto
+3,5,Hoenn
 3,6,Hoenn
 3,9,Hoenn
+4,5,Sinnoh
 4,6,Sinnoh
 4,9,Sinnoh
+5,5,Unys
 5,6,Einall
 5,9,Unova
+6,5,Kalos
 6,6,Kalos
 6,9,Kalos
diff --git a/pokedex/data/csv/stat_names.csv b/pokedex/data/csv/stat_names.csv
index 467e739..1e98a1a 100644
--- a/pokedex/data/csv/stat_names.csv
+++ b/pokedex/data/csv/stat_names.csv
@@ -1,40 +1,48 @@
 stat_id,local_language_id,name
 1,1,HP
+1,5,PV
 1,6,KP
 1,7,PS
 1,8,PS
 1,9,HP
 2,1,こうげき
+2,5,Attaque
 2,6,Angriff
 2,7,Ataque
 2,8,Attacco
 2,9,Attack
 3,1,ぼうぎょ
+3,5,Défense
 3,6,Verteidigung
 3,7,Defensa
 3,8,Difesa
 3,9,Defense
 4,1,とくこう
+4,5,Attaque Spéciale
 4,6,Spezialangriff
 4,7,Ataque Especial
 4,8,Attacco Speciale
 4,9,Special Attack
 5,1,とくぼう
+5,5,Défense Spéciale
 5,6,Spezialverteidigung
 5,7,Defensa Especial
 5,8,Difesa Speciale
 5,9,Special Defense
 6,1,すばやさ
+6,5,Vitesse
 6,6,Initiative
 6,7,Velocidad
 6,8,Velocità
 6,9,Speed
 7,1,めいちゅう
+7,5,Précision
 7,6,Genauigkeit
 7,7,Precisión
 7,8,precisione
 7,9,accuracy
 8,1,かいひ
+8,5,Esquive
 8,6,Fluchtwert
 8,7,Evasión
 8,8,elusione
diff --git a/pokedex/data/csv/type_names.csv b/pokedex/data/csv/type_names.csv
index cec8c2e..3d0c857 100644
--- a/pokedex/data/csv/type_names.csv
+++ b/pokedex/data/csv/type_names.csv
@@ -132,5 +132,6 @@ type_id,local_language_id,name
 10001,8,???
 10001,9,???
 10002,1,ダーク
+10002,5,Obscur
 10002,8,Ombra
 10002,9,Shadow
diff --git a/pokedex/data/csv/version_names.csv b/pokedex/data/csv/version_names.csv
index 67bd39d..2802907 100644
--- a/pokedex/data/csv/version_names.csv
+++ b/pokedex/data/csv/version_names.csv
@@ -1,73 +1,97 @@
 version_id,local_language_id,name
 1,1,赤
+1,5,Rouge
 1,6,Rot
 1,9,Red
 2,1,緑
+2,5,Bleu
 2,6,Blau
 2,9,Blue
 3,1,ピカチュウ
+3,5,Jaune
 3,6,Gelb
 3,9,Yellow
 4,1,金
+4,5,Or
 4,6,Gold
 4,9,Gold
 5,1,銀
+5,5,Argent
 5,6,Silber
 5,9,Silver
 6,1,クリスタル
+6,5,Cristal
 6,6,Kristall
 6,9,Crystal
 7,1,ルビー
+7,5,Rubis
 7,6,Rubin
 7,9,Ruby
 8,1,サファイア
+8,5,Saphir
 8,6,Saphir
 8,9,Sapphire
 9,1,エメラルド
+9,5,Émeraude
 9,6,Smaragd
 9,9,Emerald
 10,1,ファイアレッド
+10,5,Rouge Feu
 10,6,Feuerrot
 10,9,FireRed
 11,1,リーフグリーン
+11,5,Vert Feuille
 11,6,Blattgrün
 11,9,LeafGreen
 12,1,ダイヤモンド
+12,5,Diamant
 12,6,Diamant
 12,9,Diamond
 13,1,パール
+13,5,Perle
 13,6,Perl
 13,9,Pearl
 14,1,プラチナ
+14,5,Platine
 14,6,Platin
 14,9,Platinum
 15,1,ハートゴールド
+15,5,Or HeartGold
 15,6,HeartGold
 15,9,HeartGold
 16,1,ソウルシルバー
+16,5,Argent SoulSilver
 16,6,SoulSilver
 16,9,SoulSilver
 17,1,ブラック
+17,5,Noir
 17,6,Schwarz
 17,9,Black
 18,1,ホワイト
+18,5,Blanc
 18,6,Weiß
 18,9,White
 19,1,コロシアム
+19,5,Colosseum
 19,6,Colosseum
 19,9,Colosseum
 20,1,XD
+20,5,XD
 20,6,XD
 20,9,XD
 21,1,ブラック2
+21,5,Noir 2
 21,6,Schwarz 2
 21,9,Black 2
 22,1,ホワイト2
+22,5,Blanc 2
 22,6,Weiß 2
 22,9,White 2
 23,1,X
+23,5,X
 23,6,X
 23,9,X
 24,1,Y
+24,5,Y
 24,6,Y
 24,9,Y

From 7d1b8cc4f85c052efea4af3f65ae9e38e716baf6 Mon Sep 17 00:00:00 2001
From: Andrew Ekstedt <andrew.ekstedt@gmail.com>
Date: Wed, 17 Jun 2015 16:02:56 -0700
Subject: [PATCH 2/4] Improve table docs w.r.t. ids and game indices.

Went though the table docs and noted which tables have ids that correspond
to game ids, and explained why we sometimes have ids in the 10000s.

Since docs attached to id columns aren't displayed in the web documentation,
these edits all go in the class docstring, and i took the liberty of deleting
the id column docs from every table i touched.

Also: added some words about how to get to the species from pokemon and
pokemon_form.

Also: note that item flags are not official (they are a holdover from
brownkun) and item pockets are sort of kind of official (they originated from
D/P i believe, but i'm not sure how we've been assigning them for newer items).

Pertains to #99.
---
 pokedex/db/tables.py | 70 +++++++++++++++++++++++++++++---------------
 1 file changed, 46 insertions(+), 24 deletions(-)

diff --git a/pokedex/db/tables.py b/pokedex/db/tables.py
index 1858c55..5382196 100644
--- a/pokedex/db/tables.py
+++ b/pokedex/db/tables.py
@@ -114,11 +114,14 @@ create_translation_table('language_names', Language, 'names',
 ### The actual tables
 
 class Ability(TableBase):
-    u"""An ability a Pokémon can have, such as Static or Pressure."""
+    u"""An ability a Pokémon can have, such as Static or Pressure.
+
+    IDs below 10000 match the internal ID in the games.
+    IDs above 10000 are reserved for Conquest-only abilities.
+    """
     __tablename__ = 'abilities'
     __singlename__ = 'ability'
-    id = Column(Integer, primary_key=True, nullable=False,
-        doc=u"This ability's unique ID; matches the games' internal ID")
+    id = Column(Integer, primary_key=True, nullable=False)
     identifier = Column(Unicode(79), nullable=False,
         doc=u"An identifier",
         info=dict(format='identifier'))
@@ -176,10 +179,11 @@ class Berry(TableBase):
     u"""A Berry, consumable item that grows on trees.
 
     For data common to all items, such as the name, see the corresponding item entry.
+
+    ID matches the in-game berry number.
     """
     __tablename__ = 'berries'
-    id = Column(Integer, primary_key=True, nullable=False,
-        doc=u"This Berry's in-game number")
+    id = Column(Integer, primary_key=True, nullable=False)
     item_id = Column(Integer, ForeignKey('items.id'), nullable=False,
         doc=u"The ID of the item that represents this Berry")
     firmness_id = Column(Integer, ForeignKey('berry_firmness.id'), nullable=False,
@@ -713,12 +717,18 @@ create_translation_table('contest_type_names', ContestType, 'names',
 class EggGroup(TableBase):
     u"""An Egg group. Usually, two Pokémon can breed if they share an Egg Group.
 
-    (exceptions are the Ditto and No Eggs groups)
+    Exceptions:
+
+    Pokémon in the No Eggs group cannot breed.
+
+    Pokemon in the Ditto group can breed with any pokemon
+    except those in the Ditto or No Eggs groups.
+
+    ID matches to the internal ID used in the games.
     """
     __tablename__ = 'egg_groups'
     __singlename__ = 'egg_group'
-    id = Column(Integer, primary_key=True, nullable=False,
-        doc=u"A unique ID for this group")
+    id = Column(Integer, primary_key=True, nullable=False)
     identifier = Column(Unicode(79), nullable=False,
         doc=u"An identifier.",
         info=dict(format='identifier'))
@@ -937,11 +947,13 @@ create_translation_table('growth_rate_prose', GrowthRate, 'prose',
 )
 
 class Item(TableBase):
-    u"""An Item from the games, like "Poké Ball" or "Bicycle". """
+    u"""An Item from the games, like "Poké Ball" or "Bicycle".
+
+    IDs do not mean anything; see ItemGameIndex for the IDs used in the games.
+    """
     __tablename__ = 'items'
     __singlename__ = 'item'
-    id = Column(Integer, primary_key=True, nullable=False,
-        doc=u"A numeric ID")
+    id = Column(Integer, primary_key=True, nullable=False)
     identifier = Column(Unicode(79), nullable=False,
         doc=u"An identifier",
         info=dict(format='identifier'))
@@ -980,7 +992,7 @@ create_translation_table('item_flavor_summaries', Item, 'flavor_summaries',
 )
 
 class ItemCategory(TableBase):
-    u"""An item category. Not official."""
+    u"""An item category.  Not official."""
     __tablename__ = 'item_categories'
     __singlename__ = 'item_category'
     id = Column(Integer, primary_key=True, nullable=False,
@@ -999,7 +1011,7 @@ create_translation_table('item_category_prose', ItemCategory, 'prose',
 )
 
 class ItemFlag(TableBase):
-    u"""An item attribute such as "consumable" or "holdable". """
+    u"""An item attribute such as "consumable" or "holdable".  Not official. """
     __tablename__ = 'item_flags'
     __singlename__ = 'item_flag'
     id = Column(Integer, primary_key=True, nullable=False,
@@ -1064,7 +1076,7 @@ class ItemGameIndex(TableBase):
         doc=u"Internal ID of the item in the generation")
 
 class ItemPocket(TableBase):
-    u"""A pocket that categorizes items."""
+    u"""A pocket that categorizes items.  Semi-offical."""
     __tablename__ = 'item_pockets'
     __singlename__ = 'item_pocket'
     id = Column(Integer, primary_key=True, nullable=False,
@@ -1165,11 +1177,13 @@ class Machine(TableBase):
         return self.machine_number >= 100
 
 class Move(TableBase):
-    u"""A Move: technique or attack a Pokémon can learn to use."""
+    u"""A Move: technique or attack a Pokémon can learn to use.
+
+    IDs below 10000 match the internal IDs used in the games.
+    IDs above 10000 are reserved for Shadow moves from Colosseum and XD."""
     __tablename__ = 'moves'
     __singlename__ = 'move'
-    id = Column(Integer, primary_key=True, nullable=False,
-        doc=u"A numeric ID")
+    id = Column(Integer, primary_key=True, nullable=False)
     identifier = Column(Unicode(79), nullable=False,
         doc=u"An identifier",
         info=dict(format='identifier'))
@@ -1603,11 +1617,13 @@ class Pokemon(TableBase):
     different types, moves, or other game-changing properties counts as a
     different Pokémon.  For example, this table contains four rows for Deoxys,
     but only one for Unown.
+
+    Non-default forms have IDs above 10000.
+    IDs below 10000 match the species_id column, for convenience.
     """
     __tablename__ = 'pokemon'
     __singlename__ = 'pokemon'
-    id = Column(Integer, primary_key=True, nullable=False,
-        doc=u"A numeric ID")
+    id = Column(Integer, primary_key=True, nullable=False)
     identifier = Column(Unicode(79), nullable=False,
         doc=u'An identifier, including form iff this row corresponds to a single, named form',
         info=dict(format='identifier'))
@@ -1789,11 +1805,15 @@ class PokemonForm(TableBase):
     color differences) of every Pokémon, regardless of how the games treat
     them.  Even Pokémon with no alternate forms have one row in this table, to
     represent their lone "normal" form.
+
+    Forms which are not the default for their species have IDs above 10000.
+    IDs below 10000 correspond to ID of the species for convenience,
+    but this should not be relied upon.
+    To get the species ID of a form, join with the pokemon table.
     """
     __tablename__ = 'pokemon_forms'
     __singlename__ = 'pokemon_form'
-    id = Column(Integer, primary_key=True, nullable=False,
-        doc=u'A unique ID for this form.')
+    id = Column(Integer, primary_key=True, nullable=False)
     identifier = Column(Unicode(79), nullable=False,
         doc=u"A unique identifier for this form among all forms of all Pokémon",
         info=dict(format='identifier'))
@@ -1960,11 +1980,13 @@ create_translation_table('pokemon_shape_prose', PokemonShape, 'prose',
 )
 
 class PokemonSpecies(TableBase):
-    u"""A Pokémon species: the standard 1–151.  Or 649.  Whatever. """
+    u"""A Pokémon species: the standard 1–151.  Or 649.  Whatever.
+
+    ID matches the National Pokédex number of the species.
+    """
     __tablename__ = 'pokemon_species'
     __singlename__ = 'pokemon_species'
-    id = Column(Integer, primary_key=True, nullable=False,
-        doc=u"A numeric ID")
+    id = Column(Integer, primary_key=True, nullable=False)
     identifier = Column(Unicode(79), nullable=False,
         doc=u"An identifier",
         info=dict(format='identifier'))

From 1c1f65f198b67dbf3475924c7ebcf6b42aeeb240 Mon Sep 17 00:00:00 2001
From: Andrew Ekstedt <andrew.ekstedt@gmail.com>
Date: Thu, 20 Aug 2015 20:33:46 -0700
Subject: [PATCH 3/4] Travis: Declare that we don't use sudo

This will apparently allow us to build on Travis's new container-based build
system, which is supposed to lead to faster builds. The catch is that we
don't get root access, but we don't need it anyway.

http://docs.travis-ci.com/user/migrating-from-legacy/
---
 .travis.yml | 1 +
 1 file changed, 1 insertion(+)

diff --git a/.travis.yml b/.travis.yml
index 2d3b52c..3ab1d72 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -9,3 +9,4 @@ python:
 install: pip install -e .
 before_script: pokedex setup -v
 script: py.test
+sudo: false

From d467a453545c1f4e1ef6d483aa988b49c9cad831 Mon Sep 17 00:00:00 2001
From: Konrad Borowski <x.fix@o2.pl>
Date: Sun, 23 Aug 2015 18:29:17 +0200
Subject: [PATCH 4/4] Add ORAS move methods

This allows comparing Pokemon using ORAS version as reference.
---
 pokedex/data/csv/version_group_pokemon_move_methods.csv | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/pokedex/data/csv/version_group_pokemon_move_methods.csv b/pokedex/data/csv/version_group_pokemon_move_methods.csv
index b6622df..ee0940d 100644
--- a/pokedex/data/csv/version_group_pokemon_move_methods.csv
+++ b/pokedex/data/csv/version_group_pokemon_move_methods.csv
@@ -64,3 +64,9 @@ version_group_id,pokemon_move_method_id
 15,4
 15,6
 15,10
+16,1
+16,2
+16,3
+16,4
+16,6
+16,10