# Path: approvaltests/core/reporter.py
# class Reporter(ABC):
#     """
#     Super class of all reporters in ApprovalTests.Python
# 
#     The only necessary function to implement for a
#     reporter is 'report', which takes the absolute
#     paths of the received- and approved files, and
#     returns a truthy value on success.
#     """
# 
#     def __eq__(self, other):
#         return repr(self) == repr(other)
# 
#     @abstractmethod
#     def report(self, received_path: str, approved_path: str) -> bool:
#         """
#         Apply the reporter to pair of files given
#         as absolute paths parameters.
# 
#         A truthy return value from report means that it succeeded,
#         such as because any command existed.
# 
#         A falsy return value from report means that its operation
#         failed in some way.
# 
#         Note: At the time of writing, not all implementations of
#         Reporter return this value correctly.
#         """
#         raise Exception("Interface member not implemented")
# 
# Path: approvaltests/reporters/python_native_reporter.py
# class PythonNativeReporter(Reporter):
#     """
#     A reporter that outputs diff straight
#     to standard output.
# 
#     This is useful when running in a non-GUI environment,
#     such as in Continuous Integration systems.
#     """
# 
#     def report(self, received_path: str, approved_path: str) -> bool:
#         ensure_file_exists(approved_path)
#         print(calculate_diff_with_approve_instruction(received_path, approved_path))
#         return True
# 
#     def __str__(self):
#         return self.__class__.__name__
# 
#     __repr__ = __str__


from approvaltests.core.reporter import Reporter
from approvaltests.reporters.python_native_reporter import PythonNativeReporter


class IntroductionReporter(Reporter):

    def report(self, received_path: str, approved_path: str) -> bool:
        print(self.get_text())
        return PythonNativeReporter().report(received_path, approved_path)

    def get_text(self):
        return '''

# Path: approvaltests/core/reporter.py
# class Reporter(ABC):
#     """
#     Super class of all reporters in ApprovalTests.Python
# 
#     The only necessary function to implement for a
#     reporter is 'report', which takes the absolute
#     paths of the received- and approved files, and
#     returns a truthy value on success.
#     """
# 
#     def __eq__(self, other):
#         return repr(self) == repr(other)
# 
#     @abstractmethod
#     def report(self, received_path: str, approved_path: str) -> bool:
#         """
#         Apply the reporter to pair of files given
#         as absolute paths parameters.
# 
#         A truthy return value from report means that it succeeded,
#         such as because any command existed.
# 
#         A falsy return value from report means that its operation
#         failed in some way.
# 
#         Note: At the time of writing, not all implementations of
#         Reporter return this value correctly.
#         """
#         raise Exception("Interface member not implemented")
# 
# Path: approvaltests/reporters/python_native_reporter.py
# class PythonNativeReporter(Reporter):
#     """
#     A reporter that outputs diff straight
#     to standard output.
# 
#     This is useful when running in a non-GUI environment,
#     such as in Continuous Integration systems.
#     """
# 
#     def report(self, received_path: str, approved_path: str) -> bool:
#         ensure_file_exists(approved_path)
#         print(calculate_diff_with_approve_instruction(received_path, approved_path))
#         return True
# 
#     def __str__(self):
#         return self.__class__.__name__
# 
#     __repr__ = __str__


# Path: approvaltests/reporters/introduction_reporter.py
from approvaltests.core.reporter import Reporter
from approvaltests.reporters.python_native_reporter import PythonNativeReporter



class IntroductionReporter(Reporter):

    def report(self, received_path: str, approved_path: str) -> bool:
        print(self.get_text())
        return PythonNativeReporter().report(received_path, approved_path)

    def get_text(self):
        return '''

        Welcome to ApprovalTests!