Skip to content
This repository was archived by the owner on Mar 8, 2020. It is now read-only.

Commit d62a106

Browse files
authored
Merge pull request #112 from juanjux/feature/supported_languages
Add the SupportedLanguages protocol call
2 parents 42745d5 + df71401 commit d62a106

4 files changed

Lines changed: 32 additions & 8 deletions

File tree

bblfsh/aliases.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,14 @@
4040
"bblfsh.gopkg.in.bblfsh.sdk.%s.protocol.generated_pb2" % VERSION
4141
).VersionRequest
4242

43+
SupportedLanguagesRequest = importlib.import_module(
44+
"bblfsh.gopkg.in.bblfsh.sdk.%s.protocol.generated_pb2" % VERSION
45+
).SupportedLanguagesRequest
46+
47+
SupportedLanguagesResponse = importlib.import_module(
48+
"bblfsh.gopkg.in.bblfsh.sdk.%s.protocol.generated_pb2" % VERSION
49+
).SupportedLanguagesResponse
50+
4351
ProtocolServiceStub = importlib.import_module(
4452
"bblfsh.gopkg.in.bblfsh.sdk.%s.protocol.generated_pb2_grpc" % VERSION
4553
).ProtocolServiceStub

bblfsh/client.py

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,8 @@
33

44
import grpc
55

6-
from bblfsh.aliases import ParseRequest, NativeParseRequest, VersionRequest, ProtocolServiceStub
6+
from bblfsh.aliases import (ParseRequest, NativeParseRequest, VersionRequest,
7+
ProtocolServiceStub, SupportedLanguagesRequest, SupportedLanguagesResponse)
78
from bblfsh.sdkversion import VERSION
89

910
# The following two insertions fix the broken pb import paths
@@ -99,6 +100,10 @@ def native_parse(self, filename, language=None, contents=None, timeout=None):
99100
language=self._scramble_language(language))
100101
return self._stub.NativeParse(request, timeout=timeout)
101102

103+
def supported_languages(self):
104+
sup_response = self._stub.SupportedLanguages(SupportedLanguagesRequest())
105+
return sup_response.languages
106+
102107
def version(self):
103108
"""
104109
Queries the Babelfish server for version and runtime information.

bblfsh/test.py

Lines changed: 16 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,8 @@ def testNonUTF8ParseError(self):
4444
self.client.parse, "", "Python", b"a = '\x80abc'")
4545

4646
def testUASTDefaultLanguage(self):
47+
res = self.client.parse(__file__)
48+
print(res)
4749
self._validate_resp(self.client.parse(__file__))
4850

4951
def testUASTPython(self):
@@ -286,12 +288,21 @@ def testManyParsersAndFilters(self):
286288
# Check that memory usage has not doubled after running the parse+filter
287289
self.assertLess(after[2] / before[2], 2.0)
288290

291+
def testSupportedLanguages(self):
292+
res = self.client.supported_languages()
293+
self.assertGreater(len(res), 0)
294+
for l in res:
295+
for key in ('language', 'version', 'status', 'features'):
296+
print(key)
297+
self.assertTrue(hasattr(l, key))
298+
self.assertIsNotNone(getattr(l, key))
299+
289300
def _validate_filter(self, resp):
290-
results = filter(resp.uast, "//Import[@roleImport and @roleDeclaration]//alias")
291-
self.assertEqual(next(results).token, "os")
292-
self.assertEqual(next(results).token, "resource")
293-
self.assertEqual(next(results).token, "unittest")
294-
self.assertEqual(next(results).token, "docker")
301+
results = filter(resp.uast, "//Num")
302+
self.assertEqual(next(results).token, "0")
303+
self.assertEqual(next(results).token, "1")
304+
self.assertEqual(next(results).token, "100")
305+
self.assertEqual(next(results).token, "10")
295306

296307

297308
if __name__ == "__main__":

setup.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,9 @@
1010
from setuptools import setup, find_packages, Extension
1111
from setuptools.command.build_ext import build_ext
1212

13-
VERSION = "2.9.14"
13+
VERSION = "2.9.15"
1414
LIBUAST_VERSION = "v1.9.1"
15-
SDK_VERSION = "v1.8.0"
15+
SDK_VERSION = "v1.16.1"
1616
SDK_MAJOR = SDK_VERSION.split('.')[0]
1717
FORMAT_ARGS = globals()
1818

0 commit comments

Comments
 (0)