Choosable dependency

Manfred Lotz ml_news at posteo.de
Sat Mar 6 06:43:32 EST 2021


On Sat, 6 Mar 2021 12:00:33 +0100
Manfred Lotz <ml_news at posteo.de> wrote:

> Let us say I have a package which reads a TOML file. 
> 
> I want to give the user of my package the choice to decide if he wants
> to use the toml, tomlkit or rtoml package. 
> 
> So, in case the user chose to use rtoml then there should be an import
> only for rtoml, aso.
> 
> How could I achieve this?
> 

I got the following minimal example working but presumably my solution
isn't the best way.

xtoml.py:

class Xtoml:
    def __init__(self, which='rtoml'):
        self.which = which

    def parse_toml(self, toml_string):
        if self.which == 'rtoml':
            import rtoml as toml
        elif self.which == 'tomlkit':
            import tomlkit as toml
        else:
            import toml

        return toml.loads(toml_string)


test_xtoml.py:

from xtoml import Xtoml

toml_string = """
[default]

basedir = "/myproject"

"""

def main():
    xtoml = Xtoml('toml')
    parsed_toml = xtoml.parse_toml(toml_string)
    print(parsed_toml)

    xtoml = Xtoml()
    parsed_toml = xtoml.parse_toml(toml_string)
    print(parsed_toml)

if __name__ == "__main__":
    main()




More information about the Python-list mailing list