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
classTestService(Service):
"""A Markdown description of the service. "Might end with quotes" """defget_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:
fromconjure_python_clientimportRequestsClient, ServiceConfigurationconfig=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.