commit
7a43071faf
2
Makefile
2
Makefile
@ -17,7 +17,7 @@ relational_gui/resources.py:
|
||||
|
||||
.PHONY: mypy
|
||||
mypy:
|
||||
mypy relational
|
||||
mypy relational relational_readline
|
||||
|
||||
.PHONY: test
|
||||
test:
|
||||
|
@ -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:
|
||||
|
@ -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)
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user