PokeAPI / pokebase

Python 3 wrapper for Pokéapi v2
BSD 3-Clause "New" or "Revised" License
285 stars 53 forks source link

sprites.versions all have dashes in their names #44

Open axiopaladin opened 1 year ago

axiopaladin commented 1 year ago

If I wanted to get, say, the Gen 4 sprite of Pikachu, my first instinct would be the following:

import pokebase as pb
pikachu = pb.pokemon("pikachu")
pikachu_sprite = pikachu.sprites.versions.generation-iv.front_default

However, notice that generation-iv has a hyphen. According to the python interpreter, that's a subtraction operator, and it throws an error because it doesn't know how to subtract iv.front_default (an object that doesn't exist) from pikachu.sprites.versions.generation (which also doesn't exist).

The simplest fix would probably be to change all generation calls to use underscores instead.

jemarq04 commented 1 year ago

One way to get around this is to use getattr. For this example, you could get around it by saying

import pokebase as pb
pikachu = pb.pokemon("pikachu")
pikachu_sprite = getattr(pikachu.sprites.versions, "generation-iv").front_default

Though, you'd need to specify a version group in between since generation-iv leads to diamond-pearl, platinum, and heartgold-soulsilver. For the version groups that have dashes, you'd have to use another getattr call.