private void HandleModuleImportStar(PythonVariableModule variableModule, bool isImplicitPackage)
        {
            if (variableModule.Module == Module)
            {
                // from self import * won't define any new members
                return;
            }

            // If __all__ is present, take it, otherwise declare all members from the module that do not begin with an underscore.
            var memberNames = isImplicitPackage
                ? variableModule.GetMemberNames()
                : variableModule.Analysis.StarImportMemberNames ?? variableModule.GetMemberNames().Where(s => !s.StartsWithOrdinal("_"));

            foreach (var memberName in memberNames)
            {
                var member = variableModule.GetMember(memberName);
                if (member == null)
                {
                    Log?.Log(TraceEventType.Verbose, $"Undefined import: {variableModule.Name}, {memberName}");
                }
                else if (member.MemberType == PythonMemberType.Unknown)
                {
                    Log?.Log(TraceEventType.Verbose, $"Unknown import: {variableModule.Name}, {memberName}");
                }

                member = member ?? Eval.UnknownType;
                if (member is IPythonModule m)
                {
                    ModuleResolution.GetOrLoadModule(m.Name);
                }

                var variable = variableModule.Analysis?.GlobalScope?.Variables[memberName];
                Eval.DeclareVariable(memberName, variable ?? member, VariableSource.Import);
            }
        }
Esempio n. 2
0
        private void HandleModuleImportStar(PythonVariableModule variableModule)
        {
            if (variableModule.Module == Module)
            {
                // from self import * won't define any new members
                return;
            }

            foreach (var memberName in variableModule.GetMemberNames())
            {
                var member = variableModule.GetMember(memberName);
                if (member == null)
                {
                    Log?.Log(TraceEventType.Verbose, $"Undefined import: {variableModule.Name}, {memberName}");
                }
                else if (member.MemberType == PythonMemberType.Unknown)
                {
                    Log?.Log(TraceEventType.Verbose, $"Unknown import: {variableModule.Name}, {memberName}");
                }

                member = member ?? Eval.UnknownType;
                if (member is IPythonModule m)
                {
                    ModuleResolution.GetOrLoadModule(m.Name);
                }

                Eval.DeclareVariable(memberName, member, VariableSource.Import, variableModule.Location);
            }
        }
Esempio n. 3
0
        private void HandleModuleImportStar(PythonVariableModule variableModule, IImportSearchResult imports, int importPosition, NameExpression nameExpression)
        {
            if (variableModule.Module == Module)
            {
                // from self import * won't define any new members
                return;
            }
            // If __all__ is present, take it, otherwise declare all members from the module that do not begin with an underscore.
            var memberNames = imports is ImplicitPackageImport
                ? variableModule.GetMemberNames()
                : variableModule.Analysis.StarImportMemberNames ?? variableModule.GetMemberNames().Where(s => !s.StartsWithOrdinal("_"));

            foreach (var memberName in memberNames)
            {
                DeclareVariable(variableModule, memberName, imports, memberName, importPosition, nameExpression);
            }
        }
 public IEnumerable <string> GetMemberNames(PythonVariableModule variableModule)
 => variableModule.Analysis.StarImportMemberNames ?? variableModule.GetMemberNames().Where(s => !s.StartsWithOrdinal("_"));