GCache is a Python module that provides a generic cache class useful for speeding up any application where objects are referenced by keys. It uses object metadata to optimize hit-rates and freshness for fetches, and uses a "write-through" mechanism for writes and deletes. It can use "if-modified-since" fetches or rsync delta updates to refresh stale cached objects. GSource classes are provided for generating useful metadata from common sources (os.stat calls and MIME headers). A simple example urlCache is implemented that supports HTTP 1.1 (rfc2616) cache-control and expire headers to ensure freshness. Also included is an rfc2616 package useful for parsing HTTP 1.1 headers, and a PCache package implementing a persistant cache using a Python shelve.
Pysync has both a demonstration implementation of the rsync and related algorithms in pure Python, and a high speed librsync Python extension. The pure Python is not fast and is not optimized, however it does work and provides a simple implementation of the algorithm for reference and experimentation. It includes a combination of ideas taken from librsync, xdelta, and rsync. The librsync Python extension is less flexible and harder to understand, but is very fast.
pyttymon is a simple daemon that monitors and limits usage of ttys. It is implemented in Python. A simple config file can specify monthly, daily, session, and idle limits based on tty, user, group, and ttys in use. It was inspired by timeoutd, but adds support for monthly maximums and different limits based on the number of ttys in use.
Medusa provides a framework for implementing asynchronous socket-based servers for TCP/IP, and on Unix, Unix domain sockets. The first release includes HTTP, FTP, and 'monitor' (remote python interpreter) servers. Medusa can simultaneously support several instances of either the same or different server types - for example you could start up two HTTP servers, an FTP server, and a monitor server. Then you could connect to the monitor server to control and manipulate medusa while it is running.
Re: possible conflict between this and GTK+ objects
> % Probaby this project should have it's
> name changed to
> % pyGCache...
done. Also licence changed to LGPL.
Re: Handles large archives?
> search on google.com for "python rsync".
> almost right at the top is someone
> implementing rsync in python, but he
> hasn't got round to doing the bits that
> this guy has.
I think you are refering to rsync.py. (http://www.vdesmedt.com/~vds2212/rsync.html) I just looked at it. It doesn't implement the rsync algorithm or any network transport. It only copies the walk/filter/copy functionality of rsync.
Another interesting project is zsync. (http://zsync.moria.org.uk/) This implements an inverse rsync algorithm and uses a normal http server for network transport. It has no walk/filter/copy functionality.
For those who want to add walk/filter functionality to pysync, I have bits and pieces that might be useful;
efnmatch.py (http://minkirri.apana.org.au/~abo/projects/pybackup/efnmatch.py) rsync style extended fnmatch.
dirscan.py (http://minkirri.apana.org.au/~abo/projects/pybackup/dirscan.py) rsync style include/exclude pattern directory scanning.
ddiffutils.py (http://minkirri.apana.org.au/~abo/projects/utils/ddiffutils.py) efficient directory comparison walk generators.
I haven't yet tied these together into a useful combination, but I should some day :-)