Skip to content

Commit a4d9e95

Browse files
authored
Merge pull request #980 from skbitsp/sk-lsp
Adding foreign code extractors for spark sql and exporting required classes
2 parents dc46506 + 95433f0 commit a4d9e95

File tree

6 files changed

+36
-14
lines changed

6 files changed

+36
-14
lines changed

atest/04_Interface/DiagnosticsPanel.robot

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ Test Tags ui:notebook aspect:ls:features
99

1010

1111
*** Variables ***
12-
${DIAGNOSTIC MESSAGE R} Closing curly-braces should always be on their own line
12+
${DIAGNOSTIC MESSAGE R} Opening curly braces should never go on their own line and should always be followed by a new line
1313
${DIAGNOSTIC MESSAGE} trailing whitespace
1414
${DIAGNOSTIC} W291 trailing whitespace (pycodestyle)
1515
${EXPECTED_COUNT} 4

packages/jupyterlab-lsp/src/index.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,12 @@
33
/** General public tokens, including lumino Tokens and namespaces */
44
export * from './tokens';
55

6+
/** Export the required classes */
7+
export { FileEditorAdapter } from './adapters/file_editor/file_editor';
8+
export { FileEditorContextMenuEntryPoint } from './adapters/file_editor';
9+
export { PositionConverter } from './converter';
10+
export { VirtualDocument } from './virtual/document';
11+
612
/** Generated JSON Schema types for server responses and settings */
713
export * as SCHEMA from './_schema';
814

packages/jupyterlab-lsp/src/transclusions/ipython-sql/extractors.ts

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,20 @@ export let foreign_code_extractors: IForeignCodeExtractorsRegistry = {
3737
foreign_capture_groups: [1],
3838
is_standalone: false,
3939
file_extension: 'sql'
40+
}),
41+
new RegExpForeignCodeExtractor({
42+
language: 'sql',
43+
pattern: `^%%spark -c sql(?: (?:${SQL_URL_PATTERN}|${COMMAND_PATTERN}|(?:\\w+ << )|(?:\\w+@\\w+)))?\n?((?:.+\n)?(?:[^]*))`,
44+
foreign_capture_groups: [1],
45+
is_standalone: true,
46+
file_extension: 'sql'
47+
}),
48+
new RegExpForeignCodeExtractor({
49+
language: 'sql',
50+
pattern: `(?:^|\n)%spark -c sql (?:${SQL_URL_PATTERN}|${COMMAND_PATTERN}|(.*))\n?`,
51+
foreign_capture_groups: [1],
52+
is_standalone: false,
53+
file_extension: 'sql'
4054
})
4155
]
4256
};

python_packages/jupyter_lsp/jupyter_lsp/handlers.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ class LanguageServerWebSocketHandler( # type: ignore
2323
):
2424
"""Setup tornado websocket to route to language server sessions"""
2525

26-
language_server = None # type: Optional[Text]
26+
language_server: Optional[Text] = None
2727

2828
async def open(self, language_server):
2929
await self.manager.ready()

python_packages/jupyter_lsp/jupyter_lsp/manager.py

Lines changed: 12 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,9 @@
4646
)
4747

4848

49+
_SessionDict = Dict[Tuple[Text], LanguageServerSession]
50+
51+
4952
class LanguageServerManager(LanguageServerManagerAPI):
5053
"""Manage language servers"""
5154

@@ -61,17 +64,17 @@ class LanguageServerManager(LanguageServerManagerAPI):
6164
config=True
6265
) # type: KeyedLanguageServerSpecs
6366

64-
autodetect = Bool(
67+
autodetect: bool = Bool( # type:ignore[assignment]
6568
True, help=_("try to find known language servers in sys.prefix (and elsewhere)")
6669
).tag(
6770
config=True
68-
) # type: bool
71+
)
6972

70-
sessions = Dict_( # type:ignore[assignment]
73+
sessions: _SessionDict = Dict_( # type:ignore[assignment]
7174
trait=Instance(LanguageServerSession),
7275
default_value={},
7376
help="sessions keyed by language server name",
74-
) # type: Dict[Tuple[Text], LanguageServerSession]
77+
)
7578

7679
virtual_documents_dir = Unicode(
7780
help="""Path to virtual documents relative to the content manager root
@@ -99,8 +102,8 @@ def _default_virtual_documents_dir(self):
99102
return os.getenv("JP_LSP_VIRTUAL_DIR", ".virtual_documents")
100103

101104
@default("conf_d_language_servers")
102-
def _default_conf_d_language_servers(self):
103-
language_servers = {} # type: KeyedLanguageServerSpecs
105+
def _default_conf_d_language_servers(self) -> KeyedLanguageServerSpecs:
106+
language_servers: KeyedLanguageServerSpecs = {}
104107

105108
manager = ConfigManager(read_config_path=jupyter_config_path())
106109

@@ -113,10 +116,10 @@ def _default_conf_d_language_servers(self):
113116

114117
return language_servers
115118

116-
def __init__(self, **kwargs):
119+
def __init__(self, **kwargs: Dict):
117120
"""Before starting, perform all necessary configuration"""
118121
self.all_language_servers: KeyedLanguageServerSpecs = {}
119-
self._language_servers_from_config = {}
122+
self._language_servers_from_config: KeyedLanguageServerSpecs = {}
120123
super().__init__(**kwargs)
121124

122125
def initialize(self, *args, **kwargs):
@@ -253,7 +256,7 @@ def _autodetect_language_servers(self, only_installed: bool):
253256

254257
for ep in _entry_points or []:
255258
try:
256-
spec_finder = ep.load() # type: SpecMaker
259+
spec_finder: SpecMaker = ep.load()
257260
except Exception as err: # pragma: no cover
258261
self.log.warning(
259262
_("Failed to load language server spec finder `{}`: \n{}").format(

python_packages/jupyter_lsp/jupyter_lsp/types.py

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -72,9 +72,8 @@ class MessageScope(enum.Enum):
7272
class MessageListener(object):
7373
"""A base listener implementation"""
7474

75-
listener = None # type: HandlerListenerCallback
76-
language_server = None # type: Optional[Pattern[Text]]
77-
method = None # type: Optional[Pattern[Text]]
75+
language_server: Optional[Pattern[Text]] = None
76+
method: Optional[Pattern[Text]] = None
7877

7978
def __init__(
8079
self,

0 commit comments

Comments
 (0)