diff --git a/epydoc-pdf.conf b/epydoc-pdf.conf
deleted file mode 100644
index 03ed6d104d..0000000000
--- a/epydoc-pdf.conf
+++ /dev/null
@@ -1,50 +0,0 @@
-[epydoc] # Epydoc section marker (required by ConfigParser)
-
-# Information about the project.
-name: calibre
-url: http://calibre.kovidgoyal.net
-
-# The list of modules to document. Modules can be named using
-# dotted names, module filenames, or package directory names.
-# This option may be repeated.
-modules: calibre.devices, calibre.ebooks.lrf.web.profiles
-
-output: pdf
-target: docs/pdf
-
-frames: no
-
-# graph
-# The list of graph types that should be automatically included
-# in the output. Graphs are generated using the Graphviz "dot"
-# executable. Graph types include: "classtree", "callgraph",
-# "umlclass". Use "all" to include all graph types
-graph: classtree
-
-# css
-# The CSS stylesheet for HTML output. Can be the name of a builtin
-# stylesheet, or the name of a file.
-css: white
-
-# link
-# HTML code for the project link in the navigation bar. If left
-# unspecified, the project link will be generated based on the
-# project's name and URL.
-#link: My Cool Project
-
-# top
-# The "top" page for the documentation. Can be a URL, the name
-# of a module or class, or one of the special names "trees.html",
-# "indices.html", or "help.html"
-# top: calibre
-
-# verbosity
-# An integer indicating how verbose epydoc should be. The default
-# value is 0; negative values will supress warnings and errors;
-# positive values will give more verbose output.
-#verbosity: 0
-
-# separate-classes
-# Whether each class should be listed in its own section when
-# generating LaTeX or PDF output.
-#separate-classes: no
diff --git a/epydoc.conf b/epydoc.conf
deleted file mode 100644
index 3259623054..0000000000
--- a/epydoc.conf
+++ /dev/null
@@ -1,51 +0,0 @@
-[epydoc] # Epydoc section marker (required by ConfigParser)
-
-# Information about the project.
-name: calibre - API documentation
-url: http://calibre.kovidgoyal.net
-
-# The list of modules to document. Modules can be named using
-# dotted names, module filenames, or package directory names.
-# This option may be repeated.
-modules: calibre.devices, calibre.ebooks.lrf.web.profiles
-
-# Write html output to the directory "docs"
-output: html
-target: docs/html
-
-frames: no
-
-# graph
-# The list of graph types that should be automatically included
-# in the output. Graphs are generated using the Graphviz "dot"
-# executable. Graph types include: "classtree", "callgraph",
-# "umlclass". Use "all" to include all graph types
-graph: classtree
-
-# css
-# The CSS stylesheet for HTML output. Can be the name of a builtin
-# stylesheet, or the name of a file.
-css: white
-
-# link
-# HTML code for the project link in the navigation bar. If left
-# unspecified, the project link will be generated based on the
-# project's name and URL.
-link: calibre
-
-# top
-# The "top" page for the documentation. Can be a URL, the name
-# of a module or class, or one of the special names "trees.html",
-# "indices.html", or "help.html"
-#top:
-
-# verbosity
-# An integer indicating how verbose epydoc should be. The default
-# value is 0; negative values will supress warnings and errors;
-# positive values will give more verbose output.
-#verbosity: 0
-
-# separate-classes
-# Whether each class should be listed in its own section when
-# generating LaTeX or PDF output.
-#separate-classes: no
diff --git a/pylint.conf b/pylint.conf
deleted file mode 100644
index 3eec91c1ce..0000000000
--- a/pylint.conf
+++ /dev/null
@@ -1,602 +0,0 @@
-# lint Python modules using external checkers.
-
-#
-
-# This is the main checker controling the other ones and the reports
-
-# generation. It is itself both a raw checker and an astng checker in order
-
-# to:
-
-# * handle message activation / deactivation at the module level
-
-# * handle some basic but necessary stats'data (number of classes, methods...)
-
-#
-
-[MASTER]
-
-
-
-# Specify a configuration file.
-
-#rcfile=
-
-
-
-# Profiled execution.
-
-profile=no
-
-
-
-# Add to the black list. It should be a base name, not a
-
-# path. You may set this option multiple times.
-
-ignore=CVS
-
-
-
-# Pickle collected data for later comparisons.
-
-persistent=yes
-
-
-
-# Set the cache size for astng objects.
-
-cache-size=500
-
-
-
-# List of plugins (as comma separated values of python modules names) to load,
-
-# usually to register additional checkers.
-
-load-plugins=
-
-
-
-
-
-[MESSAGES CONTROL]
-
-
-
-# Enable only checker(s) with the given id(s). This option conflict with the
-
-# disable-checker option
-
-#enable-checker=
-
-
-
-# Enable all checker(s) except those with the given id(s). This option conflict
-
-# with the disable-checker option
-
-#disable-checker=
-
-
-
-# Enable all messages in the listed categories.
-
-#enable-msg-cat=
-
-
-
-# Disable all messages in the listed categories.
-
-#disable-msg-cat=
-
-
-
-# Enable the message(s) with the given id(s).
-
-#enable-msg=
-
-
-
-# Disable the message(s) with the given id(s).
-
-#disable-msg=
-
-
-
-
-
-[REPORTS]
-
-
-
-# set the output format. Available formats are text, parseable, colorized and
-
-# html
-
-output-format=colorized
-
-
-
-# Include message's id in output
-
-include-ids=no
-
-
-
-# Put messages in a separate file for each module / package specified on the
-
-# command line instead of printing them on stdout. Reports (if any) will be
-
-# written in a file name "pylint_global.[txt|html]".
-
-files-output=no
-
-
-
-# Tells wether to display a full report or only the messages
-
-reports=yes
-
-
-
-# Python expression which should return a note less than 10 (10 is the highest
-
-# note).You have access to the variables errors warning, statement which
-
-# respectivly contain the number of errors / warnings messages and the total
-
-# number of statements analyzed. This is used by the global evaluation report
-
-# (R0004).
-
-evaluation=10.0 - ((float(5 * error + warning + refactor + convention) / statement) * 10)
-
-
-
-# Add a comment according to your evaluation note. This is used by the global
-
-# evaluation report (R0004).
-
-comment=no
-
-
-
-# Enable the report(s) with the given id(s).
-
-#enable-report=
-
-
-
-# Disable the report(s) with the given id(s).
-
-#disable-report=
-
-
-
-
-
-# checks for
-
-# * unused variables / imports
-
-# * undefined variables
-
-# * redefinition of variable from builtins or from an outer scope
-
-# * use of variable before assigment
-
-#
-
-[VARIABLES]
-
-
-
-# Tells wether we should check for unused import in __init__ files.
-
-init-import=no
-
-
-
-# A regular expression matching names used for dummy variables (i.e. not used).
-
-dummy-variables-rgx=_|dummy
-
-
-
-# List of additional names supposed to be defined in builtins. Remember that
-
-# you should avoid to define new builtins when possible.
-
-additional-builtins=
-
-
-
-
-
-# try to find bugs in the code using type inference
-
-#
-
-[TYPECHECK]
-
-
-
-# Tells wether missing members accessed in mixin class should be ignored. A
-
-# mixin class is detected if its name ends with "mixin" (case insensitive).
-
-ignore-mixin-members=yes
-
-
-
-# When zope mode is activated, consider the acquired-members option to ignore
-
-# access to some undefined attributes.
-
-zope=no
-
-
-
-# List of members which are usually get through zope's acquisition mecanism and
-
-# so shouldn't trigger E0201 when accessed (need zope=yes to be considered).
-
-acquired-members=REQUEST,acl_users,aq_parent
-
-
-
-
-
-# checks for :
-
-# * doc strings
-
-# * modules / classes / functions / methods / arguments / variables name
-
-# * number of arguments, local variables, branchs, returns and statements in
-
-# functions, methods
-
-# * required module attributes
-
-# * dangerous default values as arguments
-
-# * redefinition of function / method / class
-
-# * uses of the global statement
-
-#
-
-[BASIC]
-
-
-
-# Required attributes for module, separated by a comma
-
-required-attributes=
-
-
-
-# Regular expression which should only match functions or classes name which do
-
-# not require a docstring
-
-no-docstring-rgx=__.*__
-
-
-
-# Regular expression which should only match correct module names
-
-module-rgx=(([a-z_][a-z0-9_]*)|([A-Z][a-zA-Z0-9]+))$
-
-
-
-# Regular expression which should only match correct module level names
-
-const-rgx=(([A-Z_][A-Z1-9_]*)|(__.*__))$
-
-
-
-# Regular expression which should only match correct class names
-
-class-rgx=[A-Z_][a-zA-Z0-9]+$
-
-
-
-# Regular expression which should only match correct function names
-
-function-rgx=[a-z_][a-z0-9_]{2,30}$
-
-
-
-# Regular expression which should only match correct method names
-
-method-rgx=[a-z_][a-z0-9_]{2,30}$
-
-
-
-# Regular expression which should only match correct instance attribute names
-
-attr-rgx=[a-z_][a-z0-9_]{2,30}$
-
-
-
-# Regular expression which should only match correct argument names
-
-argument-rgx=[a-z_][a-z0-9_]{2,30}$
-
-
-
-# Regular expression which should only match correct variable names
-
-variable-rgx=[a-z_][a-z0-9_]{2,30}$
-
-
-
-# Regular expression which should only match correct list comprehension /
-
-# generator expression variable names
-
-inlinevar-rgx=[A-Za-z_][A-Za-z0-9_]*$
-
-
-
-# Good variable names which should always be accepted, separated by a comma
-
-good-names=i,j,k,ex,Run,_
-
-
-
-# Bad variable names which should always be refused, separated by a comma
-
-bad-names=foo,bar,baz,toto,tutu,tata
-
-
-
-# List of builtins function names that should not be used, separated by a comma
-
-bad-functions=map,filter,apply,input
-
-
-
-
-
-# checks for sign of poor/misdesign:
-
-# * number of methods, attributes, local variables...
-
-# * size, complexity of functions, methods
-
-#
-
-[DESIGN]
-
-
-
-# Maximum number of arguments for function / method
-
-max-args=5
-
-
-
-# Maximum number of locals for function / method body
-
-max-locals=15
-
-
-
-# Maximum number of return / yield for function / method body
-
-max-returns=6
-
-
-
-# Maximum number of branch for function / method body
-
-max-branchs=12
-
-
-
-# Maximum number of statements in function / method body
-
-max-statements=50
-
-
-
-# Maximum number of parents for a class (see R0901).
-
-max-parents=7
-
-
-
-# Maximum number of attributes for a class (see R0902).
-
-max-attributes=7
-
-
-
-# Minimum number of public methods for a class (see R0903).
-
-min-public-methods=2
-
-
-
-# Maximum number of public methods for a class (see R0904).
-
-max-public-methods=20
-
-
-
-
-
-# checks for
-
-# * external modules dependencies
-
-# * relative / wildcard imports
-
-# * cyclic imports
-
-# * uses of deprecated modules
-
-#
-
-[IMPORTS]
-
-
-
-# Deprecated modules which should not be used, separated by a comma
-
-deprecated-modules=regsub,string,TERMIOS,Bastion,rexec
-
-
-
-# Create a graph of every (i.e. internal and external) dependencies in the
-
-# given file (report R0402 must not be disabled)
-
-import-graph=
-
-
-
-# Create a graph of external dependencies in the given file (report R0402 must
-
-# not be disabled)
-
-ext-import-graph=
-
-
-
-# Create a graph of internal dependencies in the given file (report R0402 must
-
-# not be disabled)
-
-int-import-graph=
-
-
-
-
-
-# checks for :
-
-# * methods without self as first argument
-
-# * overridden methods signature
-
-# * access only to existant members via self
-
-# * attributes not defined in the __init__ method
-
-# * supported interfaces implementation
-
-# * unreachable code
-
-#
-
-[CLASSES]
-
-
-
-# List of interface methods to ignore, separated by a comma. This is used for
-
-# instance to not check methods defines in Zope's Interface base class.
-
-ignore-iface-methods=isImplementedBy,deferred,extends,names,namesAndDescriptions,queryDescriptionFor,getBases,getDescriptionFor,getDoc,getName,getTaggedValue,getTaggedValueTags,isEqualOrExtendedBy,setTaggedValue,isImplementedByInstancesOf,adaptWith,is_implemented_by
-
-
-
-# List of method names used to declare (i.e. assign) instance attributes.
-
-defining-attr-methods=__init__,__new__,setUp
-
-
-
-
-
-# checks for similarities and duplicated code. This computation may be
-
-# memory / CPU intensive, so you should disable it if you experiments some
-
-# problems.
-
-#
-
-[SIMILARITIES]
-
-
-
-# Minimum lines number of a similarity.
-
-min-similarity-lines=4
-
-
-
-# Ignore comments when computing similarities.
-
-ignore-comments=yes
-
-
-
-# Ignore docstrings when computing similarities.
-
-ignore-docstrings=yes
-
-
-
-
-
-# checks for:
-
-# * warning notes in the code like FIXME, XXX
-
-# * PEP 263: source code with non ascii character but no encoding declaration
-
-#
-
-[MISCELLANEOUS]
-
-
-
-# List of note tags to take in consideration, separated by a comma.
-
-notes=FIXME,XXX,TODO
-
-
-
-
-
-# checks for :
-
-# * unauthorized constructions
-
-# * strict indentation
-
-# * line length
-
-# * use of <> instead of !=
-
-#
-
-[FORMAT]
-
-
-
-# Maximum number of characters on a single line.
-
-max-line-length=80
-
-
-
-# Maximum number of lines in a module
-
-max-module-lines=1000
-
-
-
-# String used as indentation unit. This is usually " " (4 spaces) or "\t" (1
-
-# tab).
-
-indent-string=' '
-
diff --git a/src/calibre/devices/blackberry/driver.py b/src/calibre/devices/blackberry/driver.py
index 6218c662ac..f6c615b0de 100644
--- a/src/calibre/devices/blackberry/driver.py
+++ b/src/calibre/devices/blackberry/driver.py
@@ -26,5 +26,5 @@ class BLACKBERRY(USBMS):
EBOOK_DIR_MAIN = 'ebooks'
#EBOOK_DIR_CARD = "documents"
- SUPPORTS_SUB_DIRS = False
+ SUPPORTS_SUB_DIRS = True
diff --git a/src/calibre/devices/usbms/driver.py b/src/calibre/devices/usbms/driver.py
index cadc61e584..0c73c4412c 100644
--- a/src/calibre/devices/usbms/driver.py
+++ b/src/calibre/devices/usbms/driver.py
@@ -1,3 +1,4 @@
+from __future__ import with_statement
__license__ = 'GPL v3'
__copyright__ = '2009, John Schember '
'''
@@ -165,8 +166,8 @@ class USBMS(Device):
def get_file(self, path, outfile, end_session=True):
path = self.munge_path(path)
- src = open(path, 'rb')
- shutil.copyfileobj(src, outfile, 10*1024*1024)
+ with open(path, 'rb') as src:
+ shutil.copyfileobj(src, outfile, 10*1024*1024)
def put_file(self, infile, path, replace_file=False, end_session=True):
path = self.munge_path(path)