Files
secondo-py/pysecondo/__main__.py
2026-01-24 11:30:02 +08:00

47 lines
1.6 KiB
Python

"""
Main entry point for PySECONDO package
"""
from .repl import REPL
if __name__ == "__main__":
import sys
repl = REPL()
if len(sys.argv) > 1 and sys.argv[1] == "--test":
# Run test mode
from pysecondo.storage.memory import MemoryStorage
from pysecondo.algebras.base import AlgebraManager
from pysecondo.algebras.standard import StandardAlgebra
from pysecondo.algebras.relation import RelationAlgebra
from pysecondo.parser.parser import Parser
from pysecondo.parser.evaluator import Evaluator
from pysecondo.core.types import parse_type
from pysecondo.core.nested_list import list_nl
storage = MemoryStorage()
algebra_manager = AlgebraManager()
algebra_manager.register_algebra("StandardAlgebra", StandardAlgebra())
algebra_manager.register_algebra(
"RelationAlgebra", RelationAlgebra(storage))
parser = Parser()
evaluator = Evaluator(algebra_manager, storage)
# Create test data
cities_type = parse_type(
'(rel (tuple ((Name string)(Population int))))')
cities_data = list_nl(
list_nl("Beijing", 21540000),
list_nl("Shanghai", 24280000),
list_nl("Guangzhou", 14040000),
)
storage.create_object("cities", cities_data, cities_type)
# Run test query
print("Test: query cities feed count")
tokens = parser.parse_expression("cities feed count")
value, _ = evaluator.evaluate(tokens)
print(f"Result: {value.to_python()}")
else:
repl.run()