From ccfdff6fd336f90756811b76016824a5cd3e8dad Mon Sep 17 00:00:00 2001 From: Salvo 'LtWorf' Tomaselli Date: Sat, 15 Aug 2020 21:17:37 +0200 Subject: [PATCH 1/5] Use fstrings --- relational/relation.py | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/relational/relation.py b/relational/relation.py index d9f1703..8c8d1a6 100644 --- a/relational/relation.py +++ b/relational/relation.py @@ -134,7 +134,7 @@ class Relation(NamedTuple): try: c_expr = compile(expr, 'selection', 'eval') except: - raise Exception('Failed to compile expression: %s' % expr) + raise Exception(f'Failed to compile expression: {expr}') content = [] for i in self.content: @@ -147,8 +147,7 @@ class Relation(NamedTuple): if eval(c_expr, attributes): content.append(i) except Exception as e: - raise Exception( - "Failed to evaluate %s\n%s" % (expr, e.__str__())) + raise Exception(f'Failed to evaluate {expr}\n{e}') return Relation(header, frozenset(content)) def product(self, other: 'Relation') -> 'Relation': @@ -403,7 +402,7 @@ class Header(tuple): for i in self: if not is_valid_relation_name(i): - raise Exception('"%s" is not a valid attribute name' % i) + raise Exception(f'"{i}" is not a valid attribute name') if len(self) != len(set(self)): raise Exception('Attribute names must be unique') @@ -419,12 +418,12 @@ class Header(tuple): attrs = list(self) for old, new in params.items(): if not is_valid_relation_name(new): - raise Exception('%s is not a valid attribute name' % new) + raise Exception(f'{new} is not a valid attribute name') try: id_ = attrs.index(old) attrs[id_] = new except: - raise Exception('Field not found: %s' % old) + raise Exception(f'Field not found: {old}') return Header(attrs) def sharedAttributes(self, other: 'Header') -> int: From a67ec498c2e2501fcdb3ee0970c86e6291bd4227 Mon Sep 17 00:00:00 2001 From: Salvo 'LtWorf' Tomaselli Date: Sat, 15 Aug 2020 21:19:59 +0200 Subject: [PATCH 2/5] Check cli module --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 03f054f..083b0b2 100644 --- a/Makefile +++ b/Makefile @@ -17,7 +17,7 @@ relational_gui/resources.py: .PHONY: mypy mypy: - mypy relational + mypy relational relational_readline .PHONY: test test: From 36e312ba7b6b3e9e48395a387e59eaad3a3d1d78 Mon Sep 17 00:00:00 2001 From: Salvo 'LtWorf' Tomaselli Date: Sat, 15 Aug 2020 21:20:12 +0200 Subject: [PATCH 3/5] Use new API in cli --- relational_readline/linegui.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/relational_readline/linegui.py b/relational_readline/linegui.py index 872c996..db04f5e 100644 --- a/relational_readline/linegui.py +++ b/relational_readline/linegui.py @@ -137,7 +137,7 @@ def load_relation(filename: str, defname:Optional[str]=None) -> Optional[str]: "%s is not a valid relation name" % defname, ERROR_COLOR), file=sys.stderr) return None try: - relations[defname] = relation.Relation(filename) + relations[defname] = relation.Relation.load(filename) completer.add_completion(defname) printtty(colorize("Loaded relation %s" % defname, COLOR_GREEN)) From 7e3c4d3ff93d32d1bd56fee8b1187c44622859e6 Mon Sep 17 00:00:00 2001 From: Salvo 'LtWorf' Tomaselli Date: Sat, 15 Aug 2020 21:24:36 +0200 Subject: [PATCH 4/5] Make mypy happy --- relational_readline/linegui.py | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/relational_readline/linegui.py b/relational_readline/linegui.py index db04f5e..e00bc19 100644 --- a/relational_readline/linegui.py +++ b/relational_readline/linegui.py @@ -113,7 +113,7 @@ completer = SimpleCompleter( '_DIFFERENCE ', '_JOIN ', '_LJOIN ', '_RJOIN ', '_FJOIN ', '_PROJECTION ', '_RENAME_TO ', '_SELECTION ', '_RENAME ', '_DIVISION ']) -def load_relation(filename: str, defname:Optional[str]=None) -> Optional[str]: +def load_relation(filename: str, defname: Optional[str]) -> Optional[str]: ''' Loads a relation into the set. Defname is the given name to the relation. @@ -123,7 +123,7 @@ def load_relation(filename: str, defname:Optional[str]=None) -> Optional[str]: ''' if not os.path.isfile(filename): print(colorize( - "%s is not a file" % filename, ERROR_COLOR), file=sys.stderr) + f'{filename} is not a file', ERROR_COLOR), file=sys.stderr) return None if defname is None: @@ -216,10 +216,9 @@ def exec_line(command: str) -> None: return filename = pars[1] + defname = None if len(pars) > 2: defname = pars[2] - else: - defname = None load_relation(filename, defname) elif command.startswith('UNLOAD '): @@ -320,7 +319,7 @@ def main(files=[]): "; Completion is activated using the tab (if supported by the terminal)") for i in files: - load_relation(i) + load_relation(i, None) readline.set_completer(completer.complete) From b43db451e5a6b381ed66d033285bb3bee6ddadda Mon Sep 17 00:00:00 2001 From: Salvo 'LtWorf' Tomaselli Date: Sat, 15 Aug 2020 21:25:11 +0200 Subject: [PATCH 5/5] Don't feel like writing stubs --- relational_readline/linegui.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/relational_readline/linegui.py b/relational_readline/linegui.py index e00bc19..8655cac 100644 --- a/relational_readline/linegui.py +++ b/relational_readline/linegui.py @@ -27,7 +27,7 @@ from typing import Optional from relational import relation, parser, rtypes from relational import maintenance -from xtermcolor import colorize +from xtermcolor import colorize # type: ignore PROMPT_COLOR = 0xffff00 ERROR_COLOR = 0xff0000