Hi Kakuma-San,

On 2016年06月07日 15:07, fumihiko kakuma wrote:
> Hi Iwase-san,
> 
> On Tue, 7 Jun 2016 09:35:27 +0900
> Iwase Yusuke <[email protected]> wrote:
> 
>> Hi Kakuma-San,
>>
>> Thank you for reviewing my patch.
>>
>>
>> On 2016年06月07日 08:30, fumihiko kakuma wrote:
>>> On Fri,  3 Jun 2016 13:20:05 +0900
>>> IWASE Yusuke <[email protected]> wrote:
>>>
>>>> diff --git a/ryu/services/protocols/bgp/api/base.py 
>>>> b/ryu/services/protocols/bgp/api/base.py
>>>> index 489e318..d0c0d79 100644
>>>> --- a/ryu/services/protocols/bgp/api/base.py
>>>> +++ b/ryu/services/protocols/bgp/api/base.py
>>>> @@ -208,7 +208,7 @@ def call(symbol, **kwargs):
>>>>        LOG.info("API method %s called with args: %s", symbol, str(kwargs))
>>>>
>>>>        # TODO(PH, JK) improve the way api function modules are loaded
>>>> -    import all  # noqa
>>>> +    from . import all  # noqa
>>>>        if not is_call_registered(symbol):
>>>>            message = 'Did not find any method registered by symbol %s' % 
>>>> symbol
>>>>            raise MethodNotFound(message)
>>>
>>> It may be better to add "from __future__ import absolute_import" statement
>>> to enforce explicit relative imports.
>>
>> Yes, I think it's better.
>> But this statement takes effect only the module which is defined,
>> so, in the other module without this statement, it has no effect.
>>
>> Does anyone know how to globally enforce the explicit relative imports?
>>
> 
> Unfortunately it seems that there is not such a way to me.
> But the following tool may be usuful.
> 
> $ sudo pip install future
> $ futurize -f libfuturize.fixes.fix_absolute_import ryu/
> 
> This will add "absolute_import" statement to all files under the specified 
> directory

Thanks a lot! I'll try it!

> 
> 
>>>
>>>> diff --git a/ryu/services/protocols/bgp/utils/circlist.py 
>>>> b/ryu/services/protocols/bgp/utils/circlist.py
>>>> index d22ec21..4a04f4f 100644
>>>> --- a/ryu/services/protocols/bgp/utils/circlist.py
>>>> +++ b/ryu/services/protocols/bgp/utils/circlist.py
>>>> @@ -13,7 +13,9 @@
>>>>    # See the License for the specific language governing permissions and
>>>>    # limitations under the License.
>>>>
>>>> -from six.moves import intern
>>>> +import six
>>>> +if six.PY3:
>>>> +    from sys import intern
>>>
>>> Is this intended to work with six>=1.4.0 ?
>>
>> Sorry, I mistook.
>> The existing code works correctly.
>>
>> (py35) $ pip show six
>> ---
>> Metadata-Version: 2.0
>> Name: six
>> Version: 1.10.0
>> Summary: Python 2 and 3 compatibility utilities
>> Home-page: http://pypi.python.org/pypi/six/
>> ...
>> (py35) $
>> (py35) $ python
>> Python 3.5.1+ (default, Mar 30 2016, 22:46:26)
>> [GCC 5.3.1 20160330] on linux
>> Type "help", "copyright", "credits" or "license" for more information.
>>>>> from six.moves import intern
>>
> 
> six.moves for intern seems to be supported by 1.8.0 and later version
> of six from the following.
> (sorry, I don't check about a minor version.)
> 
> $ pip freeze | grep six
> six==1.7.0
> $ python
> Python 2.7.6 (default, Mar 22 2014, 22:59:56)
> [GCC 4.8.2] on linux2
> Type "help", "copyright", "credits" or "license" for more information.
>>>> from six.moves import intern
> Traceback (most recent call last):
>    File "<stdin>", line 1, in <module>
> ImportError: cannot import name intern
>>>>
> 
> 
> $ pip freeze | grep six
> six==1.8.0
> $ python
> Python 2.7.6 (default, Mar 22 2014, 22:59:56)
> [GCC 4.8.2] on linux2
> Type "help", "copyright", "credits" or "license" for more information.
>>>> from six.moves import intern
>>>>
> 
> 
> And ryu has the following requirement for six.
> 
> $ grep six tools/pip-requires
> six>=1.4.0
> $
> 
> On the other hand, a six package version in ubuntu 14.04 lts is 1.5.2-1.
> 
> $ lsb_release -a
> No LSB modules are available.
> Distributor ID: Ubuntu
> Description:    Ubuntu 14.04.2 LTS
> Release:        14.04
> Codename:       trusty
> $ dpkg -l python-six
> Desired=Unknown/Install/Remove/Purge/Hold
> | Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend
> |/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
> ||/ Name              Version       Architecture  Description
> +++-=================-=============-=============-========================================
> ii  python-six        1.5.2-1       all           Python 2 and 3 
> compatibility library (Py
> $
> 
> If we use 1.8.0 and later version of six installed from pip, it will be ok.
> And tools/pip-requires should be updated.

On Ubuntu 16.04 LTS, the python-six version is upgraded to "1.10.0-3".

$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 16.04 LTS
Release:        16.04
Codename:       xenial

$ dpkg -l python-six
Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend
|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
||/ Name            Version      Architecture Description
+++-===============-============-============-====================================
ii  python-six      1.10.0-3     all          Python 2 and 3 compatibility 
library

Hence, the previous Ubuntu LTS users are required to install six through pip 
though,
the latest Ubuntu LTS users are not.

Do you think we can update the six version in "tools/pip-requires" to 
"six>=1.8.0" now?
Is it not suitable?
(I think it depends on the Ubuntu version which we should support, though)

Thanks,
Iwase

> 
> 
>> I fixed this because PyCharm code inspection said:
>>     Cannot find reference 'moves' in 'six.py' (at line 16)
>> but this was due to the dynamic dispatch of 'six.moves'.
>>
>>
>> I'll update my patches!
>>
>> Thanks,
>> Iwase
> 

------------------------------------------------------------------------------
What NetFlow Analyzer can do for you? Monitors network bandwidth and traffic
patterns at an interface-level. Reveals which users, apps, and protocols are 
consuming the most bandwidth. Provides multi-vendor support for NetFlow, 
J-Flow, sFlow and other flows. Make informed decisions using capacity 
planning reports. https://ad.doubleclick.net/ddm/clk/305295220;132659582;e
_______________________________________________
Ryu-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/ryu-devel

Reply via email to