New submission from Sandeep Subramanian <sand...@mercari.com>: 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 ---------- assignee: docs@python components: Documentation messages: 384476 nosy: docs@python, sandeep2 priority: normal severity: normal status: open title: docs: struct: clarify struct caching behaviour type: enhancement versions: Python 3.10, Python 3.7, Python 3.8, Python 3.9 _______________________________________ Python tracker <rep...@bugs.python.org> <https://bugs.python.org/issue42836> _______________________________________ _______________________________________________ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com