Skip to main content

A light weight client library for accessing the Bounty Country API

Project description

bountycountry-python

Python library for the Bounty Country API

The Bounty Country Python library provides convenient access to the Bounty Country API for applications written in the Python language.

Documentation

See the Python API docs.

Installation

You don't need this source code unless you want to modify the package. If you just want to use the package, just run:

pip install --upgrade bountycountry

Install from source with:

python setup.py install

Requirements

  • Python 3+
  • Requests >= 2.20

Usage

The library needs to be configured with your account's public key and secret key which are available in your Bounty Country Dashboard.

Set bountycountry.BC_PUBLIC_KEY to your public key value. Set bountycountry.BC_SECRET_KEY to your secret key value.

import bountycountry

bountycountry.BC_PUBLIC_KEY = "....your.public.key.here...."
bountycountry.BC_SECRET_KEY = "....your.secret.key.here...."

Stream a live dataset

# First define a handler that will do 'something' (you decide) to each batch of items received.
def myHandler(batch):
  for item in batch:
    #do something with each item
    print(item)

bountycountry.getLiveStream('dataset-id-goes-here', BatchSize=250, StreamHandler=myHandler)

The getLiveStream function will indefinitely poll Bounty Country for the latest data and implement an exponential backoff (starting with a 2 second wait) if there is no new data before retrying.

Get a specific time range within a stream

A specific time range in the last 24 hours of data in a stream can be queried using bountycountry.getStreamRange.

Timestamps must be expressed in EpochTime format integers:

import time 

# get the current time as integer epochtime
currenttime = int(time.time())

# convert ISO8601 time stamp to integer epochtime 
epochtime = int(time.mktime(time.strptime("2019-04-01 19:20:00", "%Y-%m-%d %H:%M:%S")))

The Stream Range is a python generator so you can iterate over each batch/page of items returned using any loop. By default a batch will return 250 items.

# create generator
results = bountycountry.getStreamRange('dataset-id-goes-here', FromTime = 1554106800, ToTime = 1554109000)

# iterate over batches/pages 
for batch in results:
    for item in batch:
        print(item)

OPTIONS

If a FromTime and ToTime are not provided the function returns the 250 newest items in the stream

  • FromTime - epoch timestamp of the earliest point in time to query
  • ToTime - epoch timestamp of the latest point in time to query
  • Order - the order in which to return results (options = 'Newest','Oldest', default = 'Newest')
  • Limit - function will stop when Limit number of items have been returned (default = None, format = integer)
  • AutoPaginate - function will paginate through results until there are no more available OR until Limit is reached (default = True)
  • Last - if AutoPaginate is False and there are more results to paginate ('Last' will be a key in results), you can manually pass the 'Last' result to function to begin new query time range (format = integer epoch timestamp)
  • BatchSize - the number of results to return per request/page (maximum of 250, default=250, format = integer)

Post items to a Stream

The getLiveStream function will upload your items in batches of 25. Items can be accepted in one of three formats:

  • 'array' - accepts a python array of strings or objects. Objects will be json-serialized.
  • 'lines' - reads a file (provide a string path) line by line and uploads each line as an individual item
  • 'dir' - reads all files in a directory (provide a string path) and uploads the text contexts. Non-utf-8 encoded files are skipped.
items = [
    {"somekey":[{"something nested":"value","somethingelsenested":"somevalue"}],
    "a string",
    "another string",
    "final string"
]

bountycountry.postStream('dataset-id-goes-here', items, format='array')

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

bountycountry-1.2.0.tar.gz (5.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

bountycountry-1.2.0-py3-none-any.whl (6.6 kB view details)

Uploaded Python 3

File details

Details for the file bountycountry-1.2.0.tar.gz.

File metadata

  • Download URL: bountycountry-1.2.0.tar.gz
  • Upload date:
  • Size: 5.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.12.1 pkginfo/1.4.2 requests/2.9.1 setuptools/40.8.0 requests-toolbelt/0.9.1 tqdm/4.31.1 CPython/3.6.5

File hashes

Hashes for bountycountry-1.2.0.tar.gz
Algorithm Hash digest
SHA256 ac0ee3da44dad341a18d8fd7932f4b3cd7866addda13b50aede7119f3601fe24
MD5 55a997de868020d085d4aac71b36ed4c
BLAKE2b-256 17e501da0527c021859d49a330da7ddb9151f5bf4521575ef4c66c13f061ecb1

See more details on using hashes here.

File details

Details for the file bountycountry-1.2.0-py3-none-any.whl.

File metadata

  • Download URL: bountycountry-1.2.0-py3-none-any.whl
  • Upload date:
  • Size: 6.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.12.1 pkginfo/1.4.2 requests/2.9.1 setuptools/40.8.0 requests-toolbelt/0.9.1 tqdm/4.31.1 CPython/3.6.5

File hashes

Hashes for bountycountry-1.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 5ed2f5887299f61bb40a9e8a39b05b293dd24a28481b464c06b898b72bc4e8cb
MD5 1cf6331a65334bdc4f5000b14257b3f7
BLAKE2b-256 1e398366ad3cab715060318e6c0e0e1ba2769e7582ec07dd88a77da3dc3e4ace

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page