From 519da0506c70687968c0dedb5da0b9ebd62480d0 Mon Sep 17 00:00:00 2001 From: Adrian Ehrsam Date: Tue, 13 May 2025 17:12:24 +0200 Subject: [PATCH 1/5] try to use %sql --- packages/pyright-internal/src/analyzer/sourceFile.ts | 4 ++++ .../pyright-internal/src/tests/samples/notebook.ipynb | 10 ++++++++++ 2 files changed, 14 insertions(+) diff --git a/packages/pyright-internal/src/analyzer/sourceFile.ts b/packages/pyright-internal/src/analyzer/sourceFile.ts index b884b4a5ab..38d7ea5074 100644 --- a/packages/pyright-internal/src/analyzer/sourceFile.ts +++ b/packages/pyright-internal/src/analyzer/sourceFile.ts @@ -570,6 +570,10 @@ export class SourceFile { try { //TODO: this isnt ideal because it re-reads the file for each cell which is unnecessary source = getIPythonCells(this.fileSystem, this.getRealUri(), this._console)?.[cellIndex]?.source; + // Make sure we don't return any non-python cells + if(source && ["%sql", "%%sql", "%sh", "%pip", "%run", "%fs", "%load", "%matplotlib", "%who", "%env"].includes(source[0].split(/[\s]/)[0])){ + return undefined; + } } catch (e) { this._console.error(e instanceof Error ? e.message : String(e)); } diff --git a/packages/pyright-internal/src/tests/samples/notebook.ipynb b/packages/pyright-internal/src/tests/samples/notebook.ipynb index a2385e29e1..e4f04572e7 100644 --- a/packages/pyright-internal/src/tests/samples/notebook.ipynb +++ b/packages/pyright-internal/src/tests/samples/notebook.ipynb @@ -17,6 +17,16 @@ "source": [ "bar: str = foo" ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%sql\n", + "SELECT 1 AS foo, 2 AS bar" + ] } ], "metadata": { From b9eec164509dd0fed29c3f1faa329480821cc0be Mon Sep 17 00:00:00 2001 From: Adrian Ehrsam Date: Tue, 13 May 2025 17:16:34 +0200 Subject: [PATCH 2/5] prettier --- packages/pyright-internal/src/analyzer/sourceFile.ts | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/packages/pyright-internal/src/analyzer/sourceFile.ts b/packages/pyright-internal/src/analyzer/sourceFile.ts index 38d7ea5074..ff30f6ad51 100644 --- a/packages/pyright-internal/src/analyzer/sourceFile.ts +++ b/packages/pyright-internal/src/analyzer/sourceFile.ts @@ -571,7 +571,12 @@ export class SourceFile { //TODO: this isnt ideal because it re-reads the file for each cell which is unnecessary source = getIPythonCells(this.fileSystem, this.getRealUri(), this._console)?.[cellIndex]?.source; // Make sure we don't return any non-python cells - if(source && ["%sql", "%%sql", "%sh", "%pip", "%run", "%fs", "%load", "%matplotlib", "%who", "%env"].includes(source[0].split(/[\s]/)[0])){ + if ( + source && + ['%sql', '%%sql', '%sh', '%pip', '%run', '%fs', '%load', '%matplotlib', '%who', '%env'].includes( + source[0].split(/[\s]/)[0] + ) + ) { return undefined; } } catch (e) { From 5d030f57a6cf46752b222b9f5ce4bc6eefe24d06 Mon Sep 17 00:00:00 2001 From: Adrian Ehrsam Date: Tue, 13 May 2025 17:25:37 +0200 Subject: [PATCH 3/5] adjust test --- packages/pyright-internal/src/tests/notebooks.test.ts | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/packages/pyright-internal/src/tests/notebooks.test.ts b/packages/pyright-internal/src/tests/notebooks.test.ts index df5bb23180..7d8f3fe47f 100644 --- a/packages/pyright-internal/src/tests/notebooks.test.ts +++ b/packages/pyright-internal/src/tests/notebooks.test.ts @@ -4,7 +4,7 @@ import { ErrorTrackingNullConsole, typeAnalyzeSampleFiles, validateResultsButBas test('symbol from previous cell', () => { const analysisResults = typeAnalyzeSampleFiles(['notebook.ipynb']); - tExpect(analysisResults.length).toStrictEqual(2); + tExpect(analysisResults.length).toStrictEqual(3); validateResultsButBased(analysisResults[0], { errors: [], }); @@ -18,6 +18,9 @@ test('symbol from previous cell', () => { }, ], }); + validateResultsButBased(analysisResults[2], { + errors: [], + }); }); test('non-python cell', () => { From 746f65ec5b2f9a86c6da2309a20458f69b693244 Mon Sep 17 00:00:00 2001 From: Adrian Ehrsam Date: Tue, 13 May 2025 20:47:54 +0200 Subject: [PATCH 4/5] empty string --- packages/pyright-internal/src/analyzer/sourceFile.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/packages/pyright-internal/src/analyzer/sourceFile.ts b/packages/pyright-internal/src/analyzer/sourceFile.ts index ff30f6ad51..447d8b9e9b 100644 --- a/packages/pyright-internal/src/analyzer/sourceFile.ts +++ b/packages/pyright-internal/src/analyzer/sourceFile.ts @@ -577,7 +577,7 @@ export class SourceFile { source[0].split(/[\s]/)[0] ) ) { - return undefined; + return ''; } } catch (e) { this._console.error(e instanceof Error ? e.message : String(e)); @@ -735,6 +735,7 @@ export class SourceFile { }); logState.add(`fs read ${timingStats.readFileTime.totalTime - startTime}ms`); } catch (error) { + console.log(error); diagSink.addError(`Source file could not be read`, getEmptyRange()); fileContents = ''; From a8b2eeda7e20c1ecd1a2faa2beef6a591223989e Mon Sep 17 00:00:00 2001 From: Adrian Ehrsam Date: Tue, 13 May 2025 20:48:35 +0200 Subject: [PATCH 5/5] remove console.log --- packages/pyright-internal/src/analyzer/sourceFile.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/packages/pyright-internal/src/analyzer/sourceFile.ts b/packages/pyright-internal/src/analyzer/sourceFile.ts index 447d8b9e9b..ce2db3f2ca 100644 --- a/packages/pyright-internal/src/analyzer/sourceFile.ts +++ b/packages/pyright-internal/src/analyzer/sourceFile.ts @@ -735,7 +735,6 @@ export class SourceFile { }); logState.add(`fs read ${timingStats.readFileTime.totalTime - startTime}ms`); } catch (error) { - console.log(error); diagSink.addError(`Source file could not be read`, getEmptyRange()); fileContents = '';