No description
Find a file
Andrew Ekstedt fd5f6e1b65 Fix pokedex search command
Filtering on pokemon name was broken. Not sure why, since the search CLI
was added way after the i18n stuff was added. The error is related to
AssociationProxy, which figures because nothing about association
proxies ever seems to work right. I don't know enough about SQLAlchemy
internals to know if what it was trying to do was supposed to
work, or how to fix it if so. So, fix it by using the same boring
join-based filtering that spline-pokedex uses.

Running `pokedex search --name=gloom` caused the following error with
PostgreSQL and SQLAlchemy 1.3.5:

    sqlalchemy.exc.ProgrammingError: (psycopg2.ProgrammingError) can't adapt type 'ColumnAssociationProxyInstance'

...and this error with SQLite.

    sqlalchemy.exc.InterfaceError: (sqlite3.InterfaceError) Error binding parameter 4 - probably unsupported type.
    [parameters: (9, 9, 9, 9, ColumnAssociationProxyInstance(AssociationProxy('names_local', 'name')), 'gloom')]

Additionaly, the following error would happen with PostgreSQL and SQLAlchemy 0.9.7,
but that's probably unrelated:

    sqlalchemy.exc.ProgrammingError: (ProgrammingError) subquery in FROM must have an alias
    LINE 4: FROM pokemon_species, (SELECT pokemon_species_names.name AS ...
                                   ^

Fixes #296
2020-04-16 17:32:02 -07:00
bin Update README and improve docker support (#294) 2020-03-04 15:07:03 -08:00
doc pip install -E doesn't work anymore 2016-12-23 07:40:57 -08:00
pokedex Fix pokedex search command 2020-04-16 17:32:02 -07:00
scripts Re-rip Gen III contest effects 2020-03-01 23:25:49 -08:00
.dockerignore Update README and improve docker support (#294) 2020-03-04 15:07:03 -08:00
.gitignore Update README and improve docker support (#294) 2020-03-04 15:07:03 -08:00
.travis.yml Travis CI: check that dump is idempotent 2020-03-04 16:19:29 -08:00
conftest.py Modernize our use of py.test 2014-07-06 21:45:05 -07:00
Dockerfile Update README and improve docker support (#294) 2020-03-04 15:07:03 -08:00
LICENSE Added a README and licensed under MIT. 2009-07-23 00:04:47 -07:00
package.json added basic package.json for npm/yarn compatibility 2017-06-11 21:06:50 +02:00
README.md Update README and improve docker support (#294) 2020-03-04 15:07:03 -08:00
setup.py Update README and improve docker support (#294) 2020-03-04 15:07:03 -08:00

pokedex

This is a Python library slash pile of data containing a whole lot of data scraped from Pokémon games. It's the primary guts of veekun.

Current status

The project is not dead, but it is languishing. It's currently being maintained by only its creator (eevee) and a couple of other contributors, who are also occupied with a lot of other things.

The project needs to be modernized and to have a lot of rough edges fixed that would also make it easier to maintain for the games and generations to come.

Status of the YAML migration

Update from 2017-06-18

@eevee started on an experiment with switching to YAML for data storage some time ago, for a variety of reasons. It's finally starting to show some promise — all of gen 7 was dumped to a YAML format, then loaded into the database from there — but it'll take a lot more work to get this usable. The intended upsides are:

  • The data will include everything from older games, so you don't have to guess! Also, the veekun site will handle older games correctly, probably!
  • Many more filtering and searching tools on veekun, since we won't have to fight SQL to write them!
  • More interesting data we've never had before, like trainer teams and overworld items! And models? Maps, even? Who knows, but working on this stuff should be easier with all this existing code in place!
  • A project that's actually documented and not confusing as hell to use!
  • A useful command line interface that doesn't require weird setup steps!

If you're interested in this work, hearing about that would be some great motivation! In the meantime, veekun will look a bit stagnant. We can't dedicate huge amounts of time to it, either, so this may take a while, if it ever gets done at all. Sorry.

How can I help?

I don't know! Not many people have the right combination of skills and interests to work on this. I guess you could pledge to my Patreon as some gentle encouragement. :)

If you are a developer, you can of course also contribute to the development of this project via Pull Requests.

About editing CSV files

Fixing CSV data inconsistency or errors and putting that into a Pull Request it's also appreciated.

Even though, whilst for every new game that we integrate here the initial big dump of data comes directly from the disassembled game files and scripts that parse their data, there is still some data that needs to be fixed or introduced manually.

Pull Requests with manually-written modifications to the CSV files introducing data of new games without a trustful data source will be discarded.

As mentioned, for new games we always try to automate this process with scripts that parse the disassembled game's data data into CSV, excepting whenever we have to fix some data inconsistency or error.

Raw data can also sometimes come from external data miners, which have disassembled the game content and dumped all the information into human-readable text files.

Using the pokedex CLI

A guide is available under the project's Wiki.

Docker support

If you want to use the CLI but you don't want to install all python requirements yourself locally in your computer, you can use Docker and the provided Dockerfile will do everything for you.

You only need to clone this project, and under the project directory, use the docker helper script to run any pokedex CLI command:

Examples:

Generating the SQLite database from the CSV files:

bin/docker-pokedex setup -v

Dumping the SQLite database back into the CSV files:

bin/docker-pokedex dump -l all

You also have a special command to re-build the docker image (e.g. after editing files):

bin/docker-pokedex rebuild

The software is licensed under the MIT license. See the LICENSE file for full copyright and license text. The short version is that you can do what you like with the code, as long as you say where you got it.

This repository includes data extracted from the Pokémon series of video games. All of it is the intellectual property of Nintendo, Creatures, inc., and GAME FREAK, inc. and is protected by various copyrights and trademarks. The author believes that the use of this intellectual property for a fan reference is covered by fair use — the use is inherently educational, and the software would be severely impaired without the copyrighted material.

That said, any use of this library and its included data is at your own legal risk.