0

I am working on a function that analyzes data (based on some domain-specific logic) in protobufs. When the function finds an issue, I want to include the path to the offending field, including the indexes for the repeated fields.

For example, given the protobuf below:

proto = ECS(
        service=[
            Service(),
            Service(
                capacity_provider_strategy=[
                    ServiceCapacityProviderStrategyItem(base=1),
                    ServiceCapacityProviderStrategyItem(base=2),
                ]
            )
        ]
    )

Let's assume that the offending field is field = proto.service[1].capacity_provider_strategy[0]. How would I, given only the field produce ecs.service[1].capacity_provider_strategy[0] in a general way?

Please, note that I am looking for a way to produce the path mentioned above solely based on the supplied field since the logic of producing the error message is de-coupled from the analyzing logic. I realize, that (in the analyzing logic) I could keep track of the indexes of the repeated fields, but this would put more overhead on the analyzing function.

immutableT
  • 439
  • 4
  • 13

0 Answers0