#!/usr/bin/env python

#
# Generated Thu Feb 29 18:07:10 2024 by generateDS.py version 2.43.3.
# Python 3.11.3 (main, Apr 19 2023, 18:49:55) [Clang 14.0.6 ]
#
# Command line options:
#   ('-f', '')
#   ('-o', 'schema/article_b2b_lib.py')
#   ('-s', 'schema/article_b2b.py')
#
# Command line arguments:
#   definitions/ARTICLE_B2B.xsd
#
# Command line:
#   /Users/daniilossinkin/anaconda3/bin/generateDS -f -o "schema/article_b2b_lib.py" -s "schema/article_b2b.py" definitions/ARTICLE_B2B.xsd
#
# Current working directory (os.getcwd()):
#   imports
#

import os
import sys
from lxml import etree as etree_

import src.data.imports.schema.article_b2b_lib as supermod

def parsexml_(infile, parser=None, **kwargs):
    if parser is None:
        # Use the lxml ElementTree compatible parser so that, e.g.,
        #   we ignore comments.
        parser = etree_.ETCompatXMLParser()
    try:
        if isinstance(infile, os.PathLike):
            infile = os.path.join(infile)
    except AttributeError:
        pass
    doc = etree_.parse(infile, parser=parser, **kwargs)
    return doc

def parsexmlstring_(instring, parser=None, **kwargs):
    if parser is None:
        # Use the lxml ElementTree compatible parser so that, e.g.,
        #   we ignore comments.
        try:
            parser = etree_.ETCompatXMLParser()
        except AttributeError:
            # fallback to xml.etree
            parser = etree_.XMLParser()
    element = etree_.fromstring(instring, parser=parser, **kwargs)
    return element

#
# Globals
#

ExternalEncoding = ''
SaveElementTreeNode = True

#
# Data representation classes
#


class semiramisSub(supermod.semiramis):
    def __init__(self, created=None, locale=None, nlsMode='SINGLE_LANGUAGE', dateTimeMode='NORMALIZED', Item=None, **kwargs_):
        super(semiramisSub, self).__init__(created, locale, nlsMode, dateTimeMode, Item,  **kwargs_)
supermod.semiramis.subclass = semiramisSub
# end class semiramisSub


class ItemTypeSub(supermod.ItemType):
    def __init__(self, mark=None, mode=None, invalid=None, number=None, description=None, longDescription=None, imp_activeColor=None, DefaultVariantItem=None, ReferenceItem=None, Imp_CareReference1=None, Imp_CareReference2=None, Imp_CareReference3=None, Imp_CareReference4=None, Imp_CareReference5=None, Imp_CareReference6=None, Imp_CareReferenceGroup=None, Imp_Collection=None, Imp_ItemGroup=None, Imp_ItemThemeGroup=None, Imp_KindOfFabric=None, Imp_MaterialComposition1=None, Imp_MaterialComposition2=None, Imp_MaterialComposition3=None, Imp_PackagingType=None, Imp_SizeRegister=None, Imp_Size=None, Imp_Color=None, Uoms=None, Texts=None, ItemPackagingUoms=None, OrganizationalUnitItems=None, InventoryItems=None, SalesItems=None, Imp_ItemDeliveryDates=None, Imp_ItemColorImages=None, Imp_ItemProductLines=None, **kwargs_):
        super(ItemTypeSub, self).__init__(mark, mode, invalid, number, description, longDescription, imp_activeColor, DefaultVariantItem, ReferenceItem, Imp_CareReference1, Imp_CareReference2, Imp_CareReference3, Imp_CareReference4, Imp_CareReference5, Imp_CareReference6, Imp_CareReferenceGroup, Imp_Collection, Imp_ItemGroup, Imp_ItemThemeGroup, Imp_KindOfFabric, Imp_MaterialComposition1, Imp_MaterialComposition2, Imp_MaterialComposition3, Imp_PackagingType, Imp_SizeRegister, Imp_Size, Imp_Color, Uoms, Texts, ItemPackagingUoms, OrganizationalUnitItems, InventoryItems, SalesItems, Imp_ItemDeliveryDates, Imp_ItemColorImages, Imp_ItemProductLines,  **kwargs_)
supermod.ItemType.subclass = ItemTypeSub
# end class ItemTypeSub


class DefaultVariantItemTypeSub(supermod.DefaultVariantItemType):
    def __init__(self, mark=None, mode=None, invalid=None, Imp_Collection=None, **kwargs_):
        super(DefaultVariantItemTypeSub, self).__init__(mark, mode, invalid, Imp_Collection,  **kwargs_)
supermod.DefaultVariantItemType.subclass = DefaultVariantItemTypeSub
# end class DefaultVariantItemTypeSub


class Imp_CollectionTypeSub(supermod.Imp_CollectionType):
    def __init__(self, mark=None, mode=None, invalid=None, code=None, description=None, **kwargs_):
        super(Imp_CollectionTypeSub, self).__init__(mark, mode, invalid, code, description,  **kwargs_)
supermod.Imp_CollectionType.subclass = Imp_CollectionTypeSub
# end class Imp_CollectionTypeSub


class ReferenceItemTypeSub(supermod.ReferenceItemType):
    def __init__(self, mark=None, mode=None, invalid=None, number=None, description=None, longDescription=None, text=None, **kwargs_):
        super(ReferenceItemTypeSub, self).__init__(mark, mode, invalid, number, description, longDescription, text,  **kwargs_)
supermod.ReferenceItemType.subclass = ReferenceItemTypeSub
# end class ReferenceItemTypeSub


class Imp_CareReference1TypeSub(supermod.Imp_CareReference1Type):
    def __init__(self, mark=None, mode=None, invalid=None, code=None, description=None, **kwargs_):
        super(Imp_CareReference1TypeSub, self).__init__(mark, mode, invalid, code, description,  **kwargs_)
supermod.Imp_CareReference1Type.subclass = Imp_CareReference1TypeSub
# end class Imp_CareReference1TypeSub


class Imp_CareReference2TypeSub(supermod.Imp_CareReference2Type):
    def __init__(self, mark=None, mode=None, invalid=None, code=None, description=None, **kwargs_):
        super(Imp_CareReference2TypeSub, self).__init__(mark, mode, invalid, code, description,  **kwargs_)
supermod.Imp_CareReference2Type.subclass = Imp_CareReference2TypeSub
# end class Imp_CareReference2TypeSub


class Imp_CareReference3TypeSub(supermod.Imp_CareReference3Type):
    def __init__(self, mark=None, mode=None, invalid=None, code=None, description=None, **kwargs_):
        super(Imp_CareReference3TypeSub, self).__init__(mark, mode, invalid, code, description,  **kwargs_)
supermod.Imp_CareReference3Type.subclass = Imp_CareReference3TypeSub
# end class Imp_CareReference3TypeSub


class Imp_CareReference4TypeSub(supermod.Imp_CareReference4Type):
    def __init__(self, mark=None, mode=None, invalid=None, code=None, description=None, **kwargs_):
        super(Imp_CareReference4TypeSub, self).__init__(mark, mode, invalid, code, description,  **kwargs_)
supermod.Imp_CareReference4Type.subclass = Imp_CareReference4TypeSub
# end class Imp_CareReference4TypeSub


class Imp_CareReference5TypeSub(supermod.Imp_CareReference5Type):
    def __init__(self, mark=None, mode=None, invalid=None, code=None, description=None, **kwargs_):
        super(Imp_CareReference5TypeSub, self).__init__(mark, mode, invalid, code, description,  **kwargs_)
supermod.Imp_CareReference5Type.subclass = Imp_CareReference5TypeSub
# end class Imp_CareReference5TypeSub


class Imp_CareReference6TypeSub(supermod.Imp_CareReference6Type):
    def __init__(self, mark=None, mode=None, invalid=None, code=None, description=None, **kwargs_):
        super(Imp_CareReference6TypeSub, self).__init__(mark, mode, invalid, code, description,  **kwargs_)
supermod.Imp_CareReference6Type.subclass = Imp_CareReference6TypeSub
# end class Imp_CareReference6TypeSub


class Imp_CareReferenceGroupTypeSub(supermod.Imp_CareReferenceGroupType):
    def __init__(self, mark=None, mode=None, invalid=None, code=None, description=None, **kwargs_):
        super(Imp_CareReferenceGroupTypeSub, self).__init__(mark, mode, invalid, code, description,  **kwargs_)
supermod.Imp_CareReferenceGroupType.subclass = Imp_CareReferenceGroupTypeSub
# end class Imp_CareReferenceGroupTypeSub


class Imp_CollectionType1Sub(supermod.Imp_CollectionType1):
    def __init__(self, mark=None, mode=None, invalid=None, code=None, description=None, **kwargs_):
        super(Imp_CollectionType1Sub, self).__init__(mark, mode, invalid, code, description,  **kwargs_)
supermod.Imp_CollectionType1.subclass = Imp_CollectionType1Sub
# end class Imp_CollectionType1Sub


class Imp_ItemGroupTypeSub(supermod.Imp_ItemGroupType):
    def __init__(self, mark=None, mode=None, invalid=None, code=None, description=None, **kwargs_):
        super(Imp_ItemGroupTypeSub, self).__init__(mark, mode, invalid, code, description,  **kwargs_)
supermod.Imp_ItemGroupType.subclass = Imp_ItemGroupTypeSub
# end class Imp_ItemGroupTypeSub


class Imp_ItemThemeGroupTypeSub(supermod.Imp_ItemThemeGroupType):
    def __init__(self, mark=None, mode=None, invalid=None, code=None, description=None, **kwargs_):
        super(Imp_ItemThemeGroupTypeSub, self).__init__(mark, mode, invalid, code, description,  **kwargs_)
supermod.Imp_ItemThemeGroupType.subclass = Imp_ItemThemeGroupTypeSub
# end class Imp_ItemThemeGroupTypeSub


class Imp_KindOfFabricTypeSub(supermod.Imp_KindOfFabricType):
    def __init__(self, mark=None, mode=None, invalid=None, code=None, description=None, **kwargs_):
        super(Imp_KindOfFabricTypeSub, self).__init__(mark, mode, invalid, code, description,  **kwargs_)
supermod.Imp_KindOfFabricType.subclass = Imp_KindOfFabricTypeSub
# end class Imp_KindOfFabricTypeSub


class Imp_MaterialComposition1TypeSub(supermod.Imp_MaterialComposition1Type):
    def __init__(self, mark=None, mode=None, invalid=None, code=None, description=None, **kwargs_):
        super(Imp_MaterialComposition1TypeSub, self).__init__(mark, mode, invalid, code, description,  **kwargs_)
supermod.Imp_MaterialComposition1Type.subclass = Imp_MaterialComposition1TypeSub
# end class Imp_MaterialComposition1TypeSub


class Imp_MaterialComposition2TypeSub(supermod.Imp_MaterialComposition2Type):
    def __init__(self, mark=None, mode=None, invalid=None, code=None, description=None, **kwargs_):
        super(Imp_MaterialComposition2TypeSub, self).__init__(mark, mode, invalid, code, description,  **kwargs_)
supermod.Imp_MaterialComposition2Type.subclass = Imp_MaterialComposition2TypeSub
# end class Imp_MaterialComposition2TypeSub


class Imp_MaterialComposition3TypeSub(supermod.Imp_MaterialComposition3Type):
    def __init__(self, mark=None, mode=None, invalid=None, code=None, description=None, **kwargs_):
        super(Imp_MaterialComposition3TypeSub, self).__init__(mark, mode, invalid, code, description,  **kwargs_)
supermod.Imp_MaterialComposition3Type.subclass = Imp_MaterialComposition3TypeSub
# end class Imp_MaterialComposition3TypeSub


class Imp_PackagingTypeTypeSub(supermod.Imp_PackagingTypeType):
    def __init__(self, mark=None, mode=None, invalid=None, code=None, description=None, **kwargs_):
        super(Imp_PackagingTypeTypeSub, self).__init__(mark, mode, invalid, code, description,  **kwargs_)
supermod.Imp_PackagingTypeType.subclass = Imp_PackagingTypeTypeSub
# end class Imp_PackagingTypeTypeSub


class Imp_SizeRegisterTypeSub(supermod.Imp_SizeRegisterType):
    def __init__(self, mark=None, mode=None, invalid=None, code=None, description=None, **kwargs_):
        super(Imp_SizeRegisterTypeSub, self).__init__(mark, mode, invalid, code, description,  **kwargs_)
supermod.Imp_SizeRegisterType.subclass = Imp_SizeRegisterTypeSub
# end class Imp_SizeRegisterTypeSub


class Imp_SizeTypeSub(supermod.Imp_SizeType):
    def __init__(self, mark=None, mode=None, invalid=None, code=None, surcharge=None, SizeHierarchy=None, SizeRegister=None, **kwargs_):
        super(Imp_SizeTypeSub, self).__init__(mark, mode, invalid, code, surcharge, SizeHierarchy, SizeRegister,  **kwargs_)
supermod.Imp_SizeType.subclass = Imp_SizeTypeSub
# end class Imp_SizeTypeSub


class SizeHierarchyTypeSub(supermod.SizeHierarchyType):
    def __init__(self, mark=None, mode=None, invalid=None, code=None, description=None, **kwargs_):
        super(SizeHierarchyTypeSub, self).__init__(mark, mode, invalid, code, description,  **kwargs_)
supermod.SizeHierarchyType.subclass = SizeHierarchyTypeSub
# end class SizeHierarchyTypeSub


class SizeRegisterTypeSub(supermod.SizeRegisterType):
    def __init__(self, mark=None, mode=None, invalid=None, code=None, **kwargs_):
        super(SizeRegisterTypeSub, self).__init__(mark, mode, invalid, code,  **kwargs_)
supermod.SizeRegisterType.subclass = SizeRegisterTypeSub
# end class SizeRegisterTypeSub


class Imp_ColorTypeSub(supermod.Imp_ColorType):
    def __init__(self, mark=None, mode=None, invalid=None, code=None, description=None, **kwargs_):
        super(Imp_ColorTypeSub, self).__init__(mark, mode, invalid, code, description,  **kwargs_)
supermod.Imp_ColorType.subclass = Imp_ColorTypeSub
# end class Imp_ColorTypeSub


class UomsTypeSub(supermod.UomsType):
    def __init__(self, mark=None, mode=None, invalid=None, index=None, EANs=None, **kwargs_):
        super(UomsTypeSub, self).__init__(mark, mode, invalid, index, EANs,  **kwargs_)
supermod.UomsType.subclass = UomsTypeSub
# end class UomsTypeSub


class EANsTypeSub(supermod.EANsType):
    def __init__(self, mark=None, mode=None, invalid=None, id=None, **kwargs_):
        super(EANsTypeSub, self).__init__(mark, mode, invalid, id,  **kwargs_)
supermod.EANsType.subclass = EANsTypeSub
# end class EANsTypeSub


class TextsTypeSub(supermod.TextsType):
    def __init__(self, mark=None, mode=None, invalid=None, language=None, text=None, **kwargs_):
        super(TextsTypeSub, self).__init__(mark, mode, invalid, language, text,  **kwargs_)
supermod.TextsType.subclass = TextsTypeSub
# end class TextsTypeSub


class ItemPackagingUomsTypeSub(supermod.ItemPackagingUomsType):
    def __init__(self, mark=None, mode=None, invalid=None, StorageUnit=None, **kwargs_):
        super(ItemPackagingUomsTypeSub, self).__init__(mark, mode, invalid, StorageUnit,  **kwargs_)
supermod.ItemPackagingUomsType.subclass = ItemPackagingUomsTypeSub
# end class ItemPackagingUomsTypeSub


class StorageUnitTypeSub(supermod.StorageUnitType):
    def __init__(self, mark=None, mode=None, invalid=None, number=None, eans=None, description=None, **kwargs_):
        super(StorageUnitTypeSub, self).__init__(mark, mode, invalid, number, eans, description,  **kwargs_)
supermod.StorageUnitType.subclass = StorageUnitTypeSub
# end class StorageUnitTypeSub


class eansTypeSub(supermod.eansType):
    def __init__(self, index=None, valueOf_=None, **kwargs_):
        super(eansTypeSub, self).__init__(index, valueOf_,  **kwargs_)
supermod.eansType.subclass = eansTypeSub
# end class eansTypeSub


class OrganizationalUnitItemsTypeSub(supermod.OrganizationalUnitItemsType):
    def __init__(self, mark=None, mode=None, invalid=None, OriginalItem=None, AlternativeItems=None, **kwargs_):
        super(OrganizationalUnitItemsTypeSub, self).__init__(mark, mode, invalid, OriginalItem, AlternativeItems,  **kwargs_)
supermod.OrganizationalUnitItemsType.subclass = OrganizationalUnitItemsTypeSub
# end class OrganizationalUnitItemsTypeSub


class OriginalItemTypeSub(supermod.OriginalItemType):
    def __init__(self, mark=None, mode=None, invalid=None, number=None, eans=None, **kwargs_):
        super(OriginalItemTypeSub, self).__init__(mark, mode, invalid, number, eans,  **kwargs_)
supermod.OriginalItemType.subclass = OriginalItemTypeSub
# end class OriginalItemTypeSub


class eansType2Sub(supermod.eansType2):
    def __init__(self, index=None, valueOf_=None, **kwargs_):
        super(eansType2Sub, self).__init__(index, valueOf_,  **kwargs_)
supermod.eansType2.subclass = eansType2Sub
# end class eansType2Sub


class AlternativeItemsTypeSub(supermod.AlternativeItemsType):
    def __init__(self, mark=None, mode=None, invalid=None, Substitute=None, **kwargs_):
        super(AlternativeItemsTypeSub, self).__init__(mark, mode, invalid, Substitute,  **kwargs_)
supermod.AlternativeItemsType.subclass = AlternativeItemsTypeSub
# end class AlternativeItemsTypeSub


class SubstituteTypeSub(supermod.SubstituteType):
    def __init__(self, mark=None, mode=None, invalid=None, DefaultVariantItem=None, ReferenceItem=None, ItemPackagingUoms=None, **kwargs_):
        super(SubstituteTypeSub, self).__init__(mark, mode, invalid, DefaultVariantItem, ReferenceItem, ItemPackagingUoms,  **kwargs_)
supermod.SubstituteType.subclass = SubstituteTypeSub
# end class SubstituteTypeSub


class DefaultVariantItemType3Sub(supermod.DefaultVariantItemType3):
    def __init__(self, mark=None, mode=None, invalid=None, number=None, eans=None, **kwargs_):
        super(DefaultVariantItemType3Sub, self).__init__(mark, mode, invalid, number, eans,  **kwargs_)
supermod.DefaultVariantItemType3.subclass = DefaultVariantItemType3Sub
# end class DefaultVariantItemType3Sub


class eansType4Sub(supermod.eansType4):
    def __init__(self, index=None, valueOf_=None, **kwargs_):
        super(eansType4Sub, self).__init__(index, valueOf_,  **kwargs_)
supermod.eansType4.subclass = eansType4Sub
# end class eansType4Sub


class ReferenceItemType5Sub(supermod.ReferenceItemType5):
    def __init__(self, mark=None, mode=None, invalid=None, number=None, eans=None, **kwargs_):
        super(ReferenceItemType5Sub, self).__init__(mark, mode, invalid, number, eans,  **kwargs_)
supermod.ReferenceItemType5.subclass = ReferenceItemType5Sub
# end class ReferenceItemType5Sub


class eansType6Sub(supermod.eansType6):
    def __init__(self, index=None, valueOf_=None, **kwargs_):
        super(eansType6Sub, self).__init__(index, valueOf_,  **kwargs_)
supermod.eansType6.subclass = eansType6Sub
# end class eansType6Sub


class ItemPackagingUomsType7Sub(supermod.ItemPackagingUomsType7):
    def __init__(self, mark=None, mode=None, invalid=None, ean=None, **kwargs_):
        super(ItemPackagingUomsType7Sub, self).__init__(mark, mode, invalid, ean,  **kwargs_)
supermod.ItemPackagingUomsType7.subclass = ItemPackagingUomsType7Sub
# end class ItemPackagingUomsType7Sub


class InventoryItemsTypeSub(supermod.InventoryItemsType):
    def __init__(self, mark=None, mode=None, invalid=None, ItemStorageData=None, **kwargs_):
        super(InventoryItemsTypeSub, self).__init__(mark, mode, invalid, ItemStorageData,  **kwargs_)
supermod.InventoryItemsType.subclass = InventoryItemsTypeSub
# end class InventoryItemsTypeSub


class ItemStorageDataTypeSub(supermod.ItemStorageDataType):
    def __init__(self, mark=None, mode=None, invalid=None, DefaultStorageUnit=None, **kwargs_):
        super(ItemStorageDataTypeSub, self).__init__(mark, mode, invalid, DefaultStorageUnit,  **kwargs_)
supermod.ItemStorageDataType.subclass = ItemStorageDataTypeSub
# end class ItemStorageDataTypeSub


class DefaultStorageUnitTypeSub(supermod.DefaultStorageUnitType):
    def __init__(self, mark=None, mode=None, invalid=None, number=None, eans=None, **kwargs_):
        super(DefaultStorageUnitTypeSub, self).__init__(mark, mode, invalid, number, eans,  **kwargs_)
supermod.DefaultStorageUnitType.subclass = DefaultStorageUnitTypeSub
# end class DefaultStorageUnitTypeSub


class eansType8Sub(supermod.eansType8):
    def __init__(self, index=None, valueOf_=None, **kwargs_):
        super(eansType8Sub, self).__init__(index, valueOf_,  **kwargs_)
supermod.eansType8.subclass = eansType8Sub
# end class eansType8Sub


class SalesItemsTypeSub(supermod.SalesItemsType):
    def __init__(self, mark=None, mode=None, invalid=None, defaultStorageArea=None, classification1=None, classification2=None, classification3=None, classification4=None, classification5=None, priceClassification=None, Imp_SalesItemDeliveryDates=None, **kwargs_):
        super(SalesItemsTypeSub, self).__init__(mark, mode, invalid, defaultStorageArea, classification1, classification2, classification3, classification4, classification5, priceClassification, Imp_SalesItemDeliveryDates,  **kwargs_)
supermod.SalesItemsType.subclass = SalesItemsTypeSub
# end class SalesItemsTypeSub


class defaultStorageAreaTypeSub(supermod.defaultStorageAreaType):
    def __init__(self, mark=None, mode=None, invalid=None, warehouse=None, **kwargs_):
        super(defaultStorageAreaTypeSub, self).__init__(mark, mode, invalid, warehouse,  **kwargs_)
supermod.defaultStorageAreaType.subclass = defaultStorageAreaTypeSub
# end class defaultStorageAreaTypeSub


class Imp_SalesItemDeliveryDatesTypeSub(supermod.Imp_SalesItemDeliveryDatesType):
    def __init__(self, mark=None, mode=None, invalid=None, deliveryDate=None, **kwargs_):
        super(Imp_SalesItemDeliveryDatesTypeSub, self).__init__(mark, mode, invalid, deliveryDate,  **kwargs_)
supermod.Imp_SalesItemDeliveryDatesType.subclass = Imp_SalesItemDeliveryDatesTypeSub
# end class Imp_SalesItemDeliveryDatesTypeSub


class deliveryDateTypeSub(supermod.deliveryDateType):
    def __init__(self, mark=None, mode=None, invalid=None, dateFrom=None, dateUntil=None, **kwargs_):
        super(deliveryDateTypeSub, self).__init__(mark, mode, invalid, dateFrom, dateUntil,  **kwargs_)
supermod.deliveryDateType.subclass = deliveryDateTypeSub
# end class deliveryDateTypeSub


class dateFromTypeSub(supermod.dateFromType):
    def __init__(self, mark=None, mode=None, invalid=None, specialValue=None, date=None, timeZone=None, **kwargs_):
        super(dateFromTypeSub, self).__init__(mark, mode, invalid, specialValue, date, timeZone,  **kwargs_)
supermod.dateFromType.subclass = dateFromTypeSub
# end class dateFromTypeSub


class dateUntilTypeSub(supermod.dateUntilType):
    def __init__(self, mark=None, mode=None, invalid=None, specialValue=None, date=None, timeZone=None, **kwargs_):
        super(dateUntilTypeSub, self).__init__(mark, mode, invalid, specialValue, date, timeZone,  **kwargs_)
supermod.dateUntilType.subclass = dateUntilTypeSub
# end class dateUntilTypeSub


class Imp_ItemDeliveryDatesTypeSub(supermod.Imp_ItemDeliveryDatesType):
    def __init__(self, mark=None, mode=None, invalid=None, deliveryDate=None, **kwargs_):
        super(Imp_ItemDeliveryDatesTypeSub, self).__init__(mark, mode, invalid, deliveryDate,  **kwargs_)
supermod.Imp_ItemDeliveryDatesType.subclass = Imp_ItemDeliveryDatesTypeSub
# end class Imp_ItemDeliveryDatesTypeSub


class deliveryDateType9Sub(supermod.deliveryDateType9):
    def __init__(self, mark=None, mode=None, invalid=None, dateFrom=None, dateUntil=None, **kwargs_):
        super(deliveryDateType9Sub, self).__init__(mark, mode, invalid, dateFrom, dateUntil,  **kwargs_)
supermod.deliveryDateType9.subclass = deliveryDateType9Sub
# end class deliveryDateType9Sub


class dateFromType10Sub(supermod.dateFromType10):
    def __init__(self, mark=None, mode=None, invalid=None, specialValue=None, date=None, timeZone=None, **kwargs_):
        super(dateFromType10Sub, self).__init__(mark, mode, invalid, specialValue, date, timeZone,  **kwargs_)
supermod.dateFromType10.subclass = dateFromType10Sub
# end class dateFromType10Sub


class dateUntilType11Sub(supermod.dateUntilType11):
    def __init__(self, mark=None, mode=None, invalid=None, specialValue=None, date=None, timeZone=None, **kwargs_):
        super(dateUntilType11Sub, self).__init__(mark, mode, invalid, specialValue, date, timeZone,  **kwargs_)
supermod.dateUntilType11.subclass = dateUntilType11Sub
# end class dateUntilType11Sub


class Imp_ItemColorImagesTypeSub(supermod.Imp_ItemColorImagesType):
    def __init__(self, mark=None, mode=None, invalid=None, uri=None, itemImage=None, Color=None, **kwargs_):
        super(Imp_ItemColorImagesTypeSub, self).__init__(mark, mode, invalid, uri, itemImage, Color,  **kwargs_)
supermod.Imp_ItemColorImagesType.subclass = Imp_ItemColorImagesTypeSub
# end class Imp_ItemColorImagesTypeSub


class ColorTypeSub(supermod.ColorType):
    def __init__(self, mark=None, mode=None, invalid=None, code=None, description=None, **kwargs_):
        super(ColorTypeSub, self).__init__(mark, mode, invalid, code, description,  **kwargs_)
supermod.ColorType.subclass = ColorTypeSub
# end class ColorTypeSub


class Imp_ItemProductLinesTypeSub(supermod.Imp_ItemProductLinesType):
    def __init__(self, mark=None, mode=None, invalid=None, ProductLine=None, **kwargs_):
        super(Imp_ItemProductLinesTypeSub, self).__init__(mark, mode, invalid, ProductLine,  **kwargs_)
supermod.Imp_ItemProductLinesType.subclass = Imp_ItemProductLinesTypeSub
# end class Imp_ItemProductLinesTypeSub


class ProductLineTypeSub(supermod.ProductLineType):
    def __init__(self, mark=None, mode=None, invalid=None, code=None, description=None, **kwargs_):
        super(ProductLineTypeSub, self).__init__(mark, mode, invalid, code, description,  **kwargs_)
supermod.ProductLineType.subclass = ProductLineTypeSub
# end class ProductLineTypeSub


def get_root_tag(node):
    tag = supermod.Tag_pattern_.match(node.tag).groups()[-1]
    rootClass = None
    rootClass = supermod.GDSClassesMapping.get(tag)
    if rootClass is None and hasattr(supermod, tag):
        rootClass = getattr(supermod, tag)
    return tag, rootClass


def parse(inFilename, silence=False):
    parser = None
    doc = parsexml_(inFilename, parser)
    rootNode = doc.getroot()
    rootTag, rootClass = get_root_tag(rootNode)
    if rootClass is None:
        rootTag = 'semiramis'
        rootClass = supermod.semiramis
    rootObj = rootClass.factory()
    rootObj.build(rootNode)
    # Enable Python to collect the space used by the DOM.
    if not SaveElementTreeNode:
        doc = None
        rootNode = None
    if not silence:
        sys.stdout.write('<?xml version="1.0" ?>\n')
        rootObj.export(
            sys.stdout, 0, name_=rootTag,
            namespacedef_='',
            pretty_print=True)
    return rootObj


def parseEtree(inFilename, silence=False):
    parser = None
    doc = parsexml_(inFilename, parser)
    rootNode = doc.getroot()
    rootTag, rootClass = get_root_tag(rootNode)
    if rootClass is None:
        rootTag = 'semiramis'
        rootClass = supermod.semiramis
    rootObj = rootClass.factory()
    rootObj.build(rootNode)
    mapping = {}
    rootElement = rootObj.to_etree(None, name_=rootTag, mapping_=mapping)
    reverse_mapping = rootObj.gds_reverse_node_mapping(mapping)
    # Enable Python to collect the space used by the DOM.
    if not SaveElementTreeNode:
        doc = None
        rootNode = None
    if not silence:
        content = etree_.tostring(
            rootElement, pretty_print=True,
            xml_declaration=True, encoding="utf-8")
        sys.stdout.write(content)
        sys.stdout.write('\n')
    return rootObj, rootElement, mapping, reverse_mapping


def parseString(inString, silence=False):
    if sys.version_info.major == 2:
        from StringIO import StringIO
    else:
        from io import BytesIO as StringIO
    parser = None
    rootNode= parsexmlstring_(inString, parser)
    rootTag, rootClass = get_root_tag(rootNode)
    if rootClass is None:
        rootTag = 'semiramis'
        rootClass = supermod.semiramis
    rootObj = rootClass.factory()
    rootObj.build(rootNode)
    # Enable Python to collect the space used by the DOM.
    if not SaveElementTreeNode:
        rootNode = None
    if not silence:
        sys.stdout.write('<?xml version="1.0" ?>\n')
        rootObj.export(
            sys.stdout, 0, name_=rootTag,
            namespacedef_='')
    return rootObj


def parseLiteral(inFilename, silence=False):
    parser = None
    doc = parsexml_(inFilename, parser)
    rootNode = doc.getroot()
    rootTag, rootClass = get_root_tag(rootNode)
    if rootClass is None:
        rootTag = 'semiramis'
        rootClass = supermod.semiramis
    rootObj = rootClass.factory()
    rootObj.build(rootNode)
    # Enable Python to collect the space used by the DOM.
    if not SaveElementTreeNode:
        doc = None
        rootNode = None
    if not silence:
        sys.stdout.write('#from ??? import *\n\n')
        sys.stdout.write('import ??? as model_\n\n')
        sys.stdout.write('rootObj = model_.rootClass(\n')
        rootObj.exportLiteral(sys.stdout, 0, name_=rootTag)
        sys.stdout.write(')\n')
    return rootObj


USAGE_TEXT = """
Usage: python ???.py <infilename>
"""


def usage():
    print(USAGE_TEXT)
    sys.exit(1)


def main():
    args = sys.argv[1:]
    if len(args) != 1:
        usage()
    infilename = args[0]
    parse(infilename)


if __name__ == '__main__':
    #import pdb; pdb.set_trace()
    main()
