internal PipPackageView(PipPackageCache provider, string name, string version, string description) { _provider = provider; _name = name ?? ""; if (!string.IsNullOrEmpty(version)) { Pep440Version.TryParse(version, out _version); } _description = description ?? ""; }
internal PipPackageView(PipPackageCache provider, string packageSpec, bool versionIsInstalled = true) { _provider = provider; Match m; try { m = PipListOutputRegex.Match(packageSpec); } catch (RegexMatchTimeoutException) { Debug.Fail("Regex timeout"); m = null; } if (m == null || !m.Success) { try { m = PipFreezeOutputRegex.Match(packageSpec); } catch (RegexMatchTimeoutException) { Debug.Fail("Regex timeout"); m = null; } if (m == null || !m.Success) { try { m = NameAndDescriptionRegex.Match(packageSpec); } catch (RegexMatchTimeoutException) { Debug.Fail("Regex timeout"); m = null; } } } Pep440Version version; if (m.Success) { _name = m.Groups["name"].Value; Pep440Version.TryParse(m.Groups["version"].Value, out version); } else { _name = packageSpec; version = Pep440Version.Empty; } var description = m.Groups["description"].Value; if (!string.IsNullOrEmpty(description)) { _description = Uri.UnescapeDataString(description); } if (versionIsInstalled) { _version = version; _upgradeVersion = null; } else { _version = Pep440Version.Empty; _upgradeVersion = version; } }