[Python-checkins] r85456 - in python/branches/py3k: Lib/string.py Misc/NEWS Modules/config.c.in Objects/stringlib/string_format.h Objects/unicodeobject.c PC/config.c
georg.brandl
python-checkins at python.org
Thu Oct 14 09:04:08 CEST 2010
Author: georg.brandl
Date: Thu Oct 14 09:04:07 2010
New Revision: 85456
Log:
#9418: first step of moving private string methods to _string module.
Modified:
python/branches/py3k/Lib/string.py
python/branches/py3k/Misc/NEWS
python/branches/py3k/Modules/config.c.in
python/branches/py3k/Objects/stringlib/string_format.h
python/branches/py3k/Objects/unicodeobject.c
python/branches/py3k/PC/config.c
Modified: python/branches/py3k/Lib/string.py
==============================================================================
--- python/branches/py3k/Lib/string.py (original)
+++ python/branches/py3k/Lib/string.py Thu Oct 14 09:04:07 2010
@@ -14,6 +14,8 @@
"""
+import _string
+
# Some strings for ctype-style character classification
whitespace = ' \t\n\r\v\f'
ascii_lowercase = 'abcdefghijklmnopqrstuvwxyz'
@@ -170,8 +172,8 @@
# The hard parts are reused from the C implementation. They're exposed as "_"
# prefixed methods of str.
-# The overall parser is implemented in str._formatter_parser.
-# The field name parser is implemented in str._formatter_field_name_split
+# The overall parser is implemented in _string.formatter_parser.
+# The field name parser is implemented in _string.formatter_field_name_split
class Formatter:
def format(self, format_string, *args, **kwargs):
@@ -251,7 +253,7 @@
# if field_name is not None, it is looked up, formatted
# with format_spec and conversion and then used
def parse(self, format_string):
- return format_string._formatter_parser()
+ return _string.formatter_parser(format_string)
# given a field_name, find the object it references.
@@ -260,7 +262,7 @@
# used_args: a set of which args have been used
# args, kwargs: as passed in to vformat
def get_field(self, field_name, args, kwargs):
- first, rest = field_name._formatter_field_name_split()
+ first, rest = _string.formatter_field_name_split(field_name)
obj = self.get_value(first, args, kwargs)
Modified: python/branches/py3k/Misc/NEWS
==============================================================================
--- python/branches/py3k/Misc/NEWS (original)
+++ python/branches/py3k/Misc/NEWS Thu Oct 14 09:04:07 2010
@@ -10,6 +10,9 @@
Core and Builtins
-----------------
+- Issue #9418: Moved private string methods ``_formatter_parser`` and
+ ``_formatter_field_name_split`` into a new ``_string`` module.
+
- Issue #9992: Remove PYTHONFSENCODING environment variable.
Library
Modified: python/branches/py3k/Modules/config.c.in
==============================================================================
--- python/branches/py3k/Modules/config.c.in (original)
+++ python/branches/py3k/Modules/config.c.in Thu Oct 14 09:04:07 2010
@@ -29,6 +29,7 @@
extern PyObject* PyInit_gc(void);
extern PyObject* PyInit__ast(void);
extern PyObject* _PyWarnings_Init(void);
+extern PyObject* PyInit__string(void);
struct _inittab _PyImport_Inittab[] = {
@@ -54,6 +55,9 @@
/* This lives in _warnings.c */
{"_warnings", _PyWarnings_Init},
+ /* This lives in Objects/unicodeobject.c */
+ {"_string", PyInit__string},
+
/* Sentinel */
{0, 0}
};
Modified: python/branches/py3k/Objects/stringlib/string_format.h
==============================================================================
--- python/branches/py3k/Objects/stringlib/string_format.h (original)
+++ python/branches/py3k/Objects/stringlib/string_format.h Thu Oct 14 09:04:07 2010
@@ -1180,7 +1180,7 @@
describing the parsed elements. It's a wrapper around
stringlib/string_format.h's MarkupIterator */
static PyObject *
-formatter_parser(STRINGLIB_OBJECT *self)
+formatter_parser(PyObject *ignored, STRINGLIB_OBJECT *self)
{
formatteriterobject *it;
@@ -1315,7 +1315,7 @@
field_name_split. The iterator it returns is a
FieldNameIterator */
static PyObject *
-formatter_field_name_split(STRINGLIB_OBJECT *self)
+formatter_field_name_split(PyObject *ignored, STRINGLIB_OBJECT *self)
{
SubString first;
Py_ssize_t first_idx;
Modified: python/branches/py3k/Objects/unicodeobject.c
==============================================================================
--- python/branches/py3k/Objects/unicodeobject.c (original)
+++ python/branches/py3k/Objects/unicodeobject.c Thu Oct 14 09:04:07 2010
@@ -8968,8 +8968,6 @@
{"zfill", (PyCFunction) unicode_zfill, METH_VARARGS, zfill__doc__},
{"format", (PyCFunction) do_string_format, METH_VARARGS | METH_KEYWORDS, format__doc__},
{"__format__", (PyCFunction) unicode__format__, METH_VARARGS, p_format__doc__},
- {"_formatter_field_name_split", (PyCFunction) formatter_field_name_split, METH_NOARGS},
- {"_formatter_parser", (PyCFunction) formatter_parser, METH_NOARGS},
{"maketrans", (PyCFunction) unicode_maketrans,
METH_VARARGS | METH_STATIC, maketrans__doc__},
{"__sizeof__", (PyCFunction) unicode__sizeof__, METH_NOARGS, sizeof__doc__},
@@ -10170,6 +10168,36 @@
return copy;
}
+/* A _string module, to export formatter_parser and formatter_field_name_split
+ to the string.Formatter class implemented in Python. */
+
+static PyMethodDef _string_methods[] = {
+ {"formatter_field_name_split", (PyCFunction) formatter_field_name_split,
+ METH_O, PyDoc_STR("split the argument as a field name")},
+ {"formatter_parser", (PyCFunction) formatter_parser,
+ METH_O, PyDoc_STR("parse the argument as a format string")},
+ {NULL, NULL}
+};
+
+static struct PyModuleDef _string_module = {
+ PyModuleDef_HEAD_INIT,
+ "_string",
+ PyDoc_STR("string helper module"),
+ 0,
+ _string_methods,
+ NULL,
+ NULL,
+ NULL,
+ NULL
+};
+
+PyMODINIT_FUNC
+PyInit__string(void)
+{
+ return PyModule_Create(&_string_module);
+}
+
+
#ifdef __cplusplus
}
#endif
Modified: python/branches/py3k/PC/config.c
==============================================================================
--- python/branches/py3k/PC/config.c (original)
+++ python/branches/py3k/PC/config.c Thu Oct 14 09:04:07 2010
@@ -62,6 +62,7 @@
extern PyObject* PyInit__pickle(void);
extern PyObject* PyInit_atexit(void);
extern PyObject* _PyWarnings_Init(void);
+extern PyObject* PyInit__string(void);
/* tools/freeze/makeconfig.py marker for additional "extern" */
/* -- ADDMODULE MARKER 1 -- */
@@ -147,6 +148,7 @@
{"builtins", NULL},
{"sys", NULL},
{"_warnings", _PyWarnings_Init},
+ {"_string", PyInit__string},
{"_io", PyInit__io},
{"_pickle", PyInit__pickle},
More information about the Python-checkins
mailing list