tests/test_tags.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-)
email.policy was added in 3.6. Do not use it unless available.
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
---
tests/test_tags.py | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
diff --git a/tests/test_tags.py b/tests/test_tags.py
index a49a660..9ced996 100755
--- a/tests/test_tags.py
+++ b/tests/test_tags.py
@@ -55,7 +55,11 @@ class ImportTest(PatchewTestCase):
self.cli_import("0028-tags-need-8bit-encoding.mbox.gz")
self.cli_logout()
mbox = self.client.get('/QEMU/20181126152836.25379-1-rkagan@virtuozzo.com/mbox')
- parser = email.parser.BytesParser(policy=email.policy.SMTP)
+ try:
+ import email.policy
+ parser = email.parser.BytesParser(policy=email.policy.SMTP)
+ except ModuleNotFoundError:
+ parser = email.parser.BytesParser()
msg = parser.parsebytes(mbox.content)
payload = decode_payload(msg)
self.assertIn('SynICState *synic = get_synic(cs);', payload)
--
2.19.1
_______________________________________________
Patchew-devel mailing list
Patchew-devel@redhat.com
https://www.redhat.com/mailman/listinfo/patchew-devel
On Tue, Nov 27, 2018 at 01:45:34PM +0100, Paolo Bonzini wrote: > email.policy was added in 3.6. Do not use it unless available. According to Python documentation[1], email.policy is new in version 3.3. Isn't fair enough have compatibility with Python 3.3+? The documentation indicates that what have changed in 3.6 is the "default" message factory[2]. That seems not being touched by your patch. [1] - https://docs.python.org/3.3/library/email.policy.html [2] - https://docs.python.org/3.6/library/email.parser.html#email.parser.BytesParser > > Signed-off-by: Paolo Bonzini <pbonzini@redhat.com> > --- > tests/test_tags.py | 6 +++++- > 1 file changed, 5 insertions(+), 1 deletion(-) > > diff --git a/tests/test_tags.py b/tests/test_tags.py > index a49a660..9ced996 100755 > --- a/tests/test_tags.py > +++ b/tests/test_tags.py > @@ -55,7 +55,11 @@ class ImportTest(PatchewTestCase): > self.cli_import("0028-tags-need-8bit-encoding.mbox.gz") > self.cli_logout() > mbox = self.client.get('/QEMU/20181126152836.25379-1-rkagan@virtuozzo.com/mbox') > - parser = email.parser.BytesParser(policy=email.policy.SMTP) > + try: > + import email.policy > + parser = email.parser.BytesParser(policy=email.policy.SMTP) > + except ModuleNotFoundError: > + parser = email.parser.BytesParser() > msg = parser.parsebytes(mbox.content) > payload = decode_payload(msg) > self.assertIn('SynICState *synic = get_synic(cs);', payload) > -- > 2.19.1 > > _______________________________________________ > Patchew-devel mailing list > Patchew-devel@redhat.com > https://www.redhat.com/mailman/listinfo/patchew-devel -- Caio Carrara Software Engineer, Virt Team - Red Hat ccarrara@redhat.com _______________________________________________ Patchew-devel mailing list Patchew-devel@redhat.com https://www.redhat.com/mailman/listinfo/patchew-devel
On 27/11/18 14:08, Caio Carrara wrote: > On Tue, Nov 27, 2018 at 01:45:34PM +0100, Paolo Bonzini wrote: >> email.policy was added in 3.6. Do not use it unless available. > > According to Python documentation[1], email.policy is new in version > 3.3. Isn't fair enough have compatibility with Python 3.3+? > > The documentation indicates that what have changed in 3.6 is the > "default" message factory[2]. That seems not being touched by your > patch. Travis disagrees though: :( File "/home/travis/build/patchew-project/patchew/tests/test_tags.py", line 58, in test_mbox_with_8bit_tags parser = email.parser.BytesParser(policy=email.policy.SMTP) AttributeError: module 'email' has no attribute 'policy' on all of 3.3, 3.4 and 3.5. Paolo > [1] - https://docs.python.org/3.3/library/email.policy.html > [2] - https://docs.python.org/3.6/library/email.parser.html#email.parser.BytesParser > >> >> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com> >> --- >> tests/test_tags.py | 6 +++++- >> 1 file changed, 5 insertions(+), 1 deletion(-) >> >> diff --git a/tests/test_tags.py b/tests/test_tags.py >> index a49a660..9ced996 100755 >> --- a/tests/test_tags.py >> +++ b/tests/test_tags.py >> @@ -55,7 +55,11 @@ class ImportTest(PatchewTestCase): >> self.cli_import("0028-tags-need-8bit-encoding.mbox.gz") >> self.cli_logout() >> mbox = self.client.get('/QEMU/20181126152836.25379-1-rkagan@virtuozzo.com/mbox') >> - parser = email.parser.BytesParser(policy=email.policy.SMTP) >> + try: >> + import email.policy >> + parser = email.parser.BytesParser(policy=email.policy.SMTP) >> + except ModuleNotFoundError: >> + parser = email.parser.BytesParser() >> msg = parser.parsebytes(mbox.content) >> payload = decode_payload(msg) >> self.assertIn('SynICState *synic = get_synic(cs);', payload) >> -- >> 2.19.1 >> >> _______________________________________________ >> Patchew-devel mailing list >> Patchew-devel@redhat.com >> https://www.redhat.com/mailman/listinfo/patchew-devel > _______________________________________________ Patchew-devel mailing list Patchew-devel@redhat.com https://www.redhat.com/mailman/listinfo/patchew-devel
On Tue, Nov 27, 2018 at 02:52:53PM +0100, Paolo Bonzini wrote: > On 27/11/18 14:08, Caio Carrara wrote: > > On Tue, Nov 27, 2018 at 01:45:34PM +0100, Paolo Bonzini wrote: > >> email.policy was added in 3.6. Do not use it unless available. > > > > According to Python documentation[1], email.policy is new in version > > 3.3. Isn't fair enough have compatibility with Python 3.3+? > > > > The documentation indicates that what have changed in 3.6 is the > > "default" message factory[2]. That seems not being touched by your > > patch. > > Travis disagrees though: :( > > File "/home/travis/build/patchew-project/patchew/tests/test_tags.py", > line 58, in test_mbox_with_8bit_tags > parser = email.parser.BytesParser(policy=email.policy.SMTP) > AttributeError: module 'email' has no attribute 'policy' > > on all of 3.3, 3.4 and 3.5. So we need some help from Travis folks. I've built a fresh Python 3.3.7 on my machine and the policy module is there. ➜ bin git:(master) ./python Python 3.3.7 (default, Nov 27 2018, 15:10:34) [GCC 8.2.1 20181105 (Red Hat 8.2.1-5)] on linux Type "help", "copyright", "credits" or "license" for more information. ... from email import policy ... dir(policy) ['Compat32', 'EmailPolicy', 'HTTP', 'HeaderRegistry', 'Policy', 'SMTP', '__all__', '__builtins__', '__cached__', '__doc__', '__file__', '__initializing__', '__loader__', '__name__', '__package__', '_extend_docstrings', '_has_surrogates', 'compat32', 'default', 'strict'] ... Should we open a ticket? I did a quick search and couldn't find anything related with that. It's pretty specific. > > Paolo > > > [1] - https://docs.python.org/3.3/library/email.policy.html > > [2] - https://docs.python.org/3.6/library/email.parser.html#email.parser.BytesParser > > > >> > >> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com> > >> --- > >> tests/test_tags.py | 6 +++++- > >> 1 file changed, 5 insertions(+), 1 deletion(-) > >> > >> diff --git a/tests/test_tags.py b/tests/test_tags.py > >> index a49a660..9ced996 100755 > >> --- a/tests/test_tags.py > >> +++ b/tests/test_tags.py > >> @@ -55,7 +55,11 @@ class ImportTest(PatchewTestCase): > >> self.cli_import("0028-tags-need-8bit-encoding.mbox.gz") > >> self.cli_logout() > >> mbox = self.client.get('/QEMU/20181126152836.25379-1-rkagan@virtuozzo.com/mbox') > >> - parser = email.parser.BytesParser(policy=email.policy.SMTP) > >> + try: > >> + import email.policy > >> + parser = email.parser.BytesParser(policy=email.policy.SMTP) > >> + except ModuleNotFoundError: > >> + parser = email.parser.BytesParser() > >> msg = parser.parsebytes(mbox.content) > >> payload = decode_payload(msg) > >> self.assertIn('SynICState *synic = get_synic(cs);', payload) > >> -- > >> 2.19.1 > >> > >> _______________________________________________ > >> Patchew-devel mailing list > >> Patchew-devel@redhat.com > >> https://www.redhat.com/mailman/listinfo/patchew-devel > > > -- Caio Carrara Software Engineer, Virt Team - Red Hat ccarrara@redhat.com _______________________________________________ Patchew-devel mailing list Patchew-devel@redhat.com https://www.redhat.com/mailman/listinfo/patchew-devel
On 27/11/18 18:19, Caio Carrara wrote: > So we need some help from Travis folks. I've built a fresh Python 3.3.7 > on my machine and the policy module is there. > > ➜ bin git:(master) ./python > Python 3.3.7 (default, Nov 27 2018, 15:10:34) > [GCC 8.2.1 20181105 (Red Hat 8.2.1-5)] on linux > Type "help", "copyright", "credits" or "license" for more information. > ... from email import policy > ... dir(policy) > ['Compat32', 'EmailPolicy', 'HTTP', 'HeaderRegistry', 'Policy', 'SMTP', > '__all__', '__builtins__', '__cached__', '__doc__', '__file__', > '__initializing__', '__loader__', '__name__', '__package__', > '_extend_docstrings', '_has_surrogates', 'compat32', 'default', > 'strict'] > ... > > Should we open a ticket? I did a quick search and couldn't find > anything related with that. It's pretty specific. I found it, on older Python you must explicitly import email.parser and email.policy. Paolo _______________________________________________ Patchew-devel mailing list Patchew-devel@redhat.com https://www.redhat.com/mailman/listinfo/patchew-devel
© 2016 - 2023 Red Hat, Inc.