<commit_before>Changelog
---------

0.7.0
+++++

**Features**

- Add ``XMLTypes`` implementation. This first implementation relies on
  ``XMLTypes.ecore`` and had been generated using pyecoregen. The generated code
  had been manually modified to deal with some current restriction in PyEcore.
  The result is a slightly modified version of some ``EClass`` defined in the
  xml types metamodel. These modifications does not affect the model layer which
  will work as intended, but can give some false information about some types
  when reflection on the xml types metamodel is used.

**Bugfixes**

- Fix missing ``EDatatypes`` registration in their respective ``EPackage``. The
  data types defined in code generated by pyecoregen was not properly registered
  in their ``EPackage``. The result was a ``None`` value when
  ``datatype.ePackage`` was accessed.

 - Fix resource creation if model loading fails for ResourceSet. Even if the
   model loading fails, a resource is created in a ResourceSet. This behavior
   was problematic as two successive loading of the same faulty model lead to a
   failure the first time, but to a success the next time. This commit fixes
   this behavior and adds more tests to detect possible regressions about this.

 - Fix load error when metamodel prefix is empty. When a metamodel prefix is
   empty, special tags, with the namespace encoded inside, are created by lxml.
   This was an issue with the xmi decoding method as each tag's node was not
   properly decoded.

**Miscellaneous**

- Change ``__repr__`` display for ``EClass`` and ``EStructuralFeature``. The
  fact that PyEcore is extensible and the basic ``EClass/EStructural``
  metaclasses can  be extended requires a better representation.

0.6.0
+++++

**Features**

- Add multiplicity parameter for ``EParameter/EOperation`` constructors.
  Parameter and Operations can express a multiplicity like ``1..*`` if wanted.
  This attribute can be modified after one of these object had been created,
  but it wasn't possible to give the multiplicity during the object creation.
  This commit simply add the missing parameters in the constructors.

- Add new way of dealing with ``isinstance``. The ``isinstance`` method from
  the ``EcoreUtils`` class was not very effective and was gathering all cases
  in a big ``if/elif/else`` block. This commit defers all the ``isinstance``
  to a method ``__isinstance__``, implemented in each required elements. This
  commit also introduce a new way of init for each ``EStructuralFeature``
  attributes when an instance is created.

**Bugfixes**

- Fix intra-document references by proxy. A reference between elements can also<commit_msg>Fix typo<commit_after>Changelog
---------

0.7.0
+++++

**Features**

- Add ``XMLTypes`` implementation. This first implementation relies on
  ``XMLTypes.ecore`` and had been generated using pyecoregen. The generated code
  had been manually modified to deal with some current restriction in PyEcore.
  The result is a slightly modified version of some ``EClass`` defined in the
  xml types metamodel. These modifications does not affect the model layer which
  will work as intended, but can give some false information about some types
  when reflection on the xml types metamodel is used.

**Bugfixes**

- Fix missing ``EDatatypes`` registration in their respective ``EPackage``. The
  data types defined in code generated by pyecoregen was not properly registered
  in their ``EPackage``. The result was a ``None`` value when
  ``datatype.ePackage`` was accessed.

 - Fix resource creation if model loading fails for ResourceSet. Even if the
   model loading fails, a resource is created in a ResourceSet. This behavior
   was problematic as two successive loading of the same faulty model lead to a
   failure the first time, but to a success the next time. This commit fixes
   this behavior and adds more tests to detect possible regressions about this.

 - Fix load error when metamodel prefix is empty. When a metamodel prefix is
   empty, special tags, with the namespace encoded inside, are created by lxml.
   This was an issue with the xmi loading method as each tag's node was not
   properly decoded.

**Miscellaneous**

- Change ``__repr__`` display for ``EClass`` and ``EStructuralFeature``. The
  fact that PyEcore is extensible and the basic ``EClass/EStructural``
  metaclasses can  be extended requires a better representation.

0.6.0
+++++

**Features**

- Add multiplicity parameter for ``EParameter/EOperation`` constructors.
  Parameter and Operations can express a multiplicity like ``1..*`` if wanted.
  This attribute can be modified after one of these object had been created,
  but it wasn't possible to give the multiplicity during the object creation.
  This commit simply add the missing parameters in the constructors.

- Add new way of dealing with ``isinstance``. The ``isinstance`` method from
  the ``EcoreUtils`` class was not very effective and was gathering all cases
  in a big ``if/elif/else`` block. This commit defers all the ``isinstance``
  to a method ``__isinstance__``, implemented in each required elements. This
  commit also introduce a new way of init for each ``EStructuralFeature``
  attributes when an instance is created.

**Bugfixes**

- Fix intra-document references by proxy. A reference between elements can also
{'fraction_non_alphanumeric': 0.06873365707881958, 'fraction_numerical': 0.002614867388868136, 'mean_word_length': 4.149038461538462, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 3, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 6}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '3337888', 'n_tokens_mistral': 1384, 'n_tokens_neox': 1326, 'n_words': 748}