Exemple #1
0
def test_command_resource(mm):
    rset = ResourceSet()
    resource = rset.create_resource(URI('http://logical'))
    a = mm.A()
    resource.append(a)
    cmd = Set(a, 'name', 'test_value')
    assert cmd.resource is resource
Exemple #2
0
def load_esdl_from_string(esdl_string):
    uri = StringURI('from_string.esdl', esdl_string)
    rset = ResourceSet()
    resource = rset.create_resource(uri)
    resource.load()
    esdl_instance = resource.contents[0]
    return esdl_instance
Exemple #3
0
    def __init__(self, energy_system=None):
        if energy_system is not None:
            self.energy_system = energy_system
        self.resource = None
        self.rset = ResourceSet()
        self.esid_uri_dict = {}

        self._set_resource_factories()

        # fix python builtin 'from' that is also used in ProfileElement as attribute
        # use 'start' instead of 'from' when using a ProfileElement
        # and make sure that it is serialized back as 'from' instead of 'from_'
        esdl.ProfileElement.from_.name = 'from'
        setattr(esdl.ProfileElement, 'from', esdl.ProfileElement.from_)
        alias('start', esdl.ProfileElement.from_)
        # also for FromToIntItem
        esdl.FromToIntItem.from_.name = 'from'
        setattr(esdl.FromToIntItem, 'from', esdl.FromToIntItem.from_)
        alias('start', esdl.FromToIntItem.from_)
        # also for FromToDoubleItem
        esdl.FromToDoubleItem.from_.name = 'from'
        setattr(esdl.FromToDoubleItem, 'from', esdl.FromToDoubleItem.from_)
        alias('start', esdl.FromToDoubleItem.from_)

        # add support for cloning of EObjects and coppy.copy()
        setattr(EObject, '__copy__', support_functions.clone)
        setattr(EObject, 'clone', support_functions.clone)

        # add support for deepcopying EObjects and copy.deepcopy()
        setattr(EObject, '__deepcopy__', support_functions.deepcopy)
        setattr(EObject, 'deepcopy', support_functions.deepcopy)

        # have a nice __repr__ for some ESDL classes when printing ESDL objects (includes all Assets and EnergyAssets)
        esdl.EnergySystem.__repr__ = \
            lambda x: '{}: ({})'.format(x.name, EnergySystemHandler.attr_to_dict(x))
Exemple #4
0
def generated_library(pygen_output_dir):
    rset = ResourceSet()
    resource = rset.get_resource(URI('input/library.ecore'))
    library_model = resource.contents[0]
    generator = EcoreGenerator()
    generator.generate(library_model, pygen_output_dir)
    return importlib.import_module('library')
Exemple #5
0
def test_globaluridecoder():
    assert Global_URI_decoder.can_resolve('http://simple.ecore'
                                          '#//test') is False
    rset = ResourceSet()
    resource = rset.create_resource('http://simple.ecore')
    global_registry['http://simple.ecore'] = resource
    assert Global_URI_decoder.can_resolve('http://simple.ecore#//test') is True
Exemple #6
0
def model_setup():

    rset = ResourceSet()
    resource = rset.get_resource(URI('metamodel.ecore'))
    mm_root = resource.contents[0]

    mm_root.nsURI = 'ghmde'
    mm_root.nsPrefix = 'model'
    mm_root.name = 'ghmde'

    rset.metamodel_registry[mm_root.nsURI] = mm_root

    print(mm_root.nsURI)

    MyMetamodel = DynamicEPackage(
        mm_root)  # We create a DynamicEPackage for the loaded root

    file_instance = MyMetamodel.File()

    print(file_instance)

    A = mm_root.getEClassifier('Model')

    # nuovo
    instance = A()

    dictionary = {}
    dictionary['model'] = instance
    dictionary['meta-model'] = MyMetamodel

    return dictionary
def generated_metamodel(pygen_output_dir):
    rset = ResourceSet()
    resource = rset.get_resource(URI('input/A.ecore'))
    library_model = resource.contents[0]
    generator = EcoreGenerator(with_dependencies=True)
    generator.generate(library_model, pygen_output_dir)
    return importlib.import_module('a')
Exemple #8
0
def test_delete_unresolved_proxy_simple_relation(lib):
    rset = ResourceSet()
    xmi_file = path.join('tests', 'xmi', 'xmi-tests', 'a3.xmi')
    root = rset.get_resource(xmi_file).contents[0]
    b = root.a[0].simpleb
    b.delete()
    assert len(root.a[0].tob) == 0
Exemple #9
0
def main(args):
	"""The main function"""

	output_filename = ""
	if len(args) > 0:
		if args[0] == '-h' or args[0] == '-help':
			print("Usage: pypy/python3 main <henshin_file>")
			print("")
			print("Extract SLCO/REFINER semantics from henchin file.")
			sys.exit(0)

	input_file = args[0]
	if not input_file.endswith(EXT):
		input_file = input_file + EXT

	output_file = input_file[:-len(EXT)] + ".rs"
	print("Input: %s" % input_file)
	print("Output: %s" % output_file)

	new_input_file = preprocess_input_file(input_file)

	rset = ResourceSet()
	rset.metamodel_registry[Ecore.nsURI] = Ecore
	rset.metamodel_registry[henshin.nsURI] = henshin
	rset.metamodel_registry[SLCO.nsURI] = SLCO

	input_model = rset.get_resource(new_input_file)
	root_module = input_model.contents[0]
	rs = henshin_to_rulesystem(root_module)
	f = open(output_file, 'w')
	f.write(rs.to_string())
	f.close()
Exemple #10
0
def test_resource_mmregistry_isolation():
    global_registry['cdef'] = None
    rset1 = ResourceSet()
    rset2 = ResourceSet()
    rset1.metamodel_registry['abcd'] = None
    assert 'abcd' not in rset2.metamodel_registry
    assert 'cdef' in rset2.metamodel_registry
    assert 'cdef' in rset1.metamodel_registry
Exemple #11
0
def test_delete_unresolved_proxy_2_models_loaded_simple_relation(lib):
    rset = ResourceSet()
    root = rset.get_resource('tests/xmi/xmi-tests/a3.xmi').contents[0]
    root2 = rset.get_resource('tests/xmi/xmi-tests/b1.xmi').contents[0]
    b = root.a[0].simpleb
    b.delete()
    assert root.a[0].simpleb is None
    assert len(root2.b) == 1  # the element is still here
Exemple #12
0
def test_delete_unresolved_proxy_2_models_loaded(lib):
    rset = ResourceSet()
    root = rset.get_resource('tests/xmi/xmi-tests/a1.xmi').contents[0]
    root2 = rset.get_resource('tests/xmi/xmi-tests/b1.xmi').contents[0]
    b = root.a[0].tob[0]
    b.delete()
    assert len(root.a[0].tob) == 0
    assert len(root2.b) == 1  # the element is still here
Exemple #13
0
def test_resource_double_load(simplemm):
    rset = ResourceSet()
    rset.metamodel_registry[simplemm.nsURI] = simplemm
    root = rset.get_resource(path.join('tests', 'xmi', 'xmi-tests',
                                       'a1.xmi')).contents[0]
    root2 = rset.get_resource(path.join('tests', 'xmi', 'xmi-tests',
                                        'a1.xmi')).contents[0]
    assert root is root2
 def loadModelDDM(self, input_file):
     rset = ResourceSet()
     # register the metamodel (available in the generated files)
     rset.metamodel_registry[ddm.nsURI] = ddm
     rset.resource_factory['ddm'] = lambda uri: XMIResource(uri)
     resource = rset.get_resource(URI(input_file))
     model = resource.contents[0]
     return model
Exemple #15
0
def test_resource_load_proxy_missinghref(simplemm):
    rset = ResourceSet()
    rset.metamodel_registry[simplemm.nsURI] = simplemm
    root = rset.get_resource(path.join('tests', 'xmi', 'xmi-tests',
                                       'a1-1.xmi')).contents[0]
    assert isinstance(root.a[0].tob[0], EProxy)
    with pytest.raises(TypeError):
        root.a[0].tob[0].eClass
Exemple #16
0
def test_resourceset_createresource_xmi():
    rset = ResourceSet()
    resource = rset.create_resource(URI('simple.xmi'))
    rpath = path.abspath('simple.xmi')
    assert rpath in rset.resources
    assert rset.resources[rpath] is resource
    assert rset in resource._decoders
    assert isinstance(resource, rset.resource_factory['xmi']('').__class__)
Exemple #17
0
 def __init__(self):
     rset = ResourceSet()
     model_url = URI(
         os.path.join(
             os.path.dirname(__file__),
             '../ecore/GeppettoCommonLibrary.xmi'))  # The model URI
     resource = rset.get_resource(model_url)  # We load the model
     self.geppetto_common_library = resource.contents[0]  # We get the root
Exemple #18
0
def test_delete_unresolved_proxy_loaded_models_from_pointed(lib):
    rset = ResourceSet()
    root = rset.get_resource('tests/xmi/xmi-tests/a1.xmi').contents[0]
    root2 = rset.get_resource('tests/xmi/xmi-tests/b1.xmi').contents[0]
    b = root2.b[0]
    b.delete()
    assert len(root.a[0].tob) == 1  # the element is still in the collection
    assert len(root2.b) == 0
    assert b.eContainer() is None
Exemple #19
0
def test_delete_resolved_proxy_simple_relation(lib):
    rset = ResourceSet()
    root2 = rset.get_resource('tests/xmi/xmi-tests/b1.xmi').contents[0]
    root = rset.get_resource('tests/xmi/xmi-tests/a3.xmi').contents[0]
    b = root.a[0].simpleb
    b.force_resolve()
    b.delete()
    assert len(root.a[0].tob) == 0
    assert len(root2.b) == 0
Exemple #20
0
def test_delete_unresolved_proxy_loaded_models_from_pointed_simple_rel(lib):
    rset = ResourceSet()
    root = rset.get_resource('tests/xmi/xmi-tests/a3.xmi').contents[0]
    root2 = rset.get_resource('tests/xmi/xmi-tests/b1.xmi').contents[0]
    b = root2.b[0]
    b.delete()
    assert root.a[0].simpleb is not None  # the element is still in the col.
    assert len(root2.b) == 0
    assert b.eContainer() is None
def main(debug=False):
    # Go to working directory
    if str(os.path.dirname(__file__)) != '':
        os.chdir(str(os.path.dirname(__file__)))
    # Count arguments
    if len(sys.argv) < 2 or len(sys.argv) > 3:
        print(
            'Please give at least an GRS file name (input model) and optionaly an XMI file name (output model)'
        )
        sys.exit(0)
    # Obtain GRS model filename
    # ~ grs_filename = os.path.relpath(sys.argv[1], str(os.getcwd()))
    grs_filename = os.path.relpath(sys.argv[1], str(os.getcwd()))
    # Obtain XMI model filename
    if len(sys.argv) == 3:
        xmi_filename = sys.argv[2]
    else:
        xmi_filename = '../models/generos.xmi'
    # Load Grammar
    dsl_metamodel = metamodel_from_file('generos.tx', debug=False)

    # Convert importURI string (if needed)
    def conv(i):
        return i.replace(".", "/") + ".grs"

    # Scope Providers
    dsl_metamodel.register_scope_providers(
        {"*.*": scoping_providers.FQNImportURI(importAs=True)})

    # Recursive function that loads the commands of the imported models to the main model
    def resolve_imports(current_model):
        # Load imported models
        imports = get_children_of_type("Import", current_model)
        for i in imports:
            for m in i._tx_loaded_models:
                # Recursively attach commands of more deep imports
                m = resolve_imports(m)
                # Attach commands of the submodels (imports) to the main model
                current_model.commands.extend(m.commands)
        return current_model

    # Load Model
    model = dsl_metamodel.model_from_file(grs_filename)
    resolve_imports(model)

    # Fire up the generation
    system = RosSystem()
    system.interpret(model)
    #create rset
    global_registry[Ecore.nsURI] = Ecore
    rset = ResourceSet()
    rset.metamodel_registry[metageneros.nsURI] = metageneros
    model_res = rset.create_resource(URI(xmi_filename))
    # Save
    model_res.append(system.rosystem)
    model_res.save()
Exemple #22
0
def setup_resourceset():
    import pyuml2.types as types

    types_URI = 'platform:/plugin/org.eclipse.uml2.types/model/Types.ecore'
    ecore_UML_URI = 'platform:/plugin/org.eclipse.emf.ecore/model/Ecore.ecore'

    rset = ResourceSet()
    rset.metamodel_registry[types_URI] = types
    rset.metamodel_registry[ecore_UML_URI] = ecore
    return rset
Exemple #23
0
def test_delete_resolved_proxy_2_models_loaded(lib):
    rset = ResourceSet()
    root = rset.get_resource('tests/xmi/xmi-tests/a1.xmi').contents[0]
    root2 = rset.get_resource('tests/xmi/xmi-tests/b1.xmi').contents[0]
    b = root.a[0].tob[0]
    b.force_resolve()
    b.delete()
    assert len(root.a[0].tob) == 0
    assert len(root2.b) == 0  # the element had been removed
    assert b.eContainer() is None
Exemple #24
0
 def load_external_string(self, esdl_string, name='from_string'):
     """Loads an energy system from a string but does NOT add it to the resourceSet (e.g. as a separate resource)
     It returns an Energy System, but it is not part of a resource in the ResourceSet """
     uri = StringURI(name + '.esdl', esdl_string)
     external_rset = ResourceSet()
     external_resource = external_rset.create_resource(uri)
     external_resource.load()
     external_energy_system = external_resource.contents[0]
     self.validate(es=external_energy_system)
     return external_energy_system
Exemple #25
0
    def serialize(self, geppetto_model):
        #we now create a resource to save the geppetto model and serialize it to a JSON string
        rset = ResourceSet()
        uri = StringURI('netpyne_model.json') 
        rset.resource_factory['*'] = lambda uri: GeppettoResource(uri, indent=2)
        resource = rset.create_resource(uri)
        resource.append(geppetto_model)

        #TODO: We need to apply a visitor and set all the serialised objects to synched
        resource.save(options={JsonOptions.SERIALIZE_DEFAULT_VALUES: True})
        return uri.getvalue()
Exemple #26
0
def test_delete_unresolved_proxy_2_models_loaded_simple_relation(lib):
    rset = ResourceSet()
    xmi_file = path.join('tests', 'xmi', 'xmi-tests', 'a3.xmi')
    root = rset.get_resource(xmi_file).contents[0]

    xmi_file = path.join('tests', 'xmi', 'xmi-tests', 'b1.xmi')
    root2 = rset.get_resource(xmi_file).contents[0]
    b = root.a[0].simpleb
    b.delete()
    assert root.a[0].simpleb is None
    assert len(root2.b) == 1  # the element is still here
Exemple #27
0
def test_delete_unresolved_proxy_2_models_loaded(lib):
    rset = ResourceSet()
    xmi_file = path.join('tests', 'xmi', 'xmi-tests', 'a1.xmi')
    root = rset.get_resource(xmi_file).contents[0]

    xmi_file = path.join('tests', 'xmi', 'xmi-tests', 'b1.xmi')
    root2 = rset.get_resource(xmi_file).contents[0]
    b = root.a[0].tob[0]
    b.delete()
    assert len(root.a[0].tob) == 0
    assert len(root2.b) == 1  # the element is still here
def saveModel(model):
    # create a resourceSet that hold the contents of the gdm.ecore model and the instances we use/create
    rset = ResourceSet()
    # register the metamodel (available in the generated files)
    rset.metamodel_registry[gdm.nsURI] = gdm
    rset.resource_factory['gdm'] = lambda uri: XMIResource(uri)

    resource = rset.create_resource(URI('Static_model_test.xmi'))
    resource.append(model)
    resource.save()
    return
Exemple #29
0
def test_resource_load_proxy_href(simplemm):
    rset = ResourceSet()
    rset.metamodel_registry[simplemm.nsURI] = simplemm
    root = rset.get_resource(path.join('tests', 'xmi', 'xmi-tests',
                                       'a1.xmi')).contents[0]
    rset.get_resource(path.join('tests', 'xmi', 'xmi-tests', 'b1.xmi'))
    assert isinstance(root.a[0].tob[0], EProxy)
    B = simplemm.getEClassifier('B')
    root.a[0].tob[0].eClass  # We force the proxy resolution
    assert isinstance(root.a[0].tob[0], B.python_class)
    assert EcoreUtils.isinstance(root.a[0].tob[0], B)
Exemple #30
0
def test_resource_load_proxy_href_force_resolve_idempotent(simplemm):
    rset = ResourceSet()
    rset.metamodel_registry[simplemm.nsURI] = simplemm
    root = rset.get_resource(path.join('tests', 'xmi', 'xmi-tests',
                                       'a2.xmi')).contents[0]
    rset.get_resource(path.join('tests', 'xmi', 'xmi-tests', 'inner',
                                'b2.xmi'))
    x = root.a[0].tob[0]
    x.force_resolve()
    wrapped = x._wrapped
    x.force_resolve()
    assert wrapped is x._wrapped
Exemple #31
0
def loadMetaModel(file):
    global_registry[Ecore.nsURI] = Ecore # We load the Ecore metamodel first
    rset = ResourceSet()
    metamodel = rset.get_resource(URI(file))
    return metamodel.contents[0]
Exemple #32
0
def loadModel(metamodel, file):
    rset = ResourceSet()
    rset.metamodel_registry[metamodel.nsURI] = metamodel
    return rset.get_resource(file).contents[0]
Exemple #33
0
def saveModel(metamodel, model, output):
    rset = ResourceSet()
    rset.metamodel_registry[metamodel.nsURI] = metamodel
    model_resource = rset.create_resource(URI(output))
    model_resource.append(model)
    return model_resource.save()