This is no longer supported in python3. Just set
SSLError, SSLVerificationErrror and RPMError to Exception instead to none
if the modules are not imported.
* util/helper.py
- new decode_it function. Takes obj and checks if
it is not a str. The it tries to guess the encoding
based on the module chardet
* all other modules:
- switched from var.decode('utf-8') to decode_it(var) if
possible
* renamed mirror.py to grabber.py
* moved OscFileGraber Class to grabber.py
* in OscMirrorGroup we now use a OscFileGrabber class
* moved progressbar handling in own module (meter.py)
* simplified MGError
* removed meter.py (not needed anymore. We now use
progressbar2
* removed last urlgrabber fragments
* use progressbar2 as a replacement for UrlGrabber.ProgressBar
* use streamfile in combination with progressbar to download files
Note: it is probably better to raise a ServiceRuntimeError in
Serviceinfo.execute instead of Package.commit because "execute"
has all the information about the failing service...
This way other python scripts can execute osc commands via the
babysitter. Example:
>>> from osc import babysitter, commandline
>>> cli = commandline.Osc()
>>> babysitter.run(cli, ['osc', 'ls', '<project>'])
The most visible change in python3 - removal of print statement and all
the crufty
print >> sys.stderr, foo,
The from __future__ import print_function makes it available in python
2.6
Some modules (httplib, StringIO, ...) were renamed in python3. This
patch try to import the proper symbols from python3 and then fallback to
python2 in a case ImportError will appear.
There is one exception, python 2.7 got the io module with StringIO, but
it allow unicode arguments only. Therefor the old module is poked before
new one.
Basically it's just a wrapper around subprocess.call which raises an ExtRuntimeError
exception if subprocess.call raised an OSError with errno set to ENOENT (unfortunately
the OSError's filename attribute is set to None therefore we cannot print a meaningful
error message (that's why an ExtRuntimeError is raised)).
Replaced all occurrences of subprocess.call with a corresponding run_external call.
Exchange individual return statements with a finally statement in the
big try/except statement in babysitter.py. If you return a different
value in the 'except' clause, it takes precedency over the 'finally'
clause (finally is executed before returning, naturally).