CLI to generate Python classes from Conjure API definitions.
The generated clients provide a simple interface for executing statically typed remote procedure calls from Python 2 or 3.
The recommended way to use conjure-python is via a build tool like gradle-conjure. However, if you don't want to use gradle-conjure, there is also an executable which conforms to RFC 002.
Usage: conjure-python generate <input> <output> [...options]
--packageName package name that will appear in setup.py
--packageVersion version number that will appear in setup.py
--packageDescription description that will appear in setup.py
--packageUrl url that will appear in setup.py
--packageAuthor author that will appear in setup.py
--writeCondaRecipe use this boolean option to generate a `conda_recipe/meta.yaml`
Conjure object: ManyFieldExample
example = ManyFieldExample('alias', 1.0, 1, [], {}, [])
Conjure union: UnionTypeExample
stringVariant = UnionTypeExample(string_example="foo")
Conjure enum: EnumExample
one = EnumExample.ONE;
print(one); // prints: 'ONE'
Conjure alias: StringAliasExample
Python uses structural (duck-typing) so aliases are currently transparent.
Example service interface: TestService
class TestService(Service):
"""A Markdown description of the service. "Might end with quotes"
"""
def get_file_systems(self, auth_header):
# type: (str) -> Dict[str, BackingFileSystem]
"""Returns a mapping from file system id to backing file system configuration.
"""
_headers = {
'Accept': 'application/json',
'Authorization': auth_header,
} # type: Dict[str, Any]
_params = {
} # type: Dict[str, Any]
_path_params = {
} # type: Dict[str, Any]
_json = None # type: Any
_path = '/catalog/fileSystems'
_path = _path.format(**_path_params)
_response = self._request( # type: ignore
'GET',
self._uri + _path,
params=_params,
headers=_headers,
json=_json)
_decoder = ConjureDecoder()
return _decoder.decode(_response.json(), DictType(str, BackingFileSystem))
Use conjure-python-client which leverages requests:
from conjure_python_client import RequestsClient, ServiceConfiguration
config = ServiceConfiguration()
config.uris = ["https://foo.com/api"]
service = RequestsClient.create(TestService,
user_agent="something/1.2.3",
service_config=config)
service.do_something(auth_header, param)
Generated code has mypy comments for optional static typing.
class TestService(Service):
'''A Markdown description of the service.'''
def get_file_systems(self, authHeader):
+ # type: (str) -> Dict[str, BackingFileSystem]
See the CONTRIBUTING.md document.
This project is made available under the Apache 2.0 License.