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 ?
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
thrift-fmt-0.2.7.tar.gz
(7.3 kB
view hashes)
Built Distribution
Close
Hashes for thrift_fmt-0.2.7-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | c61c93f686c7d8e91c06e5753fa8fbff2d385512ee82d0121665b2d4ca00f6d8 |
|
MD5 | 37f2c8cdb7ea4cf464bd83e78a19b12a |
|
BLAKE2b-256 | 0f0572e5e6bd68f81335023d7a070d7fa5732c2f16bd5ecf1cfad67d6cfc559f |