@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.
Files changed (1265) hide show
  1. package/package.json +3 -2
  2. package/src/analyzer/aliasDeclarationUtils.ts +169 -0
  3. package/src/analyzer/analysis.ts +92 -0
  4. package/src/analyzer/analyzerFileInfo.ts +56 -0
  5. package/src/analyzer/analyzerNodeInfo.ts +198 -0
  6. package/src/analyzer/backgroundAnalysisProgram.ts +311 -0
  7. package/src/analyzer/binder.ts +4081 -0
  8. package/src/analyzer/checker.ts +5507 -0
  9. package/src/analyzer/circularDependency.ts +52 -0
  10. package/src/analyzer/codeFlowEngine.ts +1548 -0
  11. package/src/analyzer/codeFlowTypes.ts +266 -0
  12. package/src/analyzer/codeFlowUtils.ts +436 -0
  13. package/src/analyzer/commentUtils.ts +174 -0
  14. package/src/analyzer/constraintSolver.ts +926 -0
  15. package/src/analyzer/constructorTransform.ts +317 -0
  16. package/src/analyzer/dataClasses.ts +999 -0
  17. package/src/analyzer/declaration.ts +252 -0
  18. package/src/analyzer/declarationUtils.ts +238 -0
  19. package/src/analyzer/docStringConversion.ts +850 -0
  20. package/src/analyzer/docStringUtils.ts +112 -0
  21. package/src/analyzer/functionTransform.ts +137 -0
  22. package/src/analyzer/importResolver.ts +2308 -0
  23. package/src/analyzer/importResult.ts +98 -0
  24. package/src/analyzer/importStatementUtils.ts +834 -0
  25. package/src/analyzer/namedTuples.ts +422 -0
  26. package/src/analyzer/packageTypeReport.ts +108 -0
  27. package/src/analyzer/packageTypeVerifier.ts +1466 -0
  28. package/src/analyzer/parentDirectoryCache.ts +88 -0
  29. package/src/analyzer/parseTreeCleaner.ts +35 -0
  30. package/src/analyzer/parseTreeUtils.ts +2165 -0
  31. package/src/analyzer/parseTreeWalker.ts +663 -0
  32. package/src/analyzer/patternMatching.ts +1356 -0
  33. package/src/analyzer/program.ts +2778 -0
  34. package/src/analyzer/properties.ts +534 -0
  35. package/src/analyzer/protocols.ts +660 -0
  36. package/src/analyzer/pyTypedUtils.ts +52 -0
  37. package/src/analyzer/pythonPathUtils.ts +201 -0
  38. package/src/analyzer/scope.ts +202 -0
  39. package/src/analyzer/scopeUtils.ts +81 -0
  40. package/src/analyzer/service.ts +1679 -0
  41. package/src/analyzer/sourceFile.ts +1401 -0
  42. package/src/analyzer/sourceMapper.ts +717 -0
  43. package/src/analyzer/staticExpressions.ts +308 -0
  44. package/src/analyzer/symbol.ts +249 -0
  45. package/src/analyzer/symbolNameUtils.ts +50 -0
  46. package/src/analyzer/symbolUtils.ts +49 -0
  47. package/src/analyzer/testWalker.ts +101 -0
  48. package/src/analyzer/tracePrinter.ts +264 -0
  49. package/src/analyzer/typeCache.ts +181 -0
  50. package/src/analyzer/typeDocStringUtils.ts +371 -0
  51. package/src/analyzer/typeEvaluator.ts +23395 -0
  52. package/src/analyzer/typeEvaluatorTypes.ts +452 -0
  53. package/src/analyzer/typeEvaluatorWithTracker.ts +161 -0
  54. package/src/analyzer/typeGuards.ts +1828 -0
  55. package/src/analyzer/typePrinter.ts +807 -0
  56. package/src/analyzer/typeStubWriter.ts +727 -0
  57. package/src/analyzer/typeUtils.ts +3126 -0
  58. package/src/analyzer/typeVarContext.ts +330 -0
  59. package/src/analyzer/typedDicts.ts +950 -0
  60. package/src/analyzer/types.ts +2857 -0
  61. package/src/backgroundAnalysis.ts +49 -0
  62. package/src/backgroundAnalysisBase.ts +606 -0
  63. package/src/backgroundThreadBase.ts +143 -0
  64. package/src/commands/commandController.ts +62 -0
  65. package/src/commands/commandResult.ts +21 -0
  66. package/src/commands/commands.ts +16 -0
  67. package/src/commands/createTypeStub.ts +56 -0
  68. package/src/commands/quickActionCommand.ts +40 -0
  69. package/src/commands/restartServer.ts +20 -0
  70. package/src/common/cancellationUtils.ts +71 -0
  71. package/src/common/chokidarFileWatcherProvider.ts +74 -0
  72. package/src/common/collectionUtils.ts +379 -0
  73. package/src/common/commandLineOptions.ts +132 -0
  74. package/src/common/configOptions.ts +1291 -0
  75. package/src/common/console.ts +201 -0
  76. package/src/common/core.ts +152 -0
  77. package/src/common/crypto.ts +60 -0
  78. package/src/common/debug.ts +144 -0
  79. package/src/common/deferred.ts +78 -0
  80. package/src/common/diagnostic.ts +191 -0
  81. package/src/common/diagnosticRules.ts +80 -0
  82. package/src/common/diagnosticSink.ts +150 -0
  83. package/src/common/editAction.ts +46 -0
  84. package/src/common/extensibility.ts +35 -0
  85. package/src/common/extensions.ts +21 -0
  86. package/src/common/fileBasedCancellationUtils.ts +274 -0
  87. package/src/common/fileSystem.ts +152 -0
  88. package/src/common/fullAccessHost.ts +203 -0
  89. package/src/common/host.ts +49 -0
  90. package/src/common/logTracker.ts +157 -0
  91. package/src/common/lspUtils.ts +18 -0
  92. package/src/common/memUtils.ts +36 -0
  93. package/src/common/pathConsts.ts +16 -0
  94. package/src/common/pathUtils.ts +987 -0
  95. package/src/common/positionUtils.ts +78 -0
  96. package/src/common/progressReporter.ts +53 -0
  97. package/src/common/pythonVersion.ts +74 -0
  98. package/src/common/realFileSystem.ts +433 -0
  99. package/src/common/stringUtils.ts +161 -0
  100. package/src/common/textEditUtils.ts +31 -0
  101. package/src/common/textRange.ts +225 -0
  102. package/src/common/textRangeCollection.ts +122 -0
  103. package/src/common/timing.ts +105 -0
  104. package/src/common/uriParser.ts +26 -0
  105. package/src/common/workspaceEditUtils.ts +100 -0
  106. package/src/languageServerBase.ts +1556 -0
  107. package/src/languageService/analyzerServiceExecutor.ts +144 -0
  108. package/src/languageService/autoImporter.ts +926 -0
  109. package/src/languageService/callHierarchyProvider.ts +476 -0
  110. package/src/languageService/codeActionProvider.ts +85 -0
  111. package/src/languageService/completionProvider.ts +3103 -0
  112. package/src/languageService/definitionProvider.ts +235 -0
  113. package/src/languageService/documentHighlightProvider.ts +61 -0
  114. package/src/languageService/documentSymbolCollector.ts +466 -0
  115. package/src/languageService/documentSymbolProvider.ts +466 -0
  116. package/src/languageService/hoverProvider.ts +499 -0
  117. package/src/languageService/importAdder.ts +437 -0
  118. package/src/languageService/importSorter.ts +196 -0
  119. package/src/languageService/indentationUtils.ts +813 -0
  120. package/src/languageService/quickActions.ts +113 -0
  121. package/src/languageService/referencesProvider.ts +316 -0
  122. package/src/languageService/renameModuleProvider.ts +1400 -0
  123. package/src/languageService/signatureHelpProvider.ts +227 -0
  124. package/src/languageService/tooltipUtils.ts +147 -0
  125. package/src/localization/localize.ts +1272 -0
  126. package/src/localization/package.nls.de.json +3 -0
  127. package/src/localization/package.nls.en-us.json +636 -0
  128. package/src/localization/package.nls.es.json +3 -0
  129. package/src/localization/package.nls.fr.json +3 -0
  130. package/src/localization/package.nls.ja.json +3 -0
  131. package/src/localization/package.nls.ru.json +3 -0
  132. package/src/localization/package.nls.zh-cn.json +3 -0
  133. package/src/localization/package.nls.zh-tw.json +3 -0
  134. package/src/nodeMain.ts +21 -0
  135. package/src/nodeServer.ts +30 -0
  136. package/src/parser/characterStream.ts +145 -0
  137. package/src/parser/characters.ts +285 -0
  138. package/src/parser/parseNodes.ts +2338 -0
  139. package/src/parser/parser.ts +4859 -0
  140. package/src/parser/stringTokenUtils.ts +564 -0
  141. package/src/parser/tokenizer.ts +1379 -0
  142. package/src/parser/tokenizerTypes.ts +420 -0
  143. package/src/parser/unicode.ts +2917 -0
  144. package/src/pyright.ts +824 -0
  145. package/src/pyrightFileSystem.ts +237 -0
  146. package/src/readonlyAugmentedFileSystem.ts +204 -0
  147. package/src/server.ts +298 -0
  148. package/src/tests/chainedSourceFiles.test.ts +183 -0
  149. package/src/tests/checker.test.ts +445 -0
  150. package/src/tests/collectionUtils.test.ts +178 -0
  151. package/src/tests/common.test.ts +117 -0
  152. package/src/tests/config.test.ts +291 -0
  153. package/src/tests/debug.test.ts +120 -0
  154. package/src/tests/deferred.test.ts +54 -0
  155. package/src/tests/diagnosticOverrides.test.ts +104 -0
  156. package/src/tests/docStringConversion.test.ts +823 -0
  157. package/src/tests/docStringUtils.test.ts +57 -0
  158. package/src/tests/documentSymbolCollector.test.ts +735 -0
  159. package/src/tests/filesystem.test.ts +215 -0
  160. package/src/tests/fourSlashParser.test.ts +330 -0
  161. package/src/tests/fourSlashRunner.test.ts +36 -0
  162. package/src/tests/fourslash/completions.autoimport.Lib.Found.Type.fourslash.ts +33 -0
  163. package/src/tests/fourslash/completions.autoimport.Lib.Found.duplication.fourslash.ts +47 -0
  164. package/src/tests/fourslash/completions.autoimport.Lib.NotFound.fourslash.ts +14 -0
  165. package/src/tests/fourslash/completions.autoimport.disabled.fourslash.ts +25 -0
  166. package/src/tests/fourslash/completions.autoimport.duplicates.fourslash.ts +36 -0
  167. package/src/tests/fourslash/completions.autoimport.fourslash.ts +29 -0
  168. package/src/tests/fourslash/completions.autoimport.fromImport.fourslash.ts +130 -0
  169. package/src/tests/fourslash/completions.autoimport.plainText.fourslash.ts +29 -0
  170. package/src/tests/fourslash/completions.autoimport.shadow.fourslash.ts +48 -0
  171. package/src/tests/fourslash/completions.autoimport.submodule.fourslash.ts +31 -0
  172. package/src/tests/fourslash/completions.autoimport.topLevel.fourslash.ts +57 -0
  173. package/src/tests/fourslash/completions.builtinDocstrings.fourslash.ts +117 -0
  174. package/src/tests/fourslash/completions.builtinOverride.fourslash.ts +22 -0
  175. package/src/tests/fourslash/completions.call.stringLiteral.fourslash.ts +55 -0
  176. package/src/tests/fourslash/completions.call.typedDict.fourslash.ts +247 -0
  177. package/src/tests/fourslash/completions.call.typedDict.list.fourslash.ts +163 -0
  178. package/src/tests/fourslash/completions.call.typedDict.states.fourslash.ts +135 -0
  179. package/src/tests/fourslash/completions.classVariable.fourslash.ts +37 -0
  180. package/src/tests/fourslash/completions.comment.fourslash.ts +28 -0
  181. package/src/tests/fourslash/completions.declNames.class.fourslash.ts +35 -0
  182. package/src/tests/fourslash/completions.declNames.exception.fourslash.ts +18 -0
  183. package/src/tests/fourslash/completions.declNames.for.fourslash.ts +30 -0
  184. package/src/tests/fourslash/completions.declNames.importAlias.fourslash.ts +15 -0
  185. package/src/tests/fourslash/completions.declNames.lambda.fourslash.ts +45 -0
  186. package/src/tests/fourslash/completions.declNames.method.fourslash.ts +71 -0
  187. package/src/tests/fourslash/completions.declNames.overload.fourslash.ts +156 -0
  188. package/src/tests/fourslash/completions.declNames.topLevelOverload.fourslash.ts +141 -0
  189. package/src/tests/fourslash/completions.dictionary.keys.complex.fourslash.ts +76 -0
  190. package/src/tests/fourslash/completions.dictionary.keys.expression.fourslash.ts +63 -0
  191. package/src/tests/fourslash/completions.dictionary.keys.literalTypes.fourslash.ts +161 -0
  192. package/src/tests/fourslash/completions.dictionary.keys.simple.fourslash.ts +151 -0
  193. package/src/tests/fourslash/completions.dictionary.keys.stringLiterals.fourslash.ts +116 -0
  194. package/src/tests/fourslash/completions.dictionary.keys.symbols.fourslash.ts +53 -0
  195. package/src/tests/fourslash/completions.enums.members.fourslash.ts +44 -0
  196. package/src/tests/fourslash/completions.excluded.fourslash.ts +12 -0
  197. package/src/tests/fourslash/completions.fourslash.ts +51 -0
  198. package/src/tests/fourslash/completions.fstring.fourslash.ts +33 -0
  199. package/src/tests/fourslash/completions.fstring.stringLiteral.fourslash.ts +96 -0
  200. package/src/tests/fourslash/completions.fuzzyMatching.fourslash.ts +30 -0
  201. package/src/tests/fourslash/completions.importDunderNames.fourslash.ts +31 -0
  202. package/src/tests/fourslash/completions.importSubmodule.fourslash.ts +26 -0
  203. package/src/tests/fourslash/completions.importsDuplicates.fourslash.ts +23 -0
  204. package/src/tests/fourslash/completions.inList.fourslash.ts +33 -0
  205. package/src/tests/fourslash/completions.included.fourslash.ts +12 -0
  206. package/src/tests/fourslash/completions.indexer.keys.getitem.fourslash.ts +57 -0
  207. package/src/tests/fourslash/completions.inherited.function.docFromStub.fourslash.ts +28 -0
  208. package/src/tests/fourslash/completions.inherited.overload.docFromScrWithStub.fourslash.ts +52 -0
  209. package/src/tests/fourslash/completions.inherited.overload.docFromStub.fourslash.ts +53 -0
  210. package/src/tests/fourslash/completions.inherited.property.docFromSrc.fourslash.ts +104 -0
  211. package/src/tests/fourslash/completions.inherited.property.docFromStub.fourslash.ts +108 -0
  212. package/src/tests/fourslash/completions.keywords.pythonVersion.fourslash.ts +72 -0
  213. package/src/tests/fourslash/completions.libCodeAndStub.fourslash.ts +79 -0
  214. package/src/tests/fourslash/completions.libCodeNoStub.fourslash.ts +69 -0
  215. package/src/tests/fourslash/completions.libStub.fourslash.ts +69 -0
  216. package/src/tests/fourslash/completions.literals.fourslash.ts +33 -0
  217. package/src/tests/fourslash/completions.localCode.fourslash.ts +74 -0
  218. package/src/tests/fourslash/completions.moduleContext.UnknownMemberOnInstance.fourslash.ts +17 -0
  219. package/src/tests/fourslash/completions.moduleContext.UnknownStaticFunctionOnClass.fourslash.ts +57 -0
  220. package/src/tests/fourslash/completions.moduleContext.libCodeNoStub.fourslash.ts +30 -0
  221. package/src/tests/fourslash/completions.overloads.fourslash.ts +40 -0
  222. package/src/tests/fourslash/completions.override.default.fourslash.ts +47 -0
  223. package/src/tests/fourslash/completions.override.default.importStub.ts +50 -0
  224. package/src/tests/fourslash/completions.override.default.imported.fourslash.ts +61 -0
  225. package/src/tests/fourslash/completions.override.default.stub.fourslash.ts +47 -0
  226. package/src/tests/fourslash/completions.override.fourslash.ts +47 -0
  227. package/src/tests/fourslash/completions.override.property.fourslash.ts +31 -0
  228. package/src/tests/fourslash/completions.override.property.stub.fourslash.ts +31 -0
  229. package/src/tests/fourslash/completions.override.staticAndClassmethod.fourslash.ts +64 -0
  230. package/src/tests/fourslash/completions.override.stub.fourslash.ts +47 -0
  231. package/src/tests/fourslash/completions.override2.fourslash.ts +71 -0
  232. package/src/tests/fourslash/completions.parameters.fourslash.ts +23 -0
  233. package/src/tests/fourslash/completions.params.fourslash.ts +24 -0
  234. package/src/tests/fourslash/completions.parentFolder.fourslash.ts +17 -0
  235. package/src/tests/fourslash/completions.parentFolders.fourslash.ts +77 -0
  236. package/src/tests/fourslash/completions.plainText.fourslash.ts +34 -0
  237. package/src/tests/fourslash/completions.private.fourslash.ts +64 -0
  238. package/src/tests/fourslash/completions.property.fourslash.ts +28 -0
  239. package/src/tests/fourslash/completions.propertyDocStrings.fourslash.ts +64 -0
  240. package/src/tests/fourslash/completions.self.fourslash.ts +43 -0
  241. package/src/tests/fourslash/completions.stringLiteral.escape.fourslash.ts +71 -0
  242. package/src/tests/fourslash/completions.stringLiteral.fourslash.ts +79 -0
  243. package/src/tests/fourslash/completions.typeAlias.fourslash.ts +29 -0
  244. package/src/tests/fourslash/completions.typeshed.fourslash.ts +9 -0
  245. package/src/tests/fourslash/completions.vardecls.fourslash.ts +40 -0
  246. package/src/tests/fourslash/completions.variableDocStrings.fourslash.ts +69 -0
  247. package/src/tests/fourslash/completions.wildcardimports.fourslash.ts +116 -0
  248. package/src/tests/fourslash/completions.with.fourslash.ts +26 -0
  249. package/src/tests/fourslash/diagnostics.missingModuleSource.fourslash.ts +69 -0
  250. package/src/tests/fourslash/findDefinitions.builtinClass.fourslash.ts +29 -0
  251. package/src/tests/fourslash/findDefinitions.classes.fourslash.ts +101 -0
  252. package/src/tests/fourslash/findDefinitions.definitionFilter.preferSource.fourslash.ts +29 -0
  253. package/src/tests/fourslash/findDefinitions.definitionFilter.preferSource.onlyStubs.ts +24 -0
  254. package/src/tests/fourslash/findDefinitions.definitionFilter.preferStub.fourslash.ts +29 -0
  255. package/src/tests/fourslash/findDefinitions.definitionFilter.preferStub.onlySource.fourslash.ts +25 -0
  256. package/src/tests/fourslash/findDefinitions.fields.fourslash.ts +131 -0
  257. package/src/tests/fourslash/findDefinitions.functions.fourslash.ts +87 -0
  258. package/src/tests/fourslash/findDefinitions.methods.fourslash.ts +162 -0
  259. package/src/tests/fourslash/findDefinitions.modules.fourslash.ts +50 -0
  260. package/src/tests/fourslash/findDefinitions.namespaceImport.fourslash.ts +40 -0
  261. package/src/tests/fourslash/findDefinitions.overloads.fourslash.ts +223 -0
  262. package/src/tests/fourslash/findDefinitions.parameters.fourslash.ts +162 -0
  263. package/src/tests/fourslash/findDefinitions.sourceAndStub.function.fourslash.ts +26 -0
  264. package/src/tests/fourslash/findDefinitions.sourceAndStub.innerClass.fourslash.ts +32 -0
  265. package/src/tests/fourslash/findDefinitions.sourceAndStub.innerClassMethod.fourslash.ts +33 -0
  266. package/src/tests/fourslash/findDefinitions.sourceAndStub.outerClass.fourslash.ts +28 -0
  267. package/src/tests/fourslash/findDefinitions.sourceAndStub.outerClassMethod.fourslash.ts +29 -0
  268. package/src/tests/fourslash/findDefinitions.sourceAndStub.outerClassPropertyReadOnly.fourslash.ts +31 -0
  269. package/src/tests/fourslash/findDefinitions.sourceAndStub.outerClassPropertyReadWrite.fourslash.ts +36 -0
  270. package/src/tests/fourslash/findDefinitions.sourceOnly.class.fourslash.ts +29 -0
  271. package/src/tests/fourslash/findDefinitions.sourceOnly.function1.fourslash.ts +28 -0
  272. package/src/tests/fourslash/findDefinitions.sourceOnly.function2.fourslash.ts +28 -0
  273. package/src/tests/fourslash/findDefinitions.sourceOnly.relativeImport1.fourslash.ts +22 -0
  274. package/src/tests/fourslash/findDefinitions.sourceOnly.relativeImport2.fourslash.ts +22 -0
  275. package/src/tests/fourslash/findDefinitions.stubOnly.fourslash.ts +61 -0
  276. package/src/tests/fourslash/findDefinitions.stubPackages.fourslash.ts +71 -0
  277. package/src/tests/fourslash/findDefinitions.typedDict.keys.fourslash.ts +99 -0
  278. package/src/tests/fourslash/findDefinitions.variables.fourslash.ts +88 -0
  279. package/src/tests/fourslash/findDefinitions.wildcardimports.fourslash.ts +117 -0
  280. package/src/tests/fourslash/findTypeDefinitions.builtinClass.fourslash.ts +26 -0
  281. package/src/tests/fourslash/findTypeDefinitions.classes.fourslash.ts +72 -0
  282. package/src/tests/fourslash/findTypeDefinitions.unions.fourslash.ts +26 -0
  283. package/src/tests/fourslash/findallreferences.classPropertyReadWrite.ts +39 -0
  284. package/src/tests/fourslash/findallreferences.fourslash.ts +34 -0
  285. package/src/tests/fourslash/findallreferences.importalias.fourslash.ts +34 -0
  286. package/src/tests/fourslash/findallreferences.invokedFromLibrary.fourslash.ts +52 -0
  287. package/src/tests/fourslash/findallreferences.module.nested.fourslash.ts +67 -0
  288. package/src/tests/fourslash/findallreferences.modules.duplicated.fourslash.ts +59 -0
  289. package/src/tests/fourslash/findallreferences.modules.fourslash.ts +46 -0
  290. package/src/tests/fourslash/findallreferences.modules.shadow.fourslash.ts +95 -0
  291. package/src/tests/fourslash/findallreferences.openFiles.fourslash.ts +37 -0
  292. package/src/tests/fourslash/findallreferences.parameter.fourslash.ts +24 -0
  293. package/src/tests/fourslash/findallreferences.sourceAndStub.class.fourslash.ts +33 -0
  294. package/src/tests/fourslash/findallreferences.sourceAndStub.classMethod.fourslash.ts +37 -0
  295. package/src/tests/fourslash/findallreferences.sourceAndStub.classPropertyReadOnly.fourslash.ts +40 -0
  296. package/src/tests/fourslash/findallreferences.sourceAndStub.classPropertyReadWrite.fourslash.skip.ts +48 -0
  297. package/src/tests/fourslash/findallreferences.sourceAndStub.function.fourslash.ts +35 -0
  298. package/src/tests/fourslash/findallreferences.variable.fourslash.ts +24 -0
  299. package/src/tests/fourslash/fourslash.ts +411 -0
  300. package/src/tests/fourslash/highlightreferences.attributes.fourslash.ts +31 -0
  301. package/src/tests/fourslash/hover.builtinDocstrings.fourslash.ts +64 -0
  302. package/src/tests/fourslash/hover.classNoInit.fourslash.ts +14 -0
  303. package/src/tests/fourslash/hover.docFromScr.stringFormat.fourslash.ts +52 -0
  304. package/src/tests/fourslash/hover.docFromSrc.fourslash.ts +83 -0
  305. package/src/tests/fourslash/hover.docFromSrc.pkg-vs-module1.fourslash.ts +26 -0
  306. package/src/tests/fourslash/hover.docFromSrc.pkg-vs-module2.fourslash.ts +26 -0
  307. package/src/tests/fourslash/hover.docFromSrc.relativeImport1.fourslash.ts +23 -0
  308. package/src/tests/fourslash/hover.docFromSrc.relativeImport2.fourslash.ts +22 -0
  309. package/src/tests/fourslash/hover.docFromSrc.relativeImport3.fourslash.ts +46 -0
  310. package/src/tests/fourslash/hover.docFromSrc.stubs-package.fourslash.ts +29 -0
  311. package/src/tests/fourslash/hover.docFromSrc.typeshed.fourslash.ts +20 -0
  312. package/src/tests/fourslash/hover.docstring.links.fourslash.ts +12 -0
  313. package/src/tests/fourslash/hover.docstring.overloads.fourslash.ts +41 -0
  314. package/src/tests/fourslash/hover.docstring.split.fourslash.ts +24 -0
  315. package/src/tests/fourslash/hover.fourslash.ts +20 -0
  316. package/src/tests/fourslash/hover.import.django.view.fourslash.ts +27 -0
  317. package/src/tests/fourslash/hover.import.fourslash.ts +11 -0
  318. package/src/tests/fourslash/hover.inherited.docFromSrc.fourslash.ts +63 -0
  319. package/src/tests/fourslash/hover.inherited.docFromSrcWithStub.fourslash.ts +54 -0
  320. package/src/tests/fourslash/hover.inherited.docFromStub.fourslash.ts +42 -0
  321. package/src/tests/fourslash/hover.inherited.overload.docFromSrcWithStub.fourslash.ts +46 -0
  322. package/src/tests/fourslash/hover.inherited.overload.docFromStub.fourslash.ts +47 -0
  323. package/src/tests/fourslash/hover.inherited.property.docFromSrcWithStub.fourslash.ts +87 -0
  324. package/src/tests/fourslash/hover.inherited.property.docFromStub.fourslash.ts +91 -0
  325. package/src/tests/fourslash/hover.init.fourslash.ts +39 -0
  326. package/src/tests/fourslash/hover.libCodeAndStub.fourslash.ts +52 -0
  327. package/src/tests/fourslash/hover.libCodeNoStub.fourslash.ts +41 -0
  328. package/src/tests/fourslash/hover.libStub.fourslash.ts +41 -0
  329. package/src/tests/fourslash/hover.optionalAliasParameter.fourslash.ts +14 -0
  330. package/src/tests/fourslash/hover.plainText.fourslash.ts +21 -0
  331. package/src/tests/fourslash/hover.typedDict.key.fourslash.ts +51 -0
  332. package/src/tests/fourslash/hover.variable.docString.fourslash.ts +41 -0
  333. package/src/tests/fourslash/hover.wildcardimports.fourslash.ts +80 -0
  334. package/src/tests/fourslash/import.publicSymbols.fourslash.ts +65 -0
  335. package/src/tests/fourslash/import.pytyped.dunderAll.fourslash.ts +77 -0
  336. package/src/tests/fourslash/import.pytyped.privateSymbols.fourslash.ts +65 -0
  337. package/src/tests/fourslash/import.pytyped.typeCheckingBasic.fourslash.ts +38 -0
  338. package/src/tests/fourslash/import.pytyped.typeCheckingOff.fourslash.ts +38 -0
  339. package/src/tests/fourslash/import.wildcard.fourslash.ts +27 -0
  340. package/src/tests/fourslash/importnotresolved.fourslash.ts +13 -0
  341. package/src/tests/fourslash/missingModuleSource.disablingInStrictMode.fourslash.ts +20 -0
  342. package/src/tests/fourslash/missingModuleSource.fourslash.ts +14 -0
  343. package/src/tests/fourslash/missingTypeStub.codeAction.fourslash.ts +33 -0
  344. package/src/tests/fourslash/missingTypeStub.command.multipart.fourslash.ts +48 -0
  345. package/src/tests/fourslash/missingTypeStub.command.singlefile.fourslash.ts +38 -0
  346. package/src/tests/fourslash/missingTypeStub.command.singlepart.fourslash.ts +38 -0
  347. package/src/tests/fourslash/missingTypeStub.fourslash.ts +20 -0
  348. package/src/tests/fourslash/missingTypeStub.invokeCodeAction.fourslash.ts +36 -0
  349. package/src/tests/fourslash/noerrors.fourslash.ts +9 -0
  350. package/src/tests/fourslash/orderImports1.command.fourslash.ts +20 -0
  351. package/src/tests/fourslash/orderImports2.command.fourslash.ts +24 -0
  352. package/src/tests/fourslash/rename.externallyHidden.fourslash.ts +24 -0
  353. package/src/tests/fourslash/rename.externallyHidden.params.fourslash.ts +24 -0
  354. package/src/tests/fourslash/rename.fourslash.ts +29 -0
  355. package/src/tests/fourslash/rename.library.fourslash.ts +29 -0
  356. package/src/tests/fourslash/rename.library.sourceAndStub.fourslash.ts +33 -0
  357. package/src/tests/fourslash/rename.multipleDecl.fourslash.ts +21 -0
  358. package/src/tests/fourslash/rename.sourceAndStub.fourslash.ts +37 -0
  359. package/src/tests/fourslash/rename.string.excluded.fourslash.ts +43 -0
  360. package/src/tests/fourslash/rename.string.fourslash.ts +26 -0
  361. package/src/tests/fourslash/signature.builtinDocstrings.fourslash.ts +63 -0
  362. package/src/tests/fourslash/signature.complicated.fourslash.ts +100 -0
  363. package/src/tests/fourslash/signature.cornercases.fourslash.ts +23 -0
  364. package/src/tests/fourslash/signature.docstrings.fourslash.ts +43 -0
  365. package/src/tests/fourslash/signature.docstrings.overloaded.fourslash.ts +50 -0
  366. package/src/tests/fourslash/signature.docstrings.wildcardimports.fourslash.ts +122 -0
  367. package/src/tests/fourslash/signature.overload.fourslash.ts +64 -0
  368. package/src/tests/fourslash/signature.simple.fourslash.ts +104 -0
  369. package/src/tests/harness/fourslash/fourSlashParser.ts +441 -0
  370. package/src/tests/harness/fourslash/fourSlashTypes.ts +134 -0
  371. package/src/tests/harness/fourslash/runner.ts +99 -0
  372. package/src/tests/harness/fourslash/testLanguageService.ts +142 -0
  373. package/src/tests/harness/fourslash/testState.Consts.ts +29 -0
  374. package/src/tests/harness/fourslash/testState.ts +1993 -0
  375. package/src/tests/harness/testAccessHost.ts +23 -0
  376. package/src/tests/harness/testHost.ts +177 -0
  377. package/src/tests/harness/utils.ts +355 -0
  378. package/src/tests/harness/vfs/factory.ts +199 -0
  379. package/src/tests/harness/vfs/filesystem.ts +1893 -0
  380. package/src/tests/harness/vfs/pathValidation.ts +154 -0
  381. package/src/tests/importAdder.test.ts +1361 -0
  382. package/src/tests/importResolver.test.ts +534 -0
  383. package/src/tests/importStatementUtils.test.ts +526 -0
  384. package/src/tests/indentationUtils.ptvs.test.ts +388 -0
  385. package/src/tests/indentationUtils.reindent.test.ts +403 -0
  386. package/src/tests/indentationUtils.test.ts +455 -0
  387. package/src/tests/ipythonMode.test.ts +365 -0
  388. package/src/tests/localizer.test.ts +47 -0
  389. package/src/tests/parseTreeUtils.test.ts +281 -0
  390. package/src/tests/parser.test.ts +99 -0
  391. package/src/tests/pathUtils.test.ts +321 -0
  392. package/src/tests/pyrightFileSystem.test.ts +183 -0
  393. package/src/tests/renameModule.folder.test.ts +261 -0
  394. package/src/tests/renameModule.fromImports.test.ts +952 -0
  395. package/src/tests/renameModule.imports.test.ts +450 -0
  396. package/src/tests/renameModule.misc.test.ts +765 -0
  397. package/src/tests/renameModule.relativePath.test.ts +277 -0
  398. package/src/tests/renameModuleTestUtils.ts +210 -0
  399. package/src/tests/samples/abstractClass1.py +51 -0
  400. package/src/tests/samples/abstractClass2.py +25 -0
  401. package/src/tests/samples/abstractClass3.py +30 -0
  402. package/src/tests/samples/abstractClass4.py +30 -0
  403. package/src/tests/samples/abstractClass5.py +42 -0
  404. package/src/tests/samples/abstractClass6.py +25 -0
  405. package/src/tests/samples/abstractClass7.py +22 -0
  406. package/src/tests/samples/abstractClass8.py +27 -0
  407. package/src/tests/samples/annotated1.py +72 -0
  408. package/src/tests/samples/annotatedVar1.py +22 -0
  409. package/src/tests/samples/annotatedVar2.py +28 -0
  410. package/src/tests/samples/annotatedVar3.py +54 -0
  411. package/src/tests/samples/annotatedVar4.py +24 -0
  412. package/src/tests/samples/annotatedVar5.py +37 -0
  413. package/src/tests/samples/annotatedVar6.py +22 -0
  414. package/src/tests/samples/annotatedVar7.py +13 -0
  415. package/src/tests/samples/annotatedVar8.py +29 -0
  416. package/src/tests/samples/annotations1.py +98 -0
  417. package/src/tests/samples/annotations2.py +33 -0
  418. package/src/tests/samples/annotations3.py +43 -0
  419. package/src/tests/samples/annotations4.py +54 -0
  420. package/src/tests/samples/annotations5.py +9 -0
  421. package/src/tests/samples/annotations6.py +29 -0
  422. package/src/tests/samples/assert1.py +22 -0
  423. package/src/tests/samples/assertType1.py +46 -0
  424. package/src/tests/samples/assignment1.py +58 -0
  425. package/src/tests/samples/assignment10.py +14 -0
  426. package/src/tests/samples/assignment2.py +40 -0
  427. package/src/tests/samples/assignment3.py +46 -0
  428. package/src/tests/samples/assignment4.py +20 -0
  429. package/src/tests/samples/assignment5.py +16 -0
  430. package/src/tests/samples/assignment6.py +25 -0
  431. package/src/tests/samples/assignment7.py +13 -0
  432. package/src/tests/samples/assignment8.py +40 -0
  433. package/src/tests/samples/assignment9.py +25 -0
  434. package/src/tests/samples/assignmentExpr1.py +23 -0
  435. package/src/tests/samples/assignmentExpr2.py +49 -0
  436. package/src/tests/samples/assignmentExpr3.py +27 -0
  437. package/src/tests/samples/assignmentExpr4.py +49 -0
  438. package/src/tests/samples/assignmentExpr5.py +15 -0
  439. package/src/tests/samples/assignmentExpr6.py +10 -0
  440. package/src/tests/samples/assignmentExpr7.py +13 -0
  441. package/src/tests/samples/assignmentExpr8.py +11 -0
  442. package/src/tests/samples/assignmentExpr9.py +28 -0
  443. package/src/tests/samples/async1.py +49 -0
  444. package/src/tests/samples/augmentedAssignment1.py +62 -0
  445. package/src/tests/samples/augmentedAssignment2.py +23 -0
  446. package/src/tests/samples/augmentedAssignment3.py +8 -0
  447. package/src/tests/samples/await1.py +23 -0
  448. package/src/tests/samples/await2.py +25 -0
  449. package/src/tests/samples/badToken1.py +6 -0
  450. package/src/tests/samples/builtins1.py +2 -0
  451. package/src/tests/samples/call1.py +93 -0
  452. package/src/tests/samples/call2.py +118 -0
  453. package/src/tests/samples/call3.py +168 -0
  454. package/src/tests/samples/call4.py +13 -0
  455. package/src/tests/samples/call5.py +95 -0
  456. package/src/tests/samples/call6.py +35 -0
  457. package/src/tests/samples/call7.py +57 -0
  458. package/src/tests/samples/callSite1.py +6 -0
  459. package/src/tests/samples/callSite2.py +12 -0
  460. package/src/tests/samples/callable1.py +53 -0
  461. package/src/tests/samples/callable2.py +58 -0
  462. package/src/tests/samples/callable3.py +28 -0
  463. package/src/tests/samples/callable4.py +32 -0
  464. package/src/tests/samples/callable5.py +40 -0
  465. package/src/tests/samples/callable6.py +83 -0
  466. package/src/tests/samples/callbackProtocol1.py +119 -0
  467. package/src/tests/samples/callbackProtocol2.py +29 -0
  468. package/src/tests/samples/callbackProtocol3.py +23 -0
  469. package/src/tests/samples/callbackProtocol4.py +73 -0
  470. package/src/tests/samples/callbackProtocol5.py +66 -0
  471. package/src/tests/samples/callbackProtocol6.py +66 -0
  472. package/src/tests/samples/callbackProtocol7.py +16 -0
  473. package/src/tests/samples/callbackProtocol8.py +16 -0
  474. package/src/tests/samples/capturedVariable1.py +106 -0
  475. package/src/tests/samples/circular1.py +16 -0
  476. package/src/tests/samples/circular2.py +38 -0
  477. package/src/tests/samples/circularBaseClass.py +17 -0
  478. package/src/tests/samples/classGetItem1.py +30 -0
  479. package/src/tests/samples/classVar1.py +41 -0
  480. package/src/tests/samples/classVar2.py +29 -0
  481. package/src/tests/samples/classVar3.py +46 -0
  482. package/src/tests/samples/classVar4.py +36 -0
  483. package/src/tests/samples/classes1.py +50 -0
  484. package/src/tests/samples/classes3.py +48 -0
  485. package/src/tests/samples/classes4.py +15 -0
  486. package/src/tests/samples/classes5.py +260 -0
  487. package/src/tests/samples/classes6.py +16 -0
  488. package/src/tests/samples/classes7.py +18 -0
  489. package/src/tests/samples/classes8.py +47 -0
  490. package/src/tests/samples/codeFlow1.py +65 -0
  491. package/src/tests/samples/codeFlow2.py +26 -0
  492. package/src/tests/samples/codeFlow3.py +8 -0
  493. package/src/tests/samples/codeFlow4.py +133 -0
  494. package/src/tests/samples/codeFlow5.py +10 -0
  495. package/src/tests/samples/codeFlow6.py +35 -0
  496. package/src/tests/samples/codeFlow7.py +35 -0
  497. package/src/tests/samples/comparison1.py +77 -0
  498. package/src/tests/samples/comparison2.py +37 -0
  499. package/src/tests/samples/complex1.py +17 -0
  500. package/src/tests/samples/constant1.py +40 -0
  501. package/src/tests/samples/constants1.py +64 -0
  502. package/src/tests/samples/constructor1.py +30 -0
  503. package/src/tests/samples/constructor10.py +19 -0
  504. package/src/tests/samples/constructor11.py +32 -0
  505. package/src/tests/samples/constructor12.py +20 -0
  506. package/src/tests/samples/constructor13.py +15 -0
  507. package/src/tests/samples/constructor2.py +180 -0
  508. package/src/tests/samples/constructor3.py +18 -0
  509. package/src/tests/samples/constructor4.py +25 -0
  510. package/src/tests/samples/constructor5.py +25 -0
  511. package/src/tests/samples/constructor6.py +70 -0
  512. package/src/tests/samples/constructor7.py +11 -0
  513. package/src/tests/samples/constructor8.py +99 -0
  514. package/src/tests/samples/constructor9.py +19 -0
  515. package/src/tests/samples/coroutines1.py +60 -0
  516. package/src/tests/samples/coroutines2.py +20 -0
  517. package/src/tests/samples/coroutines3.py +37 -0
  518. package/src/tests/samples/dataclass1.py +44 -0
  519. package/src/tests/samples/dataclass10.py +45 -0
  520. package/src/tests/samples/dataclass11.py +53 -0
  521. package/src/tests/samples/dataclass12.py +32 -0
  522. package/src/tests/samples/dataclass13.py +42 -0
  523. package/src/tests/samples/dataclass14.py +38 -0
  524. package/src/tests/samples/dataclass15.py +58 -0
  525. package/src/tests/samples/dataclass16.py +21 -0
  526. package/src/tests/samples/dataclass17.py +46 -0
  527. package/src/tests/samples/dataclass18.py +57 -0
  528. package/src/tests/samples/dataclass19.py +44 -0
  529. package/src/tests/samples/dataclass2.py +30 -0
  530. package/src/tests/samples/dataclass20.py +71 -0
  531. package/src/tests/samples/dataclass21.py +13 -0
  532. package/src/tests/samples/dataclass3.py +18 -0
  533. package/src/tests/samples/dataclass4.py +64 -0
  534. package/src/tests/samples/dataclass5.py +81 -0
  535. package/src/tests/samples/dataclass6.py +29 -0
  536. package/src/tests/samples/dataclass7.py +93 -0
  537. package/src/tests/samples/dataclass8.py +22 -0
  538. package/src/tests/samples/dataclass9.py +24 -0
  539. package/src/tests/samples/dataclassPostInit1.py +61 -0
  540. package/src/tests/samples/dataclassTransform1.py +71 -0
  541. package/src/tests/samples/dataclassTransform2.py +78 -0
  542. package/src/tests/samples/dataclassTransform3.py +83 -0
  543. package/src/tests/samples/dataclassTransform4.py +87 -0
  544. package/src/tests/samples/decorator1.py +20 -0
  545. package/src/tests/samples/decorator2.py +31 -0
  546. package/src/tests/samples/decorator3.py +27 -0
  547. package/src/tests/samples/decorator4.py +37 -0
  548. package/src/tests/samples/decorator5.py +29 -0
  549. package/src/tests/samples/decorator6.py +34 -0
  550. package/src/tests/samples/defaultInitializer1.py +26 -0
  551. package/src/tests/samples/deprecated1.py +37 -0
  552. package/src/tests/samples/descriptor1.py +134 -0
  553. package/src/tests/samples/descriptor2.py +29 -0
  554. package/src/tests/samples/dictionary1.py +42 -0
  555. package/src/tests/samples/dictionary2.py +14 -0
  556. package/src/tests/samples/dictionary3.py +30 -0
  557. package/src/tests/samples/dictionary4.py +106 -0
  558. package/src/tests/samples/dunderAll1.py +32 -0
  559. package/src/tests/samples/dunderAll2.py +16 -0
  560. package/src/tests/samples/dunderAll3.pyi +16 -0
  561. package/src/tests/samples/duplicateDeclaration1.py +115 -0
  562. package/src/tests/samples/duplicateDeclaration2.py +45 -0
  563. package/src/tests/samples/duplicateImports1.py +13 -0
  564. package/src/tests/samples/ellipsis1.pyi +48 -0
  565. package/src/tests/samples/emptyContainers1.py +89 -0
  566. package/src/tests/samples/enums1.py +52 -0
  567. package/src/tests/samples/enums2.py +15 -0
  568. package/src/tests/samples/enums3.py +24 -0
  569. package/src/tests/samples/enums4.py +23 -0
  570. package/src/tests/samples/enums5.py +16 -0
  571. package/src/tests/samples/enums6.py +33 -0
  572. package/src/tests/samples/enums7.py +54 -0
  573. package/src/tests/samples/enums8.py +14 -0
  574. package/src/tests/samples/expressions1.py +54 -0
  575. package/src/tests/samples/expressions2.py +29 -0
  576. package/src/tests/samples/expressions3.py +26 -0
  577. package/src/tests/samples/expressions4.py +23 -0
  578. package/src/tests/samples/expressions5.py +70 -0
  579. package/src/tests/samples/expressions6.py +14 -0
  580. package/src/tests/samples/expressions7.py +40 -0
  581. package/src/tests/samples/expressions8.py +26 -0
  582. package/src/tests/samples/expressions9.py +14 -0
  583. package/src/tests/samples/final1.py +14 -0
  584. package/src/tests/samples/final2.py +86 -0
  585. package/src/tests/samples/final3.py +179 -0
  586. package/src/tests/samples/final4.pyi +21 -0
  587. package/src/tests/samples/final5.py +18 -0
  588. package/src/tests/samples/forLoop1.py +88 -0
  589. package/src/tests/samples/forLoop2.py +48 -0
  590. package/src/tests/samples/fstring1.py +66 -0
  591. package/src/tests/samples/fstring2.py +12 -0
  592. package/src/tests/samples/fstring3.py +35 -0
  593. package/src/tests/samples/fstring4.py +17 -0
  594. package/src/tests/samples/fstring5.py +17 -0
  595. package/src/tests/samples/fstring6.py +14 -0
  596. package/src/tests/samples/function1.py +12 -0
  597. package/src/tests/samples/function10.py +20 -0
  598. package/src/tests/samples/function11.py +36 -0
  599. package/src/tests/samples/function2.py +7 -0
  600. package/src/tests/samples/function3.py +82 -0
  601. package/src/tests/samples/function4.py +13 -0
  602. package/src/tests/samples/function6.py +24 -0
  603. package/src/tests/samples/function7.py +13 -0
  604. package/src/tests/samples/function8.py +38 -0
  605. package/src/tests/samples/function9.py +75 -0
  606. package/src/tests/samples/functionAnnotation1.py +61 -0
  607. package/src/tests/samples/functionAnnotation2.py +26 -0
  608. package/src/tests/samples/functionAnnotation3.py +37 -0
  609. package/src/tests/samples/functionAnnotation4.py +22 -0
  610. package/src/tests/samples/functionMember1.py +18 -0
  611. package/src/tests/samples/functionMember2.py +45 -0
  612. package/src/tests/samples/generators1.py +122 -0
  613. package/src/tests/samples/generators10.py +18 -0
  614. package/src/tests/samples/generators11.py +27 -0
  615. package/src/tests/samples/generators12.py +25 -0
  616. package/src/tests/samples/generators13.py +65 -0
  617. package/src/tests/samples/generators14.py +19 -0
  618. package/src/tests/samples/generators15.py +26 -0
  619. package/src/tests/samples/generators2.py +31 -0
  620. package/src/tests/samples/generators3.py +42 -0
  621. package/src/tests/samples/generators4.py +33 -0
  622. package/src/tests/samples/generators5.py +24 -0
  623. package/src/tests/samples/generators6.py +14 -0
  624. package/src/tests/samples/generators7.py +18 -0
  625. package/src/tests/samples/generators8.py +12 -0
  626. package/src/tests/samples/generators9.py +19 -0
  627. package/src/tests/samples/generic1.py +41 -0
  628. package/src/tests/samples/genericTypes1.py +12 -0
  629. package/src/tests/samples/genericTypes10.py +38 -0
  630. package/src/tests/samples/genericTypes11.py +26 -0
  631. package/src/tests/samples/genericTypes12.py +14 -0
  632. package/src/tests/samples/genericTypes13.py +27 -0
  633. package/src/tests/samples/genericTypes14.py +22 -0
  634. package/src/tests/samples/genericTypes15.py +13 -0
  635. package/src/tests/samples/genericTypes16.py +15 -0
  636. package/src/tests/samples/genericTypes17.py +24 -0
  637. package/src/tests/samples/genericTypes18.py +135 -0
  638. package/src/tests/samples/genericTypes19.py +32 -0
  639. package/src/tests/samples/genericTypes2.py +40 -0
  640. package/src/tests/samples/genericTypes20.py +44 -0
  641. package/src/tests/samples/genericTypes21.py +29 -0
  642. package/src/tests/samples/genericTypes22.py +23 -0
  643. package/src/tests/samples/genericTypes23.py +27 -0
  644. package/src/tests/samples/genericTypes24.py +32 -0
  645. package/src/tests/samples/genericTypes25.py +37 -0
  646. package/src/tests/samples/genericTypes26.py +31 -0
  647. package/src/tests/samples/genericTypes27.py +14 -0
  648. package/src/tests/samples/genericTypes28.py +51 -0
  649. package/src/tests/samples/genericTypes29.py +24 -0
  650. package/src/tests/samples/genericTypes3.py +13 -0
  651. package/src/tests/samples/genericTypes30.py +32 -0
  652. package/src/tests/samples/genericTypes31.py +30 -0
  653. package/src/tests/samples/genericTypes32.py +25 -0
  654. package/src/tests/samples/genericTypes33.py +46 -0
  655. package/src/tests/samples/genericTypes34.py +54 -0
  656. package/src/tests/samples/genericTypes35.py +45 -0
  657. package/src/tests/samples/genericTypes36.py +35 -0
  658. package/src/tests/samples/genericTypes37.py +26 -0
  659. package/src/tests/samples/genericTypes38.py +15 -0
  660. package/src/tests/samples/genericTypes39.py +82 -0
  661. package/src/tests/samples/genericTypes4.py +37 -0
  662. package/src/tests/samples/genericTypes40.py +38 -0
  663. package/src/tests/samples/genericTypes41.py +16 -0
  664. package/src/tests/samples/genericTypes42.py +32 -0
  665. package/src/tests/samples/genericTypes43.py +24 -0
  666. package/src/tests/samples/genericTypes44.py +33 -0
  667. package/src/tests/samples/genericTypes45.py +43 -0
  668. package/src/tests/samples/genericTypes46.py +66 -0
  669. package/src/tests/samples/genericTypes47.py +39 -0
  670. package/src/tests/samples/genericTypes48.py +18 -0
  671. package/src/tests/samples/genericTypes49.py +41 -0
  672. package/src/tests/samples/genericTypes5.py +42 -0
  673. package/src/tests/samples/genericTypes50.py +62 -0
  674. package/src/tests/samples/genericTypes51.py +55 -0
  675. package/src/tests/samples/genericTypes52.py +34 -0
  676. package/src/tests/samples/genericTypes53.py +42 -0
  677. package/src/tests/samples/genericTypes54.py +31 -0
  678. package/src/tests/samples/genericTypes55.py +61 -0
  679. package/src/tests/samples/genericTypes56.py +19 -0
  680. package/src/tests/samples/genericTypes57.py +30 -0
  681. package/src/tests/samples/genericTypes58.py +52 -0
  682. package/src/tests/samples/genericTypes59.py +71 -0
  683. package/src/tests/samples/genericTypes6.py +49 -0
  684. package/src/tests/samples/genericTypes60.py +27 -0
  685. package/src/tests/samples/genericTypes61.py +34 -0
  686. package/src/tests/samples/genericTypes62.py +26 -0
  687. package/src/tests/samples/genericTypes63.py +32 -0
  688. package/src/tests/samples/genericTypes64.py +16 -0
  689. package/src/tests/samples/genericTypes65.py +15 -0
  690. package/src/tests/samples/genericTypes66.py +30 -0
  691. package/src/tests/samples/genericTypes67.py +57 -0
  692. package/src/tests/samples/genericTypes68.py +14 -0
  693. package/src/tests/samples/genericTypes69.py +45 -0
  694. package/src/tests/samples/genericTypes7.py +24 -0
  695. package/src/tests/samples/genericTypes70.py +31 -0
  696. package/src/tests/samples/genericTypes71.py +72 -0
  697. package/src/tests/samples/genericTypes72.py +24 -0
  698. package/src/tests/samples/genericTypes73.py +14 -0
  699. package/src/tests/samples/genericTypes74.py +23 -0
  700. package/src/tests/samples/genericTypes75.py +45 -0
  701. package/src/tests/samples/genericTypes76.py +107 -0
  702. package/src/tests/samples/genericTypes77.py +26 -0
  703. package/src/tests/samples/genericTypes78.py +23 -0
  704. package/src/tests/samples/genericTypes79.py +37 -0
  705. package/src/tests/samples/genericTypes8.py +26 -0
  706. package/src/tests/samples/genericTypes80.py +10 -0
  707. package/src/tests/samples/genericTypes81.py +32 -0
  708. package/src/tests/samples/genericTypes82.py +19 -0
  709. package/src/tests/samples/genericTypes83.py +28 -0
  710. package/src/tests/samples/genericTypes84.py +11 -0
  711. package/src/tests/samples/genericTypes85.py +20 -0
  712. package/src/tests/samples/genericTypes86.py +15 -0
  713. package/src/tests/samples/genericTypes87.py +21 -0
  714. package/src/tests/samples/genericTypes88.py +25 -0
  715. package/src/tests/samples/genericTypes89.py +17 -0
  716. package/src/tests/samples/genericTypes9.py +109 -0
  717. package/src/tests/samples/genericTypes90.py +12 -0
  718. package/src/tests/samples/genericTypes91.py +20 -0
  719. package/src/tests/samples/import1.py +7 -0
  720. package/src/tests/samples/import10.py +11 -0
  721. package/src/tests/samples/import11.py +11 -0
  722. package/src/tests/samples/import12.py +5 -0
  723. package/src/tests/samples/import13.py +6 -0
  724. package/src/tests/samples/import14.py +10 -0
  725. package/src/tests/samples/import2.py +27 -0
  726. package/src/tests/samples/import3.py +8 -0
  727. package/src/tests/samples/import4.py +15 -0
  728. package/src/tests/samples/import5.py +6 -0
  729. package/src/tests/samples/import6.py +17 -0
  730. package/src/tests/samples/import7.py +14 -0
  731. package/src/tests/samples/import8.py +7 -0
  732. package/src/tests/samples/import9.py +7 -0
  733. package/src/tests/samples/inconsistentConstructor1.py +23 -0
  734. package/src/tests/samples/inconsistentSpaceTab1.py +9 -0
  735. package/src/tests/samples/inconsistentSpaceTab2.py +10 -0
  736. package/src/tests/samples/index1.py +97 -0
  737. package/src/tests/samples/inferredTypes1.py +25 -0
  738. package/src/tests/samples/initVar1.py +23 -0
  739. package/src/tests/samples/initsubclass1.py +46 -0
  740. package/src/tests/samples/initsubclass2.py +16 -0
  741. package/src/tests/samples/isinstance1.py +57 -0
  742. package/src/tests/samples/isinstance10.py +15 -0
  743. package/src/tests/samples/isinstance2.py +28 -0
  744. package/src/tests/samples/isinstance3.py +59 -0
  745. package/src/tests/samples/isinstance4.py +57 -0
  746. package/src/tests/samples/isinstance5.py +8 -0
  747. package/src/tests/samples/isinstance6.py +19 -0
  748. package/src/tests/samples/isinstance7.py +42 -0
  749. package/src/tests/samples/isinstance9.py +26 -0
  750. package/src/tests/samples/kwargsUnpack1.py +116 -0
  751. package/src/tests/samples/lambda1.py +77 -0
  752. package/src/tests/samples/lambda2.py +26 -0
  753. package/src/tests/samples/lambda3.py +34 -0
  754. package/src/tests/samples/lambda4.py +70 -0
  755. package/src/tests/samples/lambda5.py +23 -0
  756. package/src/tests/samples/lambda6.py +15 -0
  757. package/src/tests/samples/lines1.py +14 -0
  758. package/src/tests/samples/list1.py +90 -0
  759. package/src/tests/samples/listComprehension1.py +45 -0
  760. package/src/tests/samples/listComprehension2.py +17 -0
  761. package/src/tests/samples/listComprehension3.py +12 -0
  762. package/src/tests/samples/listComprehension4.py +15 -0
  763. package/src/tests/samples/listComprehension5.py +20 -0
  764. package/src/tests/samples/listComprehension6.py +14 -0
  765. package/src/tests/samples/listComprehension7.py +15 -0
  766. package/src/tests/samples/listComprehension8.py +15 -0
  767. package/src/tests/samples/literalString1.py +43 -0
  768. package/src/tests/samples/literals1.py +48 -0
  769. package/src/tests/samples/literals2.py +30 -0
  770. package/src/tests/samples/literals3.py +40 -0
  771. package/src/tests/samples/literals4.py +10 -0
  772. package/src/tests/samples/literals5.py +28 -0
  773. package/src/tests/samples/literals6.py +90 -0
  774. package/src/tests/samples/literals7.py +38 -0
  775. package/src/tests/samples/loops1.py +45 -0
  776. package/src/tests/samples/loops10.py +11 -0
  777. package/src/tests/samples/loops11.py +22 -0
  778. package/src/tests/samples/loops12.py +18 -0
  779. package/src/tests/samples/loops13.py +13 -0
  780. package/src/tests/samples/loops14.py +22 -0
  781. package/src/tests/samples/loops15.py +22 -0
  782. package/src/tests/samples/loops16.py +322 -0
  783. package/src/tests/samples/loops17.py +9 -0
  784. package/src/tests/samples/loops18.py +23 -0
  785. package/src/tests/samples/loops19.py +14 -0
  786. package/src/tests/samples/loops2.py +25 -0
  787. package/src/tests/samples/loops20.py +41 -0
  788. package/src/tests/samples/loops21.py +18 -0
  789. package/src/tests/samples/loops22.py +21 -0
  790. package/src/tests/samples/loops23.py +16 -0
  791. package/src/tests/samples/loops24.py +12 -0
  792. package/src/tests/samples/loops25.py +45 -0
  793. package/src/tests/samples/loops26.py +12 -0
  794. package/src/tests/samples/loops3.py +11 -0
  795. package/src/tests/samples/loops4.py +17 -0
  796. package/src/tests/samples/loops5.py +14 -0
  797. package/src/tests/samples/loops6.py +25 -0
  798. package/src/tests/samples/loops7.py +14 -0
  799. package/src/tests/samples/loops8.py +17 -0
  800. package/src/tests/samples/loops9.py +25 -0
  801. package/src/tests/samples/match1.py +190 -0
  802. package/src/tests/samples/match10.py +67 -0
  803. package/src/tests/samples/match2.py +340 -0
  804. package/src/tests/samples/match3.py +364 -0
  805. package/src/tests/samples/match4.py +100 -0
  806. package/src/tests/samples/match5.py +70 -0
  807. package/src/tests/samples/match6.py +64 -0
  808. package/src/tests/samples/match7.py +65 -0
  809. package/src/tests/samples/match8.py +19 -0
  810. package/src/tests/samples/match9.py +53 -0
  811. package/src/tests/samples/maxParseDepth1.py +499 -0
  812. package/src/tests/samples/maxParseDepth2.py +16 -0
  813. package/src/tests/samples/memberAccess1.py +70 -0
  814. package/src/tests/samples/memberAccess10.py +65 -0
  815. package/src/tests/samples/memberAccess11.py +37 -0
  816. package/src/tests/samples/memberAccess12.py +36 -0
  817. package/src/tests/samples/memberAccess13.py +17 -0
  818. package/src/tests/samples/memberAccess14.py +63 -0
  819. package/src/tests/samples/memberAccess15.py +20 -0
  820. package/src/tests/samples/memberAccess16.py +12 -0
  821. package/src/tests/samples/memberAccess17.py +31 -0
  822. package/src/tests/samples/memberAccess18.py +31 -0
  823. package/src/tests/samples/memberAccess2.py +45 -0
  824. package/src/tests/samples/memberAccess3.py +64 -0
  825. package/src/tests/samples/memberAccess4.py +91 -0
  826. package/src/tests/samples/memberAccess5.py +26 -0
  827. package/src/tests/samples/memberAccess6.py +52 -0
  828. package/src/tests/samples/memberAccess7.py +36 -0
  829. package/src/tests/samples/memberAccess8.py +75 -0
  830. package/src/tests/samples/memberAccess9.py +11 -0
  831. package/src/tests/samples/metaclass1.py +7 -0
  832. package/src/tests/samples/metaclass2.py +35 -0
  833. package/src/tests/samples/metaclass3.py +43 -0
  834. package/src/tests/samples/metaclass4.py +26 -0
  835. package/src/tests/samples/metaclass5.py +33 -0
  836. package/src/tests/samples/metaclass6.py +15 -0
  837. package/src/tests/samples/metaclass7.py +38 -0
  838. package/src/tests/samples/metaclass8.py +20 -0
  839. package/src/tests/samples/metaclass9.py +77 -0
  840. package/src/tests/samples/methodOverride1.py +507 -0
  841. package/src/tests/samples/methodOverride2.py +74 -0
  842. package/src/tests/samples/methodOverride3.py +111 -0
  843. package/src/tests/samples/methodOverride4.py +36 -0
  844. package/src/tests/samples/missingSuper1.py +73 -0
  845. package/src/tests/samples/module1.py +13 -0
  846. package/src/tests/samples/module2.py +7 -0
  847. package/src/tests/samples/mro1.py +16 -0
  848. package/src/tests/samples/mro2.py +45 -0
  849. package/src/tests/samples/mro3.py +30 -0
  850. package/src/tests/samples/mro4.py +30 -0
  851. package/src/tests/samples/nameBindings1.py +48 -0
  852. package/src/tests/samples/nameBindings2.py +9 -0
  853. package/src/tests/samples/nameBindings3.py +36 -0
  854. package/src/tests/samples/nameBindings4.py +10 -0
  855. package/src/tests/samples/nameBindings5.py +53 -0
  856. package/src/tests/samples/namedTuples1.py +103 -0
  857. package/src/tests/samples/namedTuples2.py +56 -0
  858. package/src/tests/samples/namedTuples3.py +15 -0
  859. package/src/tests/samples/namedTuples4.py +24 -0
  860. package/src/tests/samples/namedTuples5.py +15 -0
  861. package/src/tests/samples/namedTuples6.py +31 -0
  862. package/src/tests/samples/namedTuples7.py +27 -0
  863. package/src/tests/samples/never1.py +12 -0
  864. package/src/tests/samples/never2.py +43 -0
  865. package/src/tests/samples/newType1.py +34 -0
  866. package/src/tests/samples/newType2.py +25 -0
  867. package/src/tests/samples/newType3.py +34 -0
  868. package/src/tests/samples/newType4.py +8 -0
  869. package/src/tests/samples/none1.py +29 -0
  870. package/src/tests/samples/none2.py +22 -0
  871. package/src/tests/samples/noreturn1.py +78 -0
  872. package/src/tests/samples/noreturn2.py +37 -0
  873. package/src/tests/samples/noreturn3.py +16 -0
  874. package/src/tests/samples/noreturn4.py +29 -0
  875. package/src/tests/samples/operators1.py +101 -0
  876. package/src/tests/samples/operators2.py +30 -0
  877. package/src/tests/samples/operators3.py +8 -0
  878. package/src/tests/samples/operators4.py +22 -0
  879. package/src/tests/samples/operators5.py +5 -0
  880. package/src/tests/samples/operators6.py +10 -0
  881. package/src/tests/samples/operators7.py +24 -0
  882. package/src/tests/samples/operators8.py +125 -0
  883. package/src/tests/samples/optional1.py +77 -0
  884. package/src/tests/samples/optional2.py +23 -0
  885. package/src/tests/samples/overload1.py +50 -0
  886. package/src/tests/samples/overload10.py +48 -0
  887. package/src/tests/samples/overload2.py +37 -0
  888. package/src/tests/samples/overload3.py +29 -0
  889. package/src/tests/samples/overload4.py +46 -0
  890. package/src/tests/samples/overload5.py +333 -0
  891. package/src/tests/samples/overload6.py +64 -0
  892. package/src/tests/samples/overload7.py +376 -0
  893. package/src/tests/samples/overload8.py +89 -0
  894. package/src/tests/samples/overload9.py +19 -0
  895. package/src/tests/samples/package1/__init__.py +3 -0
  896. package/src/tests/samples/package1/psyche/pysche.py +4 -0
  897. package/src/tests/samples/package1/psyche.py +4 -0
  898. package/src/tests/samples/package1/sub/__init__.py +5 -0
  899. package/src/tests/samples/package1/sub.py +4 -0
  900. package/src/tests/samples/package1/sub.pyi +2 -0
  901. package/src/tests/samples/paramInference1.py +27 -0
  902. package/src/tests/samples/paramNames1.py +39 -0
  903. package/src/tests/samples/paramSpec1.py +64 -0
  904. package/src/tests/samples/paramSpec10.py +57 -0
  905. package/src/tests/samples/paramSpec11.py +36 -0
  906. package/src/tests/samples/paramSpec12.py +88 -0
  907. package/src/tests/samples/paramSpec13.py +112 -0
  908. package/src/tests/samples/paramSpec14.py +30 -0
  909. package/src/tests/samples/paramSpec15.py +28 -0
  910. package/src/tests/samples/paramSpec16.py +28 -0
  911. package/src/tests/samples/paramSpec17.py +34 -0
  912. package/src/tests/samples/paramSpec18.py +43 -0
  913. package/src/tests/samples/paramSpec19.py +93 -0
  914. package/src/tests/samples/paramSpec2.py +29 -0
  915. package/src/tests/samples/paramSpec20.py +87 -0
  916. package/src/tests/samples/paramSpec21.py +58 -0
  917. package/src/tests/samples/paramSpec22.py +26 -0
  918. package/src/tests/samples/paramSpec23.py +21 -0
  919. package/src/tests/samples/paramSpec24.py +67 -0
  920. package/src/tests/samples/paramSpec25.py +36 -0
  921. package/src/tests/samples/paramSpec26.py +25 -0
  922. package/src/tests/samples/paramSpec27.py +57 -0
  923. package/src/tests/samples/paramSpec28.py +39 -0
  924. package/src/tests/samples/paramSpec29.py +37 -0
  925. package/src/tests/samples/paramSpec3.py +71 -0
  926. package/src/tests/samples/paramSpec30.py +49 -0
  927. package/src/tests/samples/paramSpec31.py +16 -0
  928. package/src/tests/samples/paramSpec32.py +57 -0
  929. package/src/tests/samples/paramSpec33.py +29 -0
  930. package/src/tests/samples/paramSpec34.py +29 -0
  931. package/src/tests/samples/paramSpec35.py +24 -0
  932. package/src/tests/samples/paramSpec36.py +43 -0
  933. package/src/tests/samples/paramSpec37.py +25 -0
  934. package/src/tests/samples/paramSpec4.py +109 -0
  935. package/src/tests/samples/paramSpec5.py +29 -0
  936. package/src/tests/samples/paramSpec6.py +17 -0
  937. package/src/tests/samples/paramSpec7.py +22 -0
  938. package/src/tests/samples/paramSpec8.py +45 -0
  939. package/src/tests/samples/paramSpec9.py +57 -0
  940. package/src/tests/samples/paramType1.py +71 -0
  941. package/src/tests/samples/parameters1.py +16 -0
  942. package/src/tests/samples/partial1.py +163 -0
  943. package/src/tests/samples/partial2.py +31 -0
  944. package/src/tests/samples/private1.py +55 -0
  945. package/src/tests/samples/private2.py +11 -0
  946. package/src/tests/samples/project1/pyrightconfig.json +5 -0
  947. package/src/tests/samples/project1/sample1.py +0 -0
  948. package/src/tests/samples/project1/subfolder1/sample2.py +0 -0
  949. package/src/tests/samples/project1/subfolder1/subfolder1-1/sample3.py +0 -0
  950. package/src/tests/samples/project2/pyrightconfig.json +3 -0
  951. package/src/tests/samples/project3/pyrightconfig.json +7 -0
  952. package/src/tests/samples/project4/presentfile.py +0 -0
  953. package/src/tests/samples/project4/pyrightconfig.json +11 -0
  954. package/src/tests/samples/project4/subfolder/presentfile2.py +0 -0
  955. package/src/tests/samples/project4/subfolder/presentfile3.py +0 -0
  956. package/src/tests/samples/project5/pyrightconfig.json +4 -0
  957. package/src/tests/samples/project6/app1.py +0 -0
  958. package/src/tests/samples/project6/app2.py +0 -0
  959. package/src/tests/samples/project6/projectA/foo/__init__.py +0 -0
  960. package/src/tests/samples/project6/projectA/foo/bar/__init__.py +0 -0
  961. package/src/tests/samples/project6/projectB/foo/__init__.py +0 -0
  962. package/src/tests/samples/project6/projectB/foo/baz/__init__.py +0 -0
  963. package/src/tests/samples/project_src/src/module1.py +0 -0
  964. package/src/tests/samples/project_src_is_pkg/src/__init__.py +0 -0
  965. package/src/tests/samples/project_src_is_pkg/src/module1.py +0 -0
  966. package/src/tests/samples/project_src_with_config_extra_paths/pyrightconfig.json +3 -0
  967. package/src/tests/samples/project_src_with_config_extra_paths/src/module1.py +0 -0
  968. package/src/tests/samples/project_src_with_config_no_extra_paths/pyrightconfig.json +2 -0
  969. package/src/tests/samples/project_src_with_config_no_extra_paths/src/module1.py +0 -0
  970. package/src/tests/samples/project_src_with_extra_paths/src/_vendored/vendored1.py +1 -0
  971. package/src/tests/samples/project_src_with_extra_paths/src/module1.py +2 -0
  972. package/src/tests/samples/project_with_pyproject_toml/pyproject.toml +7 -0
  973. package/src/tests/samples/project_with_venv_auto_detect_exclude/myvenv/Lib/site-packages/library1.py +0 -0
  974. package/src/tests/samples/project_with_venv_auto_detect_exclude/myvenv/pyvenv.cfg +0 -0
  975. package/src/tests/samples/project_with_venv_auto_detect_exclude/pyrightconfig.json +2 -0
  976. package/src/tests/samples/project_with_venv_auto_detect_exclude/sample1.py +0 -0
  977. package/src/tests/samples/project_with_venv_auto_detect_exclude/subfolder1/sample2.py +0 -0
  978. package/src/tests/samples/project_with_venv_auto_detect_exclude/subfolder1/subfolder1-1/sample3.py +0 -0
  979. package/src/tests/samples/project_with_venv_auto_detect_include/excluded/excluded1.py +0 -0
  980. package/src/tests/samples/project_with_venv_auto_detect_include/myvenv/Lib/site-packages/library1.py +0 -0
  981. package/src/tests/samples/project_with_venv_auto_detect_include/myvenv/pyvenv.cfg +0 -0
  982. package/src/tests/samples/project_with_venv_auto_detect_include/pyrightconfig.json +3 -0
  983. package/src/tests/samples/project_with_venv_auto_detect_include/sample1.py +0 -0
  984. package/src/tests/samples/project_with_venv_auto_detect_include/subfolder1/sample2.py +0 -0
  985. package/src/tests/samples/project_with_venv_auto_detect_include/subfolder1/subfolder1-1/sample3.py +0 -0
  986. package/src/tests/samples/properties1.py +64 -0
  987. package/src/tests/samples/properties10.py +19 -0
  988. package/src/tests/samples/properties11.py +45 -0
  989. package/src/tests/samples/properties12.py +23 -0
  990. package/src/tests/samples/properties13.py +15 -0
  991. package/src/tests/samples/properties2.py +34 -0
  992. package/src/tests/samples/properties3.py +93 -0
  993. package/src/tests/samples/properties4.py +17 -0
  994. package/src/tests/samples/properties5.py +29 -0
  995. package/src/tests/samples/properties6.py +35 -0
  996. package/src/tests/samples/properties7.py +30 -0
  997. package/src/tests/samples/properties8.py +26 -0
  998. package/src/tests/samples/properties9.py +24 -0
  999. package/src/tests/samples/protocol1.py +132 -0
  1000. package/src/tests/samples/protocol10.py +36 -0
  1001. package/src/tests/samples/protocol11.py +32 -0
  1002. package/src/tests/samples/protocol12.py +12 -0
  1003. package/src/tests/samples/protocol13.py +26 -0
  1004. package/src/tests/samples/protocol14.py +27 -0
  1005. package/src/tests/samples/protocol15.py +27 -0
  1006. package/src/tests/samples/protocol16.py +22 -0
  1007. package/src/tests/samples/protocol17.py +94 -0
  1008. package/src/tests/samples/protocol18.py +27 -0
  1009. package/src/tests/samples/protocol19.py +39 -0
  1010. package/src/tests/samples/protocol2.py +38 -0
  1011. package/src/tests/samples/protocol20.py +22 -0
  1012. package/src/tests/samples/protocol21.py +26 -0
  1013. package/src/tests/samples/protocol22.py +43 -0
  1014. package/src/tests/samples/protocol23.py +41 -0
  1015. package/src/tests/samples/protocol24.py +74 -0
  1016. package/src/tests/samples/protocol25.py +31 -0
  1017. package/src/tests/samples/protocol26.py +40 -0
  1018. package/src/tests/samples/protocol27.py +76 -0
  1019. package/src/tests/samples/protocol28.py +32 -0
  1020. package/src/tests/samples/protocol29.py +26 -0
  1021. package/src/tests/samples/protocol3.py +110 -0
  1022. package/src/tests/samples/protocol30.py +30 -0
  1023. package/src/tests/samples/protocol31.py +22 -0
  1024. package/src/tests/samples/protocol32.py +67 -0
  1025. package/src/tests/samples/protocol33.py +39 -0
  1026. package/src/tests/samples/protocol34.py +21 -0
  1027. package/src/tests/samples/protocol4.py +22 -0
  1028. package/src/tests/samples/protocol5.py +25 -0
  1029. package/src/tests/samples/protocol6.py +65 -0
  1030. package/src/tests/samples/protocol7.py +24 -0
  1031. package/src/tests/samples/protocol8.py +34 -0
  1032. package/src/tests/samples/protocol9.py +35 -0
  1033. package/src/tests/samples/protocolModule1.py +15 -0
  1034. package/src/tests/samples/protocolModule2.py +83 -0
  1035. package/src/tests/samples/protocolModule3.py +14 -0
  1036. package/src/tests/samples/protocolModule4.py +26 -0
  1037. package/src/tests/samples/pseudoGeneric1.py +20 -0
  1038. package/src/tests/samples/pyrightIgnore1.py +11 -0
  1039. package/src/tests/samples/pyrightIgnore2.py +24 -0
  1040. package/src/tests/samples/python2.py +31 -0
  1041. package/src/tests/samples/recursiveTypeAlias1.py +79 -0
  1042. package/src/tests/samples/recursiveTypeAlias2.py +32 -0
  1043. package/src/tests/samples/recursiveTypeAlias3.py +26 -0
  1044. package/src/tests/samples/recursiveTypeAlias4.py +55 -0
  1045. package/src/tests/samples/recursiveTypeAlias5.pyi +10 -0
  1046. package/src/tests/samples/recursiveTypeAlias6.py +25 -0
  1047. package/src/tests/samples/recursiveTypeAlias7.py +15 -0
  1048. package/src/tests/samples/recursiveTypeAlias8.py +38 -0
  1049. package/src/tests/samples/recursiveTypeAlias9.py +22 -0
  1050. package/src/tests/samples/required1.py +47 -0
  1051. package/src/tests/samples/required2.py +56 -0
  1052. package/src/tests/samples/required3.py +22 -0
  1053. package/src/tests/samples/returnTypes1.py +26 -0
  1054. package/src/tests/samples/revealedType1.py +30 -0
  1055. package/src/tests/samples/sample1.py +6 -0
  1056. package/src/tests/samples/self1.py +93 -0
  1057. package/src/tests/samples/self2.py +195 -0
  1058. package/src/tests/samples/self3.py +9 -0
  1059. package/src/tests/samples/self4.py +18 -0
  1060. package/src/tests/samples/self5.py +26 -0
  1061. package/src/tests/samples/setComprehension1.py +34 -0
  1062. package/src/tests/samples/slots1.py +63 -0
  1063. package/src/tests/samples/slots2.py +38 -0
  1064. package/src/tests/samples/slots3.py +35 -0
  1065. package/src/tests/samples/specialization1.py +78 -0
  1066. package/src/tests/samples/specialization2.py +51 -0
  1067. package/src/tests/samples/staticExpressions1.py +52 -0
  1068. package/src/tests/samples/strings1.py +22 -0
  1069. package/src/tests/samples/subscript1.py +74 -0
  1070. package/src/tests/samples/subscript2.py +55 -0
  1071. package/src/tests/samples/subscript3.py +135 -0
  1072. package/src/tests/samples/suiteExpectedColon1.py +4 -0
  1073. package/src/tests/samples/suiteExpectedColon2.py +2 -0
  1074. package/src/tests/samples/suiteExpectedColon3.py +2 -0
  1075. package/src/tests/samples/super1.py +57 -0
  1076. package/src/tests/samples/super2.py +29 -0
  1077. package/src/tests/samples/super3.py +10 -0
  1078. package/src/tests/samples/super4.py +24 -0
  1079. package/src/tests/samples/super5.py +28 -0
  1080. package/src/tests/samples/super6.py +17 -0
  1081. package/src/tests/samples/super7.py +52 -0
  1082. package/src/tests/samples/super8.py +7 -0
  1083. package/src/tests/samples/super9.py +36 -0
  1084. package/src/tests/samples/test_file1.py +0 -0
  1085. package/src/tests/samples/threePartVersion1.py +33 -0
  1086. package/src/tests/samples/totalOrdering1.py +52 -0
  1087. package/src/tests/samples/tryExcept1.py +39 -0
  1088. package/src/tests/samples/tryExcept10.py +12 -0
  1089. package/src/tests/samples/tryExcept2.py +16 -0
  1090. package/src/tests/samples/tryExcept3.py +12 -0
  1091. package/src/tests/samples/tryExcept4.py +28 -0
  1092. package/src/tests/samples/tryExcept5.py +30 -0
  1093. package/src/tests/samples/tryExcept6.py +27 -0
  1094. package/src/tests/samples/tryExcept7.py +17 -0
  1095. package/src/tests/samples/tryExcept8.py +69 -0
  1096. package/src/tests/samples/tryExcept9.py +42 -0
  1097. package/src/tests/samples/tupleUnpack1.py +63 -0
  1098. package/src/tests/samples/tupleUnpack2.py +56 -0
  1099. package/src/tests/samples/tupleUnpack3.py +28 -0
  1100. package/src/tests/samples/tuples1.py +185 -0
  1101. package/src/tests/samples/tuples10.py +30 -0
  1102. package/src/tests/samples/tuples11.py +21 -0
  1103. package/src/tests/samples/tuples12.py +31 -0
  1104. package/src/tests/samples/tuples13.py +26 -0
  1105. package/src/tests/samples/tuples15.py +16 -0
  1106. package/src/tests/samples/tuples16.py +14 -0
  1107. package/src/tests/samples/tuples2.py +23 -0
  1108. package/src/tests/samples/tuples3.py +15 -0
  1109. package/src/tests/samples/tuples4.py +21 -0
  1110. package/src/tests/samples/tuples5.py +16 -0
  1111. package/src/tests/samples/tuples6.py +56 -0
  1112. package/src/tests/samples/tuples7.py +61 -0
  1113. package/src/tests/samples/tuples8.py +98 -0
  1114. package/src/tests/samples/tuples9.py +17 -0
  1115. package/src/tests/samples/typeAlias1.py +37 -0
  1116. package/src/tests/samples/typeAlias10.py +45 -0
  1117. package/src/tests/samples/typeAlias11.py +37 -0
  1118. package/src/tests/samples/typeAlias12.py +20 -0
  1119. package/src/tests/samples/typeAlias13.py +53 -0
  1120. package/src/tests/samples/typeAlias14.py +29 -0
  1121. package/src/tests/samples/typeAlias15.py +24 -0
  1122. package/src/tests/samples/typeAlias16.py +24 -0
  1123. package/src/tests/samples/typeAlias2.py +26 -0
  1124. package/src/tests/samples/typeAlias3.py +35 -0
  1125. package/src/tests/samples/typeAlias4.py +68 -0
  1126. package/src/tests/samples/typeAlias5.py +56 -0
  1127. package/src/tests/samples/typeAlias6.py +51 -0
  1128. package/src/tests/samples/typeAlias7.py +50 -0
  1129. package/src/tests/samples/typeAlias8.py +24 -0
  1130. package/src/tests/samples/typeAlias9.py +35 -0
  1131. package/src/tests/samples/typeGuard1.py +68 -0
  1132. package/src/tests/samples/typeGuard2.py +58 -0
  1133. package/src/tests/samples/typeGuard3.py +98 -0
  1134. package/src/tests/samples/typeIgnore1.py +10 -0
  1135. package/src/tests/samples/typeIgnore2.py +20 -0
  1136. package/src/tests/samples/typeIgnore3.py +22 -0
  1137. package/src/tests/samples/typeIgnore4.py +10 -0
  1138. package/src/tests/samples/typeIgnore5.py +7 -0
  1139. package/src/tests/samples/typeNarrowing1.py +56 -0
  1140. package/src/tests/samples/typeNarrowing2.py +14 -0
  1141. package/src/tests/samples/typeNarrowing3.py +47 -0
  1142. package/src/tests/samples/typeNarrowing4.py +24 -0
  1143. package/src/tests/samples/typeNarrowing5.py +19 -0
  1144. package/src/tests/samples/typeNarrowing6.py +27 -0
  1145. package/src/tests/samples/typeNarrowing7.py +71 -0
  1146. package/src/tests/samples/typeNarrowingAssert1.py +24 -0
  1147. package/src/tests/samples/typeNarrowingCallable1.py +78 -0
  1148. package/src/tests/samples/typeNarrowingEnum1.py +58 -0
  1149. package/src/tests/samples/typeNarrowingEnum2.py +71 -0
  1150. package/src/tests/samples/typeNarrowingFalsy1.py +50 -0
  1151. package/src/tests/samples/typeNarrowingIn1.py +97 -0
  1152. package/src/tests/samples/typeNarrowingIsNone1.py +56 -0
  1153. package/src/tests/samples/typeNarrowingIsNone2.py +8 -0
  1154. package/src/tests/samples/typeNarrowingIsNoneTuple1.py +42 -0
  1155. package/src/tests/samples/typeNarrowingIsNoneTuple2.py +35 -0
  1156. package/src/tests/samples/typeNarrowingIsinstance1.py +162 -0
  1157. package/src/tests/samples/typeNarrowingIsinstance2.py +14 -0
  1158. package/src/tests/samples/typeNarrowingIsinstance3.py +78 -0
  1159. package/src/tests/samples/typeNarrowingIsinstance4.py +50 -0
  1160. package/src/tests/samples/typeNarrowingIsinstance5.py +39 -0
  1161. package/src/tests/samples/typeNarrowingIsinstance6.py +77 -0
  1162. package/src/tests/samples/typeNarrowingIsinstance7.py +19 -0
  1163. package/src/tests/samples/typeNarrowingIsinstance8.py +19 -0
  1164. package/src/tests/samples/typeNarrowingLiteral1.py +35 -0
  1165. package/src/tests/samples/typeNarrowingLiteral2.py +63 -0
  1166. package/src/tests/samples/typeNarrowingLiteralMember1.py +140 -0
  1167. package/src/tests/samples/typeNarrowingLocalConst1.py +136 -0
  1168. package/src/tests/samples/typeNarrowingNoneMember1.py +102 -0
  1169. package/src/tests/samples/typeNarrowingTuple1.py +23 -0
  1170. package/src/tests/samples/typeNarrowingTupleLength1.py +47 -0
  1171. package/src/tests/samples/typeNarrowingTypeIs1.py +95 -0
  1172. package/src/tests/samples/typeNarrowingTypedDict1.py +99 -0
  1173. package/src/tests/samples/typeNarrowingTypedDict2.py +35 -0
  1174. package/src/tests/samples/typeNarrowingTypedDict3.py +45 -0
  1175. package/src/tests/samples/typePromotions1.py +30 -0
  1176. package/src/tests/samples/typeVar1.py +23 -0
  1177. package/src/tests/samples/typeVar10.py +21 -0
  1178. package/src/tests/samples/typeVar11.py +12 -0
  1179. package/src/tests/samples/typeVar2.py +26 -0
  1180. package/src/tests/samples/typeVar3.py +73 -0
  1181. package/src/tests/samples/typeVar4.py +45 -0
  1182. package/src/tests/samples/typeVar5.py +75 -0
  1183. package/src/tests/samples/typeVar6.py +115 -0
  1184. package/src/tests/samples/typeVar7.py +171 -0
  1185. package/src/tests/samples/typeVar8.py +30 -0
  1186. package/src/tests/samples/typeVar9.py +118 -0
  1187. package/src/tests/samples/typedDict1.py +63 -0
  1188. package/src/tests/samples/typedDict10.py +34 -0
  1189. package/src/tests/samples/typedDict11.py +12 -0
  1190. package/src/tests/samples/typedDict12.py +103 -0
  1191. package/src/tests/samples/typedDict13.py +14 -0
  1192. package/src/tests/samples/typedDict14.py +25 -0
  1193. package/src/tests/samples/typedDict15.py +53 -0
  1194. package/src/tests/samples/typedDict16.py +103 -0
  1195. package/src/tests/samples/typedDict17.py +24 -0
  1196. package/src/tests/samples/typedDict18.py +43 -0
  1197. package/src/tests/samples/typedDict2.py +56 -0
  1198. package/src/tests/samples/typedDict3.py +40 -0
  1199. package/src/tests/samples/typedDict4.py +68 -0
  1200. package/src/tests/samples/typedDict5.py +50 -0
  1201. package/src/tests/samples/typedDict6.py +77 -0
  1202. package/src/tests/samples/typedDict7.py +22 -0
  1203. package/src/tests/samples/typedDict8.py +19 -0
  1204. package/src/tests/samples/typedDict9.py +22 -0
  1205. package/src/tests/samples/unbound1.py +18 -0
  1206. package/src/tests/samples/unbound2.py +12 -0
  1207. package/src/tests/samples/unbound3.py +13 -0
  1208. package/src/tests/samples/unbound4.py +25 -0
  1209. package/src/tests/samples/unicode1.py +39 -0
  1210. package/src/tests/samples/uninitializedVariable1.py +27 -0
  1211. package/src/tests/samples/unions1.py +79 -0
  1212. package/src/tests/samples/unions2.py +15 -0
  1213. package/src/tests/samples/unions3.py +48 -0
  1214. package/src/tests/samples/unions4.py +20 -0
  1215. package/src/tests/samples/unions5.py +43 -0
  1216. package/src/tests/samples/unnecessaryCast1.py +13 -0
  1217. package/src/tests/samples/unnecessaryIsInstance1.py +91 -0
  1218. package/src/tests/samples/unnecessaryIsSubclass1.py +22 -0
  1219. package/src/tests/samples/unpack1.py +56 -0
  1220. package/src/tests/samples/unpack2.py +27 -0
  1221. package/src/tests/samples/unpack3.py +16 -0
  1222. package/src/tests/samples/unpack4.py +15 -0
  1223. package/src/tests/samples/unreachable1.py +112 -0
  1224. package/src/tests/samples/unusedCallResult1.py +67 -0
  1225. package/src/tests/samples/unusedCoroutine1.py +23 -0
  1226. package/src/tests/samples/unusedExpression1.py +34 -0
  1227. package/src/tests/samples/unusedVariable1.py +21 -0
  1228. package/src/tests/samples/variadicTypeVar1.py +51 -0
  1229. package/src/tests/samples/variadicTypeVar10.py +65 -0
  1230. package/src/tests/samples/variadicTypeVar11.py +72 -0
  1231. package/src/tests/samples/variadicTypeVar12.py +26 -0
  1232. package/src/tests/samples/variadicTypeVar13.py +35 -0
  1233. package/src/tests/samples/variadicTypeVar14.py +72 -0
  1234. package/src/tests/samples/variadicTypeVar2.py +63 -0
  1235. package/src/tests/samples/variadicTypeVar3.py +86 -0
  1236. package/src/tests/samples/variadicTypeVar4.py +71 -0
  1237. package/src/tests/samples/variadicTypeVar5.py +131 -0
  1238. package/src/tests/samples/variadicTypeVar6.py +78 -0
  1239. package/src/tests/samples/variadicTypeVar7.py +59 -0
  1240. package/src/tests/samples/variadicTypeVar8.py +116 -0
  1241. package/src/tests/samples/variadicTypeVar9.py +38 -0
  1242. package/src/tests/samples/with1.py +117 -0
  1243. package/src/tests/samples/with2.py +63 -0
  1244. package/src/tests/samples/with3.py +66 -0
  1245. package/src/tests/samples/with4.py +24 -0
  1246. package/src/tests/samples/with5.py +33 -0
  1247. package/src/tests/samples/zipfs/bad.egg +1 -0
  1248. package/src/tests/samples/zipfs/bad.zip +1 -0
  1249. package/src/tests/samples/zipfs/basic.egg +0 -0
  1250. package/src/tests/samples/zipfs/basic.zip +0 -0
  1251. package/src/tests/samples/zipfs/corrupt.egg +0 -0
  1252. package/src/tests/samples/zipfs/corrupt.zip +0 -0
  1253. package/src/tests/sourceFile.test.ts +25 -0
  1254. package/src/tests/stringUtils.test.ts +63 -0
  1255. package/src/tests/symbolNameUtils.test.ts +77 -0
  1256. package/src/tests/testState.test.ts +579 -0
  1257. package/src/tests/testUtils.ts +251 -0
  1258. package/src/tests/tokenizer.test.ts +1534 -0
  1259. package/src/tests/typeEvaluator1.test.ts +1372 -0
  1260. package/src/tests/typeEvaluator2.test.ts +1253 -0
  1261. package/src/tests/typeEvaluator3.test.ts +1279 -0
  1262. package/src/tests/typeEvaluator4.test.ts +1178 -0
  1263. package/src/tests/updateSymbolReference.test.ts +1107 -0
  1264. package/src/tests/zipfs.test.ts +116 -0
  1265. 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
+ }