Source code for aihwkit.cloud.client.utils

# -*- coding: utf-8 -*-

# (C) Copyright 2020, 2021, 2022 IBM. All Rights Reserved.
#
# This code is licensed under the Apache License, Version 2.0. You may
# obtain a copy of this license in the LICENSE.txt file in the root directory
# of this source tree or at http://www.apache.org/licenses/LICENSE-2.0.
#
# Any modifications or derivative works of this code must retain this
# copyright notice, and modified files need to carry a notice indicating
# that they have been altered from the originals.

"""Utilities for the AIHW Composer API."""

from os import getenv, path
from typing import Dict
from configparser import ConfigParser

DEFAULT_URL = 'https://api-aihw-composer.draco.res.ibm.com'


[docs]class ClientConfiguration: """Helper for retrieving the user configuration. Utility for retrieving the user configuration. The API token will be retrieved from, in order of preference: 1. the ``AIHW_API_TOKEN`` environment variable. 2. the ``aihwkit.conf`` configuration file. 3. if the API token could not be found, it will return ``None``. The API URL will be retrieved from, in order of preference: 1. the ``aihwkit.conf`` configuration file. 2. the ``DEFAULT_URL`` module variable. The ``aihwkit.conf`` file is read from: * the current working directory. * ``XDG_CONFIG_HOME`` ``/aihwkit`` (by default, ``~/.config/aihwkit``). """ def __init__(self) -> None: self.stored_config = self.parse_config()
[docs] def parse_config(self) -> Dict: """Read the configuration from a config file. Returns: A dictionary with the contents of the ``aihwkit.conf`` configuration file. """ parser = ConfigParser() parser.read(['aihwkit.conf', path.expanduser('{}/aihwkit/aihwkit.conf'.format( getenv('XDG_CONFIG_HOME', '~/.config')))]) # Check that the expected section is present. if 'cloud' in parser: return dict(parser['cloud']) return {}
@property def token(self) -> str: """Return the user token.""" return getenv('AIHW_API_TOKEN', self.stored_config.get('api_token', None)) @property def url(self) -> str: """Return the API URL.""" return self.stored_config.get('api_url', DEFAULT_URL)