..\scadnano\scadnano.py:7369: in to_idt_bulk_input_format
[strand.vendor_export_name(), strand.vendor_dna_sequence(domain_delimiter=domain_delimiter),
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = Strand(domains=[Extension(num_bases=3, display_length=1.0, display_angle=35.0, label=None, name=None, dna_sequence='TT...ields=None, is_scaffold=False, modification_5p=None, modification_3p=None, modifications_int={}, name=None, label=None)
domain_delimiter = ''
def vendor_dna_sequence(self, domain_delimiter: str = '') -> str:
"""
:param domain_delimiter:
string to put in between DNA sequences of each domain, and between 5'/3' modifications and DNA.
Note that the delimiter is not put between internal modifications and the next base(s)
in the same domain.
:return: DNA sequence as it needs to be typed to order from a DNA synthesis vendor, with
:py:data:`Modification5Prime`'s,
:py:data:`Modification3Prime`'s,
and
:py:data:`ModificationInternal`'s represented with text codes, e.g., for IDT DNA, using
"/5Biosg/ACGT" for sequence ACGT with a 5' biotin modification.
"""
self._ensure_modifications_legal(check_offsets_legal=True)
if self.dna_sequence is None:
raise ValueError('DNA sequence has not been assigned yet')
ret_list: List[str] = []
if self.modification_5p is not None and self.modification_5p.vendor_code is not None:
ret_list.append(self.modification_5p.vendor_code)
for substrand in self.domains:
> ret_list.append(substrand.vendor_dna_sequence())
E AttributeError: 'Extension' object has no attribute 'vendor_dna_sequence'
..\scadnano\scadnano.py:4362: AttributeError
This code crashes:
with this exception:
This code also crashes:
It's not happening in the web interface, yay strongly typed languages.