Skip to content

Importing

importing

importer

Importer

Bases: ABC

Source code in importing/importer.py
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
class Importer[SessionType](ABC):
    @property
    @abstractmethod
    def name(self) -> str:
        """
        The name of the importer. It will be quoted in the UI in texts such as
        "Imported as `name`, so keep it to a format name."
        """
        pass

    @abstractmethod
    def suggest(self, input_path: str) -> bool:
        """
        Check if the importer can handle the given file. This should be fairly
        restrictive based on reasonable assumptions, as it is only used for the
        initial importer suggestion. The user can always override the suggestion.
        """
        pass

    @abstractmethod
    def init_session(self, input_path: str) -> Optional[SessionType]:
        """
        Produces an initial import session object that contains all the configuration
        needed for the import. The user can either accept this configuration or
        customize it.

        Return None here if the importer cannot figure out how to configure the
        import parameters. This doesn't necessarily mean that the file cannot be
        loaded; the UI will force the user to customize the import session if the
        user wants to proceed with this importer.
        """
        pass

    @abstractmethod
    def manual_init_session(self, input_path: str) -> Optional[SessionType]:
        pass

    @abstractmethod
    def modify_session(
        self,
        input_path: str,
        import_session: SessionType,
        reset_screen: Callable[[SessionType], None],
    ) -> Optional[SessionType]:
        """
        Performs the interactive UI sequence that customizes the import session
        from the initial one.

        Return None here if the user interrupts the customization process.
        """
        pass
name abstractmethod property

The name of the importer. It will be quoted in the UI in texts such as "Imported as name, so keep it to a format name."

init_session(input_path) abstractmethod

Produces an initial import session object that contains all the configuration needed for the import. The user can either accept this configuration or customize it.

Return None here if the importer cannot figure out how to configure the import parameters. This doesn't necessarily mean that the file cannot be loaded; the UI will force the user to customize the import session if the user wants to proceed with this importer.

Source code in importing/importer.py
61
62
63
64
65
66
67
68
69
70
71
72
73
@abstractmethod
def init_session(self, input_path: str) -> Optional[SessionType]:
    """
    Produces an initial import session object that contains all the configuration
    needed for the import. The user can either accept this configuration or
    customize it.

    Return None here if the importer cannot figure out how to configure the
    import parameters. This doesn't necessarily mean that the file cannot be
    loaded; the UI will force the user to customize the import session if the
    user wants to proceed with this importer.
    """
    pass
modify_session(input_path, import_session, reset_screen) abstractmethod

Performs the interactive UI sequence that customizes the import session from the initial one.

Return None here if the user interrupts the customization process.

Source code in importing/importer.py
79
80
81
82
83
84
85
86
87
88
89
90
91
92
@abstractmethod
def modify_session(
    self,
    input_path: str,
    import_session: SessionType,
    reset_screen: Callable[[SessionType], None],
) -> Optional[SessionType]:
    """
    Performs the interactive UI sequence that customizes the import session
    from the initial one.

    Return None here if the user interrupts the customization process.
    """
    pass
suggest(input_path) abstractmethod

Check if the importer can handle the given file. This should be fairly restrictive based on reasonable assumptions, as it is only used for the initial importer suggestion. The user can always override the suggestion.

Source code in importing/importer.py
52
53
54
55
56
57
58
59
@abstractmethod
def suggest(self, input_path: str) -> bool:
    """
    Check if the importer can handle the given file. This should be fairly
    restrictive based on reasonable assumptions, as it is only used for the
    initial importer suggestion. The user can always override the suggestion.
    """
    pass

ImporterSession

Bases: ABC

The ImporterSession interface handles the ongoing configuration of an import. It keeps the configuration state, knows how to print the configuration to the console, and can load a preview of the data from the input file.

Source code in importing/importer.py
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
class ImporterSession(ABC):
    """
    The ImporterSession interface handles the ongoing configuration of an import.
    It keeps the configuration state, knows how to print the configuration to the
    console, and can load a preview of the data from the input file.
    """

    @abstractmethod
    def print_config(self) -> None:
        """
        Print the configuration of the import session to the console.
        """
        pass

    @abstractmethod
    def load_preview(self, n_records: int) -> Optional[pl.DataFrame]:
        """
        Attempt to load a preview of the data from the input file.

        Return None here if it is sure that the file cannot be loaded with the current
        configuration. Only throw an execption in the case of unexpected errors.
        """
        pass

    @abstractmethod
    def import_as_parquet(self, output_path: str) -> None:
        """
        Import the data from the input file to the output file in the Parquet format.
        """
        pass
import_as_parquet(output_path) abstractmethod

Import the data from the input file to the output file in the Parquet format.

Source code in importing/importer.py
31
32
33
34
35
36
@abstractmethod
def import_as_parquet(self, output_path: str) -> None:
    """
    Import the data from the input file to the output file in the Parquet format.
    """
    pass
load_preview(n_records) abstractmethod

Attempt to load a preview of the data from the input file.

Return None here if it is sure that the file cannot be loaded with the current configuration. Only throw an execption in the case of unexpected errors.

Source code in importing/importer.py
21
22
23
24
25
26
27
28
29
@abstractmethod
def load_preview(self, n_records: int) -> Optional[pl.DataFrame]:
    """
    Attempt to load a preview of the data from the input file.

    Return None here if it is sure that the file cannot be loaded with the current
    configuration. Only throw an execption in the case of unexpected errors.
    """
    pass
print_config() abstractmethod

Print the configuration of the import session to the console.

Source code in importing/importer.py
14
15
16
17
18
19
@abstractmethod
def print_config(self) -> None:
    """
    Print the configuration of the import session to the console.
    """
    pass