private async Task InitializeCurrentContext()
        {
            var workspace = _workspaceService.CurrentWorkspace;

            if (workspace != null)
            {
                var context = new PythonWorkspaceContext(workspace, await workspace.GetPropertyEvaluatorServiceAsync(), _optionsService.Value, _registryService.Value);

                // Workspace interpreter factory provider will rescan the
                // workspace folder for factories.
                WorkspaceOpening?.Invoke(this, new PythonWorkspaceContextEventArgs(context));

                lock (_currentContextLock) {
                    _currentContext = context;
                }

                // Workspace sets its interpreter factory instance
                // This can trigger WorkspaceInterpreterFactoryProvider discovery
                // which needs to look at this object's _currentContext, which is why we
                // set that before calling initialize.
                context.Initialize();

                // Let users know this workspace context is all initialized
                WorkspaceInitialized?.Invoke(this, new PythonWorkspaceContextEventArgs(context));
            }
        }
示例#2
0
 public void SimulateChangeWorkspace(IPythonWorkspaceContext context)
 {
     WorkspaceClosing?.Invoke(this, new PythonWorkspaceContextEventArgs(Workspace));
     WorkspaceClosed?.Invoke(this, new PythonWorkspaceContextEventArgs(Workspace));
     Workspace = context;
     WorkspaceOpening?.Invoke(this, new PythonWorkspaceContextEventArgs(Workspace));
     WorkspaceInitialized?.Invoke(this, new PythonWorkspaceContextEventArgs(Workspace));
 }
示例#3
0
        private void InitializeCurrentContext()
        {
            var workspace = _workspaceService.CurrentWorkspace;

            if (workspace != null)
            {
                var context = new PythonWorkspaceContext(workspace, _optionsService.Value, _registryService.Value);

                // Workspace interpreter factory provider will rescan the
                // workspace folder for factories.
                WorkspaceOpening?.Invoke(this, new PythonWorkspaceContextEventArgs(context));

                // Workspace sets its interpreter factory instance,
                // now that they've been discovered by the factory provider.
                context.Initialize();

                lock (_currentContextLock) {
                    _currentContext = context;
                }

                // Let users know this workspace context is all initialized
                WorkspaceInitialized?.Invoke(this, new PythonWorkspaceContextEventArgs(context));
            }
        }