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