This document describes user-visible changes from pykickstart-2 to pykickstart-3. With the major version number change, I've taken the opportunity to make some changes that would break compatibility. In order to use the new version, these are things you should be aware of: * KickstartValueError is no longer raised in pykickstart. Any places that would have raised this exception now raise KickstartParseError. The old KickstartValueError class still exists, should you have code that needs to raise it. * The map and map_extend actions provided by KSOptionParser have been eliminated. Nothing in pykickstart outside of the firewall command used these actions, and it's easy enough to implement without custom actions. * The KSOption class has been removed. * _setToSelf has been renamed set_to_self to reflect that it's really a public function, and now only takes an argparse.Namespace argument. _setToObj has similarly been renamed set_to_obj, and now only takes a source argparse.Namespace and a destination object. The old names still exist as wrappers for the new names. * pykickstart now uses the argparse module instead of the deprecated optparse module. The bulk of the changes for this release are related to this move. If you have your own commands or have subclassed existing commands, you will need to make a variety of changes to your code. The rest of the items in this list are due to this change. In general, see: https://docs.python.org/3/library/argparse.html#upgrading-optparse-code * add_option is now add_argument. * parse_args now returns only one value, an argparse.Namespace instance. It is recommended you use parse_args for commands that don't expect any extra arguments and parse_known_args for any commands that do. parse_known_args returns both an argparse.Namespace and a list of extra options. Examples of commands that should use parse_known_args are things like logvol or part, that want a mount point. * The callback action no longer exists. If you need to do some complex conversion of the value given as the argument, use type= to do it. See the autopart command for an example. If you need to set multiple values when one argument is seen, you'll need to set an intermediate value and do the real setting in the parse method. See the bootloader command. * There is no need to specify type="choice" any more. Just give choices=. * There are new ExtendAction and ExtendConstActions available. The first extends an existing list with a list of new values. This is useful if an argument can be provided multiple times and each time can take a comma separated list of values. The second does the same, but with a given const= value. See the firewall command for an example.