Fix a small condition where we try to insert a file before deleting
Merge pull request #21 from dstufft/fix-deletion-race

Fix a small condition where we try to insert a file before deleting
Fix an attempt to cast a None response from Redis to int
Merge pull request #22 from dstufft/fix-from-scratch

Fix an attempt to cast a None response from Redis to int
Switch to using stockpile to handle file storage

Stockpile will handle abstracting different types of storage
and presenting a unified interface. It will also handle fetching
an url that represents a particular file.
Remove now unused imports
Merge pull request #13 from dstufft/switch-storages-to-stockpile

Improve the storage
Force/Disable/If Needed logic for downloading files
Merge pull request #23 from dstufft/no-download

Reinstate the --no-download option
Update the .gitignore to be more complete
Validate the expected responses from PyPI
Merge pull request #5 from dstufft/validate-xmlrpc

Validate XMLRPC Responses
Model Requirements, Provides, and Obsoletes in the database
Pull the requires, provides, and obsoletes from PyPI and persist it
Handle the deprecrated requires like fields
Resolve a mistaken in instead of =
Properly handle extracting requirements from setuptools

* Looks for a *.egg-info/requires.txt and parses it into PEP345
  like metadata
* Attempts to make sure that "Hard" (e.g. from PEP345) requirements
  always win out over "approximate" (e.g. from setuptools)
  requirements
Don't use INNER JOIN to handle the requirements

Apparently there is some error from attempting to use inner join
for requirements/provides/obsoletes. Switching to SQLA's normal
join works fine.
Upgrade Flask-Script
Fix PyLint errors