# Path: approvaltests/approval_exception.py
# class FrameNotFound(ApprovalException):
#     pass


import inspect
import json
import os
from inspect import FrameInfo
from typing import Dict, List, Optional
from approvaltests.approval_exception import FrameNotFound



class Namer(object):
    APPROVED = ".approved"
    RECEIVED = ".received"

    def __init__(self, extension: Optional[str] = None) -> None:
        self.extension_with_dot = extension or ".txt"

    def get_file_name(self):
        raise Exception("This class is abstract, override this method in a subclass")

    def get_directory(self):
        raise Exception("This class is abstract, override this method in a subclass")


# Path: approvaltests/approval_exception.py
# class FrameNotFound(ApprovalException):
#     pass


# Path: approvaltests/core/namer.py
import inspect
import json
import os
from inspect import FrameInfo
from typing import Dict, List, Optional
from approvaltests.approval_exception import FrameNotFound




class Namer(object):
    APPROVED = ".approved"
    RECEIVED = ".received"

    def __init__(self, extension: Optional[str] = None) -> None:
        self.extension_with_dot = extension or ".txt"

    def get_file_name(self):
        raise Exception("This class is abstract, override this method in a subclass")

    def get_directory(self):
        raise Exception("This class is abstract, override this method in a subclass")


    def get_config(self):