Skip to main content

This is a distutils extension to generate Python code for .proto files using an installed protoc binary.

Project description

Python setuptools extension

This is an extension for Python setuptools which uses an installed protobuf compiler (protoc) to generate Python sources.

Installing

To use this extension, it needs to be installed so it can be imported by other projects' setup.py.

$ python setup.py build
$ python -m pip install .

(If you want to test changes to the extension, you can use python setup.py develop.)

Usage

Example setup.py configuration

from setuptools import setup
setup(
    # ...
    name='example_project',

    # Require this package, but only for setup (not installation):
    setup_requires=['protobuf_distutils'],

    options={
        # See below for details.
        'generate_py_protobufs': {
            'source_dir':        'path/to/protos',
            'extra_proto_paths': ['path/to/other/project/protos'],
            'output_dir':        'path/to/project/sources',  # default '.'
            'proto_files':       ['relative/path/to/just_this_file.proto'],
            'protoc':            'path/to/protoc.exe',
        },
    },
)

Example build invocation

These steps will generate protobuf sources so they are included when building and installing example_project (see above):

$ python setup.py generate_py_protobufs
$ python setup.py build
$ python -m pip install .

Options

  • source_dir:

    This is the directory holding .proto files to be processed.

    The default behavior is to generate sources for all .proto files found under source_dir, recursively. This behavior can be controlled with options below.

  • proto_root_path:

    This is the root path for resolving imports in source .proto files.

    The default is the shortest prefix of source_dir among [source_dir] + self.extra_proto_paths.

  • extra_proto_paths:

    Specifies additional paths that should be used to find imports, in addition to source_dir.

    This option can be used to specify the path to other protobuf sources, which are imported by files under source_dir. No Python code will be generated for .proto files under extra_proto_paths.

  • output_dir:

    Specifies where generated code should be placed.

    Typically, this should be the root package that generated Python modules should be below.

    The generated files will be placed under output_dir according to the relative source paths under proto_root_path. For example, the source file ${proto_root_path}/subdir/message.proto will be generated as the Python module ${output_dir}/subdir/message_pb2.py.

  • proto_files:

    A list of strings, specific .proto file paths for generating code, instead of searching for all .proto files under source_path.

    These paths are relative to source_dir. For example, to generate code for just ${source_dir}/subdir/message.proto, specify ['subdir/message.proto'].

  • protoc:

    By default, the protoc binary (the Protobuf compiler) is found by searching the environment path. To use a specific protoc binary, its path can be specified.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

protobuf_distutils-1.0.tar.gz (5.9 kB view details)

Uploaded Source

Built Distribution

protobuf_distutils-1.0-py3-none-any.whl (5.6 kB view details)

Uploaded Python 3

File details

Details for the file protobuf_distutils-1.0.tar.gz.

File metadata

  • Download URL: protobuf_distutils-1.0.tar.gz
  • Upload date:
  • Size: 5.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/50.3.0 requests-toolbelt/0.9.1 tqdm/4.49.0 CPython/3.8.4

File hashes

Hashes for protobuf_distutils-1.0.tar.gz
Algorithm Hash digest
SHA256 261f85fe785437be76955306b3a59434851bc18ba3acb71eed86374d0c969ae2
MD5 b92c5630515b5e75375913843660ff38
BLAKE2b-256 81919c1d919528b38d9461c2c209df85845d286b901274bbe65e4957baf27366

See more details on using hashes here.

File details

Details for the file protobuf_distutils-1.0-py3-none-any.whl.

File metadata

  • Download URL: protobuf_distutils-1.0-py3-none-any.whl
  • Upload date:
  • Size: 5.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/50.3.0 requests-toolbelt/0.9.1 tqdm/4.49.0 CPython/3.8.4

File hashes

Hashes for protobuf_distutils-1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 c055888653127956cdd1e3acfcbcdd7b14e279f339198904c829f7ed61f67b9d
MD5 76f53dcd92ca86f4fb845efb6c0ae59a
BLAKE2b-256 fdd34481f2e51609af533cb299683a06a6c93bbc800d730832e990a193160631

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page