public void PrepareGeneration()
 {
     Database                      = levelGenData.database;
     genParams                     = levelGenData.genParams;
     moduleHolder                  = new GameObject();
     moduleHolder.name             = "Module Holder";
     moduleHolder.transform.parent = this.transform.parent;
 }
 public ModuleInstanceCache(ModuleDatabase owner, Assembly assembly)
 {
     if (owner == null) {
         throw new ArgumentNullException("owner");
     }
     if (assembly == null) {
         throw new ArgumentNullException("assembly");
     }
     this.owner = owner;
     assemblyInfo = ModuleAssemblyInfo.Get(assembly);
     dirty = true;
     assemblyInfo.Inventory.AssertEngineVersion(owner.ManagementConnectionProvider.EngineVersion.Major);
 }
        private async Task CreateDatabaseAsync(IPythonInterpreter interpreter)
        {
            var dbs = new ModuleDatabase(Services, Path.GetDirectoryName(TestData.GetDefaultModulePath()));

            Services.AddService(dbs);

            var importedModules = interpreter.ModuleResolution.GetImportedModules();

            foreach (var m in importedModules.Where(m => m.Analysis is LibraryAnalysis))
            {
                await dbs.StoreModuleAnalysisAsync(m.Analysis, immediate : true);
            }

            importedModules = interpreter.TypeshedResolution.GetImportedModules();
            foreach (var m in importedModules.Where(m => m.Analysis is LibraryAnalysis))
            {
                await dbs.StoreModuleAnalysisAsync(m.Analysis, immediate : true);
            }
        }
        public async Task ReturnType()
        {
            const string code     = @"
from module2 import func2
x = func2()
";
            const string mod2Code = @"
class C2:
    def M1C2(self):
        return 0

def func2() -> C2: ...
";
            await TestData.CreateTestSpecificFileAsync("module2.py", mod2Code);

            var analysis = await GetAnalysisAsync(code);

            var f2        = analysis.Should().HaveVariable("func2").Which;
            var analysis2 = ((IPythonFunctionType)f2.Value).DeclaringModule.Analysis;

            var dbs = new ModuleDatabase(Services, Path.GetDirectoryName(TestData.GetDefaultModulePath()));

            Services.AddService(dbs);
            await dbs.StoreModuleAnalysisAsync(analysis2, immediate : true, CancellationToken.None);

            await Services.GetService <IPythonAnalyzer>().ResetAnalyzer();

            var doc = Services.GetService <IRunningDocumentTable>().GetDocument(analysis.Document.Uri);

            analysis = await doc.GetAnalysisAsync(Timeout.Infinite);

            var func2 = analysis.Should().HaveFunction("func2").Which;
            var c2    = func2.Should().HaveSingleOverload()
                        .Which.Should().HaveReturnType("C2").Which;

            c2.Should().HaveMember <IPythonFunctionType>("M1C2")
            .Which.Should().HaveSingleOverload()
            .Which.Should().HaveReturnType(BuiltinTypeId.Int);
        }