Conversation
When python expression is evaluated in odoo form an action or qweb, we are checking the opcodes generated by the evaluation of this code. We do such a verification, because the code from actions and templates can be written by someone having not access to the server and we don't want to let them perform actions out of the scope of their database. In python 3.11, some opcodes from previous versions of Python have been renamed, grouped or sepcified. There are also new ones that have been introduce. In this PR, we are whitelisting the new ones that are needed by odoo to properly work in this version of Python.
As getdefaultlocale is deprecated in 3.11 in favor of getlocale which is available since at least 3.0.
There was a problem hiding this comment.
Works for me, only remark would be to explain more clearly what the issue is in 89abe6713a18cc1e914846dbd2a1fbd5af3152d7 because that one's not exactly clear.
Also might want to add a note to the "sampling from a set" filterwarning that it really only applies to 3.9: bpo-40325 was implemented in 3.9, bpo-42470 was only backported to 3.10, so 3.10 should not trigger the warning on false positives.
Or maybe add a version check / gate in netsvc.py directly, and only filter out the warning when running on 3.9?
f0d7a3d to
638f4d2
Compare
|
@xmo-odoo I applied the changes as suggested. I hope the explanation in 3871beac is clearer. |
It's ok, I'd have liked an explanation as to why pkgutil doesn't find the thing it did find before, for when it's the year 2047 and we've no idea what that was about and if we still need to care. |
Since python/cpython#18544, unittest mock is not able to properly find the "odoo.tools.config". When trying to patch the `options` dictionnary, it leads to `AttributeError: module 'odoo.tools.config' has no attribute 'options'` In order to have the tests working in python <= 3.11, we have to import the config module and patch the options in place.
638f4d2 to
e06daed
Compare
Since Python 3.11, sampling from a set deprecated, the population must be a sequence. This commit applies the suggested fix. Also, the filtering of the deprecation warning about sampling from set can be disabled when the python version is not 3.9. This warning was wrongly triggered since 3.9 because recordsets are bot a sequence and a set. This was fixed in python 3.10, see https://bugs.python.org/issue42470
e06daed to
f5a72a0
Compare
|
@robodoo override=ci/security r+ |
|
robodoo rebase-ff r+ |
|
Merge method set to rebase and fast-forward. |
|
I'm sorry, @d-fence: this PR is already reviewed, reviewing it again is useless. |
When python expression is evaluated in odoo form an action or qweb, we are checking the opcodes generated by the evaluation of this code. We do such a verification, because the code from actions and templates can be written by someone having not access to the server and we don't want to let them perform actions out of the scope of their database. In python 3.11, some opcodes from previous versions of Python have been renamed, grouped or sepcified. There are also new ones that have been introduce. In this PR, we are whitelisting the new ones that are needed by odoo to properly work in this version of Python. Part-of: #112317
As getdefaultlocale is deprecated in 3.11 in favor of getlocale which is available since at least 3.0. Part-of: #112317
Since python/cpython#18544, unittest mock is not able to properly find the "odoo.tools.config". When trying to patch the `options` dictionnary, it leads to `AttributeError: module 'odoo.tools.config' has no attribute 'options'` In order to have the tests working in python <= 3.11, we have to import the config module and patch the options in place. Part-of: #112317
When python expression is evaluated in odoo form an action or qweb, we are checking the opcodes generated by the evaluation of this code. We do such a verification, because the code from actions and templates can be written by someone having not access to the server and we don't want to let them perform actions out of the scope of their database. In python 3.11, some opcodes from previous versions of Python have been renamed, grouped or sepcified. There are also new ones that have been introduce. In this PR, we are whitelisting the new ones that are needed by odoo to properly work in this version of Python. Part-of: odoo#112317
As getdefaultlocale is deprecated in 3.11 in favor of getlocale which is available since at least 3.0. Part-of: odoo#112317
Since python/cpython#18544, unittest mock is not able to properly find the "odoo.tools.config". When trying to patch the `options` dictionnary, it leads to `AttributeError: module 'odoo.tools.config' has no attribute 'options'` In order to have the tests working in python <= 3.11, we have to import the config module and patch the options in place. Part-of: odoo#112317
Since Python 3.11, sampling from a set deprecated, the population must be a sequence. This commit applies the suggested fix. Also, the filtering of the deprecation warning about sampling from set can be disabled when the python version is not 3.9. This warning was wrongly triggered since 3.9 because recordsets are bot a sequence and a set. This was fixed in python 3.10, see https://bugs.python.org/issue42470 closes odoo#112317 Signed-off-by: Xavier Morel (xmo) <xmo@odoo.com>
When python expression is evaluated in odoo form an action or qweb, we are checking the opcodes generated by the evaluation of this code. We do such a verification, because the code from actions and templates can be written by someone having not access to the server and we don't want to let them perform actions out of the scope of their database. In python 3.11, some opcodes from previous versions of Python have been renamed, grouped or sepcified. There are also new ones that have been introduce. In this PR, we are whitelisting the new ones that are needed by odoo to properly work in this version of Python. Part-of: odoo#112317
When python expression is evaluated in odoo form an action or qweb, we are checking the opcodes generated by the evaluation of this code. We do such a verification, because the code from actions and templates can be written by someone having not access to the server and we don't want to let them perform actions out of the scope of their database. In python 3.11, some opcodes from previous versions of Python have been renamed, grouped or sepcified. There are also new ones that have been introduce. In this PR, we are whitelisting the new ones that are needed by odoo to properly work in this version of Python. Part-of: odoo#112317
When python expression is evaluated in odoo form an action or qweb, we are checking the opcodes generated by the evaluation of this code. We do such a verification, because the code from actions and templates can be written by someone having not access to the server and we don't want to let them perform actions out of the scope of their database. In python 3.11, some opcodes from previous versions of Python have been renamed, grouped or sepcified. There are also new ones that have been introduce. In this PR, we are whitelisting the new ones that are needed by odoo to properly work in this version of Python. Part-of: odoo#112317
When python expression is evaluated in odoo form an action or qweb, we are checking the opcodes generated by the evaluation of this code. We do such a verification, because the code from actions and templates can be written by someone having not access to the server and we don't want to let them perform actions out of the scope of their database. In python 3.11, some opcodes from previous versions of Python have been renamed, grouped or sepcified. There are also new ones that have been introduce. In this PR, we are whitelisting the new ones that are needed by odoo to properly work in this version of Python. Part-of: odoo#112317

Since the next imminent release of Debian Bookworm will come with Python 3.11 as some other distros (like Fedora 37) this PR adapts Odoo 16.0 to work with Python 3.11.
Note:
This is an excerpt from this testing branch that was made to test against the Jammy and Bookworm distributions.