oops, duplication ... I submitted changes to spec after got this info since it make sense to me ...
https://review.openstack.org/#/c/164229/ https://review.openstack.org/#/c/164234/ Best Regards! Kevin (Chen) Ji 纪 晨 Engineer, zVM Development, CSTL Notes: Chen CH Ji/China/IBM@IBMCN Internet: jiche...@cn.ibm.com Phone: +86-10-82454158 Address: 3/F Ring Building, ZhongGuanCun Software Park, Haidian District, Beijing 100193, PRC From: Alex Xu <sou...@gmail.com> To: "OpenStack Development Mailing List (not for usage questions)" <openstack-dev@lists.openstack.org> Date: 03/16/2015 02:53 AM Subject: Re: [openstack-dev] [nova] is it possible to microversion a static class method? 2015-03-16 9:48 GMT+08:00 Alex Xu <sou...@gmail.com>: 2015-03-13 19:10 GMT+08:00 Sean Dague <s...@dague.net>: On 03/13/2015 02:55 AM, Chris Friesen wrote: > On 03/12/2015 12:13 PM, Sean Dague wrote: >> On 03/12/2015 02:03 PM, Chris Friesen wrote: >>> Hi, >>> >>> I'm having an issue with microversions. >>> >>> The api_version() code has a comment saying "This decorator MUST appear >>> first (the outermost decorator) on an API method for it to work >>> correctly" >>> >>> I tried making a microversioned static class method like this: >>> >>> @wsgi.Controller.api_version("2.4") # noqa >>> @staticmethod >>> def _my_func(req, foo): >>> >>> and pycharm highlighted the api_version decorator and complained that >>> "This decorator will not receive a callable it may expect; the built-in >>> decorator returns a special object." >>> >>> Is this a spurious warning from pycharm? The pep8 checks don't >>> complain. >>> >>> If I don't make it static, then pycharm suggests that the method could >>> be static. >> >> *API method* >> >> This is not intended for use by methods below the top controller level. >> If you want conditionals lower down in your call stack pull the request >> version out yourself and use that. > > Both the original spec and doc/source/devref/api_microversions.rst > contain text talking about decorating a private method. The latter > gives this example: > > @api_version("2.1", "2.4") > def _version_specific_func(self, req, arg1): > pass > > @api_version(min_version="2.5") #noqa > def _version_specific_func(self, req, arg1): > pass > > def show(self, req, id): > .... common stuff .... > self._version_specific_func(req, "foo") > .... common stuff .... > > It's entirely possible that such a private method might not need to > reference "self", and could therefore be static, so I think it's a valid > question. That's a doc bug, we should change it. Actually it is not a bug. It's controversial point in the spec, but finally that was keep in the spec. http://specs.openstack.org/openstack/nova-specs/specs/kilo/approved/api-microversions.html The discussion at line 268 https://review.openstack.org/#/c/127127/7/specs/kilo/approved/api-microversions.rst Submit a patch for devref https://review.openstack.org/164555 Let see whether we can get agreement.... -Sean -- Sean Dague http://dague.net __________________________________________________________________________ OpenStack Development Mailing List (not for usage questions) Unsubscribe: openstack-dev-requ...@lists.openstack.org?subject:unsubscribe http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev __________________________________________________________________________ OpenStack Development Mailing List (not for usage questions) Unsubscribe: openstack-dev-requ...@lists.openstack.org?subject:unsubscribe http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev
__________________________________________________________________________ OpenStack Development Mailing List (not for usage questions) Unsubscribe: openstack-dev-requ...@lists.openstack.org?subject:unsubscribe http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev