~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to urlgrabber/__init__.py

  • Committer: John Arbash Meinel
  • Date: 2007-03-01 21:56:19 UTC
  • mto: (2255.7.84 dirstate)
  • mto: This revision was merged to the branch mainline in revision 2322.
  • Revision ID: john@arbash-meinel.com-20070301215619-wpt6kz8yem3ypu1b
Update to dirstate locking.
Move all of WT4.lock_* functions locally, so that they can
properly interact and cleanup around when we lock/unlock the
dirstate file.
Change all Lock objects to be non-blocking. So that if someone
grabs a lock on the DirState we find out immediately, rather
than blocking.
Change WT4.unlock() so that if the dirstate is dirty, it will
save the contents even if it only has a read lock.
It does this by trying to take a write lock, if it fails
we just ignore it. If it succeeds, then we can flush to disk.
This is more important now that DirState tracks file changes.
It allows 'bzr status' to update the cached stat and sha values.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
# This program is free software; you can redistribute it and/or modify
2
 
# it under the terms of the GNU General Public License as published by
3
 
# the Free Software Foundation; either version 2 of the License, or
4
 
# (at your option) any later version.
5
 
#
6
 
# This program is distributed in the hope that it will be useful,
7
 
# but WITHOUT ANY WARRANTY; without even the implied warranty of
8
 
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
9
 
# GNU Library General Public License for more details.
10
 
#
11
 
# You should have received a copy of the GNU General Public License
12
 
# along with this program; if not, write to the Free Software
13
 
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
14
 
 
15
 
# Copyright 2002-2004 Michael D. Stenner, Ryan Tomayko
16
 
 
17
 
# $Id: __init__.py,v 1.14 2005/03/08 22:54:25 mstenner Exp $
18
 
 
19
 
"""A high-level cross-protocol url-grabber.
20
 
 
21
 
Using urlgrabber, data can be fetched in three basic ways:
22
 
 
23
 
  urlgrab(url) copy the file to the local filesystem
24
 
  urlopen(url) open the remote file and return a file object
25
 
     (like urllib2.urlopen)
26
 
  urlread(url) return the contents of the file as a string
27
 
 
28
 
When using these functions (or methods), urlgrabber supports the
29
 
following features:
30
 
 
31
 
  * identical behavior for http://, ftp://, and file:// urls
32
 
  * http keepalive - faster downloads of many files by using
33
 
    only a single connection
34
 
  * byte ranges - fetch only a portion of the file
35
 
  * reget - for a urlgrab, resume a partial download
36
 
  * progress meters - the ability to report download progress
37
 
    automatically, even when using urlopen!
38
 
  * throttling - restrict bandwidth usage
39
 
  * retries - automatically retry a download if it fails. The
40
 
    number of retries and failure types are configurable.
41
 
  * authenticated server access for http and ftp
42
 
  * proxy support - support for authenticated http and ftp proxies
43
 
  * mirror groups - treat a list of mirrors as a single source,
44
 
    automatically switching mirrors if there is a failure.
45
 
"""
46
 
 
47
 
__version__ = '2.9.6'
48
 
__date__    = '2005/03/08'
49
 
__author__  = 'Michael D. Stenner <mstenner@linux.duke.edu>, ' \
50
 
              'Ryan Tomayko <rtomayko@naeblis.cx>'
51
 
__url__     = 'http://linux.duke.edu/projects/urlgrabber/'
52
 
 
53
 
from grabber import urlgrab, urlopen, urlread