Source code for pyccel.utilities.stage

# ------------------------------------------------------------------------------------------#
# This file is part of Pyccel which is released under MIT License. See the LICENSE file or #
# go to https://github.com/pyccel/pyccel/blob/devel/LICENSE for full license details.      #
# ------------------------------------------------------------------------------------------#
"""File containing information about which treatment stage Pyccel is executing"""

from .metaclasses import Singleton


[docs] class PyccelStage(metaclass=Singleton): """ Class wrapping a string indicating which treatment stage Pyccel is executing. Class wrapping a string indicating which treatment stage Pyccel is executing. This string is one of: - syntactic - semantic - codegen - cwrapper - compilation - buildgen When Pyccel is not executing the stage is None. """ def __init__(self): self._stage = None
[docs] def set_stage(self, stage): """ Set the current treatment stage. Set the current treatment stage. Parameters ---------- stage : str One of the valid stages. """ assert stage in ( "syntactic", "semantic", "codegen", "cwrapper", "compilation", "buildgen", ) self._stage = stage
def __eq__(self, other): return self._stage == other
[docs] def pyccel_finished(self): """Indicate that Pyccel has finished running and reset stage to None""" self._stage = None
@property def current_stage(self): """ Get the current stage as a string. Returns one of: - syntactic - semantic - codegen - cwrapper - compilation - buildgen indicating the current stage. """ return self._stage def __str__(self): return self._stage