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.