formart thrift file
Project description
thrift-fmt
thrift formatter
the parser is https://github.com/alingse/thrift-parser
Usage
thrift-fmt mythrift.thrift
thrift-fmt --help
install
pip install thrift-fmt
format files
format single file and print to stdout
thrift-fmt mythrift.thrift
format and overwrite the origin file
thrift-fmt -w mythrift.thrift
format a directory, this will overwrite the origin file, please keep in track
thrift-fmt -d ./thrift_files
Use in Code
use ThriftData
parse from file / stdin / str
use ThriftFormatter
or PureThriftFormatter
format the parsed thrift data.
from thrift_fmt import ThriftFormatter, PureThriftFormatter
from thrift_parser import ThriftData
origin = '''
include "shared.thrift" // a
// work info
struct Work {
1: i32 num1 = 0,
2: required i32 num2, // num2 for
3: Operation op, // op is Operation
4: optional string comment,
5: map<string,list<string>> tags, //hello
}
'''
thrift = ThriftData.from_str(data)
out = ThriftFormatter(thrift).format()
assert out == '''
include "shared.thrift" // a
// work info
struct Work {
1: required i32 num1 = 0,
2: required i32 num2, // num2 for
3: required Operation op, // op is Operation
4: optional string comment,
5: required map<string, list<string>> tags, //hello
}
'''.strip()
# or only a single node
header = PureThriftFormatter().format_node(thrift.document.children[0])
assert header == 'include "shared.thrift"'
Feature
- suppoort keep and align the comment
- auto patch list separator and field's
required
flag - align the field's assign
- support format part of the thrift parsed result
example
struct Work {
1: required i32 number_a = 0, // hello
2: optional i32 num2 = 1, // xyz
}
TODO
- support function blank line count
- fix //a comment
- better code
- other language ?
- support function default add new line, function remove list sep
- support indent for /* */ multi line comment
- support tight map/list define ?
- any other featur ?
Dev
pdm install
pdm run pytest
pdm build
pdm run thrift-fmt --help
LICENSE
some thrift files in fixtures thrift was copy from https://github.com/apache/thrift/blob/master/tutorial/ , The Apache LICENSE
the Thrift.g4 in thrift-parser package was copy from https://github.com/antlr/grammars-v4
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file thrift-fmt-0.3.0a1.tar.gz
.
File metadata
- Download URL: thrift-fmt-0.3.0a1.tar.gz
- Upload date:
- Size: 8.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: pdm/2.4.8 CPython/3.10.6
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 13889e2fb10bc46e0dc6ac543d31de4c7d73187c5f736cabd4f5c24747377e9a |
|
MD5 | fefe2505d508df1d100dd29698382bd7 |
|
BLAKE2b-256 | edcaeafeaf8a20fd933e3adac3de49ea0694f082393e60f371f6d4c7128b7d6f |
Provenance
File details
Details for the file thrift_fmt-0.3.0a1-py3-none-any.whl
.
File metadata
- Download URL: thrift_fmt-0.3.0a1-py3-none-any.whl
- Upload date:
- Size: 8.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: pdm/2.4.8 CPython/3.10.6
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | f4f9100981682baa0a4a44bbb61a758a933d1760eefa2bf1c2177df21cbee710 |
|
MD5 | 12f160e686669c3ef57bada21227f334 |
|
BLAKE2b-256 | cec5b92fa35d7e12522e2797d5456a84754809bc776b2e1edb19d50424918871 |