This is a pre-production deployment of Warehouse, however changes made here WILL affect the production instance of PyPI.
Latest Version Dependencies status unknown Test status unknown Test coverage unknown
Project Description
Python library for the Kloudless API

Python library for the [Kloudless API](
This is in beta and under significant development.

## Installation

To install, clone the repository and run:

python install

## Documentation

See the [Kloudless API Docs]( for the official reference.
You can obtain an API Key at the [Developer Portal](

### Resources

Here are the resource classes available:

* `Account`
* `File`
* `Folder`
* `Link`
* `Key`

Each class has the following methods where applicable:

* `create(**data)` makes a POST request to create a resource of that type.
* `all(**params)` makes a GET request to list all resources
* `retrieve(id, **params)` makes a GET request to retrieve metadata for that resource.

In addition, instances have the methods below where applicable:

* `save(**params)` makes a PATCH request to update the resource after attributes on it
have been modified.
* `delete(**params)` makes a DELETE request to delete the resource.

Parameters mentioned above:

* `id`: The ID of the resource.
* `params`: Keyword arguments that will be converted into query parameters for the request.
* `data`: Keyword arguments that will be converted into a JSON string sent in the body of the request.

#### Accessing nested resources

The `Account` model has some helper attributes to make using class methods easier:

* `links` references the Link class
* `files` references the File class
* `folders` references the Folder class
* `keys` references the Key class

## Examples

### Basics

Here is an example retrieving metadata on a folder in an account:

>>> import kloudless; kloudless.configure(api_key="API_KEY")
>>> accounts = kloudless.Account.all()
>>> account = accounts[0]
>>> root_folder = account.folders()
>>> children = root_folder.contents()
>>> child_folder = [f for f in children if f.type == 'folder'][0]

The shortcut method `account.folders` is used above,
but you can also instantiate the classes above independently:

>>> root_folder = kloudless.Folder(id='root', parent_resource=account)

There are different ways to retrieve information on a resource, given it's ID.
Here are some examples, given `account_id` and `child_folder_id` as the account and
folder IDs respectively.

# We need to create the account object with an account ID first.
>>> account = kloudless.Account(id=account_id)

# Get the child folder via the "account.folders" helper method.
>>> account.folders.retrieve(id=child_folder_id)

# Retrieve the child folder a different way
>>> kloudless.Folder.retrieve(, parent_resource=account)

# Retrieve the child folder another way
>>> f = kloudless.Folder(, parent_resource=account)
>>> f.refresh() # Pulls latest metadata given the ID.

Another example retrieving key information a few different ways:

# A few different ways
>>> key = kloudless.Key.all(parent_resource=account)[0]
>>> key = account.keys.retrieve(
>>> key = kloudless.Key.retrieve(, parent_resource=account)
>>> key = kloudless.Key(; key.refresh();

### Moving a file

Here's an example moving a file from one account to a folder in a different account.

# Get two cloud storage accounts.
>>> accounts = kloudless.Account.all();
>>> accounts[0].id
>>> accounts[1].id

# Find a file in the first account.
>>> root_contents = accounts[0].folders().contents() # Get the root folder contents
>>> f = [f for f in root_contents if f.type == 'file'][0] # Get a file

# Find a folder in the second account.
>>> root_contents = accounts[1].folders().contents()
>>> folder = [folder for folder in root_contents if folder.type == 'folder'][0]

# Update the file with new information
>>> f.account = accounts[1].id # Moving it to a different account
>>> = 'new file name.txt'
>>> f.parent_id =
>>> # Makes the request to move the file.

# 'f' now represents the new file object.

## Apps using the Python SDK

* creates folders and uploads files via the Kloudless API.


* Tests!
* Flesh out documentation.
* Distribute via package server.
* Fix moving files/folders between folders.

## Acknowledgements

* [requests]( makes the API requests easy.
* [stripe-python]( was a useful resource while researching the interface for this API.
Release History

Release History


This version

History Node

TODO: Figure out how to actually get changelog content.

Changelog content for this version goes here.

Donec et mollis dolor. Praesent et diam eget libero egestas mattis sit amet vitae augue. Nam tincidunt congue enim, ut porta lorem lacinia consectetur. Donec ut libero sed arcu vehicula ultricies a non tortor. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Show More

Download Files

Download Files

TODO: Brief introduction on what you do with files - including link to relevant help section.

File Name & Checksum SHA256 Checksum Help Version File Type Upload Date
kloudless-0.1.0.tar.gz (9.1 kB) Copy SHA256 Checksum SHA256 Source Apr 28, 2014

Supported By

WebFaction WebFaction Technical Writing Elastic Elastic Search Pingdom Pingdom Monitoring Dyn Dyn DNS Sentry Sentry Error Logging CloudAMQP CloudAMQP RabbitMQ Heroku Heroku PaaS Kabu Creative Kabu Creative UX & Design Fastly Fastly CDN DigiCert DigiCert EV Certificate Rackspace Rackspace Cloud Servers DreamHost DreamHost Log Hosting