[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH 6/6] docker: Open dockerfiles in text mode
From: |
Eduardo Habkost |
Subject: |
Re: [Qemu-devel] [PATCH 6/6] docker: Open dockerfiles in text mode |
Date: |
Wed, 27 Jun 2018 10:34:49 -0300 |
User-agent: |
Mutt/1.9.2 (2017-12-15) |
On Wed, Jun 27, 2018 at 07:51:01AM -0500, Eric Blake wrote:
> On 06/26/2018 09:14 PM, Eduardo Habkost wrote:
> > Instead of treating dockerfile contents as byte sequences, always
> > open dockerfiles in text mode and treat it as text.
> >
> > This is not strictly required to make the script compatible with
> > Python 3, but it's a simpler and safer way than opening
> > dockerfiles in binary mode and decoding the data data later.
>
> s/data data/data/
Thanks.
>
> >
> > To make the code compatible with both Python 2 and 3, use
> > io.open(), which accepts a 'encoding' argument on both versions.
>
> How does this compare to the recent change to the QAPI generators in commit
> de685ae5e? Should we be trying to use similar mechanisms in both places?
We could do the same and use io.open(..., encoding='utf-8')
unconditionally on QAPI too, but it may be harder because of its
usage of insinstance() and the 'str' type[1] everywhere.
One solution I considered on QAPI was using
'__future__.unicode_literals' and the 'builtins.str' type from
python-future, but I don't think QAPI's specific case justify
adding a new build dependency on Python 2.7 hosts.
Adding type annotations to the QAPI code may help us sort out the
mess more easily.
[1] 'str' on Python 2.7 is more similar to the 'bytes' type on
Python 3, but io.open(..., encoding=...) on Python 2.7
returns 'unicode' objects (that that are more similar to the
native 'str' type from Python 3).
--
Eduardo
- [Qemu-devel] [PATCH 0/6] docker: Port to Python 3, Eduardo Habkost, 2018/06/26
- [Qemu-devel] [PATCH 1/6] docker: Use BytesIO instead of StringIO, Eduardo Habkost, 2018/06/26
- [Qemu-devel] [PATCH 2/6] docker: Always return int on run(), Eduardo Habkost, 2018/06/26
- [Qemu-devel] [PATCH 3/6] docker: Add type annotations, Eduardo Habkost, 2018/06/26
- [Qemu-devel] [PATCH 4/6] docker: Use os.environ.items() instead of .iteritems(), Eduardo Habkost, 2018/06/26
- [Qemu-devel] [PATCH 5/6] docker: Make _get_so_libs() work on Python 3, Eduardo Habkost, 2018/06/26
- [Qemu-devel] [PATCH 6/6] docker: Open dockerfiles in text mode, Eduardo Habkost, 2018/06/26