Beispiel #1
0
    def test_read_datapackage_schema_into_config(self):

        schema = read_packaged_file("datapackage.json", "otoole.preprocess")
        mock = MagicMock()
        mock.__getitem__.return_value = 0

        actual = extract_config(schema, mock)

        expected = read_packaged_file("config.yaml", "otoole.preprocess")
        assert actual == expected
Beispiel #2
0
 def _footer(self, handle: TextIO):
     datapackage = read_packaged_file("datapackage.json",
                                      "otoole.preprocess")
     filepath = os.path.join(self.filepath, "datapackage.json")
     with open(filepath, "w", newline="") as destination:
         destination.writelines(datapackage)
     self._write_default_values()
Beispiel #3
0
def validate_model(args):
    file_format = args.format

    if args.config:
        config = read_packaged_file(args.config)
        validate(file_format, args.filepath, config)
    else:
        validate(file_format, args.filepath)
Beispiel #4
0
def read_validation_config():
    return read_packaged_file("validate.yaml", "otoole")
Beispiel #5
0
 def _read_results_config(self) -> Dict[str, Dict]:
     return read_packaged_file("config.yaml", "otoole.results")
Beispiel #6
0
 def _read_config(self) -> Dict[str, Dict]:
     return read_packaged_file("config.yaml", "otoole.preprocess")
def generate_package(path_to_package):
    """Creates a datapackage in folder ``path_to_package``

    [{'fields': 'REGION', 'reference': {'resource': 'REGION', 'fields': 'VALUE'}}]
    """

    datapath = os.path.join(path_to_package)
    package = Package(base_path=datapath)

    package.infer("data/*.csv")

    package.descriptor["licenses"] = [
        {
            "name": "CC-BY-4.0",
            "path": "https://creativecommons.org/licenses/by/4.0/",
            "title": "Creative Commons Attribution 4.0",
        }
    ]

    package.descriptor["title"] = "The OSeMOSYS Simplicity Example Model"

    package.descriptor["name"] = "osemosys_model_simplicity"

    package.descriptor["contributors"] = [
        {
            "title": "Will Usher",
            "email": "*****@*****.**",
            "path": "http://www.kth.se/wusher",
            "role": "author",
        }
    ]

    package.commit()

    config = read_packaged_file("config.yaml", "otoole.preprocess")

    new_resources = []
    for resource in package.resources:

        descriptor = resource.descriptor

        name = resource.name
        if config[name]["type"] == "param":

            indices = config[name]["indices"]
            logger.debug("Indices of %s are %s", name, indices)

            foreign_keys = []
            for index in indices:
                key = {
                    "fields": index,
                    "reference": {"resource": index, "fields": "VALUE"},
                }
                foreign_keys.append(key)

            descriptor["schema"]["foreignKeys"] = foreign_keys
            descriptor["schema"]["primaryKey"] = indices
            descriptor["schema"]["missingValues"] = [""]

        new_resources.append(descriptor)

    package.descriptor["resources"] = new_resources
    package.commit()

    filepath = os.path.join(path_to_package, "datapackage.json")
    package.save(filepath)