Package: teafiles
Time Series PeristenceThis Python package provides Time Series storage in flat files according to theTeaFilefile format.In Use>>> tf = TeaFile.create("acme.tea", "Time Price Volume", "qdq", "ACME at NYSE", {"decimals": 2, "url": "www.acme.com" })
>>> tf.write(DateTime(2011, 3, 4,  9, 0), 45.11, 4500)
>>> tf.write(DateTime(2011, 3, 4, 10, 0), 46.33, 1100)
>>> tf.close()>>> tf = TeaFile.openread("acme.tea")
>>> tf.read()
TPV(Time=2011-03-04 09:00:00:000, Price=45.11, Volume=4500)
>>> tf.read()
TPV(Time=2011-03-04 10:00:00:000, Price=46.33, Volume=1100)
>>> tf.read()
>>> tf.close()Exchange Time Series between Apps / OSYou can create, read and write TeaFiles withR,C++,C# orother applicationsonLinux, Unix,Mac OSWindowsPython API Examplesprogramshttp://discretelogics.com/PythonAPI/examples.htmlinteractivehttp://discretelogics.com/PythonAPI/interactive.htmlexamples.py (available in the package source)TeaFilesTeaFiles are a verysimple, yet highlyefficient, way to store time series data
providing data exchange between programs written in C++, C# or applications like R, Octave,
Matlab, running on Linux, Unix, Mac OS X or Windows.Binarydata composed from elementary data typessigned and unsigned integers, double and floatin IEEE 754 format is prefixed by aheaderholding a description of the item structure and the content.Data can be directly accessed viamemory mapping.TeaFiles areself describing: Containing a description of the item structure they relieve opaqueness of straight binary files. Knowing that a file is a TeaFile is enough to access its data.link to spechttp://tbdScope of the Python APIThe Python API makes TeaFiles accessible everywhere. It just needs a python installation on any OS to inspect the description and data
of a TeaFile:>>> # Show the decimals and displayname for all files in a folder:
...
>>> def showdecimals():
    ...     for filename in os.listdir('.'):
    ...         with TeaFile.openread(filename) as tf:
    ...             nvs = tf.description.namevalues
    ...             print('{} {} {}'.format(filename, nvs.get('Decimals'), nvs.get('DisplayName')))
    ...
    >>> showdecimals()
    AA.day.tea 2 Alcoa, Inc.
    AA.tick.tea 2 Alcoa, Inc.
    AXP.day.tea 2 American Express Co.
    ...Data download from web services is also a good fit. See the examples.py file in the package source for a Yahoo finance download function in about 30 lines.LimitationsWhen it comes to high performance processing of very large time series files, this API is currently not as fast as the C++ and C# APIs (Numbers coming soon onhttp://tbd). There are numerous ways to improve this if necessary, but no current plans at discretelogics to do so. Using the other languages/APIs is recommended. If you wish the Python API to be faster or want to work on that contact us.Installation$ pip install teafilespackage source with examples.py athttp://bitbucket.org/discretelogics/teafiles.pyTestsRun the unit tests from the package root by$ python -m pytest .testPython 2.7 / 3.2Package tested under CPython 2.7.
Python 3.2 plannedAuthorThis API brought to you by discretelogics, company specialicing in time series analysis and event processing.http://tbdVersion 0.7The current version is reasonably tested by doctests and some pytests. Better test coverage with unit tests (currently pytest is used)
is desirable.tbd towards version 1.0enhance pytest coverageconsider api feedackcleaner test runs, cleanup test filesoptionalenhance performance after measuring it in python 3 (maybe struct module plays a minor role there)LicenseThis package is released under the GNU GENERAL PUBLIC LICENSE, see License.txt.FeedbackWelcome at:pythonapi@discretelogics.com