Python: collect pip package info in another thread

Change-Id: I70a9066fddf812ce9bde5467913bb2bad98e2d0e
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
This commit is contained in:
David Schulz
2023-01-25 12:29:08 +01:00
parent b05a34b81e
commit 471e67d1a6
4 changed files with 164 additions and 78 deletions

View File

@@ -12,25 +12,6 @@
namespace Python::Internal {
class PipPackageInfo;
class PipPackage
{
public:
explicit PipPackage(const QString &packageName = {},
const QString &displayName = {},
const QString &version = {})
: packageName(packageName)
, displayName(displayName.isEmpty() ? packageName : displayName)
, version(version)
{}
QString packageName;
QString displayName;
QString version;
PipPackageInfo info(const Utils::FilePath &python) const;
};
class PipPackageInfo
{
public:
@@ -49,6 +30,37 @@ public:
void parseField(const QString &field, const QStringList &value);
};
class PipPackage
{
public:
explicit PipPackage(const QString &packageName = {},
const QString &displayName = {},
const QString &version = {})
: packageName(packageName)
, displayName(displayName.isEmpty() ? packageName : displayName)
, version(version)
{}
QString packageName;
QString displayName;
QString version;
};
class Pip : public QObject
{
public:
static Pip *instance(const Utils::FilePath &python);
QFuture<PipPackageInfo> info(const PipPackage &package);
private:
Pip(const Utils::FilePath &python);
PipPackageInfo infoImpl(const PipPackage &package);
QMutex m_lock;
Utils::FilePath m_python;
};
class PipInstallTask : public QObject
{
Q_OBJECT