pumpwood_communication.microservices

Module microservice.py.

Class and functions to help communication between PumpWood like systems.

 1"""Module microservice.py.
 2
 3Class and functions to help communication between PumpWood like systems.
 4"""
 5import io
 6import gzip
 7import pandas as pd
 8import simplejson as json
 9from pandas import ExcelWriter
10
11
12# Importing abstract classes for Micro Service
13from pumpwood_communication.microservice_abc.simple import (
14    ABCSimpleBatchMicroservice, ABCSimpleRetriveMicroservice,
15    ABCSimpleDeleteMicroservice, ABCSimpleSaveMicroservice,
16    ABCSimpleListMicroservice, ABCSimpleDimensionMicroservice,
17    ABCSimpleActionMicroservice, ABCSimpleInfoMicroservice)
18from pumpwood_communication.microservice_abc.parallel import (
19    ABCParallelActionMicroservice, ABCParallelDeleteMicroservice,
20    ABCParallelListMicroservice, ABCParallelRetriveMicroservice,
21    ABCParallelSaveMicroservice, ABCParallelBatchMicroservice)
22from pumpwood_communication.microservice_abc.system import (
23    ABCSystemMicroservice, ABCPermissionMicroservice)
24
25
26class PumpWoodMicroService(ABCPermissionMicroservice,
27                           ABCSystemMicroservice,
28                           ABCSimpleBatchMicroservice,
29                           ABCSimpleRetriveMicroservice,
30                           ABCSimpleDeleteMicroservice,
31                           ABCSimpleSaveMicroservice,
32                           ABCSimpleListMicroservice,
33                           ABCSimpleDimensionMicroservice,
34                           ABCSimpleActionMicroservice,
35                           ABCSimpleInfoMicroservice,
36                           ABCParallelActionMicroservice,
37                           ABCParallelDeleteMicroservice,
38                           ABCParallelListMicroservice,
39                           ABCParallelRetriveMicroservice,
40                           ABCParallelSaveMicroservice,
41                           ABCParallelBatchMicroservice):
42    """Class to define an inter-pumpwood MicroService.
43
44    Create an object ot help communication with Pumpwood based backends. It
45    manage login and token refresh if necessary.
46
47    It also implements parallel functions that split requests in parallel
48    process to reduce processing time.
49    """
50
51    ########################
52    # Parallel aux functions
53    def get_queue_matrix(self, queue_pk: int, auth_header: dict = None,
54                         save_as_excel: str = None):
55        """Download model queue estimation matrix. In development..."""
56        file_content = self.retrieve_file(
57            model_class="ModelQueue", pk=queue_pk,
58            file_field="model_matrix_file", auth_header=auth_header,
59            save_file=False)
60        content = gzip.GzipFile(
61            fileobj=io.BytesIO(file_content["content"])).read()
62        data = json.loads(content.decode('utf-8'))
63        columns_info = pd.DataFrame(data["columns_info"])
64        model_matrix = pd.DataFrame(data["model_matrix"])
65
66        if save_as_excel is not None:
67            writer = ExcelWriter(save_as_excel)
68            columns_info.to_excel(writer, 'columns_info', index=False)
69            model_matrix.to_excel(writer, 'model_matrix', index=False)
70            writer.save()
71        else:
72            return {
73                "columns_info": columns_info,
74                "model_matrix": model_matrix}
class PumpWoodMicroService(pumpwood_communication.microservice_abc.system.permission.ABCPermissionMicroservice, pumpwood_communication.microservice_abc.system.general.ABCSystemMicroservice, pumpwood_communication.microservice_abc.simple.batch.main.ABCSimpleBatchMicroservice, pumpwood_communication.microservice_abc.simple.retrieve.ABCSimpleRetriveMicroservice, pumpwood_communication.microservice_abc.simple.delete.ABCSimpleDeleteMicroservice, pumpwood_communication.microservice_abc.simple.save.ABCSimpleSaveMicroservice, pumpwood_communication.microservice_abc.simple.list.ABCSimpleListMicroservice, pumpwood_communication.microservice_abc.simple.dimensions.ABCSimpleDimensionMicroservice, pumpwood_communication.microservice_abc.simple.action.ABCSimpleActionMicroservice, pumpwood_communication.microservice_abc.simple.info.ABCSimpleInfoMicroservice, pumpwood_communication.microservice_abc.parallel.action.ABCParallelActionMicroservice, pumpwood_communication.microservice_abc.parallel.delete.ABCParallelDeleteMicroservice, pumpwood_communication.microservice_abc.parallel.list.ABCParallelListMicroservice, pumpwood_communication.microservice_abc.parallel.retrieve.ABCParallelRetriveMicroservice, pumpwood_communication.microservice_abc.parallel.save.ABCParallelSaveMicroservice, pumpwood_communication.microservice_abc.parallel.batch.ABCParallelBatchMicroservice):
27class PumpWoodMicroService(ABCPermissionMicroservice,
28                           ABCSystemMicroservice,
29                           ABCSimpleBatchMicroservice,
30                           ABCSimpleRetriveMicroservice,
31                           ABCSimpleDeleteMicroservice,
32                           ABCSimpleSaveMicroservice,
33                           ABCSimpleListMicroservice,
34                           ABCSimpleDimensionMicroservice,
35                           ABCSimpleActionMicroservice,
36                           ABCSimpleInfoMicroservice,
37                           ABCParallelActionMicroservice,
38                           ABCParallelDeleteMicroservice,
39                           ABCParallelListMicroservice,
40                           ABCParallelRetriveMicroservice,
41                           ABCParallelSaveMicroservice,
42                           ABCParallelBatchMicroservice):
43    """Class to define an inter-pumpwood MicroService.
44
45    Create an object ot help communication with Pumpwood based backends. It
46    manage login and token refresh if necessary.
47
48    It also implements parallel functions that split requests in parallel
49    process to reduce processing time.
50    """
51
52    ########################
53    # Parallel aux functions
54    def get_queue_matrix(self, queue_pk: int, auth_header: dict = None,
55                         save_as_excel: str = None):
56        """Download model queue estimation matrix. In development..."""
57        file_content = self.retrieve_file(
58            model_class="ModelQueue", pk=queue_pk,
59            file_field="model_matrix_file", auth_header=auth_header,
60            save_file=False)
61        content = gzip.GzipFile(
62            fileobj=io.BytesIO(file_content["content"])).read()
63        data = json.loads(content.decode('utf-8'))
64        columns_info = pd.DataFrame(data["columns_info"])
65        model_matrix = pd.DataFrame(data["model_matrix"])
66
67        if save_as_excel is not None:
68            writer = ExcelWriter(save_as_excel)
69            columns_info.to_excel(writer, 'columns_info', index=False)
70            model_matrix.to_excel(writer, 'model_matrix', index=False)
71            writer.save()
72        else:
73            return {
74                "columns_info": columns_info,
75                "model_matrix": model_matrix}

Class to define an inter-pumpwood MicroService.

Create an object ot help communication with Pumpwood based backends. It manage login and token refresh if necessary.

It also implements parallel functions that split requests in parallel process to reduce processing time.

def get_queue_matrix( self, queue_pk: int, auth_header: dict = None, save_as_excel: str = None):
54    def get_queue_matrix(self, queue_pk: int, auth_header: dict = None,
55                         save_as_excel: str = None):
56        """Download model queue estimation matrix. In development..."""
57        file_content = self.retrieve_file(
58            model_class="ModelQueue", pk=queue_pk,
59            file_field="model_matrix_file", auth_header=auth_header,
60            save_file=False)
61        content = gzip.GzipFile(
62            fileobj=io.BytesIO(file_content["content"])).read()
63        data = json.loads(content.decode('utf-8'))
64        columns_info = pd.DataFrame(data["columns_info"])
65        model_matrix = pd.DataFrame(data["model_matrix"])
66
67        if save_as_excel is not None:
68            writer = ExcelWriter(save_as_excel)
69            columns_info.to_excel(writer, 'columns_info', index=False)
70            model_matrix.to_excel(writer, 'model_matrix', index=False)
71            writer.save()
72        else:
73            return {
74                "columns_info": columns_info,
75                "model_matrix": model_matrix}

Download model queue estimation matrix. In development...