Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Problems with __future__ and swagger_client in Python

The Strava API documentation gives the following sample code which I copied and entered my own access token and club ID:

from __future__ import print_statement
import time
import swagger_client
from swagger_client.rest import ApiException
from pprint import pprint

# Configure OAuth2 access token for authorization: strava_oauth
swagger_client.configuration.access_token = 'MY_ACCESS_TOKEN'

# create an instance of the API class
api_instance = swagger_client.ClubsApi()
id = MY_CLUB_ID # Integer | The identifier of the club.
page = 56 # Integer | Page number. (optional)
perPage = 56 # Integer | Number of items per page. Defaults to 30.     (optional) (default to 30)

try:
    # List Club Activities
    api_response = api_instance.getClubActivitiesById(id, page=page, perPage=perPage)
    pprint(api_response)
except ApiException as e:
    print("Exception when calling ClubsApi->getClubActivitiesById: %s\n" % e)

I try to run it I get

from __future__ import print_statement
SyntaxError: future feature print_statement is not defined

I can also see that I will get the same with my swagger_client imports. I've tried installing packages for each but this hasn't made any difference. I read that for the __future__ I should be on > Python 2.7 but I'm currently using 3.6.

How do I resolve this issue?

like image 712
runnerpaul Avatar asked Mar 06 '23 02:03

runnerpaul


1 Answers

1) The first line contains a typo

from __future__ import print_statement
                             ^^^

it should be

from __future__ import print_function

But since you are using Python 3, you don't actually need this import - see this Q&A for details.

2) swagger_client is probably the Python client generated from the Strava OpenAPI definition. It looks like you need to generate it manually using Swagger Codegen. There are several ways to do this:

  • Paste the Strava OpenAPI definition into https://editor.swagger.io and select Generate Client > Python.
  • Install the command-line version of Swagger Codegen and run:

    # Windows
    java -jar swagger-codegen-cli-<ver>.jar generate -i https://developers.strava.com/swagger/swagger.json -l python -o ./StravaPythonClient
    
    # Mac
    swagger-codegen generate -i https://developers.strava.com/swagger/swagger.json -l python -o ./StravaPythonClient
    
like image 79
Helen Avatar answered Mar 14 '23 11:03

Helen