Skip to content

Changelog

All notable changes to this project are documented here.

The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.

[0.2.1] - 2026-07-23

Changed

  • The guides load a bundled design specification through pilotr_example() rather than by a path relative to the repository. The path resolved only inside a checkout, so a reader who had installed pilotr and copied the line met a missing-file error.

0.2.0 - 2026-07-15

Added

  • pilotr_example() lists the design specifications shipped with the package, one per design family, and returns the path to each for load_spec(). The eight JSON files now travel inside the wheel, so the Worked examples page and any installed copy can reach them. This matches the R twin's pilotr_example().

0.1.0 - 2026-07-10

The first public version of the Python package. It simulates experimental and behavioural data from a portable JSON design specification, producing output that is bit-identical to the R package of the same name given the same specification and seed.

Added

  • simulate generates a dataset from a design specification supplied as a plain dictionary or a JSON file, with load_spec reading a specification authored elsewhere, such as one downloaded from the no-code app. A per_subject value below 1 or above the number of items is rejected with a clear ValueError; the R package raises on the same inputs.
  • Response families for Gaussian outcomes, reaction times, accuracy, counts, ordinal responses and Beta-distributed proportions.
  • Power and design analysis through power, power_curve and power_mixed, with scipy and statsmodels supplied as optional extras so the generative core stays dependency-free. A specification without an item unit is rejected by power_mixed with a clear ValueError rather than yielding nan power.
  • A cross-language random-number contract that reproduces the R package's data to full floating-point precision. Every Monte Carlo replicate seeds the shared RNG as seed + (replicate - 1), the same indexed-seed rule as the R package across all analyses.
  • power, power_mixed and power_curve take a workers argument that spreads the Monte Carlo replicates across local processes with concurrent.futures.ProcessPoolExecutor. Because every replicate seeds the shared RNG from its own index, any worker count returns results identical to a serial run, and power_curve starts one process pool and reuses it across the whole sweep.
  • A documentation site whose guides execute their examples at build time, so the tables and figures shown are real pilotr output.