# Path: q2_types/sample_data/_type.py

# 
# Path: q2_types/per_sample_sequences/_format.py
# class FastqAbsolutePathManifestFormatV2(model.TextFileFormat):
# class _SingleEndFastqManifestV2(FastqAbsolutePathManifestFormatV2):
# class SingleEndFastqManifestPhred33V2(_SingleEndFastqManifestV2):
# class SingleEndFastqManifestPhred64V2(_SingleEndFastqManifestV2):
# class _PairedEndFastqManifestV2(FastqAbsolutePathManifestFormatV2):
# class PairedEndFastqManifestPhred33V2(_PairedEndFastqManifestV2):
# class PairedEndFastqManifestPhred64V2(_PairedEndFastqManifestV2):
# class _FastqManifestBase(model.TextFileFormat):
# class FastqManifestFormat(_FastqManifestBase):
# class FastqAbsolutePathManifestFormat(_FastqManifestBase):
# class SingleEndFastqManifestPhred33(FastqAbsolutePathManifestFormat):
# class SingleEndFastqManifestPhred64(FastqAbsolutePathManifestFormat):
# class PairedEndFastqManifestPhred33(FastqAbsolutePathManifestFormat):
# class PairedEndFastqManifestPhred64(FastqAbsolutePathManifestFormat):
# class YamlFormat(model.TextFileFormat):
# class FastqGzFormat(model.BinaryFileFormat):
# class CasavaOneEightSingleLanePerSampleDirFmt(model.DirectoryFormat):
# class _SingleLanePerSampleFastqDirFmt(CasavaOneEightSingleLanePerSampleDirFmt):
# class SingleLanePerSampleSingleEndFastqDirFmt(_SingleLanePerSampleFastqDirFmt):
# class SingleLanePerSamplePairedEndFastqDirFmt(_SingleLanePerSampleFastqDirFmt):
# class CasavaOneEightLanelessPerSampleDirFmt(model.DirectoryFormat):
# class QIIME1DemuxFormat(model.TextFileFormat):
#     METADATA_COLUMNS = None
#     METADATA_COLUMNS = {'absolute-filepath': 'forward'}
#     METADATA_COLUMNS = {'forward-absolute-filepath': 'forward',
#                         'reverse-absolute-filepath': 'reverse'}
#     EXPECTED_HEADER = None
#     PATH_HEADER_LABEL = None
#     EXPECTED_HEADER = ['sample-id', 'filename', 'direction']
#     PATH_HEADER_LABEL = 'filename'
#     EXPECTED_HEADER = ['sample-id', 'absolute-filepath', 'direction']
#     PATH_HEADER_LABEL = 'absolute-filepath'
#     _CHECK_PAIRED = True
#     _REQUIRE_PAIRED = False
#     _CHECK_PAIRED = False
#     _REQUIRE_PAIRED = True
#     def _validate_(self, level):
#     def _check_n_records(self, root, n=None):
#     def _validate_(self, level):
#     def _validate_(self, level):
#     def sniff(self):
#     def _check_n_records(self, n=None):
#     def _validate_(self, level):
#     def sequences_path_maker(self, sample_id, barcode_id, lane_number,
#                              read_number):
#     def _find_duplicates(self, ids):
#     def manifest(self):
#         def munge_fn_closure(val):
#     def _validate_(self, level):
#     def sequences_path_maker(self, sample_id, barcode_id, read_number):
#     def sniff(self):
#     def _validate(self, filehandle, *, num_records):
#     def _parse_id(self, header):
#     def _validate_id(self, id):
#     def _validate_seq(self, seq):
# 
# Path: q2_types/per_sample_sequences/_type.py



import unittest
from q2_types.sample_data import SampleData
from q2_types.per_sample_sequences import (
    Sequences, SequencesWithQuality, PairedEndSequencesWithQuality,
    JoinedSequencesWithQuality, QIIME1DemuxDirFmt,
    SingleLanePerSampleSingleEndFastqDirFmt,
    SingleLanePerSamplePairedEndFastqDirFmt
)
from qiime2.plugin.testing import TestPluginBase

    def test_sequences_with_quality_semantic_type_registration(self):
        self.assertRegisteredSemanticType(SequencesWithQuality)

    def test_paired_end_sequences_with_qual_semantic_type_registration(self):
        self.assertRegisteredSemanticType(PairedEndSequencesWithQuality)

    def test_joined_sequences_with_qual_semantic_type_registration(self):
        self.assertRegisteredSemanticType(JoinedSequencesWithQuality)

    def test_sequences_semantic_type_to_format_registration(self):
        self.assertSemanticTypeRegisteredToFormat(
            SampleData[Sequences],
            QIIME1DemuxDirFmt
        )

    def test_sequences_with_quality_semantic_type_to_format_registration(self):
        self.assertSemanticTypeRegisteredToFormat(
            SampleData[SequencesWithQuality],
            SingleLanePerSampleSingleEndFastqDirFmt
        )

    def test_paired_end_sequences_semantic_type_to_format_registration(self):
        self.assertSemanticTypeRegisteredToFormat(
            SampleData[PairedEndSequencesWithQuality],
            SingleLanePerSamplePairedEndFastqDirFmt
        )

    def test_joined_sequences_with_quality_semantic_type_to_format_reg(self):
        self.assertSemanticTypeRegisteredToFormat(

# Path: q2_types/sample_data/_type.py

# 
# Path: q2_types/per_sample_sequences/_format.py
# class FastqAbsolutePathManifestFormatV2(model.TextFileFormat):
# class _SingleEndFastqManifestV2(FastqAbsolutePathManifestFormatV2):
# class SingleEndFastqManifestPhred33V2(_SingleEndFastqManifestV2):
# class SingleEndFastqManifestPhred64V2(_SingleEndFastqManifestV2):
# class _PairedEndFastqManifestV2(FastqAbsolutePathManifestFormatV2):
# class PairedEndFastqManifestPhred33V2(_PairedEndFastqManifestV2):
# class PairedEndFastqManifestPhred64V2(_PairedEndFastqManifestV2):
# class _FastqManifestBase(model.TextFileFormat):
# class FastqManifestFormat(_FastqManifestBase):
# class FastqAbsolutePathManifestFormat(_FastqManifestBase):
# class SingleEndFastqManifestPhred33(FastqAbsolutePathManifestFormat):
# class SingleEndFastqManifestPhred64(FastqAbsolutePathManifestFormat):
# class PairedEndFastqManifestPhred33(FastqAbsolutePathManifestFormat):
# class PairedEndFastqManifestPhred64(FastqAbsolutePathManifestFormat):
# class YamlFormat(model.TextFileFormat):
# class FastqGzFormat(model.BinaryFileFormat):
# class CasavaOneEightSingleLanePerSampleDirFmt(model.DirectoryFormat):
# class _SingleLanePerSampleFastqDirFmt(CasavaOneEightSingleLanePerSampleDirFmt):
# class SingleLanePerSampleSingleEndFastqDirFmt(_SingleLanePerSampleFastqDirFmt):
# class SingleLanePerSamplePairedEndFastqDirFmt(_SingleLanePerSampleFastqDirFmt):
# class CasavaOneEightLanelessPerSampleDirFmt(model.DirectoryFormat):
# class QIIME1DemuxFormat(model.TextFileFormat):
#     METADATA_COLUMNS = None
#     METADATA_COLUMNS = {'absolute-filepath': 'forward'}
#     METADATA_COLUMNS = {'forward-absolute-filepath': 'forward',
#                         'reverse-absolute-filepath': 'reverse'}
#     EXPECTED_HEADER = None
#     PATH_HEADER_LABEL = None
#     EXPECTED_HEADER = ['sample-id', 'filename', 'direction']
#     PATH_HEADER_LABEL = 'filename'
#     EXPECTED_HEADER = ['sample-id', 'absolute-filepath', 'direction']
#     PATH_HEADER_LABEL = 'absolute-filepath'
#     _CHECK_PAIRED = True
#     _REQUIRE_PAIRED = False
#     _CHECK_PAIRED = False
#     _REQUIRE_PAIRED = True
#     def _validate_(self, level):
#     def _check_n_records(self, root, n=None):
#     def _validate_(self, level):
#     def _validate_(self, level):
#     def sniff(self):
#     def _check_n_records(self, n=None):
#     def _validate_(self, level):
#     def sequences_path_maker(self, sample_id, barcode_id, lane_number,
#                              read_number):
#     def _find_duplicates(self, ids):
#     def manifest(self):
#         def munge_fn_closure(val):
#     def _validate_(self, level):
#     def sequences_path_maker(self, sample_id, barcode_id, read_number):
#     def sniff(self):
#     def _validate(self, filehandle, *, num_records):
#     def _parse_id(self, header):
#     def _validate_id(self, id):
#     def _validate_seq(self, seq):
# 
# Path: q2_types/per_sample_sequences/_type.py



# Path: q2_types/per_sample_sequences/tests/test_type.py
import unittest
from q2_types.sample_data import SampleData
from q2_types.per_sample_sequences import (
    Sequences, SequencesWithQuality, PairedEndSequencesWithQuality,
    JoinedSequencesWithQuality, QIIME1DemuxDirFmt,
    SingleLanePerSampleSingleEndFastqDirFmt,
    SingleLanePerSamplePairedEndFastqDirFmt
)
from qiime2.plugin.testing import TestPluginBase


    def test_sequences_with_quality_semantic_type_registration(self):
        self.assertRegisteredSemanticType(SequencesWithQuality)

    def test_paired_end_sequences_with_qual_semantic_type_registration(self):
        self.assertRegisteredSemanticType(PairedEndSequencesWithQuality)

    def test_joined_sequences_with_qual_semantic_type_registration(self):
        self.assertRegisteredSemanticType(JoinedSequencesWithQuality)

    def test_sequences_semantic_type_to_format_registration(self):
        self.assertSemanticTypeRegisteredToFormat(
            SampleData[Sequences],
            QIIME1DemuxDirFmt
        )

    def test_sequences_with_quality_semantic_type_to_format_registration(self):
        self.assertSemanticTypeRegisteredToFormat(
            SampleData[SequencesWithQuality],
            SingleLanePerSampleSingleEndFastqDirFmt
        )

    def test_paired_end_sequences_semantic_type_to_format_registration(self):
        self.assertSemanticTypeRegisteredToFormat(
            SampleData[PairedEndSequencesWithQuality],
            SingleLanePerSamplePairedEndFastqDirFmt
        )

    def test_joined_sequences_with_quality_semantic_type_to_format_reg(self):
        self.assertSemanticTypeRegisteredToFormat(

            SampleData[JoinedSequencesWithQuality],