Skip to main content

PrefPicker

CI codecov Matrix PyPI

Manage & generate prefs.js files for use when testing Firefox. This tool is intended to simplify the use and tracking of prefs used by our fuzzing tools. The template files can be modified to allow the creation of custom prefs.js files without the need to maintain a separate mostly duplicate version of a prefs file.

YAML Template Structure

The template document is made up of variants, prefs and values.

pref is the name of the preference that will be added to the prefs.js file. This is an unquoted string. Valid prefs can be found in all.js or in StaticPrefList.yml.

review_on_close is optional. It is a list of relevant Bugzilla IDs used to help avoid obsolete entries. When all bugs in the list are closed the entry will be reviewed and removed if appropriate.

value can be a bool, int, string or null. Adding multiple potential values is possible. When multiple values are present one is chosen at random when generating the output. Using a value of null will exclude the pref from the prefs.js file (acts as browser default).

variant is a subset of values to be used in place of the default values. The default variant is used unless a variant is specified.

There are a few mechanisms in place to help keep the file in order:

  • All prefs must have a default variant
  • All variants must be defined in the variant list
  • All variants in the variant list must be used
  • All variants must be a list and contain values
# example.yml
variant:              # list of extra variants, default is implied
- alt                 # name of variant
pref:
  pref.name:          # unquoted name of the pref used in prefs.js
    review_on_close:  # optional
    - 123456
    variants:
      default:        # variant definition, default is required
      - 0             # potential value
      alt:            # extra optional variant
      - 1             # if multiple values are defined one is chosen randomly
      - null          # null is a special case meaning exclude the pref

Updating Templates and Adding Prefs

Prefs are found in the .yml files in the template directory. Only prefs that are ready to be tested should be added. When adding a pref to a template it is encouraged to add a comment that provides justification and points to a bug in Bugzilla for additional context. If a pref does not already exist and is only used with non-default variants a null entry must be added to the default variant.

Quick Setup

Use pip to install prefpicker.

pip install prefpicker

Examples

Use a built-in template to generate an up-to-date prefs.js file.

prefpicker browser-fuzzing.yml prefs.js

Or generate a prefs.js file from a custom template using the webrender variant:

user@machine:~/prefpicker$ prefpicker custom/template.yml ~/Desktop/prefs.js --variant webrender
Loading 'template.yml'...
Loaded 255 prefs and 5 variants
Generating 'prefs.js' using variant 'webrender'...
Done.

The resulting prefs.js file is ready to be used with Firefox. It will look something like this:

// Generated with PrefPicker @ 2020-02-08 00:50:29 UTC
// Variant 'webrender'
/// ... snip
user_pref("fuzzing.enabled", true);
/// ... snip
// 'gfx.webrender.all' defined by variant 'webrender'
user_pref("gfx.webrender.all", true);
/// ... snip

Metadata

Release files for prefpicker 2.27.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for prefpicker 2.27.0
File Size Uploaded Provenance
prefpicker-2.27.0.tar.gz 27.5 kB With provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for prefpicker 2.27.0
File Interpreter ABI Platform
prefpicker-2.27.0-py3-none-any.whl Python 3 none any Details

Total release size: 52.6 kB

Release files / prefpicker-2.27.0.tar.gz

Download URL prefpicker-2.27.0.tar.gz
Size 27.5 kB
Tags Source
SHA-256 checksum
How to use checksums
6ab1c23b081324901b60b1bf3384e3dd25e1a1fbbd64aaa2376b0fa303e4d3d8
BLAKE2b-256 checksum
How to use checksums
2a4b7f5b26981d5b129ad9b0b5c91e2e5da7486f3808362188837b07fcc2b498
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 4, 2026.

Transparency log

Release files / prefpicker-2.27.0-py3-none-any.whl

Download URL prefpicker-2.27.0-py3-none-any.whl
Size 25.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
5b6a7c2e7a99f48a8dac4f7f008d108c087648e25ed852bd567ddd4ec11f16d5
BLAKE2b-256 checksum
How to use checksums
7288bfec1cce59bd4b6e7276ebee9d717e08ee564991d2edcfba504f8d4ea903
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 4, 2026.

Transparency log

Security for prefpicker 2.27.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

Full provenance

All 2 files in this release have been uploaded with provenance metadata.

Select from 2 files

Attestation for prefpicker-2.27.0.tar.gz

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 4, 2026.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

Release history Release notifications | RSS feed

This release

2.27.0 This release

2 release files Full provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page