Skip to main content

Pants build system plugin for the PKL configuration language

Project description

pants-plugin-pkl

PyPI

A Pants plugin for the PKL configuration language. It brings PKL files into the Pants build graph, enabling pants test, pants fmt, pants lint, pants package, pants tailor, and automatic dependency inference for .pkl files.

Installation

Add pants-plugin-pkl to your pants-plugins resolve:

# pants-plugins/BUILD
python_requirement(
    name = "pants-plugin-pkl",
    requirements = ["pants-plugin-pkl==1.0.0"],
    resolve = "pants-plugins",
)

Then regenerate the lockfile:

pants generate-lockfiles --resolve=pants-plugins

Then configure pants.toml as shown in Quick start.

What this plugin does

pants-plugin-pkl integrates PKL into a Pants monorepo so that .pkl source files are first-class build targets. The plugin resolves the pkl binary automatically (system-first with download fallback) and uses it to:

  • Validate PKL files compile cleanly (pants lint via pkl eval)
  • Format PKL files in-place or check formatting in CI (pants fmt / pants lint via pkl format)
  • Run tests written with pkl:test (pants test)
  • Package PKL modules into JSON, YAML, XML, and other formats (pants package)
  • Suggest BUILD targets automatically for new .pkl files (pants tailor)
  • Infer dependencies between .pkl files so you never have to list them by hand
  • Resolve external packages from PklProject.deps.json (vendored or downloaded)

Quick start

  1. Copy pants-plugins/pkl/ into your repository
  2. Configure pants.toml:
[GLOBAL]
pants_version = "2.31.0"
pythonpath = ["%(buildroot)s/pants-plugins"]
backend_packages = [
  "pants.backend.plugin_development",
  "pkl",
  "pkl.goals",
  "pkl.lint.eval_check",
  "pkl.lint.fmt",
]

[source]
root_patterns = ["pants-plugins", "/"]

[python]
enable_resolves = true

[python.resolves]
pants-plugins = "pants-plugins/lock.txt"

[python.resolves_to_interpreter_constraints]
pants-plugins = ["==3.11.*"]
  1. Run pants tailor to auto-generate BUILD targets, then use Pants as normal:
pants lint src::       # validate + format check
pants fmt src::        # format in-place
pants test src::       # run pkl tests
pants package src:pkg  # evaluate to JSON/YAML/etc

Documentation

See docs/index.md for the full reference, including:

PKL version requirements

Feature Minimum PKL version
Core (test, lint, package, dep inference) 0.27.0
pants fmt (pkl format) 0.30.0
Default / recommended 0.31.0

License

See LICENSE.

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

pants_plugin_pkl-1.0.1.tar.gz (43.7 kB view details)

Uploaded Source

Built Distribution

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

pants_plugin_pkl-1.0.1-py3-none-any.whl (61.4 kB view details)

Uploaded Python 3

File details

Details for the file pants_plugin_pkl-1.0.1.tar.gz.

File metadata

  • Download URL: pants_plugin_pkl-1.0.1.tar.gz
  • Upload date:
  • Size: 43.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for pants_plugin_pkl-1.0.1.tar.gz
Algorithm Hash digest
SHA256 c2d826b31355a95c6a60e2cebd84ed5e0cecf4d8a4cf5719cc6aca90422ef9ab
MD5 d10963e7ed2c3c0a32b05653538aee5e
BLAKE2b-256 57dcf1e7d87421687cdefe7f76e4bd525bfbe851eed16a13899831ddee2899c9

See more details on using hashes here.

Provenance

The following attestation bundles were made for pants_plugin_pkl-1.0.1.tar.gz:

Publisher: release.yml on Drafteame/pants-plugin-pkl

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

File details

Details for the file pants_plugin_pkl-1.0.1-py3-none-any.whl.

File metadata

File hashes

Hashes for pants_plugin_pkl-1.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 f22586a9cec8ca6ab447fc8a712611bbdded23c492d4a5df849af040e24a63ca
MD5 124b2d3ec255f7e975f8c5d784f68e32
BLAKE2b-256 c07709df38a55620fc659dbf0e7a9c28e0021fe0da3f952b3b617623ead7ae6f

See more details on using hashes here.

Provenance

The following attestation bundles were made for pants_plugin_pkl-1.0.1-py3-none-any.whl:

Publisher: release.yml on Drafteame/pants-plugin-pkl

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

Supported by

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