This documentation is for an unreleased version of MPF!

This is the developer documentation for MPF 0.51, which is the “dev” (next) release of MPF that is a work-in-progress. Use the “Read the Docs” link in the lower left corner to view the developer docs for the version of MPF you’re using.


class mpf.devices.ball_hold.BallHold(*args, **kwargs)

Bases: mpf.core.system_wide_device.SystemWideDevice, mpf.core.mode_device.ModeDevice

Ball hold device which can be used to keep balls in ball devices and control their eject later on.

Accessing ball_holds in code

The device collection which contains the ball_holds in your machine is available via self.machine.ball_holds. For example, to access one called “foo”, you would use self.machine.ball_holds.foo. You can also access ball_holds in dictionary form, e.g. self.machine.ball_holds['foo'].

You can also get devices by tag or hardware number. See the DeviceCollection documentation for details.

Methods & Attributes

Ball_holds have the following methods & attributes available. Note that methods & attributes inherited from base classes are not included here.


Disable the hold.

If the hold is not enabled, no balls will be held.

Parameters:**kwargs – unused

Enable the hold.

If the hold is not enabled, no balls will be held.

Parameters:**kwargs – unused

Return true if hold is full.

raise_config_error(msg, error_no, *, context=None)

Raise a ConfigFileError exception.


Release all balls in hold.


Release all balls and return the actual amount of balls released.

Parameters:balls_to_release – number of ball to release from hold

Release one ball.

Parameters:**kwargs – unused

Release one ball if hold is full.


Return the remaining capacity of the hold.


Reset the hold.

Will release held balls. Device status will stay the same (enabled/disabled). It will wait for those balls to drain and block ball_ending until they do. Those balls are not included in ball_in_play.

Parameters:**kwargs – unused