Skip to content
Conjure generator for Python clients
Java Python
Branch: develop
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
.baseline
.circleci
.github
changelog
conjure-python-core
conjure-python-verifier
conjure-python
gradle
.bulldozer.yml
.changelog.yml
.excavator.yml
.gitignore
.policy.yml
CONTRIBUTING.md
LICENSE
README.md
build.gradle
gradle.properties
gradlew
gradlew.bat
settings.gradle
versions.lock
versions.props

README.md

Autorelease

Conjure-Python Bintray License

CLI to generate Python classes from Conjure API definitions.

Overview

The generated clients provide a simple interface for executing statically typed remote procedure calls from Python 2 or 3.

Usage

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`

Example generated objects

  • 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 Client interfaces

Example service interface: TestService

class TestService(Service):
    """A Markdown description of the service."""

    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]

        _path = '/catalog/fileSystems'

        _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))

Constructing clients

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)

mypy typings

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]

Contributing

See the CONTRIBUTING.md document.

License

This project is made available under the Apache 2.0 License.

You can’t perform that action at this time.