Import the C-level ts python object as TransactionSetCore
[platform/upstream/rpm.git] / python / rpm / __init__.py
1 r"""RPM Module
2
3 This module enables you to manipulate rpms and the rpm database.
4
5 """
6
7 import warnings
8 import os
9 from rpm._rpm import *
10 from rpm.transaction import *
11 import rpm._rpm as _rpm
12 _RPMVSF_NODIGESTS = _rpm._RPMVSF_NODIGESTS
13 _RPMVSF_NOHEADER = _rpm._RPMVSF_NOHEADER
14 _RPMVSF_NOPAYLOAD = _rpm._RPMVSF_NOPAYLOAD
15 _RPMVSF_NOSIGNATURES = _rpm._RPMVSF_NOSIGNATURES
16
17 __version__ = _rpm.__version__
18 __version_info__ = tuple(__version__.split('.'))
19
20 # try to import build bits but dont require it
21 try:
22     from rpm._rpmb import *
23 except ImportError:
24     pass
25
26 # try to import signing bits but dont require it
27 try:
28     from rpm._rpms import *
29 except ImportError:
30     pass
31
32 # backwards compatibility + give the same class both ways
33 ts = TransactionSet
34
35 def headerLoad(*args, **kwds):
36     warnings.warn("Use rpm.hdr() instead.", DeprecationWarning, stacklevel=2)
37     return hdr(*args, **kwds)
38
39 def _doHeaderListFromFD(rpm_fd, retrofit):
40     hlist = []
41     while 1:
42         try:
43             h = hdr(rpm_fd)
44             if retrofit:
45                 h.convert(HEADERCONV_RETROFIT_V3)
46             hlist.append(h)
47         except _rpm.error:
48             break
49
50     return hlist
51
52 def readHeaderListFromFD(file_desc, retrofit = True):
53     if not isinstance(file_desc, fd):
54         file_desc = fd(file_desc)
55     return _doHeaderListFromFD(file_desc, retrofit)
56         
57 def readHeaderListFromFile(path, retrofit = True):
58     f = fd(path)
59     hlist = _doHeaderListFromFD(f, retrofit)
60     f.close()
61     return hlist
62     
63 def readHeaderFromFD(file_desc):
64     if not isinstance(file_desc, fd):
65         file_desc = fd(file_desc)
66     try:
67         offset = file_desc.tell()
68         h = hdr(file_desc)
69     except (_rpm.error, IOError):
70         offset = None
71         h = None
72
73     return (h, offset)
74
75 def signalsCaught(siglist):
76     caught = []
77     for sig in siglist:
78         if signalCaught(sig):
79             caught.append(sig)
80
81     return caught
82
83 def dsSingle(TagN, N, EVR = "", Flags = RPMSENSE_ANY):
84     return ds((N, EVR, Flags), TagN)