mirror of
https://github.com/python/cpython.git
synced 2025-09-27 18:59:43 +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 @@
|
||||||
|
|
||||||
"""
|
r"""
|
||||||
csv.py - read/write/investigate CSV files
|
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 re
|
||||||
import types
|
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, \
|
unregister_dialect, get_dialect, list_dialects, \
|
||||||
field_size_limit, \
|
field_size_limit, \
|
||||||
QUOTE_MINIMAL, QUOTE_ALL, QUOTE_NONNUMERIC, QUOTE_NONE, \
|
QUOTE_MINIMAL, QUOTE_ALL, QUOTE_NONNUMERIC, QUOTE_NONE, \
|
||||||
QUOTE_STRINGS, QUOTE_NOTNULL, \
|
QUOTE_STRINGS, QUOTE_NOTNULL
|
||||||
__doc__
|
|
||||||
from _csv import Dialect as _Dialect
|
from _csv import Dialect as _Dialect
|
||||||
|
|
||||||
from io import StringIO
|
from io import StringIO
|
||||||
|
|
||||||
__all__ = ["QUOTE_MINIMAL", "QUOTE_ALL", "QUOTE_NONNUMERIC", "QUOTE_NONE",
|
__all__ = ["QUOTE_MINIMAL", "QUOTE_ALL", "QUOTE_NONNUMERIC", "QUOTE_NONE",
|
||||||
"QUOTE_STRINGS", "QUOTE_NOTNULL",
|
"QUOTE_STRINGS", "QUOTE_NOTNULL",
|
||||||
"Error", "Dialect", "__doc__", "excel", "excel_tab",
|
"Error", "Dialect", "excel", "excel_tab",
|
||||||
"field_size_limit", "reader", "writer",
|
"field_size_limit", "reader", "writer",
|
||||||
"register_dialect", "get_dialect", "list_dialects", "Sniffer",
|
"register_dialect", "get_dialect", "list_dialects", "Sniffer",
|
||||||
"unregister_dialect", "__version__", "DictReader", "DictWriter",
|
"unregister_dialect", "DictReader", "DictWriter",
|
||||||
"unix_dialect"]
|
"unix_dialect"]
|
||||||
|
|
||||||
|
__version__ = "1.0"
|
||||||
|
|
||||||
|
|
||||||
class Dialect:
|
class Dialect:
|
||||||
"""Describe a CSV dialect.
|
"""Describe a CSV dialect.
|
||||||
|
|
||||||
|
|
|
@ -1416,8 +1416,7 @@ class KeyOrderingTest(unittest.TestCase):
|
||||||
|
|
||||||
class MiscTestCase(unittest.TestCase):
|
class MiscTestCase(unittest.TestCase):
|
||||||
def test__all__(self):
|
def test__all__(self):
|
||||||
extra = {'__doc__', '__version__'}
|
support.check__all__(self, csv, ('csv', '_csv'))
|
||||||
support.check__all__(self, csv, ('csv', '_csv'), extra=extra)
|
|
||||||
|
|
||||||
def test_subclassable(self):
|
def test_subclassable(self):
|
||||||
# issue 44089
|
# 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
|
// clinic/_csv.c.h uses internal pycore_modsupport.h API
|
||||||
#ifndef Py_BUILD_CORE_BUILTIN
|
#ifndef Py_BUILD_CORE_BUILTIN
|
||||||
# define Py_BUILD_CORE_MODULE 1
|
# define Py_BUILD_CORE_MODULE 1
|
||||||
|
@ -1607,68 +1605,7 @@ PyType_Spec error_spec = {
|
||||||
* MODULE
|
* MODULE
|
||||||
*/
|
*/
|
||||||
|
|
||||||
PyDoc_STRVAR(csv_module_doc,
|
PyDoc_STRVAR(csv_module_doc, "CSV parsing and writing.\n");
|
||||||
"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_reader_doc,
|
PyDoc_STRVAR(csv_reader_doc,
|
||||||
" csv_reader = reader(iterable [, dialect='excel']\n"
|
" csv_reader = reader(iterable [, dialect='excel']\n"
|
||||||
|
@ -1741,12 +1678,6 @@ csv_exec(PyObject *module) {
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Add version to the module. */
|
|
||||||
if (PyModule_AddStringConstant(module, "__version__",
|
|
||||||
MODULE_VERSION) == -1) {
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Set the field limit */
|
/* Set the field limit */
|
||||||
module_state->field_limit = 128 * 1024;
|
module_state->field_limit = 128 * 1024;
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue