.. -------------------------------------------------------------------------------
.. file: $Id$
.. auth: griffin <griffin@uberdev.org>
.. date: 2012/07/01
.. copy: (C) CopyLoose 2012 UberDev <hardcore@uberdev.org>, No Rights Reserved.
.. -------------------------------------------------------------------------------

.. include:: ../README.txt
   :end-before: .. _readme.goals:

.. toctree::
   :maxdepth: 2
   :hidden:
   :glob:

   pysyncml/cli/index
   pysyncml/client
   pysyncml/server
   **

.. contents::

.. include:: ../README.txt
   :start-after: .. _readme.goals:
   :end-before: .. _readme.docref:

Documentation
=============

.. The full API documentation generated by sphinx is located at :doc:`api`

* :doc:`pysyncml/cli/index`:

  pysyncml comes with several simple command line programs to
  synchronize various object types, such as contacts and notes.
  Although they are intended as example implementations, they can
  nonetheless be used for real, albeit simple, synchronization.

* :doc:`pysyncml/client`:

  This guide documents how to implement only the client-side of a
  SyncML communication. Due to the fact that pysyncml is intended to
  allow omni-directional synchronization, this is in fact not that
  much different from implementing a server, but can be slightly
  simpler.

* :doc:`pysyncml/server`:

  This guide documents how to implement only the server-side of a
  SyncML communication. Due to the fact that pysyncml is intended to
  allow omni-directional synchronization, this is in fact not that
  much different from implementing a server, but there are extra
  tidbits about how to manage deep integration with a database, manage
  state and sessions as well as authorization/authentication concerns.


Coding Standards
================

Here are a few of the coding standards that the pysyncml project conforms to
that deviate or go beyond PEP-8_:

* No hard tabs; soft tabs set to two (2) spaces.
* All text-based versioned files have svn:keywords "Id" and "Revision".
* All text-based files must use unix-style line endings.
* Assignment operations should be operator-aligned when in context of
  consecutive assignments.
* No hard coding of literals; all literals must be overrideable.
* No one-line logic (conditionals, loops, etc), except anonymous functions.
* Python files are "utf-8" encoded and are marked as such.
* Variables and methods are camelCase unless otherwise required by specs.
* Classes are capitalized CamelCase unless otherwise required by specs.
* Complexity is hidden via sane defaulting.
* Documentation is on all public API entry points via restructured text
  (RST_).
* ``TODO`` items indicate potentially show-stopper issues, ``todo``
  indicates nice-to-haves.

.. _section.resources:

Resources
=========

* PyPI listing: http://pypi.python.org/pypi/pysyncml
* SourceForge project: http://sourceforge.net/projects/pysyncml/
* Tickets: http://sourceforge.net/p/pysyncml/tickets/
* :ref:`search`
* :ref:`modindex`
* :ref:`genindex`

.. _section.feedback:

Feedback
========

Please send any feedback, comments, suggestions, etc. to
<hardcore@uberdev.org>. For bug reports, please use the SourceForge
ticket system (see :ref:`section.resources`).

.. _SyncML: http://en.wikipedia.org/wiki/SyncML
.. _pysyncml: http://www.pysyncml.org/
.. _sqlalchemy: http://www.sqlalchemy.org/
.. _PEP-8: http://www.python.org/dev/peps/pep-0008/
.. _RST: http://sphinx.pocoo.org/rest.html
.. _PIP: http://www.pip-installer.org
.. _easy_install: http://peak.telecommunity.com/DevCenter/EasyInstall

.. ----------------------------------------------------------------------------
.. end of $Id: README.txt 24 2012-06-19 19:35:12Z griff1n $
.. ----------------------------------------------------------------------------
