@zzzen/pyright-internal 1.1.254 → 1.1.255
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +3 -2
- package/src/analyzer/aliasDeclarationUtils.ts +169 -0
- package/src/analyzer/analysis.ts +92 -0
- package/src/analyzer/analyzerFileInfo.ts +56 -0
- package/src/analyzer/analyzerNodeInfo.ts +198 -0
- package/src/analyzer/backgroundAnalysisProgram.ts +311 -0
- package/src/analyzer/binder.ts +4081 -0
- package/src/analyzer/checker.ts +5507 -0
- package/src/analyzer/circularDependency.ts +52 -0
- package/src/analyzer/codeFlowEngine.ts +1548 -0
- package/src/analyzer/codeFlowTypes.ts +266 -0
- package/src/analyzer/codeFlowUtils.ts +436 -0
- package/src/analyzer/commentUtils.ts +174 -0
- package/src/analyzer/constraintSolver.ts +926 -0
- package/src/analyzer/constructorTransform.ts +317 -0
- package/src/analyzer/dataClasses.ts +999 -0
- package/src/analyzer/declaration.ts +252 -0
- package/src/analyzer/declarationUtils.ts +238 -0
- package/src/analyzer/docStringConversion.ts +850 -0
- package/src/analyzer/docStringUtils.ts +112 -0
- package/src/analyzer/functionTransform.ts +137 -0
- package/src/analyzer/importResolver.ts +2308 -0
- package/src/analyzer/importResult.ts +98 -0
- package/src/analyzer/importStatementUtils.ts +834 -0
- package/src/analyzer/namedTuples.ts +422 -0
- package/src/analyzer/packageTypeReport.ts +108 -0
- package/src/analyzer/packageTypeVerifier.ts +1466 -0
- package/src/analyzer/parentDirectoryCache.ts +88 -0
- package/src/analyzer/parseTreeCleaner.ts +35 -0
- package/src/analyzer/parseTreeUtils.ts +2165 -0
- package/src/analyzer/parseTreeWalker.ts +663 -0
- package/src/analyzer/patternMatching.ts +1356 -0
- package/src/analyzer/program.ts +2778 -0
- package/src/analyzer/properties.ts +534 -0
- package/src/analyzer/protocols.ts +660 -0
- package/src/analyzer/pyTypedUtils.ts +52 -0
- package/src/analyzer/pythonPathUtils.ts +201 -0
- package/src/analyzer/scope.ts +202 -0
- package/src/analyzer/scopeUtils.ts +81 -0
- package/src/analyzer/service.ts +1679 -0
- package/src/analyzer/sourceFile.ts +1401 -0
- package/src/analyzer/sourceMapper.ts +717 -0
- package/src/analyzer/staticExpressions.ts +308 -0
- package/src/analyzer/symbol.ts +249 -0
- package/src/analyzer/symbolNameUtils.ts +50 -0
- package/src/analyzer/symbolUtils.ts +49 -0
- package/src/analyzer/testWalker.ts +101 -0
- package/src/analyzer/tracePrinter.ts +264 -0
- package/src/analyzer/typeCache.ts +181 -0
- package/src/analyzer/typeDocStringUtils.ts +371 -0
- package/src/analyzer/typeEvaluator.ts +23395 -0
- package/src/analyzer/typeEvaluatorTypes.ts +452 -0
- package/src/analyzer/typeEvaluatorWithTracker.ts +161 -0
- package/src/analyzer/typeGuards.ts +1828 -0
- package/src/analyzer/typePrinter.ts +807 -0
- package/src/analyzer/typeStubWriter.ts +727 -0
- package/src/analyzer/typeUtils.ts +3126 -0
- package/src/analyzer/typeVarContext.ts +330 -0
- package/src/analyzer/typedDicts.ts +950 -0
- package/src/analyzer/types.ts +2857 -0
- package/src/backgroundAnalysis.ts +49 -0
- package/src/backgroundAnalysisBase.ts +606 -0
- package/src/backgroundThreadBase.ts +143 -0
- package/src/commands/commandController.ts +62 -0
- package/src/commands/commandResult.ts +21 -0
- package/src/commands/commands.ts +16 -0
- package/src/commands/createTypeStub.ts +56 -0
- package/src/commands/quickActionCommand.ts +40 -0
- package/src/commands/restartServer.ts +20 -0
- package/src/common/cancellationUtils.ts +71 -0
- package/src/common/chokidarFileWatcherProvider.ts +74 -0
- package/src/common/collectionUtils.ts +379 -0
- package/src/common/commandLineOptions.ts +132 -0
- package/src/common/configOptions.ts +1291 -0
- package/src/common/console.ts +201 -0
- package/src/common/core.ts +152 -0
- package/src/common/crypto.ts +60 -0
- package/src/common/debug.ts +144 -0
- package/src/common/deferred.ts +78 -0
- package/src/common/diagnostic.ts +191 -0
- package/src/common/diagnosticRules.ts +80 -0
- package/src/common/diagnosticSink.ts +150 -0
- package/src/common/editAction.ts +46 -0
- package/src/common/extensibility.ts +35 -0
- package/src/common/extensions.ts +21 -0
- package/src/common/fileBasedCancellationUtils.ts +274 -0
- package/src/common/fileSystem.ts +152 -0
- package/src/common/fullAccessHost.ts +203 -0
- package/src/common/host.ts +49 -0
- package/src/common/logTracker.ts +157 -0
- package/src/common/lspUtils.ts +18 -0
- package/src/common/memUtils.ts +36 -0
- package/src/common/pathConsts.ts +16 -0
- package/src/common/pathUtils.ts +987 -0
- package/src/common/positionUtils.ts +78 -0
- package/src/common/progressReporter.ts +53 -0
- package/src/common/pythonVersion.ts +74 -0
- package/src/common/realFileSystem.ts +433 -0
- package/src/common/stringUtils.ts +161 -0
- package/src/common/textEditUtils.ts +31 -0
- package/src/common/textRange.ts +225 -0
- package/src/common/textRangeCollection.ts +122 -0
- package/src/common/timing.ts +105 -0
- package/src/common/uriParser.ts +26 -0
- package/src/common/workspaceEditUtils.ts +100 -0
- package/src/languageServerBase.ts +1556 -0
- package/src/languageService/analyzerServiceExecutor.ts +144 -0
- package/src/languageService/autoImporter.ts +926 -0
- package/src/languageService/callHierarchyProvider.ts +476 -0
- package/src/languageService/codeActionProvider.ts +85 -0
- package/src/languageService/completionProvider.ts +3103 -0
- package/src/languageService/definitionProvider.ts +235 -0
- package/src/languageService/documentHighlightProvider.ts +61 -0
- package/src/languageService/documentSymbolCollector.ts +466 -0
- package/src/languageService/documentSymbolProvider.ts +466 -0
- package/src/languageService/hoverProvider.ts +499 -0
- package/src/languageService/importAdder.ts +437 -0
- package/src/languageService/importSorter.ts +196 -0
- package/src/languageService/indentationUtils.ts +813 -0
- package/src/languageService/quickActions.ts +113 -0
- package/src/languageService/referencesProvider.ts +316 -0
- package/src/languageService/renameModuleProvider.ts +1400 -0
- package/src/languageService/signatureHelpProvider.ts +227 -0
- package/src/languageService/tooltipUtils.ts +147 -0
- package/src/localization/localize.ts +1272 -0
- package/src/localization/package.nls.de.json +3 -0
- package/src/localization/package.nls.en-us.json +636 -0
- package/src/localization/package.nls.es.json +3 -0
- package/src/localization/package.nls.fr.json +3 -0
- package/src/localization/package.nls.ja.json +3 -0
- package/src/localization/package.nls.ru.json +3 -0
- package/src/localization/package.nls.zh-cn.json +3 -0
- package/src/localization/package.nls.zh-tw.json +3 -0
- package/src/nodeMain.ts +21 -0
- package/src/nodeServer.ts +30 -0
- package/src/parser/characterStream.ts +145 -0
- package/src/parser/characters.ts +285 -0
- package/src/parser/parseNodes.ts +2338 -0
- package/src/parser/parser.ts +4859 -0
- package/src/parser/stringTokenUtils.ts +564 -0
- package/src/parser/tokenizer.ts +1379 -0
- package/src/parser/tokenizerTypes.ts +420 -0
- package/src/parser/unicode.ts +2917 -0
- package/src/pyright.ts +824 -0
- package/src/pyrightFileSystem.ts +237 -0
- package/src/readonlyAugmentedFileSystem.ts +204 -0
- package/src/server.ts +298 -0
- package/src/tests/chainedSourceFiles.test.ts +183 -0
- package/src/tests/checker.test.ts +445 -0
- package/src/tests/collectionUtils.test.ts +178 -0
- package/src/tests/common.test.ts +117 -0
- package/src/tests/config.test.ts +291 -0
- package/src/tests/debug.test.ts +120 -0
- package/src/tests/deferred.test.ts +54 -0
- package/src/tests/diagnosticOverrides.test.ts +104 -0
- package/src/tests/docStringConversion.test.ts +823 -0
- package/src/tests/docStringUtils.test.ts +57 -0
- package/src/tests/documentSymbolCollector.test.ts +735 -0
- package/src/tests/filesystem.test.ts +215 -0
- package/src/tests/fourSlashParser.test.ts +330 -0
- package/src/tests/fourSlashRunner.test.ts +36 -0
- package/src/tests/fourslash/completions.autoimport.Lib.Found.Type.fourslash.ts +33 -0
- package/src/tests/fourslash/completions.autoimport.Lib.Found.duplication.fourslash.ts +47 -0
- package/src/tests/fourslash/completions.autoimport.Lib.NotFound.fourslash.ts +14 -0
- package/src/tests/fourslash/completions.autoimport.disabled.fourslash.ts +25 -0
- package/src/tests/fourslash/completions.autoimport.duplicates.fourslash.ts +36 -0
- package/src/tests/fourslash/completions.autoimport.fourslash.ts +29 -0
- package/src/tests/fourslash/completions.autoimport.fromImport.fourslash.ts +130 -0
- package/src/tests/fourslash/completions.autoimport.plainText.fourslash.ts +29 -0
- package/src/tests/fourslash/completions.autoimport.shadow.fourslash.ts +48 -0
- package/src/tests/fourslash/completions.autoimport.submodule.fourslash.ts +31 -0
- package/src/tests/fourslash/completions.autoimport.topLevel.fourslash.ts +57 -0
- package/src/tests/fourslash/completions.builtinDocstrings.fourslash.ts +117 -0
- package/src/tests/fourslash/completions.builtinOverride.fourslash.ts +22 -0
- package/src/tests/fourslash/completions.call.stringLiteral.fourslash.ts +55 -0
- package/src/tests/fourslash/completions.call.typedDict.fourslash.ts +247 -0
- package/src/tests/fourslash/completions.call.typedDict.list.fourslash.ts +163 -0
- package/src/tests/fourslash/completions.call.typedDict.states.fourslash.ts +135 -0
- package/src/tests/fourslash/completions.classVariable.fourslash.ts +37 -0
- package/src/tests/fourslash/completions.comment.fourslash.ts +28 -0
- package/src/tests/fourslash/completions.declNames.class.fourslash.ts +35 -0
- package/src/tests/fourslash/completions.declNames.exception.fourslash.ts +18 -0
- package/src/tests/fourslash/completions.declNames.for.fourslash.ts +30 -0
- package/src/tests/fourslash/completions.declNames.importAlias.fourslash.ts +15 -0
- package/src/tests/fourslash/completions.declNames.lambda.fourslash.ts +45 -0
- package/src/tests/fourslash/completions.declNames.method.fourslash.ts +71 -0
- package/src/tests/fourslash/completions.declNames.overload.fourslash.ts +156 -0
- package/src/tests/fourslash/completions.declNames.topLevelOverload.fourslash.ts +141 -0
- package/src/tests/fourslash/completions.dictionary.keys.complex.fourslash.ts +76 -0
- package/src/tests/fourslash/completions.dictionary.keys.expression.fourslash.ts +63 -0
- package/src/tests/fourslash/completions.dictionary.keys.literalTypes.fourslash.ts +161 -0
- package/src/tests/fourslash/completions.dictionary.keys.simple.fourslash.ts +151 -0
- package/src/tests/fourslash/completions.dictionary.keys.stringLiterals.fourslash.ts +116 -0
- package/src/tests/fourslash/completions.dictionary.keys.symbols.fourslash.ts +53 -0
- package/src/tests/fourslash/completions.enums.members.fourslash.ts +44 -0
- package/src/tests/fourslash/completions.excluded.fourslash.ts +12 -0
- package/src/tests/fourslash/completions.fourslash.ts +51 -0
- package/src/tests/fourslash/completions.fstring.fourslash.ts +33 -0
- package/src/tests/fourslash/completions.fstring.stringLiteral.fourslash.ts +96 -0
- package/src/tests/fourslash/completions.fuzzyMatching.fourslash.ts +30 -0
- package/src/tests/fourslash/completions.importDunderNames.fourslash.ts +31 -0
- package/src/tests/fourslash/completions.importSubmodule.fourslash.ts +26 -0
- package/src/tests/fourslash/completions.importsDuplicates.fourslash.ts +23 -0
- package/src/tests/fourslash/completions.inList.fourslash.ts +33 -0
- package/src/tests/fourslash/completions.included.fourslash.ts +12 -0
- package/src/tests/fourslash/completions.indexer.keys.getitem.fourslash.ts +57 -0
- package/src/tests/fourslash/completions.inherited.function.docFromStub.fourslash.ts +28 -0
- package/src/tests/fourslash/completions.inherited.overload.docFromScrWithStub.fourslash.ts +52 -0
- package/src/tests/fourslash/completions.inherited.overload.docFromStub.fourslash.ts +53 -0
- package/src/tests/fourslash/completions.inherited.property.docFromSrc.fourslash.ts +104 -0
- package/src/tests/fourslash/completions.inherited.property.docFromStub.fourslash.ts +108 -0
- package/src/tests/fourslash/completions.keywords.pythonVersion.fourslash.ts +72 -0
- package/src/tests/fourslash/completions.libCodeAndStub.fourslash.ts +79 -0
- package/src/tests/fourslash/completions.libCodeNoStub.fourslash.ts +69 -0
- package/src/tests/fourslash/completions.libStub.fourslash.ts +69 -0
- package/src/tests/fourslash/completions.literals.fourslash.ts +33 -0
- package/src/tests/fourslash/completions.localCode.fourslash.ts +74 -0
- package/src/tests/fourslash/completions.moduleContext.UnknownMemberOnInstance.fourslash.ts +17 -0
- package/src/tests/fourslash/completions.moduleContext.UnknownStaticFunctionOnClass.fourslash.ts +57 -0
- package/src/tests/fourslash/completions.moduleContext.libCodeNoStub.fourslash.ts +30 -0
- package/src/tests/fourslash/completions.overloads.fourslash.ts +40 -0
- package/src/tests/fourslash/completions.override.default.fourslash.ts +47 -0
- package/src/tests/fourslash/completions.override.default.importStub.ts +50 -0
- package/src/tests/fourslash/completions.override.default.imported.fourslash.ts +61 -0
- package/src/tests/fourslash/completions.override.default.stub.fourslash.ts +47 -0
- package/src/tests/fourslash/completions.override.fourslash.ts +47 -0
- package/src/tests/fourslash/completions.override.property.fourslash.ts +31 -0
- package/src/tests/fourslash/completions.override.property.stub.fourslash.ts +31 -0
- package/src/tests/fourslash/completions.override.staticAndClassmethod.fourslash.ts +64 -0
- package/src/tests/fourslash/completions.override.stub.fourslash.ts +47 -0
- package/src/tests/fourslash/completions.override2.fourslash.ts +71 -0
- package/src/tests/fourslash/completions.parameters.fourslash.ts +23 -0
- package/src/tests/fourslash/completions.params.fourslash.ts +24 -0
- package/src/tests/fourslash/completions.parentFolder.fourslash.ts +17 -0
- package/src/tests/fourslash/completions.parentFolders.fourslash.ts +77 -0
- package/src/tests/fourslash/completions.plainText.fourslash.ts +34 -0
- package/src/tests/fourslash/completions.private.fourslash.ts +64 -0
- package/src/tests/fourslash/completions.property.fourslash.ts +28 -0
- package/src/tests/fourslash/completions.propertyDocStrings.fourslash.ts +64 -0
- package/src/tests/fourslash/completions.self.fourslash.ts +43 -0
- package/src/tests/fourslash/completions.stringLiteral.escape.fourslash.ts +71 -0
- package/src/tests/fourslash/completions.stringLiteral.fourslash.ts +79 -0
- package/src/tests/fourslash/completions.typeAlias.fourslash.ts +29 -0
- package/src/tests/fourslash/completions.typeshed.fourslash.ts +9 -0
- package/src/tests/fourslash/completions.vardecls.fourslash.ts +40 -0
- package/src/tests/fourslash/completions.variableDocStrings.fourslash.ts +69 -0
- package/src/tests/fourslash/completions.wildcardimports.fourslash.ts +116 -0
- package/src/tests/fourslash/completions.with.fourslash.ts +26 -0
- package/src/tests/fourslash/diagnostics.missingModuleSource.fourslash.ts +69 -0
- package/src/tests/fourslash/findDefinitions.builtinClass.fourslash.ts +29 -0
- package/src/tests/fourslash/findDefinitions.classes.fourslash.ts +101 -0
- package/src/tests/fourslash/findDefinitions.definitionFilter.preferSource.fourslash.ts +29 -0
- package/src/tests/fourslash/findDefinitions.definitionFilter.preferSource.onlyStubs.ts +24 -0
- package/src/tests/fourslash/findDefinitions.definitionFilter.preferStub.fourslash.ts +29 -0
- package/src/tests/fourslash/findDefinitions.definitionFilter.preferStub.onlySource.fourslash.ts +25 -0
- package/src/tests/fourslash/findDefinitions.fields.fourslash.ts +131 -0
- package/src/tests/fourslash/findDefinitions.functions.fourslash.ts +87 -0
- package/src/tests/fourslash/findDefinitions.methods.fourslash.ts +162 -0
- package/src/tests/fourslash/findDefinitions.modules.fourslash.ts +50 -0
- package/src/tests/fourslash/findDefinitions.namespaceImport.fourslash.ts +40 -0
- package/src/tests/fourslash/findDefinitions.overloads.fourslash.ts +223 -0
- package/src/tests/fourslash/findDefinitions.parameters.fourslash.ts +162 -0
- package/src/tests/fourslash/findDefinitions.sourceAndStub.function.fourslash.ts +26 -0
- package/src/tests/fourslash/findDefinitions.sourceAndStub.innerClass.fourslash.ts +32 -0
- package/src/tests/fourslash/findDefinitions.sourceAndStub.innerClassMethod.fourslash.ts +33 -0
- package/src/tests/fourslash/findDefinitions.sourceAndStub.outerClass.fourslash.ts +28 -0
- package/src/tests/fourslash/findDefinitions.sourceAndStub.outerClassMethod.fourslash.ts +29 -0
- package/src/tests/fourslash/findDefinitions.sourceAndStub.outerClassPropertyReadOnly.fourslash.ts +31 -0
- package/src/tests/fourslash/findDefinitions.sourceAndStub.outerClassPropertyReadWrite.fourslash.ts +36 -0
- package/src/tests/fourslash/findDefinitions.sourceOnly.class.fourslash.ts +29 -0
- package/src/tests/fourslash/findDefinitions.sourceOnly.function1.fourslash.ts +28 -0
- package/src/tests/fourslash/findDefinitions.sourceOnly.function2.fourslash.ts +28 -0
- package/src/tests/fourslash/findDefinitions.sourceOnly.relativeImport1.fourslash.ts +22 -0
- package/src/tests/fourslash/findDefinitions.sourceOnly.relativeImport2.fourslash.ts +22 -0
- package/src/tests/fourslash/findDefinitions.stubOnly.fourslash.ts +61 -0
- package/src/tests/fourslash/findDefinitions.stubPackages.fourslash.ts +71 -0
- package/src/tests/fourslash/findDefinitions.typedDict.keys.fourslash.ts +99 -0
- package/src/tests/fourslash/findDefinitions.variables.fourslash.ts +88 -0
- package/src/tests/fourslash/findDefinitions.wildcardimports.fourslash.ts +117 -0
- package/src/tests/fourslash/findTypeDefinitions.builtinClass.fourslash.ts +26 -0
- package/src/tests/fourslash/findTypeDefinitions.classes.fourslash.ts +72 -0
- package/src/tests/fourslash/findTypeDefinitions.unions.fourslash.ts +26 -0
- package/src/tests/fourslash/findallreferences.classPropertyReadWrite.ts +39 -0
- package/src/tests/fourslash/findallreferences.fourslash.ts +34 -0
- package/src/tests/fourslash/findallreferences.importalias.fourslash.ts +34 -0
- package/src/tests/fourslash/findallreferences.invokedFromLibrary.fourslash.ts +52 -0
- package/src/tests/fourslash/findallreferences.module.nested.fourslash.ts +67 -0
- package/src/tests/fourslash/findallreferences.modules.duplicated.fourslash.ts +59 -0
- package/src/tests/fourslash/findallreferences.modules.fourslash.ts +46 -0
- package/src/tests/fourslash/findallreferences.modules.shadow.fourslash.ts +95 -0
- package/src/tests/fourslash/findallreferences.openFiles.fourslash.ts +37 -0
- package/src/tests/fourslash/findallreferences.parameter.fourslash.ts +24 -0
- package/src/tests/fourslash/findallreferences.sourceAndStub.class.fourslash.ts +33 -0
- package/src/tests/fourslash/findallreferences.sourceAndStub.classMethod.fourslash.ts +37 -0
- package/src/tests/fourslash/findallreferences.sourceAndStub.classPropertyReadOnly.fourslash.ts +40 -0
- package/src/tests/fourslash/findallreferences.sourceAndStub.classPropertyReadWrite.fourslash.skip.ts +48 -0
- package/src/tests/fourslash/findallreferences.sourceAndStub.function.fourslash.ts +35 -0
- package/src/tests/fourslash/findallreferences.variable.fourslash.ts +24 -0
- package/src/tests/fourslash/fourslash.ts +411 -0
- package/src/tests/fourslash/highlightreferences.attributes.fourslash.ts +31 -0
- package/src/tests/fourslash/hover.builtinDocstrings.fourslash.ts +64 -0
- package/src/tests/fourslash/hover.classNoInit.fourslash.ts +14 -0
- package/src/tests/fourslash/hover.docFromScr.stringFormat.fourslash.ts +52 -0
- package/src/tests/fourslash/hover.docFromSrc.fourslash.ts +83 -0
- package/src/tests/fourslash/hover.docFromSrc.pkg-vs-module1.fourslash.ts +26 -0
- package/src/tests/fourslash/hover.docFromSrc.pkg-vs-module2.fourslash.ts +26 -0
- package/src/tests/fourslash/hover.docFromSrc.relativeImport1.fourslash.ts +23 -0
- package/src/tests/fourslash/hover.docFromSrc.relativeImport2.fourslash.ts +22 -0
- package/src/tests/fourslash/hover.docFromSrc.relativeImport3.fourslash.ts +46 -0
- package/src/tests/fourslash/hover.docFromSrc.stubs-package.fourslash.ts +29 -0
- package/src/tests/fourslash/hover.docFromSrc.typeshed.fourslash.ts +20 -0
- package/src/tests/fourslash/hover.docstring.links.fourslash.ts +12 -0
- package/src/tests/fourslash/hover.docstring.overloads.fourslash.ts +41 -0
- package/src/tests/fourslash/hover.docstring.split.fourslash.ts +24 -0
- package/src/tests/fourslash/hover.fourslash.ts +20 -0
- package/src/tests/fourslash/hover.import.django.view.fourslash.ts +27 -0
- package/src/tests/fourslash/hover.import.fourslash.ts +11 -0
- package/src/tests/fourslash/hover.inherited.docFromSrc.fourslash.ts +63 -0
- package/src/tests/fourslash/hover.inherited.docFromSrcWithStub.fourslash.ts +54 -0
- package/src/tests/fourslash/hover.inherited.docFromStub.fourslash.ts +42 -0
- package/src/tests/fourslash/hover.inherited.overload.docFromSrcWithStub.fourslash.ts +46 -0
- package/src/tests/fourslash/hover.inherited.overload.docFromStub.fourslash.ts +47 -0
- package/src/tests/fourslash/hover.inherited.property.docFromSrcWithStub.fourslash.ts +87 -0
- package/src/tests/fourslash/hover.inherited.property.docFromStub.fourslash.ts +91 -0
- package/src/tests/fourslash/hover.init.fourslash.ts +39 -0
- package/src/tests/fourslash/hover.libCodeAndStub.fourslash.ts +52 -0
- package/src/tests/fourslash/hover.libCodeNoStub.fourslash.ts +41 -0
- package/src/tests/fourslash/hover.libStub.fourslash.ts +41 -0
- package/src/tests/fourslash/hover.optionalAliasParameter.fourslash.ts +14 -0
- package/src/tests/fourslash/hover.plainText.fourslash.ts +21 -0
- package/src/tests/fourslash/hover.typedDict.key.fourslash.ts +51 -0
- package/src/tests/fourslash/hover.variable.docString.fourslash.ts +41 -0
- package/src/tests/fourslash/hover.wildcardimports.fourslash.ts +80 -0
- package/src/tests/fourslash/import.publicSymbols.fourslash.ts +65 -0
- package/src/tests/fourslash/import.pytyped.dunderAll.fourslash.ts +77 -0
- package/src/tests/fourslash/import.pytyped.privateSymbols.fourslash.ts +65 -0
- package/src/tests/fourslash/import.pytyped.typeCheckingBasic.fourslash.ts +38 -0
- package/src/tests/fourslash/import.pytyped.typeCheckingOff.fourslash.ts +38 -0
- package/src/tests/fourslash/import.wildcard.fourslash.ts +27 -0
- package/src/tests/fourslash/importnotresolved.fourslash.ts +13 -0
- package/src/tests/fourslash/missingModuleSource.disablingInStrictMode.fourslash.ts +20 -0
- package/src/tests/fourslash/missingModuleSource.fourslash.ts +14 -0
- package/src/tests/fourslash/missingTypeStub.codeAction.fourslash.ts +33 -0
- package/src/tests/fourslash/missingTypeStub.command.multipart.fourslash.ts +48 -0
- package/src/tests/fourslash/missingTypeStub.command.singlefile.fourslash.ts +38 -0
- package/src/tests/fourslash/missingTypeStub.command.singlepart.fourslash.ts +38 -0
- package/src/tests/fourslash/missingTypeStub.fourslash.ts +20 -0
- package/src/tests/fourslash/missingTypeStub.invokeCodeAction.fourslash.ts +36 -0
- package/src/tests/fourslash/noerrors.fourslash.ts +9 -0
- package/src/tests/fourslash/orderImports1.command.fourslash.ts +20 -0
- package/src/tests/fourslash/orderImports2.command.fourslash.ts +24 -0
- package/src/tests/fourslash/rename.externallyHidden.fourslash.ts +24 -0
- package/src/tests/fourslash/rename.externallyHidden.params.fourslash.ts +24 -0
- package/src/tests/fourslash/rename.fourslash.ts +29 -0
- package/src/tests/fourslash/rename.library.fourslash.ts +29 -0
- package/src/tests/fourslash/rename.library.sourceAndStub.fourslash.ts +33 -0
- package/src/tests/fourslash/rename.multipleDecl.fourslash.ts +21 -0
- package/src/tests/fourslash/rename.sourceAndStub.fourslash.ts +37 -0
- package/src/tests/fourslash/rename.string.excluded.fourslash.ts +43 -0
- package/src/tests/fourslash/rename.string.fourslash.ts +26 -0
- package/src/tests/fourslash/signature.builtinDocstrings.fourslash.ts +63 -0
- package/src/tests/fourslash/signature.complicated.fourslash.ts +100 -0
- package/src/tests/fourslash/signature.cornercases.fourslash.ts +23 -0
- package/src/tests/fourslash/signature.docstrings.fourslash.ts +43 -0
- package/src/tests/fourslash/signature.docstrings.overloaded.fourslash.ts +50 -0
- package/src/tests/fourslash/signature.docstrings.wildcardimports.fourslash.ts +122 -0
- package/src/tests/fourslash/signature.overload.fourslash.ts +64 -0
- package/src/tests/fourslash/signature.simple.fourslash.ts +104 -0
- package/src/tests/harness/fourslash/fourSlashParser.ts +441 -0
- package/src/tests/harness/fourslash/fourSlashTypes.ts +134 -0
- package/src/tests/harness/fourslash/runner.ts +99 -0
- package/src/tests/harness/fourslash/testLanguageService.ts +142 -0
- package/src/tests/harness/fourslash/testState.Consts.ts +29 -0
- package/src/tests/harness/fourslash/testState.ts +1993 -0
- package/src/tests/harness/testAccessHost.ts +23 -0
- package/src/tests/harness/testHost.ts +177 -0
- package/src/tests/harness/utils.ts +355 -0
- package/src/tests/harness/vfs/factory.ts +199 -0
- package/src/tests/harness/vfs/filesystem.ts +1893 -0
- package/src/tests/harness/vfs/pathValidation.ts +154 -0
- package/src/tests/importAdder.test.ts +1361 -0
- package/src/tests/importResolver.test.ts +534 -0
- package/src/tests/importStatementUtils.test.ts +526 -0
- package/src/tests/indentationUtils.ptvs.test.ts +388 -0
- package/src/tests/indentationUtils.reindent.test.ts +403 -0
- package/src/tests/indentationUtils.test.ts +455 -0
- package/src/tests/ipythonMode.test.ts +365 -0
- package/src/tests/localizer.test.ts +47 -0
- package/src/tests/parseTreeUtils.test.ts +281 -0
- package/src/tests/parser.test.ts +99 -0
- package/src/tests/pathUtils.test.ts +321 -0
- package/src/tests/pyrightFileSystem.test.ts +183 -0
- package/src/tests/renameModule.folder.test.ts +261 -0
- package/src/tests/renameModule.fromImports.test.ts +952 -0
- package/src/tests/renameModule.imports.test.ts +450 -0
- package/src/tests/renameModule.misc.test.ts +765 -0
- package/src/tests/renameModule.relativePath.test.ts +277 -0
- package/src/tests/renameModuleTestUtils.ts +210 -0
- package/src/tests/samples/abstractClass1.py +51 -0
- package/src/tests/samples/abstractClass2.py +25 -0
- package/src/tests/samples/abstractClass3.py +30 -0
- package/src/tests/samples/abstractClass4.py +30 -0
- package/src/tests/samples/abstractClass5.py +42 -0
- package/src/tests/samples/abstractClass6.py +25 -0
- package/src/tests/samples/abstractClass7.py +22 -0
- package/src/tests/samples/abstractClass8.py +27 -0
- package/src/tests/samples/annotated1.py +72 -0
- package/src/tests/samples/annotatedVar1.py +22 -0
- package/src/tests/samples/annotatedVar2.py +28 -0
- package/src/tests/samples/annotatedVar3.py +54 -0
- package/src/tests/samples/annotatedVar4.py +24 -0
- package/src/tests/samples/annotatedVar5.py +37 -0
- package/src/tests/samples/annotatedVar6.py +22 -0
- package/src/tests/samples/annotatedVar7.py +13 -0
- package/src/tests/samples/annotatedVar8.py +29 -0
- package/src/tests/samples/annotations1.py +98 -0
- package/src/tests/samples/annotations2.py +33 -0
- package/src/tests/samples/annotations3.py +43 -0
- package/src/tests/samples/annotations4.py +54 -0
- package/src/tests/samples/annotations5.py +9 -0
- package/src/tests/samples/annotations6.py +29 -0
- package/src/tests/samples/assert1.py +22 -0
- package/src/tests/samples/assertType1.py +46 -0
- package/src/tests/samples/assignment1.py +58 -0
- package/src/tests/samples/assignment10.py +14 -0
- package/src/tests/samples/assignment2.py +40 -0
- package/src/tests/samples/assignment3.py +46 -0
- package/src/tests/samples/assignment4.py +20 -0
- package/src/tests/samples/assignment5.py +16 -0
- package/src/tests/samples/assignment6.py +25 -0
- package/src/tests/samples/assignment7.py +13 -0
- package/src/tests/samples/assignment8.py +40 -0
- package/src/tests/samples/assignment9.py +25 -0
- package/src/tests/samples/assignmentExpr1.py +23 -0
- package/src/tests/samples/assignmentExpr2.py +49 -0
- package/src/tests/samples/assignmentExpr3.py +27 -0
- package/src/tests/samples/assignmentExpr4.py +49 -0
- package/src/tests/samples/assignmentExpr5.py +15 -0
- package/src/tests/samples/assignmentExpr6.py +10 -0
- package/src/tests/samples/assignmentExpr7.py +13 -0
- package/src/tests/samples/assignmentExpr8.py +11 -0
- package/src/tests/samples/assignmentExpr9.py +28 -0
- package/src/tests/samples/async1.py +49 -0
- package/src/tests/samples/augmentedAssignment1.py +62 -0
- package/src/tests/samples/augmentedAssignment2.py +23 -0
- package/src/tests/samples/augmentedAssignment3.py +8 -0
- package/src/tests/samples/await1.py +23 -0
- package/src/tests/samples/await2.py +25 -0
- package/src/tests/samples/badToken1.py +6 -0
- package/src/tests/samples/builtins1.py +2 -0
- package/src/tests/samples/call1.py +93 -0
- package/src/tests/samples/call2.py +118 -0
- package/src/tests/samples/call3.py +168 -0
- package/src/tests/samples/call4.py +13 -0
- package/src/tests/samples/call5.py +95 -0
- package/src/tests/samples/call6.py +35 -0
- package/src/tests/samples/call7.py +57 -0
- package/src/tests/samples/callSite1.py +6 -0
- package/src/tests/samples/callSite2.py +12 -0
- package/src/tests/samples/callable1.py +53 -0
- package/src/tests/samples/callable2.py +58 -0
- package/src/tests/samples/callable3.py +28 -0
- package/src/tests/samples/callable4.py +32 -0
- package/src/tests/samples/callable5.py +40 -0
- package/src/tests/samples/callable6.py +83 -0
- package/src/tests/samples/callbackProtocol1.py +119 -0
- package/src/tests/samples/callbackProtocol2.py +29 -0
- package/src/tests/samples/callbackProtocol3.py +23 -0
- package/src/tests/samples/callbackProtocol4.py +73 -0
- package/src/tests/samples/callbackProtocol5.py +66 -0
- package/src/tests/samples/callbackProtocol6.py +66 -0
- package/src/tests/samples/callbackProtocol7.py +16 -0
- package/src/tests/samples/callbackProtocol8.py +16 -0
- package/src/tests/samples/capturedVariable1.py +106 -0
- package/src/tests/samples/circular1.py +16 -0
- package/src/tests/samples/circular2.py +38 -0
- package/src/tests/samples/circularBaseClass.py +17 -0
- package/src/tests/samples/classGetItem1.py +30 -0
- package/src/tests/samples/classVar1.py +41 -0
- package/src/tests/samples/classVar2.py +29 -0
- package/src/tests/samples/classVar3.py +46 -0
- package/src/tests/samples/classVar4.py +36 -0
- package/src/tests/samples/classes1.py +50 -0
- package/src/tests/samples/classes3.py +48 -0
- package/src/tests/samples/classes4.py +15 -0
- package/src/tests/samples/classes5.py +260 -0
- package/src/tests/samples/classes6.py +16 -0
- package/src/tests/samples/classes7.py +18 -0
- package/src/tests/samples/classes8.py +47 -0
- package/src/tests/samples/codeFlow1.py +65 -0
- package/src/tests/samples/codeFlow2.py +26 -0
- package/src/tests/samples/codeFlow3.py +8 -0
- package/src/tests/samples/codeFlow4.py +133 -0
- package/src/tests/samples/codeFlow5.py +10 -0
- package/src/tests/samples/codeFlow6.py +35 -0
- package/src/tests/samples/codeFlow7.py +35 -0
- package/src/tests/samples/comparison1.py +77 -0
- package/src/tests/samples/comparison2.py +37 -0
- package/src/tests/samples/complex1.py +17 -0
- package/src/tests/samples/constant1.py +40 -0
- package/src/tests/samples/constants1.py +64 -0
- package/src/tests/samples/constructor1.py +30 -0
- package/src/tests/samples/constructor10.py +19 -0
- package/src/tests/samples/constructor11.py +32 -0
- package/src/tests/samples/constructor12.py +20 -0
- package/src/tests/samples/constructor13.py +15 -0
- package/src/tests/samples/constructor2.py +180 -0
- package/src/tests/samples/constructor3.py +18 -0
- package/src/tests/samples/constructor4.py +25 -0
- package/src/tests/samples/constructor5.py +25 -0
- package/src/tests/samples/constructor6.py +70 -0
- package/src/tests/samples/constructor7.py +11 -0
- package/src/tests/samples/constructor8.py +99 -0
- package/src/tests/samples/constructor9.py +19 -0
- package/src/tests/samples/coroutines1.py +60 -0
- package/src/tests/samples/coroutines2.py +20 -0
- package/src/tests/samples/coroutines3.py +37 -0
- package/src/tests/samples/dataclass1.py +44 -0
- package/src/tests/samples/dataclass10.py +45 -0
- package/src/tests/samples/dataclass11.py +53 -0
- package/src/tests/samples/dataclass12.py +32 -0
- package/src/tests/samples/dataclass13.py +42 -0
- package/src/tests/samples/dataclass14.py +38 -0
- package/src/tests/samples/dataclass15.py +58 -0
- package/src/tests/samples/dataclass16.py +21 -0
- package/src/tests/samples/dataclass17.py +46 -0
- package/src/tests/samples/dataclass18.py +57 -0
- package/src/tests/samples/dataclass19.py +44 -0
- package/src/tests/samples/dataclass2.py +30 -0
- package/src/tests/samples/dataclass20.py +71 -0
- package/src/tests/samples/dataclass21.py +13 -0
- package/src/tests/samples/dataclass3.py +18 -0
- package/src/tests/samples/dataclass4.py +64 -0
- package/src/tests/samples/dataclass5.py +81 -0
- package/src/tests/samples/dataclass6.py +29 -0
- package/src/tests/samples/dataclass7.py +93 -0
- package/src/tests/samples/dataclass8.py +22 -0
- package/src/tests/samples/dataclass9.py +24 -0
- package/src/tests/samples/dataclassPostInit1.py +61 -0
- package/src/tests/samples/dataclassTransform1.py +71 -0
- package/src/tests/samples/dataclassTransform2.py +78 -0
- package/src/tests/samples/dataclassTransform3.py +83 -0
- package/src/tests/samples/dataclassTransform4.py +87 -0
- package/src/tests/samples/decorator1.py +20 -0
- package/src/tests/samples/decorator2.py +31 -0
- package/src/tests/samples/decorator3.py +27 -0
- package/src/tests/samples/decorator4.py +37 -0
- package/src/tests/samples/decorator5.py +29 -0
- package/src/tests/samples/decorator6.py +34 -0
- package/src/tests/samples/defaultInitializer1.py +26 -0
- package/src/tests/samples/deprecated1.py +37 -0
- package/src/tests/samples/descriptor1.py +134 -0
- package/src/tests/samples/descriptor2.py +29 -0
- package/src/tests/samples/dictionary1.py +42 -0
- package/src/tests/samples/dictionary2.py +14 -0
- package/src/tests/samples/dictionary3.py +30 -0
- package/src/tests/samples/dictionary4.py +106 -0
- package/src/tests/samples/dunderAll1.py +32 -0
- package/src/tests/samples/dunderAll2.py +16 -0
- package/src/tests/samples/dunderAll3.pyi +16 -0
- package/src/tests/samples/duplicateDeclaration1.py +115 -0
- package/src/tests/samples/duplicateDeclaration2.py +45 -0
- package/src/tests/samples/duplicateImports1.py +13 -0
- package/src/tests/samples/ellipsis1.pyi +48 -0
- package/src/tests/samples/emptyContainers1.py +89 -0
- package/src/tests/samples/enums1.py +52 -0
- package/src/tests/samples/enums2.py +15 -0
- package/src/tests/samples/enums3.py +24 -0
- package/src/tests/samples/enums4.py +23 -0
- package/src/tests/samples/enums5.py +16 -0
- package/src/tests/samples/enums6.py +33 -0
- package/src/tests/samples/enums7.py +54 -0
- package/src/tests/samples/enums8.py +14 -0
- package/src/tests/samples/expressions1.py +54 -0
- package/src/tests/samples/expressions2.py +29 -0
- package/src/tests/samples/expressions3.py +26 -0
- package/src/tests/samples/expressions4.py +23 -0
- package/src/tests/samples/expressions5.py +70 -0
- package/src/tests/samples/expressions6.py +14 -0
- package/src/tests/samples/expressions7.py +40 -0
- package/src/tests/samples/expressions8.py +26 -0
- package/src/tests/samples/expressions9.py +14 -0
- package/src/tests/samples/final1.py +14 -0
- package/src/tests/samples/final2.py +86 -0
- package/src/tests/samples/final3.py +179 -0
- package/src/tests/samples/final4.pyi +21 -0
- package/src/tests/samples/final5.py +18 -0
- package/src/tests/samples/forLoop1.py +88 -0
- package/src/tests/samples/forLoop2.py +48 -0
- package/src/tests/samples/fstring1.py +66 -0
- package/src/tests/samples/fstring2.py +12 -0
- package/src/tests/samples/fstring3.py +35 -0
- package/src/tests/samples/fstring4.py +17 -0
- package/src/tests/samples/fstring5.py +17 -0
- package/src/tests/samples/fstring6.py +14 -0
- package/src/tests/samples/function1.py +12 -0
- package/src/tests/samples/function10.py +20 -0
- package/src/tests/samples/function11.py +36 -0
- package/src/tests/samples/function2.py +7 -0
- package/src/tests/samples/function3.py +82 -0
- package/src/tests/samples/function4.py +13 -0
- package/src/tests/samples/function6.py +24 -0
- package/src/tests/samples/function7.py +13 -0
- package/src/tests/samples/function8.py +38 -0
- package/src/tests/samples/function9.py +75 -0
- package/src/tests/samples/functionAnnotation1.py +61 -0
- package/src/tests/samples/functionAnnotation2.py +26 -0
- package/src/tests/samples/functionAnnotation3.py +37 -0
- package/src/tests/samples/functionAnnotation4.py +22 -0
- package/src/tests/samples/functionMember1.py +18 -0
- package/src/tests/samples/functionMember2.py +45 -0
- package/src/tests/samples/generators1.py +122 -0
- package/src/tests/samples/generators10.py +18 -0
- package/src/tests/samples/generators11.py +27 -0
- package/src/tests/samples/generators12.py +25 -0
- package/src/tests/samples/generators13.py +65 -0
- package/src/tests/samples/generators14.py +19 -0
- package/src/tests/samples/generators15.py +26 -0
- package/src/tests/samples/generators2.py +31 -0
- package/src/tests/samples/generators3.py +42 -0
- package/src/tests/samples/generators4.py +33 -0
- package/src/tests/samples/generators5.py +24 -0
- package/src/tests/samples/generators6.py +14 -0
- package/src/tests/samples/generators7.py +18 -0
- package/src/tests/samples/generators8.py +12 -0
- package/src/tests/samples/generators9.py +19 -0
- package/src/tests/samples/generic1.py +41 -0
- package/src/tests/samples/genericTypes1.py +12 -0
- package/src/tests/samples/genericTypes10.py +38 -0
- package/src/tests/samples/genericTypes11.py +26 -0
- package/src/tests/samples/genericTypes12.py +14 -0
- package/src/tests/samples/genericTypes13.py +27 -0
- package/src/tests/samples/genericTypes14.py +22 -0
- package/src/tests/samples/genericTypes15.py +13 -0
- package/src/tests/samples/genericTypes16.py +15 -0
- package/src/tests/samples/genericTypes17.py +24 -0
- package/src/tests/samples/genericTypes18.py +135 -0
- package/src/tests/samples/genericTypes19.py +32 -0
- package/src/tests/samples/genericTypes2.py +40 -0
- package/src/tests/samples/genericTypes20.py +44 -0
- package/src/tests/samples/genericTypes21.py +29 -0
- package/src/tests/samples/genericTypes22.py +23 -0
- package/src/tests/samples/genericTypes23.py +27 -0
- package/src/tests/samples/genericTypes24.py +32 -0
- package/src/tests/samples/genericTypes25.py +37 -0
- package/src/tests/samples/genericTypes26.py +31 -0
- package/src/tests/samples/genericTypes27.py +14 -0
- package/src/tests/samples/genericTypes28.py +51 -0
- package/src/tests/samples/genericTypes29.py +24 -0
- package/src/tests/samples/genericTypes3.py +13 -0
- package/src/tests/samples/genericTypes30.py +32 -0
- package/src/tests/samples/genericTypes31.py +30 -0
- package/src/tests/samples/genericTypes32.py +25 -0
- package/src/tests/samples/genericTypes33.py +46 -0
- package/src/tests/samples/genericTypes34.py +54 -0
- package/src/tests/samples/genericTypes35.py +45 -0
- package/src/tests/samples/genericTypes36.py +35 -0
- package/src/tests/samples/genericTypes37.py +26 -0
- package/src/tests/samples/genericTypes38.py +15 -0
- package/src/tests/samples/genericTypes39.py +82 -0
- package/src/tests/samples/genericTypes4.py +37 -0
- package/src/tests/samples/genericTypes40.py +38 -0
- package/src/tests/samples/genericTypes41.py +16 -0
- package/src/tests/samples/genericTypes42.py +32 -0
- package/src/tests/samples/genericTypes43.py +24 -0
- package/src/tests/samples/genericTypes44.py +33 -0
- package/src/tests/samples/genericTypes45.py +43 -0
- package/src/tests/samples/genericTypes46.py +66 -0
- package/src/tests/samples/genericTypes47.py +39 -0
- package/src/tests/samples/genericTypes48.py +18 -0
- package/src/tests/samples/genericTypes49.py +41 -0
- package/src/tests/samples/genericTypes5.py +42 -0
- package/src/tests/samples/genericTypes50.py +62 -0
- package/src/tests/samples/genericTypes51.py +55 -0
- package/src/tests/samples/genericTypes52.py +34 -0
- package/src/tests/samples/genericTypes53.py +42 -0
- package/src/tests/samples/genericTypes54.py +31 -0
- package/src/tests/samples/genericTypes55.py +61 -0
- package/src/tests/samples/genericTypes56.py +19 -0
- package/src/tests/samples/genericTypes57.py +30 -0
- package/src/tests/samples/genericTypes58.py +52 -0
- package/src/tests/samples/genericTypes59.py +71 -0
- package/src/tests/samples/genericTypes6.py +49 -0
- package/src/tests/samples/genericTypes60.py +27 -0
- package/src/tests/samples/genericTypes61.py +34 -0
- package/src/tests/samples/genericTypes62.py +26 -0
- package/src/tests/samples/genericTypes63.py +32 -0
- package/src/tests/samples/genericTypes64.py +16 -0
- package/src/tests/samples/genericTypes65.py +15 -0
- package/src/tests/samples/genericTypes66.py +30 -0
- package/src/tests/samples/genericTypes67.py +57 -0
- package/src/tests/samples/genericTypes68.py +14 -0
- package/src/tests/samples/genericTypes69.py +45 -0
- package/src/tests/samples/genericTypes7.py +24 -0
- package/src/tests/samples/genericTypes70.py +31 -0
- package/src/tests/samples/genericTypes71.py +72 -0
- package/src/tests/samples/genericTypes72.py +24 -0
- package/src/tests/samples/genericTypes73.py +14 -0
- package/src/tests/samples/genericTypes74.py +23 -0
- package/src/tests/samples/genericTypes75.py +45 -0
- package/src/tests/samples/genericTypes76.py +107 -0
- package/src/tests/samples/genericTypes77.py +26 -0
- package/src/tests/samples/genericTypes78.py +23 -0
- package/src/tests/samples/genericTypes79.py +37 -0
- package/src/tests/samples/genericTypes8.py +26 -0
- package/src/tests/samples/genericTypes80.py +10 -0
- package/src/tests/samples/genericTypes81.py +32 -0
- package/src/tests/samples/genericTypes82.py +19 -0
- package/src/tests/samples/genericTypes83.py +28 -0
- package/src/tests/samples/genericTypes84.py +11 -0
- package/src/tests/samples/genericTypes85.py +20 -0
- package/src/tests/samples/genericTypes86.py +15 -0
- package/src/tests/samples/genericTypes87.py +21 -0
- package/src/tests/samples/genericTypes88.py +25 -0
- package/src/tests/samples/genericTypes89.py +17 -0
- package/src/tests/samples/genericTypes9.py +109 -0
- package/src/tests/samples/genericTypes90.py +12 -0
- package/src/tests/samples/genericTypes91.py +20 -0
- package/src/tests/samples/import1.py +7 -0
- package/src/tests/samples/import10.py +11 -0
- package/src/tests/samples/import11.py +11 -0
- package/src/tests/samples/import12.py +5 -0
- package/src/tests/samples/import13.py +6 -0
- package/src/tests/samples/import14.py +10 -0
- package/src/tests/samples/import2.py +27 -0
- package/src/tests/samples/import3.py +8 -0
- package/src/tests/samples/import4.py +15 -0
- package/src/tests/samples/import5.py +6 -0
- package/src/tests/samples/import6.py +17 -0
- package/src/tests/samples/import7.py +14 -0
- package/src/tests/samples/import8.py +7 -0
- package/src/tests/samples/import9.py +7 -0
- package/src/tests/samples/inconsistentConstructor1.py +23 -0
- package/src/tests/samples/inconsistentSpaceTab1.py +9 -0
- package/src/tests/samples/inconsistentSpaceTab2.py +10 -0
- package/src/tests/samples/index1.py +97 -0
- package/src/tests/samples/inferredTypes1.py +25 -0
- package/src/tests/samples/initVar1.py +23 -0
- package/src/tests/samples/initsubclass1.py +46 -0
- package/src/tests/samples/initsubclass2.py +16 -0
- package/src/tests/samples/isinstance1.py +57 -0
- package/src/tests/samples/isinstance10.py +15 -0
- package/src/tests/samples/isinstance2.py +28 -0
- package/src/tests/samples/isinstance3.py +59 -0
- package/src/tests/samples/isinstance4.py +57 -0
- package/src/tests/samples/isinstance5.py +8 -0
- package/src/tests/samples/isinstance6.py +19 -0
- package/src/tests/samples/isinstance7.py +42 -0
- package/src/tests/samples/isinstance9.py +26 -0
- package/src/tests/samples/kwargsUnpack1.py +116 -0
- package/src/tests/samples/lambda1.py +77 -0
- package/src/tests/samples/lambda2.py +26 -0
- package/src/tests/samples/lambda3.py +34 -0
- package/src/tests/samples/lambda4.py +70 -0
- package/src/tests/samples/lambda5.py +23 -0
- package/src/tests/samples/lambda6.py +15 -0
- package/src/tests/samples/lines1.py +14 -0
- package/src/tests/samples/list1.py +90 -0
- package/src/tests/samples/listComprehension1.py +45 -0
- package/src/tests/samples/listComprehension2.py +17 -0
- package/src/tests/samples/listComprehension3.py +12 -0
- package/src/tests/samples/listComprehension4.py +15 -0
- package/src/tests/samples/listComprehension5.py +20 -0
- package/src/tests/samples/listComprehension6.py +14 -0
- package/src/tests/samples/listComprehension7.py +15 -0
- package/src/tests/samples/listComprehension8.py +15 -0
- package/src/tests/samples/literalString1.py +43 -0
- package/src/tests/samples/literals1.py +48 -0
- package/src/tests/samples/literals2.py +30 -0
- package/src/tests/samples/literals3.py +40 -0
- package/src/tests/samples/literals4.py +10 -0
- package/src/tests/samples/literals5.py +28 -0
- package/src/tests/samples/literals6.py +90 -0
- package/src/tests/samples/literals7.py +38 -0
- package/src/tests/samples/loops1.py +45 -0
- package/src/tests/samples/loops10.py +11 -0
- package/src/tests/samples/loops11.py +22 -0
- package/src/tests/samples/loops12.py +18 -0
- package/src/tests/samples/loops13.py +13 -0
- package/src/tests/samples/loops14.py +22 -0
- package/src/tests/samples/loops15.py +22 -0
- package/src/tests/samples/loops16.py +322 -0
- package/src/tests/samples/loops17.py +9 -0
- package/src/tests/samples/loops18.py +23 -0
- package/src/tests/samples/loops19.py +14 -0
- package/src/tests/samples/loops2.py +25 -0
- package/src/tests/samples/loops20.py +41 -0
- package/src/tests/samples/loops21.py +18 -0
- package/src/tests/samples/loops22.py +21 -0
- package/src/tests/samples/loops23.py +16 -0
- package/src/tests/samples/loops24.py +12 -0
- package/src/tests/samples/loops25.py +45 -0
- package/src/tests/samples/loops26.py +12 -0
- package/src/tests/samples/loops3.py +11 -0
- package/src/tests/samples/loops4.py +17 -0
- package/src/tests/samples/loops5.py +14 -0
- package/src/tests/samples/loops6.py +25 -0
- package/src/tests/samples/loops7.py +14 -0
- package/src/tests/samples/loops8.py +17 -0
- package/src/tests/samples/loops9.py +25 -0
- package/src/tests/samples/match1.py +190 -0
- package/src/tests/samples/match10.py +67 -0
- package/src/tests/samples/match2.py +340 -0
- package/src/tests/samples/match3.py +364 -0
- package/src/tests/samples/match4.py +100 -0
- package/src/tests/samples/match5.py +70 -0
- package/src/tests/samples/match6.py +64 -0
- package/src/tests/samples/match7.py +65 -0
- package/src/tests/samples/match8.py +19 -0
- package/src/tests/samples/match9.py +53 -0
- package/src/tests/samples/maxParseDepth1.py +499 -0
- package/src/tests/samples/maxParseDepth2.py +16 -0
- package/src/tests/samples/memberAccess1.py +70 -0
- package/src/tests/samples/memberAccess10.py +65 -0
- package/src/tests/samples/memberAccess11.py +37 -0
- package/src/tests/samples/memberAccess12.py +36 -0
- package/src/tests/samples/memberAccess13.py +17 -0
- package/src/tests/samples/memberAccess14.py +63 -0
- package/src/tests/samples/memberAccess15.py +20 -0
- package/src/tests/samples/memberAccess16.py +12 -0
- package/src/tests/samples/memberAccess17.py +31 -0
- package/src/tests/samples/memberAccess18.py +31 -0
- package/src/tests/samples/memberAccess2.py +45 -0
- package/src/tests/samples/memberAccess3.py +64 -0
- package/src/tests/samples/memberAccess4.py +91 -0
- package/src/tests/samples/memberAccess5.py +26 -0
- package/src/tests/samples/memberAccess6.py +52 -0
- package/src/tests/samples/memberAccess7.py +36 -0
- package/src/tests/samples/memberAccess8.py +75 -0
- package/src/tests/samples/memberAccess9.py +11 -0
- package/src/tests/samples/metaclass1.py +7 -0
- package/src/tests/samples/metaclass2.py +35 -0
- package/src/tests/samples/metaclass3.py +43 -0
- package/src/tests/samples/metaclass4.py +26 -0
- package/src/tests/samples/metaclass5.py +33 -0
- package/src/tests/samples/metaclass6.py +15 -0
- package/src/tests/samples/metaclass7.py +38 -0
- package/src/tests/samples/metaclass8.py +20 -0
- package/src/tests/samples/metaclass9.py +77 -0
- package/src/tests/samples/methodOverride1.py +507 -0
- package/src/tests/samples/methodOverride2.py +74 -0
- package/src/tests/samples/methodOverride3.py +111 -0
- package/src/tests/samples/methodOverride4.py +36 -0
- package/src/tests/samples/missingSuper1.py +73 -0
- package/src/tests/samples/module1.py +13 -0
- package/src/tests/samples/module2.py +7 -0
- package/src/tests/samples/mro1.py +16 -0
- package/src/tests/samples/mro2.py +45 -0
- package/src/tests/samples/mro3.py +30 -0
- package/src/tests/samples/mro4.py +30 -0
- package/src/tests/samples/nameBindings1.py +48 -0
- package/src/tests/samples/nameBindings2.py +9 -0
- package/src/tests/samples/nameBindings3.py +36 -0
- package/src/tests/samples/nameBindings4.py +10 -0
- package/src/tests/samples/nameBindings5.py +53 -0
- package/src/tests/samples/namedTuples1.py +103 -0
- package/src/tests/samples/namedTuples2.py +56 -0
- package/src/tests/samples/namedTuples3.py +15 -0
- package/src/tests/samples/namedTuples4.py +24 -0
- package/src/tests/samples/namedTuples5.py +15 -0
- package/src/tests/samples/namedTuples6.py +31 -0
- package/src/tests/samples/namedTuples7.py +27 -0
- package/src/tests/samples/never1.py +12 -0
- package/src/tests/samples/never2.py +43 -0
- package/src/tests/samples/newType1.py +34 -0
- package/src/tests/samples/newType2.py +25 -0
- package/src/tests/samples/newType3.py +34 -0
- package/src/tests/samples/newType4.py +8 -0
- package/src/tests/samples/none1.py +29 -0
- package/src/tests/samples/none2.py +22 -0
- package/src/tests/samples/noreturn1.py +78 -0
- package/src/tests/samples/noreturn2.py +37 -0
- package/src/tests/samples/noreturn3.py +16 -0
- package/src/tests/samples/noreturn4.py +29 -0
- package/src/tests/samples/operators1.py +101 -0
- package/src/tests/samples/operators2.py +30 -0
- package/src/tests/samples/operators3.py +8 -0
- package/src/tests/samples/operators4.py +22 -0
- package/src/tests/samples/operators5.py +5 -0
- package/src/tests/samples/operators6.py +10 -0
- package/src/tests/samples/operators7.py +24 -0
- package/src/tests/samples/operators8.py +125 -0
- package/src/tests/samples/optional1.py +77 -0
- package/src/tests/samples/optional2.py +23 -0
- package/src/tests/samples/overload1.py +50 -0
- package/src/tests/samples/overload10.py +48 -0
- package/src/tests/samples/overload2.py +37 -0
- package/src/tests/samples/overload3.py +29 -0
- package/src/tests/samples/overload4.py +46 -0
- package/src/tests/samples/overload5.py +333 -0
- package/src/tests/samples/overload6.py +64 -0
- package/src/tests/samples/overload7.py +376 -0
- package/src/tests/samples/overload8.py +89 -0
- package/src/tests/samples/overload9.py +19 -0
- package/src/tests/samples/package1/__init__.py +3 -0
- package/src/tests/samples/package1/psyche/pysche.py +4 -0
- package/src/tests/samples/package1/psyche.py +4 -0
- package/src/tests/samples/package1/sub/__init__.py +5 -0
- package/src/tests/samples/package1/sub.py +4 -0
- package/src/tests/samples/package1/sub.pyi +2 -0
- package/src/tests/samples/paramInference1.py +27 -0
- package/src/tests/samples/paramNames1.py +39 -0
- package/src/tests/samples/paramSpec1.py +64 -0
- package/src/tests/samples/paramSpec10.py +57 -0
- package/src/tests/samples/paramSpec11.py +36 -0
- package/src/tests/samples/paramSpec12.py +88 -0
- package/src/tests/samples/paramSpec13.py +112 -0
- package/src/tests/samples/paramSpec14.py +30 -0
- package/src/tests/samples/paramSpec15.py +28 -0
- package/src/tests/samples/paramSpec16.py +28 -0
- package/src/tests/samples/paramSpec17.py +34 -0
- package/src/tests/samples/paramSpec18.py +43 -0
- package/src/tests/samples/paramSpec19.py +93 -0
- package/src/tests/samples/paramSpec2.py +29 -0
- package/src/tests/samples/paramSpec20.py +87 -0
- package/src/tests/samples/paramSpec21.py +58 -0
- package/src/tests/samples/paramSpec22.py +26 -0
- package/src/tests/samples/paramSpec23.py +21 -0
- package/src/tests/samples/paramSpec24.py +67 -0
- package/src/tests/samples/paramSpec25.py +36 -0
- package/src/tests/samples/paramSpec26.py +25 -0
- package/src/tests/samples/paramSpec27.py +57 -0
- package/src/tests/samples/paramSpec28.py +39 -0
- package/src/tests/samples/paramSpec29.py +37 -0
- package/src/tests/samples/paramSpec3.py +71 -0
- package/src/tests/samples/paramSpec30.py +49 -0
- package/src/tests/samples/paramSpec31.py +16 -0
- package/src/tests/samples/paramSpec32.py +57 -0
- package/src/tests/samples/paramSpec33.py +29 -0
- package/src/tests/samples/paramSpec34.py +29 -0
- package/src/tests/samples/paramSpec35.py +24 -0
- package/src/tests/samples/paramSpec36.py +43 -0
- package/src/tests/samples/paramSpec37.py +25 -0
- package/src/tests/samples/paramSpec4.py +109 -0
- package/src/tests/samples/paramSpec5.py +29 -0
- package/src/tests/samples/paramSpec6.py +17 -0
- package/src/tests/samples/paramSpec7.py +22 -0
- package/src/tests/samples/paramSpec8.py +45 -0
- package/src/tests/samples/paramSpec9.py +57 -0
- package/src/tests/samples/paramType1.py +71 -0
- package/src/tests/samples/parameters1.py +16 -0
- package/src/tests/samples/partial1.py +163 -0
- package/src/tests/samples/partial2.py +31 -0
- package/src/tests/samples/private1.py +55 -0
- package/src/tests/samples/private2.py +11 -0
- package/src/tests/samples/project1/pyrightconfig.json +5 -0
- package/src/tests/samples/project1/sample1.py +0 -0
- package/src/tests/samples/project1/subfolder1/sample2.py +0 -0
- package/src/tests/samples/project1/subfolder1/subfolder1-1/sample3.py +0 -0
- package/src/tests/samples/project2/pyrightconfig.json +3 -0
- package/src/tests/samples/project3/pyrightconfig.json +7 -0
- package/src/tests/samples/project4/presentfile.py +0 -0
- package/src/tests/samples/project4/pyrightconfig.json +11 -0
- package/src/tests/samples/project4/subfolder/presentfile2.py +0 -0
- package/src/tests/samples/project4/subfolder/presentfile3.py +0 -0
- package/src/tests/samples/project5/pyrightconfig.json +4 -0
- package/src/tests/samples/project6/app1.py +0 -0
- package/src/tests/samples/project6/app2.py +0 -0
- package/src/tests/samples/project6/projectA/foo/__init__.py +0 -0
- package/src/tests/samples/project6/projectA/foo/bar/__init__.py +0 -0
- package/src/tests/samples/project6/projectB/foo/__init__.py +0 -0
- package/src/tests/samples/project6/projectB/foo/baz/__init__.py +0 -0
- package/src/tests/samples/project_src/src/module1.py +0 -0
- package/src/tests/samples/project_src_is_pkg/src/__init__.py +0 -0
- package/src/tests/samples/project_src_is_pkg/src/module1.py +0 -0
- package/src/tests/samples/project_src_with_config_extra_paths/pyrightconfig.json +3 -0
- package/src/tests/samples/project_src_with_config_extra_paths/src/module1.py +0 -0
- package/src/tests/samples/project_src_with_config_no_extra_paths/pyrightconfig.json +2 -0
- package/src/tests/samples/project_src_with_config_no_extra_paths/src/module1.py +0 -0
- package/src/tests/samples/project_src_with_extra_paths/src/_vendored/vendored1.py +1 -0
- package/src/tests/samples/project_src_with_extra_paths/src/module1.py +2 -0
- package/src/tests/samples/project_with_pyproject_toml/pyproject.toml +7 -0
- package/src/tests/samples/project_with_venv_auto_detect_exclude/myvenv/Lib/site-packages/library1.py +0 -0
- package/src/tests/samples/project_with_venv_auto_detect_exclude/myvenv/pyvenv.cfg +0 -0
- package/src/tests/samples/project_with_venv_auto_detect_exclude/pyrightconfig.json +2 -0
- package/src/tests/samples/project_with_venv_auto_detect_exclude/sample1.py +0 -0
- package/src/tests/samples/project_with_venv_auto_detect_exclude/subfolder1/sample2.py +0 -0
- package/src/tests/samples/project_with_venv_auto_detect_exclude/subfolder1/subfolder1-1/sample3.py +0 -0
- package/src/tests/samples/project_with_venv_auto_detect_include/excluded/excluded1.py +0 -0
- package/src/tests/samples/project_with_venv_auto_detect_include/myvenv/Lib/site-packages/library1.py +0 -0
- package/src/tests/samples/project_with_venv_auto_detect_include/myvenv/pyvenv.cfg +0 -0
- package/src/tests/samples/project_with_venv_auto_detect_include/pyrightconfig.json +3 -0
- package/src/tests/samples/project_with_venv_auto_detect_include/sample1.py +0 -0
- package/src/tests/samples/project_with_venv_auto_detect_include/subfolder1/sample2.py +0 -0
- package/src/tests/samples/project_with_venv_auto_detect_include/subfolder1/subfolder1-1/sample3.py +0 -0
- package/src/tests/samples/properties1.py +64 -0
- package/src/tests/samples/properties10.py +19 -0
- package/src/tests/samples/properties11.py +45 -0
- package/src/tests/samples/properties12.py +23 -0
- package/src/tests/samples/properties13.py +15 -0
- package/src/tests/samples/properties2.py +34 -0
- package/src/tests/samples/properties3.py +93 -0
- package/src/tests/samples/properties4.py +17 -0
- package/src/tests/samples/properties5.py +29 -0
- package/src/tests/samples/properties6.py +35 -0
- package/src/tests/samples/properties7.py +30 -0
- package/src/tests/samples/properties8.py +26 -0
- package/src/tests/samples/properties9.py +24 -0
- package/src/tests/samples/protocol1.py +132 -0
- package/src/tests/samples/protocol10.py +36 -0
- package/src/tests/samples/protocol11.py +32 -0
- package/src/tests/samples/protocol12.py +12 -0
- package/src/tests/samples/protocol13.py +26 -0
- package/src/tests/samples/protocol14.py +27 -0
- package/src/tests/samples/protocol15.py +27 -0
- package/src/tests/samples/protocol16.py +22 -0
- package/src/tests/samples/protocol17.py +94 -0
- package/src/tests/samples/protocol18.py +27 -0
- package/src/tests/samples/protocol19.py +39 -0
- package/src/tests/samples/protocol2.py +38 -0
- package/src/tests/samples/protocol20.py +22 -0
- package/src/tests/samples/protocol21.py +26 -0
- package/src/tests/samples/protocol22.py +43 -0
- package/src/tests/samples/protocol23.py +41 -0
- package/src/tests/samples/protocol24.py +74 -0
- package/src/tests/samples/protocol25.py +31 -0
- package/src/tests/samples/protocol26.py +40 -0
- package/src/tests/samples/protocol27.py +76 -0
- package/src/tests/samples/protocol28.py +32 -0
- package/src/tests/samples/protocol29.py +26 -0
- package/src/tests/samples/protocol3.py +110 -0
- package/src/tests/samples/protocol30.py +30 -0
- package/src/tests/samples/protocol31.py +22 -0
- package/src/tests/samples/protocol32.py +67 -0
- package/src/tests/samples/protocol33.py +39 -0
- package/src/tests/samples/protocol34.py +21 -0
- package/src/tests/samples/protocol4.py +22 -0
- package/src/tests/samples/protocol5.py +25 -0
- package/src/tests/samples/protocol6.py +65 -0
- package/src/tests/samples/protocol7.py +24 -0
- package/src/tests/samples/protocol8.py +34 -0
- package/src/tests/samples/protocol9.py +35 -0
- package/src/tests/samples/protocolModule1.py +15 -0
- package/src/tests/samples/protocolModule2.py +83 -0
- package/src/tests/samples/protocolModule3.py +14 -0
- package/src/tests/samples/protocolModule4.py +26 -0
- package/src/tests/samples/pseudoGeneric1.py +20 -0
- package/src/tests/samples/pyrightIgnore1.py +11 -0
- package/src/tests/samples/pyrightIgnore2.py +24 -0
- package/src/tests/samples/python2.py +31 -0
- package/src/tests/samples/recursiveTypeAlias1.py +79 -0
- package/src/tests/samples/recursiveTypeAlias2.py +32 -0
- package/src/tests/samples/recursiveTypeAlias3.py +26 -0
- package/src/tests/samples/recursiveTypeAlias4.py +55 -0
- package/src/tests/samples/recursiveTypeAlias5.pyi +10 -0
- package/src/tests/samples/recursiveTypeAlias6.py +25 -0
- package/src/tests/samples/recursiveTypeAlias7.py +15 -0
- package/src/tests/samples/recursiveTypeAlias8.py +38 -0
- package/src/tests/samples/recursiveTypeAlias9.py +22 -0
- package/src/tests/samples/required1.py +47 -0
- package/src/tests/samples/required2.py +56 -0
- package/src/tests/samples/required3.py +22 -0
- package/src/tests/samples/returnTypes1.py +26 -0
- package/src/tests/samples/revealedType1.py +30 -0
- package/src/tests/samples/sample1.py +6 -0
- package/src/tests/samples/self1.py +93 -0
- package/src/tests/samples/self2.py +195 -0
- package/src/tests/samples/self3.py +9 -0
- package/src/tests/samples/self4.py +18 -0
- package/src/tests/samples/self5.py +26 -0
- package/src/tests/samples/setComprehension1.py +34 -0
- package/src/tests/samples/slots1.py +63 -0
- package/src/tests/samples/slots2.py +38 -0
- package/src/tests/samples/slots3.py +35 -0
- package/src/tests/samples/specialization1.py +78 -0
- package/src/tests/samples/specialization2.py +51 -0
- package/src/tests/samples/staticExpressions1.py +52 -0
- package/src/tests/samples/strings1.py +22 -0
- package/src/tests/samples/subscript1.py +74 -0
- package/src/tests/samples/subscript2.py +55 -0
- package/src/tests/samples/subscript3.py +135 -0
- package/src/tests/samples/suiteExpectedColon1.py +4 -0
- package/src/tests/samples/suiteExpectedColon2.py +2 -0
- package/src/tests/samples/suiteExpectedColon3.py +2 -0
- package/src/tests/samples/super1.py +57 -0
- package/src/tests/samples/super2.py +29 -0
- package/src/tests/samples/super3.py +10 -0
- package/src/tests/samples/super4.py +24 -0
- package/src/tests/samples/super5.py +28 -0
- package/src/tests/samples/super6.py +17 -0
- package/src/tests/samples/super7.py +52 -0
- package/src/tests/samples/super8.py +7 -0
- package/src/tests/samples/super9.py +36 -0
- package/src/tests/samples/test_file1.py +0 -0
- package/src/tests/samples/threePartVersion1.py +33 -0
- package/src/tests/samples/totalOrdering1.py +52 -0
- package/src/tests/samples/tryExcept1.py +39 -0
- package/src/tests/samples/tryExcept10.py +12 -0
- package/src/tests/samples/tryExcept2.py +16 -0
- package/src/tests/samples/tryExcept3.py +12 -0
- package/src/tests/samples/tryExcept4.py +28 -0
- package/src/tests/samples/tryExcept5.py +30 -0
- package/src/tests/samples/tryExcept6.py +27 -0
- package/src/tests/samples/tryExcept7.py +17 -0
- package/src/tests/samples/tryExcept8.py +69 -0
- package/src/tests/samples/tryExcept9.py +42 -0
- package/src/tests/samples/tupleUnpack1.py +63 -0
- package/src/tests/samples/tupleUnpack2.py +56 -0
- package/src/tests/samples/tupleUnpack3.py +28 -0
- package/src/tests/samples/tuples1.py +185 -0
- package/src/tests/samples/tuples10.py +30 -0
- package/src/tests/samples/tuples11.py +21 -0
- package/src/tests/samples/tuples12.py +31 -0
- package/src/tests/samples/tuples13.py +26 -0
- package/src/tests/samples/tuples15.py +16 -0
- package/src/tests/samples/tuples16.py +14 -0
- package/src/tests/samples/tuples2.py +23 -0
- package/src/tests/samples/tuples3.py +15 -0
- package/src/tests/samples/tuples4.py +21 -0
- package/src/tests/samples/tuples5.py +16 -0
- package/src/tests/samples/tuples6.py +56 -0
- package/src/tests/samples/tuples7.py +61 -0
- package/src/tests/samples/tuples8.py +98 -0
- package/src/tests/samples/tuples9.py +17 -0
- package/src/tests/samples/typeAlias1.py +37 -0
- package/src/tests/samples/typeAlias10.py +45 -0
- package/src/tests/samples/typeAlias11.py +37 -0
- package/src/tests/samples/typeAlias12.py +20 -0
- package/src/tests/samples/typeAlias13.py +53 -0
- package/src/tests/samples/typeAlias14.py +29 -0
- package/src/tests/samples/typeAlias15.py +24 -0
- package/src/tests/samples/typeAlias16.py +24 -0
- package/src/tests/samples/typeAlias2.py +26 -0
- package/src/tests/samples/typeAlias3.py +35 -0
- package/src/tests/samples/typeAlias4.py +68 -0
- package/src/tests/samples/typeAlias5.py +56 -0
- package/src/tests/samples/typeAlias6.py +51 -0
- package/src/tests/samples/typeAlias7.py +50 -0
- package/src/tests/samples/typeAlias8.py +24 -0
- package/src/tests/samples/typeAlias9.py +35 -0
- package/src/tests/samples/typeGuard1.py +68 -0
- package/src/tests/samples/typeGuard2.py +58 -0
- package/src/tests/samples/typeGuard3.py +98 -0
- package/src/tests/samples/typeIgnore1.py +10 -0
- package/src/tests/samples/typeIgnore2.py +20 -0
- package/src/tests/samples/typeIgnore3.py +22 -0
- package/src/tests/samples/typeIgnore4.py +10 -0
- package/src/tests/samples/typeIgnore5.py +7 -0
- package/src/tests/samples/typeNarrowing1.py +56 -0
- package/src/tests/samples/typeNarrowing2.py +14 -0
- package/src/tests/samples/typeNarrowing3.py +47 -0
- package/src/tests/samples/typeNarrowing4.py +24 -0
- package/src/tests/samples/typeNarrowing5.py +19 -0
- package/src/tests/samples/typeNarrowing6.py +27 -0
- package/src/tests/samples/typeNarrowing7.py +71 -0
- package/src/tests/samples/typeNarrowingAssert1.py +24 -0
- package/src/tests/samples/typeNarrowingCallable1.py +78 -0
- package/src/tests/samples/typeNarrowingEnum1.py +58 -0
- package/src/tests/samples/typeNarrowingEnum2.py +71 -0
- package/src/tests/samples/typeNarrowingFalsy1.py +50 -0
- package/src/tests/samples/typeNarrowingIn1.py +97 -0
- package/src/tests/samples/typeNarrowingIsNone1.py +56 -0
- package/src/tests/samples/typeNarrowingIsNone2.py +8 -0
- package/src/tests/samples/typeNarrowingIsNoneTuple1.py +42 -0
- package/src/tests/samples/typeNarrowingIsNoneTuple2.py +35 -0
- package/src/tests/samples/typeNarrowingIsinstance1.py +162 -0
- package/src/tests/samples/typeNarrowingIsinstance2.py +14 -0
- package/src/tests/samples/typeNarrowingIsinstance3.py +78 -0
- package/src/tests/samples/typeNarrowingIsinstance4.py +50 -0
- package/src/tests/samples/typeNarrowingIsinstance5.py +39 -0
- package/src/tests/samples/typeNarrowingIsinstance6.py +77 -0
- package/src/tests/samples/typeNarrowingIsinstance7.py +19 -0
- package/src/tests/samples/typeNarrowingIsinstance8.py +19 -0
- package/src/tests/samples/typeNarrowingLiteral1.py +35 -0
- package/src/tests/samples/typeNarrowingLiteral2.py +63 -0
- package/src/tests/samples/typeNarrowingLiteralMember1.py +140 -0
- package/src/tests/samples/typeNarrowingLocalConst1.py +136 -0
- package/src/tests/samples/typeNarrowingNoneMember1.py +102 -0
- package/src/tests/samples/typeNarrowingTuple1.py +23 -0
- package/src/tests/samples/typeNarrowingTupleLength1.py +47 -0
- package/src/tests/samples/typeNarrowingTypeIs1.py +95 -0
- package/src/tests/samples/typeNarrowingTypedDict1.py +99 -0
- package/src/tests/samples/typeNarrowingTypedDict2.py +35 -0
- package/src/tests/samples/typeNarrowingTypedDict3.py +45 -0
- package/src/tests/samples/typePromotions1.py +30 -0
- package/src/tests/samples/typeVar1.py +23 -0
- package/src/tests/samples/typeVar10.py +21 -0
- package/src/tests/samples/typeVar11.py +12 -0
- package/src/tests/samples/typeVar2.py +26 -0
- package/src/tests/samples/typeVar3.py +73 -0
- package/src/tests/samples/typeVar4.py +45 -0
- package/src/tests/samples/typeVar5.py +75 -0
- package/src/tests/samples/typeVar6.py +115 -0
- package/src/tests/samples/typeVar7.py +171 -0
- package/src/tests/samples/typeVar8.py +30 -0
- package/src/tests/samples/typeVar9.py +118 -0
- package/src/tests/samples/typedDict1.py +63 -0
- package/src/tests/samples/typedDict10.py +34 -0
- package/src/tests/samples/typedDict11.py +12 -0
- package/src/tests/samples/typedDict12.py +103 -0
- package/src/tests/samples/typedDict13.py +14 -0
- package/src/tests/samples/typedDict14.py +25 -0
- package/src/tests/samples/typedDict15.py +53 -0
- package/src/tests/samples/typedDict16.py +103 -0
- package/src/tests/samples/typedDict17.py +24 -0
- package/src/tests/samples/typedDict18.py +43 -0
- package/src/tests/samples/typedDict2.py +56 -0
- package/src/tests/samples/typedDict3.py +40 -0
- package/src/tests/samples/typedDict4.py +68 -0
- package/src/tests/samples/typedDict5.py +50 -0
- package/src/tests/samples/typedDict6.py +77 -0
- package/src/tests/samples/typedDict7.py +22 -0
- package/src/tests/samples/typedDict8.py +19 -0
- package/src/tests/samples/typedDict9.py +22 -0
- package/src/tests/samples/unbound1.py +18 -0
- package/src/tests/samples/unbound2.py +12 -0
- package/src/tests/samples/unbound3.py +13 -0
- package/src/tests/samples/unbound4.py +25 -0
- package/src/tests/samples/unicode1.py +39 -0
- package/src/tests/samples/uninitializedVariable1.py +27 -0
- package/src/tests/samples/unions1.py +79 -0
- package/src/tests/samples/unions2.py +15 -0
- package/src/tests/samples/unions3.py +48 -0
- package/src/tests/samples/unions4.py +20 -0
- package/src/tests/samples/unions5.py +43 -0
- package/src/tests/samples/unnecessaryCast1.py +13 -0
- package/src/tests/samples/unnecessaryIsInstance1.py +91 -0
- package/src/tests/samples/unnecessaryIsSubclass1.py +22 -0
- package/src/tests/samples/unpack1.py +56 -0
- package/src/tests/samples/unpack2.py +27 -0
- package/src/tests/samples/unpack3.py +16 -0
- package/src/tests/samples/unpack4.py +15 -0
- package/src/tests/samples/unreachable1.py +112 -0
- package/src/tests/samples/unusedCallResult1.py +67 -0
- package/src/tests/samples/unusedCoroutine1.py +23 -0
- package/src/tests/samples/unusedExpression1.py +34 -0
- package/src/tests/samples/unusedVariable1.py +21 -0
- package/src/tests/samples/variadicTypeVar1.py +51 -0
- package/src/tests/samples/variadicTypeVar10.py +65 -0
- package/src/tests/samples/variadicTypeVar11.py +72 -0
- package/src/tests/samples/variadicTypeVar12.py +26 -0
- package/src/tests/samples/variadicTypeVar13.py +35 -0
- package/src/tests/samples/variadicTypeVar14.py +72 -0
- package/src/tests/samples/variadicTypeVar2.py +63 -0
- package/src/tests/samples/variadicTypeVar3.py +86 -0
- package/src/tests/samples/variadicTypeVar4.py +71 -0
- package/src/tests/samples/variadicTypeVar5.py +131 -0
- package/src/tests/samples/variadicTypeVar6.py +78 -0
- package/src/tests/samples/variadicTypeVar7.py +59 -0
- package/src/tests/samples/variadicTypeVar8.py +116 -0
- package/src/tests/samples/variadicTypeVar9.py +38 -0
- package/src/tests/samples/with1.py +117 -0
- package/src/tests/samples/with2.py +63 -0
- package/src/tests/samples/with3.py +66 -0
- package/src/tests/samples/with4.py +24 -0
- package/src/tests/samples/with5.py +33 -0
- package/src/tests/samples/zipfs/bad.egg +1 -0
- package/src/tests/samples/zipfs/bad.zip +1 -0
- package/src/tests/samples/zipfs/basic.egg +0 -0
- package/src/tests/samples/zipfs/basic.zip +0 -0
- package/src/tests/samples/zipfs/corrupt.egg +0 -0
- package/src/tests/samples/zipfs/corrupt.zip +0 -0
- package/src/tests/sourceFile.test.ts +25 -0
- package/src/tests/stringUtils.test.ts +63 -0
- package/src/tests/symbolNameUtils.test.ts +77 -0
- package/src/tests/testState.test.ts +579 -0
- package/src/tests/testUtils.ts +251 -0
- package/src/tests/tokenizer.test.ts +1534 -0
- package/src/tests/typeEvaluator1.test.ts +1372 -0
- package/src/tests/typeEvaluator2.test.ts +1253 -0
- package/src/tests/typeEvaluator3.test.ts +1279 -0
- package/src/tests/typeEvaluator4.test.ts +1178 -0
- package/src/tests/updateSymbolReference.test.ts +1107 -0
- package/src/tests/zipfs.test.ts +116 -0
- package/src/workspaceMap.ts +76 -0
@@ -0,0 +1,1291 @@
|
|
1
|
+
/*
|
2
|
+
* configOptions.ts
|
3
|
+
* Copyright (c) Microsoft Corporation.
|
4
|
+
* Licensed under the MIT license.
|
5
|
+
* Author: Eric Traut
|
6
|
+
*
|
7
|
+
* Class that holds the configuration options for the analyzer.
|
8
|
+
*/
|
9
|
+
|
10
|
+
import { isAbsolute } from 'path';
|
11
|
+
|
12
|
+
import { getPathsFromPthFiles } from '../analyzer/pythonPathUtils';
|
13
|
+
import * as pathConsts from '../common/pathConsts';
|
14
|
+
import { appendArray } from './collectionUtils';
|
15
|
+
import { DiagnosticSeverityOverridesMap } from './commandLineOptions';
|
16
|
+
import { ConsoleInterface } from './console';
|
17
|
+
import { DiagnosticRule } from './diagnosticRules';
|
18
|
+
import { FileSystem } from './fileSystem';
|
19
|
+
import { Host } from './host';
|
20
|
+
import {
|
21
|
+
combinePaths,
|
22
|
+
ensureTrailingDirectorySeparator,
|
23
|
+
FileSpec,
|
24
|
+
getFileSpec,
|
25
|
+
isDirectory,
|
26
|
+
normalizePath,
|
27
|
+
resolvePaths,
|
28
|
+
} from './pathUtils';
|
29
|
+
import { latestStablePythonVersion, PythonVersion, versionFromString, versionToString } from './pythonVersion';
|
30
|
+
|
31
|
+
export enum PythonPlatform {
|
32
|
+
Darwin = 'Darwin',
|
33
|
+
Windows = 'Windows',
|
34
|
+
Linux = 'Linux',
|
35
|
+
}
|
36
|
+
|
37
|
+
export class ExecutionEnvironment {
|
38
|
+
// Default to "." which indicates every file in the project.
|
39
|
+
constructor(
|
40
|
+
root: string,
|
41
|
+
defaultPythonVersion: PythonVersion | undefined,
|
42
|
+
defaultPythonPlatform: string | undefined,
|
43
|
+
defaultExtraPaths: string[] | undefined
|
44
|
+
) {
|
45
|
+
this.root = root || undefined;
|
46
|
+
this.pythonVersion = defaultPythonVersion || latestStablePythonVersion;
|
47
|
+
this.pythonPlatform = defaultPythonPlatform;
|
48
|
+
this.extraPaths = [...(defaultExtraPaths ?? [])];
|
49
|
+
}
|
50
|
+
|
51
|
+
// Root directory for execution - absolute or relative to the
|
52
|
+
// project root.
|
53
|
+
// Undefined if this is a rootless environment (e.g., open file mode).
|
54
|
+
root?: string;
|
55
|
+
|
56
|
+
// Always default to the latest stable version of the language.
|
57
|
+
pythonVersion: PythonVersion;
|
58
|
+
|
59
|
+
// Default to no platform.
|
60
|
+
pythonPlatform?: string | undefined;
|
61
|
+
|
62
|
+
// Default to no extra paths.
|
63
|
+
extraPaths: string[] = [];
|
64
|
+
}
|
65
|
+
|
66
|
+
export type DiagnosticLevel = 'none' | 'information' | 'warning' | 'error';
|
67
|
+
|
68
|
+
export interface DiagnosticRuleSet {
|
69
|
+
// Should "Unknown" types be reported as "Any"?
|
70
|
+
printUnknownAsAny: boolean;
|
71
|
+
|
72
|
+
// Should type arguments to a generic class be omitted
|
73
|
+
// when printed if all arguments are Unknown or Any?
|
74
|
+
omitTypeArgsIfAny: boolean;
|
75
|
+
|
76
|
+
// Should parameter type be omitted if it is not annotated?
|
77
|
+
omitUnannotatedParamType: boolean;
|
78
|
+
|
79
|
+
// Indicate when a type is conditional based on a constrained
|
80
|
+
// type variable type?
|
81
|
+
omitConditionalConstraint: boolean;
|
82
|
+
|
83
|
+
// Should Union and Optional types be printed in PEP 604 format?
|
84
|
+
pep604Printing: boolean;
|
85
|
+
|
86
|
+
// Use strict inference rules for list expressions?
|
87
|
+
strictListInference: boolean;
|
88
|
+
|
89
|
+
// Use strict inference rules for set expressions?
|
90
|
+
strictSetInference: boolean;
|
91
|
+
|
92
|
+
// Use strict inference rules for dictionary expressions?
|
93
|
+
strictDictionaryInference: boolean;
|
94
|
+
|
95
|
+
// Use strict type rules for parameters assigned default of None?
|
96
|
+
strictParameterNoneValue: boolean;
|
97
|
+
|
98
|
+
// Enable support for type: ignore comments?
|
99
|
+
enableTypeIgnoreComments: boolean;
|
100
|
+
|
101
|
+
// Report general type issues?
|
102
|
+
reportGeneralTypeIssues: DiagnosticLevel;
|
103
|
+
|
104
|
+
// Report mismatch in types between property getter and setter?
|
105
|
+
reportPropertyTypeMismatch: DiagnosticLevel;
|
106
|
+
|
107
|
+
// Report the use of unknown member accesses on function objects?
|
108
|
+
reportFunctionMemberAccess: DiagnosticLevel;
|
109
|
+
|
110
|
+
// Report missing imports?
|
111
|
+
reportMissingImports: DiagnosticLevel;
|
112
|
+
|
113
|
+
// Report missing imported module source files?
|
114
|
+
reportMissingModuleSource: DiagnosticLevel;
|
115
|
+
|
116
|
+
// Report missing type stub files?
|
117
|
+
reportMissingTypeStubs: DiagnosticLevel;
|
118
|
+
|
119
|
+
// Report cycles in import graph?
|
120
|
+
reportImportCycles: DiagnosticLevel;
|
121
|
+
|
122
|
+
// Report imported symbol that is not accessed?
|
123
|
+
reportUnusedImport: DiagnosticLevel;
|
124
|
+
|
125
|
+
// Report private class that is not accessed?
|
126
|
+
reportUnusedClass: DiagnosticLevel;
|
127
|
+
|
128
|
+
// Report private function or method that is not accessed?
|
129
|
+
reportUnusedFunction: DiagnosticLevel;
|
130
|
+
|
131
|
+
// Report variable that is not accessed?
|
132
|
+
reportUnusedVariable: DiagnosticLevel;
|
133
|
+
|
134
|
+
// Report symbol or module that is imported more than once?
|
135
|
+
reportDuplicateImport: DiagnosticLevel;
|
136
|
+
|
137
|
+
// Report use of wildcard import for non-local imports?
|
138
|
+
reportWildcardImportFromLibrary: DiagnosticLevel;
|
139
|
+
|
140
|
+
// Report attempts to subscript (index) an Optional type?
|
141
|
+
reportOptionalSubscript: DiagnosticLevel;
|
142
|
+
|
143
|
+
// Report attempts to access members on a Optional type?
|
144
|
+
reportOptionalMemberAccess: DiagnosticLevel;
|
145
|
+
|
146
|
+
// Report attempts to call a Optional type?
|
147
|
+
reportOptionalCall: DiagnosticLevel;
|
148
|
+
|
149
|
+
// Report attempts to use an Optional type as an iterable?
|
150
|
+
reportOptionalIterable: DiagnosticLevel;
|
151
|
+
|
152
|
+
// Report attempts to use an Optional type in a "with" statement?
|
153
|
+
reportOptionalContextManager: DiagnosticLevel;
|
154
|
+
|
155
|
+
// Report attempts to use an Optional type in a binary or unary operation?
|
156
|
+
reportOptionalOperand: DiagnosticLevel;
|
157
|
+
|
158
|
+
// Report accesses to non-required TypedDict fields?
|
159
|
+
reportTypedDictNotRequiredAccess: DiagnosticLevel;
|
160
|
+
|
161
|
+
// Report untyped function decorators that obscure the function type?
|
162
|
+
reportUntypedFunctionDecorator: DiagnosticLevel;
|
163
|
+
|
164
|
+
// Report untyped class decorators that obscure the class type?
|
165
|
+
reportUntypedClassDecorator: DiagnosticLevel;
|
166
|
+
|
167
|
+
// Report untyped base class that obscure the class type?
|
168
|
+
reportUntypedBaseClass: DiagnosticLevel;
|
169
|
+
|
170
|
+
// Report use of untyped namedtuple factory method?
|
171
|
+
reportUntypedNamedTuple: DiagnosticLevel;
|
172
|
+
|
173
|
+
// Report usage of private variables and functions outside of
|
174
|
+
// the owning class or module?
|
175
|
+
reportPrivateUsage: DiagnosticLevel;
|
176
|
+
|
177
|
+
// Report usage of deprecated type comments.
|
178
|
+
reportTypeCommentUsage: DiagnosticLevel;
|
179
|
+
|
180
|
+
// Report usage of an import from a py.typed module that is
|
181
|
+
// not meant to be re-exported from that module.
|
182
|
+
reportPrivateImportUsage: DiagnosticLevel;
|
183
|
+
|
184
|
+
// Report attempts to redefine variables that are in all-caps.
|
185
|
+
reportConstantRedefinition: DiagnosticLevel;
|
186
|
+
|
187
|
+
// Report usage of method override that is incompatible with
|
188
|
+
// the base class method of the same name?
|
189
|
+
reportIncompatibleMethodOverride: DiagnosticLevel;
|
190
|
+
|
191
|
+
// Report usage of variable override that is incompatible with
|
192
|
+
// the base class symbol of the same name?
|
193
|
+
reportIncompatibleVariableOverride: DiagnosticLevel;
|
194
|
+
|
195
|
+
// Report inconsistencies between __init__ and __new__ signatures.
|
196
|
+
reportInconsistentConstructor: DiagnosticLevel;
|
197
|
+
|
198
|
+
// Report function overloads that overlap in signature but have
|
199
|
+
// incompatible return types.
|
200
|
+
reportOverlappingOverload: DiagnosticLevel;
|
201
|
+
|
202
|
+
// Report failure to call super().__init__() in __init__ method.
|
203
|
+
reportMissingSuperCall: DiagnosticLevel;
|
204
|
+
|
205
|
+
// Report instance variables that are not initialized within
|
206
|
+
// the constructor.
|
207
|
+
reportUninitializedInstanceVariable: DiagnosticLevel;
|
208
|
+
|
209
|
+
// Report usage of invalid escape sequences in string literals?
|
210
|
+
reportInvalidStringEscapeSequence: DiagnosticLevel;
|
211
|
+
|
212
|
+
// Report usage of unknown input or return parameters for functions?
|
213
|
+
reportUnknownParameterType: DiagnosticLevel;
|
214
|
+
|
215
|
+
// Report usage of unknown arguments for function calls?
|
216
|
+
reportUnknownArgumentType: DiagnosticLevel;
|
217
|
+
|
218
|
+
// Report usage of unknown input or return parameters for lambdas?
|
219
|
+
reportUnknownLambdaType: DiagnosticLevel;
|
220
|
+
|
221
|
+
// Report usage of unknown input or return parameters?
|
222
|
+
reportUnknownVariableType: DiagnosticLevel;
|
223
|
+
|
224
|
+
// Report usage of unknown input or return parameters?
|
225
|
+
reportUnknownMemberType: DiagnosticLevel;
|
226
|
+
|
227
|
+
// Report input parameters that are missing type annotations?
|
228
|
+
reportMissingParameterType: DiagnosticLevel;
|
229
|
+
|
230
|
+
// Report usage of generic class without explicit type arguments?
|
231
|
+
reportMissingTypeArgument: DiagnosticLevel;
|
232
|
+
|
233
|
+
// Report improper usage of type variables within function signatures?
|
234
|
+
reportInvalidTypeVarUse: DiagnosticLevel;
|
235
|
+
|
236
|
+
// Report usage of function call within default value
|
237
|
+
// initialization expression?
|
238
|
+
reportCallInDefaultInitializer: DiagnosticLevel;
|
239
|
+
|
240
|
+
// Report calls to isinstance or issubclass that are statically determined
|
241
|
+
// to always be true.
|
242
|
+
reportUnnecessaryIsInstance: DiagnosticLevel;
|
243
|
+
|
244
|
+
// Report calls to cast that are statically determined
|
245
|
+
// to always unnecessary.
|
246
|
+
reportUnnecessaryCast: DiagnosticLevel;
|
247
|
+
|
248
|
+
// Report == or != operators that always evaluate to True or False.
|
249
|
+
reportUnnecessaryComparison: DiagnosticLevel;
|
250
|
+
|
251
|
+
// Report assert expressions that will always evaluate to true.
|
252
|
+
reportAssertAlwaysTrue: DiagnosticLevel;
|
253
|
+
|
254
|
+
// Report when "self" or "cls" parameter is missing or is misnamed.
|
255
|
+
reportSelfClsParameterName: DiagnosticLevel;
|
256
|
+
|
257
|
+
// Report implicit concatenation of string literals.
|
258
|
+
reportImplicitStringConcatenation: DiagnosticLevel;
|
259
|
+
|
260
|
+
// Report usage of undefined variables.
|
261
|
+
reportUndefinedVariable: DiagnosticLevel;
|
262
|
+
|
263
|
+
// Report usage of unbound or possibly unbound variables.
|
264
|
+
reportUnboundVariable: DiagnosticLevel;
|
265
|
+
|
266
|
+
// Report statements that are syntactically correct but
|
267
|
+
// have no semantic meaning within a type stub file.
|
268
|
+
reportInvalidStubStatement: DiagnosticLevel;
|
269
|
+
|
270
|
+
// Report usage of __getattr__ at the module level in a stub.
|
271
|
+
reportIncompleteStub: DiagnosticLevel;
|
272
|
+
|
273
|
+
// Report operations on __all__ symbol that are not supported
|
274
|
+
// by a static type checker.
|
275
|
+
reportUnsupportedDunderAll: DiagnosticLevel;
|
276
|
+
|
277
|
+
// Report cases where a call expression's return result is not
|
278
|
+
// None and is not used in any way.
|
279
|
+
reportUnusedCallResult: DiagnosticLevel;
|
280
|
+
|
281
|
+
// Report cases where a call expression's return result is Coroutine
|
282
|
+
// and is not used in any way.
|
283
|
+
reportUnusedCoroutine: DiagnosticLevel;
|
284
|
+
|
285
|
+
// Report cases where a simple expression result is not used in any way.
|
286
|
+
reportUnusedExpression: DiagnosticLevel;
|
287
|
+
|
288
|
+
// Report cases where the removal of a "# type: ignore" or "# pyright: ignore"
|
289
|
+
// comment would have no effect.
|
290
|
+
reportUnnecessaryTypeIgnoreComment: DiagnosticLevel;
|
291
|
+
|
292
|
+
// Report cases where the a "match" statement is not exhaustive in
|
293
|
+
// covering all possible cases.
|
294
|
+
reportMatchNotExhaustive: DiagnosticLevel;
|
295
|
+
}
|
296
|
+
|
297
|
+
export function cloneDiagnosticRuleSet(diagSettings: DiagnosticRuleSet): DiagnosticRuleSet {
|
298
|
+
// Create a shallow copy of the existing object.
|
299
|
+
return Object.assign({}, diagSettings);
|
300
|
+
}
|
301
|
+
|
302
|
+
// Returns a list of the diagnostic rules that are configured with
|
303
|
+
// a true or false value.
|
304
|
+
export function getBooleanDiagnosticRules(includeNonOverridable = false) {
|
305
|
+
const boolRules = [
|
306
|
+
DiagnosticRule.strictListInference,
|
307
|
+
DiagnosticRule.strictSetInference,
|
308
|
+
DiagnosticRule.strictDictionaryInference,
|
309
|
+
DiagnosticRule.strictParameterNoneValue,
|
310
|
+
];
|
311
|
+
|
312
|
+
if (includeNonOverridable) {
|
313
|
+
// Do not include this this one because we don't
|
314
|
+
// want to override it in strict mode or support
|
315
|
+
// it within pyright comments.
|
316
|
+
boolRules.push(DiagnosticRule.enableTypeIgnoreComments);
|
317
|
+
}
|
318
|
+
|
319
|
+
return boolRules;
|
320
|
+
}
|
321
|
+
|
322
|
+
// Returns a list of the diagnostic rules that are configured with
|
323
|
+
// a diagnostic level ('none', 'error', etc.).
|
324
|
+
export function getDiagLevelDiagnosticRules() {
|
325
|
+
return [
|
326
|
+
DiagnosticRule.reportGeneralTypeIssues,
|
327
|
+
DiagnosticRule.reportPropertyTypeMismatch,
|
328
|
+
DiagnosticRule.reportFunctionMemberAccess,
|
329
|
+
DiagnosticRule.reportMissingImports,
|
330
|
+
DiagnosticRule.reportMissingModuleSource,
|
331
|
+
DiagnosticRule.reportMissingTypeStubs,
|
332
|
+
DiagnosticRule.reportImportCycles,
|
333
|
+
DiagnosticRule.reportUnusedImport,
|
334
|
+
DiagnosticRule.reportUnusedClass,
|
335
|
+
DiagnosticRule.reportUnusedFunction,
|
336
|
+
DiagnosticRule.reportUnusedVariable,
|
337
|
+
DiagnosticRule.reportDuplicateImport,
|
338
|
+
DiagnosticRule.reportWildcardImportFromLibrary,
|
339
|
+
DiagnosticRule.reportOptionalSubscript,
|
340
|
+
DiagnosticRule.reportOptionalMemberAccess,
|
341
|
+
DiagnosticRule.reportOptionalCall,
|
342
|
+
DiagnosticRule.reportOptionalIterable,
|
343
|
+
DiagnosticRule.reportOptionalContextManager,
|
344
|
+
DiagnosticRule.reportOptionalOperand,
|
345
|
+
DiagnosticRule.reportTypedDictNotRequiredAccess,
|
346
|
+
DiagnosticRule.reportUntypedFunctionDecorator,
|
347
|
+
DiagnosticRule.reportUntypedClassDecorator,
|
348
|
+
DiagnosticRule.reportUntypedBaseClass,
|
349
|
+
DiagnosticRule.reportUntypedNamedTuple,
|
350
|
+
DiagnosticRule.reportPrivateUsage,
|
351
|
+
DiagnosticRule.reportTypeCommentUsage,
|
352
|
+
DiagnosticRule.reportPrivateImportUsage,
|
353
|
+
DiagnosticRule.reportConstantRedefinition,
|
354
|
+
DiagnosticRule.reportIncompatibleMethodOverride,
|
355
|
+
DiagnosticRule.reportIncompatibleVariableOverride,
|
356
|
+
DiagnosticRule.reportInconsistentConstructor,
|
357
|
+
DiagnosticRule.reportOverlappingOverload,
|
358
|
+
DiagnosticRule.reportMissingSuperCall,
|
359
|
+
DiagnosticRule.reportUninitializedInstanceVariable,
|
360
|
+
DiagnosticRule.reportInvalidStringEscapeSequence,
|
361
|
+
DiagnosticRule.reportUnknownParameterType,
|
362
|
+
DiagnosticRule.reportUnknownArgumentType,
|
363
|
+
DiagnosticRule.reportUnknownLambdaType,
|
364
|
+
DiagnosticRule.reportUnknownVariableType,
|
365
|
+
DiagnosticRule.reportUnknownMemberType,
|
366
|
+
DiagnosticRule.reportMissingParameterType,
|
367
|
+
DiagnosticRule.reportMissingTypeArgument,
|
368
|
+
DiagnosticRule.reportInvalidTypeVarUse,
|
369
|
+
DiagnosticRule.reportCallInDefaultInitializer,
|
370
|
+
DiagnosticRule.reportUnnecessaryIsInstance,
|
371
|
+
DiagnosticRule.reportUnnecessaryCast,
|
372
|
+
DiagnosticRule.reportUnnecessaryComparison,
|
373
|
+
DiagnosticRule.reportAssertAlwaysTrue,
|
374
|
+
DiagnosticRule.reportSelfClsParameterName,
|
375
|
+
DiagnosticRule.reportImplicitStringConcatenation,
|
376
|
+
DiagnosticRule.reportUndefinedVariable,
|
377
|
+
DiagnosticRule.reportUnboundVariable,
|
378
|
+
DiagnosticRule.reportInvalidStubStatement,
|
379
|
+
DiagnosticRule.reportIncompleteStub,
|
380
|
+
DiagnosticRule.reportUnsupportedDunderAll,
|
381
|
+
DiagnosticRule.reportUnusedCallResult,
|
382
|
+
DiagnosticRule.reportUnusedCoroutine,
|
383
|
+
DiagnosticRule.reportUnusedExpression,
|
384
|
+
DiagnosticRule.reportUnnecessaryTypeIgnoreComment,
|
385
|
+
DiagnosticRule.reportMatchNotExhaustive,
|
386
|
+
];
|
387
|
+
}
|
388
|
+
|
389
|
+
export function getStrictModeNotOverriddenRules() {
|
390
|
+
// In strict mode, the value in the user config file should be honored and
|
391
|
+
// not overwritten by the value from the strict rule set.
|
392
|
+
return [DiagnosticRule.reportMissingModuleSource];
|
393
|
+
}
|
394
|
+
|
395
|
+
export function getOffDiagnosticRuleSet(): DiagnosticRuleSet {
|
396
|
+
const diagSettings: DiagnosticRuleSet = {
|
397
|
+
printUnknownAsAny: true,
|
398
|
+
omitTypeArgsIfAny: true,
|
399
|
+
omitUnannotatedParamType: true,
|
400
|
+
omitConditionalConstraint: true,
|
401
|
+
pep604Printing: true,
|
402
|
+
strictListInference: false,
|
403
|
+
strictSetInference: false,
|
404
|
+
strictDictionaryInference: false,
|
405
|
+
strictParameterNoneValue: true,
|
406
|
+
enableTypeIgnoreComments: true,
|
407
|
+
reportGeneralTypeIssues: 'none',
|
408
|
+
reportPropertyTypeMismatch: 'none',
|
409
|
+
reportFunctionMemberAccess: 'none',
|
410
|
+
reportMissingImports: 'warning',
|
411
|
+
reportMissingModuleSource: 'warning',
|
412
|
+
reportMissingTypeStubs: 'none',
|
413
|
+
reportImportCycles: 'none',
|
414
|
+
reportUnusedImport: 'none',
|
415
|
+
reportUnusedClass: 'none',
|
416
|
+
reportUnusedFunction: 'none',
|
417
|
+
reportUnusedVariable: 'none',
|
418
|
+
reportDuplicateImport: 'none',
|
419
|
+
reportWildcardImportFromLibrary: 'none',
|
420
|
+
reportOptionalSubscript: 'none',
|
421
|
+
reportOptionalMemberAccess: 'none',
|
422
|
+
reportOptionalCall: 'none',
|
423
|
+
reportOptionalIterable: 'none',
|
424
|
+
reportOptionalContextManager: 'none',
|
425
|
+
reportOptionalOperand: 'none',
|
426
|
+
reportTypedDictNotRequiredAccess: 'none',
|
427
|
+
reportUntypedFunctionDecorator: 'none',
|
428
|
+
reportUntypedClassDecorator: 'none',
|
429
|
+
reportUntypedBaseClass: 'none',
|
430
|
+
reportUntypedNamedTuple: 'none',
|
431
|
+
reportPrivateUsage: 'none',
|
432
|
+
reportTypeCommentUsage: 'none',
|
433
|
+
reportPrivateImportUsage: 'none',
|
434
|
+
reportConstantRedefinition: 'none',
|
435
|
+
reportIncompatibleMethodOverride: 'none',
|
436
|
+
reportIncompatibleVariableOverride: 'none',
|
437
|
+
reportInconsistentConstructor: 'none',
|
438
|
+
reportOverlappingOverload: 'none',
|
439
|
+
reportMissingSuperCall: 'none',
|
440
|
+
reportUninitializedInstanceVariable: 'none',
|
441
|
+
reportInvalidStringEscapeSequence: 'none',
|
442
|
+
reportUnknownParameterType: 'none',
|
443
|
+
reportUnknownArgumentType: 'none',
|
444
|
+
reportUnknownLambdaType: 'none',
|
445
|
+
reportUnknownVariableType: 'none',
|
446
|
+
reportUnknownMemberType: 'none',
|
447
|
+
reportMissingParameterType: 'none',
|
448
|
+
reportMissingTypeArgument: 'none',
|
449
|
+
reportInvalidTypeVarUse: 'none',
|
450
|
+
reportCallInDefaultInitializer: 'none',
|
451
|
+
reportUnnecessaryIsInstance: 'none',
|
452
|
+
reportUnnecessaryCast: 'none',
|
453
|
+
reportUnnecessaryComparison: 'none',
|
454
|
+
reportAssertAlwaysTrue: 'none',
|
455
|
+
reportSelfClsParameterName: 'none',
|
456
|
+
reportImplicitStringConcatenation: 'none',
|
457
|
+
reportUnboundVariable: 'none',
|
458
|
+
reportUndefinedVariable: 'warning',
|
459
|
+
reportInvalidStubStatement: 'none',
|
460
|
+
reportIncompleteStub: 'none',
|
461
|
+
reportUnsupportedDunderAll: 'none',
|
462
|
+
reportUnusedCallResult: 'none',
|
463
|
+
reportUnusedCoroutine: 'none',
|
464
|
+
reportUnusedExpression: 'none',
|
465
|
+
reportUnnecessaryTypeIgnoreComment: 'none',
|
466
|
+
reportMatchNotExhaustive: 'none',
|
467
|
+
};
|
468
|
+
|
469
|
+
return diagSettings;
|
470
|
+
}
|
471
|
+
|
472
|
+
export function getBasicDiagnosticRuleSet(): DiagnosticRuleSet {
|
473
|
+
const diagSettings: DiagnosticRuleSet = {
|
474
|
+
printUnknownAsAny: false,
|
475
|
+
omitTypeArgsIfAny: false,
|
476
|
+
omitUnannotatedParamType: true,
|
477
|
+
omitConditionalConstraint: false,
|
478
|
+
pep604Printing: true,
|
479
|
+
strictListInference: false,
|
480
|
+
strictSetInference: false,
|
481
|
+
strictDictionaryInference: false,
|
482
|
+
strictParameterNoneValue: true,
|
483
|
+
enableTypeIgnoreComments: true,
|
484
|
+
reportGeneralTypeIssues: 'error',
|
485
|
+
reportPropertyTypeMismatch: 'none',
|
486
|
+
reportFunctionMemberAccess: 'none',
|
487
|
+
reportMissingImports: 'error',
|
488
|
+
reportMissingModuleSource: 'warning',
|
489
|
+
reportMissingTypeStubs: 'none',
|
490
|
+
reportImportCycles: 'none',
|
491
|
+
reportUnusedImport: 'none',
|
492
|
+
reportUnusedClass: 'none',
|
493
|
+
reportUnusedFunction: 'none',
|
494
|
+
reportUnusedVariable: 'none',
|
495
|
+
reportDuplicateImport: 'none',
|
496
|
+
reportWildcardImportFromLibrary: 'warning',
|
497
|
+
reportOptionalSubscript: 'error',
|
498
|
+
reportOptionalMemberAccess: 'error',
|
499
|
+
reportOptionalCall: 'error',
|
500
|
+
reportOptionalIterable: 'error',
|
501
|
+
reportOptionalContextManager: 'error',
|
502
|
+
reportOptionalOperand: 'error',
|
503
|
+
reportTypedDictNotRequiredAccess: 'error',
|
504
|
+
reportUntypedFunctionDecorator: 'none',
|
505
|
+
reportUntypedClassDecorator: 'none',
|
506
|
+
reportUntypedBaseClass: 'none',
|
507
|
+
reportUntypedNamedTuple: 'none',
|
508
|
+
reportPrivateUsage: 'none',
|
509
|
+
reportTypeCommentUsage: 'none',
|
510
|
+
reportPrivateImportUsage: 'error',
|
511
|
+
reportConstantRedefinition: 'none',
|
512
|
+
reportIncompatibleMethodOverride: 'none',
|
513
|
+
reportIncompatibleVariableOverride: 'none',
|
514
|
+
reportInconsistentConstructor: 'none',
|
515
|
+
reportOverlappingOverload: 'none',
|
516
|
+
reportMissingSuperCall: 'none',
|
517
|
+
reportUninitializedInstanceVariable: 'none',
|
518
|
+
reportInvalidStringEscapeSequence: 'warning',
|
519
|
+
reportUnknownParameterType: 'none',
|
520
|
+
reportUnknownArgumentType: 'none',
|
521
|
+
reportUnknownLambdaType: 'none',
|
522
|
+
reportUnknownVariableType: 'none',
|
523
|
+
reportUnknownMemberType: 'none',
|
524
|
+
reportMissingParameterType: 'none',
|
525
|
+
reportMissingTypeArgument: 'none',
|
526
|
+
reportInvalidTypeVarUse: 'warning',
|
527
|
+
reportCallInDefaultInitializer: 'none',
|
528
|
+
reportUnnecessaryIsInstance: 'none',
|
529
|
+
reportUnnecessaryCast: 'none',
|
530
|
+
reportUnnecessaryComparison: 'none',
|
531
|
+
reportAssertAlwaysTrue: 'warning',
|
532
|
+
reportSelfClsParameterName: 'warning',
|
533
|
+
reportImplicitStringConcatenation: 'none',
|
534
|
+
reportUnboundVariable: 'error',
|
535
|
+
reportUndefinedVariable: 'error',
|
536
|
+
reportInvalidStubStatement: 'none',
|
537
|
+
reportIncompleteStub: 'none',
|
538
|
+
reportUnsupportedDunderAll: 'warning',
|
539
|
+
reportUnusedCallResult: 'none',
|
540
|
+
reportUnusedCoroutine: 'error',
|
541
|
+
reportUnusedExpression: 'warning',
|
542
|
+
reportUnnecessaryTypeIgnoreComment: 'none',
|
543
|
+
reportMatchNotExhaustive: 'none',
|
544
|
+
};
|
545
|
+
|
546
|
+
return diagSettings;
|
547
|
+
}
|
548
|
+
|
549
|
+
export function getStrictDiagnosticRuleSet(): DiagnosticRuleSet {
|
550
|
+
const diagSettings: DiagnosticRuleSet = {
|
551
|
+
printUnknownAsAny: false,
|
552
|
+
omitTypeArgsIfAny: false,
|
553
|
+
omitUnannotatedParamType: false,
|
554
|
+
omitConditionalConstraint: false,
|
555
|
+
pep604Printing: true,
|
556
|
+
strictListInference: true,
|
557
|
+
strictSetInference: true,
|
558
|
+
strictDictionaryInference: true,
|
559
|
+
strictParameterNoneValue: true,
|
560
|
+
enableTypeIgnoreComments: true, // Not overridden by strict mode
|
561
|
+
reportGeneralTypeIssues: 'error',
|
562
|
+
reportPropertyTypeMismatch: 'none',
|
563
|
+
reportFunctionMemberAccess: 'error',
|
564
|
+
reportMissingImports: 'error',
|
565
|
+
reportMissingModuleSource: 'warning', // Not overridden by strict mode
|
566
|
+
reportMissingTypeStubs: 'error',
|
567
|
+
reportImportCycles: 'error',
|
568
|
+
reportUnusedImport: 'error',
|
569
|
+
reportUnusedClass: 'error',
|
570
|
+
reportUnusedFunction: 'error',
|
571
|
+
reportUnusedVariable: 'error',
|
572
|
+
reportDuplicateImport: 'error',
|
573
|
+
reportWildcardImportFromLibrary: 'error',
|
574
|
+
reportOptionalSubscript: 'error',
|
575
|
+
reportOptionalMemberAccess: 'error',
|
576
|
+
reportOptionalCall: 'error',
|
577
|
+
reportOptionalIterable: 'error',
|
578
|
+
reportOptionalContextManager: 'error',
|
579
|
+
reportOptionalOperand: 'error',
|
580
|
+
reportTypedDictNotRequiredAccess: 'error',
|
581
|
+
reportUntypedFunctionDecorator: 'error',
|
582
|
+
reportUntypedClassDecorator: 'error',
|
583
|
+
reportUntypedBaseClass: 'error',
|
584
|
+
reportUntypedNamedTuple: 'error',
|
585
|
+
reportPrivateUsage: 'error',
|
586
|
+
reportTypeCommentUsage: 'error',
|
587
|
+
reportPrivateImportUsage: 'error',
|
588
|
+
reportConstantRedefinition: 'error',
|
589
|
+
reportIncompatibleMethodOverride: 'error',
|
590
|
+
reportIncompatibleVariableOverride: 'error',
|
591
|
+
reportInconsistentConstructor: 'error',
|
592
|
+
reportOverlappingOverload: 'error',
|
593
|
+
reportMissingSuperCall: 'none',
|
594
|
+
reportUninitializedInstanceVariable: 'none',
|
595
|
+
reportInvalidStringEscapeSequence: 'error',
|
596
|
+
reportUnknownParameterType: 'error',
|
597
|
+
reportUnknownArgumentType: 'error',
|
598
|
+
reportUnknownLambdaType: 'error',
|
599
|
+
reportUnknownVariableType: 'error',
|
600
|
+
reportUnknownMemberType: 'error',
|
601
|
+
reportMissingParameterType: 'error',
|
602
|
+
reportMissingTypeArgument: 'error',
|
603
|
+
reportInvalidTypeVarUse: 'error',
|
604
|
+
reportCallInDefaultInitializer: 'none',
|
605
|
+
reportUnnecessaryIsInstance: 'error',
|
606
|
+
reportUnnecessaryCast: 'error',
|
607
|
+
reportUnnecessaryComparison: 'error',
|
608
|
+
reportAssertAlwaysTrue: 'error',
|
609
|
+
reportSelfClsParameterName: 'error',
|
610
|
+
reportImplicitStringConcatenation: 'none',
|
611
|
+
reportUnboundVariable: 'error',
|
612
|
+
reportUndefinedVariable: 'error',
|
613
|
+
reportInvalidStubStatement: 'error',
|
614
|
+
reportIncompleteStub: 'error',
|
615
|
+
reportUnsupportedDunderAll: 'error',
|
616
|
+
reportUnusedCallResult: 'none',
|
617
|
+
reportUnusedCoroutine: 'error',
|
618
|
+
reportUnusedExpression: 'error',
|
619
|
+
reportUnnecessaryTypeIgnoreComment: 'none',
|
620
|
+
reportMatchNotExhaustive: 'error',
|
621
|
+
};
|
622
|
+
|
623
|
+
return diagSettings;
|
624
|
+
}
|
625
|
+
|
626
|
+
// Internal configuration options. These are derived from a combination
|
627
|
+
// of the command line and from a JSON-based config file.
|
628
|
+
export class ConfigOptions {
|
629
|
+
constructor(projectRoot: string, typeCheckingMode?: string) {
|
630
|
+
this.projectRoot = projectRoot;
|
631
|
+
this.typeCheckingMode = typeCheckingMode;
|
632
|
+
this.diagnosticRuleSet = ConfigOptions.getDiagnosticRuleSet(typeCheckingMode);
|
633
|
+
}
|
634
|
+
|
635
|
+
// Absolute directory of project. All relative paths in the config
|
636
|
+
// are based on this path.
|
637
|
+
projectRoot: string;
|
638
|
+
|
639
|
+
// Path to python interpreter.
|
640
|
+
pythonPath?: string | undefined;
|
641
|
+
|
642
|
+
// Path to use for typeshed definitions.
|
643
|
+
typeshedPath?: string | undefined;
|
644
|
+
|
645
|
+
// Path to custom typings (stub) modules.
|
646
|
+
stubPath?: string | undefined;
|
647
|
+
|
648
|
+
// A list of file specs to include in the analysis. Can contain
|
649
|
+
// directories, in which case all "*.py" files within those directories
|
650
|
+
// are included.
|
651
|
+
include: FileSpec[] = [];
|
652
|
+
|
653
|
+
// A list of file specs to exclude from the analysis (overriding include
|
654
|
+
// if necessary). Can contain directories, in which case all "*.py" files
|
655
|
+
// within those directories are included.
|
656
|
+
exclude: FileSpec[] = [];
|
657
|
+
|
658
|
+
// Automatically detect virtual environment folders and exclude them.
|
659
|
+
// This property is for internal use and not exposed externally
|
660
|
+
// as a config setting.
|
661
|
+
// It is used to store whether the user has specified directories in
|
662
|
+
// the exclude setting, which is later modified to include a default set.
|
663
|
+
// This setting is true when user has not specified any exclude.
|
664
|
+
autoExcludeVenv?: boolean | undefined;
|
665
|
+
|
666
|
+
// A list of file specs whose errors and warnings should be ignored even
|
667
|
+
// if they are included in the transitive closure of included files.
|
668
|
+
ignore: FileSpec[] = [];
|
669
|
+
|
670
|
+
// A list of file specs that should be analyzed using "strict" mode.
|
671
|
+
strict: FileSpec[] = [];
|
672
|
+
|
673
|
+
// A set of defined constants that are used by the binder to determine
|
674
|
+
// whether runtime conditions should evaluate to True or False.
|
675
|
+
defineConstant = new Map<string, boolean | string>();
|
676
|
+
|
677
|
+
// Emit verbose information to console?
|
678
|
+
verboseOutput?: boolean | undefined;
|
679
|
+
|
680
|
+
// Perform type checking and report diagnostics only for open files?
|
681
|
+
checkOnlyOpenFiles?: boolean | undefined;
|
682
|
+
|
683
|
+
// In the absence of type stubs, use library implementations to extract
|
684
|
+
// type information?
|
685
|
+
useLibraryCodeForTypes?: boolean | undefined;
|
686
|
+
|
687
|
+
// Offer auto-import completions.
|
688
|
+
autoImportCompletions = true;
|
689
|
+
|
690
|
+
// Use indexing.
|
691
|
+
indexing = false;
|
692
|
+
|
693
|
+
// Use type evaluator call tracking
|
694
|
+
logTypeEvaluationTime = false;
|
695
|
+
|
696
|
+
// Minimum threshold for type eval logging
|
697
|
+
typeEvaluationTimeThreshold = 50;
|
698
|
+
|
699
|
+
// Current type checking mode.
|
700
|
+
typeCheckingMode?: string;
|
701
|
+
|
702
|
+
// Was this config initialized from JSON (pyrightconfig/pyproject)?
|
703
|
+
initializedFromJson = false;
|
704
|
+
|
705
|
+
// Should we skip analysis of all functions and methods that have
|
706
|
+
// no parameter ore return type annotations?
|
707
|
+
analyzeUnannotatedFunctions = true;
|
708
|
+
|
709
|
+
//---------------------------------------------------------------
|
710
|
+
// Diagnostics Rule Set
|
711
|
+
|
712
|
+
diagnosticRuleSet: DiagnosticRuleSet;
|
713
|
+
|
714
|
+
//---------------------------------------------------------------
|
715
|
+
// Parsing and Import Resolution Settings
|
716
|
+
|
717
|
+
// Parameters that specify the execution environment for
|
718
|
+
// the files being analyzed.
|
719
|
+
executionEnvironments: ExecutionEnvironment[] = [];
|
720
|
+
|
721
|
+
// Path to a directory containing one or more virtual environment
|
722
|
+
// directories. This is used in conjunction with the "venv" name in
|
723
|
+
// the config file to identify the python environment used for resolving
|
724
|
+
// third-party modules.
|
725
|
+
venvPath?: string | undefined;
|
726
|
+
|
727
|
+
// Default venv environment.
|
728
|
+
venv?: string | undefined;
|
729
|
+
|
730
|
+
// Default pythonVersion. Can be overridden by executionEnvironment.
|
731
|
+
defaultPythonVersion?: PythonVersion | undefined;
|
732
|
+
|
733
|
+
// Default pythonPlatform. Can be overridden by executionEnvironment.
|
734
|
+
defaultPythonPlatform?: string | undefined;
|
735
|
+
|
736
|
+
// Default extraPaths. Can be overridden by executionEnvironment.
|
737
|
+
defaultExtraPaths?: string[] | undefined;
|
738
|
+
|
739
|
+
//---------------------------------------------------------------
|
740
|
+
// Internal-only switches
|
741
|
+
|
742
|
+
// Run additional analysis as part of test cases?
|
743
|
+
internalTestMode?: boolean | undefined;
|
744
|
+
|
745
|
+
// Run program in index generation mode.
|
746
|
+
indexGenerationMode?: boolean | undefined;
|
747
|
+
|
748
|
+
// When a symbol cannot be resolved from an import, should it be
|
749
|
+
// treated as Any rather than Unknown?
|
750
|
+
evaluateUnknownImportsAsAny?: boolean;
|
751
|
+
|
752
|
+
static getDiagnosticRuleSet(typeCheckingMode?: string): DiagnosticRuleSet {
|
753
|
+
if (typeCheckingMode === 'strict') {
|
754
|
+
return getStrictDiagnosticRuleSet();
|
755
|
+
}
|
756
|
+
|
757
|
+
if (typeCheckingMode === 'off') {
|
758
|
+
return getOffDiagnosticRuleSet();
|
759
|
+
}
|
760
|
+
|
761
|
+
return getBasicDiagnosticRuleSet();
|
762
|
+
}
|
763
|
+
|
764
|
+
getDefaultExecEnvironment(): ExecutionEnvironment {
|
765
|
+
return new ExecutionEnvironment(
|
766
|
+
this.projectRoot,
|
767
|
+
this.defaultPythonVersion,
|
768
|
+
this.defaultPythonPlatform,
|
769
|
+
this.defaultExtraPaths
|
770
|
+
);
|
771
|
+
}
|
772
|
+
|
773
|
+
// Finds the best execution environment for a given file path. The
|
774
|
+
// specified file path should be absolute.
|
775
|
+
// If no matching execution environment can be found, a default
|
776
|
+
// execution environment is used.
|
777
|
+
findExecEnvironment(filePath: string): ExecutionEnvironment {
|
778
|
+
return (
|
779
|
+
this.executionEnvironments.find((env) => {
|
780
|
+
const envRoot = ensureTrailingDirectorySeparator(
|
781
|
+
normalizePath(combinePaths(this.projectRoot, env.root))
|
782
|
+
);
|
783
|
+
return filePath.startsWith(envRoot);
|
784
|
+
}) ?? this.getDefaultExecEnvironment()
|
785
|
+
);
|
786
|
+
}
|
787
|
+
|
788
|
+
getExecutionEnvironments(): ExecutionEnvironment[] {
|
789
|
+
if (this.executionEnvironments.length > 0) {
|
790
|
+
return this.executionEnvironments;
|
791
|
+
}
|
792
|
+
|
793
|
+
return [this.getDefaultExecEnvironment()];
|
794
|
+
}
|
795
|
+
|
796
|
+
// Initialize the structure from a JSON object.
|
797
|
+
initializeFromJson(
|
798
|
+
configObj: any,
|
799
|
+
typeCheckingMode: string | undefined,
|
800
|
+
console: ConsoleInterface,
|
801
|
+
fs: FileSystem,
|
802
|
+
host: Host,
|
803
|
+
diagnosticOverrides?: DiagnosticSeverityOverridesMap,
|
804
|
+
skipIncludeSection = false
|
805
|
+
) {
|
806
|
+
this.initializedFromJson = true;
|
807
|
+
|
808
|
+
// Read the "include" entry.
|
809
|
+
if (!skipIncludeSection) {
|
810
|
+
this.include = [];
|
811
|
+
if (configObj.include !== undefined) {
|
812
|
+
if (!Array.isArray(configObj.include)) {
|
813
|
+
console.error(`Config "include" entry must must contain an array.`);
|
814
|
+
} else {
|
815
|
+
const filesList = configObj.include as string[];
|
816
|
+
filesList.forEach((fileSpec, index) => {
|
817
|
+
if (typeof fileSpec !== 'string') {
|
818
|
+
console.error(`Index ${index} of "include" array should be a string.`);
|
819
|
+
} else if (isAbsolute(fileSpec)) {
|
820
|
+
console.error(`Ignoring path "${fileSpec}" in "include" array because it is not relative.`);
|
821
|
+
} else {
|
822
|
+
this.include.push(getFileSpec(fs, this.projectRoot, fileSpec));
|
823
|
+
}
|
824
|
+
});
|
825
|
+
}
|
826
|
+
}
|
827
|
+
}
|
828
|
+
|
829
|
+
// Read the "exclude" entry.
|
830
|
+
this.exclude = [];
|
831
|
+
if (configObj.exclude !== undefined) {
|
832
|
+
if (!Array.isArray(configObj.exclude)) {
|
833
|
+
console.error(`Config "exclude" entry must contain an array.`);
|
834
|
+
} else {
|
835
|
+
const filesList = configObj.exclude as string[];
|
836
|
+
filesList.forEach((fileSpec, index) => {
|
837
|
+
if (typeof fileSpec !== 'string') {
|
838
|
+
console.error(`Index ${index} of "exclude" array should be a string.`);
|
839
|
+
} else if (isAbsolute(fileSpec)) {
|
840
|
+
console.error(`Ignoring path "${fileSpec}" in "exclude" array because it is not relative.`);
|
841
|
+
} else {
|
842
|
+
this.exclude.push(getFileSpec(fs, this.projectRoot, fileSpec));
|
843
|
+
}
|
844
|
+
});
|
845
|
+
}
|
846
|
+
}
|
847
|
+
|
848
|
+
// Read the "ignore" entry.
|
849
|
+
this.ignore = [];
|
850
|
+
if (configObj.ignore !== undefined) {
|
851
|
+
if (!Array.isArray(configObj.ignore)) {
|
852
|
+
console.error(`Config "ignore" entry must contain an array.`);
|
853
|
+
} else {
|
854
|
+
const filesList = configObj.ignore as string[];
|
855
|
+
filesList.forEach((fileSpec, index) => {
|
856
|
+
if (typeof fileSpec !== 'string') {
|
857
|
+
console.error(`Index ${index} of "ignore" array should be a string.`);
|
858
|
+
} else if (isAbsolute(fileSpec)) {
|
859
|
+
console.error(`Ignoring path "${fileSpec}" in "ignore" array because it is not relative.`);
|
860
|
+
} else {
|
861
|
+
this.ignore.push(getFileSpec(fs, this.projectRoot, fileSpec));
|
862
|
+
}
|
863
|
+
});
|
864
|
+
}
|
865
|
+
}
|
866
|
+
|
867
|
+
// Read the "strict" entry.
|
868
|
+
this.strict = [];
|
869
|
+
if (configObj.strict !== undefined) {
|
870
|
+
if (!Array.isArray(configObj.strict)) {
|
871
|
+
console.error(`Config "strict" entry must contain an array.`);
|
872
|
+
} else {
|
873
|
+
const filesList = configObj.strict as string[];
|
874
|
+
filesList.forEach((fileSpec, index) => {
|
875
|
+
if (typeof fileSpec !== 'string') {
|
876
|
+
console.error(`Index ${index} of "strict" array should be a string.`);
|
877
|
+
} else if (isAbsolute(fileSpec)) {
|
878
|
+
console.error(`Ignoring path "${fileSpec}" in "strict" array because it is not relative.`);
|
879
|
+
} else {
|
880
|
+
this.strict.push(getFileSpec(fs, this.projectRoot, fileSpec));
|
881
|
+
}
|
882
|
+
});
|
883
|
+
}
|
884
|
+
}
|
885
|
+
|
886
|
+
// If there is a "typeCheckingMode", it can override the provided setting.
|
887
|
+
let configTypeCheckingMode: string | undefined;
|
888
|
+
if (configObj.typeCheckingMode !== undefined) {
|
889
|
+
if (
|
890
|
+
configObj.typeCheckingMode === 'off' ||
|
891
|
+
configObj.typeCheckingMode === 'basic' ||
|
892
|
+
configObj.typeCheckingMode === 'strict'
|
893
|
+
) {
|
894
|
+
configTypeCheckingMode = configObj.typeCheckingMode;
|
895
|
+
} else {
|
896
|
+
console.error(`Config "typeCheckingMode" entry must contain "off", "basic", or "strict".`);
|
897
|
+
}
|
898
|
+
}
|
899
|
+
|
900
|
+
if (configObj.useLibraryCodeForTypes !== undefined) {
|
901
|
+
if (typeof configObj.useLibraryCodeForTypes === 'boolean') {
|
902
|
+
this.useLibraryCodeForTypes = configObj.useLibraryCodeForTypes;
|
903
|
+
} else {
|
904
|
+
console.error(`Config "useLibraryCodeForTypes" entry must be true or false.`);
|
905
|
+
}
|
906
|
+
}
|
907
|
+
|
908
|
+
this.typeCheckingMode = configTypeCheckingMode || typeCheckingMode;
|
909
|
+
const defaultSettings = ConfigOptions.getDiagnosticRuleSet(this.typeCheckingMode);
|
910
|
+
|
911
|
+
// Start with the default values for all rules in the rule set.
|
912
|
+
this.diagnosticRuleSet = { ...defaultSettings };
|
913
|
+
|
914
|
+
// Apply host-provided overrides.
|
915
|
+
this.applyDiagnosticOverrides(diagnosticOverrides);
|
916
|
+
|
917
|
+
// Apply overrides from the config file for the boolean rules.
|
918
|
+
getBooleanDiagnosticRules(/* includeNonOverridable */ true).forEach((ruleName) => {
|
919
|
+
(this.diagnosticRuleSet as any)[ruleName] = this._convertBoolean(
|
920
|
+
configObj[ruleName],
|
921
|
+
ruleName,
|
922
|
+
this.diagnosticRuleSet[ruleName] as boolean
|
923
|
+
);
|
924
|
+
});
|
925
|
+
|
926
|
+
// Apply overrides from the config file for the diagnostic level rules.
|
927
|
+
getDiagLevelDiagnosticRules().forEach((ruleName) => {
|
928
|
+
(this.diagnosticRuleSet as any)[ruleName] = this._convertDiagnosticLevel(
|
929
|
+
configObj[ruleName],
|
930
|
+
ruleName,
|
931
|
+
this.diagnosticRuleSet[ruleName] as DiagnosticLevel
|
932
|
+
);
|
933
|
+
});
|
934
|
+
|
935
|
+
// Read the "venvPath".
|
936
|
+
this.venvPath = undefined;
|
937
|
+
if (configObj.venvPath !== undefined) {
|
938
|
+
if (typeof configObj.venvPath !== 'string') {
|
939
|
+
console.error(`Config "venvPath" field must contain a string.`);
|
940
|
+
} else {
|
941
|
+
this.venvPath = normalizePath(combinePaths(this.projectRoot, configObj.venvPath));
|
942
|
+
}
|
943
|
+
}
|
944
|
+
|
945
|
+
// Read the "venv" name.
|
946
|
+
this.venv = undefined;
|
947
|
+
if (configObj.venv !== undefined) {
|
948
|
+
if (typeof configObj.venv !== 'string') {
|
949
|
+
console.error(`Config "venv" field must contain a string.`);
|
950
|
+
} else {
|
951
|
+
this.venv = configObj.venv;
|
952
|
+
}
|
953
|
+
}
|
954
|
+
|
955
|
+
// Read the default "extraPaths".
|
956
|
+
if (configObj.extraPaths !== undefined) {
|
957
|
+
this.defaultExtraPaths = [];
|
958
|
+
if (!Array.isArray(configObj.extraPaths)) {
|
959
|
+
console.error(`Config "extraPaths" field must contain an array.`);
|
960
|
+
} else {
|
961
|
+
const pathList = configObj.extraPaths as string[];
|
962
|
+
pathList.forEach((path, pathIndex) => {
|
963
|
+
if (typeof path !== 'string') {
|
964
|
+
console.error(`Config "extraPaths" field ${pathIndex} must be a string.`);
|
965
|
+
} else {
|
966
|
+
this.defaultExtraPaths!.push(normalizePath(combinePaths(this.projectRoot, path)));
|
967
|
+
}
|
968
|
+
});
|
969
|
+
}
|
970
|
+
}
|
971
|
+
|
972
|
+
// Read the default "pythonVersion".
|
973
|
+
if (configObj.pythonVersion !== undefined) {
|
974
|
+
if (typeof configObj.pythonVersion === 'string') {
|
975
|
+
const version = versionFromString(configObj.pythonVersion);
|
976
|
+
if (version) {
|
977
|
+
this.defaultPythonVersion = version;
|
978
|
+
} else {
|
979
|
+
console.error(`Config "pythonVersion" field contains unsupported version.`);
|
980
|
+
}
|
981
|
+
} else {
|
982
|
+
console.error(`Config "pythonVersion" field must contain a string.`);
|
983
|
+
}
|
984
|
+
}
|
985
|
+
|
986
|
+
this.ensureDefaultPythonVersion(host, console);
|
987
|
+
|
988
|
+
// Read the default "pythonPlatform".
|
989
|
+
if (configObj.pythonPlatform !== undefined) {
|
990
|
+
if (typeof configObj.pythonPlatform !== 'string') {
|
991
|
+
console.error(`Config "pythonPlatform" field must contain a string.`);
|
992
|
+
} else {
|
993
|
+
this.defaultPythonPlatform = configObj.pythonPlatform;
|
994
|
+
}
|
995
|
+
}
|
996
|
+
|
997
|
+
this.ensureDefaultPythonPlatform(host, console);
|
998
|
+
|
999
|
+
// Read the "typeshedPath" setting.
|
1000
|
+
this.typeshedPath = undefined;
|
1001
|
+
if (configObj.typeshedPath !== undefined) {
|
1002
|
+
if (typeof configObj.typeshedPath !== 'string') {
|
1003
|
+
console.error(`Config "typeshedPath" field must contain a string.`);
|
1004
|
+
} else {
|
1005
|
+
this.typeshedPath = configObj.typeshedPath
|
1006
|
+
? normalizePath(combinePaths(this.projectRoot, configObj.typeshedPath))
|
1007
|
+
: '';
|
1008
|
+
}
|
1009
|
+
}
|
1010
|
+
|
1011
|
+
// Read the "stubPath" setting.
|
1012
|
+
this.stubPath = undefined;
|
1013
|
+
|
1014
|
+
// Keep this for backward compatibility
|
1015
|
+
if (configObj.typingsPath !== undefined) {
|
1016
|
+
if (typeof configObj.typingsPath !== 'string') {
|
1017
|
+
console.error(`Config "typingsPath" field must contain a string.`);
|
1018
|
+
} else {
|
1019
|
+
console.error(`Config "typingsPath" is now deprecated. Please, use stubPath instead.`);
|
1020
|
+
this.stubPath = normalizePath(combinePaths(this.projectRoot, configObj.typingsPath));
|
1021
|
+
}
|
1022
|
+
}
|
1023
|
+
|
1024
|
+
if (configObj.stubPath !== undefined) {
|
1025
|
+
if (typeof configObj.stubPath !== 'string') {
|
1026
|
+
console.error(`Config "stubPath" field must contain a string.`);
|
1027
|
+
} else {
|
1028
|
+
this.stubPath = normalizePath(combinePaths(this.projectRoot, configObj.stubPath));
|
1029
|
+
}
|
1030
|
+
}
|
1031
|
+
|
1032
|
+
// Read the "verboseOutput" setting.
|
1033
|
+
// Don't initialize to a default value because we want the command-line "verbose"
|
1034
|
+
// switch to apply if this setting isn't specified in the config file.
|
1035
|
+
if (configObj.verboseOutput !== undefined) {
|
1036
|
+
if (typeof configObj.verboseOutput !== 'boolean') {
|
1037
|
+
console.error(`Config "verboseOutput" field must be true or false.`);
|
1038
|
+
} else {
|
1039
|
+
this.verboseOutput = configObj.verboseOutput;
|
1040
|
+
}
|
1041
|
+
}
|
1042
|
+
|
1043
|
+
// Read the "defineConstant" setting.
|
1044
|
+
if (configObj.defineConstant !== undefined) {
|
1045
|
+
if (typeof configObj.defineConstant !== 'object' || Array.isArray(configObj.defineConstant)) {
|
1046
|
+
console.error(`Config "defineConstant" field must contain a map indexed by constant names.`);
|
1047
|
+
} else {
|
1048
|
+
const keys = Object.getOwnPropertyNames(configObj.defineConstant);
|
1049
|
+
keys.forEach((key) => {
|
1050
|
+
const value = configObj.defineConstant[key];
|
1051
|
+
const valueType = typeof value;
|
1052
|
+
if (valueType !== 'boolean' && valueType !== 'string') {
|
1053
|
+
console.error(`Defined constant "${key}" must be associated with a boolean or string value.`);
|
1054
|
+
} else {
|
1055
|
+
this.defineConstant.set(key, value);
|
1056
|
+
}
|
1057
|
+
});
|
1058
|
+
}
|
1059
|
+
}
|
1060
|
+
|
1061
|
+
// Read the "useLibraryCodeForTypes" setting.
|
1062
|
+
if (configObj.useLibraryCodeForTypes !== undefined) {
|
1063
|
+
if (typeof configObj.useLibraryCodeForTypes !== 'boolean') {
|
1064
|
+
console.error(`Config "useLibraryCodeForTypes" field must be true or false.`);
|
1065
|
+
} else {
|
1066
|
+
this.useLibraryCodeForTypes = configObj.useLibraryCodeForTypes;
|
1067
|
+
}
|
1068
|
+
}
|
1069
|
+
|
1070
|
+
// Read the "executionEnvironments" array. This should be done at the end
|
1071
|
+
// after we've established default values.
|
1072
|
+
this.executionEnvironments = [];
|
1073
|
+
if (configObj.executionEnvironments !== undefined) {
|
1074
|
+
if (!Array.isArray(configObj.executionEnvironments)) {
|
1075
|
+
console.error(`Config "executionEnvironments" field must contain an array.`);
|
1076
|
+
} else {
|
1077
|
+
const execEnvironments = configObj.executionEnvironments as ExecutionEnvironment[];
|
1078
|
+
execEnvironments.forEach((env, index) => {
|
1079
|
+
const execEnv = this._initExecutionEnvironmentFromJson(env, index, console);
|
1080
|
+
if (execEnv) {
|
1081
|
+
this.executionEnvironments.push(execEnv);
|
1082
|
+
}
|
1083
|
+
});
|
1084
|
+
}
|
1085
|
+
}
|
1086
|
+
|
1087
|
+
// Read the "autoImportCompletions" setting.
|
1088
|
+
if (configObj.autoImportCompletions !== undefined) {
|
1089
|
+
if (typeof configObj.autoImportCompletions !== 'boolean') {
|
1090
|
+
console.error(`Config "autoImportCompletions" field must be true or false.`);
|
1091
|
+
} else {
|
1092
|
+
this.autoImportCompletions = configObj.autoImportCompletions;
|
1093
|
+
}
|
1094
|
+
}
|
1095
|
+
|
1096
|
+
// Read the "indexing" setting.
|
1097
|
+
if (configObj.indexing !== undefined) {
|
1098
|
+
if (typeof configObj.indexing !== 'boolean') {
|
1099
|
+
console.error(`Config "indexing" field must be true or false.`);
|
1100
|
+
} else {
|
1101
|
+
this.indexing = configObj.indexing;
|
1102
|
+
}
|
1103
|
+
}
|
1104
|
+
|
1105
|
+
// Read the "logTypeEvaluationTime" setting.
|
1106
|
+
if (configObj.logTypeEvaluationTime !== undefined) {
|
1107
|
+
if (typeof configObj.logTypeEvaluationTime !== 'boolean') {
|
1108
|
+
console.error(`Config "logTypeEvaluationTime" field must be true or false.`);
|
1109
|
+
} else {
|
1110
|
+
this.logTypeEvaluationTime = configObj.logTypeEvaluationTime;
|
1111
|
+
}
|
1112
|
+
}
|
1113
|
+
|
1114
|
+
// Read the "typeEvaluationTimeThreshold" setting.
|
1115
|
+
if (configObj.typeEvaluationTimeThreshold !== undefined) {
|
1116
|
+
if (typeof configObj.typeEvaluationTimeThreshold !== 'number') {
|
1117
|
+
console.error(`Config "typeEvaluationTimeThreshold" field must be a number.`);
|
1118
|
+
} else {
|
1119
|
+
this.typeEvaluationTimeThreshold = configObj.typeEvaluationTimeThreshold;
|
1120
|
+
}
|
1121
|
+
}
|
1122
|
+
}
|
1123
|
+
|
1124
|
+
ensureDefaultPythonPlatform(host: Host, console: ConsoleInterface) {
|
1125
|
+
// If no default python platform was specified, assume that the
|
1126
|
+
// user wants to use the current platform.
|
1127
|
+
if (this.defaultPythonPlatform !== undefined) {
|
1128
|
+
return;
|
1129
|
+
}
|
1130
|
+
|
1131
|
+
this.defaultPythonPlatform = host.getPythonPlatform();
|
1132
|
+
if (this.defaultPythonPlatform !== undefined) {
|
1133
|
+
console.info(`Assuming Python platform ${this.defaultPythonPlatform}`);
|
1134
|
+
}
|
1135
|
+
}
|
1136
|
+
|
1137
|
+
ensureDefaultPythonVersion(host: Host, console: ConsoleInterface) {
|
1138
|
+
// If no default python version was specified, retrieve the version
|
1139
|
+
// from the currently-selected python interpreter.
|
1140
|
+
if (this.defaultPythonVersion !== undefined) {
|
1141
|
+
return;
|
1142
|
+
}
|
1143
|
+
|
1144
|
+
const importFailureInfo: string[] = [];
|
1145
|
+
this.defaultPythonVersion = host.getPythonVersion(this.pythonPath, importFailureInfo);
|
1146
|
+
if (this.defaultPythonVersion !== undefined) {
|
1147
|
+
console.info(`Assuming Python version ${versionToString(this.defaultPythonVersion)}`);
|
1148
|
+
}
|
1149
|
+
|
1150
|
+
for (const log of importFailureInfo) {
|
1151
|
+
console.info(log);
|
1152
|
+
}
|
1153
|
+
}
|
1154
|
+
|
1155
|
+
ensureDefaultExtraPaths(fs: FileSystem, autoSearchPaths: boolean, extraPaths: string[] | undefined) {
|
1156
|
+
const paths: string[] = [];
|
1157
|
+
|
1158
|
+
if (autoSearchPaths) {
|
1159
|
+
// Auto-detect the common scenario where the sources are under the src folder
|
1160
|
+
const srcPath = resolvePaths(this.projectRoot, pathConsts.src);
|
1161
|
+
if (fs.existsSync(srcPath) && !fs.existsSync(resolvePaths(srcPath, '__init__.py'))) {
|
1162
|
+
paths.push(srcPath);
|
1163
|
+
}
|
1164
|
+
}
|
1165
|
+
|
1166
|
+
if (extraPaths && extraPaths.length > 0) {
|
1167
|
+
for (const p of extraPaths) {
|
1168
|
+
const path = resolvePaths(this.projectRoot, p);
|
1169
|
+
paths.push(path);
|
1170
|
+
if (isDirectory(fs, path)) {
|
1171
|
+
appendArray(paths, getPathsFromPthFiles(fs, path));
|
1172
|
+
}
|
1173
|
+
}
|
1174
|
+
}
|
1175
|
+
|
1176
|
+
if (paths.length > 0) {
|
1177
|
+
this.defaultExtraPaths = paths;
|
1178
|
+
}
|
1179
|
+
}
|
1180
|
+
|
1181
|
+
applyDiagnosticOverrides(diagnosticSeverityOverrides: DiagnosticSeverityOverridesMap | undefined) {
|
1182
|
+
if (!diagnosticSeverityOverrides) {
|
1183
|
+
return;
|
1184
|
+
}
|
1185
|
+
|
1186
|
+
for (const ruleName of getDiagLevelDiagnosticRules()) {
|
1187
|
+
const severity = diagnosticSeverityOverrides[ruleName];
|
1188
|
+
if (severity !== undefined) {
|
1189
|
+
(this.diagnosticRuleSet as any)[ruleName] = severity;
|
1190
|
+
}
|
1191
|
+
}
|
1192
|
+
}
|
1193
|
+
|
1194
|
+
private _convertBoolean(value: any, fieldName: string, defaultValue: boolean): boolean {
|
1195
|
+
if (value === undefined) {
|
1196
|
+
return defaultValue;
|
1197
|
+
} else if (typeof value === 'boolean') {
|
1198
|
+
return value ? true : false;
|
1199
|
+
}
|
1200
|
+
|
1201
|
+
console.log(`Config "${fieldName}" entry must be true or false.`);
|
1202
|
+
return defaultValue;
|
1203
|
+
}
|
1204
|
+
|
1205
|
+
private _convertDiagnosticLevel(value: any, fieldName: string, defaultValue: DiagnosticLevel): DiagnosticLevel {
|
1206
|
+
if (value === undefined) {
|
1207
|
+
return defaultValue;
|
1208
|
+
} else if (typeof value === 'boolean') {
|
1209
|
+
return value ? 'error' : 'none';
|
1210
|
+
} else if (typeof value === 'string') {
|
1211
|
+
if (value === 'error' || value === 'warning' || value === 'information' || value === 'none') {
|
1212
|
+
return value;
|
1213
|
+
}
|
1214
|
+
}
|
1215
|
+
|
1216
|
+
console.log(`Config "${fieldName}" entry must be true, false, "error", "warning", "information" or "none".`);
|
1217
|
+
return defaultValue;
|
1218
|
+
}
|
1219
|
+
|
1220
|
+
private _initExecutionEnvironmentFromJson(
|
1221
|
+
envObj: any,
|
1222
|
+
index: number,
|
1223
|
+
console: ConsoleInterface
|
1224
|
+
): ExecutionEnvironment | undefined {
|
1225
|
+
try {
|
1226
|
+
const newExecEnv = new ExecutionEnvironment(
|
1227
|
+
this.projectRoot,
|
1228
|
+
this.defaultPythonVersion,
|
1229
|
+
this.defaultPythonPlatform,
|
1230
|
+
this.defaultExtraPaths
|
1231
|
+
);
|
1232
|
+
|
1233
|
+
// Validate the root.
|
1234
|
+
if (envObj.root && typeof envObj.root === 'string') {
|
1235
|
+
newExecEnv.root = normalizePath(combinePaths(this.projectRoot, envObj.root));
|
1236
|
+
} else {
|
1237
|
+
console.error(`Config executionEnvironments index ${index}: missing root value.`);
|
1238
|
+
}
|
1239
|
+
|
1240
|
+
// Validate the extraPaths.
|
1241
|
+
if (envObj.extraPaths) {
|
1242
|
+
if (!Array.isArray(envObj.extraPaths)) {
|
1243
|
+
console.error(
|
1244
|
+
`Config executionEnvironments index ${index}: extraPaths field must contain an array.`
|
1245
|
+
);
|
1246
|
+
} else {
|
1247
|
+
const pathList = envObj.extraPaths as string[];
|
1248
|
+
pathList.forEach((path, pathIndex) => {
|
1249
|
+
if (typeof path !== 'string') {
|
1250
|
+
console.error(
|
1251
|
+
`Config executionEnvironments index ${index}:` +
|
1252
|
+
` extraPaths field ${pathIndex} must be a string.`
|
1253
|
+
);
|
1254
|
+
} else {
|
1255
|
+
newExecEnv.extraPaths.push(normalizePath(combinePaths(this.projectRoot, path)));
|
1256
|
+
}
|
1257
|
+
});
|
1258
|
+
}
|
1259
|
+
}
|
1260
|
+
|
1261
|
+
// Validate the pythonVersion.
|
1262
|
+
if (envObj.pythonVersion) {
|
1263
|
+
if (typeof envObj.pythonVersion === 'string') {
|
1264
|
+
const version = versionFromString(envObj.pythonVersion);
|
1265
|
+
if (version) {
|
1266
|
+
newExecEnv.pythonVersion = version;
|
1267
|
+
} else {
|
1268
|
+
console.warn(`Config executionEnvironments index ${index} contains unsupported pythonVersion.`);
|
1269
|
+
}
|
1270
|
+
} else {
|
1271
|
+
console.error(`Config executionEnvironments index ${index} pythonVersion must be a string.`);
|
1272
|
+
}
|
1273
|
+
}
|
1274
|
+
|
1275
|
+
// Validate the pythonPlatform.
|
1276
|
+
if (envObj.pythonPlatform) {
|
1277
|
+
if (typeof envObj.pythonPlatform === 'string') {
|
1278
|
+
newExecEnv.pythonPlatform = envObj.pythonPlatform;
|
1279
|
+
} else {
|
1280
|
+
console.error(`Config executionEnvironments index ${index} pythonPlatform must be a string.`);
|
1281
|
+
}
|
1282
|
+
}
|
1283
|
+
|
1284
|
+
return newExecEnv;
|
1285
|
+
} catch {
|
1286
|
+
console.error(`Config executionEnvironments index ${index} is not accessible.`);
|
1287
|
+
}
|
1288
|
+
|
1289
|
+
return undefined;
|
1290
|
+
}
|
1291
|
+
}
|