This issue tracker has been migrated to GitHub, and is currently read-only.
For more information, see the GitHub FAQs in the Python's Developer Guide.

Author uniq10
Recipients docs@python, uniq10
Date 2021-01-06.09:05:31
SpamBayes Score -1.0
Marked as misclassified Yes
Message-id <1609923931.89.0.0226570295473.issue42836@roundup.psfhosted.org>
In-reply-to
Content
As per docs in :https://docs.python.org/3.7/library/struct.html#struct.Struct

> The compiled versions of the most recent format strings passed to Struct and the module-level functions are cached, so programs that use only a few format strings needn’t worry about reusing a single Struct instance.

This statement seems to imply that the format string passed as `struct.Struct(format)` is also cached. This doesn't appear to be the case.

Only format strings passed to the module level functions seems to be cached.

`cache_struct_converter` at https://github.com/python/cpython/blob/v3.7.7/Modules/_struct.c#L2052 
appears to be used only in the top module level functions `pack` and `pack_into` and is *not* used in `Struct.__init__`.


Would it be better to change the doc to:

> The compiled versions of the most recent format strings passed to the module-level functions are cached, so programs that use only a few format strings needn’t worry about reusing a single Struct instance.

This issue was introduced by https://github.com/python/cpython/commit/3666b3c1f695a145adab1bf644c22e564e8eb0ee

and is present in every version since.

Refs:
https://github.com/python/cpython/pull/7700
https://bugs.python.org/issue33032
History
Date User Action Args
2021-01-06 09:05:31uniq10setrecipients: + uniq10, docs@python
2021-01-06 09:05:31uniq10setmessageid: <1609923931.89.0.0226570295473.issue42836@roundup.psfhosted.org>
2021-01-06 09:05:31uniq10linkissue42836 messages
2021-01-06 09:05:31uniq10create