Skip to main content

fprime-fpp-format

A formatter for the F Prime Prime (FPP) modeling language.

This package ships the fpp-format executable, a pretty-printer for .fpp source files.

Usage

# Format files in place
fpp-format path/to/model.fpp

# Check formatting without modifying (exit 1 if not formatted)
fpp-format --check path/to/model.fpp

# Format from stdin to stdout
cat path/to/model.fpp | fpp-format --stdin

# Override the indentation width and maximum line length
fpp-format --indent 4 --line-length 100 path/to/model.fpp

Options

Option Description
--check Check formatting without writing; exit 1 if a file is unformatted.
--stdin Read from stdin and write to stdout (default when no files given).
--recursive-includes Also follow include specifiers and format reachable .fppi fragments.
--indent <N> Number of spaces per indentation level. Overrides .fpp-format (default: 2).
--line-length <N> Maximum line width before specs explode their clauses. Overrides .fpp-format (default: 80).
--entry <RULE> Select the parser entrypoint / grammar rule (see below).
--help Print usage.

Configuration file (.fpp-format)

The indentation width and maximum line length can be set project-wide in a .fpp-format file. Starting from each formatted file's directory, fpp-format searches upward through parent directories for the nearest .fpp-format file (the same discovery model as .clang-format). The same file is honored by fprime-util format and by the language server's format-on-save, so the editor and CI always agree.

The file is a minimal key = value list; blank lines and # comments are ignored:

# .fpp-format
indent = 2
line-length = 80

Supported keys:

Key Description Default
indent Spaces per indentation level. 2
line-length Maximum line width before clauses break. 80

Precedence, lowest to highest: built-in defaults → .fpp-format file → --indent / --line-length command-line flags. A malformed .fpp-format file is a hard error on the command line (to avoid formatting with the wrong profile and reporting false --check failures); the language server logs it and falls back to defaults so an editor save never fails.

Entrypoint rule (--entry)

The formatter parses input starting from a specific grammar rule. A whole .fpp file is a module (the default), but other rules are needed when formatting include fragments.

Supported rules:

  • module (default)
  • component
  • topology
  • tlm-packet
  • tlm-packet-set

Recursive include formatting (--recursive-includes)

By default fpp-format formats only the files you name and does not touch .fppi fragments referenced via include. Pass --recursive-includes to also follow every include specifier and format the referenced fragments (recursively):

# Formats model.fpp and every .fppi it (transitively) includes
fpp-format --recursive-includes path/to/model.fpp

With --recursive-includes, include paths are resolved relative to the including file (matching the parser), each fragment is formatted exactly once even if included from several places, and include cycles are detected and reported as an error. The entrypoint for each fragment is derived from the context of its include — a fragment included in a component { ... } body is formatted as component members, one in a topology { ... } body as topology members, and so on, so you do not need --entry for fragments reached this way.

State-machine includes have no standalone entrypoint and are left untouched.

Note: the language-server integration never follows includes; it only ever formats the current document buffer.

Formatting a bare .fppi file

An .fppi file is not a standalone module — it is a fragment that is spliced in via an include specifier. When you format a fragment directly (rather than reaching it from a root .fpp), there is no include context to infer the rule from, so pass --entry to select the matching entrypoint:

# An .fppi included inside a `module { ... }` body (module-level members)
fpp-format --entry module commands.fppi

# An .fppi included inside a `component { ... }` body
fpp-format --entry component ports.fppi

# An .fppi included inside a `topology { ... }` body
fpp-format --entry topology connections.fppi

If you omit --entry, the module rule is used, which is correct for normal .fpp files and for .fppi fragments containing module-level members.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

fprime_fpp_format-3.3.2.tar.gz (123.3 kB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

fprime_fpp_format-3.3.2-py3-none-win_amd64.whl (419.7 kB view details)

Uploaded Python 3Windows x86-64

fprime_fpp_format-3.3.2-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (517.1 kB view details)

Uploaded Python 3manylinux: glibc 2.17+ x86-64

fprime_fpp_format-3.3.2-py3-none-macosx_11_0_arm64.whl (471.8 kB view details)

Uploaded Python 3macOS 11.0+ ARM64

File details

Details for the file fprime_fpp_format-3.3.2.tar.gz.

File metadata

  • Download URL: fprime_fpp_format-3.3.2.tar.gz
  • Upload date:
  • Size: 123.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for fprime_fpp_format-3.3.2.tar.gz
Algorithm Hash digest
SHA256 b126d23d543a136f643e105c7569fef31f369dc6aea8c1058671c27efeccd7dc
MD5 ea60d30501eebd650dc9bec7171b82f9
BLAKE2b-256 c741c53880b59edb3db460de58b87d3e2a6ca3837d75bd5f062cffa9abe7f396

See more details on using hashes here.

Provenance

The following attestation bundles were made for fprime_fpp_format-3.3.2.tar.gz:

Publisher: pip.yml on fprime-community/fpp-tools

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file fprime_fpp_format-3.3.2-py3-none-win_amd64.whl.

File metadata

File hashes

Hashes for fprime_fpp_format-3.3.2-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 499b7fd449b81ac0203d677e1b9d80666ecc6c955a9f61b3a04936b9bc7b3a0a
MD5 54f8cddaa742ac9347ddd9810be98fb2
BLAKE2b-256 9433df94149a5b00616b6dfe4ca9e2867e69091d856697b1104a94ab99ea7a14

See more details on using hashes here.

Provenance

The following attestation bundles were made for fprime_fpp_format-3.3.2-py3-none-win_amd64.whl:

Publisher: pip.yml on fprime-community/fpp-tools

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file fprime_fpp_format-3.3.2-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for fprime_fpp_format-3.3.2-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 ec972522a9a0afa4e979adf6e22d94e0e5f4ec4743b28a099c6b22691e0512ee
MD5 3a1774144eed5424ea5e6ba43086c6a1
BLAKE2b-256 f98faed7116a43bd0b341e43103f5eb11de8eb04945b1ae21067da5808ce1c6b

See more details on using hashes here.

Provenance

The following attestation bundles were made for fprime_fpp_format-3.3.2-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: pip.yml on fprime-community/fpp-tools

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file fprime_fpp_format-3.3.2-py3-none-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for fprime_fpp_format-3.3.2-py3-none-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 f10d8eebfad6d2704d8d8542d9fb3db3bf1af6eaee94e9cf062527604e24c8c6
MD5 1ed199416028f883bf4d40e15de5de4f
BLAKE2b-256 ff2d0cfedce8406f7943e58f621823d50ed3f0c1e4f0c100d26d0a65c55c83dd

See more details on using hashes here.

Provenance

The following attestation bundles were made for fprime_fpp_format-3.3.2-py3-none-macosx_11_0_arm64.whl:

Publisher: pip.yml on fprime-community/fpp-tools

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Release history Release notifications | RSS feed

3.3.10

4 files

3.3.9

4 files

3.3.8

4 files

3.3.7

4 files

3.3.6

4 files

3.3.5

4 files

3.3.4

4 files

3.3.3

4 files

This release

3.3.2 This release

4 files

3.3.1

4 files

3.3.0

4 files

3.0.0

4 files

2.3.1

4 files

2.3.0

4 files

2.2.1

4 files

2.2.0

4 files

2.1.0

4 files

2.0.2

4 files

2.0.1

4 files

2.0.0

4 files

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page