summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Lib/struct.py11
-rw-r--r--Misc/NEWS3
-rw-r--r--Modules/_struct.c49
3 files changed, 42 insertions, 21 deletions
diff --git a/Lib/struct.py b/Lib/struct.py
index b022355c18..dca15e2ad3 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 cde2905c2e..60a5075d62 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 0f070b318d..43bf561f33 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)