Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/turicas/outputty

NOT MAINTAINED ANYMORE. SEE "rows"
https://github.com/turicas/outputty

Last synced: 13 days ago
JSON representation

NOT MAINTAINED ANYMORE. SEE "rows"

Awesome Lists containing this project

README

        

outputty
========

{{INTRO}}

Installation
------------

As simple as executing::

pip install outputty

Note: as ``pip`` tries to compile everything and ``outputty`` depends on
``MySQL-Python`` package (which needs compilation), you need to have
libmysqlclient's headers, compilers and related stuff. To install it on
Debian/Ubuntu, just execute::

apt-get install build-essential libmysqlclient-dev

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



name
age




Álvaro Justen
24


Other User
99


``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 `_
to report bugs.

Contributing
------------

If you want to contribute to this project, please:

- Install dependencies for development running ``pip install -r requirements/development.txt``.
- Execute ``make test`` to run all tests -- please run **all tests** *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%.
- Use `Test-driven development `_.

- Use `nvie's gitflow `_ - to learn, read
`A Successful Git branching model `_.

- 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`` (before committing). 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
~~~~~~~~~~~~

{{AUTHORS}}

Related Software
----------------

- outputty-like:

- `tablib `_: format-agnostic tabular
dataset library.
- `PyTables `_: package for managing hierarchical
datasets and designed to efficiently and easily cope with extremely large
amounts of data.
- `csvstudio `_: Python tool to analyze
csv files.
- `csvsimple `_: a simple tool to
handle CSV data.
- `toolshed `_: less boiler-plate.
- `buzhug `_: a fast, pure-Python
database engine.

- Data analysis:

- `pyf `_: framework and platform dedicated to large
data processing, mining, transforming, reporting and more.
- `pygrametl `_: Python framework which offers
commonly used functionality for development of Extract-Transform-Load
(ETL) processes.
- `etlpy `_ seems to be a dead project.
- `orange `_: data visualization and analysis for
novice and experts.
- `Ruffus `_: lightweight python module to run
computational pipelines.
- `webstore `_: web-api enabled datastore
backed onto sql databases

- Command-line tools:

- `fabulous `_: library designed to
make the output of terminal applications look fabulous.
- `termcolor `_: ANSII Color
formatting for output in terminal.
- `clint `_: Python Command-line
Application Tools.

- Other:

- `pyspread `_: non-traditional
spreadsheet application.