[ 
https://issues.apache.org/jira/browse/BEAM-3981?focusedWorklogId=86702&page=com.atlassian.jira.plugin.system.issuetabpanels:worklog-tabpanel#worklog-86702
 ]

ASF GitHub Bot logged work on BEAM-3981:
----------------------------------------

                Author: ASF GitHub Bot
            Created on: 02/Apr/18 18:52
            Start Date: 02/Apr/18 18:52
    Worklog Time Spent: 10m 
      Work Description: RobbeSneyders opened a new pull request #4990: 
[BEAM-3981] Futurize and fix python 2 compatibility for coders subpackage
URL: https://github.com/apache/beam/pull/4990
 
 
   This pull request is the result of applying the [automatic conversion 
provided by the future 
package](http://python-future.org/overview.html#automatic-conversion-to-py2-3-compatible-code)
 to the coders subpackage, after which all python 2 errors were fixed. The 
result is python 3 styled code with python 2 compatibility.
   This pull request is the first of a series in which all subpackages will be 
updated. We should therefore discuss the chosen approach, so we can agree on 
one strategy to apply throughout.
   
   The approach I've taken, is to focus on writing python 3 code with python 2 
compatibility:
   
   - The future package provides tools to forward-port our code, while the six 
package focuses more on backporting. I've therefore replaced six with future 
everywhere it was already used.
   
   - One of the biggest problems in porting python 2 code to python 3, is the 
changed handling of strings and bytes. To get a consistent behavior between 
versions, I have tried to rewrite everything to use the `str` and `bytes` type 
provided by the future.builtins package. I have not used the `from __future__ 
import unicode_literals` import since [its changes are too implicit and 
introduces a risk of subtle regressions on python 
2](http://python-future.org/unicode_literals.html)
   
   I started out with running futurize on the complete coders subpackage and 
then tried to fix the errors introduced by the automatic conversion. This 
however proved to be difficult, because it's not obvious where certain errors 
were introduced. 
   I therefore switched to a per module approach, in which I first updated all 
non-test modules. This way, I could check if everything still ran with the 
native python 2 tests. Afterwards, I updated all test modules.
   
   This pull request also contains updates to run_pylint.sh and tox.ini, so 
pylint can be run with the --py3k parameter. This should help avoid regression 
between the different steps of the update process.

----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on GitHub and use the
URL above to go to the specific comment.
 
For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


Issue Time Tracking
-------------------

            Worklog Id:     (was: 86702)
            Time Spent: 10m
    Remaining Estimate: 0h

> Futurize and fix python 2 compatibility for coders package
> ----------------------------------------------------------
>
>                 Key: BEAM-3981
>                 URL: https://issues.apache.org/jira/browse/BEAM-3981
>             Project: Beam
>          Issue Type: Sub-task
>          Components: sdk-py-core
>            Reporter: Robbe
>            Assignee: Ahmet Altay
>            Priority: Major
>          Time Spent: 10m
>  Remaining Estimate: 0h
>
> Run automatic conversion with futurize tool on coders subpackage and fix 
> python 2 compatibility. This prepares the subpackage for python 3 support.



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to