Ошибка Singer-Io при попытке запустить пользовательский тап: строковые индексы должны быть целыми числами - PullRequest
0 голосов
/ 03 мая 2020

Я начинаю изучать, как использовать singer-io для создания пользовательских taps.

После создания project, производного от this template, я определил schema на основе Getting Started пример. Итак, у меня есть ip.json внутри моей папки schemas:

{
    "properties":   {
        "ip": {"type": "string"},
        "timestamp": {"type": "string"}
    }
}

Внутри __init__.py sync function, я изменил:

tap_data = lambda: [{"ip": "0.0.0.0", "timestamp": "01-01-2010"}]

Следуя инструкциям template repo, Я побежал

tap-ip -c sample_config.json --discover --discover > catalog.json

В catalog.json, я получил:

{
  "streams": [
    {
      "tap_stream_id": "ip",
      "key_properties": [],
      "schema": {
        "properties": {
          "ip": {
            "type": "string"
          },
          "timestamp": {
            "type": "string"
          }
        }
      },
      "stream": "ip",
      "metadata": {
        "selected": true
      }
    }
  ]
}

Где я уже добавил selected: true.

Затем, Я создал venv для этого tap.

Когда я запускаю tap-ip --config sample_config.json --catalog catalog.json, я получаю:

File "/home/mhery/.virtualenvs/tap-ip /lib/python3.7/site-packages/singer/metadata.py ", строка 5, взамен {tuple (md ['breadcrumb']): md ['metadata'] для md в raw_metadata} TypeError: string индексы должны быть целыми числами

Почему я получаю эту ошибку?

Я уже получаю это, когда удаляю selected: true и когда пытаюсь указать файл state с флагом. Его содержание таково:

{
  "bookmarks": {
    "ip": {
      "last_record": "2017-07-07T10:20:00Z"
    }
  }
}
...