Skip to main content

Query treasury.io through Python, returning Pandas DataFrames

Project description

pytreasuryio
======
Access .. _treasury.io: http://treasury.io from Python.

This is a package consisting of a single, simple function for submitting ``SQL`` queries to .. _treasury.io: http://treasury.io from ``python``. While you could simply copy-and-paste the function from script-to-script, this makes it quicker and easier to get up and running!

It also has some helpers to make a Twitter bot from the treasury.io data.

Installation
--------
Install with pip.::

pip install treasuryio

Example
---------

Basic query
~~~~~~~~~
Send an SQL query and receive a pandas data frame.::

# Operating cash balances for May 22, 2013
import treasuryio
sql = 'SELECT * FROM "t1" WHERE "date" = \'2013-05-22\';'
treasuryio.query(sql)

Twitter bot
~~~~~~~~~
Write a ``~/.twitter.yml`` file.::

consumer_key: oeshaoduhsaousaoeuhts
consumer_secret: b233tsao-enuhsaoehsunoesudtuhoelaouhs2uo
access_token: 2349081293-astoehusatoehusaoeustahoeuhh2AOEUTAouhc
access_token_secret: 9023uonshesuaHONETuoeuoeouo0eOHNEuhOuoeu

Define a function that produces the text of the tweet, and decorate it with the
``@treasurio.tweet`` decorator.::

import treasuryio
import humanize
import math

MIL = 1e6

# Helpers to humanize numbers / dates
def human_number(num):
return humanize.intword(int(math.ceil(num))).lower()

def human_date(date):
return humanize.naturalday(date).title()

@treasuryio.tweet
def total_debt_tweet():
df = treasuryio.query('SELECT date, close_today FROM t3c WHERE (item LIKE \'%subject to limit%\' AND year = 2013 AND month >=1) ORDER BY date DESC')

# determine length of DataFrame
end = len(df)-1

# extract current amount and amount at the beginning of the year
current_amt = df['close_today'][0]*MIL
previous_amt = df['close_today'][end]*MIL

# calculate change
delta = abs(current_amt - previous_amt)

# generate word to represnet the direction of change
if current_amt > previous_amt:
change = "increased"
elif current_amt < previous_amt:
change = "decreased"

# humanize values
# Notice the included ``human_date`` and ``human_number`` functions which simplify these values for you
current_date = human_date(df['date'][0])
amt = human_number(current_amt)
delta = human_number(delta)
previous_date = human_date(df['date'][end])

# generate tweet
vals = (current_date, amt, change, previous_date, 'http://treasury.io')
return "As of %s, the US Gov is $%s in debt. This amount has %s since %s - %s" % vals

Then just run it.::

total_debt_tweet()

You can get fancy by switching the functions that you use.::

import treasuryio
import random

@treasurio.tweet
def tweet_a():
# ...

@treasurio.tweet
def tweet_b():
# ...

@treasurio.tweet
def tweet_c():
# ...

random.choice([tweet_a, tweet_b, tweet_c])()

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

treasuryio-0.0.3.tar.gz (4.3 kB view details)

Uploaded Source

File details

Details for the file treasuryio-0.0.3.tar.gz.

File metadata

  • Download URL: treasuryio-0.0.3.tar.gz
  • Upload date:
  • Size: 4.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for treasuryio-0.0.3.tar.gz
Algorithm Hash digest
SHA256 0056abe8ddda8951866075475619401c4f2ed0163438cb5197ee81c43cb68f57
MD5 e18d6bdd39b9958e95b62ce091842571
BLAKE2b-256 f9e957e4c4b7c1bdc64bbd7c542d71ae07363dd4d98c9c7880cf2b13f240cd7a

See more details on using hashes here.

Provenance

Supported by

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