Skip to main content

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.

Metadata

Release files for protobuf-distutils 1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for protobuf-distutils 1.0
File Size Uploaded
protobuf_distutils-1.0.tar.gz 5.9 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for protobuf-distutils 1.0
File Interpreter ABI Platform
protobuf_distutils-1.0-py3-none-any.whl Python 3 none any Details

Total release size: 11.4 kB

Release files / protobuf_distutils-1.0.tar.gz

Download URL protobuf_distutils-1.0.tar.gz
Size 5.9 kB
Tags Source
SHA-256 checksum
How to use checksums
261f85fe785437be76955306b3a59434851bc18ba3acb71eed86374d0c969ae2
BLAKE2b-256 checksum
How to use checksums
81919c1d919528b38d9461c2c209df85845d286b901274bbe65e4957baf27366
Upload date
Uploaded using Trusted Publishing?
What is 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

Release files / protobuf_distutils-1.0-py3-none-any.whl

Download URL protobuf_distutils-1.0-py3-none-any.whl
Size 5.6 kB
Tags Python 3
SHA-256 checksum
How to use checksums
c055888653127956cdd1e3acfcbcdd7b14e279f339198904c829f7ed61f67b9d
BLAKE2b-256 checksum
How to use checksums
fdd34481f2e51609af533cb299683a06a6c93bbc800d730832e990a193160631
Upload date
Uploaded using Trusted Publishing?
What is 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

Release history Release notifications | RSS feed

This release

1.0 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page