Projects/Memopol/Documentation

= Memopol Documentation for Developpers =

Python version
Actually, Memopol uses Python 2.7.

It should support 2.5, 2.6, 2.7 (since it use Django 1.4)

Dependencies
Actually, Memopol has a long list of dependencies, which makes it long and difficult/complex to install. Here is a "not finished" architecture of Memopol's dependencies :


 * django: Python framework for website
 * django-debug-toolbar: Debug toolbar
 * django-contact-form-i18n: Translation of 'generic contact-form' ?
 * django-flatblocks: Like flatpages, but for parts of a page
 * django-awesome-snippets: Decorator to cache html snippets
 * django-simple-captcha: Simple captcha application
 * django-extensions: Extensions for django (???)
 * django-tastypie: Flexible API layer (delicious)
 * django-haystack: Pluggable search
 * whoosh: Full-text indexing, spell-cheking library
 * django-ajax-selects: jQuery-powered auto-complete fields
 * django-extended-choices: Improve django choices (fields)
 * django-dynamiq-search-form:
 * django-categories: Handle one or more hierarchical category trees
 * django-endless-pagination: Twitter and Digg style pagination
 * django-compressor: Automatic system for compressing css and js files
 * lxml: XML processing library
 * hamlpy: HAML-like syntax for django templates
 * pil: Python Imaging Library


 * South: Migration of database
 * matplotlib: Plotting package
 * numpy: Array processing for numbers, strings, objects


 * BeautifulSoup: HTML parsing library
 * pyquery: jquery-like library
 * lxml: XML processing library


 * WebTest: Helper fot testing WSGI applications
 * nose: UnitTest extension for unit testing
 * gunicorn: WSGI Http server
 * werkzeug: WSGI utilities module
 * pytidylib: Python wrapper for HTML Tidy
 * pyyaml: YAML parser
 * unidecode: ASCII transliterations for unicode
 * diff_match_patch: Synchronization for plain text

matplotlib
This library is used (in memopol/trends/views.py) to draw some graphs about votes.

numpy is mandatory to use this library.