Получение информации от одного метода класса к другому - PullRequest
0 голосов
/ 10 января 2020

Я пытаюсь создать кучу методов класса для чтения определенных c частей. JSON файлов, и у меня возникают проблемы при передаче информации от одного метода к другому, в данном конкретном случае я пытаюсь получить dask.bag из метода read_files в метод split_to_requests. Я не уверен, где моя ошибка, но выполнение модульных тестов завершается неудачей в тесте test_split_requests. Я добавил тесты в нижней части кода.

    import json
    import pandas as pd
    from dask import bag

    class WeatherDataConverter:

        def __init__(self, *args, **kwargs):
            super(WeatherDataConverter, self).__init__(*args, **kwargs)
            self.meteo_bag = bag.Bag

        def read_files(self, files):
            dask_bag = bag.read_text(files).map(json.loads)
            return dask_bag

        def split_to_requests(self, dask_bag):
            data_pluck = dask_bag.flatten().pluck('data')
            request_request = data_pluck.pluck('requests')
            return request_request

        @staticmethod
        def flatten(bag):
            print(bag)

////////////////////////////////// ////////////////////////////////////////////////// ///////////

    from unittest import TestCase
    from weather.WeatherDataConverter import WeatherDataConverter


    class TestWeatherDataConverter(TestCase):

        def __init__(self, *args, **kwargs):
            super(TestWeatherDataConverter, self).__init__(*args, **kwargs)
            self.converter = WeatherDataConverter()

        def test_read_file(self):
            dask_bag = self.converter.read_files('../data/*.json')
            assert dask_bag.count().compute() == 5

        def test_split_requests(self):
            dask_bag = self.converter.read_files('../data/*.json')
            dataframe = dask_bag.split_to_requests()
            print(dataframe)

это код ошибки:

    test_weatherDataConverter.py:35                 
    (TestWeatherDataConverter.test_split_requests)
    self = <tests.weather.test_weatherDataConverter.TestWeatherDataConverter         
    testMethod=test_split_requests>

        def test_split_requests(self):
            dask_bag = self.converter.read_files('../data/*.json')
    >       dataframe = dask_bag.split_to_requests()
    E       AttributeError: 'Bag' object has no attribute 
    'split_to_requests'

    test_weatherDataConverter.py:38: AttributeError

    Assertion failed

1 Ответ

0 голосов
/ 13 января 2020

Что ж, я сам нашел ответ, поэтому, если кто-то считает, что есть лучший способ, не стесняйтесь комментировать, возможно, это кому-нибудь поможет.

import json
import pandas as pd
from dask import bag

class WeatherDataConverter:

    def __init__(self, *args, **kwargs):
        super(WeatherDataConverter, self).__init__(*args, **kwargs)
        self.meteo_bag = bag.Bag

    def read_files(self, files):
        dask_bag = bag.read_text(files).map(json.loads)
        return dask_bag

    def convert(self, files):
    data = self.read_files(files).flatten().pluck('data')
    return data

    @staticmethod
    def flatten(bag):
        print(bag)
...