Release 1.10
[zeroinstall/solver.git] / zeroinstall / __init__.py
blobdc091359477cad2f73518f86879bfa4b407d8550
1 """
2 The Python implementation of the Zero Install injector is divided into five sub-packages:
4 - L{zeroinstall.cmd} contains one module for each 0install sub-command (providing the shell-scripting interface)
5 - L{zeroinstall.injector} contains most of the interesting stuff for managing feeds, keys and downloads and for selecting versions
6 - L{zeroinstall.zerostore} contains low-level code for handling the implementation cache (where unpacked packages are stored)
7 - L{zeroinstall.gtkui} contains code for making GTK user-interfaces
8 - L{zeroinstall.support} contains helper code (not really specific to Zero Install)
10 @copyright: (C) 2011, Thomas Leonard
11 @see: U{http://0install.net}
13 @var _: a function for translating strings using the zero-install domain (for use internally by Zero Install)
14 """
16 version = '1.10'
18 import sys
19 if sys.version_info[0] > 2:
20 try:
21 from gi.repository import GObject as gobject
22 except ImportError:
23 import gobject
24 else:
25 import gobject
26 gobject.threads_init()
28 import gettext
29 from os.path import dirname, join
31 try:
32 localedir = None
33 translation = gettext.translation('zero-install', fallback = False)
34 except:
35 localedir = join(dirname(dirname(__file__)), 'share', 'locale')
36 translation = gettext.translation('zero-install',
37 localedir = localedir,
38 fallback = True)
39 try:
40 _ = translation.ugettext # Python 2
41 except AttributeError:
42 _ = translation.gettext # Python 3
44 class SafeException(Exception):
45 """An exception that can be reported to the user without a stack trace.
46 The command-line interface's C{--verbose} option will display the full stack trace."""
48 class NeedDownload(SafeException):
49 """Thrown if we tried to start a download and downloading is
50 disabled."""
51 def __init__(self, url):
52 Exception.__init__(self, _("Would download '%s'") % url)