[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