From 4b80ef5432abe2cd72cf898e92927bb2273d179b Mon Sep 17 00:00:00 2001 From: Mark Dickinson Date: Sat, 12 Jun 2010 15:17:02 +0000 Subject: [PATCH] Issue #8973: Add __all__ to struct module, so that help(struct) correctly displays information for the struct.Struct class. --- Lib/struct.py | 11 +++++++++++ Misc/NEWS | 3 +++ Modules/_struct.c | 49 +++++++++++++++++++++++++++-------------------- 3 files changed, 42 insertions(+), 21 deletions(-) diff --git a/Lib/struct.py b/Lib/struct.py index b022355c180..dca15e2ad34 100644 --- a/Lib/struct.py +++ b/Lib/struct.py @@ -1,3 +1,14 @@ +__all__ = [ + # Functions + 'calcsize', 'pack', 'unpack', 'unpack', 'unpack_from', + + # Classes + 'Struct', + + # Exceptions + 'error' + ] + from _struct import * from _struct import _clearcache from _struct import __doc__ diff --git a/Misc/NEWS b/Misc/NEWS index cde2905c2ec..60a5075d62b 100644 --- a/Misc/NEWS +++ b/Misc/NEWS @@ -1299,6 +1299,9 @@ Library Extension Modules ----------------- +- Issue #8973: Add __all__ to struct module; this ensures that + help(struct) includes documentation for the struct.Struct class. + - Issue #3129: Trailing digits in format string are no longer ignored. For example, "1" or "ilib123" are now invalid formats and cause ``struct.error`` to be raised. diff --git a/Modules/_struct.c b/Modules/_struct.c index 0f070b318d3..43bf561f338 100644 --- a/Modules/_struct.c +++ b/Modules/_struct.c @@ -1398,9 +1398,8 @@ fail: PyDoc_STRVAR(s_unpack__doc__, "S.unpack(buffer) -> (v1, v2, ...)\n\ \n\ -Return tuple containing values unpacked according to this Struct's format.\n\ -Requires len(buffer) == self.size. See struct.__doc__ for more on format\n\ -strings."); +Return a tuple containing values unpacked according to S.format. Requires\n\ +len(buffer) == S.size. See help(struct) for more on format strings."); static PyObject * s_unpack(PyObject *self, PyObject *input) @@ -1426,12 +1425,10 @@ s_unpack(PyObject *self, PyObject *input) } PyDoc_STRVAR(s_unpack_from__doc__, -"S.unpack_from(buffer[, offset]) -> (v1, v2, ...)\n\ +"S.unpack_from(buffer[, offset=0]) -> (v1, v2, ...)\n\ \n\ -Return tuple containing values unpacked according to this Struct's format.\n\ -Unlike unpack, unpack_from can unpack values from any object supporting\n\ -the buffer API, not just str. Requires len(buffer[offset:]) >= self.size.\n\ -See struct.__doc__ for more on format strings."); +Return a tuple containing values unpacked according to S.format. Requires\n\ +len(buffer[offset:]) >= S.size. See help(struct) for more on format strings."); static PyObject * s_unpack_from(PyObject *self, PyObject *args, PyObject *kwds) @@ -1566,8 +1563,8 @@ s_pack_internal(PyStructObject *soself, PyObject *args, int offset, char* buf) PyDoc_STRVAR(s_pack__doc__, "S.pack(v1, v2, ...) -> bytes\n\ \n\ -Return a bytes containing values v1, v2, ... packed according to this\n\ -Struct's format. See struct.__doc__ for more on format strings."); +Return a bytes object containing values v1, v2, ... packed according to\n\ +S.format. See help(struct) for more on format strings."); static PyObject * s_pack(PyObject *self, PyObject *args) @@ -1603,10 +1600,9 @@ s_pack(PyObject *self, PyObject *args) PyDoc_STRVAR(s_pack_into__doc__, "S.pack_into(buffer, offset, v1, v2, ...)\n\ \n\ -Pack the values v1, v2, ... according to this Struct's format, write \n\ -the packed bytes into the writable buffer buf starting at offset. Note\n\ -that the offset is not an optional argument. See struct.__doc__ for \n\ -more on format strings."); +Pack the values v1, v2, ... according to S.format and write the packed bytes\n\ +into the writable buffer buf starting at offset. Note that the offset is not\n\ +an optional argument. See help(struct) for more on format strings."); static PyObject * s_pack_into(PyObject *self, PyObject *args) @@ -1796,7 +1792,10 @@ calcsize(PyObject *self, PyObject *fmt) } PyDoc_STRVAR(pack_doc, -"Return bytes containing values v1, v2, ... packed according to fmt."); +"pack(fmt, v1, v2, ...) -> bytes\n\ +\n\ +Return a bytes object containing values v1, v2, ... packed according to fmt.\n\ +See help(struct) for more on format strings."); static PyObject * pack(PyObject *self, PyObject *args) @@ -1825,8 +1824,11 @@ pack(PyObject *self, PyObject *args) } PyDoc_STRVAR(pack_into_doc, -"Pack the values v1, v2, ... according to fmt.\n\ -Write the packed bytes into the writable buffer buf starting at offset."); +"pack_into(fmt, buffer, offset, v1, v2, ...)\n\ +\n\ +Pack the values v1, v2, ... according to fmt and write the packed bytes into\n\ +the writable buffer buf starting at offset. Note that the offset is not an\n\ +optional argument. See help(struct) for more on format strings."); static PyObject * pack_into(PyObject *self, PyObject *args) @@ -1855,8 +1857,10 @@ pack_into(PyObject *self, PyObject *args) } PyDoc_STRVAR(unpack_doc, -"Unpack the bytes containing packed C structure data, according to fmt.\n\ -Requires len(bytes) == calcsize(fmt)."); +"unpack(fmt, buffer) -> (v1, v2, ...)\n\ +\n\ +Return a tuple containing values unpacked according to fmt. Requires\n\ +len(buffer) == calcsize(fmt). See help(struct) for more on format strings."); static PyObject * unpack(PyObject *self, PyObject *args) @@ -1875,8 +1879,11 @@ unpack(PyObject *self, PyObject *args) } PyDoc_STRVAR(unpack_from_doc, -"Unpack the buffer, containing packed C structure data, according to\n\ -fmt, starting at offset. Requires len(buffer[offset:]) >= calcsize(fmt)."); +"unpack_from(fmt, buffer[, offset=0]) -> (v1, v2, ...)\n\ +\n\ +Return a tuple containing values unpacked according to fmt. Requires\n\ +len(buffer[offset:]) >= calcsize(fmt). See help(struct) for more on format\n\ +strings."); static PyObject * unpack_from(PyObject *self, PyObject *args, PyObject *kwds)