Use Map<String, String> instead of String[] for environment variables
Use ExecUtil.exec() for running processes for correct parameters escaping on Windows
Inlined list()
Local logger for package manager UI
Removed unused PyPackageManager.findPackage()
Extracted PyPackageManagerUI and split into package management tasks
Use import instead of qualified name
Removed unused declarations
Use PyPackageManager only via its public interface
Fixed description message after successful installation of package management tools
Added cachedOnly paramter to PyPackageManager.getPackages()
Inlined PyPackageManager.getInstalledPackage(String)
Renamed PyPackageManager.findInstalledPackage() into findPackage()
Added nullity annotations
Fixed package names in checking for installed 'pip' and 'setuptools'
Extracted installManagement()
Switched to single install action for Python packaging tools
Suggest to install Python packaging tools in packaging quick-fixes if they are not found
Moved private error codes of the packaging tool back to PyPackageManagerImpl
Inlined PyPackageManager.showInstallationError()