criccomini/proto-schema-parser
criccomini/proto-schema-parser has 64 GitHub stars and 29 forks. GitHot measured 0 stars in 24 hours. Last checked 2026-11-11 15:06 UTC. Last push 2025-11-05.
Comment ces chiffres sont mesurés
A pure Python protobuf parser
What you can do
- ✅ proto2 and proto3 support
- ✅ protobuf editions support (edition 2023, edition 2024)
- ✅ message, field, enum, optional, required, repeated
- ✅ import, package, oneof, map, and option
Progression mesurée des étoiles
- in 24h
- 0
- in 7 days
- Mise à jour retardée
- in 15 days
- Mise à jour retardée
- in 1 month
- Mise à jour retardée
Variations nettes sur des périodes qui se chevauchent, pas des totaux quotidiens. Les mesures absentes restent vides. Les étoiles indiquent l’intérêt, pas la qualité.
README.md
OriginalProtobuf Schema Parser
Protobuf Schema Parser is a pure-Python library that parses and writes Protobuf schemas to and from an abstract syntax tree (AST).
The library uses proto_schema_parser.parser.Parser to parse the CST into an AST. The proto_schema_parser.generator.Generator class converts the AST back into a CST (a Protobuf schema string).
The lexer and parser are autogenerated from Buf's ANTLR lexer and parser grammar files.
Features
- ✅ proto2 and proto3 support
- ✅ protobuf editions support (edition 2023, edition 2024)
- ✅ message, field, enum, optional, required, repeated
- ✅ import, package, oneof, map, and option
- ✅ group and extend (in proto2)
- ✅ service, rpc, and stream
- ✅ line and block comment preservation
Installation
Install the package via pip:
pip install proto-schema-parser
Usage
To parse a protobuf schema, create a Parser object and call the parse method:
from proto_schema_parser.parser import Parser
text = """
syntax = "proto3";
message SearchRequest {
string query = 1;
int32 page_number = 2;
int32 result_per_page = 3;
}
"""
result = Parser().parse(text)
This will return an AST object (ast.File) representing the parsed protobuf schema.
File(
syntax='proto3',
file_elements=[
Message(
name='SearchRequest',
elements=[
Field(
name='query',
number=1,
type='string',
cardinality=None,
options=[]),
Field(
name='page_number',
number=2,
type='int32',
cardinality=None,
options=[]),
Field(
name='result_per_page',
number=3,
type='int32',
cardinality=None,
options=[])])])
To write the AST back to a protobuf schema, create a Generator object and call the generate method:
from proto_schema_parser.generator import Generator
proto = Generator().generate(result)
The proto variable now contains the string:
syntax = "proto3";
message SearchRequest {
string query = 1;
int32 page_number = 2;
int32 result_per_page = 3;
}
Using Protobuf Editions
The library also supports protobuf editions, which provide more flexibility than proto2/proto3 syntax:
from proto_schema_parser.parser import Parser
from proto_schema_parser.generator import Generator
# Parse a protobuf file using edition syntax
text = """
edition = "2023";
message SearchRequest {
string query = 1;
int32 page_number = 2;
}
"""
result = Parser().parse(text)
# result.edition will be "2023"
# result.syntax will be None
# Generate back to protobuf format
proto = Generator().generate(result)
Supported editions:
edition = "2023";- Edition 2023 specedition = "2024";- Edition 2024 spec
Contributing
I welcome contributions!
- Submit a PR and I'll review it as soon as I can.
- Open an issue if you find a bug or have a feature request.
License
Protobuf Schema Parser is licensed under the MIT license.
Explorer des projets similaires
Asabeneh/30-Days-Of-Python
Le défi de programmation 30 Days of Python est un guide pas à pas pour apprendre le langage de programmation Python en 30 jours. Ce défi peut prendre plus de 100 jours. Avancez à votre rythme. Ces vidéos peuvent aussi vous aider : https://www.youtube.com/channel/UC7PNRuno1rzYPb1xLa4yktw
78,618 étoilesgrafana/grafana
Plateforme ouverte et composable d’observabilité et de visualisation de données. Visualise les métriques, les journaux et les traces issus de plusieurs sources, comme Prometheus, Loki, Elasticsearch, InfluxDB, Postgres et bien d’autres.
77,859 étoilesredis/redis
Pour les développeurs qui créent des applications en temps réel pilotées par les données, Redis est le cache, le serveur de structures de données et le moteur de requêtes documentaires et vectorielles préféré, le plus rapide et le plus riche en fonctionnalités.
77,472 étoilesapache/superset
Apache Superset est une plateforme de visualisation et d'exploration de données.
75,495 étoiles