[openstack-dev] [Horizon] HACKING.rst and import standards

Akihiro MOTOKI motoki at da.jp.nec.com
Fri Jun 7 07:05:06 UTC 2013


Strongly agreed.

>     1. Does it make sense to implement all imports uniformly like that is done in other projects?
>    
>     Something like this would be nice:
>    
>     from quantum.api.extensions import (
>          ExtensionMiddleware,
>          PluginAwareExtensionManager,
>     )

A topic not discussed is module-level import vs object-level import.
While other core projects only use module-level import, Horizon uses both
and object-level imports are widely used like below.

I would like to use module-level import.
It reduces the number of imports and it has consistency with other project.

What do you think about it?

Thanks.
Akihiro

>>>>> Date: Thu, 6 Jun 2013 13:02:30 -0700
>>>>> From: Matt Joyce <matt.joyce at cloudscaling.com>
>>>>> Subject: Re: [openstack-dev] [Horizon] HACKING.rst and import standards
> 
> Huge +1
> 
> On Jun 6, 2013 12:03 PM, "Gabriel Hurley" <Gabriel.Hurley at nebula.com> wrote:
> 
>     I suggest that we start with enabling H301 (one import per line), H303 (no wildcards), and
>     H306 (alphabetical). I’m honestly surprised by how many violations there are for that last one
>     since we generally try to do that already. Obviously it’ll be a sizable patch to make this
>     happen, but it’d be great to get it done. Please file a bug/blueprint for it.
>    
>      
>    
>     Thanks!
>    
>      
>    
>     -          Gabriel
>    
>      
>    
>     From: Joe Gordon [mailto:joe.gordon0 at gmail.com]
>     Sent: Thursday, June 06, 2013 9:09 AM
>     To: OpenStack Development Mailing List
>     Subject: Re: [openstack-dev] [Horizon] HACKING.rst and import standards
>    
>      
>    
>     Although there is no HACKING.rst in Horizon, it does use the hacking plugin to flake8, just
>     that the tests are all disabled.(https://github.com/openstack/horizon/blob/master/tox.ini#L40
>     ).  You can start gating on one import per line (H301) and alphabetical order (H306), by
>     fixing the issues and re-enabling the checks in tox.ini.
>    
>      
>    
>     'flake8 --statistics --select H3' shows the number off issues:
>    
>      
>    
>     194     H301  one import per line
>    
>     16      H302  import only modules.'from collections import Sequence' does not import a module
>    
>     7       H303  No wildcard (*) import.
>    
>     131     H304  No relative imports. 'from .views import UsageView' is a relative import
>    
>     179     H306  imports not in alphabetical order (django.conf.urls.static.static,
>     django.conf.settings)
>    
>      
>    
>      
>    
>      
>    
>      
>    
>     On Thu, Jun 6, 2013 at 3:42 AM, Dolph Mathews <dolph.mathews at gmail.com> wrote:
>    
>     +1; that's why alphabetical imports and one import per line!
> 
>     On Thursday, June 6, 2013, Bhandaru, Malini K wrote:
>    
>     +1
>    
>     Anything to avoid/ease manual merge.  Good job describing problem Tatiana.
>     Malini
>    
>     -----Original Message-----
>     From: Tatiana V. Mazur [mailto:tmazur at mirantis.com]
>     Sent: Thursday, June 06, 2013 1:44 AM
>     To: openstack-dev at lists.openstack.org
>     Subject: [openstack-dev] [Horizon] HACKING.rst and import standards
>    
>     Hello!
>    
>     Recently I had to upload some patch sets and rebase some branches for this purpose. It appears
>     that rebasing on changed master branch is not a trivial task. You know, when nearly each
>     Horizon module includes a total mash of comma separated imports, that's really not a trivial
>     task.
>     Problems start when you add some method from the same module in an existing import statement
>     like here:
>    
>     from .views import (IndexView, CreateView, EditAttachmentsView, DetailView,
>                          CreateSnapshotView)
>    
>     or even here:
>    
>     from .views import IndexView
>     from .views import AddPoolView, AddMemberView, AddMonitorView, AddVipView from .views import
>     (UpdatePoolView, UpdateMemberView,
>                          UpdateVipView, UpdateMonitorView) from .views import PoolDetailsView,
>     VipDetailsView from .views import MemberDetailsView, MonitorDetailsView from .views import
>     AddPMAssociationView, DeletePMAssociationView
>    
>     All patch sets including this kind of changes can't be merged automatically. You have to
>     rebase manually, just because of a few imports. I was wondering if there is a local Horizon
>     standard for importing and tried to find it in HACKING.rst (like all standards are described
>     in other projects). And it appears there's no HACKING.rst in Horizon! That's why I have a few
>     questions:
>    
>     1. Does it make sense to implement all imports uniformly like that is done in other projects?
>    
>     Something like this would be nice:
>    
>     from quantum.api.extensions import (
>          ExtensionMiddleware,
>          PluginAwareExtensionManager,
>     )
>     from quantum.common import config
>     from quantum.extensions import (
>          credential,
>          qos,
>     )
>    
>     Or just one import per line. That would solve merging problems and code would look much
>     better.
>    
>     2. Does it make sense to add HACKING.rst in Horizon?
>    
>     I think yes. We could describe standards there and we would never get such kind of rebase and
>     merge problems.
>    
>     What do you think about it? I could do it if you find it reasonable .
> 
>     Kind regards,
>     Tatiana
>    
>     _______________________________________________
>     OpenStack-dev mailing list
>     OpenStack-dev at lists.openstack.org
>     http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev
>    
>     _______________________________________________
>     OpenStack-dev mailing list
>     OpenStack-dev at lists.openstack.org
>     http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev
>    
>      
>    
>     --
>    
>      
>    
>     -Dolph
>    
>     _______________________________________________
>     OpenStack-dev mailing list
>     OpenStack-dev at lists.openstack.org
>     http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev
>    
>      
> 
>     _______________________________________________
>     OpenStack-dev mailing list
>     OpenStack-dev at lists.openstack.org
>     http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev
> 
> 



More information about the OpenStack-dev mailing list