當前位置: 首頁>>代碼示例>>Python>>正文


Python singer.parse_message方法代碼示例

本文整理匯總了Python中singer.parse_message方法的典型用法代碼示例。如果您正苦於以下問題:Python singer.parse_message方法的具體用法?Python singer.parse_message怎麽用?Python singer.parse_message使用的例子?那麽, 這裏精選的方法代碼示例或許可以為您提供幫助。您也可以進一步了解該方法所在singer的用法示例。


在下文中一共展示了singer.parse_message方法的14個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的Python代碼示例。

示例1: test_round_trip

# 需要導入模塊: import singer [as 別名]
# 或者: from singer import parse_message [as 別名]
def test_round_trip(self):
        record_message = singer.RecordMessage(
            record={'name': 'foo'},
            stream='users')

        schema_message = singer.SchemaMessage(
            stream='users',
            key_properties=['name'],
            schema={'type': 'object',
                    'properties': {
                        'name': {'type': 'string'}}})

        state_message = singer.StateMessage(value={'seq': 1})

        self.assertEqual(record_message,
                         singer.parse_message(singer.format_message(record_message)))
        self.assertEqual(schema_message,
                         singer.parse_message(singer.format_message(schema_message)))
        self.assertEqual(state_message,
                         singer.parse_message(singer.format_message(state_message)))

    ## These three tests just confirm that writing doesn't throw 
開發者ID:singer-io,項目名稱:singer-python,代碼行數:24,代碼來源:test_singer.py

示例2: summarize_output

# 需要導入模塊: import singer [as 別名]
# 或者: from singer import parse_message [as 別名]
def summarize_output(output):
    summary = OutputSummary()
    for line in output:
        summary.add(singer.parse_message(line))
    return summary 
開發者ID:singer-io,項目名稱:singer-tools,代碼行數:7,代碼來源:check_tap.py

示例3: test_parse_message_record_good

# 需要導入模塊: import singer [as 別名]
# 或者: from singer import parse_message [as 別名]
def test_parse_message_record_good(self):
        message = singer.parse_message(
            '{"type": "RECORD", "record": {"name": "foo"}, "stream": "users"}')
        self.assertEqual(
            message,
            singer.RecordMessage(record={'name': 'foo'}, stream='users')) 
開發者ID:singer-io,項目名稱:singer-python,代碼行數:8,代碼來源:test_singer.py

示例4: test_parse_message_record_with_version_good

# 需要導入模塊: import singer [as 別名]
# 或者: from singer import parse_message [as 別名]
def test_parse_message_record_with_version_good(self):
        message = singer.parse_message(
            '{"type": "RECORD", "record": {"name": "foo"}, "stream": "users", "version": 2}')
        self.assertEqual(
            message,
            singer.RecordMessage(record={'name': 'foo'}, stream='users', version=2)) 
開發者ID:singer-io,項目名稱:singer-python,代碼行數:8,代碼來源:test_singer.py

示例5: test_parse_message_record_naive_extraction_time

# 需要導入模塊: import singer [as 別名]
# 或者: from singer import parse_message [as 別名]
def test_parse_message_record_naive_extraction_time(self):
        with self.assertRaisesRegex(ValueError, "must be either None or an aware datetime"):
            message = singer.parse_message(
                '{"type": "RECORD", "record": {"name": "foo"}, "stream": "users", "version": 2, "time_extracted": "1970-01-02T00:00:00"}') 
開發者ID:singer-io,項目名稱:singer-python,代碼行數:6,代碼來源:test_singer.py

示例6: test_parse_message_record_aware_extraction_time

# 需要導入模塊: import singer [as 別名]
# 或者: from singer import parse_message [as 別名]
def test_parse_message_record_aware_extraction_time(self):
        message = singer.parse_message(
            '{"type": "RECORD", "record": {"name": "foo"}, "stream": "users", "version": 2, "time_extracted": "1970-01-02T00:00:00.000Z"}')
        expected = singer.RecordMessage(
            record={'name': 'foo'},
            stream='users',
            version=2,
            time_extracted=dateutil.parser.parse("1970-01-02T00:00:00.000Z"))
        print(message)
        print(expected)
        self.assertEqual(message, expected) 
開發者ID:singer-io,項目名稱:singer-python,代碼行數:13,代碼來源:test_singer.py

示例7: test_parse_message_record_missing_record

# 需要導入模塊: import singer [as 別名]
# 或者: from singer import parse_message [as 別名]
def test_parse_message_record_missing_record(self):
        with self.assertRaises(Exception):
            singer.parse_message('{"type": "RECORD", "stream": "users"}') 
開發者ID:singer-io,項目名稱:singer-python,代碼行數:5,代碼來源:test_singer.py

示例8: test_parse_message_schema_good

# 需要導入模塊: import singer [as 別名]
# 或者: from singer import parse_message [as 別名]
def test_parse_message_schema_good(self):
        message = singer.parse_message('{"type": "SCHEMA", "stream": "users", "schema": {"type": "object", "properties": {"name": {"type": "string"}}}, "key_properties": ["name"]}')  # nopep8
        self.assertEqual(
            message,
            singer.SchemaMessage(
                stream='users',
                key_properties=['name'],
                schema={'type': 'object',
                        'properties': {
                            'name': {'type': 'string'}}})) 
開發者ID:singer-io,項目名稱:singer-python,代碼行數:12,代碼來源:test_singer.py

示例9: test_parse_message_schema_missing_stream

# 需要導入模塊: import singer [as 別名]
# 或者: from singer import parse_message [as 別名]
def test_parse_message_schema_missing_stream(self):
        with self.assertRaises(Exception):
            message = singer.parse_message('{"type": "SCHEMA", "schema": {"type": "object", "properties": {"name": {"type": "string"}}}, "key_properties": ["name"]}')  # nopep8 
開發者ID:singer-io,項目名稱:singer-python,代碼行數:5,代碼來源:test_singer.py

示例10: test_parse_message_schema_missing_schema

# 需要導入模塊: import singer [as 別名]
# 或者: from singer import parse_message [as 別名]
def test_parse_message_schema_missing_schema(self):
        with self.assertRaises(Exception):
            message = singer.parse_message(
                '{"type": "SCHEMA", "stream": "users", "key_properties": ["name"]}')  # nopep8 
開發者ID:singer-io,項目名稱:singer-python,代碼行數:6,代碼來源:test_singer.py

示例11: test_parse_message_schema_missing_key_properties

# 需要導入模塊: import singer [as 別名]
# 或者: from singer import parse_message [as 別名]
def test_parse_message_schema_missing_key_properties(self):
        with self.assertRaises(Exception):
            message = singer.parse_message('{"type": "SCHEMA", "stream": "users", "schema": {"type": "object", "properties": {"name": {"type": "string"}}}}')  # nopep8 
開發者ID:singer-io,項目名稱:singer-python,代碼行數:5,代碼來源:test_singer.py

示例12: test_parse_message_state_good

# 需要導入模塊: import singer [as 別名]
# 或者: from singer import parse_message [as 別名]
def test_parse_message_state_good(self):
        message = singer.parse_message(
            '{"type": "STATE", "value": {"seq": 1}}')
        self.assertEqual(message, singer.StateMessage(value={'seq': 1})) 
開發者ID:singer-io,項目名稱:singer-python,代碼行數:6,代碼來源:test_singer.py

示例13: create_record

# 需要導入模塊: import singer [as 別名]
# 或者: from singer import parse_message [as 別名]
def create_record(self, value):
        raw = '{"type": "RECORD", "stream": "test", "record": {"value": ' + value + '}}'
        parsed = singer.parse_message(raw)
        return parsed.record['value'] 
開發者ID:singer-io,項目名稱:singer-python,代碼行數:6,代碼來源:test_singer.py

示例14: persist_lines

# 需要導入模塊: import singer [as 別名]
# 或者: from singer import parse_message [as 別名]
def persist_lines(service, spreadsheet, lines):
    state = None
    schemas = {}
    key_properties = {}

    headers_by_stream = {}
    
    for line in lines:
        try:
            msg = singer.parse_message(line)
        except json.decoder.JSONDecodeError:
            logger.error("Unable to parse:\n{}".format(line))
            raise

        if isinstance(msg, singer.RecordMessage):
            if msg.stream not in schemas:
                raise Exception("A record for stream {} was encountered before a corresponding schema".format(msg.stream))

            schema = schemas[msg.stream]
            validate(msg.record, schema)
            flattened_record = flatten(msg.record)
            
            matching_sheet = [s for s in spreadsheet['sheets'] if s['properties']['title'] == msg.stream]
            new_sheet_needed = len(matching_sheet) == 0
            range_name = "{}!A1:ZZZ".format(msg.stream)
            append = functools.partial(append_to_sheet, service, spreadsheet['spreadsheetId'], range_name)

            if new_sheet_needed:
                add_sheet(service, spreadsheet['spreadsheetId'], msg.stream)
                spreadsheet = get_spreadsheet(service, spreadsheet['spreadsheetId']) # refresh this for future iterations
                headers_by_stream[msg.stream] = list(flattened_record.keys())
                append(headers_by_stream[msg.stream])

            elif msg.stream not in headers_by_stream:
                first_row = get_values(service, spreadsheet['spreadsheetId'], range_name + '1')
                if 'values' in first_row:
                    headers_by_stream[msg.stream] = first_row.get('values', None)[0]
                else:
                    headers_by_stream[msg.stream] = list(flattened_record.keys())
                    append(headers_by_stream[msg.stream])

            result = append([flattened_record.get(x, None) for x in headers_by_stream[msg.stream]]) # order by actual headers found in sheet

            state = None
        elif isinstance(msg, singer.StateMessage):
            logger.debug('Setting state to {}'.format(msg.value))
            state = msg.value
        elif isinstance(msg, singer.SchemaMessage):
            schemas[msg.stream] = msg.schema
            key_properties[msg.stream] = msg.key_properties
        else:
            raise Exception("Unrecognized message {}".format(msg))

    return state 
開發者ID:singer-io,項目名稱:target-gsheet,代碼行數:56,代碼來源:target_gsheet.py


注:本文中的singer.parse_message方法示例由純淨天空整理自Github/MSDocs等開源代碼及文檔管理平台,相關代碼片段篩選自各路編程大神貢獻的開源項目,源碼版權歸原作者所有,傳播和使用請參考對應項目的License;未經允許,請勿轉載。