/usr/lib/python2.7/dist-packages/chemfp/commandline/cmdsupport.py is in python-chemfp 1.1p1-2.1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 | from __future__ import absolute_import
import os
import sys
import itertools
from .. import ChemFPError, Metadata
def mutual_exclusion(parser, args, default, groups):
true_groups = []
for g in groups:
if getattr(args, g):
true_groups.append(g)
if not true_groups:
setattr(args, default, True)
elif len(true_groups) == 1:
pass
else:
parser.error("Cannot specify both --%s and --%s" % (true_groups[0], true_groups[1]))
def sys_exit_opener(opener, metadata, source, format, id_tag, errors):
try:
return opener.read_structure_fingerprints(source, format, id_tag, errors, metadata=metadata)
except (IOError, ChemFPError, ValueError), err:
sys.stderr.write("Problem reading structure fingerprints: %s. Exiting.\n" % err)
raise SystemExit(1)
def iter_all_sources(opener, metadata, filenames, format, id_tag, errors):
for filename in filenames:
reader = sys_exit_opener(opener, metadata, filename, format, id_tag, errors)
for x in reader:
yield x
def read_multifile_structure_fingerprints(opener, filenames, format, id_tag, aromaticity, errors):
metadata = Metadata(aromaticity=aromaticity)
if not filenames:
reader = sys_exit_opener(opener, metadata, None, format, id_tag, errors)
return reader.metadata, reader
reader = sys_exit_opener(opener, metadata, filenames[0], format, id_tag, errors)
if len(filenames) == 1:
return reader.metadata, reader
reader = sys_exit_opener(opener, metadata, filenames[0], format, id_tag, errors)
reader.metadata.sources = filenames
multi_reader = itertools.chain(reader, iter_all_sources(opener, metadata, filenames[1:], format, id_tag, errors))
return reader.metadata, multi_reader
def is_valid_tag(tag):
if tag is None:
return True
for c in "<>\r\n":
if c in tag:
return False
return True
def check_filenames(filenames):
if not filenames:
return None
for filename in filenames:
if not os.path.exists(filename):
return filename
return None
|