mirror of
https://github.com/python/cpython.git
synced 2025-08-04 17:08:35 +00:00
gh-114123: Migrate docstring from _csv to csv (#114124)
Co-authored-by: Adam Turner <9087854+AA-Turner@users.noreply.github.com> Co-authored-by: Éric <merwok@netwok.org>
This commit is contained in:
parent
68a7b78cd5
commit
72abb8c5d4
4 changed files with 78 additions and 79 deletions
76
Lib/csv.py
76
Lib/csv.py
|
@ -1,28 +1,90 @@
|
|||
|
||||
"""
|
||||
csv.py - read/write/investigate CSV files
|
||||
r"""
|
||||
CSV parsing and writing.
|
||||
|
||||
This module provides classes that assist in the reading and writing
|
||||
of Comma Separated Value (CSV) files, and implements the interface
|
||||
described by PEP 305. Although many CSV files are simple to parse,
|
||||
the format is not formally defined by a stable specification and
|
||||
is subtle enough that parsing lines of a CSV file with something
|
||||
like line.split(",") is bound to fail. The module supports three
|
||||
basic APIs: reading, writing, and registration of dialects.
|
||||
|
||||
|
||||
DIALECT REGISTRATION:
|
||||
|
||||
Readers and writers support a dialect argument, which is a convenient
|
||||
handle on a group of settings. When the dialect argument is a string,
|
||||
it identifies one of the dialects previously registered with the module.
|
||||
If it is a class or instance, the attributes of the argument are used as
|
||||
the settings for the reader or writer:
|
||||
|
||||
class excel:
|
||||
delimiter = ','
|
||||
quotechar = '"'
|
||||
escapechar = None
|
||||
doublequote = True
|
||||
skipinitialspace = False
|
||||
lineterminator = '\r\n'
|
||||
quoting = QUOTE_MINIMAL
|
||||
|
||||
SETTINGS:
|
||||
|
||||
* quotechar - specifies a one-character string to use as the
|
||||
quoting character. It defaults to '"'.
|
||||
* delimiter - specifies a one-character string to use as the
|
||||
field separator. It defaults to ','.
|
||||
* skipinitialspace - specifies how to interpret spaces which
|
||||
immediately follow a delimiter. It defaults to False, which
|
||||
means that spaces immediately following a delimiter is part
|
||||
of the following field.
|
||||
* lineterminator - specifies the character sequence which should
|
||||
terminate rows.
|
||||
* quoting - controls when quotes should be generated by the writer.
|
||||
It can take on any of the following module constants:
|
||||
|
||||
csv.QUOTE_MINIMAL means only when required, for example, when a
|
||||
field contains either the quotechar or the delimiter
|
||||
csv.QUOTE_ALL means that quotes are always placed around fields.
|
||||
csv.QUOTE_NONNUMERIC means that quotes are always placed around
|
||||
fields which do not parse as integers or floating point
|
||||
numbers.
|
||||
csv.QUOTE_STRINGS means that quotes are always placed around
|
||||
fields which are strings. Note that the Python value None
|
||||
is not a string.
|
||||
csv.QUOTE_NOTNULL means that quotes are only placed around fields
|
||||
that are not the Python value None.
|
||||
csv.QUOTE_NONE means that quotes are never placed around fields.
|
||||
* escapechar - specifies a one-character string used to escape
|
||||
the delimiter when quoting is set to QUOTE_NONE.
|
||||
* doublequote - controls the handling of quotes inside fields. When
|
||||
True, two consecutive quotes are interpreted as one during read,
|
||||
and when writing, each quote character embedded in the data is
|
||||
written as two quotes
|
||||
"""
|
||||
|
||||
import re
|
||||
import types
|
||||
from _csv import Error, __version__, writer, reader, register_dialect, \
|
||||
from _csv import Error, writer, reader, register_dialect, \
|
||||
unregister_dialect, get_dialect, list_dialects, \
|
||||
field_size_limit, \
|
||||
QUOTE_MINIMAL, QUOTE_ALL, QUOTE_NONNUMERIC, QUOTE_NONE, \
|
||||
QUOTE_STRINGS, QUOTE_NOTNULL, \
|
||||
__doc__
|
||||
QUOTE_STRINGS, QUOTE_NOTNULL
|
||||
from _csv import Dialect as _Dialect
|
||||
|
||||
from io import StringIO
|
||||
|
||||
__all__ = ["QUOTE_MINIMAL", "QUOTE_ALL", "QUOTE_NONNUMERIC", "QUOTE_NONE",
|
||||
"QUOTE_STRINGS", "QUOTE_NOTNULL",
|
||||
"Error", "Dialect", "__doc__", "excel", "excel_tab",
|
||||
"Error", "Dialect", "excel", "excel_tab",
|
||||
"field_size_limit", "reader", "writer",
|
||||
"register_dialect", "get_dialect", "list_dialects", "Sniffer",
|
||||
"unregister_dialect", "__version__", "DictReader", "DictWriter",
|
||||
"unregister_dialect", "DictReader", "DictWriter",
|
||||
"unix_dialect"]
|
||||
|
||||
__version__ = "1.0"
|
||||
|
||||
|
||||
class Dialect:
|
||||
"""Describe a CSV dialect.
|
||||
|
||||
|
|
|
@ -1416,8 +1416,7 @@ class KeyOrderingTest(unittest.TestCase):
|
|||
|
||||
class MiscTestCase(unittest.TestCase):
|
||||
def test__all__(self):
|
||||
extra = {'__doc__', '__version__'}
|
||||
support.check__all__(self, csv, ('csv', '_csv'), extra=extra)
|
||||
support.check__all__(self, csv, ('csv', '_csv'))
|
||||
|
||||
def test_subclassable(self):
|
||||
# issue 44089
|
||||
|
|
|
@ -0,0 +1,7 @@
|
|||
Move the :mod:`csv` module docstring to the :mod:`!csv` module
|
||||
instead of reexporting it from the internal :mod:`!_csv` module,
|
||||
and remove ``__doc__`` from ``csv.__all__``.
|
||||
|
||||
Move :attr:`!csv.__version__` to the :mod:`!csv` module
|
||||
instead of reexporting it from the internal :mod:`!_csv` module,
|
||||
and remove ``__version__`` from ``csv.__all__``.
|
|
@ -8,8 +8,6 @@ module instead.
|
|||
|
||||
*/
|
||||
|
||||
#define MODULE_VERSION "1.0"
|
||||
|
||||
// clinic/_csv.c.h uses internal pycore_modsupport.h API
|
||||
#ifndef Py_BUILD_CORE_BUILTIN
|
||||
# define Py_BUILD_CORE_MODULE 1
|
||||
|
@ -1607,68 +1605,7 @@ PyType_Spec error_spec = {
|
|||
* MODULE
|
||||
*/
|
||||
|
||||
PyDoc_STRVAR(csv_module_doc,
|
||||
"CSV parsing and writing.\n"
|
||||
"\n"
|
||||
"This module provides classes that assist in the reading and writing\n"
|
||||
"of Comma Separated Value (CSV) files, and implements the interface\n"
|
||||
"described by PEP 305. Although many CSV files are simple to parse,\n"
|
||||
"the format is not formally defined by a stable specification and\n"
|
||||
"is subtle enough that parsing lines of a CSV file with something\n"
|
||||
"like line.split(\",\") is bound to fail. The module supports three\n"
|
||||
"basic APIs: reading, writing, and registration of dialects.\n"
|
||||
"\n"
|
||||
"\n"
|
||||
"DIALECT REGISTRATION:\n"
|
||||
"\n"
|
||||
"Readers and writers support a dialect argument, which is a convenient\n"
|
||||
"handle on a group of settings. When the dialect argument is a string,\n"
|
||||
"it identifies one of the dialects previously registered with the module.\n"
|
||||
"If it is a class or instance, the attributes of the argument are used as\n"
|
||||
"the settings for the reader or writer:\n"
|
||||
"\n"
|
||||
" class excel:\n"
|
||||
" delimiter = ','\n"
|
||||
" quotechar = '\"'\n"
|
||||
" escapechar = None\n"
|
||||
" doublequote = True\n"
|
||||
" skipinitialspace = False\n"
|
||||
" lineterminator = '\\r\\n'\n"
|
||||
" quoting = QUOTE_MINIMAL\n"
|
||||
"\n"
|
||||
"SETTINGS:\n"
|
||||
"\n"
|
||||
" * quotechar - specifies a one-character string to use as the\n"
|
||||
" quoting character. It defaults to '\"'.\n"
|
||||
" * delimiter - specifies a one-character string to use as the\n"
|
||||
" field separator. It defaults to ','.\n"
|
||||
" * skipinitialspace - specifies how to interpret spaces which\n"
|
||||
" immediately follow a delimiter. It defaults to False, which\n"
|
||||
" means that spaces immediately following a delimiter is part\n"
|
||||
" of the following field.\n"
|
||||
" * lineterminator - specifies the character sequence which should\n"
|
||||
" terminate rows.\n"
|
||||
" * quoting - controls when quotes should be generated by the writer.\n"
|
||||
" It can take on any of the following module constants:\n"
|
||||
"\n"
|
||||
" csv.QUOTE_MINIMAL means only when required, for example, when a\n"
|
||||
" field contains either the quotechar or the delimiter\n"
|
||||
" csv.QUOTE_ALL means that quotes are always placed around fields.\n"
|
||||
" csv.QUOTE_NONNUMERIC means that quotes are always placed around\n"
|
||||
" fields which do not parse as integers or floating point\n"
|
||||
" numbers.\n"
|
||||
" csv.QUOTE_STRINGS means that quotes are always placed around\n"
|
||||
" fields which are strings. Note that the Python value None\n"
|
||||
" is not a string.\n"
|
||||
" csv.QUOTE_NOTNULL means that quotes are only placed around fields\n"
|
||||
" that are not the Python value None.\n"
|
||||
" csv.QUOTE_NONE means that quotes are never placed around fields.\n"
|
||||
" * escapechar - specifies a one-character string used to escape\n"
|
||||
" the delimiter when quoting is set to QUOTE_NONE.\n"
|
||||
" * doublequote - controls the handling of quotes inside fields. When\n"
|
||||
" True, two consecutive quotes are interpreted as one during read,\n"
|
||||
" and when writing, each quote character embedded in the data is\n"
|
||||
" written as two quotes\n");
|
||||
PyDoc_STRVAR(csv_module_doc, "CSV parsing and writing.\n");
|
||||
|
||||
PyDoc_STRVAR(csv_reader_doc,
|
||||
" csv_reader = reader(iterable [, dialect='excel']\n"
|
||||
|
@ -1741,12 +1678,6 @@ csv_exec(PyObject *module) {
|
|||
return -1;
|
||||
}
|
||||
|
||||
/* Add version to the module. */
|
||||
if (PyModule_AddStringConstant(module, "__version__",
|
||||
MODULE_VERSION) == -1) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
/* Set the field limit */
|
||||
module_state->field_limit = 128 * 1024;
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue