Module coscine.config

This file provides an easy way of reading coscine-python-sdk config files.

Expand source code
###############################################################################
# Coscine Python SDK
# Copyright (c) 2018-2022 RWTH Aachen University
# Licensed under the terms of the MIT License
# #############################################################################
# Coscine, short for Collaborative Scientific Integration Environment is
# a platform for research data management (RDM).
# For more information on Coscine visit https://www.coscine.de/.
#
# Please note that this python module is open source software primarily
# developed and maintained by the scientific community. It is not
# an official service that RWTH Aachen provides support for.
###############################################################################

###############################################################################
# File description
###############################################################################

"""
This file provides an easy way of reading coscine-python-sdk
config files.
"""

###############################################################################
# Dependencies
###############################################################################

from __future__ import annotations
from .__about__ import __version__
from .defaults import APPDIR
import json
import os

###############################################################################
# Class
###############################################################################

class Config:
        """
        A class to read from coscine-python-sdk config files.
        Lookup order:  
                0. Custom path specified in constructor (fail if not found)  
                1. Local config file  
                2. Local config directory  
                3. System directory (e.g. User/AppData/Local/... on Windows)  
        """

        token: str
        language: str
        concurrent: bool

###############################################################################

        def __init__(self, path: str = "") -> None:
                """
                Initialized the configuration file interface with an
                optional path argument.
                
                Parameters
                -----------
                path : str
                        If set to a valid file path, an attempt is made to laod
                        the file referenced by path as a config.
                
                Raises
                -------
                FileNotFoundError
                        In case no config file could have been located.
                """

                if path:
                        self.load(path)
                elif os.path.exists(".config.json"):
                        self.load(".config.json")
                elif os.path.exists(".coscine/"):
                        self.load(os.path.join(".coscine/", "config.json"))
                elif os.path.exists(APPDIR.user_config_dir):
                        self.load(os.path.join(APPDIR.user_config_dir, "config.json"))
                else:
                        raise FileNotFoundError("Failed to locate config file!")

###############################################################################

        def load(self, path: str) -> None:
                """
                Loads a valid coscine-python-sdk config file and validates
                the file for correctness.

                Parameters
                -----------
                path : str
                        The filepath to the configuration file (must include filename)
                """

                with open(path, "r") as fd:
                        data = json.load(fd)
                self.token = data["token"] if "token" in data else None
                self.language = data["language"] if "language" in data else None
                self.concurrent = data["concurrent"] if "concurrent" in data else True

###############################################################################

Classes

class Config (path: str = '')

A class to read from coscine-python-sdk config files. Lookup order:
0. Custom path specified in constructor (fail if not found)
1. Local config file
2. Local config directory
3. System directory (e.g. User/AppData/Local/… on Windows)

Initialized the configuration file interface with an optional path argument.

Parameters

path : str
If set to a valid file path, an attempt is made to laod the file referenced by path as a config.

Raises

FileNotFoundError
In case no config file could have been located.
Expand source code
class Config:
        """
        A class to read from coscine-python-sdk config files.
        Lookup order:  
                0. Custom path specified in constructor (fail if not found)  
                1. Local config file  
                2. Local config directory  
                3. System directory (e.g. User/AppData/Local/... on Windows)  
        """

        token: str
        language: str
        concurrent: bool

###############################################################################

        def __init__(self, path: str = "") -> None:
                """
                Initialized the configuration file interface with an
                optional path argument.
                
                Parameters
                -----------
                path : str
                        If set to a valid file path, an attempt is made to laod
                        the file referenced by path as a config.
                
                Raises
                -------
                FileNotFoundError
                        In case no config file could have been located.
                """

                if path:
                        self.load(path)
                elif os.path.exists(".config.json"):
                        self.load(".config.json")
                elif os.path.exists(".coscine/"):
                        self.load(os.path.join(".coscine/", "config.json"))
                elif os.path.exists(APPDIR.user_config_dir):
                        self.load(os.path.join(APPDIR.user_config_dir, "config.json"))
                else:
                        raise FileNotFoundError("Failed to locate config file!")

###############################################################################

        def load(self, path: str) -> None:
                """
                Loads a valid coscine-python-sdk config file and validates
                the file for correctness.

                Parameters
                -----------
                path : str
                        The filepath to the configuration file (must include filename)
                """

                with open(path, "r") as fd:
                        data = json.load(fd)
                self.token = data["token"] if "token" in data else None
                self.language = data["language"] if "language" in data else None
                self.concurrent = data["concurrent"] if "concurrent" in data else True

Class variables

var concurrent : bool
var language : str
var token : str

Methods

def load(self, path: str) ‑> None

Loads a valid coscine-python-sdk config file and validates the file for correctness.

Parameters

path : str
The filepath to the configuration file (must include filename)
Expand source code
def load(self, path: str) -> None:
        """
        Loads a valid coscine-python-sdk config file and validates
        the file for correctness.

        Parameters
        -----------
        path : str
                The filepath to the configuration file (must include filename)
        """

        with open(path, "r") as fd:
                data = json.load(fd)
        self.token = data["token"] if "token" in data else None
        self.language = data["language"] if "language" in data else None
        self.concurrent = data["concurrent"] if "concurrent" in data else True