Skip to main content

Python wrapper for Coda.io API

Project description

Python wrapper for Coda.io API

CodaAPI Code style: black Documentation Status CircleCI PyPI PyPI - Downloads

codaio is in active development stage. Issues and PRs very welcome!

Installation

pip install codaio

Config via environment variables

The following variables will be called from environment where applicable:

  • CODA_API_ENDPOINT (default value https://coda.io/apis/v1beta1)
  • CODA_API_KEY - your API key to use when initializing document from environment

Quickstart using raw API

Coda class provides a wrapper for all API methods. If API response included a JSON it will be returned as a dictionary from all methods. If it didn't a dictionary {"status": response.status_code} will be returned. If request wasn't successful a CodaError will be raised with details of the API error.

from codaio import Coda

coda = Coda('YOUR_API_KEY')

>>> coda.create_doc('My document')
{'id': 'NEW_DOC_ID', 'type': 'doc', 'href': 'https://coda.io/apis/v1beta1/docs/LINK', 'browserLink': 'https://coda.io/d/LINK', 'name': 'My Document', 'owner': 'your@email', 'createdAt': '2019-08-29T11:36:45.120Z', 'updatedAt': '2019-08-29T11:36:45.272Z'}

For full API reference for Coda class see documentation

Quickstart using codaio objects

codaio implements convenient classes to work with Coda documents: Document, Table, Row, Column and Cell.

from codaio import Coda, Document

# Initialize by providing a coda object directly
coda = Coda('YOUR_API_KEY')

doc = Document('YOUR_DOC_ID', coda=coda)

# Or initialiaze from environment by storing your API key in environment variable `CODA_API_KEY`
doc = Document.from_environment('YOUR_DOC_ID')

doc.list_tables()

table = doc.get_table('TABLE_ID')

# You can fetch a row by ID
row  = table['ROW_ID']

# Or fetch a cell by ROW_ID and COLUMN_ID
cell = table['ROW_ID']['COLUMN_ID']  

# This is equivalent to getting item from a row
cell = row['COLUMN_ID']

# Get a column to find it's id
column = table.get_column_by_name('COLUMN_NAME')
cell = row[column.id]

# To set a cell value 
cell.value = 'foo'

# Please mind that this takes a while in the current API, so you'll need to manually check when the value returns correct
# You can manually refresh row cells by calling:
row.refresh()


# Iterate over rows -> delete rows that match a condition
for row in table.rows():
    if row['COLUMN_ID'] == 'foo':
        row.delete()

# Iterate over rows -> edit cells in rows that match a condition
for row in table.rows():
    if row['COLUMN_ID'] == 'bar':
        row['COLUMN_ID'] = 'spam'

For full API reference for Document class see documentation

Documentation

codaio documentation lives at readthedocs.io

Testing

All tests are in the /tests folder. It's a little bit problematic to test against the live API since some responses may take a bit longer, so test results are not reliable enough to use a CI system.

Check out the fixtures if you want to improve the testing process.

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

codaio-0.4.2.tar.gz (10.1 kB view hashes)

Uploaded Source

Built Distribution

codaio-0.4.2-py3-none-any.whl (9.7 kB view hashes)

Uploaded Python 3

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