Skip to content

Config

Config dataclass

Source code in dataimporter/lib/config.py
35
36
37
38
39
40
41
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
@dataclass
class Config:
    data_path: Path
    dumps_path: Path
    specimen_id: str
    artefact_id: str
    indexlot_id: str
    preparation_id: str
    sg_prefix: str
    iiif_base_url: str
    mongo_config: MongoConfig
    es_config: ElasticsearchConfig
    portal_config: PortalConfig
    gbif_username: Optional[str] = None
    gbif_password: Optional[str] = None
    source: Optional[Path] = None
    bo_chunk_size: int = 100
    bo_worker_count: int = 3

    def __post_init__(self):
        # make sure the paths are paths
        if not isinstance(self.data_path, Path):
            self.data_path = Path(self.data_path)
        if not isinstance(self.dumps_path, Path):
            self.dumps_path = Path(self.dumps_path)

    def get_elasticsearch_client(self) -> Elasticsearch:
        return self.es_config.get_client()

    def get_mongo_client(self) -> MongoClient:
        return self.mongo_config.get_client()

    def get_mongo_database_name(self) -> str:
        return self.mongo_config.database

    @property
    def lock_file(self) -> Path:
        """
        Path to the lock file to be used for the data directory.

        :return: the Path to the lock file
        """
        return self.data_path / 'importer.lock'

lock_file property

Path to the lock file to be used for the data directory.

Returns:

Type Description
Path

the Path to the lock file

load(path)

Given a path, load the configuration file at it, parse it and return a Config object based on its contents.

Parameters:

Name Type Description Default
path Path

the config file path to load

required

Returns:

Type Description
Config

a Config object

Source code in dataimporter/lib/config.py
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
def load(path: Path) -> Config:
    """
    Given a path, load the configuration file at it, parse it and return a Config object
    based on its contents.

    :param path: the config file path to load
    :return: a Config object
    """
    try:
        with path.open() as f:
            raw: dict = safe_load(f)

        es_config = ElasticsearchConfig(**raw.pop('elasticsearch', {}))
        mongo_config = MongoConfig(**raw.pop('mongo', {}))
        portal_config = PortalConfig(**raw.pop('portal', {}))
        config = Config(
            **raw,
            mongo_config=mongo_config,
            es_config=es_config,
            portal_config=portal_config,
            source=path,
        )

        return config
    except Exception as e:
        raise ConfigLoadError(str(e))