--- a/Bio/SeqIO/UniprotIO.orig.py 2020-02-29 21:32:54.957544008 +0100
+++ b/Bio/SeqIO/UniprotIO.py 2020-02-29 21:38:42.446966155 +0100
@@ -252,11 +252,11 @@ def _parse_comment(element):
if element.attrib["type"] in simple_comments:
ann_key = "comment_%s" % element.attrib["type"].replace(" ", "")
- for text_element in element.getiterator(NS + "text"):
+ for text_element in element.iter(NS + "text"):
if text_element.text:
append_to_annotations(ann_key, text_element.text)
elif element.attrib["type"] == "subcellular location":
- for subloc_element in element.getiterator(NS + "subcellularLocation"):
+ for subloc_element in element.iter(NS + "subcellularLocation"):
for el in subloc_element:
if el.text:
ann_key = "comment_%s_%s" % (
@@ -265,21 +265,21 @@ def _parse_comment(element):
)
append_to_annotations(ann_key, el.text)
elif element.attrib["type"] == "interaction":
- for interact_element in element.getiterator(NS + "interactant"):
+ for interact_element in element.iter(NS + "interactant"):
ann_key = "comment_%s_intactId" % element.attrib["type"]
append_to_annotations(ann_key, interact_element.attrib["intactId"])
elif element.attrib["type"] == "alternative products":
- for alt_element in element.getiterator(NS + "isoform"):
+ for alt_element in element.iter(NS + "isoform"):
ann_key = "comment_%s_isoform" % element.attrib["type"].replace(
" ", ""
)
- for id_element in alt_element.getiterator(NS + "id"):
+ for id_element in alt_element.iter(NS + "id"):
append_to_annotations(ann_key, id_element.text)
elif element.attrib["type"] == "mass spectrometry":
ann_key = "comment_%s" % element.attrib["type"].replace(" ", "")
start = end = 0
- for el in element.getiterator(NS + "location"):
- pos_els = list(el.getiterator(NS + "position"))
+ for el in element.iter(NS + "location"):
+ pos_els = list(el.iter(NS + "position"))
# this try should be avoided, maybe it is safer to skip position parsing for mass spectrometry
try:
if pos_els:
@@ -287,12 +287,10 @@ def _parse_comment(element):
start = end - 1
else:
start = int(
- list(el.getiterator(NS + "begin"))[0].attrib["position"]
+ list(el.iter(NS + "begin"))[0].attrib["position"]
)
start -= 1
- end = int(
- list(el.getiterator(NS + "end"))[0].attrib["position"]
- )
+ end = int(list(el.iter(NS + "end"))[0].attrib["position"])
except (ValueError, KeyError):
# undefined positions or erroneously mapped
pass
@@ -307,9 +305,9 @@ def _parse_comment(element):
elif element.attrib["type"] == "sequence caution":
pass # not parsed: few information, complex structure
elif element.attrib["type"] == "online information":
- for link_element in element.getiterator(NS + "link"):
+ for link_element in element.iter(NS + "link"):
ann_key = "comment_%s" % element.attrib["type"].replace(" ", "")
- for id_element in link_element.getiterator(NS + "link"):
+ for id_element in link_element.iter(NS + "link"):
append_to_annotations(
ann_key,
"%s@%s"
From 9c2879e5a91935e675de0a5774ad23e7368e0764 Mon Sep 17 00:00:00 2001
From: Karthikeyan Singaravelan <tir.karthi@gmail.com>
Date: Sun, 1 Mar 2020 18:35:57 +0530
Subject: [PATCH] Use list()/iteration instead of getchildren for Python 3.9
compatibility.
---
Bio/KEGG/KGML/KGML_parser.py | 8 ++++----
Bio/Phylo/NeXMLIO.py | 6 +++---
2 files changed, 7 insertions(+), 7 deletions(-)
diff --git a/Bio/KEGG/KGML/KGML_parser.py b/Bio/KEGG/KGML/KGML_parser.py
index c0d9f12e88..662cde36bd 100644
--- a/Bio/KEGG/KGML/KGML_parser.py
+++ b/Bio/KEGG/KGML/KGML_parser.py
@@ -115,7 +115,7 @@ def _parse_entry(element):
new_entry = Entry()
for k, v in element.attrib.items():
new_entry.__setattr__(k, v)
- for subelement in element.getchildren():
+ for subelement in element:
if subelement.tag == "graphics":
_parse_graphics(subelement, new_entry)
elif subelement.tag == "component":
@@ -138,7 +138,7 @@ def _parse_reaction(element):
new_reaction = Reaction()
for k, v in element.attrib.items():
new_reaction.__setattr__(k, v)
- for subelement in element.getchildren():
+ for subelement in element:
if subelement.tag == "substrate":
new_reaction.add_substrate(int(subelement.attrib["id"]))
elif subelement.tag == "product":
@@ -150,7 +150,7 @@ def _parse_relation(element):
new_relation.entry1 = int(element.attrib["entry1"])
new_relation.entry2 = int(element.attrib["entry2"])
new_relation.type = element.attrib["type"]
- for subtype in element.getchildren():
+ for subtype in element:
name, value = subtype.attrib["name"], subtype.attrib["value"]
if name in ("compound", "hidden compound"):
new_relation.subtypes.append((name, int(value)))
@@ -163,7 +163,7 @@ def _parse_relation(element):
self.pathway = Pathway()
# Get information about the pathway itself
_parse_pathway(self.entry.attrib)
- for element in self.entry.getchildren():
+ for element in self.entry:
if element.tag == "entry":
_parse_entry(element)
elif element.tag == "reaction":
diff --git a/Bio/Phylo/NeXMLIO.py b/Bio/Phylo/NeXMLIO.py
index 8b173d6528..e18364824a 100644
--- a/Bio/Phylo/NeXMLIO.py
+++ b/Bio/Phylo/NeXMLIO.py
@@ -138,7 +138,7 @@ def parse(self, values_are_confidence=False, rooted=False):
node_children = {}
root = None
- child_tags = node.getchildren()
+ child_tags = list(node)
nodes = []
edges = []
for child in child_tags:
@@ -155,7 +155,7 @@ def parse(self, values_are_confidence=False, rooted=False):
if "root" in node.attrib and node.attrib["root"] == "true":
root = node_id
- for child in node.getchildren():
+ for child in node:
if child.tag == qUri("nex:meta"):
self.add_annotation(node_dict[node_id], child)
@@ -176,7 +176,7 @@ def parse(self, values_are_confidence=False, rooted=False):
):
node_dict[tar]["confidence"] = float(edge.attrib["content"])
- for child in edge.getchildren():
+ for child in edge:
if child.tag == qUri("nex:meta"):
self.add_annotation(node_dict[tar], child)
From ba893ee4afdcb6bf8e763f3e09ffab1698276ebd Mon Sep 17 00:00:00 2001
From: Chris Rands <c_rands100@hotmail.com>
Date: Sun, 19 Jan 2020 21:23:17 +0100
Subject: [PATCH] drop redudant arg
---
Bio/AlignIO/__init__.py | 4 ++--
Bio/PDB/PDBParser.py | 2 +-
Bio/SCOP/Cla.py | 4 ++--
Bio/SearchIO/__init__.py | 2 +-
Bio/SeqIO/AceIO.py | 6 +++---
Bio/SeqIO/FastaIO.py | 4 ++--
Bio/SeqIO/IgIO.py | 2 +-
Bio/SeqIO/PdbIO.py | 8 ++++----
Bio/SeqIO/PhdIO.py | 2 +-
Bio/SeqIO/PirIO.py | 2 +-
Bio/SeqIO/QualityIO.py | 30 +++++++++++++++---------------
Bio/SeqIO/SwissIO.py | 2 +-
Bio/SeqIO/TabIO.py | 2 +-
Bio/SeqIO/UniprotIO.py | 2 +-
Bio/phenotype/__init__.py | 2 +-
Tests/test_KGML_graphics.py | 2 +-
Tests/test_KGML_graphics_online.py | 2 +-
Tests/test_KGML_nographics.py | 4 ++--
Tests/test_PDB.py | 2 +-
19 files changed, 42 insertions(+), 42 deletions(-)
diff --git a/Bio/AlignIO/__init__.py b/Bio/AlignIO/__init__.py
index fc92dc161c..963a424f91 100644
--- a/Bio/AlignIO/__init__.py
+++ b/Bio/AlignIO/__init__.py
@@ -364,7 +364,7 @@ def parse(handle, format, seq_count=None, alphabet=None):
if seq_count is not None and not isinstance(seq_count, int):
raise TypeError("Need integer for seq_count (sequences per alignment)")
- with as_handle(handle, "rU") as fp:
+ with as_handle(handle) as fp:
# Map the file format to a sequence iterator:
if format in _FormatToIterator:
iterator_generator = _FormatToIterator[format]
@@ -471,7 +471,7 @@ def convert(in_file, in_format, out_file, out_format, alphabet=None):
"""
# TODO - Add optimised versions of important conversions
# For now just off load the work to SeqIO parse/write
- with as_handle(in_file, "rU") as in_handle:
+ with as_handle(in_file) as in_handle:
# Don't open the output file until we've checked the input is OK:
alignments = parse(in_handle, in_format, None, alphabet)
diff --git a/Bio/PDB/PDBParser.py b/Bio/PDB/PDBParser.py
index bc78486b0e..c85b4bb612 100644
--- a/Bio/PDB/PDBParser.py
+++ b/Bio/PDB/PDBParser.py
@@ -89,7 +89,7 @@ def get_structure(self, id, file):
# Make a StructureBuilder instance (pass id of structure as parameter)
self.structure_builder.init_structure(id)
- with as_handle(file, mode="rU") as handle:
+ with as_handle(file) as handle:
lines = handle.readlines()
if not lines:
raise ValueError("Empty file.")
diff --git a/Bio/SCOP/Cla.py b/Bio/SCOP/Cla.py
index 50ee85e029..3546eaa587 100644
--- a/Bio/SCOP/Cla.py
+++ b/Bio/SCOP/Cla.py
@@ -103,7 +103,7 @@ def __init__(self, filename):
"""
dict.__init__(self)
self.filename = filename
- with open(self.filename, "rU") as f:
+ with open(self.filename) as f:
position = 0
while True:
line = f.readline()
@@ -121,7 +121,7 @@ def __getitem__(self, key):
"""Return an item from the indexed file."""
position = dict.__getitem__(self, key)
- with open(self.filename, "rU") as f:
+ with open(self.filename) as f:
f.seek(position)
line = f.readline()
record = Record(line)
diff --git a/Bio/SearchIO/__init__.py b/Bio/SearchIO/__init__.py
index 04ef42fa81..1f7b5768e9 100755
--- a/Bio/SearchIO/__init__.py
+++ b/Bio/SearchIO/__init__.py
@@ -314,7 +314,7 @@
handle_kwargs["encoding"] = "utf-8"
# and start iterating
- with as_handle(handle, "rU", **handle_kwargs) as source_file:
+ with as_handle(handle, **handle_kwargs) as source_file:
generator = iterator(source_file, **kwargs)
for qresult in generator:
diff --git a/Bio/SeqIO/AceIO.py b/Bio/SeqIO/AceIO.py
index 516759a520..b8923543ef 100644
--- a/Bio/SeqIO/AceIO.py
+++ b/Bio/SeqIO/AceIO.py
@@ -32,7 +32,7 @@ def AceIterator(handle):
letter_annotations dictionary under the "phred_quality" key.
>>> from Bio import SeqIO
- >>> with open("Ace/consed_sample.ace", "rU") as handle:
+ >>> with open("Ace/consed_sample.ace") as handle:
... for record in SeqIO.parse(handle, "ace"):
... print("%s %s... %i" % (record.id, record.seq[:10], len(record)))
... print(max(record.letter_annotations["phred_quality"]))
@@ -47,7 +47,7 @@ def AceIterator(handle):
prevented output of the gapped sequence as FASTQ format.
>>> from Bio import SeqIO
- >>> with open("Ace/contig1.ace", "rU") as handle:
+ >>> with open("Ace/contig1.ace") as handle:
... for record in SeqIO.parse(handle, "ace"):
... print("%s ...%s..." % (record.id, record.seq[85:95]))
... print(record.letter_annotations["phred_quality"][85:95])
@@ -60,7 +60,7 @@ def AceIterator(handle):
90
"""
- with as_handle(handle, "rU") as handle:
+ with as_handle(handle) as handle:
for ace_contig in Ace.parse(handle):
# Convert the ACE contig record into a SeqRecord...
diff --git a/Bio/SeqIO/FastaIO.py b/Bio/SeqIO/FastaIO.py
index f5fbe94b61..7baf92c2ed 100644
--- a/Bio/SeqIO/FastaIO.py
+++ b/Bio/SeqIO/FastaIO.py
@@ -174,7 +174,7 @@ def FastaIterator(handle, alphabet=single_letter_alphabet, title2ids=None):
DELTA
"""
- with as_handle(handle, "rU") as handle:
+ with as_handle(handle) as handle:
if title2ids:
for title, sequence in SimpleFastaParser(handle):
id, name, descr = title2ids(title)
@@ -210,7 +210,7 @@ def FastaTwoLineIterator(handle, alphabet=single_letter_alphabet):
Only the default title to ID/name/description parsing offered
by the relaxed FASTA parser is offered.
"""
- with as_handle(handle, "rU") as handle:
+ with as_handle(handle) as handle:
for title, sequence in FastaTwoLineParser(handle):
try:
first_word = title.split(None, 1)[0]
diff --git a/Bio/SeqIO/IgIO.py b/Bio/SeqIO/IgIO.py
index 10d71a84af..f5157c7b7b 100644
--- a/Bio/SeqIO/IgIO.py
+++ b/Bio/SeqIO/IgIO.py
@@ -59,7 +59,7 @@ def IgIterator(handle, alphabet=single_letter_alphabet):
SYK_SYK length 330
"""
- with as_handle(handle, "rU") as handle:
+ with as_handle(handle) as handle:
# Skip any file header text before the first record (;; lines)
while True:
diff --git a/Bio/SeqIO/PdbIO.py b/Bio/SeqIO/PdbIO.py
index 165673d309..6214e63d97 100644
--- a/Bio/SeqIO/PdbIO.py
+++ b/Bio/SeqIO/PdbIO.py
@@ -148,7 +148,7 @@ def PdbSeqresIterator(handle):
chains = collections.defaultdict(list)
metadata = collections.defaultdict(list)
- with as_handle(handle, "rU") as handle:
+ with as_handle(handle) as handle:
for line in handle:
empty = False
rec_name = line[0:6].strip()
@@ -283,7 +283,7 @@ def PdbAtomIterator(handle):
# Only import PDB when needed, to avoid/delay NumPy dependency in SeqIO
from Bio.PDB import PDBParser
- with as_handle(handle, "rU") as handle:
+ with as_handle(handle) as handle:
struct = PDBParser().get_structure(None, handle)
pdb_id = struct.header["idcode"]
if not pdb_id:
@@ -368,7 +368,7 @@ def CifSeqresIterator(handle):
# Only import PDB when needed, to avoid/delay NumPy dependency in SeqIO
from Bio.PDB.MMCIF2Dict import MMCIF2Dict
- with as_handle(handle, "rU") as handle:
+ with as_handle(handle) as handle:
chains = collections.defaultdict(list)
metadata = collections.defaultdict(list)
@@ -498,7 +498,7 @@ def CifAtomIterator(handle):
# file. We copy the contents of the handle into a StringIO buffer first,
# so that both MMCIF2Dict and MMCIFParser can consume the handle.
buffer = StringIO()
- with as_handle(handle, "rU") as handle:
+ with as_handle(handle) as handle:
shutil.copyfileobj(handle, buffer)
# check if file is empty
diff --git a/Bio/SeqIO/PhdIO.py b/Bio/SeqIO/PhdIO.py
index 27ba7a8395..3c2dedfa52 100644
--- a/Bio/SeqIO/PhdIO.py
+++ b/Bio/SeqIO/PhdIO.py
@@ -65,7 +65,7 @@ def PhdIterator(handle):
This uses the Bio.Sequencing.Phd module to do the hard work.
"""
- with as_handle(handle, "rU") as handle:
+ with as_handle(handle) as handle:
phd_records = Phd.parse(handle)
for phd_record in phd_records:
# Convert the PHY record into a SeqRecord...
diff --git a/Bio/SeqIO/PirIO.py b/Bio/SeqIO/PirIO.py
index d4ed6c0703..aa462032b1 100644
--- a/Bio/SeqIO/PirIO.py
+++ b/Bio/SeqIO/PirIO.py
@@ -141,7 +141,7 @@ def PirIterator(handle):
HLA:HLA01083 length 188
"""
- with as_handle(handle, "rU") as handle:
+ with as_handle(handle) as handle:
# Skip any text before the first record (e.g. blank lines, comments)
while True:
line = handle.readline()
diff --git a/Bio/SeqIO/QualityIO.py b/Bio/SeqIO/QualityIO.py
index 9516313070..73152d5b10 100644
--- a/Bio/SeqIO/QualityIO.py
+++ b/Bio/SeqIO/QualityIO.py
@@ -888,7 +888,7 @@ def FastqGeneralIterator(handle):
Using this tricky example file as input, this short bit of code demonstrates
what this parsing function would return:
- >>> with open("Quality/tricky.fastq", "rU") as handle:
+ >>> with open("Quality/tricky.fastq") as handle:
... for (title, sequence, quality) in FastqGeneralIterator(handle):
... print(title)
... print("%s %s" % (sequence, quality))
@@ -909,7 +909,7 @@ def FastqGeneralIterator(handle):
is that (provided there are no line breaks in the quality sequence) it
would prevent the above problem with the "@" character.
"""
- with as_handle(handle, "rU") as handle:
+ with as_handle(handle) as handle:
# We need to call handle.readline() at least four times per record,
# so we'll save a property look up each time:
handle_readline = handle.readline
@@ -1016,7 +1016,7 @@ def FastqPhredIterator(handle, alphabet=single_letter_alphabet, title2ids=None):
Using this module directly you might run:
- >>> with open("Quality/example.fastq", "rU") as handle:
+ >>> with open("Quality/example.fastq") as handle:
... for record in FastqPhredIterator(handle):
... print("%s %s" % (record.id, record.seq))
EAS54_6_R1_2_1_413_324 CCCTTCTTGTCTTCAGCGTTTCTCC
@@ -1027,7 +1027,7 @@ def FastqPhredIterator(handle, alphabet=single_letter_alphabet, title2ids=None):
(or "fastq-sanger") as the format:
>>> from Bio import SeqIO
- >>> with open("Quality/example.fastq", "rU") as handle:
+ >>> with open("Quality/example.fastq") as handle:
... for record in SeqIO.parse(handle, "fastq"):
... print("%s %s" % (record.id, record.seq))
EAS54_6_R1_2_1_413_324 CCCTTCTTGTCTTCAGCGTTTCTCC
@@ -1111,7 +1111,7 @@ def FastqSolexaIterator(handle, alphabet=single_letter_alphabet, title2ids=None)
Using this module directly you might run:
- >>> with open("Quality/solexa_example.fastq", "rU") as handle:
+ >>> with open("Quality/solexa_example.fastq") as handle:
... for record in FastqSolexaIterator(handle):
... print("%s %s" % (record.id, record.seq))
SLXA-B3_649_FC8437_R1_1_1_610_79 GATGTGCAATACCTTTGTAGAGGAA
@@ -1124,7 +1124,7 @@ def FastqSolexaIterator(handle, alphabet=single_letter_alphabet, title2ids=None)
"fastq-solexa" as the format:
>>> from Bio import SeqIO
- >>> with open("Quality/solexa_example.fastq", "rU") as handle:
+ >>> with open("Quality/solexa_example.fastq") as handle:
... for record in SeqIO.parse(handle, "fastq-solexa"):
... print("%s %s" % (record.id, record.seq))
SLXA-B3_649_FC8437_R1_1_1_610_79 GATGTGCAATACCTTTGTAGAGGAA
@@ -1160,7 +1160,7 @@ def FastqSolexaIterator(handle, alphabet=single_letter_alphabet, title2ids=None)
use the Bio.SeqIO.read() function:
>>> from Bio import SeqIO
- >>> with open("Quality/solexa_faked.fastq", "rU") as handle:
+ >>> with open("Quality/solexa_faked.fastq") as handle:
... record = SeqIO.read(handle, "fastq-solexa")
>>> print("%s %s" % (record.id, record.seq))
slxa_0001_1_0001_01 ACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTNNNNNN
@@ -1300,7 +1300,7 @@ def QualPhredIterator(handle, alphabet=single_letter_alphabet, title2ids=None):
Using this module directly you might run:
- >>> with open("Quality/example.qual", "rU") as handle:
+ >>> with open("Quality/example.qual") as handle:
... for record in QualPhredIterator(handle):
... print("%s %s" % (record.id, record.seq))
EAS54_6_R1_2_1_413_324 ?????????????????????????
@@ -1311,7 +1311,7 @@ def QualPhredIterator(handle, alphabet=single_letter_alphabet, title2ids=None):
as the format:
>>> from Bio import SeqIO
- >>> with open("Quality/example.qual", "rU") as handle:
+ >>> with open("Quality/example.qual") as handle:
... for record in SeqIO.parse(handle, "qual"):
... print("%s %s" % (record.id, record.seq))
EAS54_6_R1_2_1_413_324 ?????????????????????????
@@ -1327,7 +1327,7 @@ def QualPhredIterator(handle, alphabet=single_letter_alphabet, title2ids=None):
>>> from Bio import SeqIO
>>> from Bio.Alphabet import generic_dna
- >>> with open("Quality/example.qual", "rU") as handle:
+ >>> with open("Quality/example.qual") as handle:
... for record in SeqIO.parse(handle, "qual", alphabet=generic_dna):
... print("%s %s" % (record.id, record.seq))
EAS54_6_R1_2_1_413_324 NNNNNNNNNNNNNNNNNNNNNNNNN
@@ -1350,7 +1350,7 @@ def QualPhredIterator(handle, alphabet=single_letter_alphabet, title2ids=None):
scores but will replace them with the lowest possible PHRED score of zero.
This will trigger a warning, previously it raised a ValueError exception.
"""
- with as_handle(handle, "rU") as handle:
+ with as_handle(handle) as handle:
# Skip any text before the first record (e.g. blank lines, comments)
while True:
line = handle.readline()
@@ -1882,8 +1882,8 @@ def PairedFastaQualIterator(
can't be used to read the two files together - but this function can!
For example,
- >>> with open("Quality/example.fasta", "rU") as f:
- ... with open("Quality/example.qual", "rU") as q:
+ >>> with open("Quality/example.fasta") as f:
+ ... with open("Quality/example.qual") as q:
... for record in PairedFastaQualIterator(f, q):
... print("%s %s" % (record.id, record.seq))
...
@@ -1903,8 +1903,8 @@ def PairedFastaQualIterator(
this function to convert paired FASTA and QUAL files into FASTQ files:
>>> from Bio import SeqIO
- >>> with open("Quality/example.fasta", "rU") as f:
- ... with open("Quality/example.qual", "rU") as q:
+ >>> with open("Quality/example.fasta") as f:
+ ... with open("Quality/example.qual") as q:
... SeqIO.write(PairedFastaQualIterator(f, q), "Quality/temp.fastq", "fastq")
...
3
diff --git a/Bio/SeqIO/SwissIO.py b/Bio/SeqIO/SwissIO.py
index c2e5be16b8..b9730dcff0 100644
--- a/Bio/SeqIO/SwissIO.py
+++ b/Bio/SeqIO/SwissIO.py
@@ -73,7 +73,7 @@ def SwissIterator(handle):
Rather than calling it directly, you are expected to use this
parser via Bio.SeqIO.parse(..., format="swiss") instead.
"""
- with as_handle(handle, "rU") as handle:
+ with as_handle(handle) as handle:
swiss_records = SwissProt.parse(handle)
for swiss_record in swiss_records:
diff --git a/Bio/SeqIO/TabIO.py b/Bio/SeqIO/TabIO.py
index 3f99fe40ac..686046c134 100644
--- a/Bio/SeqIO/TabIO.py
+++ b/Bio/SeqIO/TabIO.py
@@ -73,7 +73,7 @@ def TabIterator(handle, alphabet=single_letter_alphabet):
gi|45478721|ref|NP_995576.1| length 90
"""
- with as_handle(handle, "rU") as handle:
+ with as_handle(handle) as handle:
for line in handle:
try:
title, seq = line.split("\t") # will fail if more than one tab!
diff --git a/Bio/SeqIO/UniprotIO.py b/Bio/SeqIO/UniprotIO.py
index c8307beaa9..ff75ab8268 100644
--- a/Bio/SeqIO/UniprotIO.py
+++ b/Bio/SeqIO/UniprotIO.py
@@ -43,7 +43,7 @@ def UniprotIterator(
return_raw_comments = True --> comment fields are returned as complete XML to allow further processing
skip_parsing_errors = True --> if parsing errors are found, skip to next entry
"""
- with as_handle(handle, "rU") as handle:
+ with as_handle(handle) as handle:
# check if file is empty
if handle.readline() == "":
diff --git a/Bio/phenotype/__init__.py b/Bio/phenotype/__init__.py
index 03b1d3926b..df70bb745d 100644
--- a/Bio/phenotype/__init__.py
+++ b/Bio/phenotype/__init__.py
@@ -178,7 +178,7 @@ def parse(handle, format):
if format != format.lower():
raise ValueError("Format string '%s' should be lower case" % format)
- with as_handle(handle, "rU") as fp:
+ with as_handle(handle) as fp:
# Map the file format to a sequence iterator:
if format in _FormatToIterator:
iterator_generator = _FormatToIterator[format]
diff --git a/Tests/test_KGML_graphics.py b/Tests/test_KGML_graphics.py
index cb05c29249..f66e089ff8 100644
--- a/Tests/test_KGML_graphics.py
+++ b/Tests/test_KGML_graphics.py
@@ -108,7 +108,7 @@ def test_render_KGML_basic(self):
# We test rendering of the original KEGG KGML using only local
# files.
for p in self.data:
- with open(p.infilename, "rU") as f:
+ with open(p.infilename) as f:
pathway = read(f)
pathway.image = p.pathway_image
kgml_map = KGMLCanvas(pathway)
diff --git a/Tests/test_KGML_graphics_online.py b/Tests/test_KGML_graphics_online.py
index 22d923daf0..3c101df913 100644
--- a/Tests/test_KGML_graphics_online.py
+++ b/Tests/test_KGML_graphics_online.py
@@ -74,7 +74,7 @@ def test_render_KGML_import_map(self):
"""
# We test rendering of the original KEGG KGML using imported files
for p in self.data:
- with open(p.infilename, "rU") as f:
+ with open(p.infilename) as f:
pathway = read(f)
kgml_map = KGMLCanvas(pathway, import_imagemap=True)
kgml_map.draw(p.output_stem + "_importmap.pdf")
diff --git a/Tests/test_KGML_nographics.py b/Tests/test_KGML_nographics.py
index 105a7be415..8102af4ade 100644
--- a/Tests/test_KGML_nographics.py
+++ b/Tests/test_KGML_nographics.py
@@ -83,7 +83,7 @@ def test_read_and_write_KGML_files(self):
"""
for p in self.data:
# Test opening file
- with open(p.infilename, "rU") as f:
+ with open(p.infilename) as f:
pathway = read(f)
# Do we have the correct number of elements of each type
self.assertEqual((len(pathway.entries),
@@ -95,7 +95,7 @@ def test_read_and_write_KGML_files(self):
with open(p.outfilename, "w") as f:
f.write(pathway.get_KGML())
# Can we read the file we wrote?
- with open(p.outfilename, "rU") as f:
+ with open(p.outfilename) as f:
pathway = read(f)
# Do we have the correct number of elements of each type
self.assertEqual((len(pathway.entries),
--- a/Tests/test_PDB.py.python39 2019-12-20 13:37:02.000000000 +0100
+++ b/Tests/test_PDB.py 2020-03-01 14:58:17.590202068 +0100
@@ -538,7 +538,7 @@
try:
io.save(filename)
# Check if there are lines besides 'ATOM', 'TER' and 'END'
- with open(filename, "rU") as handle:
+ with open(filename) as handle:
record_set = {l[0:6] for l in handle}
record_set -= {"ATOM ", "HETATM", "MODEL ", "ENDMDL", "TER\n", "TER ", "END\n", "END "}
self.assertEqual(record_set, set())