Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
C
cpython
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Kirill Smelkov
cpython
Commits
bd6c0795
Commit
bd6c0795
authored
Jul 25, 2010
by
Michael Foord
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Issue #4686 - add .args to exceptions in the configparsermodule
parent
4d4d1ce7
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
44 additions
and
17 deletions
+44
-17
Lib/configparser.py
Lib/configparser.py
+8
-1
Lib/test/test_cfgparser.py
Lib/test/test_cfgparser.py
+35
-15
Misc/python-wing.wpr
Misc/python-wing.wpr
+1
-1
No files found.
Lib/configparser.py
View file @
bd6c0795
...
...
@@ -142,6 +142,7 @@ class NoSectionError(Error):
def
__init__
(
self
,
section
):
Error
.
__init__
(
self
,
'No section: %r'
%
(
section
,))
self
.
section
=
section
self
.
args
=
(
section
,
)
class
DuplicateSectionError
(
Error
):
"""Raised when a section is multiply-created."""
...
...
@@ -149,6 +150,7 @@ class DuplicateSectionError(Error):
def
__init__
(
self
,
section
):
Error
.
__init__
(
self
,
"Section %r already exists"
%
section
)
self
.
section
=
section
self
.
args
=
(
section
,
)
class
NoOptionError
(
Error
):
"""A requested option was not found."""
...
...
@@ -158,6 +160,7 @@ class NoOptionError(Error):
(
option
,
section
))
self
.
option
=
option
self
.
section
=
section
self
.
args
=
(
option
,
section
)
class
InterpolationError
(
Error
):
"""Base class for interpolation-related exceptions."""
...
...
@@ -166,6 +169,7 @@ class InterpolationError(Error):
Error
.
__init__
(
self
,
msg
)
self
.
option
=
option
self
.
section
=
section
self
.
args
=
(
option
,
section
,
msg
)
class
InterpolationMissingOptionError
(
InterpolationError
):
"""A string substitution required a setting which was not available."""
...
...
@@ -179,6 +183,7 @@ class InterpolationMissingOptionError(InterpolationError):
%
(
section
,
option
,
reference
,
rawval
))
InterpolationError
.
__init__
(
self
,
option
,
section
,
msg
)
self
.
reference
=
reference
self
.
args
=
(
option
,
section
,
rawval
,
reference
)
class
InterpolationSyntaxError
(
InterpolationError
):
"""Raised when the source text into which substitutions are made
...
...
@@ -194,6 +199,7 @@ class InterpolationDepthError(InterpolationError):
"
\
t
rawval : %s
\
n
"
%
(
section
,
option
,
rawval
))
InterpolationError
.
__init__
(
self
,
option
,
section
,
msg
)
self
.
args
=
(
option
,
section
,
rawval
)
class
ParsingError
(
Error
):
"""Raised when a configuration file does not follow legal syntax."""
...
...
@@ -202,6 +208,7 @@ class ParsingError(Error):
Error
.
__init__
(
self
,
'File contains parsing errors: %s'
%
filename
)
self
.
filename
=
filename
self
.
errors
=
[]
self
.
args
=
(
filename
,
)
def
append
(
self
,
lineno
,
line
):
self
.
errors
.
append
((
lineno
,
line
))
...
...
@@ -218,7 +225,7 @@ class MissingSectionHeaderError(ParsingError):
self
.
filename
=
filename
self
.
lineno
=
lineno
self
.
line
=
line
self
.
args
=
(
filename
,
lineno
,
line
)
class
RawConfigParser
:
def
__init__
(
self
,
defaults
=
None
,
dict_type
=
_default_dict
,
...
...
Lib/test/test_cfgparser.py
View file @
bd6c0795
...
...
@@ -107,8 +107,9 @@ class TestCaseBase(unittest.TestCase):
"remove_option() failed to report non-existence of option"
" that was removed"
)
self
.
assertRaises
(
configparser
.
NoSectionError
,
cf
.
remove_option
,
'No Such Section'
,
'foo'
)
with
self
.
assertRaises
(
configparser
.
NoSectionError
)
as
cm
:
cf
.
remove_option
(
'No Such Section'
,
'foo'
)
self
.
assertEqual
(
cm
.
exception
.
args
,
(
'No Such Section'
,))
eq
(
cf
.
get
(
'Long Line'
,
'foo'
),
'this line is much, much longer than my editor
\
n
likes it.'
)
...
...
@@ -160,20 +161,24 @@ class TestCaseBase(unittest.TestCase):
def
test_parse_errors
(
self
):
self
.
newconfig
()
self
.
parse_error
(
configparser
.
ParsingError
,
e
=
self
.
parse_error
(
configparser
.
ParsingError
,
"[Foo]
\
n
extra-spaces: splat
\
n
"
)
self
.
assertEqual
(
e
.
args
,
(
'<???>'
,))
self
.
parse_error
(
configparser
.
ParsingError
,
"[Foo]
\
n
extra-spaces= splat
\
n
"
)
self
.
parse_error
(
configparser
.
ParsingError
,
"[Foo]
\
n
:value-without-option-name
\
n
"
)
self
.
parse_error
(
configparser
.
ParsingError
,
"[Foo]
\
n
=value-without-option-name
\
n
"
)
self
.
parse_error
(
configparser
.
MissingSectionHeaderError
,
e
=
self
.
parse_error
(
configparser
.
MissingSectionHeaderError
,
"No Section!
\
n
"
)
self
.
assertEqual
(
e
.
args
,
(
'<???>'
,
1
,
"No Section!
\
n
"
))
def
parse_error
(
self
,
exc
,
src
):
sio
=
io
.
StringIO
(
src
)
self
.
assertRaises
(
exc
,
self
.
cf
.
readfp
,
sio
)
with
self
.
assertRaises
(
exc
)
as
cm
:
self
.
cf
.
readfp
(
sio
)
return
cm
.
exception
def
test_query_errors
(
self
):
cf
=
self
.
newconfig
()
...
...
@@ -181,13 +186,15 @@ class TestCaseBase(unittest.TestCase):
"new ConfigParser should have no defined sections"
)
self
.
assertFalse
(
cf
.
has_section
(
"Foo"
),
"new ConfigParser should have no acknowledged sections"
)
self
.
assertRaises
(
configparser
.
NoSectionError
,
cf
.
options
,
"Foo"
)
self
.
assertRaises
(
configparser
.
NoSectionError
,
cf
.
set
,
"foo"
,
"bar"
,
"value"
)
self
.
get_error
(
configparser
.
NoSectionError
,
"foo"
,
"bar"
)
with
self
.
assertRaises
(
configparser
.
NoSectionError
)
as
cm
:
cf
.
options
(
"Foo"
)
with
self
.
assertRaises
(
configparser
.
NoSectionError
)
as
cm
:
cf
.
set
(
"foo"
,
"bar"
,
"value"
)
e
=
self
.
get_error
(
configparser
.
NoSectionError
,
"foo"
,
"bar"
)
self
.
assertEqual
(
e
.
args
,
(
"foo"
,))
cf
.
add_section
(
"foo"
)
self
.
get_error
(
configparser
.
NoOptionError
,
"foo"
,
"bar"
)
e
=
self
.
get_error
(
configparser
.
NoOptionError
,
"foo"
,
"bar"
)
self
.
assertEqual
(
e
.
args
,
(
"bar"
,
"foo"
))
def
get_error
(
self
,
exc
,
section
,
option
):
try
:
...
...
@@ -226,8 +233,9 @@ class TestCaseBase(unittest.TestCase):
def
test_weird_errors
(
self
):
cf
=
self
.
newconfig
()
cf
.
add_section
(
"Foo"
)
self
.
assertRaises
(
configparser
.
DuplicateSectionError
,
cf
.
add_section
,
"Foo"
)
with
self
.
assertRaises
(
configparser
.
DuplicateSectionError
)
as
cm
:
cf
.
add_section
(
"Foo"
)
self
.
assertEqual
(
cm
.
exception
.
args
,
(
"Foo"
,))
def
test_write
(
self
):
config_string
=
(
...
...
@@ -346,6 +354,11 @@ class ConfigParserTestCase(TestCaseBase):
config_class
=
configparser
.
ConfigParser
def
test_interpolation
(
self
):
rawval
=
{
configparser
.
ConfigParser
:
"something %(with11)s "
\
"lots of interpolation (11 steps)"
,
configparser
.
SafeConfigParser
:
"%(with1)s"
,
}
cf
=
self
.
get_interpolation_config
()
eq
=
self
.
assertEqual
eq
(
cf
.
get
(
"Foo"
,
"getname"
),
"Foo"
)
...
...
@@ -354,15 +367,22 @@ class ConfigParserTestCase(TestCaseBase):
"something with lots of interpolation (9 steps)"
)
eq
(
cf
.
get
(
"Foo"
,
"bar10"
),
"something with lots of interpolation (10 steps)"
)
self
.
get_error
(
configparser
.
InterpolationDepthError
,
"Foo"
,
"bar11"
)
e
=
self
.
get_error
(
configparser
.
InterpolationDepthError
,
"Foo"
,
"bar11"
)
self
.
assertEqual
(
e
.
args
,
(
"bar11"
,
"Foo"
,
rawval
[
self
.
config_class
]))
def
test_interpolation_missing_value
(
self
):
rawval
=
{
configparser
.
ConfigParser
:
'%(reference)s'
,
configparser
.
SafeConfigParser
:
''
,
}
self
.
get_interpolation_config
()
e
=
self
.
get_error
(
configparser
.
InterpolationError
,
e
=
self
.
get_error
(
configparser
.
Interpolation
MissingOption
Error
,
"Interpolation Error"
,
"name"
)
self
.
assertEqual
(
e
.
reference
,
"reference"
)
self
.
assertEqual
(
e
.
section
,
"Interpolation Error"
)
self
.
assertEqual
(
e
.
option
,
"name"
)
self
.
assertEqual
(
e
.
args
,
(
'name'
,
'Interpolation Error'
,
rawval
[
self
.
config_class
],
'reference'
))
def
test_items
(
self
):
self
.
check_items_config
([(
'default'
,
'<default>'
),
...
...
Misc/python-wing.wpr
View file @
bd6c0795
...
...
@@ -5,7 +5,7 @@
##################################################################
[project attributes]
proj.directory-list = [{'dirloc': loc('..'),
'excludes':
()
,
'excludes':
[u'Lib/__pycache__']
,
'filter': '*',
'include_hidden': False,
'recursive': True,
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment