Skip to content

Conversation

@fw-bot
Copy link
Contributor

@fw-bot fw-bot commented Jul 30, 2025

Forward-Port-Of: #220858
Forward-Port-Of: #219270

@robodoo
Copy link
Contributor

robodoo commented Jul 30, 2025

Pull request status dashboard

@robodoo robodoo added the forwardport This PR was created by @fw-bot label Jul 30, 2025
@fw-bot
Copy link
Contributor Author

fw-bot commented Jul 30, 2025

@xmo-odoo this PR targets master and is the last of the forward-port chain.

To merge the full chain, use

@robodoo r+

More info at https://github.com/odoo/odoo/wiki/Mergebot#forward-port

@fw-bot
Copy link
Contributor Author

fw-bot commented Jul 30, 2025

@xmo-odoo this PR was modified / updated and has become a normal PR. It must be merged directly.

@C3POdoo C3POdoo requested review from a team, HydrionBurst, Julien00859 and rco-odoo and removed request for a team July 30, 2025 09:42
@xmo-odoo xmo-odoo force-pushed the master-17.0-trixie-compat-xmo-453157-fw branch from 96418a9 to a7598fa Compare July 30, 2025 10:17
@C3POdoo C3POdoo requested review from a team, BastienFafchamps and aab-odoo and removed request for a team July 31, 2025 07:36
@xmo-odoo xmo-odoo force-pushed the master-17.0-trixie-compat-xmo-453157-fw branch 8 times, most recently from 5cbeacc to 0fc2d23 Compare August 1, 2025 07:59
@xmo-odoo xmo-odoo force-pushed the master-17.0-trixie-compat-xmo-453157-fw branch from f915a88 to ef28483 Compare August 1, 2025 10:50
`importlib.metadata.version` was made final (non-provisional) in
Python 3.10 which is the minver for odoo 18 so no need for a
conditional.

X-original-commit: 5880b2f
When 3.11 added PEP 657 fine-grained error locations, squiggles were
already possible[^1] but apparently we missed that in the cleanup
regex because those didn't show up in the messages we cared about.

With Python 3.13's improvements (sic...)[^2] this is not the case
anymore, and the tracebacks from testing the test suite do get a bunch
of squiggles which we need to learn to clean.

[^1]: https://docs.python.org/3/whatsnew/3.11.html#whatsnew311-pep657
[^2]: https://docs.python.org/3/whatsnew/3.13.html#improved-error-messages

X-original-commit: c1019cf
Some libraries need to be bumped to be compatible with Python 3.13 (as
used in Trixie). In that case we update the requirements to the Trixie
version if possible, even if a lower version would be compatible with
3.13 itself.

- babel needs to be at least [2.11 to avoid usage of cgi][2] removed
  from 3.13
- freezegun needs to be [at least 1.5.0][3] to not call the
  now-removed `uuid._load_system_functions()`
- trixie ships gevent 24.11.1 and greenlet 3.1.0, but upstream [gevent
  24.11.1 requires greenlet 3.1.1][1] so basing the requirements off
  of trixie doesn't even install
- zeep needs to be [at least 4.3.0][4] to not use the `cgi` module

[1]: https://github.com/gevent/gevent/blob/24.11.1/setup.py#L200-L214
[2]: https://babel.pocoo.org/en/latest/changelog.html#version-2-11-0
[3]: spulec/freezegun#534
[4]: mvantellingen/python-zeep#1364

X-original-commit: a05a0c0
Need to accept and forward size parameters in `addBlankPage`, used
by a test for some reason.

X-original-commit: b950ed8
In that case Werkzeug 3.0.4 and later will drop the entire
name (following pallets/werkzeug#2939, cf pallets/werkzeug#3032),
we'll end up with a field named `None` on the python side, and then
dispatching will blow up because `None` is not a valid kwarg.

The exact semantics of that case are unclear (see also
curl/curl#7789), my reading is that [RFC 7578][1] specifies
percent-encoding and thus that should be used when encoding and
decoding, and `\` should be irrelevant because it's neither `%` nor
`"` so it's not a metacharacter for multipart/form-data headers.

However the [whatwg living standard][2] rejects full blown
percent-encoding, and instead uses percent-encoding on just a highly
restricted set of inputs (which includes neither `\` nor `%`).

And while it seems like we should be able to ignore RFC 6266 (the
content-disposition header) who's to say that there are no real-world
deployments which follow its strictures?

Meh.

[1]: https://datatracker.ietf.org/doc/html/rfc7578#section-2
[2]: https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#multipart-form-data

X-original-commit: 715950c
CET is a timezone abbreviation, which trixie apparently
removed (alongside legacy timezones?): on runbot trying to resolve it
triggers

    pytz.exceptions.UnknownTimeZoneError: 'CET'

which was then silently suppressed by `context_timestamp` because
that's fun.

Replace the CET abbreviation by the corresponding synthetic Etc
timezone. Alternatively we could also use a real timezone with the
same offset e.g. Africa/Kinshasa.
The `display_name` of a server history contains babel-formatted
data. As babel versions get updated (and we get newer CLDR versions)
the exact whitespace can vary.

In `test_03_server_action_code_history_wizard` this fails in
`assertRecordValues` which is a generic method, we do not want to slow
*that* down by normalising whitespace on every char field involved in
this. Instead, add a new "value normaliser" type which can be used on
the expectation side.
@xmo-odoo xmo-odoo force-pushed the master-17.0-trixie-compat-xmo-453157-fw branch from ef28483 to a7165e6 Compare August 1, 2025 11:38
@xmo-odoo
Copy link
Collaborator

xmo-odoo commented Aug 1, 2025

@robodoo r+

@robodoo
Copy link
Contributor

robodoo commented Aug 1, 2025

@xmo-odoo 'ci/runbot' failed on this reviewed PR.

1 similar comment
@robodoo
Copy link
Contributor

robodoo commented Aug 1, 2025

@xmo-odoo 'ci/runbot' failed on this reviewed PR.

@robodoo
Copy link
Contributor

robodoo commented Aug 1, 2025

@xmo-odoo 'ci/l10n' failed on this reviewed PR.

robodoo pushed a commit that referenced this pull request Aug 4, 2025
X-original-commit: a178f3c
Part-of: #221165
Related: odoo/enterprise#91325
Signed-off-by: Xavier Morel (xmo) <[email protected]>
robodoo pushed a commit that referenced this pull request Aug 4, 2025
`importlib.metadata.version` was made final (non-provisional) in
Python 3.10 which is the minver for odoo 18 so no need for a
conditional.

X-original-commit: 5880b2f
Part-of: #221165
Related: odoo/enterprise#91325
Signed-off-by: Xavier Morel (xmo) <[email protected]>
robodoo pushed a commit that referenced this pull request Aug 4, 2025
When 3.11 added PEP 657 fine-grained error locations, squiggles were
already possible[^1] but apparently we missed that in the cleanup
regex because those didn't show up in the messages we cared about.

With Python 3.13's improvements (sic...)[^2] this is not the case
anymore, and the tracebacks from testing the test suite do get a bunch
of squiggles which we need to learn to clean.

[^1]: https://docs.python.org/3/whatsnew/3.11.html#whatsnew311-pep657
[^2]: https://docs.python.org/3/whatsnew/3.13.html#improved-error-messages

X-original-commit: c1019cf
Part-of: #221165
Related: odoo/enterprise#91325
Signed-off-by: Xavier Morel (xmo) <[email protected]>
robodoo pushed a commit that referenced this pull request Aug 4, 2025
Some libraries need to be bumped to be compatible with Python 3.13 (as
used in Trixie). In that case we update the requirements to the Trixie
version if possible, even if a lower version would be compatible with
3.13 itself.

- babel needs to be at least [2.11 to avoid usage of cgi][2] removed
  from 3.13
- freezegun needs to be [at least 1.5.0][3] to not call the
  now-removed `uuid._load_system_functions()`
- trixie ships gevent 24.11.1 and greenlet 3.1.0, but upstream [gevent
  24.11.1 requires greenlet 3.1.1][1] so basing the requirements off
  of trixie doesn't even install
- zeep needs to be [at least 4.3.0][4] to not use the `cgi` module

[1]: https://github.com/gevent/gevent/blob/24.11.1/setup.py#L200-L214
[2]: https://babel.pocoo.org/en/latest/changelog.html#version-2-11-0
[3]: spulec/freezegun#534
[4]: mvantellingen/python-zeep#1364

X-original-commit: a05a0c0
Part-of: #221165
Related: odoo/enterprise#91325
Signed-off-by: Xavier Morel (xmo) <[email protected]>
robodoo pushed a commit that referenced this pull request Aug 4, 2025
Need to accept and forward size parameters in `addBlankPage`, used
by a test for some reason.

X-original-commit: b950ed8
Part-of: #221165
Related: odoo/enterprise#91325
Signed-off-by: Xavier Morel (xmo) <[email protected]>
robodoo pushed a commit that referenced this pull request Aug 4, 2025
In that case Werkzeug 3.0.4 and later will drop the entire
name (following pallets/werkzeug#2939, cf pallets/werkzeug#3032),
we'll end up with a field named `None` on the python side, and then
dispatching will blow up because `None` is not a valid kwarg.

The exact semantics of that case are unclear (see also
curl/curl#7789), my reading is that [RFC 7578][1] specifies
percent-encoding and thus that should be used when encoding and
decoding, and `\` should be irrelevant because it's neither `%` nor
`"` so it's not a metacharacter for multipart/form-data headers.

However the [whatwg living standard][2] rejects full blown
percent-encoding, and instead uses percent-encoding on just a highly
restricted set of inputs (which includes neither `\` nor `%`).

And while it seems like we should be able to ignore RFC 6266 (the
content-disposition header) who's to say that there are no real-world
deployments which follow its strictures?

Meh.

[1]: https://datatracker.ietf.org/doc/html/rfc7578#section-2
[2]: https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#multipart-form-data

X-original-commit: 715950c
Part-of: #221165
Related: odoo/enterprise#91325
Signed-off-by: Xavier Morel (xmo) <[email protected]>
robodoo pushed a commit that referenced this pull request Aug 4, 2025
CET is a timezone abbreviation, which trixie apparently
removed (alongside legacy timezones?): on runbot trying to resolve it
triggers

    pytz.exceptions.UnknownTimeZoneError: 'CET'

which was then silently suppressed by `context_timestamp` because
that's fun.

Replace the CET abbreviation by the corresponding synthetic Etc
timezone. Alternatively we could also use a real timezone with the
same offset e.g. Africa/Kinshasa.

Part-of: #221165
Related: odoo/enterprise#91325
Signed-off-by: Xavier Morel (xmo) <[email protected]>
robodoo pushed a commit that referenced this pull request Aug 4, 2025
The `display_name` of a server history contains babel-formatted
data. As babel versions get updated (and we get newer CLDR versions)
the exact whitespace can vary.

In `test_03_server_action_code_history_wizard` this fails in
`assertRecordValues` which is a generic method, we do not want to slow
*that* down by normalising whitespace on every char field involved in
this. Instead, add a new "value normaliser" type which can be used on
the expectation side.

Part-of: #221165
Related: odoo/enterprise#91325
Signed-off-by: Xavier Morel (xmo) <[email protected]>
robodoo added a commit that referenced this pull request Aug 4, 2025
closes #221165

Forward-port-of: #220858
Forward-port-of: #219270
Related: odoo/enterprise#91325
Signed-off-by: Xavier Morel (xmo) <[email protected]>
@robodoo robodoo closed this Aug 4, 2025
@robodoo robodoo added the 18.5 label Aug 4, 2025
@fw-bot fw-bot deleted the master-17.0-trixie-compat-xmo-453157-fw branch August 11, 2025 12:21
@xmo-odoo xmo-odoo added 19.0 and removed 18.5 labels Nov 26, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

19.0 forwardport This PR was created by @fw-bot

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants