Skip to main content

formart thrift file

Project description

thrift-fmt

thrift formatter

the parser is https://github.com/alingse/thrift-parser

Usage

install

pip install thrift-fmt

format files

single file

thrift-fmt mythrift.thrift
thrift-fmt mythrift.thrift -w

or directory (this will overwrite the origin file, please keep in track)

thrift-fmt -d ./thrift_files

or more options see help

thrift-fmt --help

Use in Code

use ThriftData parse from file / stdin / str

use ThriftFormatter or PureThriftFormatter format the 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

  1. suppoort keep the comment
  2. patch the required field
  3. align the fields comment
  4. format only single field

TODO

  1. support function blank line count
  2. fix //a comment
  3. support Enum field
  4. better code
  5. other language ?

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


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.6.tar.gz (6.0 kB view details)

Uploaded Source

Built Distribution

thrift_fmt-0.2.6-py3-none-any.whl (7.0 kB view details)

Uploaded Python 3

File details

Details for the file thrift-fmt-0.2.6.tar.gz.

File metadata

  • Download URL: thrift-fmt-0.2.6.tar.gz
  • Upload date:
  • Size: 6.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.7.1 importlib_metadata/4.10.1 pkginfo/1.8.2 requests/2.27.1 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.10.2

File hashes

Hashes for thrift-fmt-0.2.6.tar.gz
Algorithm Hash digest
SHA256 8818a8ebff6904c6ec9ea51bc9775d5cbf0d314214e89cae100370582cd98b5c
MD5 dcece2a290314ac7bf8a45a9159cfbbc
BLAKE2b-256 6d00e90418e2b2c4fb3791f15b6e7bce6a7f4aacdfc230b7c426b6945c83acc0

See more details on using hashes here.

Provenance

File details

Details for the file thrift_fmt-0.2.6-py3-none-any.whl.

File metadata

  • Download URL: thrift_fmt-0.2.6-py3-none-any.whl
  • Upload date:
  • Size: 7.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.7.1 importlib_metadata/4.10.1 pkginfo/1.8.2 requests/2.27.1 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.10.2

File hashes

Hashes for thrift_fmt-0.2.6-py3-none-any.whl
Algorithm Hash digest
SHA256 31d09016607d9f205c14b85b160446dfa6f9c99b0fda76335876fee43ffbf841
MD5 06241b36cc3731fb0235086170e8c2b8
BLAKE2b-256 e18c4ef874b9141a03ef07dea8a70158b566d03eec4c7060b48edd661e7a1c15

See more details on using hashes here.

Provenance

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