Skip to main content

A plugin for making Pylint aware of the fields of protobuf-generated classes

Project description

pylint-protobuf

pylint-protobuf is a Pylint plugin for making Pylint aware of generated fields from Protobuf types.

Install

Install from PyPI via:

pip install pylint-protobuf

Add or update pylintrc to load pylint-protobuf:

[MASTER]
load-plugins=pylint_protobuf

Example

$ cat <<EOF >person.proto
message Person {
  required string name = 1;
}
EOF
$ protoc person.proto --python_out=.
$ cat <<EOF >readme.py
from person_pb2 import Person
p = Person('all arguments must be kwargs')
p.invalid_field = 'value'
p.name = 123
EOF
$ pip install pylint-protobuf
$ pylint --load-plugins=pylint_protobuf readme.py
************* Module readme
readme.py:2:4: E5904: Positional arguments are not allowed in message constructors and will raise TypeError (protobuf-no-posargs)
readme.py:3:0: E5901: Field 'invalid_field' does not appear in the declared fields of protobuf-generated class 'Person' and will raise AttributeError on access (protobuf-undefined-attribute)
readme.py:4:0: E5903: Field "Person.name" is of type 'str' and value 123 will raise TypeError at runtime (protobuf-type-error)

Supported Python Versions

pylint-protobuf supports Python 3.5 at a minimum.

Known Issues

pylint-protobuf does not currently support the following concepts:

  • Externally defined messages, e.g.

      import "external.proto";
    

Alternatives

mypy-protobuf

A protoc compiler plugin for generating .pyi stubs from .proto files. Fully-featured and well supported, a useful extension to a mypy workflow. May be better suited to your usecase if you control the entire pipeline. May not be suited if you are a downstream consumer of generated _pb2.py modules with no access to the original .proto definitions, in which case pylint-protobuf may be better suited for your use.

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

pylint-protobuf-0.18.1.tar.gz (23.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

pylint_protobuf-0.18.1-py2.py3-none-any.whl (50.4 kB view details)

Uploaded Python 2Python 3

File details

Details for the file pylint-protobuf-0.18.1.tar.gz.

File metadata

  • Download URL: pylint-protobuf-0.18.1.tar.gz
  • Upload date:
  • Size: 23.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.3.0 pkginfo/1.7.0 requests/2.25.1 setuptools/41.2.0 requests-toolbelt/0.9.1 tqdm/4.57.0 CPython/3.8.1

File hashes

Hashes for pylint-protobuf-0.18.1.tar.gz
Algorithm Hash digest
SHA256 06bb22da2e5d7ac6bc223ab1d7cfd0f1db521337d196eb9c2dbc41418238433a
MD5 d7726c3cb3cff0526c0bd0aeb2636b27
BLAKE2b-256 198572f449b07055b54fba04013181320c5f7e9c89e08f8b854ed09d54657031

See more details on using hashes here.

File details

Details for the file pylint_protobuf-0.18.1-py2.py3-none-any.whl.

File metadata

  • Download URL: pylint_protobuf-0.18.1-py2.py3-none-any.whl
  • Upload date:
  • Size: 50.4 kB
  • Tags: Python 2, Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.3.0 pkginfo/1.7.0 requests/2.25.1 setuptools/41.2.0 requests-toolbelt/0.9.1 tqdm/4.57.0 CPython/3.8.1

File hashes

Hashes for pylint_protobuf-0.18.1-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 89502b5e599e42be6ec9be33fb49fb83b346c9e35e3284dfb7541c7e99ead59b
MD5 17e240fe08025c2fc0b8b9ff15963823
BLAKE2b-256 9c774886848d0a61cb3ec39d4a14b033776359d1872bcbf3f329353fb81dc60a

See more details on using hashes here.

Supported by

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