"""Subpackage containing all standard commands.""" import os from packaging.errors import PackagingModuleError from packaging.util import resolve_name __all__ = ['get_command_names', 'set_command', 'get_command_class', 'STANDARD_COMMANDS'] STANDARD_COMMANDS = [ # packaging 'check', 'test', # building 'build', 'build_py', 'build_ext', 'build_clib', 'build_scripts', 'clean', # installing 'install_dist', 'install_lib', 'install_headers', 'install_scripts', 'install_data', 'install_distinfo', # distributing 'sdist', 'bdist', 'bdist_dumb', 'bdist_wininst', 'register', 'upload', 'upload_docs', ] if os.name == 'nt': STANDARD_COMMANDS.insert(STANDARD_COMMANDS.index('bdist_wininst'), 'bdist_msi') # XXX maybe we need more than one registry, so that --list-comands can display # standard, custom and overriden standard commands differently _COMMANDS = dict((name, 'packaging.command.%s.%s' % (name, name)) for name in STANDARD_COMMANDS) def get_command_names(): """Return registered commands""" return sorted(_COMMANDS) def set_command(location): cls = resolve_name(location) # XXX we want to do the duck-type checking here _COMMANDS[cls.get_command_name()] = cls def get_command_class(name): """Return the registered command""" try: cls = _COMMANDS[name] except KeyError: raise PackagingModuleError("Invalid command %s" % name) if isinstance(cls, str): cls = resolve_name(cls) _COMMANDS[name] = cls return cls