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.8 at a minimum.

Known Issues

pylint-protobuf does not currently support the following concepts:

  • Some features of extensions: non-nested extensions, HasExtension(), ClearExtension(), type checking

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.22.0.tar.gz (31.6 kB view details)

Uploaded Source

Built Distribution

pylint_protobuf-0.22.0-py2.py3-none-any.whl (44.3 kB view details)

Uploaded Python 2Python 3

File details

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

File metadata

  • Download URL: pylint-protobuf-0.22.0.tar.gz
  • Upload date:
  • Size: 31.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.15.0 pkginfo/1.7.0 requests/2.25.1 setuptools/46.1.3 requests-toolbelt/0.9.1 tqdm/4.60.0 CPython/3.5.9

File hashes

Hashes for pylint-protobuf-0.22.0.tar.gz
Algorithm Hash digest
SHA256 fd569200698cf30cb85f13cc5cfff40c49285599bc972b455e932c1805216a11
MD5 49ffbb6440b2e36630ac5a483d456946
BLAKE2b-256 9f11c01c1e5cc589f344baa8adfa0e14afad938c2325ec096133b72c18baccc1

See more details on using hashes here.

File details

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

File metadata

  • Download URL: pylint_protobuf-0.22.0-py2.py3-none-any.whl
  • Upload date:
  • Size: 44.3 kB
  • Tags: Python 2, Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.15.0 pkginfo/1.7.0 requests/2.25.1 setuptools/46.1.3 requests-toolbelt/0.9.1 tqdm/4.60.0 CPython/3.5.9

File hashes

Hashes for pylint_protobuf-0.22.0-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 d6c5823ca55fb0141b862569aff18e9abc287409a105a9061c1327d425999f09
MD5 8c0b205f13ed96578c2939ec71ae02e8
BLAKE2b-256 904fbc89becc629fa5b4b05199bc1e599d58d81f5ea0d5e707bfe84963221b50

See more details on using hashes here.

Supported by

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