Code Monkey home page Code Monkey logo

tap-typeform's Introduction

tap-typeform

tap-typeform is a Singer tap for Typeform.

Built with the Meltano Tap SDK for Singer Taps.

Installation

pipx install git+https://github.com/albert-marrero/tap-typeform

Configuration

A full list of supported settings and capabilities for this tap is available by running:

tap-typeform --about

Capabilities

  • sync
  • catalog
  • state
  • discover

Source Authentication and Authorization

You will need to create a personal access token for Typeform's API.

Configuration

{
    "personal_access_token": "ACCESS_TOKEN",
}

A bit of a run down on each of the properties:

  • personal_access_token: Your personal access token for Typeform's API.

Usage

You can easily run tap-typeform by itself or in a pipeline using Meltano.

Executing the Tap Directly

tap-typeform --version
tap-typeform --help
tap-typeform --config CONFIG --discover > ./catalog.json

Developer Resources

Initialize your Development Environment

pipx install poetry
poetry install

Create and Run Tests

Create tests within the tap_typeform/tests subfolder and then run:

poetry run pytest

You can also test the tap-typeform CLI interface directly using poetry run:

poetry run tap-typeform --help

Testing with Meltano

Note: This tap will work in any Singer environment and does not require Meltano. Examples here are for convenience and to streamline end-to-end orchestration scenarios.

Your project comes with a custom meltano.yml project file already created. Open the meltano.yml and follow any "TODO" items listed in the file.

Next, install Meltano (if you haven't already) and any needed plugins:

# Install meltano
pipx install meltano
# Initialize meltano within this directory
cd tap-typeform
meltano install

Now you can test and orchestrate using Meltano:

# Test invocation:
meltano invoke tap-typeform --version
# OR run a test `elt` pipeline:
meltano elt tap-typeform target-jsonl

SDK Dev Guide

See the dev guide for more instructions on how to use the SDK to develop your own taps and targets.

Contributing

For major changes, please open an issue first to discuss what you would like to change.

Support

If you enjoy this repository, please star this repository. By starring a repository, it shows appreciation to the repository maintainer for their work. Many of GitHub's repository rankings depend on the number of stars a repository has.

License

MIT

tap-typeform's People

Contributors

albert-marrero avatar gthesheep avatar

Stargazers

 avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

tap-typeform's Issues

Support newer Singer SDK and add support for Python 3.11

Describe the bug
I was trying to add this tap to my Meltano project today. There's a lot of dependency breakage relating to Singer's SDK and Meltano drift (json-schema among others), so I think the easiest way to reproduce is to just create a new Meltano project and add this tap.

$ meltano add extractor tap-typeform
Added extractor 'tap-typeform' to your project
Variant:	albert-marrero (default)
Repository:	https://github.com/albert-marrero/tap-typeform
Documentation:	https://hub.meltano.com/extractors/tap-typeform--albert-marrero

2024-08-09T10:49:40.181692Z [info     ] Installing extractor 'tap-typeform'
2024-08-09T10:49:43.488246Z [info     ] Logged pip install output to /private/tmp/asdf/.meltano/logs/pip/extractors/tap-typeform/pip.log
2024-08-09T10:49:43.488630Z [error    ] Extractor 'tap-typeform' could not be installed: Failed to install plugin 'tap-typeform'.
2024-08-09T10:49:43.488699Z [info     ] Collecting git+https://github.com/albert-marrero/tap-typeform.git
  Cloning https://github.com/albert-marrero/tap-typeform.git to /private/var/folders/sv/lsl1w18n78ggr1s4n6xzxmzw0000gn/T/pip-req-build-dsfm8y79
  Running command git clone --filter=blob:none --quiet https://github.com/albert-marrero/tap-typeform.git /private/var/folders/sv/lsl1w18n78ggr1s4n6xzxmzw0000gn/T/pip-req-build-dsfm8y79
  Resolved https://github.com/albert-marrero/tap-typeform.git to commit 3cc93352ad344b0a7c57bcbd0505a9e436f1986b
  Installing build dependencies: started
  Installing build dependencies: finished with status 'done'
  Getting requirements to build wheel: started
  Getting requirements to build wheel: finished with status 'done'
  Preparing metadata (pyproject.toml): started
  Preparing metadata (pyproject.toml): finished with status 'done'
Collecting requests<3.0.0,>=2.25.1 (from tap-typeform==0.0.1)
  Using cached requests-2.32.3-py3-none-any.whl.metadata (4.6 kB)
INFO: pip is looking at multiple versions of tap-typeform to determine which version is compatible with other requirements. This could take a while.
ERROR: Ignored the following yanked versions: 0.0.1
ERROR: Ignored the following versions that require a different python version: 0.0.2.dev1110036431 Requires-Python >=3.6,<3.9; 0.0.2.dev1110045918 Requires-Python >=3.6,<3.9; 0.0.2.dev1110089869 Requires-Python >=3.6,<3.9; 0.0.2.dev1110124048 Requires-Python >=3.6,<3.9; 0.0.2.dev1110272955 Requires-Python >=3.6,<3.9; 0.0.2.dev1110380533 Requires-Python >=3.6,<3.9; 0.0.2.dev1110403648 Requires-Python >=3.6,<3.9; 0.0.2.dev1110492086 Requires-Python >=3.6,<3.9; 0.0.2.dev1110531009 Requires-Python >=3.6,<3.9; 0.0.2.dev1113404346 Requires-Python >=3.6,<3.9; 0.0.2.dev1118257716 Requires-Python >=3.6,<3.9; 0.0.2.dev1118390906 Requires-Python >=3.6,<3.9; 0.0.2.dev1118394141 Requires-Python >=3.6,<3.9; 0.0.2.dev1118449687 Requires-Python >=3.6,<3.9; 0.0.2.dev1118993814 Requires-Python >=3.6,<3.9; 0.0.2.dev1119285758 Requires-Python >=3.6,<3.9; 0.0.2.dev1119371075 Requires-Python >=3.6,<3.9; 0.0.2.dev1119430340 Requires-Python >=3.6,<3.9; 0.0.2.dev1119444960 Requires-Python >=3.6,<3.9; 0.0.2.dev1119472154 Requires-Python >=3.6,<3.9; 0.0.2.dev1121398448 Requires-Python >=3.6,<3.9; 0.0.2.dev1121409284 Requires-Python >=3.6,<3.9; 0.0.2.dev1122239779 Requires-Python >=3.6,<3.9; 0.0.2.dev1122378994 Requires-Python >=3.6,<3.9; 0.0.2.dev1122383494 Requires-Python >=3.6,<3.9; 0.0.2.dev1125555069 Requires-Python >=3.6,<3.9; 0.0.2.dev1125557515 Requires-Python >=3.6,<3.9; 0.0.2.dev1125956132 Requires-Python >=3.6,<3.9; 0.0.2.dev1125958239 Requires-Python >=3.6,<3.9; 0.0.2.dev1128525228 Requires-Python >=3.6,<3.9; 0.0.2.dev1129435727 Requires-Python >=3.6,<3.9; 0.0.2.dev1132353840 Requires-Python >=3.6,<3.9; 0.0.2.dev1132643726 Requires-Python >=3.6,<3.9; 0.0.2.dev1132716689 Requires-Python >=3.6,<3.9; 0.0.2.dev1132766666 Requires-Python >=3.6,<3.9; 0.0.2.dev1132772314 Requires-Python >=3.6,<3.9; 0.0.2.dev1132882587 Requires-Python >=3.6,<3.9; 0.0.2.dev1132896835 Requires-Python >=3.6,<3.9; 0.0.2.dev1132897314 Requires-Python >=3.6,<3.9; 0.0.2.dev1132897969 Requires-Python >=3.6,<3.9; 0.0.2.dev1132900662 Requires-Python >=3.6,<3.9; 0.0.2.dev1132920771 Requires-Python >=3.6,<3.9; 0.0.2.dev1132923306 Requires-Python >=3.6,<3.9; 0.0.2.dev1137512174 Requires-Python >=3.6,<3.9; 0.0.2.dev1137537301 Requires-Python >=3.6,<3.9; 0.0.2.dev1138723647 Requires-Python >=3.6,<3.9; 0.0.2.dev1138807283 Requires-Python >=3.6,<3.9; 0.0.2.dev1138808645 Requires-Python >=3.6,<3.9; 0.0.2.dev1140897420 Requires-Python >=3.6,<3.9; 0.0.2.dev1141297330 Requires-Python >=3.6,<3.9; 0.0.2.dev1141326461 Requires-Python >=3.6,<3.9; 0.0.2.dev1141332744 Requires-Python >=3.6,<3.9; 0.0.2.dev1141338026 Requires-Python >=3.6,<3.9; 0.0.2.dev1141380973 Requires-Python >=3.6,<3.9; 0.0.2.dev1141430386 Requires-Python >=3.6,<3.9; 0.0.2.dev1144250590 Requires-Python >=3.6,<3.9; 0.0.2.dev1145060062 Requires-Python >=3.6,<3.9; 0.0.2.dev1145079391 Requires-Python >=3.6,<3.9; 0.0.2.dev1145102270 Requires-Python >=3.6,<3.9; 0.0.2.dev1145448067 Requires-Python >=3.6,<3.9; 0.0.2.dev1147612737 Requires-Python >=3.6,<3.9; 0.0.2.dev1147664763 Requires-Python >=3.6,<3.9; 0.0.2.dev1147683062 Requires-Python >=3.6,<3.9; 0.0.2.dev1147850566 Requires-Python >=3.6,<3.9; 0.0.2.dev1147864305 Requires-Python >=3.6,<3.9; 0.0.2.dev1147868482 Requires-Python >=3.6,<3.9; 0.0.2.dev1147878824 Requires-Python >=3.6,<3.9; 0.0.2.dev1147902041 Requires-Python >=3.6,<3.9; 0.0.2.dev1147903707 Requires-Python >=3.6,<3.9; 0.0.2.dev1147922252 Requires-Python >=3.6,<3.9; 0.0.2.dev1148001486 Requires-Python >=3.6,<3.9; 0.0.2.dev1148041166 Requires-Python >=3.6,<3.9; 0.0.2.dev1148135825 Requires-Python >=3.6,<3.9; 0.0.2.dev1148159907 Requires-Python >=3.6,<3.9; 0.1.0 Requires-Python >=3.6,<3.9; 0.1.0.dev1141389911 Requires-Python >=3.6,<3.9; 0.1.0.dev1141397065 Requires-Python >=3.6,<3.9; 0.1.0.dev1141403716 Requires-Python >=3.6,<3.9; 0.1.0.dev1141408020 Requires-Python >=3.6,<3.9; 0.1.0.dev1141413112 Requires-Python >=3.6,<3.9; 0.1.0.dev1148260052 Requires-Python >=3.6,<3.9; 0.1.0.dev1148283126 Requires-Python >=3.6,<3.9; 0.1.0.dev1148283268 Requires-Python >=3.6,<3.9; 0.1.0.dev1148290288 Requires-Python >=3.6,<3.9; 0.1.0.dev1148306917 Requires-Python >=3.6,<3.9; 0.1.0.dev1148308201 Requires-Python >=3.6,<3.9; 0.1.0.dev1148384532 Requires-Python >=3.6,<3.9; 0.1.0.dev1148385094 Requires-Python >=3.6,<3.9; 0.1.0.dev1150606259 Requires-Python >=3.6,<3.9; 0.1.0.dev1150608803 Requires-Python >=3.6,<3.9; 0.1.0.dev1154693881 Requires-Python >=3.6,<3.9; 0.1.0.dev1154698322 Requires-Python >=3.6,<3.9; 0.1.0.dev1154797165 Requires-Python >=3.6,<3.9; 0.1.0.dev1154802267 Requires-Python >=3.6,<3.9; 0.1.0.dev1154811508 Requires-Python >=3.6,<3.9; 0.1.0.dev1154813549 Requires-Python >=3.6,<3.9; 0.1.0.dev1154823983 Requires-Python >=3.6,<3.9; 0.1.0.dev1154846442 Requires-Python >=3.6,<3.9; 0.1.1 Requires-Python >=3.6,<3.9; 0.1.1.dev1192981305 Requires-Python >=3.6,<3.9; 0.1.2 Requires-Python >=3.6,<3.9; 0.1.2.dev1192987262 Requires-Python >=3.6,<3.9; 0.1.2.dev1193143974 Requires-Python >=3.6,<3.9; 0.1.2.dev1206783086 Requires-Python >=3.6,<3.9; 0.1.3 Requires-Python >=3.6,<3.9; 0.1.3.dev1210704727 Requires-Python >=3.6.1,<3.9; 0.1.3.dev1210872312 Requires-Python >=3.6.1,<3.9; 0.1.3.dev1210880876 Requires-Python >=3.6.1,<3.9; 0.1.3.dev1216150071 Requires-Python >=3.6,<3.9; 0.1.3.dev1227551296 Requires-Python >=3.6,<3.9; 0.1.4 Requires-Python >=3.6,<3.9; 0.1.5 Requires-Python >=3.6,<3.9; 0.1.5.dev1245286412 Requires-Python >=3.6,<3.9; 0.1.5.dev1261975468 Requires-Python >=3.6,<3.9; 0.1.6 Requires-Python >=3.6,<3.9; 0.1.6.dev1263823124 Requires-Python >=3.6.1,<3.9; 0.10.0 Requires-Python >=3.7.1,<3.11; 0.11.0 Requires-Python >=3.7.1,<3.11; 0.11.1 Requires-Python >=3.7.1,<3.11; 0.12.0 Requires-Python >=3.7.1,<3.11; 0.13.0 Requires-Python >=3.7.1,<3.11; 0.2.0 Requires-Python >=3.6,<3.9; 0.2.0.dev1193260627 Requires-Python >=3.6,<3.9; 0.2.0.dev1310445441 Requires-Python >=3.6,<3.9; 0.2.1.dev1365231435 Requires-Python >=3.6.2,<3.9; 0.2.1.dev1365252841 Requires-Python >=3.6.1,<3.9; 0.2.1.dev1371689894 Requires-Python >=3.6.1,<3.9; 0.3.0 Requires-Python >=3.6.1,<3.9; 0.3.1 Requires-Python >=3.6.1,<3.9; 0.3.10 Requires-Python >=3.6.1,<3.10; 0.3.10.dev1639026898 Requires-Python >=3.6.1,<3.10; 0.3.10.dev1648457969 Requires-Python >=3.6.1,<3.10; 0.3.10.dev1659462402 Requires-Python >=3.6.1,<3.10; 0.3.11 Requires-Python >=3.6.2,<3.10; 0.3.12 Requires-Python >=3.6.2,<3.10; 0.3.13 Requires-Python >=3.6.2,<3.10; 0.3.13.dev1749971895 Requires-Python >=3.6.2,<3.10; 0.3.13.dev1786194069 Requires-Python >=3.6.2,<3.10; 0.3.14 Requires-Python >=3.6.2,<3.10; 0.3.14.dev1824879411 Requires-Python >=3.6.2,<3.10; 0.3.15 Requires-Python >=3.6.2,<3.10; 0.3.16 Requires-Python >=3.6.2,<3.10; 0.3.17 Requires-Python >=3.6.2,<3.11; 0.3.18 Requires-Python >=3.6.2,<3.11; 0.3.2 Requires-Python >=3.6.1,<3.9; 0.3.3 Requires-Python >=3.6.1,<3.9; 0.3.4 Requires-Python >=3.6.1,<3.9; 0.3.4.dev1508342755 Requires-Python >=3.6.1,<3.9; 0.3.5 Requires-Python >=3.6.1,<3.9; 0.3.5.dev1524730327 Requires-Python >=3.6.1,<3.9; 0.3.5.dev1524829519 Requires-Python >=3.6.1,<3.9; 0.3.6 Requires-Python >=3.6.1,<3.10; 0.3.6.dev1558394701 Requires-Python >=3.6.1,<3.10; 0.3.6.dev1567691389 Requires-Python >=3.6.1,<3.10; 0.3.7 Requires-Python >=3.6.1,<3.10; 0.3.8 Requires-Python >=3.6.1,<3.10; 0.3.9 Requires-Python >=3.6.1,<3.10; 0.3.9.dev1635685588 Requires-Python >=3.6.1,<3.10; 0.4.0 Requires-Python >=3.6.2,<3.11; 0.4.1 Requires-Python >=3.6.2,<3.11; 0.4.1.dev2029710323 Requires-Python >=3.6.2,<3.11; 0.4.1.dev2043148917 Requires-Python >=3.7.1,<3.11; 0.4.1.dev2046462793 Requires-Python >=3.6.2,<3.11; 0.4.2 Requires-Python >=3.6.2,<3.11; 0.4.3 Requires-Python >=3.7.1,<3.11; 0.4.4 Requires-Python >=3.7.1,<3.11; 0.4.5 Requires-Python >=3.7.1,<3.11; 0.4.5.dev2328572629 Requires-Python >=3.7.1,<3.11; 0.4.6 Requires-Python >=3.7.1,<3.11; 0.4.7 Requires-Python >=3.7.1,<3.11; 0.4.8 Requires-Python >=3.7.1,<3.11; 0.4.9 Requires-Python >=3.7.1,<3.11; 0.5.0 Requires-Python >=3.7.1,<3.11; 0.6.0 Requires-Python >=3.7.1,<3.11; 0.6.1 Requires-Python >=3.7.1,<3.11; 0.7.0 Requires-Python >=3.7.1,<3.11; 0.8.0 Requires-Python >=3.7.1,<3.11; 0.9.0 Requires-Python >=3.7.1,<3.11
ERROR: Could not find a version that satisfies the requirement singer-sdk<0.4.0,>=0.3.11 (from tap-typeform) (from versions: 0.0.1.dev1051765546, 0.0.1.dev1051773759, 0.0.1.dev1056984287, 0.0.2.dev1056987178, 0.0.2.dev1057081464, 0.0.2.dev1057291963, 0.0.2.dev1057296194, 0.0.2.dev1057391906, 0.0.2.dev1057471324, 0.0.2.dev1057474692, 0.0.2.dev1057601165, 0.0.2.dev1057686843, 0.0.2.dev1057710826, 0.0.2.dev1059371883, 0.0.2.dev1059670179, 0.0.2.dev1059747189, 0.0.2.dev1059907131, 0.0.2.dev1064772201, 0.0.2.dev1067897009, 0.0.2.dev1068113915, 0.0.2.dev1068382635, 0.0.2.dev1068462271, 0.0.2.dev1068744002, 0.0.2.dev1068760253, 0.0.2.dev1068770959, 0.0.2.dev1070916333, 0.0.2.dev1074008005, 0.0.2.dev1074043022, 0.0.2.dev1074307891, 0.0.2.dev1074416379, 0.0.2.dev1074572064, 0.0.2.dev1079286705, 0.0.2.dev1079291315, 0.0.2.dev1084524856, 0.0.2.dev1084532257, 0.0.2.dev1100206674, 0.0.2.dev1100255818, 0.0.2.dev1100276779, 0.0.2.dev1100334987, 0.0.2.dev1100361933, 0.0.2.dev1100410576, 0.0.2.dev1100873709, 0.0.2.dev1100880821, 0.0.2.dev1101128366, 0.0.2.dev1101223904, 0.0.2.dev1102451513, 0.0.2.dev1102499354, 0.0.2.dev1102701631, 0.0.2.dev1103114769, 0.0.2.dev1103546886, 0.0.2.dev1103566295, 0.0.2.dev1103631093, 0.0.2.dev1103768469, 0.0.2.dev1103773698, 0.0.2.dev1104362125, 0.0.2.dev1107437985, 0.0.2.dev1107442528, 0.0.2.dev1107501507, 0.0.2.dev1107516289, 0.0.2.dev1107571185, 0.0.2.dev1107651476, 0.0.2.dev1107734555, 0.0.2.dev1110030540, 0.0.2.dev1110093538, 0.13.1, 0.14.0, 0.15.0, 0.16.0, 0.17.0, 0.18.0, 0.19.0, 0.20.0, 0.21.0, 0.22.0, 0.22.1, 0.23.0, 0.24.0, 0.25.0, 0.26.0, 0.27.0, 0.28.0, 0.29.0, 0.30.0, 0.31.0, 0.31.1, 0.32.0b1, 0.32.0b2, 0.32.0b3, 0.32.0, 0.33.0b1, 0.33.0b2, 0.33.0, 0.33.1, 0.34.0b1, 0.34.0rc1, 0.34.0, 0.34.1, 0.35.0a2, 0.35.0a3, 0.35.0a4, 0.35.0a5, 0.35.0rc1, 0.35.0, 0.35.1, 0.35.2, 0.36.0rc1, 0.36.0, 0.36.1, 0.37.0a1, 0.37.0a2, 0.37.0a3, 0.37.0a4, 0.37.0, 0.38.0a1, 0.38.0a2, 0.38.0a3, 0.38.0, 0.39.0a1, 0.39.0, 0.39.1)
ERROR: No matching distribution found for singer-sdk<0.4.0,>=0.3.11

Need help fixing this problem? Visit http://melta.no/ for troubleshooting steps, or to
join our friendly Slack community.

Failed to install plugin(s)

To Reproduce
Steps to reproduce the behavior:

  1. meltano init
  2. meltano add extractor tap-typeform

Expected behavior
A return code different from 1

Desktop (please complete the following information):

  • OS: Mac OS

Additional context
Alternatively, another tap for Typeform could be appointed by Meltano maintainers, if there is no interest in maintaining this project, which I should stress is completely fine, and I'm already super grateful for the work so far!

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.