Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(56)

Side by Side Diff: third_party/logilab/common/fileutils.py

Issue 739393004: Revert "Revert "pylint: upgrade to 1.3.1"" (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/tools/depot_tools/
Patch Set: Created 6 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « third_party/logilab/common/deprecation.py ('k') | third_party/logilab/common/graph.py » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 # copyright 2003-2011 LOGILAB S.A. (Paris, FRANCE), all rights reserved. 1 # copyright 2003-2011 LOGILAB S.A. (Paris, FRANCE), all rights reserved.
2 # contact http://www.logilab.fr/ -- mailto:contact@logilab.fr 2 # contact http://www.logilab.fr/ -- mailto:contact@logilab.fr
3 # 3 #
4 # This file is part of logilab-common. 4 # This file is part of logilab-common.
5 # 5 #
6 # logilab-common is free software: you can redistribute it and/or modify it unde r 6 # logilab-common is free software: you can redistribute it and/or modify it unde r
7 # the terms of the GNU Lesser General Public License as published by the Free 7 # the terms of the GNU Lesser General Public License as published by the Free
8 # Software Foundation, either version 2.1 of the License, or (at your option) an y 8 # Software Foundation, either version 2.1 of the License, or (at your option) an y
9 # later version. 9 # later version.
10 # 10 #
11 # logilab-common is distributed in the hope that it will be useful, but WITHOUT 11 # logilab-common is distributed in the hope that it will be useful, but WITHOUT
12 # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS 12 # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
13 # FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more 13 # FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
14 # details. 14 # details.
15 # 15 #
16 # You should have received a copy of the GNU Lesser General Public License along 16 # You should have received a copy of the GNU Lesser General Public License along
17 # with logilab-common. If not, see <http://www.gnu.org/licenses/>. 17 # with logilab-common. If not, see <http://www.gnu.org/licenses/>.
18 """File and file-path manipulation utilities. 18 """File and file-path manipulation utilities.
19 19
20 :group path manipulation: first_level_directory, relative_path, is_binary,\ 20 :group path manipulation: first_level_directory, relative_path, is_binary,\
21 get_by_ext, remove_dead_links 21 get_by_ext, remove_dead_links
22 :group file manipulation: norm_read, norm_open, lines, stream_lines, lines,\ 22 :group file manipulation: norm_read, norm_open, lines, stream_lines, lines,\
23 write_open_mode, ensure_fs_mode, export 23 write_open_mode, ensure_fs_mode, export
24 :sort: path manipulation, file manipulation 24 :sort: path manipulation, file manipulation
25 """ 25 """
26
27 from __future__ import print_function
28
26 __docformat__ = "restructuredtext en" 29 __docformat__ = "restructuredtext en"
27 30
28 import sys 31 import sys
29 import shutil 32 import shutil
30 import mimetypes 33 import mimetypes
31 from os.path import isabs, isdir, islink, split, exists, normpath, join 34 from os.path import isabs, isdir, islink, split, exists, normpath, join
32 from os.path import abspath 35 from os.path import abspath
33 from os import sep, mkdir, remove, listdir, stat, chmod, walk 36 from os import sep, mkdir, remove, listdir, stat, chmod, walk
34 from stat import ST_MODE, S_IWRITE 37 from stat import ST_MODE, S_IWRITE
35 from cStringIO import StringIO
36 38
37 from logilab.common import STD_BLACKLIST as BASE_BLACKLIST, IGNORED_EXTENSIONS 39 from logilab.common import STD_BLACKLIST as BASE_BLACKLIST, IGNORED_EXTENSIONS
38 from logilab.common.shellutils import find 40 from logilab.common.shellutils import find
39 from logilab.common.deprecation import deprecated 41 from logilab.common.deprecation import deprecated
40 from logilab.common.compat import FileIO, any 42 from logilab.common.compat import FileIO
41 43
42 def first_level_directory(path): 44 def first_level_directory(path):
43 """Return the first level directory of a path. 45 """Return the first level directory of a path.
44 46
45 >>> first_level_directory('home/syt/work') 47 >>> first_level_directory('home/syt/work')
46 'home' 48 'home'
47 >>> first_level_directory('/home/syt/work') 49 >>> first_level_directory('/home/syt/work')
48 '/' 50 '/'
49 >>> first_level_directory('work') 51 >>> first_level_directory('work')
50 'work' 52 'work'
(...skipping 317 matching lines...) Expand 10 before | Expand all | Expand 10 after
368 if not exists(dest): 370 if not exists(dest):
369 mkdir(dest) 371 mkdir(dest)
370 for filename in filenames: 372 for filename in filenames:
371 # don't include binary files 373 # don't include binary files
372 # endswith does not accept tuple in 2.4 374 # endswith does not accept tuple in 2.4
373 if any([filename.endswith(ext) for ext in ignore_ext]): 375 if any([filename.endswith(ext) for ext in ignore_ext]):
374 continue 376 continue
375 src = join(directory, filename) 377 src = join(directory, filename)
376 dest = to_dir + src[len(from_dir):] 378 dest = to_dir + src[len(from_dir):]
377 if verbose: 379 if verbose:
378 print >> sys.stderr, src, '->', dest 380 print(src, '->', dest, file=sys.stderr)
379 if exists(dest): 381 if exists(dest):
380 remove(dest) 382 remove(dest)
381 shutil.copy2(src, dest) 383 shutil.copy2(src, dest)
382 384
383 385
384 def remove_dead_links(directory, verbose=0): 386 def remove_dead_links(directory, verbose=0):
385 """Recursively traverse directory and remove all dead links. 387 """Recursively traverse directory and remove all dead links.
386 388
387 :type directory: str 389 :type directory: str
388 :param directory: directory to cleanup 390 :param directory: directory to cleanup
389 391
390 :type verbose: bool 392 :type verbose: bool
391 :param verbose: 393 :param verbose:
392 flag indicating whether information about deleted links should be 394 flag indicating whether information about deleted links should be
393 printed to stderr, default to False 395 printed to stderr, default to False
394 """ 396 """
395 for dirpath, dirname, filenames in walk(directory): 397 for dirpath, dirname, filenames in walk(directory):
396 for filename in dirnames + filenames: 398 for filename in dirnames + filenames:
397 src = join(dirpath, filename) 399 src = join(dirpath, filename)
398 if islink(src) and not exists(src): 400 if islink(src) and not exists(src):
399 if verbose: 401 if verbose:
400 print 'remove dead link', src 402 print('remove dead link', src)
401 remove(src) 403 remove(src)
402 404
OLDNEW
« no previous file with comments | « third_party/logilab/common/deprecation.py ('k') | third_party/logilab/common/graph.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698