Exemplo n.º 1
0
    def __init__(self, doc):
        self.doc = doc
        self.hasMetadata = False

        # required metadata
        self.abstract = []
        self.ED = None
        self.level = None
        self.shortname = None
        self.status = None

        # optional metadata
        self.advisementClass = "advisement"
        self.atRisk = []
        self.blockElements = []
        self.boilerplate = config.BoolSet(default=True)
        self.customTextMacros = []
        self.date = datetime.utcnow().date()
        self.deadline = None
        self.defaultBiblioStatus = "dated"
        self.editors = []
        self.group = None
        self.h1 = None
        self.ignoredTerms = []
        self.ignoredVars = []
        self.indent = 4
        self.inlineGithubIssues = False
        self.issueClass = "issue"
        self.issues = []
        self.issueTrackerTemplate = None
        self.linkDefaults = defaultdict(list)
        self.logo = ""
        self.mailingList = None
        self.mailingListArchives = None
        self.markupShorthands = config.BoolSet(["css", "dfn", "biblio", "markup", "idl", "algorithm"])
        self.noEditor = False
        self.noteClass = "note"
        self.opaqueElements = ["pre", "xmp", "script", "style"]
        self.previousEditors = []
        self.previousVersions = []
        self.repository = config.Nil()
        self.statusText = []
        self.testSuite = None
        self.title = None
        self.TR = None
        self.translateIDs = defaultdict(list)
        self.translations = []
        self.useDfnPanels = True
        self.prepTR = False
        self.useIAutolinks = False
        self.versionHistory = []
        self.warning = None
        self.workStatus = None

        self.otherMetadata = DefaultOrderedDict(list)

        self.manuallySetKeys = set()
Exemplo n.º 2
0
def build_global_testcase_list():
    """
    Query Database get TestCase objects set.
    This set include all candidate records to compare.
    """
    make_final_select_query()
    cnx = database.open_query()
    cursor = cnx.cursor()
    print(final_select_string)
    cursor.execute(final_select_string)
    testcase_list = list()
    for (submission_id, arch, product, release, host, log_url, testsuite, test_time, failed, testcase, kernel_version) in cursor:
        testcase_list.append(TestCase(submission_id, arch, product, release, host, log_url, testsuite, test_time, testcase,kernel_version))

    #groups = defaultdict(list)

    #for obj in testcase_list:
    #    groups[obj.kernel_version+obj.product+obj.release].append(obj)
    #new_list = groups.values()
    #a = OrderedDict(new_list)

    #groups = OrderedDict()
    #for obj in testcase_list:
    #    groups[obj.kernel_version+obj.product+obj.release].append(obj)
    #new_list = groups.values()
    """
    TestCase_global_list_array looks like:

    """
    groups = DefaultOrderedDict(list)
    for obj in testcase_list:
        groups[obj.kernel_version+obj.product+obj.release].append(obj)
    new_list = groups.values()

    global TestCase_global_list_array
    TestCase_global_list_array = new_list
Exemplo n.º 3
0
class GroupLinks:
    def __init__(self):
        self.mapping = DefaultOrderedDict(lambda: [None, None])

    def add_incoming(self, to, incoming_list):
        self.mapping[to][0] = OrderedSet(incoming_list)

        while self.first_page_id() < to and self.first_value()[0] is None:
            _, outgoing_list = self.first_value()
            print(
                format_values(self.first_page_id(), OrderedSet(),
                              outgoing_list))
            del self.mapping[self.first_page_id()]

        self._cleanup(to)

    def add_outgoing(self, from_page, outgoing_list):
        self.mapping[from_page][1] = OrderedSet(outgoing_list)

        while self.first_page_id() < from_page and self.first_value(
        )[1] is None:
            incoming_list, _ = self.first_value()
            print(
                format_values(self.first_page_id(), incoming_list,
                              OrderedSet()))
            del self.mapping[self.first_page_id()]

        self._cleanup(from_page)

    def _cleanup(self, page_id):
        if None not in self.mapping[page_id]:
            print(format_values(page_id, *self.mapping[page_id]))
            del self.mapping[page_id]

    def dump_rest(self):
        for (page_id, [incoming_list, outgoing_list]) in self.mapping.items():
            incoming_list = incoming_list if incoming_list is not None else OrderedSet(
            )
            outgoing_list = outgoing_list if outgoing_list is not None else OrderedSet(
            )
            print(format_values(page_id, incoming_list, outgoing_list))

    def first_page_id(self):
        return next(iter(self.mapping))

    def first_value(self):
        return self.mapping[self.first_page_id()]
Exemplo n.º 4
0

def updateBiblio():
    say("Downloading biblio data...")
    biblios = defaultdict(list)
    try:
        with closing(urllib2.urlopen("https://specref.herokuapp.com/bibrefs")) as fh:
            biblio.processSpecrefBiblioFile(unicode(fh.read(), encoding="utf-8"), biblios, order=3)
        with closing(urllib2.urlopen("https://raw.githubusercontent.com/w3c/csswg-drafts/master/biblio.ref")) as fh:
            lines = [unicode(line, encoding="utf-8") for line in fh.readlines()]
            biblio.processReferBiblioFile(lines, biblios, order=4)
    except Exception, e:
        die("Couldn't download the biblio data.\n{0}", e)
    if not config.dryRun:
        # Group the biblios by the first two letters of their keys
        groupedBiblios = DefaultOrderedDict(DefaultOrderedDict)
        allNames = []
        for k, v in sorted(biblios.items(), key=lambda x: x[0].lower()):
            allNames.append(k)
            group = k[0:2]
            groupedBiblios[group][k] = v
        for group, biblios in groupedBiblios.items():
            try:
                with io.open(
                    config.scriptPath + "/spec-data/biblio/biblio-{0}.data".format(group), "w", encoding="utf-8"
                ) as fh:
                    writeBiblioFile(fh, biblios)
            except Exception, e:
                die("Couldn't save biblio database to disk.\n{0}", e)
                return
        try:
Exemplo n.º 5
0
                                                 encoding="utf-8"),
                                         biblios,
                                         order=3)
     with closing(
             urllib2.urlopen(
                 "https://raw.githubusercontent.com/w3c/csswg-drafts/master/biblio.ref"
             )) as fh:
         lines = [
             unicode(line, encoding="utf-8") for line in fh.readlines()
         ]
         biblio.processReferBiblioFile(lines, biblios, order=4)
 except Exception, e:
     die("Couldn't download the biblio data.\n{0}", e)
 if not config.dryRun:
     # Group the biblios by the first two letters of their keys
     groupedBiblios = DefaultOrderedDict(DefaultOrderedDict)
     allNames = []
     for k, v in sorted(biblios.items(), key=lambda x: x[0].lower()):
         allNames.append(k)
         group = k[0:2]
         groupedBiblios[group][k] = v
     for group, biblios in groupedBiblios.items():
         try:
             with io.open(config.scriptPath +
                          "/spec-data/biblio/biblio-{0}.data".format(group),
                          'w',
                          encoding="utf-8") as fh:
                 writeBiblioFile(fh, biblios)
         except Exception, e:
             die("Couldn't save biblio database to disk.\n{0}", e)
             return
Exemplo n.º 6
0
    def __init__(self, doc):
        self.doc = doc
        self.hasMetadata = False

        # required metadata
        self.abstract = []
        self.ED = None
        self.level = None
        self.shortname = None
        self.status = None
        self.rawStatus = None

        # optional metadata
        self.advisementClass = "advisement"
        self.assertionClass = "assertion"
        self.assumeExplicitFor = False
        self.atRisk = []
        self.audience = []
        self.blockElements = []
        self.boilerplate = config.BoolSet(default=True)
        self.canIUseURLs = []
        self.complainAbout = config.BoolSet()
        self.customTextMacros = []
        self.date = datetime.utcnow().date()
        self.deadline = None
        self.defaultBiblioStatus = "snapshot"
        self.defaultHighlight = None
        self.editors = []
        self.editorTerm = {"singular": "Editor", "plural": "Editors"}
        self.group = None
        self.h1 = None
        self.ignoredTerms = []
        self.ignoredVars = []
        self.includeCanIUsePanels = False
        self.indent = 4
        self.inferCSSDfns = False
        self.inlineGithubIssues = False
        self.issueClass = "issue"
        self.issues = []
        self.issueTrackerTemplate = None
        self.linkDefaults = defaultdict(list)
        self.logo = ""
        self.mailingList = None
        self.mailingListArchives = None
        self.markupShorthands = config.BoolSet(
            ["css", "dfn", "biblio", "markup", "idl", "algorithm"])
        self.maxToCDepth = float('inf')
        self.noEditor = False
        self.noteClass = "note"
        self.opaqueElements = ["pre", "xmp", "script", "style"]
        self.previousEditors = []
        self.previousVersions = []
        self.repository = config.Nil()
        self.statusText = []
        self.testSuite = None
        self.title = None
        self.toggleDiffs = False
        self.TR = None
        self.translateIDs = defaultdict(list)
        self.translations = []
        self.useDfnPanels = True
        self.prepTR = False
        self.useIAutolinks = False
        self.versionHistory = []
        self.warning = None
        self.workStatus = None

        self.otherMetadata = DefaultOrderedDict(list)

        self.manuallySetKeys = set()
Exemplo n.º 7
0
 def __init__(self):
     self.mapping = DefaultOrderedDict(lambda: [None, None])
Exemplo n.º 8
0
    def __init__(self, doc):
        self.doc = doc
        self.hasMetadata = False

        # required metadata
        self.status = None
        self.ED = None
        self.abstract = []
        self.shortname = None
        self.level = None

        # optional metadata
        self.TR = None
        self.title = None
        self.h1 = None
        self.statusText = []
        self.date = datetime.utcnow().date()
        self.deadline = None
        self.group = None
        self.editors = []
        self.previousEditors = []
        self.previousVersions = []
        self.warning = None
        self.atRisk = []
        self.ignoredTerms = []
        self.ignoredVars = []
        self.testSuite = None
        self.mailingList = None
        self.mailingListArchives = None
        self.boilerplate = {'omitSections':set()}
        self.versionHistory = []
        self.logo = ""
        self.indent = 4
        self.linkDefaults = defaultdict(list)
        self.useIAutolinks = False
        self.noEditor = False
        self.defaultBiblioStatus = "dated"
        self.markupShorthands = set(["css", "dfn", "biblio", "markup", "idl", "algorithm"])
        self.customTextMacros = []
        self.issues = []
        self.issueTrackerTemplate = None
        self.workStatus = None
        self.inlineGithubIssues = False
        self.repository = config.Nil()
        self.opaqueElements = ["pre", "xmp", "script", "style"]
        self.blockElements = []
        self.issueClass = "issue"
        self.noteClass = "note"
        self.advisementClass = "advisement"
        self.translations = []
        self.translateIDs = defaultdict(list)
        self.useDfnPanels = True

        self.otherMetadata = DefaultOrderedDict(list)

        self.overrides = set()

        # Some keys are single-value:
        # the result of parsing is simply assigned to them.
        self.singleValueKeys = {
            "Title": "title",
            "H1": "h1",
            "Status": "status",
            "ED": "ED",
            "URL": "ED", # URL is a synonym for ED
            "Shortname": "shortname",
            "Level": "level",
            "TR": "TR",
            "Warning": "warning",
            "Group": "group",
            "Date": "date",
            "Deadline": "deadline",
            "Test Suite": "testSuite",
            "Mailing List": "mailingList",
            "Mailing List Archives": "mailingListArchives",
            "Boilerplate": "boilerplate",
            "Logo": "logo",
            "Indent": "indent",
            "Use <I> Autolinks": "useIAutolinks",
            "No Editor": "noEditor",
            "Default Biblio Status": "defaultBiblioStatus",
            "Issue Tracker Template": "issueTrackerTemplate",
            "Work Status": "workStatus",
            "Inline Github Issues": "inlineGithubIssues",
            "Repository": "repository",
            "Issue Class": "issueClass",
            "Note Class": "noteClass",
            "Advisement Class": "advisementClass",
            "Use Dfn Panels": "useDfnPanels"
        }

        # Some keys are multi-value:
        # they *must* already be established as lists or dicts in __init__.
        # If a list, result of parsing can be a single value (appended) or a list (extended).
        # If a dict, result of parsing must be a dict of either single values or lists.
        # (Note that a multi-valued key might only allow a single value *per key instance*, like Editor,
        #  or multiple values per key, like Ignored Terms, which are agglomerated across keys.)
        self.multiValueKeys = {
            "Editor": "editors",
            "Former Editor": "previousEditors",
            "Abstract": "abstract",
            "Previous Version": "previousVersions",
            "At Risk": "atRisk",
            "Ignored Terms": "ignoredTerms",
            "Ignored Vars": "ignoredVars",
            "Link Defaults": "linkDefaults",
            "Issue Tracking": "issues",
            "Markup Shorthands": "markupShorthands",
            "Version History": "versionHistory",
            "Text Macro": "customTextMacros",
            "Opaque Elements": "opaqueElements",
            "Block Elements": "blockElements",
            "Translation": "translations",
            "Translate Ids": "translateIDs",
            "Status Text": "statusText"
        }

        self.knownKeys = self.singleValueKeys.viewkeys() | self.multiValueKeys.viewkeys()

        self.manuallySetKeys = set()

        # Input transformers, passed the key and string value.
        # The "default" input is a no-op that just returns the input string.
        self.customInput = {
            "Date": parseDate,
            "Deadline": parseDate,
            "Level": parseLevel,
            "Warning": convertWarning,
            "Editor": parseEditor,
            "Former Editor": parseEditor,
            "Ignored Terms": parseCommaSeparated,
            "Ignored Vars": parseCommaSeparated,
            "Link Defaults": parseLinkDefaults,
            "Boilerplate": parseBoilerplate,
            "Indent": parseInteger,
            "Use <I> Autolinks": parseBoolean,
            "No Editor": parseBoolean,
            "Default Biblio Status": parseBiblioStatus,
            "Issue Tracking": parseLinkedText,
            "Markup Shorthands": parseMarkupShorthands,
            "Text Macro": parseTextMacro,
            "Work Status": parseWorkStatus,
            "Inline Github Issues": parseBoolean,
            "Repository": parseRepository,
            "Opaque Elements": parseCommaSeparated,
            "Block Elements": parseCommaSeparated,
            "Translation": parseTranslation,
            "Translate Ids": parseTranslateIDs,
            "Use Dfn Panels": parseBoolean
        }

        # Alternate output handlers, passed key/value/doc.
        # The "default" output assigns the value to self.key.
        self.customOutput = {
            "Markup Shorthands": glomMarkupShorthands
        }