def load_github_specs_from_json_file(self, github_specs_fname):
        assert isfile(github_specs_fname), "The github_specs file was not found: %s" % github_specs_filename

        try:
            d = json.loads(open(github_specs_fname, 'rU').read())
        except:
            msgx('Could not parse JSON in file: %s' % github_specs_fname)
        
        for attr in self.GITHUB_SPEC_ATTRIBUTE_NAMES:
            if not d.has_key(attr):
                msgx('Value not found for "%s".  The github specs file "%s" must have a "%s"' % (attr, github_specs_fname, attr ))
            #print ('loaded: %s->%s' % (attr, self.__dict__[attr]))
            self.__dict__[attr] = d[attr]
Left Join for a super-component
dataset/ETHPy150Open IQSS/redmine2github/scripts/label_updates/add_update_labels.py/GithubLabelMaker.load_github_specs_from_json_file--crossover with--dataset/ETHPy150Open sahana/eden/modules/unit_tests/s3/s3resource.py/ComponentLeftJoinConstructionTests.testGetLeftJoinSuperComponent