private void DeleteEnvironment_Executed(object sender, ExecutedRoutedEventArgs e) { // TODO: this is assuming that all environments that CanBeDeleted are conda environments, which may not be true in the future var view = e.Parameter as EnvironmentView; var result = MessageBox.Show( EnvironmentsList.Resources.EnvironmentPathsExtensionDeleteConfirmation.FormatUI(view.Configuration.GetPrefixPath()), EnvironmentsList.Resources.ProductTitle, MessageBoxButton.YesNo, MessageBoxImage.Question ); if (result != MessageBoxResult.Yes) { return; } var compModel = _site.GetService(typeof(SComponentModel)) as IComponentModel; var registry = compModel.GetService <IInterpreterRegistryService>(); var mgr = CondaEnvironmentManager.Create(_site); mgr.DeleteAsync( view.Configuration.GetPrefixPath(), new CondaEnvironmentManagerUI(_outputWindow), CancellationToken.None ).HandleAllExceptions(_site, GetType()).DoNotWait(); }
private static async Task <string> CreatePython27AndFlask012EnvAsync(CondaEnvironmentManager mgr, MockCondaEnvironmentManagerUI ui, string name) { var envPath = Path.Combine(TestData.GetTempPath(), name); var result = await mgr.CreateAsync(envPath, Python27AndFlask012Packages, ui, CancellationToken.None); Assert.IsTrue(result, "Create failed."); AssertCondaMetaFiles(envPath, "flask-*.json", "python-2.7.*.json"); ui.Clear(); return(envPath); }
private static CondaEnvironmentManager CreateEnvironmentManager() { if (!PythonPaths.AnacondaVersions.Any()) { Assert.Inconclusive("Anaconda is required."); } var version = PythonPaths.AnacondaVersions.FirstOrDefault(); string condaPath = CondaUtils.GetCondaExecutablePath(version.PrefixPath, allowBatch: false); Assert.IsTrue(File.Exists(condaPath), $"Conda executable not found: '{condaPath}' for environment prefix at '{version.PrefixPath}'"); return(CondaEnvironmentManager.Create(condaPath)); }
private static async Task <string> EnqueueEnvironmentDeletionAsync(CondaEnvironmentManager mgr, string envName) { var envPath = await GetEnvironmentPathAsync(mgr, envName); if (envPath != null) { DeleteFolder.Add(envPath); } else { Assert.Fail($"Path to '{envName}' was not found in conda info results."); } return(envPath); }
private static CondaEnvironmentManager CreateEnvironmentManager() { if (!PythonPaths.AnacondaVersions.Any()) { Assert.Inconclusive("Anaconda is required."); } var container = CreateCompositionContainer(); var interpreters = container.GetExportedValue <IInterpreterRegistryService>(); var mgr = CondaEnvironmentManager.Create(interpreters); Assert.IsNotNull(mgr, "Could not create conda environment manager."); return(mgr); }
private static string GetUnusedEnvironmentName(CondaEnvironmentManager mgr) { // Avoid names already used by any of the existing environments. var info = CondaEnvironmentFactoryProvider.ExecuteCondaInfo(mgr.CondaPath); var used = info.EnvironmentFolders.Select(absPath => PathUtils.GetFileOrDirectoryName(absPath)); string name; do { // Pick a random name (instead of incrementing a numerical suffix) // so this works better if we ever run tests in parallel. name = Path.GetRandomFileName(); } while (used.Contains(name, StringComparer.OrdinalIgnoreCase)); return(name); }
public AddCondaEnvironmentView( IServiceProvider serviceProvider, ProjectView[] projects, ProjectView selectedProject ) : base(serviceProvider, projects, selectedProject) { _condaMgr = CondaEnvironmentManager.Create(Site); _updatePreviewTimer = new Timer(UpdatePreviewTimerCallback); IsCondaMissing = _condaMgr == null; PageName = Strings.AddCondaEnvironmentTabHeader; AcceptCaption = Strings.AddEnvironmentCreateButton; IsAcceptEnabled = !IsCondaMissing; SetAsCurrent = SelectedProject != null; SetAsDefault = false; ViewInEnvironmentWindow = false; ResetProjectDependentProperties(); }
internal async Task CreateEnvironmentAsync(CondaEnvironmentView view) { var mgr = CondaEnvironmentManager.Create(_registry); if (mgr == null) { // TODO: Instead of this message box, hide the input/create // controls and show a message there instead. MessageBox.Show(Resources.CondaExtensionNotAvailable, Resources.ProductTitle); return; } _isWorking = true; try { // Use single equal sign to install the selected version or any of its revisions var packages = new[] { PackageSpec.FromArguments($"python={view.VersionName}") }; await mgr.CreateAsync(view.EnvironmentName, packages, this, CancellationToken.None); } finally { _isWorking = false; } }
private static async Task <string> GetEnvironmentPathAsync(CondaEnvironmentManager mgr, string envName) { var info = await CondaEnvironmentFactoryProvider.ExecuteCondaInfoAsync(mgr.CondaPath); return(info.EnvironmentFolders.SingleOrDefault(absPath => string.Compare(PathUtils.GetFileOrDirectoryName(absPath), envName, StringComparison.OrdinalIgnoreCase) == 0)); }