Skip to main content

A pure-python implementation of the SyncML adapter framework and protocol.

Project description

Welcome to pysyncml

Welcome to the pysyncml library, a pure-python implementation of the SyncML adapter framework and protocol. SyncML is a protocol for allowing abstract objects to be synchronized between multiple clients and a server.

For downloaded packages, please see the generated documents in the “doc” directory, otherwise you can find links to the latest how-to and API reference documentation at pysyncml.

Goals

The pysyncml project has the following goals, some of them diverge critically from other SyncML implementations and are the reasons for creating a new package instead of building on other existing implementations:

  • Can be installed and used with a single “pip install pysyncml” (or easy_install).

  • Is python 2.6+ and 3+ compatible.

  • Implements a sufficiently large subset of the SyncML 1.2.2 (a.k.a. the OMA Data Synchronization specification) as to be interoperable with other implementations without necessarily being “conformant”.

  • Can be easily integrated into sqlalchemy based projects to store data in the application’s database instead of separated out (so that integrated database triggers and cascading can be applied).

  • Can be extended in order to make properly crafted clients able to operate in “distributed” mode - this means that in the absence of a network, SyncML client peers are able to synchronize with each other in the anticipation that the central server may or may not eventually become available again.

  • Differentiates as little as possible between “client” and “server” modes to enable the previous goal.

  • Makes basic synchronization easy and complicated synchronization possible by providing standard implementations for commonly used approaches, while allowing these components to be overriden or extended.

  • Provides basic command line tools for commonly synchronized data types.

  • Provides a framework of server-push notifications which are transport agnostic.

  • Auto-discovery of SyncML server URI locations; i.e. finding the “right” paths to bind object types is done automatically instead of needing error-prone user configuration.

Limitations

It is the goal of the project to get a minimally functional library going in the shortest possible timeframe. To that end, the following features of SyncML will NOT be implemented until a later phase, even if this means that the library does not provide a conformant implementation:

  • Filtering of searches or synchronization targets.

  • Data split over multiple messages.

  • Soft-deletes.

  • Memory constraint management.

  • Suspend, resume and busy signaling.

  • MD5 authentication scheme.

  • Per-database-layer authorization.

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).

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pysyncml-0.1.dev-r30.tar.gz (68.5 kB view details)

Uploaded Source

Built Distributions

pysyncml-0.1.dev_r30-py2.7.egg (181.3 kB view details)

Uploaded Source

pysyncml-0.1.dev_r30-py2.6.egg (182.1 kB view details)

Uploaded Source

File details

Details for the file pysyncml-0.1.dev-r30.tar.gz.

File metadata

File hashes

Hashes for pysyncml-0.1.dev-r30.tar.gz
Algorithm Hash digest
SHA256 066c66c359c49a112e1d2cf48ca9604aaf4ebb24d38699ab3ccdffb0d1a40684
MD5 9490a1b5bd324311a7bd8bc686bf34d0
BLAKE2b-256 a8e6dc901f5becc64552165ac5e22883cb56645731f55d71ffe6413431299241

See more details on using hashes here.

File details

Details for the file pysyncml-0.1.dev_r30-py2.7.egg.

File metadata

File hashes

Hashes for pysyncml-0.1.dev_r30-py2.7.egg
Algorithm Hash digest
SHA256 d48971e3ce8f6ff70c9842ad7b6441c65604f72dedb6b30b045ec93704f4e9f7
MD5 0ca5bd188208b2e4ae3e96fb32334ea5
BLAKE2b-256 83877f8f66adef8b6de6b1dcdd11743437f03ea184d5a8d69d81ed35b043e46b

See more details on using hashes here.

File details

Details for the file pysyncml-0.1.dev_r30-py2.6.egg.

File metadata

File hashes

Hashes for pysyncml-0.1.dev_r30-py2.6.egg
Algorithm Hash digest
SHA256 a8f716819aa21ec2eb79a970675a2ea71fe3b5f509d6de6c5a769da91619150f
MD5 aa68ab1ae542c7e8b21ff3fd482a1250
BLAKE2b-256 9fdead49455d520712bef5115a0d6cb4abd4c8bfe3355cb855678dd6aa914f51

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page