diff --git a/Bio/Seq.py b/Bio/Seq.py
index bd8fd9eee..38f31bc33 100644
--- a/Bio/Seq.py
+++ b/Bio/Seq.py
@@ -281,6 +281,20 @@ class SequenceDataAbstractBaseClass(ABC):
         """Return a copy of data with all ASCII characters converted to lowercase."""
         return bytes(self).lower()
 
+    def isupper(self):
+        """Return True if all ASCII characters in data are uppercase.
+
+        If there are no cased characters, method returns False.
+        """
+        return bytes(self).isupper()
+
+    def islower(self):
+        """Return True if all ASCII characters in data are lowercase.
+
+        If there are no cased characters, method returns False.
+        """
+        return bytes(self).islower()
+
     def replace(self, old, new):
         """Return a copy with all occurrences of substring old replaced by new."""
         return bytes(self).replace(old, new)
@@ -1305,6 +1319,20 @@ class _SeqAbstractBaseClass(ABC):
         else:
             return self.__class__(data)
 
+    def isupper(self):
+        """Return True if all ASCII characters in data are uppercase.
+
+        If there are no cased characters, method returns False.
+        """
+        return self._data.isupper()
+
+    def islower(self):
+        """Return True if all ASCII characters in data are lowercase.
+
+        If there are no cased characters, method returns False.
+        """
+        return self._data.islower()
+
     def translate(
         self, table="Standard", stop_symbol="*", to_stop=False, cds=False, gap="-"
     ):
@@ -2891,6 +2919,22 @@ class _UndefinedSequenceData(SequenceDataAbstractBaseClass):
         # sequence of the same length
         return _UndefinedSequenceData(self._length)
 
+    def isupper(self):
+        """Return True if all ASCII characters in data are uppercase.
+
+        If there are no cased characters, method returns False.
+        """
+        # Character case is irrelevant for an undefined sequence
+        raise UndefinedSequenceError("Sequence content is undefined")
+
+    def islower(self):
+        """Return True if all ASCII characters in data are lowercase.
+
+        If there are no cased characters, method returns False.
+        """
+        # Character case is irrelevant for an undefined sequence
+        raise UndefinedSequenceError("Sequence content is undefined")
+
     def replace(self, old, new):
         """Return a copy with all occurrences of substring old replaced by new."""
         # Replacing substring old by new in an undefined sequence will result
@@ -3084,6 +3128,22 @@ class _PartiallyDefinedSequenceData(SequenceDataAbstractBaseClass):
         data = {start: seq.lower() for start, seq in self._data.items()}
         return _PartiallyDefinedSequenceData(self._length, data)
 
+    def isupper(self):
+        """Return True if all ASCII characters in data are uppercase.
+
+        If there are no cased characters, method returns False.
+        """
+        # Character case is irrelevant for an undefined sequence
+        raise UndefinedSequenceError("Sequence content is only partially defined")
+
+    def islower(self):
+        """Return True if all ASCII characters in data are lowercase.
+
+        If there are no cased characters, method returns False.
+        """
+        # Character case is irrelevant for an undefined sequence
+        raise UndefinedSequenceError("Sequence content is only partially defined")
+
     def translate(self, table, delete=b""):
         """Return a copy with each character mapped by the given translation table.
 
diff --git a/CONTRIB.rst b/CONTRIB.rst
index f554eb45b..d64d3f2b4 100644
--- a/CONTRIB.rst
+++ b/CONTRIB.rst
@@ -105,6 +105,7 @@ please open an issue on GitHub or mention it on the mailing list.
 - Eric Talevich <https://github.com/etal>
 - Erick Matsen <surname at fhcrc dot org>
 - Erik Cederstrand <https://github.com/ecederstrand>
+- Erik Whiting <https://github.com/erik-whiting>
 - Fabian Egli <https://github.com/fabianegli>
 - Fei Qi <https://github.com/qifei9>
 - Foen Peng <https://github.com/foenpeng>
diff --git a/NEWS.rst b/NEWS.rst
index 72026a49e..0a685501f 100644
--- a/NEWS.rst
+++ b/NEWS.rst
@@ -45,6 +45,7 @@ possible, especially the following contributors:
 - Tim Burke
 - Michiel de Hoon
 - Peter Cock
+- Erik  Whiting
 
 3 June 2021: Biopython 1.79
 ===========================

diff --git a/Tests/test_SeqIO_TwoBitIO.py b/Tests/test_SeqIO_TwoBitIO.py
index 262afea0c..47e3c992a 100644
--- a/Tests/test_SeqIO_TwoBitIO.py
+++ b/Tests/test_SeqIO_TwoBitIO.py
@@ -459,6 +459,14 @@ class TestBaseClassMethods(unittest.TestCase):
         self.assertEqual(seq2_twobit_lower, seq2_fasta_lower)
         self.assertEqual(seq2_twobit_lower[140:210], seq2_fasta_lower[140:210])
 
+    def test_isupper(self):
+        self.assertEqual(self.seq1_twobit.isupper(), self.seq1_fasta.isupper())
+        self.assertEqual(self.seq2_twobit.isupper(), self.seq2_fasta.isupper())
+
+    def test_islower(self):
+        self.assertEqual(self.seq1_twobit.islower(), self.seq1_fasta.islower())
+        self.assertEqual(self.seq2_twobit.islower(), self.seq2_fasta.islower())
+
     def test_replace(self):
         # seq.transcribe uses seq._data.replace
         self.assertEqual(self.seq1_twobit.transcribe(), self.seq1_fasta.transcribe())
diff --git a/Tests/test_Seq_objs.py b/Tests/test_Seq_objs.py
index 051d394a8..0e725a2e0 100644
--- a/Tests/test_Seq_objs.py
+++ b/Tests/test_Seq_objs.py
@@ -608,6 +608,28 @@ class StringMethodTests(unittest.TestCase):
             Seq("ABCD").lower(inplace=True)
         self.assertEqual(str(cm.exception), "Sequence is immutable")
 
+    def test_str_isupper(self):
+        """Check matches the python string isupper method."""
+        for example1 in self._examples:
+            str1 = str(example1)
+            if isinstance(example1, _UndefinedSequenceData):
+                with self.assertRaises(UndefinedSequenceError):
+                    example1.isupper()
+            else:
+                example1 = example1.isupper()
+            self.assertEqual(example1, str1.isupper())
+
+    def test_str_islower(self):
+        """Check matches the python string islower method."""
+        for example1 in self._examples:
+            str1 = str(example1)
+            if isinstance(example1, _UndefinedSequenceData):
+                with self.assertRaises(UndefinedSequenceError):
+                    example1.islower()
+            else:
+                example1 = example1.islower()
+            self.assertEqual(example1, str1.islower())
+
     def test_str_replace(self):
         """Check matches the python string replace method."""
         s = Seq("AAGTACGT")
diff --git a/Tests/test_seq.py b/Tests/test_seq.py
index e861d4494..e3237233f 100644
--- a/Tests/test_seq.py
+++ b/Tests/test_seq.py
@@ -175,6 +175,8 @@ class TestSeqStringMethods(unittest.TestCase):
         for a in self.dna + self.rna + self.nuc + self.protein:
             self.assertEqual(a.lower(), str(a).lower())
             self.assertEqual(a.upper(), str(a).upper())
+            self.assertEqual(a.islower(), str(a).islower())
+            self.assertEqual(a.isupper(), str(a).isupper())
             self.assertEqual(a.strip(), str(a).strip())
             self.assertEqual(a.lstrip(), str(a).lstrip())
             self.assertEqual(a.rstrip(), str(a).rstrip())
@@ -184,22 +186,34 @@ class TestSeqStringMethods(unittest.TestCase):
         lseq = seq.lower()
         self.assertEqual(lseq, "acgt")
         self.assertEqual(seq, "ACgt")
+        self.assertTrue(lseq.islower())
+        self.assertFalse(seq.islower())
         lseq = seq.lower(inplace=False)
         self.assertEqual(lseq, "acgt")
         self.assertEqual(seq, "ACgt")
+        self.assertTrue(lseq.islower())
+        self.assertFalse(seq.islower())
         lseq = seq.lower(inplace=True)
         self.assertEqual(lseq, "acgt")
         self.assertIs(lseq, seq)
+        self.assertTrue(lseq.islower())
+        self.assertTrue(lseq.islower())
         seq = Seq.MutableSeq("ACgt")
         useq = seq.upper()
         self.assertEqual(useq, "ACGT")
         self.assertEqual(seq, "ACgt")
+        self.assertTrue(useq.isupper())
+        self.assertFalse(seq.isupper())
         useq = seq.upper(inplace=False)
         self.assertEqual(useq, "ACGT")
         self.assertEqual(seq, "ACgt")
+        self.assertTrue(useq.isupper())
+        self.assertFalse(seq.isupper())
         useq = seq.upper(inplace=True)
         self.assertEqual(useq, "ACGT")
         self.assertIs(useq, seq)
+        self.assertTrue(useq.isupper())
+        self.assertTrue(seq.isupper())
 
     def test_hash(self):
         with warnings.catch_warnings(record=True):

Add .islower() and .isupper() methods to Seq?
Some time ago there was the aim to make the Seq object more 'string-like'. This could include .islower() and .isupper() methods. Relevant SO question: https://stackoverflow.com/questions/69176192/attributeerror-seq-object-has-no-attribute-islower-in-protparam-module-of-b 
Tests/test_Seq_objs.py::StringMethodTests::test_str_islower Tests/test_Seq_objs.py::StringMethodTests::test_str_isupper Tests/test_seq.py::TestSeqStringMethods::test_mutableseq_upper_lower Tests/test_seq.py::TestSeqStringMethods::test_string_methods
Tests/test_Seq_objs.py::StringMethodTests::test_MutableSeq_extend Tests/test_Seq_objs.py::StringMethodTests::test_MutableSeq_init_error Tests/test_Seq_objs.py::StringMethodTests::test_MutableSeq_setitem Tests/test_Seq_objs.py::StringMethodTests::test_Seq_init_error Tests/test_Seq_objs.py::StringMethodTests::test_count_overlap Tests/test_Seq_objs.py::StringMethodTests::test_count_overlap_start_end_GG Tests/test_Seq_objs.py::StringMethodTests::test_count_overlap_start_end_NN Tests/test_Seq_objs.py::StringMethodTests::test_equality Tests/test_Seq_objs.py::StringMethodTests::test_join_MutableSeq Tests/test_Seq_objs.py::StringMethodTests::test_join_MutableSeq_TypeError_iter Tests/test_Seq_objs.py::StringMethodTests::test_join_MutableSeq_mixed Tests/test_Seq_objs.py::StringMethodTests::test_join_Seq Tests/test_Seq_objs.py::StringMethodTests::test_join_Seq_TypeError Tests/test_Seq_objs.py::StringMethodTests::test_join_UnknownSeq Tests/test_Seq_objs.py::StringMethodTests::test_join_UnknownSeq_TypeError_iter Tests/test_Seq_objs.py::StringMethodTests::test_str_comparison Tests/test_Seq_objs.py::StringMethodTests::test_str_count Tests/test_Seq_objs.py::StringMethodTests::test_str_count_overlap_GG Tests/test_Seq_objs.py::StringMethodTests::test_str_count_overlap_NN Tests/test_Seq_objs.py::StringMethodTests::test_str_encode Tests/test_Seq_objs.py::StringMethodTests::test_str_endswith Tests/test_Seq_objs.py::StringMethodTests::test_str_find Tests/test_Seq_objs.py::StringMethodTests::test_str_getitem Tests/test_Seq_objs.py::StringMethodTests::test_str_hash Tests/test_Seq_objs.py::StringMethodTests::test_str_index Tests/test_Seq_objs.py::StringMethodTests::test_str_length Tests/test_Seq_objs.py::StringMethodTests::test_str_lower Tests/test_Seq_objs.py::StringMethodTests::test_str_lstrip Tests/test_Seq_objs.py::StringMethodTests::test_str_rfind Tests/test_Seq_objs.py::StringMethodTests::test_str_rindex Tests/test_Seq_objs.py::StringMethodTests::test_str_rsplit Tests/test_Seq_objs.py::StringMethodTests::test_str_rstrip Tests/test_Seq_objs.py::StringMethodTests::test_str_split Tests/test_Seq_objs.py::StringMethodTests::test_str_startswith Tests/test_Seq_objs.py::StringMethodTests::test_str_strip Tests/test_Seq_objs.py::StringMethodTests::test_str_upper Tests/test_Seq_objs.py::StringMethodTests::test_the_back_transcription Tests/test_Seq_objs.py::StringMethodTests::test_the_complement Tests/test_Seq_objs.py::StringMethodTests::test_the_reverse_complement Tests/test_Seq_objs.py::StringMethodTests::test_the_transcription Tests/test_Seq_objs.py::StringMethodTests::test_the_translate Tests/test_Seq_objs.py::StringMethodTests::test_the_translation_of_ambig_codons Tests/test_Seq_objs.py::StringMethodTests::test_the_translation_of_invalid_codons Tests/test_Seq_objs.py::StringMethodTests::test_the_translation_of_stops Tests/test_Seq_objs.py::StringMethodTests::test_tomutable Tests/test_Seq_objs.py::StringMethodTests::test_toseq Tests/test_Seq_objs.py::ComparisonTests::test_eq Tests/test_Seq_objs.py::ComparisonTests::test_ge Tests/test_Seq_objs.py::ComparisonTests::test_gt Tests/test_Seq_objs.py::ComparisonTests::test_le Tests/test_Seq_objs.py::ComparisonTests::test_lt Tests/test_Seq_objs.py::ComparisonTests::test_ne Tests/test_Seq_objs.py::PartialSequenceTests::test_complement Tests/test_Seq_objs.py::PartialSequenceTests::test_getitem Tests/test_Seq_objs.py::PartialSequenceTests::test_init Tests/test_Seq_objs.py::PartialSequenceTests::test_lower_upper Tests/test_Seq_objs.py::PartialSequenceTests::test_multiplication Tests/test_Seq_objs.py::PartialSequenceTests::test_replace Tests/test_Seq_objs.py::PartialSequenceTests::test_repr Tests/test_Seq_objs.py::PartialSequenceTests::test_transcribe Tests/test_seq.py::TestSeq::test_as_string Tests/test_seq.py::TestSeq::test_cast_to_list Tests/test_seq.py::TestSeq::test_concatenation_of_seq Tests/test_seq.py::TestSeq::test_extract_third_nucleotide Tests/test_seq.py::TestSeq::test_first_nucleotide Tests/test_seq.py::TestSeq::test_last_nucleotide Tests/test_seq.py::TestSeq::test_length Tests/test_seq.py::TestSeq::test_replace Tests/test_seq.py::TestSeq::test_repr Tests/test_seq.py::TestSeq::test_reverse Tests/test_seq.py::TestSeq::test_seq_construction Tests/test_seq.py::TestSeq::test_slicing Tests/test_seq.py::TestSeq::test_truncated_repr Tests/test_seq.py::TestSeqStringMethods::test_add_method_using_wrong_object Tests/test_seq.py::TestSeqStringMethods::test_append_nucleotides Tests/test_seq.py::TestSeqStringMethods::test_append_proteins Tests/test_seq.py::TestSeqStringMethods::test_contains_method Tests/test_seq.py::TestSeqStringMethods::test_counting_characters Tests/test_seq.py::TestSeqStringMethods::test_endswith Tests/test_seq.py::TestSeqStringMethods::test_finding_characters Tests/test_seq.py::TestSeqStringMethods::test_greater_than_comparison Tests/test_seq.py::TestSeqStringMethods::test_greater_than_comparison_of_incompatible_types Tests/test_seq.py::TestSeqStringMethods::test_greater_than_or_equal_comparison Tests/test_seq.py::TestSeqStringMethods::test_greater_than_or_equal_comparison_of_incompatible_types Tests/test_seq.py::TestSeqStringMethods::test_hash Tests/test_seq.py::TestSeqStringMethods::test_less_than_comparison Tests/test_seq.py::TestSeqStringMethods::test_less_than_comparison_of_incompatible_types Tests/test_seq.py::TestSeqStringMethods::test_less_than_or_equal_comparison Tests/test_seq.py::TestSeqStringMethods::test_less_than_or_equal_comparison_of_incompatible_types Tests/test_seq.py::TestSeqStringMethods::test_not_equal_comparsion Tests/test_seq.py::TestSeqStringMethods::test_radd_method_using_wrong_object Tests/test_seq.py::TestSeqStringMethods::test_splits Tests/test_seq.py::TestSeqStringMethods::test_startswith Tests/test_seq.py::TestSeqStringMethods::test_stripping_characters Tests/test_seq.py::TestSeqAddition::test_adding_generic_nucleotide_with_other_nucleotides Tests/test_seq.py::TestSeqAddition::test_adding_generic_nucleotide_with_other_nucleotides_inplace Tests/test_seq.py::TestSeqAddition::test_adding_protein_with_nucleotides Tests/test_seq.py::TestSeqAddition::test_addition_dna_rna_with_generic_nucleotides Tests/test_seq.py::TestSeqAddition::test_addition_dna_rna_with_generic_nucleotides_inplace Tests/test_seq.py::TestSeqAddition::test_addition_dna_with_dna Tests/test_seq.py::TestSeqAddition::test_addition_dna_with_dna_inplace Tests/test_seq.py::TestSeqAddition::test_addition_dna_with_rna Tests/test_seq.py::TestSeqAddition::test_addition_proteins Tests/test_seq.py::TestSeqAddition::test_addition_proteins_inplace Tests/test_seq.py::TestSeqAddition::test_addition_rna_with_rna Tests/test_seq.py::TestSeqAddition::test_addition_rna_with_rna_inplace Tests/test_seq.py::TestSeqMultiplication::test_imul_method Tests/test_seq.py::TestSeqMultiplication::test_imul_method_exceptions Tests/test_seq.py::TestSeqMultiplication::test_mul_method Tests/test_seq.py::TestSeqMultiplication::test_mul_method_exceptions Tests/test_seq.py::TestSeqMultiplication::test_rmul_method Tests/test_seq.py::TestSeqMultiplication::test_rmul_method_exceptions Tests/test_seq.py::TestMutableSeq::test_add_method Tests/test_seq.py::TestMutableSeq::test_appending Tests/test_seq.py::TestMutableSeq::test_as_string Tests/test_seq.py::TestMutableSeq::test_complement Tests/test_seq.py::TestMutableSeq::test_complement_dna_string Tests/test_seq.py::TestMutableSeq::test_complement_mixed_aphabets Tests/test_seq.py::TestMutableSeq::test_complement_old Tests/test_seq.py::TestMutableSeq::test_complement_rna Tests/test_seq.py::TestMutableSeq::test_complement_rna_string Tests/test_seq.py::TestMutableSeq::test_contains_method Tests/test_seq.py::TestMutableSeq::test_converting_to_immutable Tests/test_seq.py::TestMutableSeq::test_count Tests/test_seq.py::TestMutableSeq::test_delete_stride_slice Tests/test_seq.py::TestMutableSeq::test_deleting_item Tests/test_seq.py::TestMutableSeq::test_deleting_slice Tests/test_seq.py::TestMutableSeq::test_endswith Tests/test_seq.py::TestMutableSeq::test_equal_comparison Tests/test_seq.py::TestMutableSeq::test_extend_method Tests/test_seq.py::TestMutableSeq::test_extend_with_mutable_seq Tests/test_seq.py::TestMutableSeq::test_extract_third_nucleotide Tests/test_seq.py::TestMutableSeq::test_first_nucleotide Tests/test_seq.py::TestMutableSeq::test_greater_than_comparison Tests/test_seq.py::TestMutableSeq::test_greater_than_comparison_of_incompatible_types Tests/test_seq.py::TestMutableSeq::test_greater_than_comparison_with_str Tests/test_seq.py::TestMutableSeq::test_greater_than_or_equal_comparison Tests/test_seq.py::TestMutableSeq::test_greater_than_or_equal_comparison_of_incompatible_types Tests/test_seq.py::TestMutableSeq::test_greater_than_or_equal_comparison_with_str Tests/test_seq.py::TestMutableSeq::test_index Tests/test_seq.py::TestMutableSeq::test_inserting Tests/test_seq.py::TestMutableSeq::test_length Tests/test_seq.py::TestMutableSeq::test_less_than_comparison Tests/test_seq.py::TestMutableSeq::test_less_than_comparison_of_incompatible_types Tests/test_seq.py::TestMutableSeq::test_less_than_comparison_with_str Tests/test_seq.py::TestMutableSeq::test_less_than_or_equal_comparison Tests/test_seq.py::TestMutableSeq::test_less_than_or_equal_comparison_of_incompatible_types Tests/test_seq.py::TestMutableSeq::test_less_than_or_equal_comparison_with_str Tests/test_seq.py::TestMutableSeq::test_mutableseq_construction Tests/test_seq.py::TestMutableSeq::test_not_equal_comparison Tests/test_seq.py::TestMutableSeq::test_popping_last_item Tests/test_seq.py::TestMutableSeq::test_radd_method_wrong_type Tests/test_seq.py::TestMutableSeq::test_remove_items Tests/test_seq.py::TestMutableSeq::test_repr Tests/test_seq.py::TestMutableSeq::test_reverse Tests/test_seq.py::TestMutableSeq::test_reverse_complement Tests/test_seq.py::TestMutableSeq::test_reverse_complement_old Tests/test_seq.py::TestMutableSeq::test_reverse_complement_rna Tests/test_seq.py::TestMutableSeq::test_reverse_with_stride Tests/test_seq.py::TestMutableSeq::test_set_wobble_codon_to_n Tests/test_seq.py::TestMutableSeq::test_setting_item Tests/test_seq.py::TestMutableSeq::test_setting_slices Tests/test_seq.py::TestMutableSeq::test_startswith Tests/test_seq.py::TestMutableSeq::test_transcribe Tests/test_seq.py::TestMutableSeq::test_truncated_repr Tests/test_seq.py::TestUnknownSeq::test_add_method Tests/test_seq.py::TestUnknownSeq::test_back_transcribe Tests/test_seq.py::TestUnknownSeq::test_complement Tests/test_seq.py::TestUnknownSeq::test_count Tests/test_seq.py::TestUnknownSeq::test_getitem_method Tests/test_seq.py::TestUnknownSeq::test_length Tests/test_seq.py::TestUnknownSeq::test_lower Tests/test_seq.py::TestUnknownSeq::test_repr Tests/test_seq.py::TestUnknownSeq::test_reverse_complement Tests/test_seq.py::TestUnknownSeq::test_transcribe Tests/test_seq.py::TestUnknownSeq::test_translation Tests/test_seq.py::TestUnknownSeq::test_ungap Tests/test_seq.py::TestUnknownSeq::test_unknownseq_construction Tests/test_seq.py::TestUnknownSeq::test_upper Tests/test_seq.py::TestAmbiguousComplements::test_ambiguous_values Tests/test_seq.py::TestComplement::test_complement_ambiguous_dna_values Tests/test_seq.py::TestComplement::test_complement_ambiguous_rna_values Tests/test_seq.py::TestComplement::test_complement_incompatible_letters Tests/test_seq.py::TestComplement::test_complement_of_dna Tests/test_seq.py::TestComplement::test_complement_of_mixed_dna_rna Tests/test_seq.py::TestComplement::test_complement_of_rna Tests/test_seq.py::TestComplement::test_immutable Tests/test_seq.py::TestReverseComplement::test_immutable Tests/test_seq.py::TestReverseComplement::test_reverse_complement Tests/test_seq.py::TestReverseComplement::test_reverse_complement_of_dna Tests/test_seq.py::TestReverseComplement::test_reverse_complement_of_mixed_dna_rna Tests/test_seq.py::TestReverseComplement::test_reverse_complement_of_rna Tests/test_seq.py::TestDoubleReverseComplement::test_reverse_complements Tests/test_seq.py::TestTranscription::test_back_transcribe_rna_into_dna Tests/test_seq.py::TestTranscription::test_back_transcribe_rna_string_into_dna Tests/test_seq.py::TestTranscription::test_seq_object_back_transcription_method Tests/test_seq.py::TestTranscription::test_seq_object_transcription_method Tests/test_seq.py::TestTranscription::test_transcription_dna_into_rna Tests/test_seq.py::TestTranscription::test_transcription_dna_string_into_rna Tests/test_seq.py::TestTranslating::test_gapped_seq_no_gap_char_given Tests/test_seq.py::TestTranslating::test_gapped_seq_with_gap_char_given Tests/test_seq.py::TestTranslating::test_translation Tests/test_seq.py::TestTranslating::test_translation_extra_stop_codon Tests/test_seq.py::TestTranslating::test_translation_incomplete_codon Tests/test_seq.py::TestTranslating::test_translation_of_asparagine Tests/test_seq.py::TestTranslating::test_translation_of_gapped_string_no_gap_char_given Tests/test_seq.py::TestTranslating::test_translation_of_gapped_string_with_gap_char_given Tests/test_seq.py::TestTranslating::test_translation_of_glutamine Tests/test_seq.py::TestTranslating::test_translation_of_invalid_codon Tests/test_seq.py::TestTranslating::test_translation_of_leucine Tests/test_seq.py::TestTranslating::test_translation_of_string Tests/test_seq.py::TestTranslating::test_translation_on_proteins Tests/test_seq.py::TestTranslating::test_translation_to_stop Tests/test_seq.py::TestTranslating::test_translation_using_cds Tests/test_seq.py::TestTranslating::test_translation_using_tables_with_ambiguous_stop_codons Tests/test_seq.py::TestTranslating::test_translation_with_bad_table_argument Tests/test_seq.py::TestTranslating::test_translation_with_codon_table_as_table_argument Tests/test_seq.py::TestTranslating::test_translation_wrong_type Tests/test_seq.py::TestStopCodons::test_stops Tests/test_seq.py::TestStopCodons::test_translation_of_stops Tests/test_seq.py::TestAttributes::test_mutable_seq Tests/test_seq.py::TestAttributes::test_seq