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: 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: diff --git a/relational_readline/linegui.py b/relational_readline/linegui.py index 872c996..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 @@ -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: @@ -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)) @@ -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)