Singer python wrapper for easy execution
Project description
PySinger
Introduction
A Singer.io wrapper Python library (that's fully type-annotated :D) that makes using Singer taps and targets easy.
This wrapper creates temporary virtual environment for each tap and target, download the required dependency and executes them. After execution, all environments are torn down and cleaned up.
Requirements
- Linux only (Windows in the future? :|)
- Requires Python 3.7+.
- PySinger has no dependencies, it uses only Python built-in libraries.
Installation
pip install pysinger
Usage
Using tap and target names
Use the tap/target names you would use to pip install
them.
E.g. the tap would be "tap-exchangeratehost"
if you'd used pip install tap-exchangeratehost
to install it or target "singer-target-postgres"
for pip install singer-target-postgres
.
from pysinger import Singer
tap_config = {
"base": "JPY",
"start_date": "2022-01-01"
}
target_config = {
"delimiter": "\t",
"quotechar": "'",
"destination_path": ""
}
singer = Singer(
"tap-exchangeratehost",
"target-csv",
tap_config=tap_config, # Optional
target_config=target_config # Optional
)
end_state = singer.run()
# Optionally you can save the state for future use
singer.save_state("/path/to/state.json")
Different executable name
By default PySinger executes tap/target by their name, but sometimes the executables are named differently.
For example singer-target-postgres
uses a target-postgres
as its executable. To run these:
...
singer = Singer(
"tap-exchangeratehost",
"singer-target-postgres",
tap_config=tap_config,
target_config=target_config
target_kwargs={"target_exec": "target-postgres"}
)
# Similarly there's one for taps called 'tap_exec'
...
To know what the executable name is, see the individual tap/target repo and check their invocation name.
Summary:
tap/target name
is frompip install tap_or_target
tap/target_exec
is fromvirtualenv/tap_or_target/bin/tap_or_target_exec
Defining Tap or Target manually
You can also pass Tap or Target instances that were created manually
from pysinger import Tap, Target, Singer
tap = Tap("tap-exchangerates", config_path="/path/to/config.json")
target = Target(
"pipelinewise-target-postgres",
target_exec="target-postgres",
config={"disable_collection": True}
)
singer = Singer(tap=tap, target=target)
singer.run()
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file pysinger-0.0.3.tar.gz
.
File metadata
- Download URL: pysinger-0.0.3.tar.gz
- Upload date:
- Size: 5.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.8.0 pkginfo/1.8.2 readme-renderer/32.0 requests/2.27.1 requests-toolbelt/0.9.1 urllib3/1.26.8 tqdm/4.62.3 importlib-metadata/4.10.1 keyring/23.5.0 rfc3986/2.0.0 colorama/0.4.4 CPython/3.7.12
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 0f6a69e098888f7ac93ea8fc5df9f8723b4b495256ed9eddb13a475a07471063 |
|
MD5 | e83e3edaa98912248cc477d9020b6bb9 |
|
BLAKE2b-256 | 534e62f5fe0d6add59017a6a09891dcce931d1360dd9033f13d792cf1460d128 |
File details
Details for the file pysinger-0.0.3-py3-none-any.whl
.
File metadata
- Download URL: pysinger-0.0.3-py3-none-any.whl
- Upload date:
- Size: 6.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.8.0 pkginfo/1.8.2 readme-renderer/32.0 requests/2.27.1 requests-toolbelt/0.9.1 urllib3/1.26.8 tqdm/4.62.3 importlib-metadata/4.10.1 keyring/23.5.0 rfc3986/2.0.0 colorama/0.4.4 CPython/3.7.12
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 9ed0e1c00054efca81810170e5d6b8da01b5e79340457e089a01b2f8e93e08d5 |
|
MD5 | 5cffc333bf75aacafb671488e0f559a9 |
|
BLAKE2b-256 | e01bb167e2e8d5467b8baf2ca9c121bf3eb5d4c38796cd7e3a1f191f695e0787 |