Package: tap-holidays
tap-holidaysASingertap for extracting data from theHoliday API.InstallationSince package dependencies tend to conflict between various taps and targets, Singerrecommendsinstalling taps and targets into their own isolated virtual environments:Install Holidays Tap$python3-mvenv~/.venvs/tap-holidays
$source~/.venvs/tap-holidays/bin/activate
$pip3installtap-holidays
$deactivateInstall Stitch Target (optional)$python3-mvenv~/.venvs/target-stitch
$source~/.venvs/target-stitch/bin/activate
$pip3installtarget-stitch
$deactivateConfigurationThe tap accepts a JSON-formatted configuration file as arguments. This configuration file has a single required field:api_key: A valid Holiday API key.An bare-bones Holiday API configuration may file may look like the following:{"api_key":"foo"}Granular Stream ConfigurationAdditionally, you may specify more granular configurations for individual streams. Each key under a stream should represent a valid API request parameter for that endpoint. A more fleshed-out configuration file may look similar to the following:{"api_key":"foo","api_version":"v1","streams":{"holidays":{"country":"US","year":2018,"subdivisions":true}}}StreamsThe current version of the tap syncs a singleStream:Holidays:Endpoint DocumentationDiscoverySinger taps describe the data that a stream supports via aDiscoveryprocess. You can run the Dayforce tap in Discovery mode by passing the--discoverflag at runtime:$~/.venvs/tap-holidays/bin/tap-holidays--config=config/holidays.config.json--discoverThe tap will generate aCatalogto stdout. To pass the Catalog to a file instead, simply redirect it to a file:s$~/.venvs/tap-holidays/bin/tap-holidays--config=config/holidays.config.json--discover>catalog.jsonSync to stdoutRunning a tap inSync modewill extract data from the various selected Streams. In order to run a tap in Sync mode and have messages emitted to stdout, pass a valid configuration file and catalog file:$~/.venvs/tap-holidays/bin/tap-holidays--config=config/holidays.config.json--catalog=catalog.jsonThe tap will emit occasionalMetric,Schema,Record, andState messages. You can persist State between runs by redirecting messages to a file:$~/.venvs/tap-holidays/bin/tap-holidays--config=config/holidays.config.json--catalog=catalog.json>>state.json
$tail-1state.json>state.json.tmp
$mvstate.json.tmpstate.jsonSync to StitchYou can also send the output of the tap toStitch Datafor loading into the data warehouse. To do this, first create a JSON-formatted configuration for Stitch. This configuration file has two required fields:client_id: The ID associated with the Stitch Data account you'll be sending data to.tokenThe token associated with the specificImport API integrationwithin the Stitch Data account.An example configuration file will look as follows:{"client_id":1234,"token":"foobarfoobar"}Once the configuration file is created, simply pipe the output of the tap to the Stitch Data target and supply the target with the newly created configuration file:$~/.venvs/tap-holidays/bin/tap-holidays--config=config/dayforce.config.json--catalog=catalog.json--state=state.json|~/.venvs/target-stitch/bin/target-stitch--config=config/stitch.config.json>>state.json
$tail-1state.json>state.json.tmp
$mvstate.json.tmpstate.jsonContributingThe first step to contributing is getting a copy of the source code. First,forktap-holidayson GitHub. Then,cdinto the directory where you want your copy of the source code to live and clone the source code:$gitclonegit@github.com:YourGitHubName/tap-holidays.gitNow that you have a copy of the source code on your local machine, you can leveragePipenvand the correspondingPipfileto install of the development dependencies within a virtual environment:$pipenvinstall--three--devThis command will create an isolated virtual environment for yourtap-holidaysproject and install all the development dependencies defined within thePipfileinside of the environment. You can then enter a shell within the environment:$pipenvshellOr, you can run individual commands within the environment without entering the shell:$pipenvrun<command>For example, to format your code usingisortandflake8before commiting changes, run the following commands:$pipenvrunmakeisort
$pipenvrunmakeflake8You can also run the entire testing suite before committing usingtox:$pipenvruntoxFinally, you can run your local version of the tap within the virtual environment using a command like the following:$pipenvruntap-holidays--config=config/dayforce.config.json--catalog=catalog.jsonOnce you've confirmed that your changes work and the testing suite passes, feel free to put out a PR!