skip to navigation
skip to content

Not Logged In

outputty 0.2.1

Import, filter and export tabular data with Python easily

Latest Version: 0.3.2

outputty is a simple Python library that helps you importing, filtering and exporting data. It is composed by a main Table class and a lot of plugins that helps importing and exporting data to/from Table.

You can write your own plugin easily (see outputty/plugin_*.py for examples). Some examples of plugins are: CSV, text, HTML and histogram.

Installation

As simple as executing:

pip install outputty

Example

Code time!:

>>> from outputty import Table
>>> my_table = Table(headers=['name', 'age']) # headers are the columns
>>> my_table.append(('Álvaro Justen', 24)) # a row as tuple
>>> my_table.append({'name': 'Other User', 'age': 99}) # a row as dict
>>> print my_table # a text representation of Table
+---------------+-----+
|      name     | age |
+---------------+-----+
| Álvaro Justen |  24 |
|    Other User |  99 |
+---------------+-----+

>>> print 'First row:', my_table[0] # Table is indexable
First row: [u'\xc1lvaro Justen', 24]

>>> print 'Sum of ages:', sum(my_table['age']) # you can get columns too
Sum of ages: 123

>>> my_table.write('csv', 'my-table.csv') # CSV plugin will save its contents in a file
>>> # let's see what's in the file...
>>> print open('my-table.csv').read()
"name","age"
"Álvaro Justen","24"
"Other User","99"

>>> # let's use HTML plugin!
>>> print my_table.write('html') # without filename ``write`` will return a string
<table>
  <thead>
    <tr class="header">
      <th>name</th>
      <th>age</th>
    </tr>
  </thead>
  <tbody>
    <tr class="odd">
      <td>Álvaro Justen</td>
      <td>24</td>
    </tr>
    <tr class="even">
      <td>Other User</td>
      <td>99</td>
    </tr>
  </tbody>
</table>

Table have a lot of other features. To learn more (by examples), read outputty tutorial and see examples folder. Enjoy!

New Features

Yes, there are a lot of features to add (it's just the begining). If you want to contribute, please see our outputty wishlist.

You can also use the outputty Issue Tracking System on GitHub <https://github.com/turicas/outputty/issues> to report bugs.

Contributing

If you want to contribute to this project, please:

  • Use Test-driven development
  • Create your new feature in branch feature/name-of-the-new-feature (git checkout -b feature/new-feature). You should know how to use git - I try to use this git flow
  • Run all tests (make test) before pushing - To run just one test file, execute: nosetests --with-coverage --cover-package outputty  tests/test_your-test-file.py - Try to have a test-coverage of 100%
  • make test will call nosetests with some plugin options - to install it, execute: pip install nose coverage ipdbplugin yanc Create/update documentation (README/docstrings/man page) - Do NOT edit ``README.rst`` and ``tutorial.rst``. Edit README-template.rst or tutorial-template.rst instead and run make create-docs to create the new README.rst and tutorial.rst. The tutorial will be created based on files in examples folder.

New Plugins

If you want to create a new plugin to import/export from/to some new resource, please see files outputty/plugin_*.py as examples. They are so simple, please follow these steps:

  • Create a file named outputty/plugin_name.py, where name is the name of your plugin.
  • Create read and/or write functions in this file. These functions receive the Table object and optional parameters. - read: should read data from the resource specified in parameters and put this data in Table (using Table.append or Table.extend). - write: should read data from Table (iterating over it, using slicing etc.) and write this data to the resource specified in parameters.
  • Call your plugin executing my_table.write('name', optional_parameters...) or my_table.read('name', optional_parameters...) (where name is your plugin's name) - when you execute it outputty will call outputty.plugin_name.read/outputty.plugin_name.write.

Encoding and Decoding

Your plugin's read function must put all data inside in unicode and your plugin's write function will receive a Table object with all data in unicode (it should not change this). But if you need to decode/encode before/after doing some actions in your plugin, you can use Table.decode() and Table.encode().

Contributors

This software is written and maintained by Álvaro Justen but received a lot of contributions. My sincerely thanks to:

 
File Type Py Version Uploaded on Size
outputty-0.2.1.tar.gz (md5) Source 2012-04-21 25KB
  • Downloads (All Versions):
  • 13 downloads in the last day
  • 134 downloads in the last week
  • 499 downloads in the last month