Skip to main content

Utilities for working with Protobuf & gRPC in Python.

Project description

Protoplasm

Utilities for working with Protobuf & gRPC in Python, e.g; compiling Python 3 Dataclasses from compiled proto-message-python code and casting between the two, quickly initializing large/nested Protobuf object, simplifying gRPC service interfaces etc.

IMPORTANT

Update this README file after moving from CCP's internal code repo to Github.

Protoplasm 4

  • Unify the unary functionality of Protoplasm 2 with the streaming functionality of Protoplasm 3
    • The two turn out to be completely incompatible and API shattering
    • Protoplasm 4 must incorporate BOTH functionalities wile being backwards compatible enough for both Protoplasm 2 and 3 projects to be able to migrate to 4
    • The key here is detecting the stream keyword in protos that denote streaming input and/or output
  • Add piled up functionality/utility/QoL improvements/bugs that's been on The List™ for a while
    • Cast to/from base64 encoded strings
    • Utilize the __all__ directive to isolate import * side effects
    • Integrate the Neobuf Builder CLI (from various other projects) into Protoplasm and generalize it
    • Address the "None is default value" issue
    • Explore the pros/cons of making non-existing Message/Object attributes return Empty or EmptyDict to simplify nested attribute fetching...?
  • Refactor and restructure the package properly
    • Separate the 4 main roles of the package logically
      1. Cross-piling *.proto to *_pb2.py and *_pb2_grpc.py
      2. Cross-piling *_pb2.py to *_dc.py Neobuf Dataclasses
      3. Generating *_api.py interfaces
      4. Generating gRPC implementation of Services

Troubleshooting

  • I get TypeError: Plain typing.NoReturn is not valid as type argument

Clever bits to document...

  • Code Generation (e.g. foo.proto) + how to build
    • Dataclasses -> foo_dc.py + how to use (+ DataclassBase freebies)
      • Extending Dataclasses (a no-no for pb2 files apparently)
    • Service API -> foo_api.py + how to use and implement
      • Automatic parameter unpacking
      • Return value packing
      • Raising protoplasm.errors.api.* on errors or non-ok returns
      • Using protoplasm.decorators for param and type checking
      • The takes_context decorator and how to use it
    • GRPC DC Service Servicer -> foo_dc_grpc.py + how to use
  • Utilities
    • Proto <-> dict <-> Dataclass casters
    • The mkproto and mkdataclass helpers
    • The unpack_dataclass_request and pack_dataclass_response helpers

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

protoplasm-5.3.1.tar.gz (45.6 kB view details)

Uploaded Source

Built Distribution

protoplasm-5.3.1-py3-none-any.whl (35.6 kB view details)

Uploaded Python 3

File details

Details for the file protoplasm-5.3.1.tar.gz.

File metadata

  • Download URL: protoplasm-5.3.1.tar.gz
  • Upload date:
  • Size: 45.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.9.20

File hashes

Hashes for protoplasm-5.3.1.tar.gz
Algorithm Hash digest
SHA256 e142eafda1a8eca651f6f661d4c5e18be09fb6a559b4da8fab66144a6d49b1f5
MD5 7fe068050b30a097f5c07b98b83705d6
BLAKE2b-256 d39831b0d2774c7113c0a1008422a28d365efc5be0b6e8c036aff50b86e74672

See more details on using hashes here.

File details

Details for the file protoplasm-5.3.1-py3-none-any.whl.

File metadata

  • Download URL: protoplasm-5.3.1-py3-none-any.whl
  • Upload date:
  • Size: 35.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.9.20

File hashes

Hashes for protoplasm-5.3.1-py3-none-any.whl
Algorithm Hash digest
SHA256 e113e1a42031ee9e995b5a3342359670c8f03748c7feb19bf1e622070f509daa
MD5 c03035fad7a027fdf538d59db9d033b9
BLAKE2b-256 11a3db697e7eb27fc6deac5471ae69e75cd2afa0e245c309e1f33fc904eb610e

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