예제 #1
0
 public void AddProvider(IPythonInterpreterFactoryProvider provider) {
     _providers.Add(provider);
     provider.InterpreterFactoriesChanged += provider_InterpreterFactoriesChanged;
     var evt = InterpretersChanged;
     if (evt != null) {
         evt(this, EventArgs.Empty);
     }
 }
 private IEnumerable <KeyValuePair <IPythonInterpreterFactoryProvider, Dictionary <string, object> > > GetProvidersAndMetadata()
 {
     for (int i = 0; i < _providers.Length; i++)
     {
         IPythonInterpreterFactoryProvider value = LoadFactory(i);
         if (value != null)
         {
             yield return(new KeyValuePair <IPythonInterpreterFactoryProvider, Dictionary <string, object> >(value, _providers[i].Metadata));
         }
     }
 }
예제 #3
0
        public void AddProvider(IPythonInterpreterFactoryProvider provider)
        {
            _providers.Add(provider);
            provider.InterpreterFactoriesChanged += provider_InterpreterFactoriesChanged;
            var evt = InterpretersChanged;

            if (evt != null)
            {
                evt(this, EventArgs.Empty);
            }
        }
        internal void ProjectLoaded(IPythonInterpreterFactoryProvider provider, IVsProject project) {
            if (provider == null) {
                return;
            }

            lock (_providers) {
                if (!_providers.ContainsKey(provider)) {
                    _providers[provider] = project;
                    provider.InterpreterFactoriesChanged += Interpreters_InterpreterFactoriesChanged;
                }
            }
            OnInterpreterFactoriesChanged();
        }
        internal void ProjectUnloaded(IPythonInterpreterFactoryProvider provider)
        {
            if (provider == null)
            {
                return;
            }

            lock (_providers) {
                if (_providers.Remove(provider))
                {
                    provider.InterpreterFactoriesChanged -= Interpreters_InterpreterFactoriesChanged;
                }
            }
            OnInterpreterFactoriesChanged();
        }
        internal void ProjectLoaded(IPythonInterpreterFactoryProvider provider, IVsProject project)
        {
            if (provider == null)
            {
                return;
            }

            lock (_providers) {
                if (!_providers.ContainsKey(provider))
                {
                    _providers[provider] = project;
                    provider.InterpreterFactoriesChanged += Interpreters_InterpreterFactoriesChanged;
                }
            }
            OnInterpreterFactoriesChanged();
        }
        /// <summary>
        /// Handles creating the factory value and logging any failures.
        /// </summary>
        private IPythonInterpreterFactoryProvider LoadFactory(int i)
        {
            IPythonInterpreterFactoryProvider value = null;

            try {
                var provider = _providers[i];
                if (provider != null)
                {
                    value = provider.Value;
                }
            } catch (CompositionException ce) {
                Log("Failed to get interpreter factory value: {0}", ce);
                _providers[i] = null;
            }

            return(value);
        }
예제 #8
0
 private static IList <IPythonInterpreterFactory> GetFactories(IPythonInterpreterFactoryProvider provider)
 {
     while (true)
     {
         try {
             var res = new List <IPythonInterpreterFactory>();
             foreach (var f in provider.GetInterpreterFactories())
             {
                 res.Add(f);
             }
             return(res);
         } catch (InvalidOperationException ex) {
             // Collection changed, so retry
             Debug.WriteLine("Retrying GetInterpreterFactories because " + ex.Message);
         }
     }
 }
 private IEnumerable <KeyValuePair <IPythonInterpreterFactoryProvider, Dictionary <string, object> > > GetProvidersAndMetadata()
 {
     for (int i = 0; i < _factoryProviders.Length; i++)
     {
         IPythonInterpreterFactoryProvider value = null;
         try {
             var provider = _factoryProviders[i];
             if (provider != null)
             {
                 value = provider.Value;
             }
         } catch (CompositionException ce) {
             Log("Failed to get interpreter factory value: {0}", ce);
             _factoryProviders[i] = null;
         }
         if (value != null)
         {
             yield return(new KeyValuePair <IPythonInterpreterFactoryProvider, Dictionary <string, object> >(value, _factoryProviders[i].Metadata));
         }
     }
 }
 public static IEnumerable <IPythonInterpreterFactory> GetInterpreterFactories(this IPythonInterpreterFactoryProvider self)
 {
     return(self.GetInterpreterConfigurations().Select(x => self.GetInterpreterFactory(x.Id)));
 }
예제 #11
0
 // Used for testing.
 internal IPythonInterpreterFactoryProvider[] SetProviders(IPythonInterpreterFactoryProvider[] providers) {
     var oldProviders = _providers;
     _providers = providers;
     Provider_InterpreterFactoriesChanged(this, EventArgs.Empty);
     return oldProviders;
 }
        internal void ProjectUnloaded(IPythonInterpreterFactoryProvider provider) {
            if (provider == null) {
                return;
            }

            lock (_providers) {
                if (_providers.Remove(provider)) {
                    provider.InterpreterFactoriesChanged -= Interpreters_InterpreterFactoriesChanged;
                }
            }
            OnInterpreterFactoriesChanged();
        }