Skip to main content

pypiversion masterbuild coverage license

Overview

pyecoregen is a code generator, producing Python classes from Ecore models. It can be used at the command line as well as a module. In the latter case the passed model is expected to be an instance of the pyecore metamodel.

After using pyecoregen, you have a Python package representing the classes from the Ecore model. The generated classes are instances of the pyecore metaclasses. Please see pyecore for documentation how to work with them.

Installation

pyecoregen comes in form or a regular Python distribution and can be installed from Github or PyPI with a simple:

$ pip install pyecoregen

The library works with any version of Python >= 3.5.

Usage

Code generation can be done programmatically and directly at the command line.

Command line interface

After installation an executable script pyecoregen has been installed. Assuming library.ecore is your Ecore XMI file, and you want to generate the classes in some/folder, you can do:

$ pyecoregen -vv -e library.ecore -o some/folder

The -vv is optional to raise verbosity to log level DEBUG. You should see output like this:

2017-05-26 08:06:54,303 INFO [multigen.generator] Generating code to '/here/some/folder'.
2017-05-26 08:06:54,304 DEBUG [multigen.generator] <pyecore.ecore.EPackage object at 0x000001DCF3C61E80> --> '/here/some/folder/library/__init__.py'
2017-05-26 08:06:54,363 DEBUG [multigen.generator] <pyecore.ecore.EPackage object at 0x000001DCF3C61E80> --> '/here/some/folder/library/library.py'

The pyecoregen command line interface also allows you to generate the classes from a remote Ecore XMI file if its “path” starts with http(s)://. The usage does not change:

$ pyecoregen -e "http://path/towards/my/ecore" -o some/folder

Programmatic interface

If you need to generate code from an in-memory representation of a pyecore model, you instantiate the EcoreGenerator class and call the generate method. Assuming you have loaded above model and hold it’s root package in library_pkg, you would generate with:

generator = EcoreGenerator()
generator.generate(library_pkg, 'some/folder')

Generator options

The end user can control some of the features how the metamodel code is generated. This can be done at the command line as well as via programmatic invocation. A command line parameter --my-param is then turning into a keyword argument my_param.

--auto-register-package (Default: False)

If enabled, the generated packages are automatically added to pyecore’s global namespace registry, which makes them available during XMI deserialization.

--user-module (Default: None)

If specified, the given string is interpreted as a dotted Python module path. E.g. --user-module my.custom_mod will make the generated code import mixin classes from a module my.custom_mod. A generated class with name <name> then derives from a mixin <name>Mixin, which is expected to be part of the user module. If this option is used, the generator also produces a skeleton file which contains all required mixin classes and methods. Usually you copy parts of this template to your own module, which is then checked into version control all your other code.

--with-dependencies (Default: False)

If enabled, the generator also generates code from all metamodels that are dependencies of the input metamodel. A metamodel dependency is typically a reference from the input metamodel to another .ecore file. Please note that this option introduces slower code generation as all metamodels must be scanned in order to determine dependencies.

Release files for pyecoregen 0.5.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for pyecoregen 0.5.1
File Size Uploaded
pyecoregen-0.5.1.tar.gz 14.3 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for pyecoregen 0.5.1
File Interpreter ABI Platform
pyecoregen-0.5.1-py3-none-any.whl Python 3 none any Details

Total release size: 27.5 kB

Release files / pyecoregen-0.5.1.tar.gz

Download URL pyecoregen-0.5.1.tar.gz
Size 14.3 kB
Tags Source
SHA-256 checksum
How to use checksums
3e675ea2f60cf0e0cb0cb9bf4ba41692eb966110bf457f6f38d7a35ebac66d3a
BLAKE2b-256 checksum
How to use checksums
37cdb8966c28c7382d77073e64b10f1bf31e1380fd6217571700e660554c4ce7
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.4.1 importlib_metadata/3.10.0 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.60.0 CPython/3.8.7

Release files / pyecoregen-0.5.1-py3-none-any.whl

Download URL pyecoregen-0.5.1-py3-none-any.whl
Size 13.2 kB
Tags Python 3
SHA-256 checksum
How to use checksums
c7467d91b43b80ca4eb7c9b8c54413c6d6fdbf0f8ee26820a4843b76d5c36b1f
BLAKE2b-256 checksum
How to use checksums
61c26872d77c1382affd69a964159c8883a158317d6c2653bb8184eef2e8405d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.4.1 importlib_metadata/3.10.0 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.60.0 CPython/3.8.7

Release history Release notifications | RSS feed

This release

0.5.1 This release

2 release files

0.5.0

2 release files

0.4.3

2 release files

0.4.2

2 release files

0.4.1

2 release files

0.4.0

2 release files

0.3.0

2 release files

0.2.0

2 release files

0.1.1

2 release files

0.1.0

2 release files

0.0.2

2 release files

0.0.1

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page