Changelog¶
Notable changes to orhelper. Releases before this file was started are listed on the tags page and in the git history.
0.2.0 - 2026-10-01¶
Versions 0.1.4 to 0.1.6 appeared in setup.py but were never published; the latest release on
PyPI before this one is 0.1.3, so this release includes all changes since then.
Upgrading from 0.1.3: startup problems now raise exceptions instead of calling
sys.exit(), misspelt keyword arguments toOpenRocketInstanceare errors, and Python 3.9 or newer and JPype 1.3 or newer are required. See Changed below.
Added¶
- A documentation site, built with MkDocs and published to GitHub Pages: installation, quickstart,
a user guide, an API reference generated from the docstrings, a reference of every
FlightDataTypeandFlightEventmember (with units and the OpenRocket versions that have it), a page on the differences between OpenRocket versions, and troubleshooting. Its code samples are the tested files inexamples/. - Docstrings for the whole public API, including every
AbstractSimulationListenerhook. tools/generate_reference.py, which generates the flight data and event reference pages from OpenRocket jars.- Seven new examples:
events_and_stats.py,edit_and_save.py,parameter_sweep.py,multistage.py,custom_listener.py,parallel_runs.pyandcustom_setup.py, and a guided notebook,examples/tour.ipynb. tests/test_examples.pyruns every script inexamples/against a real OpenRocket jar (withOPENROCKET_JAR), also in CI, so the examples stay working across OpenRocket versions.- Exceptions for startup problems:
OrHelperError(aRuntimeError) and its subclassesOpenRocketNotFoundError,JVMNotFoundErrorandJVMAlreadyStartedError. Messages say what was searched and how to fix it. OpenRocketInstance(jvm_args=[...])passes extra options to the JVM, for example-Xmx4gor-Djava.awt.headless=true.orhelper.sample_ork_path()returns the path of a sample rocket that is now bundled with the package, so examples and the quickstart work afterpip install.examples/quickstart.py, a minimal example that needs no plotting libraries.- Support for OpenRocket 24.12 and 26.xx, plus compatibility tests
(
tests/test_compatibility.py, andtests/test_integration.pywithOPENROCKET_JAR). - GitHub Actions workflow running the unit tests and checking the package build.
- CI job that runs the Java integration tests against the released OpenRocket 22.02, 23.09 and 24.12 jars.
CONTRIBUTING.mdand this changelog.
Changed¶
- Behaviour change: a missing OpenRocket installation, jar or JVM now raises
OpenRocketNotFoundError/JVMNotFoundErrorinstead of callingsys.exit(), so it can be caught withexcept Exceptionand no longer ends notebooks. Code that caughtSystemExitshould catchorhelper.OrHelperErrorinstead. - Behaviour change: starting a second JVM in one process raises
JVMAlreadyStartedErrorinstead of a bareOSError, andHelper(...)on a stopped instance raisesOrHelperErrorinstead ofException. - Behaviour change: unknown keyword arguments to
OpenRocketInstance(for example a misspeltjvm_path=) raiseTypeError; wrongly typed paths raiseTypeErrorinstead of being ignored. Log level names are case-insensitive and an unknown name raisesValueError. - README rewritten with a quickstart, a "how it works" overview, common tasks and troubleshooting.
- Packaging moved from
setup.pytopyproject.toml: corrected project URL, added classifiers, license and extras (orhelper[examples],orhelper[pandas]). The minimum Python version is now 3.9 and the minimum JPype version 1.3. examples/simple.orkmoved toorhelper/data/simple.ork.
Fixed¶
Helper.load_docandsave_docraisedTypeErrorfor apathlib.Path; they now accept any path-like object.examples/lazy.pycrashed withTypeError: only 0-dimensional arrays can be converted to Python scalarson NumPy 2 (scipy'sfminpasses a one-element array where a number was expected).examples/monte_carlo.pyoverstated the landing distance (by 41% at the sample rocket's latitude of 45 degrees) because it converted degrees of longitude to metres without thecos(latitude)factor, and gave the wrong bearing for rockets landing west of the pad. It now matches the positions OpenRocket reports.- The integration test comparing
get_final_valueswith the last time-series sample failed when that sample is NaN, as it is for motor mass in some OpenRocket development builds; it now compares NaN-aware. - Fixed the typo in the
get_final_valuesdocstring and documentedbranch_number, the return value and that the final value can be NaN. log_levelnow works for Python logging: the enum's raw integers (1-7) were being passed tologgingas levels, so everything was always logged, including other libraries' DEBUG messages. orhelper no longer callslogging.basicConfig()or touches the root logger; it sets the level of theorhelperlogger only. As a result its messages are not printed unless the application configures logging.- Startup no longer crashes on an unsupported platform or when
PROGRAMFILESis unset. package_datapointed at a removed directory, so the examples were not installed. The sample rocket is now included correctly.