Migration guide from 3.x to 4.x

This guide explains how to proceed with the migration from version 3.x to version 4.x of your current code. If you are still using the old version, it is highly recommended to update, since you wont get any future updates nor new features.

Changelog summary

  • Added type hinting to help you code.

  • Added compatibility with all arguments from the official API.

  • Now the full information from the API is returned, instead of a trimmed version.

  • Added custom exceptions to help with error handling.

  • Added models for some attributes.

  • Adjusted all methods and models to meet Amazon API standards.

  • Changed module name from amazon to amazon_paapi to avoid module clashes.

  • Compatibility with Python 3.6 or later.

How to upgrade?

Upgrading to the last version of this module is as easy as running this pip command:

pip install python-amazon-paapi --upgrade

What should I change in my current code?

Imports

First of all, you should change your import of the AmazonApi class:

from amazon.paapi import AmazonApi  ->  from amazon_paapi import AmazonApi
from amazon.tools import get_asin   ->  from amazon_paapi import get_asin

Methods

Some of the methods has been renamed and the parameters has changed to follow the official Amazon API standards. So in order to adapt your code, you should first update your methods as follow:

get_product()       ->  get_items()
get_products()      ->  get_items()
search_products()   ->  search_items()
get_browsenodes()   ->  get_browse_nodes()

As you can check, get_product has been deprecated and now get_items is also used for getting only one result. So if you were using this method, you should keep in mind that the new method will return an array containing the result. An easy way of handling this could be:

result = get_product(asin) -> result = get_items(asin)[0]

Regarding parameters, you can check the AmazonApi documentation for the complete reference.

Results

Results has been changed from previous version, so you will need to adapt how you process them. This change follows the official Amazon Product Advertising API documentation, so you can check it for reference. Just note that documentation uses CamelCase names, but this module uses snake_case:

ItemInfo.ContentInfo    ->  item_info.content_info
Offers.Listings.Price   ->  offers.listings.price

Type hints has been added to the new version, so it is highly recommended to use an IDE that includes code completion features, like Visual Studio Code.

Throttling

Throttling parameter now represents the seconds to wait between API calls instead of the frequency. So make sure to adapt the value to your needs.

amazon = AmazonApi(KEY, SECRET, TAG, COUNTRY, throttling=4)  # Makes 1 request every 4 seconds
amazon = AmazonApi(KEY, SECRET, TAG, COUNTRY, throttling=0)  # No wait time between requests

Serializer for Django

The serializer for Django is not available for this new version. If you want to help with the migration, send a pull request and will be added on future updates.

I need more help

You can always ask for help in our Telegram group or raise an issue on Github for help. If you find that this guide could be improved somehow, feel free to send a pull request with your changes.