strongswan / swidGenerator

Application which generates SWID-Tags from Linux package managers like dpkg, rpm or pacman.
MIT License
16 stars 11 forks source link

Safely print data to stdout on both Python 2 and 3 #27

Closed dbrgn closed 10 years ago

dbrgn commented 10 years ago

On Python 2, binary data can be printed directly to stdout.

On Python 3, binary data should be written to sys.stdout.buffer instead of sys.stdout directly.

This commit adds a safe_print function to handle both unicode and bytestrings correctly on both Python versions.

This fixes the problem that strings were not printed correctly on Python 3.

dbrgn commented 10 years ago

Please review, @cfaessler.

dbrgn commented 10 years ago

Ping, @cfaessler.

cfaessler commented 10 years ago

Generator does not work with Python3 on my vagrant box:

vagrant@precise32:~/swidGenerator$ python3 -m swid_generator.main software-id
Traceback (most recent call last):
  File "/usr/lib/python3.2/runpy.py", line 160, in _run_module_as_main
    "__main__", fname, loader, pkg_name)
  File "/usr/lib/python3.2/runpy.py", line 73, in _run_code
    exec(code, run_globals)
  File "/home/vagrant/swidGenerator/swid_generator/main.py", line 28, in <module>
    from .argparser import MainArgumentParser
  File "swid_generator/argparser.py", line 8, in <module>
    from . import settings
  File "swid_generator/settings.py", line 1
    DEFAULT_REGID = u'regid.2004-03.org.strongswan'
                                                  ^
SyntaxError: invalid syntax
vagrant@precise32:~/swidGenerator$ python3 --version
Python 3.2.3
cfaessler commented 10 years ago

Ok, since we don't support python 3.2: good to merge!