summaryrefslogtreecommitdiffstats
path: root/Lib/netrc.py
diff options
context:
space:
mode:
authorFred Drake <fdrake@acm.org>2001-03-06 06:33:08 (GMT)
committerFred Drake <fdrake@acm.org>2001-03-06 06:33:08 (GMT)
commitec6ec90dd296d51d214726d192f6bb2b35453830 (patch)
treed24979a902c0146ec45a4b82aee28656b9fd5a5c /Lib/netrc.py
parenta76ba6ed9b1dcaa66daee71961e0d528d64b07f0 (diff)
downloadcpython-ec6ec90dd296d51d214726d192f6bb2b35453830.zip
cpython-ec6ec90dd296d51d214726d192f6bb2b35453830.tar.gz
cpython-ec6ec90dd296d51d214726d192f6bb2b35453830.tar.bz2
Define & use NetrcParseError instead of improperly overloading SyntaxError.
Always has the lineno and filename of the source text.
Diffstat (limited to 'Lib/netrc.py')
-rw-r--r--Lib/netrc.py27
1 files changed, 22 insertions, 5 deletions
diff --git a/Lib/netrc.py b/Lib/netrc.py
index bf944b7..b9ce6ba 100644
--- a/Lib/netrc.py
+++ b/Lib/netrc.py
@@ -4,7 +4,20 @@
import os, shlex
-__all__ = ["netrc"]
+__all__ = ["netrc", "NetrcParseError"]
+
+
+class NetrcParseError(Exception):
+ """Exception raised on syntax errors in the .netrc file."""
+ def __init__(self, msg, filename=None, lineno=None):
+ self.filename = file
+ self.lineno = lineno
+ self.msg = msg
+ Exception.__init__(self, msg)
+
+ def __str__(self):
+ return "%s (%s, line %s)" % (self.msg, self.filename, self.lineno)
+
class netrc:
def __init__(self, file=None):
@@ -37,8 +50,8 @@ class netrc:
tt = line
self.macros[entryname].append(line)
else:
- raise SyntaxError, "bad toplevel token %s, file %s, line %d" \
- % (tt, file, lexer.lineno)
+ raise NetrcParseError(
+ "bad toplevel token %r" % tt, file, lexer.lineno)
# We're looking at start of an entry for a named machine or default.
if toplevel == 'machine':
@@ -54,7 +67,10 @@ class netrc:
lexer.push_token(tt)
break
else:
- raise SyntaxError, "malformed %s entry %s terminated by %s" % (toplevel, entryname, repr(tt))
+ raise NetrcParseError(
+ "malformed %s entry %s terminated by %s"
+ % (toplevel, entryname, repr(tt)),
+ file, lexer.lineno)
elif tt == 'login' or tt == 'user':
login = lexer.get_token()
elif tt == 'account':
@@ -62,7 +78,8 @@ class netrc:
elif tt == 'password':
password = lexer.get_token()
else:
- raise SyntaxError, "bad follower token %s, file %s, line %d"%(tt,file,lexer.lineno)
+ raise NetrcParseError("bad follower token %r" % tt,
+ file, lexer.lineno)
def authenticators(self, host):
"""Return a (user, account, password) tuple for given host."""