Files
pycapnp/scripts/capnp-json.py
Jacob Alexander 162fddbcf6 Replace black and flake8 with ruff for linting and formatting
- Remove .flake8; add [tool.ruff] and [tool.ruff.format] config in pyproject.toml
  (line-length 120, excludes, ignore list, per-file-ignores, mccabe complexity)
- Update GitHub workflow lint job to run `ruff check .` and `ruff format --check .`
- Swap black and flake8 for ruff in requirements.txt and Pipfile
- Change capnp/__init__.py to ruff-style noqa comment
- Move max-complexity into [tool.ruff.lint.mccabe], lint options into [tool.ruff.lint]
- Add per-file-ignores for capnp/__init__.py (F401, F403, F405), remove inline noqa
- Run ruff format across codebase (24 files) for consistent style
2026-05-30 11:59:52 -07:00

55 lines
1.1 KiB
Python
Executable File

#!/usr/bin/env python
import argparse
import sys
import json
import capnp
def parse_args():
parser = argparse.ArgumentParser()
parser.add_argument("command")
parser.add_argument("schema_file")
parser.add_argument("struct_name")
parser.add_argument(
"-d",
"--defaults",
help="include default values in json output",
action="store_true",
)
return parser.parse_args()
def encode(schema_file, struct_name, **kwargs):
schema = capnp.load(schema_file)
struct_schema = getattr(schema, struct_name)
struct_dict = json.load(sys.stdin)
struct = struct_schema.from_dict(struct_dict)
struct.write(sys.stdout)
def decode(schema_file, struct_name, defaults):
schema = capnp.load(schema_file)
struct_schema = getattr(schema, struct_name)
struct = struct_schema.read(sys.stdin)
json.dump(struct.to_dict(defaults), sys.stdout)
def main():
args = parse_args()
command = args.command
kwargs = vars(args)
del kwargs["command"]
globals()[command](**kwargs) # hacky way to get defined functions, and call function with name=command
main()