Skip to content

Commit 3beeb61

Browse files
committed
updated ApiClient of python sdk.
When create api instance, if we don't pass the `api_client` parameter, then use the default api_client in `config` module.
1 parent 095771d commit 3beeb61

File tree

8 files changed

+66
-8
lines changed

8 files changed

+66
-8
lines changed

modules/swagger-codegen/src/main/java/com/wordnik/swagger/codegen/languages/PythonClientCodegen.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,7 @@ public PythonClientCodegen() {
7171
supportingFiles.add(new SupportingFile("swagger.mustache", invokerPackage, "swagger.py"));
7272
supportingFiles.add(new SupportingFile("rest.mustache", invokerPackage, "rest.py"));
7373
supportingFiles.add(new SupportingFile("util.mustache", invokerPackage, "util.py"));
74+
supportingFiles.add(new SupportingFile("config.mustache", invokerPackage, "config.py"));
7475
supportingFiles.add(new SupportingFile("__init__package.mustache", invokerPackage, "__init__.py"));
7576
supportingFiles.add(new SupportingFile("__init__model.mustache", modelPackage.replace('.', File.separatorChar), "__init__.py"));
7677
supportingFiles.add(new SupportingFile("__init__api.mustache", apiPackage.replace('.', File.separatorChar), "__init__.py"));

modules/swagger-codegen/src/main/resources/python/api.mustache

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,11 +31,16 @@ from ..util import remove_none
3131

3232
from ..swagger import ApiClient
3333

34+
from .. import config
35+
3436
{{#operations}}
3537
class {{classname}}(object):
3638

37-
def __init__(self, api_client):
38-
self.api_client = api_client
39+
def __init__(self, api_client=None):
40+
if api_client:
41+
self.api_client = api_client
42+
else:
43+
self.api_client = config.api_client
3944
{{#operation}}
4045
def {{nickname}}(self, {{#allParams}}{{#required}}{{paramName}}, {{/required}}{{/allParams}}**kwargs):
4146
"""
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
from __future__ import absolute_import
2+
3+
from .swagger import ApiClient
4+
5+
# Configuration variables
6+
7+
api_client = ApiClient("{{basePath}}")
8+

samples/client/petstore/python/SwaggerPetstore-python/SwaggerPetstore/apis/pet_api.py

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,10 +31,15 @@
3131

3232
from ..swagger import ApiClient
3333

34+
from .. import config
35+
3436
class PetApi(object):
3537

36-
def __init__(self, api_client):
37-
self.api_client = api_client
38+
def __init__(self, api_client=None):
39+
if api_client:
40+
self.api_client = api_client
41+
else:
42+
self.api_client = config.api_client
3843

3944
def update_pet(self, **kwargs):
4045
"""

samples/client/petstore/python/SwaggerPetstore-python/SwaggerPetstore/apis/store_api.py

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,10 +31,15 @@
3131

3232
from ..swagger import ApiClient
3333

34+
from .. import config
35+
3436
class StoreApi(object):
3537

36-
def __init__(self, api_client):
37-
self.api_client = api_client
38+
def __init__(self, api_client=None):
39+
if api_client:
40+
self.api_client = api_client
41+
else:
42+
self.api_client = config.api_client
3843

3944
def get_inventory(self, **kwargs):
4045
"""

samples/client/petstore/python/SwaggerPetstore-python/SwaggerPetstore/apis/user_api.py

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,10 +31,15 @@
3131

3232
from ..swagger import ApiClient
3333

34+
from .. import config
35+
3436
class UserApi(object):
3537

36-
def __init__(self, api_client):
37-
self.api_client = api_client
38+
def __init__(self, api_client=None):
39+
if api_client:
40+
self.api_client = api_client
41+
else:
42+
self.api_client = config.api_client
3843

3944
def create_user(self, **kwargs):
4045
"""
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
from __future__ import absolute_import
2+
3+
from .swagger import ApiClient
4+
5+
# Configuration variables
6+
7+
api_client = ApiClient("http://petstore.swagger.io/v2")
8+

samples/client/petstore/python/SwaggerPetstore-python/tests/test_pet_api.py

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313

1414
import SwaggerPetstore
1515
from SwaggerPetstore.rest import ErrorResponse
16+
from SwaggerPetstore import config
1617

1718
HOST = 'http://petstore.swagger.io/v2'
1819

@@ -49,6 +50,26 @@ def setUpFiles(self):
4950
self.test_file_dir = os.path.realpath(self.test_file_dir)
5051
self.foo = os.path.join(self.test_file_dir, "foo.png")
5152

53+
def test_create_api_instance(self):
54+
pet_api = SwaggerPetstore.PetApi()
55+
pet_api2 = SwaggerPetstore.PetApi()
56+
api_client3 = SwaggerPetstore.ApiClient()
57+
api_client3.user_agent = 'api client 3'
58+
api_client4 = SwaggerPetstore.ApiClient()
59+
api_client4.user_agent = 'api client 4'
60+
pet_api3 = SwaggerPetstore.PetApi(api_client3)
61+
62+
# same default api client
63+
self.assertEqual(pet_api.api_client, pet_api2.api_client)
64+
# confirm using the default api client in the config module
65+
self.assertEqual(pet_api.api_client, config.api_client)
66+
# 2 different api clients are not the same
67+
self.assertNotEqual(api_client3, api_client4)
68+
# customized pet api not using the default api client
69+
self.assertNotEqual(pet_api3.api_client, config.api_client)
70+
# customized pet api not using the old pet api's api client
71+
self.assertNotEqual(pet_api3.api_client, pet_api2.api_client)
72+
5273
def test_add_pet_and_get_pet_by_id(self):
5374
self.pet_api.add_pet(body=self.pet)
5475

0 commit comments

Comments
 (0)