# -*- coding: utf-8 -*-
#
# Autogenerated by Thrift Compiler (0.11.0)
#
# DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
#
#  options string: py:coding=utf-8
#

from thrift.Thrift import TType, TMessageType, TFrozenDict, TException, TApplicationException
from thrift.protocol.TProtocol import TProtocolException
from thrift.TRecursive import fix_spec

import sys

from thrift.transport import TTransport
all_structs = []


class NITFInfo(object):
    """
    Attributes:
     - alternateURL: This field specifies the URL of the article, if published online. In some
    cases, such as with the New York Times, when this field is present,
    the URL is preferred to the URL field on articles published on
    or after April 02, 2006, as the linked page will have richer content.
     - articleAbstract: This field is a summary of the article, possibly written by
    an indexing service.
     - authorBiography: This field specifies the biography of the author of the article.
    Generally, this field is specified for guest authors, and not for
    regular reporters, except to provide the author's email address.
     - banner: The banner field is used to indicate if there has been additional
    information appended to the articles since its publication. Examples of
    banners include ('Correction Appended' and 'Editor's Note Appended').
     - biographicalCategoryList: When present, the biographical category field generally indicates that a
    document focuses on a particular individual. The value of the field
    indicates the area or category in which this individual is best known.
    This field is most often defined for Obituaries and Book Reviews.

    <ol>
    <li>Politics and Government (U.S.)</li>
    <li>Books and Magazines <li>Royalty</li>
    </ol>
     - columnName: If the article is part of a regular column, this field specifies the name
    of that column.
    <br>
    Sample Column Names:
    <br>
    <ol>
    <li>World News Briefs</li>
    <li>WEDDINGS</li>
    <li>The Accessories Channel</li>
    </ol>

     - columnNumber: This field specifies the column in which the article starts in the print
    paper. A typical printed page in the paper has six columns numbered from
    right to left. As a consequence most, but not all, of the values for this
    field fall in the range 1-6.
     - correctionDate: This field specifies the date on which a correction was made to the
    article. Generally, if the correction date is specified, the correction
    text will also be specified (and vice versa).
     - correctionText: For articles corrected following publication, this field specifies the
    correction. Generally, if the correction text is specified, the
    correction date will also be specified (and vice versa).
     - credit: This field indicates the entity that produced the editorial content of
    this document.
     - dayOfWeek: This field specifies the day of week on which the article was published.
    <ul>
    <li>Monday</li>
    <li>Tuesday</li>
    <li>Wednesday</li>
    <li>Thursday</li>
    <li>Friday</li>
    <li>Saturday</li>
    <li>Sunday</li>
    </ul>
     - descriptorList: The &quot;descriptors&quot; field specifies a list of descriptive terms drawn from
    a normalized controlled vocabulary corresponding to subjects mentioned in
    the article.
    <br>
    Examples Include:
    <ol>
    <li>ECONOMIC CONDITIONS AND TRENDS</li>
    <li>AIRPLANES</li>
    <li>VIOLINS</li>
    </ol>
     - featurePage: The feature page containing this article, such as
    <ul>
    <li>Education Page</li>
    <li>Fashion Page</li>
    </ul>
     - generalOnlineDescriptorList: The &quot;general online descriptors&quot; field specifies a list of descriptors
    that are at a higher level of generality than the other tags associated
    with the article.
    <br>
    Examples Include:
    <ol>
    <li>Surfing</li>
    <li>Venice Biennale</li>
    <li>Ranches</li>
    </ol>
     - guid: The GUID field specifies an integer that is guaranteed to be unique for
    every document in the corpus.
     - kicker: The kicker is an additional piece of information printed as an
    accompaniment to a news headline.
     - leadParagraphList: The &quot;lead Paragraph&quot; field is the lead paragraph of the article.
    Generally this field is populated with the first two paragraphs from the
    article.
     - locationList: The &quot;locations&quot; field specifies a list of geographic descriptors drawn
    from a normalized controlled vocabulary that correspond to places
    mentioned in the article.
    <br>
    Examples Include:
    <ol>
    <li>Wellsboro (Pa)</li>
    <li>Kansas City (Kan)</li>
    <li>Park Slope (NYC)</li>
    </ol>
     - nameList: The &quot;names&quot; field specifies a list of names mentioned in the article.
    <br>
    Examples Include:
    <ol>
    <li>Azza Fahmy</li>
    <li>George C. Izenour</li>
    <li>Chris Schenkel</li>
    </ol>
     - newsDesk: This field specifies the desk in the newsroom that
    produced the article. The desk is related to, but is not the same as the
    section in which the article appears.
     - normalizedByline: The Normalized Byline field is the byline normalized to the form (last
    name, first name).
     - onlineDescriptorList: This field specifies a list of descriptors from a normalized controlled
    vocabulary that correspond to topics mentioned in the article.
    <br>
    Examples Include:
    <ol>
    <li>Marriages</li>
    <li>Parks and Other Recreation Areas</li>
    <li>Cooking and Cookbooks</li>
    </ol>
     - onlineHeadline: This field specifies the headline displayed with the article
    online. Often this differs from the headline used in print.
     - onlineLeadParagraph: This field specifies the lead paragraph for the online version.
     - onlineLocationList: This field specifies a list of place names that correspond to geographic
    locations mentioned in the article.
    <br>
    Examples Include:
    <ol>
    <li>Hollywood</li>
    <li>Los Angeles</li>
    <li>Arcadia</li>
    </ol>
     - onlineOrganizationList: This field specifies a list of organizations that correspond to
    organizations mentioned in the article.
    <br>
    Examples Include:
    <ol>
    <li>Nintendo Company Limited</li>
    <li>Yeshiva University</li>
    <li>Rose Center</li>
    </ol>
     - onlinePeople: This field specifies a list of people that correspond to individuals
    mentioned in the article.
    <br>
    Examples Include:
    <ol>
    <li>Lopez, Jennifer</li>
    <li>Joyce, James</li>
    <li>Robinson, Jackie</li>
    </ol>
     - onlineSectionList: This field specifies the section(s) in which the online version of the article
    is placed. This may typically be populated from a semicolon (;) delineated list.
     - onlineTitleList: This field specifies a list of authored works mentioned in the article.
    <br>
    Examples Include:
    <ol>
    <li>Matchstick Men (Movie)</li>
    <li>Blades of Glory (Movie)</li>
    <li>Bridge and Tunnel (Play)</li>
    </ol>
     - organizationList: This field specifies a list of organization names drawn from a normalized
    controlled vocabulary that correspond to organizations mentioned in the
    article.
    <br>
    Examples Include:
    <ol>
    <li>Circuit City Stores Inc</li>
    <li>Delaware County Community College (Pa)</li>
    <li>CONNECTICUT GRAND OPERA</li>
    </ol>
     - page: This field specifies the page of the section in the paper in which the
    article appears. This is not an absolute pagination. An article that
    appears on page 3 in section A occurs in the physical paper before an
    article that occurs on page 1 of section F. The section is encoded in
    the <strong>section</strong> field.
     - peopleList: This field specifies a list of people from a normalized controlled
    vocabulary that correspond to individuals mentioned in the article.
    <br>
    Examples Include:
    <ol>
    <li>REAGAN, RONALD WILSON (PRES)</li>
    <li>BEGIN, MENACHEM (PRIME MIN)</li>
    <li>COLLINS, GLENN</li>
    </ol>
     - publicationDate: This field specifies the date of the article's publication.
     - publicationDayOfMonth: This field specifies the day of the month on which the article was
    published, always in the range 1-31.
     - publicationMonth: This field specifies the month on which the article was published in the
    range 1-12 where 1 is January 2 is February etc.
     - publicationYear: This field specifies the year in which the article was published. This
    value is in the range 1987-2007 for this collection.
     - section: This field specifies the section of the paper in which the article
    appears. This is not the name of the section, but rather a letter or
    number that indicates the section.
     - seriesName: If the article is part of a regular series, this field specifies the name
    of that column.
     - slug: The slug is a short string that uniquely identifies an article from all
    other articles published on the same day. Please note, however, that
    different articles on different days may have the same slug.
    <ul>
    <li>30other</li>
    <li>12reunion</li>
    </ul>
     - taxonomicClassifierList: This field specifies a list of taxonomic classifiers that place this
    article into a hierarchy of articles. The individual terms of each
    taxonomic classifier are separated with the '/' character.
    <br>
    Examples Include:
    <ol>
    <li>Top/Features/Travel/Guides/Destinations/North America/United
    States/Arizona</li>
    <li>Top/News/U.S./Rockies</li>
    <li>Top/Opinion</li>
    </ol>
     - titleList: This field specifies a list of authored works that correspond to works
    mentioned in the article.
    <br>
    Examples Include:
    <ol>
    <li>Greystoke: The Legend of Tarzan, Lord of the Apes (Movie)</li>
    <li>Law and Order (TV Program)</li>
    <li>BATTLEFIELD EARTH (BOOK)</li>
    </ol>
     - typesOfMaterialList: This field specifies a normalized list of terms describing the general
    editorial category of the article.
    <br>
    Examples Include:
    <ol>
    <li>REVIEW</li>
    <li>OBITUARY</li>
    <li>ANALYSIS</li>
    </ol>
     - url: This field specifies the location of the online version of the article. The
    &quot;Alternative Url&quot; field is preferred to this field on articles published
    on or after April 02, 2006, as the linked page will have richer content.
     - wordCount: This field specifies the number of words in the body of the article,
    including the lead paragraph.
    """


    def __init__(self, alternateURL=None, articleAbstract=None, authorBiography=None, banner=None, biographicalCategoryList=None, columnName=None, columnNumber=None, correctionDate=None, correctionText=None, credit=None, dayOfWeek=None, descriptorList=None, featurePage=None, generalOnlineDescriptorList=None, guid=None, kicker=None, leadParagraphList=None, locationList=None, nameList=None, newsDesk=None, normalizedByline=None, onlineDescriptorList=None, onlineHeadline=None, onlineLeadParagraph=None, onlineLocationList=None, onlineOrganizationList=None, onlinePeople=None, onlineSectionList=None, onlineTitleList=None, organizationList=None, page=None, peopleList=None, publicationDate=None, publicationDayOfMonth=None, publicationMonth=None, publicationYear=None, section=None, seriesName=None, slug=None, taxonomicClassifierList=None, titleList=None, typesOfMaterialList=None, url=None, wordCount=None,):
        self.alternateURL = alternateURL
        self.articleAbstract = articleAbstract
        self.authorBiography = authorBiography
        self.banner = banner
        self.biographicalCategoryList = biographicalCategoryList
        self.columnName = columnName
        self.columnNumber = columnNumber
        self.correctionDate = correctionDate
        self.correctionText = correctionText
        self.credit = credit
        self.dayOfWeek = dayOfWeek
        self.descriptorList = descriptorList
        self.featurePage = featurePage
        self.generalOnlineDescriptorList = generalOnlineDescriptorList
        self.guid = guid
        self.kicker = kicker
        self.leadParagraphList = leadParagraphList
        self.locationList = locationList
        self.nameList = nameList
        self.newsDesk = newsDesk
        self.normalizedByline = normalizedByline
        self.onlineDescriptorList = onlineDescriptorList
        self.onlineHeadline = onlineHeadline
        self.onlineLeadParagraph = onlineLeadParagraph
        self.onlineLocationList = onlineLocationList
        self.onlineOrganizationList = onlineOrganizationList
        self.onlinePeople = onlinePeople
        self.onlineSectionList = onlineSectionList
        self.onlineTitleList = onlineTitleList
        self.organizationList = organizationList
        self.page = page
        self.peopleList = peopleList
        self.publicationDate = publicationDate
        self.publicationDayOfMonth = publicationDayOfMonth
        self.publicationMonth = publicationMonth
        self.publicationYear = publicationYear
        self.section = section
        self.seriesName = seriesName
        self.slug = slug
        self.taxonomicClassifierList = taxonomicClassifierList
        self.titleList = titleList
        self.typesOfMaterialList = typesOfMaterialList
        self.url = url
        self.wordCount = wordCount

    def read(self, iprot):
        if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None:
            iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec])
            return
        iprot.readStructBegin()
        while True:
            (fname, ftype, fid) = iprot.readFieldBegin()
            if ftype == TType.STOP:
                break
            if fid == 1:
                if ftype == TType.STRING:
                    self.alternateURL = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                else:
                    iprot.skip(ftype)
            elif fid == 2:
                if ftype == TType.STRING:
                    self.articleAbstract = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                else:
                    iprot.skip(ftype)
            elif fid == 3:
                if ftype == TType.STRING:
                    self.authorBiography = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                else:
                    iprot.skip(ftype)
            elif fid == 4:
                if ftype == TType.STRING:
                    self.banner = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                else:
                    iprot.skip(ftype)
            elif fid == 5:
                if ftype == TType.LIST:
                    self.biographicalCategoryList = []
                    (_etype3, _size0) = iprot.readListBegin()
                    for _i4 in range(_size0):
                        _elem5 = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                        self.biographicalCategoryList.append(_elem5)
                    iprot.readListEnd()
                else:
                    iprot.skip(ftype)
            elif fid == 6:
                if ftype == TType.STRING:
                    self.columnName = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                else:
                    iprot.skip(ftype)
            elif fid == 7:
                if ftype == TType.I32:
                    self.columnNumber = iprot.readI32()
                else:
                    iprot.skip(ftype)
            elif fid == 8:
                if ftype == TType.I64:
                    self.correctionDate = iprot.readI64()
                else:
                    iprot.skip(ftype)
            elif fid == 9:
                if ftype == TType.STRING:
                    self.correctionText = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                else:
                    iprot.skip(ftype)
            elif fid == 10:
                if ftype == TType.STRING:
                    self.credit = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                else:
                    iprot.skip(ftype)
            elif fid == 11:
                if ftype == TType.STRING:
                    self.dayOfWeek = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                else:
                    iprot.skip(ftype)
            elif fid == 12:
                if ftype == TType.LIST:
                    self.descriptorList = []
                    (_etype9, _size6) = iprot.readListBegin()
                    for _i10 in range(_size6):
                        _elem11 = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                        self.descriptorList.append(_elem11)
                    iprot.readListEnd()
                else:
                    iprot.skip(ftype)
            elif fid == 13:
                if ftype == TType.STRING:
                    self.featurePage = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                else:
                    iprot.skip(ftype)
            elif fid == 14:
                if ftype == TType.LIST:
                    self.generalOnlineDescriptorList = []
                    (_etype15, _size12) = iprot.readListBegin()
                    for _i16 in range(_size12):
                        _elem17 = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                        self.generalOnlineDescriptorList.append(_elem17)
                    iprot.readListEnd()
                else:
                    iprot.skip(ftype)
            elif fid == 15:
                if ftype == TType.I32:
                    self.guid = iprot.readI32()
                else:
                    iprot.skip(ftype)
            elif fid == 16:
                if ftype == TType.STRING:
                    self.kicker = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                else:
                    iprot.skip(ftype)
            elif fid == 17:
                if ftype == TType.LIST:
                    self.leadParagraphList = []
                    (_etype21, _size18) = iprot.readListBegin()
                    for _i22 in range(_size18):
                        _elem23 = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                        self.leadParagraphList.append(_elem23)
                    iprot.readListEnd()
                else:
                    iprot.skip(ftype)
            elif fid == 18:
                if ftype == TType.LIST:
                    self.locationList = []
                    (_etype27, _size24) = iprot.readListBegin()
                    for _i28 in range(_size24):
                        _elem29 = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                        self.locationList.append(_elem29)
                    iprot.readListEnd()
                else:
                    iprot.skip(ftype)
            elif fid == 19:
                if ftype == TType.LIST:
                    self.nameList = []
                    (_etype33, _size30) = iprot.readListBegin()
                    for _i34 in range(_size30):
                        _elem35 = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                        self.nameList.append(_elem35)
                    iprot.readListEnd()
                else:
                    iprot.skip(ftype)
            elif fid == 20:
                if ftype == TType.STRING:
                    self.newsDesk = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                else:
                    iprot.skip(ftype)
            elif fid == 21:
                if ftype == TType.STRING:
                    self.normalizedByline = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                else:
                    iprot.skip(ftype)
            elif fid == 22:
                if ftype == TType.LIST:
                    self.onlineDescriptorList = []
                    (_etype39, _size36) = iprot.readListBegin()
                    for _i40 in range(_size36):
                        _elem41 = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                        self.onlineDescriptorList.append(_elem41)
                    iprot.readListEnd()
                else:
                    iprot.skip(ftype)
            elif fid == 23:
                if ftype == TType.STRING:
                    self.onlineHeadline = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                else:
                    iprot.skip(ftype)
            elif fid == 24:
                if ftype == TType.STRING:
                    self.onlineLeadParagraph = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                else:
                    iprot.skip(ftype)
            elif fid == 25:
                if ftype == TType.LIST:
                    self.onlineLocationList = []
                    (_etype45, _size42) = iprot.readListBegin()
                    for _i46 in range(_size42):
                        _elem47 = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                        self.onlineLocationList.append(_elem47)
                    iprot.readListEnd()
                else:
                    iprot.skip(ftype)
            elif fid == 26:
                if ftype == TType.LIST:
                    self.onlineOrganizationList = []
                    (_etype51, _size48) = iprot.readListBegin()
                    for _i52 in range(_size48):
                        _elem53 = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                        self.onlineOrganizationList.append(_elem53)
                    iprot.readListEnd()
                else:
                    iprot.skip(ftype)
            elif fid == 27:
                if ftype == TType.LIST:
                    self.onlinePeople = []
                    (_etype57, _size54) = iprot.readListBegin()
                    for _i58 in range(_size54):
                        _elem59 = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                        self.onlinePeople.append(_elem59)
                    iprot.readListEnd()
                else:
                    iprot.skip(ftype)
            elif fid == 28:
                if ftype == TType.LIST:
                    self.onlineSectionList = []
                    (_etype63, _size60) = iprot.readListBegin()
                    for _i64 in range(_size60):
                        _elem65 = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                        self.onlineSectionList.append(_elem65)
                    iprot.readListEnd()
                else:
                    iprot.skip(ftype)
            elif fid == 29:
                if ftype == TType.LIST:
                    self.onlineTitleList = []
                    (_etype69, _size66) = iprot.readListBegin()
                    for _i70 in range(_size66):
                        _elem71 = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                        self.onlineTitleList.append(_elem71)
                    iprot.readListEnd()
                else:
                    iprot.skip(ftype)
            elif fid == 30:
                if ftype == TType.LIST:
                    self.organizationList = []
                    (_etype75, _size72) = iprot.readListBegin()
                    for _i76 in range(_size72):
                        _elem77 = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                        self.organizationList.append(_elem77)
                    iprot.readListEnd()
                else:
                    iprot.skip(ftype)
            elif fid == 31:
                if ftype == TType.I32:
                    self.page = iprot.readI32()
                else:
                    iprot.skip(ftype)
            elif fid == 32:
                if ftype == TType.LIST:
                    self.peopleList = []
                    (_etype81, _size78) = iprot.readListBegin()
                    for _i82 in range(_size78):
                        _elem83 = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                        self.peopleList.append(_elem83)
                    iprot.readListEnd()
                else:
                    iprot.skip(ftype)
            elif fid == 33:
                if ftype == TType.I64:
                    self.publicationDate = iprot.readI64()
                else:
                    iprot.skip(ftype)
            elif fid == 34:
                if ftype == TType.I32:
                    self.publicationDayOfMonth = iprot.readI32()
                else:
                    iprot.skip(ftype)
            elif fid == 35:
                if ftype == TType.I32:
                    self.publicationMonth = iprot.readI32()
                else:
                    iprot.skip(ftype)
            elif fid == 36:
                if ftype == TType.I32:
                    self.publicationYear = iprot.readI32()
                else:
                    iprot.skip(ftype)
            elif fid == 37:
                if ftype == TType.STRING:
                    self.section = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                else:
                    iprot.skip(ftype)
            elif fid == 38:
                if ftype == TType.STRING:
                    self.seriesName = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                else:
                    iprot.skip(ftype)
            elif fid == 39:
                if ftype == TType.STRING:
                    self.slug = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                else:
                    iprot.skip(ftype)
            elif fid == 40:
                if ftype == TType.LIST:
                    self.taxonomicClassifierList = []
                    (_etype87, _size84) = iprot.readListBegin()
                    for _i88 in range(_size84):
                        _elem89 = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                        self.taxonomicClassifierList.append(_elem89)
                    iprot.readListEnd()
                else:
                    iprot.skip(ftype)
            elif fid == 41:
                if ftype == TType.LIST:
                    self.titleList = []
                    (_etype93, _size90) = iprot.readListBegin()
                    for _i94 in range(_size90):
                        _elem95 = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                        self.titleList.append(_elem95)
                    iprot.readListEnd()
                else:
                    iprot.skip(ftype)
            elif fid == 42:
                if ftype == TType.LIST:
                    self.typesOfMaterialList = []
                    (_etype99, _size96) = iprot.readListBegin()
                    for _i100 in range(_size96):
                        _elem101 = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                        self.typesOfMaterialList.append(_elem101)
                    iprot.readListEnd()
                else:
                    iprot.skip(ftype)
            elif fid == 43:
                if ftype == TType.STRING:
                    self.url = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                else:
                    iprot.skip(ftype)
            elif fid == 44:
                if ftype == TType.I32:
                    self.wordCount = iprot.readI32()
                else:
                    iprot.skip(ftype)
            else:
                iprot.skip(ftype)
            iprot.readFieldEnd()
        iprot.readStructEnd()

    def write(self, oprot):
        if oprot._fast_encode is not None and self.thrift_spec is not None:
            oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec]))
            return
        oprot.writeStructBegin('NITFInfo')
        if self.alternateURL is not None:
            oprot.writeFieldBegin('alternateURL', TType.STRING, 1)
            oprot.writeString(self.alternateURL.encode('utf-8') if sys.version_info[0] == 2 else self.alternateURL)
            oprot.writeFieldEnd()
        if self.articleAbstract is not None:
            oprot.writeFieldBegin('articleAbstract', TType.STRING, 2)
            oprot.writeString(self.articleAbstract.encode('utf-8') if sys.version_info[0] == 2 else self.articleAbstract)
            oprot.writeFieldEnd()
        if self.authorBiography is not None:
            oprot.writeFieldBegin('authorBiography', TType.STRING, 3)
            oprot.writeString(self.authorBiography.encode('utf-8') if sys.version_info[0] == 2 else self.authorBiography)
            oprot.writeFieldEnd()
        if self.banner is not None:
            oprot.writeFieldBegin('banner', TType.STRING, 4)
            oprot.writeString(self.banner.encode('utf-8') if sys.version_info[0] == 2 else self.banner)
            oprot.writeFieldEnd()
        if self.biographicalCategoryList is not None:
            oprot.writeFieldBegin('biographicalCategoryList', TType.LIST, 5)
            oprot.writeListBegin(TType.STRING, len(self.biographicalCategoryList))
            for iter102 in self.biographicalCategoryList:
                oprot.writeString(iter102.encode('utf-8') if sys.version_info[0] == 2 else iter102)
            oprot.writeListEnd()
            oprot.writeFieldEnd()
        if self.columnName is not None:
            oprot.writeFieldBegin('columnName', TType.STRING, 6)
            oprot.writeString(self.columnName.encode('utf-8') if sys.version_info[0] == 2 else self.columnName)
            oprot.writeFieldEnd()
        if self.columnNumber is not None:
            oprot.writeFieldBegin('columnNumber', TType.I32, 7)
            oprot.writeI32(self.columnNumber)
            oprot.writeFieldEnd()
        if self.correctionDate is not None:
            oprot.writeFieldBegin('correctionDate', TType.I64, 8)
            oprot.writeI64(self.correctionDate)
            oprot.writeFieldEnd()
        if self.correctionText is not None:
            oprot.writeFieldBegin('correctionText', TType.STRING, 9)
            oprot.writeString(self.correctionText.encode('utf-8') if sys.version_info[0] == 2 else self.correctionText)
            oprot.writeFieldEnd()
        if self.credit is not None:
            oprot.writeFieldBegin('credit', TType.STRING, 10)
            oprot.writeString(self.credit.encode('utf-8') if sys.version_info[0] == 2 else self.credit)
            oprot.writeFieldEnd()
        if self.dayOfWeek is not None:
            oprot.writeFieldBegin('dayOfWeek', TType.STRING, 11)
            oprot.writeString(self.dayOfWeek.encode('utf-8') if sys.version_info[0] == 2 else self.dayOfWeek)
            oprot.writeFieldEnd()
        if self.descriptorList is not None:
            oprot.writeFieldBegin('descriptorList', TType.LIST, 12)
            oprot.writeListBegin(TType.STRING, len(self.descriptorList))
            for iter103 in self.descriptorList:
                oprot.writeString(iter103.encode('utf-8') if sys.version_info[0] == 2 else iter103)
            oprot.writeListEnd()
            oprot.writeFieldEnd()
        if self.featurePage is not None:
            oprot.writeFieldBegin('featurePage', TType.STRING, 13)
            oprot.writeString(self.featurePage.encode('utf-8') if sys.version_info[0] == 2 else self.featurePage)
            oprot.writeFieldEnd()
        if self.generalOnlineDescriptorList is not None:
            oprot.writeFieldBegin('generalOnlineDescriptorList', TType.LIST, 14)
            oprot.writeListBegin(TType.STRING, len(self.generalOnlineDescriptorList))
            for iter104 in self.generalOnlineDescriptorList:
                oprot.writeString(iter104.encode('utf-8') if sys.version_info[0] == 2 else iter104)
            oprot.writeListEnd()
            oprot.writeFieldEnd()
        if self.guid is not None:
            oprot.writeFieldBegin('guid', TType.I32, 15)
            oprot.writeI32(self.guid)
            oprot.writeFieldEnd()
        if self.kicker is not None:
            oprot.writeFieldBegin('kicker', TType.STRING, 16)
            oprot.writeString(self.kicker.encode('utf-8') if sys.version_info[0] == 2 else self.kicker)
            oprot.writeFieldEnd()
        if self.leadParagraphList is not None:
            oprot.writeFieldBegin('leadParagraphList', TType.LIST, 17)
            oprot.writeListBegin(TType.STRING, len(self.leadParagraphList))
            for iter105 in self.leadParagraphList:
                oprot.writeString(iter105.encode('utf-8') if sys.version_info[0] == 2 else iter105)
            oprot.writeListEnd()
            oprot.writeFieldEnd()
        if self.locationList is not None:
            oprot.writeFieldBegin('locationList', TType.LIST, 18)
            oprot.writeListBegin(TType.STRING, len(self.locationList))
            for iter106 in self.locationList:
                oprot.writeString(iter106.encode('utf-8') if sys.version_info[0] == 2 else iter106)
            oprot.writeListEnd()
            oprot.writeFieldEnd()
        if self.nameList is not None:
            oprot.writeFieldBegin('nameList', TType.LIST, 19)
            oprot.writeListBegin(TType.STRING, len(self.nameList))
            for iter107 in self.nameList:
                oprot.writeString(iter107.encode('utf-8') if sys.version_info[0] == 2 else iter107)
            oprot.writeListEnd()
            oprot.writeFieldEnd()
        if self.newsDesk is not None:
            oprot.writeFieldBegin('newsDesk', TType.STRING, 20)
            oprot.writeString(self.newsDesk.encode('utf-8') if sys.version_info[0] == 2 else self.newsDesk)
            oprot.writeFieldEnd()
        if self.normalizedByline is not None:
            oprot.writeFieldBegin('normalizedByline', TType.STRING, 21)
            oprot.writeString(self.normalizedByline.encode('utf-8') if sys.version_info[0] == 2 else self.normalizedByline)
            oprot.writeFieldEnd()
        if self.onlineDescriptorList is not None:
            oprot.writeFieldBegin('onlineDescriptorList', TType.LIST, 22)
            oprot.writeListBegin(TType.STRING, len(self.onlineDescriptorList))
            for iter108 in self.onlineDescriptorList:
                oprot.writeString(iter108.encode('utf-8') if sys.version_info[0] == 2 else iter108)
            oprot.writeListEnd()
            oprot.writeFieldEnd()
        if self.onlineHeadline is not None:
            oprot.writeFieldBegin('onlineHeadline', TType.STRING, 23)
            oprot.writeString(self.onlineHeadline.encode('utf-8') if sys.version_info[0] == 2 else self.onlineHeadline)
            oprot.writeFieldEnd()
        if self.onlineLeadParagraph is not None:
            oprot.writeFieldBegin('onlineLeadParagraph', TType.STRING, 24)
            oprot.writeString(self.onlineLeadParagraph.encode('utf-8') if sys.version_info[0] == 2 else self.onlineLeadParagraph)
            oprot.writeFieldEnd()
        if self.onlineLocationList is not None:
            oprot.writeFieldBegin('onlineLocationList', TType.LIST, 25)
            oprot.writeListBegin(TType.STRING, len(self.onlineLocationList))
            for iter109 in self.onlineLocationList:
                oprot.writeString(iter109.encode('utf-8') if sys.version_info[0] == 2 else iter109)
            oprot.writeListEnd()
            oprot.writeFieldEnd()
        if self.onlineOrganizationList is not None:
            oprot.writeFieldBegin('onlineOrganizationList', TType.LIST, 26)
            oprot.writeListBegin(TType.STRING, len(self.onlineOrganizationList))
            for iter110 in self.onlineOrganizationList:
                oprot.writeString(iter110.encode('utf-8') if sys.version_info[0] == 2 else iter110)
            oprot.writeListEnd()
            oprot.writeFieldEnd()
        if self.onlinePeople is not None:
            oprot.writeFieldBegin('onlinePeople', TType.LIST, 27)
            oprot.writeListBegin(TType.STRING, len(self.onlinePeople))
            for iter111 in self.onlinePeople:
                oprot.writeString(iter111.encode('utf-8') if sys.version_info[0] == 2 else iter111)
            oprot.writeListEnd()
            oprot.writeFieldEnd()
        if self.onlineSectionList is not None:
            oprot.writeFieldBegin('onlineSectionList', TType.LIST, 28)
            oprot.writeListBegin(TType.STRING, len(self.onlineSectionList))
            for iter112 in self.onlineSectionList:
                oprot.writeString(iter112.encode('utf-8') if sys.version_info[0] == 2 else iter112)
            oprot.writeListEnd()
            oprot.writeFieldEnd()
        if self.onlineTitleList is not None:
            oprot.writeFieldBegin('onlineTitleList', TType.LIST, 29)
            oprot.writeListBegin(TType.STRING, len(self.onlineTitleList))
            for iter113 in self.onlineTitleList:
                oprot.writeString(iter113.encode('utf-8') if sys.version_info[0] == 2 else iter113)
            oprot.writeListEnd()
            oprot.writeFieldEnd()
        if self.organizationList is not None:
            oprot.writeFieldBegin('organizationList', TType.LIST, 30)
            oprot.writeListBegin(TType.STRING, len(self.organizationList))
            for iter114 in self.organizationList:
                oprot.writeString(iter114.encode('utf-8') if sys.version_info[0] == 2 else iter114)
            oprot.writeListEnd()
            oprot.writeFieldEnd()
        if self.page is not None:
            oprot.writeFieldBegin('page', TType.I32, 31)
            oprot.writeI32(self.page)
            oprot.writeFieldEnd()
        if self.peopleList is not None:
            oprot.writeFieldBegin('peopleList', TType.LIST, 32)
            oprot.writeListBegin(TType.STRING, len(self.peopleList))
            for iter115 in self.peopleList:
                oprot.writeString(iter115.encode('utf-8') if sys.version_info[0] == 2 else iter115)
            oprot.writeListEnd()
            oprot.writeFieldEnd()
        if self.publicationDate is not None:
            oprot.writeFieldBegin('publicationDate', TType.I64, 33)
            oprot.writeI64(self.publicationDate)
            oprot.writeFieldEnd()
        if self.publicationDayOfMonth is not None:
            oprot.writeFieldBegin('publicationDayOfMonth', TType.I32, 34)
            oprot.writeI32(self.publicationDayOfMonth)
            oprot.writeFieldEnd()
        if self.publicationMonth is not None:
            oprot.writeFieldBegin('publicationMonth', TType.I32, 35)
            oprot.writeI32(self.publicationMonth)
            oprot.writeFieldEnd()
        if self.publicationYear is not None:
            oprot.writeFieldBegin('publicationYear', TType.I32, 36)
            oprot.writeI32(self.publicationYear)
            oprot.writeFieldEnd()
        if self.section is not None:
            oprot.writeFieldBegin('section', TType.STRING, 37)
            oprot.writeString(self.section.encode('utf-8') if sys.version_info[0] == 2 else self.section)
            oprot.writeFieldEnd()
        if self.seriesName is not None:
            oprot.writeFieldBegin('seriesName', TType.STRING, 38)
            oprot.writeString(self.seriesName.encode('utf-8') if sys.version_info[0] == 2 else self.seriesName)
            oprot.writeFieldEnd()
        if self.slug is not None:
            oprot.writeFieldBegin('slug', TType.STRING, 39)
            oprot.writeString(self.slug.encode('utf-8') if sys.version_info[0] == 2 else self.slug)
            oprot.writeFieldEnd()
        if self.taxonomicClassifierList is not None:
            oprot.writeFieldBegin('taxonomicClassifierList', TType.LIST, 40)
            oprot.writeListBegin(TType.STRING, len(self.taxonomicClassifierList))
            for iter116 in self.taxonomicClassifierList:
                oprot.writeString(iter116.encode('utf-8') if sys.version_info[0] == 2 else iter116)
            oprot.writeListEnd()
            oprot.writeFieldEnd()
        if self.titleList is not None:
            oprot.writeFieldBegin('titleList', TType.LIST, 41)
            oprot.writeListBegin(TType.STRING, len(self.titleList))
            for iter117 in self.titleList:
                oprot.writeString(iter117.encode('utf-8') if sys.version_info[0] == 2 else iter117)
            oprot.writeListEnd()
            oprot.writeFieldEnd()
        if self.typesOfMaterialList is not None:
            oprot.writeFieldBegin('typesOfMaterialList', TType.LIST, 42)
            oprot.writeListBegin(TType.STRING, len(self.typesOfMaterialList))
            for iter118 in self.typesOfMaterialList:
                oprot.writeString(iter118.encode('utf-8') if sys.version_info[0] == 2 else iter118)
            oprot.writeListEnd()
            oprot.writeFieldEnd()
        if self.url is not None:
            oprot.writeFieldBegin('url', TType.STRING, 43)
            oprot.writeString(self.url.encode('utf-8') if sys.version_info[0] == 2 else self.url)
            oprot.writeFieldEnd()
        if self.wordCount is not None:
            oprot.writeFieldBegin('wordCount', TType.I32, 44)
            oprot.writeI32(self.wordCount)
            oprot.writeFieldEnd()
        oprot.writeFieldStop()
        oprot.writeStructEnd()

    def validate(self):
        return

    def __repr__(self):
        L = ['%s=%r' % (key, value)
             for key, value in self.__dict__.items()]
        return '%s(%s)' % (self.__class__.__name__, ', '.join(L))

    def __eq__(self, other):
        return isinstance(other, self.__class__) and self.__dict__ == other.__dict__

    def __ne__(self, other):
        return not (self == other)
all_structs.append(NITFInfo)
NITFInfo.thrift_spec = (
    None,  # 0
    (1, TType.STRING, 'alternateURL', 'UTF8', None, ),  # 1
    (2, TType.STRING, 'articleAbstract', 'UTF8', None, ),  # 2
    (3, TType.STRING, 'authorBiography', 'UTF8', None, ),  # 3
    (4, TType.STRING, 'banner', 'UTF8', None, ),  # 4
    (5, TType.LIST, 'biographicalCategoryList', (TType.STRING, 'UTF8', False), None, ),  # 5
    (6, TType.STRING, 'columnName', 'UTF8', None, ),  # 6
    (7, TType.I32, 'columnNumber', None, None, ),  # 7
    (8, TType.I64, 'correctionDate', None, None, ),  # 8
    (9, TType.STRING, 'correctionText', 'UTF8', None, ),  # 9
    (10, TType.STRING, 'credit', 'UTF8', None, ),  # 10
    (11, TType.STRING, 'dayOfWeek', 'UTF8', None, ),  # 11
    (12, TType.LIST, 'descriptorList', (TType.STRING, 'UTF8', False), None, ),  # 12
    (13, TType.STRING, 'featurePage', 'UTF8', None, ),  # 13
    (14, TType.LIST, 'generalOnlineDescriptorList', (TType.STRING, 'UTF8', False), None, ),  # 14
    (15, TType.I32, 'guid', None, None, ),  # 15
    (16, TType.STRING, 'kicker', 'UTF8', None, ),  # 16
    (17, TType.LIST, 'leadParagraphList', (TType.STRING, 'UTF8', False), None, ),  # 17
    (18, TType.LIST, 'locationList', (TType.STRING, 'UTF8', False), None, ),  # 18
    (19, TType.LIST, 'nameList', (TType.STRING, 'UTF8', False), None, ),  # 19
    (20, TType.STRING, 'newsDesk', 'UTF8', None, ),  # 20
    (21, TType.STRING, 'normalizedByline', 'UTF8', None, ),  # 21
    (22, TType.LIST, 'onlineDescriptorList', (TType.STRING, 'UTF8', False), None, ),  # 22
    (23, TType.STRING, 'onlineHeadline', 'UTF8', None, ),  # 23
    (24, TType.STRING, 'onlineLeadParagraph', 'UTF8', None, ),  # 24
    (25, TType.LIST, 'onlineLocationList', (TType.STRING, 'UTF8', False), None, ),  # 25
    (26, TType.LIST, 'onlineOrganizationList', (TType.STRING, 'UTF8', False), None, ),  # 26
    (27, TType.LIST, 'onlinePeople', (TType.STRING, 'UTF8', False), None, ),  # 27
    (28, TType.LIST, 'onlineSectionList', (TType.STRING, 'UTF8', False), None, ),  # 28
    (29, TType.LIST, 'onlineTitleList', (TType.STRING, 'UTF8', False), None, ),  # 29
    (30, TType.LIST, 'organizationList', (TType.STRING, 'UTF8', False), None, ),  # 30
    (31, TType.I32, 'page', None, None, ),  # 31
    (32, TType.LIST, 'peopleList', (TType.STRING, 'UTF8', False), None, ),  # 32
    (33, TType.I64, 'publicationDate', None, None, ),  # 33
    (34, TType.I32, 'publicationDayOfMonth', None, None, ),  # 34
    (35, TType.I32, 'publicationMonth', None, None, ),  # 35
    (36, TType.I32, 'publicationYear', None, None, ),  # 36
    (37, TType.STRING, 'section', 'UTF8', None, ),  # 37
    (38, TType.STRING, 'seriesName', 'UTF8', None, ),  # 38
    (39, TType.STRING, 'slug', 'UTF8', None, ),  # 39
    (40, TType.LIST, 'taxonomicClassifierList', (TType.STRING, 'UTF8', False), None, ),  # 40
    (41, TType.LIST, 'titleList', (TType.STRING, 'UTF8', False), None, ),  # 41
    (42, TType.LIST, 'typesOfMaterialList', (TType.STRING, 'UTF8', False), None, ),  # 42
    (43, TType.STRING, 'url', 'UTF8', None, ),  # 43
    (44, TType.I32, 'wordCount', None, None, ),  # 44
)
fix_spec(all_structs)
del all_structs
