예제 #1
0
def get_issues(getter, project, milestone):
    milestones = get_milestones(getter, project)
    mid = milestones[milestone]

    url = "https://api.github.com/repos/{project}/issues?milestone={mid}&state=closed&sort=created&direction=asc"
    url = url.format(project=project, mid=mid)

    raw_datas = []
    while True:
        raw_data, info = getter.get(url)
        raw_datas.append(raw_data)
        if 'link' not in info:
            break
        m = re.search('<(.*?)>; rel="next"', info['link'])
        if m:
            url = m.group(1)
            continue
        break

    issues = []

    for raw_data in raw_datas:
        data = ioJSON.loads(raw_data)
        for issue_data in data:
            issues.append(Issue(issue_data[u'number'],
                                issue_data[u'title'],
                                issue_data[u'html_url']))
    return issues
예제 #2
0
def get_milestones(getter, project):
    url = "https://api.github.com/repos/{project}/milestones".format(project=project)
    raw_data, info = getter.get(url)
    data = ioJSON.loads(raw_data)

    milestones = {}
    for ms in data:
        milestones[ms[u'title']] = ms[u'number']
    return milestones
예제 #3
0
    def test_simple(self):
        # load and inspect the simple example project

        projfile = os.path.join(self.path, 'simple_1.proj')

        project_from_archive(projfile, dest_dir=self.tdir)

        # LOAD PROJECT
        self.cserver.load_project(os.path.join(self.tdir, 'simple_1'))

        # CHECK FILES
        files = self.cserver.get_files()

        self.assertTrue('/paraboloid.py'.replace('/', os.sep) in files)
        self.assertTrue(
            '/optimization_constrained.py'.replace('/', os.sep) in files)
        self.assertTrue(
            '/optimization_unconstrained.py'.replace('/', os.sep) in files)
        self.assertTrue('/_project_state'.replace('/', os.sep) in files)

        time.sleep(3.0)
        types = self.cserver.get_types()
        self.assertTrue('Paraboloid' in types)

        type_info = types['Paraboloid']
        self.assertEqual(type_info['modpath'], 'paraboloid.Paraboloid')

        components = ioJSON.loads(self.cserver.get_components())

        # CREATE ASSEMBLY
        self.cserver.put_object('prob', 'openmdao.main.assembly.Assembly')

        oldnum = len(components)
        components = ioJSON.loads(self.cserver.get_components())
        self.assertEqual(len(components) - oldnum, 1)

        for comp in components:
            if comp['pathname'] == 'prob':
                assembly = comp
                break
        else:
            self.fail("prob was not found in component list")
        self.assertEqual(assembly['pathname'], 'prob')
        self.assertEqual(assembly['type'], 'Assembly')
        self.assertEqual(assembly['interfaces'],
                         ['IAssembly', 'IComponent', 'IContainer'])
        self.assertEqual(len(assembly['children']), 1)

        child = assembly['children'][0]
        self.assertEqual(child['pathname'], 'prob.driver')
        self.assertEqual(child['type'], 'Driver')
        self.assertEqual(child['interfaces'],
                         ['IDriver', 'IHasEvents', 'IComponent', 'IContainer'])

        # ADD CONMIN DRIVER
        self.cserver.put_object(
            'prob.driver', 'openmdao.lib.drivers.conmindriver.CONMINdriver')

        components = ioJSON.loads(self.cserver.get_components())
        self.assertEqual(len(components) - oldnum, 1)

        for comp in components:
            if comp['pathname'] == 'prob':
                assembly = comp
                break
        else:
            self.fail("prob was not found in component list")
        self.assertEqual(assembly['pathname'], 'prob')
        self.assertEqual(len(assembly['children']), 1)

        child = assembly['children'][0]
        self.assertEqual(child['pathname'], 'prob.driver')
        self.assertEqual(child['type'], 'CONMINdriver')
        self.assertEqual(child['interfaces'], [
            'IHasParameters', 'IHasIneqConstraints', 'IHasObjective',
            'IOptimizer', 'IDriver', 'IHasEvents', 'IComponent', 'IContainer'
        ])

        # CHECK DRIVER ATTRIBUTES
        attributes = ioJSON.loads(self.cserver.get_attributes('prob.driver'))
        self.assertEqual(attributes['type'], 'CONMINdriver')
        self.assertTrue('Inputs' in attributes)
        self.assertTrue('Outputs' in attributes)
        self.assertTrue('Objectives' in attributes)
        self.assertTrue('Parameters' in attributes)
        self.assertTrue('Constraints' in attributes)
        self.assertTrue('Workflow' in attributes)

        self.assertEqual(attributes['Workflow']['pathname'], 'prob.driver')
        self.assertEqual(attributes['Workflow']['type'],
                         'openmdao.lib.drivers.conmindriver.CONMINdriver')
        self.assertEqual(len(attributes['Workflow']['workflow']), 0)

        self.assertEqual(self.cserver.file_forces_reload('/paraboloid.py'),
                         False)

        # CREATE PARABOLOID
        self.cserver.put_object('prob.p', 'paraboloid.Paraboloid')

        self.assertEqual(self.cserver.file_forces_reload('/paraboloid.py'),
                         True)

        attributes = ioJSON.loads(self.cserver.get_attributes('prob.p'))
        self.assertEqual(attributes['type'], 'Paraboloid')

        self.assertTrue('Inputs' in attributes)
        inputs = attributes['Inputs']
        names = sorted([input['name'] for input in inputs])
        self.assertEqual(
            names, ['directory', 'force_fd', 'missing_deriv_policy', 'x', 'y'])
        found_x = found_y = False
        for item in inputs:
            self.assertTrue('desc' in item)
            self.assertTrue('name' in item)
            self.assertTrue('type' in item)
            self.assertTrue('value' in item)
            if item['name'] == 'x':
                found_x = True
                self.assertEqual(item['type'], 'float')
                self.assertEqual(item['desc'], 'The variable x')
            if item['name'] == 'y':
                found_y = True
                self.assertEqual(item['type'], 'float')
                self.assertEqual(item['desc'], 'The variable y')
        self.assertTrue(found_x)
        self.assertTrue(found_y)

        self.assertTrue('Outputs' in attributes)
        outputs = attributes['Outputs']
        self.assertEqual(len(outputs), 4)
        found_f_xy = False
        for output in outputs:
            self.assertTrue('desc' in output)
            self.assertTrue('name' in output)
            self.assertTrue('type' in output)
            self.assertTrue('value' in output)
            if output['name'] == 'f_xy':
                found_f_xy = True
                self.assertEqual(output['type'], 'float')
                self.assertEqual(output['desc'], 'F(x,y)')
        self.assertTrue(found_f_xy)

        # DATAFLOW
        dataflow = ioJSON.loads(self.cserver.get_dataflow('prob'))

        self.assertEqual(len(dataflow), 6)

        self.assertTrue('components' in dataflow)
        components = dataflow['components']
        self.assertEqual(len(components), 2)
        found_p = found_driver = False
        for comp in components:
            self.assertTrue('pathname' in comp)
            self.assertTrue('type' in comp)
            self.assertTrue('name' in comp)
            if comp['name'] == 'p':
                found_p = True
                self.assertEqual(comp['pathname'], 'prob.p')
                self.assertEqual(comp['type'], 'Paraboloid')
            if comp['name'] == 'driver':
                found_driver = True
                self.assertEqual(comp['pathname'], 'prob.driver')
                self.assertEqual(comp['type'], 'CONMINdriver')
        self.assertTrue(found_p)
        self.assertTrue(found_driver)

        self.assertTrue('connections' in dataflow)
        connections = dataflow['connections']
        self.assertEqual(len(connections), 0)

        self.assertTrue('parameters' in dataflow)
        parameters = dataflow['parameters']
        self.assertEqual(len(parameters), 0)

        self.assertTrue('constraints' in dataflow)
        constraints = dataflow['constraints']
        self.assertEqual(len(constraints), 0)

        self.assertTrue('objectives' in dataflow)
        objectives = dataflow['objectives']
        self.assertEqual(len(objectives), 0)

        self.assertTrue('responses' in dataflow)
        responses = dataflow['responses']
        self.assertEqual(len(responses), 0)

        # WORKFLOW
        self.cserver.onecmd('prob.driver.workflow.add("p")')
        driver_flow = ioJSON.loads(self.cserver.get_workflow('prob.driver'))[0]
        self.assertTrue('pathname' in driver_flow)
        self.assertTrue('type' in driver_flow)
        self.assertTrue('workflow' in driver_flow)
        workflow = driver_flow['workflow']
        self.assertEqual(len(workflow), 1)
        self.assertEqual(workflow[0]['pathname'], 'prob.p')
        self.assertEqual(workflow[0]['type'], 'paraboloid.Paraboloid')
예제 #4
0
 def _getJson(self, path):
     """Perform a GET request and decode the result as JSON."""
     self._connection.request('GET', path)
     response = self._connection.getresponse()
     self.assertEqual(response.status, 200)
     return ioJSON.loads(response.read().decode('utf-8'))
예제 #5
0
def print_json(data):
    ''' Pretty print json data.
    '''
    print ioJSON.dumps(ioJSON.loads(str(data)), indent=2)
 def GetRouteAndSave(self, route, params=None):
     """GET given route and params. Serialize the result. Return as JSON."""
     url = Url(route, params)
     return ioJSON.loads(self.GetAndSave(url))