Hi Iwase-san,

On Tue, 7 Jun 2016 16:33:46 +0900
Iwase Yusuke <[email protected]> wrote:

> >>
> >> 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!
> 

I forgot to add '-w' option. It writes back modified files.

> > 
> > 
> >>>
> >>>> 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 that it is OK.
Currently ryu requires some pip installed packages.
We also may need to use new version of six for an another compatibility.

> (I think it depends on the Ubuntu version which we should support, though)
> 

I agree with your thought.
I think that there are many users using ubuntu 14 lts.

Thanks,
kakuma

> 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
> > 

-- 
fumihiko kakuma <[email protected]>



------------------------------------------------------------------------------
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